diff options
Diffstat (limited to 'rt/share/static/js/event-registration.js')
-rw-r--r-- | rt/share/static/js/event-registration.js | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/rt/share/static/js/event-registration.js b/rt/share/static/js/event-registration.js new file mode 100644 index 0000000..4595879 --- /dev/null +++ b/rt/share/static/js/event-registration.js @@ -0,0 +1,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); + }); +}); |