diff options
author | alecpl <alec@alec.pl> | 2012-03-08 10:00:42 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2012-03-08 10:00:42 +0000 |
commit | e97f0109eae8286c54ad6bc191b7231bce8a635c (patch) | |
tree | 2032da4bdc4de6df083f444c895afe7fb86bec42 /skins | |
parent | c388257078b732bb474afa475e986ec66b01165d (diff) |
- Scroll long lists on drag&drop (#1485946)
Diffstat (limited to 'skins')
-rw-r--r-- | skins/default/functions.js | 57 | ||||
-rw-r--r-- | skins/default/templates/addressbook.html | 4 | ||||
-rw-r--r-- | skins/default/templates/folders.html | 6 | ||||
-rw-r--r-- | skins/default/templates/mail.html | 4 |
4 files changed, 59 insertions, 12 deletions
diff --git a/skins/default/functions.js b/skins/default/functions.js index 539f6ff06..aab386b5e 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -558,6 +558,44 @@ prev_sibling: function(elm) }; +/** + * Scroller + */ + +function rcmail_scroller(list, top, bottom) +{ + var ref = this; + + this.list = $(list); + this.top = $(top); + this.bottom = $(bottom); + this.step_size = 6; + this.step_time = 20; + this.delay = 500; + + this.top + .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('down'); }, ref.delay); }) + .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); }); + + this.bottom + .mouseenter(function() { ref.ts = window.setTimeout(function() { ref.scroll('up'); }, ref.delay); }) + .mouseout(function() { if (ref.ts) window.clearTimeout(ref.ts); }); + + this.scroll = function(dir) + { + var ref = this, size = this.step_size; + + if (!rcmail.drag_active) + return; + + if (dir == 'down') + size *= -1; + + this.list.get(0).scrollTop += size; + this.ts = window.setTimeout(function() { ref.scroll(dir); }, this.step_time); + }; +}; + // Events handling in iframes (eg. preview pane) function iframe_events() @@ -565,7 +603,7 @@ function iframe_events() // this==iframe var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null; rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' }); -} +}; // Abbreviate mailbox names to fit width of the container function rcube_render_mailboxlist() @@ -592,7 +630,7 @@ function rcube_render_mailboxlist() elem.attr('title', text); elem.contents().filter(function(){ return (this.nodeType == 3); }).get(0).data = abbrev; }); -} +}; // inspired by https://gist.github.com/24261/7fdb113f1e26111bd78c0c6fe515f6c0bf418af5 function fit_string_to_size(str, elem, len) @@ -636,12 +674,12 @@ function fit_string_to_size(str, elem, len) } return result; -} +}; function update_quota(data) { percent_indicator(rcmail.gui_objects.quotadisplay, data); -} +}; // percent (quota) indicator function percent_indicator(obj, data) @@ -705,7 +743,7 @@ function percent_indicator(obj, data) $(obj).html('').append(bar1).append(bar2).append(main); // update #quotaimg title $('#quotaimg').attr('title', data.title); -} +}; // Optional parameters used by TinyMCE var rcmail_editor_settings = { @@ -740,6 +778,8 @@ function rcube_init_mail_ui() rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist); rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist); rcmail.addEventListener('aftercollapse-folder', rcube_render_mailboxlist); + + new rcmail_scroller('#mailboxlist-content', '#mailboxlist-title', '#mailboxlist-footer'); } if (rcmail.env.action == 'compose') @@ -747,5 +787,12 @@ function rcube_init_mail_ui() } else if (rcmail.env.task == 'addressbook') { rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); }); + + if (rcmail.gui_objects.folderlist) + new rcmail_scroller('#directorylist-content', '#directorylist-title', '#directorylist-footer'); + } + else if (rcmail.env.task == 'settings') { + if (rcmail.gui_objects.subscriptionlist) + new rcmail_scroller('#folderlist-content', '#folderlist-title', '#folderlist-footer'); } } diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html index 0174f4b4a..4cab511f7 100644 --- a/skins/default/templates/addressbook.html +++ b/skins/default/templates/addressbook.html @@ -52,11 +52,11 @@ <div id="directorylistbox"> <div id="directorylist-title" class="boxtitle"><roundcube:label name="groups" /></div> -<div class="boxlistcontent"> +<div id="directorylist-content" class="boxlistcontent"> <roundcube:object name="directorylist" id="directorylist" /> <roundcube:object name="groupslist" id="contactgroupslist" /> </div> -<div class="boxfooter"> +<div id="directorylist-footer" class="boxfooter"> <roundcube:button command="group-create" type="link" title="newcontactgroup" class="buttonPas addgroup" classAct="button addgroup" content=" " /> <roundcube:button name="groupmenulink" id="groupmenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('groupmenu');return false" content=" " /> </div> diff --git a/skins/default/templates/folders.html b/skins/default/templates/folders.html index 8f3aa818b..1ae8809ec 100644 --- a/skins/default/templates/folders.html +++ b/skins/default/templates/folders.html @@ -21,12 +21,12 @@ <div id="mainscreen"> <div id="folder-manager"> -<div id="folder-title" class="boxtitle"><span class="rightalign"><roundcube:label name="subscribed" /></span><roundcube:label name="folders" /></div> -<div class="boxlistcontent"> +<div id="folderlist-title" class="boxtitle"><span class="rightalign"><roundcube:label name="subscribed" /></span><roundcube:label name="folders" /></div> +<div id="folderlist-content" class="boxlistcontent"> <roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" noheader="true" cellpadding="1" cellspacing="0" summary="Folder subscription table" class="records-table" /> </div> -<div class="boxfooter"> +<div id="folderlist-footer" class="boxfooter"> <roundcube:button command="create-folder" type="link" title="createfolder" class="buttonPas addgroup" classAct="button addgroup" content=" " /> <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " /> diff --git a/skins/default/templates/mail.html b/skins/default/templates/mail.html index 12581d7de..74e984719 100644 --- a/skins/default/templates/mail.html +++ b/skins/default/templates/mail.html @@ -27,10 +27,10 @@ <div id="mailleftcontainer"> <div id="mailboxlist-container"> <div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div> -<div class="boxlistcontent"> +<div id="mailboxlist-content" class="boxlistcontent"> <roundcube:object name="mailboxlist" id="mailboxlist" folder_filter="mail" /> </div> -<div class="boxfooter"> +<div id="mailboxlist-footer" class="boxfooter"> <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " /> <roundcube:if condition="env:quota" /> |