ar sitam kode apacioj yra meniu is binaro isvaizdos koks tai aprasymas? fontas/borderiai/plotis? noreciau pakeist fonta, nuimt borderius ir panasiai. jei kas pazymetumet kurioj vietoj (jei isvis sitam faile) tai yra, tai jau kaip nors pats pasitvarkysiu. Aciu labai <?php // $Id: /* * Drupal Hizmetleri (drupalhizmetleri) * YUI component based module */ /** * Implementation of hook_help(). */ function yuimenu_help($section) { switch ($section) { case 'admin/settings/modules#description': $output = t('YUI based drop down Menu.'); break; case 'admin/settings/yuimenu': $output = t('<p>A module to have a css/javascript based drop down and javascript based pop-up menu for site navigation.</p>', array('!link' => l('admin/build/block', 'admin/build/block'))); break; } return $output; } /** * Settings form as implemented by hook_admin */ function yuimenu_admin() { $form['yuimenu_root'] = array( '#type' => 'select', '#title' => t('Root of Menu Tree'), '#description' => t('Select the root item of menu tree.'), '#default_value' => variable_get('yuimenu_root','1'), '#options' => menu_parent_options(menu_get_menus(), 0), ); $form['yuimenu_type'] = array( '#type' => 'select', '#title' => t('Menu Display type'), '#description' => t('Select the display type of the menu.'), '#default_value' => variable_get('yuimenu_type','tna'), '#options' => array('tns' => t('Website Top Nav With Submenus From JavaScript'), 'tnm' => t('Website Top Nav With Submenus Built From Markup'), 'lns' => t('Website Left Nav With Submenus From JavaScript')) ); $form['yuimenu_animate'] = array( '#type' => 'checkbox', '#title' => t('Animated Menu'), '#description' => t('To enable animation while opening menu check this.'), '#default_value' => variable_get('yuimenu_animate',0), ); return system_settings_form($form); } /** * Implemention of init(). */ function yuimenu_init() { $yui_source = variable_get('yui_source','http://yui.yahooapis.com/2.5.0'); // the order of script and style sheet is important. Don't change. yui_add_js('menu', $yui_source, '/build/yahoo-dom-event/yahoo-dom-event.js'); if (variable_get('yuimenu_animate',0)) { yui_add_js('menu', $yui_source, '/build/animation/animation-min.js'); } yui_add_css('menu', $yui_source, '/build/menu/assets/skins/sam/menu.css'); yui_add_js('menu', $yui_source, '/build/container/container_core-min.js'); yui_add_js('menu', $yui_source, '/build/menu/menu-min.js'); switch (variable_get('yuimenu_type','tns')) { case 'tns': $script_body_to_html_head = get_yui_top_script(); break; case 'tnm': $script_body_to_html_head = get_yui_top_markup(); break; case 'lns': $script_body_to_html_head = get_yui_left_script(); break; } drupal_set_html_head($script_body_to_html_head); //drupal_add_css(drupal_get_path('module', 'yuimenu') .'/yuimenu.css'); } /** * Implemention of hook_menu(). */ function yuimenu_menu() { $items['admin/settings/yuimenu'] = array( 'title' => t('YUI Menu Settings'), 'page callback' => 'drupal_get_form', 'page arguments' => array('yuimenu_admin'), 'access arguments' => array('administer site configuration'), 'type' => MENU_NORMAL_ITEM, ); return $items; } /** * Generate js code for top markup style menu. */ function get_yui_top_markup () { $scr = ' <script type="text/javascript"> //<![CDATA[ //Initialize and render the menu bar when it is available in the DOM YAHOO.util.Event.onContentReady("productsandservices", function () { '; if (variable_get('yuimenu_animate',0)) { $scr .= get_ani_scr(); } $scr.= 'var oMenuBar = new YAHOO.widget.MenuBar("productsandservices", { autosubmenudisplay: true, hidedelay: 750, lazyload: true });'; if (variable_get('yuimenu_animate',0)) { $scr .=' oMenuBar.subscribe("beforeShow", onSubmenuBeforeShow); oMenuBar.subscribe("show", onSubmenuShow);'; } $scr .='oMenuBar.render();}); //]]> </script>'; return ($scr); } /** * Generate js code for top script style menu. */ function get_yui_top_script () { $scr = '<script type="text/javascript"> //<![CDATA[ // Initialize and render the menu bar when it is available in the DOM YAHOO.util.Event.onContentReady("productsandservices", function () { '; $scr.= 'var oMenuBar = new YAHOO.widget.MenuBar("productsandservices", { autosubmenudisplay: true, hidedelay: 750, lazyload: true }); var oSubmenuData = [ '. create_menu(variable_get('yuimenu_root','navigation:0') ).' ];'; if (variable_get('yuimenu_animate',0)){ $scr .= get_ani_scr(); } $scr .= 'oMenuBar.subscribe("beforeRender", function () { if (this.getRoot() == this) {'; $scr.= script_menu(variable_get('yuimenu_root','navigation:0') ); $scr .='}});'; if (variable_get('yuimenu_animate',0)){ $scr .=' oMenuBar.subscribe("beforeShow", onSubmenuBeforeShow); oMenuBar.subscribe("show", onSubmenuShow);'; } $scr .="\n".'oMenuBar.render(); }); //]]> </script>'; return ($scr); } /** * when menu has a " or ' the script is fails. So replace them. * @param $inStr * Input string to replace. */ function rep_char ($inStr) { $fromChar= array("\"","\\"); $toChar = array("'","-"); $outStr = str_replace($fromChar, $toChar, $inStr); return ($outStr); //return t($inStr); } /** * Generate js code for top markup style menu. * @param $menu_id * Root menu id for composing the menu. */ function html_menu($menu_id = 'navigation:0') { switch (variable_get('yuimenu_type','tns')) { case 'tns' : $output = get_html_menu_script($menu_id); break; case 'lns' : $output = get_html_menu_script($menu_id); break; case 'tnm' : $output = get_html_menu_markup($menu_id); break; } return $output; } /** * Generate html code for script style menu. * @param $menu_id * Root menu id for composing the menu. */ function get_html_menu_script ($menu_id) { $output .=' <!-- YUI Menu div--> <div id="productsandservices" class="'. (("tns" == variable_get('yuimenu_type','tns') || "tnm"==variable_get('yuimenu_type','tns'))? "yuimenubar yuimenubarnav":"yuimenu") .'"> <div class="bd"> <ul style="text-decoration:none" class="first-of-type">'; $menu = load_menu($menu_id); foreach ($menu as $menu_item) { $mlid = $menu_item['link']['mlid']; if ($menu_item['link']['hidden'] == 0) { $output .= '<li class="'.(("tns" == variable_get('yuimenu_type','tns') || "tnm"==variable_get('yuimenu_type','tns'))? "yuimenubaritem":"yuimenuitem").'">'. l($menu_item['link']['title'], $menu_item['link']['href'],array('attributes' => array('class'=>(("tns" == variable_get('yuimenu_type','tns') || "tnm"==variable_get('yuimenu_type','tns'))? "yuimenubaritemlabel":"yuimenuitemlabel"))))."</li>"; } } $output .='</ul> </div> </div>'; return $output; } /** * Generate menu as script. * @param $menu_id * Root menu id for composing the menu. */ function script_menu($menu_id) { $menu = load_menu($menu_id); $i=0; foreach ($menu as $menu_item) { $mlid = $menu_item['link']['mlid']; if ($menu_item['link']['hidden'] == 0) { if ($menu_item['link']['has_children'] != 0) { $output .= 'this.getItem('. $i .').cfg.setProperty("submenu", oSubmenuData['.$i.']);'."\n"; } $i++; } } return $output; } /** * Generate root items as markup menu. * @param $menu_id * Root menu id for composing the menu. */ function get_html_menu_markup ($menu_id) { $output .=' <!-- YUI Menu div--> <div id="yui-main"> <div class="yui-b"> <div id="productsandservices" class="yuimenubar yuimenubarnav"> <div class="bd"> <ul class="first-of-type">'; list($menu_name, $mlid) = explode(':', $menu_id); $output .= compose_markap_body_tree($menu_name, $mlid); $output .='</ul> </div> </div> </div> </div>'; return $output; } /** * Generate tree of markup style menu. * @param $menu_name * menu name * @param $mlid * menu id. * @param $menu * menu. */ function compose_markap_body_tree($menu_name, $mlid = NULL, $menu = NULL) { $menu = load_menu($menu_name.':'.$mlid); if ($menu) { $output .= compose_markap_body($menu); } return $output; } /** * Generate root menu items as markup. * @param $menu * Menu items to compose body. */ function compose_markap_body($menu) { $output = ''; foreach ($menu as $menu_item) { $mlid = $menu_item['link']['mlid']; // Check to see if it is a visible menu item. if ($menu_item['link']['hidden'] == 0) { // Build class name based on menu path // e.g. to give each menu item individual style. // Strip funny symbols. //BA $clean_path = str_replace(array('http://', '<', '>', '&', '=', '?', ':'), '', $menu_item['link']['href']); // Convert slashes to dashes. //BA $clean_path = str_replace('/', '-', $clean_path); //BA $path_class = 'menu-path-'. $clean_path; // If it has children build a nice little tree under it. if (is_menu_child_of_root($menu_item['link']['plid'])) { $yuiliclass = 'yuimenubaritem'; $yuihrefclass = 'yuimenubaritemlabel'; } if ((!empty($menu_item['link']['has_children'])) && (!empty($menu_item['below']))) { // Keep passing children into the function 'til we get them all. $children = compose_markap_body($menu_item['below']); // Build the child UL. $output .= '<li class="'.$yuiliclass.'">'. l($menu_item['link']['title'], $menu_item['link']['href'],array('attributes' => array('class'=>$yuihrefclass))); $output .= '<div id="'.$menu_item['link']['title'].'" class="yuimenu"> <div class="bd"> <ul>'."\n"; $output .= $children; $output .= "</ul> </div> </div></li>\n"; } else { $output .= '<li class="'.$yuiliclass.'">'. l($menu_item['link']['title'], $menu_item['link']['href'],array('attributes' => array('class'=>$yuihrefclass))) .'</li>'."\n"; } } } return $output; } /** * Check whether the current menu item is the child of the current menu item. * @param $plid * child menu item. */ function is_menu_child_of_root ($plid) { list($root_menu_name, $root_mlid) = explode(':', variable_get('yuimenu_root','navigation:0')); if ($plid == $root_mlid) return true; return false; } /** * Start to compose the menu. * @param $menu_id * Root menu id for composing the menu. */ function create_menu($menu_id) { $menu = load_menu($menu_id); $j=1; foreach ($menu as $menu_item) { if ($menu_item['link']['hidden'] == 0) { $mlid = $menu_item['link']['mlid']; $output .= "\n{\n".'id: "' . rep_char($menu_item['link']['title']) . '",'."\nitemdata: [\n"; if ($menu_item['link']['has_children'] > 0) { $output .= create_inner_menu($menu_item['link']['menu_name'].':'.$mlid); } $output .= ']}'.($j++<count($menu)?',':''); } } return $output; } /** * Load menu with the given menu id. * @param $menu_id * Root menu id for composing the menu. */ function load_menu($menu_id) { list($menu_name, $mlid) = explode(':', $menu_id); $menu = isset($menu) ? $menu : menu_tree_all_data($menu_name); if (!empty($mlid)) { // Load the parent menu item. $item = menu_link_load($mlid); $title = $item['title']; // Narrow down the full menu to the specific sub-tree we need. for ($p = 1; $p < 10; $p++) { if ($sub_mlid = $item["p$p"]) { $subitem = menu_link_load($sub_mlid); // Menu sets these ghetto-ass keys in _menu_tree_check_access(). $menu = $menu[(50000 + $subitem['weight']) .' '. $subitem['title'] .' '. $subitem['mlid']]['below']; } } } return $menu; } /** * Compose the submenu of the root menu item. * @param $menu_id * Root menu id for composing the menu. */ function create_inner_menu($menu_id) { $menu = load_menu($menu_id); $j=1; foreach ($menu as $menu_item) { $mlid = $menu_item['link']['mlid']; if ($menu_item['link']['hidden'] == 0) { if ($menu_item['link']['has_children'] > 0) { $output .= "{ text: \"".rep_char($menu_item['link']['title'])."\",url: \"".url(rep_char($menu_item['link']['href']))."\", submenu: { id: \"".url(rep_char($menu_item['link']['title']))."\", itemdata: [\n"; $output .= create_inner_menu($menu_item['link']['menu_name'].':'.$mlid); $output .= "]}}".($j++<count($menu)?',':''); } else { $output .= "{ text: \"".rep_char($menu_item['link']['title'])."\", url: \"".url(rep_char($menu_item['link']['href']))."\" }".($j++<count($menu)?',':'')."\n"; } } } return $output; } /** * Hard coded animation script to add the html body in case of the animation option is selected. */ function get_ani_scr() { return 'var ua = YAHOO.env.ua, oAnim; // Animation instance function onSubmenuBeforeShow(p_sType, p_sArgs) { var oBody, oElement, oShadow, oUL; if (this.parent) { oElement = this.element; oShadow = oElement.lastChild; oShadow.style.height = "0px"; if (oAnim && oAnim.isAnimated()) { oAnim.stop(); oAnim = null; } oBody = this.body; // Check if the menu is a submenu of a submenu. if (this.parent && !(this.parent instanceof YAHOO.widget.MenuBarItem)) { if (ua.gecko) { oBody.style.width = oBody.clientWidth + "px"; } if (ua.ie == 7) { oElement.style.width = oElement.clientWidth + "px"; } } oBody.style.overflow = "hidden"; oUL = oBody.getElementsByTagName("ul")[0]; oUL.style.marginTop = ("-" + oUL.offsetHeight + "px"); } } function onTween(p_sType, p_aArgs, p_oShadow) { if (this.cfg.getProperty("iframe")) { this.syncIframe(); } if (p_oShadow) { p_oShadow.style.height = this.element.offsetHeight + "px"; } } function onAnimationComplete(p_sType, p_aArgs, p_oShadow) { var oBody = this.body, oUL = oBody.getElementsByTagName("ul")[0]; if (p_oShadow) { p_oShadow.style.height = this.element.offsetHeight + "px"; } oUL.style.marginTop = ""; oBody.style.overflow = ""; // Check if the menu is a submenu of a submenu. if (this.parent && !(this.parent instanceof YAHOO.widget.MenuBarItem)) { // Clear widths set by the "beforeshow" event handler if (ua.gecko) { oBody.style.width = ""; } if (ua.ie == 7) { this.element.style.width = ""; } } } function onSubmenuShow(p_sType, p_sArgs) { var oElement, oShadow, oUL; if (this.parent) { oElement = this.element; oShadow = oElement.lastChild; oUL = this.body.getElementsByTagName("ul")[0]; oAnim = new YAHOO.util.Anim(oUL, { marginTop: { to: 0 } }, .5, YAHOO.util.Easing.easeOut); oAnim.onStart.subscribe(function () { oShadow.style.height = "100%"; }); oAnim.animate(); if (YAHOO.env.ua.ie) { oShadow.style.height = oElement.offsetHeight + "px"; oAnim.onTween.subscribe(onTween, oShadow, this); } oAnim.onComplete.subscribe(onAnimationComplete, oShadow, this); } }'; } /** * Implementation of hook_block(). * * Displays the menu in select block */ function yuimenu_block($op='list', $delta=0) { global $user; if ('lns' == variable_get('yuimenu_type','tns')) { // listing of blocks, such as on the admin/block page if ($op == "list") { $block[0]["info"] = t("YUI Menu"); return $block; } else if ($op == 'view') { // our block content // content variable that will be returned for display $block_content = '<div id="yuimenu" class="yui-b">'; $block_content .= html_menu(variable_get('yuimenu_root','navigation:0')); $block_content .= '</div>'; $block['subject'] = $user->name; $block['content'] = $block_content; return $block; } } } /** * Compose the left menu script. */ function get_yui_left_script () { $scr = '<script type="text/javascript"> //<![CDATA[ // Initialize and render the menu when it is available in the DOM YAHOO.util.Event.onContentReady("productsandservices", function () { var oMenu = new YAHOO.widget.Menu("productsandservices", { position: "static", hidedelay: 750, lazyload: true'; if (variable_get('yuimenu_animate',0)) { $scr .= ',effect: {effect: YAHOO.widget.ContainerEffect.FADE,duration: 0.25}'; } $scr .= '}); var oSubmenuData = [ '. create_menu(variable_get('yuimenu_root','navigation:0') ).'];'; $scr .= 'oMenu.subscribe("beforeRender", function () { if (this.getRoot() == this) {'; $scr.= script_menu(variable_get('yuimenu_root','navigation:0') ); $scr .='}});'; $scr .="\n".'oMenu.render(); }); //]]> </script>'; return ($scr); }