Update folders javascript/CSS
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 10 Feb 2009 00:22:28 +0000 (17:22 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 10 Feb 2009 02:07:31 +0000 (19:07 -0700)
imp/folders.php
imp/js/folders.js
imp/js/src/folders.js
imp/templates/folders/actions.html
imp/templates/folders/folders_confirm.html
imp/templates/folders/folders_size.html
imp/templates/folders/import.html
imp/themes/screen.css

index d1e2655..07af5bd 100644 (file)
@@ -345,7 +345,10 @@ if ($_SESSION['imp']['file_upload'] && ($actionID == 'import_mbox')) {
 /* Build the folder tree. */
 list($raw_rows, $newmsgs, $displayNames) = $imaptree->build();
 
-IMP::addInlineScript('var displayNames = ' . Horde_Serialize::serialize($displayNames, SERIALIZE_JSON, $charset) . ';');
+IMP::addInlineScript(array(
+    'ImpFolders.displayNames = ' . Horde_Serialize::serialize($displayNames, SERIALIZE_JSON, $charset),
+    'ImpFolders.folders_url = ' . Horde_Serialize::serialize($folders_url, SERIALIZE_JSON, $charset)
+));
 
 /* Prepare the header template. */
 $refresh_title = _("Reload View");
index 4c8f47e..5ae32fc 100644 (file)
@@ -1 +1 @@
-function getChecked(){return getFolders().findAll(function(a){return a.checked})}function getFolders(){return $("fmanager").getInputs(null,"folder_list[]")}function selectedFoldersDisplay(){var a=0,b="";getFolders().each(function(c){if(c.checked){b+=displayNames[a]+"\n"}++a});if(b.endsWith("\n")){b=b.substring(0,b.length-1)}return b}function chooseAction(d){var f=(d.element().id=="action_choose0")?0:1;var b=$("action_choose"+f);var c=$F(b);b.selectedIndex=0;if(c=="create_folder"){createMailbox()}else{if(c=="rebuild_tree"){submitAction(c)}else{if(!getChecked().size()){if(c!=""){alert(IMP.text.folders_select)}}else{if(c=="rename_folder"){renameMailbox()}else{if(c=="subscribe_folder"||c=="unsubscribe_folder"||c=="poll_folder"||c=="expunge_folder"||c=="nopoll_folder"||c=="mark_folder_seen"||c=="mark_folder_unseen"||c=="delete_folder_confirm"||c=="folders_empty_mailbox_confirm"||c=="mbox_size"){submitAction(c)}else{if(c=="download_folder"||c=="download_folder_zip"){downloadMailbox(c)}else{if(c=="import_mbox"){if(getChecked().length>1){alert(IMP.text.folders_oneselect)}else{submitAction(c)}}}}}}}}}function submitAction(b){$("actionID").setValue(b);$("fmanager").submit()}function createMailbox(){var a=getChecked().size(),b;if(a>1){window.alert(IMP.text.folders_oneselect);return}if(a==1){b=window.prompt(IMP.text.folders_subfolder1+" "+selectedFoldersDisplay()+".\n"+IMP.text.folders_subfolder2+"\n","")}else{b=window.prompt(IMP.text.folders_toplevel,"")}if(b){$("new_mailbox").setValue(b);submitAction("create_folder")}}function downloadMailbox(a){if(window.confirm(IMP.text.folders_download1+"\n"+selectedFoldersDisplay()+"\n"+IMP.text.folders_download2)){submitAction(a)}}function renameMailbox(){var b="",c="",a=0;getFolders().each(function(e){if(e.checked){if(IMP.conf.fixed_folders.indexOf(displayNames[a])!=-1){window.alert(IMP.text.folders_no_rename+" "+displayNames[a])}else{var d=window.prompt(IMP.text.folders_rename1+" "+displayNames[a]+"\n"+IMP.text.folders_rename2,displayNames[a]);if(d){b+=d+"\n";c+=e.value+"\n"}}}++a});if(!b){return}if(b.endsWith("\n")){b=b.substring(0,b.length-1)}if(c.endsWith("\n")){c=c.substring(0,c.length-1)}$("new_names").setValue(b);$("old_names").setValue(c);submitAction("rename_folder");return true}function toggleSelection(){var c=getChecked().size(),a=getFolders();var b=(c!=a.size());a.each(function(d){d.checked=b})}document.observe("dom:loaded",function(){if($("checkAll0")){$("checkAll0").observe("click",toggleSelection);$("action_choose0").observe("change",chooseAction)}if($("checkAll1")){$("checkAll1").observe("click",toggleSelection);$("action_choose1").observe("change",chooseAction)}});
\ No newline at end of file
+var ImpFolders={getChecked:function(){return this.getFolders().findAll(function(a){return a.checked})},getFolders:function(){return $("fmanager").getInputs(null,"folder_list[]")},selectedFoldersDisplay:function(){var a=0,b="";this.getFolders().each(function(c){if(c.checked){b+=this.displayNames[a]+"\n"}++a});return b.strip()},chooseAction:function(d){var f=(d.element().readAttribute("id")=="action_choose0")?0:1,b=$("action_choose"+f),c=$F(b);b.selectedIndex=0;switch(c){case"create_folder":this.createMailbox();break;case"rebuild_tree":this.submitAction(c);break;default:if(!this.getChecked().size()){if(c!=""){alert(IMP.text.folders_select)}break}switch(c){case"rename_folder":this.renameMailbox();break;case"subscribe_folder":case"unsubscribe_folder":case"poll_folder":case"expunge_folder":case"nopoll_folder":case"mark_folder_seen":case"mark_folder_unseen":case"delete_folder_confirm":case"folders_empty_mailbox_confirm":case"mbox_size":this.submitAction(c);break;case"download_folder":case"download_folder_zip":this.downloadMailbox(c);break;case"import_mbox":if(this.getChecked().length>1){alert(IMP.text.folders_oneselect)}else{this.submitAction(c)}break}break}},submitAction:function(b){$("actionID").setValue(b);$("fmanager").submit()},createMailbox:function(){var a=this.getChecked().size(),b;if(a>1){window.alert(IMP.text.folders_oneselect);return}b=(a==1)?window.prompt(IMP.text.folders_subfolder1+" "+this.selectedFoldersDisplay()+".\n"+IMP.text.folders_subfolder2+"\n",""):window.prompt(IMP.text.folders_toplevel,"");if(b){$("new_mailbox").setValue(b);this.submitAction("create_folder")}},downloadMailbox:function(a){if(window.confirm(IMP.text.folders_download1+"\n"+this.selectedFoldersDisplay()+"\n"+IMP.text.folders_download2)){this.submitAction(a)}},renameMailbox:function(){var b="",c="",a=0;this.getFolders().each(function(e){if(e.checked){if(IMP.conf.fixed_folders.indexOf(this.displayNames[a])!=-1){window.alert(IMP.text.folders_no_rename+" "+this.displayNames[a])}else{var d=window.prompt(IMP.text.folders_rename1+" "+this.displayNames[a]+"\n"+IMP.text.folders_rename2,this.displayNames[a]);if(d){b+=d+"\n";c+=e.value+"\n"}}}++a});if(b){$("new_names").setValue(b.strip());$("old_names").setValue(c.strip());this.submitAction("rename_folder")}},toggleSelection:function(){var c=this.getChecked().size(),a=this.getFolders(),b=(c!=a.size());a.each(function(d){d.checked=b})},changeHandler:function(a){switch(a.element().readAttribute("id")){case"action_choose0":case"action_choose1":this.chooseAction(a);break}},clickHandler:function(a){switch(a.element().readAttribute("id")){case"btn_import":this.submitAction("import_mbox");break;case"btn_return":document.location.href=this.folders_url;break;case"checkAll0":case"checkAll1":this.toggleSelection();break}}};document.observe("change",ImpFolders.changeHandler.bind(ImpFolders));document.observe("click",ImpFolders.clickHandler.bind(ImpFolders));
\ No newline at end of file
index ecc578b..9dab02e 100644 (file)
 /**
- * IMP Folders Javascript
- *
- * Provides the javascript to help the folders.php script.
- * This file should be included via Horde::addScriptFile().
+ * Provides the javascript for the compose.php script (standard view).
  *
  * See the enclosed file COPYING for license information (GPL). If you
  * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
  */
 
-function getChecked()
-{
-    return getFolders().findAll(function(e) {
-        return e.checked;
-    });
-}
-
-function getFolders()
-{
-    return $('fmanager').getInputs(null, 'folder_list[]');
-}
-
-function selectedFoldersDisplay()
-{
-    var folder = 0, sel = "";
-    getFolders().each(function(e) {
-        if (e.checked) {
-            sel += displayNames[folder] + "\n";
-        }
-        ++folder;
-    });
+var ImpFolders = {
 
-    if (sel.endsWith("\n")) {
-        sel = sel.substring(0, sel.length - 1);
-    }
+    // The following variables are defined in folders.php:
+    //   displayNames, folders_url
+
+    getChecked: function()
+    {
+        return this.getFolders().findAll(function(e) {
+            return e.checked;
+        });
+    },
 
-    return sel;
-}
+    getFolders: function()
+    {
+        return $('fmanager').getInputs(null, 'folder_list[]');
+    },
 
-function chooseAction(e)
-{
-    var id = (e.element().id == 'action_choose0') ? 0 : 1;
+    selectedFoldersDisplay: function()
+    {
+        var folder = 0, sel = "";
 
-    var a = $('action_choose' + id);
-    var action = $F(a);
-    a.selectedIndex = 0;
+        this.getFolders().each(function(e) {
+            if (e.checked) {
+                sel += this.displayNames[folder] + "\n";
+            }
+            ++folder;
+        });
+
+        return sel.strip();
+    },
+
+    chooseAction: function(e)
+    {
+        var id = (e.element().readAttribute('id') == 'action_choose0') ? 0 : 1,
+            a = $('action_choose' + id),
+            action = $F(a);
+        a.selectedIndex = 0;
+
+        switch (action) {
+        case 'create_folder':
+            this.createMailbox();
+            break;
+
+        case 'rebuild_tree':
+            this.submitAction(action);
+            break;
+
+        default:
+            if (!this.getChecked().size()) {
+                if (action != '') {
+                    alert(IMP.text.folders_select);
+                }
+                break;
+            }
 
-    if (action == 'create_folder') {
-        createMailbox();
-    } else if (action == 'rebuild_tree') {
-        submitAction(action);
-    } else if (!getChecked().size()) {
-        if (action != '') {
-            alert(IMP.text.folders_select);
+            switch (action) {
+            case 'rename_folder':
+                this.renameMailbox();
+                break;
+
+            case 'subscribe_folder':
+            case 'unsubscribe_folder':
+            case 'poll_folder':
+            case 'expunge_folder':
+            case 'nopoll_folder':
+            case 'mark_folder_seen':
+            case 'mark_folder_unseen':
+            case 'delete_folder_confirm':
+            case 'folders_empty_mailbox_confirm':
+            case 'mbox_size':
+                this.submitAction(action);
+                break;
+
+            case 'download_folder':
+            case 'download_folder_zip':
+                this.downloadMailbox(action);
+                break;
+
+            case 'import_mbox':
+                if (this.getChecked().length > 1) {
+                    alert(IMP.text.folders_oneselect);
+                } else {
+                    this.submitAction(action);
+                }
+                break;
+            }
+
+            break;
         }
-    } else if (action == 'rename_folder') {
-        renameMailbox();
-    } else if (action == 'subscribe_folder' ||
-               action == 'unsubscribe_folder' ||
-               action == 'poll_folder' ||
-               action == 'expunge_folder' ||
-               action == 'nopoll_folder' ||
-               action == 'mark_folder_seen' ||
-               action == 'mark_folder_unseen' ||
-               action == 'delete_folder_confirm' ||
-               action == 'folders_empty_mailbox_confirm' ||
-               action == 'mbox_size') {
-        submitAction(action);
-    } else if (action == 'download_folder' ||
-               action == 'download_folder_zip') {
-        downloadMailbox(action);
-    } else if (action == 'import_mbox') {
-        if (getChecked().length > 1) {
-            alert(IMP.text.folders_oneselect);
-        } else {
-            submitAction(action);
+    },
+
+    submitAction: function(a)
+    {
+        $('actionID').setValue(a);
+        $('fmanager').submit();
+    },
+
+    createMailbox: function()
+    {
+        var count = this.getChecked().size(), mbox;
+        if (count > 1) {
+            window.alert(IMP.text.folders_oneselect);
+            return;
         }
-    }
-}
-
-function submitAction(a)
-{
-    $('actionID').setValue(a);
-    $('fmanager').submit();
-}
-
-function createMailbox()
-{
-    var count = getChecked().size(), mbox;
-    if (count > 1) {
-        window.alert(IMP.text.folders_oneselect);
-        return;
-    }
 
-    if (count == 1) {
-        mbox = window.prompt(IMP.text.folders_subfolder1 + ' ' + selectedFoldersDisplay() + ".\n" + IMP.text.folders_subfolder2 + "\n", '');
-    } else {
-        mbox = window.prompt(IMP.text.folders_toplevel, '');
-    }
+        mbox = (count == 1)
+            ? window.prompt(IMP.text.folders_subfolder1 + ' ' + this.selectedFoldersDisplay() + ".\n" + IMP.text.folders_subfolder2 + "\n", '')
+            : window.prompt(IMP.text.folders_toplevel, '');
 
-    if (mbox) {
-        $('new_mailbox').setValue(mbox);
-        submitAction('create_folder');
-    }
-}
+        if (mbox) {
+            $('new_mailbox').setValue(mbox);
+            this.submitAction('create_folder');
+        }
+    },
 
-function downloadMailbox(actionid)
-{
-    if (window.confirm(IMP.text.folders_download1 + "\n" + selectedFoldersDisplay() + "\n" + IMP.text.folders_download2)) {
-        submitAction(actionid);
-    }
-}
-
-function renameMailbox()
-{
-    var newnames = '', oldnames = '', j = 0;
-
-    getFolders().each(function(f) {
-        if (f.checked) {
-            if (IMP.conf.fixed_folders.indexOf(displayNames[j]) != -1) {
-                window.alert(IMP.text.folders_no_rename + ' ' + displayNames[j]);
-            } else {
-                var tmp = window.prompt(IMP.text.folders_rename1 + ' ' + displayNames[j] + "\n" + IMP.text.folders_rename2, displayNames[j]);
-                if (tmp) {
-                    newnames += tmp + "\n";
-                    oldnames += f.value + "\n";
+    downloadMailbox: function(actionid)
+    {
+        if (window.confirm(IMP.text.folders_download1 + "\n" + this.selectedFoldersDisplay() + "\n" + IMP.text.folders_download2)) {
+            this.submitAction(actionid);
+        }
+    },
+
+    renameMailbox: function()
+    {
+        var newnames = '', oldnames = '', j = 0;
+
+        this.getFolders().each(function(f) {
+            if (f.checked) {
+                if (IMP.conf.fixed_folders.indexOf(this.displayNames[j]) != -1) {
+                    window.alert(IMP.text.folders_no_rename + ' ' + this.displayNames[j]);
+                } else {
+                    var tmp = window.prompt(IMP.text.folders_rename1 + ' ' + this.displayNames[j] + "\n" + IMP.text.folders_rename2, this.displayNames[j]);
+                    if (tmp) {
+                        newnames += tmp + "\n";
+                        oldnames += f.value + "\n";
+                    }
                 }
             }
-        }
-        ++j;
-    });
+            ++j;
+        });
 
-    if (!newnames) {
-        return;
+        if (newnames) {
+            $('new_names').setValue(newnames.strip());
+            $('old_names').setValue(oldnames.strip());
+            this.submitAction('rename_folder');
+        }
+    },
+
+    toggleSelection: function()
+    {
+        var count = this.getChecked().size(), folders = this.getFolders(),
+            checked = (count != folders.size());
+        folders.each(function(f) {
+            f.checked = checked;
+        });
+    },
+
+    changeHandler: function(e)
+    {
+        switch (e.element().readAttribute('id')) {
+        case 'action_choose0':
+        case 'action_choose1':
+            this.chooseAction(e);
+            break;
+        }
+    },
+
+    clickHandler: function(e)
+    {
+        switch (e.element().readAttribute('id')) {
+        case 'btn_import':
+            this.submitAction('import_mbox');
+            break;
+
+        case 'btn_return':
+            document.location.href = this.folders_url;
+            break;
+
+        case 'checkAll0':
+        case 'checkAll1':
+            this.toggleSelection();
+            break;
+        }
     }
 
-    if (newnames.endsWith("\n")) {
-        newnames = newnames.substring(0, newnames.length - 1);
-    }
-    if (oldnames.endsWith("\n")) {
-        oldnames = oldnames.substring(0, oldnames.length - 1);
-    }
+};
 
-    $('new_names').setValue(newnames);
-    $('old_names').setValue(oldnames);
-    submitAction('rename_folder');
-    return true;
-}
-
-function toggleSelection()
-{
-    var count = getChecked().size(), folders = getFolders();
-    var checked = (count != folders.size());
-    folders.each(function(f) {
-        f.checked = checked;
-    });
-}
-
-document.observe('dom:loaded', function() {
-    if ($('checkAll0')) {
-        $('checkAll0').observe('click', toggleSelection);
-        $('action_choose0').observe('change', chooseAction);
-    }
-    if ($('checkAll1')) {
-        $('checkAll1').observe('click', toggleSelection);
-        $('action_choose1').observe('change', chooseAction);
-    }
-});
+document.observe('change', ImpFolders.changeHandler.bind(ImpFolders));
+document.observe('click', ImpFolders.clickHandler.bind(ImpFolders));
index f882a82..a14b2fd 100644 (file)
@@ -1,4 +1,4 @@
-<table style="width:100%;border-collapse:collapse">
+<table>
  <tr class="control">
   <td>
 <if:javascript>
@@ -7,7 +7,7 @@
     &nbsp;<input type="checkbox" class="checkbox" id="checkAll<tag:id />" name="checkAll" <tag:check_ak /> />
    </div>
 </if:javascript>
-   <div class="leftFloat" style="padding-left:5px">
+   <div class="leftFloat folderChoose">
     <label for="action_choose<tag:id />" class="hidden"><gettext>Choose Action</gettext></label>
     <select id="action_choose<tag:id />">
      <option selected="selected"><gettext>Choose Action</gettext></option>
@@ -43,7 +43,7 @@
     <input name="btn_action" type="submit" class="button" value="<tag:go />" />
 </else:javascript></if:javascript>
    </div>
-   <div class="leftFloat" style="padding-left:15px">
+   <div class="leftFloat folderActions">
     <ul class="msgactions">
 <if:subscribe>
      <li><tag:toggle_subscribe /></li>
index fa20ee8..d7c0599 100644 (file)
@@ -21,7 +21,7 @@
 
 <div class="control leftAlign">
  <input type="submit" name="submit" class="button" value="<if:delete><gettext>Delete Selected Folders</gettext></if:delete><if:empty><gettext>Empty Selected Folders</gettext></if:empty>" />&nbsp;
- <input type="button" class="button" onclick="self.location.href='<tag:folders_url />';" value="<gettext>Cancel</gettext>" />
+ <input id="btn_return" type="button" class="button" value="<gettext>Cancel</gettext>" />
 </div>
 
 </form>
index 25533d2..df6b461 100644 (file)
@@ -27,6 +27,6 @@
 
 <form name="returnform">
 <div class="control leftAlign">
- <input type="button" class="button" onclick="self.location.href='<tag:folders_url />';" value="<gettext>Return to Folders</gettext>" />
+ <input id="btn_return" type="button" class="button" value="<gettext>Return to Folders</gettext>" />
 </div>
 </form>
index 138e4f1..b8223a8 100644 (file)
@@ -13,8 +13,7 @@
   <input id="mbox_upload" name="mbox_upload" type="file" size="30" />&nbsp;
   <gettext>into folder</gettext>
   <strong><tag:folder_name /></strong>.
-  &nbsp;&nbsp;
-  <input type="button" class="button" value="<gettext>Import</gettext>" onclick="submitAction('import_mbox')"/>
-  <input type="button" class="button" value="<gettext>Cancel</gettext>" onclick="submitAction(0)"/>
+  <input id="btn_import" type="button" class="button" value="<gettext>Import</gettext>" />
+  <input id="btn_return" type="button" class="button" value="<gettext>Cancel</gettext>" />
  </div>
 </form>
index c38e38c..efc8cfc 100644 (file)
@@ -145,6 +145,16 @@ form#search div {
 #fmanager div, #fmanager div input {
     vertical-align: middle;
 }
+#fmanager table {
+    width: 100%;
+    border-collapse: collapse;
+}
+#fmanager div.folderChoose {
+    padding-left: 5px;
+}
+#fmanager div.folderActions {
+    padding-left: 15px;
+}
 
 /* Style for div that fixes KHTML browsers. */
 .ohide {