plugins/calendar
Thomas Brüderli
bruederli at kolabsys.com
Wed Oct 23 12:45:30 CEST 2013
plugins/calendar/calendar.php | 3 +--
plugins/calendar/calendar_ui.js | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 2 deletions(-)
New commits:
commit 82b2af7cbae5abd6d3083ea791637d05ad538d47
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date: Wed Oct 23 12:44:52 2013 +0200
Keep state when reloading the calendar view
diff --git a/plugins/calendar/calendar.php b/plugins/calendar/calendar.php
index 074f7bf..3d8bc20 100644
--- a/plugins/calendar/calendar.php
+++ b/plugins/calendar/calendar.php
@@ -655,9 +655,8 @@ class calendar extends rcube_plugin
$this->rc->output->command('plugin.unlock_saving');
- // TODO: keep view and date selection
if ($success && $reload)
- $this->rc->output->redirect('');
+ $this->rc->output->command('plugin.reload_view');
}
diff --git a/plugins/calendar/calendar_ui.js b/plugins/calendar/calendar_ui.js
index 86a8869..e716545 100644
--- a/plugins/calendar/calendar_ui.js
+++ b/plugins/calendar/calendar_ui.js
@@ -2182,6 +2182,28 @@ function rcube_calendar_ui(settings)
return query;
};
+ // reload the calendar view by keeping the current date/view selection
+ this.reload_view = function()
+ {
+ var query = { view: fc.fullCalendar('getView').name },
+ date = fc.fullCalendar('getDate');
+ if (date)
+ query.date = date2unixtime(date);
+ rcmail.redirect(rcmail.url('', query));
+ }
+
+ // update browser location to remember current view
+ this.update_state = function()
+ {
+ var query = { view: current_view },
+ date = fc.fullCalendar('getDate');
+ if (date)
+ query.date = date2unixtime(date);
+
+ if (window.history.replaceState)
+ window.history.replaceState({}, document.title, rcmail.url('', query).replace('&_action=', ''));
+ };
+
/*** event searching ***/
@@ -2570,6 +2592,7 @@ function rcube_calendar_ui(settings)
if (view.name != current_view)
me.view_resize();
current_view = view.name;
+ me.update_state();
}
},
viewRender: function(view) {
@@ -2709,6 +2732,12 @@ function rcube_calendar_ui(settings)
}
});
+ if (rcmail.env.date) {
+ var viewdate = new Date();
+ viewdate.setTime(fromunixtime(rcmail.env.date));
+ minical.datepicker('setDate', viewdate);
+ }
+
// init event dialog
$('#eventtabs').tabs({
show: function(event, ui) {
@@ -2878,6 +2907,7 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
rcmail.addEventListener('plugin.refresh_calendar', function(p){ cal.refresh(p); });
rcmail.addEventListener('plugin.import_success', function(p){ cal.import_success(p); });
rcmail.addEventListener('plugin.import_error', function(p){ cal.import_error(p); });
+ rcmail.addEventListener('plugin.reload_view', function(p){ cal.reload_view(p); });
rcmail.addEventListener('requestrefresh', function(q){ return cal.before_refresh(q); });
// let's go
More information about the commits
mailing list