diff --git a/calendar/inc/class.calendar_ui.inc.php b/calendar/inc/class.calendar_ui.inc.php
index 80c4e51986..f07f860634 100644
--- a/calendar/inc/class.calendar_ui.inc.php
+++ b/calendar/inc/class.calendar_ui.inc.php
@@ -262,14 +262,10 @@ class calendar_ui
*/
function manage_states($set_states=NULL)
{
- $states = $states_session = $GLOBALS['egw']->session->appsession('session_data','calendar');
-
// retrieve saved states from prefs
- if(!$states)
- {
- $states = unserialize($this->bo->cal_prefs['saved_states']);
- error_log(array2string($states));
- }
+ $states = is_array($this->bo->cal_prefs['saved_states']) ?
+ $this->bo->cal_prefs['saved_states'] : unserialize($this->bo->cal_prefs['saved_states']);
+
// only look at _REQUEST, if we are in the calendar (prefs and admin show our sidebox menu too!)
if (is_null($set_states))
{
@@ -373,7 +369,10 @@ class calendar_ui
unset($owners[$k]);
$this->owner = $states['owner'] = implode(',',$owners);
}
-
+ if(is_array($this->owner))
+ {
+ $this->owner = implode(',',$this->owner);
+ }
if (substr($this->view,0,8) == 'planner_')
{
$states['sortby'] = $this->sortby = $this->view == 'planner_cat' ? 'category' : 'user';
@@ -423,7 +422,6 @@ class calendar_ui
// save the states in the session only when we are in calendar
if ($GLOBALS['egw_info']['flags']['currentapp']=='calendar')
{
- $GLOBALS['egw']->session->appsession('session_data','calendar',$states);
// save defined states into the user-prefs
if(!empty($states) && is_array($states))
{
diff --git a/calendar/js/app.js b/calendar/js/app.js
index e09ed3bec1..f0e48610a8 100644
--- a/calendar/js/app.js
+++ b/calendar/js/app.js
@@ -64,6 +64,8 @@ app.classes.calendar = AppJS.extend(
days: egw.preference('days_in_weekview','calendar')
},
+ states_to_save: ['owner','filter','cat_id','view','sortby','planner_days'],
+
/**
* Constructor
*
@@ -1651,6 +1653,14 @@ app.classes.calendar = AppJS.extend(
// Sidebox is updated, we can clear the flag
this.state_update_in_progress = false;
+ // Update saved state in preferences
+ var save = {};
+ for(var i = 0; i < this.states_to_save.length; i++)
+ {
+ save[this.states_to_save[i]] = this.state[this.states_to_save[i]];
+ }
+ egw.set_preference('calendar','saved_states', save);
+
return;
}
// old calendar state handling on server-side (incl. switching to and from listview)
diff --git a/calendar/js/et2_widget_planner.js b/calendar/js/et2_widget_planner.js
index 6ed4f3aa44..68e7b27a3a 100644
--- a/calendar/js/et2_widget_planner.js
+++ b/calendar/js/et2_widget_planner.js
@@ -284,11 +284,14 @@ var et2_calendar_planner = et2_valueWidget.extend([et2_IDetachedDOM, et2_IResize
{
this.headers.append(this._header_months(start, day_count));
}
- if(day_count >= 5)
+ if(day_count >= 5 && day_count < 120)
{
this.headers.append(this._header_weeks(start, day_count));
}
- this.headers.append(this._header_days(start, day_count));
+ if(day_count < 60)
+ {
+ this.headers.append(this._header_days(start, day_count));
+ }
if(day_count <= 7)
{
this.headers.append(this._header_hours(start, day_count));
@@ -487,11 +490,14 @@ var et2_calendar_planner = et2_valueWidget.extend([et2_IDetachedDOM, et2_IResize
this.headers.append(this._header_months(start, day_count));
}
- if(day_count >= 5)
+ if(day_count >= 5 && day_count < 120)
{
this.headers.append(this._header_weeks(start, day_count));
}
- this.headers.append(this._header_days(start, day_count));
+ if(day_count < 60)
+ {
+ this.headers.append(this._header_days(start, day_count));
+ }
if(day_count <= 7)
{
this.headers.append(this._header_hours(start, day_count));
diff --git a/calendar/templates/default/sidebox.xet b/calendar/templates/default/sidebox.xet
index 630d7c0eba..42a75a912f 100644
--- a/calendar/templates/default/sidebox.xet
+++ b/calendar/templates/default/sidebox.xet
@@ -37,7 +37,7 @@ Egroupware
-
+