summaryrefslogtreecommitdiff
path: root/includes/form.inc
diff options
context:
space:
mode:
authorGábor Hojtsy <gabor@hojtsy.hu>2007-10-05 09:35:09 +0000
committerGábor Hojtsy <gabor@hojtsy.hu>2007-10-05 09:35:09 +0000
commit31b73898af536da873e12cc0cf6f3a4ee7b7d9cc (patch)
treedd33ce8708f6b929a11b79ae90a2a6957afbe54f /includes/form.inc
parent5fc06cec4c440ac21b3913c0c9b0c892a6091bb9 (diff)
downloadbrdo-31b73898af536da873e12cc0cf6f3a4ee7b7d9cc.tar.gz
brdo-31b73898af536da873e12cc0cf6f3a4ee7b7d9cc.tar.bz2
#157752 by quicksketch: extend AHAH functionality to most types of form elements, without writing JavaScript. Also AHAH enable the blocks admin page.
Diffstat (limited to 'includes/form.inc')
-rw-r--r--includes/form.inc41
1 files changed, 30 insertions, 11 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 32dd92399..a974c61c3 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -1575,7 +1575,7 @@ function expand_radios($element) {
/**
* Add AHAH information about a form element to the page to communicate with
- * javascript. If #ahah_path is set on an element, this additional javascript is
+ * javascript. If #ahah[path] is set on an element, this additional javascript is
* added to the page header to attach the AHAH behaviors. See ahah.js for more
* information.
*
@@ -1590,24 +1590,43 @@ function expand_radios($element) {
function form_expand_ahah($element) {
static $js_added = array();
+ // Add a reasonable default event handler if none specified.
+ if (isset($element['#ahah']['path']) && !isset($element['#ahah']['event'])) {
+ switch ($element['#type']) {
+ case 'submit':
+ case 'button':
+ case 'image_button':
+ $element['#ahah']['event'] = 'click';
+ break;
+ case 'password':
+ case 'textfield':
+ case 'textarea':
+ $element['#ahah']['event'] = 'blur';
+ break;
+ case 'radio':
+ case 'checkbox':
+ case 'select':
+ $element['#ahah']['event'] = 'change';
+ break;
+ }
+ }
+
// Adding the same javascript settings twice will cause a recursion error,
// we avoid the problem by checking if the javascript has already been added.
- if (!isset($js_added[$element['#id']]) && isset($element['#ahah_event']) && isset($element['#ahah_path'])) {
+ if (isset($element['#ahah']['path']) && isset($element['#ahah']['event']) && !isset($js_added[$element['#id']])) {
+ drupal_add_js('misc/jquery.form.js');
drupal_add_js('misc/ahah.js');
drupal_add_js('misc/progress.js');
$ahah_binding = array(
- 'id' => $element['#id'],
- 'uri' => url($element['#ahah_path']),
- 'event' => $element['#ahah_event'],
- 'effect' => empty($element['#ahah_effect']) ? 'none' : $element['#ahah_effect'],
- 'method' => empty($element['#ahah_method']) ? 'replace' : $element['#ahah_method'],
+ 'url' => url($element['#ahah']['path']),
+ 'event' => $element['#ahah']['event'],
+ 'wrapper' => empty($element['#ahah']['wrapper']) ? NULL : $element['#ahah']['wrapper'],
+ 'selector' => empty($element['#ahah']['selector']) ? '#'. $element['#id'] : $element['#ahah']['selector'],
+ 'effect' => empty($element['#ahah']['effect']) ? 'none' : $element['#ahah']['effect'],
+ 'method' => empty($element['#ahah']['method']) ? 'replace' : $element['#ahah']['method'],
);
- if (!empty($element['#ahah_wrapper'])) {
- $ahah_binding['wrapper'] = $element['#ahah_wrapper'];
- }
-
drupal_add_js(array('ahah' => array($element['#id'] => $ahah_binding)), 'setting');
$js_added[$element['#id']] = TRUE;