X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FNoAuth%2Fjs%2Futil.js;h=47322261261d0c0b3c53db6b1b9c1f1ecf31add8;hb=31f3763747b82764bb019cfab5b2a2945fc9a99d;hp=62ee922f9c4a87bcee57464a15fa3e3f40c72891;hpb=6587f6ba7d047ddc1686c080090afe7d53365bd4;p=freeside.git diff --git a/rt/share/html/NoAuth/js/util.js b/rt/share/html/NoAuth/js/util.js index 62ee922f9..473222612 100644 --- a/rt/share/html/NoAuth/js/util.js +++ b/rt/share/html/NoAuth/js/util.js @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -222,35 +222,47 @@ function doOnLoad( js ) { } jQuery(function() { - jQuery(".ui-datepicker:not(.withtime)").datepicker( { - dateFormat: 'yy-mm-dd', - constrainInput: false - } ); - - jQuery(".ui-datepicker.withtime").datepicker( { + var opts = { dateFormat: 'yy-mm-dd', constrainInput: false, - onSelect: function( dateText, inst ) { - // trigger timepicker to get time - var button = document.createElement('input'); - button.setAttribute('type', 'button'); - jQuery(button).width('5em'); - jQuery(button).insertAfter(this); - jQuery(button).timepickr({val: '00:00'}); - var date_input = this; - - jQuery(button).blur( function() { - var time = jQuery(button).val(); - if ( ! time.match(/\d\d:\d\d/) ) { - time = '00:00'; - } - jQuery(date_input).val( dateText + ' ' + time + ':00' ); - jQuery(button).remove(); - } ); - - jQuery(button).focus(); - } - } ); + showButtonPanel: true, + changeMonth: true, + changeYear: true, + showOtherMonths: true, + selectOtherMonths: true + }; + jQuery(".ui-datepicker:not(.withtime)").datepicker(opts); + jQuery(".ui-datepicker.withtime").datetimepicker( jQuery.extend({}, opts, { + stepHour: 1, + // We fake this by snapping below for the minute slider + //stepMinute: 5, + hourGrid: 6, + minuteGrid: 15, + showSecond: false, + timeFormat: 'hh:mm:ss' + }) ).each(function(index, el) { + var tp = jQuery.datepicker._get( jQuery.datepicker._getInst(el), 'timepicker'); + if (!tp) return; + + // Hook after _injectTimePicker so we can modify the minute_slider + // right after it's first created + tp._base_injectTimePicker = tp._injectTimePicker; + tp._injectTimePicker = function() { + this._base_injectTimePicker.apply(this, arguments); + + // Now that we have minute_slider, modify it to be stepped for mouse movements + var slider = jQuery.data(this.minute_slider[0], "slider"); + slider._base_normValueFromMouse = slider._normValueFromMouse; + slider._normValueFromMouse = function() { + var value = this._base_normValueFromMouse.apply(this, arguments); + var old_step = this.options.step; + this.options.step = 5; + var aligned = this._trimAlignValue( value ); + this.options.step = old_step; + return aligned; + }; + }; + }); }); function textToHTML(value) { @@ -261,7 +273,7 @@ function textToHTML(value) { .replace(/\n/g, "\n
"); }; -function ReplaceAllTextareas(encoded) { +function ReplaceAllTextareas() { var sAgent = navigator.userAgent.toLowerCase(); if (!CKEDITOR.env.isCompatible || sAgent.indexOf('iphone') != -1 || @@ -276,26 +288,15 @@ function ReplaceAllTextareas(encoded) { var textArea = allTextAreas[i]; if (jQuery(textArea).hasClass("messagebox")) { // Turn the original plain text content into HTML - if (encoded == 0) { + var type = jQuery("#"+textArea.name+"Type"); + if (type.val() != "text/html") textArea.value = textToHTML(textArea.value); - } - // For this javascript - var CKeditorEncoded = document.createElement('input'); - CKeditorEncoded.setAttribute('type', 'hidden'); - CKeditorEncoded.setAttribute('name', 'CKeditorEncoded'); - CKeditorEncoded.setAttribute('value', '1'); - textArea.parentNode.appendChild(CKeditorEncoded); - // For fckeditor - var typeField = document.createElement('input'); - typeField.setAttribute('type', 'hidden'); - typeField.setAttribute('name', textArea.name + 'Type'); - typeField.setAttribute('value', 'text/html'); - textArea.parentNode.appendChild(typeField); + // Set the type + type.val("text/html"); - - CKEDITOR.replace(textArea.name,{width:'100%',height:'<% RT->Config->Get('MessageBoxRichTextHeight') %>'}); - CKEDITOR.basePath = "<%RT->Config->Get('WebPath')%>/NoAuth/RichText/"; + CKEDITOR.replace(textArea.name,{width:'100%',height:<% RT->Config->Get('MessageBoxRichTextHeight') |n,j%>}); + CKEDITOR.basePath = <%RT->Config->Get('WebPath')|n,j%>+"/NoAuth/RichText/"; jQuery("#" + textArea.name + "___Frame").addClass("richtext-editor"); } @@ -324,6 +325,16 @@ function update_addprincipal_title(title) { // when a value is selected from the autocompleter function addprincipal_onselect(ev, ui) { + + // if principal link exists, we shall go there instead + var principal_link = jQuery(ev.target).closest('form').find('ul.ui-tabs-nav a[href="#acl-' + ui.item.id + '"]:first'); + if (principal_link.size()) { + jQuery(this).val('').blur(); + update_addprincipal_title( '' ); // reset title to blank for #acl-AddPrincipal + principal_link.click(); + return false; + } + // pass the item's value along as the title since the input's value // isn't actually updated yet toggle_addprincipal_validity(this, true, ui.item.value);