Add toggle button for weekends

This commit is contained in:
Nathan Gray 2015-11-06 00:37:23 +00:00
parent f742d11d45
commit b4087292a8
6 changed files with 18 additions and 72 deletions

View File

@ -119,12 +119,6 @@ class calendar_hooks
'day4' => lang('Dayview').' & '.lang('Four days view'),
'day' => lang('Dayview'),
);
/* Select list with number of day by week */
$week_view = array(
'5' => lang('Weekview without weekend'),
'7' => lang('Weekview with weekend'),
);
$updates = array(
'no' => lang('Never'),
'add_cancel' => lang('on invitation / cancelation only'),
@ -235,16 +229,6 @@ class calendar_hooks
'admin' => False,
'default'=> '1', // 1 = week
),*/
'days_in_weekview' => array(
'type' => 'select',
'label' => 'default week view',
'name' => 'days_in_weekview',
'values' => $week_view,
'help' => 'Do you want a weekview with or without weekend?',
'xmlrpc' => True,
'admin' => False,
'default'=> '7',
),
'multiple_weeks' => array(
'type' => 'select',
'label' => 'Weeks in multiple week view',

View File

@ -127,7 +127,7 @@ class calendar_ui
/**
* @var array $states_to_save all states that will be saved to the user prefs
*/
var $states_to_save = array('owner','filter','cat_id','view','sortby','planner_days');
var $states_to_save = array('owner','filter','cat_id','view','sortby','planner_days','weekend');
/**
* Constructor
@ -420,30 +420,12 @@ class calendar_ui
// save defined states into the user-prefs
if(!empty($states) && is_array($states))
{
$saved_states = serialize(array_intersect_key($states,array_flip($this->states_to_save)));
$saved_states = array_intersect_key($states,array_flip($this->states_to_save));
if ($saved_states != $this->cal_prefs['saved_states'])
{
$GLOBALS['egw']->preferences->add('calendar','saved_states',$saved_states);
$GLOBALS['egw']->preferences->save_repository(false,'user',true);
}
// store state in request for clientside favorites to use
// remove date and other states never stored in a favorite
$states = array_diff_key($states,array('date'=>false,'year'=>false,'month'=>false,'day'=>false,'save_owner'=>false));
if (strpos($_GET['menuaction'], 'ajax_sidebox') !== false)
{
// sidebox request is from top frame, which has app.calendar NOT loaded by time response arrives
}
elseif (egw_json_request::isJSONRequest())// && strpos($_GET['menuaction'], 'calendar_uiforms') === false)
{
$response = egw_json_response::get();
//$response->apply('app.calendar.set_state', array($states, $_GET['menuaction']));
}
else
{
egw_framework::set_extra('calendar', 'state', $states);
}
}
}
}
@ -647,6 +629,7 @@ class calendar_ui
$sidebox = new etemplate_new('calendar.sidebox');
$content = $this->cal_prefs['saved_states'];
$content['view'] = $this->view ? $this->view : 'week';
$content['date'] = $this->date ? $this->date : egw_time();
$owners = $this->owner ? is_array($this->owner) ? array($this->owner) : explode(',',$this->owner) : array($GLOBALS['egw_info']['user']['account_id']);
@ -677,14 +660,9 @@ class calendar_ui
'selected' => $this->view == 'day4',
),
array(
'text' => lang('weekview with weekend'),
'value' => '{"view":"week","days":7}',
'selected' => $this->view == 'week' && $this->cal_prefs['days_in_weekview'] != 5,
),
array(
'text' => lang('weekview without weekend'),
'value' => '{"view":"week","days":5}',
'selected' => $this->view == 'week' && $this->cal_prefs['days_in_weekview'] == 5,
'text' => lang('weekview'),
'value' => '{"view":"week"}',
'selected' => $this->view == 'week',
),
array(
'text' => lang('Multiple week view'),

View File

@ -269,19 +269,6 @@ class calendar_uiviews extends calendar_ui
// List view in a separate file
$list_ui = new calendar_uilist();
$list_ui->listview();
// Set the current state
if (egw_json_request::isJSONRequest())// && strpos($_GET['menuaction'], 'calendar_uiforms') === false)
{
$states = array();
foreach(array('date','cat_id','filter','owner','view','sortby') as $state)
{
if($this->$state) $states[$state] = $this->$state;
}
$states['date'] = egw_time::to($states['date'],egw_time::ET2);
$response = egw_json_response::get();
$response->apply('app.calendar.set_state', array($states));
}
}
/**

View File

@ -60,11 +60,10 @@ app.classes.calendar = AppJS.extend(
state: {
date: new Date(),
view: egw.preference('defaultcalendar','calendar') || 'day',
owner: egw.user('account_id'),
days: egw.preference('days_in_weekview','calendar')
owner: egw.user('account_id')
},
states_to_save: ['owner','filter','cat_id','view','sortby','planner_days'],
states_to_save: ['owner','filter','cat_id','view','sortby','planner_days','weekend'],
// If you are in one of these views and select a date in the sidebox, the view
// will change as needed to show the date. Other views will only change the
@ -90,6 +89,7 @@ app.classes.calendar = AppJS.extend(
// Scroll
jQuery(jQuery.proxy(this._scroll,this));
jQuery.extend(this.state, this.egw.preference('saved_states','calendar'));
},
/**
@ -2553,7 +2553,7 @@ app.classes.calendar = AppJS.extend(
{
sidebox.parentsUntil('#calendar_sidebox_content')
.find('.egw_fw_ui_category_content').not(sidebox.parent())
.on('change.sidebox', 'select:not(.et2_selectbox),input', this, function(event) {
.on('change.sidebox', 'select:not(.et2_selectbox),input[type!="checkbox"]', this, function(event) {
var state = {};
var name = this.name.replace('[]','');
var value = $j(this).val();
@ -2860,7 +2860,7 @@ app.classes.calendar = AppJS.extend(
*/
show_weekend: function(state)
{
return state.days ? parseInt(state.days) === 7 : parseInt(egw.preference('days_in_weekview','calendar')) == 7;
return state.weekend;
},
/**
* How big or small are the displayed time chunks?
@ -2947,7 +2947,7 @@ jQuery.extend(app.classes.calendar,{
},
show_weekend: function(state) {
state.days = '1';
state.weekend = 'true';
return app.calendar.View.show_weekend.call(this,state);
},
scroll: function(delta)
@ -2971,6 +2971,7 @@ jQuery.extend(app.classes.calendar,{
return d;
},
show_weekend: function(state) {
state.weekend = 'true';
return true;
},
scroll: function(delta)
@ -3002,12 +3003,7 @@ jQuery.extend(app.classes.calendar,{
d.setUTCMinutes(59);
d.setUTCSeconds(59);
d.setUTCMilliseconds(0);
state.days = '' + (state.days >= 5 ? state.days : egw.preference('days_in_weekview','calendar') || 7);
return d;
},
show_weekend: function(state)
{
return parseInt(state.days) === 7;
}
}),
weekN: app.classes.calendar.prototype.View.extend({
@ -3060,10 +3056,6 @@ jQuery.extend(app.classes.calendar,{
var d = new Date(app.calendar.state.date);
d.setUTCMonth(d.getUTCMonth() + delta);
return d;
},
show_weekend: function(state)
{
return true;
}
}),

View File

@ -25,6 +25,9 @@
#calendar-sidebox_buttons tbody {
width: 100%;
}
#calendar-sidebox_weekend {
/* Special css styling goes here */
}
#calendar-sidebox_date td.ui-datepicker-week-col {
cursor: pointer;
}

View File

@ -23,6 +23,7 @@ Egroupware
<column/>
<column/>
<column/>
<column/>
</columns>
<rows><row width="100%">
<buttononly align="center" class="sideboxstar" id="add" onclick="egw.open(null,'calendar','add');" image="new" label="Add"/>
@ -32,6 +33,7 @@ Egroupware
<buttononly align="center" class="sideboxstar" id="month" image="month" label="Month view" onclick="app.calendar.update_state({view:'month'});"/>
<buttononly align="center" class="sideboxstar" id="planner" image="planner" label="Group planner" onclick="app.calendar.update_state({view:'planner',planner_days:0});"/>
<buttononly align="center" class="sideboxstar" id="listview" image="list" label="Listview" onclick="app.calendar.update_state({view:'listview'});"/>
<checkbox class="sideboxstar" id="weekend" label="Toggle weekend" onchange="app.calendar.update_state({weekend: widget.getValue()}); return false;"/>
</row>
</rows>
</grid>