X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=blobdiff_plain;f=doc%2Fwebdeveloper%2Fforms.js;fp=doc%2Fwebdeveloper%2Fforms.js;h=1cc56c45f9fd889c9be547e024fa469c5cb529f6;hp=0000000000000000000000000000000000000000;hb=c3b0deb3d8c9f439739c79806e915c29bc1d4b84;hpb=cff6539539a79e014f6ac8df46716cafce2c8472 diff --git a/doc/webdeveloper/forms.js b/doc/webdeveloper/forms.js new file mode 100644 index 0000000..1cc56c4 --- /dev/null +++ b/doc/webdeveloper/forms.js @@ -0,0 +1,1176 @@ +// Clears all radio buttons +function webdeveloper_clearRadioButtons() +{ + var clearedRadioButtons = 0; + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var inputElement = null; + var inputElementList = null; + var inputElementsLength = null; + var pageDocument = null; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + inputElementList = pageDocument.getElementsByTagName("input"); + inputElementsLength = inputElementList.length; + + // Loop through all the input tags + for(var j = 0; j < inputElementsLength; j++) + { + inputElement = inputElementList[j]; + + // If the element is a radio button + if(inputElement.hasAttribute("type") && inputElement.getAttribute("type").toLowerCase() == "radio") + { + inputElement.checked = false; + + clearedRadioButtons++; + } + else + { + // This stops the fields reordering + inputElement.setAttribute("type", inputElement.getAttribute("type")); + } + } + } + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + var title = stringBundle.getString("webdeveloper_clearRadioButtons"); + + // If one radio button was cleared + if(clearedRadioButtons == 1) + { + webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_clearRadioButtonsSingleResult")); + } + else + { + webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_clearRadioButtonsMultipleResult", [clearedRadioButtons])); + } + } +} + +// Converts form methods +function webdeveloper_convertFormMethods(method) +{ + var convertedForms = 0; + var displayFormDetailsMenu = document.getElementById("webdeveloper-display-form-details-menu"); + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var form = null; + var formLength = null; + var formList = null; + var pageDocument = null; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + formList = pageDocument.forms; + formLength = formList.length; + + // Loop through all the forms + for(var j = 0; j < formLength; j++) + { + form = formList[j]; + + // If this form is not already the right method + if((!form.hasAttribute("method") && method == "post") || (form.hasAttribute("method") && form.getAttribute("method").toLowerCase() != method)) + { + form.setAttribute("method", method); + convertedForms++; + } + } + } + + // Reapply the display form details style sheet if it is currently on - fixes bug with form method not updating + if(displayFormDetailsMenu.getAttribute("checked")) + { + webdeveloper_removeStyleSheet("webdeveloper-display-form-details", false); + webdeveloper_displayFormDetails(displayFormDetailsMenu, false); + } + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + var title = stringBundle.getString("webdeveloper_convertFormMethods"); + + // If one form was converted + if(convertedForms == 1) + { + webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_convertFormMethodsSingleResult", [method.toUpperCase()])); + } + else + { + webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_convertFormMethodsMultipleResult", [convertedForms, method.toUpperCase()])); + } + } +} + +// Converts select elements to text inputs +function webdeveloper_convertSelectElementsToTextInputs() +{ + var convertedSelectElements = 0; + var displayFormDetailsMenu = document.getElementById("webdeveloper-display-form-details-menu"); + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var inputElement = null; + var pageDocument = null; + var parentNode = null; + var selectElement = null; + var selectElements = null; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + selectElements = pageDocument.getElementsByTagName("select"); + + // While there are select elements + while(selectElements.length > 0) + { + inputElement = pageDocument.createElement("input"); + selectElement = selectElements[0]; + parentNode = selectElement.parentNode; + + inputElement.value = selectElement.value; + + // If the select element has an id attribute + if(selectElement.hasAttribute("id")) + { + inputElement.setAttribute("id", selectElement.getAttribute("id")); + } + + // If the select element has a name attribute + if(selectElement.hasAttribute("name")) + { + inputElement.setAttribute("name", selectElement.getAttribute("name")); + } + + inputElement.setAttribute("type", "text"); + + parentNode.insertBefore(inputElement, selectElement); + webdeveloper_removeElement(selectElement); + convertedSelectElements++; + } + } + + // Reapply the display form details style sheet if it is currently on - fixes bug with form method not updating + if(displayFormDetailsMenu.getAttribute("checked")) + { + webdeveloper_removeStyleSheet("webdeveloper-display-form-details", false); + webdeveloper_displayFormDetails(displayFormDetailsMenu, false); + } + + // If the hide informational dialogs preference is not set + if(!webdeveloper_getBooleanPreference("webdeveloper.informational.dialogs.hide", true)) + { + var stringBundle = document.getElementById("webdeveloper-string-bundle"); + var title = stringBundle.getString("webdeveloper_convertSelectElementsToTextInputs"); + + // If one select element was converted + if(convertedSelectElements == 1) + { + webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_convertSelectElementsToTextInputsSingleResult")); + } + else + { + webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_convertSelectElementsToTextInputsMultipleResult", [convertedSelectElements])); + } + } +} + +// Displays/hides the form details for the page +function webdeveloper_displayFormDetails(element) +{ + var buttonElement = null; + var buttonElementList = null; + var buttonElementsLength = null; + var display = element.getAttribute("checked"); + var documentList = webdeveloper_getDocuments(webdeveloper_getContentWindow()); + var documentLength = documentList.length; + var inputElement = null; + var inputElementList = null; + var inputElementsLength = null; + var pageDocument = null; + var selectElement = null; + var selectElementList = null; + var selectElementsLength = null; + var spanElement = null; + var text = null; + var textAreaElement = null; + var textAreaElementList = null; + var textAreaElementsLength = null; + + // Loop through the documents + for(var i = 0; i < documentLength; i++) + { + pageDocument = documentList[i]; + inputElementList = pageDocument.getElementsByTagName("input"); + inputElementsLength = inputElementList.length; + + // Need to do this to stop the feature running twice + webdeveloper_removeAllElementsByXPath(pageDocument, "//span[@class='webdeveloper-display-form-details']"); + + // Loop through all the input tags + for(var j = 0; j < inputElementsLength; j++) + { + inputElement = inputElementList[j]; + + // If the input element is unhidden - need to do this to stop it running twice + if(inputElement.className.indexOf("webdeveloper-unhidden") != -1) + { + inputElement.className = webdeveloper_removeSubstring(inputElement.className, "webdeveloper-unhidden"); + + inputElement.setAttribute("type", "hidden"); + } + + // If displaying + if(display) + { + spanElement = pageDocument.createElement("span"); + text = "