$this->_elements[] =& MoodleQuickForm::createElement('select', 'year', get_string('year', 'form'), $years, $this->getAttributes(), true);
// If optional we add a checkbox which the user can use to turn if on
if($this->_options['optional']) {
- $this->_elements[] =& MoodleQuickForm::createElement('checkbox', 'on', null, get_string('enable'), $this->getAttributes(), true);
+ $this->_elements[] =& MoodleQuickForm::createElement('checkbox', 'off', null, get_string('disable'), $this->getAttributes(), true);
}
- $this->setValue();
}
// }}}
// {{{ onQuickFormEvent()
+ /**
+ * Called by HTML_QuickForm whenever form event is made on this element
+ *
+ * @param string $event Name of event
+ * @param mixed $arg event arguments
+ * @param object $caller calling object
+ * @since 1.0
+ * @access public
+ * @return void
+ */
function onQuickFormEvent($event, $arg, &$caller)
{
- if ('updateValue' == $event) {
- return HTML_QuickForm_element::onQuickFormEvent($event, $arg, $caller);
- } else {
- return parent::onQuickFormEvent($event, $arg, $caller);
- }
- }
- // {{{ setValue()
-
- function setValue($value=0)
- {
- $requestvalue=$value;
- if (!($value)) {
- $value = time();
- }
- if (!is_array($value)) {
- $currentdate = usergetdate($value);
- $value = array(
- 'day' => $currentdate['mday'],
- 'month' => $currentdate['mon'],
- 'year' => $currentdate['year']);
- // If optional, default to off, unless a date was provided
- if($this->_options['optional']) {
- $value['on'] = $requestvalue ? true : false;
- }
+ switch ($event) {
+ case 'updateValue':
+ // constant values override both default and submitted ones
+ // default values are overriden by submitted
+ $value = $this->_findValue($caller->_constantValues);
+ if (null === $value) {
+ // if no boxes were checked, then there is no value in the array
+ // yet we don't want to display default value in this case
+ if ($caller->isSubmitted()) {
+ $value = $this->_findValue($caller->_submitValues);
+ } else {
+ $value = $this->_findValue($caller->_defaultValues);
+ }
+ }
+ $requestvalue=$value;
+ if ($value == 0) {
+ $value = time();
+ }
+ if (!is_array($value)) {
+ $currentdate = usergetdate($value);
+ $value = array(
+ 'day' => $currentdate['mday'],
+ 'month' => $currentdate['mon'],
+ 'year' => $currentdate['year']);
+ // If optional, default to off, unless a date was provided
+ if($this->_options['optional']) {
+ $value['off'] = ($requestvalue == 0) ? true : false;
+ }
+ } else {
+ $value['off'] = (isset($value['off'])) ? true : false;
+ }
+ if (null !== $value){
+ $this->setValue($value);
+ }
+ break;
+ case 'createElement':
+ if($arg[2]['optional']) {
+ $caller->disabledIf($arg[0], $arg[0].'[off]', 'checked');
+ }
+ return parent::onQuickFormEvent($event, $arg, $caller);
+ break;
+ default:
+ return parent::onQuickFormEvent($event, $arg, $caller);
}
- parent::setValue($value);
- }
+ } // end func onQuickFormEvent
- // }}}
// {{{ toHtml()
function toHtml()
}
if (count($valuearray)){
if($this->_options['optional']) {
- // If checkbox is not on, the value is zero, so go no further
- if(empty($valuearray['on'])) {
+ // If checkbox is on, the value is zero, so go no further
+ if(!empty($valuearray['off'])) {
$value[$this->getName()]=0;
return $value;
}
}
+
$value[$this->getName()]=make_timestamp($valuearray['year'],
$valuearray['month'],
$valuearray['day'],
*/
var $_wrap = array('', '');
- //var $_seperator=array('', '', 'Time ', '');
-
/**
* Class constructor
*
$this->_elements[] =& MoodleQuickForm::createElement('select', 'minute', get_string('minute', 'form'), $minutes, $this->getAttributes(), true);
// If optional we add a checkbox which the user can use to turn if on
if($this->_options['optional']) {
- $this->_elements[] =& MoodleQuickForm::createElement('checkbox', 'on', null, get_string('enable'), $this->getAttributes(), true);
+ $this->_elements[] =& MoodleQuickForm::createElement('checkbox', 'off', null, get_string('disable'), $this->getAttributes(), true);
}
- $this->setValue();
}
// }}}
// {{{ onQuickFormEvent()
+ /**
+ * Called by HTML_QuickForm whenever form event is made on this element
+ *
+ * @param string $event Name of event
+ * @param mixed $arg event arguments
+ * @param object $caller calling object
+ * @since 1.0
+ * @access public
+ * @return void
+ */
function onQuickFormEvent($event, $arg, &$caller)
{
- if ('updateValue' == $event) {
- return HTML_QuickForm_element::onQuickFormEvent($event, $arg, $caller);
- } else {
- return parent::onQuickFormEvent($event, $arg, $caller);
- }
- }
-
- // {{{ setValue()
-
- function setValue($value=0)
- {
- $requestvalue=$value;
- if (!($value)) {
- $value = time();
- }
- if (!is_array($value)) {
- $currentdate = usergetdate($value);
- $value = array(
- 'minute' => $currentdate['minutes'],
- 'hour' => $currentdate['hours'],
- 'day' => $currentdate['mday'],
- 'month' => $currentdate['mon'],
- 'year' => $currentdate['year']);
- if($this->_options['optional']) {
- $value['on'] = $requestvalue ? true : false;
- }
+ switch ($event) {
+ case 'updateValue':
+ // constant values override both default and submitted ones
+ // default values are overriden by submitted
+ $value = $this->_findValue($caller->_constantValues);
+ if (null === $value) {
+ // if no boxes were checked, then there is no value in the array
+ // yet we don't want to display default value in this case
+ if ($caller->isSubmitted()) {
+ $value = $this->_findValue($caller->_submitValues);
+ } else {
+ $value = $this->_findValue($caller->_defaultValues);
+ }
+ }
+ $requestvalue=$value;
+ if ($value == 0) {
+ $value = time();
+ }
+ if (!is_array($value)) {
+ $currentdate = usergetdate($value);
+ $value = array(
+ 'minute' => $currentdate['minutes'],
+ 'hour' => $currentdate['hours'],
+ 'day' => $currentdate['mday'],
+ 'month' => $currentdate['mon'],
+ 'year' => $currentdate['year']);
+ // If optional, default to off, unless a date was provided
+ if($this->_options['optional']) {
+ $value['off'] = ($requestvalue == 0) ? true : false;
+ }
+ } else {
+ $value['off'] = (isset($value['off'])) ? true : false;
+ }
+ if (null !== $value){
+ $this->setValue($value);
+ }
+ break;
+ case 'createElement':
+ if($this->_options['optional']) {
+ $caller->disabledIf($arg[0], $arg[0].'[off]', 'checked');
+ }
+ return parent::onQuickFormEvent($event, $arg, $caller);
+ break;
+ default:
+ return parent::onQuickFormEvent($event, $arg, $caller);
}
- parent::setValue($value);
}
// }}}
$valuearray = array();
foreach ($this->_elements as $element){
$thisexport = $element->exportValue($submitValues[$this->getName()], true);
- if ($thisexport!==null){
+ if ($thisexport!=null){
$valuearray += $thisexport;
}
}
if (count($valuearray)){
if($this->_options['optional']) {
- // If checkbox is not on, the value is zero, so go no further
- if(empty($valuearray['on'])) {
+ // If checkbox is on, the value is zero, so go no further
+ if(!empty($valuearray['off'])) {
$value[$this->getName()]=0;
return $value;
}
foreach ($this->_dependencies as $dependentOn => $elements){
$js .= "'$dependentOn'".' : {dependents :[';
foreach ($elements as $element){
- $js.="'".$element['dependent']."', ";
+ $elementNames = $this->_getElNamesRecursive($element['dependent']);
+ foreach ($elementNames as $dependent){
+ if ($dependent != $dependentOn) {
+ $js.="'".$dependent."', ";
+ }
+ }
}
$js=rtrim($js, ', ');
$js .= "],\n";
* @param mixed $value used in conjunction with condition.
*/
function disabledIf($elementName, $dependentOn, $condition = 'notchecked', $value=null){
- $dependents = $this->_getElNamesRecursive($elementName);
- foreach ($dependents as $dependent){
- if ($dependent != $dependentOn) {
- $this->_dependencies[$dependentOn][] = array('dependent'=>$dependent,
+ $this->_dependencies[$dependentOn][] = array('dependent'=>$elementName,
'condition'=>$condition, 'value'=>$value);
- }
- }
}
function _registerNoSubmitButton($addfieldsname){
$this->_noSubmitButtons[]=$addfieldsname;
$mform->addRule('intro', get_string('required'), 'required', null, 'client');
$mform->addElement('date_selector', 'timeavailablefrom', get_string('availablefromdate', 'data'), array('optional'=>true));
- $mform->disabledIf('timeavailablefrom', 'timeavailablefrom[on]');
$mform->addElement('date_selector', 'timeavailableto', get_string('availabletodate', 'data'), array('optional'=>true));
- $mform->disabledIf('timeavailableto', 'timeavailableto[on]');
$mform->addElement('date_selector', 'timeviewfrom', get_string('viewfromdate', 'data'), array('optional'=>true));
- $mform->disabledIf('timeviewfrom', 'timeviewfrom[on]');
$mform->addElement('date_selector', 'timeviewto', get_string('viewtodate', 'data'), array('optional'=>true));
- $mform->disabledIf('timeviewto', 'timeviewto[on]');
$countoptions= array(0=>get_string('none'))+
}
-
}
?>
\ No newline at end of file
if ($forum->type == 'news' && !$fromform->parent) {
$updatediscussion = new object;
$updatediscussion->id = $fromform->discussion;
- if (empty($fromform->timestartdisabled)) {
- $updatediscussion->timestart = $fromform->timestart;
- } else {
- $updatediscussion->timestart = 0;
- }
- if (empty($fromform->timeenddisabled)) {
- $updatediscussion->timeend = $fromform->timeend;
- } else {
- $updatediscussion->timeend = 0;
- }
-
+ $updatediscussion->timestart = $fromform->timestart;
+ $updatediscussion->timeend = $fromform->timeend;
if (!update_record('forum_discussions', $updatediscussion)) {
error(get_string("couldnotupdate", "forum"), $errordestination);
}
if ($forum->type == 'news' && !$fromform->parent) {
$newstopic = true;
}
- if ($newstopic && empty($fromform->timestartdisabled)) {
- $discussion->timestart = $fromform->timestart;
- } else {
- $discussion->timestart = 0;
- }
- if ($newstopic && empty($fromform->timeenddisabled)) {
- $discussion->timeend = $fromform->timeend;
- } else {
- $discussion->timeend = 0;
- }
+ $discussion->timestart = $fromform->timestart;
+ $discussion->timeend = $fromform->timeend;
$message = '';
if ($discussion->id = forum_add_discussion($discussion, $message)) {
'userid'=>$post->userid,
'parent'=>$post->parent,
'discussion'=>$post->discussion,
+ 'timestart'=>$discussion->timestart,
+ 'timeend'=>$discussion->timeend,
'course'=>$course->id)+
$page_params+
'groupid'=>$post->groupid):
array())+
- (isset($discussion->timestart)?
- array('timestart'=>$discussion->timestart):
- array('timestart'=>0))+
-
- (isset($discussion->timeend)?
- array('timeend'=>$discussion->timeend):
- array('timeend'=>0))+
-
- (isset($discussion->timestartdisabled)?
- array('timestartdisabled'=>$discussion->timestartdisabled):
- array('timestartdisabled'=>1))+
-
- (isset($discussion->timeenddisabled)?
- array('timeenddisabled'=>$discussion->timeenddisabled):
- array('timeenddisabled'=>1))+
-
(isset($discussion->id)?
array('discussion'=>$discussion->id):
array()));
$mform->addElement('checkbox', 'mailnow', get_string('mailnow', 'forum'));
}
- if (!isset($discussion->timestart)) {
- $discussion->timestart = 0;
- }
- if (!isset($discussion->timeend)) {
- $discussion->timeend = 0;
- }
if (!empty($CFG->forum_enabletimedposts) && !$post->parent) {
$mform->addElement('header', '', get_string('displayperiod', 'forum'));
- $timestartgroup = array();
- $timestartgroup[] = &MoodleQuickForm::createElement('date_selector', 'timestart', get_string('timestartday', 'forum'));
- $timestartgroup[] = &MoodleQuickForm::createElement('checkbox', 'timestartdisabled', '', get_string('disable'));
- $mform->addGroup($timestartgroup, 'timestartgroup', get_string('displaystart', 'forum'), ' ', false);
- $mform->setHelpButton('timestartgroup', array('displayperiod', get_string('displayperiod', 'forum'), 'forum'));
+ $mform->addElement('date_selector', 'timestart', get_string('displaystart', 'forum'), array('optional'=>true));
+ $mform->setHelpButton('timestart', array('displayperiod', get_string('displayperiod', 'forum'), 'forum'));
- $timeendgroup = array();
- $timeendgroup[] = &MoodleQuickForm::createElement('date_selector', 'timeend', get_string('timeendday', 'forum'));
- $timeendgroup[] = &MoodleQuickForm::createElement('checkbox', 'timeenddisabled', '', get_string('disable'));
- $mform->addGroup($timeendgroup, 'timeendgroup', get_string('displayend', 'forum'), ' ', false);
- $mform->setHelpButton('timeendgroup', array('displayperiod', get_string('displayperiod', 'forum'), 'forum'));
+ $mform->addElement('date_selector', 'timeend', get_string('displayend', 'forum'), array('optional'=>true));
+ $mform->setHelpButton('timeend', array('displayperiod', get_string('displayperiod', 'forum'), 'forum'));
} else {
- $mform->addElement('hidden', 'timestartdisabled', '1');
- $mform->setType('timestartdisabled', PARAM_INT);
- $mform->addElement('hidden', 'timeenddisabled', '1');
- $mform->setType('timeenddisabled', PARAM_INT);
-
+ $mform->addElement('hidden', 'timestart');
+ $mform->setType('timestart', PARAM_INT);
+ $mform->addElement('hidden', 'timeend');
+ $mform->setType('timeend', PARAM_INT);
+ $mfrom->setConstants(array('timestart'=> 0, 'timeend'=>0));
}
if (isset($post->edit)) {
$submit_string = get_string('savechanges');
function validation($data) {
$error = array();
- if (empty($data['timeenddisabled']) && empty($data['timestartdisabled'])
+ if (($data['timeend']!=0) && ($data['timestart']!=0)
&& $data['timeend'] <= $data['timestart']) {
- $error['timeendgroup'] = get_string('timestartenderror', 'forum');
+ $error['timeend'] = get_string('timestartenderror', 'forum');
}
return (count($error)==0) ? true : $error;
}