Move more javascript out of templates to static files
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 18 Aug 2009 08:29:50 +0000 (02:29 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 18 Aug 2009 08:30:50 +0000 (02:30 -0600)
imp/js/foldermanagement.js [new file with mode: 0644]
imp/lib/Application.php
imp/templates/prefs/draftsselect.inc
imp/templates/prefs/sentmailselect.inc
imp/templates/prefs/spamselect.inc
imp/templates/prefs/trashselect.inc

diff --git a/imp/js/foldermanagement.js b/imp/js/foldermanagement.js
new file mode 100644 (file)
index 0000000..0c59a86
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+ * Provides the javascript for managing folders.
+ *
+ * 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 ImpFoldermanagement = {
+    // Variables defined by other code: folders
+
+    newFolderName: function(f, fn, p1, p2)
+    {
+        f = $(f);
+        fn = $(fn);
+
+        if (f[f.selectedIndex].value == '') {
+            var folder = window.prompt(p1, fn.value ? fn.value : '');
+            if (folder != '') {
+                fn.value = folder;
+                f[1].text = p2 + ' [' + fn.value + ']';
+            }
+        }
+    }
+
+};
+
+document.observe('dom:loaded', function() {
+    var fm = ImpFoldermanagement;
+    fm.folders.each(function(f) {
+        $(f[0]).observe('change', fm.newFolderName.bind(fm, f[0], f[1], f[2], f[3]));
+    });
+});
+
+// Called by Horde identity pref code.
+function newChoice_sent_mail_folder(val)
+{
+    var field = $('sent_mail_folder');
+    if (val == "") {
+        field.selectedIndex = 0;
+        return;
+    }
+
+    for (var i = 0, l = field.options.length; i < l; i++) {
+        if (field.options[i].value == val) {
+            field.selectedIndex = i;
+            break;
+        }
+    }
+}
index 2be58dc..3491d38 100644 (file)
@@ -438,6 +438,39 @@ class IMP_Application extends Horde_Registry_Application
                 'ImpFlagmanagement.confirm_delete = ' . Horde_Serialize::serialize(_("Are you sure you want to delete this flag?"), Horde_Serialize::JSON, Horde_Nls::getCharset())
             ));
             break;
+
+        case 'identities':
+            if (!$GLOBALS['prefs']->isLocked('sent_mail_folder')) {
+                Horde::addScriptFile('foldermanagement.js', 'imp', true);
+                Horde::addInlineScript(array(
+                    'ImpFoldermanagement.folders = ' . Horde_Serialize::serialize(array('sent_mail_folder', 'sent_mail_new', _("Enter the name for your new sent-mail folder"), _("Create a new sent-mail folder")), Horde_Serialize::JSON, Horde_Nls::getCharset())
+                ));
+            }
+            break;
+
+        case 'server':
+            $code = array();
+
+            if (!$GLOBALS['prefs']->isLocked('drafts_folder')) {
+                $code[] = array('drafts', 'drafts_new', _("Enter the name for your new drafts folder"), _("Create a new drafts folder"));
+            }
+
+            if (!$GLOBALS['prefs']->isLocked('spam_folder')) {
+                $code[] = array('spam', 'spam_new', _("Enter the name for your new spam folder"), _("Create a new spam folder"));
+            }
+
+            if (!$GLOBALS['prefs']->isLocked('trash_folder') &&
+                !$GLOBALS['prefs']->isLocked('use_vtrash')) {
+                $code[] = array('trash', 'trash_new', _("Enter the name for your new trash folder"), _("Create a new trash folder"));
+            }
+
+            if (!empty($code)) {
+                Horde::addScriptFile('foldermanagement.js', 'imp', true);
+                Horde::addInlineScript(array(
+                    'ImpFoldermanagement.folders = ' . Horde_Serialize::serialize($code, Horde_Serialize::JSON, Horde_Nls::getCharset())
+                ));
+            }
+            break;
         }
     }
 
index 0afc1b4..2acabee 100644 (file)
@@ -1,25 +1,7 @@
 <?php if (!$prefs->isLocked('drafts_folder')): ?>
-<script type="text/javascript">
-
-function newDraftsFolderName()
-{
-    var d = document.prefs.drafts, dn = document.prefs.drafts_new;
-    d.onchange = null;
-    if (d[d.selectedIndex].value == '') {
-        var folder = window.prompt('<?php echo addslashes(_("Enter the name for your new drafts folder")) ?>', dn.value ? dn.value : '');
-        if (folder != '') {
-            dn.value = folder;
-            d[1].text = '<?php echo addslashes(_("Create a new drafts folder")) ?> [' + dn.value + ']';
-        }
-    }
-    d.onchange = newDraftsFolderName;
-}
-
-</script>
-
 <?php echo Horde::label('drafts', _("Drafts folder:")) ?><br />
-<input type="hidden" name="drafts_new" value="" />
-<select id="drafts" name="drafts" onchange="newDraftsFolderName();">
+<input type="hidden" name="drafts_new" id="drafts_new" value="" />
+<select id="drafts" name="drafts">
  <option value="<?php echo IMP::PREF_NO_FOLDER ?>"><?php echo _("None") ?></option>
  <?php echo IMP::flistSelect(array('heading' => _("Create a new drafts folder"), 'filter' => array('INBOX'), 'selected' => IMP::folderPref($prefs->getValue('drafts_folder'), true), 'new_folder' => true)) ?>
 </select>
