diff options
author | Gábor Hojtsy <gabor@hojtsy.hu> | 2007-10-05 09:35:09 +0000 |
---|---|---|
committer | Gábor Hojtsy <gabor@hojtsy.hu> | 2007-10-05 09:35:09 +0000 |
commit | 31b73898af536da873e12cc0cf6f3a4ee7b7d9cc (patch) | |
tree | dd33ce8708f6b929a11b79ae90a2a6957afbe54f /includes/form.inc | |
parent | 5fc06cec4c440ac21b3913c0c9b0c892a6091bb9 (diff) | |
download | brdo-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.inc | 41 |
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; |