diff --git a/lib/javascript-static.js b/lib/javascript-static.js index e63a3823564..ca55ac054ee 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -135,6 +135,80 @@ function findParentNode(el, elName, elClass, elId) { return el; } +/* + findChildNode (start, elementName, elementClass, elementID) + + Travels down the DOM hierarchy to find all child elements with the + specified tag name, class, and id. All conditions must be met, + but any can be ommitted. + Doesn't examine children of matches. +*/ +function findChildNodes(start, tagName, elementClass, elementID, elementName) { + var children = new Array(); + for (var i = 0; i < start.childNodes.length; i++) { + var classfound = false; + var child = start.childNodes[i]; + if((child.nodeType == 1) &&//element node type + (elementClass && (typeof(child.className)=='string'))){ + var childClasses = child.className.split(/\s+/); + for (var childClassIndex in childClasses){ + if (childClasses[childClassIndex]==elementClass){ + classfound = true; + break; + } + } + } + if(child.nodeType == 1) { //element node type + if ( (!tagName || child.nodeName == tagName) && + (!elementClass || classfound)&& + (!elementID || child.id == elementID) && + (!elementName || child.name == elementName)) + { + children = children.concat(child); + } else { + children = children.concat(findChildNodes(child, tagName, elementClass, elementID, elementName)); + } + } + } + return children; +} +/* + elementSetHide (elements, hide) + + Adds or removes the "hide" class for the specified elements depending on boolean hide. +*/ +function elementShowAdvanced(elements, show) { + for (var elementIndex in elements){ + element = elements[elementIndex]; + element.className = element.className.replace(new RegExp(' ?hide'), '') + if(!show) { + element.className += ' hide'; + } + } +} + +function showAdvancedOnClick(button, hidetext, showtext){ + var toSet=findChildNodes(button.form, null, 'advanced'); + var buttontext = ''; + if (button.form.elements['mform_showadvanced_last'].value == '0' || button.form.elements['mform_showadvanced_last'].value == '' ) { + elementShowAdvanced(toSet, true); + buttontext = hidetext; + button.form.elements['mform_showadvanced_last'].value = '1'; + } else { + elementShowAdvanced(toSet, false); + buttontext = showtext; + button.form.elements['mform_showadvanced_last'].value = '0'; + } + var formelements = button.form.elements; + for (var i in formelements){ + if (formelements[i] && formelements[i].name && (formelements[i].name=='mform_showadvanced')){ + formelements[i].value = buttontext; + } + } + //never submit the form if js is enabled. + return false; +} + /* elementToggleHide (element, elementFinder) diff --git a/theme/standard/styles_color.css b/theme/standard/styles_color.css index f50013682e8..99a431944ef 100644 --- a/theme/standard/styles_color.css +++ b/theme/standard/styles_color.css @@ -990,3 +990,10 @@ body#mod-quiz-report table#attempts .r1 { #admin-roles-override .rolecap .cap-desc .cap-name { color: #888; } + +form.mform .required label { + color:#a00; +} +form.mform .fdescription.required { + color:#a00; +} diff --git a/theme/standard/styles_layout.css b/theme/standard/styles_layout.css index 061d98a99f9..f39579383a4 100644 --- a/theme/standard/styles_layout.css +++ b/theme/standard/styles_layout.css @@ -287,14 +287,14 @@ div.hide { ***/ form.mform { - margin: 0; + margin: 0 auto; padding: 0; - width: 100%; + width: 80%; } form.mform fieldset { - border: 1px solid black; + border: 1px solid #DDDDDD; padding: 10px 0; - margin: 0; + margin: 0.7em 0; width:100%; } form.mform fieldset.hidden, form.mform fieldset.felement { @@ -305,37 +305,33 @@ form.mform fieldset.felement { } form.mform fieldset legend { font-weight: bold; + margin-left: 0.5em; +} +form.mform fieldset .advancedbutton{ + width:100%; + text-align:right; } - form.mform div.fitem { clear: both; width: 100%; min-height: 1.5em; } -/* uncomment this and edit formslib.php for -ol li containers for form items. -form.mform fieldset li.qfrow { - list-style: none; - padding: 5px; - margin: 0; - clear: both; - width: 100%; - min-height: 1.5em; -} -form.mform fieldset ol { - margin: 0; - padding: 0; -}*/ -form.mform label { +form.mform .fitemtitle { display: block; float: left; width: 30%; padding: 0; - margin: 0 0 0 0; + margin: 5px 0 0 10px; text-align: right; } -div.fitem fieldset.fgroup label, div.fradio label, div.fcheckbox label{ + +form.mform .fitemtitle div{ + display: inline; +} + +div.fitem fieldset.fgroup label, div.fradio label, div.fcheckbox label, +fieldset.fdate_selector label { display:inline; float: none; width: auto; @@ -347,6 +343,7 @@ form.mform div.felement, form.mform fieldset.felement{ margin: 5px 0 0 10px; padding: 0; text-align:left; + width: 60%; } form.mform div.fdescription { @@ -367,6 +364,7 @@ form.mform div.fhtmleditor { width : 600px; clear:both; float:none; + padding: 25px 0 20px 0; } form.mform span.error, form.mform span.required { color: red; @@ -376,6 +374,12 @@ form.mform div.error,form.mform fieldset.error { padding: 5px; color: inherit; } + +.mform label .req, .mform label .adv { + cursor: help; +} + + form#adminsettings div.htmlarea { clear: left; padding-top: 5px;