index 0ffa2c9..6f863cb 100644 (file)
@@ -1,44 +1,10 @@
 <?php if (!$prefs->isLocked('sent_mail_folder')): ?>
-<script type="text/javascript">
-
-function newChoice_sent_mail_folder(val)
-{
-    var field = document.prefs.sent_mail_folder;
-    if (val == "") {
-        field.selectedIndex = 0;
-        return;
-    }
-    for (var i = 0, l = field.options.length; i < l; i++) {
-        if (field.options[i].value == val) {
-            field.selectedIndex = i;
-            break;
-        }
-    }
-}
-
-function newFolderName()
-{
-    var smf = document.prefs.sent_mail_folder, smn = document.prefs.sent_mail_new;
-    if (smf.selectedIndex == 2) {
-        var folder = window.prompt('<?php echo addslashes(_("Enter the name for your new sent mail folder")) ?>', smn.value ? smn.value : '');
-        if (folder != '' && folder != null) {
-            smn.value = folder;
-            smf[2].text = '<?php echo addslashes(_("Create a new sent mail folder")) ?> [' + smn.value + ']';
-        }
-    }
-
-    if (smf.selectedIndex == 0) {
-        document.prefs.save_sent_mail.checked = 0;
-    }
-}
-
-</script>
-
 <?php echo Horde::label('sent_mail_folder', _("Sent mail folder:")) ?><br />
-<select name="sent_mail_folder" id="sent_mail_folder" onchange="newFolderName();">
-  <option value=""><?php echo _("None") ?></option>
-  <option value="-1" selected="selected"><?php echo _("Use Default Value") ?></option>
-  <?php echo IMP::flistSelect(array('heading' => _("Create a new sent mail folder"), 'filter' => array('INBOX'))) ?>
-</select><br />
-<input type="hidden" name="sent_mail_new" value="" />
+<input type="hidden" name="sent_mail_new" id="sent_mail_new" value="" />
+<select name="sent_mail_folder" id="sent_mail_folder">
+ <option value=""><?php echo _("None") ?></option>
+ <option value="-1" selected="selected"><?php echo _("Use Default Value") ?></option>
+ <?php echo IMP::flistSelect(array('heading' => _("Create a new sent mail folder"), 'filter' => array('INBOX'))) ?>
+</select>
+<br />
 <?php endif; ?>
index 44e16ac..cf2dfd9 100644 (file)
@@ -1,23 +1,8 @@
 <?php if (!$prefs->isLocked('spam_folder')): ?>
-<script type="text/javascript">
-
-function newSpamFolderName()
-{
-    var s = document.prefs.spam, sn = document.prefs.spam_new;
-    s.onchange = null;
-    if (s[s.selectedIndex].value == '') {
-        var folder = window.prompt('<?php echo addslashes(_("Enter the name for your new Spam folder")) ?>', sn.value ? sn.value : '');
-        if (folder != '') {
-            sn.value = folder;
-            s[1].text = '<?php echo addslashes(_("Create a new Spam folder")) ?> [' + sn.value + ']';
-        }
-    }
-    s.onchange = newSpamFolderName;
-}
-
-</script>
-
 <?php echo Horde::label('spam', _("Spam folder:")) ?><br />
-<select id="spam" name="spam" onchange="newSpamFolderName();"><option value="<?php echo IMP::PREF_NO_FOLDER ?>"><?php echo _("None") ?></option><?php echo IMP::flistSelect(array('heading' => _("Create a new Spam folder"), 'filter' => array('INBOX'), 'selected' => IMP::folderPref($prefs->getValue('spam_folder'), true), 'new_folder' => true)) ?></select>
-<input type="hidden" name="spam_new" value="" />
+<input type="hidden" name="spam_new" id="spam_new" value="" />
+<select id="spam" name="spam">
+ <option value="<?php echo IMP::PREF_NO_FOLDER ?>"><?php echo _("None") ?></option>
+ <?php echo IMP::flistSelect(array('heading' => _("Create a new Spam folder"), 'filter' => array('INBOX'), 'selected' => IMP::folderPref($prefs->getValue('spam_folder'), true), 'new_folder' => true)) ?>
+</select>
 <?php endif; ?>
index 9f6d074..2f3b35b 100644 (file)
@@ -1,23 +1,7 @@
 <?php if (!$prefs->isLocked('trash_folder') && !$prefs->isLocked('use_vtrash')): ?>
-<script type="text/javascript">
-function newTrashFolderName()
-{
-    var t = document.prefs.trash, tn = document.prefs.trash_new;
-    t.onchange = null;
-    if (t[t.selectedIndex].value == '') {
-        var folder = window.prompt('<?php echo addslashes(_("Enter the name for your new trash folder")) ?>', tn.value ? tn.value : '');
-        if (folder != '') {
-            tn.value = folder;
-            t[1].text = '<?php echo addslashes(_("Create a new trash folder")) ?> [' + tn.value + ']';
-        }
-    }
-    t.onchange = newTrashFolderName;
-}
-</script>
-
 <?php echo Horde::label('trash', _("Trash folder:")) ?><br />
-<input type="hidden" name="trash_new" value="" />
-<select id="trash" name="trash" onchange="newTrashFolderName();">
+<input type="hidden" name="trash_new" id="trash_new" value="" />
+<select id="trash" name="trash">
 <?php
     $use_vtrash = $prefs->getValue('use_vtrash');
     echo '<option value="' . IMP_PREF_NO_FOLDER . '">' . _("None") . '</option>' .