[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