From d5d067dbaaa63aeae6eed60492dea04d3dce9afe Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Mon, 30 Mar 2009 13:01:57 -0600 Subject: [PATCH] Ticket #8126: Implement readonly mailboxes in dimp view --- imp/js/src/DimpBase.js | 29 +++++++++++++++++++++++++++-- imp/lib/Views/ListMessages.php | 5 ++++- imp/message-dimp.php | 2 ++ imp/templates/chunks/message.php | 2 ++ imp/templates/index/index-dimp.inc | 1 + imp/themes/graphics/locked.png | Bin 0 -> 505 bytes imp/themes/screen-dimp.css | 4 ++++ imp/themes/silver/graphics/locked.png | Bin 0 -> 749 bytes imp/themes/silver/screen-dimp.css | 3 +++ 9 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 imp/themes/graphics/locked.png create mode 100644 imp/themes/silver/graphics/locked.png diff --git a/imp/js/src/DimpBase.js b/imp/js/src/DimpBase.js index 94b74b7fc..654bfd265 100644 --- a/imp/js/src/DimpBase.js +++ b/imp/js/src/DimpBase.js @@ -446,7 +446,7 @@ var DimpBase = { this.setMessageListTitle(); }.bind(this), onComplete: function() { - var row, ssc, + var row, ssc, tmp, l = this.viewport.getMetaData('label'); if (this.uid) { @@ -489,6 +489,25 @@ var DimpBase = { } } } + + /* Read-only changes. 'oa_setflag' is handled + * elsewhere. */ + tmp = [ $('button_deleted') ].compact().invoke('up', 'SPAN'); + [ 'ctx_message_', 'ctx_draft_' ].each(function(c) { + var t = $(c + 'setflag'); + if (t) { + tmp = tmp.concat([ t, t.previous('DIV.sep'), t.next('DIV.sep') ]); + } + tmp = tmp.concat($(c + 'deleted', c + 'undeleted')); + }); + + if (this.viewport.getMetaData('readonly')) { + tmp.compact().invoke('hide'); + $('folderName').next().show(); + } else { + tmp.compact().invoke('show'); + $('folderName').next().hide(); + } } else if (this.filtertoggle) { if (this.filtertoggle == 1 && this.viewport.getMetaData('sortby') == DIMP.conf.sortthread) { @@ -740,7 +759,13 @@ var DimpBase = { break; case 'ctx_otheractions': - $('oa_setflag', 'oa_sep1', 'oa_blacklist', 'oa_whitelist', 'oa_sep2', 'oa_undeleted').compact().invoke(this.viewport.getSelected().size() ? 'show' : 'hide'); + tmp = $('oa_sep1', 'oa_blacklist', 'oa_whitelist', 'oa_sep2', 'oa_undeleted'); + if (this.viewport.getMetaData('readonly')) { + $('oa_setflag').hide().previous('DIV.sep').hide(); + } else { + tmp.push($('oa_setflag')); + } + tmp.compact().invoke(this.viewport.getSelected().size() ? 'show' : 'hide'); break; default: diff --git a/imp/lib/Views/ListMessages.php b/imp/lib/Views/ListMessages.php index 5a724fd2c..ef0baa8da 100644 --- a/imp/lib/Views/ListMessages.php +++ b/imp/lib/Views/ListMessages.php @@ -93,7 +93,7 @@ class IMP_Views_ListMessages /* Create the base object. */ $result = new stdClass; $result->id = $mbox; - $result->reset = false; + $result->reset = 0; $result->totalrows = $msgcount; $result->label = $label; $result->cacheid = $imp_mailbox->getCacheID(); @@ -141,6 +141,9 @@ class IMP_Views_ListMessages if ($GLOBALS['imp_search']->isSearchMbox($mbox)) { $md->search = 1; } + if ($GLOBALS['imp_imap']->isReadOnly($mbox)) { + $md->readonly = 1; + } /* Check for mailbox existence now. If there are no messages, there * is a chance that the mailbox doesn't exist. If there is at least diff --git a/imp/message-dimp.php b/imp/message-dimp.php index fbe0940fd..7d3b5b413 100644 --- a/imp/message-dimp.php +++ b/imp/message-dimp.php @@ -19,6 +19,7 @@ if (!$index || !$folder) { } $imp_ui = new IMP_UI_Message(); +$readonly = $imp_imap->isReadOnly($folder); $args = array( 'headers' => array_diff(array_keys($imp_ui->basicHeaders()), array('subject')), @@ -63,6 +64,7 @@ foreach (array('from', 'to', 'cc', 'bcc', 'replyTo') as $val) { $compose_result['js'][] = 'DimpFullmessage.' . $val . ' = ' . Horde_Serialize::serialize($show_msg_result[$val], Horde_Serialize::JSON); } } + IMP::addInlineScript($compose_result['js']); IMP::addInlineScript($compose_result['jsonload'], 'load'); IMP::addInlineScript(array(DIMP::notify()), 'dom'); diff --git a/imp/templates/chunks/message.php b/imp/templates/chunks/message.php index 3c0befdde..b8c990226 100644 --- a/imp/templates/chunks/message.php +++ b/imp/templates/chunks/message.php @@ -49,9 +49,11 @@ function _createDAfmsg($text, $image, $id, $class = '', $show_text = true) + + diff --git a/imp/templates/index/index-dimp.inc b/imp/templates/index/index-dimp.inc index 24cc363f7..36dd71f7c 100644 --- a/imp/templates/index/index-dimp.inc +++ b/imp/templates/index/index-dimp.inc @@ -165,6 +165,7 @@ function _simpleButton($id, $text, $image, $imagedir = null) + diff --git a/imp/themes/graphics/locked.png b/imp/themes/graphics/locked.png new file mode 100644 index 0000000000000000000000000000000000000000..e79c2a53470159a6e153c5b19651994812e03022 GIT binary patch literal 505 zcmV>O-+GX zD{^vjs&6Z#aW;B-daQ9St#dM7icGMLU%iY@rIB{NjZmAHl*X1_$D3rR zqn^s2XsW8J%cOD6q;SoqZq254(57_Er+d(-bkD1Nv9Ynwtb5I@gU+pk)U0{cu71+8 ziPf@%*tLwjyu7}?zSg>wz`(%4z`(-7!rH!?;KH8a!kpm5px?x!;l!Zg#i8TIqSDgR z+uPd!004VHNFD$H00DGTPE!Ct=GbNc005auL_t&-S7Ttn4kCd7iOVe(9ueUw%nTQh z_7dRa6m*b=@%j8%Koq|@Oc$>Yn8o1>6JRsqVr67x;xT21@FNX^f`k42{k^S)AW9-b zJ=mA107 vnyiK#RKU*I&`?WDUsqie>X1k{V88+Z0OB1NbJNwZ00000NkvXXu0mjfTie)Z literal 0 HcmV?d00001 diff --git a/imp/themes/screen-dimp.css b/imp/themes/screen-dimp.css index 9fd54f77b..0c4c43ef2 100644 --- a/imp/themes/screen-dimp.css +++ b/imp/themes/screen-dimp.css @@ -1116,3 +1116,7 @@ span.keyupImg { span.keydownImg { background-image: url("graphics/key_down.png"); } +span.readonlyImg { + background-image: url("graphics/locked.png"); + vertical-align: sub; +} diff --git a/imp/themes/silver/graphics/locked.png b/imp/themes/silver/graphics/locked.png new file mode 100644 index 0000000000000000000000000000000000000000..2ebc4f6f9663e32cad77d67ef93ab8843dfea3c0 GIT binary patch literal 749 zcmVe|tv9>?g+k#9o0pTxd@;_sq{kwlU;^VvV*?BV8P@}BoaZTQUROpWV6|-M`|^n&)=+8tHo3*<<$NU zU`%V~ZF;?hBSYsjJ6%JzV}E(D{pOLqQklliUf9um_tGl-wty`y*p?eYNW56P>X@1s zZs7KrRZKtmV7Lqj^5Fgr7_`LjhdJK@ltF&O`j7?*NUM$KvmNGz)3WjM?V$vHlPT0AFyF?kLE<#HZabCSW3-oa*6;Z zrXD`Ulwd<^2glP%1Y1Kc1Ij%DU^=ME(jKf6APNlA$Uu;J4bVilQHSWX5uJ$9Zsp4M z0%!@LvyTxz=Z6stxlichODIY+yNGt%RM;m`>H4LOKLFs9Y%b5aUN|2|{0Zw|<_~i} fmXz*V19AKYa