]> git.uio.no Git - usit-rt.git/blame - share/static/js/event-registration.js
Putting 4.2.0 on top of 4.0.17
[usit-rt.git] / share / static / js / event-registration.js
CommitLineData
af59614d
MKG
1// Disable chosing individual objects when a scrip is applied globally
2jQuery(function() {
3 var global_checkboxes = [
4 "form[name=AddRemoveScrip] input[type=checkbox][name^=AddScrip-][value=0]",
5 "form input[type=checkbox][name^=AddCustomField-][value=0]"
6 ];
7 jQuery(global_checkboxes.join(", "))
8 .change(function(){
9 var self = jQuery(this);
10 var checked = self.attr("checked");
11
12 self.closest("form")
13 .find("table.collection input[type=checkbox]")
14 .attr("disabled", checked ? "disabled" : "");
15 });
16});
17
18// Replace user references in history with the HTML versions
19function ReplaceUserReferences() {
20 var users = jQuery(".user[data-replace=user]");
21 var ids = users.map(function(){
22 return "id=" + encodeURIComponent(jQuery(this).attr("data-user-id"))
23 }).toArray().join(";");
24
25 if (!ids.length)
26 return
27
28 jQuery.get(
29 RT.Config.WebPath + "/Helpers/UserInfo?" + ids,
30 function(json) {
31 users.each(function() {
32 var user = jQuery(this);
33 var uid = user.attr("data-user-id");
34 if (!json[uid])
35 return
36 user.removeAttr("data-replace")
37 .html( jQuery(json[uid]._html).html() );
38 });
39 }
40 );
41}
42jQuery(ReplaceUserReferences);
43
44// Cascaded selects
45jQuery(function() {
46 jQuery("select.cascade-by-optgroup").each(function(){
47 var name = this.name;
48 if (!name) return;
49
50 // Generate elements for cascading based on the master <select> ...
51 var complete = jQuery(this)
52 .clone(true, true)
53 .attr("name", name + "-Complete")
54 .attr("disabled", "disabled")
55 .hide()
56 .insertAfter(this);
57
58 var groups = jQuery(this)
59 .clone(true, true)
60 .attr("name", name + "-Groups")
61 .find("option").remove().end()
62 .find("optgroup").replaceWith(function(){
63 return jQuery("<option>").val(this.label).text(this.label);
64 }).end()
65 .prepend( complete.find("option[value='']") )
66 .insertBefore(this);
67
68 // Synchronize the <select> we just generated
69 var selected = jQuery("option[selected]", this).parent().attr("label");
70 jQuery('option[value="' + selected + '"]', groups).attr("selected", "selected");
71
72 // Wire it all up
73 groups.change(function(){
74 var name = this.name.replace(/-Groups$/, '');
75 var field = jQuery(this);
76 var subfield = field.next("select[name=" + name + "]");
77 var complete = subfield.next("select[name=" + name + "-Complete]");
78 var value = field.val();
79 filter_cascade( subfield[0], complete[0], value, true );
80 }).change();
81 });
82});
83
84jQuery( function() {
85 jQuery("input[type=file]").change( function() {
86 var input = jQuery(this);
87 var warning = input.next(".invalid");
88
89 if ( !input.val().match(/"/) ) {
90 warning.hide();
91 } else {
92 if (warning.length) {
93 warning.show();
94 } else {
95 input.val("");
96 jQuery("<span class='invalid'>")
97 .text(loc_key("quote_in_filename"))
98 .insertAfter(input);
99 }
100 }
101 });
102});