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
104
105
106
107
108
109
110
|
// Disable chosing individual objects when a scrip is applied globally
jQuery(function() {
var global_checkboxes = [
"form[name=AddRemoveScrip] input[type=checkbox][name^=AddScrip-][value=0]",
"form input[type=checkbox][name^=AddCustomField-][value=0]"
];
jQuery(global_checkboxes.join(", "))
.change(function(){
var self = jQuery(this);
var checked = self.prop("checked");
self.closest("form")
.find("table.collection input[type=checkbox]")
.prop("disabled", checked);
});
});
// Replace user references in history with the HTML versions
function ReplaceUserReferences() {
var users = jQuery(".user[data-replace=user]");
var ids = users.map(function(){
return "id=" + encodeURIComponent(jQuery(this).attr("data-user-id"))
}).toArray().join(";");
if (!ids.length)
return
jQuery.get(
RT.Config.WebPath + "/Helpers/UserInfo?" + ids,
function(json) {
users.each(function() {
var user = jQuery(this);
var uid = user.attr("data-user-id");
if (!json[uid])
return
user.removeAttr("data-replace")
.html( jQuery(json[uid]._html).html() );
});
}
);
}
jQuery(ReplaceUserReferences);
// Cascaded selects
jQuery(function() {
jQuery("select.cascade-by-optgroup").each(function(){
var name = this.name;
if (!name) return;
// Generate elements for cascading based on the master <select> ...
var complete = jQuery(this)
.clone(true, true)
.attr("name", name + "-Complete")
.attr("disabled", "disabled")
.hide()
.insertAfter(this);
var groups = jQuery(this)
.clone(true, true)
.attr("name", name + "-Groups")
.find("option").remove().end()
.find("optgroup").replaceWith(function(){
return jQuery("<option>").val(this.label).text(this.label);
}).end()
.prepend( complete.find("option[value='']") )
.insertBefore(this);
// Synchronize the <select> we just generated
var selected = jQuery("option[selected]", this).parent().attr("label");
jQuery('option[value="' + selected + '"]', groups).attr("selected", "selected");
// Wire it all up
groups.change(function(){
var name = this.name.replace(/-Groups$/, '');
var field = jQuery(this);
var subfield = field.next("select[name=" + name + "]");
var complete = subfield.next("select[name=" + name + "-Complete]");
var value = field.val();
filter_cascade_select( subfield[0], complete[0], value, true );
}).change();
});
});
jQuery( function() {
jQuery("input[type=file]").change( function() {
var input = jQuery(this);
var warning = input.next(".invalid");
if ( !input.val().match(/"/) ) {
warning.hide();
} else {
if (warning.length) {
warning.show();
} else {
input.val("");
jQuery("<span class='invalid'>")
.text(loc_key("quote_in_filename"))
.insertAfter(input);
}
}
});
});
jQuery(function() {
jQuery("#UpdateType").change(function(ev) {
jQuery(".messagebox-container")
.removeClass("action-response action-private")
.addClass("action-"+ev.target.value);
});
});
|