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 = "";
+
+ spanElement.setAttribute("class", "webdeveloper-display-form-details");
+ spanElement.setAttribute("title", text);
+ spanElement.appendChild(pageDocument.createTextNode(text));
+ inputElement.parentNode.insertBefore(spanElement, inputElement);
+ }
+ }
+
+ // If displaying
+ if(display)
+ {
+ buttonElementList = pageDocument.getElementsByTagName("button");
+ buttonElementsLength = buttonElementList.length;
+ selectElementList = pageDocument.getElementsByTagName("select");
+ selectElementsLength = selectElementList.length;
+ textAreaElementList = pageDocument.getElementsByTagName("textarea");
+ textAreaElementsLength = textAreaElementList.length;
+
+ // Loop through all the button tags
+ for(j = 0; j < buttonElementsLength; j++)
+ {
+ buttonElement = buttonElementList[j];
+ spanElement = pageDocument.createElement("span");
+ text = "