Package: webdeveloper
Severity: wishlist
Tags: patch

Modern forms that are heavily javascript-reliant often lack regular,
clickable submit buttons.  It would be a nice feature for Web
Developer to have an entry in the "Forms" menu that inserts a nice
clean Submit element at the end of every form on a page.

This is especially useful for forms which submit via an "onchange"
event on a select element, if you've used webdeveloper to switch the
select element to a text input.

I'm attaching a patch which i wrote that enables this feature, based
heavily on the existing webdeveloper code.  I'm licensing the patch
itself GPLv2 or later.  Feel free to forward it upstream,
if that's appropriate.

Thanks for maintaining this great iceweasel extension in debian.

        --dkg

-- System Information:
Debian Release: 4.0
  APT prefers testing
  APT policy: (500, 'testing'), (200, 'unstable'), (101, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-3-686
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
diff -ur webdeveloper-1.0.2+0/content_common/webdeveloper/forms.js webdeveloper-1.0.2+0.dkg/content_common/webdeveloper/forms.js
--- webdeveloper-1.0.2+0/content_common/webdeveloper/forms.js	2005-12-18 16:55:36.000000000 -0500
+++ webdeveloper-1.0.2+0.dkg/content_common/webdeveloper/forms.js	2007-03-28 15:52:23.000000000 -0400
@@ -112,6 +112,60 @@
     }
 }
 
