New features implemented:

* Configurable defaults for the calendar upcoming events lookahead and
   maximum upcoming events displayed (bug #1623)

 * Configurable setting for which days of the week are treated as weekend
   (bug #1919)

 * Configurable setting for which day starts the week (the admin can now set
   this as the default for new users and guests without messing with language
   packs) (no butracker issue)
This commit is contained in:
defacer 2004-12-16 18:49:57 +00:00
parent 54598fb04e
commit bb4a2e85c0
7 changed files with 106 additions and 14 deletions

View file

@ -3,7 +3,7 @@
<p><input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>"></p>
<div style="text-align: center;">
<table style="margin: auto; border: none; width: 90%;" class="formtable">
<table style="margin: auto;" class="formtable">
<tbody>
<tr>
<th>adminseesall:</th>
@ -15,6 +15,40 @@
</td>
<td><?php print_string('helpadminseesall', 'admin'); ?></td>
</tr>
<tr>
<th>startwday:</th>
<td>
<?php choose_from_menu($weekdays, 'startwday', empty($CFG->calendar_startwday) ? 0 : $CFG->calendar_startwday, ''); ?>
</td>
<td><?php print_string('helpstartofweek', 'admin'); ?></td>
</tr>
<tr>
<th>weekenddays:</th>
<td>
<nobr><input type="checkbox" name="weekend[]" value="1" id="weekend1" <?php if(CALENDAR_WEEKEND & 2) echo 'checked="checked"'; ?> /> <label for="weekend1"><?php print_string('monday', 'calendar'); ?></label></nobr>
<nobr><input type="checkbox" name="weekend[]" value="2" id="weekend2" <?php if(CALENDAR_WEEKEND & 4) echo 'checked="checked"'; ?> /> <label for="weekend2"><?php print_string('tuesday', 'calendar'); ?></label></nobr>
<nobr><input type="checkbox" name="weekend[]" value="3" id="weekend3" <?php if(CALENDAR_WEEKEND & 8) echo 'checked="checked"'; ?> /> <label for="weekend3"><?php print_string('wednesday', 'calendar'); ?></label></nobr>
<nobr><input type="checkbox" name="weekend[]" value="4" id="weekend4" <?php if(CALENDAR_WEEKEND & 16) echo 'checked="checked"'; ?> /> <label for="weekend4"><?php print_string('thursday', 'calendar'); ?></label></nobr>
<nobr><input type="checkbox" name="weekend[]" value="5" id="weekend5" <?php if(CALENDAR_WEEKEND & 32) echo 'checked="checked"'; ?> /> <label for="weekend5"><?php print_string('friday', 'calendar'); ?></label></nobr>
<nobr><input type="checkbox" name="weekend[]" value="6" id="weekend6" <?php if(CALENDAR_WEEKEND & 64) echo 'checked="checked"'; ?> /> <label for="weekend6"><?php print_string('saturday', 'calendar'); ?></label></nobr>
<nobr><input type="checkbox" name="weekend[]" value="0" id="weekend0" <?php if(CALENDAR_WEEKEND & 1) echo 'checked="checked"'; ?> /> <label for="weekend0"><?php print_string('sunday', 'calendar'); ?></label></nobr>
</td>
<td><?php print_string('helpweekenddays', 'admin'); ?></td>
</tr>
<tr>
<th>upcoming_lookahead:</th>
<td>
<input type="text" name="lookahead" size="3" value="<?php echo CALENDAR_UPCOMING_DAYS; ?>" />
</td>
<td><?php print_string('helpupcominglookahead', 'admin'); ?></td>
</tr>
<tr>
<th>upcoming_maxevents:</th>
<td>
<input type="text" name="maxevents" size="3" value="<?php echo CALENDAR_UPCOMING_MAXEVENTS; ?>" />
</td>
<td><?php print_string('helpupcomingmaxevents', 'admin'); ?></td>
</tr>
<tr>
<th>dstforusers:</th>
<td>

View file

@ -26,7 +26,6 @@
print_heading($strcalendarsettings);
/// If data submitted, process and store
if(confirm_sesskey() && $form = data_submitted()) {
@ -49,7 +48,42 @@
}
set_config('calendar_dstforusers', $preset);
}
if(isset($form->startwday)) {
$startwday = intval($form->startwday);
if($startwday >= 0 && $startwday <= 6) {
set_config('calendar_startwday', $startwday);
}
}
if(isset($form->weekend)) {
if(is_array($form->weekend)) {
// Creating a packed bitfield; look at /calendar/lib.php if you can't figure it out
$bitfield = 0;
foreach($form->weekend as $day) {
$bitfield |= (1 << (intval($day) % 7));
}
if($bitfield > 0) {
set_config('calendar_weekend', $bitfield);
}
}
}
if(isset($form->lookahead)) {
$lookahead = intval($form->lookahead);
if($lookahead > 0) {
set_config('calendar_lookahead', $lookahead);
}
}
if(isset($form->maxevents)) {
$maxevents = intval($form->maxevents);
if($maxevents > 0) {
set_config('calendar_maxevents', $maxevents);
}
}
}
// Include the calendar library AFTER modifying the data, so we read the latest values
require_once('../calendar/lib.php');
// Populate some variables we 're going to need in calendar.html
$presets = get_records('dst_preset');
if(!empty($presets)) {
@ -58,7 +92,17 @@
}
}
/// Main display starts here
$weekdays = array(
0 => get_string('sunday', 'calendar'),
1 => get_string('monday', 'calendar'),
2 => get_string('tuesday', 'calendar'),
3 => get_string('wednesday', 'calendar'),
4 => get_string('thursday', 'calendar'),
5 => get_string('friday', 'calendar'),
6 => get_string('saturday', 'calendar')
);
// Main display starts here
print_simple_box_start('center', '100%', $THEME->cellheading);
include('./calendar.html');

