Retain selected folder on page refresh (Bifrost#T18463)
Use window.history.replaceState on folder selection, the same way is in Roundcube core. Conflicts: plugins/kolab_files/kolab_files.js plugins/kolab_files/lib/kolab_files_engine.php
This commit is contained in:
parent
be4870dec8
commit
d865ec5cbe
6 changed files with 28 additions and 3 deletions
|
@ -732,6 +732,10 @@ function rcube_calendar_ui(settings)
|
|||
var invite = $('#edit-attendees-invite').get(0);
|
||||
var comment = $('#edit-attendees-comment');
|
||||
|
||||
// make sure any calendar is selected
|
||||
if (!calendars.val())
|
||||
calendars.val($('option:first', calendars).attr('value'));
|
||||
|
||||
invite.checked = settings.itip_notify & 1 > 0;
|
||||
notify.checked = has_attendees(event) && invite.checked;
|
||||
|
||||
|
@ -3517,6 +3521,8 @@ function rcube_calendar_ui(settings)
|
|||
rcmail.triggerEvent('selectfolder', { folder:id, prefix:'rcmlical' });
|
||||
|
||||
this.selected_calendar = id;
|
||||
|
||||
rcmail.update_state({source: id});
|
||||
};
|
||||
|
||||
// register the given calendar to the current view
|
||||
|
@ -3723,7 +3729,9 @@ function rcube_calendar_ui(settings)
|
|||
});
|
||||
|
||||
// select default calendar
|
||||
if (settings.default_calendar && this.calendars[settings.default_calendar] && this.calendars[settings.default_calendar].editable)
|
||||
if (rcmail.env.source && this.calendars[rcmail.env.source])
|
||||
this.selected_calendar = rcmail.env.source;
|
||||
else if (settings.default_calendar && this.calendars[settings.default_calendar] && this.calendars[settings.default_calendar].editable)
|
||||
this.selected_calendar = settings.default_calendar;
|
||||
|
||||
if (this.selected_calendar)
|
||||
|
|
|
@ -235,6 +235,7 @@ class calendar_ui
|
|||
);
|
||||
}
|
||||
|
||||
$this->rc->output->set_env('source', rcube_utils::get_input_value('source', rcube_utils::INPUT_GET));
|
||||
$this->rc->output->set_env('calendars', $jsenv);
|
||||
$this->rc->output->add_gui_object('calendarslist', $attrib['id']);
|
||||
|
||||
|
|
|
@ -118,6 +118,8 @@ window.rcmail && window.files_api && rcmail.addEventListener('init', function()
|
|||
rcmail.enable_command('files-get', 'files-delete', rcmail.env.file);
|
||||
}
|
||||
else {
|
||||
file_api.env.folder = rcmail.env.folder;
|
||||
file_api.env.collection = rcmail.env.collection;
|
||||
file_api.folder_list();
|
||||
file_api.browser_capabilities_check();
|
||||
rcmail.enable_command('folder-mount', rcmail.env.external_sources);
|
||||
|
@ -1227,6 +1229,8 @@ function kolab_files_ui()
|
|||
rcmail.enable_command('files-folder-delete', 'folder-rename', 'files-upload', false);
|
||||
this.env.folder = null;
|
||||
rcmail.command('files-list', {collection: folder});
|
||||
if (rcmail.task == 'files' && !rcmail.env.action)
|
||||
rcmail.update_state({collection: collection});
|
||||
}
|
||||
else {
|
||||
var found = $('#' + this.env.folders[folder].id, list).addClass('selected');
|
||||
|
@ -1235,6 +1239,8 @@ function kolab_files_ui()
|
|||
this.env.folder = folder;
|
||||
this.env.collection = null;
|
||||
rcmail.command('files-list', {folder: folder});
|
||||
if (rcmail.task == 'files' && !rcmail.env.action)
|
||||
rcmail.update_state({folder: folder});
|
||||
}
|
||||
|
||||
this.quota();
|
||||
|
|
|
@ -771,6 +771,11 @@ class kolab_files_engine
|
|||
'fileskip', 'fileskipall', 'fileoverwrite', 'fileoverwriteall'
|
||||
);
|
||||
|
||||
if ($this->rc->task == 'files') {
|
||||
$this->rc->output->set_env('folder', rcube_utils::get_input_value('folder', rcube_utils::INPUT_GET));
|
||||
$this->rc->output->set_env('collection', rcube_utils::get_input_value('collection', rcube_utils::INPUT_GET));
|
||||
}
|
||||
|
||||
$this->rc->output->add_label('uploadprogress', 'GB', 'MB', 'KB', 'B');
|
||||
$this->rc->output->set_pagetitle($this->plugin->gettext('files'));
|
||||
$this->rc->output->set_env('file_mimetypes', $this->get_mimetypes());
|
||||
|
|
|
@ -156,6 +156,9 @@ function rcube_tasklist_ui(settings)
|
|||
}
|
||||
}
|
||||
|
||||
if (rcmail.env.source && me.tasklists[rcmail.env.source])
|
||||
me.selected_list = rcmail.env.source;
|
||||
|
||||
// initialize treelist widget that controls the tasklists list
|
||||
var widget_class = window.kolab_folderlist || rcube_treelist_widget;
|
||||
tasklists_widget = new widget_class(rcmail.gui_objects.tasklistslist, {
|
||||
|
@ -176,6 +179,7 @@ function rcube_tasklist_ui(settings)
|
|||
rcmail.enable_command('list-remove', me.tasklists[node.id] && me.tasklists[node.id].removable);
|
||||
rcmail.enable_command('list-showurl', me.tasklists[node.id] && !!me.tasklists[node.id].caldavurl);
|
||||
me.selected_list = node.id;
|
||||
rcmail.update_state({source: node.id});
|
||||
});
|
||||
tasklists_widget.addEventListener('subscribe', function(p) {
|
||||
var list;
|
||||
|
@ -2936,7 +2940,7 @@ function rcube_tasklist_ui(settings)
|
|||
}
|
||||
}
|
||||
|
||||
return $.unqiqueStrings(itags);
|
||||
return $.uniqueStrings(itags);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3412,7 +3416,7 @@ jQuery.fn.sortElements = (function(){
|
|||
})();
|
||||
|
||||
// equivalent to $.unique() but working on arrays of strings
|
||||
jQuery.unqiqueStrings = (function() {
|
||||
jQuery.uniqueStrings = (function() {
|
||||
return function(arr) {
|
||||
var hash = {}, out = [];
|
||||
|
||||
|
|
|
@ -202,6 +202,7 @@ class tasklist_ui
|
|||
}
|
||||
}
|
||||
|
||||
$this->rc->output->set_env('source', rcube_utils::get_input_value('source', rcube_utils::INPUT_GET));
|
||||
$this->rc->output->set_env('tasklists', $jsenv);
|
||||
$this->register_gui_object('tasklistslist', $attrib['id']);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue