Optimize output of CSS/JS
authorMichael M Slusarz <slusarz@curecanti.org>
Wed, 5 Aug 2009 04:47:55 +0000 (22:47 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Wed, 5 Aug 2009 04:52:30 +0000 (22:52 -0600)
19 files changed:
ingo/blacklist.php
ingo/filters.php
ingo/forward.php
ingo/js/filters.js [new file with mode: 0644]
ingo/js/new_folder.js [new file with mode: 0644]
ingo/js/rule.js [new file with mode: 0644]
ingo/lib/Ingo.php
ingo/rule.php
ingo/script.php
ingo/spam.php
ingo/templates/common-header.inc
ingo/templates/filters/filter.html
ingo/templates/filters/header.inc
ingo/templates/javascript/new_folder.js [deleted file]
ingo/templates/menu.inc
ingo/templates/rule/filter.inc
ingo/templates/rule/header.inc
ingo/vacation.php
ingo/whitelist.php

index f890925..bf26beb 100644 (file)
@@ -96,11 +96,8 @@ $folder_list = Ingo::flistSelect($blacklist_folder, 'filters', 'actionvalue',
 $filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
 $bl_rule = $filters->findRule(Ingo_Storage::ACTION_BLACKLIST);
 
-/* Include new folder JS if necessary. */
-if ($registry->hasMethod('mail/createFolder')) {
-    Horde::addScriptFile('new_folder.js');
-}
-
+Ingo::prepareMenu();
+Ingo::addNewFolderJs();
 $title = _("Blacklist Edit");
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
index a37c794..5ac3aed 100644 (file)
@@ -141,6 +141,8 @@ $filter_list = $filters->getFilterList();
 
 Horde::addScriptFile('tooltips.js', 'horde', true);
 Horde::addScriptFile('stripe.js', 'horde', true);
+Horde::addScriptFile('filters.js', 'ingo', true);
+Ingo::prepareMenu();
 $title = _("Filter Rules");
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
index 30bc6c4..cc7e270 100644 (file)
@@ -98,6 +98,7 @@ $form_title .= ' ' . Horde_Help::link('ingo', 'forward');
 $form->setTitle($form_title);
 
 $title = _("Forwards Edit");
+Ingo::prepareMenu();
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
 $form->renderActive(new Horde_Form_Renderer(array('encode_title' => false)), $vars, 'forward.php', 'post');
diff --git a/ingo/js/filters.js b/ingo/js/filters.js
new file mode 100644 (file)
index 0000000..4d947ee
--- /dev/null
@@ -0,0 +1,19 @@
+/**
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ */
+
+var IngoFilters = {
+
+    moveFromTo: function(from, to, upurl, downurl)
+    {
+        var steps = to - from;
+        if (steps < 0) {
+            window.location = upurl + '&steps=' + -steps;
+        } else if (steps > 0) {
+            window.location = downurl + '&steps=' + steps;
+        }
+        return true;
+    }
+
+};
diff --git a/ingo/js/new_folder.js b/ingo/js/new_folder.js
new file mode 100644 (file)
index 0000000..420e2b8
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ */
+
+var IngoNewFolder = {
+
+    newFolderName: function(name, tagname)
+    {
+        var form = document.getElementsByName(name);
+        var selector = form[0].elements.namedItem(tagname);
+
+        if (selector.selectedIndex == 1){
+            var folder = window.prompt(this.folderprompt . '\n', '');
+
+            if ((folder != null) && (folder != '')) {
+                form[0].actionID.value = 'create_folder';
+                form[0].new_folder_name.value = folder;
+                form[0].submit();
+            }
+        }
+
+        return true;
+    }
+
+};
diff --git a/ingo/js/rule.js b/ingo/js/rule.js
new file mode 100644 (file)
index 0000000..7dc0890
--- /dev/null
@@ -0,0 +1,16 @@
+/**
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ */
+
+var IngoRule = {
+
+    delete_condition: function(num)
+    {
+        document.rule.actionID.value = 'rule_delete';
+        document.rule.conditionnumber.value = num;
+        document.rule.submit();
+        return true;
+    }
+
+};
index 364bc48..7e2e381 100644 (file)
@@ -22,6 +22,9 @@ class Ingo
      */
     const USER_HEADER = '++USER_HEADER++';
 
+    /* getMenu() cache. */
+    static private $_menuCache = null;
+
     /**
      * Generates a folder widget.
      * If an application is available that provides a folderlist method
@@ -53,7 +56,7 @@ class Ingo
                         $text .= $onchange . ';';
                     }
                     if ($createfolder) {
-                        $text .= 'newFolderName(\'' . $form . '\', \'' .
+                        $text .= 'IngoNewFolder.newFolderName(\'' . $form . '\', \'' .
                             $tagname . '\');';
                     }
                     $text .= '"';
@@ -413,4 +416,31 @@ class Ingo
         return $menu;
     }
 
+    /**
+     * Prepares and caches Ingo's list of menu items.
+     *
+     * @return string  The menu text.
+     */
+    static public function prepareMenu()
+    {
+        if (!self::$_menuCache) {
+            self::$_menuCache = self::getMenu()->render();
+        }
+
+        return self::$_menuCache;
+    }
+
+    /**
+     * Add new_folder.js to the list of output javascript files.
+     */
+    static public function addNewFolderJs()
+    {
+        if ($GLOBALS['registry']->hasMethod('mail/createFolder')) {
+            Horde::addScriptFile('new_folder.js', 'ingo', true);
+            Horde::addInlineScript(array(
+                'IngoNewFolder.folderprompt = ' . Horde_Serialize::serialize(_("Please enter the name of the new folder:"), Horde_Serialize::JSON, Horde_Nls::getCharset())
+            ));
+        }
+    }
+
 }
index 9d32fa6..c5750f7 100644 (file)
@@ -189,11 +189,10 @@ if (!$rule) {
     exit;
 }
 
-if ($registry->hasMethod('mail/createFolder')) {
-    Horde::addScriptFile('new_folder.js');
-}
-
 $title = $rule['name'];
+Horde::addScriptFile('rule.js', 'ingo', true);
+Ingo::prepareMenu();
+Ingo::addNewFolderJs();
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
 require INGO_TEMPLATES . '/rule/header.inc';
index f96d015..e3f2254 100644 (file)
@@ -49,6 +49,7 @@ case 'show_active':
 }
 
 $title = _("Filter Script Display");
