diff --git a/modules/backend/formwidgets/DatePicker.php b/modules/backend/formwidgets/DatePicker.php index 09a0cf244..a583e4416 100644 --- a/modules/backend/formwidgets/DatePicker.php +++ b/modules/backend/formwidgets/DatePicker.php @@ -36,7 +36,7 @@ class DatePicker extends FormWidgetBase */ public function init() { - $this->mode = $this->getConfig('mode', $this->mode); + $this->mode = strtolower($this->getConfig('mode', $this->mode)); $this->minDate = $this->getConfig('minDate', $this->minDate); $this->maxDate = $this->getConfig('maxDate', $this->maxDate); } @@ -69,7 +69,7 @@ class DatePicker extends FormWidgetBase } $this->vars['value'] = $value ?: ''; - $this->vars['showTime'] = $this->mode == 'datetime' || $this->mode == 'time'; + $this->vars['mode'] = $this->mode; $this->vars['minDate'] = $this->minDate; $this->vars['maxDate'] = $this->maxDate; } @@ -80,11 +80,14 @@ class DatePicker extends FormWidgetBase public function loadAssets() { $this->addCss('vendor/pikaday/css/pikaday.css', 'core'); + $this->addCss('vendor/clockpicker/css/jquery-clockpicker.css', 'core'); $this->addCss('css/datepicker.css', 'core'); $this->addJs('vendor/moment/moment.js', 'core'); $this->addJs('vendor/pikaday/js/pikaday.js', 'core'); $this->addJs('vendor/pikaday/js/pikaday.jquery.js', 'core'); + $this->addJs('vendor/clockpicker/js/jquery-clockpicker.js', 'core'); $this->addJs('js/datepicker.js', 'core'); + $this->addJs('js/timepicker.js', 'core'); } /** diff --git a/modules/backend/formwidgets/TimePicker.php b/modules/backend/formwidgets/TimePicker.php deleted file mode 100644 index 6caabf243..000000000 --- a/modules/backend/formwidgets/TimePicker.php +++ /dev/null @@ -1,91 +0,0 @@ - - */ -class TimePicker extends FormWidgetBase -{ - /** - * {@inheritDoc} - */ - public $defaultAlias = 'timepicker'; - - /** - * @var bool Autoclose timepicker - */ - public $autoclose = true; - - /** - * @var string Text for "Done" button. - */ - public $donetext = 'Done'; - - /** - * @var string Popover placement: "top", "bottom", "left" or "right". - */ - public $placement = 'bottom'; - - /** - * @var string Popover arrow align: "left" or "right". - */ - public $align = 'right'; - - /** - * {@inheritDoc} - */ - public function init() - { - $this->autoclose = $this->getConfig('autoclose', $this->autoclose); - $this->donetext = $this->getConfig('donetext', $this->donetext); - $this->placement = $this->getConfig('placement', $this->placement); - $this->align = $this->getConfig('align', $this->align); - } - - /** - * {@inheritDoc} - */ - public function render() - { - $this->prepareVars(); - return $this->makePartial('timepicker'); - } - - /** - * Prepares the list data - */ - public function prepareVars() - { - $this->vars['name'] = $this->formField->getName(); - - $value = $this->getLoadData(); - - $this->vars['value'] = $value ?: ''; - $this->vars['autoclose'] = $this->autoclose; - $this->vars['donetext'] = $this->donetext; - $this->vars['placement'] = $this->placement; - $this->vars['align'] = $this->align; - } - - /** - * {@inheritDoc} - */ - public function loadAssets() - { - $this->addCss('css/jquery-clockpicker.min.css', 'core'); - $this->addJs('js/jquery-clockpicker.min.js', 'core'); - } - - /** - * {@inheritDoc} - */ - public function getSaveData($value) - { - return strlen($value) ? $value : null; - } -} diff --git a/modules/backend/formwidgets/datepicker/assets/js/datepicker.js b/modules/backend/formwidgets/datepicker/assets/js/datepicker.js index acbdf3777..47ea22ceb 100644 --- a/modules/backend/formwidgets/datepicker/assets/js/datepicker.js +++ b/modules/backend/formwidgets/datepicker/assets/js/datepicker.js @@ -3,7 +3,6 @@ * * Data attributes: * - data-control="datepicker" - enables the plugin on an element - * - data-show-time="value" - allow the time to be chosen * - data-min-date="value" - minimum date to allow * - data-max-date="value" - maximum date to allow * - data-year-range="value" - range of years to display @@ -11,7 +10,7 @@ * JavaScript API: * $('a#someElement').datePicker({ option: 'value' }) * - * Dependences: + * Dependences: * - Pikaday plugin (pikaday.js) * - Pikaday jQuery addon (pikaday.jquery.js) */ @@ -36,7 +35,6 @@ changeMonitor.pause() this.$input.pikaday({ - showTime: options.showTime, minDate: new Date(options.minDate), maxDate: new Date(options.maxDate), yearRange: options.yearRange, @@ -56,7 +54,6 @@ } DatePicker.DEFAULTS = { - showTime: false, minDate: '2000-01-01', maxDate: '2020-12-31', yearRange: 10 diff --git a/modules/backend/formwidgets/datepicker/assets/js/timepicker.js b/modules/backend/formwidgets/datepicker/assets/js/timepicker.js new file mode 100644 index 000000000..8b6684a90 --- /dev/null +++ b/modules/backend/formwidgets/datepicker/assets/js/timepicker.js @@ -0,0 +1,75 @@ +/* + * TimePicker plugin + * + * Data attributes: + * - data-control="timepicker" - enables the plugin on an element + * + * JavaScript API: + * $('a#someElement').timePicker({ option: 'value' }) + * + * Dependences: + * - Clockpicker plugin (jquery-clockpicker.js) + */ + ++function ($) { "use strict"; + + // DATEPICKER CLASS DEFINITION + // ============================ + + var TimePicker = function(element, options) { + var self = this + this.options = options + this.$el = $(element) + this.$input = this.$el.find('input:first') + + // Init + + var $form = this.$el.closest('form'), + changeMonitor = $form.data('oc.changeMonitor') + + if (changeMonitor !== undefined) + changeMonitor.pause() + + this.$input.clockpicker() + + if (changeMonitor !== undefined) + changeMonitor.resume() + } + + TimePicker.DEFAULTS = { + } + + // DATEPICKER PLUGIN DEFINITION + // ============================ + + var old = $.fn.timePicker + + $.fn.timePicker = function (option) { + var args = Array.prototype.slice.call(arguments, 1) + return this.each(function () { + var $this = $(this) + var data = $this.data('oc.timepicker') + var options = $.extend({}, TimePicker.DEFAULTS, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('oc.timepicker', (data = new TimePicker(this, options))) + else if (typeof option == 'string') data[option].apply(data, args) + }) + } + + $.fn.timePicker.Constructor = TimePicker + + // DATEPICKER NO CONFLICT + // ================= + + $.fn.timePicker.noConflict = function () { + $.fn.timePicker = old + return this + } + + // DATEPICKER DATA-API + // =============== + + $(document).on('render', function() { + $('[data-control="timepicker"]').timePicker() + }); + +}(window.jQuery); \ No newline at end of file diff --git a/modules/backend/formwidgets/timepicker/assets/css/jquery-clockpicker.css b/modules/backend/formwidgets/datepicker/assets/vendor/clockpicker/css/jquery-clockpicker.css similarity index 100% rename from modules/backend/formwidgets/timepicker/assets/css/jquery-clockpicker.css rename to modules/backend/formwidgets/datepicker/assets/vendor/clockpicker/css/jquery-clockpicker.css diff --git a/modules/backend/formwidgets/timepicker/assets/js/jquery-clockpicker.js b/modules/backend/formwidgets/datepicker/assets/vendor/clockpicker/js/jquery-clockpicker.js similarity index 100% rename from modules/backend/formwidgets/timepicker/assets/js/jquery-clockpicker.js rename to modules/backend/formwidgets/datepicker/assets/vendor/clockpicker/js/jquery-clockpicker.js diff --git a/modules/backend/formwidgets/datepicker/partials/_datepicker.htm b/modules/backend/formwidgets/datepicker/partials/_datepicker.htm index f0fae30b6..0713a805a 100644 --- a/modules/backend/formwidgets/datepicker/partials/_datepicker.htm +++ b/modules/backend/formwidgets/datepicker/partials/_datepicker.htm @@ -1,19 +1,82 @@ previewMode): ?>
-
- -
+ + + +
+ +
+ + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + + +
+ +
+ + + \ No newline at end of file diff --git a/modules/backend/formwidgets/timepicker/assets/css/jquery-clockpicker.min.css b/modules/backend/formwidgets/timepicker/assets/css/jquery-clockpicker.min.css deleted file mode 100644 index 584c9f569..000000000 --- a/modules/backend/formwidgets/timepicker/assets/css/jquery-clockpicker.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * ClockPicker v0.0.7 for jQuery (http://weareoutman.github.io/clockpicker/) - * Copyright 2014 Wang Shenwei. - * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE) - * - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;overflow:visible;margin:0;padding:0;z-index:auto;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;bottom:auto;left:auto;right:auto;top:auto;-webkit-transform:none;-ms-transform:none;transform:none}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.btn{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent}.btn.active:focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-block{display:block;width:100%}.text-primary{color:#428bca}.clockpicker .input-group-addon{cursor:pointer}.clockpicker-moving{cursor:move}.clockpicker-align-left.popover>.arrow{left:25px}.clockpicker-align-top.popover>.arrow{top:17px}.clockpicker-align-right.popover>.arrow{left:auto;right:25px}.clockpicker-align-bottom.popover>.arrow{top:auto;bottom:6px}.clockpicker-popover .popover-title{background-color:#fff;color:#999;font-size:24px;font-weight:700;line-height:30px;text-align:center}.clockpicker-popover .popover-title span{cursor:pointer}.clockpicker-popover .popover-content{background-color:#f8f8f8;padding:12px}.popover-content:last-child{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.clockpicker-plate{background-color:#fff;border:1px solid #ccc;border-radius:50%;width:200px;height:200px;overflow:visible;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clockpicker-canvas,.clockpicker-dial{width:200px;height:200px;position:absolute;left:-1px;top:-1px}.clockpicker-minutes{visibility:hidden}.clockpicker-tick{border-radius:50%;color:#666;line-height:26px;text-align:center;width:26px;height:26px;position:absolute;cursor:pointer}.clockpicker-tick.active,.clockpicker-tick:hover{background-color:#c0e5f7;background-color:rgba(0,149,221,.25)}.clockpicker-button{background-image:none;background-color:#fff;border-width:1px 0 0;border-top-left-radius:0;border-top-right-radius:0;margin:0;padding:10px 0;text-align: center}.clockpicker-button:hover{background-image:none;background-color:#ebebeb}.clockpicker-button:focus{outline:0!important}.clockpicker-dial{-webkit-transition:-webkit-transform 350ms,opacity 350ms;-moz-transition:-moz-transform 350ms,opacity 350ms;-ms-transition:-ms-transform 350ms,opacity 350ms;-o-transition:-o-transform 350ms,opacity 350ms;transition:transform 350ms,opacity 350ms}.clockpicker-dial-out{opacity:0}.clockpicker-hours.clockpicker-dial-out{-webkit-transform:scale(1.2,1.2);-moz-transform:scale(1.2,1.2);-ms-transform:scale(1.2,1.2);-o-transform:scale(1.2,1.2);transform:scale(1.2,1.2)}.clockpicker-minutes.clockpicker-dial-out{-webkit-transform:scale(.8,.8);-moz-transform:scale(.8,.8);-ms-transform:scale(.8,.8);-o-transform:scale(.8,.8);transform:scale(.8,.8)}.clockpicker-canvas{-webkit-transition:opacity 175ms;-moz-transition:opacity 175ms;-ms-transition:opacity 175ms;-o-transition:opacity 175ms;transition:opacity 175ms}.clockpicker-canvas-out{opacity:.25}.clockpicker-canvas-bearing,.clockpicker-canvas-fg{stroke:none;fill:#0095dd}.clockpicker-canvas-bg{stroke:none;fill:#c0e5f7}.clockpicker-canvas-bg-trans{fill:rgba(0,149,221,.25)}.clockpicker-canvas line{stroke:#0095dd;stroke-width:1;stroke-linecap:round}.clockpicker-button.am-button{margin:1px;padding:5px;border:1px solid rgba(0,0,0,.2);border-radius:4px}.clockpicker-button.pm-button{margin:1px 1px 1px 136px;padding:5px;border:1px solid rgba(0,0,0,.2);border-radius:4px} \ No newline at end of file diff --git a/modules/backend/formwidgets/timepicker/assets/js/jquery-clockpicker.min.js b/modules/backend/formwidgets/timepicker/assets/js/jquery-clockpicker.min.js deleted file mode 100644 index c8006a382..000000000 --- a/modules/backend/formwidgets/timepicker/assets/js/jquery-clockpicker.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * ClockPicker v0.0.7 (http://weareoutman.github.io/clockpicker/) - * Copyright 2014 Wang Shenwei. - * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE) - */ -!function(){function t(t){return document.createElementNS(p,t)}function i(t){return(10>t?"0":"")+t}function e(t){var i=++m+"";return t?t+i:i}function s(s,r){function p(t,i){var e=u.offset(),s=/^touch/.test(t.type),o=e.left+b,n=e.top+b,p=(s?t.originalEvent.touches[0]:t).pageX-o,h=(s?t.originalEvent.touches[0]:t).pageY-n,k=Math.sqrt(p*p+h*h),v=!1;if(!i||!(g-y>k||k>g+y)){t.preventDefault();var m=setTimeout(function(){c.addClass("clockpicker-moving")},200);l&&u.append(x.canvas),x.setHand(p,h,!i,!0),a.off(d).on(d,function(t){t.preventDefault();var i=/^touch/.test(t.type),e=(i?t.originalEvent.touches[0]:t).pageX-o,s=(i?t.originalEvent.touches[0]:t).pageY-n;(v||e!==p||s!==h)&&(v=!0,x.setHand(e,s,!1,!0))}),a.off(f).on(f,function(t){a.off(f),t.preventDefault();var e=/^touch/.test(t.type),s=(e?t.originalEvent.changedTouches[0]:t).pageX-o,l=(e?t.originalEvent.changedTouches[0]:t).pageY-n;(i||v)&&s===p&&l===h&&x.setHand(s,l),"hours"===x.currentView?x.toggleView("minutes",A/2):r.autoclose&&(x.minutesView.addClass("clockpicker-dial-out"),setTimeout(function(){x.done()},A/2)),u.prepend(j),clearTimeout(m),c.removeClass("clockpicker-moving"),a.off(d)})}}var h=n(V),u=h.find(".clockpicker-plate"),v=h.find(".clockpicker-hours"),m=h.find(".clockpicker-minutes"),T=h.find(".clockpicker-am-pm-block"),C="INPUT"===s.prop("tagName"),H=C?s:s.find("input"),P=s.find(".input-group-addon"),x=this;if(this.id=e("cp"),this.element=s,this.options=r,this.isAppended=!1,this.isShown=!1,this.currentView="hours",this.isInput=C,this.input=H,this.addon=P,this.popover=h,this.plate=u,this.hoursView=v,this.minutesView=m,this.amPmBlock=T,this.spanHours=h.find(".clockpicker-span-hours"),this.spanMinutes=h.find(".clockpicker-span-minutes"),this.spanAmPm=h.find(".clockpicker-span-am-pm"),this.amOrPm="PM",r.twelvehour){{var S=['
','",'","
"].join("");n(S)}n('').on("click",function(){x.amOrPm="AM",n(".clockpicker-span-am-pm").empty().append("AM")}).appendTo(this.amPmBlock),n('').on("click",function(){x.amOrPm="PM",n(".clockpicker-span-am-pm").empty().append("PM")}).appendTo(this.amPmBlock)}r.autoclose||n('").click(n.proxy(this.done,this)).appendTo(h),"top"!==r.placement&&"bottom"!==r.placement||"top"!==r.align&&"bottom"!==r.align||(r.align="left"),"left"!==r.placement&&"right"!==r.placement||"left"!==r.align&&"right"!==r.align||(r.align="top"),h.addClass(r.placement),h.addClass("clockpicker-align-"+r.align),this.spanHours.click(n.proxy(this.toggleView,this,"hours")),this.spanMinutes.click(n.proxy(this.toggleView,this,"minutes")),H.on("focus.clockpicker click.clockpicker",n.proxy(this.show,this)),P.on("click.clockpicker",n.proxy(this.toggle,this));var E,D,I,B,z=n('
');if(r.twelvehour)for(E=1;13>E;E+=1)D=z.clone(),I=E/6*Math.PI,B=g,D.css("font-size","120%"),D.css({left:b+Math.sin(I)*B-y,top:b-Math.cos(I)*B-y}),D.html(0===E?"00":E),v.append(D),D.on(k,p);else for(E=0;24>E;E+=1){D=z.clone(),I=E/6*Math.PI;var O=E>0&&13>E;B=O?w:g,D.css({left:b+Math.sin(I)*B-y,top:b-Math.cos(I)*B-y}),O&&D.css("font-size","120%"),D.html(0===E?"00":E),v.append(D),D.on(k,p)}for(E=0;60>E;E+=5)D=z.clone(),I=E/30*Math.PI,D.css({left:b+Math.sin(I)*g-y,top:b-Math.cos(I)*g-y}),D.css("font-size","120%"),D.html(i(E)),m.append(D),D.on(k,p);if(u.on(k,function(t){0===n(t.target).closest(".clockpicker-tick").length&&p(t,!0)}),l){var j=h.find(".clockpicker-canvas"),L=t("svg");L.setAttribute("class","clockpicker-svg"),L.setAttribute("width",M),L.setAttribute("height",M);var U=t("g");U.setAttribute("transform","translate("+b+","+b+")");var W=t("circle");W.setAttribute("class","clockpicker-canvas-bearing"),W.setAttribute("cx",0),W.setAttribute("cy",0),W.setAttribute("r",2);var N=t("line");N.setAttribute("x1",0),N.setAttribute("y1",0);var X=t("circle");X.setAttribute("class","clockpicker-canvas-bg"),X.setAttribute("r",y);var Y=t("circle");Y.setAttribute("class","clockpicker-canvas-fg"),Y.setAttribute("r",3.5),U.appendChild(N),U.appendChild(X),U.appendChild(Y),U.appendChild(W),L.appendChild(U),j.append(L),this.hand=N,this.bg=X,this.fg=Y,this.bearing=W,this.g=U,this.canvas=j}o(this.options.init)}function o(t){t&&"function"==typeof t&&t()}var c,n=window.jQuery,r=n(window),a=n(document),p="http://www.w3.org/2000/svg",l="SVGAngle"in window&&function(){var t,i=document.createElement("div");return i.innerHTML="",t=(i.firstChild&&i.firstChild.namespaceURI)==p,i.innerHTML="",t}(),h=function(){var t=document.createElement("div").style;return"transition"in t||"WebkitTransition"in t||"MozTransition"in t||"msTransition"in t||"OTransition"in t}(),u="ontouchstart"in window,k="mousedown"+(u?" touchstart":""),d="mousemove.clockpicker"+(u?" touchmove.clockpicker":""),f="mouseup.clockpicker"+(u?" touchend.clockpicker":""),v=navigator.vibrate?"vibrate":navigator.webkitVibrate?"webkitVibrate":null,m=0,b=100,g=80,w=54,y=13,M=2*b,A=h?350:1,V=['
','
','
',''," : ",'','',"
",'
','
','
','
','
',"
",'',"","
","
"].join("");s.DEFAULTS={"default":"",fromnow:0,placement:"bottom",align:"left",donetext:"完成",autoclose:!1,twelvehour:!1,vibrate:!0},s.prototype.toggle=function(){this[this.isShown?"hide":"show"]()},s.prototype.locate=function(){var t=this.element,i=this.popover,e=t.offset(),s=t.outerWidth(),o=t.outerHeight(),c=this.options.placement,n=this.options.align,r={};switch(i.show(),c){case"bottom":r.top=e.top+o;break;case"right":r.left=e.left+s;break;case"top":r.top=e.top-i.outerHeight();break;case"left":r.left=e.left-i.outerWidth()}switch(n){case"left":r.left=e.left;break;case"right":r.left=e.left+s-i.outerWidth();break;case"top":r.top=e.top;break;case"bottom":r.top=e.top+o-i.outerHeight()}i.css(r)},s.prototype.show=function(){if(!this.isShown){o(this.options.beforeShow);var t=this;this.isAppended||(c=n(document.body).append(this.popover),r.on("resize.clockpicker"+this.id,function(){t.isShown&&t.locate()}),this.isAppended=!0);var e=((this.input.prop("value")||this.options["default"]||"")+"").split(":");if("now"===e[0]){var s=new Date(+new Date+this.options.fromnow);e=[s.getHours(),s.getMinutes()]}this.hours=+e[0]||0,this.minutes=+e[1]||0,this.spanHours.html(i(this.hours)),this.spanMinutes.html(i(this.minutes)),this.toggleView("hours"),this.locate(),this.isShown=!0,a.on("click.clockpicker."+this.id+" focusin.clockpicker."+this.id,function(i){var e=n(i.target);0===e.closest(t.popover).length&&0===e.closest(t.addon).length&&0===e.closest(t.input).length&&t.hide()}),a.on("keyup.clockpicker."+this.id,function(i){27===i.keyCode&&t.hide()}),o(this.options.afterShow)}},s.prototype.hide=function(){o(this.options.beforeHide),this.isShown=!1,a.off("click.clockpicker."+this.id+" focusin.clockpicker."+this.id),a.off("keyup.clockpicker."+this.id),this.popover.hide(),o(this.options.afterHide)},s.prototype.toggleView=function(t,i){var e=!1;"minutes"===t&&"visible"===n(this.hoursView).css("visibility")&&(o(this.options.beforeHourSelect),e=!0);var s="hours"===t,c=s?this.hoursView:this.minutesView,r=s?this.minutesView:this.hoursView;this.currentView=t,this.spanHours.toggleClass("text-primary",s),this.spanMinutes.toggleClass("text-primary",!s),r.addClass("clockpicker-dial-out"),c.css("visibility","visible").removeClass("clockpicker-dial-out"),this.resetClock(i),clearTimeout(this.toggleViewTimer),this.toggleViewTimer=setTimeout(function(){r.css("visibility","hidden")},A),e&&o(this.options.afterHourSelect)},s.prototype.resetClock=function(t){var i=this.currentView,e=this[i],s="hours"===i,o=Math.PI/(s?6:30),c=e*o,n=s&&e>0&&13>e?w:g,r=Math.sin(c)*n,a=-Math.cos(c)*n,p=this;l&&t?(p.canvas.addClass("clockpicker-canvas-out"),setTimeout(function(){p.canvas.removeClass("clockpicker-canvas-out"),p.setHand(r,a)},t)):this.setHand(r,a)},s.prototype.setHand=function(t,e,s,o){var c,r=Math.atan2(t,-e),a="hours"===this.currentView,p=Math.PI/(a||s?6:30),h=Math.sqrt(t*t+e*e),u=this.options,k=a&&(g+w)/2>h,d=k?w:g;if(u.twelvehour&&(d=g),0>r&&(r=2*Math.PI+r),c=Math.round(r/p),r=c*p,u.twelvehour?a?0===c&&(c=12):(s&&(c*=5),60===c&&(c=0)):a?(12===c&&(c=0),c=k?0===c?12:c:0===c?0:c+12):(s&&(c*=5),60===c&&(c=0)),this[this.currentView]!==c&&v&&this.options.vibrate&&(this.vibrateTimer||(navigator[v](10),this.vibrateTimer=setTimeout(n.proxy(function(){this.vibrateTimer=null},this),100))),this[this.currentView]=c,this[a?"spanHours":"spanMinutes"].html(i(c)),!l)return void this[a?"hoursView":"minutesView"].find(".clockpicker-tick").each(function(){var t=n(this);t.toggleClass("active",c===+t.html())});o||!a&&c%5?(this.g.insertBefore(this.hand,this.bearing),this.g.insertBefore(this.bg,this.fg),this.bg.setAttribute("class","clockpicker-canvas-bg clockpicker-canvas-bg-trans")):(this.g.insertBefore(this.hand,this.bg),this.g.insertBefore(this.fg,this.bg),this.bg.setAttribute("class","clockpicker-canvas-bg"));var f=Math.sin(r)*d,m=-Math.cos(r)*d;this.hand.setAttribute("x2",f),this.hand.setAttribute("y2",m),this.bg.setAttribute("cx",f),this.bg.setAttribute("cy",m),this.fg.setAttribute("cx",f),this.fg.setAttribute("cy",m)},s.prototype.done=function(){o(this.options.beforeDone),this.hide();var t=this.input.prop("value"),e=i(this.hours)+":"+i(this.minutes);this.options.twelvehour&&(e+=this.amOrPm),this.input.prop("value",e),e!==t&&(this.input.triggerHandler("change"),this.isInput||this.element.trigger("change")),this.options.autoclose&&this.input.trigger("blur"),o(this.options.afterDone)},s.prototype.remove=function(){this.element.removeData("clockpicker"),this.input.off("focus.clockpicker click.clockpicker"),this.addon.off("click.clockpicker"),this.isShown&&this.hide(),this.isAppended&&(r.off("resize.clockpicker"+this.id),this.popover.remove())},n.fn.clockpicker=function(t){var i=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=n(this),o=e.data("clockpicker");if(o)"function"==typeof o[t]&&o[t].apply(o,i);else{var c=n.extend({},s.DEFAULTS,e.data(),"object"==typeof t&&t);e.data("clockpicker",new s(e,c))}})}}(); \ No newline at end of file diff --git a/modules/backend/formwidgets/timepicker/partials/_timepicker.htm b/modules/backend/formwidgets/timepicker/partials/_timepicker.htm deleted file mode 100644 index 5ef840da5..000000000 --- a/modules/backend/formwidgets/timepicker/partials/_timepicker.htm +++ /dev/null @@ -1,22 +0,0 @@ -previewMode): ?> -
- -
- -
- - - \ No newline at end of file