if (elgg_in_context('admin')) {
$url = elgg_get_simplecache_url('css', 'admin');
elgg_register_css('elgg.admin', $url);
+ elgg_load_css('elgg.admin');
elgg_unregister_css('elgg');
// setup footer menu
elgg_unregister_css('elgg');
$url = elgg_get_simplecache_url('js', 'admin');
elgg_register_js('elgg.admin', $url);
+ elgg_load_js('elgg.admin');
elgg_register_js('jquery.jeditable', 'vendors/jquery/jquery.jeditable.mini.js');
+ elgg_load_js('jquery.jeditable');
// default to dashboard
if (!isset($page[0]) || empty($page[0])) {
return elgg_register_external_file('js', $name, $url, $location, $priority);
}
+/**
+ * Unregister a JavaScript file
+ *
+ * @param string $name The identifier for the JavaScript library
+ *
+ * @return bool
+ * @since 1.8.0
+ */
+function elgg_unregister_js($name) {
+ return elgg_unregister_external_file('js', $name);
+}
+
+/**
+ * Load a JavaScript resource on this page
+ *
+ * This must be called before elgg_view_page(). It can be called before the
+ * script is registered. If you do not want a script loaded, unregister it.
+ *
+ * @param string $name Identifier of the JavaScript resource
+ *
+ * @since 1.8.0
+ */
+function elgg_load_js($name) {
+ elgg_load_external_file('js', $name);
+}
+
+/**
+ * Get the JavaScript URLs that are loaded
+ *
+ * @param string $location 'head' or 'footer'
+ *
+ * @return array
+ * @since 1.8.0
+ */
+function elgg_get_loaded_js($location = 'head') {
+ return elgg_get_loaded_external_files('js', $location);
+}
+
/**
* Register a CSS file for inclusion in the HTML head
*
return elgg_register_external_file('css', $name, $url, 'head', $priority);
}
+/**
+ * Unregister a CSS file
+ *
+ * @param string $name The identifier for the CSS file
+ *
+ * @return bool
+ * @since 1.8.0
+ */
+function elgg_unregister_css($name) {
+ return elgg_unregister_external_file('css', $name);
+}
+
+/**
+ * Load a CSS file for this page
+ *
+ * This must be called before elgg_view_page(). It can be called before the
+ * CSS file is registered. If you do not want a CSS file loaded, unregister it.
+ *
+ * @param string $name Identifier of the CSS file
+ *
+ * @since 1.8.0
+ */
+function elgg_load_css($name) {
+ elgg_load_external_file('css', $name);
+}
+
+/**
+ * Get the loaded CSS URLs
+ *
+ * @return array
+ * @since 1.8.0
+ */
+function elgg_get_loaded_css() {
+ return elgg_get_loaded_external_files('css', 'head');
+}
+
/**
* Core registration function for external files
*
- * @param string $type Type of external resource
+ * @param string $type Type of external resource (js or css)
* @param string $name Identifier used as key
* @param string $url URL
* @param string $location Location in the page to include the file
}
$url = elgg_format_url($url);
-
+ $url = elgg_normalize_url($url);
+
if (!isset($CONFIG->externals)) {
$CONFIG->externals = array();
}
if (!isset($CONFIG->externals[$type])) {
- $CONFIG->externals[$type] = array();
- }
-
- if (!isset($CONFIG->externals[$type][$location])) {
- $CONFIG->externals[$type][$location] = array();
+ $CONFIG->externals[$type] = array();
}
$name = trim(strtolower($name));
- $item = new stdClass();
- $item->url = elgg_normalize_url($url);
- $item->priority = max((int)$priority, 0);
+ if (isset($CONFIG->externals[$type][$name])) {
+ // update a registered item
+ $item = $CONFIG->externals[$type][$name];
- $CONFIG->externals[$type][$location][$name] = $item;
+ } else {
+ $item = new stdClass();
+ $item->loaded = false;
+ }
- return true;
-}
+ $item->url = $url;
+ $item->priority = max((int)$priority, 0);
+ $item->location = $location;
-/**
- * Unregister a JavaScript file
- *
- * @param string $name The identifier for the JavaScript library
- *
- * @return bool
- * @since 1.8.0
- */
-function elgg_unregister_js($name) {
- return elgg_unregister_external_file('js', $name);
-}
+ $CONFIG->externals[$type][$name] = $item;
-/**
- * Unregister a CSS file
- *
- * @param string $name The identifier for the CSS file
- *
- * @return bool
- * @since 1.8.0
- */
-function elgg_unregister_css($name) {
- return elgg_unregister_external_file('css', $name);
+ return true;
}
/**
* Unregister an external file
*
- * @param string $type Type of file: javascript or css
+ * @param string $type Type of file: js or css
* @param string $name The identifier of the file
*
* @return bool
return false;
}
- foreach ($CONFIG->externals[$type] as $location => $files) {
- if (array_key_exists($name, $CONFIG->externals[$type][$location])) {
- unset($CONFIG->externals[$type][$location][$name]);
- return true;
- }
+ $name = trim(strtolower($name));
+
+ if (array_key_exists($name, $CONFIG->externals[$type])) {
+ unset($CONFIG->externals[$type][$name]);
+ return true;
}
return false;
}
/**
- * Get the JavaScript URLs
+ * Load an external resource for use on this page
*
- * @param string $location 'head' or 'footer'
+ * @param string $type Type of file: js or css
+ * @param string $name
*
- * @return array
* @since 1.8.0
*/
-function elgg_get_js($location = 'head') {
- return elgg_get_external_file('js', $location);
-}
+function elgg_load_external_file($type, $name) {
+ global $CONFIG;
-/**
- * Get the CSS URLs
- *
- * @return array
- * @since 1.8.0
- */
-function elgg_get_css() {
- return elgg_get_external_file('css', 'head');
+ if (!isset($CONFIG->externals)) {
+ $CONFIG->externals = array();
+ }
+
+ if (!isset($CONFIG->externals[$type])) {
+ $CONFIG->externals[$type] = array();
+ }
+
+ $name = trim(strtolower($name));
+
+ if (isset($CONFIG->externals[$type][$name])) {
+ // update a registered item
+ $CONFIG->externals[$type][$name]->loaded = true;
+ } else {
+ $item = new stdClass();
+ $item->loaded = true;
+ $item->url = '';
+ $item->location = '';
+ $item->priority = 500;
+
+ $CONFIG->externals[$type][$name] = $item;
+ }
}
/**
* Get external resource descriptors
*
- * @param string $type Type of resource
+ * @param string $type Type of file: js or css
* @param string $location Page location
*
* @return array
* @since 1.8.0
*/
-function elgg_get_external_file($type, $location) {
+function elgg_get_loaded_external_files($type, $location) {
global $CONFIG;
- if (isset($CONFIG->externals) &&
- isset($CONFIG->externals[$type]) &&
- isset($CONFIG->externals[$type][$location])) {
+ if (isset($CONFIG->externals) && isset($CONFIG->externals[$type])) {
+ $items = array_values($CONFIG->externals[$type]);
- $items = array_values($CONFIG->externals[$type][$location]);
- usort($items, create_function('$a,$b','return $a->priority >= $b->priority;'));
- array_walk($items, create_function('&$v,$k', '$v = $v->url;'));
+ $callback = "return \$v->loaded == true && \$v->location == $location;";
+ $items = array_filter($items, create_function('&$v,$k', $callback));
+ if ($items) {
+ usort($items, create_function('$a,$b','return $a->priority >= $b->priority;'));
+ array_walk($items, create_function('&$v,$k', '$v = $v->url;'));
+ }
return $items;
}
return array();
*/
function elgg_walled_garden_index() {
elgg_register_css('elgg.walled_garden', '/css/walled_garden.css');
+ elgg_load_css('elgg.walled_garden');
+
$login = elgg_view('core/account/login_walled_garden');
echo elgg_view_page('', $login, 'walled_garden');
elgg_register_page_handler('js', 'js_page_handler');
elgg_register_page_handler('css', 'css_page_handler');
+ elgg_register_js('elgg.autocomplete', 'js/lib/autocomplete.js');
+ elgg_register_js('elgg.userpicker', 'js/lib/userpicker.js');
+ elgg_register_js('elgg.friendspicker', 'js/lib/friends_picker.js');
+ elgg_register_js('jquery.easing', 'vendors/jquery/jquery.easing.1.3.packed.js');
+
// Trigger the shutdown:system event upon PHP shutdown.
register_shutdown_function('_elgg_shutdown_hook');
function elgg_views_register_core_head_elements() {
$url = elgg_get_simplecache_url('js', 'elgg');
elgg_register_js('elgg', $url, 'head', 10);
+ elgg_load_js('elgg');
$url = elgg_get_simplecache_url('css', 'elgg');
elgg_register_css('elgg', $url, 10);
+ elgg_load_css('elgg');
}
/**
elgg_register_js('jquery', '/vendors/jquery/jquery-1.5.min.js', 'head', 1);
elgg_register_js('jquery-ui', '/vendors/jquery/jquery-ui-1.8.9.min.js', 'head', 2);
elgg_register_js('jquery.form', '/vendors/jquery/jquery.form.js');
+ elgg_load_js('jquery');
+ elgg_load_js('jquery-ui');
+ elgg_load_js('jquery.form');
elgg_register_event_handler('ready', 'system', 'elgg_views_register_core_head_elements');
// specify name
$result = elgg_register_js('key', 'http://test1.com', 'footer');
$this->assertTrue($result);
- $this->assertIdentical('http://test1.com', $CONFIG->externals['js']['footer']['key']->url);
+ $this->assertIdentical('http://test1.com', $CONFIG->externals['js']['key']->url);
// send a bad url
$result = elgg_register_js();
// specify name
$result = elgg_register_css('key', 'http://test1.com');
$this->assertTrue($result);
- $this->assertIdentical('http://test1.com', $CONFIG->externals['css']['head']['key']->url);
+ $this->assertIdentical('http://test1.com', $CONFIG->externals['css']['key']->url);
}
/**
$this->assertFalse($result);
$result = elgg_unregister_js('id2');
- $this->assertIdentical($urls['id3'], $CONFIG->externals['js']['head']['id3']->url);
+ $this->assertIdentical($urls['id3'], $CONFIG->externals['js']['id3']->url);
}
/**
- * Test elgg_get_js()
+ * Test elgg_load_js()
+ */
+ public function testElggLoadJS() {
+ global $CONFIG;
+
+ // load before register
+ elgg_load_js('key');
+ $result = elgg_register_js('key', 'http://test1.com', 'footer');
+ $this->assertTrue($result);
+ $js_urls = elgg_get_loaded_js('footer');
+ $this->assertIdentical(array('http://test1.com'), $js_urls);
+ }
+
+ /**
+ * Test elgg_get_loaded_js()
*/
public function testElggGetJS() {
global $CONFIG;
$urls = array('id1' => "$base/urla", 'id2' => "$base/urlb", 'id3' => "$base/urlc");
foreach ($urls as $id => $url) {
elgg_register_js($id, $url);
+ elgg_load_js($id);
}
- $js_urls = elgg_get_js('head');
+ $js_urls = elgg_get_loaded_js('head');
$this->assertIdentical($js_urls[0], $urls['id1']);
$this->assertIdentical($js_urls[1], $urls['id2']);
$this->assertIdentical($js_urls[2], $urls['id3']);
- $js_urls = elgg_get_js('footer');
+ $js_urls = elgg_get_loaded_js('footer');
$this->assertIdentical(array(), $js_urls);
}
}
elgg_push_breadcrumb($blog->title, $blog->getURL());
elgg_push_breadcrumb(elgg_echo('edit'));
- $blog_js = elgg_get_simplecache_url('js', 'blog/save_draft');
- elgg_register_js('elgg.blog', $blog_js);
+ elgg_load_js('elgg.blog');
$content = elgg_view_form('blog/save', $vars, $body_vars);
$sidebar = elgg_view('blog/sidebar/revisions', $vars);
// add to the main css
elgg_extend_view('css/screen', 'blog/css');
+ // register the blog's JavaScript
+ $blog_js = elgg_get_simplecache_url('js', 'blog/save_draft');
+ elgg_register_js('elgg.blog', $blog_js);
+
// routing of urls
elgg_register_page_handler('blog', 'blog_page_handler');
<![endif]-->
<?php
-foreach (elgg_get_js() as $script) {
+foreach (elgg_get_loaded_js() as $script) {
?>
<script type="text/javascript" src="<?php echo $script; ?>"></script>
<?php
set_page_owner(elgg_get_logged_in_user_guid());
$js_url = elgg_get_simplecache_url('js', 'friendsPickerv1');
-elgg_register_js('friendsPicker', $js_url);
+elgg_register_js('friendsPickerv1', $js_url);
+elgg_load_js('friendsPickerv1');
// Set the context to settings
elgg_set_context('settings');
* Hacked up friends picker that needs to be replaced
*/
-elgg_register_js('elgg.friendspicker', 'js/lib/friends_picker.js');
-elgg_register_js('jquery.easing', 'vendors/jquery/jquery.easing.1.3.packed.js');
+elgg_load_js('elgg.friendspicker');
+elgg_load_js('jquery.easing');
?>
<div class="elgg-module elgg-module-info">
elgg_register_action("pages/editwelcome", "$action_base/editwelcome.php");
elgg_register_action("pages/delete", "$action_base/delete.php");
- // Extend some views
+ // Extend the main css view
elgg_extend_view('css/elgg', 'pages/css');
+ // Register javascript needed for sidebar menu
+ $js_url = 'mod/pages/vendors/jquery-treeview/jquery.treeview.min.js';
+ elgg_register_js('jquery-treeview', $js_url);
+ $css_url = 'mod/pages/vendors/jquery-treeview/jquery.treeview.css';
+ elgg_register_css('jquery-treeview', $css_url);
+
// Register entity type for search
elgg_register_entity_type('object', 'page');
elgg_register_entity_type('object', 'page_top');
elgg_load_library('elgg:pages');
// add the jquery treeview files for navigation
- $js_url = elgg_get_site_url() . 'mod/pages/vendors/jquery-treeview/jquery.treeview.min.js';
- elgg_register_js('jquery-treeview', $js_url);
- $css_url = elgg_get_site_url() . 'mod/pages/vendors/jquery-treeview/jquery.treeview.css';
- elgg_register_css('jquery-treeview', $css_url);
+ elgg_load_js('jquery-treeview');
+ elgg_load_css('jquery-treeview');
if (!isset($page[0])) {
$page[0] = 'all';
function tinymce_init() {
elgg_extend_view('css/elgg', 'tinymce/css');
elgg_extend_view('css/admin', 'tinymce/css');
+
+ elgg_register_js('tinymce', 'mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js');
+ elgg_register_js('elgg.tinymce', elgg_get_simplecache_url('js', 'tinymce'));
elgg_extend_view('input/longtext', 'tinymce/init');
* Initialize the TinyMCE script
*/
-elgg_register_js('tinymce', 'mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js');
-elgg_register_js('elgg.tinymce', elgg_get_simplecache_url('js', 'tinymce'));
\ No newline at end of file
+elgg_load_js('tinymce');
+elgg_load_js('elgg.tinymce');
\ No newline at end of file
function zaudio_init() {
elgg_extend_view('css/elgg', 'zaudio/css');
+
+ $js_url = elgg_get_site_url() . 'mod/zaudio/audioplayer/audio-player.js';
+ elgg_register_js('elgg.zaudio', $js_url);
}
* @package ElggZAudio
*/
-$js_url = elgg_get_site_url() . 'mod/zaudio/audioplayer/audio-player.js';
-elgg_register_js('elgg.zaudio', $js_url);
+elgg_load_js('elgg.zaudio');
$swf_url = elgg_get_site_url() . 'mod/zaudio/audioplayer/player.swf';
$mp3_url = elgg_get_site_url() . "mod/file/download.php?file_guid={$vars['file_guid']}";
unset($vars['match_on']);
unset($vars['match_owner']);
-elgg_register_js('elgg.autocomplete', 'js/lib/autocomplete.js');
+elgg_load_js('elgg.autocomplete');
?>
* @uses $vars['entities'] The array of ElggUser objects
*/
-elgg_register_js('elgg.friendspicker', 'js/lib/friends_picker.js');
-elgg_register_js('jquery.easing', 'vendors/jquery/jquery.easing.1.3.packed.js');
+elgg_load_js('elgg.friendspicker');
+elgg_load_js('jquery.easing');
$chararray = elgg_echo('friendspicker:chararray');
*
*/
-elgg_register_js('elgg.userpicker', 'js/lib/userpicker.js');
+elgg_load_js('elgg.userpicker');
function user_picker_add_user($user_id) {
$user = get_entity($user_id);
$feedref = "";
}
-$js = elgg_get_js('head');
-$css = elgg_get_css();
+$js = elgg_get_loaded_js('head');
+$css = elgg_get_loaded_css();
$version = get_version();
$release = get_version(true);