}
Horde::addInlineScript(array(
+ 'ImpFolders.ajax = ' . Horde_Serialize::serialize(Horde::getServiceLink('ajax', 'imp')->url, Horde_Serialize::JSON, $charset),
'ImpFolders.displayNames = ' . Horde_Serialize::serialize($displayNames, Horde_Serialize::JSON, $charset),
- 'ImpFolders.fullNames = ' . Horde_Serialize::serialize($fullNames, Horde_Serialize::JSON, $charset)
+ 'ImpFolders.fullNames = ' . Horde_Serialize::serialize($fullNames, Horde_Serialize::JSON, $charset),
+ 'ImpFolders.mbox_expand' => intval($prefs->getValue('nav_expanded') == 2)
));
$title = _("Folder Navigator");
});
},
+ toggleSubfolder: function(e, type)
+ {
+ new Ajax.Request(this.ajax + type + 'Mailboxes', { parameters: { encoded: 1, mboxes: Object.toJSON([ e.memo ]) } });
+ },
+
changeHandler: function(e)
{
switch (e.element().readAttribute('id')) {
elt = elt.up();
}
+ },
+
+ onDomLoad: function()
+ {
+ if (this.mbox_expand) {
+ $('fmanager').observe('Horde_Tree:collapse', this.toggleSubfolder.bindAsEventListener(this, 'collapse'));
+ $('fmanager').observe('Horde_Tree:expand', this.toggleSubfolder.bindAsEventListener(this, 'expand'));
+ }
}
};
document.observe('change', ImpFolders.changeHandler.bind(ImpFolders));
document.observe('click', ImpFolders.clickHandler.bind(ImpFolders));
+document.observe('dom:loaded', ImpFolders.onDomLoad.bind(ImpFolders));
}
/**
+ * AJAX action: Expand mailboxes (saves expanded state in prefs).
+ *
+ * Variables used:
+ * <pre>
+ * 'encoded' - (integer) 1 if mboxes is URL encoded.
+ * 'mboxes' - (string) The list of mailboxes to process (JSON encoded
+ * array) if 'all' is 0.
+ * </pre>
+ *
+ * @return boolean True.
+ */
+ public function expandMailboxes()
+ {
+ $imptree = $GLOBALS['injector']->getInstance('IMP_Imap_Tree');
+
+ if (!empty($this->_vars->mboxes)) {
+ foreach (Horde_Serialize::unserialize($this->_vars->mboxes, Horde_Serialize::JSON) as $val) {
+ if ($this->_vars->encoded) {
+ $val = rawurldecode($val);
+ }
+ $imptree->expand($val);
+ }
+ }
+
+ return true;
+ }
+
+ /**
* AJAX action: Collapse mailboxes.
*
* Variables used:
* <pre>
* 'all' - (integer) 1 to show all mailboxes.
+ * 'encoded' - (integer) 1 if mboxes is URL encoded.
* 'mboxes' - (string) The list of mailboxes to process (JSON encoded
* array) if 'all' is 0.
* </pre>
$imptree->collapseAll();
} elseif (!empty($this->_vars->mboxes)) {
foreach (Horde_Serialize::unserialize($this->_vars->mboxes, Horde_Serialize::JSON) as $val) {
+ if ($this->_vars->encoded) {
+ $val = rawurldecode($val);
+ }
$imptree->collapse($val);
}
}