From 5e8da2b5c9d69872d17c857e239b1e30e9c23976 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Thu, 13 Feb 2014 08:19:41 -0500 Subject: [PATCH] Added toolbar button to move message in message view --- CHANGELOG | 1 program/include/rcmail_output_html.php | 2 skins/classic/mail.css | 74 ++++++++++++++++++++---------------- skins/larry/includes/mailtoolbar.html | 3 + skins/larry/styles.css | 8 ++++ program/lib/Roundcube/html.php | 15 ++++++- program/js/app.js | 12 +++++- skins/classic/includes/messagetoolbar.html | 3 + 8 files changed, 79 insertions(+), 39 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0bc760e..3dc197e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- Added toolbar button to move message in message view - Improve UI integration of ACL settings - Fix directories check in Installer on Windows (#1489576) - Fix issue when default_addressbook option is set to integer value (#1489407) diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php index 17b5b96..45cb9f0 100644 --- a/program/include/rcmail_output_html.php +++ b/program/include/rcmail_output_html.php @@ -1216,7 +1216,7 @@ // generate html code for button if ($btn_content) { - $attrib_str = html::attrib_string($attrib, $link_attrib); + $attrib_str = html::attrib_string($attrib, array_merge($link_attrib, array('data-*'))); $out = sprintf('<a%s>%s</a>', $attrib_str, $btn_content); } diff --git a/program/js/app.js b/program/js/app.js index 1ef3414..eb9b9ce 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -6670,8 +6670,9 @@ this.element_position = function(element, obj) { var obj = $(obj), win = $(window), - width = obj.width(), - height = obj.height(), + width = obj.outerWidth(), + height = obj.outerHeight(), + menu_pos = obj.data('menu-pos'), win_height = win.height(), elem_height = $(element).height(), elem_width = $(element).width(), @@ -6679,6 +6680,13 @@ top = pos.top, left = pos.left + width; + if (menu_pos == 'bottom') { + top += height; + left -= width; + } + else + left -= 5; + if (top + elem_height > win_height) { top -= elem_height - height; if (top < 0) diff --git a/program/lib/Roundcube/html.php b/program/lib/Roundcube/html.php index 33517fb..64324dd 100644 --- a/program/lib/Roundcube/html.php +++ b/program/lib/Roundcube/html.php @@ -269,19 +269,28 @@ return ''; } - $allowed_f = array_flip((array)$allowed); + $allowed_f = array_flip((array)$allowed); $attrib_arr = array(); + foreach ($attrib as $key => $value) { // skip size if not numeric if ($key == 'size' && !is_numeric($value)) { continue; } - // ignore "internal" or not allowed attributes - if ($key == 'nl' || ($allowed && !isset($allowed_f[$key])) || $value === null) { + // ignore "internal" or empty attributes + if ($key == 'nl' || $value === null) { continue; } + // ignore not allowed attributes + if (!empty($allowed)) { + $is_data_attr = substr_compare($key, 'data-', 0, 5) === 0; + if (!isset($allowed_f[$key]) && (!$is_data_attr || !isset($allowed_f['data-*']))) { + continue; + } + } + // skip empty eventhandlers if (preg_match('/^on[a-z]+/', $key) && !$value) { continue; diff --git a/skins/classic/includes/messagetoolbar.html b/skins/classic/includes/messagetoolbar.html index 6936c7d..639557d 100644 --- a/skins/classic/includes/messagetoolbar.html +++ b/skins/classic/includes/messagetoolbar.html @@ -20,6 +20,9 @@ <roundcube:container name="toolbar" id="messagetoolbar" /> <roundcube:button name="markmenulink" id="markmenulink" type="link" class="button markmessage" title="markmessages" onclick="rcmail_ui.show_popup('markmenu');return false" content=" " /> <roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button messagemenu" title="moreactions" onclick="rcmail_ui.show_popup('messagemenu');return false" content=" " /> +<roundcube:if condition="template:name == 'message'" /> +<roundcube:button command="move" type="link" class="buttonPas move" classAct="button move" classSel="button moveSel" label="move" title="moveto" content=" " data-menu-pos="bottom" /> +<roundcube:endif /> </div> <div id="forwardmenu" class="popupmenu"> diff --git a/skins/classic/mail.css b/skins/classic/mail.css index 10efd35..e80ad4e 100644 --- a/skins/classic/mail.css +++ b/skins/classic/mail.css @@ -116,51 +116,59 @@ } #messagetoolbar a.markmessage { - background-position: -256px 0; -} - -#messagetoolbar a.messagemenu { background-position: -288px 0; } -#messagetoolbar a.spellcheck { - background-position: -384px 0; -} - -#messagetoolbar a.spellcheckSel { - background-position: -384px -32px; -} - -#messagetoolbar a.attach { - background-position: -352px 0; -} - -#messagetoolbar a.attachSel { - background-position: -352px -32px; -} - -#messagetoolbar a.insertsig { - background-position: -448px 0; -} - -#messagetoolbar a.insertsigSel { - background-position: -448px -32px; -} - -#messagetoolbar a.savedraft { +#messagetoolbar a.messagemenu { background-position: -322px 0; } +#messagetoolbar a.spellcheck { + background-position: -418px 0; +} + +#messagetoolbar a.spellcheckSel { + background-position: -418px -32px; +} + +#messagetoolbar a.attach { + background-position: -386px 0; +} + +#messagetoolbar a.attachSel { + background-position: -386px -32px; +} + +#messagetoolbar a.insertsig { + background-position: -482px 0; +} + +#messagetoolbar a.insertsigSel { + background-position: -482px -32px; +} + +#messagetoolbar a.savedraft { + background-position: -354px 0; +} + #messagetoolbar a.savedraftSel { - background-position: -322px -32px; + background-position: -354px -32px; } #messagetoolbar a.send { - background-position: -416px 0; + background-position: -450px 0; } #messagetoolbar a.sendSel { - background-position: -416px -32px; + background-position: -450px -32px; +} + +#messagetoolbar a.move { + background-position: -578px 0; +} + +#messagetoolbar a.moveSel { + background-position: -578px -32px; } #messagetoolbar a.download { @@ -172,7 +180,7 @@ } #messagetoolbar a.responses { - background-position: -512px 0; + background-position: -548px 0; } #messagemenu li a.active:hover, diff --git a/skins/larry/includes/mailtoolbar.html b/skins/larry/includes/mailtoolbar.html index 5708a94..912cac6 100644 --- a/skins/larry/includes/mailtoolbar.html +++ b/skins/larry/includes/mailtoolbar.html @@ -15,6 +15,9 @@ <roundcube:endif /> <roundcube:container name="toolbar" id="mailtoolbar" /> <roundcube:button name="markmenulink" id="markmessagemenulink" type="link" class="button markmessage" label="mark" title="markmessages" onclick="UI.show_popup('markmessagemenu');return false" /> +<roundcube:if condition="template:name == 'message'" /> +<roundcube:button command="move" type="link" class="button move disabled" classAct="button move" classSel="button move pressed" label="move" title="moveto" data-menu-pos="bottom" /> +<roundcube:endif /> <roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button more" label="more" title="moreactions" onclick="UI.show_popup('messagemenu');return false" /> <div id="forwardmenu" class="popupmenu"> diff --git a/skins/larry/styles.css b/skins/larry/styles.css index e1a8133..96ffbb2 100644 --- a/skins/larry/styles.css +++ b/skins/larry/styles.css @@ -1895,6 +1895,10 @@ background-position: center -1094px; } +.toolbar a.button.move { + background-position: center -1972px; +} + .toolbar a.button.more { background-position: center -850px; } @@ -2339,6 +2343,10 @@ /*** folder selector ***/ +#folder-selector { + z-index: 1000; +} + #folder-selector li a span { background: url("images/listicons.png") 4px -2021px no-repeat; display: block; -- Gitblit v1.9.1