MDL-40477 JavaScript: Move YUI config functions out and deminify
This should make future development and debugging of these functions much easier. It also allows us to write inline documentation for them.
This commit is contained in:
@@ -192,7 +192,7 @@ class page_requirements_manager {
|
||||
$this->YUI_config->comboBase = $this->yui3loader->comboBase;
|
||||
$this->YUI_config->combine = $this->yui3loader->combine;
|
||||
|
||||
$configname = $this->YUI_config->set_config_function("if(/-skin|reset|fonts|grids|base/.test(me.name)){me.type='css';me.path=me.path.replace(/\.js/,'.css');me.path=me.path.replace(/\/yui2-skin/,'/assets/skins/sam/yui2-skin');}");
|
||||
$configname = $this->YUI_config->set_config_source('lib/yui/config/yui2.js');
|
||||
$this->YUI_config->add_group('yui2', array(
|
||||
// Loader configuration for our 2in3, for now ignores $CFG->useexternalyui.
|
||||
'base' => $CFG->httpswwwroot . '/lib/yuilib/2in3/' . $CFG->yui2version . '/build/',
|
||||
@@ -207,7 +207,7 @@ class page_requirements_manager {
|
||||
)
|
||||
)
|
||||
));
|
||||
$configname = $this->YUI_config->set_config_function("var p = me.path, b = me.name.replace(/^moodle-/,'').split('-', 3), n = b.pop();if (/(skin|core)/.test(n)) {n = b.pop();me.type = 'css';};me.path = b.join('-')+'/'+n+'/'+n;if(me.type !== 'css'){me.path=me.path+'-min';};me.path=me.path+'.'+me.type;");
|
||||
$configname = $this->YUI_config->set_config_source('lib/yui/config/moodle.js');
|
||||
$this->YUI_config->add_group('moodle', array(
|
||||
'name' => 'moodle',
|
||||
'base' => $CFG->httpswwwroot . '/theme/yui_combo.php'.$sep.'moodle/'.$jsrev.'/',
|
||||
@@ -1553,6 +1553,36 @@ class YUI_config {
|
||||
return '@' . $configname . '@';
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow setting of the config function described in {@see set_config_function} from a file.
|
||||
* The contents of this file are then passed to set_config_function.
|
||||
*
|
||||
* When jsrev is positive, the function is minified and stored in a MUC cache for subsequent uses.
|
||||
*
|
||||
* @param $file The path to the JavaScript function used for YUI configuration.
|
||||
* @return String the name of the function to use in the group pattern configuration.
|
||||
*/
|
||||
public function set_config_source($file) {
|
||||
global $CFG;
|
||||
$cache = cache::make('core', 'yuimodules');
|
||||
|
||||
// Attempt to get the metadata from the cache.
|
||||
$keyname = 'configfn_' . $file;
|
||||
$fullpath = $CFG->dirroot . '/' . $file;
|
||||
if (!isset($CFG->jsrev) || $CFG->jsrev == -1) {
|
||||
$cache->delete($keyname);
|
||||
$configfn = file_get_contents($fullpath);
|
||||
} else {
|
||||
$configfn = $cache->get($keyname);
|
||||
if ($configfn === false) {
|
||||
require_once($CFG->libdir . '/jslib.php');
|
||||
$configfn = js_minify($fullpath);
|
||||
$cache->set($keyname, $configfn);
|
||||
}
|
||||
}
|
||||
return $this->set_config_function($configfn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the list of JavaScript functions for YUI_config groups.
|
||||
*
|
||||
|
||||
Vendored
+37
@@ -0,0 +1,37 @@
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// A module name should be composed of:
|
||||
// moodle-<component>-<module>[-skin]
|
||||
var path = me.path,
|
||||
parts = me.name.replace(/^moodle-/,'').split('-', 3),
|
||||
modulename = parts.pop();
|
||||
|
||||
if (/(skin|core)/.test(modulename)) {
|
||||
// For these types, we need to remove the final word and set the type.
|
||||
modulename = parts.pop();
|
||||
me.type = 'css';
|
||||
}
|
||||
|
||||
// Build the first part of the filename.
|
||||
me.path = parts.join('-') + '/' + modulename + '/' + modulename;
|
||||
|
||||
// CSS is not minified, but all other types are.
|
||||
if (me.type !== 'css') {
|
||||
me.path = me.path + '-min';
|
||||
}
|
||||
|
||||
// Add the file extension.
|
||||
me.path = me.path + '.' + me.type;
|
||||
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
if (/-skin|reset|fonts|grids|base/.test(me.name)){
|
||||
me.type = 'css';
|
||||
me.path = me.path.replace(/\.js/, '.css');
|
||||
me.path = me.path.replace(/\/yui2-skin/, '/assets/skins/sam/yui2-skin');
|
||||
}
|
||||
Reference in New Issue
Block a user