v5.0-git
--------
+[mms] DIMP now honors the 'allow_resume_all' configuration option.
[mms] Remove 'sort_limit' configuration option.
[mms] Mobile view no longer supports WML output.
[jan] Implement iTip viewer actions in DIMP (Request #8061).
e.memo.each(function(row) {
// Add context menu
- this._addMouseEvents({ id: row.VP_domid, type: row.menutype });
+ this._addMouseEvents({ id: row.VP_domid, type: 'message' });
new Drag(row.VP_domid, this._msgDragConfig);
}, this);
}
/* Read-only changes. 'oa_setflag' is handled elsewhere. */
- tmp = [ $('button_deleted') ].compact().invoke('up', 'SPAN');
- [ 'ctx_message_', 'ctx_draft_' ].each(function(c) {
- tmp = tmp.concat($(c + 'deleted', c + 'setflag', c + 'undeleted'));
- });
+ tmp = [ $('button_deleted') ].compact().invoke('up', 'SPAN').concat($('ctx_message_deleted', 'ctx_message_setflag', 'ctx_message_undeleted'));
if (this.viewport.getMetaData('readonly')) {
tmp.compact().invoke('hide');
/* Context menu: generate the list of settable flags for this
* mailbox. */
flags = this.viewport.getMetaData('flags');
- $('ctx_draft_setflag', 'ctx_message_setflag', 'oa_setflag').invoke('up').invoke(flags.size() ? 'show' : 'hide');
+ $('ctx_message_setflag', 'oa_setflag').invoke('up').invoke(flags.size() ? 'show' : 'hide');
if (flags.size()) {
$('ctx_flag').childElements().each(function(c) {
[ c ].invoke(flags.include(c.readAttribute('flag')) ? 'show' : 'hide');
this.blacklist(id == 'ctx_message_blacklist');
break;
- case 'ctx_draft_deleted':
case 'ctx_message_deleted':
this.deleteMsg();
break;
}, this);
break;
- case 'ctx_draft_resume':
+ case 'ctx_message_resume':
this.composeMailbox('resume');
break;
this.blacklist(id == 'oa_blacklist');
break;
- case 'ctx_draft_undeleted':
case 'ctx_message_undeleted':
case 'oa_undeleted':
this.flag('\\deleted', false);
case 'ctx_message':
[ $('ctx_message_source').up() ].invoke(DIMP.conf.preview_pref ? 'hide' : 'show');
+ sel = this.viewport.getSelected();
+ [ $('ctx_message_resume') ].invoke(sel.size() == 1 && sel.get('dataob').first().draft ? 'show' : 'hide');
break;
default:
if (elt) {
tmp = this.viewport.createSelection('domid', elt.identify()).get('dataob').first();
- tmp.draft
- ? DimpCore.compose('resume', { folder: tmp.view, uid: tmp.imapuid })
- : this.msgWindow(tmp);
+ if (tmp.draft && this.viewport.getMetaData('drafts')) {
+ DimpCore.compose('resume', { folder: tmp.view, uid: tmp.imapuid })
+ } else {
+ this.msgWindow(tmp);
+ }
e.stop();
}
},
if ($('ctx_forward')) {
DM.addSubMenu('ctx_message_forward', 'ctx_forward');
}
- [ 'ctx_message_', 'oa_', 'ctx_draft_' ].each(function(i) {
+ [ 'ctx_message_', 'oa_' ].each(function(i) {
if ($(i + 'setflag')) {
DM.addSubMenu(i + 'setflag', 'ctx_flag');
DM.addSubMenu(i + 'unsetflag', 'ctx_flag');
return empty($new_subject) ? $subject : $new_subject;
}
+ /**
+ * Determines if a message is a draft and can be resumed.
+ *
+ * @param array $flags The list of IMAP flags.
+ *
+ * @return boolean True if the message is a draft.
+ */
+ public function isDraft($flags = array())
+ {
+ return in_array('\\draft', $flags) ||
+ !empty($GLOBALS['conf']['user']['allow_resume_all']) ||
+ ($this->_mailbox == IMP::folderPref($GLOBALS['prefs']->getValue('drafts_folder'), true));
+ }
+
}
if ($args['initial']) {
if (IMP::isSpecialFolder($mbox)) {
$md->special = 1;
+ if ($mbox == IMP::folderPref($GLOBALS['prefs']->getValue('drafts_folder'))) {
+ $md->drafts = 1;
+ }
}
if ($is_search) {
$md->search = 1;
/* Initialize the header fields. */
$msg = array(
'imapuid' => intval($ob['uid']),
- 'menutype' => 'message',
'view' => $ob['mailbox'],
);
}
}
- /* Specific flag checking. */
- if (in_array('\\draft', $ob['flags'])) {
- $msg['menutype'] = 'draft';
+ /* Drafts. */
+ if ($imp_ui->isDraft($ob['flags'])) {
$msg['draft'] = 1;
}
$a_template->set('view_source', $imp_contents->linkViewJS($imp_contents->getMIMEMessage(), 'view_source', _("_Message Source"), array('jstext' => _("Message Source"), 'css' => 'widget', 'widget' => true)));
}
-if (!$disable_compose &&
- (in_array('\\draft', $flags) ||
- !empty($conf['user']['allow_resume_all']) ||
- ($mailbox_name == IMP::folderPref($prefs->getValue('drafts_folder'), true)))) {
+if (!$disable_compose && $imp_ui->isDraft($flags)) {
$a_template->set('resume', Horde::widget(IMP::composeLink(array(), array('actionID' => 'draft') + $compose_params), _("Resume"), 'widget', '', '', _("Resume"), true));
}
</div>
<div class="context" id="ctx_message" style="display:none">
+ <a id="ctx_message_resume" style="display:none"><span class="contextImg"></span><?php echo _("Resume Draft") ?></a>
<a id="ctx_message_reply"><span class="contextImg"></span><?php echo _("Reply") ?></a>
<a id="ctx_message_forward"><span class="contextImg"></span><?php echo _("Forward") ?></a>
<?php if (!empty($flag_list)): ?>
</div>
</div>
-<div class="context" id="ctx_draft" style="display:none">
- <a id="ctx_draft_resume"><span class="contextImg"></span><?php echo _("Resume Draft") ?></a>
-<?php if (!empty($flag_list)): ?>
- <div>
- <div class="sep"></div>
- <a id="ctx_draft_setflag"><span class="contextImg"></span><?php echo _("Mark as") ?></a>
- <a id="ctx_draft_unsetflag"><span class="contextImg"></span><?php echo _("Unmark as") ?></a>
- </div>
-<?php endif; ?>
- <div class="sep"></div>
- <a id="ctx_draft_deleted"><span class="contextImg"></span><?php echo _("Delete") ?></a>
-<?php if (!$usetrash): ?>
- <a id="ctx_draft_undeleted"><span class="contextImg"></span><?php echo _("Undelete") ?></a>
-<?php endif; ?>
-</div>
-
<div class="context" id="ctx_reply" style="display:none;">
<a id="ctx_reply_reply"><span class="contextImg"></span><?php echo _("To Sender") ?></a>
<a id="ctx_reply_reply_all"><span class="contextImg"></span><?php echo _("To All") ?></a>
#ctx_message_forward span.contextImg, #ctx_forward_attach span.contextImg, #ctx_forward_body span.contextImg, #ctx_forward_both span.contextImg {
background-image: url("../graphics/forward.png");
}
-#ctx_folder_empty span.contextImg, #ctx_message_deleted span.contextImg, #ctx_draft_deleted span.contextImg, #oa_purge_deleted span.contextImg {
+#ctx_folder_empty span.contextImg, #ctx_message_deleted span.contextImg, #oa_purge_deleted span.contextImg {
background-image: url("../graphics/delete.png");
}
-#ctx_message_undeleted span.contextImg, #ctx_draft_undeleted span.contextImg, #oa_undeleted span.contextImg {
+#ctx_message_undeleted span.contextImg, #oa_undeleted span.contextImg {
background-image: url("../graphics/undelete.png");
}
#ctx_folder_seen span.contextImg {
#ctx_folder_unseen span.contextImg, #ctx_folder_poll span.contextImg, #ctx_folder_nopoll span.contextImg {
background-image: url("../graphics/mail_unseen.png");
}
-#ctx_message_setflag span.contextImg, #ctx_draft_setflag span.contextImg, #oa_setflag span.contextImg, #ctx_folder_setflag span.contextImg {
+#ctx_message_setflag span.contextImg, #oa_setflag span.contextImg, #ctx_folder_setflag span.contextImg {
background-image: url("../graphics/mail_flagged.png");
}
-#ctx_message_unsetflag span.contextImg, #ctx_draft_unsetflag span.contextImg, #oa_unsetflag span.contextImg {
+#ctx_message_unsetflag span.contextImg, #oa_unsetflag span.contextImg {
background-image: url("../graphics/mail_clearflag.png");
}
#ctx_message_source span.contextImg, #msg_view_source span.iconImg {
background-image: url("../graphics/message_source.png");
}
-#ctx_draft_resume span.contextImg {
+#ctx_message_resume span.contextImg {
background-image: url("../graphics/mail_draft.png");
}
#oa_preview_hide span.contextImg, #oa_preview_show span.contextImg {
#ctx_message_forward span.contextImg, #ctx_forward_attach span.contextImg, #ctx_forward_body span.contextImg, #ctx_forward_both span.contextImg {
background-image: url("../graphics/forward.png");
}
-#ctx_folder_empty span.contextImg, #ctx_message_deleted span.contextImg, #ctx_draft_deleted span.contextImg, #oa_purge_deleted span.contextImg {
+#ctx_folder_empty span.contextImg, #ctx_message_deleted span.contextImg, #oa_purge_deleted span.contextImg {
background-image: url("../graphics/delete.png");
}
-#ctx_message_undeleted span.contextImg, #ctx_draft_undeleted span.contextImg, #oa_undeleted span.contextImg {
+#ctx_message_undeleted span.contextImg, #oa_undeleted span.contextImg {
background-image: url("../graphics/undelete.png");
}
#ctx_folder_seen span.contextImg {
#ctx_folder_unseen span.contextImg, #ctx_folder_poll span.contextImg, #ctx_folder_nopoll span.contextImg {
background-image: url("../graphics/mail_unseen.png");
}
-#ctx_message_setflag span.contextImg, #ctx_draft_setflag span.contextImg, #oa_setflag span.contextImg, #ctx_folder_setflag span.contextImg {
+#ctx_message_setflag span.contextImg, #oa_setflag span.contextImg, #ctx_folder_setflag span.contextImg {
background-image: url("../graphics/mail_flagged.png");
}
-#ctx_message_unsetflag span.contextImg, #ctx_draft_unsetflag span.contextImg, #oa_unsetflag span.contextImg {
+#ctx_message_unsetflag span.contextImg, #oa_unsetflag span.contextImg {
background-image: url("../graphics/mail_clearflag.png");
}
-#ctx_draft_resume span.contextImg {
+#ctx_message_resume span.contextImg {
background-image: url("../graphics/mail_draft.png");
}
#oa_preview_hide span.contextImg, #oa_preview_show span.contextImg {