load('plg_system_mobilemenuck', JPATH_SITE . '/plugins/system/mobilemenuck', $lang->getTag(), false); $lang->load('plg_system_mobilemenuck', JPATH_ADMINISTRATOR, $lang->getTag(), false); // create a unique ID for the menu $menuid = 'mobilemenuck-' . (int) (microtime(true) * 100); $defaults = self::getDefaultOptions(); $defaults['menuid'] = $menuid; // unique text identifier $options = array_merge($defaults, $options); // set the text for the menu bar switch ($options['showmobilemenutext']) { case 'none': $options['mobilemenutext'] = ' '; break; case 'default': default: $options['mobilemenutext'] = \JText::_('PLG_MOBILEMENUCK_MENU'); break; case 'custom': $options['mobilemenutext'] = addslashes($options['mobilemenutext']); break; } // B/C for old logo position option if ((int)$options['showlogo'] > 0 && !isset($options['logo_where'])) { $options['logo_where'] = array($options['showlogo']); } \JHTML::_("jquery.framework"); $file = MOBILEMENUCK_PLUGIN_MEDIA_URI . '/assets/mobilemenuck.js?ver=1.5.9'; $js = "jQuery(document).ready(function(){" . " new MobileMenuCK(jQuery('" . $selector . "'), {"; foreach ($options as $name => $value) { $js .= $name . " : '" . $value . "',"; } $js .= "uriroot : '" . \JUri::root(true) . "'"; $js .= "});" . " });"; $css = self::getMediaQueries($selector, $options); if ($inline) { CKLoader::loadScriptInline($file); CKLoader::loadScriptDeclarationInline($js); CKLoader::loadStyleDeclarationInline($css); } else { CKLoader::loadScript($file); CKLoader::loadScriptDeclaration($js); CKLoader::loadStyleDeclaration($css); } return $menuid; } public static function getDefaultOptions() { $defaults = [ // 'menuid' => $menuid // unique text identifier 'menubarbuttoncontent' => '≡' // character to put in the button ,'topbarbuttoncontent' => '×' // character to put in the button ,'showmobilemenutext' => 'default' // default, custom, none ,'mobilemenutext' => \JText::_('PLG_MOBILEMENUCK_MENU') // text to use if showmobilemenutext = custom ,'container' => 'body' // body, topfixed, menu ,'detectiontype' => 'resolution' // resolution, phone, tablet ,'resolution' => '640' // value in px ,'usemodules' => '0' // 0, 1 ,'useimages' => '0' // 0, 1 ,'showlogo' => '1' // 0 (no), 1 (yes), 2 (in menu bar), 3 (in top bar) ,'showdesc' => '0' // 0, 1 ,'displaytype' => 'accordion' // flat, accordion, fade, push ,'displayeffect' => 'normal' // normal, slideleft, slideright, slideleftover, sliderightover, topfixed, open ,'menuwidth' => '300' // value in px ,'openedonactiveitem' => '0' // 0, 1 ,'mobilebackbuttontext' => \JText::_('PLG_MOBILEMENUCK_MOBILEBACKBUTTON') // text ,'menuselector' => 'ul' // text ,'uriroot' => \JUri::root(true) // base uri of the website ,'tooglebarevent' => 'click' // event used to open the menu ,'tooglebaron' => 'all' // target used to open the menu // Logo options ,'logo_source' => 'maximenuck' // maximenuck, custom ,'logo_image' => '' // the image src ,'logo_link' => '' // the link url ,'logo_alt' => '' // the alt tag ,'logo_position' => 'left' // left, center, right ,'logo_width' => '' // image width ,'logo_height' => '' // image height ,'logo_margintop' => '' // margin top ,'logo_marginright' => '' // margin right ,'logo_marginbottom' => '' // margin bototm ,'logo_marginleft' => '' // margin left ,'topfixedeffect' => 'always' // always or onscroll ,'lock_button' => '0' ,'lock_forced' => '0' ,'accordion_use_effects' => '0' ,'accordion_toggle' => '0' ,'show_icons' => '1' ,'counter' => '0' ,'hide_desktop' => '1' ,'overlay' => '0' ]; return $defaults; } /** * Search for the CSS styles from default theme, or in the template * * @return void * */ public static function loadTheme($id, $inline = false, $themeid = null) { require_once(MOBILEMENUCK_PLATFORM . '/loader.php'); $layoutcss = ''; if ((int) $themeid) { $layoutcss = Helper::getStyleById($themeid, $select = 'layoutcss', $type = 'result'); } // if we don't have a layout according to the ID, then use the default one if (!(int) $themeid || ! $layoutcss){ $layoutcss = Helper::getLayoutCss(); } Helper::makeCssReplacement($layoutcss); $css = str_replace('|ID|', '[data-id="' . $id . '"]', $layoutcss); if ($inline) { CKLoader::loadStyleDeclarationInline($css); } else { CKLoader::loadStyleDeclaration($css); } } /** * Set the mediaqueries to hide - show the module and mobile bar * * @return string - the css to load in the page * */ private static function getMediaQueries($selector, $options) { $detect_type = $options['detectiontype']; $detect = new Mobile_Detect; $deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer'); $bodypadding = ($options['container'] == 'body' || $options['container'] == 'topfixed') ? 'body { padding-top: 40px !important; }' : ''; if ($detect_type == 'resolution') { $css = "#" . $options['menuid'] . "-mobile-bar, #" . $options['menuid'] . "-mobile-bar-wrap-topfixed { display: none; } @media only screen and (max-width:" . str_replace('px', '', $options['resolution']) . "px){ " . ($options['hide_desktop'] === '0' ? '' : $selector . " { display: none !important; }") . " #" . $options['menuid'] . "-mobile-bar, #" . $options['menuid'] . "-mobile-bar-wrap-topfixed { display: block; } .mobilemenuck-hide {display: none !important;} " . $bodypadding . " }"; } else if (($detect_type == 'tablet' && $detect->isMobile()) || ($detect_type == 'phone' && $detect->isMobile() && !$detect->isTablet())) { $css = $selector . " { display: none !important; } #" . $options['menuid'] . "-mobile-bar, #" . $options['menuid'] . "-mobile-bar-wrap-topfixed { display: block; } .mobilemenuck-hide {display: none !important;} " . $bodypadding; } else if ($detect_type == 'all') { $css = "#" . $options['menuid'] . "-mobile-bar, #" . $options['menuid'] . "-mobile-bar-wrap-topfixed { display: block; } " . $selector . " { display: none !important; } .mobilemenuck-hide {display: none !important;} " . $bodypadding; } else { $css = ''; } return $css; } /** * Determines what to use as character * * @return string - the html value * */ static function getButtonContent($value, $styleParams) { switch ($value) { case 'hamburger': $content = '≡'; break; case 'close': $content = '×'; break; case 'custom' : $content = $styleParams->menubarbuttoncontentcustomtext; break; default : case 'none': $content = ''; break; } return $content; } }