]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Optionally set a separate Javascript server and path
authorEvan Prodromou <evan@status.net>
Wed, 27 Jan 2010 16:37:22 +0000 (11:37 -0500)
committerEvan Prodromou <evan@status.net>
Wed, 27 Jan 2010 16:37:22 +0000 (11:37 -0500)
We have about 10-12 JavaScript pages per Web page. They usually
are based on the same server as the Web pages, but since they're
static files, it makes sense to offload them to a lite server that
handles static files well.

This commit lets you set a separate Javascript server and path for the
default Javascript code in StatusNet.

Squashed commit of the following:

commit 139d1622fdafe5ad00c820224416d9021efc3234
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 27 11:30:24 2010 -0500

    modules that call htmloutputter::script() don't prescribe js/ path

commit c6ca3174af73efed55eaed5ff1e2a3bdc77d2d87
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 27 11:28:07 2010 -0500

    configurable server and path for javascript files

actions/avatarsettings.php
actions/designadminpanel.php
actions/grouplogo.php
lib/action.php
lib/default.php
lib/designsettings.php
lib/htmloutputter.php
plugins/Facebook/facebookaction.php

index cf4525552029f1fde641d6311235991cca3732a5..6a7398746ae8f8ec2a5916812f588202c2487f8d 100644 (file)
@@ -416,8 +416,8 @@ class AvatarsettingsAction extends AccountSettingsAction
         parent::showScripts();
 
         if ($this->mode == 'crop') {
-            $this->script('js/jcrop/jquery.Jcrop.min.js');
-            $this->script('js/jcrop/jquery.Jcrop.go.js');
+            $this->script('jcrop/jquery.Jcrop.min.js');
+            $this->script('jcrop/jquery.Jcrop.go.js');
         }
 
         $this->autofocus('avatarfile');
index 72ad6ade2a12ced8c9dadba73b51069aec2e3119..30e8bde1a4e5d344ffa221a770183720cbfda204 100644 (file)
@@ -302,8 +302,8 @@ class DesignadminpanelAction extends AdminPanelAction
     {
         parent::showScripts();
 
-        $this->script('js/farbtastic/farbtastic.js');
-        $this->script('js/userdesign.go.js');
+        $this->script('farbtastic/farbtastic.js');
+        $this->script('userdesign.go.js');
 
         $this->autofocus('design_background-image_file');
     }
index f197aef33ec489baf748ab2b17fbb5f1e90f1227..3c9b562962e34944ab7864b8f96157de90d114b7 100644 (file)
@@ -437,8 +437,8 @@ class GrouplogoAction extends GroupDesignAction
         parent::showScripts();
 
         if ($this->mode == 'crop') {
-            $this->script('js/jcrop/jquery.Jcrop.min.js');
-            $this->script('js/jcrop/jquery.Jcrop.go.js');
+            $this->script('jcrop/jquery.Jcrop.min.js');
+            $this->script('jcrop/jquery.Jcrop.go.js');
         }
 
         $this->autofocus('avatarfile');
index 3ffc452dec8f49ce6dac6b5ce57a5e0863a21a29..cc4f4aad074b910399ac84133cc993621dcb5e5a 100644 (file)
@@ -246,18 +246,18 @@ class Action extends HTMLOutputter // lawsuit
     {
         if (Event::handle('StartShowScripts', array($this))) {
             if (Event::handle('StartShowJQueryScripts', array($this))) {
-                $this->script('js/jquery.min.js');
-                $this->script('js/jquery.form.js');
-                $this->script('js/jquery.cookie.js');
-                $this->script('js/json2.js');
-                $this->script('js/jquery.joverlay.min.js');
+                $this->script('jquery.min.js');
+                $this->script('jquery.form.js');
+                $this->script('jquery.cookie.js');
+                $this->script('json2.js');
+                $this->script('jquery.joverlay.min.js');
                 Event::handle('EndShowJQueryScripts', array($this));
             }
             if (Event::handle('StartShowStatusNetScripts', array($this)) &&
                 Event::handle('StartShowLaconicaScripts', array($this))) {
-                $this->script('js/xbImportNode.js');
-                $this->script('js/util.js');
-                $this->script('js/geometa.js');
+                $this->script('xbImportNode.js');
+                $this->script('util.js');
+                $this->script('geometa.js');
                 // Frame-busting code to avoid clickjacking attacks.
                 $this->element('script', array('type' => 'text/javascript'),
                                'if (window.top !== window.self) { window.top.location.href = window.self.location.href; }');
index 37fb65b5331e2937bf03cb883d05d4a1e732b402..10ea34864066b03a6ab5af2586be832ed4dbe11e 100644 (file)
@@ -120,6 +120,9 @@ $default =
         array('server' => null,
               'dir' => null,
               'path'=> null),
+        'javascript' =>
+        array('server' => null,
+              'path'=> null),
         'throttle' =>
         array('enabled' => false, // whether to throttle edits; false by default
               'count' => 20, // number of allowed messages in timespan
index 8e44c03a9272942d16285d99d27e426894dd0401..4955e9219954c2bf000124ae8f0f8911c512bca7 100644 (file)
@@ -327,8 +327,8 @@ class DesignSettingsAction extends AccountSettingsAction
     {
         parent::showScripts();
 
-        $this->script('js/farbtastic/farbtastic.js');
-        $this->script('js/userdesign.go.js');
+        $this->script('farbtastic/farbtastic.js');
+        $this->script('userdesign.go.js');
 
         $this->autofocus('design_background-image_file');
     }
index 31660ce954982e365be8e68e05d179bda72cadbd..317f5ea612a79b486488875120188583a10d1e01 100644 (file)
@@ -351,14 +351,40 @@ class HTMLOutputter extends XMLOutputter
     function script($src, $type='text/javascript')
     {
         if(Event::handle('StartScriptElement', array($this,&$src,&$type))) {
+
             $url = parse_url($src);
+
             if( empty($url['scheme']) && empty($url['host']) && empty($url['query']) && empty($url['fragment']))
             {
-                $src = common_path($src) . '?version=' . STATUSNET_VERSION;
+                $path = common_config('javascript', 'path');
+
+                if (empty($path)) {
+                    $path = common_config('site', 'path') . '/js/';
+                }
+
+                if ($path[strlen($path)-1] != '/') {
+                    $path .= '/';
+                }
+
+                if ($path[0] != '/') {
+                    $path = '/'.$path;
+                }
+
+                $server = common_config('javascript', 'server');
+
+                if (empty($server)) {
+                    $server = common_config('site', 'server');
+                }
+
+                // XXX: protocol
+
+                $src = 'http://'.$server.$path.$src . '?version=' . STATUSNET_VERSION;
             }
+
             $this->element('script', array('type' => $type,
                                                    'src' => $src),
                                    ' ');
+
             Event::handle('EndScriptElement', array($this,$src,$type));
         }
     }
index 815fee094ca69510036994c9a628583cc0eb799d..389e1ea81fd0bf437e535ebc3e22057e7adbdb9c 100644 (file)
@@ -89,7 +89,7 @@ class FacebookAction extends Action
 
     function showScripts()
     {
-        $this->script('js/facebookapp.js');
+        $this->script('facebookapp.js');
     }
 
     /**