ui = $ui;
$this->layout = $layout;
$this->t = $t;
$this->settings = $hooks->wrap($settings);
$this->self = $hooks->wrap($this);
}
public function render()
{
$values = array();
$pnames = array(
'datetime_date_format', 'datetime_time_format', 'datetime_week_starts', 'full_day_count_as',
'skip_weekdays', 'datetime_timezone',
'datetime_min_time', 'datetime_max_time', 'datetime_step',
'datetime_hide_schedule_reports', 'datetime_hide_bottom_date_navigation', 'datetime_month_slim_view', 'datetime_compact_shift_label',
'default_schedule_view', 'default_schedule_groupby', 'datetime_n_weeks',
'pref_csv_separator'
);
foreach( $pnames as $pname ){
$values[$pname] = $this->settings->get($pname);
}
$inputs = array();
$inputs[] = $this->ui->makeInputSelect(
'datetime_date_format',
'__Date Format__',
array(
'd/m/Y' => date('d/m/Y'),
'd-m-Y' => date('d-m-Y'),
'n/j/Y' => date('n/j/Y'),
'Y/m/d' => date('Y/m/d'),
'd.m.Y' => date('d.m.Y'),
'j M Y' => date('j M Y'),
'Y-m-d' => date('Y-m-d'),
),
$values['datetime_date_format']
);
$options = array( 'g:ia', 'g:i A', '12short', '12xshort', 'H:i', '24short', );
$inputOptions = array();
$testTimes = array( '202103130800', '202103131400', '202103131515' );
foreach( $options as $e ){
$view = array( );
foreach( $testTimes as $test ){
$this->t->setDateTimeDb( $test );
$view[] = $this->t->formatTime( $e );
}
$view = join( ', ', $view );
$inputOptions[ $e ] = $view;
}
$inputs[] = $this->ui->makeInputSelect(
'datetime_time_format',
'__Time Format__',
$inputOptions,
$values['datetime_time_format']
);
$inputs[] = $this->ui->makeInputSelect(
'datetime_week_starts',
'__Week Starts On__',
array(
0 => '__Sun__',
1 => '__Mon__',
2 => '__Tue__',
3 => '__Wed__',
4 => '__Thu__',
5 => '__Fri__',
6 => '__Sat__',
),
$values['datetime_week_starts']
);
$countAsOptionsValues = range( 1, 24 );
$countAsOptionsKeys = array();
foreach( $countAsOptionsValues as $v ){
$countAsOptionsKeys[] = $v * (60 * 60);
}
$countAsOptions = array_combine( $countAsOptionsKeys, $countAsOptionsValues );
$inputs[] = $this->ui->makeInputSelect(
'full_day_count_as',
'__Full Day Counts As__' . ' (' . '__Hours__' . ')',
$countAsOptions,
$values['full_day_count_as']
);
$inputs = $this->ui->makeGrid( $inputs );
$moreInputs = array();
// min/max time
$moreInputs2 = array();
$moreInputs2[] = $this->ui->makeInputTime(
'datetime_min_time',
'__Min Start Time__',
$values['datetime_min_time'],
'nolimit'
);
$moreInputs2[] = $this->ui->makeInputTime(
'datetime_max_time',
'__Max End Time__',
$values['datetime_max_time'],
'nolimit'
);
$stepOptions = array( 5*60 => 5, 10*60 => 10, 15*60 => 15, 20*60 => 20, 30*60 => 30, 60*60 => 60 );
$moreInputs2[] = $this->ui->makeInputSelect(
'datetime_step',
'__Time Increment__' . ' (' . '__Minutes__' . ')',
$stepOptions,
$values['datetime_step']
);
$moreInputs2 = $this->ui->makeGrid( $moreInputs2 );
$moreInputs[] = $moreInputs2;
// timezone
$timezoneOptions = $this->t->getTimezones();
$defaultLabel = $this->t->getDefaultTimezone();
$defaultLabel = ' - ' . '__Default Timezone__' . ' - ' . ' [' . $defaultLabel . ']';
$timezoneOptions = array_merge( array('' => $defaultLabel), $timezoneOptions );
$moreInputs[] = $this->ui->makeInputSelect(
'datetime_timezone',
'__Timezone__',
$timezoneOptions,
$values['datetime_timezone']
);
$this->t->setNow();
$currentTimeView = $this->t->formatDateWithWeekday() . ' ' . $this->t->formatTime();
$currentTimeView = '
' . $currentTimeView . '
';
$moreInputs[] = $currentTimeView;
// disabled weekdays
$disabledWeekdays = array();
$weekdays = $this->t->getWeekdays();
$currentDisabled = $this->settings->get( 'skip_weekdays', TRUE );
foreach( $weekdays as $wkd => $wkdName ){
$isChecked = in_array( $wkd, $currentDisabled ) ? TRUE : FALSE;
$disabledWeekdays[] = $this->ui->makeInputCheckbox( 'skip_weekdays[]', $wkdName, $wkd, $isChecked );
}
$disabledWeekdays = $this->ui->makeListInline( $disabledWeekdays );
$disabledWeekdays = $this->ui->makeLabelled( '__Days Of Week Disabled__', $disabledWeekdays );
$moreInputs[] = $disabledWeekdays;
// hide schedule reports
$hideScheduleReports = $this->ui->makeInputCheckbox( 'datetime_hide_schedule_reports', '__Hide Hours Reports In Schedule View__', 1, $values['datetime_hide_schedule_reports'] );
$moreInputs[] = $hideScheduleReports;
// hide bottom date navigation
$hideBottomDateNavigation = $this->ui->makeInputCheckbox( 'datetime_hide_bottom_date_navigation', '__Hide Bottom Date Navigation In Schedule View__', 1, $values['datetime_hide_bottom_date_navigation'] );
$moreInputs[] = $hideBottomDateNavigation;
// month slim view
$moreInputs[] = $this->ui->makeInputCheckbox( 'datetime_month_slim_view', '__Slim Month Schedule Grouped View__', 1, $values['datetime_month_slim_view'] );
$thisOptions = array( 'abbr' => '__Abbreviation__', 'none' => '__Space__' );
$moreInputs[] = $this->ui->makeInputSelect( 'datetime_compact_shift_label', '__Shift Label In Compact View__', $thisOptions, $values['datetime_compact_shift_label'] );
// default schedule view
$moreInputs3 = array();
// $defaultView = $this->ui->makeInputCheckbox( 'datetime_hide_schedule_reports', '__Hide Hours Reports In Schedule View__', 1, $values['datetime_hide_schedule_reports'] );
$defaultViewOptions = array( 'day' => '__Day__', 'week' => '__Week__', 'month' => '__Month__', '4weeks' => '__4 Weeks__', 'list' => '__List__' );
$defaultView = $this->ui->makeInputSelect(
'default_schedule_view',
'__Default Schedule View__',
$defaultViewOptions,
$values['default_schedule_view']
);
$moreInputs3[] = $defaultView;
$defaultGroupbyOptions = array( 'employee' => '__Employee__', 'calendar' => '__Calendar__', 'none' => '__None__' );
$defaultGroupby = $this->ui->makeInputSelect(
'default_schedule_groupby',
'__Default Schedule Group By__',
$defaultGroupbyOptions,
$values['default_schedule_groupby']
);
$moreInputs3[] = $defaultGroupby;
$nWeeksOptions = array( 3 => 3, 4 => 4, 5 => 5, 6 => 6 );
$nWeeks = $this->ui->makeInputSelect(
'datetime_n_weeks',
'__Multiple Weeks View__',
$nWeeksOptions,
$values['datetime_n_weeks']
);
$moreInputs3[] = $nWeeks;
$moreInputs3 = $this->ui->makeGrid( $moreInputs3 );
$moreInputs[] = $moreInputs3;
$moreInputs[] = $this->ui->makeInputSelect(
'pref_csv_separator',
'__CSV Delimiter__',
array(
',' => ',',
';' => ';',
),
$values['pref_csv_separator']
);
$moreInputs = $this->ui->makeList( $moreInputs );
$inputs = $this->ui->makeList( array($inputs, $moreInputs) );
$out = $this->ui->makeForm(
'admin/conf/datetime',
$this->ui->makeList(
array( $inputs, $this->ui->makeInputSubmit( '__Save__')->tag('primary') )
)
);
$this->layout
->setContent( $out )
->setBreadcrumb( $this->self->breadcrumb() )
->setHeader( $this->self->header() )
// ->setMenu( $this->self->menu() )
;
$out = $this->layout->render();
return $out;
}
public function header()
{
$out = '__Date and Time__';
return $out;
}
public function breadcrumb()
{
$return = array();
$return['admin'] = array( 'admin', '__Administration__' );
return $return;
}
}