[geeklog-hg] geeklog: Moved JavaScript code that is hard-coded in lib-common....

geeklog-cvs at lists.geeklog.net geeklog-cvs at lists.geeklog.net
Mon Jan 6 13:15:46 EST 2014


changeset 9392:1bfa6d5d4181
url:  http://project.geeklog.net/cgi-bin/hgwebdir.cgi/geeklog/rev/1bfa6d5d4181
user: dengen <taharaxp at gmail.com>
date: Tue Jan 07 03:14:29 2014 +0900
description:
Moved JavaScript code that is hard-coded in lib-common.php to an external file

diffstat:

 public_html/javascript/dialog_help.js |  35 ++++++++++++++++
 public_html/lib-common.php            |  53 +++++-------------------
 system/classes/scripts.class.php      |  73 +++++++++++++++++++++++++++++-----
 3 files changed, 108 insertions(+), 53 deletions(-)

diffs (230 lines):

diff -r c3ffefcc5054 -r 1bfa6d5d4181 public_html/javascript/dialog_help.js
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/public_html/javascript/dialog_help.js	Tue Jan 07 03:14:29 2014 +0900
@@ -0,0 +1,35 @@
+$(function() {
+    $('a.blocktitle').each(function() {
+        var $link = $(this);
+        $link.one('click', function() {
+
+            var $loading = $('<div style="margin: auto; padding-top: 90px; width: 32px; height: 32px">'
+                + '<img src="' + geeklog.layout_url + '/images/loading.gif" alt="loading"' + geeklog.xhtml + '></div>');
+
+            var $dialog = $('<div></div>')
+                .append($loading.clone());
+
+            var buttons_obj = new Object();
+            buttons_obj[geeklog.lang.close] = function() {
+                $dialog.dialog("close");
+            };
+
+            $dialog
+                .load($link.attr('href')+ ' #content')
+                .dialog({
+                    title: $link.attr("title"),
+                    width: 500,
+                    height: 300,
+                    buttons: buttons_obj,
+                });
+
+            $link.click(function() {
+                $dialog.dialog("open");
+
+                return false;
+            });
+
+            return false;
+        });
+    });
+});
diff -r c3ffefcc5054 -r 1bfa6d5d4181 public_html/lib-common.php
--- a/public_html/lib-common.php	Sun Jan 05 23:39:01 2014 +0900
+++ b/public_html/lib-common.php	Tue Jan 07 03:14:29 2014 +0900
@@ -2324,7 +2324,7 @@
 
     $block->set_var( 'block_title', stripslashes( $title ));
 
-     
+
     if( !empty( $helpfile )) {
         // Only works when header generated all at once
         if ($_CONF['supported_version_theme'] != '1.8.1') {
@@ -2333,49 +2333,20 @@
                 define('GL-HELP-SET', true);
                 
                 // Add in Query dialog for help file
-                $_SCRIPTS->setJavaScriptLibrary('jquery.ui.dialog'); 
-                $_SCRIPTS->setJavaScriptLibrary('jquery.ui.draggable'); 
+                $_SCRIPTS->setJavaScriptLibrary('jquery.ui.dialog');
+                $_SCRIPTS->setJavaScriptLibrary('jquery.ui.draggable');
                 $_SCRIPTS->setJavaScriptLibrary('jquery.ui.droppable');
                 $_SCRIPTS->setJavaScriptLibrary('jquery.ui.resizable');
                 $_SCRIPTS->setJavaScriptLibrary('jquery.ui.button');
-                
-                $js = '
-                    $(document).ready(function() {
-                        var $loading = $(\'<div style="margin: auto; padding-top: 90px; width: 32px; height: 32px"><img src="/layout/' . $_CONF['theme'] .  '/images/loading.gif" alt="loading"' . XHTML . '></div>\');
-                    
-                        $(\'a.blocktitle\').each(function() {
-                            var $dialog = $(\'<div></div>\')
-                                .append($loading.clone());
-                            var $link = $(this).one(\'click\', function() {
-                                $dialog
-                                    .load($link.attr(\'href\')+ \' #content\')
-                                    .dialog({
-                                        title: $link.attr("title"),
-                                        width: 500,
-                                        height: 300,
-                                        buttons: {
-                                            ' . $LANG32[60] . ': function() {
-                                            $(this).dialog("close");
-                                            }
-                                        }                                        
-                                    });
-                    
-                                $link.click(function() {
-                                    $dialog.dialog("open");
-                    
-                                    return false;
-                                });
-                    
-                                return false;
-                            });
-                        });
-                    });
-                ';
-                
-                $_SCRIPTS->setJavaScript($js, true, true);        
-            }        
-        }
-        
+
+                // Add Language valiables
+                $_SCRIPTS->setLang(array('close' => $LANG32[60]));
+
+                // Add JavaScript
+                $_SCRIPTS->setJavaScriptFile('dialog_help', '/javascript/dialog_help.js');
+            }
+        }
+
         $helpimg = $_CONF['layout_url'] . '/images/button_help.' . $_IMAGE_TYPE;
         $help_content = '<img src="' . $helpimg. '" alt="?"' . XHTML . '>';
         $help_attr = array('class'=>'blocktitle', 'title'=>"$title");