+// Inserts simple clean "submit" button in all forms
+function webdeveloper_insertCleanSubmit()
+{
+    var submitsInserted         = 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.getElementsByTagName("form");
+        formLength   = formList.length;
+
+        // Loop through all the forms
+        for(var j = 0; j < formLength; j++)
+        {
+            form = formList[j];
+            var sub = pageDocument.createElement("input");
+            sub.setAttribute('type', 'submit');
+            form.appendChild(sub);
+	    submitsInserted++;
+        }
+    }
+    // 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_insertCleanSubmit");
+
+        // If one element was enabled
+        if(submitsInserted == 1)
+        {
+            webdeveloper_informationalDialog(title, stringBundle.getString("webdeveloper_insertCleanSubmitSingleResult"));
+        }
+        else
+        {
+            webdeveloper_informationalDialog(title, stringBundle.getFormattedString("webdeveloper_insertCleanSubmitMultipleResult", [submitsInserted]));
+        }
+    }
+}
+
 // Converts select elements to text inputs
 function webdeveloper_convertSelectElementsToTextInputs()
 {
diff -ur webdeveloper-1.0.2+0/content_common/webdeveloper/webdeveloper.xul webdeveloper-1.0.2+0.dkg/content_common/webdeveloper/webdeveloper.xul
--- webdeveloper-1.0.2+0/content_common/webdeveloper/webdeveloper.xul	2006-01-18 01:09:37.000000000 -0500
+++ webdeveloper-1.0.2+0.dkg/content_common/webdeveloper/webdeveloper.xul	2007-03-28 14:33:22.000000000 -0400
@@ -150,6 +150,7 @@
                             </menupopup>
                         </menu>
                         <menuitem label="&webdeveloper.convert.select.elements.text.inputs.label;" accesskey="&webdeveloper.convert.select.elements.text.inputs.key;" oncommand="webdeveloper_convertSelectElementsToTextInputs()"/>
+                        <menuitem label="&webdeveloper.insert.clean.submit.label;" accesskey="&webdeveloper.insert.clean.submit.key;" oncommand="webdeveloper_insertCleanSubmit()"/>
                         <menuseparator/>
                         <menuitem label="&webdeveloper.enable.auto.completion.label;" accesskey="&webdeveloper.enable.auto.completion.key;" oncommand="webdeveloper_enableFormAutoCompletion()"/>
                         <menuitem label="&webdeveloper.enable.form.fields.label;" accesskey="&webdeveloper.enable.form.fields.key;" oncommand="webdeveloper_enableFormFields()"/>
@@ -424,6 +425,7 @@
                             </menupopup>
                         </menu>
                         <menuitem label="&webdeveloper.convert.select.elements.text.inputs.label;" accesskey="&webdeveloper.convert.select.elements.text.inputs.key;" oncommand="webdeveloper_convertSelectElementsToTextInputs()"/>
+                        <menuitem label="&webdeveloper.insert.clean.submit.label;" accesskey="&webdeveloper.insert.clean.submit.key;" oncommand="webdeveloper_insertCleanSubmit()"/>
                         <menuseparator/>
                         <menuitem label="&webdeveloper.enable.auto.completion.label;" accesskey="&webdeveloper.enable.auto.completion.key;" oncommand="webdeveloper_enableFormAutoCompletion()"/>
                         <menuitem label="&webdeveloper.enable.form.fields.label;" accesskey="&webdeveloper.enable.form.fields.key;" oncommand="webdeveloper_enableFormFields()"/>
@@ -696,6 +698,7 @@
                     </menupopup>
                 </menu>
                 <menuitem label="&webdeveloper.convert.select.elements.text.inputs.label;" accesskey="&webdeveloper.convert.select.elements.text.inputs.key;" oncommand="webdeveloper_convertSelectElementsToTextInputs()"/>
+                <menuitem label="&webdeveloper.insert.clean.submit.label;" accesskey="&webdeveloper.insert.clean.submit.key;" oncommand="webdeveloper_insertCleanSubmit()"/>
                 <menuseparator/>
                 <menuitem label="&webdeveloper.enable.auto.completion.label;" accesskey="&webdeveloper.enable.auto.completion.key;" oncommand="webdeveloper_enableFormAutoCompletion()"/>
                 <menuitem label="&webdeveloper.enable.form.fields.label;" accesskey="&webdeveloper.enable.form.fields.key;" oncommand="webdeveloper_enableFormFields()"/>
diff -ur webdeveloper-1.0.2+0/debian/changelog webdeveloper-1.0.2+0.dkg/debian/changelog
--- webdeveloper-1.0.2+0/debian/changelog	2007-03-28 15:55:10.000000000 -0400
+++ webdeveloper-1.0.2+0.dkg/debian/changelog	2007-03-28 14:36:39.000000000 -0400
@@ -1,3 +1,9 @@
+webdeveloper (1.0.2+0-3~dkg1) unstable; urgency=low
+
+  * added "Insert Clean Submit Buttons" to Forms menu.
+
+ -- Daniel Kahn Gillmor <[EMAIL PROTECTED]>  Wed, 28 Mar 2007 14:36:39 -0400
+
 webdeveloper (1.0.2+0-2) unstable; urgency=low
 
   * Updates of packaging for Firefox/Iceweasel rename:
diff -ur webdeveloper-1.0.2+0/locale_common/en-US/webdeveloper/menu.dtd webdeveloper-1.0.2+0.dkg/locale_common/en-US/webdeveloper/menu.dtd
--- webdeveloper-1.0.2+0/locale_common/en-US/webdeveloper/menu.dtd	2006-01-18 01:09:54.000000000 -0500
+++ webdeveloper-1.0.2+0.dkg/locale_common/en-US/webdeveloper/menu.dtd	2007-03-28 14:36:13.000000000 -0400
@@ -146,6 +146,8 @@
 <!ENTITY webdeveloper.populate.form.fields.key "P">
 <!ENTITY webdeveloper.remove.maximum.lengths.label "Remove Maximum Lengths">
 <!ENTITY webdeveloper.remove.maximum.lengths.key "L">
+<!ENTITY webdeveloper.insert.clean.submit.label "Insert Clean Submit Buttons">
+<!ENTITY webdeveloper.insert.clean.submit.key "B">
 
 <!-- Convert Form Methods Features -->
 <!ENTITY webdeveloper.gets.posts.label "GETs To POSTs">
diff -ur webdeveloper-1.0.2+0/locale_common/en-US/webdeveloper/webdeveloper.properties webdeveloper-1.0.2+0.dkg/locale_common/en-US/webdeveloper/webdeveloper.properties
--- webdeveloper-1.0.2+0/locale_common/en-US/webdeveloper/webdeveloper.properties	2006-01-18 01:09:54.000000000 -0500
+++ webdeveloper-1.0.2+0.dkg/locale_common/en-US/webdeveloper/webdeveloper.properties	2007-03-28 15:22:41.000000000 -0400
@@ -124,6 +124,11 @@
 webdeveloper_convertSelectElementsToTextInputsSingleResult=1 select element has been converted to a text input.
 webdeveloper_convertSelectElementsToTextInputsMultipleResult=%S select elements have been converted to text inputs.
 
+# Insert Clean Submit Buttons
+webdeveloper_insertCleanSubmit=Insert Clean Submit Buttons
+webdeveloper_insertCleanSubmitSingleResult=A clean submit input element has been added to 1 form.
+webdeveloper_insertCleanSubmitMultipleResult=Clean submit elements have been added to %S forms.
+
 # Delete Domain Cookies
 webdeveloper_deleteDomainCookies=Delete Domain Cookies
 webdeveloper_deleteDomainCookiesConfirmation=Are you sure you want to delete the domain cookies?

Reply via email to