diff options
author | thomascube <thomas@roundcube.net> | 2010-06-08 20:50:15 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2010-06-08 20:50:15 +0000 |
commit | e9b5a6c2d55f1fc31715ad7ff05aed631cc12699 (patch) | |
tree | 4f6651e0e935c2ca472ce1afc09e790f746bf50b | |
parent | 349a8e36e581694cb200e4f3097d7af8c8628662 (diff) |
Unify directory/mailbox list actions
-rwxr-xr-x | program/include/rcube_template.php | 31 | ||||
-rw-r--r-- | program/localization/de_CH/labels.inc | 1 | ||||
-rw-r--r-- | program/localization/de_DE/labels.inc | 1 | ||||
-rw-r--r-- | program/localization/en_US/labels.inc | 1 | ||||
-rw-r--r-- | skins/default/addressbook.css | 53 | ||||
-rw-r--r-- | skins/default/common.css | 56 | ||||
-rw-r--r-- | skins/default/functions.js | 10 | ||||
-rw-r--r-- | skins/default/settings.css | 15 | ||||
-rw-r--r-- | skins/default/templates/addressbook.html | 2 | ||||
-rw-r--r-- | skins/default/templates/editidentity.html | 9 | ||||
-rw-r--r-- | skins/default/templates/identities.html | 9 | ||||
-rw-r--r-- | skins/default/templates/mail.html | 23 | ||||
-rw-r--r-- | skins/default/templates/message.html | 4 |
13 files changed, 121 insertions, 94 deletions
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 2f1740dc9..fec12ae19 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -770,7 +770,6 @@ class rcube_template extends rcube_html_page */ public function button($attrib) { - static $sa_buttons = array(); static $s_button_count = 100; // these commands can be called directly via url @@ -787,26 +786,11 @@ class rcube_template extends rcube_html_page else { $attrib['type'] = ($attrib['image'] || $attrib['imagepas'] || $attrib['imageact']) ? 'image' : 'link'; } + $command = $attrib['command']; - // take the button from the stack - if ($attrib['name'] && $sa_buttons[$attrib['name']]) { - $attrib = $sa_buttons[$attrib['name']]; - } - else if($attrib['image'] || $attrib['imageact'] || $attrib['imagepas'] || $attrib['class']) { - // add button to button stack - if (!$attrib['name']) { - $attrib['name'] = $command; - } - if (!$attrib['image']) { - $attrib['image'] = $attrib['imagepas'] ? $attrib['imagepas'] : $attrib['imageact']; - } - $sa_buttons[$attrib['name']] = $attrib; - } - else if ($command && $sa_buttons[$command]) { - // get saved button for this command/name - $attrib = $sa_buttons[$command]; - } + if ($attrib['task']) + $command = $attrib['task'] . '.' . $command; if (!$attrib['id']) { $attrib['id'] = sprintf('rcmbtn%d', $s_button_count++); @@ -849,6 +833,9 @@ class rcube_template extends rcube_html_page if (in_array($attrib['command'], rcmail::$main_tasks)) { $attrib['href'] = rcmail_url(null, null, $attrib['command']); } + else if ($attrib['task'] && in_array($attrib['task'], rcmail::$main_tasks)) { + $attrib['href'] = rcmail_url($attrib['command'], null, $attrib['task']); + } else if (in_array($attrib['command'], $a_static_commands)) { $attrib['href'] = rcmail_url($attrib['command']); } @@ -861,7 +848,11 @@ class rcube_template extends rcube_html_page if (!$attrib['href']) { $attrib['href'] = '#'; } - if ($command && !$attrib['onclick']) { + if ($attrib['task']) { + if ($attrib['classact']) + $attrib['class'] = $attrib['classact']; + } + else if ($command && !$attrib['onclick']) { $attrib['onclick'] = sprintf( "return %s.command('%s','%s',this)", JS_OBJECT_NAME, diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc index 84b47d414..1fc42dcf7 100644 --- a/program/localization/de_CH/labels.inc +++ b/program/localization/de_CH/labels.inc @@ -148,6 +148,7 @@ $labels['listcolumns'] = 'Spalten'; $labels['listsorting'] = 'Sortierung'; $labels['listorder'] = 'Ordnung'; $labels['listmode'] = 'Anzeigemodus'; +$labels['folderactions'] = 'Ordneraktionen...'; $labels['compact'] = 'Packen'; $labels['empty'] = 'Leeren'; $labels['purge'] = 'Aufräumen'; diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc index d7a88b957..659d8ddf8 100644 --- a/program/localization/de_DE/labels.inc +++ b/program/localization/de_DE/labels.inc @@ -148,6 +148,7 @@ $labels['listcolumns'] = 'Spalten'; $labels['listsorting'] = 'Sortierung'; $labels['listorder'] = 'Ordnung'; $labels['listmode'] = 'Anzeigemodus'; +$labels['folderactions'] = 'Ordneraktionen...'; $labels['compact'] = 'Packen'; $labels['empty'] = 'Leeren'; $labels['purge'] = 'Bereinigen'; diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index b669c919e..5700d4aaf 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -177,6 +177,7 @@ $labels['listsorting'] = 'Sorting column'; $labels['listorder'] = 'Sorting order'; $labels['listmode'] = 'List view mode'; +$labels['folderctions'] = 'Folder actions...'; $labels['compact'] = 'Compact'; $labels['empty'] = 'Empty'; $labels['purge'] = 'Purge'; diff --git a/skins/default/addressbook.css b/skins/default/addressbook.css index 02a7a68e1..cdc86e934 100644 --- a/skins/default/addressbook.css +++ b/skins/default/addressbook.css @@ -110,65 +110,12 @@ overflow: hidden; } -#directorylistwarp -{ - position: absolute; - top: 20px; - bottom: 22px; - left: 0; - right: 0; - overflow-y: auto; - overflow-x: hidden; -} - -#groups-title -{ - position: absolute; - top: 0; - left: 0; - right: 0; -} - #directorylistbox input { display: absolute; margin: 2px; } -#directorylistbuttons -{ - display: block; - position: absolute; - bottom: 0px; - left: 0px; - right: 0px; - height: 22px; - border-top: 1px solid #999; - background: url('images/listheader.gif') top left repeat-x #CCC; -} - -#directorylistbuttons a.button, -#directorylistbuttons a.buttonPas -{ - display: block; - float: left; - width: 34px; - height: 22px; - padding: 0px; - margin: 0; - overflow: hidden; - background: url('images/icons/groupactions.png') 0 0 no-repeat transparent; - opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */ -} - -#directorylistbuttons a.groupactions { - background-position: 0 -26px; -} - -#directorylistbuttons a.buttonPas { - opacity: 0.35; -} - #addresslist { position: absolute; diff --git a/skins/default/common.css b/skins/default/common.css index 41b234a37..8591ab7f7 100644 --- a/skins/default/common.css +++ b/skins/default/common.css @@ -389,7 +389,59 @@ img background-color: #c00; } - +#directorylist-title +{ + position: absolute; + top: 0; + left: 0; + right: 0; +} + +#directorylistwarp +{ + position: absolute; + top: 20px; + bottom: 22px; + left: 0; + right: 0; + overflow-y: auto; + overflow-x: hidden; +} + +#directorylistbuttons +{ + display: block; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 22px; + border-top: 1px solid #999; + background: url('images/listheader.gif') top left repeat-x #CCC; +} + +#directorylistbuttons a.button, +#directorylistbuttons a.buttonPas +{ + display: block; + float: left; + width: 34px; + height: 22px; + padding: 0px; + margin: 0; + overflow: hidden; + background: url('images/icons/groupactions.png') 0 0 no-repeat transparent; + opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */ +} + +#directorylistbuttons a.groupactions { + background-position: 0 -26px; +} + +#directorylistbuttons a.buttonPas { + opacity: 0.35; +} + /***** common table settings ******/ @@ -655,6 +707,7 @@ ul.toolbarmenu li img margin: 0 2px; } +div.popupmenu ul li.separator_below, ul.toolbarmenu li.separator_below { border-bottom: 1px solid #ccc; @@ -662,6 +715,7 @@ ul.toolbarmenu li.separator_below padding-bottom: 2px; } +div.popupmenu ul li.separator_above, ul.toolbarmenu li.separator_above { border-top: 1px solid #ccc; diff --git a/skins/default/functions.js b/skins/default/functions.js index e1edee1e8..3a37b6d8d 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -131,7 +131,8 @@ function rcube_mail_ui() messagemenu:'messagemenu', listmenu:'listmenu', dragmessagemenu:'dragmessagemenu', - groupmenu:'groupoptionsmenu' + groupmenu:'groupoptionsmenu', + mailboxmenu:'mailboxoptionsmenu' }; var obj; @@ -173,6 +174,11 @@ show_groupmenu: function(show) this.show_popupmenu(this.groupmenu, 'groupactionslink', show, true); }, +show_mailboxmenu: function(show) +{ + this.show_popupmenu(this.mailboxmenu, 'mboxactionslink', show, true); +}, + show_searchmenu: function(show) { if (typeof show == 'undefined') @@ -289,6 +295,8 @@ body_mouseup: function(evt, p) this.dragmessagemenu.hide(); else if (this.groupmenu && this.groupmenu.is(':visible') && target != rcube_find_object('groupactionslink')) this.show_groupmenu(false); + else if (this.mailboxmenu && this.mailboxmenu.is(':visible') && target != rcube_find_object('mboxactionslink')) + this.show_mailboxmenu(false); else if (this.listmenu && this.listmenu.is(':visible') && target != rcube_find_object('listmenulink')) { var menu = rcube_find_object('listmenu'); while (target.parentNode) { diff --git a/skins/default/settings.css b/skins/default/settings.css index a9c5e7b38..20de7e1b3 100644 --- a/skins/default/settings.css +++ b/skins/default/settings.css @@ -75,11 +75,22 @@ span.tablink-selected a #identities-list { - bottom: 60px; + bottom: 30px; width: 420px; border: 1px solid #999999; } +#identitieslistwarp +{ + position: absolute; + top: 0px; + bottom: 22px; + left: 0; + right: 0; + overflow-y: auto; + overflow-x: hidden; +} + #listbuttons { position: absolute; @@ -192,7 +203,7 @@ span.tablink-selected a top: 95px; left: 450px; right: 20px; - bottom: 60px; + bottom: 30px; border: 1px solid #999999; overflow: auto; background-color: #F2F2F2; diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html index 34a78314a..e15bf5fb1 100644 --- a/skins/default/templates/addressbook.html +++ b/skins/default/templates/addressbook.html @@ -35,7 +35,7 @@ </div> <div id="directorylistbox"> -<div id="groups-title" class="boxtitle"><roundcube:label name="groups" /></div> +<div id="directorylist-title" class="boxtitle"><roundcube:label name="groups" /></div> <div id="directorylistwarp"> <roundcube:object name="directorylist" id="directorylist" /> <roundcube:object name="groupslist" id="contactgroupslist" /> diff --git a/skins/default/templates/editidentity.html b/skins/default/templates/editidentity.html index 0cfec60d9..71b691bb8 100644 --- a/skins/default/templates/editidentity.html +++ b/skins/default/templates/editidentity.html @@ -12,12 +12,13 @@ <roundcube:include file="/includes/settingstabs.html" /> <div id="identities-list"> +<div id="identitieslistwarp"> <roundcube:object name="identitiesList" id="identities-table" class="records-table" cellspacing="0" summary="Identities list" editIcon="" /> </div> - -<p id="listbuttons"> -<roundcube:button command="add" type="input" label="newidentity" class="button" condition="config:identities_level:0<2" /> -</p> +<div id="directorylistbuttons"> +<roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<2" /> +</div> +</div> <div id="identity-details"> <div id="identity-title" class="boxtitle"><roundcube:object name="steptitle" /></div> diff --git a/skins/default/templates/identities.html b/skins/default/templates/identities.html index 395da1cfc..81822ae9a 100644 --- a/skins/default/templates/identities.html +++ b/skins/default/templates/identities.html @@ -12,12 +12,13 @@ <roundcube:include file="/includes/settingstabs.html" /> <div id="identities-list"> +<div id="identitieslistwarp"> <roundcube:object name="identitiesList" id="identities-table" class="records-table" cellspacing="0" summary="Identities list" editIcon="" /> </div> - -<p id="listbuttons"> -<roundcube:button command="add" type="input" label="newidentity" class="button" condition="config:identities_level:0<2" /> -</p> +<div id="directorylistbuttons"> +<roundcube:button command="add" type="link" title="newidentity" class="buttonPas addgroup" classAct="button addgroup" content=" " condition="config:identities_level:0<2" /> +</div> +</div> <div id="identity-details"> <div style="margin:10px auto; text-align:center"> diff --git a/skins/default/templates/mail.html b/skins/default/templates/mail.html index b28dcffeb..504d07efb 100644 --- a/skins/default/templates/mail.html +++ b/skins/default/templates/mail.html @@ -26,21 +26,21 @@ <div id="mainscreen"> <div id="mailleftcontainer"> <div id="mailboxlist-container"> -<div class="boxtitle"><roundcube:label name="mailboxlist" /></div> +<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div> +<div id="directorylistwarp"> <roundcube:object name="mailboxlist" id="mailboxlist" maxlength="25" /> </div> +<div id="directorylistbuttons"> + <!--><roundcube:button name="togglequota" type="link" title="showquota" class="buttonPas showinfo" classAct="button showinfo" onclick="rcmail_ui.toggle_quotadisplay();return false" content=" " />--> + <roundcube:button name="mboxactions" id="mboxactionslink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_mailboxmenu();return false" content=" " /> +</div> +</div> <script type="text/javascript"> var mailviewsplitv = new rcube_splitter({id:'mailviewsplitterv', p1: 'mailleftcontainer', p2: 'mailrightcontainer', orientation: 'v', relative: true, start: 165}); rcmail.add_onload('mailviewsplitv.init()'); </script> -<div id="mailboxcontrols"> - <span><roundcube:label name="folder" />: </span> - <roundcube:button command="expunge" type="link" title="compact" class="buttonPas expunge" classAct="button expunge" classSel="button expungesel" content=" " /> - <roundcube:button command="purge" type="link" title="empty" class="buttonPas purge" classAct="button purge" classSel="button purgesel" content=" " /> - <roundcube:container name="mailboxcontrols" id="mailboxcontrols" /> -</div> </div> <div id="mailrightcontainer"> @@ -161,6 +161,15 @@ </ul> </div> +<div id="mailboxoptionsmenu" class="popupmenu"> + <ul> + <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li> + <li class="separator_below"><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li> + <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li> + <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" /> + </ul> +</div> + <div id="listmenu" class="popupmenu"> <roundcube:if condition="env:threads" /> <fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend> diff --git a/skins/default/templates/message.html b/skins/default/templates/message.html index b12e5c027..bd3291b9f 100644 --- a/skins/default/templates/message.html +++ b/skins/default/templates/message.html @@ -34,10 +34,12 @@ <div id="mainscreen"> <div id="mailleftcontainer"> <div id="mailboxlist-container"> -<div class="boxtitle"><roundcube:label name="mailboxlist" /></div> +<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div> +<div id="directorylistwarp" style="bottom:0px"> <roundcube:object name="mailboxlist" id="mailboxlist" maxlength="25" /> </div> </div> +</div> <div id="messageframe"> <div id="messagecanvas"> |