+Ingo::prepareMenu();
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
 require INGO_TEMPLATES . '/script/header.inc';
index 28a040c..c7467e2 100644 (file)
@@ -146,11 +146,6 @@ if (!$form->isSubmitted()) {
     $vars->set('new_folder_name', '');
 }
 
-/* Include new folder JS if necessary. */
-if ($registry->hasMethod('mail/createFolder')) {
-    Horde::addScriptFile('new_folder.js');
-}
-
 /* Set form title. */
 $form_title = _("Spam Filtering");
 if (!empty($spam_rule['disable'])) {
@@ -160,6 +155,8 @@ $form_title .= ' ' . Horde_Help::link('ingo', 'spam');
 $form->setTitle($form_title);
 
 $title = _("Spam Filtering");
+Ingo::prepareMenu();
+Ingo::addNewFolderJs();
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
 $form->renderActive($renderer, $vars, 'spam.php', 'post');
index 491d41c..9a3ec8f 100644 (file)
@@ -14,10 +14,11 @@ if (!empty($title)) {
 <?php if (!empty($refresh_time) && !empty($refresh_url)): ?>
 <meta http-equiv="refresh" content="<?php echo $refresh_time ?>;url=<?php echo $refresh_url ?>">
 <?php endif; ?>
+<?php Horde::includeStylesheetFiles() ?>
 <?php Horde::includeScriptFiles(); ?>
 <title><?php echo htmlspecialchars($page_title) ?></title>
 <link href="<?php echo $GLOBALS['registry']->getImageDir()?>/favicon.ico" rel="SHORTCUT ICON" />
-<?php Horde::includeStylesheetFiles() ?>
+<?php Horde::outputInlineScript(); ?>
 </head>
 
 <body<?php if ($bc = Horde_Util::nonInputVar('bodyClass')) echo ' class="' . $bc . '"' ?><?php if ($bi = Horde_Util::nonInputVar('bodyId')) echo ' id="' . $bi . '"'; ?>>
index 72b206e..de9d0f3 100644 (file)
@@ -26,7 +26,7 @@
   <if:filter.downlink><tag:filter.downlink /><tag:down_img /></a></if:filter.downlink>
  </td>
  <td class="nowrap">
-  <label><gettext>To:</gettext>&nbsp;<input type="text" size="2" onchange="moveFromTo(<tag:filter.number />, this.value, '<tag:filter.upurl />', '<tag:filter.downurl />');"/></label>
+  <label><gettext>To:</gettext>&nbsp;<input type="text" size="2" onchange="IngoFilters.moveFromTo(<tag:filter.number />, this.value, '<tag:filter.upurl />', '<tag:filter.downurl />');"/></label>
  </td>
 </if:edit_allowed>
 </tr>
index 55851b3..52571f0 100644 (file)
@@ -1,15 +1,3 @@
-<script type="text/javascript">
-function moveFromTo(from, to, upurl, downurl)
-{
-    var steps = to - from;
-    if (steps < 0) {
-        window.location = upurl + '&steps=' + -steps;
-    } else if (steps > 0) {
-        window.location = downurl + '&steps=' + steps;
-    }
-    return true;
-}
-</script>
 <form method="post" name="filters" action="<?php echo Horde::applicationUrl('filters.php') ?>">
 <?php Horde_Util::pformInput() ?>
 <input type="hidden" name="actionID" value="" />
diff --git a/ingo/templates/javascript/new_folder.js b/ingo/templates/javascript/new_folder.js
deleted file mode 100644 (file)
index e2c3ced..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-function newFolderName(name, tagname)
-{
-    var form = document.getElementsByName(name);
-    var selector = form[0].elements.namedItem(tagname);
-
-    if (selector.selectedIndex == 1){
-        var folder = window.prompt('<?php echo addslashes(_("Please enter the name of the new folder:")) ?>\n', '');
-
-        if ((folder != null) && (folder != '')) {
-            form[0].actionID.value = 'create_folder';
-            form[0].new_folder_name.value = folder;
-            form[0].submit();
-        }
-    }
-
-    return true;
-}
index 1c1e9cf..71b6f2b 100644 (file)
@@ -13,7 +13,7 @@
  </div>
 <?php endif; ?>
 
- <?php echo Ingo::getMenu()->render() ?>
+ <?php echo Ingo::prepareMenu() ?>
 </div>
 </form>
 
index 804d962..d4ef8bd 100644 (file)
@@ -30,7 +30,7 @@
   </td>
 <?php endif; ?>
 <?php if (!$lastfield): ?>
-  <td><?php echo Horde::link('javascript:delete_condition(' . (int)$cond_num . ');', _("Delete Condition")) . Horde::img('delete.png', _("Delete Condition"), null, $registry->getImageDir('horde')) ?></a></td>
+  <td><?php echo Horde::link('javascript:IngoRule.delete_condition(' . (int)$cond_num . ');', _("Delete Condition")) . Horde::img('delete.png', _("Delete Condition"), null, $registry->getImageDir('horde')) ?></a></td>
 <?php elseif ($cond_num != 0): ?>
   <td>&nbsp;</td>
 <?php endif; ?>
index bac9a58..24ce582 100644 (file)
@@ -1,15 +1,3 @@
-<script type="text/javascript">
-<!--
-function delete_condition(num)
-{
-    document.rule.actionID.value = 'rule_delete';
-    document.rule.conditionnumber.value = num;
-    document.rule.submit();
-    return true;
-}
-//-->
-</script>
-
 <form method="post" name="rule" action="<?php echo Horde::applicationUrl('rule.php') ?>">
 <?php Horde_Util::pformInput() ?>
 <input type="hidden" name="actionID" value="rule_update" />
index 4c11dfa..16a2036 100644 (file)
@@ -149,6 +149,7 @@ $form_title .= ' ' . Horde_Help::link('ingo', 'vacation');
 $form->setTitle($form_title);
 
 $title = _("Vacation Edit");
+Ingo::prepareMenu();
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
 $form->renderActive(new Horde_Form_Renderer(array('encode_title' => false)), $vars, 'vacation.php', 'post');
index 1f9124c..287da95 100644 (file)
@@ -54,6 +54,7 @@ $filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
 $wl_rule = $filters->findRule(Ingo_Storage::ACTION_WHITELIST);
 
 $title = _("Whitelist Edit");
+Ingo::prepareMenu();
 require INGO_TEMPLATES . '/common-header.inc';
 require INGO_TEMPLATES . '/menu.inc';
 require INGO_TEMPLATES . '/whitelist/whitelist.inc';