Skip to content

Commit 1fdc18e

Browse files
author
Brendon
committed
* Completed ajax file upload support
1 parent 80c1dfd commit 1fdc18e

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

ajax.js

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,23 +80,35 @@ Drupal.Ajax.invoke = function(hook, args) {
8080
* @return {Bool}
8181
*/
8282
Drupal.Ajax.go = function(formObj, submitter) {
83-
var submitterVal;
83+
var submitterVal, submitterName, extraData;
8484
Drupal.Ajax.invoke('submit');
8585
submitterVal = submitter.val();
86+
submitterName = submitter.attr('name');
8687
submitter.val(Drupal.t('Loading...'));
88+
extraData = {};
89+
extraData[submitterName] = submitterVal;
90+
extraData['drupal_ajax'] = '1';
8791
formObj.ajaxSubmit({
88-
beforeSend : function(xhr) {
89-
xhr.setRequestHeader("X-Drupal-Ajax", "1");
90-
return true;
91-
},
92+
extraData : extraData,
9293
beforeSubmit : function(data) {
9394
data[data.length] = {
94-
name : submitter.attr('name'),
95+
name : submitterName,
9596
value : submitterVal
9697
}
98+
data[data.length] = {
99+
name : 'drupal_ajax',
100+
value : '1'
101+
}
97102
return true;
98103
},
99104
dataType : 'json',
105+
error: function (XMLHttpRequest, textStatus, errorThrown) {
106+
window.alert(Drupal.t('ajax.module: An unknown error has occurred.'));
107+
if (window.console) {
108+
console.log('error', arguments);
109+
}
110+
return true;
111+
},
100112
success: function(data){
101113
submitter.val(submitterVal);
102114
Drupal.Ajax.response(submitter, formObj, data);

ajax.module

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,28 @@ function ajax_preprocess_page(&$variables) {
4747
*/
4848
function ajax_form_alter(&$form, $form_state, $form_id) {
4949
if (array_key_exists('#ajax', $form) && $form['#ajax']) {
50-
$found = FALSE;
50+
$found = array('upload' => FALSE, 'submitter' => FALSE);
5151
ajax_invoke_alter($form, $form_state, $form_id);
5252
ajax_validator_set($form);
53+
ajax_upload_find($form, $found);
5354
ajax_submitter_find($form, $found);
5455
ajax_submitter_set($form, $found);
5556
}
5657
return TRUE;
5758
}
5859

60+
/**
61+
* Finds upload field
62+
*
63+
* @param $form Assoc
64+
* @param $found Assoc
65+
*
66+
*/
67+
function ajax_upload_find(&$form, &$found) {
68+
69+
}
70+
71+
5972
/**
6073
* Gets internal path from actual url path
6174
*
@@ -114,11 +127,11 @@ function ajax_validator_set(&$form) {
114127
* Sets the submitter
115128
*
116129
* @param $form Assoc
117-
* @param $found Bool
130+
* @param $found Assoc
118131
* @return Bool
119132
*/
120133
function ajax_submitter_set(&$form, $found) {
121-
if (!$found) {
134+
if (!$found['submitter']) {
122135
$form['#submit'][] = 'ajax_submitter';
123136
$form['#attributes']['class'] = 'ajax-form';
124137
}
@@ -129,7 +142,7 @@ function ajax_submitter_set(&$form, $found) {
129142
* Finds the submitter
130143
*
131144
* @param $form Assoc
132-
* @param $found Bool
145+
* @param $found Assoc
133146
* @return Bool
134147
*/
135148
function ajax_submitter_find(&$form, &$found) {
@@ -145,7 +158,7 @@ function ajax_submitter_find(&$form, &$found) {
145158
if (array_key_exists('#submit', $form[$form_key]) &&
146159
!empty($form[$form_key]['#submit'])) {
147160
$form[$form_key]['#submit'][] = 'ajax_submitter';
148-
$found = TRUE;
161+
$found['submitter'] = TRUE;
149162
}
150163
}
151164
//nested
@@ -284,7 +297,7 @@ function ajax_invoke_alter(&$form, &$form_state, $form_id) {
284297
* @return Bool
285298
*/
286299
function ajax_validator(&$form, &$form_state) {
287-
if (array_key_exists('HTTP_X_DRUPAL_AJAX', $_SERVER)) {
300+
if (array_key_exists('drupal_ajax', $_REQUEST)) {
288301
drupal_get_messages(NULL, TRUE);
289302
$data = ajax_build(array(
290303
'messages_error' => form_get_errors()

0 commit comments

Comments
 (0)