moduleorder.js
2.14 KB
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
!(function() {
jQuery(document).ready(function($) {
var $field = $('.module-ajax-ordering'),
$url = $field.data('url'),
$clientId = $field.data('client-id'),
$element = document.getElementById($field.data('element')),
$linkedField = $field.data('linked-field') ? $field.data('linked-field') : 'jform_position',
$linkedFieldEl = $('#' + $linkedField),
$originalOrder = $field.data('ordering'),
$originalPos = $linkedFieldEl.val(),
$name = $field.data('name'),
$attr = $field.data('client-attr') ? $field.data('client-attr') : '',
$id = $field.attr('id') + '_1',
$orders = new Array(),
getNewOrder = function() {
$.ajax({
type: "GET",
dataType: "json",
url: $url,
data: {
"client_id": $clientId,
"position" : $originalPos
}
})
.fail(function (jqXHR, textStatus, error) {
Joomla.renderMessages(Joomla.ajaxErrorsMessages(jqXHR, textStatus, error));
window.scrollTo(0, 0);
})
.done(function (response) {
if (response.data)
{
// Check if everything is OK
if (response.data.length > 0)
{
var i;
for (i = 0; i < response.data.length; ++i) {
$orders[i] = response.data[i].split(',');
}
// Remove previous <select>, it will be recreated by writeDynaList()
var $previous = $("#" + $id);
if ($previous.data('chosen')){
$previous.chosen('destroy');
}
$previous.remove();
writeDynaList('name="' + $name + '" id="' + $id +'"' + $attr, $orders, $originalPos, $originalPos, $originalOrder, $element);
// Add chosen to the element
$("#" + $id).chosen();
}
}
// Render messages, if any. There are only message in case of errors.
if (typeof response.messages == 'object' && response.messages !== null)
{
Joomla.renderMessages(response.messages);
window.scrollTo(0, 0);
}
});
};
// Initialize the field on document ready
getNewOrder();
// Event listener for the linked field
$linkedFieldEl.on('change', function() {
$originalPos = $linkedFieldEl.val();
getNewOrder();
});
});
})();