Version Description
- Some fixes
Download this release
Release Info
Developer | webtemyk |
Plugin | Auto Post Thumbnail |
Version | 3.9.8 |
Comparing to | |
See all releases |
Code changes from version 3.9.7 to 3.9.8
- admin/assets/css/license-manager.css +0 -1
- admin/assets/css/settings.css +5 -5
- admin/assets/img/about/Sequence-01.gif +0 -0
- admin/assets/img/about/Sequence-02.gif +0 -0
- admin/assets/img/about/Sequence-03.png +0 -0
- admin/assets/img/about/Sequence-04.gif +0 -0
- admin/assets/img/about/Sequence-05.gif +0 -0
- admin/assets/img/about/Sequence-06.gif +0 -0
- admin/assets/img/about/icon-2.png +0 -0
- admin/assets/img/about/icon-3.png +0 -0
- admin/assets/img/about/icon-4.png +0 -0
- admin/assets/img/about/icon-5.png +0 -0
- admin/assets/img/about/icon-6.png +0 -0
- admin/assets/img/about/icon1.png +0 -0
- admin/assets/img/about/interface-1.png +0 -0
- admin/assets/img/about/interface-2.png +0 -0
- admin/assets/img/about/interface-3.png +0 -0
- admin/assets/js/_Chart.min.js +0 -10
- admin/assets/js/admin-thumbnail.js +74 -58
- admin/assets/js/generate.js +3 -3
- admin/assets/js/license-manager.js +1 -1
- admin/assets/js/search-page.js +111 -96
- admin/assets/js/upload-font.js +2 -2
- admin/class-page-logger.php +240 -242
- admin/class-page.php +298 -292
- admin/class-wapt-activation.php +2 -2
- admin/pages/about.php +69 -68
- admin/pages/generate.php +177 -170
- admin/pages/image.php +460 -462
- admin/pages/license.php +214 -210
- admin/pages/log.php +103 -102
- admin/pages/settings.php +256 -248
- admin/views/media-library.php +259 -251
- admin/views/pro.php +17 -17
- admin/views/pro_column.php +10 -10
- admin/views/sources/google.php +123 -132
- admin/views/tab-about.php +424 -365
- admin/views/tab-generate.php +220 -215
- admin/views/tab-license.php +150 -150
- auto-post-thumbnail.php +32 -36
- fonts/{Arial.ttf → arial.ttf} +0 -0
- fonts/{Segoeui.ttf → segoeui.ttf} +0 -0
- fonts/{Tahoma.ttf → tahoma.ttf} +0 -0
- includes/class-apt.php +214 -183
- includes/class-plugin.php +556 -551
- includes/class-post-images.php +174 -164
- includes/class-wapt-image.php +468 -468
- includes/class.generate-result.php +174 -164
- includes/controls/class.color.php +55 -56
- includes/controls/class.fonts.php +41 -36
- includes/controls/class.mediabutton.php +54 -49
- includes/image-search/boot.php +7 -7
- includes/image-search/class-google-images.php +103 -100
- includes/image-search/result/class.founded-image.php +11 -2
- includes/image-search/result/class.google-founded-image.php +0 -1
- includes/image-search/result/class.response.php +67 -67
- libs/factory/adverts/boot.php +12 -12
- libs/factory/adverts/includes/class-base.php +6 -6
- libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
- libs/factory/adverts/includes/class-rest-request.php +4 -4
- libs/factory/adverts/langs/{wbcr_factory_adverts_129-ru_RU.mo → wbcr_factory_adverts_130-ru_RU.mo} +0 -0
- libs/factory/adverts/langs/{wbcr_factory_adverts_129-ru_RU.po → wbcr_factory_adverts_130-ru_RU.po} +0 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.color.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.fonts.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.gradient.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.integer.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.pattern.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +1 -1
admin/assets/css/license-manager.css
CHANGED
@@ -1,4 +1,3 @@
|
|
1 |
-
|
2 |
.not-visible-in-manager {
|
3 |
display: none;
|
4 |
}
|
|
|
1 |
.not-visible-in-manager {
|
2 |
display: none;
|
3 |
}
|
admin/assets/css/settings.css
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
padding: 0px 30px;
|
4 |
}
|
5 |
|
6 |
-
.factory-bootstrap-
|
7 |
{
|
8 |
width: 120px !important;
|
9 |
background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
|
@@ -14,7 +14,7 @@
|
|
14 |
top: 5px;
|
15 |
}
|
16 |
|
17 |
-
.factory-bootstrap-
|
18 |
{
|
19 |
display: inline;
|
20 |
background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
|
@@ -27,7 +27,7 @@
|
|
27 |
font-size: 16px !important;
|
28 |
}
|
29 |
|
30 |
-
.factory-bootstrap-
|
31 |
{
|
32 |
text-shadow: none;
|
33 |
color: #fff !important;
|
@@ -152,13 +152,13 @@ span.wapt-icon-pro
|
|
152 |
box-shadow: none !important;
|
153 |
}
|
154 |
|
155 |
-
.factory-bootstrap-
|
156 |
{
|
157 |
width: 30px;
|
158 |
height: 30px;
|
159 |
}
|
160 |
|
161 |
-
.factory-bootstrap-
|
162 |
{
|
163 |
width: 70px;
|
164 |
font-family: Monospace, serif;
|
3 |
padding: 0px 30px;
|
4 |
}
|
5 |
|
6 |
+
.factory-bootstrap-454 .factory-ajax-loader
|
7 |
{
|
8 |
width: 120px !important;
|
9 |
background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
|
14 |
top: 5px;
|
15 |
}
|
16 |
|
17 |
+
.factory-bootstrap-454 select.form-control
|
18 |
{
|
19 |
display: inline;
|
20 |
background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
|
27 |
font-size: 16px !important;
|
28 |
}
|
29 |
|
30 |
+
.factory-bootstrap-454 .btn-default.active, .factory-bootstrap-454 .btn-default:active
|
31 |
{
|
32 |
text-shadow: none;
|
33 |
color: #fff !important;
|
152 |
box-shadow: none !important;
|
153 |
}
|
154 |
|
155 |
+
.factory-bootstrap-454 .factory-color .factory-background, .factory-bootstrap-454 .factory-color .factory-pattern
|
156 |
{
|
157 |
width: 30px;
|
158 |
height: 30px;
|
159 |
}
|
160 |
|
161 |
+
.factory-bootstrap-454 .factory-color .factory-color-hex
|
162 |
{
|
163 |
width: 70px;
|
164 |
font-family: Monospace, serif;
|
admin/assets/img/about/Sequence-01.gif
ADDED
Binary file
|
admin/assets/img/about/Sequence-02.gif
ADDED
Binary file
|
admin/assets/img/about/Sequence-03.png
ADDED
Binary file
|
admin/assets/img/about/Sequence-04.gif
ADDED
Binary file
|
admin/assets/img/about/Sequence-05.gif
ADDED
Binary file
|
admin/assets/img/about/Sequence-06.gif
ADDED
Binary file
|
admin/assets/img/about/icon-2.png
ADDED
Binary file
|
admin/assets/img/about/icon-3.png
ADDED
Binary file
|
admin/assets/img/about/icon-4.png
ADDED
Binary file
|
admin/assets/img/about/icon-5.png
ADDED
Binary file
|
admin/assets/img/about/icon-6.png
ADDED
Binary file
|
admin/assets/img/about/icon1.png
ADDED
Binary file
|
admin/assets/img/about/interface-1.png
ADDED
Binary file
|
admin/assets/img/about/interface-2.png
ADDED
Binary file
|
admin/assets/img/about/interface-3.png
ADDED
Binary file
|
admin/assets/js/_Chart.min.js
DELETED
@@ -1,10 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Chart.js
|
3 |
-
* http://chartjs.org/
|
4 |
-
* Version: 2.7.1
|
5 |
-
*
|
6 |
-
* Copyright 2017 Nick Downie
|
7 |
-
* Released under the MIT license
|
8 |
-
* https://github.com/chartjs/Chart.js/blob/master/LICENSE.md
|
9 |
-
*/
|
10 |
-
window.apthumb=window.apthumb||{};!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window.apthumb:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Chart=t()}}(function(){return function t(e,n,i){function a(r,l){if(!n[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[r]={exports:{}};e[r][0].call(d.exports,function(t){var n=e[r][1][t];return a(n||t)},d,d.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;r<i.length;r++)a(i[r]);return a}({1:[function(t,e,n){},{}],2:[function(t,e,n){function i(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3})$/i);if(i){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i[a]+i[a],16)}else if(i=t.match(/^#([a-fA-F0-9]{6})$/i)){i=i[1];for(a=0;a<e.length;a++)e[a]=parseInt(i.slice(2*a,2*a+2),16)}else if(i=t.match(/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=parseInt(i[a+1]);n=parseFloat(i[4])}else if(i=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i)){for(a=0;a<e.length;a++)e[a]=Math.round(2.55*parseFloat(i[a+1]));n=parseFloat(i[4])}else if(i=t.match(/(\w+)/)){if("transparent"==i[1])return[0,0,0,0];if(!(e=c[i[1]]))return}for(var a=0;a<e.length;a++)e[a]=u(e[a],0,255);return n=n||0==n?u(n,0,1):1,e[3]=n,e}}function a(t){if(t){var e=t.match(/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[u(parseInt(e[1]),0,360),u(parseFloat(e[2]),0,100),u(parseFloat(e[3]),0,100),u(isNaN(n)?1:n,0,1)]}}}function o(t){if(t){var e=t.match(/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/);if(e){var n=parseFloat(e[4]);return[u(parseInt(e[1]),0,360),u(parseFloat(e[2]),0,100),u(parseFloat(e[3]),0,100),u(isNaN(n)?1:n,0,1)]}}}function r(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function l(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function s(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function u(t,e,n){return Math.min(Math.max(e,t),n)}function d(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var c=t(6);e.exports={getRgba:i,getHsla:a,getRgb:function(t){var e=i(t);return e&&e.slice(0,3)},getHsl:function(t){var e=a(t);return e&&e.slice(0,3)},getHwb:o,getAlpha:function(t){var e=i(t);return e?e[3]:(e=a(t))?e[3]:(e=o(t))?e[3]:void 0},hexString:function(t){return"#"+d(t[0])+d(t[1])+d(t[2])},rgbString:function(t,e){return e<1||t[3]&&t[3]<1?r(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:r,percentString:function(t,e){return e<1||t[3]&&t[3]<1?l(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"},percentaString:l,hslString:function(t,e){return e<1||t[3]&&t[3]<1?s(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:s,hwbString:function(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return h[t.slice(0,3)]}};var h={};for(var f in c)h[c[f]]=f},{6:6}],3:[function(t,e,n){var i=t(5),a=t(2),o=function(t){if(t instanceof o)return t;if(!(this instanceof o))return new o(t);this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;"string"==typeof t?(e=a.getRgba(t))?this.setValues("rgb",e):(e=a.getHsla(t))?this.setValues("hsl",e):(e=a.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e))};o.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,o=2*a-1,r=n.alpha()-i.alpha(),l=((o*r==-1?o:(o+r)/(1+o*r))+1)/2,s=1-l;return this.rgb(l*n.red()+s*i.red(),l*n.green()+s*i.green(),l*n.blue()+s*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new o,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},o.prototype.setValues=function(t,e){var n,a=this.values,o=this.spaces,r=this.maxes,l=1;if(this.valid=!0,"alpha"===t)l=e;else if(e.length)a[t]=e.slice(0,t.length),l=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)a[t][n]=e[t.charAt(n)];l=e.a}else if(void 0!==e[o[t][0]]){var s=o[t];for(n=0;n<t.length;n++)a[t][n]=e[s[n]];l=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===l?a.alpha:l)),"alpha"===t)return!1;var u;for(n=0;n<t.length;n++)u=Math.max(0,Math.min(r[t][n],a[t][n])),a[t][n]=Math.round(u);for(var d in o)d!==t&&(a[d]=i[t][d](a[t]));return!0},o.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},o.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.apthumb.Color=o),e.exports=o},{2:2,5:5}],4:[function(t,e,n){function i(t){var e,n,i,a=t[0]/255,o=t[1]/255,r=t[2]/255,l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),(e=Math.min(60*e,360))<0&&(e+=360),i=(l+s)/2,n=s==l?0:i<=.5?u/(s+l):u/(2-s-l),[e,100*n,100*i]}function a(t){var e,n,i,a=t[0],o=t[1],r=t[2],l=Math.min(a,o,r),s=Math.max(a,o,r),u=s-l;return n=0==s?0:u/s*1e3/10,s==l?e=0:a==s?e=(o-r)/u:o==s?e=2+(r-a)/u:r==s&&(e=4+(a-o)/u),(e=Math.min(60*e,360))<0&&(e+=360),i=s/255*1e3/10,[e,n,i]}function o(t){var e=t[0],n=t[1],a=t[2];return[i(t)[0],100*(1/255*Math.min(e,Math.min(n,a))),100*(a=1-1/255*Math.max(e,Math.max(n,a)))]}function l(t){var e,n,i,a,o=t[0]/255,r=t[1]/255,l=t[2]/255;return a=Math.min(1-o,1-r,1-l),e=(1-o-a)/(1-a)||0,n=(1-r-a)/(1-a)||0,i=(1-l-a)/(1-a)||0,[100*e,100*n,100*i,100*a]}function s(t){return C[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function d(t){var e,n,i,a=u(t),o=a[0],r=a[1],l=a[2];return o/=95.047,r/=100,l/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,e=116*r-16,n=500*(o-r),i=200*(r-l),[e,n,i]}function c(t){var e,n,i,a,o,r=t[0]/360,l=t[1]/100,s=t[2]/100;if(0==l)return o=255*s,[o,o,o];e=2*s-(n=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(i=r+1/3*-(u-1))<0&&i++,i>1&&i--,o=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*o;return a}function h(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-n),l=255*i*(1-n*o),s=255*i*(1-n*(1-o)),i=255*i;switch(a){case 0:return[i,s,r];case 1:return[l,i,r];case 2:return[r,i,s];case 3:return[r,l,i];case 4:return[s,r,i];case 5:return[i,r,l]}}function f(t){var e,n,i,a,o=t[0]/360,l=t[1]/100,s=t[2]/100,u=l+s;switch(u>1&&(l/=u,s/=u),e=Math.floor(6*o),n=1-s,i=6*o-e,0!=(1&e)&&(i=1-i),a=l+i*(n-l),e){default:case 6:case 0:r=n,g=a,b=l;break;case 1:r=a,g=n,b=l;break;case 2:r=l,g=n,b=a;break;case 3:r=l,g=a,b=n;break;case 4:r=a,g=l,b=n;break;case 5:r=n,g=l,b=a}return[255*r,255*g,255*b]}function p(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100,l=t[3]/100;return e=1-Math.min(1,a*(1-l)+l),n=1-Math.min(1,o*(1-l)+l),i=1-Math.min(1,r*(1-l)+l),[255*e,255*n,255*i]}function v(t){var e,n,i,a=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*a+-1.5372*o+-.4986*r,n=-.9689*a+1.8758*o+.0415*r,i=.0557*a+-.204*o+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),[255*e,255*n,255*i]}function m(t){var e,n,i,a=t[0],o=t[1],r=t[2];return a/=95.047,o/=100,r/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,n=500*(a-o),i=200*(o-r),[e,n,i]}function x(t){var e,n,i,a,o=t[0],r=t[1],l=t[2];return o<=8?a=(n=100*o/903.3)/100*7.787+16/116:(n=100*Math.pow((o+16)/116,3),a=Math.pow(n/100,1/3)),e=e/95.047<=.008856?e=95.047*(r/500+a-16/116)/7.787:95.047*Math.pow(r/500+a,3),i=i/108.883<=.008859?i=108.883*(a-l/200-16/116)/7.787:108.883*Math.pow(a-l/200,3),[e,n,i]}function y(t){var e,n,i,a=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),(n=360*e/2/Math.PI)<0&&(n+=360),i=Math.sqrt(o*o+r*r),[a,i,n]}function k(t){return v(x(t))}function w(t){var e,n,i,a=t[0],o=t[1];return i=t[2]/360*2*Math.PI,e=o*Math.cos(i),n=o*Math.sin(i),[a,e,n]}function M(t){return S[t]}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:l,rgb2keyword:s,rgb2xyz:u,rgb2lab:d,rgb2lch:function(t){return y(d(t))},hsl2rgb:c,hsl2hsv:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,a*=o<=1?o:2-o,n=(o+a)/2,e=2*a/(o+a),[i,100*e,100*n])},hsl2hwb:function(t){return o(c(t))},hsl2cmyk:function(t){return l(c(t))},hsl2keyword:function(t){return s(c(t))},hsv2rgb:h,hsv2hsl:function(t){var e,n,i=t[0],a=t[1]/100,o=t[2]/100;return n=(2-a)*o,e=a*o,e/=n<=1?n:2-n,e=e||0,n/=2,[i,100*e,100*n]},hsv2hwb:function(t){return o(h(t))},hsv2cmyk:function(t){return l(h(t))},hsv2keyword:function(t){return s(h(t))},hwb2rgb:f,hwb2hsl:function(t){return i(f(t))},hwb2hsv:function(t){return a(f(t))},hwb2cmyk:function(t){return l(f(t))},hwb2keyword:function(t){return s(f(t))},cmyk2rgb:p,cmyk2hsl:function(t){return i(p(t))},cmyk2hsv:function(t){return a(p(t))},cmyk2hwb:function(t){return o(p(t))},cmyk2keyword:function(t){return s(p(t))},keyword2rgb:M,keyword2hsl:function(t){return i(M(t))},keyword2hsv:function(t){return a(M(t))},keyword2hwb:function(t){return o(M(t))},keyword2cmyk:function(t){return l(M(t))},keyword2lab:function(t){return d(M(t))},keyword2xyz:function(t){return u(M(t))},xyz2rgb:v,xyz2lab:m,xyz2lch:function(t){return y(m(t))},lab2xyz:x,lab2rgb:k,lab2lch:y,lch2lab:w,lch2xyz:function(t){return x(w(t))},lch2rgb:function(t){return k(w(t))}};var S={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},C={};for(var _ in S)C[JSON.stringify(S[_])]=_},{}],5:[function(t,e,n){var i=t(4),a=function(){return new u};for(var o in i){a[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),l=r[1],s=r[2];(a[l]=a[l]||{})[s]=a[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(o)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space,i=this.convs[n];e=a[n][t](i),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{4:4}],6:[function(t,e,n){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],7:[function(t,e,n){var i=t(29)();i.helpers=t(45),t(27)(i),i.defaults=t(25),i.Element=t(26),i.elements=t(40),i.Interaction=t(28),i.platform=t(48),t(31)(i),t(22)(i),t(23)(i),t(24)(i),t(30)(i),t(33)(i),t(32)(i),t(35)(i),t(54)(i),t(52)(i),t(53)(i),t(55)(i),t(56)(i),t(57)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(21)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i);var a=[];a.push(t(49)(i),t(50)(i),t(51)(i)),i.plugins.register(a),i.platform.initialize(),e.exports=i,"undefined"!=typeof window&&(window.apthumb.Chart=i),i.canvasHelpers=i.helpers.canvas},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,35:35,40:40,45:45,48:48,49:49,50:50,51:51,52:52,53:53,54:54,55:55,56:56,57:57,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": "+t.xLabel}},mode:"index",axis:"y"}}),e.exports=function(t){t.controllers.bar=t.DatasetController.extend({dataElementType:a.Rectangle,initialize:function(){var e,n=this;t.DatasetController.prototype.initialize.apply(n,arguments),(e=n.getMeta()).stack=n.getDataset().stack,e.bar=!0},update:function(t){var e,n,i=this,a=i.getMeta().data;for(i._ruler=i.getRuler(),e=0,n=a.length;e<n;++e)i.updateElement(a[e],e,t)},updateElement:function(t,e,n){var i=this,a=i.chart,r=i.getMeta(),l=i.getDataset(),s=t.custom||{},u=a.options.elements.rectangle;t._xScale=i.getScaleForId(r.xAxisID),t._yScale=i.getScaleForId(r.yAxisID),t._datasetIndex=i.index,t._index=e,t._model={datasetLabel:l.label,label:a.data.labels[e],borderSkipped:s.borderSkipped?s.borderSkipped:u.borderSkipped,backgroundColor:s.backgroundColor?s.backgroundColor:o.valueAtIndexOrDefault(l.backgroundColor,e,u.backgroundColor),borderColor:s.borderColor?s.borderColor:o.valueAtIndexOrDefault(l.borderColor,e,u.borderColor),borderWidth:s.borderWidth?s.borderWidth:o.valueAtIndexOrDefault(l.borderWidth,e,u.borderWidth)},i.updateElementGeometry(t,e,n),t.pivot()},updateElementGeometry:function(t,e,n){var i=this,a=t._model,o=i.getValueScale(),r=o.getBasePixel(),l=o.isHorizontal(),s=i._ruler||i.getRuler(),u=i.calculateBarValuePixels(i.index,e),d=i.calculateBarIndexPixels(i.index,e,s);a.horizontal=l,a.base=n?r:u.base,a.x=l?n?r:u.head:d.center,a.y=l?d.center:n?r:u.head,a.height=l?d.size:void 0,a.width=l?void 0:d.size},getValueScaleId:function(){return this.getMeta().yAxisID},getIndexScaleId:function(){return this.getMeta().xAxisID},getValueScale:function(){return this.getScaleForId(this.getValueScaleId())},getIndexScale:function(){return this.getScaleForId(this.getIndexScaleId())},getStackCount:function(t){var e,n,i=this,a=i.chart,o=i.getIndexScale().options.stacked,r=void 0===t?a.data.datasets.length:t+1,l=[];for(e=0;e<r;++e)(n=a.getDatasetMeta(e)).bar&&a.isDatasetVisible(e)&&(!1===o||!0===o&&-1===l.indexOf(n.stack)||void 0===o&&(void 0===n.stack||-1===l.indexOf(n.stack)))&&l.push(n.stack);return l.length},getStackIndex:function(t){return this.getStackCount(t)-1},getRuler:function(){var t,e,n=this,i=n.getIndexScale(),a=n.getStackCount(),o=n.index,r=[],l=i.isHorizontal(),s=l?i.left:i.top,u=s+(l?i.width:i.height);for(t=0,e=n.getMeta().data.length;t<e;++t)r.push(i.getPixelForValue(null,t,o));return{pixels:r,start:s,end:u,stackCount:a,scale:i}},calculateBarValuePixels:function(t,e){var n,i,a,o,r,l,s=this,u=s.chart,d=s.getMeta(),c=s.getValueScale(),h=u.data.datasets,f=c.getRightValue(h[t].data[e]),g=c.options.stacked,p=d.stack,v=0;if(g||void 0===g&&void 0!==p)for(n=0;n<t;++n)(i=u.getDatasetMeta(n)).bar&&i.stack===p&&i.controller.getValueScaleId()===c.id&&u.isDatasetVisible(n)&&(a=c.getRightValue(h[n].data[e]),(f<0&&a<0||f>=0&&a>0)&&(v+=a));return o=c.getPixelForValue(v),r=c.getPixelForValue(v+f),l=(r-o)/2,{size:l,base:o,head:r,center:r+l/2}},calculateBarIndexPixels:function(t,e,n){var i,a,r,l,s,u,d=this,c=n.scale.options,h=d.getStackIndex(t),f=n.pixels,g=f[e],p=f.length,v=n.start,m=n.end;return 1===p?(i=g>v?g-v:m-g,a=g<m?m-g:g-v):(e>0&&(i=(g-f[e-1])/2,e===p-1&&(a=i)),e<p-1&&(a=(f[e+1]-g)/2,0===e&&(i=a))),r=i*c.categoryPercentage,l=a*c.categoryPercentage,s=(r+l)/n.stackCount,u=s*c.barPercentage,u=Math.min(o.valueOrDefault(c.barThickness,u),o.valueOrDefault(c.maxBarThickness,1/0)),g-=r,g+=s*h,g+=(s-u)/2,{size:u,base:g,head:g+u,center:g+u/2}},draw:function(){var t=this,e=t.chart,n=t.getValueScale(),i=t.getMeta().data,a=t.getDataset(),r=i.length,l=0;for(o.canvas.clipArea(e.ctx,e.chartArea);l<r;++l)isNaN(n.getRightValue(a.data[l]))||i[l].draw();o.canvas.unclipArea(e.ctx)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;a.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:o.valueAtIndexOrDefault(e.hoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor?i.hoverBorderColor:o.valueAtIndexOrDefault(e.hoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:o.valueAtIndexOrDefault(e.hoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model,r=this.chart.options.elements.rectangle;a.backgroundColor=i.backgroundColor?i.backgroundColor:o.valueAtIndexOrDefault(e.backgroundColor,n,r.backgroundColor),a.borderColor=i.borderColor?i.borderColor:o.valueAtIndexOrDefault(e.borderColor,n,r.borderColor),a.borderWidth=i.borderWidth?i.borderWidth:o.valueAtIndexOrDefault(e.borderWidth,n,r.borderWidth)}}),t.controllers.horizontalBar=t.controllers.bar.extend({getValueScaleId:function(){return this.getMeta().xAxisID},getIndexScaleId:function(){return this.getMeta().yAxisID}})}},{25:25,40:40,45:45}],16:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+i.r+")"}}}}),e.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:a.Point,update:function(t){var e=this,n=e.getMeta().data;o.each(n,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.getMeta(),o=t.custom||{},r=i.getScaleForId(a.xAxisID),l=i.getScaleForId(a.yAxisID),s=i._resolveElementOptions(t,e),u=i.getDataset().data[e],d=i.index,c=n?r.getPixelForDecimal(.5):r.getPixelForValue("object"==typeof u?u:NaN,e,d),h=n?l.getBasePixel():l.getPixelForValue(u,e,d);t._xScale=r,t._yScale=l,t._options=s,t._datasetIndex=d,t._index=e,t._model={backgroundColor:s.backgroundColor,borderColor:s.borderColor,borderWidth:s.borderWidth,hitRadius:s.hitRadius,pointStyle:s.pointStyle,radius:n?0:s.radius,skip:o.skip||isNaN(c)||isNaN(h),x:c,y:h},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=o.valueOrDefault(n.hoverBackgroundColor,o.getHoverColor(n.backgroundColor)),e.borderColor=o.valueOrDefault(n.hoverBorderColor,o.getHoverColor(n.borderColor)),e.borderWidth=o.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},removeHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=n.backgroundColor,e.borderColor=n.borderColor,e.borderWidth=n.borderWidth,e.radius=n.radius},_resolveElementOptions:function(t,e){var n,i,a,r=this,l=r.chart,s=l.data.datasets[r.index],u=t.custom||{},d=l.options.elements.point,c=o.options.resolve,h=s.data[e],f={},g={chart:l,dataIndex:e,dataset:s,datasetIndex:r.index},p=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle"];for(n=0,i=p.length;n<i;++n)f[a=p[n]]=c([u[a],s[a],d[a]],g,e);return f.radius=c([u.radius,h?h.r:void 0,s.radius,d.radius],g,e),f}})}},{25:25,40:40,45:45}],17:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i],s=l&&l.custom||{},u=o.valueAtIndexOrDefault,d=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:u(r.backgroundColor,i,d.backgroundColor),strokeStyle:s.borderColor?s.borderColor:u(r.borderColor,i,d.borderColor),lineWidth:s.borderWidth?s.borderWidth:u(r.borderWidth,i,d.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)(a=r.getDatasetMeta(n)).data[o]&&(a.data[o].hidden=!a.data[o].hidden);r.update()}},cutoutPercentage:50,rotation:-.5*Math.PI,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.labels[t.index],i=": "+e.datasets[t.datasetIndex].data[t.index];return o.isArray(n)?(n=n.slice())[0]+=i:n+=i,n}}}}),i._set("pie",o.clone(i.doughnut)),i._set("pie",{cutoutPercentage:0}),e.exports=function(t){t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:a.Arc,linkScales:o.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var e=this,n=e.chart,i=n.chartArea,a=n.options,r=a.elements.arc,l=i.right-i.left-r.borderWidth,s=i.bottom-i.top-r.borderWidth,u=Math.min(l,s),d={x:0,y:0},c=e.getMeta(),h=a.cutoutPercentage,f=a.circumference;if(f<2*Math.PI){var g=a.rotation%(2*Math.PI),p=(g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0))+f,v={x:Math.cos(g),y:Math.sin(g)},m={x:Math.cos(p),y:Math.sin(p)},b=g<=0&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,w=h/100,M={x:y?-1:Math.min(v.x*(v.x<0?1:w),m.x*(m.x<0?1:w)),y:k?-1:Math.min(v.y*(v.y<0?1:w),m.y*(m.y<0?1:w))},S={x:b?1:Math.max(v.x*(v.x>0?1:w),m.x*(m.x>0?1:w)),y:x?1:Math.max(v.y*(v.y>0?1:w),m.y*(m.y>0?1:w))},C={width:.5*(S.x-M.x),height:.5*(S.y-M.y)};u=Math.min(l/C.width,s/C.height),d={x:-.5*(S.x+M.x),y:-.5*(S.y+M.y)}}n.borderWidth=e.getMaxBorderWidth(c.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(h?n.outerRadius/100*h:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=d.x*n.outerRadius,n.offsetY=d.y*n.outerRadius,c.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),o.each(c.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){var i=this,a=i.chart,r=a.chartArea,l=a.options,s=l.animation,u=(r.left+r.right)/2,d=(r.top+r.bottom)/2,c=l.rotation,h=l.rotation,f=i.getDataset(),g=n&&s.animateRotate?0:t.hidden?0:i.calculateCircumference(f.data[e])*(l.circumference/(2*Math.PI)),p=n&&s.animateScale?0:i.innerRadius,v=n&&s.animateScale?0:i.outerRadius,m=o.valueAtIndexOrDefault;o.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+a.offsetX,y:d+a.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:v,innerRadius:p,label:m(f.label,e,a.data.labels[e])}});var b=t._model;this.removeHoverStyle(t),n&&s.animateRotate||(b.startAngle=0===e?l.rotation:i.getMeta().data[e-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return o.each(n.data,function(n,a){t=e.data[a],isNaN(t)||n.hidden||(i+=Math.abs(t))}),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,o=t.length,r=0;r<o;r++)e=t[r]._model?t[r]._model.borderWidth:0,i=(n=t[r]._chart?t[r]._chart.config.data.datasets[a].hoverBorderWidth:0)>(i=e>i?e:i)?n:i;return i}})}},{25:25,40:40,45:45}],18:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),e.exports=function(t){function e(t,e){return o.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,update:function(t){var n,i,a,r=this,l=r.getMeta(),s=l.dataset,u=l.data||[],d=r.chart.options,c=d.elements.line,h=r.getScaleForId(l.yAxisID),f=r.getDataset(),g=e(f,d);for(g&&(a=s.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),s._scale=h,s._datasetIndex=r.index,s._children=u,s._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:a.tension?a.tension:o.valueOrDefault(f.lineTension,c.tension),backgroundColor:a.backgroundColor?a.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:a.borderWidth?a.borderWidth:f.borderWidth||c.borderWidth,borderColor:a.borderColor?a.borderColor:f.borderColor||c.borderColor,borderCapStyle:a.borderCapStyle?a.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:a.borderDash?a.borderDash:f.borderDash||c.borderDash,borderDashOffset:a.borderDashOffset?a.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:a.borderJoinStyle?a.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:a.fill?a.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:a.steppedLine?a.steppedLine:o.valueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:a.cubicInterpolationMode?a.cubicInterpolationMode:o.valueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode)},s.pivot()),n=0,i=u.length;n<i;++n)r.updateElement(u[n],n,t);for(g&&0!==s._model.tension&&r.updateBezierControlPoints(),n=0,i=u.length;n<i;++n)u[n].pivot()},getPointBackgroundColor:function(t,e){var n=this.chart.options.elements.point.backgroundColor,i=this.getDataset(),a=t.custom||{};return a.backgroundColor?n=a.backgroundColor:i.pointBackgroundColor?n=o.valueAtIndexOrDefault(i.pointBackgroundColor,e,n):i.backgroundColor&&(n=i.backgroundColor),n},getPointBorderColor:function(t,e){var n=this.chart.options.elements.point.borderColor,i=this.getDataset(),a=t.custom||{};return a.borderColor?n=a.borderColor:i.pointBorderColor?n=o.valueAtIndexOrDefault(i.pointBorderColor,e,n):i.borderColor&&(n=i.borderColor),n},getPointBorderWidth:function(t,e){var n=this.chart.options.elements.point.borderWidth,i=this.getDataset(),a=t.custom||{};return isNaN(a.borderWidth)?!isNaN(i.pointBorderWidth)||o.isArray(i.pointBorderWidth)?n=o.valueAtIndexOrDefault(i.pointBorderWidth,e,n):isNaN(i.borderWidth)||(n=i.borderWidth):n=a.borderWidth,n},updateElement:function(t,e,n){var i,a,r=this,l=r.getMeta(),s=t.custom||{},u=r.getDataset(),d=r.index,c=u.data[e],h=r.getScaleForId(l.yAxisID),f=r.getScaleForId(l.xAxisID),g=r.chart.options.elements.point;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),i=f.getPixelForValue("object"==typeof c?c:NaN,e,d),a=n?h.getBasePixel():r.calculatePointY(c,e,d),t._xScale=f,t._yScale=h,t._datasetIndex=d,t._index=e,t._model={x:i,y:a,skip:s.skip||isNaN(i)||isNaN(a),radius:s.radius||o.valueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:s.pointStyle||o.valueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:r.getPointBackgroundColor(t,e),borderColor:r.getPointBorderColor(t,e),borderWidth:r.getPointBorderWidth(t,e),tension:l.dataset._model?l.dataset._model.tension:0,steppedLine:!!l.dataset._model&&l.dataset._model.steppedLine,hitRadius:s.hitRadius||o.valueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,o,r=this,l=r.chart,s=r.getMeta(),u=r.getScaleForId(s.yAxisID),d=0,c=0;if(u.options.stacked){for(i=0;i<n;i++)if(a=l.data.datasets[i],"line"===(o=l.getDatasetMeta(i)).type&&o.yAxisID===u.id&&l.isDatasetVisible(i)){var h=Number(u.getRightValue(a.data[e]));h<0?c+=h||0:d+=h||0}var f=Number(u.getRightValue(t));return f<0?u.getPixelForValue(c+f):u.getPixelForValue(d+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){function t(t,e,n){return Math.max(Math.min(t,n),e)}var e,n,i,a,r=this,l=r.getMeta(),s=r.chart.chartArea,u=l.data||[];if(l.dataset._model.spanGaps&&(u=u.filter(function(t){return!t._model.skip})),"monotone"===l.dataset._model.cubicInterpolationMode)o.splineCurveMonotone(u);else for(e=0,n=u.length;e<n;++e)i=u[e]._model,a=o.splineCurve(o.previousItem(u,e)._model,i,o.nextItem(u,e)._model,l.dataset._model.tension),i.controlPointPreviousX=a.previous.x,i.controlPointPreviousY=a.previous.y,i.controlPointNextX=a.next.x,i.controlPointNextY=a.next.y;if(r.chart.options.elements.line.capBezierPoints)for(e=0,n=u.length;e<n;++e)(i=u[e]._model).controlPointPreviousX=t(i.controlPointPreviousX,s.left,s.right),i.controlPointPreviousY=t(i.controlPointPreviousY,s.top,s.bottom),i.controlPointNextX=t(i.controlPointNextX,s.left,s.right),i.controlPointNextY=t(i.controlPointNextY,s.top,s.bottom)},draw:function(){var t=this,n=t.chart,i=t.getMeta(),a=i.data||[],r=n.chartArea,l=a.length,s=0;for(o.canvas.clipArea(n.ctx,r),e(t.getDataset(),n.options)&&i.dataset.draw(),o.canvas.unclipArea(n.ctx);s<l;++s)a[s].draw(r)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,i=t.custom||{},a=t._model;a.radius=i.hoverRadius||o.valueAtIndexOrDefault(e.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),a.backgroundColor=i.hoverBackgroundColor||o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,n,o.getHoverColor(a.backgroundColor)),a.borderColor=i.hoverBorderColor||o.valueAtIndexOrDefault(e.pointHoverBorderColor,n,o.getHoverColor(a.borderColor)),a.borderWidth=i.hoverBorderWidth||o.valueAtIndexOrDefault(e.pointHoverBorderWidth,n,a.borderWidth)},removeHoverStyle:function(t){var e=this,n=e.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=t._model;void 0!==n.radius&&void 0===n.pointRadius&&(n.pointRadius=n.radius),r.radius=a.radius||o.valueAtIndexOrDefault(n.pointRadius,i,e.chart.options.elements.point.radius),r.backgroundColor=e.getPointBackgroundColor(t,i),r.borderColor=e.getPointBorderColor(t,i),r.borderWidth=e.getPointBorderWidth(t,i)}})}},{25:25,40:40,45:45}],19:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var o=0;o<i[0].data.length;++o)e.push('<li><span style="background-color:'+i[0].backgroundColor[o]+'"></span>'),a[o]&&e.push(a[o]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map(function(n,i){var a=t.getDatasetMeta(0),r=e.datasets[0],l=a.data[i].custom||{},s=o.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:s(r.backgroundColor,i,u.backgroundColor),strokeStyle:l.borderColor?l.borderColor:s(r.borderColor,i,u.borderColor),lineWidth:l.borderWidth?l.borderWidth:s(r.borderWidth,i,u.borderWidth),hidden:isNaN(r.data[i])||a.data[i].hidden,index:i}}):[]}},onClick:function(t,e){var n,i,a,o=e.index,r=this.chart;for(n=0,i=(r.data.datasets||[]).length;n<i;++n)(a=r.getDatasetMeta(n)).data[o].hidden=!a.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}}),e.exports=function(t){t.controllers.polarArea=t.DatasetController.extend({dataElementType:a.Arc,linkScales:o.noop,update:function(t){var e=this,n=e.chart,i=n.chartArea,a=e.getMeta(),r=n.options,l=r.elements.arc,s=Math.min(i.right-i.left,i.bottom-i.top);n.outerRadius=Math.max((s-l.borderWidth/2)/2,0),n.innerRadius=Math.max(r.cutoutPercentage?n.outerRadius/100*r.cutoutPercentage:1,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),e.outerRadius=n.outerRadius-n.radiusLength*e.index,e.innerRadius=e.outerRadius-n.radiusLength,a.count=e.countVisibleElements(),o.each(a.data,function(n,i){e.updateElement(n,i,t)})},updateElement:function(t,e,n){for(var i=this,a=i.chart,r=i.getDataset(),l=a.options,s=l.animation,u=a.scale,d=a.data.labels,c=i.calculateCircumference(r.data[e]),h=u.xCenter,f=u.yCenter,g=0,p=i.getMeta(),v=0;v<e;++v)isNaN(r.data[v])||p.data[v].hidden||++g;var m=l.startAngle,b=t.hidden?0:u.getDistanceFromCenterForValue(r.data[e]),x=m+c*g,y=x+(t.hidden?0:c),k=s.animateScale?0:u.getDistanceFromCenterForValue(r.data[e]);o.extend(t,{_datasetIndex:i.index,_index:e,_scale:u,_model:{x:h,y:f,innerRadius:0,outerRadius:n?k:b,startAngle:n&&s.animateRotate?m:x,endAngle:n&&s.animateRotate?m:y,label:o.valueAtIndexOrDefault(d,e,d[e])}}),i.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),e=this.getMeta(),n=0;return o.each(e.data,function(e,i){isNaN(t.data[i])||e.hidden||n++}),n},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{25:25,40:40,45:45}],20:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),e.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:a.Line,dataElementType:a.Point,linkScales:o.noop,update:function(t){var e=this,n=e.getMeta(),i=n.dataset,a=n.data,r=i.custom||{},l=e.getDataset(),s=e.chart.options.elements.line,u=e.chart.scale;void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),o.extend(n.dataset,{_datasetIndex:e.index,_scale:u,_children:a,_loop:!0,_model:{tension:r.tension?r.tension:o.valueOrDefault(l.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:l.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:l.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:l.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==l.fill?l.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:l.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:l.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:l.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:l.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),o.each(a,function(n,i){e.updateElement(n,i,t)},e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,a=t.custom||{},r=i.getDataset(),l=i.chart.scale,s=i.chart.options.elements.point,u=l.getPointPositionForValue(e,r.data[e]);void 0!==r.radius&&void 0===r.pointRadius&&(r.pointRadius=r.radius),void 0!==r.hitRadius&&void 0===r.pointHitRadius&&(r.pointHitRadius=r.hitRadius),o.extend(t,{_datasetIndex:i.index,_index:e,_scale:l,_model:{x:n?l.xCenter:u.x,y:n?l.yCenter:u.y,tension:a.tension?a.tension:o.valueOrDefault(r.lineTension,i.chart.options.elements.line.tension),radius:a.radius?a.radius:o.valueAtIndexOrDefault(r.pointRadius,e,s.radius),backgroundColor:a.backgroundColor?a.backgroundColor:o.valueAtIndexOrDefault(r.pointBackgroundColor,e,s.backgroundColor),borderColor:a.borderColor?a.borderColor:o.valueAtIndexOrDefault(r.pointBorderColor,e,s.borderColor),borderWidth:a.borderWidth?a.borderWidth:o.valueAtIndexOrDefault(r.pointBorderWidth,e,s.borderWidth),pointStyle:a.pointStyle?a.pointStyle:o.valueAtIndexOrDefault(r.pointStyle,e,s.pointStyle),hitRadius:a.hitRadius?a.hitRadius:o.valueAtIndexOrDefault(r.pointHitRadius,e,s.hitRadius)}}),t._model.skip=a.skip?a.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();o.each(e.data,function(n,i){var a=n._model,r=o.splineCurve(o.previousItem(e.data,i,!0)._model,a,o.nextItem(e.data,i,!0)._model,a.tension);a.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),a.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),a.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),a.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),n.pivot()})},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model;a.radius=n.hoverRadius?n.hoverRadius:o.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),a.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:o.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,o.getHoverColor(a.backgroundColor)),a.borderColor=n.hoverBorderColor?n.hoverBorderColor:o.valueAtIndexOrDefault(e.pointHoverBorderColor,i,o.getHoverColor(a.borderColor)),a.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:o.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,a.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,a=t._model,r=this.chart.options.elements.point;a.radius=n.radius?n.radius:o.valueAtIndexOrDefault(e.pointRadius,i,r.radius),a.backgroundColor=n.backgroundColor?n.backgroundColor:o.valueAtIndexOrDefault(e.pointBackgroundColor,i,r.backgroundColor),a.borderColor=n.borderColor?n.borderColor:o.valueAtIndexOrDefault(e.pointBorderColor,i,r.borderColor),a.borderWidth=n.borderWidth?n.borderWidth:o.valueAtIndexOrDefault(e.pointBorderWidth,i,r.borderWidth)}})}},{25:25,40:40,45:45}],21:[function(t,e,n){"use strict";t(25)._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),e.exports=function(t){t.controllers.scatter=t.controllers.line}},{25:25}],22:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:o.noop,onComplete:o.noop}}),e.exports=function(t){t.Animation=a.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a,o,r=this.animations;for(e.chart=t,i||(t.animating=!0),a=0,o=r.length;a<o;++a)if(r[a].chart===t)return void(r[a]=e);r.push(e),1===r.length&&this.requestAnimationFrame()},cancelAnimation:function(t){var e=o.findIndex(this.animations,function(e){return e.chart===t});-1!==e&&(this.animations.splice(e,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=o.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,a=0;a<i.length;)n=(e=i[a]).chart,e.currentStep=(e.currentStep||0)+t,e.currentStep=Math.min(e.currentStep,e.numSteps),o.callback(e.render,[n,e],n),o.callback(e.onAnimationProgress,[e],n),e.currentStep>=e.numSteps?(o.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(a,1)):++a}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},{25:25,26:26,45:45}],23:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(28),r=t(48);e.exports=function(t){function e(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=a.configMerge(i.global,i[t.type],t.options||{}),t}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}function l(t){return"top"===t||"bottom"===t}var s=t.plugins;t.types={},t.instances={},t.controllers={},a.extend(t.prototype,{construct:function(n,i){var o=this;i=e(i);var l=r.acquireContext(n,i),s=l&&l.canvas,u=s&&s.height,d=s&&s.width;o.id=a.uid(),o.ctx=l,o.canvas=s,o.config=i,o.width=d,o.height=u,o.aspectRatio=u?d/u:null,o.options=i.options,o._bufferedRender=!1,o.chart=o,o.controller=o,t.instances[o.id]=o,Object.defineProperty(o,"data",{get:function(){return o.config.data},set:function(t){o.config.data=t}}),l&&s?(o.initialize(),o.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return s.notify(t,"beforeInit"),a.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),s.notify(t,"afterInit"),t},clear:function(){return a.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,o=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(a.getMaximumWidth(i))),l=Math.max(0,Math.floor(o?r/o:a.getMaximumHeight(i)));if((e.width!==r||e.height!==l)&&(i.width=e.width=r,i.height=e.height=l,i.style.width=r+"px",i.style.height=l+"px",a.retinaScale(e,n.devicePixelRatio),!t)){var u={width:r,height:l};s.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;a.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),a.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,i=e.scales={},o=[];n.scales&&(o=o.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category",dposition:"bottom"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear",dposition:"left"}}))),n.scale&&o.push({options:n.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),a.each(o,function(n){var o=n.options,r=a.valueOrDefault(o.type,n.dtype),s=t.scaleService.getScaleConstructor(r);if(s){l(o.position)!==l(n.dposition)&&(o.position=n.dposition);var u=new s({id:o.id,options:o,ctx:e.ctx,chart:e});i[u.id]=u,u.mergeTicksOptions(),n.isDefault&&(e.scale=u)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return a.each(e.data.datasets,function(a,o){var r=e.getDatasetMeta(o),l=a.type||e.config.type;if(r.type&&r.type!==l&&(e.destroyDatasetMeta(o),r=e.getDatasetMeta(o)),r.type=l,n.push(r.type),r.controller)r.controller.updateIndex(o);else{var s=t.controllers[r.type];if(void 0===s)throw new Error('"'+r.type+'" is not a chart type.');r.controller=new s(e,o),i.push(r.controller)}},e),i},resetElements:function(){var t=this;a.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var e=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),n(e),!1!==s.notify(e,"beforeUpdate")){e.tooltip._data=e.data;var i=e.buildOrUpdateControllers();a.each(e.data.datasets,function(t,n){e.getDatasetMeta(n).controller.buildOrUpdateElements()},e),e.updateLayout(),a.each(i,function(t){t.reset()}),e.updateDatasets(),e.tooltip.initialize(),e.lastActive=[],s.notify(e,"afterUpdate"),e._bufferedRender?e._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:e.render(t)}},updateLayout:function(){var e=this;!1!==s.notify(e,"beforeLayout")&&(t.layoutService.update(this,this.width,this.height),s.notify(e,"afterScaleUpdate"),s.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(!1!==s.notify(t,"beforeDatasetsUpdate")){for(var e=0,n=t.data.datasets.length;e<n;++e)t.updateDataset(e);s.notify(t,"afterDatasetsUpdate")}},updateDataset:function(t){var e=this,n=e.getDatasetMeta(t),i={meta:n,index:t};!1!==s.notify(e,"beforeDatasetUpdate",[i])&&(n.controller.update(),s.notify(e,"afterDatasetUpdate",[i]))},render:function(e){var n=this;e&&"object"==typeof e||(e={duration:e,lazy:arguments[1]});var i=e.duration,o=e.lazy;if(!1!==s.notify(n,"beforeRender")){var r=n.options.animation,l=function(t){s.notify(n,"afterRender"),a.callback(r&&r.onComplete,[t],n)};if(r&&(void 0!==i&&0!==i||void 0===i&&0!==r.duration)){var u=new t.Animation({numSteps:(i||r.duration)/16.66,easing:e.easing||r.easing,render:function(t,e){var n=a.easing.effects[e.easing],i=e.currentStep,o=i/e.numSteps;t.draw(n(o),o,i)},onAnimationProgress:r.onProgress,onAnimationComplete:l});t.animationService.addAnimation(n,u,i,o)}else n.draw(),l(new t.Animation({numSteps:0,chart:n}));return n}},draw:function(t){var e=this;e.clear(),a.isNullOrUndef(t)&&(t=1),e.transition(t),!1!==s.notify(e,"beforeDraw",[t])&&(a.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e._drawTooltip(t),s.notify(e,"afterDraw",[t]))},transition:function(t){for(var e=this,n=0,i=(e.data.datasets||[]).length;n<i;++n)e.isDatasetVisible(n)&&e.getDatasetMeta(n).controller.transition(t);e.tooltip.transition(t)},drawDatasets:function(t){var e=this;if(!1!==s.notify(e,"beforeDatasetsDraw",[t])){for(var n=(e.data.datasets||[]).length-1;n>=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);s.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this,i=n.getDatasetMeta(t),a={meta:i,index:t,easingValue:e};!1!==s.notify(n,"beforeDatasetDraw",[a])&&(i.controller.draw(e),s.notify(n,"afterDatasetDraw",[a]))},_drawTooltip:function(t){var e=this,n=e.tooltip,i={tooltip:n,easingValue:t};!1!==s.notify(e,"beforeTooltipDraw",[i])&&(n.draw(),s.notify(e,"afterTooltipDraw",[i]))},getElementAtEvent:function(t){return o.modes.single(this,t)},getElementsAtEvent:function(t){return o.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return o.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=o.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return o.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroyDatasetMeta:function(t){var e=this.id,n=this.data.datasets[t],i=n._meta&&n._meta[e];i&&(i.controller.destroy(),delete n._meta[e])},destroy:function(){var e,n,i=this,o=i.canvas;for(i.stop(),e=0,n=i.data.datasets.length;e<n;++e)i.destroyDatasetMeta(e);o&&(i.unbindEvents(),a.canvas.clear(i),r.releaseContext(i.ctx),i.canvas=null,i.ctx=null),s.notify(i,"destroy"),delete t.instances[i.id]},toBase64Image:function(){return this.canvas.toDataURL.apply(this.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e)},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};a.each(t.options.events,function(i){r.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},r.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,a.each(e,function(e,n){r.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,o,r=n?"setHoverStyle":"removeHoverStyle";for(a=0,o=t.length;a<o;++a)(i=t[a])&&this.getDatasetMeta(i._datasetIndex).controller[r](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(!1!==s.notify(e,"beforeEvent",[t])){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);i|=n&&n.handleEvent(t),s.notify(e,"afterEvent",[t]);var a=e._bufferedRequest;return a?e.render(a):i&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e=this,n=e.options||{},i=n.hover,o=!1;return e.lastActive=e.lastActive||[],"mouseout"===t.type?e.active=[]:e.active=e.getElementsAtEventForMode(t,i.mode,i),a.callback(n.onHover||n.hover.onHover,[t.native,e.active],e),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(e,t.native,e.active),e.lastActive.length&&e.updateHoverStyle(e.lastActive,i.mode,!1),e.active.length&&i.mode&&e.updateHoverStyle(e.active,i.mode,!0),o=!a.arrayEquals(e.active,e.lastActive),e.lastActive=e.active,o}}),t.Controller=t}},{25:25,28:28,45:45,48:48}],24:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),a.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),o=a.apply(this,e);return i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),o}})}))}function n(t,e){var n=t._chartjs;if(n){var i=n.listeners,o=i.indexOf(e);-1!==o&&i.splice(o,1),i.length>0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],o=i.data;for(t=0,e=a.length;t<e;++t)o[t]=o[t]||n.createMetaData(t);i.dataset=i.dataset||n.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t=this,i=t.getDataset(),a=i.data||(i.data=[]);t._data!==a&&(t._data&&n(t._data,t),e(a,t),t._data=a),t.resyncElements()},update:i.noop,transition:function(t){for(var e=this.getMeta(),n=e.data||[],i=n.length,a=0;a<i;++a)n[a].transition(t);e.dataset&&e.dataset.transition(t)},draw:function(){var t=this.getMeta(),e=t.data||[],n=e.length,i=0;for(t.dataset&&t.dataset.draw();i<n;++i)e[i].draw()},removeHoverStyle:function(t,e){var n=this.chart.data.datasets[t._datasetIndex],a=t._index,o=t.custom||{},r=i.valueAtIndexOrDefault,l=t._model;l.backgroundColor=o.backgroundColor?o.backgroundColor:r(n.backgroundColor,a,e.backgroundColor),l.borderColor=o.borderColor?o.borderColor:r(n.borderColor,a,e.borderColor),l.borderWidth=o.borderWidth?o.borderWidth:r(n.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},o=i.valueAtIndexOrDefault,r=i.getHoverColor,l=t._model;l.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:o(e.hoverBackgroundColor,n,r(l.backgroundColor)),l.borderColor=a.hoverBorderColor?a.hoverBorderColor:o(e.hoverBorderColor,n,r(l.borderColor)),l.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:o(e.hoverBorderWidth,n,l.borderWidth)},resyncElements:function(){var t=this,e=t.getMeta(),n=t.getDataset().data,i=e.data.length,a=n.length;a<i?e.data.splice(a,i-a):a>i&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=i.inherits}},{45:45}],25:[function(t,e,n){"use strict";var i=t(45);e.exports={_set:function(t,e){return i.merge(this[t]||(this[t]={}),e)}}},{45:45}],26:[function(t,e,n){"use strict";function i(t,e,n,i){var o,r,l,s,u,d,c,h,f,g=Object.keys(n);for(o=0,r=g.length;o<r;++o)if(l=g[o],d=n[l],e.hasOwnProperty(l)||(e[l]=d),(s=e[l])!==d&&"_"!==l[0]){if(t.hasOwnProperty(l)||(t[l]=s),u=t[l],(c=typeof d)===typeof u)if("string"===c){if((h=a(u)).valid&&(f=a(d)).valid){e[l]=f.mix(h,i).rgbString();continue}}else if("number"===c&&isFinite(u)&&isFinite(d)){e[l]=u+(d-u)*i;continue}e[l]=d}}var a=t(3),o=t(45),r=function(t){o.extend(this,t),this.initialize.apply(this,arguments)};o.extend(r.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=o.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,a=e._start,o=e._view;return n&&1!==t?(o||(o=e._view={}),a||(a=e._start={}),i(a,o,n,t),e):(e._view=n,e._start=null,e)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return o.isNumber(this._model.x)&&o.isNumber(this._model.y)}}),r.extend=o.inherits,e.exports=r},{3:3,45:45}],27:[function(t,e,n){"use strict";var i=t(3),a=t(25),o=t(45);e.exports=function(t){function e(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function n(t){return void 0!==t&&null!==t&&"none"!==t}function r(t,i,a){var o=document.defaultView,r=t.parentNode,l=o.getComputedStyle(t)[i],s=o.getComputedStyle(r)[i],u=n(l),d=n(s),c=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(l,t,a):c,d?e(s,r,a):c):"none"}o.configMerge=function(){return o.merge(o.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,a){var r=n[e]||{},l=i[e];"scales"===e?n[e]=o.scaleMerge(r,l):"scale"===e?n[e]=o.merge(r,[t.scaleService.getScaleDefaults(l.type),l]):o._merger(e,n,i,a)}})},o.scaleMerge=function(){return o.merge(o.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,a){if("xAxes"===e||"yAxes"===e){var r,l,s,u=i[e].length;for(n[e]||(n[e]=[]),r=0;r<u;++r)s=i[e][r],l=o.valueOrDefault(s.type,"xAxes"===e?"category":"linear"),r>=n[e].length&&n[e].push({}),!n[e][r].type||s.type&&s.type!==n[e][r].type?o.merge(n[e][r],[t.scaleService.getScaleDefaults(l),s]):o.merge(n[e][r],s)}else o._merger(e,n,i,a)}})},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return o.each(t,function(t){e(t)&&n.push(t)}),n},o.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},o.findNextWhere=function(t,e,n){o.isNullOrUndef(n)&&(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},o.findPreviousWhere=function(t,e,n){o.isNullOrUndef(n)&&(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,n){return Math.abs(t-e)<n},o.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},o.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},o.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},o.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),o=Math.atan2(i,n);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:a}},o.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},o.aliasPixel=function(t){return t%2==0?0:.5},o.splineCurve=function(t,e,n,i){var a=t.skip?e:t,o=e,r=n.skip?e:n,l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),s=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),u=l/(l+s),d=s/(l+s),c=i*(u=isNaN(u)?0:u),h=i*(d=isNaN(d)?0:d);return{previous:{x:o.x-c*(r.x-a.x),y:o.y-c*(r.y-a.y)},next:{x:o.x+h*(r.x-a.x),y:o.y+h*(r.y-a.y)}}},o.EPSILON=Number.EPSILON||1e-14,o.splineCurveMonotone=function(t){var e,n,i,a,r=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),l=r.length;for(e=0;e<l;++e)if(!(i=r[e]).model.skip){if(n=e>0?r[e-1]:null,(a=e<l-1?r[e+1]:null)&&!a.model.skip){var s=a.model.x-i.model.x;i.deltaK=0!==s?(a.model.y-i.model.y)/s:0}!n||n.model.skip?i.mK=i.deltaK:!a||a.model.skip?i.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?i.mK=0:i.mK=(n.deltaK+i.deltaK)/2}var u,d,c,h;for(e=0;e<l-1;++e)i=r[e],a=r[e+1],i.model.skip||a.model.skip||(o.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(u=i.mK/i.deltaK,d=a.mK/i.deltaK,(h=Math.pow(u,2)+Math.pow(d,2))<=9||(c=3/Math.sqrt(h),i.mK=u*c*i.deltaK,a.mK=d*c*i.deltaK)));var f;for(e=0;e<l;++e)(i=r[e]).model.skip||(n=e>0?r[e-1]:null,a=e<l-1?r[e+1]:null,n&&!n.model.skip&&(f=(i.model.x-n.model.x)/3,i.model.controlPointPreviousX=i.model.x-f,i.model.controlPointPreviousY=i.model.y-f*i.mK),a&&!a.model.skip&&(f=(a.model.x-i.model.x)/3,i.model.controlPointNextX=i.model.x+f,i.model.controlPointNextY=i.model.y+f*i.mK))},o.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},o.niceNum=function(t,e){var n=Math.floor(o.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},o.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},o.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.currentTarget||t.srcElement,l=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(o.getStyle(r,"padding-left")),d=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=l.right-l.left-u-c,g=l.bottom-l.top-d-h;return n=Math.round((n-l.left-u)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-l.top-d)/g*r.height/e.currentDevicePixelRatio),{x:n,y:i}},o.getConstraintWidth=function(t){return r(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return r(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var n=parseInt(o.getStyle(e,"padding-left"),10),i=parseInt(o.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,r=o.getConstraintWidth(t);return isNaN(r)?a:Math.min(a,r)},o.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var n=parseInt(o.getStyle(e,"padding-top"),10),i=parseInt(o.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,r=o.getConstraintHeight(t);return isNaN(r)?a:Math.min(a,r)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,o=t.width;i.height=a*n,i.width=o*n,t.ctx.scale(n,n),i.style.height=a+"px",i.style.width=o+"px"}},o.fontString=function(t,e,n){return e+" "+t+"px "+n},o.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var l=0;o.each(n,function(e){void 0!==e&&null!==e&&!0!==o.isArray(e)?l=o.measureText(t,a,r,l,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(l=o.measureText(t,a,r,l,e))})});var s=r.length/2;if(s>n.length){for(var u=0;u<s;u++)delete a[r[u]];r.splice(0,s)}return l},o.measureText=function(t,e,n,i,a){var o=e[a];return o||(o=e[a]=t.measureText(a).width,n.push(a)),o>i&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.color=i?function(t){return t instanceof CanvasGradient&&(t=a.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{25:25,3:3,45:45}],28:[function(t,e,n){"use strict";function i(t,e){return t.native?{x:t.x,y:t.y}:u.getRelativePosition(t,e)}function a(t,e){var n,i,a,o,r;for(i=0,o=t.data.datasets.length;i<o;++i)if(t.isDatasetVisible(i))for(a=0,r=(n=t.getDatasetMeta(i)).data.length;a<r;++a){var l=n.data[a];l._view.skip||e(l)}}function o(t,e){var n=[];return a(t,function(t){t.inRange(e.x,e.y)&&n.push(t)}),n}function r(t,e,n,i){var o=Number.POSITIVE_INFINITY,r=[];return a(t,function(t){if(!n||t.inRange(e.x,e.y)){var a=t.getCenterPoint(),l=i(e,a);l<o?(r=[t],o=l):l===o&&r.push(t)}}),r}function l(t){var e=-1!==t.indexOf("x"),n=-1!==t.indexOf("y");return function(t,i){var a=e?Math.abs(t.x-i.x):0,o=n?Math.abs(t.y-i.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function s(t,e,n){var a=i(e,t);n.axis=n.axis||"x";var s=l(n.axis),u=n.intersect?o(t,a):r(t,a,!1,s),d=[];return u.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n).data[u[0]._index];i&&!i._view.skip&&d.push(i)}}),d):[]}var u=t(45);e.exports={modes:{single:function(t,e){var n=i(e,t),o=[];return a(t,function(t){if(t.inRange(n.x,n.y))return o.push(t),o}),o.slice(0,1)},label:s,index:s,dataset:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var s=l(n.axis),u=n.intersect?o(t,a):r(t,a,!1,s);return u.length>0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return s(t,e,{intersect:!1})},point:function(t,e){return o(t,i(e,t))},nearest:function(t,e,n){var a=i(e,t);n.axis=n.axis||"xy";var o=l(n.axis),s=r(t,a,n.intersect,o);return s.length>1&&s.sort(function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n}),s.slice(0,1)},x:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inXRange(o.x)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r},y:function(t,e,n){var o=i(e,t),r=[],l=!1;return a(t,function(t){t.inYRange(o.y)&&r.push(t),t.inRange(o.x,o.y)&&(l=!0)}),n.intersect&&!l&&(r=[]),r}}}},{45:45}],29:[function(t,e,n){"use strict";t(25)._set("global",{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},layout:{padding:{top:0,right:0,bottom:0,left:0}}}),e.exports=function(){var t=function(t,e){return this.construct(t,e),this};return t.Chart=t,t}},{25:25}],30:[function(t,e,n){"use strict";var i=t(45);e.exports=function(t){function e(t,e){return i.where(t,function(t){return t.position===e})}function n(t,e){t.forEach(function(t,e){return t._tmpIndex_=e,t}),t.sort(function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i._tmpIndex_-a._tmpIndex_:i.weight-a.weight}),t.forEach(function(t){delete t._tmpIndex_})}t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,a=["fullWidth","position","weight"],o=a.length,r=0;r<o;++r)i=a[r],n.hasOwnProperty(i)&&(e[i]=n[i])},update:function(t,a,o){function r(t){var e=i.findNextWhere(_,function(e){return e.box===t});if(e)if(t.isHorizontal()){var n={left:Math.max(T,D),right:Math.max(F,I),top:0,bottom:0};t.update(t.fullWidth?x:S,y/2,n)}else t.update(e.minSize.width,C)}function l(t){t.isHorizontal()?(t.left=t.fullWidth?d:T,t.right=t.fullWidth?a-c:T+S,t.top=V,t.bottom=V+t.height,V=t.bottom):(t.left=N,t.right=N+t.width,t.top=O,t.bottom=O+C,N=t.right)}if(t){var s=t.options.layout||{},u=i.options.toPadding(s.padding),d=u.left,c=u.right,h=u.top,f=u.bottom,g=e(t.boxes,"left"),p=e(t.boxes,"right"),v=e(t.boxes,"top"),m=e(t.boxes,"bottom"),b=e(t.boxes,"chartArea");n(g,!0),n(p,!1),n(v,!0),n(m,!1);var x=a-d-c,y=o-h-f,k=y/2,w=(a-x/2)/(g.length+p.length),M=(o-k)/(v.length+m.length),S=x,C=y,_=[];i.each(g.concat(p,v,m),function(t){var e,n=t.isHorizontal();n?(e=t.update(t.fullWidth?x:S,M),C-=e.height):(e=t.update(w,k),S-=e.width),_.push({horizontal:n,minSize:e,box:t})});var D=0,I=0,P=0,A=0;i.each(v.concat(m),function(t){if(t.getPadding){var e=t.getPadding();D=Math.max(D,e.left),I=Math.max(I,e.right)}}),i.each(g.concat(p),function(t){if(t.getPadding){var e=t.getPadding();P=Math.max(P,e.top),A=Math.max(A,e.bottom)}});var T=d,F=c,O=h,R=f;i.each(g.concat(p),r),i.each(g,function(t){T+=t.width}),i.each(p,function(t){F+=t.width}),i.each(v.concat(m),r),i.each(v,function(t){O+=t.height}),i.each(m,function(t){R+=t.height}),i.each(g.concat(p),function(t){var e=i.findNextWhere(_,function(e){return e.box===t}),n={left:0,right:0,top:O,bottom:R};e&&t.update(e.minSize.width,C,n)}),T=d,F=c,O=h,R=f,i.each(g,function(t){T+=t.width}),i.each(p,function(t){F+=t.width}),i.each(v,function(t){O+=t.height}),i.each(m,function(t){R+=t.height});var L=Math.max(D-T,0);T+=L,F+=Math.max(I-F,0);var z=Math.max(P-O,0);O+=z,R+=Math.max(A-R,0);var B=o-O-R,W=a-T-F;W===S&&B===C||(i.each(g,function(t){t.height=B}),i.each(p,function(t){t.height=B}),i.each(v,function(t){t.fullWidth||(t.width=W)}),i.each(m,function(t){t.fullWidth||(t.width=W)}),C=B,S=W);var N=d+L,V=h+z;i.each(g.concat(v),l),N+=S,V+=C,i.each(p,l),i.each(m,l),t.chartArea={left:T,top:O,right:T+S,bottom:O+C},i.each(b,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(S,C)})}}}}},{45:45}],31:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{plugins:{}}),e.exports=function(t){t.plugins={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,a,o,r,l,s=this.descriptors(t),u=s.length;for(i=0;i<u;++i)if(a=s[i],o=a.plugin,"function"==typeof(l=o[e])&&((r=[t].concat(n||[])).push(a.options),!1===l.apply(o,r)))return!1;return!0},descriptors:function(t){var e=t._plugins||(t._plugins={});if(e.id===this._cacheId)return e.descriptors;var n=[],a=[],r=t&&t.config||{},l=r.options&&r.options.plugins||{};return this._plugins.concat(r.plugins||[]).forEach(function(t){if(-1===n.indexOf(t)){var e=t.id,r=l[e];!1!==r&&(!0===r&&(r=o.clone(i.global.plugins[e])),n.push(t),a.push({plugin:t,options:r||{}}))}}),e.descriptors=a,e.id=this._cacheId,a}},t.pluginService=t.plugins,t.PluginBase=a.extend({})}},{25:25,26:26,45:45}],32:[function(t,e,n){"use strict";function i(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(t[e].label);return i}function a(t,e,n){var i=t.getPixelForTick(e);return n&&(i-=0===e?(t.getPixelForTick(1)-i)/2:(i-t.getPixelForTick(e-1))/2),i}var o=t(25),r=t(26),l=t(45),s=t(34);o._set("scale",{display:!0,position:"left",offset:!1,gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",zeroLineBorderDash:[],zeroLineBorderDashOffset:0,offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{display:!1,labelString:"",lineHeight:1.2,padding:{top:4,bottom:4}},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:s.formatters.values,minor:{},major:{}}}),e.exports=function(t){function e(t,e,n){return l.isArray(e)?l.longestText(t,n,e):t.measureText(e).width}function n(t){var e=l.valueOrDefault,n=o.global,i=e(t.fontSize,n.defaultFontSize),a=e(t.fontStyle,n.defaultFontStyle),r=e(t.fontFamily,n.defaultFontFamily);return{size:i,style:a,family:r,font:l.fontString(i,a,r)}}function s(t){return l.options.toLineHeight(l.valueOrDefault(t.lineHeight,1.2),l.valueOrDefault(t.fontSize,o.global.defaultFontSize))}t.Scale=r.extend({getPadding:function(){var t=this;return{left:t.paddingLeft||0,top:t.paddingTop||0,right:t.paddingRight||0,bottom:t.paddingBottom||0}},getTicks:function(){return this._ticks},mergeTicksOptions:function(){var t=this.options.ticks;!1===t.minor&&(t.minor={display:!1}),!1===t.major&&(t.major={display:!1});for(var e in t)"major"!==e&&"minor"!==e&&(void 0===t.minor[e]&&(t.minor[e]=t[e]),void 0===t.major[e]&&(t.major[e]=t[e]))},beforeUpdate:function(){l.callback(this.options.beforeUpdate,[this])},update:function(t,e,n){var i,a,o,r,s,u,d=this;for(d.beforeUpdate(),d.maxWidth=t,d.maxHeight=e,d.margins=l.extend({left:0,right:0,top:0,bottom:0},n),d.longestTextCache=d.longestTextCache||{},d.beforeSetDimensions(),d.setDimensions(),d.afterSetDimensions(),d.beforeDataLimits(),d.determineDataLimits(),d.afterDataLimits(),d.beforeBuildTicks(),s=d.buildTicks()||[],d.afterBuildTicks(),d.beforeTickToLabelConversion(),o=d.convertTicksToLabels(s)||d.ticks,d.afterTickToLabelConversion(),d.ticks=o,i=0,a=o.length;i<a;++i)r=o[i],(u=s[i])?u.label=r:s.push(u={label:r,major:!1});return d._ticks=s,d.beforeCalculateTickRotation(),d.calculateTickRotation(),d.afterCalculateTickRotation(),d.beforeFit(),d.fit(),d.afterFit(),d.afterUpdate(),d.minSize},afterUpdate:function(){l.callback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){l.callback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){l.callback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){l.callback(this.options.beforeDataLimits,[this])},determineDataLimits:l.noop,afterDataLimits:function(){l.callback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){l.callback(this.options.beforeBuildTicks,[this])},buildTicks:l.noop,afterBuildTicks:function(){l.callback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){l.callback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this,e=t.options.ticks;t.ticks=t.ticks.map(e.userCallback||e.callback,this)},afterTickToLabelConversion:function(){l.callback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){l.callback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,a=t.options.ticks,o=i(t._ticks),r=n(a);e.font=r.font;var s=a.minRotation||0;if(o.length&&t.options.display&&t.isHorizontal())for(var u,d=l.longestText(e,r.font,o,t.longestTextCache),c=d,h=t.getPixelForTick(1)-t.getPixelForTick(0)-6;c>h&&s<a.maxRotation;){var f=l.toRadians(s);if(u=Math.cos(f),Math.sin(f)*d>t.maxHeight){s--;break}s++,c=u*d}t.labelRotation=s},afterCalculateTickRotation:function(){l.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){l.callback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},o=i(t._ticks),r=t.options,u=r.ticks,d=r.scaleLabel,c=r.gridLines,h=r.display,f=t.isHorizontal(),g=n(u),p=r.gridLines.tickMarkLength;if(a.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&c.drawTicks?p:0,a.height=f?h&&c.drawTicks?p:0:t.maxHeight,d.display&&h){var v=s(d)+l.options.toPadding(d.padding).height;f?a.height+=v:a.width+=v}if(u.display&&h){var m=l.longestText(t.ctx,g.font,o,t.longestTextCache),b=l.numberOfLabelLines(o),x=.5*g.size,y=t.options.ticks.padding;if(f){t.longestLabelWidth=m;var k=l.toRadians(t.labelRotation),w=Math.cos(k),M=Math.sin(k)*m+g.size*b+x*(b-1)+x;a.height=Math.min(t.maxHeight,a.height+M+y),t.ctx.font=g.font;var S=e(t.ctx,o[0],g.font),C=e(t.ctx,o[o.length-1],g.font);0!==t.labelRotation?(t.paddingLeft="bottom"===r.position?w*S+3:w*x+3,t.paddingRight="bottom"===r.position?w*x+3:w*C+3):(t.paddingLeft=S/2+3,t.paddingRight=C/2+3)}else u.mirror?m=0:m+=y+x,a.width=Math.min(t.maxWidth,a.width+m),t.paddingTop=g.size/2,t.paddingBottom=g.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){l.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(l.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:l.noop,getPixelForValue:l.noop,getValueForPixel:l.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),a=i*t+e.paddingLeft;n&&(a+=i/2);var o=e.left+Math.round(a);return o+=e.isFullWidth()?e.margins.left:0}var r=e.height-(e.paddingTop+e.paddingBottom);return e.top+t*(r/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=(e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft,i=e.left+Math.round(n);return i+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},_autoSkip:function(t){var e,n,i,a,o=this,r=o.isHorizontal(),s=o.options.ticks.minor,u=t.length,d=l.toRadians(o.labelRotation),c=Math.cos(d),h=o.longestLabelWidth*c,f=[];for(s.maxTicksLimit&&(a=s.maxTicksLimit),r&&(e=!1,(h+s.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((h+s.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),a&&u>a&&(e=Math.max(e,Math.floor(u/a)))),n=0;n<u;n++)i=t[n],(e>1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1&&delete i.label,f.push(i);return f},draw:function(t){var e=this,i=e.options;if(i.display){var r=e.ctx,u=o.global,d=i.ticks.minor,c=i.ticks.major||d,h=i.gridLines,f=i.scaleLabel,g=0!==e.labelRotation,p=e.isHorizontal(),v=d.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),m=l.valueOrDefault(d.fontColor,u.defaultFontColor),b=n(d),x=l.valueOrDefault(c.fontColor,u.defaultFontColor),y=n(c),k=h.drawTicks?h.tickMarkLength:0,w=l.valueOrDefault(f.fontColor,u.defaultFontColor),M=n(f),S=l.options.toPadding(f.padding),C=l.toRadians(e.labelRotation),_=[],D="right"===i.position?e.left:e.right-k,I="right"===i.position?e.left+k:e.right,P="bottom"===i.position?e.top:e.bottom-k,A="bottom"===i.position?e.top+k:e.bottom;if(l.each(v,function(n,o){if(!l.isNullOrUndef(n.label)){var r,s,c,f,m=n.label;o===e.zeroLineIndex&&i.offset===h.offsetGridLines?(r=h.zeroLineWidth,s=h.zeroLineColor,c=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(r=l.valueAtIndexOrDefault(h.lineWidth,o),s=l.valueAtIndexOrDefault(h.color,o),c=l.valueOrDefault(h.borderDash,u.borderDash),f=l.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var b,x,y,w,M,S,T,F,O,R,L="middle",z="middle",B=d.padding;if(p){var W=k+B;"bottom"===i.position?(z=g?"middle":"top",L=g?"right":"center",R=e.top+W):(z=g?"middle":"bottom",L=g?"left":"center",R=e.bottom-W);var N=a(e,o,h.offsetGridLines&&v.length>1);N<e.left&&(s="rgba(0,0,0,0)"),N+=l.aliasPixel(r),O=e.getPixelForTick(o)+d.labelOffset,b=y=M=T=N,x=P,w=A,S=t.top,F=t.bottom}else{var V,E="left"===i.position;d.mirror?(L=E?"left":"right",V=B):(L=E?"right":"left",V=k+B),O=E?e.right-V:e.left+V;var H=a(e,o,h.offsetGridLines&&v.length>1);H<e.top&&(s="rgba(0,0,0,0)"),H+=l.aliasPixel(r),R=e.getPixelForTick(o)+d.labelOffset,b=D,y=I,M=t.left,T=t.right,x=w=S=F=H}_.push({tx1:b,ty1:x,tx2:y,ty2:w,x1:M,y1:S,x2:T,y2:F,labelX:O,labelY:R,glWidth:r,glColor:s,glBorderDash:c,glBorderDashOffset:f,rotation:-1*C,label:m,major:n.major,textBaseline:z,textAlign:L})}}),l.each(_,function(t){if(h.display&&(r.save(),r.lineWidth=t.glWidth,r.strokeStyle=t.glColor,r.setLineDash&&(r.setLineDash(t.glBorderDash),r.lineDashOffset=t.glBorderDashOffset),r.beginPath(),h.drawTicks&&(r.moveTo(t.tx1,t.ty1),r.lineTo(t.tx2,t.ty2)),h.drawOnChartArea&&(r.moveTo(t.x1,t.y1),r.lineTo(t.x2,t.y2)),r.stroke(),r.restore()),d.display){r.save(),r.translate(t.labelX,t.labelY),r.rotate(t.rotation),r.font=t.major?y.font:b.font,r.fillStyle=t.major?x:m,r.textBaseline=t.textBaseline,r.textAlign=t.textAlign;var e=t.label;if(l.isArray(e))for(var n=0,i=0;n<e.length;++n)r.fillText(""+e[n],0,i),i+=1.5*b.size;else r.fillText(e,0,0);r.restore()}}),f.display){var T,F,O=0,R=s(f)/2;if(p)T=e.left+(e.right-e.left)/2,F="bottom"===i.position?e.bottom-R-S.bottom:e.top+R+S.top;else{var L="left"===i.position;T=L?e.left+R+S.top:e.right-R-S.top,F=e.top+(e.bottom-e.top)/2,O=L?-.5*Math.PI:.5*Math.PI}r.save(),r.translate(T,F),r.rotate(O),r.textAlign="center",r.textBaseline="middle",r.fillStyle=w,r.font=M.font,r.fillText(f.labelString,0,0),r.restore()}if(h.drawBorder){r.lineWidth=l.valueAtIndexOrDefault(h.lineWidth,0),r.strokeStyle=l.valueAtIndexOrDefault(h.color,0);var z=e.left,B=e.right,W=e.top,N=e.bottom,V=l.aliasPixel(r.lineWidth);p?(W=N="top"===i.position?e.bottom:e.top,W+=V,N+=V):(z=B="left"===i.position?e.right:e.left,z+=V,B+=V),r.beginPath(),r.moveTo(z,W),r.lineTo(B,N),r.stroke()}}}})}},{25:25,26:26,34:34,45:45}],33:[function(t,e,n){"use strict";var i=t(25),a=t(45);e.exports=function(t){t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=a.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?a.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){var n=this;n.defaults.hasOwnProperty(t)&&(n.defaults[t]=a.extend(n.defaults[t],e))},addScalesToLayout:function(e){a.each(e.scales,function(n){n.fullWidth=n.options.fullWidth,n.position=n.options.position,n.weight=n.options.weight,t.layoutService.addBox(e,n)})}}}},{25:25,45:45}],34:[function(t,e,n){"use strict";var i=t(45);e.exports={generators:{linear:function(t,e){var n,a=[];if(t.stepSize&&t.stepSize>0)n=t.stepSize;else{var o=i.niceNum(e.max-e.min,!1);n=i.niceNum(o/(t.maxTicks-1),!0)}var r=Math.floor(e.min/n)*n,l=Math.ceil(e.max/n)*n;t.min&&t.max&&t.stepSize&&i.almostWhole((t.max-t.min)/t.stepSize,n/1e3)&&(r=t.min,l=t.max);var s=(l-r)/n;s=i.almostEquals(s,Math.round(s),n/1e3)?Math.round(s):Math.ceil(s),a.push(void 0!==t.min?t.min:r);for(var u=1;u<s;++u)a.push(r+u*n);return a.push(void 0!==t.max?t.max:l),a},logarithmic:function(t,e){var n,a,o=[],r=i.valueOrDefault,l=r(t.min,Math.pow(10,Math.floor(i.log10(e.min)))),s=Math.floor(i.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,s));0===l?(n=Math.floor(i.log10(e.minNotZero)),a=Math.floor(e.minNotZero/Math.pow(10,n)),o.push(l),l=a*Math.pow(10,n)):(n=Math.floor(i.log10(l)),a=Math.floor(l/Math.pow(10,n)));do{o.push(l),10===++a&&(a=1,++n),l=a*Math.pow(10,n)}while(n<s||n===s&&a<u);var d=r(t.max,l);return o.push(d),o}},formatters:{values:function(t){return i.isArray(t)?t:""+t},linear:function(t,e,n){var a=n.length>3?n[2]-n[1]:n[1]-n[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var o=i.log10(Math.abs(a)),r="";if(0!==t){var l=-1*Math.floor(o);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var a=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===e||e===n.length-1?t.toExponential():""}}}},{45:45}],35:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:o.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?n=o.xLabel:a>0&&o.index<a&&(n=i[o.index])}return n},afterTitle:o.noop,beforeBody:o.noop,beforeLabel:o.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n&&(n+=": "),n+=t.yLabel},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex).data[t.index]._view;return{borderColor:n.borderColor,backgroundColor:n.backgroundColor}},labelTextColor:function(){return this._options.bodyFontColor},afterLabel:o.noop,afterBody:o.noop,beforeFooter:o.noop,footer:o.noop,afterFooter:o.noop}}}),e.exports=function(t){function e(t,e){var n=o.color(t);return n.alpha(e*n.alpha()).rgbaString()}function n(t,e){return e&&(o.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function r(t){var e=t._xScale,n=t._yScale||t._scale,i=t._index,a=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,a):"",yLabel:n?n.getLabelForIndex(i,a):"",index:i,datasetIndex:a,x:t._model.x,y:t._model.y}}function l(t){var e=i.global,n=o.valueOrDefault;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,bodyFontColor:t.bodyFontColor,_bodyFontFamily:n(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:n(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:n(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:n(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:n(t.titleFontStyle,e.defaultFontStyle),titleFontSize:n(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:n(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:n(t.footerFontStyle,e.defaultFontStyle),footerFontSize:n(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function s(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,r=e.body,l=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);l+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;i+=s*d,i+=s?(s-1)*e.titleSpacing:0,i+=s?e.titleMarginBottom:0,i+=l*c,i+=l?(l-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*h,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=o.fontString(d,e._titleFontStyle,e._titleFontFamily),o.each(e.title,g),n.font=o.fontString(c,e._bodyFontStyle,e._bodyFontFamily),o.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,o.each(r,function(t){o.each(t.before,g),o.each(t.lines,g),o.each(t.after,g)}),f=0,n.font=o.fontString(h,e._footerFontStyle,e._footerFontFamily),o.each(e.footer,g),a+=2*e.xPadding,{width:a,height:i}}function u(t,e){var n=t._model,i=t._chart,a=t._chart.chartArea,o="center",r="center";n.y<e.height?r="top":n.y>i.height-e.height&&(r="bottom");var l,s,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===r?(l=function(t){return t<=h},s=function(t){return t>h}):(l=function(t){return t<=e.width/2},s=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},l(n.x)?(o="left",u(n.x)&&(o="center",r=c(n.y))):s(n.x)&&(o="right",d(n.x)&&(o="center",r=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:o,yAlign:g.yAlign?g.yAlign:r}}function d(t,e,n){var i=t.x,a=t.y,o=t.caretSize,r=t.caretPadding,l=t.cornerRadius,s=n.xAlign,u=n.yAlign,d=o+r,c=l+r;return"right"===s?i-=e.width:"center"===s&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===s?i+=d:"right"===s&&(i-=d):"left"===s?i-=c:"right"===s&&(i+=c),{x:i,y:a}}t.Tooltip=a.extend({initialize:function(){this._model=l(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options.callbacks,i=e.beforeTitle.apply(t,arguments),a=e.title.apply(t,arguments),o=e.afterTitle.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,r=[];return o.each(t,function(t){var o={before:[],lines:[],after:[]};n(o.before,a.beforeLabel.call(i,t,e)),n(o.lines,a.label.call(i,t,e)),n(o.after,a.afterLabel.call(i,t,e)),r.push(o)}),r},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return o.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),o=e.afterFooter.apply(t,arguments),r=[];return r=n(r,i),r=n(r,a),r=n(r,o)},update:function(e){var n,i,a=this,c=a._options,h=a._model,f=a._model=l(c),g=a._active,p=a._data,v={xAlign:h.xAlign,yAlign:h.yAlign},m={x:h.x,y:h.y},b={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var y=[],k=[];x=t.Tooltip.positioners[c.position].call(a,g,a._eventPosition);var w=[];for(n=0,i=g.length;n<i;++n)w.push(r(g[n]));c.filter&&(w=w.filter(function(t){return c.filter(t,p)})),c.itemSort&&(w=w.sort(function(t,e){return c.itemSort(t,e,p)})),o.each(w,function(t){y.push(c.callbacks.labelColor.call(a,t,a._chart)),k.push(c.callbacks.labelTextColor.call(a,t,a._chart))}),f.title=a.getTitle(w,p),f.beforeBody=a.getBeforeBody(w,p),f.body=a.getBody(w,p),f.afterBody=a.getAfterBody(w,p),f.footer=a.getFooter(w,p),f.x=Math.round(x.x),f.y=Math.round(x.y),f.caretPadding=c.caretPadding,f.labelColors=y,f.labelTextColors=k,f.dataPoints=w,m=d(f,b=s(this,f),v=u(this,b))}else f.opacity=0;return f.xAlign=v.xAlign,f.yAlign=v.yAlign,f.x=m.x,f.y=m.y,f.width=b.width,f.height=b.height,f.caretX=x.x,f.caretY=x.y,a._model=f,e&&c.custom&&c.custom.call(a,f),a},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,o,r,l,s,u=n.caretSize,d=n.cornerRadius,c=n.xAlign,h=n.yAlign,f=t.x,g=t.y,p=e.width,v=e.height;if("center"===h)l=g+v/2,"left"===c?(a=(i=f)-u,o=i,r=l+u,s=l-u):(a=(i=f+p)+u,o=i,r=l-u,s=l+u);else if("left"===c?(i=(a=f+d+u)-u,o=a+u):"right"===c?(i=(a=f+p-d-u)-u,o=a+u):(i=(a=f+p/2)-u,o=a+u),"top"===h)l=(r=g)-u,s=r;else{l=(r=g+v)+u,s=r;var m=o;o=i,i=m}return{x1:i,x2:a,x3:o,y1:r,y2:l,y3:s}},drawTitle:function(t,n,i,a){var r=n.title;if(r.length){i.textAlign=n._titleAlign,i.textBaseline="top";var l=n.titleFontSize,s=n.titleSpacing;i.fillStyle=e(n.titleFontColor,a),i.font=o.fontString(l,n._titleFontStyle,n._titleFontFamily);var u,d;for(u=0,d=r.length;u<d;++u)i.fillText(r[u],t.x,t.y),t.y+=l+s,u+1===r.length&&(t.y+=n.titleMarginBottom-s)}},drawBody:function(t,n,i,a){var r=n.bodyFontSize,l=n.bodySpacing,s=n.body;i.textAlign=n._bodyAlign,i.textBaseline="top",i.font=o.fontString(r,n._bodyFontStyle,n._bodyFontFamily);var u=0,d=function(e){i.fillText(e,t.x+u,t.y),t.y+=r+l};i.fillStyle=e(n.bodyFontColor,a),o.each(n.beforeBody,d);var c=n.displayColors;u=c?r+2:0,o.each(s,function(l,s){var u=e(n.labelTextColors[s],a);i.fillStyle=u,o.each(l.before,d),o.each(l.lines,function(o){c&&(i.fillStyle=e(n.legendColorBackground,a),i.fillRect(t.x,t.y,r,r),i.lineWidth=1,i.strokeStyle=e(n.labelColors[s].borderColor,a),i.strokeRect(t.x,t.y,r,r),i.fillStyle=e(n.labelColors[s].backgroundColor,a),i.fillRect(t.x+1,t.y+1,r-2,r-2),i.fillStyle=u),d(o)}),o.each(l.after,d)}),u=0,o.each(n.afterBody,d),t.y-=l},drawFooter:function(t,n,i,a){var r=n.footer;r.length&&(t.y+=n.footerMarginTop,i.textAlign=n._footerAlign,i.textBaseline="top",i.fillStyle=e(n.footerFontColor,a),i.font=o.fontString(n.footerFontSize,n._footerFontStyle,n._footerFontFamily),o.each(r,function(e){i.fillText(e,t.x,t.y),t.y+=n.footerFontSize+n.footerSpacing}))},drawBackground:function(t,n,i,a,o){i.fillStyle=e(n.backgroundColor,o),i.strokeStyle=e(n.borderColor,o),i.lineWidth=n.borderWidth;var r=n.xAlign,l=n.yAlign,s=t.x,u=t.y,d=a.width,c=a.height,h=n.cornerRadius;i.beginPath(),i.moveTo(s+h,u),"top"===l&&this.drawCaret(t,a),i.lineTo(s+d-h,u),i.quadraticCurveTo(s+d,u,s+d,u+h),"center"===l&&"right"===r&&this.drawCaret(t,a),i.lineTo(s+d,u+c-h),i.quadraticCurveTo(s+d,u+c,s+d-h,u+c),"bottom"===l&&this.drawCaret(t,a),i.lineTo(s+h,u+c),i.quadraticCurveTo(s,u+c,s,u+c-h),"center"===l&&"left"===r&&this.drawCaret(t,a),i.lineTo(s,u+h),i.quadraticCurveTo(s,u,s+h,u),i.closePath(),i.fill(),n.borderWidth>0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,o=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&o&&(this.drawBackground(i,e,t,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chart.getElementsAtEventForMode(t,n.mode,n),!(i=!o.arrayEquals(e._active,e._lastActive)))return!1;if(e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,o=0;for(e=0,n=t.length;e<n;++e){var r=t[e];if(r&&r.hasValue()){var l=r.tooltipPosition();i+=l.x,a+=l.y,++o}}return{x:Math.round(i/o),y:Math.round(a/o)}},nearest:function(t,e){var n,i,a,r=e.x,l=e.y,s=Number.POSITIVE_INFINITY;for(n=0,i=t.length;n<i;++n){var u=t[n];if(u&&u.hasValue()){var d=u.getCenterPoint(),c=o.distanceBetweenPoints(e,d);c<s&&(s=c,a=u)}}if(a){var h=a.tooltipPosition();r=h.x,l=h.y}return{x:r,y:l}}}}},{25:25,26:26,45:45}],36:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{elements:{arc:{backgroundColor:i.global.defaultColor,borderColor:"#fff",borderWidth:2}}}),e.exports=a.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,e){var n=this._view;if(n){for(var i=o.getAngleFromPoint(n,{x:t,y:e}),a=i.angle,r=i.distance,l=n.startAngle,s=n.endAngle;s<l;)s+=2*Math.PI;for(;a>s;)a-=2*Math.PI;for(;a<l;)a+=2*Math.PI;var u=a>=l&&a<=s,d=r>=n.innerRadius&&r<=n.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},{25:25,26:26,45:45}],37:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45),r=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:r.defaultColor,borderWidth:3,borderColor:r.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),e.exports=a.extend({draw:function(){var t,e,n,i,a=this,l=a._view,s=a._chart.ctx,u=l.spanGaps,d=a._children.slice(),c=r.elements.line,h=-1;for(a._loop&&d.length&&d.push(d[0]),s.save(),s.lineCap=l.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(l.borderDash||c.borderDash),s.lineDashOffset=l.borderDashOffset||c.borderDashOffset,s.lineJoin=l.borderJoinStyle||c.borderJoinStyle,s.lineWidth=l.borderWidth||c.borderWidth,s.strokeStyle=l.borderColor||r.defaultColor,s.beginPath(),h=-1,t=0;t<d.length;++t)e=d[t],n=o.previousItem(d,t),i=e._view,0===t?i.skip||(s.moveTo(i.x,i.y),h=t):(n=-1===h?n:d[h],i.skip||(h!==t-1&&!u||-1===h?s.moveTo(i.x,i.y):o.canvas.lineTo(s,n._view,e._view),h=t));s.stroke(),s.restore()}})},{25:25,26:26,45:45}],38:[function(t,e,n){"use strict";function i(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2)}var a=t(25),o=t(26),r=t(45),l=a.global.defaultColor;a._set("global",{elements:{point:{radius:3,pointStyle:"circle",backgroundColor:l,borderColor:l,borderWidth:1,hitRadius:1,hoverRadius:4,hoverBorderWidth:1}}}),e.exports=o.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:i,inXRange:i,inYRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.y,2)<Math.pow(e.radius+e.hitRadius,2)},getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(t){var e=this._view,n=this._model,i=this._chart.ctx,o=e.pointStyle,s=e.radius,u=e.x,d=e.y,c=r.color,h=0;e.skip||(i.strokeStyle=e.borderColor||l,i.lineWidth=r.valueOrDefault(e.borderWidth,a.global.elements.point.borderWidth),i.fillStyle=e.backgroundColor||l,void 0!==t&&(n.x<t.left||1.01*t.right<n.x||n.y<t.top||1.01*t.bottom<n.y)&&(n.x<t.left?h=(u-n.x)/(t.left-n.x):1.01*t.right<n.x?h=(n.x-u)/(n.x-t.right):n.y<t.top?h=(d-n.y)/(t.top-n.y):1.01*t.bottom<n.y&&(h=(n.y-d)/(n.y-t.bottom)),h=Math.round(100*h)/100,i.strokeStyle=c(i.strokeStyle).alpha(h).rgbString(),i.fillStyle=c(i.fillStyle).alpha(h).rgbString()),r.canvas.drawPoint(i,o,s,u,d))}})},{25:25,26:26,45:45}],39:[function(t,e,n){"use strict";function i(t){return void 0!==t._view.width}function a(t){var e,n,a,o,r=t._view;if(i(t)){var l=r.width/2;e=r.x-l,n=r.x+l,a=Math.min(r.y,r.base),o=Math.max(r.y,r.base)}else{var s=r.height/2;e=Math.min(r.x,r.base),n=Math.max(r.x,r.base),a=r.y-s,o=r.y+s}return{left:e,top:a,right:n,bottom:o}}var o=t(25),r=t(26);o._set("global",{elements:{rectangle:{backgroundColor:o.global.defaultColor,borderColor:o.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),e.exports=r.extend({draw:function(){function t(t){return m[(b+t)%4]}var e,n,i,a,o,r,l,s=this._chart.ctx,u=this._view,d=u.borderWidth;if(u.horizontal?(e=u.base,n=u.x,i=u.y-u.height/2,a=u.y+u.height/2,o=n>e?1:-1,r=1,l=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,o=1,r=(a=u.base)>i?1:-1,l=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a)),h=(d=d>c?c:d)/2,f=e+("left"!==l?h*o:0),g=n+("right"!==l?-h*o:0),p=i+("top"!==l?h*r:0),v=a+("bottom"!==l?-h*r:0);f!==g&&(i=p,a=v),p!==v&&(e=f,n=g)}s.beginPath(),s.fillStyle=u.backgroundColor,s.strokeStyle=u.borderColor,s.lineWidth=d;var m=[[e,a],[e,i],[n,i],[n,a]],b=["bottom","left","top","right"].indexOf(l,0);-1===b&&(b=0);var x=t(0);s.moveTo(x[0],x[1]);for(var y=1;y<4;y++)x=t(y),s.lineTo(x[0],x[1]);s.fill(),d&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=a(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){var n=this;if(!n._view)return!1;var o=a(n);return i(n)?t>=o.left&&t<=o.right:e>=o.top&&e<=o.bottom},inXRange:function(t){var e=a(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=a(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return i(this)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},{25:25,26:26}],40:[function(t,e,n){"use strict";e.exports={},e.exports.Arc=t(36),e.exports.Line=t(37),e.exports.Point=t(38),e.exports.Rectangle=t(39)},{36:36,37:37,38:38,39:39}],41:[function(t,e,n){"use strict";var i=t(42),n=e.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,o){if(o){var r=Math.min(o,i/2),l=Math.min(o,a/2);t.moveTo(e+r,n),t.lineTo(e+i-r,n),t.quadraticCurveTo(e+i,n,e+i,n+l),t.lineTo(e+i,n+a-l),t.quadraticCurveTo(e+i,n+a,e+i-r,n+a),t.lineTo(e+r,n+a),t.quadraticCurveTo(e,n+a,e,n+a-l),t.lineTo(e,n+l),t.quadraticCurveTo(e,n,e+r,n)}else t.rect(e,n,i,a)},drawPoint:function(t,e,n,i,a){var o,r,l,s,u,d;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(o=e.toString())&&"[object HTMLCanvasElement]"!==o){if(!(isNaN(n)||n<=0)){switch(e){default:t.beginPath(),t.arc(i,a,n,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(r=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(i-r/2,a+u/3),t.lineTo(i+r/2,a+u/3),t.lineTo(i,a-2*u/3),t.closePath(),t.fill();break;case"rect":d=1/Math.SQRT2*n,t.beginPath(),t.fillRect(i-d,a-d,2*d,2*d),t.strokeRect(i-d,a-d,2*d,2*d);break;case"rectRounded":var c=n/Math.SQRT2,h=i-c,f=a-c,g=Math.SQRT2*n;t.beginPath(),this.roundedRect(t,h,f,g,g,n/2),t.closePath(),t.fill();break;case"rectRot":d=1/Math.SQRT2*n,t.beginPath(),t.moveTo(i-d,a),t.lineTo(i,a+d),t.lineTo(i+d,a),t.lineTo(i,a-d),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"crossRot":t.beginPath(),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"star":t.beginPath(),t.moveTo(i,a+n),t.lineTo(i,a-n),t.moveTo(i-n,a),t.lineTo(i+n,a),l=Math.cos(Math.PI/4)*n,s=Math.sin(Math.PI/4)*n,t.moveTo(i-l,a-s),t.lineTo(i+l,a+s),t.moveTo(i-l,a+s),t.lineTo(i+l,a-s),t.closePath();break;case"line":t.beginPath(),t.moveTo(i-n,a),t.lineTo(i+n,a),t.closePath();break;case"dash":t.beginPath(),t.moveTo(i,a),t.lineTo(i+n,a),t.closePath()}t.stroke()}}else t.drawImage(e,i-e.width/2,a-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}};i.clear=n.clear,i.drawRoundedRectangle=function(t){t.beginPath(),n.roundedRect.apply(n,arguments),t.closePath()}},{42:42}],42:[function(t,e,n){"use strict";var i={noop:function(){},uid:function(){var t=0;return function(){return t++}}(),isNullOrUndef:function(t){return null===t||void 0===t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return i.valueOrDefault(i.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,a){var o,r,l;if(i.isArray(t))if(r=t.length,a)for(o=r-1;o>=0;o--)e.call(n,t[o],o);else for(o=0;o<r;o++)e.call(n,t[o],o);else if(i.isObject(t))for(r=(l=Object.keys(t)).length,o=0;o<r;o++)e.call(n,t[l[o]],l[o])},arrayEquals:function(t,e){var n,a,o,r;if(!t||!e||t.length!==e.length)return!1;for(n=0,a=t.length;n<a;++n)if(o=t[n],r=e[n],o instanceof Array&&r instanceof Array){if(!i.arrayEquals(o,r))return!1}else if(o!==r)return!1;return!0},clone:function(t){if(i.isArray(t))return t.map(i.clone);if(i.isObject(t)){for(var e={},n=Object.keys(t),a=n.length,o=0;o<a;++o)e[n[o]]=i.clone(t[n[o]]);return e}return t},_merger:function(t,e,n,a){var o=e[t],r=n[t];i.isObject(o)&&i.isObject(r)?i.merge(o,r,a):e[t]=i.clone(r)},_mergerIf:function(t,e,n){var a=e[t],o=n[t];i.isObject(a)&&i.isObject(o)?i.mergeIf(a,o):e.hasOwnProperty(t)||(e[t]=i.clone(o))},merge:function(t,e,n){var a,o,r,l,s,u=i.isArray(e)?e:[e],d=u.length;if(!i.isObject(t))return t;for(a=(n=n||{}).merger||i._merger,o=0;o<d;++o)if(e=u[o],i.isObject(e))for(s=0,l=(r=Object.keys(e)).length;s<l;++s)a(r[s],t,e,n);return t},mergeIf:function(t,e){return i.merge(t,e,{merger:i._mergerIf})},extend:function(t){for(var e=1,n=arguments.length;e<n;++e)i.each(arguments[e],function(e,n){t[n]=e});return t},inherits:function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},a=function(){this.constructor=n};return a.prototype=e.prototype,n.prototype=new a,n.extend=i.inherits,t&&i.extend(n.prototype,t),n.__super__=e.prototype,n}};e.exports=i,i.callCallback=i.callback,i.indexOf=function(t,e,n){return Array.prototype.indexOf.call(t,e,n)},i.getValueOrDefault=i.valueOrDefault,i.getValueAtIndexOrDefault=i.valueAtIndexOrDefault},{}],43:[function(t,e,n){"use strict";var i=t(42),a={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-a.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*a.easeInBounce(2*t):.5*a.easeOutBounce(2*t-1)+.5}};e.exports={effects:a},i.easingEffects=a},{42:42}],44:[function(t,e,n){"use strict";var i=t(42);e.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,a,o;return i.isObject(t)?(e=+t.top||0,n=+t.right||0,a=+t.bottom||0,o=+t.left||0):e=n=a=o=+t||0,{top:e,right:n,bottom:a,left:o,height:e+a,width:o+n}},resolve:function(t,e,n){var a,o,r;for(a=0,o=t.length;a<o;++a)if(void 0!==(r=t[a])&&(void 0!==e&&"function"==typeof r&&(r=r(e)),void 0!==n&&i.isArray(r)&&(r=r[n]),void 0!==r))return r}}},{42:42}],45:[function(t,e,n){"use strict";e.exports=t(42),e.exports.easing=t(43),e.exports.canvas=t(41),e.exports.options=t(44)},{41:41,42:42,43:43,44:44}],46:[function(t,e,n){e.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},{}],47:[function(t,e,n){"use strict";function i(t,e){var n=v.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}function a(t,e){var n=t.style,a=t.getAttribute("height"),o=t.getAttribute("width");if(t[m]={initial:{height:a,width:o,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",null===o||""===o){var r=i(t,"width");void 0!==r&&(t.width=r)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var l=i(t,"height");void 0!==r&&(t.height=l)}return t}function o(t,e,n){t.addEventListener(e,n,M)}function r(t,e,n){t.removeEventListener(e,n,M)}function l(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function s(t,e){var n=w[t.type]||t.type,i=v.getRelativePosition(t,e);return l(n,e,i.x,i.y,t)}function u(t,e){var n=!1,i=[];return function(){i=Array.prototype.slice.call(arguments),e=e||this,n||(n=!0,v.requestAnimFrame.call(window,function(){n=!1,t.apply(e,i)}))}}function d(t){var e=document.createElement("div"),n=b+"size-monitor",i="position:absolute;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1;";e.style.cssText=i,e.className=n,e.innerHTML='<div class="'+n+'-expand" style="'+i+'"><div style="position:absolute;width:1000000px;height:1000000px;left:0;top:0"></div></div><div class="'+n+'-shrink" style="'+i+'"><div style="position:absolute;width:200%;height:200%;left:0; top:0"></div></div>';var a=e.childNodes[0],r=e.childNodes[1];e._reset=function(){a.scrollLeft=1e6,a.scrollTop=1e6,r.scrollLeft=1e6,r.scrollTop=1e6};var l=function(){e._reset(),t()};return o(a,"scroll",l.bind(a,"expand")),o(r,"scroll",l.bind(r,"shrink")),e}function c(t,e){var n=t[m]||(t[m]={}),i=n.renderProxy=function(t){t.animationName===y&&e()};v.each(k,function(e){o(t,e,i)}),n.reflow=!!t.offsetParent,t.classList.add(x)}function h(t){var e=t[m]||{},n=e.renderProxy;n&&(v.each(k,function(e){r(t,e,n)}),delete e.renderProxy),t.classList.remove(x)}function f(t,e,n){var i=t[m]||(t[m]={}),a=i.resizer=d(u(function(){if(i.resizer)return e(l("resize",n))}));c(t,function(){if(i.resizer){var e=t.parentNode;e&&e!==a.parentNode&&e.insertBefore(a,e.firstChild),a._reset()}})}function g(t){var e=t[m]||{},n=e.resizer;delete e.resizer,h(t),n&&n.parentNode&&n.parentNode.removeChild(n)}function p(t,e){var n=t._style||document.createElement("style");t._style||(t._style=n,e="/* Chart.js */\n"+e,n.setAttribute("type","text/css"),document.getElementsByTagName("head")[0].appendChild(n)),n.appendChild(document.createTextNode(e))}var v=t(45),m="$chartjs",b="chartjs-",x=b+"render-monitor",y=b+"render-animation",k=["animationstart","webkitAnimationStart"],w={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},M=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};e.exports={_enabled:"undefined"!=typeof window&&"undefined"!=typeof document,initialize:function(){var t="from{opacity:0.99}to{opacity:1}";p(this,"@-webkit-keyframes "+y+"{"+t+"}@keyframes "+y+"{"+t+"}."+x+"{-webkit-animation:"+y+" 0.001s;animation:"+y+" 0.001s;}")},acquireContext:function(t,e){"string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas);var n=t&&t.getContext&&t.getContext("2d");return n&&n.canvas===t?(a(t,e),n):null},releaseContext:function(t){var e=t.canvas;if(e[m]){var n=e[m].initial;["height","width"].forEach(function(t){var i=n[t];v.isNullOrUndef(i)?e.removeAttribute(t):e.setAttribute(t,i)}),v.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e[m]}},addEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=n[m]||(n[m]={});o(i,e,(a.proxies||(a.proxies={}))[t.id+"_"+e]=function(e){n(s(e,t))})}else f(i,n,t)},removeEventListener:function(t,e,n){var i=t.canvas;if("resize"!==e){var a=((n[m]||{}).proxies||{})[t.id+"_"+e];a&&r(i,e,a)}else g(i)}},v.addEvent=o,v.removeEvent=r},{45:45}],48:[function(t,e,n){"use strict";var i=t(45),a=t(46),o=t(47),r=o._enabled?o:a;e.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},r)},{45:45,46:46,47:47}],49:[function(t,e,n){"use strict";var i=t(25),a=t(40),o=t(45);i._set("global",{plugins:{filler:{propagate:!0}}}),e.exports=function(){function t(t,e,n){var i,a=t._model||{},o=a.fill;if(void 0===o&&(o=!!a.backgroundColor),!1===o||null===o)return!1;if(!0===o)return"origin";if(i=parseFloat(o,10),isFinite(i)&&Math.floor(i)===i)return"-"!==o[0]&&"+"!==o[0]||(i=e+i),!(i===e||i<0||i>=n)&&i;switch(o){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return o;default:return!1}}function e(t){var e,n=t.el._model||{},i=t.el._scale||{},a=t.fill,o=null;if(isFinite(a))return null;if("start"===a?o=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===a?o=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?o=n.scaleZero:i.getBasePosition?o=i.getBasePosition():i.getBasePixel&&(o=i.getBasePixel()),void 0!==o&&null!==o){if(void 0!==o.x&&void 0!==o.y)return o;if("number"==typeof o&&isFinite(o))return e=i.isHorizontal(),{x:e?o:null,y:e?null:o}}return null}function n(t,e,n){var i,a=t[e].fill,o=[e];if(!n)return a;for(;!1!==a&&-1===o.indexOf(a);){if(!isFinite(a))return a;if(!(i=t[a]))return!1;if(i.visible)return a;o.push(a),a=i.fill}return!1}function r(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),d[n](t))}function l(t){return t&&!t.skip}function s(t,e,n,i,a){var r;if(i&&a){for(t.moveTo(e[0].x,e[0].y),r=1;r<i;++r)o.canvas.lineTo(t,e[r-1],e[r]);for(t.lineTo(n[a-1].x,n[a-1].y),r=a-1;r>0;--r)o.canvas.lineTo(t,n[r],n[r-1],!0)}}function u(t,e,n,i,a,o){var r,u,d,c,h,f,g,p=e.length,v=i.spanGaps,m=[],b=[],x=0,y=0;for(t.beginPath(),r=0,u=p+!!o;r<u;++r)h=n(c=e[d=r%p]._view,d,i),f=l(c),g=l(h),f&&g?(x=m.push(c),y=b.push(h)):x&&y&&(v?(f&&m.push(c),g&&b.push(h)):(s(t,m,b,x,y),x=y=0,m=[],b=[]));s(t,m,b,x,y),t.closePath(),t.fillStyle=a,t.fill()}var d={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],o=a.length||0;return o?function(t,e){return e<o&&a[e]._view||null}:null},boundary:function(t){var e=t.boundary,n=e?e.x:null,i=e?e.y:null;return function(t){return{x:null===n?t.x:n,y:null===i?t.y:i}}}};return{id:"filler",afterDatasetsUpdate:function(i,o){var l,s,u,d,c=(i.data.datasets||[]).length,h=o.propagate,f=[];for(s=0;s<c;++s)d=null,(u=(l=i.getDatasetMeta(s)).dataset)&&u._model&&u instanceof a.Line&&(d={visible:i.isDatasetVisible(s),fill:t(u,s,c),chart:i,el:u}),l.$filler=d,f.push(d);for(s=0;s<c;++s)(d=f[s])&&(d.fill=n(f,s,h),d.boundary=e(d),d.mapper=r(d))},beforeDatasetDraw:function(t,e){var n=e.meta.$filler;if(n){var a=t.ctx,r=n.el,l=r._view,s=r._children||[],d=n.mapper,c=l.backgroundColor||i.global.defaultColor;d&&c&&s.length&&(o.canvas.clipArea(a,t.chartArea),u(a,s,d,l,c,r._loop),o.canvas.unclipArea(a))}}}}},{25:25,40:40,45:45}],50:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return o.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:o.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}},this):[]}}},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}}),e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.ctx,options:n,chart:e});r.configure(e,i,n),r.addBox(e,i),e.legend=i}var r=t.layoutService,l=o.noop;return t.Legend=a.extend({initialize:function(t){o.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:l,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:l,beforeSetDimensions:l,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:l,beforeBuildLabels:l,buildLabels:function(){var t=this,e=t.options.labels||{},n=o.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:l,beforeFit:l,fit:function(){var t=this,n=t.options,a=n.labels,r=n.display,l=t.ctx,s=i.global,u=o.valueOrDefault,d=u(a.fontSize,s.defaultFontSize),c=u(a.fontStyle,s.defaultFontStyle),h=u(a.fontFamily,s.defaultFontFamily),f=o.fontString(d,c,h),g=t.legendHitBoxes=[],p=t.minSize,v=t.isHorizontal();if(v?(p.width=t.maxWidth,p.height=r?10:0):(p.width=r?10:0,p.height=t.maxHeight),r)if(l.font=f,v){var m=t.lineWidths=[0],b=t.legendItems.length?d+a.padding:0;l.textAlign="left",l.textBaseline="top",o.each(t.legendItems,function(n,i){var o=e(a,d)+d/2+l.measureText(n.text).width;m[m.length-1]+o+a.padding>=t.width&&(b+=d+a.padding,m[m.length]=t.left),g[i]={left:0,top:0,width:o,height:d},m[m.length-1]+=o+a.padding}),p.height+=b}else{var x=a.padding,y=t.columnWidths=[],k=a.padding,w=0,M=0,S=d+x;o.each(t.legendItems,function(t,n){var i=e(a,d)+d/2+l.measureText(t.text).width;M+S>p.height&&(k+=w+a.padding,y.push(w),w=0,M=0),w=Math.max(w,i),M+=S,g[n]={left:0,top:0,width:i,height:d}}),k+=w,y.push(w),p.width+=k}t.width=p.width,t.height=p.height},afterFit:l,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,n=t.options,a=n.labels,r=i.global,l=r.elements.line,s=t.width,u=t.lineWidths;if(n.display){var d,c=t.ctx,h=o.valueOrDefault,f=h(a.fontColor,r.defaultFontColor),g=h(a.fontSize,r.defaultFontSize),p=h(a.fontStyle,r.defaultFontStyle),v=h(a.fontFamily,r.defaultFontFamily),m=o.fontString(g,p,v);c.textAlign="left",c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=m;var b=e(a,g),x=t.legendHitBoxes,y=function(t,e,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,r.defaultColor),c.lineCap=h(i.lineCap,l.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,l.borderDashOffset),c.lineJoin=h(i.lineJoin,l.borderJoinStyle),c.lineWidth=h(i.lineWidth,l.borderWidth),c.strokeStyle=h(i.strokeStyle,r.defaultColor);var a=0===h(i.lineWidth,l.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,l.borderDash)),n.labels&&n.labels.usePointStyle){var s=g*Math.SQRT2/2,u=s/Math.SQRT2,d=t+u,f=e+u;o.canvas.drawPoint(c,i.pointStyle,s,d,f)}else a||c.strokeRect(t,e,b,g),c.fillRect(t,e,b,g);c.restore()}},k=function(t,e,n,i){var a=g/2,o=b+a+t,r=e+a;c.fillText(n.text,o,r),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(o,r),c.lineTo(o+i,r),c.stroke())},w=t.isHorizontal();d=w?{x:t.left+(s-u[0])/2,y:t.top+a.padding,line:0}:{x:t.left+a.padding,y:t.top+a.padding,line:0};var M=g+a.padding;o.each(t.legendItems,function(e,n){var i=c.measureText(e.text).width,o=b+g/2+i,r=d.x,l=d.y;w?r+o>=s&&(l=d.y+=M,d.line++,r=d.x=t.left+(s-u[d.line])/2):l+M>t.bottom&&(r=d.x=r+t.columnWidths[d.line]+a.padding,l=d.y=t.top+a.padding,d.line++),y(r,l,e),x[n].left=r,x[n].top=l,k(r,l,e,i),w?d.x+=o+a.padding:d.y+=M})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var o=t.x,r=t.y;if(o>=e.left&&o<=e.right&&r>=e.top&&r<=e.bottom)for(var l=e.legendHitBoxes,s=0;s<l.length;++s){var u=l[s];if(o>=u.left&&o<=u.left+u.width&&r>=u.top&&r<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[s]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[s]),a=!0;break}}}return a}}),{id:"legend",beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(t){var e=t.options.legend,a=t.legend;e?(o.mergeIf(e,i.global.legend),a?(r.configure(t,a,e),a.options=e):n(t,e)):a&&(r.removeBox(t,a),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}}},{25:25,26:26,45:45}],51:[function(t,e,n){"use strict";var i=t(25),a=t(26),o=t(45);i._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,lineHeight:1.2,padding:10,position:"top",text:"",weight:2e3}}),e.exports=function(t){function e(e,i){var a=new t.Title({ctx:e.ctx,options:i,chart:e});n.configure(e,a,i),n.addBox(e,a),e.titleBlock=a}var n=t.layoutService,r=o.noop;return t.Title=a.extend({initialize:function(t){var e=this;o.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:r,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:r,beforeSetDimensions:r,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:r,beforeBuildLabels:r,buildLabels:r,afterBuildLabels:r,beforeFit:r,fit:function(){var t=this,e=o.valueOrDefault,n=t.options,a=n.display,r=e(n.fontSize,i.global.defaultFontSize),l=t.minSize,s=o.isArray(n.text)?n.text.length:1,u=o.options.toLineHeight(n.lineHeight,r),d=a?s*u+2*n.padding:0;t.isHorizontal()?(l.width=t.maxWidth,l.height=d):(l.width=d,l.height=t.maxHeight),t.width=l.width,t.height=l.height},afterFit:r,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=o.valueOrDefault,a=t.options,r=i.global;if(a.display){var l,s,u,d=n(a.fontSize,r.defaultFontSize),c=n(a.fontStyle,r.defaultFontStyle),h=n(a.fontFamily,r.defaultFontFamily),f=o.fontString(d,c,h),g=o.options.toLineHeight(a.lineHeight,d),p=g/2+a.padding,v=0,m=t.top,b=t.left,x=t.bottom,y=t.right;e.fillStyle=n(a.fontColor,r.defaultFontColor),e.font=f,t.isHorizontal()?(s=b+(y-b)/2,u=m+p,l=y-b):(s="left"===a.position?b+p:y-p,u=m+(x-m)/2,l=x-m,v=Math.PI*("left"===a.position?-.5:.5)),e.save(),e.translate(s,u),e.rotate(v),e.textAlign="center",e.textBaseline="middle";var k=a.text;if(o.isArray(k))for(var w=0,M=0;M<k.length;++M)e.fillText(k[M],0,w,l),w+=g;else e.fillText(k,0,0,l);e.restore()}}}),{id:"title",beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(a){var r=a.options.title,l=a.titleBlock;r?(o.mergeIf(r,i.global.title),l?(n.configure(a,l,r),l.options=r):e(a,r)):l&&(t.layoutService.removeBox(a,l),delete a.titleBlock)}}}},{25:25,26:26,45:45}],52:[function(t,e,n){"use strict";e.exports=function(t){var e=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,e=t.getLabels();t.minIndex=0,t.maxIndex=e.length-1;var n;void 0!==t.options.ticks.min&&(n=e.indexOf(t.options.ticks.min),t.minIndex=-1!==n?n:t.minIndex),void 0!==t.options.ticks.max&&(n=e.indexOf(t.options.ticks.max),t.maxIndex=-1!==n?n:t.maxIndex),t.min=e[t.minIndex],t.max=e[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,a=i.options.offset,o=Math.max(i.maxIndex+1-i.minIndex-(a?0:1),1);if(void 0!==t&&null!==t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var r=i.getLabels();t=n||t;var l=r.indexOf(t);e=-1!==l?l:e}if(i.isHorizontal()){var s=i.width/o,u=s*(e-i.minIndex);return a&&(u+=s/2),i.left+Math.round(u)}var d=i.height/o,c=d*(e-i.minIndex);return a&&(c+=d/2),i.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),a=e.isHorizontal(),o=(a?e.width:e.height)/i;return t-=a?e.left:e.top,n&&(t-=o/2),(t<=0?0:Math.round(t/o))+e.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",e,{position:"bottom"})}},{}],53:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:o.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return r?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,i=e.chart,o=i.data.datasets,r=e.isHorizontal();e.min=null,e.max=null;var l=n.stacked;if(void 0===l&&a.each(o,function(e,n){if(!l){var a=i.getDatasetMeta(n);i.isDatasetVisible(n)&&t(a)&&void 0!==a.stack&&(l=!0)}}),n.stacked||l){var s={};a.each(o,function(o,r){var l=i.getDatasetMeta(r),u=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");void 0===s[u]&&(s[u]={positiveValues:[],negativeValues:[]});var d=s[u].positiveValues,c=s[u].negativeValues;i.isDatasetVisible(r)&&t(l)&&a.each(o.data,function(t,i){var a=+e.getRightValue(t);isNaN(a)||l.data[i].hidden||(d[i]=d[i]||0,c[i]=c[i]||0,n.relativePoints?d[i]=100:a<0?c[i]+=a:d[i]+=a)})}),a.each(s,function(t){var n=t.positiveValues.concat(t.negativeValues),i=a.min(n),o=a.max(n);e.min=null===e.min?i:Math.min(e.min,i),e.max=null===e.max?o:Math.max(e.max,o)})}else a.each(o,function(n,o){var r=i.getDatasetMeta(o);i.isDatasetVisible(o)&&t(r)&&a.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:i<e.min&&(e.min=i),null===e.max?e.max=i:i>e.max&&(e.max=i))})});e.min=isFinite(e.min)&&!isNaN(e.min)?e.min:0,e.max=isFinite(e.max)&&!isNaN(e.max)?e.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this,n=e.options.ticks;if(e.isHorizontal())t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.width/50));else{var o=a.valueOrDefault(n.fontSize,i.global.defaultFontSize);t=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(e.height/(2*o)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),o=n.end-i;return n.isHorizontal()?(e=n.left+n.width/o*(a-i),Math.round(e)):(e=n.bottom-n.height/o*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},{25:25,34:34,45:45}],54:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),a=i.sign(t.max);n<0&&a<0?t.max=0:n>0&&a>0&&(t.min=0)}var o=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),o!==r&&t.min>=t.max&&(o?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),o={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},r=t.ticks=a.generators.linear(o,t);t.handleDirectionalChanges(),t.max=i.max(r),t.min=i.min(r),e.reverse?(r.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{34:34,45:45}],55:[function(t,e,n){"use strict";var i=t(45),a=t(34);e.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){function t(t){return s?t.xAxisID===e.id:t.yAxisID===e.id}var e=this,n=e.options,a=n.ticks,o=e.chart,r=o.data.datasets,l=i.valueOrDefault,s=e.isHorizontal();e.min=null,e.max=null,e.minNotZero=null;var u=n.stacked;if(void 0===u&&i.each(r,function(e,n){if(!u){var i=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(u=!0)}}),n.stacked||u){var d={};i.each(r,function(a,r){var l=o.getDatasetMeta(r),s=[l.type,void 0===n.stacked&&void 0===l.stack?r:"",l.stack].join(".");o.isDatasetVisible(r)&&t(l)&&(void 0===d[s]&&(d[s]=[]),i.each(a.data,function(t,i){var a=d[s],o=+e.getRightValue(t);isNaN(o)||l.data[i].hidden||(a[i]=a[i]||0,n.relativePoints?a[i]=100:a[i]+=o)}))}),i.each(d,function(t){var n=i.min(t),a=i.max(t);e.min=null===e.min?n:Math.min(e.min,n),e.max=null===e.max?a:Math.max(e.max,a)})}else i.each(r,function(n,a){var r=o.getDatasetMeta(a);o.isDatasetVisible(a)&&t(r)&&i.each(n.data,function(t,n){var i=+e.getRightValue(t);isNaN(i)||r.data[n].hidden||(null===e.min?e.min=i:i<e.min&&(e.min=i),null===e.max?e.max=i:i>e.max&&(e.max=i),0!==i&&(null===e.minNotZero||i<e.minNotZero)&&(e.minNotZero=i))})});e.min=l(a.min,e.min),e.max=l(a.max,e.max),e.min===e.max&&(0!==e.min&&null!==e.min?(e.min=Math.pow(10,Math.floor(i.log10(e.min))-1),e.max=Math.pow(10,Math.floor(i.log10(e.max))+1)):(e.min=1,e.max=10))},buildTicks:function(){var t=this,e=t.options.ticks,n={min:e.min,max:e.max},o=t.ticks=a.generators.logarithmic(n,t);t.isHorizontal()||o.reverse(),t.max=i.max(o),t.min=i.min(o),e.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},getPixelForValue:function(t){var e,n,a,o=this,r=o.start,l=+o.getRightValue(t),s=o.options.ticks;return o.isHorizontal()?(a=i.log10(o.end)-i.log10(r),0===l?n=o.left:(e=o.width,n=o.left+e/a*(i.log10(l)-i.log10(r)))):(e=o.height,0!==r||s.reverse?0===o.end&&s.reverse?(a=i.log10(o.start)-i.log10(o.minNotZero),n=l===o.end?o.top:l===o.minNotZero?o.top+.02*e:o.top+.02*e+.98*e/a*(i.log10(l)-i.log10(o.minNotZero))):0===l?n=s.reverse?o.top:o.bottom:(a=i.log10(o.end)-i.log10(r),e=o.height,n=o.bottom-e/a*(i.log10(l)-i.log10(r))):(a=i.log10(o.end)-i.log10(o.minNotZero),n=l===r?o.bottom:l===o.minNotZero?o.bottom-.02*e:o.bottom-.02*e-.98*e/a*(i.log10(l)-i.log10(o.minNotZero)))),n},getValueForPixel:function(t){var e,n,a=this,o=i.log10(a.end)-i.log10(a.start);return a.isHorizontal()?(n=a.width,e=a.start*Math.pow(10,(t-a.left)*o/n)):(n=a.height,e=Math.pow(10,(a.bottom-t)*o/n)/a.start),e}});t.scaleService.registerScaleType("logarithmic",n,e)}},{34:34,45:45}],56:[function(t,e,n){"use strict";var i=t(25),a=t(45),o=t(34);e.exports=function(t){function e(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function n(t){var e=t.options.pointLabels,n=a.valueOrDefault(e.fontSize,v.defaultFontSize),i=a.valueOrDefault(e.fontStyle,v.defaultFontStyle),o=a.valueOrDefault(e.fontFamily,v.defaultFontFamily);return{size:n,style:i,family:o,font:a.fontString(n,i,o)}}function r(t,e,n){return a.isArray(n)?{w:a.longestText(t,t.font,n),h:n.length*e+1.5*(n.length-1)*e}:{w:t.measureText(n).width,h:e}}function l(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function s(t){var i,o,s,u=n(t),d=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},h={};t.ctx.font=u.font,t._pointLabelSizes=[];var f=e(t);for(i=0;i<f;i++){s=t.getPointPosition(i,d),o=r(t.ctx,u.size,t.pointLabels[i]||""),t._pointLabelSizes[i]=o;var g=t.getIndexAngle(i),p=a.toDegrees(g)%360,v=l(p,s.x,o.w,0,180),m=l(p,s.y,o.h,90,270);v.start<c.l&&(c.l=v.start,h.l=g),v.end>c.r&&(c.r=v.end,h.r=g),m.start<c.t&&(c.t=m.start,h.t=g),m.end>c.b&&(c.b=m.end,h.b=g)}t.setReductions(d,c,h)}function u(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function d(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(a.isArray(e))for(var o=n.y,r=1.5*i,l=0;l<e.length;++l)t.fillText(e[l],n.x,o),o+=r;else t.fillText(e,n.x,n.y)}function h(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function f(t){var i=t.ctx,o=a.valueOrDefault,r=t.options,l=r.angleLines,s=r.pointLabels;i.lineWidth=l.lineWidth,i.strokeStyle=l.color;var u=t.getDistanceFromCenterForValue(r.ticks.reverse?t.min:t.max),f=n(t);i.textBaseline="top";for(var g=e(t)-1;g>=0;g--){if(l.display){var p=t.getPointPosition(g,u);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(p.x,p.y),i.stroke(),i.closePath()}if(s.display){var m=t.getPointPosition(g,u+5),b=o(s.fontColor,v.defaultFontColor);i.font=f.font,i.fillStyle=b;var x=t.getIndexAngle(g),y=a.toDegrees(x);i.textAlign=d(y),h(y,t._pointLabelSizes[g],m),c(i,t.pointLabels[g]||"",m,f.size)}}}function g(t,n,i,o){var r=t.ctx;if(r.strokeStyle=a.valueAtIndexOrDefault(n.color,o-1),r.lineWidth=a.valueAtIndexOrDefault(n.lineWidth,o-1),t.options.gridLines.circular)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var l=e(t);if(0===l)return;r.beginPath();var s=t.getPointPosition(0,i);r.moveTo(s.x,s.y);for(var u=1;u<l;u++)s=t.getPointPosition(u,i),r.lineTo(s.x,s.y);r.closePath(),r.stroke()}}function p(t){return a.isNumber(t)?t:0}var v=i.global,m={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:o.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}},b=t.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,n=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=a.min([t.height,t.width]),o=a.valueOrDefault(n.fontSize,v.defaultFontSize);t.drawingArea=e.display?i/2-(o/2+n.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;a.each(e.data.datasets,function(o,r){if(e.isDatasetVisible(r)){var l=e.getDatasetMeta(r);a.each(o.data,function(e,a){var o=+t.getRightValue(e);isNaN(o)||l.data[a].hidden||(n=Math.min(o,n),i=Math.max(o,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=a.valueOrDefault(t.fontSize,v.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){this.options.pointLabels.display?s(this):u(this)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),o=Math.max(e.r-i.width,0)/Math.sin(n.r),r=-e.t/Math.cos(n.t),l=-Math.max(e.b-i.height,0)/Math.cos(n.b);a=p(a),o=p(o),r=p(r),l=p(l),i.drawingArea=Math.min(Math.round(t-(a+o)/2),Math.round(t-(r+l)/2)),i.setCenterPoint(a,o,r,l)},setCenterPoint:function(t,e,n,i){var a=this,o=a.width-e-a.drawingArea,r=t+a.drawingArea,l=n+a.drawingArea,s=a.height-i-a.drawingArea;a.xCenter=Math.round((r+o)/2+a.left),a.yCenter=Math.round((l+s)/2+a.top)},getIndexAngle:function(t){return t*(2*Math.PI/e(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this,i=n.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+n.xCenter,y:Math.round(Math.sin(i)*e)+n.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this,e=t.min,n=t.max;return t.getPointPositionForValue(0,t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,o=a.valueOrDefault;if(e.display){var r=t.ctx,l=this.getIndexAngle(0),s=o(i.fontSize,v.defaultFontSize),u=o(i.fontStyle,v.defaultFontStyle),d=o(i.fontFamily,v.defaultFontFamily),c=a.fontString(s,u,d);a.each(t.ticks,function(e,a){if(a>0||i.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[a]);if(n.display&&0!==a&&g(t,n,u,a),i.display){var d=o(i.fontColor,v.defaultFontColor);if(r.font=c,r.save(),r.translate(t.xCenter,t.yCenter),r.rotate(l),i.showLabelBackdrop){var h=r.measureText(e).width;r.fillStyle=i.backdropColor,r.fillRect(-h/2-i.backdropPaddingX,-u-s/2-i.backdropPaddingY,h+2*i.backdropPaddingX,s+2*i.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=d,r.fillText(e,0,-u),r.restore()}}}),(e.angleLines.display||e.pointLabels.display)&&f(t)}}});t.scaleService.registerScaleType("radialLinear",b,m)}},{25:25,34:34,45:45}],57:[function(t,e,n){"use strict";function i(t,e){return t-e}function a(t){var e,n,i,a={},o=[];for(e=0,n=t.length;e<n;++e)a[i=t[e]]||(a[i]=!0,o.push(i));return o}function o(t,e,n,i){if("linear"===i||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var a,o,r,l,s,u=[],d=[e];for(a=0,o=t.length;a<o;++a)(l=t[a])>e&&l<n&&d.push(l);for(d.push(n),a=0,o=d.length;a<o;++a)s=d[a+1],r=d[a-1],l=d[a],void 0!==r&&void 0!==s&&Math.round((s+r)/2)===l||u.push({time:l,pos:a/(o-1)});return u}function r(t,e,n){for(var i,a,o,r=0,l=t.length-1;r>=0&&r<=l;){if(i=r+l>>1,a=t[i-1]||null,o=t[i],!a)return{lo:null,hi:o};if(o[e]<n)r=i+1;else{if(!(a[e]>n))return{lo:a,hi:o};l=i-1}}return{lo:o,hi:null}}function l(t,e,n,i){var a=r(t,e,n),o=a.lo?a.hi?a.lo:t[t.length-2]:t[0],l=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=l[e]-o[e],u=s?(n-o[e])/s:0,d=(l[i]-o[i])*u;return o[i]+d}function s(t,e){var n=e.parser,i=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof i?m(t,i):(t instanceof m||(t=m(t)),t.isValid()?t:"function"==typeof i?i(t):t)}function u(t,e){if(x.isNullOrUndef(t))return null;var n=e.options.time,i=s(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function d(t,e,n,i){var a,o,r,l=e-t,s=w[n],u=s.size,d=s.steps;if(!d)return Math.ceil(l/((i||1)*u));for(a=0,o=d.length;a<o&&(r=d[a],!(Math.ceil(l/(u*r))<=i));++a);return r}function c(t,e,n,i){var a,o,r,l=M.length;for(a=M.indexOf(t);a<l-1;++a)if(o=w[M[a]],r=o.steps?o.steps[o.steps.length-1]:k,o.common&&Math.ceil((n-e)/(r*o.size))<=i)return M[a];return M[l-1]}function h(t,e,n,i){var a,o,r=m.duration(m(i).diff(m(n)));for(a=M.length-1;a>=M.indexOf(e);a--)if(o=M[a],w[o].common&&r.as(o)>=t.length)return o;return M[e?M.indexOf(e):0]}function f(t){for(var e=M.indexOf(t)+1,n=M.length;e<n;++e)if(w[M[e]].common)return M[e]}function g(t,e,n,i){var a,o=i.time,r=o.unit||c(o.minUnit,t,e,n),l=f(r),s=x.valueOrDefault(o.stepSize,o.unitStepSize),u="week"===r&&o.isoWeekday,h=i.ticks.major.enabled,g=w[r],p=m(t),v=m(e),b=[];for(s||(s=d(t,e,r,n)),u&&(p=p.isoWeekday(u),v=v.isoWeekday(u)),p=p.startOf(u?"day":r),(v=v.startOf(u?"day":r))<e&&v.add(1,r),a=m(p),h&&l&&!u&&!o.round&&(a.startOf(l),a.add(~~((p-a)/(g.size*s))*s,r));a<v;a.add(s,r))b.push(+a);return b.push(+a),b}function p(t,e,n,i,a){var o,r,s=0,u=0;return a.offset&&e.length&&(a.time.min||(o=e.length>1?e[1]:i,r=e[0],s=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2),a.time.max||(o=e[e.length-1],r=e.length>1?e[e.length-2]:n,u=(l(t,"time",o,"pos")-l(t,"time",r,"pos"))/2)),{left:s,right:u}}function v(t,e){var n,i,a,o,r=[];for(n=0,i=t.length;n<i;++n)a=t[n],o=!!e&&a===+m(a).startOf(e),r.push({value:a,major:o});return r}var m=t(1);m="function"==typeof m?m:window.moment;var b=t(25),x=t(45),y=Number.MIN_SAFE_INTEGER||-9007199254740991,k=Number.MAX_SAFE_INTEGER||9007199254740991,w={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},M=Object.keys(w);e.exports=function(t){var e=t.Scale.extend({initialize:function(){if(!m)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");this.mergeTicksOptions(),t.Scale.prototype.initialize.call(this)},update:function(){var e=this,n=e.options;return n.time&&n.time.format&&console.warn("options.time.format is deprecated and replaced by options.time.parser."),t.Scale.prototype.update.apply(e,arguments)},getRightValue:function(e){return e&&void 0!==e.t&&(e=e.t),t.Scale.prototype.getRightValue.call(this,e)},determineDataLimits:function(){var t,e,n,o,r,l,s=this,d=s.chart,c=s.options.time,h=k,f=y,g=[],p=[],v=[];for(t=0,n=d.data.labels.length;t<n;++t)v.push(u(d.data.labels[t],s));for(t=0,n=(d.data.datasets||[]).length;t<n;++t)if(d.isDatasetVisible(t))if(r=d.data.datasets[t].data,x.isObject(r[0]))for(p[t]=[],e=0,o=r.length;e<o;++e)l=u(r[e],s),g.push(l),p[t][e]=l;else g.push.apply(g,v),p[t]=v.slice(0);else p[t]=[];v.length&&(v=a(v).sort(i),h=Math.min(h,v[0]),f=Math.max(f,v[v.length-1])),g.length&&(g=a(g).sort(i),h=Math.min(h,g[0]),f=Math.max(f,g[g.length-1])),h=u(c.min,s)||h,f=u(c.max,s)||f,h=h===k?+m().startOf("day"):h,f=f===y?+m().endOf("day")+1:f,s.min=Math.min(h,f),s.max=Math.max(h+1,f),s._horizontal=s.isHorizontal(),s._table=[],s._timestamps={data:g,datasets:p,labels:v}},buildTicks:function(){var t,e,n,i=this,a=i.min,r=i.max,l=i.options,s=l.time,d=[],c=[];switch(l.ticks.source){case"data":d=i._timestamps.data;break;case"labels":d=i._timestamps.labels;break;case"auto":default:d=g(a,r,i.getLabelCapacity(a),l)}for("ticks"===l.bounds&&d.length&&(a=d[0],r=d[d.length-1]),a=u(s.min,i)||a,r=u(s.max,i)||r,t=0,e=d.length;t<e;++t)(n=d[t])>=a&&n<=r&&c.push(n);return i.min=a,i.max=r,i._unit=s.unit||h(c,s.minUnit,i.min,i.max),i._majorUnit=f(i._unit),i._table=o(i._timestamps.data,a,r,l.distribution),i._offsets=p(i._table,c,a,r,l),v(c,i._majorUnit)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.options.time,o=i.labels&&t<i.labels.length?i.labels[t]:"",r=i.datasets[e].data[t];return x.isObject(r)&&(o=n.getRightValue(r)),a.tooltipFormat&&(o=s(o,a).format(a.tooltipFormat)),o},tickFormatFunction:function(t,e,n,i){var a=this,o=a.options,r=t.valueOf(),l=o.time.displayFormats,s=l[a._unit],u=a._majorUnit,d=l[u],c=t.clone().startOf(u).valueOf(),h=o.ticks.major,f=h.enabled&&u&&d&&r===c,g=t.format(i||(f?d:s)),p=f?h:o.ticks.minor,v=x.valueOrDefault(p.callback,p.userCallback);return v?v(g,e,n):g},convertTicksToLabels:function(t){var e,n,i=[];for(e=0,n=t.length;e<n;++e)i.push(this.tickFormatFunction(m(t[e].value),e,t));return i},getPixelForOffset:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=l(e._table,"time",t,"pos");return i+n*(e._offsets.left+a)/(e._offsets.left+1+e._offsets.right)},getPixelForValue:function(t,e,n){var i=this,a=null;if(void 0!==e&&void 0!==n&&(a=i._timestamps.datasets[n][e]),null===a&&(a=u(t,i)),null!==a)return i.getPixelForOffset(a)},getPixelForTick:function(t){var e=this.getTicks();return t>=0&&t<e.length?this.getPixelForOffset(e[t].value):null},getValueForPixel:function(t){var e=this,n=e._horizontal?e.width:e.height,i=e._horizontal?e.left:e.top,a=(n?(t-i)/n:0)*(e._offsets.left+1+e._offsets.left)-e._offsets.right,o=l(e._table,"pos",a,"time");return m(o)},getLabelWidth:function(t){var e=this,n=e.options.ticks,i=e.ctx.measureText(t).width,a=x.toRadians(n.maxRotation),o=Math.cos(a),r=Math.sin(a);return i*o+x.valueOrDefault(n.fontSize,b.global.defaultFontSize)*r},getLabelCapacity:function(t){var e=this,n=e.options.time.displayFormats.millisecond,i=e.tickFormatFunction(m(t),0,[],n),a=e.getLabelWidth(i),o=e.isHorizontal()?e.width:e.height;return Math.floor(o/a)}});t.scaleService.registerScaleType("time",e,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},{1:1,25:25,45:45}]},{},[7])(7)});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/assets/js/admin-thumbnail.js
CHANGED
@@ -1,58 +1,74 @@
|
|
1 |
-
/**
|
2 |
-
* This function:
|
3 |
-
*
|
4 |
-
* Generates a custom image uploader / selector tied to a post where the click action originated
|
5 |
-
* Upon clicking "Use as thumbnail" the image selected is set to be the post thumbnail
|
6 |
-
* A thumbnail image is then shown in the All Posts / All Pages / All Custom Post types Admin Dashboard view
|
7 |
-
*
|
8 |
-
* @since 1.0.0
|
9 |
-
*
|
10 |
-
* global ajaxurl, apt_thumb - language array
|
11 |
-
*/
|
12 |
-
(function ($) {
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* This function:
|
3 |
+
*
|
4 |
+
* Generates a custom image uploader / selector tied to a post where the click action originated
|
5 |
+
* Upon clicking "Use as thumbnail" the image selected is set to be the post thumbnail
|
6 |
+
* A thumbnail image is then shown in the All Posts / All Pages / All Custom Post types Admin Dashboard view
|
7 |
+
*
|
8 |
+
* @since 1.0.0
|
9 |
+
*
|
10 |
+
* global ajaxurl, apt_thumb - language array
|
11 |
+
*/
|
12 |
+
(function ($) {
|
13 |
+
jQuery(document).ready(
|
14 |
+
function ($) {
|
15 |
+
|
16 |
+
jQuery(document).on(
|
17 |
+
'click',
|
18 |
+
'#hide_notice_auto_generation',
|
19 |
+
function (e) {
|
20 |
+
e.preventDefault();
|
21 |
+
jQuery('#notice_auto_generation').animate({opacity: 'hide', height: 'hide'}, 200);
|
22 |
+
jQuery.post(
|
23 |
+
ajaxurl,
|
24 |
+
{
|
25 |
+
action: 'hide_notice_auto_generation',
|
26 |
+
}
|
27 |
+
).done(
|
28 |
+
function (html) {
|
29 |
+
console.log('Hided');
|
30 |
+
}
|
31 |
+
);
|
32 |
+
|
33 |
+
}
|
34 |
+
);
|
35 |
+
|
36 |
+
//Отображение окна со всеми картинками в тексте поста
|
37 |
+
window.aptModalShow = function (that, postid, wpnonce) {
|
38 |
+
|
39 |
+
var $modal = $('#post_imgs_' + postid).find('> div');
|
40 |
+
var $ajaximg = $('#post_imgs_' + postid).find('> span');
|
41 |
+
//$modal.html('');
|
42 |
+
$('.imgs').find('> div').html(''); //очистка всех модальных окон, чтобы исключить конфликты
|
43 |
+
|
44 |
+
tb_show(apt.modal_title, '/?TB_inline&inlineId=post_imgs_' + postid + '&width=650&height=' + (window.innerHeight - 150));
|
45 |
+
//tb_show(apt.modal_title, '/?TB_inline&inlineId=post_imgs_' + postid + '&width=650&height=500');
|
46 |
+
|
47 |
+
$ajaximg.show();
|
48 |
+
// AJAX запрос для загрузки контента окна
|
49 |
+
jQuery.post(
|
50 |
+
ajaxurl,
|
51 |
+
{
|
52 |
+
action: apt.action_column_get_thumbnails,
|
53 |
+
post_id: postid,
|
54 |
+
_ajax_nonce: wpnonce,
|
55 |
+
}
|
56 |
+
).done(
|
57 |
+
function (html) {
|
58 |
+
$ajaximg.hide();
|
59 |
+
$modal.html(html);
|
60 |
+
/*
|
61 |
+
$('#wapt_thumbs').autocolumnlist({
|
62 |
+
columns: 3,
|
63 |
+
classname: 'wapt-grid-item',
|
64 |
+
min: 1
|
65 |
+
});
|
66 |
+
*/
|
67 |
+
}
|
68 |
+
);
|
69 |
+
|
70 |
+
//return false; // для ссылки
|
71 |
+
}
|
72 |
+
}
|
73 |
+
);
|
74 |
+
})(jQuery);
|
admin/assets/js/generate.js
CHANGED
@@ -122,7 +122,7 @@ jQuery(function ($) {
|
|
122 |
self.genpostthumbsbar.hide();
|
123 |
self.genpostthumbsbar.progressbar("value", 0);
|
124 |
self.button_running(self.startGenButton);
|
125 |
-
noticeId = $.
|
126 |
}, 500);
|
127 |
return;
|
128 |
}
|
@@ -209,7 +209,7 @@ jQuery(function ($) {
|
|
209 |
self.genpostthumbsbar.progressbar("value", 0);
|
210 |
self.button_running(self.startUnsetButton);
|
211 |
|
212 |
-
noticeId = $.
|
213 |
}, 500);
|
214 |
}
|
215 |
});
|
@@ -244,7 +244,7 @@ jQuery(function ($) {
|
|
244 |
//self.genpostthumbsbar.progressbar("value", 0);
|
245 |
self.button_running(self.startGenButton);
|
246 |
|
247 |
-
noticeId = $.
|
248 |
}, 500);
|
249 |
}
|
250 |
});
|
122 |
self.genpostthumbsbar.hide();
|
123 |
self.genpostthumbsbar.progressbar("value", 0);
|
124 |
self.button_running(self.startGenButton);
|
125 |
+
noticeId = $.wbcr_factory_templates_106.app.showNotice("<p><strong>" + wapt.i8n_processed_posts + " 0</strong></p>", 'success');
|
126 |
}, 500);
|
127 |
return;
|
128 |
}
|
209 |
self.genpostthumbsbar.progressbar("value", 0);
|
210 |
self.button_running(self.startUnsetButton);
|
211 |
|
212 |
+
noticeId = $.wbcr_factory_templates_106.app.showNotice(wapt.i8n_processed_posts + self.rt_total + "<br>" + wapt.i8n_del_images + self.posted_count, 'success');
|
213 |
}, 500);
|
214 |
}
|
215 |
});
|
244 |
//self.genpostthumbsbar.progressbar("value", 0);
|
245 |
self.button_running(self.startGenButton);
|
246 |
|
247 |
+
noticeId = $.wbcr_factory_templates_106.app.showNotice(wapt.i8n_processed_posts + self.rt_total + "<br>" + wapt.i8n_set_images + self.posted_count, 'success');
|
248 |
}, 500);
|
249 |
}
|
250 |
});
|
admin/assets/js/license-manager.js
CHANGED
@@ -55,7 +55,7 @@ jQuery(function ($) {
|
|
55 |
}
|
56 |
|
57 |
if (response.data && response.data.message) {
|
58 |
-
$.
|
59 |
|
60 |
window.location.reload();
|
61 |
}
|
55 |
}
|
56 |
|
57 |
if (response.data && response.data.message) {
|
58 |
+
$.wbcr_factory_templates_106.app.showNotice(response.data.message, 'success');
|
59 |
|
60 |
window.location.reload();
|
61 |
}
|
admin/assets/js/search-page.js
CHANGED
@@ -1,109 +1,124 @@
|
|
1 |
function findImages(searchEngine, action, nonce, query, page, params, callback) {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
}
|
31 |
|
32 |
function showLoader(searchEngine) {
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
}
|
42 |
|
43 |
function hideLoader(searchEngine) {
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
|
54 |
function showFoundedImages(searchEngine, images, page) {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
}
|
96 |
|
97 |
-
function downloadMedia(service, url, query, postId, title, excerpt, nonce,
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
}
|
1 |
function findImages(searchEngine, action, nonce, query, page, params, callback) {
|
2 |
+
params = params || {};
|
3 |
+
|
4 |
+
params['page'] = page || 1;
|
5 |
+
params['query'] = query;
|
6 |
+
params['action'] = action
|
7 |
+
params['nonce'] = nonce;
|
8 |
+
|
9 |
+
showLoader(searchEngine);
|
10 |
+
|
11 |
+
jQuery.post(ajaxurl, params, function (response) {
|
12 |
+
if (!response.success) {
|
13 |
+
hideLoader(searchEngine);
|
14 |
+
jQuery('#' + searchEngine + '_results').html("API: " + response.data.error);
|
15 |
+
return;
|
16 |
+
}
|
17 |
+
|
18 |
+
if (response.data.images_count === 0) {
|
19 |
+
hideLoader(searchEngine);
|
20 |
+
jQuery('#' + searchEngine + '_results').html(window.wapt_no_hits);
|
21 |
+
} else {
|
22 |
+
hideLoader(searchEngine);
|
23 |
+
showFoundedImages(searchEngine, response.data.images, params.page);
|
24 |
+
}
|
25 |
+
|
26 |
+
if (typeof callback === 'function') {
|
27 |
+
callback(response);
|
28 |
+
}
|
29 |
+
});
|
30 |
}
|
31 |
|
32 |
function showLoader(searchEngine) {
|
33 |
+
jQuery('#loader_flex').show();
|
34 |
+
jQuery('#page_num_div').show();
|
35 |
+
jQuery('#prev_page').show();
|
36 |
+
jQuery('#next_page').show();
|
37 |
+
jQuery('#' + searchEngine + '_loader_flex').show();
|
38 |
+
jQuery('#' + searchEngine + '_page_num_div').show();
|
39 |
+
jQuery('#' + searchEngine + '_prev_page').show();
|
40 |
+
jQuery('#' + searchEngine + '_next_page').show();
|
41 |
}
|
42 |
|
43 |
function hideLoader(searchEngine) {
|
44 |
+
jQuery('#loader_flex').hide();
|
45 |
+
jQuery('#page_num_div').hide();
|
46 |
+
jQuery('#prev_page').hide();
|
47 |
+
jQuery('#next_page').hide();
|
48 |
+
jQuery('#' + searchEngine + '_loader_flex').hide();
|
49 |
+
jQuery('#' + searchEngine + '_page_num_div').hide();
|
50 |
+
jQuery('#' + searchEngine + '_prev_page').hide();
|
51 |
+
jQuery('#' + searchEngine + '_next_page').hide();
|
52 |
}
|
53 |
|
54 |
function showFoundedImages(searchEngine, images, page) {
|
55 |
+
var totalhits = 100; //google limit
|
56 |
+
if (page > 1) {
|
57 |
+
jQuery("#prev_page").show();
|
58 |
+
} else {
|
59 |
+
jQuery("#prev_page").hide();
|
60 |
+
}
|
61 |
+
|
62 |
+
if (page < totalhits / 10) {
|
63 |
+
jQuery("#next_page").show();
|
64 |
+
} else {
|
65 |
+
jQuery("#next_page").hide();
|
66 |
+
}
|
67 |
+
|
68 |
+
jQuery('#page_num_div').html(page);
|
69 |
+
jQuery('#page_num_div').show();
|
70 |
+
|
71 |
+
var html = '';
|
72 |
+
|
73 |
+
jQuery.each(images, function (key, image) {
|
74 |
+
html += '<div class="item upload_' + searchEngine + '" ' +
|
75 |
+
'data-service="' + searchEngine + '" ' +
|
76 |
+
'data-title="' + (image.title || searchEngine + '_image') + '" ' +
|
77 |
+
'data-url="' + image.link + '" ' +
|
78 |
+
'data-link="' + image.context_link + '" ' +
|
79 |
+
'data-w="' + image.image.width + '" ' +
|
80 |
+
'data-h="' + image.image.height + '">' +
|
81 |
+
'<img src="' + image.thumbnail_link + '">' +
|
82 |
+
'<div class="download"><img src="' + window.wapt_download_svg + '">' +
|
83 |
+
'<div>' + image.image.width + '×' + image.image.height + '<br>' +
|
84 |
+
'<a href="' + image.context_link + '" target="_blank">' + (image.title || searchEngine + '_image').substr(0, 15) + '</a>' +
|
85 |
+
'</div>' +
|
86 |
+
'</div>' +
|
87 |
+
'</div>';
|
88 |
+
});
|
89 |
+
|
90 |
+
var resultBlock = jQuery("#" + searchEngine + "_results");
|
91 |
+
resultBlock.html(resultBlock.html() + html);
|
92 |
+
|
93 |
+
jQuery('#loader_flex-' + searchEngine).hide();
|
94 |
+
jQuery('#' + searchEngine + '_results.flex-images').flexImages({rowHeight: 160});
|
95 |
}
|
96 |
|
97 |
+
function downloadMedia(service, url, query, postId, title, excerpt, nonce, _this) {
|
98 |
+
jQuery.post(ajaxurl, {
|
99 |
+
action: 'upload_to_library',
|
100 |
+
is_upload: '1',
|
101 |
+
service: service,
|
102 |
+
image_url: url,
|
103 |
+
q: query,
|
104 |
+
postid: postId,
|
105 |
+
title: title,
|
106 |
+
excerpt: excerpt,
|
107 |
+
wpnonce: nonce,
|
108 |
+
}, function (data) {
|
109 |
+
_this.removeClass('upload_' + service);
|
110 |
+
var err_msg;
|
111 |
+
|
112 |
+
if (parseInt(data) == data) {
|
113 |
+
jQuery('#apt-button-next').prop('disabled', false);
|
114 |
+
err_msg = 'DOWNLOADED';
|
115 |
+
if (window.cvapt_media_refresh !== undefined) {
|
116 |
+
window.parent.window.cvapt_media_refresh();
|
117 |
+
}
|
118 |
+
} else {
|
119 |
+
alert(data);
|
120 |
+
err_msg = 'ERROR';
|
121 |
+
}
|
122 |
+
_this.removeClass('uploading').find('.download img').replaceWith(err_msg);
|
123 |
+
});
|
124 |
}
|
admin/assets/js/upload-font.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
jQuery(function ($) {
|
2 |
|
3 |
-
var $element = $(".factory-bootstrap-
|
4 |
var upload_button = $('#wapt-upload-button');
|
5 |
var upload_loader = $('#wapt-upload-loader');
|
6 |
|
7 |
-
$element.
|
8 |
|
9 |
upload_button.on('click', function (e) {
|
10 |
e.preventDefault();
|
1 |
jQuery(function ($) {
|
2 |
|
3 |
+
var $element = $(".factory-bootstrap-454 .factory-wapt-fonts");
|
4 |
var upload_button = $('#wapt-upload-button');
|
5 |
var upload_loader = $('#wapt-upload-loader');
|
6 |
|
7 |
+
$element.factoryBootstrap454_dropdownControl();
|
8 |
|
9 |
upload_button.on('click', function (e) {
|
10 |
e.preventDefault();
|
admin/class-page-logger.php
CHANGED
@@ -1,242 +1,240 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use WBCR\
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
7 |
-
*
|
8 |
-
* @author Artem Prihodko <webtemyk@yandex.ru>
|
9 |
-
* @copyright (c) 2021, Webcraftic
|
10 |
-
* @see ImpressiveLite
|
11 |
-
*
|
12 |
-
* @version 1.0.0
|
13 |
-
*/
|
14 |
-
|
15 |
-
// Exit if accessed directly
|
16 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
-
exit;
|
18 |
-
}
|
19 |
-
|
20 |
-
class WAPT_Page_Logger extends
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
24 |
-
* /admin/views/tab-{$template_name}.php
|
25 |
-
*
|
26 |
-
* @var string
|
27 |
-
*/
|
28 |
-
public $template_name =
|
29 |
-
|
30 |
-
/**
|
31 |
-
* @var string
|
32 |
-
*/
|
33 |
-
public $custom_target =
|
34 |
-
|
35 |
-
/**
|
36 |
-
* {@inheritdoc}
|
37 |
-
*/
|
38 |
-
public $show_right_sidebar_in_options = false;
|
39 |
-
|
40 |
-
/**
|
41 |
-
* {@inheritdoc}
|
42 |
-
*/
|
43 |
-
public $show_search_options_form = false;
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Show this page in tabs?
|
47 |
-
* default: true
|
48 |
-
*/
|
49 |
-
public $show_menu_tab = true;
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Title for tab in menu
|
53 |
-
*/
|
54 |
-
public $menu_tab_title;
|
55 |
-
|
56 |
-
public function __construct( $plugin ) {
|
57 |
-
$this->menu_tab_title = $this->menu_tab_title ?? $this->menu_title;
|
58 |
-
|
59 |
-
parent::__construct( $plugin );
|
60 |
-
}
|
61 |
-
|
62 |
-
/**
|
63 |
-
* Render and return content of the template.
|
64 |
-
* /admin/views/tab-{$template_name}.php
|
65 |
-
*
|
66 |
-
* @
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
if ( is_file( $name ) ) {
|
77 |
-
$path = $name;
|
78 |
-
} else {
|
79 |
-
$path = $name . '.php';
|
80 |
-
}
|
81 |
-
} else {
|
82 |
-
$path = WAPT_PLUGIN_DIR . "/admin/views/tab-{$name}.php";
|
83 |
-
}
|
84 |
-
if ( ! is_file( $path ) ) {
|
85 |
-
return '';
|
86 |
-
}
|
87 |
-
include $path;
|
88 |
-
$content = ob_get_contents();
|
89 |
-
ob_end_clean();
|
90 |
-
|
91 |
-
return $content;
|
92 |
-
}
|
93 |
-
|
94 |
-
public function assets( $scripts, $styles ) {
|
95 |
-
parent::assets( $scripts, $styles );
|
96 |
-
|
97 |
-
$this->scripts->request( [
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
], 'bootstrap' );
|
104 |
-
|
105 |
-
$this->styles->request( [
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
], 'bootstrap' );
|
114 |
-
}
|
115 |
-
|
116 |
-
/**
|
117 |
-
* Show rendered template - $template_name
|
118 |
-
*/
|
119 |
-
public function showPageContent() {
|
120 |
-
parent::showPageContent();
|
121 |
-
}
|
122 |
-
|
123 |
-
public function getPluginSlug() {
|
124 |
-
$plugin_slug = $this->plugin->getPluginInfoAttr( 'updates_settings' );
|
125 |
-
|
126 |
-
return $plugin_slug['slug'] ?? WAPT_PLUGIN_SLUG;
|
127 |
-
}
|
128 |
-
|
129 |
-
/**
|
130 |
-
* @param string $position
|
131 |
-
*
|
132 |
-
* @return mixed|void
|
133 |
-
*/
|
134 |
-
protected function getPageWidgets( $position = 'bottom' ) {
|
135 |
-
$widgets = [];
|
136 |
-
|
137 |
-
if (
|
138 |
-
$widgets['rating_widget'] = $this->getRatingWidget( [] );
|
139 |
-
$widgets['support_widget'] = $this->getSupportWidget();
|
140 |
-
}
|
141 |
-
|
142 |
-
/**
|
143 |
-
* @since 3.8.2 - добавлен
|
144 |
-
*/
|
145 |
-
$widgets = apply_filters( 'wbcr/factory/pages/impressive_lite/widgets', $widgets, $position, $this->plugin, $this );
|
146 |
-
|
147 |
-
return $widgets;
|
148 |
-
}
|
149 |
-
|
150 |
-
/**
|
151 |
-
* Создает html разметку виджета рейтинга
|
152 |
-
*
|
153 |
-
* @param array $args
|
154 |
-
*
|
155 |
-
* @author Artem Prihodko <webtemyk@yandex.ru>
|
156 |
-
*/
|
157 |
-
public function showRatingWidget( array $args ) {
|
158 |
-
$plugin_slug = $this->getPluginSlug();
|
159 |
-
|
160 |
-
if ( ! isset( $args[0] ) || empty( $args[0] ) ) {
|
161 |
-
$page_url = "https://wordpress.org/support/plugin/{$plugin_slug}/reviews/#new-post";
|
162 |
-
} else {
|
163 |
-
$page_url = $args[0];
|
164 |
-
}
|
165 |
-
|
166 |
-
$page_url = apply_filters( '
|
167 |
-
|
168 |
-
?>
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
<?php
|
183 |
-
}
|
184 |
-
|
185 |
-
/**
|
186 |
-
* Создает html разметку виджета поддержки
|
187 |
-
*
|
188 |
-
* @author @author Artem Prihodko <webtemyk@yandex.ru>
|
189 |
-
*/
|
190 |
-
public function showSupportWidget() {
|
191 |
-
$plugin_slug = $this->getPluginSlug();
|
192 |
-
|
193 |
-
$free_support_url = "https://wordpress.org/support/plugin/{$plugin_slug}";
|
194 |
-
$hot_support_url = $this->plugin->get_support()->get_contacts_url();
|
195 |
-
|
196 |
-
?>
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
<?php
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
<?php printf(
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
<?php
|
216 |
-
}
|
217 |
-
|
218 |
-
/**
|
219 |
-
* @return string
|
220 |
-
*/
|
221 |
-
public function getMenuSubTitle() {
|
222 |
-
$menu_title = $this->menu_tab_title ?? $this->menu_title ?? $this->page_title;
|
223 |
-
|
224 |
-
return apply_filters( 'wbcr/factory/pages/impressive_lite/menu_title', $menu_title, $this->plugin->getPluginName(), $this->id );
|
225 |
-
}
|
226 |
-
|
227 |
-
public static function instruction( $title, $html ) {
|
228 |
-
$return = "<div class='form-group form-group-textbox'>
|
229 |
-
<label for='' class='col-sm-4 control-label'>{$title}</label>
|
230 |
-
<div class='control-group col-sm-8'>
|
231 |
-
<div class='help-block'>
|
232 |
-
{$html}
|
233 |
-
</div>
|
234 |
-
</div>
|
235 |
-
</div>";
|
236 |
-
|
237 |
-
return $return;
|
238 |
-
}
|
239 |
-
|
240 |
-
}
|
241 |
-
|
242 |
-
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use WBCR\Factory_Templates_106\ImpressiveLite;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
7 |
+
*
|
8 |
+
* @author Artem Prihodko <webtemyk@yandex.ru>
|
9 |
+
* @copyright (c) 2021, Webcraftic
|
10 |
+
* @see ImpressiveLite
|
11 |
+
*
|
12 |
+
* @version 1.0.0
|
13 |
+
*/
|
14 |
+
|
15 |
+
// Exit if accessed directly
|
16 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
+
exit;
|
18 |
+
}
|
19 |
+
|
20 |
+
class WAPT_Page_Logger extends Wbcr_FactoryLogger118_Lite {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
24 |
+
* /admin/views/tab-{$template_name}.php
|
25 |
+
*
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
public $template_name = 'log';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
public $custom_target = 'admin.php';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* {@inheritdoc}
|
37 |
+
*/
|
38 |
+
public $show_right_sidebar_in_options = false;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* {@inheritdoc}
|
42 |
+
*/
|
43 |
+
public $show_search_options_form = false;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Show this page in tabs?
|
47 |
+
* default: true
|
48 |
+
*/
|
49 |
+
public $show_menu_tab = true;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Title for tab in menu
|
53 |
+
*/
|
54 |
+
public $menu_tab_title;
|
55 |
+
|
56 |
+
public function __construct( $plugin ) {
|
57 |
+
$this->menu_tab_title = $this->menu_tab_title ?? $this->menu_title;
|
58 |
+
|
59 |
+
parent::__construct( $plugin );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Render and return content of the template.
|
64 |
+
* /admin/views/tab-{$template_name}.php
|
65 |
+
*
|
66 |
+
* @param string $name template name
|
67 |
+
*
|
68 |
+
* @return mixed Content of the page
|
69 |
+
*/
|
70 |
+
public function render( $name = '' ) {
|
71 |
+
if ( '' === $name ) {
|
72 |
+
$name = $this->template_name;
|
73 |
+
}
|
74 |
+
ob_start();
|
75 |
+
if ( strpos( $name, DIRECTORY_SEPARATOR ) !== false && ( is_file( $name ) || is_file( $name . '.php' ) ) ) {
|
76 |
+
if ( is_file( $name ) ) {
|
77 |
+
$path = $name;
|
78 |
+
} else {
|
79 |
+
$path = $name . '.php';
|
80 |
+
}
|
81 |
+
} else {
|
82 |
+
$path = WAPT_PLUGIN_DIR . "/admin/views/tab-{$name}.php";
|
83 |
+
}
|
84 |
+
if ( ! is_file( $path ) ) {
|
85 |
+
return '';
|
86 |
+
}
|
87 |
+
include $path;
|
88 |
+
$content = ob_get_contents();
|
89 |
+
ob_end_clean();
|
90 |
+
|
91 |
+
return $content;
|
92 |
+
}
|
93 |
+
|
94 |
+
public function assets( $scripts, $styles ) {
|
95 |
+
parent::assets( $scripts, $styles );
|
96 |
+
|
97 |
+
$this->scripts->request( [
|
98 |
+
'control.checkbox',
|
99 |
+
'control.dropdown',
|
100 |
+
'control.integer',
|
101 |
+
'plugin.nouislider',
|
102 |
+
'bootstrap.dropdown',
|
103 |
+
], 'bootstrap' );
|
104 |
+
|
105 |
+
$this->styles->request( [
|
106 |
+
'bootstrap.core',
|
107 |
+
'bootstrap.form-group',
|
108 |
+
'bootstrap.separator',
|
109 |
+
'control.dropdown',
|
110 |
+
'control.checkbox',
|
111 |
+
'control.integer',
|
112 |
+
'plugin.nouislider',
|
113 |
+
], 'bootstrap' );
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Show rendered template - $template_name
|
118 |
+
*/
|
119 |
+
public function showPageContent() {
|
120 |
+
parent::showPageContent();
|
121 |
+
}
|
122 |
+
|
123 |
+
public function getPluginSlug() {
|
124 |
+
$plugin_slug = $this->plugin->getPluginInfoAttr( 'updates_settings' );
|
125 |
+
|
126 |
+
return $plugin_slug['slug'] ?? WAPT_PLUGIN_SLUG;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* @param string $position
|
131 |
+
*
|
132 |
+
* @return mixed|void
|
133 |
+
*/
|
134 |
+
protected function getPageWidgets( $position = 'bottom' ) {
|
135 |
+
$widgets = [];
|
136 |
+
|
137 |
+
if ( 'bottom' === $position ) {
|
138 |
+
$widgets['rating_widget'] = $this->getRatingWidget( [] );
|
139 |
+
$widgets['support_widget'] = $this->getSupportWidget();
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* @since 3.8.2 - добавлен
|
144 |
+
*/
|
145 |
+
$widgets = apply_filters( 'wbcr/factory/pages/impressive_lite/widgets', $widgets, $position, $this->plugin, $this );
|
146 |
+
|
147 |
+
return $widgets;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Создает html разметку виджета рейтинга
|
152 |
+
*
|
153 |
+
* @param array $args Args
|
154 |
+
*
|
155 |
+
* @author Artem Prihodko <webtemyk@yandex.ru>
|
156 |
+
*/
|
157 |
+
public function showRatingWidget( array $args ) {
|
158 |
+
$plugin_slug = $this->getPluginSlug();
|
159 |
+
|
160 |
+
if ( ! isset( $args[0] ) || empty( $args[0] ) ) {
|
161 |
+
$page_url = "https://wordpress.org/support/plugin/{$plugin_slug}/reviews/#new-post";
|
162 |
+
} else {
|
163 |
+
$page_url = $args[0];
|
164 |
+
}
|
165 |
+
|
166 |
+
$page_url = apply_filters( 'wbcr_factory_pages_452_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
|
167 |
+
|
168 |
+
?>
|
169 |
+
<div class="wbcr-factory-sidebar-widget">
|
170 |
+
<p>
|
171 |
+
<strong><?php esc_html_e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_106' ); ?></strong>
|
172 |
+
</p>
|
173 |
+
<p><?php esc_html_e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_106' ); ?></p>
|
174 |
+
<p><?php esc_html_e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_106' ); ?></p>
|
175 |
+
<p>
|
176 |
+
<i class="wbcr-factory-icon-5stars"></i>
|
177 |
+
<a href="<?php echo esc_url_raw( $page_url ); ?>" title="Go rate us" target="_blank">
|
178 |
+
<strong><?php esc_html_e( 'Go rate us and push ideas', 'wbcr_factory_templates_106' ); ?></strong>
|
179 |
+
</a>
|
180 |
+
</p>
|
181 |
+
</div>
|
182 |
+
<?php
|
183 |
+
}
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Создает html разметку виджета поддержки
|
187 |
+
*
|
188 |
+
* @author @author Artem Prihodko <webtemyk@yandex.ru>
|
189 |
+
*/
|
190 |
+
public function showSupportWidget() {
|
191 |
+
$plugin_slug = $this->getPluginSlug();
|
192 |
+
|
193 |
+
$free_support_url = "https://wordpress.org/support/plugin/{$plugin_slug}";
|
194 |
+
$hot_support_url = $this->plugin->get_support()->get_contacts_url();
|
195 |
+
|
196 |
+
?>
|
197 |
+
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
198 |
+
<p><strong><?php esc_html_e( 'Having Issues?', 'wbcr_factory_templates_106' ); ?></strong></p>
|
199 |
+
<div class="wbcr-clr-support-widget-body">
|
200 |
+
<p>
|
201 |
+
<?php esc_html_e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_106' ); ?>
|
202 |
+
</p>
|
203 |
+
<ul>
|
204 |
+
<li><span class="dashicons dashicons-sos"></span>
|
205 |
+
<a href="<?php echo esc_url_raw( $free_support_url ); ?>" target="_blank"
|
206 |
+
rel="noopener"><?php esc_html_e( 'Get starting free support', 'wbcr_factory_templates_106' ); ?></a>
|
207 |
+
</li>
|
208 |
+
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
209 |
+
<span class="dashicons dashicons-warning"></span>
|
210 |
+
<?php printf( wp_kses_post( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_106' ), esc_url_raw( $hot_support_url ) ); ?>
|
211 |
+
</li>
|
212 |
+
</ul>
|
213 |
+
</div>
|
214 |
+
</div>
|
215 |
+
<?php
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* @return string
|
220 |
+
*/
|
221 |
+
public function getMenuSubTitle() {
|
222 |
+
$menu_title = $this->menu_tab_title ?? $this->menu_title ?? $this->page_title;
|
223 |
+
|
224 |
+
return apply_filters( 'wbcr/factory/pages/impressive_lite/menu_title', $menu_title, $this->plugin->getPluginName(), $this->id );
|
225 |
+
}
|
226 |
+
|
227 |
+
public static function instruction( $title, $html ) {
|
228 |
+
$return = "<div class='form-group form-group-textbox'>
|
229 |
+
<label for='' class='col-sm-4 control-label'>{$title}</label>
|
230 |
+
<div class='control-group col-sm-8'>
|
231 |
+
<div class='help-block'>
|
232 |
+
{$html}
|
233 |
+
</div>
|
234 |
+
</div>
|
235 |
+
</div>";
|
236 |
+
|
237 |
+
return $return;
|
238 |
+
}
|
239 |
+
|
240 |
+
}
|
|
|
|
admin/class-page.php
CHANGED
@@ -1,292 +1,298 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use WBCR\
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
7 |
-
*
|
8 |
-
* @author Artem Prihodko <webtemyk@yandex.ru>
|
9 |
-
* @copyright (c) 2021, Webcraftic
|
10 |
-
* @see ImpressiveLite
|
11 |
-
*
|
12 |
-
* @version 1.0.0
|
13 |
-
*/
|
14 |
-
|
15 |
-
// Exit if accessed directly
|
16 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
-
exit;
|
18 |
-
}
|
19 |
-
|
20 |
-
class WAPT_Page extends ImpressiveLite {
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
24 |
-
* /admin/views/tab-{$template_name}.php
|
25 |
-
*
|
26 |
-
* @var string
|
27 |
-
*/
|
28 |
-
public $template_name =
|
29 |
-
|
30 |
-
/**
|
31 |
-
* @var string
|
32 |
-
*/
|
33 |
-
public $custom_target =
|
34 |
-
|
35 |
-
/**
|
36 |
-
* {@inheritdoc}
|
37 |
-
*/
|
38 |
-
public $show_right_sidebar_in_options = true;
|
39 |
-
|
40 |
-
/**
|
41 |
-
* {@inheritdoc}
|
42 |
-
*/
|
43 |
-
public $show_search_options_form = false;
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Show this page in tabs?
|
47 |
-
* default: true
|
48 |
-
*/
|
49 |
-
public $show_menu_tab = true;
|
50 |
-
|
51 |
-
/**
|
52 |
-
* Title for tab in menu
|
53 |
-
*/
|
54 |
-
public $menu_tab_title;
|
55 |
-
|
56 |
-
public function __construct( $plugin ) {
|
57 |
-
$this->menu_tab_title = $this->menu_tab_title ?? $this->menu_title;
|
58 |
-
|
59 |
-
parent::__construct( $plugin );
|
60 |
-
}
|
61 |
-
|
62 |
-
/**
|
63 |
-
* Render and return content of the template.
|
64 |
-
* /admin/views/tab-{$template_name}.php
|
65 |
-
*
|
66 |
-
* @return mixed Content of the page
|
67 |
-
*/
|
68 |
-
public function render( $name = '', $data = [] ) {
|
69 |
-
if ( $name
|
70 |
-
$name = $this->template_name;
|
71 |
-
}
|
72 |
-
ob_start();
|
73 |
-
if (
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
$path = $name;
|
78 |
-
}
|
79 |
-
|
80 |
-
}
|
81 |
-
}
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
$logo
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
$plugin_slug
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
*
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
$
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
* @
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
$
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
*
|
182 |
-
*
|
183 |
-
* @
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
$
|
189 |
-
|
190 |
-
|
191 |
-
$page_url =
|
192 |
-
}
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
*
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
$
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
$menu_title
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use WBCR\Factory_Templates_106\ImpressiveLite;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
7 |
+
*
|
8 |
+
* @author Artem Prihodko <webtemyk@yandex.ru>
|
9 |
+
* @copyright (c) 2021, Webcraftic
|
10 |
+
* @see ImpressiveLite
|
11 |
+
*
|
12 |
+
* @version 1.0.0
|
13 |
+
*/
|
14 |
+
|
15 |
+
// Exit if accessed directly
|
16 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
17 |
+
exit;
|
18 |
+
}
|
19 |
+
|
20 |
+
class WAPT_Page extends ImpressiveLite {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
24 |
+
* /admin/views/tab-{$template_name}.php
|
25 |
+
*
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
public $template_name = 'main';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
public $custom_target = 'admin.php';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* {@inheritdoc}
|
37 |
+
*/
|
38 |
+
public $show_right_sidebar_in_options = true;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* {@inheritdoc}
|
42 |
+
*/
|
43 |
+
public $show_search_options_form = false;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Show this page in tabs?
|
47 |
+
* default: true
|
48 |
+
*/
|
49 |
+
public $show_menu_tab = true;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Title for tab in menu
|
53 |
+
*/
|
54 |
+
public $menu_tab_title;
|
55 |
+
|
56 |
+
public function __construct( $plugin ) {
|
57 |
+
$this->menu_tab_title = $this->menu_tab_title ?? $this->menu_title;
|
58 |
+
|
59 |
+
parent::__construct( $plugin );
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Render and return content of the template.
|
64 |
+
* /admin/views/tab-{$template_name}.php
|
65 |
+
*
|
66 |
+
* @return mixed Content of the page
|
67 |
+
*/
|
68 |
+
public function render( $name = '', $data = [] ) {
|
69 |
+
if ( '' === $name ) {
|
70 |
+
$name = $this->template_name;
|
71 |
+
}
|
72 |
+
ob_start();
|
73 |
+
if ( strpos( $name, DIRECTORY_SEPARATOR ) !== false && ( is_file( $name ) || is_file( $name . '.php' ) ) ) {
|
74 |
+
if ( is_file( $name ) ) {
|
75 |
+
$path = $name;
|
76 |
+
} else {
|
77 |
+
$path = $name . '.php';
|
78 |
+
}
|
79 |
+
} else {
|
80 |
+
$path = WAPT_PLUGIN_DIR . "/admin/views/tab-{$name}.php";
|
81 |
+
}
|
82 |
+
if ( ! is_file( $path ) ) {
|
83 |
+
return '';
|
84 |
+
}
|
85 |
+
include $path;
|
86 |
+
$content = ob_get_contents();
|
87 |
+
ob_end_clean();
|
88 |
+
|
89 |
+
return $content;
|
90 |
+
}
|
91 |
+
|
92 |
+
public function assets( $scripts, $styles ) {
|
93 |
+
parent::assets( $scripts, $styles );
|
94 |
+
|
95 |
+
$this->scripts->request( [
|
96 |
+
'control.checkbox',
|
97 |
+
'control.dropdown',
|
98 |
+
'control.integer',
|
99 |
+
'plugin.nouislider',
|
100 |
+
'bootstrap.dropdown',
|
101 |
+
], 'bootstrap' );
|
102 |
+
|
103 |
+
$this->styles->request( [
|
104 |
+
'bootstrap.core',
|
105 |
+
'bootstrap.form-group',
|
106 |
+
'bootstrap.separator',
|
107 |
+
'control.dropdown',
|
108 |
+
'control.checkbox',
|
109 |
+
'control.integer',
|
110 |
+
'plugin.nouislider',
|
111 |
+
], 'bootstrap' );
|
112 |
+
}
|
113 |
+
|
114 |
+
public function getPluginTitle() {
|
115 |
+
$logo = "<div class='wapt-logo-title'> </div>";
|
116 |
+
|
117 |
+
return $logo . $this->plugin->getPluginTitle();
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Show rendered template - $template_name
|
122 |
+
*/
|
123 |
+
public function showPageContent() {
|
124 |
+
echo $this->render(); // phpcs:ignore
|
125 |
+
}
|
126 |
+
|
127 |
+
public function getPluginSlug() {
|
128 |
+
$plugin_slug = $this->plugin->getPluginInfoAttr( 'updates_settings' );
|
129 |
+
|
130 |
+
return $plugin_slug['slug'] ?? WAPT_PLUGIN_SLUG;
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Get list of post types
|
135 |
+
*
|
136 |
+
* @return array
|
137 |
+
*/
|
138 |
+
public function getPostTypes() {
|
139 |
+
$args = [ 'public' => true ];
|
140 |
+
if ( $this->plugin->isNetworkActive() ) {
|
141 |
+
$args['_builtin'] = true;
|
142 |
+
}
|
143 |
+
$types = get_post_types( $args, 'objects' );
|
144 |
+
|
145 |
+
$post_types = [];
|
146 |
+
foreach ( $types as $type_name => $type ) {
|
147 |
+
if ( 'attachment' === $type_name ) {
|
148 |
+
continue;
|
149 |
+
}
|
150 |
+
|
151 |
+
$post_types[] = [ $type_name, $type->label ];
|
152 |
+
}
|
153 |
+
|
154 |
+
return $post_types;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* @param string $position
|
159 |
+
*
|
160 |
+
* @return mixed|void
|
161 |
+
*/
|
162 |
+
protected function getPageWidgets( $position = 'bottom' ) {
|
163 |
+
$widgets = [];
|
164 |
+
|
165 |
+
if ( 'bottom' === $position ) {
|
166 |
+
$widgets['rating_widget'] = $this->getRatingWidget( [] );
|
167 |
+
$widgets['support_widget'] = $this->getSupportWidget();
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* @since 3.8.2 - добавлен
|
172 |
+
*/
|
173 |
+
$widgets = apply_filters( 'wbcr/factory/pages/impressive_lite/widgets', $widgets, $position, $this->plugin, $this );
|
174 |
+
|
175 |
+
return $widgets;
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* Создает html разметку виджета рейтинга
|
180 |
+
*
|
181 |
+
* @param array $args
|
182 |
+
*
|
183 |
+
* @author Artem Prihodko <webtemyk@yandex.ru>
|
184 |
+
*/
|
185 |
+
public function showRatingWidget( array $args ) {
|
186 |
+
$plugin_slug = $this->getPluginSlug();
|
187 |
+
|
188 |
+
if ( ! isset( $args[0] ) || empty( $args[0] ) ) {
|
189 |
+
$page_url = "https://wordpress.org/support/plugin/{$plugin_slug}/reviews/#new-post";
|
190 |
+
} else {
|
191 |
+
$page_url = $args[0];
|
192 |
+
}
|
193 |
+
|
194 |
+
$page_url = apply_filters( 'wbcr_factory_pages_452_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
|
195 |
+
|
196 |
+
?>
|
197 |
+
<div class="wbcr-factory-sidebar-widget">
|
198 |
+
<p>
|
199 |
+
<strong><?php esc_html_e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_106' ); ?></strong>
|
200 |
+
</p>
|
201 |
+
<p><?php esc_html_e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_106' ); ?></p>
|
202 |
+
<p><?php esc_html_e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_106' ); ?></p>
|
203 |
+
<p>
|
204 |
+
<i class="wbcr-factory-icon-5stars"></i>
|
205 |
+
<a href="<?php echo esc_url_raw( $page_url ); ?>" title="Go rate us" target="_blank">
|
206 |
+
<strong><?php esc_html_e( 'Go rate us and push ideas', 'wbcr_factory_templates_106' ); ?></strong>
|
207 |
+
</a>
|
208 |
+
</p>
|
209 |
+
</div>
|
210 |
+
<?php
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Создает html разметку виджета поддержки
|
215 |
+
*
|
216 |
+
* @author @author Artem Prihodko <webtemyk@yandex.ru>
|
217 |
+
*/
|
218 |
+
public function showSupportWidget() {
|
219 |
+
$plugin_slug = $this->getPluginSlug();
|
220 |
+
|
221 |
+
$free_support_url = "https://wordpress.org/support/plugin/{$plugin_slug}";
|
222 |
+
$hot_support_url = $this->plugin->get_support()->get_contacts_url();
|
223 |
+
|
224 |
+
?>
|
225 |
+
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
226 |
+
<p><strong><?php esc_html_e( 'Having Issues?', 'wbcr_factory_templates_106' ); ?></strong></p>
|
227 |
+
<div class="wbcr-clr-support-widget-body">
|
228 |
+
<p>
|
229 |
+
<?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_106' ); ?>
|
230 |
+
</p>
|
231 |
+
<ul>
|
232 |
+
<li><span class="dashicons dashicons-sos"></span>
|
233 |
+
<a href="<?php echo esc_url_raw( $free_support_url ); ?>" target="_blank"
|
234 |
+
rel="noopener"><?php esc_html_e( 'Get starting free support', 'wbcr_factory_templates_106' ); ?></a>
|
235 |
+
</li>
|
236 |
+
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
237 |
+
<span class="dashicons dashicons-warning"></span>
|
238 |
+
<?php printf( wp_kses_post( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_106' ), esc_url_raw( $hot_support_url ) ); ?>
|
239 |
+
</li>
|
240 |
+
</ul>
|
241 |
+
</div>
|
242 |
+
</div>
|
243 |
+
<?php
|
244 |
+
}
|
245 |
+
|
246 |
+
/**
|
247 |
+
* @return string
|
248 |
+
*/
|
249 |
+
public function getMenuSubTitle() {
|
250 |
+
$menu_title = $this->menu_tab_title ?? $this->menu_title ?? $this->page_title;
|
251 |
+
|
252 |
+
return apply_filters( 'wbcr/factory/pages/impressive_lite/menu_title', $menu_title, $this->plugin->getPluginName(), $this->id );
|
253 |
+
}
|
254 |
+
|
255 |
+
public static function instruction( $title, $html ) {
|
256 |
+
$return = "<div class='form-group form-group-textbox'>
|
257 |
+
<label for='' class='col-sm-4 control-label'>{$title}</label>
|
258 |
+
<div class='control-group col-sm-8'>
|
259 |
+
<div class='help-block'>
|
260 |
+
{$html}
|
261 |
+
</div>
|
262 |
+
</div>
|
263 |
+
</div>";
|
264 |
+
|
265 |
+
return $return;
|
266 |
+
}
|
267 |
+
|
268 |
+
public static function group_header( $title, $description ) {
|
269 |
+
$return = "<div class='wbcr-factory-page-group-header'><strong>{$title}</strong><p>{$description}</p></div>";
|
270 |
+
|
271 |
+
return $return;
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* @return bool
|
276 |
+
*/
|
277 |
+
public function isShowRightSidebar() {
|
278 |
+
if ( ! WAPT_Plugin::app()->is_premium() ) {
|
279 |
+
ob_start();
|
280 |
+
WAPT_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar' ); // phpcs:ignore
|
281 |
+
$sidebar = ob_get_clean();
|
282 |
+
|
283 |
+
return (bool) $sidebar;
|
284 |
+
}
|
285 |
+
|
286 |
+
return false;
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
*
|
291 |
+
*/
|
292 |
+
public function showRightSidebar() {
|
293 |
+
WAPT_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar' ); // phpcs:ignore
|
294 |
+
}
|
295 |
+
|
296 |
+
}
|
297 |
+
|
298 |
+
|
admin/class-wapt-activation.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
-
* @see
|
8 |
*
|
9 |
* @version 1.0.1
|
10 |
*/
|
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
class WAPT_Activation extends
|
18 |
|
19 |
/**
|
20 |
* Method is executed during the activation of the plugin.
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
+
* @see Wbcr_Factory453_Activator
|
8 |
*
|
9 |
* @version 1.0.1
|
10 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WAPT_Activation extends Wbcr_Factory453_Activator {
|
18 |
|
19 |
/**
|
20 |
* Method is executed during the activation of the plugin.
|
admin/pages/about.php
CHANGED
@@ -1,68 +1,69 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Exit if accessed directly
|
4 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
-
exit;
|
6 |
-
}
|
7 |
-
|
8 |
-
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
9 |
-
|
10 |
-
/**
|
11 |
-
* The page Settings.
|
12 |
-
*
|
13 |
-
* @since 1.0.0
|
14 |
-
*/
|
15 |
-
class WAPT_About extends WAPT_Page {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Тип страницы
|
19 |
-
* options - предназначена для создании страниц с набором опций и настроек.
|
20 |
-
* page - произвольный контент, любой html код
|
21 |
-
*
|
22 |
-
* @var string
|
23 |
-
*/
|
24 |
-
public $type = 'page';
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @var int
|
28 |
-
*/
|
29 |
-
public $page_menu_position = 1000;
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @var bool
|
33 |
-
*/
|
34 |
-
public $internal = false;
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Menu icon (only if a page is placed as a main menu).
|
38 |
-
* For example: '~/assets/img/menu-icon.png'
|
39 |
-
* For example dashicons: '\f321'
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
$this->
|
60 |
-
$this->
|
61 |
-
$this->
|
62 |
-
$this->
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
}
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The page Settings.
|
12 |
+
*
|
13 |
+
* @since 1.0.0
|
14 |
+
*/
|
15 |
+
class WAPT_About extends WAPT_Page {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Тип страницы
|
19 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
20 |
+
* page - произвольный контент, любой html код
|
21 |
+
*
|
22 |
+
* @var string
|
23 |
+
*/
|
24 |
+
public $type = 'page';
|
25 |
+
|
26 |
+
/**
|
27 |
+
* @var int
|
28 |
+
*/
|
29 |
+
public $page_menu_position = 1000;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var bool
|
33 |
+
*/
|
34 |
+
public $internal = false;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Menu icon (only if a page is placed as a main menu).
|
38 |
+
* For example: '~/assets/img/menu-icon.png'
|
39 |
+
* For example dashicons: '\f321'
|
40 |
+
*
|
41 |
+
* @var string
|
42 |
+
*/
|
43 |
+
public $menu_icon = '';
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @var string
|
47 |
+
*/
|
48 |
+
public $page_menu_dashicon = 'dashicons-info-outline';
|
49 |
+
|
50 |
+
/**
|
51 |
+
* {@inheritdoc}
|
52 |
+
*/
|
53 |
+
public $show_menu_tab = false;
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @param WAPT_Plugin $plugin
|
57 |
+
*/
|
58 |
+
public function __construct( $plugin ) {
|
59 |
+
$this->id = 'wapt_about';
|
60 |
+
$this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
|
61 |
+
$this->page_title = __( 'About APT', 'apt' );
|
62 |
+
$this->menu_title = __( 'About', 'apt' );
|
63 |
+
$this->template_name = 'about';
|
64 |
+
|
65 |
+
parent::__construct( $plugin );
|
66 |
+
|
67 |
+
$this->plugin = $plugin;
|
68 |
+
}
|
69 |
+
}
|
admin/pages/generate.php
CHANGED
@@ -1,170 +1,177 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Exit if accessed directly
|
4 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
-
exit;
|
6 |
-
}
|
7 |
-
|
8 |
-
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
9 |
-
|
10 |
-
/**
|
11 |
-
* The page Settings.
|
12 |
-
*
|
13 |
-
* @since 1.0.0
|
14 |
-
*/
|
15 |
-
class WAPT_Generate extends WAPT_Page {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* The id of the page in the admin menu.
|
19 |
-
*
|
20 |
-
* Mainly used to navigate between pages.
|
21 |
-
*
|
22 |
-
* @since 1.0.0
|
23 |
-
* @see
|
24 |
-
*
|
25 |
-
* @var string
|
26 |
-
*/
|
27 |
-
public $id;
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Тип страницы
|
31 |
-
* options - предназначена для создании страниц с набором опций и настроек.
|
32 |
-
* page - произвольный контент, любой html код
|
33 |
-
*
|
34 |
-
* @var string
|
35 |
-
*/
|
36 |
-
public $type = 'page';
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Menu icon (only if a page is placed as a main menu).
|
40 |
-
* For example: '~/assets/img/menu-icon.png'
|
41 |
-
* For example dashicons: '\f321'
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
*
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
*
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
*
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
$this->
|
112 |
-
$this->
|
113 |
-
|
114 |
-
$this->
|
115 |
-
$this->
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
$this->
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
*
|
128 |
-
*
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
'
|
146 |
-
'
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The page Settings.
|
12 |
+
*
|
13 |
+
* @since 1.0.0
|
14 |
+
*/
|
15 |
+
class WAPT_Generate extends WAPT_Page {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* The id of the page in the admin menu.
|
19 |
+
*
|
20 |
+
* Mainly used to navigate between pages.
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
* @see FactoryPages452_AdminPage
|
24 |
+
*
|
25 |
+
* @var string
|
26 |
+
*/
|
27 |
+
public $id;
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Тип страницы
|
31 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
32 |
+
* page - произвольный контент, любой html код
|
33 |
+
*
|
34 |
+
* @var string
|
35 |
+
*/
|
36 |
+
public $type = 'page';
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Menu icon (only if a page is placed as a main menu).
|
40 |
+
* For example: '~/assets/img/menu-icon.png'
|
41 |
+
* For example dashicons: '\f321'
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
public $menu_icon;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
public $page_menu_dashicon = 'dashicons-performance';
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Menu position (only if a page is placed as a main menu).
|
54 |
+
*
|
55 |
+
* @link http://codex.wordpress.org/Function_Reference/add_menu_page
|
56 |
+
* @var string
|
57 |
+
*/
|
58 |
+
public $menu_position = 58;
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @var bool
|
62 |
+
*/
|
63 |
+
public $internal = false;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Menu type. Set it to add the page to the specified type menu.
|
67 |
+
* For example: 'post'
|
68 |
+
*
|
69 |
+
* @var string
|
70 |
+
*/
|
71 |
+
public $menu_post_type = null;
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Visible page title.
|
75 |
+
* For example: 'License Manager'
|
76 |
+
*
|
77 |
+
* @var string
|
78 |
+
*/
|
79 |
+
public $page_title;
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Visible title in menu.
|
83 |
+
* For example: 'License Manager'
|
84 |
+
*
|
85 |
+
* @var string
|
86 |
+
*/
|
87 |
+
public $menu_title;
|
88 |
+
|
89 |
+
/**
|
90 |
+
*
|
91 |
+
*/
|
92 |
+
public $page_menu_short_description;
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Заголовок страницы, также использует в меню, как название закладки
|
96 |
+
*
|
97 |
+
* @var bool
|
98 |
+
*/
|
99 |
+
public $show_page_title = true;
|
100 |
+
|
101 |
+
/**
|
102 |
+
* @var int
|
103 |
+
*/
|
104 |
+
public $page_menu_position = 100;
|
105 |
+
|
106 |
+
|
107 |
+
/**
|
108 |
+
* @param WAPT_Plugin $plugin
|
109 |
+
*/
|
110 |
+
public function __construct( $plugin ) {
|
111 |
+
$this->id = $plugin->getPrefix() . 'generate';
|
112 |
+
$this->menu_title = __( 'Auto Featured Image', 'apt' );
|
113 |
+
|
114 |
+
$this->menu_sub_title = __( 'Generate images', 'apt' );
|
115 |
+
$this->menu_tab_title = __( 'Generate images', 'apt' );
|
116 |
+
$this->page_title = __( 'Generate images', 'apt' );
|
117 |
+
|
118 |
+
$this->menu_icon = WAPT_PLUGIN_URL . '/admin/assets/img/apt.png';
|
119 |
+
$this->template_name = 'generate';
|
120 |
+
|
121 |
+
parent::__construct( $plugin );
|
122 |
+
|
123 |
+
$this->plugin = $plugin;
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Requests assets (js and css) for the page.
|
128 |
+
*
|
129 |
+
* @return void
|
130 |
+
* @since 1.0.0
|
131 |
+
* @see FactoryPages452_AdminPage
|
132 |
+
*/
|
133 |
+
public function assets( $scripts, $styles ) {
|
134 |
+
parent::assets( $scripts, $styles );
|
135 |
+
|
136 |
+
wp_enqueue_style( 'jquery-ui-genpostthumbs', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.min.css', [ 'jquery' ], WAPT_PLUGIN_VERSION );
|
137 |
+
wp_enqueue_style( 'wapt-generate', WAPT_PLUGIN_URL . '/admin/assets/css/generate.css', [], WAPT_PLUGIN_VERSION );
|
138 |
+
wp_enqueue_script( 'jquery-progress', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery-ui.progressbar.min.js', [ 'jquery' ], WAPT_PLUGIN_VERSION, true );
|
139 |
+
wp_enqueue_script( 'wapt-chart', WAPT_PLUGIN_URL . '/admin/assets/js/Chart.min.js', [ 'jquery' ], WAPT_PLUGIN_VERSION, true );
|
140 |
+
wp_enqueue_script( 'wapt-generate', WAPT_PLUGIN_URL . '/admin/assets/js/generate.js', [ 'jquery' ], WAPT_PLUGIN_VERSION, true );
|
141 |
+
wp_localize_script(
|
142 |
+
'wapt-generate',
|
143 |
+
'wapt',
|
144 |
+
[
|
145 |
+
'is_premium' => $this->plugin->is_premium(),
|
146 |
+
'nonce_get_posts' => wp_create_nonce( 'get-posts' ),
|
147 |
+
'nonce_gen_post_thumbs' => wp_create_nonce( 'generate-post-thumbnails' ),
|
148 |
+
'nonce_del_post_thumbs' => wp_create_nonce( 'delete-post-thumbnails' ),
|
149 |
+
'i8n_processed_posts' => esc_html__( 'All done! Processed posts: ', 'apt' ),
|
150 |
+
'i8n_set_images' => esc_html__( 'Set featured image in posts: ', 'apt' ),
|
151 |
+
'i8n_del_images' => esc_html__( 'Unset featured image in posts: ', 'apt' ),
|
152 |
+
'i8n_delete_images' => esc_html__( 'Delete featured image in posts: ', 'apt' ),
|
153 |
+
]
|
154 |
+
);
|
155 |
+
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Show rendered template - $template_name
|
160 |
+
*/
|
161 |
+
public function showPageContent() {
|
162 |
+
$no_featured = $this->plugin->apt->get_posts_count();
|
163 |
+
$w_featured = $this->plugin->apt->get_posts_count( true );
|
164 |
+
$percent = ( $no_featured + $w_featured === 0 ) ? 0 : ceil( $w_featured / ( $no_featured + $w_featured ) * 100 );
|
165 |
+
|
166 |
+
$data = [
|
167 |
+
'stats' => [
|
168 |
+
'no_featured_image' => $no_featured,
|
169 |
+
'w_featured_image' => $w_featured,
|
170 |
+
'featured_image_percent' => $percent,
|
171 |
+
'error' => 0,
|
172 |
+
],
|
173 |
+
'log' => $this->plugin->getPopulateOption( 'generation_log', [] ),
|
174 |
+
];
|
175 |
+
echo $this->render( $this->template_name, $data ); // phpcs:ignore
|
176 |
+
}
|
177 |
+
}
|
admin/pages/image.php
CHANGED
@@ -1,462 +1,460 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use WBCR\APT\AutoPostThumbnails;
|
4 |
-
|
5 |
-
// Exit if accessed directly
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
11 |
-
|
12 |
-
/**
|
13 |
-
* The page Settings.
|
14 |
-
*
|
15 |
-
* @since 1.0.0
|
16 |
-
*/
|
17 |
-
class WAPT_ImageSettings extends WAPT_Page {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Тип страницы
|
21 |
-
* options - предназначена для создании страниц с набором опций и настроек.
|
22 |
-
* page - произвольный контент, любой html код
|
23 |
-
*
|
24 |
-
* @var string
|
25 |
-
*/
|
26 |
-
public $type = 'options';
|
27 |
-
|
28 |
-
/**
|
29 |
-
* @var bool
|
30 |
-
*/
|
31 |
-
public $internal = false;
|
32 |
-
|
33 |
-
/**
|
34 |
-
* @var int
|
35 |
-
*/
|
36 |
-
public $page_menu_position = 200;
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Menu icon (only if a page is placed as a main menu).
|
40 |
-
* For example: '~/assets/img/menu-icon.png'
|
41 |
-
* For example dashicons: '\f321'
|
42 |
-
*
|
43 |
-
* @var string
|
44 |
-
*/
|
45 |
-
public $menu_icon = '';
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @var string
|
49 |
-
*/
|
50 |
-
public $page_menu_dashicon = 'dashicons-cover-image';
|
51 |
-
|
52 |
-
/**
|
53 |
-
* {@inheritdoc}
|
54 |
-
*/
|
55 |
-
public $show_menu_tab = true;
|
56 |
-
|
57 |
-
/**
|
58 |
-
* {@inheritdoc}
|
59 |
-
*/
|
60 |
-
public $show_right_sidebar_in_options = true;
|
61 |
-
|
62 |
-
/**
|
63 |
-
* @var array
|
64 |
-
*/
|
65 |
-
public $post_types;
|
66 |
-
|
67 |
-
/**
|
68 |
-
* @param WAPT_Plugin $plugin
|
69 |
-
*/
|
70 |
-
public function __construct( $plugin ) {
|
71 |
-
$this->id = $plugin->getPrefix() .
|
72 |
-
$this->menu_target = $plugin->getPrefix() .
|
73 |
-
$this->page_title = __( 'Image generation settings', 'apt' );
|
74 |
-
$this->menu_title = __( 'Image', 'apt' );
|
75 |
-
$this->capabilitiy =
|
76 |
-
$this->template_name =
|
77 |
-
|
78 |
-
add_action( '
|
79 |
-
$colorControls = [
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
'type' => 'wapt-mediabutton',
|
87 |
-
'class' => 'Wapt_FactoryForms_MediaButtonControl',
|
88 |
-
'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.mediabutton.php',
|
89 |
-
|
90 |
-
|
91 |
-
'type' => 'wapt-fonts',
|
92 |
-
'class' => 'Wapt_FactoryForms_FontsControl',
|
93 |
-
'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.fonts.php',
|
94 |
-
|
95 |
-
];
|
96 |
-
$this->plugin->forms->registerControls( $colorControls );
|
97 |
-
} );
|
98 |
-
|
99 |
-
//add_filter( 'wbcr/factory/pages/impressive-lite/widgets', [ $this, '' ], 10, 4 );
|
100 |
-
|
101 |
-
$this->plugin = $plugin;
|
102 |
-
$this->post_types = $this->getPostTypes();
|
103 |
-
|
104 |
-
parent::__construct( $plugin );
|
105 |
-
}
|
106 |
-
|
107 |
-
/**
|
108 |
-
* Enqueue page assets
|
109 |
-
*
|
110 |
-
* @return void
|
111 |
-
* @since 3.8.1
|
112 |
-
* @see
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
$this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/
|
131 |
-
$this->
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
$format
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
case '
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
$
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
?>
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
*
|
176 |
-
*
|
177 |
-
* @
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
$is_premium
|
183 |
-
$
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
'
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
'
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
]
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
]
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
]
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
]
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
'
|
313 |
-
|
314 |
-
'
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
]
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
]
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
'
|
333 |
-
'
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
]
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
]
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
]
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
'
|
373 |
-
'
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
]
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
'
|
388 |
-
'
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
]
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
]
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
]
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
]
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
]
|
452 |
-
|
453 |
-
|
454 |
-
'
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use WBCR\APT\AutoPostThumbnails;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
11 |
+
|
12 |
+
/**
|
13 |
+
* The page Settings.
|
14 |
+
*
|
15 |
+
* @since 1.0.0
|
16 |
+
*/
|
17 |
+
class WAPT_ImageSettings extends WAPT_Page {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Тип страницы
|
21 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
22 |
+
* page - произвольный контент, любой html код
|
23 |
+
*
|
24 |
+
* @var string
|
25 |
+
*/
|
26 |
+
public $type = 'options';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @var bool
|
30 |
+
*/
|
31 |
+
public $internal = false;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @var int
|
35 |
+
*/
|
36 |
+
public $page_menu_position = 200;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Menu icon (only if a page is placed as a main menu).
|
40 |
+
* For example: '~/assets/img/menu-icon.png'
|
41 |
+
* For example dashicons: '\f321'
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
public $menu_icon = '';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
public $page_menu_dashicon = 'dashicons-cover-image';
|
51 |
+
|
52 |
+
/**
|
53 |
+
* {@inheritdoc}
|
54 |
+
*/
|
55 |
+
public $show_menu_tab = true;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* {@inheritdoc}
|
59 |
+
*/
|
60 |
+
public $show_right_sidebar_in_options = true;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @var array
|
64 |
+
*/
|
65 |
+
public $post_types;
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param WAPT_Plugin $plugin
|
69 |
+
*/
|
70 |
+
public function __construct( $plugin ) {
|
71 |
+
$this->id = $plugin->getPrefix() . 'image';
|
72 |
+
$this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
|
73 |
+
$this->page_title = __( 'Image generation settings', 'apt' );
|
74 |
+
$this->menu_title = __( 'Image', 'apt' );
|
75 |
+
$this->capabilitiy = 'manage_options';
|
76 |
+
$this->template_name = 'settings';
|
77 |
+
|
78 |
+
add_action( 'wbcr_factory_forms_450_register_controls', function () {
|
79 |
+
$colorControls = [
|
80 |
+
[
|
81 |
+
'type' => 'wapt-color',
|
82 |
+
'class' => 'Wapt_FactoryForms_ColorControl',
|
83 |
+
'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.color.php',
|
84 |
+
],
|
85 |
+
[
|
86 |
+
'type' => 'wapt-mediabutton',
|
87 |
+
'class' => 'Wapt_FactoryForms_MediaButtonControl',
|
88 |
+
'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.mediabutton.php',
|
89 |
+
],
|
90 |
+
[
|
91 |
+
'type' => 'wapt-fonts',
|
92 |
+
'class' => 'Wapt_FactoryForms_FontsControl',
|
93 |
+
'include' => WAPT_PLUGIN_DIR . '/includes/controls/class.fonts.php',
|
94 |
+
],
|
95 |
+
];
|
96 |
+
$this->plugin->forms->registerControls( $colorControls );
|
97 |
+
} );
|
98 |
+
|
99 |
+
//add_filter( 'wbcr/factory/pages/impressive-lite/widgets', [ $this, '' ], 10, 4 );
|
100 |
+
|
101 |
+
$this->plugin = $plugin;
|
102 |
+
$this->post_types = $this->getPostTypes();
|
103 |
+
|
104 |
+
parent::__construct( $plugin );
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Enqueue page assets
|
109 |
+
*
|
110 |
+
* @return void
|
111 |
+
* @since 3.8.1
|
112 |
+
* @see Wbcr_FactoryPages452_AdminPage
|
113 |
+
*/
|
114 |
+
public function assets( $scripts, $styles ) {
|
115 |
+
parent::assets( $scripts, $styles );
|
116 |
+
|
117 |
+
$this->scripts->request( [
|
118 |
+
'control.list',
|
119 |
+
'control.color',
|
120 |
+
'plugin.color',
|
121 |
+
'plugin.iris',
|
122 |
+
], 'bootstrap' );
|
123 |
+
|
124 |
+
$this->styles->request( [
|
125 |
+
'control.list',
|
126 |
+
'control.color',
|
127 |
+
], 'bootstrap' );
|
128 |
+
|
129 |
+
$this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/jscolor.js', [ 'jquery' ], 'wapt-color-control', WAPT_PLUGIN_VERSION );
|
130 |
+
$this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [ 'jquery' ], 'wapt-settings-script', WAPT_PLUGIN_VERSION );
|
131 |
+
$this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', [], 'wapt-settings-style', WAPT_PLUGIN_VERSION );
|
132 |
+
}
|
133 |
+
|
134 |
+
public function isShowRightSidebar() {
|
135 |
+
return $this->show_right_sidebar_in_options;
|
136 |
+
}
|
137 |
+
|
138 |
+
public function showRightSidebar() {
|
139 |
+
?>
|
140 |
+
<div id="wapt-image-preview" class="wapt-image-preview">
|
141 |
+
<div class="wapt-image-preview-title"><h3><?php esc_html_e( 'Post thumbnail preview', 'apt' ); ?></h3></div>
|
142 |
+
<?php
|
143 |
+
$format = WAPT_Plugin::app()->getPopulateOption( 'image-type', 'jpg' );
|
144 |
+
switch ( $format ) {
|
145 |
+
case 'png':
|
146 |
+
$format = 'png';
|
147 |
+
break;
|
148 |
+
case 'jpg':
|
149 |
+
case 'jpeg':
|
150 |
+
default:
|
151 |
+
$format = 'jpg';
|
152 |
+
break;
|
153 |
+
}
|
154 |
+
|
155 |
+
$posts = get_posts( [ 'numberposts' => 0 ] );
|
156 |
+
$id = rand( 0, count( $posts ) - 1 );
|
157 |
+
if ( count( $posts ) !== 0 ) {
|
158 |
+
$txt = $posts[ $id ]->post_title;
|
159 |
+
} else {
|
160 |
+
$txt = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas aliquet turpis quis ex elementum malesuada';
|
161 |
+
}
|
162 |
+
|
163 |
+
$image = apply_filters( 'wapt/generate/image', AutoPostThumbnails::generate_image_with_text( $txt ), $txt );
|
164 |
+
|
165 |
+
$image->save( WAPT_PLUGIN_DIR . "/preview.{$format}", 100, $format );
|
166 |
+
?>
|
167 |
+
<img src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . "/preview.{$format}?" . time() ); ?>"
|
168 |
+
width="100%" alt="">
|
169 |
+
</div>
|
170 |
+
<?php
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Returns options for the Basic Settings screen.
|
175 |
+
*
|
176 |
+
* @return array
|
177 |
+
* @since 3.6.2
|
178 |
+
*/
|
179 |
+
public function getPageOptions() {
|
180 |
+
|
181 |
+
$is_premium = WAPT_Plugin::app()->is_premium();
|
182 |
+
$pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
|
183 |
+
$layout_columns = [
|
184 |
+
'column-left' => 4,
|
185 |
+
'column-right' => 8,
|
186 |
+
];
|
187 |
+
|
188 |
+
$options = [];
|
189 |
+
|
190 |
+
$options[] = [
|
191 |
+
'type' => 'html',
|
192 |
+
'html' => $this->group_header( __( 'Background settings', 'apt' ), '' ),
|
193 |
+
];
|
194 |
+
|
195 |
+
$options[] = [
|
196 |
+
'type' => 'dropdown',
|
197 |
+
'way' => 'buttons',
|
198 |
+
'name' => 'background-type',
|
199 |
+
'data' => [
|
200 |
+
[ 'color', __( 'Color', 'apt' ) ],
|
201 |
+
[ 'image', __( 'Image', 'apt' ) ],
|
202 |
+
],
|
203 |
+
'default' => 'color',
|
204 |
+
'title' => __( 'Background type', 'apt' ),
|
205 |
+
'hint' => __( 'Select the background type for the featured image', 'apt' ),
|
206 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
207 |
+
];
|
208 |
+
|
209 |
+
$options[] = [
|
210 |
+
'type' => 'color',
|
211 |
+
'name' => 'background-color',
|
212 |
+
'default' => '#ff6262',
|
213 |
+
'title' => __( 'Background color for the image', 'apt' ),
|
214 |
+
'hint' => __( 'Set the background color for the featured image', 'apt' ),
|
215 |
+
'layout' => $layout_columns,
|
216 |
+
];
|
217 |
+
|
218 |
+
if ( $is_premium ) {
|
219 |
+
$options[] = [
|
220 |
+
'type' => 'wapt-mediabutton',
|
221 |
+
'name' => 'background-image',
|
222 |
+
'text' => __( 'Select image', 'apt' ),
|
223 |
+
'title' => __( 'Background image', 'apt' ),
|
224 |
+
'hint' => __( 'Set the background image. Only JPG or PNG', 'apt' ),
|
225 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
226 |
+
'layout' => $layout_columns,
|
227 |
+
];
|
228 |
+
}
|
229 |
+
|
230 |
+
$options[] = [
|
231 |
+
'type' => 'dropdown',
|
232 |
+
'way' => 'buttons',
|
233 |
+
'name' => 'image-type',
|
234 |
+
'data' => [
|
235 |
+
[ 'jpg', __( 'JPEG', 'apt' ) ],
|
236 |
+
[ 'png', __( 'PNG', 'apt' ) ],
|
237 |
+
],
|
238 |
+
'default' => 'jpg',
|
239 |
+
'title' => __( 'Image format', 'apt' ),
|
240 |
+
'hint' => __( 'Set format to save images', 'apt' ),
|
241 |
+
];
|
242 |
+
|
243 |
+
$options[] = [
|
244 |
+
'type' => 'integer',
|
245 |
+
'way' => 'text',
|
246 |
+
'name' => 'image-width',
|
247 |
+
'units' => 'px',
|
248 |
+
'default' => 800,
|
249 |
+
'title' => __( 'Image size: width', 'apt' ),
|
250 |
+
'hint' => __( 'Set width of the image for the featured image', 'apt' ),
|
251 |
+
];
|
252 |
+
|
253 |
+
$options[] = [
|
254 |
+
'type' => 'integer',
|
255 |
+
'way' => 'text',
|
256 |
+
'name' => 'image-height',
|
257 |
+
'units' => 'px',
|
258 |
+
'default' => 600,
|
259 |
+
'title' => __( 'Image size: height', 'apt' ),
|
260 |
+
'hint' => __( 'Set height of the image for the featured image', 'apt' ),
|
261 |
+
];
|
262 |
+
|
263 |
+
//----------------------------------------------------------------------
|
264 |
+
$options[] = [
|
265 |
+
'type' => 'html',
|
266 |
+
'html' => $this->group_header( __( 'Font settings', 'apt' ), '' ),
|
267 |
+
];
|
268 |
+
|
269 |
+
$options[] = [
|
270 |
+
'type' => 'wapt-fonts',
|
271 |
+
'name' => 'font',
|
272 |
+
'data' => AutoPostThumbnails::get_fonts(),
|
273 |
+
'empty' => '',
|
274 |
+
'title' => __( 'Font name', 'apt' ),
|
275 |
+
'hint' => __( 'Select a font for the text in the featured image', 'apt' ),
|
276 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
277 |
+
'layout' => $layout_columns,
|
278 |
+
];
|
279 |
+
|
280 |
+
$options[] = [
|
281 |
+
'type' => 'integer',
|
282 |
+
'way' => 'text',
|
283 |
+
'name' => 'font-size',
|
284 |
+
'units' => 'pt',
|
285 |
+
'default' => 25,
|
286 |
+
'title' => __( 'Font size', 'apt' ),
|
287 |
+
'hint' => __( 'Set the font size for the featured image', 'apt' ),
|
288 |
+
];
|
289 |
+
|
290 |
+
$options[] = [
|
291 |
+
'type' => 'wapt-color',
|
292 |
+
'name' => 'font-color',
|
293 |
+
'title' => __( 'Font color', 'apt' ),
|
294 |
+
'hint' => __( 'Set the font color for the featured image', 'apt' ),
|
295 |
+
'layout' => $layout_columns,
|
296 |
+
];
|
297 |
+
|
298 |
+
//----------------------------------------------------------------------
|
299 |
+
$options[] = [
|
300 |
+
'type' => 'html',
|
301 |
+
'html' => $this->group_header( __( 'Text settings', 'apt' ), '' ),
|
302 |
+
];
|
303 |
+
|
304 |
+
$options[] = [
|
305 |
+
'type' => 'checkbox',
|
306 |
+
'way' => 'buttons',
|
307 |
+
'name' => 'shadow',
|
308 |
+
'default' => '0',
|
309 |
+
'title' => __( 'Text shadow', 'apt' ),
|
310 |
+
'hint' => __( 'Use text shadow?', 'apt' ),
|
311 |
+
'eventsOn' => [
|
312 |
+
'show' => '.factory-control-shadow-color',
|
313 |
+
],
|
314 |
+
'eventsOff' => [
|
315 |
+
'hide' => '.factory-control-shadow-color',
|
316 |
+
],
|
317 |
+
];
|
318 |
+
|
319 |
+
$options[] = [
|
320 |
+
'type' => 'wapt-color',
|
321 |
+
'name' => 'shadow-color',
|
322 |
+
'title' => __( 'Shadow color', 'apt' ),
|
323 |
+
'hint' => __( 'Set the shadow color for the text', 'apt' ),
|
324 |
+
'layout' => $layout_columns,
|
325 |
+
];
|
326 |
+
|
327 |
+
$options[] = [
|
328 |
+
'type' => 'dropdown',
|
329 |
+
'way' => 'buttons',
|
330 |
+
'name' => 'text-transform',
|
331 |
+
'data' => [
|
332 |
+
[ 'no', __( 'No transform', 'apt' ) ],
|
333 |
+
[ 'upper', __( 'Uppercase', 'apt' ) ],
|
334 |
+
[ 'lower', __( 'Lowercase', 'apt' ) ],
|
335 |
+
],
|
336 |
+
'default' => 'no',
|
337 |
+
'title' => __( 'Text transform', 'apt' ),
|
338 |
+
'hint' => __( 'Select type of text transformation', 'apt' ),
|
339 |
+
];
|
340 |
+
|
341 |
+
$options[] = [
|
342 |
+
'type' => 'integer',
|
343 |
+
'way' => 'text',
|
344 |
+
'name' => 'text-crop',
|
345 |
+
'units' => __( 'chars', 'apt' ),
|
346 |
+
'default' => 50,
|
347 |
+
'title' => __( 'Text length', 'apt' ),
|
348 |
+
'hint' => __( 'Set the maximum text length', 'apt' ),
|
349 |
+
];
|
350 |
+
|
351 |
+
$options[] = [
|
352 |
+
'type' => 'integer',
|
353 |
+
'way' => 'text',
|
354 |
+
'name' => 'text-line-spacing',
|
355 |
+
'range' => [ 0, 3 ],
|
356 |
+
'default' => 1.5,
|
357 |
+
'title' => __( 'Line spacing', 'apt' ),
|
358 |
+
'hint' => __( 'Set the line spacing', 'apt' ),
|
359 |
+
];
|
360 |
+
|
361 |
+
//----------------------------------------------------------------------
|
362 |
+
$options[] = [
|
363 |
+
'type' => 'html',
|
364 |
+
'html' => $this->group_header( __( 'Alignment', 'apt' ), '' ),
|
365 |
+
];
|
366 |
+
|
367 |
+
$options[] = [
|
368 |
+
'type' => 'dropdown',
|
369 |
+
'way' => 'buttons',
|
370 |
+
'name' => 'text-align-horizontal',
|
371 |
+
'data' => [
|
372 |
+
[ 'left', __( 'Left', 'apt' ) ],
|
373 |
+
[ 'center', __( 'Center', 'apt' ) ],
|
374 |
+
[ 'right', __( 'Right', 'apt' ) ],
|
375 |
+
],
|
376 |
+
'default' => 'center',
|
377 |
+
'title' => __( 'Horizontal text alignment', 'apt' ) . $pro,
|
378 |
+
'hint' => __( 'Select how to horizontally align the text on the image', 'apt' ),
|
379 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
380 |
+
];
|
381 |
+
|
382 |
+
$options[] = [
|
383 |
+
'type' => 'dropdown',
|
384 |
+
'way' => 'buttons',
|
385 |
+
'name' => 'text-align-vertical',
|
386 |
+
'data' => [
|
387 |
+
[ 'top', __( 'Top', 'apt' ) ],
|
388 |
+
[ 'center', __( 'Center', 'apt' ) ],
|
389 |
+
[ 'bottom', __( 'Bottom', 'apt' ) ],
|
390 |
+
],
|
391 |
+
'default' => 'center',
|
392 |
+
'title' => __( 'Vertical text alignment', 'apt' ) . $pro,
|
393 |
+
'hint' => __( 'Select how to vertically align the text on the image', 'apt' ),
|
394 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
395 |
+
];
|
396 |
+
|
397 |
+
//----------------------------------------------------------------------
|
398 |
+
$options[] = [
|
399 |
+
'type' => 'html',
|
400 |
+
'html' => $this->group_header( __( 'Padding', 'apt' ), '' ),
|
401 |
+
];
|
402 |
+
|
403 |
+
$options[] = [
|
404 |
+
'type' => 'integer',
|
405 |
+
'way' => 'text',
|
406 |
+
'name' => 'text-padding-tb',
|
407 |
+
'units' => __( 'px', 'apt' ),
|
408 |
+
'default' => 15,
|
409 |
+
'title' => __( 'Top/bottom text padding', 'apt' ) . $pro,
|
410 |
+
'hint' => __( 'Padding at the top and bottom of the text', 'apt' ),
|
411 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
412 |
+
];
|
413 |
+
|
414 |
+
$options[] = [
|
415 |
+
'type' => 'integer',
|
416 |
+
'way' => 'text',
|
417 |
+
'name' => 'text-padding-lr',
|
418 |
+
'units' => __( 'px', 'apt' ),
|
419 |
+
'default' => 15,
|
420 |
+
'title' => __( 'Left/right text padding', 'apt' ) . $pro,
|
421 |
+
'hint' => __( 'Padding at the left and right of the text', 'apt' ),
|
422 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
423 |
+
];
|
424 |
+
|
425 |
+
//----------------------------------------------------------------------
|
426 |
+
$options[] = [
|
427 |
+
'type' => 'html',
|
428 |
+
'html' => $this->group_header( __( 'Addition of text', 'apt' ), '' ),
|
429 |
+
];
|
430 |
+
|
431 |
+
$options[] = [
|
432 |
+
'type' => 'textbox',
|
433 |
+
'name' => 'before-text',
|
434 |
+
'default' => '',
|
435 |
+
'title' => __( 'String before text', 'apt' ) . $pro,
|
436 |
+
'hint' => __( 'Additional string before text. For a line break, use <b>[br]</b>', 'apt' ),
|
437 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
438 |
+
'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
|
439 |
+
];
|
440 |
+
|
441 |
+
$options[] = [
|
442 |
+
'type' => 'textbox',
|
443 |
+
'name' => 'after-text',
|
444 |
+
'default' => '',
|
445 |
+
'title' => __( 'String after text', 'apt' ) . $pro,
|
446 |
+
'hint' => __( 'Additional string after text. For a line break, use <b>[br]</b>', 'apt' ),
|
447 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
448 |
+
'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
|
449 |
+
];
|
450 |
+
|
451 |
+
$form_options[] = [
|
452 |
+
'type' => 'form-group',
|
453 |
+
'items' => $options,
|
454 |
+
//'cssClass' => 'postbox'
|
455 |
+
];
|
456 |
+
|
457 |
+
return $form_options;
|
458 |
+
}
|
459 |
+
|
460 |
+
}
|
|
|
|
admin/pages/license.php
CHANGED
@@ -1,210 +1,214 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Exit if accessed directly
|
4 |
-
use WBCR\
|
5 |
-
use WBCR\
|
6 |
-
|
7 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
-
exit;
|
9 |
-
}
|
10 |
-
|
11 |
-
/**
|
12 |
-
* Class WAPT_License_Page is used as template to display form to active premium functionality.
|
13 |
-
*
|
14 |
-
* @since 2.0.7
|
15 |
-
*/
|
16 |
-
class WAPT_License extends WAPT_Page {
|
17 |
-
|
18 |
-
/**
|
19 |
-
* @var int
|
20 |
-
*/
|
21 |
-
public $page_menu_position = 900;
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @var bool
|
25 |
-
*/
|
26 |
-
public $internal = false;
|
27 |
-
|
28 |
-
/**
|
29 |
-
* {@inheritdoc}
|
30 |
-
*/
|
31 |
-
public $type =
|
32 |
-
|
33 |
-
/**
|
34 |
-
* {@inheritdoc}
|
35 |
-
*/
|
36 |
-
public $page_menu_dashicon = 'dashicons-admin-network';
|
37 |
-
|
38 |
-
/**
|
39 |
-
* {@inheritdoc}
|
40 |
-
*/
|
41 |
-
public $available_for_multisite = true;
|
42 |
-
|
43 |
-
/**
|
44 |
-
* {@inheritdoc}
|
45 |
-
*/
|
46 |
-
public $show_menu_tab = false;
|
47 |
-
|
48 |
-
/**
|
49 |
-
* @var string Name of the paid plan.
|
50 |
-
*/
|
51 |
-
public $plan_name;
|
52 |
-
|
53 |
-
// PREMIUM SECTION
|
54 |
-
// ------------------------------------------------------------------
|
55 |
-
/**
|
56 |
-
* @since 2.0.7
|
57 |
-
* @var bool
|
58 |
-
*/
|
59 |
-
protected $is_premium;
|
60 |
-
|
61 |
-
/**
|
62 |
-
* @since 2.0.7
|
63 |
-
* @var Provider
|
64 |
-
*/
|
65 |
-
protected $premium;
|
66 |
-
|
67 |
-
/**
|
68 |
-
* @since 2.0.7
|
69 |
-
* @var bool
|
70 |
-
*/
|
71 |
-
protected $is_premium_active;
|
72 |
-
|
73 |
-
/**
|
74 |
-
* @since 2.0.7
|
75 |
-
* @var bool
|
76 |
-
*/
|
77 |
-
protected $premium_has_subscription;
|
78 |
-
|
79 |
-
/**
|
80 |
-
* @since 2.0.7
|
81 |
-
* @var License
|
82 |
-
*/
|
83 |
-
protected $premium_license;
|
84 |
-
|
85 |
-
// END PREMIUM SECTION
|
86 |
-
// ------------------------------------------------------------------
|
87 |
-
|
88 |
-
/**
|
89 |
-
* {@inheritdoc}
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
$this->
|
97 |
-
$this->
|
98 |
-
$this->
|
99 |
-
$this->
|
100 |
-
$this->
|
101 |
-
|
102 |
-
|
103 |
-
$this->
|
104 |
-
$this->
|
105 |
-
$this->
|
106 |
-
$this->
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
'bootstrap.
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
*
|
192 |
-
*
|
193 |
-
*
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
}
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
use WBCR\Factory_453\Premium\Interfaces\License;
|
5 |
+
use WBCR\Factory_453\Premium\Provider;
|
6 |
+
|
7 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
+
exit;
|
9 |
+
}
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Class WAPT_License_Page is used as template to display form to active premium functionality.
|
13 |
+
*
|
14 |
+
* @since 2.0.7
|
15 |
+
*/
|
16 |
+
class WAPT_License extends WAPT_Page {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @var int
|
20 |
+
*/
|
21 |
+
public $page_menu_position = 900;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @var bool
|
25 |
+
*/
|
26 |
+
public $internal = false;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* {@inheritdoc}
|
30 |
+
*/
|
31 |
+
public $type = 'page';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* {@inheritdoc}
|
35 |
+
*/
|
36 |
+
public $page_menu_dashicon = 'dashicons-admin-network';
|
37 |
+
|
38 |
+
/**
|
39 |
+
* {@inheritdoc}
|
40 |
+
*/
|
41 |
+
public $available_for_multisite = true;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* {@inheritdoc}
|
45 |
+
*/
|
46 |
+
public $show_menu_tab = false;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @var string Name of the paid plan.
|
50 |
+
*/
|
51 |
+
public $plan_name;
|
52 |
+
|
53 |
+
// PREMIUM SECTION
|
54 |
+
// ------------------------------------------------------------------
|
55 |
+
/**
|
56 |
+
* @since 2.0.7
|
57 |
+
* @var bool
|
58 |
+
*/
|
59 |
+
protected $is_premium;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @since 2.0.7
|
63 |
+
* @var Provider
|
64 |
+
*/
|
65 |
+
protected $premium;
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @since 2.0.7
|
69 |
+
* @var bool
|
70 |
+
*/
|
71 |
+
protected $is_premium_active;
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @since 2.0.7
|
75 |
+
* @var bool
|
76 |
+
*/
|
77 |
+
protected $premium_has_subscription;
|
78 |
+
|
79 |
+
/**
|
80 |
+
* @since 2.0.7
|
81 |
+
* @var License
|
82 |
+
*/
|
83 |
+
protected $premium_license;
|
84 |
+
|
85 |
+
// END PREMIUM SECTION
|
86 |
+
// ------------------------------------------------------------------
|
87 |
+
|
88 |
+
/**
|
89 |
+
* {@inheritdoc}
|
90 |
+
*
|
91 |
+
* @param WAPT_Plugin $plugin
|
92 |
+
*/
|
93 |
+
public function __construct( $plugin ) {
|
94 |
+
$this->plugin = $plugin;
|
95 |
+
|
96 |
+
$this->id = 'license';
|
97 |
+
$this->menu_title = '<span style="color:#f18500">' . __( 'License', 'apt' ) . '</span>';
|
98 |
+
$this->page_title = __( 'License of APT', 'apt' );
|
99 |
+
$this->template_name = 'license';
|
100 |
+
$this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
|
101 |
+
$this->capabilitiy = 'manage_options';
|
102 |
+
|
103 |
+
$this->premium = WAPT_Plugin::app()->premium;
|
104 |
+
$this->is_premium = $this->premium->is_activate();
|
105 |
+
$this->is_premium_active = $this->premium->is_active();
|
106 |
+
$this->premium_has_subscription = $this->premium->has_paid_subscription();
|
107 |
+
$this->premium_license = $this->premium->get_license();
|
108 |
+
|
109 |
+
parent::__construct( $plugin );
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* [MAGIC] Magic method that configures assets for a page.
|
114 |
+
*/
|
115 |
+
public function assets( $scripts, $styles ) {
|
116 |
+
parent::assets( $scripts, $styles );
|
117 |
+
|
118 |
+
$this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/license-manager.css' );
|
119 |
+
|
120 |
+
$this->styles->request(
|
121 |
+
array(
|
122 |
+
'bootstrap.core',
|
123 |
+
'bootstrap.form-groups',
|
124 |
+
'bootstrap.separator',
|
125 |
+
),
|
126 |
+
'bootstrap'
|
127 |
+
);
|
128 |
+
|
129 |
+
$this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/license-manager.js' );
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Get before content.
|
134 |
+
*
|
135 |
+
* @return string Before content.
|
136 |
+
*/
|
137 |
+
protected function get_plan_description() {
|
138 |
+
return '';
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @return string
|
143 |
+
*/
|
144 |
+
protected function get_hidden_license_key() {
|
145 |
+
if ( ! $this->is_premium ) {
|
146 |
+
return '';
|
147 |
+
}
|
148 |
+
|
149 |
+
return $this->premium_license->get_hidden_key();
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* @return string
|
154 |
+
*/
|
155 |
+
protected function get_plan() {
|
156 |
+
if ( ! $this->is_premium ) {
|
157 |
+
return 'free';
|
158 |
+
}
|
159 |
+
|
160 |
+
return $this->premium->get_plan();
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* @return mixed
|
165 |
+
*/
|
166 |
+
protected function get_expiration_days() {
|
167 |
+
return $this->premium_license->get_expiration_time( 'days' );
|
168 |
+
}
|
169 |
+
|
170 |
+
/**
|
171 |
+
* @return string
|
172 |
+
*/
|
173 |
+
protected function get_billing_cycle_readable() {
|
174 |
+
if ( ! $this->is_premium ) {
|
175 |
+
return '';
|
176 |
+
}
|
177 |
+
|
178 |
+
$billing_cycle = $this->premium->get_billing_cycle();
|
179 |
+
$billing = 'lifetime';
|
180 |
+
|
181 |
+
if ( 1 == $billing_cycle ) {
|
182 |
+
$billing = 'month';
|
183 |
+
} elseif ( 12 == $billing_cycle ) {
|
184 |
+
$billing = 'year';
|
185 |
+
}
|
186 |
+
|
187 |
+
return $billing;
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Тип лицензии, цветовое оформление для формы лицензирования
|
192 |
+
* free - бесплатная
|
193 |
+
* gift - пожизненная лицензия, лицензия на особых условиях
|
194 |
+
* trial - красный цвет, применяется для триалов, если лиценизия истекла или заблокирована
|
195 |
+
* paid - обычная оплаченная лицензия, в данный момент активна.
|
196 |
+
*
|
197 |
+
* @return string
|
198 |
+
*/
|
199 |
+
protected function get_license_type() {
|
200 |
+
if ( ! $this->is_premium ) {
|
201 |
+
return 'free';
|
202 |
+
}
|
203 |
+
|
204 |
+
$license = $this->premium_license;
|
205 |
+
|
206 |
+
if ( $license->is_lifetime() ) {
|
207 |
+
return 'gift';
|
208 |
+
} elseif ( $license->get_expiration_time( 'days' ) < 1 ) {
|
209 |
+
return 'trial';
|
210 |
+
}
|
211 |
+
|
212 |
+
return 'paid';
|
213 |
+
}
|
214 |
+
}
|
admin/pages/log.php
CHANGED
@@ -1,102 +1,103 @@
|
|
1 |
-
<?php
|
2 |
-
// Exit if accessed directly
|
3 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
-
exit;
|
5 |
-
}
|
6 |
-
|
7 |
-
require_once WAPT_PLUGIN_DIR . '/admin/class-page-logger.php';
|
8 |
-
|
9 |
-
/**
|
10 |
-
* Класс отвечает за работу страницы логов.
|
11 |
-
*
|
12 |
-
* @author Eugene Jokerov <jokerov@gmail.com>
|
13 |
-
* @author Alexander Teshabaev <sasha.tesh@gmail.com>
|
14 |
-
* @copyright (c) 2018, Webcraftic
|
15 |
-
* @version 1.0
|
16 |
-
*/
|
17 |
-
class WAPT_Log extends WAPT_Page_Logger {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* {@inheritdoc}
|
21 |
-
*/
|
22 |
-
public $id;
|
23 |
-
|
24 |
-
/**
|
25 |
-
* Тип страницы
|
26 |
-
* options - предназначена для создании страниц с набором опций и настроек.
|
27 |
-
* page - произвольный контент, любой html код
|
28 |
-
*
|
29 |
-
* @var string
|
30 |
-
*/
|
31 |
-
public $type = 'page';
|
32 |
-
|
33 |
-
/**
|
34 |
-
* @var string
|
35 |
-
*/
|
36 |
-
public $page_menu_dashicon = 'dashicons-list-view';
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Menu position (only if a page is placed as a main menu).
|
40 |
-
|
41 |
-
* @
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
*
|
53 |
-
*
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
$this->
|
78 |
-
$this->
|
79 |
-
$this->
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
*
|
96 |
-
*
|
97 |
-
* @
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
}
|
|
1 |
+
<?php
|
2 |
+
// Exit if accessed directly
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
require_once WAPT_PLUGIN_DIR . '/admin/class-page-logger.php';
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Класс отвечает за работу страницы логов.
|
11 |
+
*
|
12 |
+
* @author Eugene Jokerov <jokerov@gmail.com>
|
13 |
+
* @author Alexander Teshabaev <sasha.tesh@gmail.com>
|
14 |
+
* @copyright (c) 2018, Webcraftic
|
15 |
+
* @version 1.0
|
16 |
+
*/
|
17 |
+
class WAPT_Log extends WAPT_Page_Logger {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* {@inheritdoc}
|
21 |
+
*/
|
22 |
+
public $id;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Тип страницы
|
26 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
27 |
+
* page - произвольный контент, любой html код
|
28 |
+
*
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
public $type = 'page';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @var string
|
35 |
+
*/
|
36 |
+
public $page_menu_dashicon = 'dashicons-list-view';
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Menu position (only if a page is placed as a main menu).
|
40 |
+
*
|
41 |
+
* @link http://codex.wordpress.org/Function_Reference/add_menu_page
|
42 |
+
* @var string
|
43 |
+
*/
|
44 |
+
public $menu_position = 58;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @var bool
|
48 |
+
*/
|
49 |
+
public $internal = false;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Заголовок страницы, также использует в меню, как название закладки
|
53 |
+
*
|
54 |
+
* @var bool
|
55 |
+
*/
|
56 |
+
public $show_page_title = true;
|
57 |
+
|
58 |
+
/**
|
59 |
+
* @var int
|
60 |
+
*/
|
61 |
+
public $page_menu_position = 300;
|
62 |
+
|
63 |
+
/**
|
64 |
+
* {@inheritdoc}
|
65 |
+
*/
|
66 |
+
public $available_for_multisite = false;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* {@inheritdoc}
|
70 |
+
*/
|
71 |
+
public $show_right_sidebar_in_options = false;
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @param WAPT_Plugin $plugin
|
75 |
+
*/
|
76 |
+
public function __construct( WAPT_Plugin $plugin ) {
|
77 |
+
$this->id = 'log';
|
78 |
+
$this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
|
79 |
+
$this->page_title = __( 'Plugin logs', 'apt' );
|
80 |
+
$this->menu_title = $this->getMenuTitle();
|
81 |
+
|
82 |
+
$this->plugin = $plugin;
|
83 |
+
|
84 |
+
parent::__construct( $plugin );
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* {@inheritdoc}
|
89 |
+
*/
|
90 |
+
public function getMenuTitle() {
|
91 |
+
return __( 'Logs', 'apt' );
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* {@inheritdoc}
|
96 |
+
*
|
97 |
+
* @return void
|
98 |
+
* @since 1.0.0
|
99 |
+
*/
|
100 |
+
public function assets( $scripts, $styles ) {
|
101 |
+
parent::assets( $scripts, $styles );
|
102 |
+
}
|
103 |
+
}
|
admin/pages/settings.php
CHANGED
@@ -1,248 +1,256 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use WBCR\APT\AutoPostThumbnails;
|
4 |
-
|
5 |
-
// Exit if accessed directly
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
11 |
-
|
12 |
-
/**
|
13 |
-
* The page Settings.
|
14 |
-
*
|
15 |
-
* @since 1.0.0
|
16 |
-
*/
|
17 |
-
class WAPT_Settings extends WAPT_Page {
|
18 |
-
|
19 |
-
/**
|
20 |
-
* Тип страницы
|
21 |
-
* options - предназначена для создании страниц с набором опций и настроек.
|
22 |
-
* page - произвольный контент, любой html код
|
23 |
-
*
|
24 |
-
* @var string
|
25 |
-
*/
|
26 |
-
public $type = 'options';
|
27 |
-
|
28 |
-
/**
|
29 |
-
* @var bool
|
30 |
-
*/
|
31 |
-
public $internal = false;
|
32 |
-
|
33 |
-
/**
|
34 |
-
* @var int
|
35 |
-
*/
|
36 |
-
public $page_menu_position = 200;
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Menu icon (only if a page is placed as a main menu).
|
40 |
-
* For example: '~/assets/img/menu-icon.png'
|
41 |
-
* For example dashicons: '\f321'
|
42 |
-
*
|
43 |
-
* @var string
|
44 |
-
*/
|
45 |
-
public $menu_icon = '';
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @var string
|
49 |
-
*/
|
50 |
-
public $page_menu_dashicon = 'dashicons-admin-settings';
|
51 |
-
|
52 |
-
/**
|
53 |
-
* {@inheritdoc}
|
54 |
-
*/
|
55 |
-
public $show_menu_tab = true;
|
56 |
-
|
57 |
-
/**
|
58 |
-
* @var array
|
59 |
-
*/
|
60 |
-
public $post_types;
|
61 |
-
|
62 |
-
/**
|
63 |
-
* @param WAPT_Plugin $plugin
|
64 |
-
*/
|
65 |
-
public function __construct( $plugin ) {
|
66 |
-
$this->id = $plugin->getPrefix() .
|
67 |
-
$this->menu_target = $plugin->getPrefix() .
|
68 |
-
$this->page_title = __( 'Settings of APT', 'apt' );
|
69 |
-
$this->menu_title = __( 'Settings', 'apt' );
|
70 |
-
$this->page_menu_short_description = __( 'General settings', 'apt' );
|
71 |
-
$this->capabilitiy =
|
72 |
-
$this->template_name =
|
73 |
-
|
74 |
-
$this->plugin = $plugin;
|
75 |
-
$this->post_types = $this->getPostTypes();
|
76 |
-
|
77 |
-
parent::__construct( $plugin );
|
78 |
-
}
|
79 |
-
|
80 |
-
/**
|
81 |
-
* Enqueue page assets
|
82 |
-
*
|
83 |
-
* @return void
|
84 |
-
* @since 3.8.1
|
85 |
-
* @see
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
'control.list',
|
93 |
-
'bootstrap.accordion',
|
94 |
-
'bootstrap.tab',
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
$
|
120 |
-
|
121 |
-
|
122 |
-
];
|
123 |
-
|
124 |
-
$options[] = [
|
125 |
-
'type'
|
126 |
-
'
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
'
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
'
|
135 |
-
'
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
'
|
161 |
-
|
162 |
-
|
163 |
-
]
|
164 |
-
|
165 |
-
|
166 |
-
'
|
167 |
-
'
|
168 |
-
'
|
169 |
-
'title' => __( '
|
170 |
-
'
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
'
|
177 |
-
'
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
'
|
185 |
-
'
|
186 |
-
|
187 |
-
|
188 |
-
]
|
189 |
-
|
190 |
-
|
191 |
-
'
|
192 |
-
'
|
193 |
-
'
|
194 |
-
'
|
195 |
-
'
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
'
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
'
|
205 |
-
'
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
'
|
224 |
-
'
|
225 |
-
'
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
$options[] = [
|
230 |
-
'type' => 'textbox',
|
231 |
-
'name' => '
|
232 |
-
'title' => __( '
|
233 |
-
'hint' => __( 'You can get API key after registration on the site'
|
234 |
-
'default' => '',
|
235 |
-
];
|
236 |
-
|
237 |
-
$options =
|
238 |
-
|
239 |
-
|
240 |
-
'
|
241 |
-
'
|
242 |
-
|
243 |
-
];
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use WBCR\APT\AutoPostThumbnails;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
require_once WAPT_PLUGIN_DIR . '/admin/class-page.php';
|
11 |
+
|
12 |
+
/**
|
13 |
+
* The page Settings.
|
14 |
+
*
|
15 |
+
* @since 1.0.0
|
16 |
+
*/
|
17 |
+
class WAPT_Settings extends WAPT_Page {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Тип страницы
|
21 |
+
* options - предназначена для создании страниц с набором опций и настроек.
|
22 |
+
* page - произвольный контент, любой html код
|
23 |
+
*
|
24 |
+
* @var string
|
25 |
+
*/
|
26 |
+
public $type = 'options';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @var bool
|
30 |
+
*/
|
31 |
+
public $internal = false;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @var int
|
35 |
+
*/
|
36 |
+
public $page_menu_position = 200;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Menu icon (only if a page is placed as a main menu).
|
40 |
+
* For example: '~/assets/img/menu-icon.png'
|
41 |
+
* For example dashicons: '\f321'
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
public $menu_icon = '';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var string
|
49 |
+
*/
|
50 |
+
public $page_menu_dashicon = 'dashicons-admin-settings';
|
51 |
+
|
52 |
+
/**
|
53 |
+
* {@inheritdoc}
|
54 |
+
*/
|
55 |
+
public $show_menu_tab = true;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @var array
|
59 |
+
*/
|
60 |
+
public $post_types;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @param WAPT_Plugin $plugin
|
64 |
+
*/
|
65 |
+
public function __construct( $plugin ) {
|
66 |
+
$this->id = $plugin->getPrefix() . 'settings';
|
67 |
+
$this->menu_target = $plugin->getPrefix() . 'generate-' . $plugin->getPluginName();
|
68 |
+
$this->page_title = __( 'Settings of APT', 'apt' );
|
69 |
+
$this->menu_title = __( 'Settings', 'apt' );
|
70 |
+
$this->page_menu_short_description = __( 'General settings', 'apt' );
|
71 |
+
$this->capabilitiy = 'manage_options';
|
72 |
+
$this->template_name = 'settings';
|
73 |
+
|
74 |
+
$this->plugin = $plugin;
|
75 |
+
$this->post_types = $this->getPostTypes();
|
76 |
+
|
77 |
+
parent::__construct( $plugin );
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Enqueue page assets
|
82 |
+
*
|
83 |
+
* @return void
|
84 |
+
* @since 3.8.1
|
85 |
+
* @see Wbcr_FactoryPages452_AdminPage
|
86 |
+
*/
|
87 |
+
public function assets( $scripts, $styles ) {
|
88 |
+
parent::assets( $scripts, $styles );
|
89 |
+
|
90 |
+
$this->scripts->request(
|
91 |
+
[
|
92 |
+
'control.list',
|
93 |
+
'bootstrap.accordion',
|
94 |
+
'bootstrap.tab',
|
95 |
+
],
|
96 |
+
'bootstrap'
|
97 |
+
);
|
98 |
+
|
99 |
+
$this->styles->request(
|
100 |
+
[
|
101 |
+
'control.list',
|
102 |
+
'bootstrap.accordion',
|
103 |
+
'bootstrap.tab',
|
104 |
+
],
|
105 |
+
'bootstrap'
|
106 |
+
);
|
107 |
+
|
108 |
+
$this->scripts->add( WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [ 'jquery' ], 'wapt-settings-script', WAPT_PLUGIN_VERSION );
|
109 |
+
$this->styles->add( WAPT_PLUGIN_URL . '/admin/assets/css/settings.css', [], 'wapt-settings-style', WAPT_PLUGIN_VERSION );
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Returns options for the Basic Settings screen.
|
114 |
+
*
|
115 |
+
* @return array
|
116 |
+
* @since 3.6.2
|
117 |
+
*/
|
118 |
+
public function getPageOptions() {
|
119 |
+
$is_premium = WAPT_Plugin::app()->is_premium();
|
120 |
+
$pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
|
121 |
+
|
122 |
+
$options = [];
|
123 |
+
|
124 |
+
$options[] = [
|
125 |
+
'type' => 'html',
|
126 |
+
'html' => $this->group_header( __( 'General', 'apt' ), __( 'Basic plugin settings', 'apt' ) ),
|
127 |
+
];
|
128 |
+
|
129 |
+
$options[] = [
|
130 |
+
'type' => 'checkbox',
|
131 |
+
'way' => 'buttons',
|
132 |
+
'name' => 'auto_generation',
|
133 |
+
'title' => __( 'Add featured image when saving a post', 'apt' ),
|
134 |
+
'default' => true,
|
135 |
+
'hint' => __( 'Automatically add featured image when saving a post', 'apt' ),
|
136 |
+
];
|
137 |
+
|
138 |
+
$options[] = [
|
139 |
+
'type' => 'dropdown',
|
140 |
+
'way' => 'buttons',
|
141 |
+
'name' => 'generate_autoimage',
|
142 |
+
'data' => [
|
143 |
+
[ 'find', __( 'Find in post', 'apt' ) ],
|
144 |
+
[ 'generate', __( 'Generate from title', 'apt' ) ],
|
145 |
+
[ 'both', __( 'Find or generate', 'apt' ) ],
|
146 |
+
[ 'google', __( 'Google', 'apt' ) ],
|
147 |
+
[ 'find_google', __( 'Find or Google', 'apt' ) ],
|
148 |
+
],
|
149 |
+
'default' => 'find',
|
150 |
+
'title' => __( 'Featured image', 'apt' ),
|
151 |
+
'hint' => __(
|
152 |
+
'How to generate featured image:
|
153 |
+
<br> <b>Find in post:</b> search for the first image in the post text
|
154 |
+
<br> <b>Generate from title:</b> created from the title on a colored background
|
155 |
+
<br> <b>Find or generate:</b> find an image in the post text, if it is not present, generate it from the title
|
156 |
+
<br> <b>Google:</b> search for an image by title of the post in Google
|
157 |
+
<br> <b>Find or Google:</b> find an image in the post text, if it is not present, search for an image by title of the post in Google',
|
158 |
+
'apt'
|
159 |
+
),
|
160 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro-item' ] : [],
|
161 |
+
];
|
162 |
+
|
163 |
+
$options[] = [
|
164 |
+
'type' => 'list',
|
165 |
+
'way' => 'checklist',
|
166 |
+
'name' => 'auto_post_types',
|
167 |
+
'data' => $is_premium ? $this->getPostTypes() : $this->post_types,
|
168 |
+
'default' => 'post,page',
|
169 |
+
'title' => __( 'Generate for post types', 'apt' ),
|
170 |
+
'hint' => __( 'What types of posts to generate images for', 'apt' ),
|
171 |
+
];
|
172 |
+
|
173 |
+
$options[] = [
|
174 |
+
'type' => 'checkbox',
|
175 |
+
'way' => 'buttons',
|
176 |
+
'name' => 'delete_settings',
|
177 |
+
'title' => __( 'Delete settings when removing the plugin', 'apt' ),
|
178 |
+
'default' => false,
|
179 |
+
'hint' => __( 'Delete settings when removing the plugin', 'apt' ),
|
180 |
+
];
|
181 |
+
|
182 |
+
/* ------------------ IMPORT SETTINGS -----------------------*/
|
183 |
+
$options[] = [
|
184 |
+
'type' => 'html',
|
185 |
+
'html' => $this->group_header( __( 'Import', 'apt' ), __( 'Images import settings', 'apt' ) ),
|
186 |
+
];
|
187 |
+
|
188 |
+
$options[] = [
|
189 |
+
'type' => 'checkbox',
|
190 |
+
'way' => 'buttons',
|
191 |
+
'name' => 'auto_upload_images',
|
192 |
+
'title' => __( 'Auto images import', 'apt' ),
|
193 |
+
'default' => false,
|
194 |
+
'hint' => __( 'Import post images to the media library and replacing them in the text when saving the post', 'apt' ),
|
195 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
196 |
+
];
|
197 |
+
|
198 |
+
$options[] = [
|
199 |
+
'type' => 'list',
|
200 |
+
'way' => 'checklist',
|
201 |
+
'name' => 'import_post_types',
|
202 |
+
'data' => $is_premium ? $this->getPostTypes() : $this->post_types,
|
203 |
+
'default' => '',
|
204 |
+
'title' => __( 'Import for post types', 'apt' ) . $pro,
|
205 |
+
'hint' => __( 'What types of posts to import images for', 'apt' ),
|
206 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
207 |
+
'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
|
208 |
+
];
|
209 |
+
|
210 |
+
/* ------------------ API SETTINGS -----------------------*/
|
211 |
+
$options[] = [
|
212 |
+
'type' => 'html',
|
213 |
+
'html' => $this->group_header( __( 'Google API', 'apt' ), __( 'Settings connecting to the Google API service', 'apt' ) ),
|
214 |
+
];
|
215 |
+
|
216 |
+
/* GOOGLE */
|
217 |
+
$options[] = [
|
218 |
+
'type' => 'html',
|
219 |
+
'html' => $this->instruction( __( 'Google API', 'apt' ), '<a href="https://www.youtube.com/watch?v=Bxy8Yqp5XX0" target="_blank" rel="noopener">' . __( 'How to get google api key & custom search engine id', 'apt' ) . '</a>' ),
|
220 |
+
];
|
221 |
+
|
222 |
+
$options[] = [
|
223 |
+
'type' => 'hidden',
|
224 |
+
'name' => 'ajax_nonce',
|
225 |
+
'value' => '', //wp_create_nonce( 'check-api-key' )
|
226 |
+
];
|
227 |
+
|
228 |
+
// Текстовое поле
|
229 |
+
$options[] = [
|
230 |
+
'type' => 'textbox',
|
231 |
+
'name' => 'google_apikey',
|
232 |
+
'title' => __( 'API key for Google', 'apt' ),
|
233 |
+
'hint' => __( 'You can get API key after registration on the site' ) . ' <a href="https://developers.google.com/custom-search/v1/overview" target="_blank" rel="noopener">https://developers.google.com/custom-search/v1/overview</a>',
|
234 |
+
'default' => '',
|
235 |
+
];
|
236 |
+
|
237 |
+
$options[] = [
|
238 |
+
'type' => 'textbox',
|
239 |
+
'name' => 'google_cse',
|
240 |
+
'title' => __( 'Google Custom Search Engine ID', 'apt' ),
|
241 |
+
'hint' => __( 'You can get API key after registration on the site', 'apt' ) . ' <a href="https://cse.google.com/cse/all" target="_blank" rel="noopener">https://cse.google.com/cse/all</a>',
|
242 |
+
'default' => '',
|
243 |
+
];
|
244 |
+
|
245 |
+
$options = apply_filters( 'wapt/settings/form_options', $options );
|
246 |
+
|
247 |
+
$form_options[] = [
|
248 |
+
'type' => 'form-group',
|
249 |
+
'items' => $options,
|
250 |
+
//'cssClass' => 'postbox'
|
251 |
+
];
|
252 |
+
|
253 |
+
return $form_options;
|
254 |
+
}
|
255 |
+
|
256 |
+
}
|
admin/views/media-library.php
CHANGED
@@ -1,251 +1,259 @@
|
|
1 |
-
<?php
|
2 |
-
$ajaxloader = WAPT_PLUGIN_URL .
|
3 |
-
$apt_content_nonce = wp_create_nonce( 'apt_content' );
|
4 |
-
$post_id = - 1;
|
5 |
-
if ( isset( $_GET['post_id'] ) ) {
|
6 |
-
$post_id = absint( $_GET['post_id'] ) ? absint( $_GET['post_id'] ) : -1;
|
7 |
-
}
|
8 |
-
|
9 |
-
|
10 |
-
?>
|
11 |
-
|
12 |
-
<?php if ( WAPT_Plugin::app()->premium->is_activate() ): ?>
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
<?php endif; ?>
|
25 |
-
|
26 |
-
<div class="tabs">
|
27 |
-
|
28 |
-
<?php
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
<
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
padding:
|
77 |
-
}
|
78 |
-
|
79 |
-
.tabs > ul
|
80 |
-
{
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
}
|
114 |
-
|
115 |
-
.tabs > ul li
|
116 |
-
{
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
width:
|
153 |
-
|
154 |
-
}
|
155 |
-
|
156 |
-
.
|
157 |
-
{
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$ajaxloader = WAPT_PLUGIN_URL . '/admin/assets/img/ajax-loader-line.gif';
|
3 |
+
$apt_content_nonce = wp_create_nonce( 'apt_content' );
|
4 |
+
$post_id = - 1;
|
5 |
+
if ( isset( $_GET['post_id'] ) ) {
|
6 |
+
$post_id = absint( $_GET['post_id'] ) ? absint( $_GET['post_id'] ) : - 1;
|
7 |
+
}
|
8 |
+
|
9 |
+
|
10 |
+
?>
|
11 |
+
|
12 |
+
<?php if ( WAPT_Plugin::app()->premium->is_activate() ) : ?>
|
13 |
+
<div class="watson-categories">
|
14 |
+
<div id="ajaxloader-watson" style="display: none">
|
15 |
+
<img src="<?php echo esc_url_raw( $ajaxloader ); ?>" alt="">
|
16 |
+
</div>
|
17 |
+
<div id="message"></div>
|
18 |
+
<div class="categories">
|
19 |
+
<ul id="categories-list">
|
20 |
+
<li></li>
|
21 |
+
</ul>
|
22 |
+
</div>
|
23 |
+
</div>
|
24 |
+
<?php endif; ?>
|
25 |
+
|
26 |
+
<div class="tabs">
|
27 |
+
<ul>
|
28 |
+
<?php
|
29 |
+
$i = 1;
|
30 |
+
foreach ( $this->sources as $src => $slug ) {
|
31 |
+
if ( '_skip' === $slug ) {
|
32 |
+
continue;
|
33 |
+
}
|
34 |
+
|
35 |
+
$is_pro = '';
|
36 |
+
if ( empty( $slug ) && ! WAPT_Plugin::app()->premium->is_activate() ) {
|
37 |
+
$is_pro = ' (PRO)';
|
38 |
+
}
|
39 |
+
$is_pro = "<sup class='wapt-sup-pro'>" . $is_pro . '</sup>';
|
40 |
+
|
41 |
+
echo "<li id='tabs-" . intval( $i ++ ) . "'>" . esc_html( strtoupper( $src ) ) . esc_html( $is_pro ) . '</li>';
|
42 |
+
}
|
43 |
+
?>
|
44 |
+
</ul>
|
45 |
+
<div id='ajaxloader' style='display:none;'>
|
46 |
+
<img src='<?php echo esc_url_raw( $ajaxloader ); ?>' width='150px' alt=''>
|
47 |
+
</div>
|
48 |
+
<div id="media-frame-content">
|
49 |
+
<?php
|
50 |
+
foreach ( $this->sources as $src => $slug ) {
|
51 |
+
if ( '_skip' === $slug ) {
|
52 |
+
continue;
|
53 |
+
}
|
54 |
+
|
55 |
+
echo "<div id='tab-" . esc_attr( strtolower( $src ) ) . "' class='tab'></div>";
|
56 |
+
}
|
57 |
+
?>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
|
61 |
+
<style>
|
62 |
+
sup
|
63 |
+
{
|
64 |
+
font-size: 10px;
|
65 |
+
}
|
66 |
+
|
67 |
+
.tabs
|
68 |
+
{
|
69 |
+
display: inline-block;
|
70 |
+
width: 100%;
|
71 |
+
margin: 5px 0px 10px 0px;
|
72 |
+
}
|
73 |
+
|
74 |
+
.tabs > div
|
75 |
+
{
|
76 |
+
padding-top: 10px;
|
77 |
+
}
|
78 |
+
|
79 |
+
.tabs > ul
|
80 |
+
{
|
81 |
+
margin: 0px;
|
82 |
+
padding: 0px;
|
83 |
+
}
|
84 |
+
|
85 |
+
.tabs > ul:after
|
86 |
+
{
|
87 |
+
content: "";
|
88 |
+
display: block;
|
89 |
+
clear: both;
|
90 |
+
height: 1px;
|
91 |
+
background: #008ec2;
|
92 |
+
}
|
93 |
+
|
94 |
+
.tabs > ul li
|
95 |
+
{
|
96 |
+
cursor: pointer;
|
97 |
+
display: block;
|
98 |
+
float: left;
|
99 |
+
padding: 10px 0;
|
100 |
+
background: #f1f1f1;
|
101 |
+
color: #0073aa;
|
102 |
+
width: 15%;
|
103 |
+
border-radius: 10px 10px 0 0;
|
104 |
+
font-weight: bold;
|
105 |
+
text-align: center;
|
106 |
+
}
|
107 |
+
|
108 |
+
.tabs > ul li.active, .tabs ul li.active:hover
|
109 |
+
{
|
110 |
+
background: #008ec2;
|
111 |
+
color: #ffffff;
|
112 |
+
width: 15%;
|
113 |
+
}
|
114 |
+
|
115 |
+
.tabs > ul li:hover
|
116 |
+
{
|
117 |
+
background: #008ec2;
|
118 |
+
color: #dddddd;
|
119 |
+
}
|
120 |
+
|
121 |
+
.tabs > ul li
|
122 |
+
{
|
123 |
+
margin-bottom: 0;
|
124 |
+
}
|
125 |
+
|
126 |
+
.tab
|
127 |
+
{
|
128 |
+
padding: 10px;
|
129 |
+
}
|
130 |
+
|
131 |
+
#ajaxloader
|
132 |
+
{
|
133 |
+
margin: 20px 10px 10px 30px;
|
134 |
+
}
|
135 |
+
|
136 |
+
#page_num_div
|
137 |
+
{
|
138 |
+
display: inline;
|
139 |
+
font-weight: bold;
|
140 |
+
padding: 20px;
|
141 |
+
}
|
142 |
+
|
143 |
+
.apt_pages
|
144 |
+
{
|
145 |
+
padding-top: 20px;
|
146 |
+
}
|
147 |
+
|
148 |
+
.divform
|
149 |
+
{
|
150 |
+
line-height: 1.5;
|
151 |
+
margin: 1em 0;
|
152 |
+
max-width: 500px;
|
153 |
+
position: relative;
|
154 |
+
}
|
155 |
+
|
156 |
+
.input_query
|
157 |
+
{
|
158 |
+
width: 100%;
|
159 |
+
padding: 7px 32px 7px 9px;
|
160 |
+
}
|
161 |
+
|
162 |
+
.submit_button
|
163 |
+
{
|
164 |
+
height: 90%;
|
165 |
+
width: 70px;
|
166 |
+
border: 0;
|
167 |
+
cursor: pointer;
|
168 |
+
position: absolute;
|
169 |
+
right: 0px;
|
170 |
+
top: 2px;
|
171 |
+
outline: 0;
|
172 |
+
}
|
173 |
+
|
174 |
+
.custom-media-button
|
175 |
+
{
|
176 |
+
float: right;
|
177 |
+
padding: 0px 20px 20px 0px;
|
178 |
+
position: absolute;
|
179 |
+
right: 0px;
|
180 |
+
}
|
181 |
+
</style>
|
182 |
+
<script type="text/javascript">
|
183 |
+
jQuery(document).ready(function () {
|
184 |
+
jQuery.fn.lightTabs = function (options) {
|
185 |
+
|
186 |
+
var createTabs = function () {
|
187 |
+
tabs = this;
|
188 |
+
i = 0;
|
189 |
+
|
190 |
+
showPage = function (i) {
|
191 |
+
jQuery(tabs).children("div").children("div").hide();
|
192 |
+
jQuery(tabs).children("ul").children("li").removeClass("active");
|
193 |
+
jQuery('#' + jQuery(tabs).children("div").children("div").attr('id')).html('');
|
194 |
+
|
195 |
+
jQuery('#' + jQuery(tabs).children("div").children("div").eq(i).attr('id')).html('');
|
196 |
+
jQuery(tabs).children("div").children("div").eq(i).show();
|
197 |
+
jQuery(tabs).children("ul").children("li").eq(i).addClass("active");
|
198 |
+
|
199 |
+
jQuery('#ajaxloader').show();
|
200 |
+
jQuery.post(ajaxurl, {
|
201 |
+
action: 'source_content',
|
202 |
+
source: jQuery(tabs).children("div").children("div").eq(i).attr('id'),
|
203 |
+
wpnonce: '<?php echo esc_attr( $apt_content_nonce ); ?>',
|
204 |
+
post_id: <?php echo intval( $post_id ); ?>,
|
205 |
+
}).done(function (content) {
|
206 |
+
jQuery('#ajaxloader').hide();
|
207 |
+
if (jQuery(tabs).children("ul").children("li").eq(i).hasClass("active")) {
|
208 |
+
jQuery('#' + jQuery(tabs).children("div").children("div").eq(i).attr('id')).html(content);
|
209 |
+
}
|
210 |
+
|
211 |
+
if (typeof window.search_query !== 'undefined') {
|
212 |
+
jQuery(".input_query").val(window.search_query);
|
213 |
+
jQuery(".submit_button").click();
|
214 |
+
}
|
215 |
+
});
|
216 |
+
|
217 |
+
};
|
218 |
+
|
219 |
+
showPage(0);
|
220 |
+
|
221 |
+
jQuery(tabs).children("ul").children("li").each(function (index, element) {
|
222 |
+
jQuery(element).attr("data-page", i);
|
223 |
+
i++;
|
224 |
+
});
|
225 |
+
|
226 |
+
jQuery(tabs).children("ul").children("li").click(function () {
|
227 |
+
showPage(parseInt(jQuery(this).attr("data-page")));
|
228 |
+
});
|
229 |
+
};
|
230 |
+
return this.each(createTabs);
|
231 |
+
};
|
232 |
+
|
233 |
+
jQuery(".tabs").lightTabs();
|
234 |
+
|
235 |
+
jQuery("#ajax-watson").on('click', function () {
|
236 |
+
jQuery("#ajaxloader-watson").css('display', 'block');
|
237 |
+
jQuery.post(ajaxurl, {
|
238 |
+
action: 'apt_api_watson',
|
239 |
+
postId: <?php echo intval( $post_id ); ?>,
|
240 |
+
nonce: "<?php echo esc_attr( wp_create_nonce( 'apt_api_watson' ) ); ?>"
|
241 |
+
}, function (response) {
|
242 |
+
console.log(response);
|
243 |
+
if (response.success) {
|
244 |
+
jQuery("#ajaxloader-watson").css('display', 'none');
|
245 |
+
response.data.categories.forEach(function (category) {
|
246 |
+
var ul = jQuery(`<li style="cursor: pointer; color: #007bff" data-label="${category.label}">${category.label} (${(category.score * 100).toFixed(2)}%)</li>`);
|
247 |
+
ul.on('click', function () {
|
248 |
+
jQuery(".input_query").val(jQuery(this).attr('data-label'));
|
249 |
+
jQuery(".submit_button").click();
|
250 |
+
});
|
251 |
+
jQuery("#categories-list").append(ul);
|
252 |
+
});
|
253 |
+
} else {
|
254 |
+
jQuery("#message").html(response.data.message);
|
255 |
+
}
|
256 |
+
});
|
257 |
+
});
|
258 |
+
});
|
259 |
+
</script>
|
admin/views/pro.php
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! WAPT_Plugin::app()->premium->is_activate() ) {
|
3 |
-
echo
|
4 |
-
?>
|
5 |
-
|
6 |
-
|
7 |
-
<span class="btn btn-gold">
|
8 |
-
<?php printf(
|
9 |
-
</span><br>
|
10 |
-
|
11 |
-
<?php
|
12 |
-
}
|
13 |
-
if ( empty( $slug ) && WAPT_Plugin::app()->premium->is_activate() ) {
|
14 |
-
echo
|
15 |
-
}
|
16 |
-
|
17 |
-
?>
|
1 |
+
<?php
|
2 |
+
if ( ! WAPT_Plugin::app()->premium->is_activate() ) {
|
3 |
+
echo esc_html__( 'This service available in the PRO version' );
|
4 |
+
?>
|
5 |
+
<a href="<?php echo esc_url_raw( WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) ); ?>"
|
6 |
+
class="purchase-premium" target="_blank" rel="noopener">
|
7 |
+
<span class="btn btn-gold">
|
8 |
+
<?php printf( esc_html__( 'Upgrade to Premium', 'insert-php' ), WAPT_Plugin::app()->premium->get_price() ); ?>
|
9 |
+
</span><br>
|
10 |
+
</a>
|
11 |
+
<?php
|
12 |
+
}
|
13 |
+
if ( empty( $slug ) && WAPT_Plugin::app()->premium->is_activate() ) {
|
14 |
+
echo esc_html__( 'You have activated a premium license, but not install premium add-on to use pro features now.' );
|
15 |
+
}
|
16 |
+
|
17 |
+
?>
|
admin/views/pro_column.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
-
<?php
|
2 |
-
echo
|
3 |
-
?>
|
4 |
-
<a href="<?php echo WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ); ?>"
|
5 |
-
class="purchase-premium" target="_blank" rel="noopener">
|
6 |
-
<span class="btn btn-gold">
|
7 |
-
<?php printf(
|
8 |
-
</span>
|
9 |
-
</a>
|
10 |
-
|
1 |
+
<?php
|
2 |
+
echo esc_html__( 'Thumbnails of posts available in the PRO version' );
|
3 |
+
?>
|
4 |
+
<a href="<?php echo esc_url_raw( WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) ); ?>"
|
5 |
+
class="purchase-premium" target="_blank" rel="noopener">
|
6 |
+
<span class="btn btn-gold">
|
7 |
+
<?php printf( esc_html__( 'Upgrade to Premium', 'insert-php' ), esc_html( WAPT_Plugin::app()->premium->get_price() ) ); ?>
|
8 |
+
</span>
|
9 |
+
</a>
|
10 |
+
|
admin/views/sources/google.php
CHANGED
@@ -1,132 +1,123 @@
|
|
1 |
-
<?php
|
2 |
-
$ajaxloader = WAPT_PLUGIN_URL .
|
3 |
-
$apt_google_nonce = wp_create_nonce( 'apt_api' );
|
4 |
-
|
5 |
-
$apt_google_key = WAPT_Plugin::app()->getPopulateOption( 'google_apikey' );
|
6 |
-
$apt_google_cse = WAPT_Plugin::app()->getPopulateOption( 'google_cse' );
|
7 |
-
|
8 |
-
if ( isset( $_REQUEST['post'] ) ) {
|
9 |
-
$pid = intval( $_REQUEST['post'] );
|
10 |
-
} else {
|
11 |
-
$pid = 0;
|
12 |
-
}
|
13 |
-
|
14 |
-
if ( $apt_google_key && $apt_google_cse ) {
|
15 |
-
?>
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
</div>
|
125 |
-
</div>
|
126 |
-
<?php
|
127 |
-
} else {
|
128 |
-
?>
|
129 |
-
<div><?php echo __( 'API key is missing. Add it in APT settings', 'apt' ); ?> ->
|
130 |
-
<a href="<?php echo admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ); ?>" target="_blank">here</a></div>
|
131 |
-
<?php
|
132 |
-
} ?>
|
1 |
+
<?php
|
2 |
+
$ajaxloader = WAPT_PLUGIN_URL . '/admin/assets/img/ajax-loader-line.gif';
|
3 |
+
$apt_google_nonce = wp_create_nonce( 'apt_api' );
|
4 |
+
|
5 |
+
$apt_google_key = WAPT_Plugin::app()->getPopulateOption( 'google_apikey' );
|
6 |
+
$apt_google_cse = WAPT_Plugin::app()->getPopulateOption( 'google_cse' );
|
7 |
+
|
8 |
+
if ( isset( $_REQUEST['post'] ) ) {
|
9 |
+
$pid = intval( $_REQUEST['post'] );
|
10 |
+
} else {
|
11 |
+
$pid = 0;
|
12 |
+
}
|
13 |
+
|
14 |
+
if ( $apt_google_key && $apt_google_cse ) {
|
15 |
+
?>
|
16 |
+
<script>
|
17 |
+
window.wapt_no_hits = '<?php esc_html_e( 'No hits', 'apt' ); ?>';
|
18 |
+
window.wapt_download_svg = '<?php echo esc_url( WAPT_PLUGIN_URL . '/admin/assets/img/download.svg' ); ?>';
|
19 |
+
</script>
|
20 |
+
<script type="text/javascript">
|
21 |
+
|
22 |
+
function call_api(query, page = 1) {
|
23 |
+
findImages('google', 'apt_api_google', '<?php echo esc_attr( $apt_google_nonce ); ?>', query, page, {
|
24 |
+
rights: jQuery("#filter_rights").attr('checked') === 'checked' ? 1 : 0,
|
25 |
+
});
|
26 |
+
}
|
27 |
+
|
28 |
+
function do_submit() {
|
29 |
+
jQuery('#loader_flex-google').show();
|
30 |
+
q = jQuery('#query', form).val();
|
31 |
+
p = jQuery('#page_num', form).val();
|
32 |
+
|
33 |
+
if (jQuery('#filter_rights', form).is(':checked')) {
|
34 |
+
rights = 1;
|
35 |
+
} else rights = 0;
|
36 |
+
|
37 |
+
jQuery('#google_results').html('');
|
38 |
+
call_api(q, p);
|
39 |
+
}
|
40 |
+
|
41 |
+
jQuery('#prev_page').click(function (e) {
|
42 |
+
jQuery('#page_num', form).val(parseInt(jQuery('#page_num', form).val(), 10) - 1);
|
43 |
+
do_submit();
|
44 |
+
});
|
45 |
+
jQuery('#next_page').click(function (e) {
|
46 |
+
jQuery('#page_num', form).val(parseInt(jQuery('#page_num', form).val(), 10) + 1);
|
47 |
+
do_submit();
|
48 |
+
});
|
49 |
+
|
50 |
+
//Кнопка поиска
|
51 |
+
jQuery(document).ready(function () {
|
52 |
+
form = jQuery('#google_images_form');
|
53 |
+
|
54 |
+
form.submit(function (e) {
|
55 |
+
e.preventDefault();
|
56 |
+
do_submit();
|
57 |
+
});
|
58 |
+
});
|
59 |
+
|
60 |
+
//загрузка в медиабиблиотеку
|
61 |
+
|
62 |
+
jQuery(document).on('click', '#tab-google .upload_google', function (e) {
|
63 |
+
if (jQuery(e.target).is('a')) return;
|
64 |
+
//jQuery(document).off('click', '.upload_google');
|
65 |
+
// loading animation
|
66 |
+
var downdiv = jQuery(this);
|
67 |
+
downdiv.addClass('uploading').find('.download img').replaceWith('<img src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/loading.svg' ); ?>" style="height:80px !important">');
|
68 |
+
|
69 |
+
downloadMedia(
|
70 |
+
jQuery(this).data('service'),
|
71 |
+
jQuery(this).data('url'),
|
72 |
+
jQuery("#query").val(),
|
73 |
+
<?php echo intval( $pid ); ?>,
|
74 |
+
jQuery(this).data('title'),
|
75 |
+
'<a href="' + jQuery(this).data('link') + '" target="_blank">' + jQuery(this).data('title') + '</a>',
|
76 |
+
'<?php echo esc_attr( $apt_google_nonce ); ?>',
|
77 |
+
jQuery(this)
|
78 |
+
);
|
79 |
+
|
80 |
+
return false;
|
81 |
+
});
|
82 |
+
|
83 |
+
</script>
|
84 |
+
|
85 |
+
<div style="padding:10px 15px 25px">
|
86 |
+
<form id="google_images_form" style="margin:0">
|
87 |
+
<div class="divform">
|
88 |
+
<input id="query" type="text" value="" class="input_query" autofocus
|
89 |
+
placeholder="<?php echo esc_attr__( 'Search...', 'apt' ); ?>">
|
90 |
+
<input id="page_num" type="hidden" value="1">
|
91 |
+
<button type="submit" class="submit_button" title="<?php echo esc_attr__( 'Search', 'apt' ); ?>">
|
92 |
+
<img src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/search.png' ); ?>">
|
93 |
+
</button>
|
94 |
+
</div>
|
95 |
+
<div style="margin:1em 0;padding-left:2px;line-height:2">
|
96 |
+
<label style="margin-right:15px;white-space:nowrap">
|
97 |
+
<input type="checkbox"
|
98 |
+
id="filter_rights"><?php echo esc_html__( 'Commercial and derived use', 'apt' ); ?>
|
99 |
+
</label>
|
100 |
+
</div>
|
101 |
+
</form>
|
102 |
+
<div id="loader_flex-google" style="display: none;">
|
103 |
+
<img src='<?php echo esc_url_raw( $ajaxloader ); ?>' width='100px' alt=''>
|
104 |
+
</div>
|
105 |
+
<div id="google_results" class="flex-images"></div>
|
106 |
+
<div class="apt_pages">
|
107 |
+
<button id="prev_page" style="display: none;"><span
|
108 |
+
class="dashicons dashicons-arrow-left-alt"></span> <?php echo esc_html__( 'Prev', 'apt' ); ?>
|
109 |
+
</button>
|
110 |
+
<div id="page_num_div" style="display: none;"></div>
|
111 |
+
<button id="next_page" style="display: none;"><?php echo esc_html__( 'Next', 'apt' ); ?> <span
|
112 |
+
class="dashicons dashicons-arrow-right-alt"></span>
|
113 |
+
</button>
|
114 |
+
</div>
|
115 |
+
</div>
|
116 |
+
<?php
|
117 |
+
} else {
|
118 |
+
?>
|
119 |
+
<div><?php echo esc_html__( 'API key is missing. Add it in APT settings', 'apt' ); ?> ->
|
120 |
+
<a href="<?php echo esc_url_raw( admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ) ); ?>" target="_blank">here</a>
|
121 |
+
</div>
|
122 |
+
<?php
|
123 |
+
} ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/views/tab-about.php
CHANGED
@@ -1,365 +1,424 @@
|
|
1 |
-
<style>
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
</
|
365 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<style>
|
2 |
+
.apt-section-wrapper
|
3 |
+
{
|
4 |
+
width: 100%;
|
5 |
+
margin-top: 10px;
|
6 |
+
padding-right: 20px;
|
7 |
+
box-sizing: border-box;
|
8 |
+
}
|
9 |
+
|
10 |
+
.apt-section
|
11 |
+
{
|
12 |
+
padding: 29px 29px 0px 29px;
|
13 |
+
}
|
14 |
+
|
15 |
+
.apt-section .container
|
16 |
+
{
|
17 |
+
display: block;
|
18 |
+
margin-right: auto;
|
19 |
+
margin-left: auto;
|
20 |
+
position: relative;
|
21 |
+
max-width: 1140px;
|
22 |
+
min-height: 400px;
|
23 |
+
}
|
24 |
+
|
25 |
+
.apt-section-intro
|
26 |
+
{
|
27 |
+
width: 1280px;
|
28 |
+
height: 414px;
|
29 |
+
box-shadow: 0px 0px 24px rgba(107, 107, 107, 0.5);
|
30 |
+
text-align: center;
|
31 |
+
margin: 0 auto;
|
32 |
+
padding: 0;
|
33 |
+
}
|
34 |
+
|
35 |
+
.apt-section-intro img
|
36 |
+
{
|
37 |
+
width: 100%;
|
38 |
+
height: auto;
|
39 |
+
}
|
40 |
+
|
41 |
+
.apt-section-intro .container h2
|
42 |
+
{
|
43 |
+
font-size: 61px;
|
44 |
+
font-weight: 500;
|
45 |
+
text-transform: uppercase;
|
46 |
+
line-height: 1.1em;
|
47 |
+
color: #fff;
|
48 |
+
text-align: center;
|
49 |
+
}
|
50 |
+
|
51 |
+
.apt-section-intro .container p
|
52 |
+
{
|
53 |
+
margin-bottom: 1.6em;
|
54 |
+
color: #fffcfc;
|
55 |
+
font-family: "Arial", Sans-serif;
|
56 |
+
font-size: 22px;
|
57 |
+
line-height: 1.3em;
|
58 |
+
letter-spacing: 1.1px;
|
59 |
+
}
|
60 |
+
|
61 |
+
.apt-section-video p
|
62 |
+
{
|
63 |
+
font-size: 16px;
|
64 |
+
text-align: center;
|
65 |
+
padding: 30px;
|
66 |
+
}
|
67 |
+
|
68 |
+
.apt-section-video iframe
|
69 |
+
{
|
70 |
+
margin: 0 auto;
|
71 |
+
display: block;
|
72 |
+
}
|
73 |
+
|
74 |
+
.apt-section-changelog h4
|
75 |
+
{
|
76 |
+
font-size: 1.3333333333333rem;
|
77 |
+
}
|
78 |
+
|
79 |
+
.apt-section-changelog p,
|
80 |
+
.apt-section-changelog ul > li
|
81 |
+
{
|
82 |
+
font-size: 15px;
|
83 |
+
}
|
84 |
+
|
85 |
+
.apt-section-changelog ul
|
86 |
+
{
|
87 |
+
list-style: inherit;
|
88 |
+
margin-left: 40px;
|
89 |
+
}
|
90 |
+
|
91 |
+
#wpfooter
|
92 |
+
{
|
93 |
+
position: relative !important;
|
94 |
+
}
|
95 |
+
|
96 |
+
.heading-title
|
97 |
+
{
|
98 |
+
text-align: center;
|
99 |
+
}
|
100 |
+
|
101 |
+
.heading-container
|
102 |
+
{
|
103 |
+
text-align: center;
|
104 |
+
margin-top: 20px;
|
105 |
+
}
|
106 |
+
|
107 |
+
.heading-container > p > a
|
108 |
+
{
|
109 |
+
font-size: 2em;
|
110 |
+
}
|
111 |
+
|
112 |
+
h1.heading-title
|
113 |
+
{
|
114 |
+
font-size: 1.8em;
|
115 |
+
line-height: 1.2em;
|
116 |
+
|
117 |
+
}
|
118 |
+
|
119 |
+
h2.image-box-title
|
120 |
+
{
|
121 |
+
font-size: 2em;
|
122 |
+
line-height: 1.2em;
|
123 |
+
margin: 0;
|
124 |
+
}
|
125 |
+
|
126 |
+
p.image-box-description
|
127 |
+
{
|
128 |
+
font-size: 1.15em;
|
129 |
+
line-height: 1.2em;
|
130 |
+
margin: 5px;
|
131 |
+
margin-bottom: 20px;
|
132 |
+
font-weight: bold;
|
133 |
+
}
|
134 |
+
|
135 |
+
div.text-editor > p
|
136 |
+
{
|
137 |
+
font-size: 1.2em;
|
138 |
+
line-height: 1.5em;
|
139 |
+
margin: 10px;
|
140 |
+
}
|
141 |
+
|
142 |
+
div.image > img
|
143 |
+
{
|
144 |
+
box-sizing: border-box;
|
145 |
+
/*border: 1px solid black;*/
|
146 |
+
box-shadow: 0px 0px 24px rgba(107, 107, 107, 0.5);
|
147 |
+
text-align: center;
|
148 |
+
display: block;
|
149 |
+
margin: auto;
|
150 |
+
margin-bottom: 30px;
|
151 |
+
}
|
152 |
+
|
153 |
+
hr
|
154 |
+
{
|
155 |
+
border: 1px solid black;
|
156 |
+
}
|
157 |
+
|
158 |
+
@media screen and (max-width: 1500px)
|
159 |
+
{
|
160 |
+
.apt-section .container
|
161 |
+
{
|
162 |
+
min-height: 300px;
|
163 |
+
}
|
164 |
+
|
165 |
+
.apt-section-intro
|
166 |
+
{
|
167 |
+
box-sizing: border-box;
|
168 |
+
width: 100%;
|
169 |
+
min-height: auto;
|
170 |
+
height: calc(100% - 10px);
|
171 |
+
}
|
172 |
+
|
173 |
+
.apt-section-video p
|
174 |
+
{
|
175 |
+
padding: 10px;
|
176 |
+
}
|
177 |
+
|
178 |
+
.apt-section-video iframe
|
179 |
+
{
|
180 |
+
width: 100%;
|
181 |
+
}
|
182 |
+
}
|
183 |
+
</style>
|
184 |
+
|
185 |
+
<div class="apt-section">
|
186 |
+
<div class="row">
|
187 |
+
<div class="widget-container">
|
188 |
+
<h1 class="heading-title size-default">
|
189 |
+
We suppose you’ve noticed the changes which happened with Auto Featured Image.
|
190 |
+
<br>Reading this tutorial you can get more information about new features.</h1>
|
191 |
+
</div>
|
192 |
+
|
193 |
+
<div class="widget-container">
|
194 |
+
<div class="divider">
|
195 |
+
<hr>
|
196 |
+
</div>
|
197 |
+
</div>
|
198 |
+
|
199 |
+
<div class="heading-container">
|
200 |
+
<img width="70" height="70" class="attachment-thumbnail size-thumbnail" alt=""
|
201 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/icon-6.png' ); ?>">
|
202 |
+
<h2 class="image-box-title">New image generation tools</h2>
|
203 |
+
<p class="image-box-description">You can generate featured images by single click as you did in the past.
|
204 |
+
But comparing with last release here appeared some new additional tools, so you can:</p>
|
205 |
+
</div>
|
206 |
+
<div class="widget-container">
|
207 |
+
<div class="text-editor clearfix">
|
208 |
+
<p>Bulk generate or delete featured images.</p>
|
209 |
+
</div>
|
210 |
+
</div>
|
211 |
+
<div class="widget-container">
|
212 |
+
<div class="image">
|
213 |
+
<img width="1024"
|
214 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/interface-1.png' ); ?>"
|
215 |
+
class="attachment-full size-full" alt="">
|
216 |
+
</div>
|
217 |
+
</div>
|
218 |
+
<div class="widget-container">
|
219 |
+
<div class="text-editor clearfix">
|
220 |
+
<p>Selective generation and deletion of featured images using filters
|
221 |
+
<a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&utm_content=license_page">(PRO)</a>.
|
222 |
+
</p>
|
223 |
+
</div>
|
224 |
+
</div>
|
225 |
+
<div class="widget-container">
|
226 |
+
<div class="image">
|
227 |
+
<img width="1024" height="320"
|
228 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/Sequence-01.gif' ); ?>"
|
229 |
+
class="attachment-large size-large" alt="">
|
230 |
+
</div>
|
231 |
+
</div>
|
232 |
+
<div class="widget-container">
|
233 |
+
<div class="text-editor clearfix"><p>Disable automatic post thumbnail generation.</p></div>
|
234 |
+
</div>
|
235 |
+
<div class="widget-container">
|
236 |
+
<div class="image">
|
237 |
+
<img width="500"
|
238 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/interface-2.png' ); ?>"
|
239 |
+
class="attachment-large size-large" alt="">
|
240 |
+
</div>
|
241 |
+
</div>
|
242 |
+
<div class="widget-container">
|
243 |
+
<div class="text-editor clearfix">
|
244 |
+
<p>If you do not want the plug-in settings to be saved, after
|
245 |
+
uninstalling, click “delete settings”
|
246 |
+
</p>
|
247 |
+
</div>
|
248 |
+
</div>
|
249 |
+
<div class="widget-container">
|
250 |
+
<div class="image">
|
251 |
+
<img width="500" height="145"
|
252 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/interface-3.png' ); ?>"
|
253 |
+
class="attachment-large size-large" alt="">
|
254 |
+
</div>
|
255 |
+
</div>
|
256 |
+
|
257 |
+
<div class="widget-container">
|
258 |
+
<div class="divider">
|
259 |
+
<hr>
|
260 |
+
</div>
|
261 |
+
</div>
|
262 |
+
|
263 |
+
<div class="heading-container">
|
264 |
+
<div class="image-box-wrapper">
|
265 |
+
<img width="70" height="70"
|
266 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/icon-2.png' ); ?>"
|
267 |
+
class="attachment-thumbnail size-thumbnail" alt="">
|
268 |
+
<div class="image-box-content"><h2 class="image-box-title">Bulk featured Images generation or unset in
|
269 |
+
post list</h2>
|
270 |
+
<p class="image-box-description">Use bulk actions when you set featured images. For example Generate
|
271 |
+
or Unset all of them.</p></div>
|
272 |
+
</div>
|
273 |
+
</div>
|
274 |
+
<div class="widget-container">
|
275 |
+
<div class="text-editor clearfix">
|
276 |
+
<p>Also we changed the Posts list interface in dashboard and added a
|
277 |
+
Column for displaying featured images. If any post stays without any featured image you’ll see this
|
278 |
+
from the posts list. Opening post is unnecessary, that’s why It makes the process easier.</p>
|
279 |
+
</div>
|
280 |
+
</div>
|
281 |
+
<div class="widget-container">
|
282 |
+
<div class="image">
|
283 |
+
<img width="1024"
|
284 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/Sequence-02.gif' ); ?>"
|
285 |
+
class="attachment-full size-full" alt="">
|
286 |
+
</div>
|
287 |
+
</div>
|
288 |
+
|
289 |
+
<div class="widget-container">
|
290 |
+
<div class="divider">
|
291 |
+
<hr>
|
292 |
+
</div>
|
293 |
+
</div>
|
294 |
+
|
295 |
+
<div class="heading-container">
|
296 |
+
<div class="image-box-wrapper">
|
297 |
+
<img width="70" height="70"
|
298 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/icon-3.png' ); ?>"
|
299 |
+
class="attachment-thumbnail size-thumbnail" alt="">
|
300 |
+
<div class="image-box-content"><h2 class="image-box-title">Featured Images selective generation </h2>
|
301 |
+
<p class="image-box-description">Execute custom generation or unset featured images applying this
|
302 |
+
tool for single or some posts.</p></div>
|
303 |
+
</div>
|
304 |
+
</div>
|
305 |
+
<div class="widget-container">
|
306 |
+
<div class="image">
|
307 |
+
<img width="500"
|
308 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/Sequence-03.png' ); ?>"
|
309 |
+
class="attachment-large size-large" alt="">
|
310 |
+
</div>
|
311 |
+
</div>
|
312 |
+
|
313 |
+
<div class="widget-container">
|
314 |
+
<div class="divider">
|
315 |
+
<hr>
|
316 |
+
</div>
|
317 |
+
</div>
|
318 |
+
|
319 |
+
<div class="heading-container">
|
320 |
+
<div class="image-box-wrapper">
|
321 |
+
<a href="http://cm-wp.com/apt/pricing/">
|
322 |
+
<img width="70" height="70"
|
323 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/icon-4.png' ); ?>"
|
324 |
+
class="attachment-thumbnail size-thumbnail" alt="">
|
325 |
+
</a>
|
326 |
+
<div class="image-box-content"><h2 class="image-box-title">Manual Featured Images Selection</h2>
|
327 |
+
<p class="image-box-description">Select featured images from the post images when you are in
|
328 |
+
dashboard’s Posts list. This feature is available for users who have PRO account.</p></div>
|
329 |
+
</div>
|
330 |
+
</div>
|
331 |
+
<div class="widget-container">
|
332 |
+
<div class="image">
|
333 |
+
<img width="1024"
|
334 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/Sequence-04.gif' ); ?>"
|
335 |
+
class="attachment-full size-full" alt=""></div>
|
336 |
+
</div>
|
337 |
+
<div class="widget-container">
|
338 |
+
<div class="text-editor clearfix">
|
339 |
+
<p>You can add featured images even if the picture is not uploaded to the
|
340 |
+
medialibrary but inserted into the post using an external link or shortcode.</p>
|
341 |
+
</div>
|
342 |
+
</div>
|
343 |
+
|
344 |
+
<div class="widget-container">
|
345 |
+
<div class="divider">
|
346 |
+
<hr>
|
347 |
+
</div>
|
348 |
+
</div>
|
349 |
+
|
350 |
+
<div class="heading-container">
|
351 |
+
<div class="image-box-wrapper">
|
352 |
+
<img width="70" height="70"
|
353 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/icon-1.png' ); ?>"
|
354 |
+
class="attachment-thumbnail size-thumbnail" alt="">
|
355 |
+
<div class="image-box-content">
|
356 |
+
<h2 class="image-box-title">Image search in Google, Unsplash, Pixabay</h2>
|
357 |
+
<p class="image-box-description">Search for images with Creative Commons license.</p></div>
|
358 |
+
</div>
|
359 |
+
</div>
|
360 |
+
<div class="widget-container">
|
361 |
+
<div class="text-editor clearfix">
|
362 |
+
<p>
|
363 |
+
<span style="font-weight: 400;">It appeared new tab in the Media Library => </span>
|
364 |
+
<i><span style="font-weight: 400;">Add from APT. </span></i>
|
365 |
+
<span style="font-weight: 400;">There you can find images using popular free stock sites: Google, Pixabay
|
366 |
+
<a href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&utm_content=license_page">(pro)</a>,
|
367 |
+
Unsplash <a
|
368 |
+
href="https://cm-wp.com/apt/pricing/?utm_source=wordpress.org&utm_content=license_page">(pro)</a>.
|
369 |
+
Just enter a search query, choose the image and insert it into the Media library by single click.
|
370 |
+
</span>
|
371 |
+
</p>
|
372 |
+
</div>
|
373 |
+
</div>
|
374 |
+
<div class="widget-container">
|
375 |
+
<div class="image">
|
376 |
+
<img width="1024"
|
377 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/Sequence-05.gif' ); ?>"
|
378 |
+
class="attachment-large size-large" alt="">
|
379 |
+
</div>
|
380 |
+
</div>
|
381 |
+
|
382 |
+
<div class="widget-container">
|
383 |
+
<div class="divider">
|
384 |
+
<hr>
|
385 |
+
</div>
|
386 |
+
</div>
|
387 |
+
|
388 |
+
<div class="heading-container">
|
389 |
+
<div class="image-box-wrapper">
|
390 |
+
<img width="70" height="70"
|
391 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/icon-5.png' ); ?>"
|
392 |
+
class="attachment-thumbnail size-thumbnail" alt="">
|
393 |
+
<div class="image-box-content">
|
394 |
+
<h2 class="image-box-title">Compatibility with Elementor and Gutenberg</h2>
|
395 |
+
<p class="image-box-description">Auto Featured Image is compatible with Classic Editor, Gutenberg
|
396 |
+
and Elementor plugins.</p>
|
397 |
+
</div>
|
398 |
+
</div>
|
399 |
+
</div>
|
400 |
+
<div class="widget-container">
|
401 |
+
<div class="image">
|
402 |
+
<img width="1024"
|
403 |
+
src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/about/Sequence-06.gif' ); ?>"
|
404 |
+
class="attachment-large size-large" alt="">
|
405 |
+
</div>
|
406 |
+
</div>
|
407 |
+
|
408 |
+
<div class="widget-container">
|
409 |
+
<div class="divider">
|
410 |
+
<hr>
|
411 |
+
</div>
|
412 |
+
</div>
|
413 |
+
|
414 |
+
<div class="heading-container">
|
415 |
+
<p>
|
416 |
+
<a href="https://cm-wp.com/apt/apt-f-a-q/?utm_medium=right_banner&utm_campaign=apt&utm_content=link"
|
417 |
+
target="_blank" rel="noopener">F.A.Q.</a>
|
418 |
+
</p>
|
419 |
+
<p>
|
420 |
+
<a href="https://forum.webcraftic.com/" target="_blank" rel="noopener">Get starting free support</a>
|
421 |
+
</p>
|
422 |
+
</div>
|
423 |
+
</div>
|
424 |
+
</div>
|
admin/views/tab-generate.php
CHANGED
@@ -1,215 +1,220 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @var array $data
|
4 |
-
*/
|
5 |
-
|
6 |
-
$stats = $data['stats'] ?? [];
|
7 |
-
$log = $data['log'] ?? [];
|
8 |
-
?>
|
9 |
-
|
10 |
-
<div class="wrap" id="wapt-generate-page">
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
<?php
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
<?php echo
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
$
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
</
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @var array $data
|
4 |
+
*/
|
5 |
+
|
6 |
+
$stats = $data['stats'] ?? [];
|
7 |
+
$log = $data['log'] ?? [];
|
8 |
+
?>
|
9 |
+
|
10 |
+
<div class="wrap" id="wapt-generate-page">
|
11 |
+
<div class="factory-bootstrap-454 factory-fontawesome-000">
|
12 |
+
<div class="row wapt-statistic-row">
|
13 |
+
<div class="wapt-generate-statistic">
|
14 |
+
<div class="wapt-chart-container">
|
15 |
+
<canvas id="wapt-main-chart" width="180" height="180"
|
16 |
+
data-no_featured_image="<?php echo esc_attr( $stats['no_featured_image'] ); ?>"
|
17 |
+
data-w_featured_image="<?php echo esc_attr( $stats['w_featured_image'] ); ?>"
|
18 |
+
data-errors="<?php echo esc_attr( $stats['error'] ); ?>"
|
19 |
+
style="display: block;">
|
20 |
+
</canvas>
|
21 |
+
<div id="wapt-overview-chart-percent" class="wapt-chart-percent">
|
22 |
+
<?php echo esc_attr( trim( $stats['featured_image_percent'] ) ); ?><span>%</span>
|
23 |
+
</div>
|
24 |
+
<p class="wapt-global-phrase">
|
25 |
+
<span class="wapt-total-percent"><?php echo esc_attr( $stats['featured_image_percent'] ); ?>%</span>
|
26 |
+
<?php esc_html_e( 'of your posts have a featured image', 'apt' ); ?>
|
27 |
+
</p>
|
28 |
+
</div>
|
29 |
+
<div class="wapt-fillters-form">
|
30 |
+
<div class="wapt-row0">
|
31 |
+
<div class="row">
|
32 |
+
<div id="wapt-overview-chart-legend">
|
33 |
+
<ul class="wapt-doughnut-legend">
|
34 |
+
<li>
|
35 |
+
<span style="background-color:#d6d6d6"></span>
|
36 |
+
<?php echo esc_html__( 'Without featured image', 'apt' ); ?> -
|
37 |
+
<span class="wapt-num"
|
38 |
+
id="wapt-unset-num"><?php echo intval( $stats['no_featured_image'] ); ?></span>
|
39 |
+
</li>
|
40 |
+
<li>
|
41 |
+
<span style="background-color:#8bc34a"></span>
|
42 |
+
<?php echo esc_html__( 'With featured image', 'apt' ); ?> -
|
43 |
+
<span class="wapt-num"
|
44 |
+
id="wapt-generated-num"><?php echo intval( $stats['w_featured_image'] ); ?></span>
|
45 |
+
</li>
|
46 |
+
</ul>
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
</div>
|
50 |
+
<div class="wapt-row1">
|
51 |
+
<?php
|
52 |
+
if ( \WAPT_Plugin::app()->is_premium() ) {
|
53 |
+
do_action( 'wapt/filter_form_print' );
|
54 |
+
} else {
|
55 |
+
$stati = get_post_stati( [
|
56 |
+
'_builtin' => true,
|
57 |
+
'show_in_admin_status_list' => true,
|
58 |
+
], 'objects' );
|
59 |
+
|
60 |
+
$post_types = get_post_types( [
|
61 |
+
'public' => true,
|
62 |
+
'publicly_queryable' => 1,
|
63 |
+
], 'objects', 'or' );
|
64 |
+
unset( $post_types['attachment'] ); // удалим attachment
|
65 |
+
|
66 |
+
$categories = get_categories( [
|
67 |
+
'taxonomy' => 'category',
|
68 |
+
'type' => 'post',
|
69 |
+
'orderby' => 'name',
|
70 |
+
'order' => 'ASC',
|
71 |
+
] );
|
72 |
+
?>
|
73 |
+
<div class="row wapt-filter-row">
|
74 |
+
<div class="col-md-2">
|
75 |
+
<label for="filter_posttype"
|
76 |
+
class="apt-filter-label"><?php esc_html_e( 'Post type', 'apt' ); ?></label>
|
77 |
+
</div>
|
78 |
+
<div class="col-md-10">
|
79 |
+
<select name="filter_posttype" id="filter_posttype" class="apt-filter-input">
|
80 |
+
<option value="post"><?php echo esc_html__( 'Posts', 'apt' ); ?></option>
|
81 |
+
<option value="page"><?php echo esc_html__( 'Pages', 'apt' ); ?></option>
|
82 |
+
</select>
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
|
86 |
+
<div class="row wapt-filter-row wapt-pro-row">
|
87 |
+
<div class="col-md-2">
|
88 |
+
<label for="filter_poststatus"
|
89 |
+
class="apt-filter-label"><?php esc_html_e( 'Post status', 'aptp' ); ?></label>
|
90 |
+
</div>
|
91 |
+
<div class="col-md-10">
|
92 |
+
<select name="filter_poststatus" id="filter_poststatus" class="apt-filter-input"
|
93 |
+
tabindex="-1">
|
94 |
+
<option value=""> </option>
|
95 |
+
<?php
|
96 |
+
foreach ( $stati as $stat ) {
|
97 |
+
echo '<option value="' . esc_attr( $stat->name ) . '">' . esc_html( $stat->label ) . '</option>';
|
98 |
+
}
|
99 |
+
?>
|
100 |
+
</select><span> </span>
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
|
104 |
+
<div class="row wapt-filter-row wapt-pro-row">
|
105 |
+
<div class="col-md-2">
|
106 |
+
<label for="filter_postcategory"
|
107 |
+
class="apt-filter-label"><?php esc_html_e( 'Post category', 'aptp' ); ?></label>
|
108 |
+
</div>
|
109 |
+
<div class="col-md-10">
|
110 |
+
<select name="filter_postcategory" id="filter_postcategory" class="apt-filter-input"
|
111 |
+
tabindex="-1">
|
112 |
+
<option value=""> </option>
|
113 |
+
<?php
|
114 |
+
foreach ( $categories as $cat ) {
|
115 |
+
echo '<option value="' . esc_attr( $cat->term_id ) . '">' . esc_html( $cat->name ) . ' (' . (int) $cat->count . ')</option>';
|
116 |
+
}
|
117 |
+
?>
|
118 |
+
</select><span> </span>
|
119 |
+
</div>
|
120 |
+
</div>
|
121 |
+
|
122 |
+
<div class="row wapt-filter-row wapt-pro-row">
|
123 |
+
<div class="col-md-2">
|
124 |
+
<label for="filter_startdate"
|
125 |
+
class="apt-filter-label"><?php esc_html_e( 'Date from', 'aptp' ); ?></label>
|
126 |
+
</div>
|
127 |
+
<div class="col-md-10">
|
128 |
+
<input type="text" name="filter_startdate" id="filter_startdate"
|
129 |
+
class="apt-filter-input datepicker" tabindex="-1"><span> </span>
|
130 |
+
<label for="filter_enddate"
|
131 |
+
class="apt-filter-label"><?php esc_html_e( 'to', 'aptp' ); ?></label>
|
132 |
+
<input type="text" name="filter_enddate" id="filter_enddate"
|
133 |
+
class="apt-filter-input datepicker" tabindex="-1"><span> </span>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
<?php } ?>
|
137 |
+
</div>
|
138 |
+
<div class="wapt-row2">
|
139 |
+
<div class="row wapt-filter-row">
|
140 |
+
<div class="wapt-statistic-buttons-wrap">
|
141 |
+
<div>
|
142 |
+
<button class="hide-if-no-js wapt-generate-button"
|
143 |
+
name="generate-post-thumbnails"
|
144 |
+
id="generate-post-thumbnails">
|
145 |
+
<?php esc_attr_e( 'Generate Featured images', 'apt' ); ?>
|
146 |
+
</button>
|
147 |
+
<button class="hide-if-no-js wapt-unset-button"
|
148 |
+
name="delete-post-thumbnails"
|
149 |
+
id="delete-post-thumbnails">
|
150 |
+
<?php esc_attr_e( 'Delete Featured images', 'apt' ); ?>
|
151 |
+
</button>
|
152 |
+
</div>
|
153 |
+
|
154 |
+
</div>
|
155 |
+
</div>
|
156 |
+
</div>
|
157 |
+
|
158 |
+
</div>
|
159 |
+
</div>
|
160 |
+
<div id="genpostthumbsbar" class="wapt-genpostthumbsbar"
|
161 |
+
style="position:relative;height:40px;display: none;">
|
162 |
+
<div id="genpostthumbsbar-percent"
|
163 |
+
style="position:absolute;left:50%;top:50%;margin-left:-25px;height:25px;margin-top:-9px;font-weight:bold;text-align:center;"></div>
|
164 |
+
</div>
|
165 |
+
<div class="wapt-statistic-message">
|
166 |
+
<p><?php wp_kses_post( 'Note: Thumbnails won\'t be generated for posts that already have post thumbnail or <strong><em>skip_post_thumb</em></strong> custom meta field.', 'apt' ); ?></p>
|
167 |
+
</div>
|
168 |
+
</div>
|
169 |
+
<div class="row wapt-generation-progress">
|
170 |
+
<div class="wbcr-factory-page-group-header" style="margin-bottom:0;">
|
171 |
+
<strong><?php echo esc_html__( 'Generation log', 'apt' ); ?></strong>
|
172 |
+
<p><?php echo esc_html__( 'Generation log shows the last 100 generated images.', 'apt' ); ?></p>
|
173 |
+
</div>
|
174 |
+
<div class="wapt-table-container">
|
175 |
+
<table class="wapt-table">
|
176 |
+
<thead>
|
177 |
+
<tr>
|
178 |
+
<th class="wapt-image-td"></th>
|
179 |
+
<th class="wapt-title-td"><?php echo esc_html__( 'Post title', 'apt' ); ?></th>
|
180 |
+
<th><?php echo esc_html__( 'Image size', 'apt' ); ?></th>
|
181 |
+
<th><?php echo esc_html__( 'Generation type', 'apt' ); ?></th>
|
182 |
+
<th><?php echo esc_html__( 'Status', 'apt' ); ?></th>
|
183 |
+
</tr>
|
184 |
+
</thead>
|
185 |
+
<tbody>
|
186 |
+
<?php
|
187 |
+
foreach ( $log as $item ) :
|
188 |
+
if ( isset( $item['error_msg'] ) && $item['error_msg'] ) :
|
189 |
+
?>
|
190 |
+
<tr class="flash wapt-table-item wapt-row-id-<?php echo esc_attr( $item['post_id'] ); ?> wapt-error">
|
191 |
+
<td class="wapt-image-td"></td>
|
192 |
+
<td class="wapt-title-td">
|
193 |
+
<a href="<?php echo esc_url_raw( $item['url'] ); ?>"
|
194 |
+
target="_blank"><?php echo esc_html( $item['title'] ); ?></a>
|
195 |
+
</td>
|
196 |
+
<td></td>
|
197 |
+
<td><?php echo esc_html( $item['type'] ); ?></td>
|
198 |
+
<td><?php echo esc_html( $item['error_msg'] ); ?></td>
|
199 |
+
</tr>
|
200 |
+
<?php else : ?>
|
201 |
+
<tr class="flash wapt-table-item wapt-row-id-<?php echo intval( $item['post_id'] ); ?>">
|
202 |
+
<td class="wapt-image-td">
|
203 |
+
<img height="50" src="<?php echo esc_url_raw( $item['thumbnail_url'] ); ?>">
|
204 |
+
</td>
|
205 |
+
<td class="wapt-title-td">
|
206 |
+
<a href="<?php echo esc_url_raw( $item['url'] ); ?>" target="_blank">
|
207 |
+
<?php echo esc_html( $item['title'] ); ?></a>
|
208 |
+
</td>
|
209 |
+
<td><?php echo esc_html( $item['image_size'] ); ?></td>
|
210 |
+
<td><?php echo esc_html( $item['type'] ); ?></td>
|
211 |
+
<td><?php echo esc_html( $item['status'] ); ?></td>
|
212 |
+
</tr>
|
213 |
+
<?php endif; ?>
|
214 |
+
<?php endforeach; ?>
|
215 |
+
</tbody>
|
216 |
+
</table>
|
217 |
+
</div>
|
218 |
+
</div>
|
219 |
+
</div>
|
220 |
+
</div>
|
admin/views/tab-license.php
CHANGED
@@ -1,150 +1,150 @@
|
|
1 |
-
<div class="wrap">
|
2 |
-
|
3 |
-
<?php wp_nonce_field( 'license' ); ?>
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
<?php echo $this->get_plan_description() ?>
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
<?php if ( $this->get_license_type()
|
19 |
-
|
20 |
-
|
21 |
-
<span class="btn btn-gold btn-inner-wrap">
|
22 |
-
<?php printf(
|
23 |
-
</span>
|
24 |
-
|
25 |
-
|
26 |
-
<?php endif; ?>
|
27 |
-
|
28 |
-
<?php if ( $this->is_premium ): ?>
|
29 |
-
|
30 |
-
|
31 |
-
<?php
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
<?php
|
36 |
-
|
37 |
-
<?php endif; ?>
|
38 |
-
|
39 |
-
<?php echo ucfirst( $this->get_plan() ); ?>
|
40 |
-
|
41 |
-
<?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
|
42 |
-
|
43 |
-
(<?php printf(
|
44 |
-
)
|
45 |
-
</span>
|
46 |
-
<?php endif; ?>
|
47 |
-
|
48 |
-
<?php if ( $this->is_premium ): ?>
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
<?php endif; ?>
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
<?php if ( $this->is_premium && $this->premium_has_subscription ): ?>
|
60 |
-
|
61 |
-
<?php
|
62 |
-
|
63 |
-
<?php endif; ?>
|
64 |
-
|
65 |
-
<?php if ( $this->get_license_type()
|
66 |
-
|
67 |
-
<?php printf(
|
68 |
-
|
69 |
-
<?php endif; ?>
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
<span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
|
75 |
-
<span class="license-value-name"><?php
|
76 |
-
</td>-->
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
<?php if ( $this->is_premium ) : ?>
|
82 |
-
|
83 |
-
<span class="license-value">
|
84 |
-
<?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
|
85 |
-
<?php
|
86 |
-
<?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
|
87 |
-
|
88 |
-
|
89 |
-
<?php endif; ?>
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
<?php if ( $this->is_premium ): ?>
|
95 |
-
|
96 |
-
<?php if ( $this->get_license_type()
|
97 |
-
|
98 |
-
|
99 |
-
<?php else: ?>
|
100 |
-
|
101 |
-
<?php
|
102 |
-
if ( $this->premium_license->is_lifetime() ) {
|
103 |
-
echo 'infiniate';
|
104 |
-
} else {
|
105 |
-
echo $this->get_expiration_days();
|
106 |
-
}
|
107 |
-
?>
|
108 |
-
<small> <?php
|
109 |
-
</span>
|
110 |
-
|
111 |
-
<?php endif; ?>
|
112 |
-
|
113 |
-
<?php endif; ?>
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
<?php if ( $this->is_premium ): ?>
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
<?php endif; ?>
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
<?php if ( $this->is_premium ): ?>
|
136 |
-
|
137 |
-
<?php printf(
|
138 |
-
|
139 |
-
<?php else: ?>
|
140 |
-
|
141 |
-
<?php printf(
|
142 |
-
|
143 |
-
<?php endif; ?>
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
</div>
|
1 |
+
<div class="wrap">
|
2 |
+
<div class="factory-bootstrap-454 factory-fontawesome-000">
|
3 |
+
<?php wp_nonce_field( 'license' ); ?>
|
4 |
+
<div id="wapt-license-wrapper"
|
5 |
+
data-loader="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif' ); ?>"
|
6 |
+
data-plugin="<?php echo esc_attr( get_class( $this->plugin ) ); ?>">
|
7 |
+
|
8 |
+
<div class="factory-bootstrap-413 onp-page-wrap <?php echo esc_attr( $this->get_license_type() ); ?>-license-manager-content"
|
9 |
+
id="license-manager">
|
10 |
+
<div>
|
11 |
+
<h3><?php printf( esc_html__( 'Activate %s', 'apt' ), esc_html( $this->plan_name ) ); ?></h3>
|
12 |
+
<?php echo esc_html( $this->get_plan_description() ); ?>
|
13 |
+
</div>
|
14 |
+
<br>
|
15 |
+
|
16 |
+
<div class="onp-container">
|
17 |
+
<div class="license-details">
|
18 |
+
<?php if ( $this->get_license_type() === 'free' ) : ?>
|
19 |
+
<a href="<?php echo esc_url_raw( $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ); ?>"
|
20 |
+
class="purchase-premium" target="_blank" rel="noopener">
|
21 |
+
<span class="btn btn-gold btn-inner-wrap">
|
22 |
+
<?php printf( esc_html__( 'Upgrade to Premium', 'apt' ), esc_html( $this->premium->get_price() ) ); ?>
|
23 |
+
</span>
|
24 |
+
</a>
|
25 |
+
<p><?php printf( esc_html__( 'Your current license for %1$s:', 'apt' ), esc_html( $this->plugin->getPluginTitle() ) ); ?></p>
|
26 |
+
<?php endif; ?>
|
27 |
+
<div class="license-details-block <?php echo esc_html( $this->get_license_type() ); ?>-details-block">
|
28 |
+
<?php if ( $this->is_premium ) : ?>
|
29 |
+
<a data-action="deactivate" href="#"
|
30 |
+
class="btn btn-default btn-small license-delete-button wapt-control-btn">
|
31 |
+
<?php esc_html_e( 'Delete Key', 'apt' ); ?>
|
32 |
+
</a>
|
33 |
+
<a data-action="sync" href="#"
|
34 |
+
class="btn btn-default btn-small license-synchronization-button wapt-control-btn">
|
35 |
+
<?php esc_html_e( 'Synchronization', 'apt' ); ?>
|
36 |
+
</a>
|
37 |
+
<?php endif; ?>
|
38 |
+
<h3>
|
39 |
+
<?php echo esc_html( ucfirst( $this->get_plan() ) ); ?>
|
40 |
+
|
41 |
+
<?php if ( $this->is_premium && $this->premium_has_subscription ) : ?>
|
42 |
+
<span style="font-size: 15px;">
|
43 |
+
(<?php printf( esc_html__( 'Automatic renewal, every %s', '' ), esc_attr( $this->get_billing_cycle_readable() ) ); ?>
|
44 |
+
)
|
45 |
+
</span>
|
46 |
+
<?php endif; ?>
|
47 |
+
</h3>
|
48 |
+
<?php if ( $this->is_premium ) : ?>
|
49 |
+
<div class="license-key-identity">
|
50 |
+
<code><?php echo esc_attr( $this->get_hidden_license_key() ); ?></code>
|
51 |
+
</div>
|
52 |
+
<?php endif; ?>
|
53 |
+
<div class="license-key-description">
|
54 |
+
<?php if ( ! $this->is_premium ) : ?>
|
55 |
+
<p><?php esc_html_e( 'Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'apt' ); ?></p>
|
56 |
+
<?php else : ?>
|
57 |
+
<p><?php esc_html_e( 'Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', 'apt' ); ?></p>
|
58 |
+
<?php endif; ?>
|
59 |
+
<?php if ( $this->is_premium && $this->premium_has_subscription ) : ?>
|
60 |
+
<p class="activate-trial-hint">
|
61 |
+
<?php esc_html_e( 'You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wapt-control-btn" href="#">cancel subscription</a>', 'apt' ); ?>
|
62 |
+
</p>
|
63 |
+
<?php endif; ?>
|
64 |
+
|
65 |
+
<?php if ( $this->get_license_type() === 'trial' ) : ?>
|
66 |
+
<p class="activate-error-hint">
|
67 |
+
<?php printf( esc_html__( 'Your license has expired, please extend the license to get updates and support.', 'apt' ), '' ); ?>
|
68 |
+
</p>
|
69 |
+
<?php endif; ?>
|
70 |
+
</div>
|
71 |
+
<table class="license-params" colspacing="0" colpadding="0">
|
72 |
+
<tr>
|
73 |
+
<!--<td class="license-param license-param-domain">
|
74 |
+
<span class="license-value"><?php echo esc_attr( $_SERVER['SERVER_NAME'] ); ?></span>
|
75 |
+
<span class="license-value-name"><?php esc_html_e( 'domain', 'apt' ); ?></span>
|
76 |
+
</td>-->
|
77 |
+
<td class="license-param license-param-days">
|
78 |
+
<span class="license-value"><?php echo esc_html( $this->get_plan() ); ?></span>
|
79 |
+
<span class="license-value-name"><?php esc_html_e( 'plan', 'apt' ); ?></span>
|
80 |
+
</td>
|
81 |
+
<?php if ( $this->is_premium ) : ?>
|
82 |
+
<td class="license-param license-param-sites">
|
83 |
+
<span class="license-value">
|
84 |
+
<?php echo esc_attr( $this->premium_license->get_count_active_sites() ); ?>
|
85 |
+
<?php esc_html_e( 'of', 'apt' ); ?>
|
86 |
+
<?php echo esc_attr( $this->premium_license->get_sites_quota() ); ?></span>
|
87 |
+
<span class="license-value-name"><?php esc_html_e( 'active sites', 'apt' ); ?></span>
|
88 |
+
</td>
|
89 |
+
<?php endif; ?>
|
90 |
+
<td class="license-param license-param-version">
|
91 |
+
<span class="license-value"><?php echo esc_html( $this->plugin->getPluginVersion() ); ?></span>
|
92 |
+
<span class="license-value-name"><span><?php esc_html_e( 'version', 'apt' ); ?></span></span>
|
93 |
+
</td>
|
94 |
+
<?php if ( $this->is_premium ) : ?>
|
95 |
+
<td class="license-param license-param-days">
|
96 |
+
<?php if ( $this->get_license_type() === 'trial' ) : ?>
|
97 |
+
<span class="license-value"><?php esc_html_e( 'EXPIRED!', 'apt' ); ?></span>
|
98 |
+
<span class="license-value-name"><?php esc_html_e( 'please update the key', 'apt' ); ?></span>
|
99 |
+
<?php else : ?>
|
100 |
+
<span class="license-value">
|
101 |
+
<?php
|
102 |
+
if ( $this->premium_license->is_lifetime() ) {
|
103 |
+
echo 'infiniate';
|
104 |
+
} else {
|
105 |
+
echo esc_html( $this->get_expiration_days() );
|
106 |
+
}
|
107 |
+
?>
|
108 |
+
<small> <?php esc_html_e( 'day(s)', 'apt' ); ?></small>
|
109 |
+
</span>
|
110 |
+
<span class="license-value-name"><?php esc_html_e( 'remained', 'apt' ); ?></span>
|
111 |
+
<?php endif; ?>
|
112 |
+
</td>
|
113 |
+
<?php endif; ?>
|
114 |
+
</tr>
|
115 |
+
</table>
|
116 |
+
</div>
|
117 |
+
</div>
|
118 |
+
<div class="license-input">
|
119 |
+
<form action="" method="post">
|
120 |
+
<?php if ( $this->is_premium ) : ?>
|
121 |
+
<p><?php esc_html_e( 'Have a key to activate the premium version? Paste it here:', 'apt' ); ?><p>
|
122 |
+
<?php else : ?>
|
123 |
+
<p><?php esc_html_e( 'Have a key to activate the plugin? Paste it here:', 'apt' ); ?>
|
124 |
+
<p>
|
125 |
+
<?php endif; ?>
|
126 |
+
<div class="license-key-wrap">
|
127 |
+
<input type="text" id="license-key" name="licensekey" value=""
|
128 |
+
class="form-control"/>
|
129 |
+
<button data-action="activate" class="btn btn-default wapt-control-btn"
|
130 |
+
type="button"
|
131 |
+
id="license-submit">
|
132 |
+
<?php esc_html_e( 'Submit Key', 'apt' ); ?>
|
133 |
+
</button>
|
134 |
+
</div>
|
135 |
+
<?php if ( $this->is_premium ) : ?>
|
136 |
+
<p style="margin-top: 10px;">
|
137 |
+
<?php printf( wp_kses_post( '<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'apt' ), esc_url_raw( $this->plugin->get_support()->get_pricing_url( true, 'license_page' ) ) ); ?>
|
138 |
+
</p>
|
139 |
+
<?php else : ?>
|
140 |
+
<p style="margin-top: 10px;">
|
141 |
+
<?php printf( wp_kses_post( 'Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'apt' ), 'https://users.freemius.com/password/recover' ); ?>
|
142 |
+
</p>
|
143 |
+
<?php endif; ?>
|
144 |
+
</form>
|
145 |
+
</div>
|
146 |
+
</div>
|
147 |
+
</div>
|
148 |
+
</div>
|
149 |
+
</div>
|
150 |
+
</div>
|
auto-post-thumbnail.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Auto Featured Image (Auto Post Thumbnail)
|
4 |
Plugin URI: https://cm-wp.com/apt
|
5 |
Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
|
6 |
-
Version: 3.9.
|
7 |
Author: Creative Motion <support@cm-wp.com>
|
8 |
Author URI: https://cm-wp.com
|
9 |
Text Domain: apt
|
@@ -89,28 +89,28 @@ $plugin_info = [
|
|
89 |
],
|
90 |
|
91 |
'load_factory_modules' => [
|
92 |
-
[ 'libs/factory/bootstrap', '
|
93 |
-
[ 'libs/factory/forms', '
|
94 |
-
[ 'libs/factory/pages', '
|
95 |
-
[ 'libs/factory/templates', '
|
96 |
-
[ 'libs/factory/freemius', '
|
97 |
-
[ 'libs/factory/adverts', '
|
98 |
-
[ 'libs/factory/feedback', '
|
99 |
-
[ 'libs/factory/logger', '
|
100 |
],
|
101 |
];
|
102 |
|
103 |
-
$wapt_compatibility = new
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
]
|
113 |
-
|
114 |
);
|
115 |
|
116 |
/**
|
@@ -121,8 +121,6 @@ if ( ! $wapt_compatibility->check() ) {
|
|
121 |
return;
|
122 |
}
|
123 |
|
124 |
-
/********************************************/
|
125 |
-
|
126 |
define( 'WAPT_PLUGIN_ACTIVE', true );
|
127 |
define( 'WAPT_PLUGIN_VERSION', $wapt_compatibility->get_plugin_version() );
|
128 |
|
@@ -151,15 +149,15 @@ require_once WAPT_PLUGIN_DIR . '/includes/image-search/boot.php';
|
|
151 |
|
152 |
try {
|
153 |
new WAPT_Plugin(
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
]
|
161 |
-
|
162 |
-
|
163 |
} catch ( Exception $e ) {
|
164 |
global $wapt_exception;
|
165 |
|
@@ -167,16 +165,14 @@ try {
|
|
167 |
// Plugin wasn't initialized due to an error
|
168 |
define( 'WAPT_PLUGIN_THROW_ERROR', true );
|
169 |
|
|
|
|
|
|
|
170 |
function wapt_exception_notice() {
|
171 |
global $wapt_exception;
|
172 |
|
173 |
-
$error = sprintf(
|
174 |
-
|
175 |
-
'Auto Featured Image',
|
176 |
-
$wapt_exception->getMessage(),
|
177 |
-
$wapt_exception->getCode()
|
178 |
-
);
|
179 |
-
echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
|
180 |
}
|
181 |
|
182 |
add_action( 'admin_notices', 'wapt_exception_notice' );
|
3 |
Plugin Name: Auto Featured Image (Auto Post Thumbnail)
|
4 |
Plugin URI: https://cm-wp.com/apt
|
5 |
Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
|
6 |
+
Version: 3.9.8
|
7 |
Author: Creative Motion <support@cm-wp.com>
|
8 |
Author URI: https://cm-wp.com
|
9 |
Text Domain: apt
|
89 |
],
|
90 |
|
91 |
'load_factory_modules' => [
|
92 |
+
[ 'libs/factory/bootstrap', 'factory_bootstrap_454', 'admin' ],
|
93 |
+
[ 'libs/factory/forms', 'factory_forms_450', 'admin' ],
|
94 |
+
[ 'libs/factory/pages', 'factory_pages_452', 'admin' ],
|
95 |
+
[ 'libs/factory/templates', 'factory_templates_106', 'admin' ],
|
96 |
+
[ 'libs/factory/freemius', 'factory_freemius_140', 'all' ],
|
97 |
+
[ 'libs/factory/adverts', 'factory_adverts_130', 'admin' ],
|
98 |
+
[ 'libs/factory/feedback', 'factory_feedback_114', 'admin' ],
|
99 |
+
[ 'libs/factory/logger', 'factory_logger_118', 'all' ],
|
100 |
],
|
101 |
];
|
102 |
|
103 |
+
$wapt_compatibility = new Wbcr_Factory453_Requirements(
|
104 |
+
__FILE__,
|
105 |
+
array_merge(
|
106 |
+
$plugin_info,
|
107 |
+
[
|
108 |
+
'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
|
109 |
+
'required_php_version' => '7.0',
|
110 |
+
'required_wp_version' => '4.8.0',
|
111 |
+
// 'required_clearfy_check_component' => false
|
112 |
]
|
113 |
+
)
|
114 |
);
|
115 |
|
116 |
/**
|
121 |
return;
|
122 |
}
|
123 |
|
|
|
|
|
124 |
define( 'WAPT_PLUGIN_ACTIVE', true );
|
125 |
define( 'WAPT_PLUGIN_VERSION', $wapt_compatibility->get_plugin_version() );
|
126 |
|
149 |
|
150 |
try {
|
151 |
new WAPT_Plugin(
|
152 |
+
__FILE__,
|
153 |
+
array_merge(
|
154 |
+
$plugin_info,
|
155 |
+
[
|
156 |
+
'plugin_version' => WAPT_PLUGIN_VERSION,
|
157 |
+
'plugin_text_domain' => $wapt_compatibility->get_text_domain(),
|
158 |
]
|
159 |
+
)
|
160 |
+
);
|
161 |
} catch ( Exception $e ) {
|
162 |
global $wapt_exception;
|
163 |
|
165 |
// Plugin wasn't initialized due to an error
|
166 |
define( 'WAPT_PLUGIN_THROW_ERROR', true );
|
167 |
|
168 |
+
/**
|
169 |
+
* Exception notice
|
170 |
+
*/
|
171 |
function wapt_exception_notice() {
|
172 |
global $wapt_exception;
|
173 |
|
174 |
+
$error = sprintf( 'The %s plugin has stopped. <b>Error:</b> %s Code: %s', 'Auto Featured Image', $wapt_exception->getMessage(), $wapt_exception->getCode() );
|
175 |
+
echo '<div class="notice notice-error"><p>' . wp_kses_post( $error ) . '</p></div>';
|
|
|
|
|
|
|
|
|
|
|
176 |
}
|
177 |
|
178 |
add_action( 'admin_notices', 'wapt_exception_notice' );
|
fonts/{Arial.ttf → arial.ttf}
RENAMED
File without changes
|
fonts/{Segoeui.ttf → segoeui.ttf}
RENAMED
File without changes
|
fonts/{Tahoma.ttf → tahoma.ttf}
RENAMED
File without changes
|
includes/class-apt.php
CHANGED
@@ -60,17 +60,17 @@ class AutoPostThumbnails {
|
|
60 |
$this->plugin = \WAPT_Plugin::app();
|
61 |
|
62 |
$this->sources = [
|
63 |
-
'google' => WAPT_PLUGIN_SLUG,
|
64 |
-
'recommend' => '',
|
65 |
-
'pixabay' => '',
|
66 |
-
'unsplash' => '',
|
67 |
-
];
|
68 |
-
if ( \WAPT_Plugin::app()->is_premium() ) {
|
69 |
-
$this->sources = [
|
70 |
-
'recommend' => '',
|
71 |
'google' => WAPT_PLUGIN_SLUG,
|
|
|
72 |
'pixabay' => '',
|
73 |
'unsplash' => '',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
];
|
75 |
}
|
76 |
|
@@ -84,7 +84,7 @@ class AutoPostThumbnails {
|
|
84 |
* @return AutoPostThumbnails
|
85 |
*/
|
86 |
public static function instance() {
|
87 |
-
if ( static::$instance
|
88 |
static::$instance = new self();
|
89 |
}
|
90 |
|
@@ -95,7 +95,7 @@ class AutoPostThumbnails {
|
|
95 |
* Init includes.
|
96 |
*/
|
97 |
private function init_includes() {
|
98 |
-
//require __DIR__ . '/src/class.template.php';
|
99 |
}
|
100 |
|
101 |
/**
|
@@ -113,17 +113,17 @@ class AutoPostThumbnails {
|
|
113 |
if ( $is_auto_upload && \WAPT_Plugin::app()->is_premium() ) {
|
114 |
add_filter( 'wp_insert_post_data', [ $this, 'auto_upload' ], 10, 2 );
|
115 |
|
116 |
-
// This hook handle update post via rest api. for example
|
117 |
foreach ( $allowed_import_post_types as $post_type ) {
|
118 |
add_action( "rest_after_insert_{$post_type}", [ $this, 'auto_upload' ], 10, 2 );
|
119 |
}
|
120 |
}
|
121 |
|
122 |
if ( $is_auto_generate ) {
|
123 |
-
//add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
|
124 |
add_action( 'save_post', [ $this, 'save_post' ], 10, 3 );
|
125 |
|
126 |
-
// This hook handle update post via rest api. for example
|
127 |
foreach ( $this->allowed_generate_post_types as $post_type ) {
|
128 |
add_action( "rest_after_insert_{$post_type}", [ $this, 'rest_after_insert' ], 10, 3 );
|
129 |
}
|
@@ -141,9 +141,9 @@ class AutoPostThumbnails {
|
|
141 |
}
|
142 |
|
143 |
private function ajax_actions() {
|
144 |
-
//AJAX actions
|
145 |
-
add_action( 'wp_ajax_generatepostthumbnail', [ $this, 'ajax_process_post'
|
146 |
-
add_action( 'wp_ajax_delete_post_thumbnails', [ $this, 'ajax_delete_post_thumbnails'
|
147 |
add_action( 'wp_ajax_get-posts-ids', [ $this, 'get_posts_ids' ] );
|
148 |
add_action( 'wp_ajax_apt_replace_thumbnail', [ $this, 'apt_replace_thumbnail' ] );
|
149 |
add_action( 'wp_ajax_apt_get_thumbnail', [ $this, 'apt_get_thumbnail' ] );
|
@@ -151,7 +151,7 @@ class AutoPostThumbnails {
|
|
151 |
add_action( 'wp_ajax_upload_to_library', [ $this, 'upload_to_library' ] );
|
152 |
add_action( 'wp_ajax_wapt_upload_font', [ $this, 'upload_font' ] );
|
153 |
|
154 |
-
//APIs
|
155 |
add_action( 'wp_ajax_apt_api_google', [ $this, 'apt_api_google' ] );
|
156 |
add_action( 'wp_ajax_apt_check_api_key', [ $this, 'apt_check_api_key' ] );
|
157 |
add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
|
@@ -174,7 +174,7 @@ class AutoPostThumbnails {
|
|
174 |
}
|
175 |
check_ajax_referer( 'get-posts' );
|
176 |
|
177 |
-
$generate = \WAPT_Plugin::app()->getPopulateOption(
|
178 |
|
179 |
$this->plugin->logger->info( "START generate in mode: {$generate}" );
|
180 |
|
@@ -190,13 +190,13 @@ class AutoPostThumbnails {
|
|
190 |
break;
|
191 |
}
|
192 |
|
193 |
-
$has_thumb = (
|
194 |
-
$type =
|
195 |
if ( \WAPT_Plugin::app()->is_premium() ) {
|
196 |
-
$status =
|
197 |
-
$category =
|
198 |
-
$date_start =
|
199 |
-
$date_end =
|
200 |
$date_start = $date_start ? \DateTime::createFromFormat( 'd.m.Y', $date_start )->format( 'd.m.Y' ) : 0;
|
201 |
$date_end = $date_end ? \DateTime::createFromFormat( 'd.m.Y', $date_end )->setTime( 23, 59 )->format( 'd.m.Y H:i' ) : 0;
|
202 |
// Get id's of the posts that satisfy the filters
|
@@ -211,8 +211,9 @@ class AutoPostThumbnails {
|
|
211 |
$ids = [];
|
212 |
foreach ( $query->posts as $post ) {
|
213 |
$ids[] = $post->ID;
|
214 |
-
|
215 |
-
/*
|
|
|
216 |
$images = new \WBCR\APT\PostImages( $post->ID );
|
217 |
if ( ( $images->is_images() && $images->count_images() ) || $auto_generate ) {
|
218 |
$ids[] = $post->ID;
|
@@ -220,13 +221,14 @@ class AutoPostThumbnails {
|
|
220 |
} else //иначе он хочет удалить тамбнэйлы
|
221 |
{
|
222 |
$ids[] = $post->ID;
|
223 |
-
}
|
|
|
224 |
}
|
225 |
$ids = implode( ',', $ids );
|
226 |
} else {
|
227 |
-
$ids =
|
228 |
}
|
229 |
-
echo $ids;
|
230 |
|
231 |
$this->plugin->logger->info( "Queried posts IDs: {$ids}" );
|
232 |
|
@@ -286,7 +288,7 @@ class AutoPostThumbnails {
|
|
286 |
set_time_limit( 60 );
|
287 |
|
288 |
// Pass on the id to our 'publish' callback function.
|
289 |
-
echo delete_post_thumbnail( $id );
|
290 |
|
291 |
die( - 1 );
|
292 |
}
|
@@ -298,13 +300,13 @@ class AutoPostThumbnails {
|
|
298 |
*/
|
299 |
public function notice_auto_generation() {
|
300 |
?>
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
<?php
|
309 |
}
|
310 |
|
@@ -312,7 +314,7 @@ class AutoPostThumbnails {
|
|
312 |
*
|
313 |
*/
|
314 |
public function hide_notice_auto_generation() {
|
315 |
-
if ( isset( $_POST['action'] ) && $_POST['action']
|
316 |
\WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
|
317 |
}
|
318 |
}
|
@@ -328,7 +330,7 @@ class AutoPostThumbnails {
|
|
328 |
*/
|
329 |
public function check_required_transition( $new_status = '', $old_status = '', $post = '' ) {
|
330 |
|
331 |
-
if ( 'publish'
|
332 |
$this->publish_post( $post->ID );
|
333 |
}
|
334 |
}
|
@@ -340,40 +342,52 @@ class AutoPostThumbnails {
|
|
340 |
*/
|
341 |
public function get_posts_query( $has_thumb = false, $type = 'post', $status = 'publish', $category = 0, $date_start = 0, $date_end = 0, $is_log = true ) {
|
342 |
|
|
|
343 |
if ( $is_log ) {
|
344 |
-
$this->plugin->logger->info(
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
}
|
|
|
353 |
|
354 |
$q_status = $status ? $status : 'any';
|
355 |
$q_type = $type ? $type : 'any';
|
356 |
-
$q_has_thumb = $has_thumb ?
|
357 |
|
358 |
$args = [
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
367 |
];
|
368 |
if ( $category ) {
|
369 |
$args['cat'] = $category;
|
370 |
}
|
371 |
if ( $date_start && $date_end ) {
|
372 |
-
$args['date_query'][] = [
|
|
|
|
|
|
|
|
|
373 |
}
|
374 |
$query = new WP_Query( $args );
|
375 |
|
376 |
-
|
377 |
|
378 |
return $query;
|
379 |
}
|
@@ -420,7 +434,7 @@ class AutoPostThumbnails {
|
|
420 |
// If thumb id is not found, try to look for the image in DB.
|
421 |
if ( isset( $image['url'] ) && ! empty( $image['url'] ) ) {
|
422 |
$image_url = $image['url'];
|
423 |
-
|
424 |
$image_url = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $image_url );
|
425 |
$thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%" . esc_sql( $image_url ) . "%'" );
|
426 |
}
|
@@ -470,7 +484,7 @@ class AutoPostThumbnails {
|
|
470 |
public function publish_post( $post_id, $post = null, $update = true ) {
|
471 |
global $wpdb;
|
472 |
|
473 |
-
$autoimage = \WAPT_Plugin::app()->getPopulateOption(
|
474 |
$generation = new GenerateResult( $post_id, $autoimage );
|
475 |
|
476 |
if ( ! $post ) {
|
@@ -478,7 +492,7 @@ class AutoPostThumbnails {
|
|
478 |
if ( ! $post ) {
|
479 |
$this->plugin->logger->warning( "The post was not found (post ID = {$post_id})" );
|
480 |
|
481 |
-
return $generation->result( __(
|
482 |
}
|
483 |
}
|
484 |
|
@@ -491,7 +505,7 @@ class AutoPostThumbnails {
|
|
491 |
if ( $_thumbnail_id && $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE id = '" . esc_sql( $_thumbnail_id ) . "' AND post_type = 'attachment'" ) || get_post_meta( $post_id, 'skip_post_thumb', true ) ) {
|
492 |
$this->plugin->logger->warning( "The post ({$post_id}) has already been assigned a featured image" );
|
493 |
|
494 |
-
return $generation->result( __(
|
495 |
}
|
496 |
|
497 |
$thumb_id = 0;
|
@@ -519,17 +533,17 @@ class AutoPostThumbnails {
|
|
519 |
}
|
520 |
} else {
|
521 |
// создаём свою картинку с заголовком на цветном фоне
|
522 |
-
if ( $autoimage
|
523 |
$thumb_id = $this->generate_and_attachment( $post_id );
|
524 |
if ( $thumb_id ) {
|
525 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
526 |
|
527 |
return $generation->result( '', $thumb_id );
|
528 |
}
|
529 |
-
}
|
530 |
$response = ( new GoogleImages() )->search( $post->post_title, 1 );
|
531 |
if ( ! empty( $response->images ) ) {
|
532 |
-
$this->plugin->logger->info(
|
533 |
$thumb_id = apply_filters( 'wapt/download_from_google', 0, $response->images, $post_id );
|
534 |
}
|
535 |
if ( $thumb_id ) {
|
@@ -538,11 +552,11 @@ class AutoPostThumbnails {
|
|
538 |
|
539 |
return $generation->result( '', $thumb_id );
|
540 |
}
|
541 |
-
$this->plugin->logger->error(
|
542 |
}
|
543 |
}
|
544 |
|
545 |
-
return $generation->result( __(
|
546 |
}
|
547 |
|
548 |
/**
|
@@ -617,7 +631,6 @@ class AutoPostThumbnails {
|
|
617 |
/**
|
618 |
* Fetch image from URL and generate required thumbnails.
|
619 |
*
|
620 |
-
*
|
621 |
* @param string $image
|
622 |
* @param string $title
|
623 |
* @param int $post_id
|
@@ -634,7 +647,7 @@ class AutoPostThumbnails {
|
|
634 |
|
635 |
// Get the file name
|
636 |
$filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
|
637 |
-
|
638 |
if ( strrpos( $filename, '?' ) ) {
|
639 |
$filename = substr( $filename, 0, strrpos( $filename, '?' ) );
|
640 |
}
|
@@ -649,7 +662,7 @@ class AutoPostThumbnails {
|
|
649 |
$new_file = $uploads['path'] . "/$filename";
|
650 |
$ext = pathinfo( $new_file, PATHINFO_EXTENSION );
|
651 |
if ( empty( $ext ) ) {
|
652 |
-
$ext =
|
653 |
$filename .= ".{$ext}";
|
654 |
$new_file .= ".{$ext}";
|
655 |
}
|
@@ -658,19 +671,23 @@ class AutoPostThumbnails {
|
|
658 |
if ( ! ini_get( 'allow_url_fopen' ) ) {
|
659 |
$file_data = $this->get_file_contents( $imageUrl );
|
660 |
} else {
|
661 |
-
$arrContextOptions = [
|
|
|
|
|
|
|
|
|
|
|
662 |
$file_data = file_get_contents( $imageUrl, false, stream_context_create( $arrContextOptions ) );
|
663 |
}
|
664 |
|
665 |
-
|
666 |
if ( ! $file_data ) {
|
667 |
return null;
|
668 |
}
|
669 |
|
670 |
-
//Fix for checking file extensions
|
671 |
-
$exts = explode(
|
672 |
if ( count( $exts ) > 2 ) {
|
673 |
-
//return null;
|
674 |
}
|
675 |
|
676 |
$allowed = get_allowed_mime_types();
|
@@ -702,16 +719,16 @@ class AutoPostThumbnails {
|
|
702 |
|
703 |
// Construct the attachment array
|
704 |
$attachment = [
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
];
|
711 |
|
712 |
$thumb_id = wp_insert_attachment( $attachment, $file, $post_id );
|
713 |
if ( ! is_wp_error( $thumb_id ) ) {
|
714 |
-
require_once
|
715 |
|
716 |
// Added fix by misthero as suggested
|
717 |
wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $new_file ) );
|
@@ -725,12 +742,11 @@ class AutoPostThumbnails {
|
|
725 |
|
726 |
/**
|
727 |
* Function to fetch the contents of URL using HTTP API in absence of allow_url_fopen.
|
728 |
-
*
|
729 |
*/
|
730 |
public function get_file_contents( $URL ) {
|
731 |
$response = wp_remote_get( $URL );
|
732 |
$contents = '';
|
733 |
-
if ( wp_remote_retrieve_response_code( $response )
|
734 |
$contents = wp_remote_retrieve_body( $response );
|
735 |
}
|
736 |
|
@@ -755,17 +771,17 @@ class AutoPostThumbnails {
|
|
755 |
if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
|
756 |
$thumb_id = intval( $_POST['thumbnail_id'] );
|
757 |
|
758 |
-
if ( $thumb_id
|
759 |
-
//generate image
|
760 |
$thumb_id = $this->generate_and_attachment( $post_id );
|
761 |
}
|
762 |
-
}
|
763 |
$img = $_POST['image'];
|
764 |
|
765 |
-
|
766 |
$img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
|
767 |
|
768 |
-
//Find image in medialibrary
|
769 |
$thumb_id = $this->get_thumbnail_id( [ 'url' => $img ] );
|
770 |
|
771 |
if ( ! $thumb_id ) {
|
@@ -778,7 +794,7 @@ class AutoPostThumbnails {
|
|
778 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
779 |
}
|
780 |
|
781 |
-
echo $this->apt_getThumbHtml( $post_id, $thumb_id );
|
782 |
}
|
783 |
}
|
784 |
die();
|
@@ -791,7 +807,7 @@ class AutoPostThumbnails {
|
|
791 |
* @uses apt_thumb
|
792 |
*/
|
793 |
public function apt_get_thumbnail() {
|
794 |
-
include WAPT_ABSPATH .
|
795 |
die();
|
796 |
}
|
797 |
|
@@ -806,42 +822,39 @@ class AutoPostThumbnails {
|
|
806 |
public function apt_getThumbHtml( $post_id, $thumb_id ) {
|
807 |
$imgTag = get_the_post_thumbnail( $post_id, [ 100, 0 ], [ 'class' => 'img' ] );
|
808 |
if ( empty( $imgTag ) ) {
|
809 |
-
$imgTag =
|
810 |
}
|
811 |
|
812 |
-
$title =
|
813 |
$wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
|
814 |
-
$ajaxloader = WAPT_PLUGIN_URL .
|
815 |
-
$content =
|
816 |
-
$html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}'
|
817 |
|
818 |
return $html;
|
819 |
}
|
820 |
|
821 |
/**
|
822 |
* Контент подпункта меню в Медиафайлы
|
823 |
-
*
|
824 |
*/
|
825 |
public function addToMediaFromApt() {
|
826 |
-
//media_upload_header();
|
827 |
$this->is_in_medialibrary = true;
|
828 |
$this->sources = apply_filters( 'wapt/sources', $this->sources, 'add_to_media_from_apt' );
|
829 |
-
require_once WAPT_ABSPATH .
|
830 |
}
|
831 |
|
832 |
/**
|
833 |
* Контент вкладки
|
834 |
-
*
|
835 |
*/
|
836 |
public function media_AptTabContent() {
|
837 |
media_upload_header();
|
838 |
$this->sources = apply_filters( 'wapt/sources', $this->sources, 'tab_content' );
|
839 |
-
require_once WAPT_ABSPATH .
|
840 |
}
|
841 |
|
842 |
/**
|
843 |
* AJAX вывод содержимого вкладки сервиса
|
844 |
-
*
|
845 |
*/
|
846 |
public function source_content() {
|
847 |
if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_content' ) ) {
|
@@ -849,9 +862,9 @@ class AutoPostThumbnails {
|
|
849 |
}
|
850 |
$this->sources = apply_filters( 'wapt/sources', $this->sources, 'source_content' );
|
851 |
if ( isset( $_POST['source'] ) && ! empty( $_POST['source'] ) ) {
|
852 |
-
$source = str_replace(
|
853 |
|
854 |
-
//if( empty($this->sources[$source]) && !\WAPT_Plugin::app()->premium->is_activate() )
|
855 |
if ( empty( $this->sources[ $source ] ) ) {
|
856 |
require_once WAPT_PLUGIN_DIR . '/admin/views/pro.php';
|
857 |
} else {
|
@@ -863,7 +876,6 @@ class AutoPostThumbnails {
|
|
863 |
|
864 |
/**
|
865 |
* AJAX загрузка выбранного изображения
|
866 |
-
*
|
867 |
*/
|
868 |
public function upload_to_library() {
|
869 |
|
@@ -876,13 +888,14 @@ class AutoPostThumbnails {
|
|
876 |
// get image file
|
877 |
$response = wp_remote_get( $_POST['image_url'], [ 'timeout' => 100 ] );
|
878 |
if ( is_wp_error( $response ) ) {
|
879 |
-
die( 'Error: ' . $response->get_error_message() );
|
880 |
}
|
881 |
|
882 |
-
$file_ext
|
|
|
883 |
switch ( $_POST['service'] ) {
|
884 |
case 'pixabay':
|
885 |
-
$path_info = pathinfo( $_POST['image_url'] );
|
886 |
$file_ext = $path_info['extension'];
|
887 |
$image_title = sanitize_text_field( $_POST['q'] );
|
888 |
break;
|
@@ -896,7 +909,7 @@ class AutoPostThumbnails {
|
|
896 |
$image_title = sanitize_text_field( $_POST['title'] );
|
897 |
break;
|
898 |
case 'google':
|
899 |
-
$path_info = pathinfo( $_POST['image_url'] );
|
900 |
$file_ext = $path_info['extension'];
|
901 |
if ( $file_ext !== 'jpg' && $file_ext !== 'jpeg' && $file_ext !== 'png' && $file_ext !== 'gif' ) {
|
902 |
$file_ext = 'jpg';
|
@@ -904,29 +917,41 @@ class AutoPostThumbnails {
|
|
904 |
if ( empty( $file_ext ) ) {
|
905 |
$file_ext = 'jpg';
|
906 |
}
|
907 |
-
$image_title = sanitize_text_field( $_POST['title'] );
|
908 |
break;
|
909 |
}
|
910 |
|
911 |
-
$
|
|
|
912 |
$wp_upload_dir = wp_upload_dir();
|
913 |
$image_upload_path = $wp_upload_dir['path'];
|
914 |
|
915 |
if ( ! is_dir( $image_upload_path ) ) {
|
|
|
916 |
if ( ! @mkdir( $image_upload_path, 0777, true ) ) {
|
917 |
-
die( 'Error: Failed to create upload folder ' . $image_upload_path );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
918 |
}
|
|
|
919 |
}
|
920 |
|
921 |
$target_file_name = $image_upload_path . '/' . $file_name;
|
922 |
-
$result =
|
|
|
923 |
unset( $response['body'] );
|
924 |
-
if (
|
925 |
-
die( 'Error: Failed to write file ' . $target_file_name );
|
926 |
}
|
927 |
|
928 |
// are we dealing with an image
|
929 |
-
require_once
|
930 |
if ( ! wp_read_image_metadata( $target_file_name ) ) {
|
931 |
unlink( $target_file_name );
|
932 |
die( 'Error: File is not an image.' );
|
@@ -937,29 +962,29 @@ class AutoPostThumbnails {
|
|
937 |
// insert attachment
|
938 |
$wp_filetype = wp_check_filetype( basename( $target_file_name ), null );
|
939 |
$attachment = [
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
];
|
945 |
|
946 |
$attach_id = wp_insert_attachment( $attachment, $target_file_name, $postid );
|
947 |
-
if ( $attach_id
|
948 |
die( 'Error: File attachment error' );
|
949 |
}
|
950 |
|
951 |
$attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
|
952 |
$result = wp_update_attachment_metadata( $attach_id, $attach_data );
|
953 |
if ( ! $result ) {
|
954 |
-
//die( 'Error: File attachment metadata error' );
|
955 |
}
|
956 |
|
957 |
$image_data = [];
|
958 |
$image_data['ID'] = $attach_id;
|
959 |
-
$image_data['post_excerpt'] = $_POST['excerpt'];
|
960 |
wp_update_post( $image_data );
|
961 |
|
962 |
-
echo $attach_id;
|
963 |
|
964 |
exit;
|
965 |
}
|
@@ -967,7 +992,6 @@ class AutoPostThumbnails {
|
|
967 |
|
968 |
/**
|
969 |
* AJAX загрузка шрифта
|
970 |
-
*
|
971 |
*/
|
972 |
public function upload_font() {
|
973 |
if ( ! wp_verify_nonce( $_POST['wpnonce'], 'wapt_upload_font' ) ) {
|
@@ -977,7 +1001,7 @@ class AutoPostThumbnails {
|
|
977 |
if ( isset( $_POST['is_font_upload'] ) && count( $_FILES ) > 0 ) {
|
978 |
$file = $_FILES[0];
|
979 |
$upload_dir = wp_upload_dir();
|
980 |
-
$upload_dir = $upload_dir['basedir'] .
|
981 |
if ( ! is_dir( $upload_dir ) ) {
|
982 |
mkdir( $upload_dir, 0777 );
|
983 |
}
|
@@ -987,13 +1011,13 @@ class AutoPostThumbnails {
|
|
987 |
|
988 |
// Проверка, что файл является шрифтом TrueType
|
989 |
$header = file_get_contents( $file['tmp_name'], false, null, null, 4 );
|
990 |
-
if ( $header !== "\x00\x01\x00\x00" && $header !==
|
991 |
-
die( json_encode( [ 'error' =>
|
992 |
}
|
993 |
-
|
994 |
$path = pathinfo( $file['tmp_name'] );
|
995 |
-
if ( $path['extension']
|
996 |
-
die( json_encode( [ 'error' =>
|
997 |
}
|
998 |
|
999 |
add_filter( 'upload_mimes', function ( $mime_types ) {
|
@@ -1015,7 +1039,7 @@ class AutoPostThumbnails {
|
|
1015 |
}
|
1016 |
} else {
|
1017 |
$result = [ 'error' => $data['error'] ];
|
1018 |
-
|
1019 |
|
1020 |
die( json_encode( $result ) );
|
1021 |
}
|
@@ -1031,7 +1055,6 @@ class AutoPostThumbnails {
|
|
1031 |
|
1032 |
/**
|
1033 |
* AJAX загрузка google
|
1034 |
-
*
|
1035 |
*/
|
1036 |
public function apt_api_google() {
|
1037 |
|
@@ -1054,16 +1077,13 @@ class AutoPostThumbnails {
|
|
1054 |
}
|
1055 |
|
1056 |
if ( isset( $_POST['watson'] ) ) {
|
1057 |
-
$query = isset( $_POST['query'] )
|
1058 |
-
&& ! empty( $_POST['query'] )
|
1059 |
-
&& (bool) $_POST['watson']
|
1060 |
-
? sanitize_text_field( $_POST['query'] ) : $post_title;
|
1061 |
} else {
|
1062 |
$query = sanitize_text_field( $_POST['query'] ?? '' );
|
1063 |
}
|
1064 |
|
1065 |
try {
|
1066 |
-
$response = ( new GoogleImages() )->search( $query, $query
|
1067 |
|
1068 |
if ( isset( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ) {
|
1069 |
$response->limit( (int) $_POST['limit'] );
|
@@ -1082,7 +1102,7 @@ class AutoPostThumbnails {
|
|
1082 |
}
|
1083 |
}
|
1084 |
} catch ( Exception $e ) {
|
1085 |
-
die( $e->getMessage() );
|
1086 |
}
|
1087 |
|
1088 |
if ( $response->is_error() ) {
|
@@ -1095,7 +1115,6 @@ class AutoPostThumbnails {
|
|
1095 |
|
1096 |
/**
|
1097 |
* Проверка API ключей
|
1098 |
-
*
|
1099 |
*/
|
1100 |
public function apt_check_api_key() {
|
1101 |
|
@@ -1107,15 +1126,15 @@ class AutoPostThumbnails {
|
|
1107 |
$key = trim( $_POST['key'] );
|
1108 |
$cx = trim( $_POST['key2'] );
|
1109 |
switch ( $provider ) {
|
1110 |
-
case
|
1111 |
$url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
|
1112 |
|
1113 |
$response = wp_remote_get( $url, [ 'timeout' => 100 ] );
|
1114 |
if ( is_wp_error( $response ) ) {
|
1115 |
-
die( 'Error: ' . $response->get_error_message() );
|
1116 |
}
|
1117 |
$result = json_decode( $response['body'] );
|
1118 |
-
echo ! isset( $result->error->errors );
|
1119 |
break;
|
1120 |
}
|
1121 |
exit;
|
@@ -1124,7 +1143,7 @@ class AutoPostThumbnails {
|
|
1124 |
|
1125 |
public function check_api_notice( $notices, $plugin_name ) {
|
1126 |
// Если экшен вызывал не этот плагин, то не выводим это уведомления
|
1127 |
-
if ( $plugin_name
|
1128 |
return $notices;
|
1129 |
}
|
1130 |
// Получаем заголовок плагина
|
@@ -1132,20 +1151,20 @@ class AutoPostThumbnails {
|
|
1132 |
|
1133 |
if ( ! \WAPT_Plugin::app()->getPopulateOption( 'google_apikey' ) && ! \WAPT_Plugin::app()->getPopulateOption( 'google_cse' ) ) {
|
1134 |
// Задаем текст уведомления
|
1135 |
-
$notice_text = '<p><b>' . $plugin_title . ':</b> <br>' . sprintf( __( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ) ) .
|
1136 |
|
1137 |
// Задаем настройки уведомления
|
1138 |
$notices[] = [
|
1139 |
-
|
1140 |
-
//error, success, warning
|
1141 |
-
|
1142 |
-
|
1143 |
// На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
|
1144 |
-
|
1145 |
// Через какое время уведомление снова появится?
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
];
|
1150 |
}
|
1151 |
|
@@ -1159,33 +1178,45 @@ class AutoPostThumbnails {
|
|
1159 |
*/
|
1160 |
public static function get_fonts() {
|
1161 |
$upload_dir = wp_upload_dir();
|
1162 |
-
$upload_dir_fonts = $upload_dir['basedir'] .
|
1163 |
-
$plugin_dir_fonts = WAPT_PLUGIN_DIR .
|
1164 |
$fonts = [];
|
1165 |
|
1166 |
-
$fonts[] = [
|
|
|
|
|
|
|
1167 |
$files = scandir( $plugin_dir_fonts );
|
1168 |
foreach ( $files as $file ) {
|
1169 |
-
if ( $file
|
1170 |
continue;
|
1171 |
}
|
1172 |
$name = pathinfo( $plugin_dir_fonts . '/' . $file );
|
1173 |
$name = $name['filename'];
|
1174 |
-
$fonts[] = [
|
|
|
|
|
|
|
1175 |
}
|
1176 |
|
1177 |
if ( is_dir( $upload_dir_fonts ) ) {
|
1178 |
$files = scandir( $upload_dir_fonts );
|
1179 |
}
|
1180 |
if ( count( $files ) && \WAPT_Plugin::app()->is_premium() ) {
|
1181 |
-
$fonts[] = [
|
|
|
|
|
|
|
1182 |
foreach ( $files as $file ) {
|
1183 |
-
if ( $file
|
1184 |
continue;
|
1185 |
}
|
1186 |
$name = pathinfo( $upload_dir_fonts . '/' . $file );
|
1187 |
$name = $name['filename'];
|
1188 |
-
$fonts[] = [
|
|
|
|
|
|
|
1189 |
}
|
1190 |
}
|
1191 |
|
@@ -1205,13 +1236,13 @@ class AutoPostThumbnails {
|
|
1205 |
* @return Image
|
1206 |
*/
|
1207 |
public static function generate_image_with_text( $text, $pathToSave = '', $format = 'jpg', $width = 0, $height = 0 ) {
|
1208 |
-
$font = WAPT_PLUGIN_DIR .
|
1209 |
$font_size = \WAPT_Plugin::app()->getPopulateOption( 'font-size', 25 );
|
1210 |
-
$font_color = \WAPT_Plugin::app()->getPopulateOption( 'font-color',
|
1211 |
-
if ( $width
|
1212 |
$width = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-width', 800 );
|
1213 |
}
|
1214 |
-
if ( $height
|
1215 |
$height = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-height', 600 );
|
1216 |
}
|
1217 |
$before_text = '';
|
@@ -1220,13 +1251,13 @@ class AutoPostThumbnails {
|
|
1220 |
if ( ! $shadow ) {
|
1221 |
$shadow_color = '';
|
1222 |
} else {
|
1223 |
-
$shadow_color = \WAPT_Plugin::app()->getPopulateOption( 'shadow-color',
|
1224 |
}
|
1225 |
|
1226 |
-
$background_type =
|
1227 |
-
$background = \WAPT_Plugin::app()->getPopulateOption( 'background-color',
|
1228 |
|
1229 |
-
$text_transform = \WAPT_Plugin::app()->getPopulateOption( 'text-transform',
|
1230 |
switch ( $text_transform ) {
|
1231 |
case 'upper':
|
1232 |
$text = mb_strtoupper( $text );
|
@@ -1251,11 +1282,11 @@ class AutoPostThumbnails {
|
|
1251 |
$line_spacing = \WAPT_Plugin::app()->getPopulateOption( 'text-line-spacing', 1.5 );
|
1252 |
|
1253 |
$params = [
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
];
|
1260 |
$image = new Image( $width, $height, $background, $font, $font_size, $font_color );
|
1261 |
$image->params = $params;
|
@@ -1284,17 +1315,17 @@ class AutoPostThumbnails {
|
|
1284 |
public function generate_and_attachment( $post_id ) {
|
1285 |
$this->plugin->logger->info( "Start generate attachment for post ID = {$post_id}" );
|
1286 |
|
1287 |
-
$format = \WAPT_Plugin::app()->getPopulateOption(
|
1288 |
switch ( $format ) {
|
1289 |
case 'png':
|
1290 |
$extension = 'png';
|
1291 |
-
$mime_type =
|
1292 |
break;
|
1293 |
case 'jpg':
|
1294 |
case 'jpeg':
|
1295 |
default:
|
1296 |
$extension = 'jpg';
|
1297 |
-
$mime_type =
|
1298 |
break;
|
1299 |
}
|
1300 |
$post = get_post( $post_id, 'OBJECT' );
|
@@ -1322,7 +1353,7 @@ class AutoPostThumbnails {
|
|
1322 |
|
1323 |
return $thumb_id;
|
1324 |
} else {
|
1325 |
-
$this->plugin->logger->error(
|
1326 |
}
|
1327 |
|
1328 |
return 0;
|
@@ -1356,17 +1387,17 @@ class AutoPostThumbnails {
|
|
1356 |
$file_url = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $file_path );
|
1357 |
if ( file_exists( $file_path ) ) {
|
1358 |
$attachment = [
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
];
|
1365 |
|
1366 |
$thumb_id = wp_insert_attachment( $attachment, $file_path, $post->ID );
|
1367 |
|
1368 |
if ( ! is_wp_error( $thumb_id ) ) {
|
1369 |
-
require_once
|
1370 |
|
1371 |
// Added fix by misthero as suggested
|
1372 |
wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
|
60 |
$this->plugin = \WAPT_Plugin::app();
|
61 |
|
62 |
$this->sources = [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
'google' => WAPT_PLUGIN_SLUG,
|
64 |
+
'recommend' => '',
|
65 |
'pixabay' => '',
|
66 |
'unsplash' => '',
|
67 |
+
];
|
68 |
+
if ( \WAPT_Plugin::app()->is_premium() ) {
|
69 |
+
$this->sources = [
|
70 |
+
'recommend' => '',
|
71 |
+
'google' => WAPT_PLUGIN_SLUG,
|
72 |
+
'pixabay' => '',
|
73 |
+
'unsplash' => '',
|
74 |
];
|
75 |
}
|
76 |
|
84 |
* @return AutoPostThumbnails
|
85 |
*/
|
86 |
public static function instance() {
|
87 |
+
if ( null === static::$instance ) {
|
88 |
static::$instance = new self();
|
89 |
}
|
90 |
|
95 |
* Init includes.
|
96 |
*/
|
97 |
private function init_includes() {
|
98 |
+
// require __DIR__ . '/src/class.template.php';
|
99 |
}
|
100 |
|
101 |
/**
|
113 |
if ( $is_auto_upload && \WAPT_Plugin::app()->is_premium() ) {
|
114 |
add_filter( 'wp_insert_post_data', [ $this, 'auto_upload' ], 10, 2 );
|
115 |
|
116 |
+
// This hook handle update post via rest api. for example WordPress mobile apps
|
117 |
foreach ( $allowed_import_post_types as $post_type ) {
|
118 |
add_action( "rest_after_insert_{$post_type}", [ $this, 'auto_upload' ], 10, 2 );
|
119 |
}
|
120 |
}
|
121 |
|
122 |
if ( $is_auto_generate ) {
|
123 |
+
// add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
|
124 |
add_action( 'save_post', [ $this, 'save_post' ], 10, 3 );
|
125 |
|
126 |
+
// This hook handle update post via rest api. for example WordPress mobile apps
|
127 |
foreach ( $this->allowed_generate_post_types as $post_type ) {
|
128 |
add_action( "rest_after_insert_{$post_type}", [ $this, 'rest_after_insert' ], 10, 3 );
|
129 |
}
|
141 |
}
|
142 |
|
143 |
private function ajax_actions() {
|
144 |
+
// AJAX actions
|
145 |
+
add_action( 'wp_ajax_generatepostthumbnail', [ $this, 'ajax_process_post' ] );
|
146 |
+
add_action( 'wp_ajax_delete_post_thumbnails', [ $this, 'ajax_delete_post_thumbnails' ] );
|
147 |
add_action( 'wp_ajax_get-posts-ids', [ $this, 'get_posts_ids' ] );
|
148 |
add_action( 'wp_ajax_apt_replace_thumbnail', [ $this, 'apt_replace_thumbnail' ] );
|
149 |
add_action( 'wp_ajax_apt_get_thumbnail', [ $this, 'apt_get_thumbnail' ] );
|
151 |
add_action( 'wp_ajax_upload_to_library', [ $this, 'upload_to_library' ] );
|
152 |
add_action( 'wp_ajax_wapt_upload_font', [ $this, 'upload_font' ] );
|
153 |
|
154 |
+
// APIs
|
155 |
add_action( 'wp_ajax_apt_api_google', [ $this, 'apt_api_google' ] );
|
156 |
add_action( 'wp_ajax_apt_check_api_key', [ $this, 'apt_check_api_key' ] );
|
157 |
add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
|
174 |
}
|
175 |
check_ajax_referer( 'get-posts' );
|
176 |
|
177 |
+
$generate = \WAPT_Plugin::app()->getPopulateOption( 'generate_autoimage', 'find' );
|
178 |
|
179 |
$this->plugin->logger->info( "START generate in mode: {$generate}" );
|
180 |
|
190 |
break;
|
191 |
}
|
192 |
|
193 |
+
$has_thumb = sanitize_text_field( wp_unslash( $_POST['withThumb'] ?? false ) );
|
194 |
+
$type = sanitize_text_field( wp_unslash( $_POST['posttype'] ?? '' ) );
|
195 |
if ( \WAPT_Plugin::app()->is_premium() ) {
|
196 |
+
$status = sanitize_text_field( wp_unslash( $_POST['poststatus'] ?? '' ) );
|
197 |
+
$category = sanitize_text_field( wp_unslash( $_POST['category'] ?? '' ) );
|
198 |
+
$date_start = sanitize_text_field( wp_unslash( $_POST['date_start'] ?? '' ) );
|
199 |
+
$date_end = sanitize_text_field( wp_unslash( $_POST['date_end'] ?? '' ) );
|
200 |
$date_start = $date_start ? \DateTime::createFromFormat( 'd.m.Y', $date_start )->format( 'd.m.Y' ) : 0;
|
201 |
$date_end = $date_end ? \DateTime::createFromFormat( 'd.m.Y', $date_end )->setTime( 23, 59 )->format( 'd.m.Y H:i' ) : 0;
|
202 |
// Get id's of the posts that satisfy the filters
|
211 |
$ids = [];
|
212 |
foreach ( $query->posts as $post ) {
|
213 |
$ids[] = $post->ID;
|
214 |
+
// если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
|
215 |
+
/*
|
216 |
+
if ( ! $has_thumb ) {
|
217 |
$images = new \WBCR\APT\PostImages( $post->ID );
|
218 |
if ( ( $images->is_images() && $images->count_images() ) || $auto_generate ) {
|
219 |
$ids[] = $post->ID;
|
221 |
} else //иначе он хочет удалить тамбнэйлы
|
222 |
{
|
223 |
$ids[] = $post->ID;
|
224 |
+
}
|
225 |
+
*/
|
226 |
}
|
227 |
$ids = implode( ',', $ids );
|
228 |
} else {
|
229 |
+
$ids = '0';
|
230 |
}
|
231 |
+
echo esc_js( $ids );
|
232 |
|
233 |
$this->plugin->logger->info( "Queried posts IDs: {$ids}" );
|
234 |
|
288 |
set_time_limit( 60 );
|
289 |
|
290 |
// Pass on the id to our 'publish' callback function.
|
291 |
+
echo (bool) delete_post_thumbnail( $id );
|
292 |
|
293 |
die( - 1 );
|
294 |
}
|
300 |
*/
|
301 |
public function notice_auto_generation() {
|
302 |
?>
|
303 |
+
<div class="notice notice-warning is-dismissible" id="notice_auto_generation">
|
304 |
+
<p><b>Auto Featured Image:</b> Do you want to enable automatic post thumbnail generation? Enable this option
|
305 |
+
in
|
306 |
+
<a href="<?php echo esc_url_raw( admin_url( 'admin.php?page=wapt_settings-wbcr_apt&tab=general' ) ); ?>">settings</a><br>
|
307 |
+
<a href="#" id="hide_notice_auto_generation">Don't ask again</a>
|
308 |
+
</p>
|
309 |
+
</div>
|
310 |
<?php
|
311 |
}
|
312 |
|
314 |
*
|
315 |
*/
|
316 |
public function hide_notice_auto_generation() {
|
317 |
+
if ( isset( $_POST['action'] ) && 'hide_notice_auto_generation' === $_POST['action'] ) {
|
318 |
\WAPT_Plugin::app()->updateOption( 'auto_generation_notice', 0 );
|
319 |
}
|
320 |
}
|
330 |
*/
|
331 |
public function check_required_transition( $new_status = '', $old_status = '', $post = '' ) {
|
332 |
|
333 |
+
if ( 'publish' === $new_status ) {
|
334 |
$this->publish_post( $post->ID );
|
335 |
}
|
336 |
}
|
342 |
*/
|
343 |
public function get_posts_query( $has_thumb = false, $type = 'post', $status = 'publish', $category = 0, $date_start = 0, $date_end = 0, $is_log = true ) {
|
344 |
|
345 |
+
// phpcs:disable WordPress.PHP.DevelopmentFunctions
|
346 |
if ( $is_log ) {
|
347 |
+
$this->plugin->logger->info( 'Posts query: ' . var_export( [
|
348 |
+
'has_thumb' => $has_thumb,
|
349 |
+
'type' => $type,
|
350 |
+
'status' => $status,
|
351 |
+
'category' => $category,
|
352 |
+
'date_start' => $date_start,
|
353 |
+
'date_end' => $date_end,
|
354 |
+
], true ) );
|
355 |
}
|
356 |
+
// phpcs:enable
|
357 |
|
358 |
$q_status = $status ? $status : 'any';
|
359 |
$q_type = $type ? $type : 'any';
|
360 |
+
$q_has_thumb = $has_thumb ? 'EXISTS' : 'NOT EXISTS';
|
361 |
|
362 |
$args = [
|
363 |
+
'posts_per_page' => - 1,
|
364 |
+
'post_status' => $q_status,
|
365 |
+
'post_type' => $q_type,
|
366 |
+
'meta_query' => [
|
367 |
+
'relation' => 'AND',
|
368 |
+
[
|
369 |
+
'key' => '_thumbnail_id',
|
370 |
+
'compare' => $q_has_thumb,
|
371 |
+
],
|
372 |
+
[
|
373 |
+
'key' => 'skip_post_thumb',
|
374 |
+
'compare' => 'NOT EXISTS',
|
375 |
+
],
|
376 |
+
],
|
377 |
];
|
378 |
if ( $category ) {
|
379 |
$args['cat'] = $category;
|
380 |
}
|
381 |
if ( $date_start && $date_end ) {
|
382 |
+
$args['date_query'][] = [
|
383 |
+
'after' => $date_start,
|
384 |
+
'before' => $date_end,
|
385 |
+
'inclusive' => true,
|
386 |
+
];
|
387 |
}
|
388 |
$query = new WP_Query( $args );
|
389 |
|
390 |
+
// $this->plugin->logger->debug( "Posts SQL: " . $query->request );
|
391 |
|
392 |
return $query;
|
393 |
}
|
434 |
// If thumb id is not found, try to look for the image in DB.
|
435 |
if ( isset( $image['url'] ) && ! empty( $image['url'] ) ) {
|
436 |
$image_url = $image['url'];
|
437 |
+
// если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
|
438 |
$image_url = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $image_url );
|
439 |
$thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%" . esc_sql( $image_url ) . "%'" );
|
440 |
}
|
484 |
public function publish_post( $post_id, $post = null, $update = true ) {
|
485 |
global $wpdb;
|
486 |
|
487 |
+
$autoimage = \WAPT_Plugin::app()->getPopulateOption( 'generate_autoimage', 'find' );
|
488 |
$generation = new GenerateResult( $post_id, $autoimage );
|
489 |
|
490 |
if ( ! $post ) {
|
492 |
if ( ! $post ) {
|
493 |
$this->plugin->logger->warning( "The post was not found (post ID = {$post_id})" );
|
494 |
|
495 |
+
return $generation->result( __( 'The post was not found', 'apt' ) );
|
496 |
}
|
497 |
}
|
498 |
|
505 |
if ( $_thumbnail_id && $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE id = '" . esc_sql( $_thumbnail_id ) . "' AND post_type = 'attachment'" ) || get_post_meta( $post_id, 'skip_post_thumb', true ) ) {
|
506 |
$this->plugin->logger->warning( "The post ({$post_id}) has already been assigned a featured image" );
|
507 |
|
508 |
+
return $generation->result( __( 'The post has already been assigned a featured image', 'apt' ) );
|
509 |
}
|
510 |
|
511 |
$thumb_id = 0;
|
533 |
}
|
534 |
} else {
|
535 |
// создаём свою картинку с заголовком на цветном фоне
|
536 |
+
if ( $autoimage === 'generate' || $autoimage === 'both' ) {
|
537 |
$thumb_id = $this->generate_and_attachment( $post_id );
|
538 |
if ( $thumb_id ) {
|
539 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
540 |
|
541 |
return $generation->result( '', $thumb_id );
|
542 |
}
|
543 |
+
} elseif ( $autoimage === 'google' || $autoimage === 'find_google' ) {
|
544 |
$response = ( new GoogleImages() )->search( $post->post_title, 1 );
|
545 |
if ( ! empty( $response->images ) ) {
|
546 |
+
$this->plugin->logger->info( 'Google image search result = ' . var_export( $response->images[0], true ) );
|
547 |
$thumb_id = apply_filters( 'wapt/download_from_google', 0, $response->images, $post_id );
|
548 |
}
|
549 |
if ( $thumb_id ) {
|
552 |
|
553 |
return $generation->result( '', $thumb_id );
|
554 |
}
|
555 |
+
$this->plugin->logger->error( 'Error download from google. ' . var_export( $thumb_id, true ) );
|
556 |
}
|
557 |
}
|
558 |
|
559 |
+
return $generation->result( __( 'No images found or generated', 'apt' ) );
|
560 |
}
|
561 |
|
562 |
/**
|
631 |
/**
|
632 |
* Fetch image from URL and generate required thumbnails.
|
633 |
*
|
|
|
634 |
* @param string $image
|
635 |
* @param string $title
|
636 |
* @param int $post_id
|
647 |
|
648 |
// Get the file name
|
649 |
$filename = substr( $imageUrl, ( strrpos( $imageUrl, '/' ) ) + 1 );
|
650 |
+
// исключаем параметры после имени файла
|
651 |
if ( strrpos( $filename, '?' ) ) {
|
652 |
$filename = substr( $filename, 0, strrpos( $filename, '?' ) );
|
653 |
}
|
662 |
$new_file = $uploads['path'] . "/$filename";
|
663 |
$ext = pathinfo( $new_file, PATHINFO_EXTENSION );
|
664 |
if ( empty( $ext ) ) {
|
665 |
+
$ext = 'jpg';
|
666 |
$filename .= ".{$ext}";
|
667 |
$new_file .= ".{$ext}";
|
668 |
}
|
671 |
if ( ! ini_get( 'allow_url_fopen' ) ) {
|
672 |
$file_data = $this->get_file_contents( $imageUrl );
|
673 |
} else {
|
674 |
+
$arrContextOptions = [
|
675 |
+
'ssl' => [
|
676 |
+
'verify_peer' => false,
|
677 |
+
'verify_peer_name' => false,
|
678 |
+
],
|
679 |
+
];
|
680 |
$file_data = file_get_contents( $imageUrl, false, stream_context_create( $arrContextOptions ) );
|
681 |
}
|
682 |
|
|
|
683 |
if ( ! $file_data ) {
|
684 |
return null;
|
685 |
}
|
686 |
|
687 |
+
// Fix for checking file extensions
|
688 |
+
$exts = explode( '.', $filename );
|
689 |
if ( count( $exts ) > 2 ) {
|
690 |
+
// return null;
|
691 |
}
|
692 |
|
693 |
$allowed = get_allowed_mime_types();
|
719 |
|
720 |
// Construct the attachment array
|
721 |
$attachment = [
|
722 |
+
'post_mime_type' => $type,
|
723 |
+
'guid' => $url,
|
724 |
+
'post_parent' => null,
|
725 |
+
'post_title' => $imageTitle,
|
726 |
+
'post_content' => '',
|
727 |
];
|
728 |
|
729 |
$thumb_id = wp_insert_attachment( $attachment, $file, $post_id );
|
730 |
if ( ! is_wp_error( $thumb_id ) ) {
|
731 |
+
require_once ABSPATH . '/wp-admin/includes/image.php';
|
732 |
|
733 |
// Added fix by misthero as suggested
|
734 |
wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $new_file ) );
|
742 |
|
743 |
/**
|
744 |
* Function to fetch the contents of URL using HTTP API in absence of allow_url_fopen.
|
|
|
745 |
*/
|
746 |
public function get_file_contents( $URL ) {
|
747 |
$response = wp_remote_get( $URL );
|
748 |
$contents = '';
|
749 |
+
if ( wp_remote_retrieve_response_code( $response ) === 200 ) {
|
750 |
$contents = wp_remote_retrieve_body( $response );
|
751 |
}
|
752 |
|
771 |
if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
|
772 |
$thumb_id = intval( $_POST['thumbnail_id'] );
|
773 |
|
774 |
+
if ( $thumb_id === - 1 ) {
|
775 |
+
// generate image
|
776 |
$thumb_id = $this->generate_and_attachment( $post_id );
|
777 |
}
|
778 |
+
} elseif ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
|
779 |
$img = $_POST['image'];
|
780 |
|
781 |
+
// Совместимость с NextGen
|
782 |
$img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
|
783 |
|
784 |
+
// Find image in medialibrary
|
785 |
$thumb_id = $this->get_thumbnail_id( [ 'url' => $img ] );
|
786 |
|
787 |
if ( ! $thumb_id ) {
|
794 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
795 |
}
|
796 |
|
797 |
+
echo $this->apt_getThumbHtml( $post_id, $thumb_id ); // phpcs:ignore
|
798 |
}
|
799 |
}
|
800 |
die();
|
807 |
* @uses apt_thumb
|
808 |
*/
|
809 |
public function apt_get_thumbnail() {
|
810 |
+
include WAPT_ABSPATH . '/admin/views/pro_column.php';
|
811 |
die();
|
812 |
}
|
813 |
|
822 |
public function apt_getThumbHtml( $post_id, $thumb_id ) {
|
823 |
$imgTag = get_the_post_thumbnail( $post_id, [ 100, 0 ], [ 'class' => 'img' ] );
|
824 |
if ( empty( $imgTag ) ) {
|
825 |
+
$imgTag = esc_html__( 'No image', 'apt' );
|
826 |
}
|
827 |
|
828 |
+
$title = esc_attr__( 'Change featured image', 'apt' );
|
829 |
$wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
|
830 |
+
$ajaxloader = WAPT_PLUGIN_URL . '/admin/assets/img/ajax-loader.gif';
|
831 |
+
$content = '';
|
832 |
+
$html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' onclick='return window.aptModalShow(this, {$post_id}, \"$wpnonce\");'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span><div id='post_imgs_{$post_id}' class='imgs' style='display:none;'><span style='display:none;'><img src='{$ajaxloader}' alt=''></span><div>{$content}</div></div>";
|
833 |
|
834 |
return $html;
|
835 |
}
|
836 |
|
837 |
/**
|
838 |
* Контент подпункта меню в Медиафайлы
|
|
|
839 |
*/
|
840 |
public function addToMediaFromApt() {
|
841 |
+
// media_upload_header();
|
842 |
$this->is_in_medialibrary = true;
|
843 |
$this->sources = apply_filters( 'wapt/sources', $this->sources, 'add_to_media_from_apt' );
|
844 |
+
require_once WAPT_ABSPATH . '/admin/views/media-library.php';
|
845 |
}
|
846 |
|
847 |
/**
|
848 |
* Контент вкладки
|
|
|
849 |
*/
|
850 |
public function media_AptTabContent() {
|
851 |
media_upload_header();
|
852 |
$this->sources = apply_filters( 'wapt/sources', $this->sources, 'tab_content' );
|
853 |
+
require_once WAPT_ABSPATH . '/admin/views/media-library.php';
|
854 |
}
|
855 |
|
856 |
/**
|
857 |
* AJAX вывод содержимого вкладки сервиса
|
|
|
858 |
*/
|
859 |
public function source_content() {
|
860 |
if ( ! wp_verify_nonce( $_POST['wpnonce'], 'apt_content' ) ) {
|
862 |
}
|
863 |
$this->sources = apply_filters( 'wapt/sources', $this->sources, 'source_content' );
|
864 |
if ( isset( $_POST['source'] ) && ! empty( $_POST['source'] ) ) {
|
865 |
+
$source = str_replace( 'tab-', '', sanitize_text_field( $_POST['source'] ) );
|
866 |
|
867 |
+
// if( empty($this->sources[$source]) && !\WAPT_Plugin::app()->premium->is_activate() )
|
868 |
if ( empty( $this->sources[ $source ] ) ) {
|
869 |
require_once WAPT_PLUGIN_DIR . '/admin/views/pro.php';
|
870 |
} else {
|
876 |
|
877 |
/**
|
878 |
* AJAX загрузка выбранного изображения
|
|
|
879 |
*/
|
880 |
public function upload_to_library() {
|
881 |
|
888 |
// get image file
|
889 |
$response = wp_remote_get( $_POST['image_url'], [ 'timeout' => 100 ] );
|
890 |
if ( is_wp_error( $response ) ) {
|
891 |
+
die( 'Error: ' . esc_html( $response->get_error_message() ) );
|
892 |
}
|
893 |
|
894 |
+
$file_ext = '';
|
895 |
+
$image_title = '';
|
896 |
switch ( $_POST['service'] ) {
|
897 |
case 'pixabay':
|
898 |
+
$path_info = pathinfo( esc_url_raw( $_POST['image_url'] ) );
|
899 |
$file_ext = $path_info['extension'];
|
900 |
$image_title = sanitize_text_field( $_POST['q'] );
|
901 |
break;
|
909 |
$image_title = sanitize_text_field( $_POST['title'] );
|
910 |
break;
|
911 |
case 'google':
|
912 |
+
$path_info = pathinfo( esc_url_raw( $_POST['image_url'] ) );
|
913 |
$file_ext = $path_info['extension'];
|
914 |
if ( $file_ext !== 'jpg' && $file_ext !== 'jpeg' && $file_ext !== 'png' && $file_ext !== 'gif' ) {
|
915 |
$file_ext = 'jpg';
|
917 |
if ( empty( $file_ext ) ) {
|
918 |
$file_ext = 'jpg';
|
919 |
}
|
920 |
+
$image_title = sanitize_text_field( wp_unslash( $_POST['title'] ?? '' ) );
|
921 |
break;
|
922 |
}
|
923 |
|
924 |
+
$q = sanitize_text_field( wp_unslash( $_POST['q'] ?? '' ) );
|
925 |
+
$file_name = sanitize_file_name( implode( '_', explode( ' ', $q ) ) . '_' . time() . '.' . $file_ext );
|
926 |
$wp_upload_dir = wp_upload_dir();
|
927 |
$image_upload_path = $wp_upload_dir['path'];
|
928 |
|
929 |
if ( ! is_dir( $image_upload_path ) ) {
|
930 |
+
// phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged
|
931 |
if ( ! @mkdir( $image_upload_path, 0777, true ) ) {
|
932 |
+
die( 'Error: Failed to create upload folder ' . esc_html( $image_upload_path ) );
|
933 |
+
}
|
934 |
+
// phpcs:enable
|
935 |
+
}
|
936 |
+
|
937 |
+
global $wp_filesystem;
|
938 |
+
if ( ! $wp_filesystem ) {
|
939 |
+
if ( ! function_exists( 'WP_Filesystem' ) ) {
|
940 |
+
require_once ABSPATH . 'wp-admin/includes/file.php';
|
941 |
}
|
942 |
+
WP_Filesystem();
|
943 |
}
|
944 |
|
945 |
$target_file_name = $image_upload_path . '/' . $file_name;
|
946 |
+
$result = $wp_filesystem->put_contents( $target_file_name, $response['body'] );
|
947 |
+
//$result = @file_put_contents( $target_file_name, $response['body'] );
|
948 |
unset( $response['body'] );
|
949 |
+
if ( false === $result ) {
|
950 |
+
die( 'Error: Failed to write file ' . esc_html( $target_file_name ) );
|
951 |
}
|
952 |
|
953 |
// are we dealing with an image
|
954 |
+
require_once ABSPATH . 'wp-admin/includes/image.php';
|
955 |
if ( ! wp_read_image_metadata( $target_file_name ) ) {
|
956 |
unlink( $target_file_name );
|
957 |
die( 'Error: File is not an image.' );
|
962 |
// insert attachment
|
963 |
$wp_filetype = wp_check_filetype( basename( $target_file_name ), null );
|
964 |
$attachment = [
|
965 |
+
'guid' => $wp_upload_dir['url'] . '/' . basename( $target_file_name ),
|
966 |
+
'post_mime_type' => $wp_filetype['type'],
|
967 |
+
'post_title' => preg_replace( '/\.[^.]+$/', '', $image_title ),
|
968 |
+
'post_status' => 'inherit',
|
969 |
];
|
970 |
|
971 |
$attach_id = wp_insert_attachment( $attachment, $target_file_name, $postid );
|
972 |
+
if ( 0 === $attach_id ) {
|
973 |
die( 'Error: File attachment error' );
|
974 |
}
|
975 |
|
976 |
$attach_data = wp_generate_attachment_metadata( $attach_id, $target_file_name );
|
977 |
$result = wp_update_attachment_metadata( $attach_id, $attach_data );
|
978 |
if ( ! $result ) {
|
979 |
+
// die( 'Error: File attachment metadata error' );
|
980 |
}
|
981 |
|
982 |
$image_data = [];
|
983 |
$image_data['ID'] = $attach_id;
|
984 |
+
$image_data['post_excerpt'] = sanitize_text_field( wp_unslash( $_POST['excerpt'] ?? '' ) );
|
985 |
wp_update_post( $image_data );
|
986 |
|
987 |
+
echo (int) $attach_id;
|
988 |
|
989 |
exit;
|
990 |
}
|
992 |
|
993 |
/**
|
994 |
* AJAX загрузка шрифта
|
|
|
995 |
*/
|
996 |
public function upload_font() {
|
997 |
if ( ! wp_verify_nonce( $_POST['wpnonce'], 'wapt_upload_font' ) ) {
|
1001 |
if ( isset( $_POST['is_font_upload'] ) && count( $_FILES ) > 0 ) {
|
1002 |
$file = $_FILES[0];
|
1003 |
$upload_dir = wp_upload_dir();
|
1004 |
+
$upload_dir = $upload_dir['basedir'] . '/apt_fonts';
|
1005 |
if ( ! is_dir( $upload_dir ) ) {
|
1006 |
mkdir( $upload_dir, 0777 );
|
1007 |
}
|
1011 |
|
1012 |
// Проверка, что файл является шрифтом TrueType
|
1013 |
$header = file_get_contents( $file['tmp_name'], false, null, null, 4 );
|
1014 |
+
if ( $header !== "\x00\x01\x00\x00" && $header !== 'true' && $header !== 'typ1' ) {
|
1015 |
+
die( json_encode( [ 'error' => 'The uploaded file is not a TrueType font' ] ) );
|
1016 |
}
|
1017 |
+
// -----
|
1018 |
$path = pathinfo( $file['tmp_name'] );
|
1019 |
+
if ( $path['extension'] === 'php' || $path['extension'] === 'js' ) {
|
1020 |
+
die( json_encode( [ 'error' => 'The uploaded file is not a TrueType font.' ] ) );
|
1021 |
}
|
1022 |
|
1023 |
add_filter( 'upload_mimes', function ( $mime_types ) {
|
1039 |
}
|
1040 |
} else {
|
1041 |
$result = [ 'error' => $data['error'] ];
|
1042 |
+
}
|
1043 |
|
1044 |
die( json_encode( $result ) );
|
1045 |
}
|
1055 |
|
1056 |
/**
|
1057 |
* AJAX загрузка google
|
|
|
1058 |
*/
|
1059 |
public function apt_api_google() {
|
1060 |
|
1077 |
}
|
1078 |
|
1079 |
if ( isset( $_POST['watson'] ) ) {
|
1080 |
+
$query = isset( $_POST['query'] ) && ! empty( $_POST['query'] ) && (bool) $_POST['watson'] ? sanitize_text_field( $_POST['query'] ) : $post_title;
|
|
|
|
|
|
|
1081 |
} else {
|
1082 |
$query = sanitize_text_field( $_POST['query'] ?? '' );
|
1083 |
}
|
1084 |
|
1085 |
try {
|
1086 |
+
$response = ( new GoogleImages() )->search( $query, $query === $post_title ? $page + 1 : $page );
|
1087 |
|
1088 |
if ( isset( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ) {
|
1089 |
$response->limit( (int) $_POST['limit'] );
|
1102 |
}
|
1103 |
}
|
1104 |
} catch ( Exception $e ) {
|
1105 |
+
die( esc_html( $e->getMessage() ) );
|
1106 |
}
|
1107 |
|
1108 |
if ( $response->is_error() ) {
|
1115 |
|
1116 |
/**
|
1117 |
* Проверка API ключей
|
|
|
1118 |
*/
|
1119 |
public function apt_check_api_key() {
|
1120 |
|
1126 |
$key = trim( $_POST['key'] );
|
1127 |
$cx = trim( $_POST['key2'] );
|
1128 |
switch ( $provider ) {
|
1129 |
+
case 'google':
|
1130 |
$url = "https://www.googleapis.com/customsearch/v1?q=cat&key={$key}&cx={$cx}";
|
1131 |
|
1132 |
$response = wp_remote_get( $url, [ 'timeout' => 100 ] );
|
1133 |
if ( is_wp_error( $response ) ) {
|
1134 |
+
die( 'Error: ' . esc_html( $response->get_error_message() ) );
|
1135 |
}
|
1136 |
$result = json_decode( $response['body'] );
|
1137 |
+
echo (bool) ! isset( $result->error->errors );
|
1138 |
break;
|
1139 |
}
|
1140 |
exit;
|
1143 |
|
1144 |
public function check_api_notice( $notices, $plugin_name ) {
|
1145 |
// Если экшен вызывал не этот плагин, то не выводим это уведомления
|
1146 |
+
if ( $plugin_name !== \WAPT_Plugin::app()->getPluginName() ) {
|
1147 |
return $notices;
|
1148 |
}
|
1149 |
// Получаем заголовок плагина
|
1151 |
|
1152 |
if ( ! \WAPT_Plugin::app()->getPopulateOption( 'google_apikey' ) && ! \WAPT_Plugin::app()->getPopulateOption( 'google_cse' ) ) {
|
1153 |
// Задаем текст уведомления
|
1154 |
+
$notice_text = '<p><b>' . $plugin_title . ':</b> <br>' . sprintf( __( "To download images from Google, specify Google API keys in the <a href='%s'>settings</a>.", 'apt' ), admin_url( 'admin.php?page=wapt_settings-wbcr_apt' ) ) . '</p>';
|
1155 |
|
1156 |
// Задаем настройки уведомления
|
1157 |
$notices[] = [
|
1158 |
+
'id' => 'apt_check_api',
|
1159 |
+
// error, success, warning
|
1160 |
+
'type' => 'warning',
|
1161 |
+
'dismissible' => true,
|
1162 |
// На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
|
1163 |
+
'where' => [ 'plugins', 'dashboard', 'edit' ],
|
1164 |
// Через какое время уведомление снова появится?
|
1165 |
+
'dismiss_expires' => 0,
|
1166 |
+
'text' => $notice_text,
|
1167 |
+
'classes' => [],
|
1168 |
];
|
1169 |
}
|
1170 |
|
1178 |
*/
|
1179 |
public static function get_fonts() {
|
1180 |
$upload_dir = wp_upload_dir();
|
1181 |
+
$upload_dir_fonts = $upload_dir['basedir'] . '/apt_fonts';
|
1182 |
+
$plugin_dir_fonts = WAPT_PLUGIN_DIR . '/fonts';
|
1183 |
$fonts = [];
|
1184 |
|
1185 |
+
$fonts[] = [
|
1186 |
+
'title' => __( 'Standard', 'apt' ),
|
1187 |
+
'type' => 'group',
|
1188 |
+
];
|
1189 |
$files = scandir( $plugin_dir_fonts );
|
1190 |
foreach ( $files as $file ) {
|
1191 |
+
if ( $file === '.' || $file === '..' ) {
|
1192 |
continue;
|
1193 |
}
|
1194 |
$name = pathinfo( $plugin_dir_fonts . '/' . $file );
|
1195 |
$name = $name['filename'];
|
1196 |
+
$fonts[] = [
|
1197 |
+
'value' => $file,
|
1198 |
+
'title' => $name,
|
1199 |
+
];
|
1200 |
}
|
1201 |
|
1202 |
if ( is_dir( $upload_dir_fonts ) ) {
|
1203 |
$files = scandir( $upload_dir_fonts );
|
1204 |
}
|
1205 |
if ( count( $files ) && \WAPT_Plugin::app()->is_premium() ) {
|
1206 |
+
$fonts[] = [
|
1207 |
+
'title' => __( 'Uploaded', 'apt' ),
|
1208 |
+
'type' => 'group',
|
1209 |
+
];
|
1210 |
foreach ( $files as $file ) {
|
1211 |
+
if ( $file === '.' || $file === '..' ) {
|
1212 |
continue;
|
1213 |
}
|
1214 |
$name = pathinfo( $upload_dir_fonts . '/' . $file );
|
1215 |
$name = $name['filename'];
|
1216 |
+
$fonts[] = [
|
1217 |
+
'value' => $file,
|
1218 |
+
'title' => $name,
|
1219 |
+
];
|
1220 |
}
|
1221 |
}
|
1222 |
|
1236 |
* @return Image
|
1237 |
*/
|
1238 |
public static function generate_image_with_text( $text, $pathToSave = '', $format = 'jpg', $width = 0, $height = 0 ) {
|
1239 |
+
$font = WAPT_PLUGIN_DIR . '/fonts/Arial.ttf';
|
1240 |
$font_size = \WAPT_Plugin::app()->getPopulateOption( 'font-size', 25 );
|
1241 |
+
$font_color = \WAPT_Plugin::app()->getPopulateOption( 'font-color', '#ffffff' );
|
1242 |
+
if ( $width === 0 ) {
|
1243 |
$width = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-width', 800 );
|
1244 |
}
|
1245 |
+
if ( $height === 0 ) {
|
1246 |
$height = (int) \WAPT_Plugin::app()->getPopulateOption( 'image-height', 600 );
|
1247 |
}
|
1248 |
$before_text = '';
|
1251 |
if ( ! $shadow ) {
|
1252 |
$shadow_color = '';
|
1253 |
} else {
|
1254 |
+
$shadow_color = \WAPT_Plugin::app()->getPopulateOption( 'shadow-color', '#ffffff' );
|
1255 |
}
|
1256 |
|
1257 |
+
$background_type = 'color';
|
1258 |
+
$background = \WAPT_Plugin::app()->getPopulateOption( 'background-color', '#ff6262' );
|
1259 |
|
1260 |
+
$text_transform = \WAPT_Plugin::app()->getPopulateOption( 'text-transform', 'no' );
|
1261 |
switch ( $text_transform ) {
|
1262 |
case 'upper':
|
1263 |
$text = mb_strtoupper( $text );
|
1282 |
$line_spacing = \WAPT_Plugin::app()->getPopulateOption( 'text-line-spacing', 1.5 );
|
1283 |
|
1284 |
$params = [
|
1285 |
+
'text' => $text,
|
1286 |
+
'pathToSave' => $pathToSave,
|
1287 |
+
'format' => $format,
|
1288 |
+
'width' => $width,
|
1289 |
+
'height' => $height,
|
1290 |
];
|
1291 |
$image = new Image( $width, $height, $background, $font, $font_size, $font_color );
|
1292 |
$image->params = $params;
|
1315 |
public function generate_and_attachment( $post_id ) {
|
1316 |
$this->plugin->logger->info( "Start generate attachment for post ID = {$post_id}" );
|
1317 |
|
1318 |
+
$format = \WAPT_Plugin::app()->getPopulateOption( 'image-type', 'jpg' );
|
1319 |
switch ( $format ) {
|
1320 |
case 'png':
|
1321 |
$extension = 'png';
|
1322 |
+
$mime_type = 'image/png';
|
1323 |
break;
|
1324 |
case 'jpg':
|
1325 |
case 'jpeg':
|
1326 |
default:
|
1327 |
$extension = 'jpg';
|
1328 |
+
$mime_type = 'image/jpeg';
|
1329 |
break;
|
1330 |
}
|
1331 |
$post = get_post( $post_id, 'OBJECT' );
|
1353 |
|
1354 |
return $thumb_id;
|
1355 |
} else {
|
1356 |
+
$this->plugin->logger->error( 'Error generate attachment: ' . var_export( $thumb_id, true ) );
|
1357 |
}
|
1358 |
|
1359 |
return 0;
|
1387 |
$file_url = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $file_path );
|
1388 |
if ( file_exists( $file_path ) ) {
|
1389 |
$attachment = [
|
1390 |
+
'post_mime_type' => $mime_type,
|
1391 |
+
'guid' => $file_url,
|
1392 |
+
'post_parent' => $post->ID,
|
1393 |
+
'post_title' => $post->post_title,
|
1394 |
+
'post_content' => '',
|
1395 |
];
|
1396 |
|
1397 |
$thumb_id = wp_insert_attachment( $attachment, $file_path, $post->ID );
|
1398 |
|
1399 |
if ( ! is_wp_error( $thumb_id ) ) {
|
1400 |
+
require_once ABSPATH . '/wp-admin/includes/image.php';
|
1401 |
|
1402 |
// Added fix by misthero as suggested
|
1403 |
wp_update_attachment_metadata( $thumb_id, wp_generate_attachment_metadata( $thumb_id, $file_path ) );
|
includes/class-plugin.php
CHANGED
@@ -1,551 +1,556 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use WBCR\APT;
|
4 |
-
use WBCR\APT\PostImagesPro;
|
5 |
-
|
6 |
-
// Exit if accessed directly
|
7 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
-
exit;
|
9 |
-
}
|
10 |
-
|
11 |
-
/**
|
12 |
-
* Основной класс плагина Auto Featured Image
|
13 |
-
*
|
14 |
-
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
15 |
-
* @copyright (c) 2018 Webraftic Ltd
|
16 |
-
* @version 1.0
|
17 |
-
*/
|
18 |
-
class WAPT_Plugin extends
|
19 |
-
|
20 |
-
/**
|
21 |
-
* @see self::app()
|
22 |
-
* @var
|
23 |
-
*/
|
24 |
-
private static $app;
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @var WBCR\APT\AutoPostThumbnails
|
28 |
-
*/
|
29 |
-
public $apt;
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @var integer
|
33 |
-
*/
|
34 |
-
public $numberOfColumn;
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Конструктор
|
38 |
-
*
|
39 |
-
* Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
|
40 |
-
* Подробнее о свойстве $app см. self::app()
|
41 |
-
*
|
42 |
-
* @param string $plugin_path
|
43 |
-
* @param array $data
|
44 |
-
*
|
45 |
-
* @throws Exception
|
46 |
-
*/
|
47 |
-
public function __construct( $plugin_path, $data ) {
|
48 |
-
parent::__construct( $plugin_path, $data );
|
49 |
-
|
50 |
-
self::$app = $this;
|
51 |
-
|
52 |
-
if ( is_admin() ) {
|
53 |
-
// Регистрации класса активации/деактивации плагина
|
54 |
-
$this->initActivation();
|
55 |
-
|
56 |
-
$this->numberOfColumn = 4;
|
57 |
-
$this->apt = \WBCR\APT\AutoPostThumbnails::instance();
|
58 |
-
|
59 |
-
require
|
60 |
-
|
61 |
-
// Инициализация бэкенда
|
62 |
-
$this->admin_scripts();
|
63 |
-
}
|
64 |
-
|
65 |
-
if ( $this->doing_rest_api() ) {
|
66 |
-
require_once WAPT_PLUGIN_DIR .
|
67 |
-
$this->apt = \WBCR\APT\AutoPostThumbnails::instance();
|
68 |
-
}
|
69 |
-
|
70 |
-
$this->global_scripts();
|
71 |
-
}
|
72 |
-
|
73 |
-
/**
|
74 |
-
* Статический метод для быстрого доступа к интерфейсу плагина.
|
75 |
-
*
|
76 |
-
* @return
|
77 |
-
*/
|
78 |
-
public static function app() {
|
79 |
-
return self::$app;
|
80 |
-
}
|
81 |
-
|
82 |
-
/**
|
83 |
-
* Метод проверяет активацию премиум плагина и наличие действующего лицензионного ключа
|
84 |
-
*
|
85 |
-
* @return bool
|
86 |
-
*/
|
87 |
-
public function is_premium() {
|
88 |
-
if ( $this->premium->is_active() && $this->premium->is_activate() //&& $this->premium->is_install_package()
|
89 |
-
) {
|
90 |
-
return true;
|
91 |
-
} else {
|
92 |
-
return false;
|
93 |
-
}
|
94 |
-
}
|
95 |
-
|
96 |
-
/**
|
97 |
-
* Регистрации класса активации/деактивации плагина
|
98 |
-
*/
|
99 |
-
protected function initActivation() {
|
100 |
-
include_once
|
101 |
-
$this->registerActivation( 'WAPT_Activation' );
|
102 |
-
}
|
103 |
-
|
104 |
-
/**
|
105 |
-
* Регистрирует классы страниц в плагине
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
self::app()->registerPage( '
|
110 |
-
self::app()->registerPage( '
|
111 |
-
self::app()->registerPage( '
|
112 |
-
self::app()->registerPage( '
|
113 |
-
self::app()->registerPage( '
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
add_action( '
|
126 |
-
|
127 |
-
|
128 |
-
add_action( 'admin_notices', [ $this, '
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
add_action( '
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
add_filter( '
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
*
|
162 |
-
*
|
163 |
-
* @
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
*
|
180 |
-
*
|
181 |
-
* @
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
$pid =
|
193 |
-
}
|
194 |
-
|
195 |
-
|
196 |
-
$
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
*
|
273 |
-
*
|
274 |
-
* @
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
'
|
324 |
-
'
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
*
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
$apt_is_image
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
*
|
470 |
-
*
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
$compare = 'EXISTS';
|
489 |
-
}
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
$
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
*
|
532 |
-
*
|
533 |
-
*
|
534 |
-
*
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use WBCR\APT;
|
4 |
+
use WBCR\APT\PostImagesPro;
|
5 |
+
|
6 |
+
// Exit if accessed directly
|
7 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
+
exit;
|
9 |
+
}
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Основной класс плагина Auto Featured Image
|
13 |
+
*
|
14 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
15 |
+
* @copyright (c) 2018 Webraftic Ltd
|
16 |
+
* @version 1.0
|
17 |
+
*/
|
18 |
+
class WAPT_Plugin extends Wbcr_Factory453_Plugin {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @see self::app()
|
22 |
+
* @var Wbcr_Factory453_Plugin
|
23 |
+
*/
|
24 |
+
private static $app;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* @var WBCR\APT\AutoPostThumbnails
|
28 |
+
*/
|
29 |
+
public $apt;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var integer
|
33 |
+
*/
|
34 |
+
public $numberOfColumn;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Конструктор
|
38 |
+
*
|
39 |
+
* Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
|
40 |
+
* Подробнее о свойстве $app см. self::app()
|
41 |
+
*
|
42 |
+
* @param string $plugin_path
|
43 |
+
* @param array $data
|
44 |
+
*
|
45 |
+
* @throws Exception
|
46 |
+
*/
|
47 |
+
public function __construct( $plugin_path, $data ) {
|
48 |
+
parent::__construct( $plugin_path, $data );
|
49 |
+
|
50 |
+
self::$app = $this;
|
51 |
+
|
52 |
+
if ( is_admin() ) {
|
53 |
+
// Регистрации класса активации/деактивации плагина
|
54 |
+
$this->initActivation();
|
55 |
+
|
56 |
+
$this->numberOfColumn = 4;
|
57 |
+
$this->apt = \WBCR\APT\AutoPostThumbnails::instance();
|
58 |
+
|
59 |
+
require WAPT_PLUGIN_DIR . '/admin/ajax/check-license.php';
|
60 |
+
|
61 |
+
// Инициализация бэкенда
|
62 |
+
$this->admin_scripts();
|
63 |
+
}
|
64 |
+
|
65 |
+
if ( $this->doing_rest_api() ) {
|
66 |
+
require_once WAPT_PLUGIN_DIR . '/includes/class.generate-result.php';
|
67 |
+
$this->apt = \WBCR\APT\AutoPostThumbnails::instance();
|
68 |
+
}
|
69 |
+
|
70 |
+
$this->global_scripts();
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Статический метод для быстрого доступа к интерфейсу плагина.
|
75 |
+
*
|
76 |
+
* @return Wbcr_Factory453_Plugin
|
77 |
+
*/
|
78 |
+
public static function app() {
|
79 |
+
return self::$app;
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Метод проверяет активацию премиум плагина и наличие действующего лицензионного ключа
|
84 |
+
*
|
85 |
+
* @return bool
|
86 |
+
*/
|
87 |
+
public function is_premium() {
|
88 |
+
if ( $this->premium->is_active() && $this->premium->is_activate() //&& $this->premium->is_install_package()
|
89 |
+
) {
|
90 |
+
return true;
|
91 |
+
} else {
|
92 |
+
return false;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Регистрации класса активации/деактивации плагина
|
98 |
+
*/
|
99 |
+
protected function initActivation() {
|
100 |
+
include_once WAPT_PLUGIN_DIR . '/admin/class-wapt-activation.php';
|
101 |
+
$this->registerActivation( 'WAPT_Activation' );
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Регистрирует классы страниц в плагине
|
106 |
+
*/
|
107 |
+
private function register_pages() {
|
108 |
+
self::app()->registerPage( 'WAPT_Generate', WAPT_PLUGIN_DIR . '/admin/pages/generate.php' );
|
109 |
+
self::app()->registerPage( 'WAPT_Settings', WAPT_PLUGIN_DIR . '/admin/pages/settings.php' );
|
110 |
+
self::app()->registerPage( 'WAPT_ImageSettings', WAPT_PLUGIN_DIR . '/admin/pages/image.php' );
|
111 |
+
self::app()->registerPage( 'WAPT_License', WAPT_PLUGIN_DIR . '/admin/pages/license.php' );
|
112 |
+
self::app()->registerPage( 'WAPT_Log', WAPT_PLUGIN_DIR . '/admin/pages/log.php' );
|
113 |
+
self::app()->registerPage( 'WAPT_About', WAPT_PLUGIN_DIR . '/admin/pages/about.php' );
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
*/
|
118 |
+
private function admin_scripts() {
|
119 |
+
require_once WAPT_PLUGIN_DIR . '/includes/class.generate-result.php';
|
120 |
+
|
121 |
+
//$this->register_pages();
|
122 |
+
|
123 |
+
//------ ACTIONS ------
|
124 |
+
add_action( 'admin_init', [ $this, 'redirect_to_about_page' ] );
|
125 |
+
add_action( 'admin_menu', [ $this, 'my_custom_submenu_page' ] );
|
126 |
+
|
127 |
+
add_action( 'admin_notices', [ $this, 'check_perms' ] );
|
128 |
+
add_action( 'wbcr/factory/admin_notices', [ $this, 'show_about_notice' ], 10, 2 );
|
129 |
+
|
130 |
+
// Plugin hook for adding CSS and JS files required for this plugin
|
131 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_assets' ] );
|
132 |
+
add_action( 'wp_enqueue_media', [ $this, 'enqueue_media' ] );
|
133 |
+
|
134 |
+
//Hook to adding "image" column in Posts table
|
135 |
+
add_filter( 'manage_post_posts_columns', [ $this, 'add_image_column' ], 4 );
|
136 |
+
//Hook to filling "image" column in Posts table
|
137 |
+
add_action( 'manage_post_posts_custom_column', [ $this, 'fill_image_column' ], 5, 2 );
|
138 |
+
|
139 |
+
//ADD tab and button to medialibrary
|
140 |
+
add_filter( 'media_upload_tabs', [ $this, 'addTab' ] );
|
141 |
+
add_action( 'media_upload_apttab', [ $this, 'aptTabHandle' ] );
|
142 |
+
|
143 |
+
// filter posts
|
144 |
+
add_action( 'restrict_manage_posts', [ $this, 'add_posts_filters' ] );
|
145 |
+
add_action( 'pre_get_posts', [ $this, 'posts_filter' ], 10, 1 );
|
146 |
+
add_filter( 'views_edit-post', [ $this, 'add_filter_link' ], 10, 1 );
|
147 |
+
// bulk actions
|
148 |
+
add_filter( 'bulk_actions-edit-post', [ $this, 'register_bulk_action_generate' ] );
|
149 |
+
add_filter( 'handle_bulk_actions-edit-post', [ $this, 'bulk_action_generate_handler' ], 10, 3 );
|
150 |
+
add_action( 'admin_notices', [ $this, 'apt_bulk_action_admin_notice' ] );
|
151 |
+
add_action( 'admin_notices', [ $this, 'update_admin_notice' ] );
|
152 |
+
|
153 |
+
add_filter( 'plugin_action_links_' . WAPT_PLUGIN_BASENAME, [ $this, 'plugin_action_link' ] );
|
154 |
+
|
155 |
+
add_action( 'plugins_loaded', [ $this, 'plugins_loaded' ] );
|
156 |
+
}
|
157 |
+
|
158 |
+
/**
|
159 |
+
* Выполняет php сценарии, когда все WordPress плагины будут загружены
|
160 |
+
*
|
161 |
+
* @throws \Exception
|
162 |
+
* @since 1.0.0
|
163 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
164 |
+
*/
|
165 |
+
public function plugins_loaded() {
|
166 |
+
if ( is_admin() ) {
|
167 |
+
$this->register_pages();
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
*/
|
173 |
+
private function global_scripts() {
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Enqueue assets.
|
178 |
+
*
|
179 |
+
* @param $hook_suffix
|
180 |
+
*
|
181 |
+
* @return void
|
182 |
+
*/
|
183 |
+
public function enqueue_assets( $hook_suffix ) {
|
184 |
+
//Подключаем стили и скрипты всегда в админке
|
185 |
+
add_thickbox();
|
186 |
+
wp_enqueue_media();
|
187 |
+
wp_enqueue_script( 'apt-admin-script-thumbnail', WAPT_PLUGIN_URL . '/admin/assets/js/admin-thumbnail.js', [], false, true );
|
188 |
+
|
189 |
+
if ( isset( $_REQUEST['post'] ) ) {
|
190 |
+
$pid = intval( $_REQUEST['post'] );
|
191 |
+
} else {
|
192 |
+
$pid = 0;
|
193 |
+
}
|
194 |
+
$action_column_get_thumbnails = apply_filters( 'wapt/get-thumbnails/action', 'apt_get_thumbnail' );
|
195 |
+
|
196 |
+
$localize = [
|
197 |
+
'postid' => $pid,
|
198 |
+
'action_column_get_thumbnails' => $action_column_get_thumbnails,
|
199 |
+
];
|
200 |
+
|
201 |
+
if ( is_admin() ) {
|
202 |
+
wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
|
203 |
+
wp_enqueue_script( 'jquery-flex-images', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.flex-images.min.js', [ 'jquery' ], false, true );
|
204 |
+
wp_enqueue_style( 'style', WAPT_PLUGIN_URL . '/admin/assets/css/style.css' );
|
205 |
+
wp_enqueue_style( 'flex-images', WAPT_PLUGIN_URL . '/admin/assets/css/jquery.flex-images.css' );
|
206 |
+
|
207 |
+
$localize['button_text'] = __( 'Use as thumbnail', 'apt' );
|
208 |
+
$localize['modal_title'] = __( 'Change featured image', 'apt' );
|
209 |
+
}
|
210 |
+
|
211 |
+
wp_enqueue_script( 'apt-admin-check_api', WAPT_PLUGIN_URL . '/admin/assets/js/check-api.js', [], false, true );
|
212 |
+
wp_enqueue_script( 'apt-admin-search-page', WAPT_PLUGIN_URL . '/admin/assets/js/search-page.js', [], false, true );
|
213 |
+
|
214 |
+
wp_localize_script( 'apt-admin-script-thumbnail', 'apt', $localize );
|
215 |
+
//-----------------------------------
|
216 |
+
if ( 'settings_page_generate-post-thumbnails' != $hook_suffix ) {
|
217 |
+
return;
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
public function enqueue_media() {
|
222 |
+
global $post;
|
223 |
+
|
224 |
+
if ( is_plugin_active( 'dreamstime-stock-photos/dreamstime.php' ) && ! ( isset( $_GET['action'] ) && $_GET['action'] == 'elementor' ) ) {
|
225 |
+
wp_deregister_script( 'dreamstime-media-views' );
|
226 |
+
wp_enqueue_script( 'dreamstime-media-views', WAPT_PLUGIN_URL . '/admin/assets/js/dreamstime-media-views.js', [ 'jquery' ], false, true );
|
227 |
+
$handler = 'dreamstime-media-views';
|
228 |
+
} else {
|
229 |
+
wp_enqueue_script( 'apt-media-views', WAPT_PLUGIN_URL . '/admin/assets/js/media-views.js', [ 'jquery' ], false, true );
|
230 |
+
$handler = 'apt-media-views';
|
231 |
+
}
|
232 |
+
|
233 |
+
$apt_media_iframe_src = ! empty( $post ) ? get_admin_url( get_current_blog_id(), 'media-upload.php?chromeless=1&post_id=' . $post->ID . '&tab=apttab' ) : '';
|
234 |
+
wp_localize_script( $handler, 'apt_media_iframe', [ 'src' => esc_url( $apt_media_iframe_src ) ] );
|
235 |
+
}
|
236 |
+
|
237 |
+
/**
|
238 |
+
* Этот хук реализует условную логику, при которой пользователь периодически будет
|
239 |
+
* видеть страницу "О плагине", а конкретно при активации и обновлении плагина.
|
240 |
+
*/
|
241 |
+
public function redirect_to_about_page() {
|
242 |
+
// If the user has updated the plugin or activated it for the first time,
|
243 |
+
// you need to show the page "What's new?"
|
244 |
+
if ( ! $this->isNetworkAdmin() ) {
|
245 |
+
$about_page_viewed = $this->request->get( 'wapt_about_page_viewed', null );
|
246 |
+
$need_show_about = get_option( $this->getOptionName( 'whats_new_v360' ) );
|
247 |
+
if ( is_null( $about_page_viewed ) ) {
|
248 |
+
if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
|
249 |
+
try {
|
250 |
+
$redirect_url = '';
|
251 |
+
if ( class_exists( 'Wbcr_FactoryPages452' ) ) {
|
252 |
+
$redirect_url = admin_url( 'admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1' );
|
253 |
+
}
|
254 |
+
if ( $redirect_url ) {
|
255 |
+
wp_safe_redirect( $redirect_url );
|
256 |
+
die();
|
257 |
+
}
|
258 |
+
} catch ( Exception $e ) {
|
259 |
+
}
|
260 |
+
}
|
261 |
+
} else {
|
262 |
+
if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
|
263 |
+
delete_option( $this->getOptionName( 'whats_new_v360' ) );
|
264 |
+
}
|
265 |
+
}
|
266 |
+
}
|
267 |
+
}
|
268 |
+
|
269 |
+
/**
|
270 |
+
* Add subpage to media menu
|
271 |
+
*
|
272 |
+
* @param $hook_suffix
|
273 |
+
*
|
274 |
+
* @return void
|
275 |
+
*/
|
276 |
+
public function my_custom_submenu_page() {
|
277 |
+
add_media_page( __( 'Auto Featured Images', 'apt' ), __( 'Add from APT', 'apt' ), 'manage_options', 'menu-media-apt', [
|
278 |
+
$this->apt,
|
279 |
+
'addToMediaFromApt',
|
280 |
+
] );
|
281 |
+
}
|
282 |
+
|
283 |
+
/**
|
284 |
+
* Check whether the required directory structure is available so that the plugin can create thumbnails if needed.
|
285 |
+
* If not, don't allow plugin activation.
|
286 |
+
*/
|
287 |
+
public function check_perms() {
|
288 |
+
$uploads = wp_upload_dir( current_time( 'mysql' ) );
|
289 |
+
|
290 |
+
if ( $uploads['error'] ) {
|
291 |
+
echo '<div class="updated"><p>';
|
292 |
+
echo esc_html( $uploads['error'] );
|
293 |
+
|
294 |
+
if ( function_exists( 'deactivate_plugins' ) ) {
|
295 |
+
deactivate_plugins( 'auto-post-thumbnail/auto-post-thumbnail.php', 'auto-post-thumbnail.php' );
|
296 |
+
echo '<br /> ' . esc_html__( 'This plugin has been automatically deactivated.', 'apt' );
|
297 |
+
}
|
298 |
+
|
299 |
+
echo '</p></div>';
|
300 |
+
}
|
301 |
+
}
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Show about notice
|
305 |
+
*
|
306 |
+
* @param array $notices Notices list
|
307 |
+
* @param string $plugin_name Plugin name
|
308 |
+
*
|
309 |
+
* @return array
|
310 |
+
*/
|
311 |
+
public function show_about_notice( $notices, $plugin_name ) {
|
312 |
+
// Если экшен вызывал не этот плагин, то не выводим это уведомления
|
313 |
+
if ( $plugin_name !== $this->getPluginName() ) {
|
314 |
+
return $notices;
|
315 |
+
}
|
316 |
+
// Получаем заголовок плагина
|
317 |
+
$plugin_title = $this->getPluginTitle();
|
318 |
+
|
319 |
+
$notice_text = '<p><b>' . $plugin_title . ':</b> ' . sprintf( __( "What's new in version 3.7.0? Find out from <a href='%s'>the article</a> on our website.", 'apt' ), 'https://cm-wp.com/auto-featured-image-from-title/' ) . '</p>';
|
320 |
+
$notices[] = [
|
321 |
+
'id' => 'apt_show_about_370',
|
322 |
+
//error, success, warning
|
323 |
+
'type' => 'info',
|
324 |
+
'dismissible' => true,
|
325 |
+
// На каких страницах показывать уведомление ('plugins', 'dashboard', 'edit')
|
326 |
+
'where' => [ 'plugins', 'dashboard', 'edit' ],
|
327 |
+
// Через какое время уведомление снова появится?
|
328 |
+
'dismiss_expires' => 0,
|
329 |
+
'text' => $notice_text,
|
330 |
+
'classes' => [],
|
331 |
+
];
|
332 |
+
|
333 |
+
return $notices;
|
334 |
+
}
|
335 |
+
|
336 |
+
/**
|
337 |
+
* Function for adding "image" column in Posts table
|
338 |
+
*
|
339 |
+
* @param array $columns
|
340 |
+
*
|
341 |
+
* @return array
|
342 |
+
*/
|
343 |
+
public function add_image_column( $columns ) {
|
344 |
+
$pro = $this->is_premium() ? '' : ' <sup class="wapt-sup-pro">(PRO)<sup>';
|
345 |
+
|
346 |
+
$new_columns = [ 'apt-image' => __( 'Image', 'apt' ) . $pro ];
|
347 |
+
|
348 |
+
return array_slice( $columns, 0, $this->numberOfColumn ) + $new_columns + array_slice( $columns, $this->numberOfColumn );
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Function to filling "image" column in Posts table
|
353 |
+
*
|
354 |
+
* @param string $colname
|
355 |
+
* @param int $post_id
|
356 |
+
*/
|
357 |
+
public function fill_image_column( $colname, $post_id ) {
|
358 |
+
if ( 'apt-image' === $colname ) {
|
359 |
+
$thumb_id = get_post_thumbnail_id( $post_id );
|
360 |
+
echo $this->apt->apt_getThumbHtml( $post_id, $thumb_id ); // phpcs:ignore
|
361 |
+
}
|
362 |
+
}
|
363 |
+
|
364 |
+
/**
|
365 |
+
* Добавляет вкладку в медиабиблиотеку
|
366 |
+
*
|
367 |
+
* @param $tabs
|
368 |
+
*
|
369 |
+
* @return array
|
370 |
+
*/
|
371 |
+
public function addTab( $tabs ) {
|
372 |
+
$tabs['apttab'] = __( 'Auto Featured Image', 'apt' );
|
373 |
+
|
374 |
+
return ( $tabs );
|
375 |
+
}
|
376 |
+
|
377 |
+
/**
|
378 |
+
* Обработчик вывода во вкладку
|
379 |
+
*/
|
380 |
+
public function aptTabHandle() {
|
381 |
+
// wp_iframe() adds css for "media" when callback function has "media_" as prefix
|
382 |
+
wp_iframe( [ $this->apt, 'media_AptTabContent' ] );
|
383 |
+
}
|
384 |
+
|
385 |
+
/**
|
386 |
+
* Register bulk option for posts
|
387 |
+
*
|
388 |
+
* @return array(string)
|
389 |
+
*/
|
390 |
+
public function register_bulk_action_generate( $bulk_actions ) {
|
391 |
+
$bulk_actions['apt_generate_thumb'] = __( 'Generate featured image', 'apt' );
|
392 |
+
$bulk_actions['apt_delete_thumb'] = __( 'Unset featured image', 'apt' );
|
393 |
+
$bulk_actions['apt_add_images'] = __( 'Upload post images', 'apt' );
|
394 |
+
|
395 |
+
return $bulk_actions;
|
396 |
+
}
|
397 |
+
|
398 |
+
/**
|
399 |
+
* Handler of bulk option for posts
|
400 |
+
*
|
401 |
+
* @return string
|
402 |
+
*/
|
403 |
+
public function bulk_action_generate_handler( $redirect_to, $doaction, $post_ids ) {
|
404 |
+
|
405 |
+
foreach ( $post_ids as $post_id ) {
|
406 |
+
switch ( $doaction ) {
|
407 |
+
case 'apt_add_images':
|
408 |
+
do_action( 'wapt/upload_and_replace_post_images', $post_id );
|
409 |
+
break;
|
410 |
+
case 'apt_generate_thumb':
|
411 |
+
$this->apt->publish_post( $post_id );
|
412 |
+
break;
|
413 |
+
case 'apt_delete_thumb':
|
414 |
+
delete_post_thumbnail( $post_id );
|
415 |
+
break;
|
416 |
+
default:
|
417 |
+
return $redirect_to;
|
418 |
+
}
|
419 |
+
}
|
420 |
+
|
421 |
+
$redirect_to = add_query_arg( [
|
422 |
+
'apt_bulk_action' => count( $post_ids ),
|
423 |
+
], $redirect_to );
|
424 |
+
|
425 |
+
return $redirect_to;
|
426 |
+
}
|
427 |
+
|
428 |
+
/**
|
429 |
+
* Admin notice after bulk action
|
430 |
+
*/
|
431 |
+
public function apt_bulk_action_admin_notice() {
|
432 |
+
if ( empty( $_GET['apt_bulk_action'] ) ) {
|
433 |
+
return;
|
434 |
+
}
|
435 |
+
|
436 |
+
$data = intval( $_GET['apt_bulk_action'] );
|
437 |
+
$msg = __( 'Processed posts: ', 'apt' ) . $data;
|
438 |
+
echo '<div id="message" class="updated"><p>' . wp_kses_post( $msg ) . '</p></div>';
|
439 |
+
}
|
440 |
+
|
441 |
+
/**
|
442 |
+
* Admin notice
|
443 |
+
*/
|
444 |
+
public function update_admin_notice() {
|
445 |
+
if ( defined( 'WAPTP_PLUGIN_VERSION' ) && str_replace( '.', '', WAPTP_PLUGIN_VERSION ) < 130 ) {
|
446 |
+
$msg = __( 'To use premium features, update the <b>Auto Featured Image Premium</b> plugin!', 'apt' );
|
447 |
+
echo '<div id="message" class="notice notice-warning is-dismissible"><p>' . wp_kses_post( $msg ) . '</p></div>';
|
448 |
+
}
|
449 |
+
}
|
450 |
+
|
451 |
+
/**
|
452 |
+
* Add filter on the Posts list tables.
|
453 |
+
*/
|
454 |
+
public function add_posts_filters() {
|
455 |
+
$screen = get_current_screen();
|
456 |
+
|
457 |
+
if ( ! empty( $screen ) && 'post' === $screen->post_type ) {
|
458 |
+
$apt_is_image = false;
|
459 |
+
if ( isset( $_GET['apt_is_image'] ) ) {
|
460 |
+
$apt_is_image = absint( $_GET['apt_is_image'] );
|
461 |
+
}
|
462 |
+
|
463 |
+
echo '<select name="apt_is_image"><option value="-1">' . esc_html__( 'Featured Image', 'apt' ) . '</option><option value="1" ' . selected( 1, $apt_is_image, 0 ) . '>' . esc_html__( 'With image', 'apt' ) . '</option><option value="0" ' . selected( 0, $apt_is_image, 0 ) . '>' . esc_html__( 'Without image', 'apt' ) . '</option></select>';
|
464 |
+
}
|
465 |
+
}
|
466 |
+
|
467 |
+
/**
|
468 |
+
* Filter the Posts list tables.
|
469 |
+
*
|
470 |
+
* @param $query \WP_Query
|
471 |
+
*/
|
472 |
+
public function posts_filter( $query ) {
|
473 |
+
if ( ! is_admin() ) {
|
474 |
+
return;
|
475 |
+
} // выходим если не админка
|
476 |
+
|
477 |
+
// убедимся что мы на нужной странице админки
|
478 |
+
require_once ABSPATH . 'wp-admin/includes/screen.php';
|
479 |
+
$cs = get_current_screen();
|
480 |
+
if ( empty( $cs->post_type ) || 'post' !== $cs->post_type || 'edit-post' !== $cs->id ) {
|
481 |
+
return;
|
482 |
+
}
|
483 |
+
|
484 |
+
if ( isset( $_GET['apt_is_image'] ) && $_GET['apt_is_image'] != - 1 ) {
|
485 |
+
if ( (int) $_GET['apt_is_image'] == 1 ) {
|
486 |
+
$compare = 'EXISTS';
|
487 |
+
} else {
|
488 |
+
$compare = 'NOT EXISTS';
|
489 |
+
}
|
490 |
+
$query->set( 'meta_query', [
|
491 |
+
[
|
492 |
+
'key' => '_thumbnail_id',
|
493 |
+
'compare' => $compare,
|
494 |
+
],
|
495 |
+
] );
|
496 |
+
}
|
497 |
+
}
|
498 |
+
|
499 |
+
/**
|
500 |
+
* Add filter on the Posts list tables.
|
501 |
+
*/
|
502 |
+
public function add_filter_link( $views ) {
|
503 |
+
$query = $this->apt->get_posts_query( false, 'post', 'publish' );
|
504 |
+
$posts = $query->post_count;
|
505 |
+
|
506 |
+
$q = add_query_arg( [
|
507 |
+
'apt_is_image' => '0',
|
508 |
+
'post_type' => 'post',
|
509 |
+
], 'edit.php' );
|
510 |
+
$views['apt_filter'] = '<a href="' . $q . '">' . __( 'Without featured image', 'apt' ) . '</a> (' . $posts . ')';
|
511 |
+
unset( $my );
|
512 |
+
|
513 |
+
return $views;
|
514 |
+
}
|
515 |
+
|
516 |
+
/**
|
517 |
+
* Adds the plugin action link on Plugins table
|
518 |
+
*
|
519 |
+
* @param array $links links array
|
520 |
+
*
|
521 |
+
* @return array
|
522 |
+
*/
|
523 |
+
public function plugin_action_link( $links ) {
|
524 |
+
$link_generate = '<a href="' . esc_url( $this->getPluginPageUrl( $this->getPrefix() . 'generate' ) ) . '">' . esc_html__( 'Generate', 'apt' ) . '</a>';
|
525 |
+
array_unshift( $links, $link_generate );
|
526 |
+
|
527 |
+
return $links;
|
528 |
+
}
|
529 |
+
|
530 |
+
/**
|
531 |
+
* Checks if the current request is a WP REST API request.
|
532 |
+
*
|
533 |
+
* Case #1: After WP_REST_Request initialisation
|
534 |
+
* Case #2: Support "plain" permalink settings
|
535 |
+
* Case #3: URL Path begins with wp-json/ (your REST prefix)
|
536 |
+
* Also supports WP installations in subfolders
|
537 |
+
*
|
538 |
+
* @author matzeeable https://wordpress.stackexchange.com/questions/221202/does-something-like-is-rest-exist
|
539 |
+
* @return boolean
|
540 |
+
*/
|
541 |
+
public function doing_rest_api() {
|
542 |
+
$prefix = rest_get_url_prefix();
|
543 |
+
$rest_route = $this->request->get( 'rest_route', null );
|
544 |
+
if ( defined( 'REST_REQUEST' ) && REST_REQUEST // (#1)
|
545 |
+
|| ! is_null( $rest_route ) // (#2)
|
546 |
+
&& strpos( trim( $rest_route, '\\/' ), $prefix, 0 ) === 0 ) {
|
547 |
+
return true;
|
548 |
+
}
|
549 |
+
|
550 |
+
// (#3)
|
551 |
+
$rest_url = wp_parse_url( site_url( $prefix ) );
|
552 |
+
$current_url = wp_parse_url( add_query_arg( [] ) );
|
553 |
+
|
554 |
+
return strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
|
555 |
+
}
|
556 |
+
}
|
includes/class-post-images.php
CHANGED
@@ -1,164 +1,174 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WBCR\APT;
|
4 |
-
|
5 |
-
use WP_Post, WP_Error;
|
6 |
-
|
7 |
-
// Exit if accessed directly
|
8 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
-
exit;
|
10 |
-
}
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
*
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
$this->post = $post;
|
43 |
-
}
|
44 |
-
$
|
45 |
-
|
46 |
-
|
47 |
-
$
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
$
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
'
|
81 |
-
'
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
$this->
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
*
|
93 |
-
*
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
*
|
102 |
-
*
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
*
|
111 |
-
*
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
*
|
120 |
-
*
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
* @param string $
|
129 |
-
* @param
|
130 |
-
*
|
131 |
-
*
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
$
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
$
|
144 |
-
$file_path =
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
* @param string $
|
152 |
-
*
|
153 |
-
*
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
$
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\APT;
|
4 |
+
|
5 |
+
use WP_Post, WP_Error;
|
6 |
+
|
7 |
+
// Exit if accessed directly
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Post images class
|
14 |
+
*/
|
15 |
+
class PostImages {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @var \WAPT_Plugin
|
19 |
+
*/
|
20 |
+
private $plugin;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @var WP_Post
|
24 |
+
*/
|
25 |
+
public $post;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @var array
|
29 |
+
*/
|
30 |
+
private $images = [];
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Post Images constructor.
|
34 |
+
*
|
35 |
+
* @param WP_Post|int|string $post Post object or post ID or post content
|
36 |
+
*/
|
37 |
+
public function __construct( $post = null ) {
|
38 |
+
$this->plugin = \WAPT_Plugin::app();
|
39 |
+
|
40 |
+
if ( is_numeric( $post ) ) {
|
41 |
+
$post = get_post( $post, 'OBJECT' );
|
42 |
+
$this->post = $post;
|
43 |
+
} elseif ( is_object( $post ) ) {
|
44 |
+
$this->post = $post;
|
45 |
+
} elseif ( is_string( $post ) ) {
|
46 |
+
$new_post = new \stdClass();
|
47 |
+
$new_post->post_content = $post;
|
48 |
+
|
49 |
+
$this->post = new WP_Post( $new_post );
|
50 |
+
}
|
51 |
+
|
52 |
+
$this->find_images();
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Get an array of images url, contained in the post
|
57 |
+
*/
|
58 |
+
private function find_images() {
|
59 |
+
$matches = [];
|
60 |
+
$images = [];
|
61 |
+
|
62 |
+
//do shortcodes before search images
|
63 |
+
$post_content = do_shortcode( $this->post->post_content ?? '' );
|
64 |
+
|
65 |
+
// Get all images from post's body
|
66 |
+
preg_match_all( '/<\s*img .*?src\s*=\s*[\"\']?([^\"\'> ]*).*?>/i', $post_content, $matches );
|
67 |
+
|
68 |
+
if ( count( $matches ) ) {
|
69 |
+
//$this->plugin->logger->debug( "Found from regex: " . var_export( $matches[0], true ) );
|
70 |
+
|
71 |
+
foreach ( $matches[0] as $key => $image ) {
|
72 |
+
$title = '';
|
73 |
+
preg_match_all( '/<\s*img [^\>]*title\s*=\s*[\"\']?([^\"\'> ]*)/i', $image, $matches_title );
|
74 |
+
|
75 |
+
if ( count( $matches_title ) && isset( $matches_title[1] ) && isset( $matches_title[1][ $key ] ) ) {
|
76 |
+
$title = $matches[1][ $key ];
|
77 |
+
}
|
78 |
+
|
79 |
+
$images[] = [
|
80 |
+
'tag' => $image,
|
81 |
+
'url' => $matches[1][ $key ],
|
82 |
+
'title' => $title,
|
83 |
+
];
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
$this->images = $images;
|
88 |
+
$this->plugin->logger->debug( 'Found images: ' . var_export( $images, true ) );
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Get the post object
|
93 |
+
*
|
94 |
+
* @return WP_Post
|
95 |
+
*/
|
96 |
+
public function get_post() {
|
97 |
+
return $this->post;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Get an array of images url, contained in the post
|
102 |
+
*
|
103 |
+
* @return array
|
104 |
+
*/
|
105 |
+
public function get_images() {
|
106 |
+
return $this->images;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Get count of images url, contained in the post
|
111 |
+
*
|
112 |
+
* @return int
|
113 |
+
*/
|
114 |
+
public function count_images() {
|
115 |
+
return count( $this->images );
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* If images is founded in post
|
120 |
+
*
|
121 |
+
* @return bool
|
122 |
+
*/
|
123 |
+
public function is_images() {
|
124 |
+
return (bool) $this->count_images();
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* @param string $image Image path
|
129 |
+
* @param string $suffix Slug suffix
|
130 |
+
* @param WP_Post $post Post object
|
131 |
+
*
|
132 |
+
* @return string
|
133 |
+
*/
|
134 |
+
public function unique_filepath( $image, $suffix = 'image', $post = null ) {
|
135 |
+
if ( ! $post ) {
|
136 |
+
$post = $this->get_post();
|
137 |
+
}
|
138 |
+
|
139 |
+
$uploads = wp_upload_dir( current_time( 'mysql' ) );
|
140 |
+
$extension = pathinfo( $image, PATHINFO_EXTENSION );
|
141 |
+
|
142 |
+
//$slug = wp_unique_post_slug( $post->post_title, $post->ID, $post->post_status, $post->post_type, $post->post_parent );
|
143 |
+
$slug = "wapt_{$suffix}";
|
144 |
+
$file_path = wp_unique_filename( $uploads['path'], "{$slug}_{$post->post_type}_{$post->ID}.{$extension}" );
|
145 |
+
$file_path = "{$uploads['path']}/{$file_path}";
|
146 |
+
|
147 |
+
return $file_path;
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* @param string $url URL
|
152 |
+
* @param string $path_to Path to download
|
153 |
+
*
|
154 |
+
* @return bool
|
155 |
+
*/
|
156 |
+
public function download( $url, $path_to ) {
|
157 |
+
$response = wp_remote_get( $url );
|
158 |
+
if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
|
159 |
+
$body = wp_remote_retrieve_body( $response );
|
160 |
+
|
161 |
+
global $wp_filesystem;
|
162 |
+
if ( ! $wp_filesystem ) {
|
163 |
+
if ( ! function_exists( 'WP_Filesystem' ) ) {
|
164 |
+
require_once ABSPATH . 'wp-admin/includes/file.php';
|
165 |
+
}
|
166 |
+
WP_Filesystem();
|
167 |
+
}
|
168 |
+
|
169 |
+
$downloaded = $path_to ? $wp_filesystem->put_contents( $path_to, $body ) : false;
|
170 |
+
}
|
171 |
+
|
172 |
+
return isset( $downloaded ) ? (bool) $downloaded : false;
|
173 |
+
}
|
174 |
+
}
|
includes/class-wapt-image.php
CHANGED
@@ -1,468 +1,468 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
*
|
14 |
-
*
|
15 |
-
* @
|
16 |
-
* @
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
* @
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
* @param string $
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
$this->
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
*
|
133 |
-
*
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
*
|
170 |
-
*
|
171 |
-
* @param string $
|
172 |
-
* @param
|
173 |
-
* @param string $
|
174 |
-
* @param
|
175 |
-
* @param
|
176 |
-
*
|
177 |
-
*/
|
178 |
-
public function __construct( $width, $height, $background = '#ffffff', $font = '', $font_size = 0, $font_color = '#000000' ) {
|
179 |
-
self::$app = $this;
|
180 |
-
|
181 |
-
$this->width = $width;
|
182 |
-
$this->height = $height;
|
183 |
-
$this->background = $background;
|
184 |
-
$this->font_path = $font;
|
185 |
-
$this->font_size = $font_size;
|
186 |
-
$this->font_color = $font_color;
|
187 |
-
|
188 |
-
$this->image = $this->create( $width, $height, $background );
|
189 |
-
}
|
190 |
-
|
191 |
-
/**
|
192 |
-
* Статический метод для быстрого доступа к интерфейсу плагина.
|
193 |
-
*
|
194 |
-
* @return Image
|
195 |
-
*/
|
196 |
-
public static function app() {
|
197 |
-
return self::$app;
|
198 |
-
}
|
199 |
-
|
200 |
-
/**
|
201 |
-
* Create image
|
202 |
-
*
|
203 |
-
* @return Resource
|
204 |
-
*/
|
205 |
-
public function create( $width, $height, $background = '#ffffff' ) {
|
206 |
-
if ( is_numeric( $background ) ) //image
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
$upload_dir
|
211 |
-
$
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
$
|
216 |
-
$this->
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
$im
|
222 |
-
|
223 |
-
$this->
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
$
|
236 |
-
$
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
*
|
246 |
-
*
|
247 |
-
*
|
248 |
-
*
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
'
|
259 |
-
'
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
*
|
266 |
-
*
|
267 |
-
*
|
268 |
-
* '
|
269 |
-
*
|
270 |
-
*
|
271 |
-
*
|
272 |
-
*
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
$
|
281 |
-
$
|
282 |
-
$
|
283 |
-
|
284 |
-
'
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
*
|
296 |
-
*
|
297 |
-
* @param string $
|
298 |
-
* @param
|
299 |
-
* @param
|
300 |
-
* @param string $
|
301 |
-
* @param string $
|
302 |
-
* @param
|
303 |
-
* @param
|
304 |
-
*
|
305 |
-
*
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
$this->
|
322 |
-
|
323 |
-
|
324 |
-
$
|
325 |
-
|
326 |
-
|
327 |
-
$
|
328 |
-
|
329 |
-
|
330 |
-
$
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
$
|
336 |
-
|
337 |
-
|
338 |
-
$
|
339 |
-
$text2 =
|
340 |
-
$
|
341 |
-
$
|
342 |
-
$
|
343 |
-
|
344 |
-
$
|
345 |
-
$w
|
346 |
-
|
347 |
-
$
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
$this->
|
356 |
-
$
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
$
|
362 |
-
$
|
363 |
-
$
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
$
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
$
|
377 |
-
$
|
378 |
-
|
379 |
-
$
|
380 |
-
|
381 |
-
switch ( $align . '-' . $valign ) {
|
382 |
-
case 'left-top':
|
383 |
-
$x = $pad_left;
|
384 |
-
$y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
|
385 |
-
break;
|
386 |
-
case 'left-center':
|
387 |
-
$x = $pad_left;
|
388 |
-
$y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
|
389 |
-
break;
|
390 |
-
case 'left-bottom':
|
391 |
-
$x = $pad_left;
|
392 |
-
$y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
|
393 |
-
break;
|
394 |
-
//-------------------------
|
395 |
-
case 'center-top':
|
396 |
-
$x = ceil( $width / 2 - $w / 2 );
|
397 |
-
$y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
|
398 |
-
break;
|
399 |
-
case 'center-center':
|
400 |
-
$x = ceil( $width / 2 - $w / 2 );
|
401 |
-
$y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
|
402 |
-
break;
|
403 |
-
case 'center-bottom':
|
404 |
-
$x = ceil( $width / 2 - $w / 2 );
|
405 |
-
$y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
|
406 |
-
break;
|
407 |
-
//-------------------------
|
408 |
-
case 'right-top':
|
409 |
-
$x = $width - $w - $pad_left;
|
410 |
-
$y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
|
411 |
-
break;
|
412 |
-
case 'right-center':
|
413 |
-
$x = $width - $w - $pad_left;
|
414 |
-
$y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
|
415 |
-
break;
|
416 |
-
case 'right-bottom':
|
417 |
-
$x = $width - $w - $pad_left;
|
418 |
-
$y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
|
419 |
-
break;
|
420 |
-
}
|
421 |
-
//shadow
|
422 |
-
if ( ! empty( $shadow_color ) ) {
|
423 |
-
imagettftext( $this->image, $font_size, 0, $x + 2, $y + 2, $shadow_color, $font, trim( $line ) );
|
424 |
-
}
|
425 |
-
|
426 |
-
//text
|
427 |
-
imagettftext( $this->image, $font_size, 0, (int) $x, (int) $y, $font_color, $font, trim( $line ) );
|
428 |
-
//imagerectangle($this->image, 0,$y,$width,$y, 1);
|
429 |
-
//imagerectangle($this->image, 0,$height/2,$width,$height/2, 2);
|
430 |
-
}
|
431 |
-
|
432 |
-
return true;
|
433 |
-
} else {
|
434 |
-
return false;
|
435 |
-
}
|
436 |
-
}
|
437 |
-
|
438 |
-
/**
|
439 |
-
* Save image
|
440 |
-
*
|
441 |
-
* @param string $text
|
442 |
-
*
|
443 |
-
* @return string
|
444 |
-
*/
|
445 |
-
public function commas_cut( $text ) {
|
446 |
-
return str_replace( ',', '', $text );
|
447 |
-
}
|
448 |
-
|
449 |
-
/**
|
450 |
-
* Save image
|
451 |
-
*
|
452 |
-
* @param string $path
|
453 |
-
* @param integer $quality
|
454 |
-
* @param string $format
|
455 |
-
*/
|
456 |
-
public function save( $path, $quality = 100, $format = 'jpg' ) {
|
457 |
-
switch ( strtolower( $format ) ) {
|
458 |
-
case 'jpg':
|
459 |
-
case 'jpeg':
|
460 |
-
imagejpeg( $this->image, $path, $quality );
|
461 |
-
break;
|
462 |
-
case 'png':
|
463 |
-
imagepng( $this->image, $path );
|
464 |
-
break;
|
465 |
-
}
|
466 |
-
}
|
467 |
-
|
468 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\APT;
|
4 |
+
|
5 |
+
use WAPT_Plugin, Exception;
|
6 |
+
|
7 |
+
// Exit if accessed directly
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Class for image processing
|
14 |
+
*
|
15 |
+
* @author Artem Prikhodko <webtemyk@yandex.ru>
|
16 |
+
* @copyright (c) 2020 Webraftic Ltd
|
17 |
+
* @version 1.0
|
18 |
+
*/
|
19 |
+
class Image {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @see self::app()
|
23 |
+
* @var Image
|
24 |
+
*/
|
25 |
+
private static $app;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @var integer
|
29 |
+
*/
|
30 |
+
public $width;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @var integer
|
34 |
+
*/
|
35 |
+
public $height;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @var string
|
39 |
+
*/
|
40 |
+
private $font_path = WAPT_PLUGIN_DIR . '/fonts/arial.ttf';
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var integer
|
44 |
+
*/
|
45 |
+
public $font_size;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var string|array
|
49 |
+
*/
|
50 |
+
public $font_color;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @var string
|
54 |
+
*/
|
55 |
+
public $text;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @var string
|
59 |
+
*/
|
60 |
+
public $background;
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @var string
|
64 |
+
*/
|
65 |
+
private $reference_text = 'abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ-!?.,_"[]';
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @var Resource
|
69 |
+
*/
|
70 |
+
private $image;
|
71 |
+
|
72 |
+
/**
|
73 |
+
* @var string
|
74 |
+
*/
|
75 |
+
public $padding_left = 0;
|
76 |
+
|
77 |
+
/**
|
78 |
+
* @var string
|
79 |
+
*/
|
80 |
+
public $padding_top = 0;
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @var string
|
84 |
+
*/
|
85 |
+
public $line_spacing = 1;
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @var array
|
89 |
+
*/
|
90 |
+
public $params = array();
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @return
|
94 |
+
*/
|
95 |
+
public function getImage() {
|
96 |
+
return $this->image;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* @param string $padding_left
|
101 |
+
* @param string $padding_top
|
102 |
+
*/
|
103 |
+
public function setPadding( $padding_left, $padding_top ) {
|
104 |
+
$this->padding_left = $padding_left;
|
105 |
+
$this->padding_top = $padding_top;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* @param int $width
|
110 |
+
*/
|
111 |
+
public function setWidth( $width ) {
|
112 |
+
$this->width = $width;
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* @param int $height
|
117 |
+
*/
|
118 |
+
public function setHeight( $height ) {
|
119 |
+
$this->height = $height;
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* @param string $font_path
|
124 |
+
*/
|
125 |
+
public function setFontPath( $font_path ) {
|
126 |
+
if ( file_exists( $font_path ) ) {
|
127 |
+
$this->font_path = $font_path;
|
128 |
+
}
|
129 |
+
}
|
130 |
+
|
131 |
+
/**
|
132 |
+
* {PLUGIN_DIR}/fonts/{font}.ttf
|
133 |
+
*
|
134 |
+
* @param string $font
|
135 |
+
*/
|
136 |
+
public function setFont( $font ) {
|
137 |
+
$this->font_path = WAPT_PLUGIN_DIR . "/fonts/{$font}.ttf";
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* @param int $font_size
|
142 |
+
*/
|
143 |
+
public function setFontSize( $font_size ) {
|
144 |
+
$this->font_size = $font_size;
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* @param array|string $font_color
|
149 |
+
*/
|
150 |
+
public function setFontColor( $font_color ) {
|
151 |
+
$this->font_color = $font_color;
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* @param string $text
|
156 |
+
*/
|
157 |
+
public function setText( $text ) {
|
158 |
+
$this->text = $text;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* @param array|string $background
|
163 |
+
*/
|
164 |
+
public function setBackground( $background ) {
|
165 |
+
$this->background = $background;
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* Конструктор
|
170 |
+
*
|
171 |
+
* @param string $width
|
172 |
+
* @param string $height
|
173 |
+
* @param array|string $background = '#ffffff'
|
174 |
+
* @param string $font = ''
|
175 |
+
* @param integer $font_size = 0
|
176 |
+
* @param string $font_color = '#000000'
|
177 |
+
*/
|
178 |
+
public function __construct( $width, $height, $background = '#ffffff', $font = '', $font_size = 0, $font_color = '#000000' ) {
|
179 |
+
self::$app = $this;
|
180 |
+
|
181 |
+
$this->width = $width;
|
182 |
+
$this->height = $height;
|
183 |
+
$this->background = $background;
|
184 |
+
$this->font_path = $font;
|
185 |
+
$this->font_size = $font_size;
|
186 |
+
$this->font_color = $font_color;
|
187 |
+
|
188 |
+
$this->image = $this->create( $width, $height, $background );
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* Статический метод для быстрого доступа к интерфейсу плагина.
|
193 |
+
*
|
194 |
+
* @return Image
|
195 |
+
*/
|
196 |
+
public static function app() {
|
197 |
+
return self::$app;
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Create image
|
202 |
+
*
|
203 |
+
* @return Resource
|
204 |
+
*/
|
205 |
+
public function create( $width, $height, $background = '#ffffff' ) {
|
206 |
+
if ( is_numeric( $background ) ) { //image
|
207 |
+
$image = wp_get_attachment_metadata( $background );
|
208 |
+
if ( $image ) {
|
209 |
+
$upload_dir = wp_upload_dir();
|
210 |
+
$file_path = $upload_dir['basedir'] . '/' . $image['file'];
|
211 |
+
$file_type = wp_check_filetype( $file_path );
|
212 |
+
switch ( $file_type['type'] ) {
|
213 |
+
case 'image/jpeg':
|
214 |
+
$im = imagecreatefromjpeg( $file_path );
|
215 |
+
$this->setWidth( $image['width'] );
|
216 |
+
$this->setHeight( $image['height'] );
|
217 |
+
break;
|
218 |
+
|
219 |
+
case 'image/png':
|
220 |
+
$im = imagecreatefrompng( $file_path );
|
221 |
+
imagesavealpha( $im, true );
|
222 |
+
$this->setWidth( $image['width'] );
|
223 |
+
$this->setHeight( $image['height'] );
|
224 |
+
break;
|
225 |
+
|
226 |
+
default:
|
227 |
+
$im = $this->create( $width, $height );
|
228 |
+
break;
|
229 |
+
}
|
230 |
+
} else {
|
231 |
+
$im = $this->create( $width, $height );
|
232 |
+
}
|
233 |
+
} else { //color
|
234 |
+
$im = imagecreatetruecolor( $width, $height );
|
235 |
+
$color = $this->color_hex_to_rgb( $background );
|
236 |
+
$bg_color = imagecolorallocate( $im, $color['r'], $color['g'], $color['b'] );
|
237 |
+
imagefill( $im, 0, 0, $bg_color );
|
238 |
+
}
|
239 |
+
|
240 |
+
return $im;
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Convert hex color to RGB
|
245 |
+
*
|
246 |
+
* @param string $hex
|
247 |
+
*
|
248 |
+
* @return array
|
249 |
+
*/
|
250 |
+
private function color_hex_to_rgb( $hex = '' ) {
|
251 |
+
if ( empty( $hex ) ) {
|
252 |
+
$hex = $this->font_color;
|
253 |
+
}
|
254 |
+
list( $r, $g, $b ) = sscanf( $hex, '#%02x%02x%02x' );
|
255 |
+
|
256 |
+
return array(
|
257 |
+
'r' => $r,
|
258 |
+
'g' => $g,
|
259 |
+
'b' => $b,
|
260 |
+
);
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Get width of the letter in the font.
|
265 |
+
*
|
266 |
+
* return array(
|
267 |
+
* 'width' => int
|
268 |
+
* 'height' => int
|
269 |
+
* );
|
270 |
+
* OR false
|
271 |
+
*
|
272 |
+
* @return array|false
|
273 |
+
*/
|
274 |
+
public function get_font_char_size() {
|
275 |
+
if ( $this->font_path !== '' && $this->font_size !== 0 ) {
|
276 |
+
|
277 |
+
$text = ! empty( $this->text ) ? $this->text : $this->reference_text;
|
278 |
+
//$txt_image = $this->create( 500, 500 );
|
279 |
+
$box = imagettfbbox( $this->font_size, 0, $this->font_path, $text );
|
280 |
+
$width = $box[2] - $box[0];
|
281 |
+
$height = $box[1] - $box[7];
|
282 |
+
$result = array(
|
283 |
+
'width' => ceil( $width / strlen( $text ) ), //средняя ширина одного символа
|
284 |
+
'height' => $height, //высота одного символа
|
285 |
+
);
|
286 |
+
|
287 |
+
return $result;
|
288 |
+
} else {
|
289 |
+
return false;
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* Write text on the image
|
295 |
+
*
|
296 |
+
* @param string $text
|
297 |
+
* @param string $font = ''
|
298 |
+
* @param integer $font_size = 0
|
299 |
+
* @param string $font_color = '#000000'
|
300 |
+
* @param string $align
|
301 |
+
* @param string $valign
|
302 |
+
* @param float $line_spacing
|
303 |
+
* @param string $shadow_color
|
304 |
+
*
|
305 |
+
* @return bool
|
306 |
+
*/
|
307 |
+
public function write_text( $text, $font = '', $font_size = '', $font_color = '', $align = 'left', $valign = 'top', $line_spacing = '1.5', $shadow_color = '' ) {
|
308 |
+
if ( ! empty( $text ) ) {
|
309 |
+
$text = mb_convert_encoding( $text, 'UTF-8' );
|
310 |
+
|
311 |
+
if ( empty( $font ) ) {
|
312 |
+
$font = $this->font_path;
|
313 |
+
}
|
314 |
+
if ( empty( $font_size ) ) {
|
315 |
+
$font_size = $this->font_size;
|
316 |
+
}
|
317 |
+
if ( empty( $font_color ) ) {
|
318 |
+
$font_color = $this->font_color;
|
319 |
+
}
|
320 |
+
$this->setText( $text );
|
321 |
+
$char_size = $this->get_font_char_size();
|
322 |
+
|
323 |
+
$pad_left = (int) $this->padding_left;
|
324 |
+
$pad_top = (int) $this->padding_top;
|
325 |
+
|
326 |
+
$color = $this->color_hex_to_rgb( $font_color );
|
327 |
+
$font_color = imagecolorallocate( $this->image, $color['r'], $color['g'], $color['b'] );
|
328 |
+
if ( ! empty( $shadow_color ) ) {
|
329 |
+
$color = $this->color_hex_to_rgb( $shadow_color );
|
330 |
+
$shadow_color = imagecolorallocate( $this->image, $color['r'], $color['g'], $color['b'] );
|
331 |
+
}
|
332 |
+
$line_spacing = (float) $line_spacing;
|
333 |
+
|
334 |
+
$width = $this->width - $pad_left * 2;
|
335 |
+
$height = $this->height - $pad_top * 2;
|
336 |
+
|
337 |
+
$chars_per_line = ceil( $width / $char_size['width'] * 0.9 ); //count of chars per line
|
338 |
+
$text2 = wordwrap( $text, $chars_per_line, "\n", false );
|
339 |
+
$text2 = str_replace( '[br]', "\n", $text2 );
|
340 |
+
$line_count = count( explode( "\n", $text2 ) );
|
341 |
+
$lines = explode( "\n", $text2 );
|
342 |
+
for ( $i = 0; $i < $line_count; $i ++ ) {
|
343 |
+
$box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $lines[ $i ] ) );
|
344 |
+
$w = $box[4] - $box[6];
|
345 |
+
if ( $w > $width ) {
|
346 |
+
$font_size --;
|
347 |
+
$i = 0;
|
348 |
+
}
|
349 |
+
}
|
350 |
+
|
351 |
+
$text_height = $line_count * $char_size['height'];
|
352 |
+
while ( $text_height > $height || ( $height - $text_height <= ( 2 * $pad_left ) ) ) {
|
353 |
+
$this->font_size --;
|
354 |
+
$font_size --;
|
355 |
+
$char_size = $this->get_font_char_size();
|
356 |
+
if ( ! $char_size ) {
|
357 |
+
break;
|
358 |
+
}
|
359 |
+
$line_width = ceil( $width / $char_size['width'] * 0.9 ); //count of chars per line
|
360 |
+
$text2 = wordwrap( $text, (int) $line_width, "\n", false );
|
361 |
+
$text2 = str_replace( '[br]', "\n", $text2 );
|
362 |
+
$line_count = count( explode( "\n", $text2 ) );
|
363 |
+
$text_height = $line_count * ( $char_size['height'] * $line_spacing );
|
364 |
+
}
|
365 |
+
$width = $this->width;
|
366 |
+
$height = $this->height;
|
367 |
+
|
368 |
+
$lines = explode( "\n", $text2 );
|
369 |
+
if ( $valign == 'bottom' ) {
|
370 |
+
$lines = array_reverse( $lines );
|
371 |
+
}
|
372 |
+
|
373 |
+
foreach ( $lines as $key => $line ) {
|
374 |
+
$box = imagettfbbox( $font_size, 0, $font, $this->commas_cut( $line ) );
|
375 |
+
$h = $char_size['height'] * count( $lines ) + ( $line_spacing - 1 ) * $char_size['height'] * count( $lines );
|
376 |
+
$w = $box[4] - $box[6];
|
377 |
+
$num = $line_spacing * $key;
|
378 |
+
|
379 |
+
$x = 0;
|
380 |
+
$y = 0;
|
381 |
+
switch ( $align . '-' . $valign ) {
|
382 |
+
case 'left-top':
|
383 |
+
$x = $pad_left;
|
384 |
+
$y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
|
385 |
+
break;
|
386 |
+
case 'left-center':
|
387 |
+
$x = $pad_left;
|
388 |
+
$y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
|
389 |
+
break;
|
390 |
+
case 'left-bottom':
|
391 |
+
$x = $pad_left;
|
392 |
+
$y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
|
393 |
+
break;
|
394 |
+
//-------------------------
|
395 |
+
case 'center-top':
|
396 |
+
$x = ceil( $width / 2 - $w / 2 );
|
397 |
+
$y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
|
398 |
+
break;
|
399 |
+
case 'center-center':
|
400 |
+
$x = ceil( $width / 2 - $w / 2 );
|
401 |
+
$y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
|
402 |
+
break;
|
403 |
+
case 'center-bottom':
|
404 |
+
$x = ceil( $width / 2 - $w / 2 );
|
405 |
+
$y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
|
406 |
+
break;
|
407 |
+
//-------------------------
|
408 |
+
case 'right-top':
|
409 |
+
$x = $width - $w - $pad_left;
|
410 |
+
$y = ceil( $pad_top + $char_size['height'] + ( $char_size['height'] * $num ) );
|
411 |
+
break;
|
412 |
+
case 'right-center':
|
413 |
+
$x = $width - $w - $pad_left;
|
414 |
+
$y = ceil( ( $height / 2 - $h / 2 ) + $char_size['height'] + ( $char_size['height'] * $num ) );
|
415 |
+
break;
|
416 |
+
case 'right-bottom':
|
417 |
+
$x = $width - $w - $pad_left;
|
418 |
+
$y = ceil( ( $height - $pad_top ) - ( $char_size['height'] * $num ) );
|
419 |
+
break;
|
420 |
+
}
|
421 |
+
//shadow
|
422 |
+
if ( ! empty( $shadow_color ) ) {
|
423 |
+
imagettftext( $this->image, $font_size, 0, $x + 2, $y + 2, $shadow_color, $font, trim( $line ) );
|
424 |
+
}
|
425 |
+
|
426 |
+
//text
|
427 |
+
imagettftext( $this->image, $font_size, 0, (int) $x, (int) $y, $font_color, $font, trim( $line ) );
|
428 |
+
//imagerectangle($this->image, 0,$y,$width,$y, 1);
|
429 |
+
//imagerectangle($this->image, 0,$height/2,$width,$height/2, 2);
|
430 |
+
}
|
431 |
+
|
432 |
+
return true;
|
433 |
+
} else {
|
434 |
+
return false;
|
435 |
+
}
|
436 |
+
}
|
437 |
+
|
438 |
+
/**
|
439 |
+
* Save image
|
440 |
+
*
|
441 |
+
* @param string $text
|
442 |
+
*
|
443 |
+
* @return string
|
444 |
+
*/
|
445 |
+
public function commas_cut( $text ) {
|
446 |
+
return str_replace( ',', '', $text );
|
447 |
+
}
|
448 |
+
|
449 |
+
/**
|
450 |
+
* Save image
|
451 |
+
*
|
452 |
+
* @param string $path
|
453 |
+
* @param integer $quality
|
454 |
+
* @param string $format
|
455 |
+
*/
|
456 |
+
public function save( $path, $quality = 100, $format = 'jpg' ) {
|
457 |
+
switch ( strtolower( $format ) ) {
|
458 |
+
case 'jpg':
|
459 |
+
case 'jpeg':
|
460 |
+
imagejpeg( $this->image, $path, $quality );
|
461 |
+
break;
|
462 |
+
case 'png':
|
463 |
+
imagepng( $this->image, $path );
|
464 |
+
break;
|
465 |
+
}
|
466 |
+
}
|
467 |
+
|
468 |
+
}
|
includes/class.generate-result.php
CHANGED
@@ -1,164 +1,174 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WBCR\APT;
|
4 |
-
|
5 |
-
// Exit if accessed directly
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
*
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
'
|
54 |
-
'
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
*
|
66 |
-
*
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
*
|
80 |
-
*
|
81 |
-
*
|
82 |
-
* @
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
return
|
119 |
-
}
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
'
|
145 |
-
'
|
146 |
-
'
|
147 |
-
'type'
|
148 |
-
'status'
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\APT;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* Result class
|
12 |
+
*/
|
13 |
+
class GenerateResult {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var int
|
17 |
+
*/
|
18 |
+
private $post_id;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @var int
|
22 |
+
*/
|
23 |
+
public $thumbnail_id;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
private $generate_method;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
public $status;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
public $message;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @var array
|
42 |
+
*/
|
43 |
+
private $methods;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* GenerateResult constructor.
|
47 |
+
*
|
48 |
+
* @param int $post_id Post ID
|
49 |
+
* @param string $generate_method Generate method
|
50 |
+
*/
|
51 |
+
public function __construct( $post_id, $generate_method = '' ) {
|
52 |
+
$this->methods = [
|
53 |
+
'find' => __( 'Find in post', 'apt' ),
|
54 |
+
'generate' => __( 'Generate from title', 'apt' ),
|
55 |
+
'both' => __( 'Find or generate', 'apt' ),
|
56 |
+
'google' => __( 'Google', 'apt' ),
|
57 |
+
'find_google' => __( 'Find or Google', 'apt' ),
|
58 |
+
];
|
59 |
+
|
60 |
+
$this->post_id = $post_id;
|
61 |
+
$this->generate_method = $this->getMethod( $generate_method );
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Set the result data.
|
66 |
+
*
|
67 |
+
* @param string $message Message
|
68 |
+
* @param int $thumbnail_id Thumbnail ID
|
69 |
+
* @param string $status Status
|
70 |
+
*/
|
71 |
+
public function setResult( $message = '', $thumbnail_id = 0, $status = '' ) {
|
72 |
+
|
73 |
+
$this->thumbnail_id = $thumbnail_id;
|
74 |
+
$this->status = ! empty( $status ) ? $status : __( 'Done', 'apt' );
|
75 |
+
$this->message = $message;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Return self with result data.
|
80 |
+
*
|
81 |
+
* @param string $message Message
|
82 |
+
* @param int $thumbnail_id Thumbnail ID
|
83 |
+
* @param string $status Status
|
84 |
+
*
|
85 |
+
* @return self
|
86 |
+
*/
|
87 |
+
public function result( $message = '', $thumbnail_id = 0, $status = '' ) {
|
88 |
+
$this->setResult( $message, $thumbnail_id, $status );
|
89 |
+
|
90 |
+
return $this;
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* @param string $method Method
|
95 |
+
*
|
96 |
+
* @return string
|
97 |
+
*/
|
98 |
+
private function getMethod( $method ) {
|
99 |
+
return $this->methods[ $method ] ?? '';
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* @return string
|
104 |
+
*/
|
105 |
+
public function get_generate_method() {
|
106 |
+
return $this->generate_method;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* @param string $url File URL
|
111 |
+
*
|
112 |
+
* @return string
|
113 |
+
*/
|
114 |
+
private function get_file_size( $url ) {
|
115 |
+
$path = '';
|
116 |
+
$parsed_url = parse_url( $url );
|
117 |
+
if ( empty( $parsed_url['path'] ) ) {
|
118 |
+
return '';
|
119 |
+
}
|
120 |
+
$file = ABSPATH . ltrim( $parsed_url['path'], '/' );
|
121 |
+
if ( file_exists( $file ) ) {
|
122 |
+
$bytes = filesize( $file );
|
123 |
+
$s = array( 'b', 'Kb', 'Mb', 'Gb' );
|
124 |
+
$e = floor( log( $bytes ) / log( 1024 ) );
|
125 |
+
|
126 |
+
return sprintf( '%d ' . $s[ $e ], ( $bytes / pow( 1024, floor( $e ) ) ) );
|
127 |
+
}
|
128 |
+
|
129 |
+
return '';
|
130 |
+
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @param bool $write_to_log is write to log?
|
135 |
+
*
|
136 |
+
* @return array
|
137 |
+
*/
|
138 |
+
public function getData( $write_to_log = false ) {
|
139 |
+
if ( $this->thumbnail_id ) {
|
140 |
+
$data = [
|
141 |
+
[
|
142 |
+
'post_id' => $this->post_id,
|
143 |
+
'thumbnail_url' => wp_get_attachment_image_url( $this->thumbnail_id, 'thumbnail' ),
|
144 |
+
'url' => get_permalink( $this->post_id ),
|
145 |
+
'title' => get_post( $this->post_id )->post_title,
|
146 |
+
'image_size' => $this->get_file_size( wp_get_attachment_image_url( $this->thumbnail_id, 'full' ) ),
|
147 |
+
'type' => $this->get_generate_method(),
|
148 |
+
'status' => $this->status,
|
149 |
+
],
|
150 |
+
];
|
151 |
+
} else {
|
152 |
+
$data = [
|
153 |
+
[
|
154 |
+
'post_id' => $this->post_id,
|
155 |
+
'url' => get_permalink( $this->post_id ),
|
156 |
+
'title' => get_post( $this->post_id )->post_title,
|
157 |
+
'type' => $this->get_generate_method(),
|
158 |
+
'status' => $this->status,
|
159 |
+
'error_msg' => $this->message,
|
160 |
+
],
|
161 |
+
];
|
162 |
+
}
|
163 |
+
|
164 |
+
if ( $write_to_log ) {
|
165 |
+
$log = \WAPT_Plugin::app()->getPopulateOption( 'generation_log', [] );
|
166 |
+
if ( count( $log ) > 100 ) {
|
167 |
+
$log = array_slice( $log, 0, 100 );
|
168 |
+
}
|
169 |
+
\WAPT_Plugin::app()->updatePopulateOption( 'generation_log', array_merge( $data, $log ) );
|
170 |
+
}
|
171 |
+
|
172 |
+
return $data;
|
173 |
+
}
|
174 |
+
}
|
includes/controls/class.color.php
CHANGED
@@ -1,56 +1,55 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Color
|
4 |
-
*
|
5 |
-
* Main options:
|
6 |
-
* name => a name of the control
|
7 |
-
* value => a value to show in the control
|
8 |
-
* default => a default value of the control if the "value" option is not specified
|
9 |
-
*
|
10 |
-
* @author Artem Prihodko <webtemyk@yandex.ru>
|
11 |
-
* @copyright (c) 2020, Webcraftic Ltd
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
*
|
28 |
-
*
|
29 |
-
* @
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
$
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Color
|
4 |
+
*
|
5 |
+
* Main options:
|
6 |
+
* name => a name of the control
|
7 |
+
* value => a value to show in the control
|
8 |
+
* default => a default value of the control if the "value" option is not specified
|
9 |
+
*
|
10 |
+
* @author Artem Prihodko <webtemyk@yandex.ru>
|
11 |
+
* @copyright (c) 2020, Webcraftic Ltd
|
12 |
+
*/
|
13 |
+
|
14 |
+
// Exit if accessed directly
|
15 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
16 |
+
exit;
|
17 |
+
}
|
18 |
+
|
19 |
+
if ( ! class_exists( 'Wapt_FactoryForms_ColorControl' ) ) {
|
20 |
+
|
21 |
+
class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms450_Control {
|
22 |
+
|
23 |
+
public $type = 'wapt-color';
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Shows the html markup of the control.
|
27 |
+
*
|
28 |
+
* @return void
|
29 |
+
* @since 1.0.0
|
30 |
+
*/
|
31 |
+
public function html() {
|
32 |
+
$name = $this->getNameOnForm();
|
33 |
+
$value = esc_attr( $this->getValue() );
|
34 |
+
|
35 |
+
if ( ! $value ) {
|
36 |
+
$value = '#ffffff';
|
37 |
+
}
|
38 |
+
?>
|
39 |
+
|
40 |
+
<style>
|
41 |
+
.wapt-jscolor
|
42 |
+
{
|
43 |
+
padding: 15px !important;
|
44 |
+
font-size: 16px !important;
|
45 |
+
cursor: pointer;
|
46 |
+
}
|
47 |
+
</style>
|
48 |
+
<div <?php $this->attrs(); ?>>
|
49 |
+
<input type="text" id="<?php echo esc_attr( $name ); ?>" name="<?php echo esc_attr( $name ); ?>"
|
50 |
+
class="factory-input-text jscolor wapt-jscolor" value="<?php echo esc_attr( $value ); ?>">
|
51 |
+
</div>
|
52 |
+
<?php
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
|
includes/controls/class.fonts.php
CHANGED
@@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
22 |
|
23 |
if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
|
24 |
|
25 |
-
class Wapt_FactoryForms_FontsControl extends
|
26 |
|
27 |
public $type = 'wapt-fonts';
|
28 |
|
@@ -33,36 +33,40 @@ if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
|
|
33 |
* @since 1.0.0
|
34 |
*/
|
35 |
public function assets() {
|
36 |
-
wp_enqueue_script( 'apt-upload-font', WAPT_PLUGIN_URL . '/admin/assets/js/upload-font.js', [],
|
37 |
wp_localize_script( 'apt-upload-font', 'wapt_upload_font', [ 'nonce' => wp_create_nonce( 'wapt_upload_font' ) ] );
|
38 |
?>
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
66 |
<?php
|
67 |
}
|
68 |
|
@@ -80,13 +84,14 @@ if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
|
|
80 |
|
81 |
$this->assets();
|
82 |
?>
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
|
|
90 |
<?php
|
91 |
|
92 |
}
|
22 |
|
23 |
if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
|
24 |
|
25 |
+
class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms450_DropdownControl {
|
26 |
|
27 |
public $type = 'wapt-fonts';
|
28 |
|
33 |
* @since 1.0.0
|
34 |
*/
|
35 |
public function assets() {
|
36 |
+
wp_enqueue_script( 'apt-upload-font', WAPT_PLUGIN_URL . '/admin/assets/js/upload-font.js', [], WAPT_PLUGIN_VERSION, true );
|
37 |
wp_localize_script( 'apt-upload-font', 'wapt_upload_font', [ 'nonce' => wp_create_nonce( 'wapt_upload_font' ) ] );
|
38 |
?>
|
39 |
+
<style>
|
40 |
+
.wapt-upload-div
|
41 |
+
{
|
42 |
+
margin: 10px 0px;
|
43 |
+
display: inline;
|
44 |
+
vertical-align: middle;
|
45 |
+
margin-left: -5px !important;
|
46 |
+
}
|
47 |
+
|
48 |
+
.wapt-upload-button
|
49 |
+
{
|
50 |
+
height: 34px;
|
51 |
+
box-shadow: 1px 1px 5px -2px #8e8d8d;
|
52 |
+
border: 1px solid #ccc;
|
53 |
+
border-radius: 0px 3px 3px 0px;
|
54 |
+
}
|
55 |
+
|
56 |
+
.wapt-upload-loader
|
57 |
+
{
|
58 |
+
height: 34px;
|
59 |
+
display: inline;
|
60 |
+
margin-left: 5px !important;
|
61 |
+
}
|
62 |
+
|
63 |
+
.wapt-loader-invisible
|
64 |
+
{
|
65 |
+
display: none !important;
|
66 |
+
}
|
67 |
+
|
68 |
+
|
69 |
+
</style>
|
70 |
<?php
|
71 |
}
|
72 |
|
84 |
|
85 |
$this->assets();
|
86 |
?>
|
87 |
+
<div class="wapt-upload-div">
|
88 |
+
<input type="file" accept=".ttf" id="wapt-font-file" style="display: none;">
|
89 |
+
<button id="wapt-upload-button" class="wapt-upload-button">Upload custom font</button>
|
90 |
+
<div id="wapt-upload-loader" class="wapt-upload-loader wapt-loader-invisible">
|
91 |
+
<img src="<?php echo esc_url_raw( WAPT_PLUGIN_URL . '/admin/assets/img/ajax-loader.gif' ); ?>"
|
92 |
+
alt="" height="34">
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
<?php
|
96 |
|
97 |
}
|
includes/controls/class.mediabutton.php
CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
|
21 |
if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
|
22 |
|
23 |
-
class Wapt_FactoryForms_MediaButtonControl extends
|
24 |
|
25 |
public $type = 'wapt-mediabutton';
|
26 |
|
@@ -50,59 +50,64 @@ if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
|
|
50 |
}
|
51 |
}
|
52 |
?>
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
|
|
59 |
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
|
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
|
|
|
|
106 |
<?php
|
107 |
}
|
108 |
}
|
20 |
|
21 |
if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
|
22 |
|
23 |
+
class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms450_Control {
|
24 |
|
25 |
public $type = 'wapt-mediabutton';
|
26 |
|
50 |
}
|
51 |
}
|
52 |
?>
|
53 |
+
<style>
|
54 |
+
.wapt-bg-image-thumb
|
55 |
+
{
|
56 |
+
margin: 10px 0px;
|
57 |
+
border-radius: 10px;
|
58 |
+
box-shadow: 2px 2px 5px 0px rgba(0, 0, 0, 0.5);
|
59 |
+
}
|
60 |
|
61 |
+
.wapt-invisible
|
62 |
+
{
|
63 |
+
display: none;
|
64 |
+
}
|
65 |
|
66 |
+
.wapt-visible
|
67 |
+
{
|
68 |
+
display: block;
|
69 |
+
}
|
70 |
+
</style>
|
71 |
+
<script lang="js">
|
72 |
+
jQuery(function ($) {
|
73 |
|
74 |
+
var frame;
|
75 |
+
$(document).on('click', '#wapt-select-image', function (event) {
|
76 |
+
event.preventDefault();
|
77 |
+
if (frame) {
|
78 |
+
frame.open();
|
79 |
+
return;
|
80 |
+
}
|
81 |
|
82 |
+
frame = wp.media({
|
83 |
+
//title : 'Выберите файл',
|
84 |
+
button: {
|
85 |
+
//text: 'Использовать этот файл'
|
86 |
+
},
|
87 |
+
multiple: false
|
88 |
+
});
|
89 |
+
frame.on('select', function () {
|
90 |
+
var attachment = frame.state().get('selection').first().toJSON();
|
91 |
+
var thumb = $('#wapt-bg-image-thumb');
|
92 |
+
$('#<?php echo esc_html( $name ); ?>').val(attachment.id);
|
93 |
+
thumb.attr('src', attachment.sizes.thumbnail.url);
|
94 |
+
thumb.removeClass('wapt-bg-image-invisible').addClass('wapt-visible');
|
95 |
|
96 |
+
});
|
97 |
+
frame.open();
|
98 |
+
});
|
99 |
+
});
|
100 |
+
</script>
|
101 |
+
<div <?php $this->attrs(); ?>>
|
102 |
+
<img src="<?php echo esc_url_raw( $thumbnail_url ); ?>" alt=""
|
103 |
+
class="wapt-bg-image-thumb <?php echo esc_attr( $image_class ); ?>"
|
104 |
+
id="wapt-bg-image-thumb">
|
105 |
+
<button class="button button-primary button-large <?php echo esc_attr( $name ); ?>"
|
106 |
+
id="wapt-select-image"><?php echo esc_html( $button_text ); ?></button>
|
107 |
+
<input type="hidden" id="<?php echo esc_attr( $name ); ?>" name="<?php echo esc_attr( $name ); ?>"
|
108 |
+
class="factory-input-text"
|
109 |
+
value="<?php echo esc_html( $value ); ?>">
|
110 |
+
</div>
|
111 |
<?php
|
112 |
}
|
113 |
}
|
includes/image-search/boot.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once
|
4 |
-
require_once
|
5 |
-
require_once
|
6 |
-
require_once
|
7 |
-
require_once
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once 'interface-image-search.php';
|
4 |
+
require_once 'class-google-images.php';
|
5 |
+
require_once 'result/class.founded-image.php';
|
6 |
+
require_once 'result/class.google-founded-image.php';
|
7 |
+
require_once 'result/class.response.php';
|
includes/image-search/class-google-images.php
CHANGED
@@ -1,100 +1,103 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WBCR\APT;
|
4 |
-
|
5 |
-
use WAPT_Plugin, Exception;
|
6 |
-
|
7 |
-
// Exit if accessed directly
|
8 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
-
exit;
|
10 |
-
}
|
11 |
-
|
12 |
-
class GoogleImages implements ImageSearch {
|
13 |
-
const URL = 'https://www.googleapis.com/customsearch/v1';
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @var string
|
17 |
-
*/
|
18 |
-
private $key;
|
19 |
-
|
20 |
-
/**
|
21 |
-
* @var string
|
22 |
-
*/
|
23 |
-
private $cse;
|
24 |
-
|
25 |
-
public function __construct() {
|
26 |
-
$this->key = WAPT_Plugin::app()->getPopulateOption( 'google_apikey' );
|
27 |
-
$this->cse = WAPT_Plugin::app()->getPopulateOption( 'google_cse' );
|
28 |
-
}
|
29 |
-
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @param string $query
|
33 |
-
* @param int $page
|
34 |
-
*
|
35 |
-
* @return SearchResponse
|
36 |
-
* @throws Exception
|
37 |
-
*/
|
38 |
-
public function search( $query, $page ) {
|
39 |
-
if ( isset( $_POST['rights'] ) && (int) $_POST['rights'] ) {
|
40 |
-
$rights =
|
41 |
-
} else {
|
42 |
-
$rights = '';
|
43 |
-
}
|
44 |
-
|
45 |
-
$start = ( ( $page - 1 ) * 10 ) + 1;
|
46 |
-
$url = sprintf(
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
/**
|
55 |
-
* @var array|null $limit = [
|
56 |
-
* 'expires' => 0 | int,
|
57 |
-
* 'count' => 10 | int,
|
58 |
-
* ]
|
59 |
-
*/
|
60 |
-
$limit = WAPT_Plugin::app()->getPopulateOption( 'google_limit', [
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\APT;
|
4 |
+
|
5 |
+
use WAPT_Plugin, Exception;
|
6 |
+
|
7 |
+
// Exit if accessed directly
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
class GoogleImages implements ImageSearch {
|
13 |
+
const URL = 'https://www.googleapis.com/customsearch/v1';
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var string
|
17 |
+
*/
|
18 |
+
private $key;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @var string
|
22 |
+
*/
|
23 |
+
private $cse;
|
24 |
+
|
25 |
+
public function __construct() {
|
26 |
+
$this->key = WAPT_Plugin::app()->getPopulateOption( 'google_apikey' );
|
27 |
+
$this->cse = WAPT_Plugin::app()->getPopulateOption( 'google_cse' );
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @param string $query
|
33 |
+
* @param int $page
|
34 |
+
*
|
35 |
+
* @return SearchResponse
|
36 |
+
* @throws Exception
|
37 |
+
*/
|
38 |
+
public function search( $query, $page ) {
|
39 |
+
if ( isset( $_POST['rights'] ) && (int) $_POST['rights'] ) {
|
40 |
+
$rights = '&rights=(cc_publicdomain%7Ccc_attribute%7Ccc_sharealike).-(cc_noncommercial%7Ccc_nonderived)';
|
41 |
+
} else {
|
42 |
+
$rights = '';
|
43 |
+
}
|
44 |
+
|
45 |
+
$start = ( ( $page - 1 ) * 10 ) + 1;
|
46 |
+
$url = sprintf( '%s?%s', self::URL, http_build_query( [
|
47 |
+
'searchType' => 'image',
|
48 |
+
'start' => $start . $rights,
|
49 |
+
'q' => $query,
|
50 |
+
'key' => $this->key,
|
51 |
+
'cx' => $this->cse,
|
52 |
+
] ) );
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @var array|null $limit = [
|
56 |
+
* 'expires' => 0 | int,
|
57 |
+
* 'count' => 10 | int,
|
58 |
+
* ]
|
59 |
+
*/
|
60 |
+
$limit = WAPT_Plugin::app()->getPopulateOption( 'google_limit', [
|
61 |
+
'expires' => time(),
|
62 |
+
'count' => 10,
|
63 |
+
] );
|
64 |
+
if ( time() - $limit['expires'] > 3600 ) {
|
65 |
+
$limit['expires'] = time();
|
66 |
+
$limit['count'] = 10;
|
67 |
+
WAPT_Plugin::app()->updateOption( 'google_limit', $limit );
|
68 |
+
}
|
69 |
+
|
70 |
+
if ( ! WAPT_Plugin::app()->premium->is_active() && ! WAPT_Plugin::app()->premium->is_activate() ) {
|
71 |
+
if ( $limit['count'] < 1 ) {
|
72 |
+
WAPT_Plugin::app()->logger->warning( __( 'You have reached the limit at the moment. Try again in an 1 hour', 'apt' ) );
|
73 |
+
throw new Exception( sprintf( __( 'You have reached the limit at the moment. Try again in an 1 hour or <a href="%s">Upgrade to Premium</a>', 'apt' ), WAPT_Plugin::app()->get_support()->get_pricing_url( true, 'license_page' ) ) );
|
74 |
+
}
|
75 |
+
$limit['count'] --;
|
76 |
+
}
|
77 |
+
|
78 |
+
if ( 1 === $start ) {
|
79 |
+
WAPT_Plugin::app()->updateOption( 'google_limit', $limit );
|
80 |
+
}
|
81 |
+
|
82 |
+
$response = wp_remote_get( $url, [ 'timeout' => 100 ] );
|
83 |
+
if ( is_wp_error( $response ) ) {
|
84 |
+
WAPT_Plugin::app()->logger->error( 'Google search error: ' . $response->get_error_message() );
|
85 |
+
throw new Exception( 'Error: ' . $response->get_error_message() );
|
86 |
+
}
|
87 |
+
|
88 |
+
$images = [];
|
89 |
+
$error = null;
|
90 |
+
$response = json_decode( $response['body'], true );
|
91 |
+
if ( isset( $response['error'] ) ) {
|
92 |
+
$error = $response['error']['message'];
|
93 |
+
} elseif ( isset( $response['items'] ) && is_array( $response['items'] ) ) {
|
94 |
+
foreach ( $response['items'] as $item ) {
|
95 |
+
$image = new GoogleFoundedImage( $item );
|
96 |
+
|
97 |
+
$images[] = $image;
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
return new SearchResponse( $images, $error );
|
102 |
+
}
|
103 |
+
}
|
includes/image-search/result/class.founded-image.php
CHANGED
@@ -71,8 +71,17 @@ abstract class FoundedImage {
|
|
71 |
public function download( $path_to = '' ) {
|
72 |
$response = wp_remote_get( $this->link );
|
73 |
if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
|
74 |
-
$body
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
|
78 |
return isset( $downloaded ) ? (bool) $downloaded : false;
|
71 |
public function download( $path_to = '' ) {
|
72 |
$response = wp_remote_get( $this->link );
|
73 |
if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
|
74 |
+
$body = wp_remote_retrieve_body( $response );
|
75 |
+
|
76 |
+
global $wp_filesystem;
|
77 |
+
if ( ! $wp_filesystem ) {
|
78 |
+
if ( ! function_exists( 'WP_Filesystem' ) ) {
|
79 |
+
require_once ABSPATH . 'wp-admin/includes/file.php';
|
80 |
+
}
|
81 |
+
WP_Filesystem();
|
82 |
+
}
|
83 |
+
|
84 |
+
$downloaded = $path_to ? $wp_filesystem->put_contents( $path_to, $body ) : false;
|
85 |
}
|
86 |
|
87 |
return isset( $downloaded ) ? (bool) $downloaded : false;
|
includes/image-search/result/class.google-founded-image.php
CHANGED
@@ -28,7 +28,6 @@ class GoogleFoundedImage extends FoundedImage {
|
|
28 |
$this->image->width = $item['image']['width'] ?? '';
|
29 |
$this->image->height = $item['image']['height'] ?? '';
|
30 |
|
31 |
-
|
32 |
$path = parse_url( $this->link, PHP_URL_PATH );
|
33 |
preg_match_all( '/.*\/(.*)\.(\w{3,4})?(\?|\/.*)?/', $path, $match );
|
34 |
|
28 |
$this->image->width = $item['image']['width'] ?? '';
|
29 |
$this->image->height = $item['image']['height'] ?? '';
|
30 |
|
|
|
31 |
$path = parse_url( $this->link, PHP_URL_PATH );
|
32 |
preg_match_all( '/.*\/(.*)\.(\w{3,4})?(\?|\/.*)?/', $path, $match );
|
33 |
|
includes/image-search/result/class.response.php
CHANGED
@@ -1,67 +1,67 @@
|
|
1 |
-
<?php
|
2 |
-
namespace WBCR\APT;
|
3 |
-
|
4 |
-
use WAPT_Plugin, Exception;
|
5 |
-
|
6 |
-
// Exit if accessed directly
|
7 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
-
exit;
|
9 |
-
}
|
10 |
-
|
11 |
-
class SearchResponse implements \JsonSerializable {
|
12 |
-
|
13 |
-
/**
|
14 |
-
* @var int
|
15 |
-
*/
|
16 |
-
public $images_count;
|
17 |
-
|
18 |
-
/**
|
19 |
-
* @var FoundedImage
|
20 |
-
*/
|
21 |
-
public $images;
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @var string|null
|
25 |
-
*/
|
26 |
-
public $error;
|
27 |
-
|
28 |
-
/**
|
29 |
-
* SearchResponse constructor.
|
30 |
-
*
|
31 |
-
* @param FoundedImage[] $images
|
32 |
-
* @param string|null $images
|
33 |
-
*/
|
34 |
-
public function __construct( $images, $error = null ) {
|
35 |
-
$this->images = $images;
|
36 |
-
$this->error = $error;
|
37 |
-
$this->images_count = count( $images );
|
38 |
-
}
|
39 |
-
|
40 |
-
/**
|
41 |
-
* @param $limit
|
42 |
-
*/
|
43 |
-
public function limit( $limit ) {
|
44 |
-
$this->images = array_slice( $this->images, 0, $limit );
|
45 |
-
$this->images_count = count( $this->images );
|
46 |
-
}
|
47 |
-
|
48 |
-
/**
|
49 |
-
* @return bool
|
50 |
-
*/
|
51 |
-
public function is_error() {
|
52 |
-
return ! is_null( $this->error );
|
53 |
-
}
|
54 |
-
|
55 |
-
public function jsonSerialize() {
|
56 |
-
if( $this->is_error() ) {
|
57 |
-
return [
|
58 |
-
'error' => $this->error
|
59 |
-
];
|
60 |
-
}
|
61 |
-
|
62 |
-
return [
|
63 |
-
'images' => $this->images,
|
64 |
-
'images_count' => $this->images_count,
|
65 |
-
];
|
66 |
-
}
|
67 |
-
}
|
1 |
+
<?php
|
2 |
+
namespace WBCR\APT;
|
3 |
+
|
4 |
+
use WAPT_Plugin, Exception;
|
5 |
+
|
6 |
+
// Exit if accessed directly
|
7 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
+
exit;
|
9 |
+
}
|
10 |
+
|
11 |
+
class SearchResponse implements \JsonSerializable {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @var int
|
15 |
+
*/
|
16 |
+
public $images_count;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* @var FoundedImage
|
20 |
+
*/
|
21 |
+
public $images;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @var string|null
|
25 |
+
*/
|
26 |
+
public $error;
|
27 |
+
|
28 |
+
/**
|
29 |
+
* SearchResponse constructor.
|
30 |
+
*
|
31 |
+
* @param FoundedImage[] $images
|
32 |
+
* @param string|null $images
|
33 |
+
*/
|
34 |
+
public function __construct( $images, $error = null ) {
|
35 |
+
$this->images = $images;
|
36 |
+
$this->error = $error;
|
37 |
+
$this->images_count = count( $images );
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @param $limit
|
42 |
+
*/
|
43 |
+
public function limit( $limit ) {
|
44 |
+
$this->images = array_slice( $this->images, 0, $limit );
|
45 |
+
$this->images_count = count( $this->images );
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @return bool
|
50 |
+
*/
|
51 |
+
public function is_error() {
|
52 |
+
return ! is_null( $this->error );
|
53 |
+
}
|
54 |
+
|
55 |
+
public function jsonSerialize() {
|
56 |
+
if ( $this->is_error() ) {
|
57 |
+
return [
|
58 |
+
'error' => $this->error,
|
59 |
+
];
|
60 |
+
}
|
61 |
+
|
62 |
+
return [
|
63 |
+
'images' => $this->images,
|
64 |
+
'images_count' => $this->images_count,
|
65 |
+
];
|
66 |
+
}
|
67 |
+
}
|
libs/factory/adverts/boot.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use WBCR\
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
@@ -20,31 +20,31 @@ if( !defined('ABSPATH') ) {
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( defined('
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
-
define('
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
-
define('
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
-
load_plugin_textdomain('
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
-
define('
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
-
define('
|
41 |
|
42 |
-
require_once(
|
43 |
-
require_once(
|
44 |
|
45 |
/**
|
46 |
-
* @param
|
47 |
*/
|
48 |
-
add_action('
|
49 |
-
$plugin->set_adverts_manager("WBCR\
|
50 |
});
|
1 |
<?php
|
2 |
|
3 |
+
use WBCR\Factory_Adverts_130\Base;
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( defined('FACTORY_ADVERTS_130_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define('FACTORY_ADVERTS_130_LOADED', true);
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
+
define('FACTORY_ADVERTS_130_VERSION', '1.3.0');
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain('wbcr_factory_adverts_130', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
+
define('FACTORY_ADVERTS_130_DIR', dirname(__FILE__));
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
+
define('FACTORY_ADVERTS_130_URL', plugins_url(null, __FILE__));
|
41 |
|
42 |
+
require_once(FACTORY_ADVERTS_130_DIR . '/includes/class-rest-request.php');
|
43 |
+
require_once(FACTORY_ADVERTS_130_DIR . '/includes/class-base.php');
|
44 |
|
45 |
/**
|
46 |
+
* @param Wbcr_Factory453_Plugin $plugin
|
47 |
*/
|
48 |
+
add_action('wbcr_factory_adverts_130_plugin_created', function ($plugin) {
|
49 |
+
$plugin->set_adverts_manager("WBCR\Factory_Adverts_130\Base");
|
50 |
});
|
libs/factory/adverts/includes/class-base.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -28,7 +28,7 @@ class Base {
|
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
-
* @var \
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
@@ -53,7 +53,7 @@ class Base {
|
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
-
* @var \WBCR\
|
57 |
*/
|
58 |
private $api;
|
59 |
|
@@ -82,9 +82,9 @@ class Base {
|
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
-
* @param \
|
86 |
*/
|
87 |
-
public function __construct( \
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
@@ -257,7 +257,7 @@ class Base {
|
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
-
require_once
|
261 |
new Dashboard_Widget( $this->plugin, $content );
|
262 |
}
|
263 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_130;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
+
* @var \Wbcr_Factory453_Plugin
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
+
* @var \WBCR\Factory_Adverts_130\Creative_Motion_API
|
57 |
*/
|
58 |
private $api;
|
59 |
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
+
* @param \Wbcr_Factory453_Plugin $plugin
|
86 |
*/
|
87 |
+
public function __construct( \Wbcr_Factory453_Plugin $plugin, $settings ) {
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
+
require_once FACTORY_ADVERTS_130_DIR . '/includes/class-dashboard-widget.php';
|
261 |
new Dashboard_Widget( $this->plugin, $content );
|
262 |
}
|
263 |
}
|
libs/factory/adverts/includes/class-dashboard-widget.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -35,7 +35,7 @@ class Dashboard_Widget {
|
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
-
* @var \
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
@@ -46,10 +46,10 @@ class Dashboard_Widget {
|
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
-
* @param \
|
50 |
* @param string $content
|
51 |
*/
|
52 |
-
public function __construct( \
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_130;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
+
* @var \Wbcr_Factory453_Plugin
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
+
* @param \Wbcr_Factory453_Plugin $plugin
|
50 |
* @param string $content
|
51 |
*/
|
52 |
+
public function __construct( \Wbcr_Factory453_Plugin $plugin, $content ) {
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
libs/factory/adverts/includes/class-rest-request.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -65,7 +65,7 @@ class Creative_Motion_API {
|
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
-
* @var \
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
@@ -75,11 +75,11 @@ class Creative_Motion_API {
|
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
-
* @param \
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
-
public function __construct(\
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_130;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
+
* @var \Wbcr_Factory453_Plugin
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
+
* @param \Wbcr_Factory453_Plugin $plugin_name
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
+
public function __construct(\Wbcr_Factory453_Plugin $plugin)
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
libs/factory/adverts/langs/{wbcr_factory_adverts_129-ru_RU.mo → wbcr_factory_adverts_130-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/adverts/langs/{wbcr_factory_adverts_129-ru_RU.po → wbcr_factory_adverts_130-ru_RU.po}
RENAMED
File without changes
|
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-454 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-454 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-454 .factory-accordion-item{display:none}.factory-bootstrap-454 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-454 .factory-accordion>h3.active:hover{cursor:default}
|
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
|
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
|
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-453 article,.factory-bootstrap-453 aside,.factory-bootstrap-453 details,.factory-bootstrap-453 figcaption,.factory-bootstrap-453 figure,.factory-bootstrap-453 footer,.factory-bootstrap-453 header,.factory-bootstrap-453 hgroup,.factory-bootstrap-453 main,.factory-bootstrap-453 nav,.factory-bootstrap-453 section,.factory-bootstrap-453 summary{display:block}.factory-bootstrap-453 audio,.factory-bootstrap-453 canvas,.factory-bootstrap-453 video{display:inline-block}.factory-bootstrap-453 audio:not([controls]){display:none;height:0}.factory-bootstrap-453 [hidden],.factory-bootstrap-453 template{display:none}.factory-bootstrap-453 body{margin:0}.factory-bootstrap-453 a{background:0 0}.factory-bootstrap-453 a:focus{outline:thin dotted}.factory-bootstrap-453 a:active,.factory-bootstrap-453 a:hover{outline:0}.factory-bootstrap-453 h1{margin:.67em 0}.factory-bootstrap-453 b,.factory-bootstrap-453 strong{font-weight:700}.factory-bootstrap-453 dfn{font-style:italic}.factory-bootstrap-453 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-453 mark{color:#000;background:#ff0}.factory-bootstrap-453 code,.factory-bootstrap-453 kbd,.factory-bootstrap-453 pre,.factory-bootstrap-453 samp{font-size:1em}.factory-bootstrap-453 pre{white-space:pre-wrap}.factory-bootstrap-453 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-453 sub,.factory-bootstrap-453 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-453 sup{top:-.5em}.factory-bootstrap-453 sub{bottom:-.25em}.factory-bootstrap-453 img{border:0}.factory-bootstrap-453 svg:not(:root){overflow:hidden}.factory-bootstrap-453 figure{margin:0}.factory-bootstrap-453 button,.factory-bootstrap-453 input,.factory-bootstrap-453 select,.factory-bootstrap-453 textarea{margin:0}.factory-bootstrap-453 button,.factory-bootstrap-453 select{text-transform:none}.factory-bootstrap-453 select{padding-right:4px!important}.factory-bootstrap-453 button,.factory-bootstrap-453 input[type=reset],.factory-bootstrap-453 input[type=submit],html .factory-bootstrap-453 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-453 button[disabled],html .factory-bootstrap-453 input[disabled]{cursor:default}.factory-bootstrap-453 input[type=checkbox],.factory-bootstrap-453 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-453 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-453 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-453 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-453 button::-moz-focus-inner,.factory-bootstrap-453 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-453 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-453 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-453 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-453 a,.factory-bootstrap-453 a:visited{text-decoration:underline}.factory-bootstrap-453 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-453 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-453 a[href^="javascript:"]:after,.factory-bootstrap-453 a[href^="#"]:after{content:""}.factory-bootstrap-453 blockquote,.factory-bootstrap-453 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-453 thead{display:table-header-group}.factory-bootstrap-453 img,.factory-bootstrap-453 tr{page-break-inside:avoid}.factory-bootstrap-453 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-453 h2,.factory-bootstrap-453 h3,.factory-bootstrap-453 p{orphans:3;widows:3}.factory-bootstrap-453 h2,.factory-bootstrap-453 h3{page-break-after:avoid}.factory-bootstrap-453 select{background:#fff!important}.factory-bootstrap-453 .navbar{display:none}.factory-bootstrap-453 .table td,.factory-bootstrap-453 .table th{background-color:#fff!important}.factory-bootstrap-453 .btn>.caret,.factory-bootstrap-453 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-453 .label{border:1px solid #000}.factory-bootstrap-453 .table{border-collapse:collapse!important}.factory-bootstrap-453 .table-bordered td,.factory-bootstrap-453 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-453 *,.factory-bootstrap-453 :after,.factory-bootstrap-453 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-453{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-453 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-453 button,.factory-bootstrap-453 input,.factory-bootstrap-453 select,.factory-bootstrap-453 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-453 img{vertical-align:middle}.factory-bootstrap-453 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-453 .img-rounded{border-radius:6px}.factory-bootstrap-453 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-453 .img-circle{border-radius:50%}.factory-bootstrap-453 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-453 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-453 .h1,.factory-bootstrap-453 .h2,.factory-bootstrap-453 .h3,.factory-bootstrap-453 .h4,.factory-bootstrap-453 .h5,.factory-bootstrap-453 .h6,.factory-bootstrap-453 h1,.factory-bootstrap-453 h2,.factory-bootstrap-453 h3,.factory-bootstrap-453 h4,.factory-bootstrap-453 h5,.factory-bootstrap-453 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-453 .h1 .small,.factory-bootstrap-453 .h1 small,.factory-bootstrap-453 .h2 .small,.factory-bootstrap-453 .h2 small,.factory-bootstrap-453 .h3 .small,.factory-bootstrap-453 .h3 small,.factory-bootstrap-453 .h4 .small,.factory-bootstrap-453 .h4 small,.factory-bootstrap-453 .h5 .small,.factory-bootstrap-453 .h5 small,.factory-bootstrap-453 .h6 .small,.factory-bootstrap-453 .h6 small,.factory-bootstrap-453 h1 .small,.factory-bootstrap-453 h1 small,.factory-bootstrap-453 h2 .small,.factory-bootstrap-453 h2 small,.factory-bootstrap-453 h3 .small,.factory-bootstrap-453 h3 small,.factory-bootstrap-453 h4 .small,.factory-bootstrap-453 h4 small,.factory-bootstrap-453 h5 .small,.factory-bootstrap-453 h5 small,.factory-bootstrap-453 h6 .small,.factory-bootstrap-453 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-453 h1,.factory-bootstrap-453 h2,.factory-bootstrap-453 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-453 h1 .small,.factory-bootstrap-453 h1 small,.factory-bootstrap-453 h2 .small,.factory-bootstrap-453 h2 small,.factory-bootstrap-453 h3 .small,.factory-bootstrap-453 h3 small{font-size:65%}.factory-bootstrap-453 h4,.factory-bootstrap-453 h5,.factory-bootstrap-453 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-453 h4 .small,.factory-bootstrap-453 h4 small,.factory-bootstrap-453 h5 .small,.factory-bootstrap-453 h5 small,.factory-bootstrap-453 h6 .small,.factory-bootstrap-453 h6 small{font-size:75%}.factory-bootstrap-453 .h1,.factory-bootstrap-453 h1{font-size:36px}.factory-bootstrap-453 .h2,.factory-bootstrap-453 h2{font-size:30px}.factory-bootstrap-453 .h3,.factory-bootstrap-453 h3{font-size:24px}.factory-bootstrap-453 .h4,.factory-bootstrap-453 h4{font-size:18px}.factory-bootstrap-453 .h5,.factory-bootstrap-453 h5{font-size:14px}.factory-bootstrap-453 .h6,.factory-bootstrap-453 h6{font-size:12px}.factory-bootstrap-453 p{margin:0 0 10px}.factory-bootstrap-453 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-453 .small,.factory-bootstrap-453 small{font-size:85%}.factory-bootstrap-453 cite{font-style:normal}.factory-bootstrap-453 .text-muted{color:#999}.factory-bootstrap-453 .text-primary{color:#428bca}.factory-bootstrap-453 .text-primary:hover{color:#3071a9}.factory-bootstrap-453 .text-warning{color:#8a6d3b}.factory-bootstrap-453 .text-warning:hover{color:#66512c}.factory-bootstrap-453 .text-danger{color:#a94442}.factory-bootstrap-453 .text-danger:hover{color:#843534}.factory-bootstrap-453 .text-success{color:#3c763d}.factory-bootstrap-453 .text-success:hover{color:#2b542c}.factory-bootstrap-453 .text-info{color:#31708f}.factory-bootstrap-453 .text-info:hover{color:#245269}.factory-bootstrap-453 .text-left{text-align:left}.factory-bootstrap-453 .text-right{text-align:right}.factory-bootstrap-453 .text-center{text-align:center}.factory-bootstrap-453 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-453 ol,.factory-bootstrap-453 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-453 ol ol,.factory-bootstrap-453 ol ul,.factory-bootstrap-453 ul ol,.factory-bootstrap-453 ul ul{margin-bottom:0}.factory-bootstrap-453 .list-inline,.factory-bootstrap-453 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-453 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-453 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-453 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-453 dd,.factory-bootstrap-453 dt{line-height:1.428571429}.factory-bootstrap-453 dt{font-weight:700}.factory-bootstrap-453 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-453 abbr[data-original-title],.factory-bootstrap-453 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-453 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-453 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-453 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-453 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-453 blockquote .small,.factory-bootstrap-453 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-453 blockquote .small:before,.factory-bootstrap-453 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-453 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-453 blockquote.pull-right .small,.factory-bootstrap-453 blockquote.pull-right p,.factory-bootstrap-453 blockquote.pull-right small{text-align:right}.factory-bootstrap-453 blockquote.pull-right .small:before,.factory-bootstrap-453 blockquote.pull-right small:before{content:''}.factory-bootstrap-453 blockquote.pull-right .small:after,.factory-bootstrap-453 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-453 blockquote:after,.factory-bootstrap-453 blockquote:before{content:""}.factory-bootstrap-453 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-453 code,.factory-bootstrap-453 kbd,.factory-bootstrap-453 pre,.factory-bootstrap-453 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-453 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-453 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-453 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-453 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-453 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-453 .container:after,.factory-bootstrap-453 .container:before{display:table;content:" "}.factory-bootstrap-453 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-453 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-453 .row:after,.factory-bootstrap-453 .row:before{display:table;content:" "}.factory-bootstrap-453 .row:after{clear:both}.factory-bootstrap-453 .col-lg-1,.factory-bootstrap-453 .col-lg-10,.factory-bootstrap-453 .col-lg-11,.factory-bootstrap-453 .col-lg-12,.factory-bootstrap-453 .col-lg-2,.factory-bootstrap-453 .col-lg-3,.factory-bootstrap-453 .col-lg-4,.factory-bootstrap-453 .col-lg-5,.factory-bootstrap-453 .col-lg-6,.factory-bootstrap-453 .col-lg-7,.factory-bootstrap-453 .col-lg-8,.factory-bootstrap-453 .col-lg-9,.factory-bootstrap-453 .col-md-1,.factory-bootstrap-453 .col-md-10,.factory-bootstrap-453 .col-md-11,.factory-bootstrap-453 .col-md-12,.factory-bootstrap-453 .col-md-2,.factory-bootstrap-453 .col-md-3,.factory-bootstrap-453 .col-md-4,.factory-bootstrap-453 .col-md-5,.factory-bootstrap-453 .col-md-6,.factory-bootstrap-453 .col-md-7,.factory-bootstrap-453 .col-md-8,.factory-bootstrap-453 .col-md-9,.factory-bootstrap-453 .col-sm-1,.factory-bootstrap-453 .col-sm-10,.factory-bootstrap-453 .col-sm-11,.factory-bootstrap-453 .col-sm-12,.factory-bootstrap-453 .col-sm-2,.factory-bootstrap-453 .col-sm-3,.factory-bootstrap-453 .col-sm-4,.factory-bootstrap-453 .col-sm-5,.factory-bootstrap-453 .col-sm-6,.factory-bootstrap-453 .col-sm-7,.factory-bootstrap-453 .col-sm-8,.factory-bootstrap-453 .col-sm-9,.factory-bootstrap-453 .col-xs-1,.factory-bootstrap-453 .col-xs-10,.factory-bootstrap-453 .col-xs-11,.factory-bootstrap-453 .col-xs-12,.factory-bootstrap-453 .col-xs-2,.factory-bootstrap-453 .col-xs-3,.factory-bootstrap-453 .col-xs-4,.factory-bootstrap-453 .col-xs-5,.factory-bootstrap-453 .col-xs-6,.factory-bootstrap-453 .col-xs-7,.factory-bootstrap-453 .col-xs-8,.factory-bootstrap-453 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-453 .col-xs-1,.factory-bootstrap-453 .col-xs-10,.factory-bootstrap-453 .col-xs-11,.factory-bootstrap-453 .col-xs-12,.factory-bootstrap-453 .col-xs-2,.factory-bootstrap-453 .col-xs-3,.factory-bootstrap-453 .col-xs-4,.factory-bootstrap-453 .col-xs-5,.factory-bootstrap-453 .col-xs-6,.factory-bootstrap-453 .col-xs-7,.factory-bootstrap-453 .col-xs-8,.factory-bootstrap-453 .col-xs-9{float:left}.factory-bootstrap-453 .col-xs-12{width:100%}.factory-bootstrap-453 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-453 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-453 .col-xs-9{width:75%}.factory-bootstrap-453 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-453 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-453 .col-xs-6{width:50%}.factory-bootstrap-453 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-453 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-453 .col-xs-3{width:25%}.factory-bootstrap-453 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-453 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-453 .col-xs-pull-12{right:100%}.factory-bootstrap-453 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-453 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-453 .col-xs-pull-9{right:75%}.factory-bootstrap-453 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-453 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-453 .col-xs-pull-6{right:50%}.factory-bootstrap-453 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-453 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-453 .col-xs-pull-3{right:25%}.factory-bootstrap-453 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-453 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-453 .col-xs-pull-0{right:0}.factory-bootstrap-453 .col-xs-push-12{left:100%}.factory-bootstrap-453 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-453 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-453 .col-xs-push-9{left:75%}.factory-bootstrap-453 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-453 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-453 .col-xs-push-6{left:50%}.factory-bootstrap-453 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-453 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-453 .col-xs-push-3{left:25%}.factory-bootstrap-453 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-453 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-453 .col-xs-push-0{left:0}.factory-bootstrap-453 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-453 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-453 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-453 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-453 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-453 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-453 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-453 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-453 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-453 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-453 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-453 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-453 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-453 table{max-width:100%;background-color:transparent}.factory-bootstrap-453 th{text-align:left}.factory-bootstrap-453 .table{width:100%;margin-bottom:20px}.factory-bootstrap-453 .table>tbody>tr>td,.factory-bootstrap-453 .table>tbody>tr>th,.factory-bootstrap-453 .table>tfoot>tr>td,.factory-bootstrap-453 .table>tfoot>tr>th,.factory-bootstrap-453 .table>thead>tr>td,.factory-bootstrap-453 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-453 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-453 .table>caption+thead>tr:first-child>td,.factory-bootstrap-453 .table>caption+thead>tr:first-child>th,.factory-bootstrap-453 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-453 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-453 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-453 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-453 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-453 .table .table{background-color:#fff}.factory-bootstrap-453 .table-condensed>tbody>tr>td,.factory-bootstrap-453 .table-condensed>tbody>tr>th,.factory-bootstrap-453 .table-condensed>tfoot>tr>td,.factory-bootstrap-453 .table-condensed>tfoot>tr>th,.factory-bootstrap-453 .table-condensed>thead>tr>td,.factory-bootstrap-453 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-453 .table-bordered,.factory-bootstrap-453 .table-bordered>tbody>tr>td,.factory-bootstrap-453 .table-bordered>tbody>tr>th,.factory-bootstrap-453 .table-bordered>tfoot>tr>td,.factory-bootstrap-453 .table-bordered>tfoot>tr>th,.factory-bootstrap-453 .table-bordered>thead>tr>td,.factory-bootstrap-453 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-453 .table-bordered>thead>tr>td,.factory-bootstrap-453 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-453 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-453 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-453 .table-hover>tbody>tr:hover>td,.factory-bootstrap-453 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-453 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-453 table td[class*=col-],.factory-bootstrap-453 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-453 .table>tbody>.active>td,.factory-bootstrap-453 .table>tbody>.active>th,.factory-bootstrap-453 .table>tbody>tr>.active,.factory-bootstrap-453 .table>tfoot>.active>td,.factory-bootstrap-453 .table>tfoot>.active>th,.factory-bootstrap-453 .table>tfoot>tr>.active,.factory-bootstrap-453 .table>thead>.active>td,.factory-bootstrap-453 .table>thead>.active>th,.factory-bootstrap-453 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-453 .table-hover>tbody>.active:hover>td,.factory-bootstrap-453 .table-hover>tbody>.active:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-453 .table>tbody>.success>td,.factory-bootstrap-453 .table>tbody>.success>th,.factory-bootstrap-453 .table>tbody>tr>.success,.factory-bootstrap-453 .table>tfoot>.success>td,.factory-bootstrap-453 .table>tfoot>.success>th,.factory-bootstrap-453 .table>tfoot>tr>.success,.factory-bootstrap-453 .table>thead>.success>td,.factory-bootstrap-453 .table>thead>.success>th,.factory-bootstrap-453 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-453 .table-hover>tbody>.success:hover>td,.factory-bootstrap-453 .table-hover>tbody>.success:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-453 .table>tbody>.danger>td,.factory-bootstrap-453 .table>tbody>.danger>th,.factory-bootstrap-453 .table>tbody>tr>.danger,.factory-bootstrap-453 .table>tfoot>.danger>td,.factory-bootstrap-453 .table>tfoot>.danger>th,.factory-bootstrap-453 .table>tfoot>tr>.danger,.factory-bootstrap-453 .table>thead>.danger>td,.factory-bootstrap-453 .table>thead>.danger>th,.factory-bootstrap-453 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-453 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-453 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-453 .table>tbody>.warning>td,.factory-bootstrap-453 .table>tbody>.warning>th,.factory-bootstrap-453 .table>tbody>tr>.warning,.factory-bootstrap-453 .table>tfoot>.warning>td,.factory-bootstrap-453 .table>tfoot>.warning>th,.factory-bootstrap-453 .table>tfoot>tr>.warning,.factory-bootstrap-453 .table>thead>.warning>td,.factory-bootstrap-453 .table>thead>.warning>th,.factory-bootstrap-453 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-453 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-453 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-453 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-453 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-453 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-453 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-453 input[type=checkbox],.factory-bootstrap-453 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-453 input[type=file]{display:block}.factory-bootstrap-453 select[multiple],.factory-bootstrap-453 select[size]{height:auto}.factory-bootstrap-453 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-453 input[type=checkbox]:focus,.factory-bootstrap-453 input[type=file]:focus,.factory-bootstrap-453 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-453 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-453 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-453 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-453 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-453 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-453 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-453 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-453 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-453 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-453 .form-control[disabled],.factory-bootstrap-453 .form-control[readonly],.factory-bootstrap-453 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-453 textarea.form-control{height:auto}.factory-bootstrap-453 .form-group{margin-bottom:15px}.factory-bootstrap-453 .checkbox,.factory-bootstrap-453 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-453 .checkbox label,.factory-bootstrap-453 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-453 .checkbox input[type=checkbox],.factory-bootstrap-453 .checkbox-inline input[type=checkbox],.factory-bootstrap-453 .radio input[type=radio],.factory-bootstrap-453 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-453 .checkbox+.checkbox,.factory-bootstrap-453 .radio+.radio{margin-top:-5px}.factory-bootstrap-453 .checkbox-inline,.factory-bootstrap-453 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-453 .checkbox-inline+.checkbox-inline,.factory-bootstrap-453 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-453 .checkbox-inline[disabled],.factory-bootstrap-453 .checkbox[disabled],.factory-bootstrap-453 .radio-inline[disabled],.factory-bootstrap-453 .radio[disabled],.factory-bootstrap-453 fieldset[disabled] .checkbox,.factory-bootstrap-453 fieldset[disabled] .checkbox-inline,.factory-bootstrap-453 fieldset[disabled] .radio,.factory-bootstrap-453 fieldset[disabled] .radio-inline,.factory-bootstrap-453 fieldset[disabled] input[type=checkbox],.factory-bootstrap-453 fieldset[disabled] input[type=radio],.factory-bootstrap-453 input[type=checkbox][disabled],.factory-bootstrap-453 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-453 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-453 textarea.input-sm{height:auto}.factory-bootstrap-453 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-453 textarea.input-lg{height:auto}.factory-bootstrap-453 .has-warning .checkbox,.factory-bootstrap-453 .has-warning .checkbox-inline,.factory-bootstrap-453 .has-warning .control-label,.factory-bootstrap-453 .has-warning .help-block,.factory-bootstrap-453 .has-warning .radio,.factory-bootstrap-453 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-453 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-453 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-453 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-453 .has-error .checkbox,.factory-bootstrap-453 .has-error .checkbox-inline,.factory-bootstrap-453 .has-error .control-label,.factory-bootstrap-453 .has-error .help-block,.factory-bootstrap-453 .has-error .radio,.factory-bootstrap-453 .has-error .radio-inline{color:#a94442}.factory-bootstrap-453 .controls{display:block}.factory-bootstrap-453 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-453 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-453 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-453 .has-success .checkbox,.factory-bootstrap-453 .has-success .checkbox-inline,.factory-bootstrap-453 .has-success .control-label,.factory-bootstrap-453 .has-success .help-block,.factory-bootstrap-453 .has-success .radio,.factory-bootstrap-453 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-453 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-453 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-453 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-453 .form-control-static{margin-bottom:0}.factory-bootstrap-453 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-453 .form-horizontal .checkbox,.factory-bootstrap-453 .form-horizontal .checkbox-inline,.factory-bootstrap-453 .form-horizontal .control-label,.factory-bootstrap-453 .form-horizontal .radio,.factory-bootstrap-453 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-453 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-453 .form-horizontal .checkbox,.factory-bootstrap-453 .form-horizontal .radio{min-height:27px}.factory-bootstrap-453 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-453 .form-horizontal .form-group:after,.factory-bootstrap-453 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-453 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-453 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-453 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-453 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-453 .btn{text-decoration:none}.factory-bootstrap-453 .btn:focus,.factory-bootstrap-453 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-453 .btn.disabled,.factory-bootstrap-453 .btn[disabled],.factory-bootstrap-453 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .btn-default:focus,.factory-bootstrap-453 .btn-default:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-453 .btn-default.disabled,.factory-bootstrap-453 .btn-default.disabled.active,.factory-bootstrap-453 .btn-default.disabled:active,.factory-bootstrap-453 .btn-default.disabled:focus,.factory-bootstrap-453 .btn-default.disabled:hover,.factory-bootstrap-453 .btn-default[disabled],.factory-bootstrap-453 .btn-default[disabled].active,.factory-bootstrap-453 .btn-default[disabled]:active,.factory-bootstrap-453 .btn-default[disabled]:focus,.factory-bootstrap-453 .btn-default[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-default,.factory-bootstrap-453 fieldset[disabled] .btn-default.active,.factory-bootstrap-453 fieldset[disabled] .btn-default:active,.factory-bootstrap-453 fieldset[disabled] .btn-default:focus,.factory-bootstrap-453 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-453 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .btn-primary:focus,.factory-bootstrap-453 .btn-primary:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-453 .btn-primary.disabled,.factory-bootstrap-453 .btn-primary.disabled.active,.factory-bootstrap-453 .btn-primary.disabled:active,.factory-bootstrap-453 .btn-primary.disabled:focus,.factory-bootstrap-453 .btn-primary.disabled:hover,.factory-bootstrap-453 .btn-primary[disabled],.factory-bootstrap-453 .btn-primary[disabled].active,.factory-bootstrap-453 .btn-primary[disabled]:active,.factory-bootstrap-453 .btn-primary[disabled]:focus,.factory-bootstrap-453 .btn-primary[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-primary,.factory-bootstrap-453 fieldset[disabled] .btn-primary.active,.factory-bootstrap-453 fieldset[disabled] .btn-primary:active,.factory-bootstrap-453 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-453 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-453 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-453 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active,.factory-bootstrap-453 .btn-warning:focus,.factory-bootstrap-453 .btn-warning:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-453 .btn-warning.disabled,.factory-bootstrap-453 .btn-warning.disabled.active,.factory-bootstrap-453 .btn-warning.disabled:active,.factory-bootstrap-453 .btn-warning.disabled:focus,.factory-bootstrap-453 .btn-warning.disabled:hover,.factory-bootstrap-453 .btn-warning[disabled],.factory-bootstrap-453 .btn-warning[disabled].active,.factory-bootstrap-453 .btn-warning[disabled]:active,.factory-bootstrap-453 .btn-warning[disabled]:focus,.factory-bootstrap-453 .btn-warning[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-warning,.factory-bootstrap-453 fieldset[disabled] .btn-warning.active,.factory-bootstrap-453 fieldset[disabled] .btn-warning:active,.factory-bootstrap-453 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-453 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-453 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-453 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .btn-success:focus,.factory-bootstrap-453 .btn-success:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-453 .btn-success.disabled,.factory-bootstrap-453 .btn-success.disabled.active,.factory-bootstrap-453 .btn-success.disabled:active,.factory-bootstrap-453 .btn-success.disabled:focus,.factory-bootstrap-453 .btn-success.disabled:hover,.factory-bootstrap-453 .btn-success[disabled],.factory-bootstrap-453 .btn-success[disabled].active,.factory-bootstrap-453 .btn-success[disabled]:active,.factory-bootstrap-453 .btn-success[disabled]:focus,.factory-bootstrap-453 .btn-success[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-success,.factory-bootstrap-453 fieldset[disabled] .btn-success.active,.factory-bootstrap-453 fieldset[disabled] .btn-success:active,.factory-bootstrap-453 fieldset[disabled] .btn-success:focus,.factory-bootstrap-453 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-453 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-453 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .btn-info:focus,.factory-bootstrap-453 .btn-info:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-453 .btn-info.disabled,.factory-bootstrap-453 .btn-info.disabled.active,.factory-bootstrap-453 .btn-info.disabled:active,.factory-bootstrap-453 .btn-info.disabled:focus,.factory-bootstrap-453 .btn-info.disabled:hover,.factory-bootstrap-453 .btn-info[disabled],.factory-bootstrap-453 .btn-info[disabled].active,.factory-bootstrap-453 .btn-info[disabled]:active,.factory-bootstrap-453 .btn-info[disabled]:focus,.factory-bootstrap-453 .btn-info[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-info,.factory-bootstrap-453 fieldset[disabled] .btn-info.active,.factory-bootstrap-453 fieldset[disabled] .btn-info:active,.factory-bootstrap-453 fieldset[disabled] .btn-info:focus,.factory-bootstrap-453 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-453 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-453 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-453 .btn-link,.factory-bootstrap-453 .btn-link:active,.factory-bootstrap-453 .btn-link[disabled],.factory-bootstrap-453 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-link,.factory-bootstrap-453 .btn-link:active,.factory-bootstrap-453 .btn-link:focus,.factory-bootstrap-453 .btn-link:hover{border-color:transparent}.factory-bootstrap-453 .btn-link:focus,.factory-bootstrap-453 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-453 .btn-link[disabled]:focus,.factory-bootstrap-453 .btn-link[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-link:focus,.factory-bootstrap-453 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-453 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-453 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-453 input[type=button].btn-block,.factory-bootstrap-453 input[type=reset].btn-block,.factory-bootstrap-453 input[type=submit].btn-block{width:100%}.factory-bootstrap-453 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-453 .fade.in{opacity:1}.factory-bootstrap-453 .collapse{display:none}.factory-bootstrap-453 .collapse.in{display:block}.factory-bootstrap-453 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-453 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-453 .glyphicon:empty{width:1em}.factory-bootstrap-453 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-453 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-453 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-453 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-453 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-453 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-453 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-453 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-453 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-453 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-453 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-453 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-453 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-453 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-453 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-453 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-453 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-453 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-453 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-453 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-453 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-453 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-453 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-453 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-453 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-453 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-453 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-453 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-453 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-453 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-453 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-453 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-453 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-453 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-453 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-453 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-453 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-453 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-453 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-453 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-453 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-453 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-453 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-453 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-453 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-453 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-453 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-453 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-453 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-453 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-453 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-453 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-453 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-453 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-453 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-453 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-453 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-453 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-453 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-453 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-453 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-453 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-453 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-453 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-453 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-453 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-453 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-453 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-453 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-453 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-453 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-453 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-453 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-453 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-453 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-453 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-453 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-453 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-453 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-453 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-453 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-453 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-453 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-453 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-453 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-453 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-453 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-453 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-453 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-453 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-453 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-453 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-453 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-453 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-453 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-453 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-453 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-453 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-453 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-453 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-453 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-453 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-453 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-453 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-453 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-453 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-453 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-453 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-453 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-453 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-453 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-453 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-453 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-453 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-453 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-453 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-453 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-453 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-453 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-453 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-453 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-453 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-453 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-453 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-453 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-453 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-453 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-453 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-453 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-453 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-453 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-453 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-453 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-453 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-453 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-453 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-453 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-453 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-453 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-453 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-453 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-453 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-453 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-453 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-453 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-453 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-453 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-453 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-453 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-453 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-453 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-453 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-453 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-453 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-453 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-453 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-453 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-453 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-453 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-453 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-453 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-453 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-453 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-453 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-453 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-453 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-453 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-453 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-453 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-453 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-453 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-453 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-453 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-453 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-453 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-453 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-453 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-453 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-453 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-453 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-453 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-453 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-453 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-453 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-453 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-453 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-453 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-453 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-453 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-453 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-453 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-453 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-453 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-453 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-453 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-453 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-453 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-453 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-453 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-453 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-453 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-453 .dropdown{position:relative}.factory-bootstrap-453 .dropdown-toggle:focus{outline:0}.factory-bootstrap-453 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-453 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-453 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-453 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-453 .dropdown-menu>li>a:focus,.factory-bootstrap-453 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-453 .dropdown-menu>.active>a,.factory-bootstrap-453 .dropdown-menu>.active>a:focus,.factory-bootstrap-453 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-453 .dropdown-menu>.disabled>a,.factory-bootstrap-453 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-453 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-453 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-453 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-453 .open>.dropdown-menu{display:block}.factory-bootstrap-453 .open>a{outline:0}.factory-bootstrap-453 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-453 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-453 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-453 .dropup .caret,.factory-bootstrap-453 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-453 .dropup .dropdown-menu,.factory-bootstrap-453 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-453 .btn-group,.factory-bootstrap-453 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-453 .btn-group-vertical>.btn,.factory-bootstrap-453 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-453 .btn-group-vertical>.btn.active,.factory-bootstrap-453 .btn-group-vertical>.btn:active,.factory-bootstrap-453 .btn-group-vertical>.btn:focus,.factory-bootstrap-453 .btn-group-vertical>.btn:hover,.factory-bootstrap-453 .btn-group>.btn.active,.factory-bootstrap-453 .btn-group>.btn:active,.factory-bootstrap-453 .btn-group>.btn:focus,.factory-bootstrap-453 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-453 .btn-group-vertical>.btn:focus,.factory-bootstrap-453 .btn-group>.btn:focus{outline:0}.factory-bootstrap-453 .btn-group .btn+.btn,.factory-bootstrap-453 .btn-group .btn+.btn-group,.factory-bootstrap-453 .btn-group .btn-group+.btn,.factory-bootstrap-453 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-453 .btn-toolbar:after,.factory-bootstrap-453 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-453 .btn-toolbar:after{clear:both}.factory-bootstrap-453 .btn-toolbar .btn-group{float:left}.factory-bootstrap-453 .btn-toolbar>.btn+.btn,.factory-bootstrap-453 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-453 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-453 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-453 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-453 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-453 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-453 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group>.btn-group{float:left}.factory-bootstrap-453 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-453 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-453 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group .dropdown-toggle:active,.factory-bootstrap-453 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-453 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-453 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-453 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-453 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-453 .btn .caret{margin-left:0}.factory-bootstrap-453 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-453 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-453 .btn-group-vertical>.btn,.factory-bootstrap-453 .btn-group-vertical>.btn-group,.factory-bootstrap-453 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-453 .btn-group-vertical>.btn-group:after,.factory-bootstrap-453 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-453 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-453 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-453 .btn-group-vertical>.btn+.btn,.factory-bootstrap-453 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-453 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-453 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-453 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-453 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-453 .btn-group-justified>.btn,.factory-bootstrap-453 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-453 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-453 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-453 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-453 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-453 .input-group-lg>.form-control,.factory-bootstrap-453 .input-group-lg>.input-group-addon,.factory-bootstrap-453 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 select.input-group-lg>.form-control,.factory-bootstrap-453 select.input-group-lg>.input-group-addon,.factory-bootstrap-453 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-453 textarea.input-group-lg>.form-control,.factory-bootstrap-453 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-453 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-453 .input-group-sm>.form-control,.factory-bootstrap-453 .input-group-sm>.input-group-addon,.factory-bootstrap-453 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 select.input-group-sm>.form-control,.factory-bootstrap-453 select.input-group-sm>.input-group-addon,.factory-bootstrap-453 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-453 textarea.input-group-sm>.form-control,.factory-bootstrap-453 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-453 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-453 .input-group .form-control,.factory-bootstrap-453 .input-group-addon,.factory-bootstrap-453 .input-group-btn{display:table-cell}.factory-bootstrap-453 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-453 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-453 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-453 .input-group-addon,.factory-bootstrap-453 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-453 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-453 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-453 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-453 .input-group-addon input[type=checkbox],.factory-bootstrap-453 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-453 .input-group .form-control:first-child,.factory-bootstrap-453 .input-group-addon:first-child,.factory-bootstrap-453 .input-group-btn:first-child>.btn,.factory-bootstrap-453 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-453 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .input-group-addon:first-child{border-right:0}.factory-bootstrap-453 .input-group .form-control:last-child,.factory-bootstrap-453 .input-group-addon:last-child,.factory-bootstrap-453 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-453 .input-group-btn:last-child>.btn,.factory-bootstrap-453 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .input-group-addon:last-child{border-left:0}.factory-bootstrap-453 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-453 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-453 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-453 .input-group-btn>.btn{position:relative}.factory-bootstrap-453 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-453 .input-group-btn>.btn:active,.factory-bootstrap-453 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-453 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-453 .nav:after,.factory-bootstrap-453 .nav:before{display:table;content:" "}.factory-bootstrap-453 .nav:after{clear:both}.factory-bootstrap-453 .nav>li{position:relative;display:block}.factory-bootstrap-453 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-453 .nav>li>a:focus,.factory-bootstrap-453 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-453 .nav>li.disabled>a{color:#999}.factory-bootstrap-453 .nav>li.disabled>a:focus,.factory-bootstrap-453 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-453 .nav .open>a,.factory-bootstrap-453 .nav .open>a:focus,.factory-bootstrap-453 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-453 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-453 .nav>li>a>img{max-width:none}.factory-bootstrap-453 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-453 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-453 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-453 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-453 .nav-tabs>li.active>a,.factory-bootstrap-453 .nav-tabs>li.active>a:focus,.factory-bootstrap-453 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-453 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-453 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-453 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-453 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-453 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-453 .nav-pills>li{float:left}.factory-bootstrap-453 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-453 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-453 .nav-pills>li.active>a,.factory-bootstrap-453 .nav-pills>li.active>a:focus,.factory-bootstrap-453 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-453 .nav-stacked>li{float:none}.factory-bootstrap-453 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-453 .nav-justified{width:100%}.factory-bootstrap-453 .nav-justified>li{float:none}.factory-bootstrap-453 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-453 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-453 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-453 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-453 .nav-tabs-justified>.active>a,.factory-bootstrap-453 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-453 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-453 .tab-content>.tab-pane{display:none}.factory-bootstrap-453 .tab-content>.active{display:block}.factory-bootstrap-453 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-453 .navbar:after,.factory-bootstrap-453 .navbar:before{display:table;content:" "}.factory-bootstrap-453 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-453 .navbar-header:after,.factory-bootstrap-453 .navbar-header:before{display:table;content:" "}.factory-bootstrap-453 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-453 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-453 .navbar-collapse:after,.factory-bootstrap-453 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-453 .navbar-collapse:after{clear:both}.factory-bootstrap-453 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-453 .container>.navbar-collapse,.factory-bootstrap-453 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-453 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-453 .navbar-fixed-bottom,.factory-bootstrap-453 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-453 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-453 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-453 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-453 .navbar-brand:focus,.factory-bootstrap-453 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-453 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-453 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-453 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-453 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-453 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-453 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-453 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-453 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-453 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-453 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-453 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-453 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-453 .navbar-default .navbar-brand:focus,.factory-bootstrap-453 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-nav>li>a,.factory-bootstrap-453 .navbar-default .navbar-text{color:#777}.factory-bootstrap-453 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-453 .navbar-default .navbar-toggle:focus,.factory-bootstrap-453 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-453 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-453 .navbar-default .navbar-collapse,.factory-bootstrap-453 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-453 .navbar-default .navbar-link{color:#777}.factory-bootstrap-453 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-453 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-453 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-453 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-453 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-453 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-453 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-453 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-453 .navbar-inverse .navbar-collapse,.factory-bootstrap-453 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-453 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-453 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-453 .breadcrumb>li{display:inline-block}.factory-bootstrap-453 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-453 .breadcrumb>.active{color:#999}.factory-bootstrap-453 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-453 .pagination>li{display:inline}.factory-bootstrap-453 .pagination>li>a,.factory-bootstrap-453 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-453 .pagination>li:first-child>a,.factory-bootstrap-453 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-453 .pagination>li:last-child>a,.factory-bootstrap-453 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-453 .pagination>li>a:focus,.factory-bootstrap-453 .pagination>li>a:hover,.factory-bootstrap-453 .pagination>li>span:focus,.factory-bootstrap-453 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-453 .pagination>.disabled>a,.factory-bootstrap-453 .pagination>.disabled>a:focus,.factory-bootstrap-453 .pagination>.disabled>a:hover,.factory-bootstrap-453 .pagination>.disabled>span,.factory-bootstrap-453 .pagination>.disabled>span:focus,.factory-bootstrap-453 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-453 .pagination-lg>li>a,.factory-bootstrap-453 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-453 .pagination-lg>li:first-child>a,.factory-bootstrap-453 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-453 .pagination-lg>li:last-child>a,.factory-bootstrap-453 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-453 .pagination-sm>li>a,.factory-bootstrap-453 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-453 .pagination-sm>li:first-child>a,.factory-bootstrap-453 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-453 .pagination-sm>li:last-child>a,.factory-bootstrap-453 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-453 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-453 .pager:after,.factory-bootstrap-453 .pager:before{display:table;content:" "}.factory-bootstrap-453 .pager:after{clear:both}.factory-bootstrap-453 .pager li{display:inline}.factory-bootstrap-453 .pager li>a,.factory-bootstrap-453 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-453 .pager li>a:focus,.factory-bootstrap-453 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-453 .pager .next>a,.factory-bootstrap-453 .pager .next>span{float:right}.factory-bootstrap-453 .pager .previous>a,.factory-bootstrap-453 .pager .previous>span{float:left}.factory-bootstrap-453 .pager .disabled>a,.factory-bootstrap-453 .pager .disabled>a:focus,.factory-bootstrap-453 .pager .disabled>a:hover,.factory-bootstrap-453 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-453 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-453 .label[href]:focus,.factory-bootstrap-453 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-453 .label:empty{display:none}.factory-bootstrap-453 .btn .label{position:relative;top:-1px}.factory-bootstrap-453 .label-default{background-color:#999}.factory-bootstrap-453 .label-default[href]:focus,.factory-bootstrap-453 .label-default[href]:hover{background-color:gray}.factory-bootstrap-453 .label-primary{background-color:#428bca}.factory-bootstrap-453 .label-primary[href]:focus,.factory-bootstrap-453 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-453 .label-success{background-color:#5cb85c}.factory-bootstrap-453 .label-success[href]:focus,.factory-bootstrap-453 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-453 .label-info{background-color:#5bc0de}.factory-bootstrap-453 .label-info[href]:focus,.factory-bootstrap-453 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-453 .label-warning{background-color:#f0ad4e}.factory-bootstrap-453 .label-warning[href]:focus,.factory-bootstrap-453 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-453 .label-danger{background-color:#d9534f}.factory-bootstrap-453 .label-danger[href]:focus,.factory-bootstrap-453 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-453 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-453 .badge:empty{display:none}.factory-bootstrap-453 .btn .badge{position:relative;top:-1px}.factory-bootstrap-453 a.badge:focus,.factory-bootstrap-453 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-453 .nav-pills>.active>a>.badge,.factory-bootstrap-453 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-453 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-453 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-453 .jumbotron .h1,.factory-bootstrap-453 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-453 .jumbotron p{line-height:1.4}.factory-bootstrap-453 .container .jumbotron{border-radius:6px}.factory-bootstrap-453 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-453 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-453 .thumbnail a>img,.factory-bootstrap-453 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-453 a.thumbnail.active,.factory-bootstrap-453 a.thumbnail:focus,.factory-bootstrap-453 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-453 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-453 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-453 .alert .alert-link{font-weight:700}.factory-bootstrap-453 .alert>p,.factory-bootstrap-453 .alert>ul{margin-bottom:0}.factory-bootstrap-453 .alert>p+p{margin-top:5px}.factory-bootstrap-453 .alert-dismissable{padding-right:35px}.factory-bootstrap-453 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-453 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-453 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-453 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-453 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-453 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-453 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-453 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-453 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-453 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-453 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-453 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-453 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-453 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-453 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-453 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-453 .media,.factory-bootstrap-453 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-453 .media,.factory-bootstrap-453 .media .media{margin-top:15px}.factory-bootstrap-453 .media:first-child{margin-top:0}.factory-bootstrap-453 .media-object{display:block}.factory-bootstrap-453 .media-heading{margin:0 0 5px}.factory-bootstrap-453 .media>.pull-left{margin-right:10px}.factory-bootstrap-453 .media>.pull-right{margin-left:10px}.factory-bootstrap-453 .media-list{padding-left:0;list-style:none}.factory-bootstrap-453 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-453 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-453 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-453 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-453 .list-group-item>.badge{float:right}.factory-bootstrap-453 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-453 a.list-group-item{color:#555}.factory-bootstrap-453 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-453 a.list-group-item:focus,.factory-bootstrap-453 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-453 a.list-group-item.active,.factory-bootstrap-453 a.list-group-item.active:focus,.factory-bootstrap-453 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-453 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-453 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-453 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-453 a.list-group-item.active .list-group-item-text,.factory-bootstrap-453 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-453 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-453 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-453 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-453 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .panel-body{padding:15px}.factory-bootstrap-453 .panel-body:after,.factory-bootstrap-453 .panel-body:before{display:table;content:" "}.factory-bootstrap-453 .panel-body:after{clear:both}.factory-bootstrap-453 .panel>.list-group{margin-bottom:0}.factory-bootstrap-453 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-453 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-453 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-453 .panel>.table,.factory-bootstrap-453 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-453 .panel>.panel-body+.table,.factory-bootstrap-453 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-453 .panel>.table>tbody:first-child td,.factory-bootstrap-453 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-453 .panel>.table-bordered,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-453 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-453 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-453 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-453 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-453 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-453 .panel-title>a{color:inherit}.factory-bootstrap-453 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-453 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-453 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-453 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-453 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-453 .panel-group .panel-footer{border-top:0}.factory-bootstrap-453 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-453 .panel-default{border-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-453 .panel-primary{border-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-453 .panel-success{border-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-453 .panel-warning{border-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-453 .panel-danger{border-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-453 .panel-info{border-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-453 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-453 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-453 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-453 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-453 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-453 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-453 .close:focus,.factory-bootstrap-453 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-453 .modal-open{overflow:hidden}.factory-bootstrap-453 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-453 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-453 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-453 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-453 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-453 .modal-backdrop,.factory-bootstrap-453-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-453 .modal-backdrop.fade,.factory-bootstrap-453-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-453 .modal-backdrop.in,.factory-bootstrap-453-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-453 .modal-header .close{margin-top:-2px}.factory-bootstrap-453 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-453 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-453 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-453 .modal-footer:after,.factory-bootstrap-453 .modal-footer:before{display:table;content:" "}.factory-bootstrap-453 .modal-footer:after{clear:both}.factory-bootstrap-453 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-453 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-453 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-453 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-453 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-453 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-453 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-453 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-453 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-453 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-453 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-453 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-453 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-453 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-453 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-453 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .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;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);background-clip:padding-box}.factory-bootstrap-453 .popover.top{margin-top:-10px}.factory-bootstrap-453 .popover.right{margin-left:10px}.factory-bootstrap-453 .popover.bottom{margin-top:10px}.factory-bootstrap-453 .popover.left{margin-left:-10px}.factory-bootstrap-453 .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}.factory-bootstrap-453 .popover-content{padding:9px 14px}.factory-bootstrap-453 .popover .arrow,.factory-bootstrap-453 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-453 .popover .arrow{border-width:11px}.factory-bootstrap-453 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-453 .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}.factory-bootstrap-453 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-453 .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}.factory-bootstrap-453 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-453 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-453 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-453 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-453 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-453 .carousel{position:relative}.factory-bootstrap-453 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-453 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-453 .carousel-inner>.item>a>img,.factory-bootstrap-453 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-453 .carousel-inner>.active,.factory-bootstrap-453 .carousel-inner>.next,.factory-bootstrap-453 .carousel-inner>.prev{display:block}.factory-bootstrap-453 .carousel-inner>.active{left:0}.factory-bootstrap-453 .carousel-inner>.next,.factory-bootstrap-453 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-453 .carousel-inner>.next{left:100%}.factory-bootstrap-453 .carousel-inner>.prev{left:-100%}.factory-bootstrap-453 .carousel-inner>.next.left,.factory-bootstrap-453 .carousel-inner>.prev.right{left:0}.factory-bootstrap-453 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-453 .carousel-inner>.active.right{left:100%}.factory-bootstrap-453 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-453 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-453 .carousel-control:focus,.factory-bootstrap-453 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-453 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-453 .carousel-control .icon-next,.factory-bootstrap-453 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-453 .carousel-control .icon-prev{left:50%}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-453 .carousel-control .icon-next{right:50%}.factory-bootstrap-453 .carousel-control .icon-next,.factory-bootstrap-453 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-453 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-453 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-453 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-453 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-453 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-453 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-453 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-453 .clearfix:after,.factory-bootstrap-453 .clearfix:before{display:table;content:" "}.factory-bootstrap-453 .clearfix:after{clear:both}.factory-bootstrap-453 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-453 .pull-right{float:right!important}.factory-bootstrap-453 .pull-left{float:left!important}.factory-bootstrap-453 .hide{display:none!important}.factory-bootstrap-453 .show{display:block!important}.factory-bootstrap-453 .invisible{visibility:hidden}.factory-bootstrap-453 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-453 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-453 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-453 .visible-lg,.factory-bootstrap-453 .visible-md,.factory-bootstrap-453 .visible-sm,.factory-bootstrap-453 .visible-xs,.factory-bootstrap-453 td.visible-lg,.factory-bootstrap-453 td.visible-md,.factory-bootstrap-453 td.visible-sm,.factory-bootstrap-453 td.visible-xs,.factory-bootstrap-453 th.visible-lg,.factory-bootstrap-453 th.visible-md,.factory-bootstrap-453 th.visible-sm,.factory-bootstrap-453 th.visible-xs,.factory-bootstrap-453 tr.visible-lg,.factory-bootstrap-453 tr.visible-md,.factory-bootstrap-453 tr.visible-sm,.factory-bootstrap-453 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-453 .hidden-xs{display:block!important}.factory-bootstrap-453 table.hidden-xs{display:table}.factory-bootstrap-453 tr.hidden-xs{display:table-row!important}.factory-bootstrap-453 td.hidden-xs,.factory-bootstrap-453 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-453 .hidden-sm{display:block!important}.factory-bootstrap-453 table.hidden-sm{display:table}.factory-bootstrap-453 tr.hidden-sm{display:table-row!important}.factory-bootstrap-453 td.hidden-sm,.factory-bootstrap-453 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-453 .hidden-md{display:block!important}.factory-bootstrap-453 table.hidden-md{display:table}.factory-bootstrap-453 tr.hidden-md{display:table-row!important}.factory-bootstrap-453 td.hidden-md,.factory-bootstrap-453 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-453 .hidden-lg{display:block!important}.factory-bootstrap-453 table.hidden-lg{display:table}.factory-bootstrap-453 tr.hidden-lg{display:table-row!important}.factory-bootstrap-453 td.hidden-lg,.factory-bootstrap-453 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-453 .hidden-lg.hidden-xs,.factory-bootstrap-453 td.hidden-lg.hidden-xs,.factory-bootstrap-453 th.hidden-lg.hidden-xs,.factory-bootstrap-453 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-453 .hidden-lg.hidden-sm,.factory-bootstrap-453 td.hidden-lg.hidden-sm,.factory-bootstrap-453 th.hidden-lg.hidden-sm,.factory-bootstrap-453 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-453 .hidden-lg.hidden-md,.factory-bootstrap-453 td.hidden-lg.hidden-md,.factory-bootstrap-453 th.hidden-lg.hidden-md,.factory-bootstrap-453 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-453 .hidden-lg,.factory-bootstrap-453 td.hidden-lg,.factory-bootstrap-453 th.hidden-lg,.factory-bootstrap-453 tr.hidden-lg{display:none!important}}.factory-bootstrap-453 .visible-print,.factory-bootstrap-453 td.visible-print,.factory-bootstrap-453 th.visible-print,.factory-bootstrap-453 tr.visible-print{display:none!important}@media print{.factory-bootstrap-453 .visible-print{display:block!important}.factory-bootstrap-453 table.visible-print{display:table}.factory-bootstrap-453 tr.visible-print{display:table-row!important}.factory-bootstrap-453 td.visible-print,.factory-bootstrap-453 th.visible-print{display:table-cell!important}.factory-bootstrap-453 .hidden-print,.factory-bootstrap-453 td.hidden-print,.factory-bootstrap-453 th.hidden-print,.factory-bootstrap-453 tr.hidden-print{display:none!important}}.factory-bootstrap-453 .btn-danger,.factory-bootstrap-453 .btn-default,.factory-bootstrap-453 .btn-info,.factory-bootstrap-453 .btn-primary,.factory-bootstrap-453 .btn-success,.factory-bootstrap-453 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-453 .btn-danger.active,.factory-bootstrap-453 .btn-danger:active,.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-453 .btn.active,.factory-bootstrap-453 .btn:active{background-image:none}.factory-bootstrap-453 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-453 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-453 .btn-gold:focus,.factory-bootstrap-453 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-453 .btn-gold.active,.factory-bootstrap-453 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-453 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-453 .btn-primary:focus,.factory-bootstrap-453 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-453 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-453 .btn-success:focus,.factory-bootstrap-453 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-453 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-453 .btn-warning:focus,.factory-bootstrap-453 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-453 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-453 .btn-danger.active,.factory-bootstrap-453 .btn-danger:active,.factory-bootstrap-453 .btn-danger:focus,.factory-bootstrap-453 .btn-danger:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-453 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-453 .btn-info:focus,.factory-bootstrap-453 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-453 .img-thumbnail,.factory-bootstrap-453 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-453 .dropdown-menu>li>a:focus,.factory-bootstrap-453 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-453 .dropdown-menu>.active>a,.factory-bootstrap-453 .dropdown-menu>.active>a:focus,.factory-bootstrap-453 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-453 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-453 .navbar-brand,.factory-bootstrap-453 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-453 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-453 .navbar-inverse .navbar-brand,.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-453 .navbar-fixed-bottom,.factory-bootstrap-453 .navbar-fixed-top,.factory-bootstrap-453 .navbar-static-top{border-radius:0}.factory-bootstrap-453 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-453 .alert .actions{padding-top:10px}.factory-bootstrap-453 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-453 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-453 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-453 .alert-normal,.factory-bootstrap-453 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-453 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-453 .alert-danger a:not(.btn),.factory-bootstrap-453 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-453 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-453 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-453 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-453 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-453 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-453 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-453 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-453 .list-group-item.active,.factory-bootstrap-453 .list-group-item.active:focus,.factory-bootstrap-453 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-453 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-453 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-453 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-453 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-453 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-453 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-453 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-453 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-453 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-453 .factory-hidden{display:none}.factory-bootstrap-453 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 article,.factory-bootstrap-454 aside,.factory-bootstrap-454 details,.factory-bootstrap-454 figcaption,.factory-bootstrap-454 figure,.factory-bootstrap-454 footer,.factory-bootstrap-454 header,.factory-bootstrap-454 hgroup,.factory-bootstrap-454 main,.factory-bootstrap-454 nav,.factory-bootstrap-454 section,.factory-bootstrap-454 summary{display:block}.factory-bootstrap-454 audio,.factory-bootstrap-454 canvas,.factory-bootstrap-454 video{display:inline-block}.factory-bootstrap-454 audio:not([controls]){display:none;height:0}.factory-bootstrap-454 [hidden],.factory-bootstrap-454 template{display:none}.factory-bootstrap-454 body{margin:0}.factory-bootstrap-454 a{background:0 0}.factory-bootstrap-454 a:focus{outline:thin dotted}.factory-bootstrap-454 a:active,.factory-bootstrap-454 a:hover{outline:0}.factory-bootstrap-454 h1{margin:.67em 0}.factory-bootstrap-454 b,.factory-bootstrap-454 strong{font-weight:700}.factory-bootstrap-454 dfn{font-style:italic}.factory-bootstrap-454 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 mark{color:#000;background:#ff0}.factory-bootstrap-454 code,.factory-bootstrap-454 kbd,.factory-bootstrap-454 pre,.factory-bootstrap-454 samp{font-size:1em}.factory-bootstrap-454 pre{white-space:pre-wrap}.factory-bootstrap-454 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-454 sub,.factory-bootstrap-454 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-454 sup{top:-.5em}.factory-bootstrap-454 sub{bottom:-.25em}.factory-bootstrap-454 img{border:0}.factory-bootstrap-454 svg:not(:root){overflow:hidden}.factory-bootstrap-454 figure{margin:0}.factory-bootstrap-454 button,.factory-bootstrap-454 input,.factory-bootstrap-454 select,.factory-bootstrap-454 textarea{margin:0}.factory-bootstrap-454 button,.factory-bootstrap-454 select{text-transform:none}.factory-bootstrap-454 select{padding-right:4px!important}.factory-bootstrap-454 button,.factory-bootstrap-454 input[type=reset],.factory-bootstrap-454 input[type=submit],html .factory-bootstrap-454 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-454 button[disabled],html .factory-bootstrap-454 input[disabled]{cursor:default}.factory-bootstrap-454 input[type=checkbox],.factory-bootstrap-454 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-454 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-454 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-454 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-454 button::-moz-focus-inner,.factory-bootstrap-454 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-454 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-454 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-454 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-454 a,.factory-bootstrap-454 a:visited{text-decoration:underline}.factory-bootstrap-454 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-454 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-454 a[href^="javascript:"]:after,.factory-bootstrap-454 a[href^="#"]:after{content:""}.factory-bootstrap-454 blockquote,.factory-bootstrap-454 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-454 thead{display:table-header-group}.factory-bootstrap-454 img,.factory-bootstrap-454 tr{page-break-inside:avoid}.factory-bootstrap-454 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-454 h2,.factory-bootstrap-454 h3,.factory-bootstrap-454 p{orphans:3;widows:3}.factory-bootstrap-454 h2,.factory-bootstrap-454 h3{page-break-after:avoid}.factory-bootstrap-454 select{background:#fff!important}.factory-bootstrap-454 .navbar{display:none}.factory-bootstrap-454 .table td,.factory-bootstrap-454 .table th{background-color:#fff!important}.factory-bootstrap-454 .btn>.caret,.factory-bootstrap-454 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-454 .label{border:1px solid #000}.factory-bootstrap-454 .table{border-collapse:collapse!important}.factory-bootstrap-454 .table-bordered td,.factory-bootstrap-454 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-454 *,.factory-bootstrap-454 :after,.factory-bootstrap-454 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-454{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-454 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-454 button,.factory-bootstrap-454 input,.factory-bootstrap-454 select,.factory-bootstrap-454 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-454 img{vertical-align:middle}.factory-bootstrap-454 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-454 .img-rounded{border-radius:6px}.factory-bootstrap-454 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-454 .img-circle{border-radius:50%}.factory-bootstrap-454 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-454 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-454 .h1,.factory-bootstrap-454 .h2,.factory-bootstrap-454 .h3,.factory-bootstrap-454 .h4,.factory-bootstrap-454 .h5,.factory-bootstrap-454 .h6,.factory-bootstrap-454 h1,.factory-bootstrap-454 h2,.factory-bootstrap-454 h3,.factory-bootstrap-454 h4,.factory-bootstrap-454 h5,.factory-bootstrap-454 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-454 .h1 .small,.factory-bootstrap-454 .h1 small,.factory-bootstrap-454 .h2 .small,.factory-bootstrap-454 .h2 small,.factory-bootstrap-454 .h3 .small,.factory-bootstrap-454 .h3 small,.factory-bootstrap-454 .h4 .small,.factory-bootstrap-454 .h4 small,.factory-bootstrap-454 .h5 .small,.factory-bootstrap-454 .h5 small,.factory-bootstrap-454 .h6 .small,.factory-bootstrap-454 .h6 small,.factory-bootstrap-454 h1 .small,.factory-bootstrap-454 h1 small,.factory-bootstrap-454 h2 .small,.factory-bootstrap-454 h2 small,.factory-bootstrap-454 h3 .small,.factory-bootstrap-454 h3 small,.factory-bootstrap-454 h4 .small,.factory-bootstrap-454 h4 small,.factory-bootstrap-454 h5 .small,.factory-bootstrap-454 h5 small,.factory-bootstrap-454 h6 .small,.factory-bootstrap-454 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-454 h1,.factory-bootstrap-454 h2,.factory-bootstrap-454 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-454 h1 .small,.factory-bootstrap-454 h1 small,.factory-bootstrap-454 h2 .small,.factory-bootstrap-454 h2 small,.factory-bootstrap-454 h3 .small,.factory-bootstrap-454 h3 small{font-size:65%}.factory-bootstrap-454 h4,.factory-bootstrap-454 h5,.factory-bootstrap-454 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-454 h4 .small,.factory-bootstrap-454 h4 small,.factory-bootstrap-454 h5 .small,.factory-bootstrap-454 h5 small,.factory-bootstrap-454 h6 .small,.factory-bootstrap-454 h6 small{font-size:75%}.factory-bootstrap-454 .h1,.factory-bootstrap-454 h1{font-size:36px}.factory-bootstrap-454 .h2,.factory-bootstrap-454 h2{font-size:30px}.factory-bootstrap-454 .h3,.factory-bootstrap-454 h3{font-size:24px}.factory-bootstrap-454 .h4,.factory-bootstrap-454 h4{font-size:18px}.factory-bootstrap-454 .h5,.factory-bootstrap-454 h5{font-size:14px}.factory-bootstrap-454 .h6,.factory-bootstrap-454 h6{font-size:12px}.factory-bootstrap-454 p{margin:0 0 10px}.factory-bootstrap-454 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-454 .small,.factory-bootstrap-454 small{font-size:85%}.factory-bootstrap-454 cite{font-style:normal}.factory-bootstrap-454 .text-muted{color:#999}.factory-bootstrap-454 .text-primary{color:#428bca}.factory-bootstrap-454 .text-primary:hover{color:#3071a9}.factory-bootstrap-454 .text-warning{color:#8a6d3b}.factory-bootstrap-454 .text-warning:hover{color:#66512c}.factory-bootstrap-454 .text-danger{color:#a94442}.factory-bootstrap-454 .text-danger:hover{color:#843534}.factory-bootstrap-454 .text-success{color:#3c763d}.factory-bootstrap-454 .text-success:hover{color:#2b542c}.factory-bootstrap-454 .text-info{color:#31708f}.factory-bootstrap-454 .text-info:hover{color:#245269}.factory-bootstrap-454 .text-left{text-align:left}.factory-bootstrap-454 .text-right{text-align:right}.factory-bootstrap-454 .text-center{text-align:center}.factory-bootstrap-454 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-454 ol,.factory-bootstrap-454 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-454 ol ol,.factory-bootstrap-454 ol ul,.factory-bootstrap-454 ul ol,.factory-bootstrap-454 ul ul{margin-bottom:0}.factory-bootstrap-454 .list-inline,.factory-bootstrap-454 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-454 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-454 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-454 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-454 dd,.factory-bootstrap-454 dt{line-height:1.428571429}.factory-bootstrap-454 dt{font-weight:700}.factory-bootstrap-454 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-454 abbr[data-original-title],.factory-bootstrap-454 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-454 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-454 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-454 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-454 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-454 blockquote .small,.factory-bootstrap-454 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-454 blockquote .small:before,.factory-bootstrap-454 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-454 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-454 blockquote.pull-right .small,.factory-bootstrap-454 blockquote.pull-right p,.factory-bootstrap-454 blockquote.pull-right small{text-align:right}.factory-bootstrap-454 blockquote.pull-right .small:before,.factory-bootstrap-454 blockquote.pull-right small:before{content:''}.factory-bootstrap-454 blockquote.pull-right .small:after,.factory-bootstrap-454 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-454 blockquote:after,.factory-bootstrap-454 blockquote:before{content:""}.factory-bootstrap-454 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-454 code,.factory-bootstrap-454 kbd,.factory-bootstrap-454 pre,.factory-bootstrap-454 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-454 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-454 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-454 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-454 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-454 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-454 .container:after,.factory-bootstrap-454 .container:before{display:table;content:" "}.factory-bootstrap-454 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-454 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-454 .row:after,.factory-bootstrap-454 .row:before{display:table;content:" "}.factory-bootstrap-454 .row:after{clear:both}.factory-bootstrap-454 .col-lg-1,.factory-bootstrap-454 .col-lg-10,.factory-bootstrap-454 .col-lg-11,.factory-bootstrap-454 .col-lg-12,.factory-bootstrap-454 .col-lg-2,.factory-bootstrap-454 .col-lg-3,.factory-bootstrap-454 .col-lg-4,.factory-bootstrap-454 .col-lg-5,.factory-bootstrap-454 .col-lg-6,.factory-bootstrap-454 .col-lg-7,.factory-bootstrap-454 .col-lg-8,.factory-bootstrap-454 .col-lg-9,.factory-bootstrap-454 .col-md-1,.factory-bootstrap-454 .col-md-10,.factory-bootstrap-454 .col-md-11,.factory-bootstrap-454 .col-md-12,.factory-bootstrap-454 .col-md-2,.factory-bootstrap-454 .col-md-3,.factory-bootstrap-454 .col-md-4,.factory-bootstrap-454 .col-md-5,.factory-bootstrap-454 .col-md-6,.factory-bootstrap-454 .col-md-7,.factory-bootstrap-454 .col-md-8,.factory-bootstrap-454 .col-md-9,.factory-bootstrap-454 .col-sm-1,.factory-bootstrap-454 .col-sm-10,.factory-bootstrap-454 .col-sm-11,.factory-bootstrap-454 .col-sm-12,.factory-bootstrap-454 .col-sm-2,.factory-bootstrap-454 .col-sm-3,.factory-bootstrap-454 .col-sm-4,.factory-bootstrap-454 .col-sm-5,.factory-bootstrap-454 .col-sm-6,.factory-bootstrap-454 .col-sm-7,.factory-bootstrap-454 .col-sm-8,.factory-bootstrap-454 .col-sm-9,.factory-bootstrap-454 .col-xs-1,.factory-bootstrap-454 .col-xs-10,.factory-bootstrap-454 .col-xs-11,.factory-bootstrap-454 .col-xs-12,.factory-bootstrap-454 .col-xs-2,.factory-bootstrap-454 .col-xs-3,.factory-bootstrap-454 .col-xs-4,.factory-bootstrap-454 .col-xs-5,.factory-bootstrap-454 .col-xs-6,.factory-bootstrap-454 .col-xs-7,.factory-bootstrap-454 .col-xs-8,.factory-bootstrap-454 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-454 .col-xs-1,.factory-bootstrap-454 .col-xs-10,.factory-bootstrap-454 .col-xs-11,.factory-bootstrap-454 .col-xs-12,.factory-bootstrap-454 .col-xs-2,.factory-bootstrap-454 .col-xs-3,.factory-bootstrap-454 .col-xs-4,.factory-bootstrap-454 .col-xs-5,.factory-bootstrap-454 .col-xs-6,.factory-bootstrap-454 .col-xs-7,.factory-bootstrap-454 .col-xs-8,.factory-bootstrap-454 .col-xs-9{float:left}.factory-bootstrap-454 .col-xs-12{width:100%}.factory-bootstrap-454 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-454 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-454 .col-xs-9{width:75%}.factory-bootstrap-454 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-454 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-454 .col-xs-6{width:50%}.factory-bootstrap-454 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-454 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-454 .col-xs-3{width:25%}.factory-bootstrap-454 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-454 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-454 .col-xs-pull-12{right:100%}.factory-bootstrap-454 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-454 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-454 .col-xs-pull-9{right:75%}.factory-bootstrap-454 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-454 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-454 .col-xs-pull-6{right:50%}.factory-bootstrap-454 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-454 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-454 .col-xs-pull-3{right:25%}.factory-bootstrap-454 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-454 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-454 .col-xs-pull-0{right:0}.factory-bootstrap-454 .col-xs-push-12{left:100%}.factory-bootstrap-454 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-454 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-454 .col-xs-push-9{left:75%}.factory-bootstrap-454 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-454 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-454 .col-xs-push-6{left:50%}.factory-bootstrap-454 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-454 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-454 .col-xs-push-3{left:25%}.factory-bootstrap-454 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-454 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-454 .col-xs-push-0{left:0}.factory-bootstrap-454 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-454 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-454 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-454 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-454 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-454 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-454 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-454 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-454 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-454 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-454 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-454 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-454 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-454 table{max-width:100%;background-color:transparent}.factory-bootstrap-454 th{text-align:left}.factory-bootstrap-454 .table{width:100%;margin-bottom:20px}.factory-bootstrap-454 .table>tbody>tr>td,.factory-bootstrap-454 .table>tbody>tr>th,.factory-bootstrap-454 .table>tfoot>tr>td,.factory-bootstrap-454 .table>tfoot>tr>th,.factory-bootstrap-454 .table>thead>tr>td,.factory-bootstrap-454 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-454 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-454 .table>caption+thead>tr:first-child>td,.factory-bootstrap-454 .table>caption+thead>tr:first-child>th,.factory-bootstrap-454 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-454 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-454 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-454 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-454 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-454 .table .table{background-color:#fff}.factory-bootstrap-454 .table-condensed>tbody>tr>td,.factory-bootstrap-454 .table-condensed>tbody>tr>th,.factory-bootstrap-454 .table-condensed>tfoot>tr>td,.factory-bootstrap-454 .table-condensed>tfoot>tr>th,.factory-bootstrap-454 .table-condensed>thead>tr>td,.factory-bootstrap-454 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-454 .table-bordered,.factory-bootstrap-454 .table-bordered>tbody>tr>td,.factory-bootstrap-454 .table-bordered>tbody>tr>th,.factory-bootstrap-454 .table-bordered>tfoot>tr>td,.factory-bootstrap-454 .table-bordered>tfoot>tr>th,.factory-bootstrap-454 .table-bordered>thead>tr>td,.factory-bootstrap-454 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-454 .table-bordered>thead>tr>td,.factory-bootstrap-454 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-454 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-454 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-454 .table-hover>tbody>tr:hover>td,.factory-bootstrap-454 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-454 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-454 table td[class*=col-],.factory-bootstrap-454 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-454 .table>tbody>.active>td,.factory-bootstrap-454 .table>tbody>.active>th,.factory-bootstrap-454 .table>tbody>tr>.active,.factory-bootstrap-454 .table>tfoot>.active>td,.factory-bootstrap-454 .table>tfoot>.active>th,.factory-bootstrap-454 .table>tfoot>tr>.active,.factory-bootstrap-454 .table>thead>.active>td,.factory-bootstrap-454 .table>thead>.active>th,.factory-bootstrap-454 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-454 .table-hover>tbody>.active:hover>td,.factory-bootstrap-454 .table-hover>tbody>.active:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-454 .table>tbody>.success>td,.factory-bootstrap-454 .table>tbody>.success>th,.factory-bootstrap-454 .table>tbody>tr>.success,.factory-bootstrap-454 .table>tfoot>.success>td,.factory-bootstrap-454 .table>tfoot>.success>th,.factory-bootstrap-454 .table>tfoot>tr>.success,.factory-bootstrap-454 .table>thead>.success>td,.factory-bootstrap-454 .table>thead>.success>th,.factory-bootstrap-454 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-454 .table-hover>tbody>.success:hover>td,.factory-bootstrap-454 .table-hover>tbody>.success:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-454 .table>tbody>.danger>td,.factory-bootstrap-454 .table>tbody>.danger>th,.factory-bootstrap-454 .table>tbody>tr>.danger,.factory-bootstrap-454 .table>tfoot>.danger>td,.factory-bootstrap-454 .table>tfoot>.danger>th,.factory-bootstrap-454 .table>tfoot>tr>.danger,.factory-bootstrap-454 .table>thead>.danger>td,.factory-bootstrap-454 .table>thead>.danger>th,.factory-bootstrap-454 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-454 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-454 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-454 .table>tbody>.warning>td,.factory-bootstrap-454 .table>tbody>.warning>th,.factory-bootstrap-454 .table>tbody>tr>.warning,.factory-bootstrap-454 .table>tfoot>.warning>td,.factory-bootstrap-454 .table>tfoot>.warning>th,.factory-bootstrap-454 .table>tfoot>tr>.warning,.factory-bootstrap-454 .table>thead>.warning>td,.factory-bootstrap-454 .table>thead>.warning>th,.factory-bootstrap-454 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-454 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-454 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-454 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-454 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-454 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-454 input[type=checkbox],.factory-bootstrap-454 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-454 input[type=file]{display:block}.factory-bootstrap-454 select[multiple],.factory-bootstrap-454 select[size]{height:auto}.factory-bootstrap-454 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-454 input[type=checkbox]:focus,.factory-bootstrap-454 input[type=file]:focus,.factory-bootstrap-454 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-454 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-454 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-454 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-454 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-454 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-454 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-454 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-454 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-454 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-454 .form-control[disabled],.factory-bootstrap-454 .form-control[readonly],.factory-bootstrap-454 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-454 textarea.form-control{height:auto}.factory-bootstrap-454 .form-group{margin-bottom:15px}.factory-bootstrap-454 .checkbox,.factory-bootstrap-454 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-454 .checkbox label,.factory-bootstrap-454 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-454 .checkbox input[type=checkbox],.factory-bootstrap-454 .checkbox-inline input[type=checkbox],.factory-bootstrap-454 .radio input[type=radio],.factory-bootstrap-454 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-454 .checkbox+.checkbox,.factory-bootstrap-454 .radio+.radio{margin-top:-5px}.factory-bootstrap-454 .checkbox-inline,.factory-bootstrap-454 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-454 .checkbox-inline+.checkbox-inline,.factory-bootstrap-454 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-454 .checkbox-inline[disabled],.factory-bootstrap-454 .checkbox[disabled],.factory-bootstrap-454 .radio-inline[disabled],.factory-bootstrap-454 .radio[disabled],.factory-bootstrap-454 fieldset[disabled] .checkbox,.factory-bootstrap-454 fieldset[disabled] .checkbox-inline,.factory-bootstrap-454 fieldset[disabled] .radio,.factory-bootstrap-454 fieldset[disabled] .radio-inline,.factory-bootstrap-454 fieldset[disabled] input[type=checkbox],.factory-bootstrap-454 fieldset[disabled] input[type=radio],.factory-bootstrap-454 input[type=checkbox][disabled],.factory-bootstrap-454 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-454 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-454 textarea.input-sm{height:auto}.factory-bootstrap-454 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-454 textarea.input-lg{height:auto}.factory-bootstrap-454 .has-warning .checkbox,.factory-bootstrap-454 .has-warning .checkbox-inline,.factory-bootstrap-454 .has-warning .control-label,.factory-bootstrap-454 .has-warning .help-block,.factory-bootstrap-454 .has-warning .radio,.factory-bootstrap-454 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-454 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-454 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-454 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-454 .has-error .checkbox,.factory-bootstrap-454 .has-error .checkbox-inline,.factory-bootstrap-454 .has-error .control-label,.factory-bootstrap-454 .has-error .help-block,.factory-bootstrap-454 .has-error .radio,.factory-bootstrap-454 .has-error .radio-inline{color:#a94442}.factory-bootstrap-454 .controls{display:block}.factory-bootstrap-454 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-454 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-454 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-454 .has-success .checkbox,.factory-bootstrap-454 .has-success .checkbox-inline,.factory-bootstrap-454 .has-success .control-label,.factory-bootstrap-454 .has-success .help-block,.factory-bootstrap-454 .has-success .radio,.factory-bootstrap-454 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-454 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-454 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-454 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-454 .form-control-static{margin-bottom:0}.factory-bootstrap-454 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-454 .form-horizontal .checkbox,.factory-bootstrap-454 .form-horizontal .checkbox-inline,.factory-bootstrap-454 .form-horizontal .control-label,.factory-bootstrap-454 .form-horizontal .radio,.factory-bootstrap-454 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-454 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-454 .form-horizontal .checkbox,.factory-bootstrap-454 .form-horizontal .radio{min-height:27px}.factory-bootstrap-454 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-454 .form-horizontal .form-group:after,.factory-bootstrap-454 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-454 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-454 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-454 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-454 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-454 .btn{text-decoration:none}.factory-bootstrap-454 .btn:focus,.factory-bootstrap-454 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-454 .btn.disabled,.factory-bootstrap-454 .btn[disabled],.factory-bootstrap-454 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .btn-default:focus,.factory-bootstrap-454 .btn-default:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-454 .btn-default.disabled,.factory-bootstrap-454 .btn-default.disabled.active,.factory-bootstrap-454 .btn-default.disabled:active,.factory-bootstrap-454 .btn-default.disabled:focus,.factory-bootstrap-454 .btn-default.disabled:hover,.factory-bootstrap-454 .btn-default[disabled],.factory-bootstrap-454 .btn-default[disabled].active,.factory-bootstrap-454 .btn-default[disabled]:active,.factory-bootstrap-454 .btn-default[disabled]:focus,.factory-bootstrap-454 .btn-default[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-default,.factory-bootstrap-454 fieldset[disabled] .btn-default.active,.factory-bootstrap-454 fieldset[disabled] .btn-default:active,.factory-bootstrap-454 fieldset[disabled] .btn-default:focus,.factory-bootstrap-454 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-454 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-454 .btn-primary.disabled,.factory-bootstrap-454 .btn-primary.disabled.active,.factory-bootstrap-454 .btn-primary.disabled:active,.factory-bootstrap-454 .btn-primary.disabled:focus,.factory-bootstrap-454 .btn-primary.disabled:hover,.factory-bootstrap-454 .btn-primary[disabled],.factory-bootstrap-454 .btn-primary[disabled].active,.factory-bootstrap-454 .btn-primary[disabled]:active,.factory-bootstrap-454 .btn-primary[disabled]:focus,.factory-bootstrap-454 .btn-primary[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-primary,.factory-bootstrap-454 fieldset[disabled] .btn-primary.active,.factory-bootstrap-454 fieldset[disabled] .btn-primary:active,.factory-bootstrap-454 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-454 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-454 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-454 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active,.factory-bootstrap-454 .btn-warning:focus,.factory-bootstrap-454 .btn-warning:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-454 .btn-warning.disabled,.factory-bootstrap-454 .btn-warning.disabled.active,.factory-bootstrap-454 .btn-warning.disabled:active,.factory-bootstrap-454 .btn-warning.disabled:focus,.factory-bootstrap-454 .btn-warning.disabled:hover,.factory-bootstrap-454 .btn-warning[disabled],.factory-bootstrap-454 .btn-warning[disabled].active,.factory-bootstrap-454 .btn-warning[disabled]:active,.factory-bootstrap-454 .btn-warning[disabled]:focus,.factory-bootstrap-454 .btn-warning[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-warning,.factory-bootstrap-454 fieldset[disabled] .btn-warning.active,.factory-bootstrap-454 fieldset[disabled] .btn-warning:active,.factory-bootstrap-454 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-454 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-454 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-454 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .btn-success:focus,.factory-bootstrap-454 .btn-success:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-454 .btn-success.disabled,.factory-bootstrap-454 .btn-success.disabled.active,.factory-bootstrap-454 .btn-success.disabled:active,.factory-bootstrap-454 .btn-success.disabled:focus,.factory-bootstrap-454 .btn-success.disabled:hover,.factory-bootstrap-454 .btn-success[disabled],.factory-bootstrap-454 .btn-success[disabled].active,.factory-bootstrap-454 .btn-success[disabled]:active,.factory-bootstrap-454 .btn-success[disabled]:focus,.factory-bootstrap-454 .btn-success[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-success,.factory-bootstrap-454 fieldset[disabled] .btn-success.active,.factory-bootstrap-454 fieldset[disabled] .btn-success:active,.factory-bootstrap-454 fieldset[disabled] .btn-success:focus,.factory-bootstrap-454 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-454 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-454 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .btn-info:focus,.factory-bootstrap-454 .btn-info:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-454 .btn-info.disabled,.factory-bootstrap-454 .btn-info.disabled.active,.factory-bootstrap-454 .btn-info.disabled:active,.factory-bootstrap-454 .btn-info.disabled:focus,.factory-bootstrap-454 .btn-info.disabled:hover,.factory-bootstrap-454 .btn-info[disabled],.factory-bootstrap-454 .btn-info[disabled].active,.factory-bootstrap-454 .btn-info[disabled]:active,.factory-bootstrap-454 .btn-info[disabled]:focus,.factory-bootstrap-454 .btn-info[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-info,.factory-bootstrap-454 fieldset[disabled] .btn-info.active,.factory-bootstrap-454 fieldset[disabled] .btn-info:active,.factory-bootstrap-454 fieldset[disabled] .btn-info:focus,.factory-bootstrap-454 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-454 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-454 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-454 .btn-link,.factory-bootstrap-454 .btn-link:active,.factory-bootstrap-454 .btn-link[disabled],.factory-bootstrap-454 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-link,.factory-bootstrap-454 .btn-link:active,.factory-bootstrap-454 .btn-link:focus,.factory-bootstrap-454 .btn-link:hover{border-color:transparent}.factory-bootstrap-454 .btn-link:focus,.factory-bootstrap-454 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-454 .btn-link[disabled]:focus,.factory-bootstrap-454 .btn-link[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-link:focus,.factory-bootstrap-454 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-454 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-454 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-454 input[type=button].btn-block,.factory-bootstrap-454 input[type=reset].btn-block,.factory-bootstrap-454 input[type=submit].btn-block{width:100%}.factory-bootstrap-454 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-454 .fade.in{opacity:1}.factory-bootstrap-454 .collapse{display:none}.factory-bootstrap-454 .collapse.in{display:block}.factory-bootstrap-454 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-454 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-454 .glyphicon:empty{width:1em}.factory-bootstrap-454 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-454 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-454 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-454 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-454 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-454 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-454 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-454 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-454 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-454 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-454 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-454 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-454 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-454 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-454 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-454 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-454 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-454 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-454 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-454 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-454 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-454 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-454 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-454 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-454 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-454 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-454 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-454 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-454 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-454 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-454 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-454 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-454 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-454 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-454 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-454 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-454 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-454 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-454 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-454 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-454 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-454 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-454 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-454 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-454 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-454 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-454 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-454 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-454 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-454 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-454 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-454 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-454 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-454 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-454 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-454 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-454 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-454 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-454 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-454 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-454 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-454 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-454 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-454 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-454 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-454 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-454 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-454 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-454 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-454 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-454 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-454 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-454 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-454 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-454 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-454 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-454 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-454 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-454 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-454 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-454 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-454 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-454 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-454 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-454 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-454 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-454 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-454 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-454 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-454 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-454 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-454 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-454 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-454 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-454 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-454 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-454 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-454 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-454 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-454 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-454 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-454 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-454 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-454 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-454 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-454 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-454 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-454 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-454 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-454 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-454 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-454 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-454 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-454 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-454 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-454 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-454 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-454 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-454 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-454 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-454 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-454 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-454 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-454 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-454 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-454 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-454 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-454 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-454 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-454 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-454 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-454 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-454 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-454 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-454 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-454 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-454 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-454 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-454 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-454 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-454 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-454 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-454 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-454 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-454 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-454 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-454 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-454 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-454 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-454 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-454 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-454 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-454 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-454 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-454 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-454 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-454 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-454 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-454 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-454 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-454 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-454 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-454 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-454 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-454 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-454 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-454 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-454 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-454 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-454 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-454 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-454 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-454 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-454 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-454 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-454 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-454 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-454 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-454 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-454 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-454 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-454 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-454 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-454 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-454 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-454 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-454 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-454 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-454 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-454 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-454 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-454 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-454 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-454 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-454 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-454 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-454 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-454 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-454 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-454 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-454 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-454 .dropdown{position:relative}.factory-bootstrap-454 .dropdown-toggle:focus{outline:0}.factory-bootstrap-454 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-454 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-454 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-454 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-454 .dropdown-menu>li>a:focus,.factory-bootstrap-454 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-454 .dropdown-menu>.active>a,.factory-bootstrap-454 .dropdown-menu>.active>a:focus,.factory-bootstrap-454 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-454 .dropdown-menu>.disabled>a,.factory-bootstrap-454 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-454 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-454 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-454 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-454 .open>.dropdown-menu{display:block}.factory-bootstrap-454 .open>a{outline:0}.factory-bootstrap-454 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-454 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-454 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-454 .dropup .caret,.factory-bootstrap-454 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-454 .dropup .dropdown-menu,.factory-bootstrap-454 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-454 .btn-group,.factory-bootstrap-454 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-454 .btn-group-vertical>.btn,.factory-bootstrap-454 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-454 .btn-group-vertical>.btn.active,.factory-bootstrap-454 .btn-group-vertical>.btn:active,.factory-bootstrap-454 .btn-group-vertical>.btn:focus,.factory-bootstrap-454 .btn-group-vertical>.btn:hover,.factory-bootstrap-454 .btn-group>.btn.active,.factory-bootstrap-454 .btn-group>.btn:active,.factory-bootstrap-454 .btn-group>.btn:focus,.factory-bootstrap-454 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-454 .btn-group-vertical>.btn:focus,.factory-bootstrap-454 .btn-group>.btn:focus{outline:0}.factory-bootstrap-454 .btn-group .btn+.btn,.factory-bootstrap-454 .btn-group .btn+.btn-group,.factory-bootstrap-454 .btn-group .btn-group+.btn,.factory-bootstrap-454 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-454 .btn-toolbar:after,.factory-bootstrap-454 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-454 .btn-toolbar:after{clear:both}.factory-bootstrap-454 .btn-toolbar .btn-group{float:left}.factory-bootstrap-454 .btn-toolbar>.btn+.btn,.factory-bootstrap-454 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-454 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-454 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-454 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-454 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-454 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-454 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group>.btn-group{float:left}.factory-bootstrap-454 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-454 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-454 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group .dropdown-toggle:active,.factory-bootstrap-454 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-454 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-454 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-454 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-454 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-454 .btn .caret{margin-left:0}.factory-bootstrap-454 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-454 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-454 .btn-group-vertical>.btn,.factory-bootstrap-454 .btn-group-vertical>.btn-group,.factory-bootstrap-454 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-454 .btn-group-vertical>.btn-group:after,.factory-bootstrap-454 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-454 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-454 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-454 .btn-group-vertical>.btn+.btn,.factory-bootstrap-454 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-454 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-454 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-454 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-454 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-454 .btn-group-justified>.btn,.factory-bootstrap-454 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-454 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-454 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-454 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-454 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-454 .input-group-lg>.form-control,.factory-bootstrap-454 .input-group-lg>.input-group-addon,.factory-bootstrap-454 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 select.input-group-lg>.form-control,.factory-bootstrap-454 select.input-group-lg>.input-group-addon,.factory-bootstrap-454 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-454 textarea.input-group-lg>.form-control,.factory-bootstrap-454 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-454 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-454 .input-group-sm>.form-control,.factory-bootstrap-454 .input-group-sm>.input-group-addon,.factory-bootstrap-454 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 select.input-group-sm>.form-control,.factory-bootstrap-454 select.input-group-sm>.input-group-addon,.factory-bootstrap-454 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-454 textarea.input-group-sm>.form-control,.factory-bootstrap-454 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-454 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-454 .input-group .form-control,.factory-bootstrap-454 .input-group-addon,.factory-bootstrap-454 .input-group-btn{display:table-cell}.factory-bootstrap-454 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-454 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-454 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-454 .input-group-addon,.factory-bootstrap-454 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-454 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-454 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-454 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-454 .input-group-addon input[type=checkbox],.factory-bootstrap-454 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-454 .input-group .form-control:first-child,.factory-bootstrap-454 .input-group-addon:first-child,.factory-bootstrap-454 .input-group-btn:first-child>.btn,.factory-bootstrap-454 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-454 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .input-group-addon:first-child{border-right:0}.factory-bootstrap-454 .input-group .form-control:last-child,.factory-bootstrap-454 .input-group-addon:last-child,.factory-bootstrap-454 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-454 .input-group-btn:last-child>.btn,.factory-bootstrap-454 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .input-group-addon:last-child{border-left:0}.factory-bootstrap-454 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-454 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-454 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-454 .input-group-btn>.btn{position:relative}.factory-bootstrap-454 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-454 .input-group-btn>.btn:active,.factory-bootstrap-454 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-454 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-454 .nav:after,.factory-bootstrap-454 .nav:before{display:table;content:" "}.factory-bootstrap-454 .nav:after{clear:both}.factory-bootstrap-454 .nav>li{position:relative;display:block}.factory-bootstrap-454 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-454 .nav>li>a:focus,.factory-bootstrap-454 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-454 .nav>li.disabled>a{color:#999}.factory-bootstrap-454 .nav>li.disabled>a:focus,.factory-bootstrap-454 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-454 .nav .open>a,.factory-bootstrap-454 .nav .open>a:focus,.factory-bootstrap-454 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-454 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-454 .nav>li>a>img{max-width:none}.factory-bootstrap-454 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-454 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-454 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-454 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-454 .nav-tabs>li.active>a,.factory-bootstrap-454 .nav-tabs>li.active>a:focus,.factory-bootstrap-454 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-454 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-454 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-454 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-454 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-454 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-454 .nav-pills>li{float:left}.factory-bootstrap-454 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-454 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-454 .nav-pills>li.active>a,.factory-bootstrap-454 .nav-pills>li.active>a:focus,.factory-bootstrap-454 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-454 .nav-stacked>li{float:none}.factory-bootstrap-454 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-454 .nav-justified{width:100%}.factory-bootstrap-454 .nav-justified>li{float:none}.factory-bootstrap-454 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-454 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-454 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-454 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-454 .nav-tabs-justified>.active>a,.factory-bootstrap-454 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-454 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-454 .tab-content>.tab-pane{display:none}.factory-bootstrap-454 .tab-content>.active{display:block}.factory-bootstrap-454 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-454 .navbar:after,.factory-bootstrap-454 .navbar:before{display:table;content:" "}.factory-bootstrap-454 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-454 .navbar-header:after,.factory-bootstrap-454 .navbar-header:before{display:table;content:" "}.factory-bootstrap-454 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-454 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-454 .navbar-collapse:after,.factory-bootstrap-454 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-454 .navbar-collapse:after{clear:both}.factory-bootstrap-454 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-454 .container>.navbar-collapse,.factory-bootstrap-454 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-454 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-454 .navbar-fixed-bottom,.factory-bootstrap-454 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-454 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-454 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-454 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-454 .navbar-brand:focus,.factory-bootstrap-454 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-454 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-454 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-454 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-454 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-454 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-454 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-454 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-454 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-454 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-454 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-454 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-454 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-454 .navbar-default .navbar-brand:focus,.factory-bootstrap-454 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-nav>li>a,.factory-bootstrap-454 .navbar-default .navbar-text{color:#777}.factory-bootstrap-454 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-454 .navbar-default .navbar-toggle:focus,.factory-bootstrap-454 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-454 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-454 .navbar-default .navbar-collapse,.factory-bootstrap-454 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-454 .navbar-default .navbar-link{color:#777}.factory-bootstrap-454 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-454 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-454 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-454 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-454 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-454 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-454 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-454 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-454 .navbar-inverse .navbar-collapse,.factory-bootstrap-454 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-454 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-454 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-454 .breadcrumb>li{display:inline-block}.factory-bootstrap-454 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-454 .breadcrumb>.active{color:#999}.factory-bootstrap-454 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-454 .pagination>li{display:inline}.factory-bootstrap-454 .pagination>li>a,.factory-bootstrap-454 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-454 .pagination>li:first-child>a,.factory-bootstrap-454 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-454 .pagination>li:last-child>a,.factory-bootstrap-454 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-454 .pagination>li>a:focus,.factory-bootstrap-454 .pagination>li>a:hover,.factory-bootstrap-454 .pagination>li>span:focus,.factory-bootstrap-454 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-454 .pagination>.disabled>a,.factory-bootstrap-454 .pagination>.disabled>a:focus,.factory-bootstrap-454 .pagination>.disabled>a:hover,.factory-bootstrap-454 .pagination>.disabled>span,.factory-bootstrap-454 .pagination>.disabled>span:focus,.factory-bootstrap-454 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-454 .pagination-lg>li>a,.factory-bootstrap-454 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-454 .pagination-lg>li:first-child>a,.factory-bootstrap-454 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-454 .pagination-lg>li:last-child>a,.factory-bootstrap-454 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-454 .pagination-sm>li>a,.factory-bootstrap-454 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-454 .pagination-sm>li:first-child>a,.factory-bootstrap-454 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-454 .pagination-sm>li:last-child>a,.factory-bootstrap-454 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-454 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-454 .pager:after,.factory-bootstrap-454 .pager:before{display:table;content:" "}.factory-bootstrap-454 .pager:after{clear:both}.factory-bootstrap-454 .pager li{display:inline}.factory-bootstrap-454 .pager li>a,.factory-bootstrap-454 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-454 .pager li>a:focus,.factory-bootstrap-454 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-454 .pager .next>a,.factory-bootstrap-454 .pager .next>span{float:right}.factory-bootstrap-454 .pager .previous>a,.factory-bootstrap-454 .pager .previous>span{float:left}.factory-bootstrap-454 .pager .disabled>a,.factory-bootstrap-454 .pager .disabled>a:focus,.factory-bootstrap-454 .pager .disabled>a:hover,.factory-bootstrap-454 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-454 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-454 .label[href]:focus,.factory-bootstrap-454 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-454 .label:empty{display:none}.factory-bootstrap-454 .btn .label{position:relative;top:-1px}.factory-bootstrap-454 .label-default{background-color:#999}.factory-bootstrap-454 .label-default[href]:focus,.factory-bootstrap-454 .label-default[href]:hover{background-color:gray}.factory-bootstrap-454 .label-primary{background-color:#428bca}.factory-bootstrap-454 .label-primary[href]:focus,.factory-bootstrap-454 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-454 .label-success{background-color:#5cb85c}.factory-bootstrap-454 .label-success[href]:focus,.factory-bootstrap-454 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-454 .label-info{background-color:#5bc0de}.factory-bootstrap-454 .label-info[href]:focus,.factory-bootstrap-454 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-454 .label-warning{background-color:#f0ad4e}.factory-bootstrap-454 .label-warning[href]:focus,.factory-bootstrap-454 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-454 .label-danger{background-color:#d9534f}.factory-bootstrap-454 .label-danger[href]:focus,.factory-bootstrap-454 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-454 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-454 .badge:empty{display:none}.factory-bootstrap-454 .btn .badge{position:relative;top:-1px}.factory-bootstrap-454 a.badge:focus,.factory-bootstrap-454 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-454 .nav-pills>.active>a>.badge,.factory-bootstrap-454 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-454 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-454 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-454 .jumbotron .h1,.factory-bootstrap-454 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-454 .jumbotron p{line-height:1.4}.factory-bootstrap-454 .container .jumbotron{border-radius:6px}.factory-bootstrap-454 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-454 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-454 .thumbnail a>img,.factory-bootstrap-454 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-454 a.thumbnail.active,.factory-bootstrap-454 a.thumbnail:focus,.factory-bootstrap-454 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-454 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-454 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-454 .alert .alert-link{font-weight:700}.factory-bootstrap-454 .alert>p,.factory-bootstrap-454 .alert>ul{margin-bottom:0}.factory-bootstrap-454 .alert>p+p{margin-top:5px}.factory-bootstrap-454 .alert-dismissable{padding-right:35px}.factory-bootstrap-454 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-454 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-454 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-454 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-454 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-454 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-454 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-454 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-454 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-454 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-454 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-454 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-454 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-454 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-454 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-454 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-454 .media,.factory-bootstrap-454 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-454 .media,.factory-bootstrap-454 .media .media{margin-top:15px}.factory-bootstrap-454 .media:first-child{margin-top:0}.factory-bootstrap-454 .media-object{display:block}.factory-bootstrap-454 .media-heading{margin:0 0 5px}.factory-bootstrap-454 .media>.pull-left{margin-right:10px}.factory-bootstrap-454 .media>.pull-right{margin-left:10px}.factory-bootstrap-454 .media-list{padding-left:0;list-style:none}.factory-bootstrap-454 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-454 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-454 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-454 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-454 .list-group-item>.badge{float:right}.factory-bootstrap-454 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-454 a.list-group-item{color:#555}.factory-bootstrap-454 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-454 a.list-group-item:focus,.factory-bootstrap-454 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-454 a.list-group-item.active,.factory-bootstrap-454 a.list-group-item.active:focus,.factory-bootstrap-454 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-454 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-454 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-454 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-454 a.list-group-item.active .list-group-item-text,.factory-bootstrap-454 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-454 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-454 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-454 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-454 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .panel-body{padding:15px}.factory-bootstrap-454 .panel-body:after,.factory-bootstrap-454 .panel-body:before{display:table;content:" "}.factory-bootstrap-454 .panel-body:after{clear:both}.factory-bootstrap-454 .panel>.list-group{margin-bottom:0}.factory-bootstrap-454 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-454 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-454 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-454 .panel>.table,.factory-bootstrap-454 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-454 .panel>.panel-body+.table,.factory-bootstrap-454 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-454 .panel>.table>tbody:first-child td,.factory-bootstrap-454 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-454 .panel>.table-bordered,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-454 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-454 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-454 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-454 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-454 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-454 .panel-title>a{color:inherit}.factory-bootstrap-454 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-454 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-454 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-454 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-454 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-454 .panel-group .panel-footer{border-top:0}.factory-bootstrap-454 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-454 .panel-default{border-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-454 .panel-primary{border-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-454 .panel-success{border-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-454 .panel-warning{border-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-454 .panel-danger{border-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-454 .panel-info{border-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-454 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-454 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-454 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-454 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-454 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-454 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-454 .close:focus,.factory-bootstrap-454 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-454 .modal-open{overflow:hidden}.factory-bootstrap-454 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-454 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-454 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-454 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-454 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-454 .modal-backdrop,.factory-bootstrap-454-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-454 .modal-backdrop.fade,.factory-bootstrap-454-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-454 .modal-backdrop.in,.factory-bootstrap-454-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-454 .modal-header .close{margin-top:-2px}.factory-bootstrap-454 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-454 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-454 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-454 .modal-footer:after,.factory-bootstrap-454 .modal-footer:before{display:table;content:" "}.factory-bootstrap-454 .modal-footer:after{clear:both}.factory-bootstrap-454 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-454 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-454 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-454 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-454 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-454 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-454 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-454 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-454 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-454 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-454 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-454 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-454 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-454 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-454 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-454 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .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;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);background-clip:padding-box}.factory-bootstrap-454 .popover.top{margin-top:-10px}.factory-bootstrap-454 .popover.right{margin-left:10px}.factory-bootstrap-454 .popover.bottom{margin-top:10px}.factory-bootstrap-454 .popover.left{margin-left:-10px}.factory-bootstrap-454 .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}.factory-bootstrap-454 .popover-content{padding:9px 14px}.factory-bootstrap-454 .popover .arrow,.factory-bootstrap-454 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-454 .popover .arrow{border-width:11px}.factory-bootstrap-454 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-454 .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}.factory-bootstrap-454 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-454 .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}.factory-bootstrap-454 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-454 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-454 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-454 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-454 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-454 .carousel{position:relative}.factory-bootstrap-454 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-454 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-454 .carousel-inner>.item>a>img,.factory-bootstrap-454 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-454 .carousel-inner>.active,.factory-bootstrap-454 .carousel-inner>.next,.factory-bootstrap-454 .carousel-inner>.prev{display:block}.factory-bootstrap-454 .carousel-inner>.active{left:0}.factory-bootstrap-454 .carousel-inner>.next,.factory-bootstrap-454 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-454 .carousel-inner>.next{left:100%}.factory-bootstrap-454 .carousel-inner>.prev{left:-100%}.factory-bootstrap-454 .carousel-inner>.next.left,.factory-bootstrap-454 .carousel-inner>.prev.right{left:0}.factory-bootstrap-454 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-454 .carousel-inner>.active.right{left:100%}.factory-bootstrap-454 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-454 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-454 .carousel-control:focus,.factory-bootstrap-454 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-454 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-454 .carousel-control .icon-next,.factory-bootstrap-454 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-454 .carousel-control .icon-prev{left:50%}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-454 .carousel-control .icon-next{right:50%}.factory-bootstrap-454 .carousel-control .icon-next,.factory-bootstrap-454 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-454 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-454 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-454 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-454 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-454 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-454 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-454 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-454 .clearfix:after,.factory-bootstrap-454 .clearfix:before{display:table;content:" "}.factory-bootstrap-454 .clearfix:after{clear:both}.factory-bootstrap-454 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-454 .pull-right{float:right!important}.factory-bootstrap-454 .pull-left{float:left!important}.factory-bootstrap-454 .hide{display:none!important}.factory-bootstrap-454 .show{display:block!important}.factory-bootstrap-454 .invisible{visibility:hidden}.factory-bootstrap-454 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-454 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-454 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-454 .visible-lg,.factory-bootstrap-454 .visible-md,.factory-bootstrap-454 .visible-sm,.factory-bootstrap-454 .visible-xs,.factory-bootstrap-454 td.visible-lg,.factory-bootstrap-454 td.visible-md,.factory-bootstrap-454 td.visible-sm,.factory-bootstrap-454 td.visible-xs,.factory-bootstrap-454 th.visible-lg,.factory-bootstrap-454 th.visible-md,.factory-bootstrap-454 th.visible-sm,.factory-bootstrap-454 th.visible-xs,.factory-bootstrap-454 tr.visible-lg,.factory-bootstrap-454 tr.visible-md,.factory-bootstrap-454 tr.visible-sm,.factory-bootstrap-454 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-454 .hidden-xs{display:block!important}.factory-bootstrap-454 table.hidden-xs{display:table}.factory-bootstrap-454 tr.hidden-xs{display:table-row!important}.factory-bootstrap-454 td.hidden-xs,.factory-bootstrap-454 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-454 .hidden-sm{display:block!important}.factory-bootstrap-454 table.hidden-sm{display:table}.factory-bootstrap-454 tr.hidden-sm{display:table-row!important}.factory-bootstrap-454 td.hidden-sm,.factory-bootstrap-454 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-454 .hidden-md{display:block!important}.factory-bootstrap-454 table.hidden-md{display:table}.factory-bootstrap-454 tr.hidden-md{display:table-row!important}.factory-bootstrap-454 td.hidden-md,.factory-bootstrap-454 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-454 .hidden-lg{display:block!important}.factory-bootstrap-454 table.hidden-lg{display:table}.factory-bootstrap-454 tr.hidden-lg{display:table-row!important}.factory-bootstrap-454 td.hidden-lg,.factory-bootstrap-454 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-454 .hidden-lg.hidden-xs,.factory-bootstrap-454 td.hidden-lg.hidden-xs,.factory-bootstrap-454 th.hidden-lg.hidden-xs,.factory-bootstrap-454 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-454 .hidden-lg.hidden-sm,.factory-bootstrap-454 td.hidden-lg.hidden-sm,.factory-bootstrap-454 th.hidden-lg.hidden-sm,.factory-bootstrap-454 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-454 .hidden-lg.hidden-md,.factory-bootstrap-454 td.hidden-lg.hidden-md,.factory-bootstrap-454 th.hidden-lg.hidden-md,.factory-bootstrap-454 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-454 .hidden-lg,.factory-bootstrap-454 td.hidden-lg,.factory-bootstrap-454 th.hidden-lg,.factory-bootstrap-454 tr.hidden-lg{display:none!important}}.factory-bootstrap-454 .visible-print,.factory-bootstrap-454 td.visible-print,.factory-bootstrap-454 th.visible-print,.factory-bootstrap-454 tr.visible-print{display:none!important}@media print{.factory-bootstrap-454 .visible-print{display:block!important}.factory-bootstrap-454 table.visible-print{display:table}.factory-bootstrap-454 tr.visible-print{display:table-row!important}.factory-bootstrap-454 td.visible-print,.factory-bootstrap-454 th.visible-print{display:table-cell!important}.factory-bootstrap-454 .hidden-print,.factory-bootstrap-454 td.hidden-print,.factory-bootstrap-454 th.hidden-print,.factory-bootstrap-454 tr.hidden-print{display:none!important}}.factory-bootstrap-454 .btn-danger,.factory-bootstrap-454 .btn-default,.factory-bootstrap-454 .btn-info,.factory-bootstrap-454 .btn-primary,.factory-bootstrap-454 .btn-success,.factory-bootstrap-454 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-454 .btn-danger.active,.factory-bootstrap-454 .btn-danger:active,.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-454 .btn.active,.factory-bootstrap-454 .btn:active{background-image:none}.factory-bootstrap-454 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-454 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-454 .btn-gold:focus,.factory-bootstrap-454 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-454 .btn-gold.active,.factory-bootstrap-454 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-454 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-454 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-454 .btn-success:focus,.factory-bootstrap-454 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-454 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-454 .btn-warning:focus,.factory-bootstrap-454 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-454 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-454 .btn-danger.active,.factory-bootstrap-454 .btn-danger:active,.factory-bootstrap-454 .btn-danger:focus,.factory-bootstrap-454 .btn-danger:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-454 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-454 .btn-info:focus,.factory-bootstrap-454 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-454 .img-thumbnail,.factory-bootstrap-454 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-454 .dropdown-menu>li>a:focus,.factory-bootstrap-454 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-454 .dropdown-menu>.active>a,.factory-bootstrap-454 .dropdown-menu>.active>a:focus,.factory-bootstrap-454 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-454 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-454 .navbar-brand,.factory-bootstrap-454 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-454 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-454 .navbar-inverse .navbar-brand,.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .navbar-fixed-bottom,.factory-bootstrap-454 .navbar-fixed-top,.factory-bootstrap-454 .navbar-static-top{border-radius:0}.factory-bootstrap-454 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-454 .alert .actions{padding-top:10px}.factory-bootstrap-454 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-454 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-454 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-454 .alert-normal,.factory-bootstrap-454 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-454 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-454 .alert-danger a:not(.btn),.factory-bootstrap-454 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-454 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-454 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-454 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-454 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-454 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-454 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-454 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-454 .list-group-item.active,.factory-bootstrap-454 .list-group-item.active:focus,.factory-bootstrap-454 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-454 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-454 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-454 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-454 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-454 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-454 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-454 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-454 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-454 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-454 .factory-hidden{display:none}.factory-bootstrap-454 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-454 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-454 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-454 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-454 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-454 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-454 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-454 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-454 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-454 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-454 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-454 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-454 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-454 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-454 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-454 .factory-form-group legend+.control-group{margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-454 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-454 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-454 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-454 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-454 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-454 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
|
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
|
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-454 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-454 .btn-primary:disabled,.factory-bootstrap-454 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-454 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-454 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-454 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-454 .nav-tabs a{text-decoration:none}.factory-bootstrap-454 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-454 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-454 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-454 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-454 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-454 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-454 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-454 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-454 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-454 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-454 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-454 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-454 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-454 .factory-align-vertical .control-group textarea{width:90%}
|
libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 .wp-editor-wrap .button,.factory-bootstrap-454 .wp-editor-wrap input,.factory-bootstrap-454 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-454 .switch-html,.factory-bootstrap-454 .switch-tmce{color:#777}.factory-bootstrap-454 .html-active .switch-html,.factory-bootstrap-454 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-454 .switch-html:hover,.factory-bootstrap-454 .switch-tmce:hover{color:#777}
|
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
#side-sortables .factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
#side-sortables .factory-bootstrap-454 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .factory-checkbox-disabled button,.factory-bootstrap-454 .factory-checkbox-disabled input{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-454 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-454 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-454 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-454 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
|
libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-454 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-454 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-454 .iris-picker{margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/control.color.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-color{position:relative}.factory-bootstrap-454 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .factory-color .factory-background,.factory-bootstrap-454 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../assets/images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-454 .factory-color .factory-background{z-index:2;border-radius:3px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-454 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-454 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-454 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-454 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-454 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-454 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
|
libs/factory/bootstrap/assets/css-min/control.fonts.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-454 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-454 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-454 .iris-picker{margin-top:10px}.factory-bootstrap-454 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-454 .factory-font .chosen-results{max-height:150px}
|
libs/factory/bootstrap/assets/css-min/control.list.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-454 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-454 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-454 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-454 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-454 .factory-list .factory-error-text,.factory-bootstrap-454 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-454 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-454 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-454 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-454 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-454 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-454 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
|
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-454 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-454 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-454 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-454 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-454 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/control.pattern.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-454 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-454 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-454 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-454 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-454 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-454 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-454 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-454 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-454 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-454 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-454 .factory-pattern .factory-color,.factory-bootstrap-454 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-454 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-454 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-454 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-454 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-454 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-454 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-454 .factory-pattern .factory-patterns-item,.factory-bootstrap-454 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-454 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-454 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-454 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-454 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-454 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-454 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-454 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-454 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-454 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-454 .factory-pattern .factory-change-color-btn{margin-left:5px}
|
libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-from-radio-label,.factory-bootstrap-454 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-454 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-454 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-454 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-454 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-454 .factory-radio-color{opacity:0}
|
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-454 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-454 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-454 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-454 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-454 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-454 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-454 .factory-point,.factory-bootstrap-454 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-454 .factory-point-color{border-radius:0}.factory-bootstrap-454 .factory-point{background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-454 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-454 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-454 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-454 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-454 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-454 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-454 .factory-preset-gradient,.factory-bootstrap-454 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-454 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-454 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-454 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-454 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-454 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-454 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-454 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-454 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-454 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
|
libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-454 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-454 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-454 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-454 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-454 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-454 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-454 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-454 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-454 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-454 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-454 .factory-paddings-editor .factory-side-left,.factory-bootstrap-454 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-454 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-454 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
|
libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b,c,d){"use strict";a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b,c,d){"use strict";a.fn.factoryBootstrap454_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-454 .factory-accordion").factoryBootstrap454_accordion()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap454_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap454_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
|
11 |
-
return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.
|
8 |
*/
|
9 |
|
10 |
!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
|
11 |
+
return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap454_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap454_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap454_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap454_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-454 .factory-datetimepicker").factoryBootstrap454_DatetimePickerControl(),a(".factory-bootstrap-454 .factory-datetimepicker-range-0").factoryBootstrap454_DatetimePickerControl(),a(".factory-bootstrap-454 .factory-datetimepicker-range-1").factoryBootstrap454_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-454 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-454 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-454 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-454 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap454_dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.factoryBootstrap454_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-454-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap454_modal;a.fn.factoryBootstrap454_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap454_modal.Constructor=b,a.fn.factoryBootstrap454_modal.noConflict=function(){return a.fn.factoryBootstrap454_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap454_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap454_checkboxControl=function(c){if("string"==typeof c){var d=a(this).data("factory.checkbox.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.checkbox.control");d||c.data("factory.checkbox.control",d=new b(this))})},a.fn.factoryBootstrap454_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-checkbox.factory-buttons-way").factoryBootstrap454_checkboxControl(),a(".factory-bootstrap-454 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b){a(function(){a(function(){a(".factory-bootstrap-
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b){a(function(){a(function(){a(".factory-bootstrap-454 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.color.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap454.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap454_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap454_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap454_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap454_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap454_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap454_colorControl",a.factoryBootstrap454.colorControl),a(".factory-bootstrap-454 .factory-color").factoryBootstrap454_colorControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap454_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap454_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-dropdown-and-colors").factoryBootstrap454_dropdownAndColors()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap454_dropdownControl=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdown.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdown.control");d||c.data("factory.dropdown.control",d=new b(this))})},a.fn.factoryBootstrap454_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-dropdown").factoryBootstrap454_dropdownControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.fonts.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap454.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap454_fontControl",a.factoryBootstrap454.fontControl),a(".factory-bootstrap-454 .factory-font").factoryBootstrap454_fontControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.gradient.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap454_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap454_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-gradient").factoryBootstrap454_gradientControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.integer.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap454_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap454_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-integer").factoryBootstrap454_integerControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.list.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap454_listControl=function(c){if("string"==typeof c){var d=a(this).data("factory.list.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.list.control");d||c.data("factory.list.control",d=new b(this))})},a.fn.factoryBootstrap454_listControl.Constructor=b,a(function(){a(".factory-bootstrap-454 .factory-list").factoryBootstrap454_listControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap454_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-454 .factory-multiple-textbox-group").factoryBootstrap454_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.pattern.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap454.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap454_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap454_patternControl",a.factoryBootstrap454.patternControl),a(".factory-bootstrap-454 .factory-pattern").factoryBootstrap454_patternControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b,c,d){"use strict";var e="
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b,c,d){"use strict";var e="factoryBootstrap454_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-454 .factory-more-link").factoryBootstrap454_moreLink()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap454_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap454_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap454_iris("show"),this.$colorPicker.factoryBootstrap454_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},
|