-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patheditablefields.js
103 lines (89 loc) · 3.39 KB
/
editablefields.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// $Id: editablefields.js,v 1.1.2.14 2009/02/19 20:39:29 markfoodyburton Exp $
Drupal.behaviors.editablefields = function(context) {
$('div.editablefields', context).not('.clicktoedit').not('.editablefields-processed').each(function() {
$(this).addClass('.editablefields-processed');
Drupal.editablefields.load(this);
});
$('div.editablefields', context).filter('.clicktoedit').not('.editablefields-processed').each(function() {
$(this).prepend(Drupal.settings.editablefields.clicktoedit_message);
$(this).click(Drupal.editablefields.init);
});
$('div.editablefields',context).not('.editablefields-processed').submit(function(){
return false;
});
}
Drupal.editablefields = {};
Drupal.editablefields.init = function() {
$(this).unbind("click",Drupal.editablefields.init);
$(this).addClass('.editablefields-processed');
$(this).children().hide();
Drupal.editablefields.load(this);
}
Drupal.editablefields.load = function(element) {
if ($(element).hasClass("editablefields_REMOVE") ) {
$(element).hide();
} else {
$(element).addClass('editablefields_throbber');
var url = Drupal.settings.editablefields.url_html + "/" + $(element).attr("nid") + "/" + $(element).attr("field")+ "/" + $(element).attr("delta");
$.ajax({
url: url,
type: 'GET',
success: function(response) {
// Call all callbacks.
if (response.__callbacks) {
$.each(response.__callbacks, function(i, callback) {
eval(callback)(element, response);
});
}
$(element).html(response.content);
Drupal.attachBehaviors(element);
$(element).find(':input').change(function() {
Drupal.editablefields.onchange(this);
});
$(element).removeClass('editablefields_throbber');
},
error: function(response) {
alert(Drupal.t("An error occurred at ") + url);
$(element).removeClass('editablefields_throbber');
},
dataType: 'json'
});
}
};
Drupal.editablefields.onchange = function(element) {
if (!$(element).hasClass('editablefields')) {
element = $(element).parents('div.editablefields');
}
// Provide some feedback to the user while the form if being processed.
$(element).addClass('editablefields_throbber');
// Send the field form.
$.ajax({
type: "POST",
url: Drupal.settings.editablefields.url_submit,
data: $(element).find('form').serialize() + "&nid=" + $(element).attr("nid") + "&field=" + $(element).attr("field")+ "&delta=" + $(element).attr("delta"),
element: $(element),
success: function(response) {
// ALAN 20090730...
document.getElementById(response.totalscoreid).innerHTML = response.totalscorevalue;
document.getElementById(response.gradeid).innerHTML = response.gradevalue;
// END ALAN
$(element).removeClass('editablefields_throbber');
Drupal.editablefields.load(element);
},
error: function(msg) {
alert(Drupal.t("Error, unable to make update:") +"\n"+ msg.responseText);
$(element).removeClass('editablefields_throbber');
Drupal.editablefields.load(element);
}
// ALAN 20090730...
,
dataType: 'json'
// END ALAN
});
// Ensure same changes are not submitted more than once.
$(element).find(':input').each(function() {
$(this).attr("disabled", true);
});
// Do not actually submit.
return false;
};