forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is a first cut of a new formslib.php a library of classes for cr…
…eating and securely processing forms in Moodle, based on PEAR QuickForms. Only uses XHTML and CSS and no table tags. This is NOT YET PART OF THE MOODLE API it is here for experimental purposes.
- Loading branch information
jamiesensei
committed
Sep 24, 2006
1 parent
e836a7d
commit da6f876
Showing
68 changed files
with
12,066 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
<?php | ||
$string['denotesreq']='$a denotes required field.'; | ||
$string['requiredelement']='Required field.'; | ||
$string['nonexistentformelements']='Trying to add help buttons to nonexistent form elements : $a'; | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?php | ||
require_once('HTML/QuickForm/checkbox.php'); | ||
|
||
/** | ||
* HTML class for a checkbox type element | ||
* | ||
* @author Jamie Pratt | ||
* @access public | ||
*/ | ||
class moodleform_checkbox extends HTML_QuickForm_checkbox{ | ||
/** | ||
* html for help button, if empty then no help | ||
* | ||
* @var string | ||
*/ | ||
var $_helpbutton=''; | ||
/** | ||
* set html for help button | ||
* | ||
* @access public | ||
* @param array $help array of arguments to make a help button | ||
*/ | ||
function setHelpButton($helpbuttonargs){ | ||
if (!is_array($helpbuttonargs)){ | ||
$helpbuttonargs=array($helpbuttonargs); | ||
}else{ | ||
$helpbuttonargs=$helpbuttonargs; | ||
} | ||
//we do this to to return html instead of printing it | ||
//without having to specify it in every call to make a button. | ||
$defaultargs=array('', '', 'moodle', true, false, '', true); | ||
$helpbuttonargs=$helpbuttonargs + $defaultargs ; | ||
$this->_helpbutton=call_user_func_array('helpbutton', $helpbuttonargs); | ||
} | ||
/** | ||
* get html for help button | ||
* | ||
* @access public | ||
* @return string html for help button | ||
*/ | ||
function getHelpButton(){ | ||
return $this->_helpbutton; | ||
} | ||
} | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
<?php | ||
global $CFG; | ||
require_once "$CFG->libdir/form/group.php"; | ||
require_once "$CFG->libdir/formslib.php"; | ||
|
||
/** | ||
* Class for a group of elements used to input a date. | ||
* | ||
* Emulates moodle print_date_selector function | ||
* | ||
* @author Jamie Pratt <[email protected]> | ||
* @access public | ||
*/ | ||
class moodleform_date_selector extends moodleform_group | ||
{ | ||
/** | ||
* Control the fieldnames for form elements | ||
* | ||
* day => string day fieldname | ||
* month => string month fieldname | ||
* year => string year fieldname | ||
* timezone => float/string timezone | ||
* applydst => apply users daylight savings adjustment? | ||
*/ | ||
var $_options = array('startyear'=>1970, 'stopyear'=>2020, | ||
'timezone'=>99, 'applydst'=>true); | ||
|
||
/** | ||
* These complement separators, they are appended to the resultant HTML | ||
* @access private | ||
* @var array | ||
*/ | ||
var $_wrap = array('', ''); | ||
|
||
/** | ||
* Class constructor | ||
* | ||
* @access public | ||
* @param string Element's name | ||
* @param mixed Label(s) for an element | ||
* @param array Options to control the element's display | ||
* @param mixed Either a typical HTML attribute string or an associative array | ||
*/ | ||
function moodleform_date_selector($elementName = null, $elementLabel = null, $options = array(), $attributes = null) | ||
{ | ||
$this->HTML_QuickForm_element($elementName, $elementLabel, $attributes); | ||
$this->_persistantFreeze = true; | ||
$this->_appendName = true; | ||
$this->_type = 'date_selector'; | ||
// set the options, do not bother setting bogus ones | ||
if (is_array($options)) { | ||
foreach ($options as $name => $value) { | ||
if (isset($this->_options[$name])) { | ||
if (is_array($value) && is_array($this->_options[$name])) { | ||
$this->_options[$name] = @array_merge($this->_options[$name], $value); | ||
} else { | ||
$this->_options[$name] = $value; | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
// }}} | ||
// {{{ _createElements() | ||
|
||
function _createElements() | ||
{ | ||
$this->_elements = array(); | ||
for ($i=1; $i<=31; $i++) { | ||
$days[$i] = $i; | ||
} | ||
for ($i=1; $i<=12; $i++) { | ||
$months[$i] = userdate(gmmktime(12,0,0,$i,1,2000), "%B"); | ||
} | ||
for ($i=$this->_options['startyear']; $i<=$this->_options['stopyear']; $i++) { | ||
$years[$i] = $i; | ||
} | ||
$this->_elements[] =& moodleform::createElement('select', 'day', null, $days, $this->getAttributes(), true); | ||
$this->_elements[] =& moodleform::createElement('select','month', null, $months, $this->getAttributes(), true); | ||
$this->_elements[] =& moodleform::createElement('select','year', null, $years, $this->getAttributes(), true); | ||
|
||
} | ||
|
||
// }}} | ||
// {{{ setValue() | ||
|
||
function setValue($value) | ||
{ | ||
if (!($value)) { | ||
$value = time(); | ||
} | ||
if (!is_array($value)) { | ||
$currentdate = usergetdate($value); | ||
$value = array( | ||
'day' => $currentdate['mday'], | ||
'month' => $currentdate['mon'], | ||
'year' => $currentdate['year']); | ||
|
||
} | ||
parent::setValue($value); | ||
} | ||
|
||
// }}} | ||
// {{{ toHtml() | ||
|
||
function toHtml() | ||
{ | ||
include_once('HTML/QuickForm/Renderer/Default.php'); | ||
$renderer =& new HTML_QuickForm_Renderer_Default(); | ||
$renderer->setElementTemplate('{element}'); | ||
parent::accept($renderer); | ||
return $this->_wrap[0] . $renderer->toHtml() . $this->_wrap[1]; | ||
} | ||
|
||
// }}} | ||
// {{{ accept() | ||
|
||
function accept(&$renderer, $required = false, $error = null) | ||
{ | ||
$renderer->renderElement($this, $required, $error); | ||
} | ||
|
||
// }}} | ||
// {{{ onQuickFormEvent() | ||
|
||
function onQuickFormEvent($event, $arg, &$caller) | ||
{ | ||
if ('updateValue' == $event) { | ||
return HTML_QuickForm_element::onQuickFormEvent($event, $arg, $caller); | ||
} else { | ||
return parent::onQuickFormEvent($event, $arg, $caller); | ||
} | ||
} | ||
/** | ||
* Output a timestamp. Give it the name of the group. | ||
* | ||
* @param array $submitValues | ||
* @param bool $assoc | ||
* @return array | ||
*/ | ||
function exportValue(&$submitValues, $assoc = false) | ||
{ | ||
$value = null; | ||
$valuearray = $this->_elements[0]->exportValue($submitValues[$this->getName()], true); | ||
$valuearray +=$this->_elements[1]->exportValue($submitValues[$this->getName()], true); | ||
$valuearray +=$this->_elements[2]->exportValue($submitValues[$this->getName()], true); | ||
$value[$this->getName()]=make_timestamp($valuearray['year'], | ||
$valuearray['month'], | ||
$valuearray['day'], | ||
0,0,0, | ||
$this->_options['timezone'], | ||
$this->_options['applydst']); | ||
return $value; | ||
} | ||
|
||
// }}} | ||
} | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?php | ||
require_once('HTML/QuickForm/file.php'); | ||
|
||
/** | ||
* HTML class for a form element to upload a file | ||
* | ||
* @author Jamie Pratt | ||
* @access public | ||
*/ | ||
class moodleform_file extends HTML_QuickForm_file{ | ||
/** | ||
* html for help button, if empty then no help | ||
* | ||
* @var string | ||
*/ | ||
var $_helpbutton=''; | ||
/** | ||
* set html for help button | ||
* | ||
* @access public | ||
* @param array $help array of arguments to make a help button | ||
*/ | ||
function setHelpButton($helpbuttonargs){ | ||
if (!is_array($helpbuttonargs)){ | ||
$helpbuttonargs=array($helpbuttonargs); | ||
}else{ | ||
$helpbuttonargs=$helpbuttonargs; | ||
} | ||
//we do this to to return html instead of printing it | ||
//without having to specify it in every call to make a button. | ||
$defaultargs=array('', '', 'moodle', true, false, '', true); | ||
$helpbuttonargs=$helpbuttonargs + $defaultargs ; | ||
$this->_helpbutton=call_user_func_array('helpbutton', $helpbuttonargs); | ||
} | ||
/** | ||
* get html for help button | ||
* | ||
* @access public | ||
* @return string html for help button | ||
*/ | ||
function getHelpButton(){ | ||
return $this->_helpbutton; | ||
} | ||
} | ||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
<?php | ||
require_once("HTML/QuickForm/group.php"); | ||
|
||
/** | ||
* HTML class for a form element group | ||
* | ||
* @author Adam Daniel <[email protected]> | ||
* @author Bertrand Mansion <[email protected]> | ||
* @version 1.0 | ||
* @since PHP4.04pl1 | ||
* @access public | ||
*/ | ||
class moodleform_group extends HTML_QuickForm_group{ | ||
/** | ||
* html for help button, if empty then no help | ||
* | ||
* @var string | ||
*/ | ||
var $_helpbutton=''; | ||
/** | ||
* set html for help button | ||
* | ||
* @access public | ||
* @param array $help array of arguments to make a help button | ||
*/ | ||
function setHelpButton($helpbuttonargs){ | ||
if (!is_array($helpbuttonargs)){ | ||
$helpbuttonargs=array($helpbuttonargs); | ||
}else{ | ||
$helpbuttonargs=$helpbuttonargs; | ||
} | ||
//we do this to to return html instead of printing it | ||
//without having to specify it in every call to make a button. | ||
$defaultargs=array('', '', 'moodle', true, false, '', true); | ||
$helpbuttonargs=$helpbuttonargs + $defaultargs ; | ||
$this->_helpbutton=call_user_func_array('helpbutton', $helpbuttonargs); | ||
} | ||
/** | ||
* get html for help button | ||
* | ||
* @access public | ||
* @return string html for help button | ||
*/ | ||
function getHelpButton(){ | ||
return $this->_helpbutton; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
<?php | ||
global $CFG; | ||
require_once("$CFG->libdir/form/textarea.php"); | ||
|
||
/** | ||
* HTML class for htmleditor type element | ||
* | ||
* @author Jamie Pratt | ||
* @access public | ||
*/ | ||
class moodleform_htmleditor extends moodleform_textarea{ | ||
var $_type = 'htmleditor'; | ||
var $_elementTemplateType='default'; | ||
var $_canUseHtmlEditor; | ||
var $_options=array('course'=>0); | ||
function moodleform_htmleditor($elementName=null, $elementLabel=null, $attributes=null){ | ||
$this->_canUseHtmlEditor=can_use_html_editor(); | ||
if ($this->_canUseHtmlEditor){ | ||
$this->_elementTemplateType='wide'; | ||
}else{ | ||
$this->_elementTemplateType='default'; | ||
} | ||
parent::moodleform_textarea($elementName, $elementLabel, $attributes); | ||
} | ||
function getElementTemplateType(){ | ||
return $this->_elementTemplateType; | ||
} | ||
function toHtml(){ | ||
ob_start(); | ||
use_html_editor($this->getName()); | ||
$script=ob_get_clean(); | ||
if ($this->_flagFrozen) { | ||
return $this->getFrozenHtml(); | ||
} else { | ||
return $this->_getTabs() . | ||
print_textarea($this->_canUseHtmlEditor, | ||
$this->getAttribute('rows'), | ||
$this->getAttribute('cols'), | ||
$this->getAttribute('width'), | ||
$this->getAttribute('height'), | ||
$this->getName(), | ||
preg_replace("/(\r\n|\n|\r)/", '
',$this->getValue()), | ||
$this->_options['course'], | ||
true).$script; | ||
} | ||
} //end func toHtml | ||
|
||
} | ||
?> |
Oops, something went wrong.