summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2010-06-08 20:50:15 +0000
committerthomascube <thomas@roundcube.net>2010-06-08 20:50:15 +0000
commite9b5a6c2d55f1fc31715ad7ff05aed631cc12699 (patch)
tree4f6651e0e935c2ca472ce1afc09e790f746bf50b
parent349a8e36e581694cb200e4f3097d7af8c8628662 (diff)
Unify directory/mailbox list actions
-rwxr-xr-xprogram/include/rcube_template.php31
-rw-r--r--program/localization/de_CH/labels.inc1
-rw-r--r--program/localization/de_DE/labels.inc1
-rw-r--r--program/localization/en_US/labels.inc1
-rw-r--r--skins/default/addressbook.css53
-rw-r--r--skins/default/common.css56
-rw-r--r--skins/default/functions.js10
-rw-r--r--skins/default/settings.css15
-rw-r--r--skins/default/templates/addressbook.html2
-rw-r--r--skins/default/templates/editidentity.html9
-rw-r--r--skins/default/templates/identities.html9
-rw-r--r--skins/default/templates/mail.html23
-rw-r--r--skins/default/templates/message.html4
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" />:&nbsp;</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">