/** * Include files to document * @param array $files * @param $type */ protected function _include(array $files, $type) { static $includedFiles; if (!isset($includedFiles)) { $includedFiles = array(); } if (count($files) && !$this->app->jbrequest->isAjax()) { foreach ($files as $file) { $isExternal = strpos($file, 'http') !== false; $filePath = $file; if (!$isExternal) { $fullPath = $this->app->path->path($file); $filePath = $this->app->path->url($file); } if ($filePath) { if (!$isExternal) { $filePath = $filePath . '?ver=' . date("Ymd", filemtime($fullPath)); $filePath = $this->_getRoot() . $this->app->path->relative($filePath); } if ($type == 'css') { $this->_document->addStylesheet($filePath); } elseif ($type == 'js') { $this->_document->addScript($filePath); } } } } }
/** * Register asset files for the template admin * * @return void */ public function registerAssets() { // Load required asset files for Joomla 2.5 if (version_compare($this->version->getShortVersion(), '3.0', '<')) { $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery/jquery-1.8.2.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/bootstrap/css/bootstrap.min.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/bootstrap/js/bootstrap.min.js'); } elseif (version_compare($this->version->getShortVersion(), '3.2', '>=')) { $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery/jquery-1.8.2.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/bootstrap/css/bootstrap.min.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/bootstrap/js/bootstrap.min.js'); } //$this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-ui/css/ui-bootstrap/jquery-ui-1.9.0.custom.css'); //$this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-ui/js/jquery-ui-1.9.1.custom.min.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-ui/css/ui-bootstrap-1.10.0/jquery-ui-1.10.0.custom.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-ui/js/jquery-ui-1.10.4.custom.min.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-dynatree/skin/ui.dynatree.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-dynatree/jquery.dynatree.min.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-tipsy/tipsy.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-tipsy/jquery.tipsy.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/chosen/chosen.min.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/chosen/chosen.jquery.min.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/bxslider/jquery.bxslider.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/bxslider/jquery.bxslider.min.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/colorbox/colorbox.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/colorbox/jquery.colorbox-min.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/font-icomoon/css/icomoon.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-layout/jquery.layout.min.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-ck/jquery.ck.js'); $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-gui.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-admin.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-fonticomoon.css'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/media.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/sample-data.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/update.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/upgrade.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/quickstart.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/core.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/font.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/layout.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/maintenance.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/social-integration.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/validate.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/width-type.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/modal.js'); $templateEdition = JSNTplHelper::getTemplateEdition($this->data->template); $jversion = new JVersion(); if (version_compare($jversion->getShortVersion(), "3.0", ">=")) { $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-megamenu-backend.css'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/megamenu/handle-settings.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/megamenu/handle.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/megamenu/layout.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/megamenu/megamenu.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/megamenu/placeholder.js'); } $templateName = JText::_($this->data->template); $this->doc->addScriptDeclaration("!function (\$) {\n\t\t\t\t\"use strict\";\n\n\t\t\t\t\$(function () {\n\t\t\t\t\tnew \$.JSNTPLFrameworkCore({\n\t\t\t\t\t\ttemplate: '{$this->data->template}',\n\t\t\t\t\t\ttemplateName: '{$templateName}',\n\t\t\t\t\t\tedition: '{$templateEdition}',\n\t\t\t\t\t\tstyleId : '{$this->data->id}'\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}(jQuery);"); }
/** * Merging all css or js files (that already have been included via Joomla API) * USE IT ON YOUR OWN RISK!!! * @param string $type * @param bool $isCompress * @return $this */ public function merge($type = 'css', $isCompress = false) { $mergeFiles = array(); $dataKey = $type == 'css' ? 'styleSheets' : 'scripts'; if (method_exists($this->doc, 'getHeadData')) { $docData = $this->doc->getHeadData(); } if (isset($docData) && !empty($docData[$dataKey])) { foreach ($docData[$dataKey] as $pathOrig => $attrs) { // don't get external files $path = str_replace($this->baseurl, '', $pathOrig); $path = preg_replace('#(\\?.*)$#', '', $path); if ($this->_isExternal($path)) { continue; } if ($attrs['mime'] == 'text/css' && (!isset($attrs['media']) || strtolower($attrs['media']) == 'all') || $attrs['mime'] == 'text/javascript') { $fullPath = JPath::clean(JPATH_ROOT . '/' . $path); $fullPathFolder = JPath::clean($_SERVER['DOCUMENT_ROOT'] . '/' . $path); $resPath = false; if (JFile::exists($fullPath)) { $resPath = $fullPath; } else { if (JFile::exists($fullPathFolder)) { $resPath = $fullPathFolder; } } if ($resPath) { $mergeFiles[] = $resPath; unset($docData[$dataKey][$pathOrig]); } } } } if (count($mergeFiles)) { $processor = JBlankMinify::getProcessor($type, $this); if ($path = $processor->minify($mergeFiles, $isCompress)) { $this->setHeadData($dataKey, $docData); if ('css' == $type) { $this->doc->addStylesheet($path, 'text/css'); } else { if ('js' == $type) { $this->doc->addScript($path, "text/javascript", false, false); } } } } return $this; }
/** * @param $filename * @param string $prefix * @param bool $defer * @param bool $async * @return $this */ public function js($filename, $prefix = '', $defer = false, $async = false) { if (is_array($filename)) { foreach ($filename as $file) { $this->js($file, $prefix, $defer, $async); } } else { if ($filename) { $prefix = !empty($prefix) ? $prefix . '_' : ''; $path = JPath::clean($this->jsFull . '/' . $prefix . $filename); if ($mtime = $this->_checkFile($path)) { $filePath = $this->js . '/' . $prefix . $filename . '?' . $mtime; $this->doc->addScript($filePath, "text/javascript", $defer, $async); } } } return $this; }
/** * Attach css, javascript files to document * @return void */ private function _addAssets() { $this->_getDefaultStyles(); $file = dirname(__FILE__) . '/assets/js/supports/' . $this->_defaultStyles['admin']->template . '.js'; if (!is_file($file)) { return; } require_once JPATH_ADMINISTRATOR . '/components/com_poweradmin/helpers/poweradmin.php'; $currentVersion = PoweradminHelper::getVersion(); $config = $this->_getJSConfiguration(); $language = $this->_getJSLanguage(); $uri = JUri::root(true); $template = $this->_defaultStyles['admin']->template; $this->_document->addStyleSheet(JSN_FRAMEWORK_ASSETS . '/joomlashine/css/jsn-bootstrap.css'); $this->_document->addStylesheet($uri . '/plugins/system/jsnpoweradmin/assets/css/adminbar.css?v=' . $currentVersion); $this->_document->addStylesheet($uri . '/plugins/system/jsnpoweradmin/assets/css/window.css?v=' . $currentVersion); $this->_document->addStylesheet($uri . '/plugins/system/jsnpoweradmin/assets/css/print.css?v=' . $currentVersion, 'text/css', 'print'); if (in_array($template, array('minima', 'aplite'))) { $this->_document->addStylesheet($uri . '/plugins/system/jsnpoweradmin/assets/css/adminbar.menu.css?v=' . $currentVersion); } if ($template == 'hathor') { $this->_document->addStylesheet($uri . '/plugins/system/jsnpoweradmin/assets/css/adminbar.hathor.css?v=' . $currentVersion); } $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/jquery.noconflict.js?v=' . $currentVersion); if (file_exists('../media/system/js/mootools-core.js')) { $this->_document->addScript($uri . '/media/system/js/mootools-core.js'); $this->_document->addScript($uri . '/media/system/js/core.js'); $this->_document->addScript($uri . '/media/system/js/mootools-more.js'); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/mootool.conflict.js?v=' . $currentVersion); } else { JHtml::_('behavior.framework', true); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/mootool.conflict.js?v=' . $currentVersion); } $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/mootools/mooml.js?v=' . $currentVersion); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/scrollbar.js?v=' . $currentVersion); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/window.js?v=' . $currentVersion); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/supports/' . $template . '.js?v=' . $currentVersion); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/adminbar.js?v=' . $currentVersion); $this->_document->addScript($uri . '/plugins/system/jsnpoweradmin/assets/js/history.js?v=' . $currentVersion); $this->_document->addScriptDeclaration("\n\t\t\tif (JoomlaShine === undefined) { var JoomlaShine = {}; }\n\t\t\tif (typeof(jQuery) !== 'undefined') { jQuery.noConflict(); }\n\n\t\t\tJoomlaShine.language = {$language};\n\t\t\twindow.addEvent('domready', function () {\n\t\t\t\tif(!document.getElementById('jsn-adminbar-wrapper')){\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\t\tnew JSNAdminBar({$config});\n\t\t\t\t\t\t\tnew JSNHistory();\n\t\t\t\t\t\t}, 500);\t\t\t\t\n\t\t\t\t\t}\n\t\t\t});\n\t\t"); }
/** * Register asset files for the template admin * * @return void */ public function registerAssets() { // Specified asset files for joomla 2.5 if (version_compare($this->version->getShortVersion(), '3.0', '<')) { $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/bootstrap/css/bootstrap.min.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery/jquery-1.8.2.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/bootstrap/js/bootstrap.min.js'); } $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-ui/css/ui-bootstrap/jquery-ui-1.9.0.custom.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-dynatree/skin/ui.dynatree.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/jquery-tipsy/tipsy.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/font-icomoon/css/icomoon.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/3rd-party/chosen/chosen.min.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-gui.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-admin.css'); $this->doc->addStyleSheet($this->baseAssetUrl . '/joomlashine/css/jsn-fonticomoon.css'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-ui/js/jquery-ui-1.9.1.custom.min.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-dynatree/jquery.dynatree.min.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-layout/jquery.layout.min.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-ck/jquery.ck.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/jquery-tipsy/jquery.tipsy.js'); $this->doc->addScript($this->baseAssetUrl . '/3rd-party/chosen/chosen.jquery.min.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/media.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/sample-data.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/update.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/upgrade.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/quickstart.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/core.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/font.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/layout.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/maintenance.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/social-integration.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/validate.js'); $this->doc->addScript($this->baseAssetUrl . '/joomlashine/js/width-type.js'); $templateEdition = JSNTplHelper::getTemplateEdition($this->data->template); $templateName = JText::_($this->data->template); $this->doc->addScriptDeclaration("\n\t\t\t!function (\$) {\n\t\t\t\t\"use strict\";\n\n\t\t\t\t\$(function () {\n\t\t\t\t\tnew \$.JSNTPLFrameworkCore({\n\t\t\t\t\t\ttemplate: '{$this->data->template}',\n\t\t\t\t\t\ttemplateName: '{$templateName}',\n\t\t\t\t\t\tedition: '{$templateEdition}',\n\t\t\t\t\t\tstyleId : '{$this->data->id}'\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}(jQuery);\n\t\t"); }
/** * @param string $file * * @return void */ public function addScript($file = '') { if (is_array($file)) { $this->addScripts($file); return; } $type = 'js'; $query_string = ''; if ($this->isAdmin()) { if (strpos(GANTRY_VERSION, 'project.version') === false) { $query_string = '?gantry_version=' . GANTRY_VERSION; } } // check to see if this is a full path file $dir = dirname($file); if ($dir != ".") { // For remote url just add the url if ($this->isUriExternal($file)) { $this->document->addScript($file); return; } // For local url path get the local path based on checks $url_path = $dir; $file_path = $this->convertToPath($file); $url_file_checks = $this->platform->getJSChecks($file_path, true); foreach ($url_file_checks as $url_file) { $full_path = realpath($url_file); if ($full_path !== false && file_exists($full_path)) { $check_url_path = $url_path . '/' . basename($url_file); if (!defined('GANTRY_FINALIZED')) { $this->_scripts[$full_path] = $check_url_path . $query_string; } else { $this->document->addScript($check_url_path . $query_string); } break; } } return; } $out_files = array(); //set up the check for template with plartform based dirs $template_check_p = $this->platform->getPlatformChecks($this->templatePath . '/js'); $template_check_u = $this->platform->getPlatformChecks($this->templateUrl . '/js'); $template_search_paths = array(); for ($i = 0; $i < count($template_check_p); $i++) { $template_search_paths[$template_check_u[$i]] = $template_check_p[$i]; } $paths = array($this->gantryUrl . '/' . $type => $this->gantryPath . '/' . $type); $paths = array_merge($template_search_paths, $paths); $checks = $this->platform->getJSChecks($file); foreach ($paths as $baseurl => $path) { $baseurl = rtrim($baseurl, '/'); $path = rtrim($path, '/\\'); if (file_exists($path) && is_dir($path)) { foreach ($checks as $check) { $check_path = preg_replace("/\\?(.*)/", '', $path . '/' . $check); $check_url_path = $baseurl . "/" . $check; if (file_exists($check_path) && is_readable($check_path)) { if (!defined('GANTRY_FINALIZED')) { $this->_scripts[$check_path] = $check_url_path . $query_string; } else { $this->document->addScript($check_url_path . $query_string); } break 2; } } } } }
/** * {@inheritdoc} */ public function jsFile($file) { $this->_doc->addScript($file); }