View file

@ -38,16 +38,26 @@
// //
/////////////////////////////////////////////////////////////////////////////
$firstday = get_string('firstdayofweek');
// These are read by the administration component to provide default values
define('CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD', 21);
define('CALENDAR_DEFAULT_UPCOMING_MAXEVENTS', 10);
define('CALENDAR_DEFAULT_STARTING_WEEKDAY', 1);
// This is a packed bitfield: day X is "weekend" if $field & (1 << X) is true
// Default value = 65 = 64 + 1 = 2^6 + 2^0 = Saturday & Sunday
define('CALENDAR_DEFAULT_WEEKEND', 65);
// Fetch the correct values from admin settings/lang pack
// If no such settings found, use the above defaults
$firstday = isset($CFG->calendar_startwday) ? $CFG->calendar_startwday : get_string('firstdayofweek');
if(!is_numeric($firstday)) {
define ('CALENDAR_STARTING_WEEKDAY', 1);
define ('CALENDAR_STARTING_WEEKDAY', CALENDAR_DEFAULT_STARTING_WEEKDAY);
}
else {
define ('CALENDAR_STARTING_WEEKDAY', intval($firstday) % 7);
}
define ('CALENDAR_UPCOMING_DAYS', 21);
define ('CALENDAR_UPCOMING_MAXEVENTS', 10);
define ('CALENDAR_UPCOMING_DAYS', isset($CFG->calendar_lookahead) ? intval($CFG->calendar_lookahead) : CALENDAR_DEFAULT_UPCOMING_LOOKAHEAD);
define ('CALENDAR_UPCOMING_MAXEVENTS', isset($CFG->calendar_maxevents) ? intval($CFG->calendar_maxevents) : CALENDAR_DEFAULT_UPCOMING_MAXEVENTS);
define ('CALENDAR_WEEKEND', isset($CFG->calendar_weekend) ? intval($CFG->calendar_weekend) : CALENDAR_DEFAULT_WEEKEND);
define ('CALENDAR_URL', $CFG->wwwroot.'/calendar/');
define ('CALENDAR_TF_24', '%H:%M');
define ('CALENDAR_TF_12', '%I:%M %p');
@ -165,7 +175,7 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y
// Reset vars
$cell = '';
if($dayweek % 7 == 0 || $dayweek % 7 == 6) {
if(CALENDAR_WEEKEND & (1 << ($dayweek % 7))) {
// Weekend. This is true no matter what the exact range is.
$class = 'cal_weekend';
}

View file

@ -37,7 +37,7 @@
<td nowrap="nowrap" align="right"><?php print_string('pref_timeformat', 'calendar')?>:</td>
<td>
<?php
$options = NULL;
$options = array();
$options['0'] = get_string('default', 'calendar');
$options[CALENDAR_TF_12] = get_string('timeformat_12', 'calendar');
$options[CALENDAR_TF_24] = get_string('timeformat_24', 'calendar');
@ -53,7 +53,7 @@
<td nowrap="nowrap" align="right"><?php print_string('pref_startwday', 'calendar')?>:</td>
<td>
<?php
$options = NULL;
$options = array();
$options[0] = get_string('sunday', 'calendar');
$options[1] = get_string('monday', 'calendar');
$options[2] = get_string('tuesday', 'calendar');

View file

@ -368,7 +368,7 @@ function calendar_show_month_detailed($m, $y, $courses, $groups, $users) {
$cell = '';
$dayhref = calendar_get_link_href(CALENDAR_URL.'view.php?view=day&amp;', $day, $m, $y);
if($dayweek % 7 == 0 || $dayweek % 7 == 6) {
if(CALENDAR_WEEKEND & (1 << ($dayweek % 7))) {
// Weekend. This is true no matter what the exact range is.
$class = 'cal_weekend';
}

View file

@ -24,6 +24,10 @@ $string['helpadminseesall'] = 'Do admins see all calendar events or just those t
$string['helpcalendarsettings'] = 'Configure various calendar and date/time-related aspects of Moodle';
$string['helpdstforusers'] = 'Can each user choose his own DST settings?';
$string['helpmanagedstpresets'] = 'Click this button to add, edit and delete the DST presets available for this site.';
$string['helpstartofweek'] = 'Which day starts the week in the calendar?';
$string['helpupcominglookahead'] = 'How many days in the future does the calendar look for upcoming events by default?';
$string['helpupcomingmaxevents'] = 'How many (maximum) upcoming events are shown to users by default?';
$string['helpweekenddays'] = 'Which days of the week are treated as \"weekend\" and shown with a different colour?';
$string['managedstpresets'] = 'Manage DST Presets';
$string['nodstpresetsexist'] = 'DST support is disabled for all users because there are no DST presets defined. You can define some presets using the button below.';
$string['therewereerrors'] = 'There were errors in your data';

View file

@ -695,7 +695,7 @@ A IMG {
}
table.formtable td, table.formtable th {
padding: 8px;
padding: 6px;
}
table.formtable tbody tr {