]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #3091 registering js and css support priority though does not maintain registrat...
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 12 Mar 2011 21:02:30 +0000 (21:02 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Sat, 12 Mar 2011 21:02:30 +0000 (21:02 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@8669 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/lib/elgglib.php
engine/tests/api/helpers.php

index 7b21f7dfc2b74c34d37c8167958a85a85f2125d4..93be114f2aa16333f81776ddb094cf00ca70b4c9 100644 (file)
@@ -208,7 +208,7 @@ function elgg_register_css($name, $url, $priority = 500) {
  * @return bool
  * @since 1.8.0
  */
-function elgg_register_external_file($type, $name, $url, $location, $priority) {
+function elgg_register_external_file($type, $name, $url, $location, $priority = 500) {
        global $CONFIG;
 
        if (empty($name) || empty($url)) {
@@ -230,7 +230,12 @@ function elgg_register_external_file($type, $name, $url, $location, $priority) {
        }
 
        $name = trim(strtolower($name));
-       $CONFIG->externals[$type][$location][$name] = elgg_normalize_url($url);
+
+       $item = new stdClass();
+       $item->url = elgg_normalize_url($url);
+       $item->priority = max((int)$priority, 0);
+
+       $CONFIG->externals[$type][$location][$name] = $item;
 
        return true;
 }
@@ -327,7 +332,10 @@ function elgg_get_external_file($type, $location) {
                isset($CONFIG->externals[$type]) &&
                isset($CONFIG->externals[$type][$location])) {
 
-               return array_values($CONFIG->externals[$type][$location]);
+               $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;'));
+               return $items;
        }
        return array();
 }
index b8cf96900b52eec0dec14535aafa0fc6461d39e5..b7057220ba004ccba091e920abec1d776b1f1437 100644 (file)
@@ -104,9 +104,9 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
                global $CONFIG;
 
                // specify name
-               $result = elgg_register_js('key', '//test1.com', 'footer');
+               $result = elgg_register_js('key', 'http://test1.com', 'footer');
                $this->assertTrue($result);
-               $this->assertIdentical('//test1.com', $CONFIG->externals['js']['footer']['key']);
+               $this->assertIdentical('http://test1.com', $CONFIG->externals['js']['footer']['key']->url);
 
                // send a bad url
                $result = elgg_register_js();
@@ -120,9 +120,9 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
                global $CONFIG;
 
                // specify name
-               $result = elgg_register_css('key', '//test1.com');
+               $result = elgg_register_css('key', 'http://test1.com');
                $this->assertTrue($result);
-               $this->assertIdentical('//test1.com', $CONFIG->externals['css']['head']['key']);
+               $this->assertIdentical('http://test1.com', $CONFIG->externals['css']['head']['key']->url);
        }
 
        /**
@@ -131,7 +131,9 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
        public function testElggUnregisterJS() {
                global $CONFIG;
 
-               $urls = array('id1' => '//url1.com', 'id2' => '//url2.com', 'id3' => '//url3.com');
+               $base = trim(elgg_get_site_url(), "/");
+
+               $urls = array('id1' => "$base/urla", 'id2' => "$base/urlb", 'id3' => "$base/urlc");
                foreach ($urls as $id => $url) {
                        elgg_register_js($id, $url);
                }
@@ -142,11 +144,11 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
 
                $result = elgg_unregister_js('id1');
                $this->assertFalse($result);
-               $result = elgg_unregister_js('', '//url2.com');
+               $result = elgg_unregister_js('', 'does_not_exist');
                $this->assertFalse($result);
 
                $result = elgg_unregister_js('id2');
-               $this->assertIdentical($urls['id3'], $CONFIG->externals['js']['head']['id3']);
+               $this->assertIdentical($urls['id3'], $CONFIG->externals['js']['head']['id3']->url);
        }
 
        /**
@@ -157,9 +159,9 @@ class ElggCoreHelpersTest extends ElggCoreUnitTest {
 
                $base = trim(elgg_get_site_url(), "/");
 
-               $urls = array('id1' => "$base/id1", 'id2' => "$base/id2", 'id3' => "$base/id3");
+               $urls = array('id1' => "$base/urla", 'id2' => "$base/urlb", 'id3' => "$base/urlc");
                foreach ($urls as $id => $url) {
-                       elgg_register_js($url, $id);
+                       elgg_register_js($id, $url);
                }
 
                $js_urls = elgg_get_js('head');