aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2009-08-30 17:50:11 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2009-08-30 17:50:11 +0000
commitbf1621c05dc8ea61dfeb3bfd6003640232ab0b3a (patch)
tree6afaaa9a38f16da7a92ebb07577d06f2d71440d1
parent3f22f755a3a3da4f711454e25772f13c42014ecc (diff)
downloadforums-bf1621c05dc8ea61dfeb3bfd6003640232ab0b3a.tar
forums-bf1621c05dc8ea61dfeb3bfd6003640232ab0b3a.tar.gz
forums-bf1621c05dc8ea61dfeb3bfd6003640232ab0b3a.tar.bz2
forums-bf1621c05dc8ea61dfeb3bfd6003640232ab0b3a.tar.xz
forums-bf1621c05dc8ea61dfeb3bfd6003640232ab0b3a.zip
Style authors are now able to define the default submit button used for form submission on ENTER keypress on forms using more than one. Prosilver uses this for the posting page(s) and registration screen.
(we further test this at phpbb.com) git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10069 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r--phpBB/docs/CHANGELOG.html4
-rw-r--r--phpBB/includes/ucp/ucp_pm_compose.php8
-rw-r--r--phpBB/styles/prosilver/template/forum_fn.js133
-rw-r--r--phpBB/styles/prosilver/template/posting_editor.html8
-rw-r--r--phpBB/styles/prosilver/template/ucp_register.html8
5 files changed, 154 insertions, 7 deletions
diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index ad1bbe86fc..e071cd859a 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -284,8 +284,8 @@
<li>[Feature] Separate PM Reply and PM Reply to all in prosilver.</li>
<li>[Feature] Place debug notices during captcha rendering in the error log - useful for debugging output already started errors.</li>
<li>[Feature] Ability to define constant PHPBB_USE_BOARD_URL_PATH to use board url for images/avatars/ranks/imageset...</li>
- <li>[Feature] Added function to generate email-hash. (Bug #49195)</li>
-
+ <li>[Feature] Added function to generate Email hash. (Bug #49195)</li>
+ <li>[Feature] Style authors are now able to define the default submit button used for form submission on ENTER keypress on forms using more than one. Prosilver uses this for the posting page(s) and registration screen.</li>
</ul>
<a name="v304"></a><h3>1.ii. Changes since 3.0.4</h3>
diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php
index 2f7c289653..1d428ce92e 100644
--- a/phpBB/includes/ucp/ucp_pm_compose.php
+++ b/phpBB/includes/ucp/ucp_pm_compose.php
@@ -1163,8 +1163,14 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
global $refresh, $submit, $preview;
- $refresh = $preview = true;
+ $refresh = true;
$submit = false;
+
+ // Preview is only true if there was also a message entered
+ if (request_var('message', ''))
+ {
+ $preview = true;
+ }
}
// Add User/Group [TO]
diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js
index c1b86bd064..11e4315e2a 100644
--- a/phpBB/styles/prosilver/template/forum_fn.js
+++ b/phpBB/styles/prosilver/template/forum_fn.js
@@ -268,3 +268,136 @@ function play_qt_file(obj)
obj.SetControllerVisible(true);
obj.Play();
}
+
+/**
+* Check if the nodeName of elem is name
+* @author jQuery
+*/
+function is_node_name(elem, name)
+{
+ return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+}
+
+/**
+* Check if elem is in array, return position
+* @author jQuery
+*/
+function is_in_array(elem, array)
+{
+ for (var i = 0, length = array.length; i < length; i++)
+ // === is correct (IE)
+ if (array[i] === elem)
+ return i;
+
+ return -1;
+}
+
+/**
+* Find Element, type and class in tree
+* Not used, but may come in handy for those not using JQuery
+* @author jQuery.find, Meik Sievertsen
+*/
+function find_in_tree(node, tag, type, class_name)
+{
+ var result, element, i = 0, length = node.childNodes.length;
+
+ for (element = node.childNodes[0]; i < length; element = node.childNodes[++i])
+ {
+ if (!element || element.nodeType != 1) continue;
+
+ if ((!tag || is_node_name(element, tag)) && (!type || element.type == type) && (!class_name || is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1))
+ {
+ return element;
+ }
+
+ if (element.childNodes.length)
+ result = find_in_tree(element, tag, type, class_name);
+
+ if (result) return result;
+ }
+}
+
+/**
+* Usually used for onkeypress event, to submit a form on enter
+*/
+function submit_default_button(event, selector, class_name)
+{
+ // Add which for key events
+ if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode))
+ event.which = event.charCode || event.keyCode;
+
+ // Keycode is not return, then return. ;)
+ if (event.which != 13)
+ return true;
+
+ var current = selector['parentNode'];
+
+ // Search parent form element
+ while (current && (!current.nodeName || current.nodeType != 1 || !is_node_name(current, 'form')) && current != document)
+ current = current['parentNode'];
+
+ // Find the input submit button with the class name
+ //current = find_in_tree(current, 'input', 'submit', class_name);
+ var input_tags = current.getElementsByTagName('input');
+ current = false;
+
+ for (var i = 0, element = input_tags[0]; i < input_tags.length; element = input_tags[++i])
+ {
+ if (element.type == 'submit' && is_in_array(class_name, (element.className || element).toString().split(/\s+/)) > -1)
+ current = element;
+ }
+
+ if (!current)
+ return true;
+
+ // Submit form
+ current.focus();
+ current.click();
+ return false;
+}
+
+/**
+* Apply onkeypress event for forcing default submit button on ENTER key press
+* The jQuery snippet used is based on http://greatwebguy.com/programming/dom/default-html-button-submit-on-enter-with-jquery/
+* The non-jQuery code is a mimick of the jQuery code ;)
+*/
+function apply_onkeypress_event()
+{
+ // jQuery code in case jQuery is used
+ if (jquery_present)
+ {
+ $('form input').live('keypress', function (e)
+ {
+ var default_button = $(this).parents('form').find('input[type=submit].default-submit-action');
+
+ if (!default_button || default_button.length <= 0)
+ return true;
+
+ if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13))
+ {
+ default_button.click();
+ return false;
+ }
+
+ return true;
+ });
+
+ return;
+ }
+
+ var input_tags = document.getElementsByTagName('input');
+
+ for (var i = 0, element = input_tags[0]; i < input_tags.length ; element = input_tags[++i])
+ {
+ if (element.type == 'hidden')
+ continue;
+
+ // onkeydown is possible too
+ element.onkeypress = function (evt) { submit_default_button((evt || window.event), this, 'default-submit-action'); };
+ }
+}
+
+/**
+* Detect JQuery existance. We currently do not deliver it, but some styles do, so why not benefit from it. ;)
+*/
+var jquery_present = typeof jQuery == 'function';
diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html
index 81adebd206..9476242d11 100644
--- a/phpBB/styles/prosilver/template/posting_editor.html
+++ b/phpBB/styles/prosilver/template/posting_editor.html
@@ -1,3 +1,9 @@
+<script type="text/javascript">
+// <![CDATA[
+ onload_functions.push('apply_onkeypress_event()');
+// ]]>
+</script>
+
<fieldset class="fields1">
<!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
@@ -184,7 +190,7 @@
<!-- IF S_HAS_DRAFTS --><input type="submit" accesskey="d" tabindex="8" name="load" value="{L_LOAD}" class="button2" onclick="load_draft = true;" />&nbsp; <!-- ENDIF -->
<!-- IF S_SAVE_ALLOWED --><input type="submit" accesskey="k" tabindex="7" name="save" value="{L_SAVE}" class="button2" />&nbsp; <!-- ENDIF -->
<input type="submit" tabindex="5" name="preview" value="{L_PREVIEW}" class="button1"<!-- IF not S_PRIVMSGS --> onclick="document.getElementById('postform').action += '#preview';"<!-- ENDIF --> />&nbsp;
- <input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1" />&nbsp;
+ <input type="submit" accesskey="s" tabindex="6" name="post" value="{L_SUBMIT}" class="button1 default-submit-action" />&nbsp;
</fieldset>
diff --git a/phpBB/styles/prosilver/template/ucp_register.html b/phpBB/styles/prosilver/template/ucp_register.html
index 4ff1de1c03..be26c17ec1 100644
--- a/phpBB/styles/prosilver/template/ucp_register.html
+++ b/phpBB/styles/prosilver/template/ucp_register.html
@@ -11,6 +11,10 @@
document.forms['register'].submit.click();
}
+ <!-- IF CAPTCHA_TEMPLATE and S_CONFIRM_REFRESH -->
+ onload_functions.push('apply_onkeypress_event()');
+ <!-- ENDIF -->
+
// ]]>
</script>
@@ -92,15 +96,13 @@
</div>
<!-- ENDIF -->
-
-
<div class="panel">
<div class="inner"><span class="corners-top"><span></span></span>
<fieldset class="submit-buttons">
{S_HIDDEN_FIELDS}
<input type="reset" value="{L_RESET}" name="reset" class="button2" />&nbsp;
- <input type="submit" name="submit" id="submit" value="{L_SUBMIT}" class="button1" />
+ <input type="submit" name="submit" id="submit" value="{L_SUBMIT}" class="button1 default-submit-action" />
{S_FORM_TOKEN}
</fieldset>