diff -r c3ffefcc5054 -r 1bfa6d5d4181 system/classes/scripts.class.php
--- a/system/classes/scripts.class.php	Sun Jan 05 23:39:01 2014 +0900
+++ b/system/classes/scripts.class.php	Tue Jan 07 03:14:29 2014 +0900
@@ -59,6 +59,8 @@
     private $javascript_set; // Flag to know if ANY JavaScript has been set yet
     private $css_set; // Flag to know if ANY css has been set yet
 
+    private $lang; // Array of language variables used in JavaScript
+
     /**
     * Constructor
     *
@@ -77,6 +79,7 @@
         $this->scripts = array();
         $this->css = array();
         $this->restricted_names = array();
+        $this->lang = array();
         
         $this->header_set = false;
         $this->javascript_set = false;
@@ -408,6 +411,21 @@
     }
     
     /**
+    * Set language variables used in JavaScript.
+    *
+    * @param    $lang_array   array of language variables
+    * @access   public
+    * @return   boolean
+    *
+    */
+    public function setLang($lang_array) {
+
+        $this->lang = array_merge($this->lang, $lang_array);
+
+        return true;
+    }
+
+    /**
     * Set CSS file to load
     *
     * @param    $name       name of CSS file
@@ -544,25 +562,38 @@
         
         // Set JavaScript Variables (do this before file in case variables are needed)
         $iso639Code = COM_getLangIso639Code();
+        $lang = array(
+            'iso639Code'          => $iso639Code,
+            'tooltip_loading'     => $MESSAGE[116],
+            'tooltip_not_found'   => $MESSAGE[117],
+            'tooltip_select_date' => $MESSAGE[118],
+            'tabs_more'           => $MESSAGE[119],
+            'confirm_delete'      => $MESSAGE[76],
+            'confirm_send'        => $MESSAGE[120]
+        );
+        if (!empty($this->lang)) {
+            $lang = array_merge($lang, $this->lang);
+        }
+        $src = array(
+            'site_url'       => $_CONF['site_url'],
+            'site_admin_url' => $_CONF['site_admin_url'],
+            'layout_url'     => $_CONF['layout_url'],
+            'xhtml'          => XHTML,
+            'lang'           => $lang,
+        );
+        $str = $this->_array_to_jsobj($src);
+        // Strip '{' and '}' from both ends of $str
+        $str = substr($str, 1);
+        $str = substr($str, 0, strlen($str) - 1);
         $headercode .= <<<EOD
 <script type="text/javascript">
 var geeklog = {
     doc: document,
-    site_url: "{$_CONF['site_url']}",
-    layout_url: "{$_CONF['layout_url']}",
-    lang: {
-        iso639Code: "{$iso639Code}",
-        tooltip_loading: "{$MESSAGE[116]}",
-        tooltip_not_found: "{$MESSAGE[117]}",
-        tooltip_select_date: "{$MESSAGE[118]}",
-        tabs_more: "{$MESSAGE[119]}",
-        confirm_delete: "{$MESSAGE[76]}",
-        confirm_send: "{$MESSAGE[120]}"
-    },
     win: window,
     $: function (id) {
         return this.doc.getElementById(id);
-    }
+    },
+    {$str}
 };
 </script>
 
@@ -592,6 +623,24 @@
     }
 
     /**
+    * Convert from array to JavaScript object format string
+    *
+    */
+    private function _array_to_jsobj($src) {
+        $retval = '{';
+        foreach ($src as $key => $val) {
+            $retval .= "$key:";
+            if (is_array($val)) {
+                $retval .= $this->_array_to_jsobj($val) . ',';
+            } else {
+                $retval .= '"' . $val . '",';
+            }
+        }
+        $retval = rtrim($retval, ',') . '}';
+        return $retval;
+    }
+
+    /**
     * Returns JavaScript footer code to be placed just before </body>
     *
     * @access   public



More information about the geeklog-cvs mailing list