$this->updateAttributes(array('id' => 'id_'.substr(md5(microtime() . $idx++), 0, 6)));
}
} // end func _generateId
-
+ /**
+ * Slightly different container template when frozen. Don't want to use a label tag
+ * with a for attribute in that case for the element label but instead use a div.
+ * Templates are defined in renderer constructor.
+ *
+ * @return string
+ */
+ function getElementTemplateType(){
+ if ($this->_flagFrozen){
+ return 'static';
+ } else {
+ return 'default';
+ }
+ }
}
?>
\ No newline at end of file
function getHelpButton(){
return $this->_helpbutton;
}
+ /**
+ * Slightly different container template when frozen.
+ *
+ * @return string
+ */
+ function getElementTemplateType(){
+ if ($this->_flagFrozen){
+ return 'nodisplay';
+ } else {
+ return 'default';
+ }
+ }
} //end class MoodleQuickForm_button
?>
}
return parent::onQuickFormEvent($event, $arg, $caller);
} // end func onQuickFormEvent
-
+
+ function getFrozenHtml(){
+ return HTML_QuickForm_submit::getFrozenHtml();
+ }
+
+ function freeze(){
+ return HTML_QuickForm_submit::freeze();
+ }
// }}}
} //end class MoodleQuickForm_cancel
?>
\ No newline at end of file
}
return parent::onQuickFormEvent($event, $arg, $caller);
} // end func onQuickFormEvent
+ /**
+ * Slightly different container template when frozen.
+ *
+ * @return string
+ */
+ function getElementTemplateType(){
+ if ($this->_flagFrozen){
+ return 'static';
+ } else {
+ return 'default';
+ }
+ }
}
?>
\ No newline at end of file
* @var string
*/
var $_helpbutton='';
- var $_elementTemplateType='fieldset';
//would cause problems with client side validation so will leave for now
//var $_elementTemplateType='fieldset';
/**
return $this->_helpbutton;
}
function getElementTemplateType(){
- return $this->_elementTemplateType;
+ if ($this->_flagFrozen){
+ if ($this->getGroupType() == 'submit'){
+ return 'nodisplay';
+ } else {
+ return 'static';
+ }
+ } else {
+ return 'fieldset';
+ }
}
+
+
function setElements($elements){
parent::setElements($elements);
foreach ($this->_elements as $element){
*/
class MoodleQuickForm_htmleditor extends MoodleQuickForm_textarea{
var $_type;
- var $_elementTemplateType='default';
var $_canUseHtmlEditor;
var $_options=array('canUseHtmlEditor'=>'detect','rows'=>10, 'cols'=>45, 'width'=>0,'height'=>0, 'course'=>0);
function MoodleQuickForm_htmleditor($elementName=null, $elementLabel=null, $options=array(), $attributes=null){
}
return parent::setHelpButton($helpbuttonargs, $function);
}
- function getElementTemplateType(){
- return $this->_elementTemplateType;
- }
+
function toHtml(){
if ($this->_canUseHtmlEditor && !$this->_flagFrozen){
ob_start();
$this->updateAttributes(array('id' => 'id_'.substr(md5(microtime() . $idx++), 0, 6)));
}
} // end func _generateId
+ /**
+ * Slightly different container template when frozen.
+ *
+ * @return string
+ */
+ function getElementTemplateType(){
+ if ($this->_flagFrozen){
+ return 'static';
+ } else {
+ return 'default';
+ }
+ }
}
?>
\ No newline at end of file
$value = array();
if (is_array($this->_values)) {
foreach ($this->_values as $key => $val) {
- for ($i = 0, $optCount = count($this->_options); $i < $optCount; $i++) {
- if ((string)$val == (string)$this->_options[$i]['attr']['value']) {
- $value[$key] = $this->_options[$i]['text'];
- break;
+ foreach ($this->_optGroups as $optGroup) {
+ for ($i = 0, $optCount = count($optGroup['options']); $i < $optCount; $i++) {
+ if ((string)$val == (string)$optGroup['options'][$i]['attr']['value']) {
+ $value[$key] = $optGroup['options'][$i]['text'];
+ break;
+ }
}
}
}
return parent::onQuickFormEvent($event, $arg, $caller);
} // end func onQuickFormEvent
+ /**
+ * Slightly different container template when frozen. Don't want to display a submit
+ * button if the form is frozen.
+ *
+ * @return string
+ */
+ function getElementTemplateType(){
+ if ($this->_flagFrozen){
+ return 'nodisplay';
+ } else {
+ return 'default';
+ }
+ }
+
+ function freeze(){
+ $this->_flagFrozen = true;
+ }
+
}
?>
\ No newline at end of file
}
return parent::onQuickFormEvent($event, $arg, $caller);
} // end func onQuickFormEvent
+ /**
+ * Slightly different container template when frozen.
+ *
+ * @return string
+ */
+ function getElementTemplateType(){
+ if ($this->_flagFrozen){
+ return 'static';
+ } else {
+ return 'default';
+ }
+ }
}
?>
\ No newline at end of file
* @param mixed $attributes you can pass a string of html attributes here or an array.
* @return moodleform
*/
- function moodleform($action=null, $customdata=null, $method='post', $target='', $attributes=null) {
+ function moodleform($action=null, $customdata=null, $method='post', $target='', $attributes=null, $editable=true) {
if (empty($action)){
$action = strip_querystring(qualified_me());
}
$this->_formname = get_class($this); // '_form' suffix kept in order to prevent collisions of form id and other element
$this->_customdata = $customdata;
$this->_form =& new MoodleQuickForm($this->_formname, $method, $action, $target, $attributes);
+ if (!$editable){
+ $this->_form->hardFreeze();
+ }
$this->set_upload_manager(new upload_manager());
$this->definition();
}
return true;
} // end func hardFreeze
-
- // }}}
+ /**
+ * Tells whether the form was already submitted
+ *
+ * This is useful since the _submitFiles and _submitValues arrays
+ * may be completely empty after the trackSubmit value is removed.
+ *
+ * @access public
+ * @return bool
+ */
+ function isSubmitted()
+ {
+ return parent::isSubmitted() && (!$this->isFrozen());
+ }
}
'fieldset'=>"\n\t\t".'<div class="fitem {advanced}<!-- BEGIN required --> required<!-- END required -->"><div class="fitemtitle"><div class="fgrouplabel">{label}<!-- BEGIN required -->{req} <!-- END required -->{advancedimg}</div>{help}</div><fieldset class="felement {type}<!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</fieldset></div>',
- 'static'=>"\n\t\t".'<div class="fitem {advanced}<!-- BEGIN required --> required<!-- END required -->"><div class="fitemtitle"><div class="fstaticlabel">{label}<!-- BEGIN required -->{req} <!-- END required -->{advancedimg}</div>{help}</div><div class="felement {type}<!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element}</div></div>');
+ 'static'=>"\n\t\t".'<div class="fitem {advanced}"><div class="fitemtitle"><div class="fstaticlabel">{label}<!-- BEGIN required -->{req} <!-- END required -->{advancedimg}</div>{help}</div><div class="felement fstatic <!-- BEGIN error --> error<!-- END error -->"><!-- BEGIN error --><span class="error">{error}</span><br /><!-- END error -->{element} </div></div>',
+
+ 'nodisplay'=>'');
parent::HTML_QuickForm_Renderer_Tableless();
}
$this->_advancedHTML = $form->getAdvancedHTML();
$this->_showAdvanced = $form->getShowAdvanced();
parent::startForm($form);
- $this->_hiddenHtml .= $form->_pageparams;
+ if ($form->isFrozen()){
+ $this->_formTemplate = "\n<div class=\"mform frozen\">\n{content}\n</div>";
+ } else {
+ $this->_hiddenHtml .= $form->_pageparams;
+ }
+
+
}
function startGroup(&$group, $required, $error){
}
function finishForm(&$form){
+ if ($form->isFrozen()){
+ $this->_hiddenHtml = '';
+ }
parent::finishForm($form);
- // add a lockoptions script
- if ('' != ($script = $form->getLockOptionEndScript())) {
+ if ((!$form->isFrozen()) && ('' != ($script = $form->getLockOptionEndScript()))) {
+ // add a lockoptions script
$this->_html = $this->_html . "\n" . $script;
}
}
*** Forms
***/
-form.mform {
+.mform {
margin: 0 auto;
padding: 0;
width: 80%;
}
-form.mform fieldset {
+.mform fieldset {
border: 1px solid #DDDDDD;
padding: 10px 0;
margin: 0.7em 0;
width:100%;
}
-form.mform fieldset.hidden, form.mform fieldset.felement {
+.mform fieldset.hidden, .mform fieldset.felement {
border: 0;
}
-form.mform fieldset.felement {
+.mform fieldset.felement {
width: auto;
}
-form.mform fieldset legend {
+.mform fieldset legend {
font-weight: bold;
margin-left: 0.5em;
}
-form.mform fieldset .advancedbutton{
+.mform fieldset .advancedbutton{
width:100%;
text-align:right;
}
-form.mform div.fitem {
+.mform div.fitem {
clear: both;
width: 100%;
min-height: 1.5em;
}
-form.mform .fitemtitle {
+.mform .fitemtitle {
display: block;
float: left;
width: 30%;
text-align: right;
}
-form.mform .fitemtitle div{
+.mform .fitemtitle div{
display: inline;
}
width: auto;
}
-form.mform div.felement, form.mform fieldset.felement{
+.mform div.felement, .mform fieldset.felement{
display: block;
float: left;
margin: 5px 0 0 10px;
width: 60%;
}
-form.mform div.fdescription {
+.mform div.fdescription {
clear: both;
min-height: 1.5em;
}
-form.mform .fdescription.required {
+.mform .fdescription.required {
text-align:right;
}
-form.mform input, form.mform select {
+.mform input, .mform select {
width: auto;
}
-form.mform ftextarea {
+.mform ftextarea {
}
-form.mform br {
+.mform br {
clear: left;
}
-form.mform div.fhtmleditor {
+.mform div.fhtmleditor {
margin: 0 auto 10px auto;
width : 600px;
clear:both;
float:none;
padding: 25px 0 20px 0;
}
-form.mform span.error, form.mform span.required {
+.mform span.error, .mform span.required {
color: red;
}
-form.mform div.error,form.mform fieldset.error {
+.mform div.error,.mform fieldset.error {
border: 1px solid red;
padding: 5px;
color: inherit;
}
-form.mform .fcheckbox input {
+.mform .fcheckbox input {
margin-left: 0px;
}
-form.mform .fpassword .unmask {
+.mform .fpassword .unmask {
display:inline;
}
-form.mform .fpassword .unmask input {
+.mform .fpassword .unmask input {
margin-left:5px;
margin-right:3px;
}
cursor: help;
}
-#admin-register form.mform .fsubmit {
+/* form frozen */
+div.mform div.fitem div.fstatic{
+ border-color : lightgrey;
+ border-style : dashed;
+ border-width : thin;
+}
+
+#admin-register .mform .fsubmit {
padding:20px;
text-align:center;
}