From de98a897f618c4d251a4d3a5e3d2e4f2bb9a441b Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Thu, 07 Feb 2013 11:18:54 -0500 Subject: [PATCH] Add link to pop the address group stack; add animations when pushing/popping lists (in larry skin) --- program/js/app.js | 31 ++++++++++++++++++++++++++----- 1 files changed, 26 insertions(+), 5 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 31a96b5..f9b72cd 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -251,6 +251,7 @@ } } else if (this.env.action == 'compose') { + this.env.address_group_stack = []; this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel', 'toggle-editor', 'list-adresses', 'pushgroup', 'search', 'reset-search', 'extwin']; if (this.env.drafts_mailbox) @@ -318,13 +319,13 @@ break; case 'addressbook': + this.env.address_group_stack = []; + if (this.gui_objects.folderlist) this.env.contactfolders = $.extend($.extend({}, this.env.address_sources), this.env.contactgroups); this.enable_command('add', 'import', this.env.writable_source); - this.enable_command('list', 'listgroup', 'pushgroup', 'listsearch', 'advanced-search', true); - - this.env.address_group_stack = []; + this.enable_command('list', 'listgroup', 'pushgroup', 'popgroup', 'listsearch', 'advanced-search', true); if (this.gui_objects.contactslist) { this.contact_list = new rcube_list_widget(this.gui_objects.contactslist, @@ -1091,6 +1092,14 @@ case 'listgroup': this.reset_qsearch(); this.list_contacts(props.source, props.id); + break; + + case 'popgroup': + if (this.env.address_group_stack.length > 1) { + this.env.address_group_stack.pop(); + this.reset_qsearch(); + this.list_contacts(props.source, this.env.address_group_stack[this.env.address_group_stack.length-1]); + } break; case 'import': @@ -4198,8 +4207,20 @@ this.set_group_prop = function(prop) { - if (this.gui_objects.addresslist_title) - $(this.gui_objects.addresslist_title).html(prop.name); + if (this.gui_objects.addresslist_title) { + var boxtitle = $(this.gui_objects.addresslist_title).html(''); // clear contents + + // add link to pop back to parent group + if (this.env.address_group_stack.length > 1) { + $('<a href="#list">...</a>') + .addClass('poplink') + .appendTo(boxtitle) + .click(function(e){ return ref.command('popgroup','',this); }); + boxtitle.append(' » '); + } + + boxtitle.append($('<span>'+prop.name+'</span>')); + } this.triggerEvent('groupupdate', prop); }; -- Gitblit v1.9.1