From a61bbb24aafec5718ca9bc985e7c596c5821f018 Mon Sep 17 00:00:00 2001 From: thomascube Date: Fri, 26 Mar 2010 16:38:20 +0000 Subject: Added basic contact groups feature --- skins/default/addressbook.css | 99 ++++++++++++++++++++++++---- skins/default/functions.js | 75 ++++++++++++--------- skins/default/images/icons/folders.png | Bin 3392 -> 4771 bytes skins/default/images/icons/groupactions.png | Bin 0 -> 660 bytes skins/default/images/listheader.gif | Bin 538 -> 487 bytes skins/default/mail.css | 2 +- skins/default/templates/addressbook.html | 37 ++++++----- skins/default/templates/mail.html | 3 +- 8 files changed, 150 insertions(+), 66 deletions(-) create mode 100644 skins/default/images/icons/groupactions.png (limited to 'skins/default') diff --git a/skins/default/addressbook.css b/skins/default/addressbook.css index ce82a1594..456d137b1 100644 --- a/skins/default/addressbook.css +++ b/skins/default/addressbook.css @@ -4,7 +4,7 @@ { position: absolute; top: 45px; - left: 205px; + left: 225px; height: 35px; } @@ -76,8 +76,8 @@ #abookcountbar { position: absolute; - bottom: 16px; - left: 200px; + bottom: 6px; + left: 225px; width: 240px; height: 20px; text-align: left; @@ -94,22 +94,80 @@ position: absolute; top: 85px; right: 20px; - bottom: 40px; - left: 205px; + bottom: 30px; + left: 225px; } -#directorylist +#directorylistbox { position: absolute; top: 85px; - bottom: 40px; + bottom: 30px; left: 20px; - width: 175px; + width: 195px; border: 1px solid #999999; background-color: #F9F9F9; overflow: hidden; } +#directorylistwarp +{ + position: absolute; + top: 20px; + bottom: 22px; + left: 0; + right: 0; + overflow: auto; +} + +#groups-title +{ + position: absolute; + top: 0; + left: 0; + right: 0; +} + +#directorylistbox input +{ + display: absolute; + margin: 2px; +} + +#directoylistbuttons +{ + 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; +} + +#directoylistbuttons a.button, +#directoylistbuttons 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 */ +} + +#directoylistbuttons a.groupactions { + background-position: 0 -26px; +} + +#directoylistbuttons a.buttonPas { + opacity: 0.35; +} + #addresslist { position: absolute; @@ -120,6 +178,11 @@ overflow: auto; } +#contactgroupslist +{ + border-top: 1px solid #999; +} + #importbox { position: absolute; @@ -136,7 +199,7 @@ #addresslist { left: 0px; - width: 340px; + width: 280px; } #importbox a @@ -144,7 +207,7 @@ color: blue; } -#directorylist ul +#directorylist { list-style: none; margin: 0; @@ -152,23 +215,31 @@ background-color: #FFFFFF; } -#directorylist ul li +#directorylist li { + display: block; font-size: 11px; + background: url(images/icons/folders.png) 5px -108px no-repeat; border-bottom: 1px solid #EBEBEB; white-space: nowrap; } -#directorylist ul li a +#directorylist li a { + cursor: default; display: block; - padding-left: 6px; + padding-left: 25px; padding-top: 2px; padding-bottom: 2px; text-decoration: none; white-space: nowrap; } +#directorylist li.contactgroup +{ + background-position: 5px -144px; +} + #directorylist li.selected { background-color: #929292; @@ -201,7 +272,7 @@ { position: absolute; top: 0px; - left: 555px; + left: 290px; right: 0px; bottom: 0px; border: 1px solid #999999; diff --git a/skins/default/functions.js b/skins/default/functions.js index ca4c6694b..6d99e921d 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -126,37 +126,52 @@ function rcmail_init_compose_form() function rcube_mail_ui() { - this.markmenu = $('#markmessagemenu'); - this.searchmenu = $('#searchmenu'); - this.messagemenu = $('#messagemenu'); - this.listmenu = $('#listmenu'); - this.dragmessagemenu = $('#dragmessagemenu'); + this.popupmenus = { + markmenu:'markmessagemenu', + searchmenu:'searchmenu', + messagemenu:'messagemenu', + listmenu:'listmenu', + dragmessagemenu:'dragmessagemenu', + groupmenu:'groupoptionsmenu' + }; + + var obj; + for (var k in this.popupmenus) { + obj = $('#'+this.popupmenus[k]) + if (obj.length) + this[k] = obj; + } } rcube_mail_ui.prototype = { -show_markmenu: function(show) +show_popupmenu: function(obj, refname, show, above) { if (typeof show == 'undefined') - show = this.markmenu.is(':visible') ? false : true; + show = obj.is(':visible') ? false : true; - var ref = rcube_find_object('markreadbutton'); - if (show && ref) - this.markmenu.css({ left:ref.offsetLeft, top:(ref.offsetTop + ref.offsetHeight) }); + var ref = rcube_find_object(refname); + if (show && ref) { + var pos = $(ref).offset(); + obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) }); + } - this.markmenu[show?'show':'hide'](); + obj[show?'show':'hide'](); }, -show_messagemenu: function(show) +show_markmenu: function(show) { - if (typeof show == 'undefined') - show = this.messagemenu.is(':visible') ? false : true; + this.show_popupmenu(this.markmenu, 'markreadbutton', show); +}, - var ref = rcube_find_object('messagemenulink'); - if (show && ref) - this.messagemenu.css({ left:ref.offsetLeft, top:(ref.offsetTop + ref.offsetHeight) }); +show_messagemenu: function(show) +{ + this.show_popupmenu(this.messagemenu, 'messagemenulink', show); +}, - this.messagemenu[show?'show':'hide'](); +show_groupmenu: function(show) +{ + this.show_popupmenu(this.groupmenu, 'groupactionslink', show, true); }, show_searchmenu: function(show) @@ -267,6 +282,8 @@ body_mouseup: function(evt, p) this.show_messagemenu(false); else if (this.dragmessagemenu && this.dragmessagemenu.is(':visible') && !rcube_mouse_is_over(evt, rcube_find_object('dragmessagemenu'))) this.dragmessagemenu.hide(); + else if (this.groupmenu && this.groupmenu.is(':visible') && target != rcube_find_object('groupactionslink')) + this.show_groupmenu(false); else if (this.listmenu && this.listmenu.is(':visible') && target != rcube_find_object('listmenulink')) { var menu = rcube_find_object('listmenu'); while (target.parentNode) { @@ -290,16 +307,10 @@ body_mouseup: function(evt, p) body_keypress: function(evt, p) { if (rcube_event.get_keycode(evt) == 27) { - if (this.markmenu && this.markmenu.is(':visible')) - this.show_markmenu(false); - if (this.searchmenu && this.searchmenu.is(':visible')) - this.show_searchmenu(false); - if (this.messagemenu && this.messagemenu.is(':visible')) - this.show_messagemenu(false); - if (this.listmenu && this.listmenu.is(':visible')) - this.show_listmenu(false); - if (this.dragmessagemenu && this.dragmessagemenu.is(':visible')) - this.dragmessagemenu.hide(); + for (var k in this.popupmenus) { + if (this[k] && this[k].is(':visible')) + this[k].hide(); + } } } @@ -312,7 +323,9 @@ function rcube_init_mail_ui() rcmail_ui = new rcube_mail_ui(); rcube_event.add_listener({ object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); rcube_event.add_listener({ object:rcmail_ui, method:'body_keypress', event:'keypress' }); - rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui); - rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui); - rcmail.gui_object('message_dragmenu', 'dragmessagemenu'); + if (rcmail.env.task == 'mail') { + rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui); + rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui); + rcmail.gui_object('message_dragmenu', 'dragmessagemenu'); + } } diff --git a/skins/default/images/icons/folders.png b/skins/default/images/icons/folders.png index dcd688425..5013318f8 100644 Binary files a/skins/default/images/icons/folders.png and b/skins/default/images/icons/folders.png differ diff --git a/skins/default/images/icons/groupactions.png b/skins/default/images/icons/groupactions.png new file mode 100644 index 000000000..2e9c5f101 Binary files /dev/null and b/skins/default/images/icons/groupactions.png differ diff --git a/skins/default/images/listheader.gif b/skins/default/images/listheader.gif index e7f501537..2f5c7f862 100644 Binary files a/skins/default/images/listheader.gif and b/skins/default/images/listheader.gif differ diff --git a/skins/default/mail.css b/skins/default/mail.css index 7b233f861..a3bb4ab9b 100644 --- a/skins/default/mail.css +++ b/skins/default/mail.css @@ -686,7 +686,7 @@ body.messagelist #messagelist thead tr td.sortedASC, #messagelist thead tr td.sortedDESC { - background-position: 0 -20px; + background-position: 0 -22px; } #messagelist thead tr td.sortedASC a diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html index fe9019208..f47931502 100644 --- a/skins/default/templates/addressbook.html +++ b/skins/default/templates/addressbook.html @@ -4,27 +4,16 @@ <roundcube:object name="pagetitle" /> - + - + @@ -45,12 +34,24 @@ - -
+
- +
+ + +
+
+ + +
+
+ +
+
    +
  • +
  • +
-
diff --git a/skins/default/templates/mail.html b/skins/default/templates/mail.html index a1084b096..9ade5641f 100644 --- a/skins/default/templates/mail.html +++ b/skins/default/templates/mail.html @@ -119,6 +119,7 @@ +
    @@ -132,8 +133,6 @@ -
-
  • -- cgit v1.2.3