summaryrefslogtreecommitdiff
path: root/rt/share/static/js/event-registration.js
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/static/js/event-registration.js')
-rw-r--r--rt/share/static/js/event-registration.js110
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);
+ });
+});