diff --git a/app/assets/stylesheets/application_form/background_style/1/1.jpg b/app/assets/stylesheets/application_form/background_style/1/1.jpg deleted file mode 100644 index 5adfdca..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/1/1.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/1/css/background.css b/app/assets/stylesheets/application_form/background_style/1/css/background.css deleted file mode 100644 index 487823b..0000000 --- a/app/assets/stylesheets/application_form/background_style/1/css/background.css +++ /dev/null @@ -1,63 +0,0 @@ -body, .layout-footer, .layout-footer-inner { - background-color: #c9d7e4; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #0260a7; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -header{ - background: #ffffff; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #333333; -} -.layout-header .header-nav a{ - color: #333333; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #000000; - text-decoration: underline; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/1/js/layout.js b/app/assets/stylesheets/application_form/background_style/1/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/1/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/1/logo.jpg b/app/assets/stylesheets/application_form/background_style/1/logo.jpg deleted file mode 100644 index c2480a6..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/1/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/10/10.jpg b/app/assets/stylesheets/application_form/background_style/10/10.jpg deleted file mode 100644 index 8aaf215..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/10/10.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/10/css/background.css b/app/assets/stylesheets/application_form/background_style/10/css/background.css deleted file mode 100644 index f739e1e..0000000 --- a/app/assets/stylesheets/application_form/background_style/10/css/background.css +++ /dev/null @@ -1,75 +0,0 @@ -.layout-content, .layout-footer { - background: transparent; -} -body{ - background: #0b0c0f; -} -header{ - background: url("/assets/application_form/background_style/10/pageheader.jpg") no-repeat scroll left top #0b0c0f; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #ffffff; -} -.layout-footer-content a{ - color: #ffffff; -} -.layout-footer-inner a:hover{ - color: #cab5b5; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #43f9ed; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } - .header-nav{ - text-align: right; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/10/js/layout.js b/app/assets/stylesheets/application_form/background_style/10/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/10/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/10/pageheader.jpg b/app/assets/stylesheets/application_form/background_style/10/pageheader.jpg deleted file mode 100644 index 89c59e6..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/10/pageheader.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/11/11.jpg b/app/assets/stylesheets/application_form/background_style/11/11.jpg deleted file mode 100644 index c48a49a..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/11/11.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/11/body.jpg b/app/assets/stylesheets/application_form/background_style/11/body.jpg deleted file mode 100644 index 7eb7296..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/11/body.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/11/css/background.css b/app/assets/stylesheets/application_form/background_style/11/css/background.css deleted file mode 100644 index 3c57f0d..0000000 --- a/app/assets/stylesheets/application_form/background_style/11/css/background.css +++ /dev/null @@ -1,67 +0,0 @@ -header, .layout-footer, .layout-footer-inner { - background: transparent; -} -body{ - background: url("/assets/application_form/background_style/11/body.jpg") repeat-x 0 0 #fff; - /*background: linear-gradient(to bottom, #303030 50%, #d4d3d3 50%);*/ -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #727272; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #fff; -} -.layout-header .header-nav a{ - color: #fff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #ff9292; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/11/js/layout.js b/app/assets/stylesheets/application_form/background_style/11/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/11/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/11/logo.jpg b/app/assets/stylesheets/application_form/background_style/11/logo.jpg deleted file mode 100644 index afb2bed..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/11/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/12/12.jpg b/app/assets/stylesheets/application_form/background_style/12/12.jpg deleted file mode 100644 index d40266d..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/12/12.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/12/css/background.css b/app/assets/stylesheets/application_form/background_style/12/css/background.css deleted file mode 100644 index 3faab54..0000000 --- a/app/assets/stylesheets/application_form/background_style/12/css/background.css +++ /dev/null @@ -1,74 +0,0 @@ -header, .layout-footer { - background: transparent; -} -body{ - background: #51594e; -} -.layout-footer-inner{ - padding: 1em; - background: #ffffff; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #727272; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #fff; -} -.layout-header .header-nav a{ - color: #fff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #ff9292; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - padding: 0; - font-size: 1rem; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/12/js/layout.js b/app/assets/stylesheets/application_form/background_style/12/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/12/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/12/logo.jpg b/app/assets/stylesheets/application_form/background_style/12/logo.jpg deleted file mode 100644 index 47ed609..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/12/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/13/13.jpg b/app/assets/stylesheets/application_form/background_style/13/13.jpg deleted file mode 100644 index 741d5f0..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/13/13.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/13/css/background.css b/app/assets/stylesheets/application_form/background_style/13/css/background.css deleted file mode 100644 index 4403524..0000000 --- a/app/assets/stylesheets/application_form/background_style/13/css/background.css +++ /dev/null @@ -1,74 +0,0 @@ -header, .layout-footer { - background: transparent; -} -body{ - background: url("/assets/application_form/background_style/13/top_bg.jpg") top left repeat-x #ebeef7; -} -.layout-footer-inner{ - padding: 1em; - background: #1f1f25; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #96a1ca; -} -.layout-footer-inner a:hover{ - color: #ffffff; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #fff; -} -.layout-header .header-nav a{ - color: #fff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #ff9292; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - padding: 0; - font-size: 1rem; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/13/js/layout.js b/app/assets/stylesheets/application_form/background_style/13/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/13/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/13/top_bg.jpg b/app/assets/stylesheets/application_form/background_style/13/top_bg.jpg deleted file mode 100644 index f5a1342..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/13/top_bg.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/14/14.jpg b/app/assets/stylesheets/application_form/background_style/14/14.jpg deleted file mode 100644 index 75cba2e..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/14/14.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/14/css/background.css b/app/assets/stylesheets/application_form/background_style/14/css/background.css deleted file mode 100644 index fbc3cfa..0000000 --- a/app/assets/stylesheets/application_form/background_style/14/css/background.css +++ /dev/null @@ -1,81 +0,0 @@ -header{ - background: transparent; -} -.layout-footer-inner{ - background: #3d3a39; - padding: 1em; -} -.layout-content, .layout-footer{ - background: #ffffff; -} -body{ - background: #f17655 url("/assets/application_form/background_style/14/top_bg.jpg") left top repeat-x; - background-position-y: 120px; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #ffffff; -} -.layout-footer-inner a:hover{ - color: #ffa8a8; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #27d6c3; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .header-nav{ - text-align: right; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/14/js/layout.js b/app/assets/stylesheets/application_form/background_style/14/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/14/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/14/logo.jpg b/app/assets/stylesheets/application_form/background_style/14/logo.jpg deleted file mode 100644 index a93bec5..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/14/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/14/top_bg.jpg b/app/assets/stylesheets/application_form/background_style/14/top_bg.jpg deleted file mode 100644 index 446fe32..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/14/top_bg.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/15/15.jpg b/app/assets/stylesheets/application_form/background_style/15/15.jpg deleted file mode 100644 index 497c249..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/15/15.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/15/css/background.css b/app/assets/stylesheets/application_form/background_style/15/css/background.css deleted file mode 100644 index 63f0502..0000000 --- a/app/assets/stylesheets/application_form/background_style/15/css/background.css +++ /dev/null @@ -1,78 +0,0 @@ -header, .layout-content, .layout-footer{ - background: transparent; -} -.layout-footer-inner{ - background: #354752; - padding: 1em; -} -body{ - background: #ffffff url("/assets/application_form/background_style/15/top_bg.jpg") left top repeat-x; - background-position-y: 120px; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #ffffff; -} -.layout-footer-inner a:hover{ - color: #ffa8a8; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #27d6c3; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #000; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .header-nav{ - text-align: right; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/15/js/layout.js b/app/assets/stylesheets/application_form/background_style/15/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/15/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/15/logo.jpg b/app/assets/stylesheets/application_form/background_style/15/logo.jpg deleted file mode 100644 index 0712d0f..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/15/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/15/top_bg.jpg b/app/assets/stylesheets/application_form/background_style/15/top_bg.jpg deleted file mode 100644 index 4c62820..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/15/top_bg.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/16/16.jpg b/app/assets/stylesheets/application_form/background_style/16/16.jpg deleted file mode 100644 index 322d64b..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/16/16.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/16/css/background.css b/app/assets/stylesheets/application_form/background_style/16/css/background.css deleted file mode 100644 index ae87f5b..0000000 --- a/app/assets/stylesheets/application_form/background_style/16/css/background.css +++ /dev/null @@ -1,78 +0,0 @@ -header, .layout-content, .layout-footer{ - background: transparent; -} -.layout-footer-inner{ - background: #144015; - padding: 1em; -} -body{ - background: #344734; - border-top: 10px solid #ffc700; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #ffffff; -} -.layout-footer-inner a:hover{ - color: #55ff3c; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #63ff0d; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #ffffff; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .header-nav{ - text-align: right; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/16/js/layout.js b/app/assets/stylesheets/application_form/background_style/16/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/16/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/16/logo.jpg b/app/assets/stylesheets/application_form/background_style/16/logo.jpg deleted file mode 100644 index 87d9d6c..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/16/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/17/17.jpg b/app/assets/stylesheets/application_form/background_style/17/17.jpg deleted file mode 100644 index 9b13430..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/17/17.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/17/bottom_bg.jpg b/app/assets/stylesheets/application_form/background_style/17/bottom_bg.jpg deleted file mode 100644 index bd09ec6..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/17/bottom_bg.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/17/css/background.css b/app/assets/stylesheets/application_form/background_style/17/css/background.css deleted file mode 100644 index 6d20fe7..0000000 --- a/app/assets/stylesheets/application_form/background_style/17/css/background.css +++ /dev/null @@ -1,77 +0,0 @@ -.layout-footer-inner { - background: transparent; -} -.layout-footer{ - background: url("/assets/application_form/background_style/17/bottom_bg.jpg") no-repeat scroll left top #1c2c46; -} -body{ - background: transparent; -} - -header{ - background: url("/assets/application_form/background_style/17/pageheader.jpg") no-repeat scroll left top #5b6986; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #ffffff; -} -.layout-footer-inner a:hover{ - color: #5ceef3; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #302620; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #42fffc; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - font-size: 1rem; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } - .header-nav{ - text-align: right; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/17/js/layout.js b/app/assets/stylesheets/application_form/background_style/17/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/17/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/17/logo.jpg b/app/assets/stylesheets/application_form/background_style/17/logo.jpg deleted file mode 100644 index c4a9f28..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/17/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/17/pageheader.jpg b/app/assets/stylesheets/application_form/background_style/17/pageheader.jpg deleted file mode 100644 index acf4894..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/17/pageheader.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/17/top_bg.jpg b/app/assets/stylesheets/application_form/background_style/17/top_bg.jpg deleted file mode 100644 index e88f46c..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/17/top_bg.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/2/2.jpg b/app/assets/stylesheets/application_form/background_style/2/2.jpg deleted file mode 100644 index a1e9249..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/2/2.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/2/body.gif b/app/assets/stylesheets/application_form/background_style/2/body.gif deleted file mode 100644 index 34f2689..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/2/body.gif and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/2/css/background.css b/app/assets/stylesheets/application_form/background_style/2/css/background.css deleted file mode 100644 index af178e4..0000000 --- a/app/assets/stylesheets/application_form/background_style/2/css/background.css +++ /dev/null @@ -1,67 +0,0 @@ -header, .layout-footer, .layout-footer-inner { - background: transparent; -} -body{ - background: #eaeaea url("/assets/application_form/background_style/2/body.gif") left top repeat-x; - /*background: linear-gradient(to bottom, #303030 50%, #d4d3d3 50%);*/ -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #606060; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #c8d7e3; -} -.layout-header .header-nav a{ - color: #c8d7e3; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #ffffff; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/2/js/layout.js b/app/assets/stylesheets/application_form/background_style/2/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/2/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/2/logo.jpg b/app/assets/stylesheets/application_form/background_style/2/logo.jpg deleted file mode 100644 index 55f340a..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/2/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/3/3.jpg b/app/assets/stylesheets/application_form/background_style/3/3.jpg deleted file mode 100644 index d263a26..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/3/3.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/3/css/background.css b/app/assets/stylesheets/application_form/background_style/3/css/background.css deleted file mode 100644 index ab1c7a3..0000000 --- a/app/assets/stylesheets/application_form/background_style/3/css/background.css +++ /dev/null @@ -1,78 +0,0 @@ -.layout-footer-inner { - background: transparent; -} -.layout-footer{ - background: #343434; -} -body{ - background: transparent; -} -header{ - background: url("/assets/application_form/background_style/3/pageheader.jpg") no-repeat scroll left top 1.5em transparent; -} -.layout-header > .container:before { - background: #cc3303; - width: 100%; - height: 1.5em; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #ffffff; -} -.layout-footer-inner a:hover{ - color: #cab5b5; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #302620; -} -.layout-header .header-nav a{ - color: #302620; - text-decoration: none; - background: #ffffff; -} -.layout-header .header-nav a:hover{ - color: #cb3303; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/3/js/layout.js b/app/assets/stylesheets/application_form/background_style/3/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/3/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/3/logo.jpg b/app/assets/stylesheets/application_form/background_style/3/logo.jpg deleted file mode 100644 index 7e16142..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/3/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/3/pageheader.jpg b/app/assets/stylesheets/application_form/background_style/3/pageheader.jpg deleted file mode 100644 index 47d1b68..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/3/pageheader.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/4/4.jpg b/app/assets/stylesheets/application_form/background_style/4/4.jpg deleted file mode 100644 index a3378a6..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/4/4.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/4/body.jpg b/app/assets/stylesheets/application_form/background_style/4/body.jpg deleted file mode 100644 index 1be9607..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/4/body.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/4/css/background.css b/app/assets/stylesheets/application_form/background_style/4/css/background.css deleted file mode 100644 index 189dd12..0000000 --- a/app/assets/stylesheets/application_form/background_style/4/css/background.css +++ /dev/null @@ -1,66 +0,0 @@ -header, .layout-footer, .layout-footer-inner { - background: transparent; -} -body{ - background: #ffffff url("/assets/application_form/background_style/4/body.jpg") left top repeat-x; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #606060; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #c8d7e3; -} -.layout-header .header-nav a{ - color: #73a119; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #000000; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/4/js/layout.js b/app/assets/stylesheets/application_form/background_style/4/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/4/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/4/logo.jpg b/app/assets/stylesheets/application_form/background_style/4/logo.jpg deleted file mode 100644 index aa03921..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/4/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/5/5.jpg b/app/assets/stylesheets/application_form/background_style/5/5.jpg deleted file mode 100644 index a1d1ccd..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/5/5.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/5/css/background.css b/app/assets/stylesheets/application_form/background_style/5/css/background.css deleted file mode 100644 index 84786c9..0000000 --- a/app/assets/stylesheets/application_form/background_style/5/css/background.css +++ /dev/null @@ -1,72 +0,0 @@ -.layout-footer, .layout-footer-inner { - background: transparent; -} -body{ - background: #ffffff; -} -header{ - background: #124206; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #606060; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #b5e850; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container { - width: 46.875em; - margin: auto; - padding: 0; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } - .layout-header .header-nav{ - text-align: right; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/5/js/layout.js b/app/assets/stylesheets/application_form/background_style/5/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/5/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/5/logo.jpg b/app/assets/stylesheets/application_form/background_style/5/logo.jpg deleted file mode 100644 index 4c4c760..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/5/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/6/6.jpg b/app/assets/stylesheets/application_form/background_style/6/6.jpg deleted file mode 100644 index 6fe429f..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/6/6.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/6/body.jpg b/app/assets/stylesheets/application_form/background_style/6/body.jpg deleted file mode 100644 index 95b0bcd..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/6/body.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/6/css/background.css b/app/assets/stylesheets/application_form/background_style/6/css/background.css deleted file mode 100644 index b17cf1d..0000000 --- a/app/assets/stylesheets/application_form/background_style/6/css/background.css +++ /dev/null @@ -1,75 +0,0 @@ -header, .layout-footer{ - background: transparent; -} -.layout-footer-inner{ - background: #DAEAF8; - padding: 1em; -} -body{ - background: #eaeef1 url("/assets/application_form/background_style/6/body.jpg") left top repeat-x; - background-position-y: 120px; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #6f6f70; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #2c6393; -} -.layout-header .header-nav a{ - color: #2c6393; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #f6ba34; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/6/js/layout.js b/app/assets/stylesheets/application_form/background_style/6/js/layout.js deleted file mode 100644 index c895ea9..0000000 --- a/app/assets/stylesheets/application_form/background_style/6/js/layout.js +++ /dev/null @@ -1,43 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }else{ - var body_image_pos_y = $('header').offset().top + $('header').height() - $('.modules-menu').height(); - $("body").css("background-position-y",Math.ceil(body_image_pos_y)+"px"); - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - var body_image_pos_y = $('header').offset().top + $('header').height() - $('.modules-menu').height(); - $("body").css("background-position-y",Math.ceil(body_image_pos_y)+"px"); - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/6/logo.jpg b/app/assets/stylesheets/application_form/background_style/6/logo.jpg deleted file mode 100644 index f4cbdf7..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/6/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/7/7.jpg b/app/assets/stylesheets/application_form/background_style/7/7.jpg deleted file mode 100644 index 5caf88a..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/7/7.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/7/body.jpg b/app/assets/stylesheets/application_form/background_style/7/body.jpg deleted file mode 100644 index 702d793..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/7/body.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/7/css/background.css b/app/assets/stylesheets/application_form/background_style/7/css/background.css deleted file mode 100644 index 0721ecd..0000000 --- a/app/assets/stylesheets/application_form/background_style/7/css/background.css +++ /dev/null @@ -1,80 +0,0 @@ -header{ - background: transparent; -} -.layout-footer-inner{ - padding: 1em; -} -.layout-content, .layout-footer{ - background: #ffffff; -} -body{ - background: #361c44 url("/assets/application_form/background_style/7/body.jpg") left top repeat-x; - background-position-y: 120px; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #6f6f70; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #27d6c3; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .header-nav{ - text-align: right; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/7/js/layout.js b/app/assets/stylesheets/application_form/background_style/7/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/7/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/7/logo.jpg b/app/assets/stylesheets/application_form/background_style/7/logo.jpg deleted file mode 100644 index 78eb1cb..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/7/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/8/8.jpg b/app/assets/stylesheets/application_form/background_style/8/8.jpg deleted file mode 100644 index 7e25335..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/8/8.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/8/css/background.css b/app/assets/stylesheets/application_form/background_style/8/css/background.css deleted file mode 100644 index 05c3e91..0000000 --- a/app/assets/stylesheets/application_form/background_style/8/css/background.css +++ /dev/null @@ -1,82 +0,0 @@ -.layout-content, header, .layout-footer{ - background: transparent; -} -.layout-footer-inner{ - padding: 1em; -} -.layout-footer .layout-footer-inner{ - background: #ffffff; -} -.layout-header{ - background: #01538f; -} -body{ - background: #cedee8; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #6f6f70; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #27d6c3; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .header-nav{ - text-align: right; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/8/js/layout.js b/app/assets/stylesheets/application_form/background_style/8/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/8/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/8/logo.jpg b/app/assets/stylesheets/application_form/background_style/8/logo.jpg deleted file mode 100644 index 9492f28..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/8/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/9/9.jpg b/app/assets/stylesheets/application_form/background_style/9/9.jpg deleted file mode 100644 index 4bf7fde..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/9/9.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/9/body.jpg b/app/assets/stylesheets/application_form/background_style/9/body.jpg deleted file mode 100644 index 4c106d5..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/9/body.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/background_style/9/css/background.css b/app/assets/stylesheets/application_form/background_style/9/css/background.css deleted file mode 100644 index cdaf120..0000000 --- a/app/assets/stylesheets/application_form/background_style/9/css/background.css +++ /dev/null @@ -1,80 +0,0 @@ -header{ - background: transparent; -} -.layout-footer-inner{ - padding: 1em; -} -.layout-content, .layout-footer{ - background: #e3e3e3; -} -body{ - background: #141414 url("/assets/application_form/background_style/9/body.jpg") left top repeat-x; - background-position-y: 120px; -} -.layout-footer-content, .layout-footer-inner,.layout-footer-content, .footer-counter{ - color: #6f6f70; -} -.layout-footer-inner a:hover{ - color: #000000; -} -.layout-content{ - min-height: 100px; - padding-bottom: 0; -} -.container-fluid>.navbar-collapse, .container-fluid>.navbar-header, .container>.navbar-collapse, .container>.navbar-header{ - margin: 0; -} -.body-banner{ - padding: 0; -} -.row{ - margin: 0; -} -.aside{ - padding-left: 0; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.layout-header .header-nav{ - padding: 0.5em; - color: #ffffff; -} -.layout-header .header-nav a{ - color: #ffffff; - text-decoration: none; -} -.layout-header .header-nav a:hover{ - color: #a0ff24; - text-decoration: none; -} -@media (min-width: 768px){ - header, .container, .layout-footer-inner.container { - width: 46.875em; - margin: auto; - font-size: 1rem; - padding: 0; - } - .layout-footer-inner.container { - padding: 1em; - } - header{ - margin-top: 4em; - } - .layout-header #layout-navigation{ - margin: 0; - } -} -@media (max-width: 767px){ - header, .container, .navbar-brand { - width: 100%; - padding: 0; - } - .header-nav{ - text-align: right; - } - .layout-footer{ - padding: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/9/js/layout.js b/app/assets/stylesheets/application_form/background_style/9/js/layout.js deleted file mode 100644 index 7d0f0a6..0000000 --- a/app/assets/stylesheets/application_form/background_style/9/js/layout.js +++ /dev/null @@ -1,38 +0,0 @@ -;(function($, win, undefined) { - // ECMAScript 5 嚴格模式 - 'use strict'; - $(document).ready(function() { - var timeout_id; - if (window.innerWidth < 768) { - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - } - $(window).resize(function() { - window.clearTimeout(timeout_id) - if (window.innerWidth < 768) { - if($('.mobile-menu').length != 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length == 0){ - $(".modules-menu").appendTo('.mobile-menu'); - } - }, 500); - } - } else { - if($("div.aside").length == 0){ - timeout_id = setTimeout(function(){ - if($('.mobile-menu .modules-menu').length > 0){ - $("header .container").append($('.mobile-menu .modules-menu')) - } - }, 500); - }else{ - timeout_id = setTimeout(function(){ - if($('.modules-menu').length > 0){ - $("div.aside").eq(0).append($('.modules-menu')) - } - }, 500); - } - } - }) - }) -}(jQuery, window)); \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/background_style/9/logo.jpg b/app/assets/stylesheets/application_form/background_style/9/logo.jpg deleted file mode 100644 index 77138b0..0000000 Binary files a/app/assets/stylesheets/application_form/background_style/9/logo.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/1/1.jpg b/app/assets/stylesheets/application_form/content_style/1/1.jpg deleted file mode 100644 index bfda6af..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/1/1.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/1/css/menu.css b/app/assets/stylesheets/application_form/content_style/1/css/menu.css deleted file mode 100644 index d6942dc..0000000 --- a/app/assets/stylesheets/application_form/content_style/1/css/menu.css +++ /dev/null @@ -1,69 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.mobile-menu .modules-menu .menu_text{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - padding-bottom: 2em; - } - .modules-menu-level-0 > li { - float: none; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #396992; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu .modules-menu-level-0{ - background: #ffffff; - margin-bottom: 0; - border: 2px solid #c2c0c0; - border-radius: 0.4em; - width: 100%; - } - .modules-menu{ - background: transparent; - } - .layout-content{ - padding-top: 0; - } - .modules-menu .modules-menu-level-0 > li{ - padding: 0 1em; - text-align: center; - border-bottom: 0.1em solid #c2c0c0; - } - .modules-menu .modules-menu-level-0 > li:hover{ - background-color: #91BFEA; - border-radius: unset; - } - .modules-menu .modules-menu-level-0 li.menu_text{ - background: #396992; - color: #ffffff; - border-radius: 0.3em 0.3em 0 0; - border-bottom: none; - } - .modules-menu .modules-menu-level-0 li.menu_text:hover{ - background: #396992; - color: #ffffff; - border-radius: 0.3em 0.3em 0 0; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; -} diff --git a/app/assets/stylesheets/application_form/content_style/1/css/template.css b/app/assets/stylesheets/application_form/content_style/1/css/template.css deleted file mode 100644 index dd71eac..0000000 --- a/app/assets/stylesheets/application_form/content_style/1/css/template.css +++ /dev/null @@ -1,76 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_hr{ - display: none; - -} -[class*=widget-title] , .application_form_h3{ - margin: 0.5em 0; - line-height: 1.5; - color: #396992; -} -[class*=widget-title] > * , #main-content [class*=page-title], #main-content .index-title{ - color: #396992; -} -.layout-content-inner a, .w-annc .w-annc__title,.i-annc .i-annc__title{ - color: #396992; -} -.layout-content-inner a.btn-primary{ - background: #396992; - color: #ffffff; - border: none; - text-decoration: none; -} - -.layout-content-inner a:hover, .w-annc .w-annc__title:hover,.i-annc .i-annc__title:hover{ - color: #82abce; -} -.layout-content-inner a.btn-primary:hover,.layout-content-inner a.btn-primary:focus,.layout-content-inner a.btn-primary:active { - color: #ffffff; - background: #064d88; - border: none; - text-decoration: none; - outline: none; -} -li.w-annc__item.row:before { - display: none; - content: ""; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - padding: 5px 0; - margin: 0; - border: none; -} -li.w-annc__item.row > * { - border-right: 3px solid #b0b0b0; -} -li.w-annc__item.row > *:last-child { - border-right: none; -} -.w-annc{ - border-bottom: 1px dashed #888888; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -.widget-custom_gallery .row > .col-md-4{ - border: 0.1em solid #b3b2b2; -} -.widget-custom_gallery .row > .col-md-4:hover{ - border: 0.1em solid #396992; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } - .widget-custom_gallery .row > .col-md-4{ - padding: 1em; - } -} -[data-pp="200"]{ - padding: 0 0.9375em; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/1/info.json b/app/assets/stylesheets/application_form/content_style/1/info.json deleted file mode 100644 index c73421c..0000000 --- a/app/assets/stylesheets/application_form/content_style/1/info.json +++ /dev/null @@ -1,2 +0,0 @@ -{ "template": "vertical_1_main_left_annc_top_album_right", - "read_more_position": "lower_right" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/1/js/content.js b/app/assets/stylesheets/application_form/content_style/1/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/1/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/10/10.jpg b/app/assets/stylesheets/application_form/content_style/10/10.jpg deleted file mode 100644 index d3ac4e1..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/10/10.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/10/css/menu.css b/app/assets/stylesheets/application_form/content_style/10/css/menu.css deleted file mode 100644 index 619e5ab..0000000 --- a/app/assets/stylesheets/application_form/content_style/10/css/menu.css +++ /dev/null @@ -1,61 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.mobile-menu .modules-menu .menu_text{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - padding: 1em 0 2em 0; - } - .modules-menu-level-0 > li { - float: none; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #ffffff; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu .modules-menu-level-0{ - background: #f3a84d; - margin-bottom: 0; - border-radius: 0.4em; - width: 100%; - } - .modules-menu{ - background: transparent; - } - .layout-content{ - padding-top: 0; - } - .aside{ - padding-right: 0; - } - .modules-menu .modules-menu-level-0 > li{ - padding: 0.2em 0.3em; - text-align: center; - border-bottom: 0.1em solid #ffffff; - } - .modules-menu .modules-menu-level-0 > li:hover{ - background-color: #f98902; - border-radius: unset; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; - border-left: 9px solid #dbdada; -} diff --git a/app/assets/stylesheets/application_form/content_style/10/css/template.css b/app/assets/stylesheets/application_form/content_style/10/css/template.css deleted file mode 100644 index 94c5780..0000000 --- a/app/assets/stylesheets/application_form/content_style/10/css/template.css +++ /dev/null @@ -1,88 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -/*.application_form_hr{ - display: none; -}*/ -.internal-page [class*=widget-title] , .application_form_h3{ - margin: 0.5em 0; - line-height: 1.5; - color: #333333; -} -.internal-page [class*=widget-title] > * ,.internal-page #main-content [class*=page-title],.internal-page #main-content .index-title{ - color: #333333; -} -.internal-page .layout-content-inner a.btn-primary { - background: #a18a8b; - color: #ffffff; - border: none; - text-decoration: none; -} -.layout-content-inner h1,.layout-content-inner h2,.layout-content-inner h3,.layout-content-inner h4,.layout-content-inner h5,.layout-content-inner h6{ - font-weight: bold; -} -h4.w-annc__entry-title{ - font-weight: 500; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #333333; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #888888; -} -.layout-content-inner a.btn-primary:hover,.layout-content-inner a.btn-primary:focus,.layout-content-inner a.btn-primary:active { - color: #ffffff; - background: #000000; - border: none; - text-decoration: none; - outline: none; - font-weight: bold; -} -li.w-annc__item.row:before { - display: none; - content: ""; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - padding: 5px 0; - margin: 0; - border: none; - position: relative; -} -li.w-annc__item.row .w-annc__postdate-wrap { - display: block; - overflow-wrap: break-word; - padding: 0; -} -.w-annc{ - border-bottom: 1px dashed #888888; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -.widget-custom_gallery .row > .col-md-4{ - border: 0.1em solid #b3b2b2; -} -.widget-custom_gallery .row > .col-md-4:hover{ - border: 0.1em solid #396992; -} - -@media (min-width: 768px){ - .w-annc:last-of-type{ - border-bottom: 0; - } -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } - .widget-custom_gallery .row > .col-md-4{ - padding: 1em; - } -} -[data-pp="200"]{ - padding: 0; - padding-right: 0.9375em; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/10/info.json b/app/assets/stylesheets/application_form/content_style/10/info.json deleted file mode 100644 index 2f548c5..0000000 --- a/app/assets/stylesheets/application_form/content_style/10/info.json +++ /dev/null @@ -1 +0,0 @@ -{ "template": "vertical_3_main_top_annc_left_album_right" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/10/js/content.js b/app/assets/stylesheets/application_form/content_style/10/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/10/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/11/11.jpg b/app/assets/stylesheets/application_form/content_style/11/11.jpg deleted file mode 100644 index a002ab3..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/11/11.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/11/css/menu.css b/app/assets/stylesheets/application_form/content_style/11/css/menu.css deleted file mode 100644 index 6f7cfe8..0000000 --- a/app/assets/stylesheets/application_form/content_style/11/css/menu.css +++ /dev/null @@ -1,61 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.mobile-menu .modules-menu .menu_text{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - padding: 1em 0 2em 0; - } - .modules-menu-level-0 > li { - float: none; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #ffffff; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu .modules-menu-level-0{ - background: #2a75a4; - margin-bottom: 0; - border-radius: 0.4em; - width: 100%; - } - .modules-menu{ - background: transparent; - } - .layout-content{ - padding-top: 0; - } - .aside{ - padding-right: 0; - } - .modules-menu .modules-menu-level-0 > li{ - padding: 0.2em 0.3em; - text-align: center; - border-bottom: 0.1em solid #c2c0c0; - } - .modules-menu .modules-menu-level-0 > li:hover{ - background-color: #646464; - border-radius: unset; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #ffffff; - border-left: 9px solid #ffffff; -} diff --git a/app/assets/stylesheets/application_form/content_style/11/css/template.css b/app/assets/stylesheets/application_form/content_style/11/css/template.css deleted file mode 100644 index 575c239..0000000 --- a/app/assets/stylesheets/application_form/content_style/11/css/template.css +++ /dev/null @@ -1,82 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_hr{ - display: none; -} -.internal-page [class*=widget-title] , .application_form_h3{ - margin: 0.5em 0; - line-height: 1.5; - color: #7aa5cc; -} -.internal-page [class*=widget-title] > * ,.internal-page #main-content [class*=page-title],.internal-page #main-content .index-title{ - color: #7aa5cc; -} -.layout-content-inner a.btn-primary { - background: transparent; - color: #396992; - border: none; - text-decoration: none; -} -.layout-content-inner h1,.layout-content-inner h2,.layout-content-inner h3,.layout-content-inner h4,.layout-content-inner h5,.layout-content-inner h6{ - font-weight: bold; -} -h4.w-annc__entry-title{ - font-weight: 500; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #333333; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #888888; -} -.layout-content-inner a.btn-primary:hover,.layout-content-inner a.btn-primary:focus,.layout-content-inner a.btn-primary:active { - color: #033864; - background: transparent; - border: none; - text-decoration: underline; - outline: none; - font-weight: bold; -} -li.w-annc__item.row:before { - display: none; - content: ""; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - padding: 5px 0; - margin: 0; - border: none; - position: relative; -} -li.w-annc__item.row .w-annc__postdate-wrap { - display: block; - padding: 0; - overflow-wrap: break-word; -} -.w-annc{ - border-bottom: 1px dashed #888888; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -.widget-custom_gallery .row > .col-md-4{ - border: 0.1em solid #b3b2b2; -} -.widget-custom_gallery .row > .col-md-4:hover{ - border: 0.1em solid #396992; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } - .widget-custom_gallery .row > .col-md-4{ - padding: 1em; - } -} -[data-pp="200"]{ - padding: 0; - padding-right: 0.9375em; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/11/info.json b/app/assets/stylesheets/application_form/content_style/11/info.json deleted file mode 100644 index 3b356b1..0000000 --- a/app/assets/stylesheets/application_form/content_style/11/info.json +++ /dev/null @@ -1 +0,0 @@ -{ "template": "vertical_2_main_right_annc_left_album_bottom" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/11/js/content.js b/app/assets/stylesheets/application_form/content_style/11/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/11/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/12/12.jpg b/app/assets/stylesheets/application_form/content_style/12/12.jpg deleted file mode 100644 index 54f5a27..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/12/12.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/12/css/menu.css b/app/assets/stylesheets/application_form/content_style/12/css/menu.css deleted file mode 100644 index cffcce8..0000000 --- a/app/assets/stylesheets/application_form/content_style/12/css/menu.css +++ /dev/null @@ -1,43 +0,0 @@ -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - } -} -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu .modules-menu-level-0 > li > a { - color: #ffffff; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu,.modules-menu .modules-menu-level-0{ - background: #5cb65e; - margin-bottom: 0; - padding: 0 1em; - } - .modules-menu .modules-menu-level-0 > li:hover { - background-color: #4c8653; - border-radius: 0; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; -} diff --git a/app/assets/stylesheets/application_form/content_style/12/css/template.css b/app/assets/stylesheets/application_form/content_style/12/css/template.css deleted file mode 100644 index a3eb7d9..0000000 --- a/app/assets/stylesheets/application_form/content_style/12/css/template.css +++ /dev/null @@ -1,111 +0,0 @@ -[data-module="application_forms_home"] .layout-content-inner{ - background: transparent; -} -.layout-content-inner.container{ - padding-top: 1em; -} -.box-social-share{ - margin: 0; -} -[data-module="application_forms_home"] .row .box-social-share > * > *{ - padding: 0; -} -[data-module="application_forms_home"] .row > * > * > * > *{ - background: #ffffff; - padding: 0 1em; -} -[data-module="application_forms_home"] .row > *, .row > * > *{ - padding: 0; -} -.layout-content{ - padding-top: 0; -} -.application_form_h3{ - font-size: 1.5em; - font-weight: bold; - color: #ffc468; - margin-top: 0; - line-height: 1.5; -} -.application_form_hr{ - display: none; -} -.head_before{ - writing-mode: vertical-rl; - text-orientation: mixed; - background: #ffc468; - color: #ffffff; - border-radius: 0.5em; - width: 1.1em; - height: 1.1em; - font-size: 1em; - padding-top: 0.3em; - margin-right: 0.3em; - margin-bottom: -0.2em; -} -[class*=widget-title] { - margin: 0.5em 0; - line-height: 1.5; - color: #ffc468; - font-weight: bold; -} -[class*=widget-title] > * , #main-content [class*=page-title], #main-content .index-title{ - color: #ffc468; - font-weight: bold; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #333333; - background: transparent; - border: 0; -} -.layout-content-inner [data-subpart-id] a.btn-primary, .layout-content-inner #main-content a.btn-primary{ - background: transparent; - text-decoration: none; - color: #2e2b44; - border: 0; - font-weight: bold; - padding: 0.3em; - font-size: 1.1em; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #666666; -} -a.btn-primary:hover, a.btn-primary:focus, a.btn-primary:active { - color: #666666; - background: transparent; - border: none; - text-decoration: underline; - outline: none; -} -li.w-annc__item.row:before { - display: none; - content: ""; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; - white-space: normal; -} -li.w-annc__item.row { - border-bottom: 1px dashed #888888; - padding: 5px 0; - margin: 0; - position: relative; -} -li.w-annc__item.row .w-annc__postdate-wrap { - display: block; - padding: 0; - overflow-wrap: break-word; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} -@media (min-width: 992px){ - [data-module="application_forms_home"] .row > * > section:nth-of-type(1){ - padding-right: 1em; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/12/info.json b/app/assets/stylesheets/application_form/content_style/12/info.json deleted file mode 100644 index 282bc10..0000000 --- a/app/assets/stylesheets/application_form/content_style/12/info.json +++ /dev/null @@ -1,2 +0,0 @@ -{ "template": "horizontal_12_main_left_annc_right_album_right", - "main_content": "show_information"} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/12/js/content.js b/app/assets/stylesheets/application_form/content_style/12/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/12/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/13/13.jpg b/app/assets/stylesheets/application_form/content_style/13/13.jpg deleted file mode 100644 index 4feacbc..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/13/13.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/13/css/menu.css b/app/assets/stylesheets/application_form/content_style/13/css/menu.css deleted file mode 100644 index 845eb67..0000000 --- a/app/assets/stylesheets/application_form/content_style/13/css/menu.css +++ /dev/null @@ -1,43 +0,0 @@ -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - } -} -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu .modules-menu-level-0 > li > a { - color: #b1e5ec; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu,.modules-menu .modules-menu-level-0{ - background: #515d7b; - margin-bottom: 0; - padding: 0 1em; - } - .modules-menu .modules-menu-level-0 > li:hover { - background-color: #91BFEA; - border-radius: 0.5em; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; -} diff --git a/app/assets/stylesheets/application_form/content_style/13/css/template.css b/app/assets/stylesheets/application_form/content_style/13/css/template.css deleted file mode 100644 index 28a2e1c..0000000 --- a/app/assets/stylesheets/application_form/content_style/13/css/template.css +++ /dev/null @@ -1,81 +0,0 @@ -.layout-content-inner{ - background: #ffffff; - padding-top: 1em; -} -.layout-content{ - padding-top: 0; -} -.application_form_h3{ - display: none; - font-weight: bold; - color: #666666; - line-height: 1.5; -} -.application_form_hr{ - display: none; -} -.head_before{ - writing-mode: vertical-rl; - text-orientation: mixed; - background: #666666; - color: #ffffff; - border-radius: 0.5em; - width: 1.1em; - height: 1.1em; - font-size: 1em; - padding-top: 0.3em; - margin-right: 0.3em; - margin-bottom: -0.2em; -} -[class*=widget-title] { - margin: 0.5em 0; - line-height: 1.5; - color: #666666; -} -.internal-page [class*=widget-title] > * ,.internal-page #main-content [class*=page-title],.internal-page #main-content .index-title{ - color: #666666; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #666666; - background: transparent; - border: 0; -} -.layout-content-inner [data-subpart-id] a.btn-primary, .layout-content-inner #main-content a.btn-primary{ - background: transparent; - color: #489fc1; - border: 0.1em solid #489fc1; - text-decoration: none; - padding: 0.3em; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #366cf3; -} -.internal-page a.btn-primary:hover,.internal-page a.btn-primary:focus,.internal-page a.btn-primary:active { - color: #000000; - background: transparent; - border: none; - text-decoration: underline; - outline: none; -} -li.w-annc__item.row:before { - display: none; - content: ""; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; - white-space: normal; -} -li.w-annc__item.row { - border-bottom: 1px dashed #888888; - padding: 5px 0; - margin: 0; - position: relative; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/13/info.json b/app/assets/stylesheets/application_form/content_style/13/info.json deleted file mode 100644 index fb15930..0000000 --- a/app/assets/stylesheets/application_form/content_style/13/info.json +++ /dev/null @@ -1 +0,0 @@ -{ "template": "horizontal_13_main_left_annc_right_album_left" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/13/js/content.js b/app/assets/stylesheets/application_form/content_style/13/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/13/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/2/2.jpg b/app/assets/stylesheets/application_form/content_style/2/2.jpg deleted file mode 100644 index aa22ae9..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/2/2.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/2/css/menu.css b/app/assets/stylesheets/application_form/content_style/2/css/menu.css deleted file mode 100644 index 23ca3b7..0000000 --- a/app/assets/stylesheets/application_form/content_style/2/css/menu.css +++ /dev/null @@ -1,62 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.mobile-menu .modules-menu .menu_text{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - padding: 1em 0 2em 0; - } - .modules-menu-level-0 > li { - float: none; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #333333; - border-left: 9px solid #969696; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu .modules-menu-level-0{ - background: #e8e6e7; - margin-bottom: 0; - border-radius: 0.4em; - width: 100%; - } - .modules-menu{ - background: transparent; - } - .layout-content{ - padding-top: 0; - } - .aside{ - padding-right: 0; - } - .modules-menu .modules-menu-level-0 > li{ - padding: 0.2em 0.3em; - text-align: center; - border-bottom: 0.1em solid #c2c0c0; - } - .modules-menu .modules-menu-level-0 > li:hover{ - background-color: #646464; - border-radius: unset; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; - border-left: 9px solid #dbdada; -} diff --git a/app/assets/stylesheets/application_form/content_style/2/css/template.css b/app/assets/stylesheets/application_form/content_style/2/css/template.css deleted file mode 100644 index 9bdb92c..0000000 --- a/app/assets/stylesheets/application_form/content_style/2/css/template.css +++ /dev/null @@ -1,86 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_hr{ - display: none; -} -.internal-page [class*=widget-title] , .application_form_h3{ - margin: 0.5em 0; - line-height: 1.5; - color: #333333; -} -.internal-page [class*=widget-title] > * ,.internal-page #main-content [class*=page-title],.internal-page #main-content .index-title{ - color: #333333; -} -.layout-content-inner a.btn-primary { - background: transparent; - color: #396992; - border: none; - text-decoration: none; -} -.layout-content-inner h1,.layout-content-inner h2,.layout-content-inner h3,.layout-content-inner h4,.layout-content-inner h5,.layout-content-inner h6{ - font-weight: bold; -} -h4.w-annc__entry-title{ - font-weight: 500; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #333333; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #888888; -} -.layout-content-inner a.btn-primary:hover,.layout-content-inner a.btn-primary:focus,.layout-content-inner a.btn-primary:active { - color: #033864; - background: transparent; - border: none; - text-decoration: underline; - outline: none; - font-weight: bold; -} -li.w-annc__item.row:before { - display: inline-block; - content: " "; - width: 0.5em; - height: 0.5em; - border-radius: 50px; - background-color: #888888; - position: absolute; - top: 12px; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - padding: 5px 0; - margin: 0; - border: none; - position: relative; -} -li.w-annc__item.row .w-annc__postdate-wrap { - display: none; -} -.w-annc{ - border-bottom: 1px dashed #888888; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -.widget-custom_gallery .row > .col-md-4{ - border: 0.1em solid #b3b2b2; -} -.widget-custom_gallery .row > .col-md-4:hover{ - border: 0.1em solid #396992; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } - .widget-custom_gallery .row > .col-md-4{ - padding: 1em; - } -} -[data-pp="200"]{ - padding: 0; - padding-right: 0.9375em; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/2/info.json b/app/assets/stylesheets/application_form/content_style/2/info.json deleted file mode 100644 index c4e9c27..0000000 --- a/app/assets/stylesheets/application_form/content_style/2/info.json +++ /dev/null @@ -1,2 +0,0 @@ -{ "template": "vertical_2_main_right_annc_left_album_bottom", - "read_more_position": "lower_right" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/2/js/content.js b/app/assets/stylesheets/application_form/content_style/2/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/2/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/3/3.jpg b/app/assets/stylesheets/application_form/content_style/3/3.jpg deleted file mode 100644 index d45cbea..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/3/3.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/3/css/menu.css b/app/assets/stylesheets/application_form/content_style/3/css/menu.css deleted file mode 100644 index 674ef05..0000000 --- a/app/assets/stylesheets/application_form/content_style/3/css/menu.css +++ /dev/null @@ -1,60 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.mobile-menu .modules-menu .menu_text{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - padding: 1em 0 2em 0; - } - .modules-menu-level-0 > li { - float: none; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #333333; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu{ - background: transparent; - } - .modules-menu .modules-menu-level-0{ - background: #ffffff; - margin-bottom: 0; - border-radius: 0.4em; - width: 100%; - } - .layout-content{ - padding-top: 0; - } - .aside{ - padding-right: 0; - } - .modules-menu .modules-menu-level-0 > li{ - padding: 0.2em 0.3em; - text-align: center; - border-bottom: 0.1em solid #c2c0c0; - } - .modules-menu .modules-menu-level-0 > li:hover{ - background-color: #e8e6e7; - border-radius: unset; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #35ae31; -} diff --git a/app/assets/stylesheets/application_form/content_style/3/css/template.css b/app/assets/stylesheets/application_form/content_style/3/css/template.css deleted file mode 100644 index d5f0aae..0000000 --- a/app/assets/stylesheets/application_form/content_style/3/css/template.css +++ /dev/null @@ -1,107 +0,0 @@ -.layout-content-inner{ - background: #e8e6e6; - padding-left: 0.9375em; -} -.layout-content.col-sm-9{ - padding-left: 0; -} -.application_form_hr{ - display: none; - -} -[class*=widget-title] , .application_form_h3{ - margin: 0.5em 0; - line-height: 1.5; - color: #333333; -} -[class*=widget-title] > * , #main-content [class*=page-title], #main-content .index-title{ - color: #333333; -} -.layout-content-inner [data-subpart-id] a.btn-primary, .layout-content-inner #main-content a.btn-primary { - background: transparent; - color: #0eb209; - border: none; - text-decoration: none; -} -.layout-content-inner h1,.layout-content-inner h2,.layout-content-inner h3,.layout-content-inner h4,.layout-content-inner h5,.layout-content-inner h6{ - font-weight: bold; -} -h4.w-annc__entry-title{ - font-weight: 500; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #333333; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #0eb209; -} -.layout-content-inner a.btn-primary:hover,.layout-content-inner a.btn-primary:focus,.layout-content-inner a.btn-primary:active { - color: #068a02; - background: transparent; - border: none; - text-decoration: underline; - outline: none; - font-weight: bold; -} -li.w-annc__item.row:before { - display: inline-block; - content: " "; - width: 0.5em; - height: 0.5em; - border-radius: 50px; - background-color: #888888; - position: absolute; - top: 12px; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - padding: 5px 0; - margin: 0; - border: none; - position: relative; -} -li.w-annc__item.row .w-annc__postdate-wrap { - display: none; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -[data-pp="200"]{ - padding: 0 0.9375em; -} -.widget-custom_gallery .row > .col-md-4{ - border: 0.1em solid #b3b2b2; -} -.widget-custom_gallery .row > .col-md-4:hover{ - border: 0.1em solid #396992; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } - .layout-content-inner { - margin: 0; - } - .col-sm-6{ - padding-left: 0; - } - .widget-custom_gallery .row > .col-md-4{ - padding: 1em; - } - .main-content, .w-annc{ - border-bottom: 1px dashed #888888; - } -} -@media (min-width: 768px){ - section .page-content-box:nth-child(1){ - padding-left: 0; - } - .main-content, .w-annc{ - border-bottom: 1px dashed #888888; - } - .w-annc:last-of-type{ - border-bottom: 0; - } -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/3/info.json b/app/assets/stylesheets/application_form/content_style/3/info.json deleted file mode 100644 index 72b2d0c..0000000 --- a/app/assets/stylesheets/application_form/content_style/3/info.json +++ /dev/null @@ -1,2 +0,0 @@ -{"template": "vertical_3_main_top_annc_left_album_right", - "read_more_position": "lower_right" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/3/js/content.js b/app/assets/stylesheets/application_form/content_style/3/js/content.js deleted file mode 100644 index b7d9684..0000000 --- a/app/assets/stylesheets/application_form/content_style/3/js/content.js +++ /dev/null @@ -1,10 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) - if($('[data-pp="200"]').html().trim() == "" && $('[data-pp="200"]').html().trim() == ""){ - $(".main-content").css("border-bottom","0"); - } -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/4/4.jpg b/app/assets/stylesheets/application_form/content_style/4/4.jpg deleted file mode 100644 index 0357f6d..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/4/4.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/4/css/menu.css b/app/assets/stylesheets/application_form/content_style/4/css/menu.css deleted file mode 100644 index 441b5a1..0000000 --- a/app/assets/stylesheets/application_form/content_style/4/css/menu.css +++ /dev/null @@ -1,61 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.mobile-menu .modules-menu .menu_text{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - padding: 1em 0 2em 0; - } - .modules-menu-level-0 > li { - float: none; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #09719c; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu{ - background: transparent; - } - .layout-content-box{ - padding-left: 0; - padding-right: 0; - } - .layout-content-box section { - padding-right: 0; - } - .modules-menu .modules-menu-level-0{ - width: 100%; - background: #e8e6e7; - margin-bottom: 0; - border-radius: 0.4em; - } - .modules-menu .modules-menu-level-0 > li{ - padding: 0.2em 0.3em; - text-align: center; - border-bottom: 0.1em solid #c2c0c0; - } - .modules-menu .modules-menu-level-0 > li:hover{ - border-radius: unset; - background: #b7b7b7; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #ffffff; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/4/css/template.css b/app/assets/stylesheets/application_form/content_style/4/css/template.css deleted file mode 100644 index 72cdc5e..0000000 --- a/app/assets/stylesheets/application_form/content_style/4/css/template.css +++ /dev/null @@ -1,137 +0,0 @@ -.layout-content-inner [data-subpart-id], .layout-content-inner #main-content{ - background: #e8e6e6; -} -[data-pp] .row{ - margin: 0; - padding: 0.5em; -} -.layout-content.col-sm-9{ - padding-left: 0; -} -.application_form_hr{ - display: none; - -} -.layout-content-inner [class*=widget-title] , #main-content [class*=page-title] , #main-content .index-title ,.layout-content-inner .application_form_h3{ - display: inline-block; - margin: 0; - line-height: 1.5; - color: #ffffff; - background: #fe681c; - padding: 0 0.5em; -} -.layout-content-inner [class*=widget-title] span{ - color: #ffffff; -} -[class*=widget-title] > * , #main-content [class*=page-title], #main-content .index-title{ - color: #ffffff; -} -.application_form_hr + *{ - margin-top: 1em; -} -.layout-content-inner [data-subpart-id] a.btn-primary, .layout-content-inner #main-content a.btn-primary { - background: transparent; - color: #2c8bb6; - border: none; - text-decoration: none; -} -.layout-content-inner h1,.layout-content-inner h2,.layout-content-inner h3,.layout-content-inner h4,.layout-content-inner h5,.layout-content-inner h6{ - font-weight: bold; -} -h4.w-annc__entry-title{ - font-weight: 500; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #2c8bb6; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #026c9c; - text-decoration: underline; -} -.layout-content-inner a.btn-primary:hover,.layout-content-inner a.btn-primary:focus,.layout-content-inner a.btn-primary:active { - color: #026c9c; - background: transparent; - border: none; - text-decoration: underline; - outline: none; - font-weight: bold; -} -li.w-annc__item.row:before { - display: inline-block; - color: #666; - content: "→"; - border-radius: 0; - background-color: transparent; - font-family: fantasy; - font-weight: bold; - float: left; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - padding: 5px 0; - margin: 0; - border: none; - border-bottom: 1px dashed #888888; -} -li.w-annc__item.row:last-of-type{ - border-bottom: 0; -} -li.w-annc__item.row .w-annc__postdate-wrap { - display: none; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -[data-pp="200"]{ - padding: 0 0.9375em; -} -[data-pp="201"]{ - background: #e8e6e6; -} -[data-pp="200"] [data-subpart-id],[data-pp="201"] [data-subpart-id]{ - border-top: 1px solid #a6a5a5; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } - .layout-content-inner { - margin-left: 0; - padding: 0; - } - .col-sm-6{ - padding-left: 0; - } - - [data-pp="200"] [data-subpart-id]:last-of-type{ - border-bottom: 1px solid #a6a5a5; - } - .widget-custom_gallery .row > .col-md-4{ - padding: 1em; - } - .layout-content{ - padding: 0; - } - .layout-content-box{ - padding: 0; - } - .layout-content-box > *{ - padding: 0; - } -} -[data-pp="200"] [data-subpart-id]:first-of-type{ - border-top: none; -} -.widget-custom_gallery .row > .col-md-4{ - border: 0.1em solid #b3b2b2; -} -.widget-custom_gallery .row > .col-md-4:hover{ - border: 0.1em solid #396992; -} -.layout-content{ - padding-top: 0; -} -@media (min-width: 768px){ -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/4/info.json b/app/assets/stylesheets/application_form/content_style/4/info.json deleted file mode 100644 index 6dcb456..0000000 --- a/app/assets/stylesheets/application_form/content_style/4/info.json +++ /dev/null @@ -1 +0,0 @@ -{"template": "vertical_4_main_right_annc_left_album_right"} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/4/js/content.js b/app/assets/stylesheets/application_form/content_style/4/js/content.js deleted file mode 100644 index 172aa6e..0000000 --- a/app/assets/stylesheets/application_form/content_style/4/js/content.js +++ /dev/null @@ -1,12 +0,0 @@ -$(document).ready(function(){ - $("[data-subpart-id],#main-content").each(function(i,v){ - if($(v).parent(".body-banner").length == 0 && $(v).html().trim() != ""){ - $(v).css("padding","1em"); - } - }) - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/5/5.jpg b/app/assets/stylesheets/application_form/content_style/5/5.jpg deleted file mode 100644 index b05e7d8..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/5/5.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/5/css/menu.css b/app/assets/stylesheets/application_form/content_style/5/css/menu.css deleted file mode 100644 index 908d0be..0000000 --- a/app/assets/stylesheets/application_form/content_style/5/css/menu.css +++ /dev/null @@ -1,43 +0,0 @@ -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - } -} -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu .modules-menu-level-0 > li > a { - color: #c2c8bd; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu,.modules-menu .modules-menu-level-0{ - background: #4a4a4a; - margin-bottom: 0; - padding: 0 1em; - } - .modules-menu .modules-menu-level-0 > li:hover { - background-color: #91BFEA; - border-radius: 0.5em; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; -} diff --git a/app/assets/stylesheets/application_form/content_style/5/css/template.css b/app/assets/stylesheets/application_form/content_style/5/css/template.css deleted file mode 100644 index 06f083a..0000000 --- a/app/assets/stylesheets/application_form/content_style/5/css/template.css +++ /dev/null @@ -1,83 +0,0 @@ -.layout-content-inner{ - background: #efefb2; -} -.application_form_h3{ - margin: 0.5em 0; - font-weight: 400; - color: #2ebf21; - font-size: 1.5em; - line-height: 1.5; -} -[class*=widget-title]:before, #main-content [class*=page-title]:before, #main-content .index-title:before ,.application_form_h3:before{ - content: "\f009"; - font-family: 'FontAwesome'; - padding-right: 0.2em; -} -.application_form_hr{ - display: none; -} -.internal-page [class*=widget-title] { - margin: 0.5em 0; - font-weight: 400; - color: #2ebf21; - font-size: 1.5em; - line-height: 1.5; -} -[class*=widget-title] > * , #main-content [class*=page-title], #main-content .index-title{ - color: #2ebf21; -} -a.w-annc__more { - background: transparent; - border: none; - text-decoration: underline; -} -.layout-content-inner [data-subpart-id] a, .layout-content-inner #main-content a{ - color: #2ebf21; -} -.layout-content-inner [data-subpart-id] a:hover, .layout-content-inner #main-content a:hover{ - color: #0f7c04; -} -a.btn-primary{ - background: transparent; - border: 0; -} -a.btn-primary:hover, a.btn-primary:focus, a.btn-primary:active { - color: #0f7c04; - background: transparent; - border: none; - text-decoration: underline; - outline: none; -} -li.w-annc__item.row .w-annc__postdate-wrap .fa-calendar-o{ - display: none; -} -li.w-annc__item.row:before { - display: inline-block; - content: " "; - width: 10px; - height: 10px; - border-radius: 50px; - background-color: #108b17; - position: absolute; - top: 0.5em; -} -span.w-annc__postdate, .i-annc__postdate { - color: #787878; -} -li.w-annc__item.row { - border-bottom: 1px dashed #888888; - padding: 5px 0; - margin: 0; - position: relative; -} -.layout-footer-content , .footer-counter{ - color: #0f609a; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} -.layout-content{ - padding-top: 0; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/5/info.json b/app/assets/stylesheets/application_form/content_style/5/info.json deleted file mode 100644 index 42027dd..0000000 --- a/app/assets/stylesheets/application_form/content_style/5/info.json +++ /dev/null @@ -1 +0,0 @@ -{"template": "horizontal_5_main_right_annc_left_album_right"} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/5/js/content.js b/app/assets/stylesheets/application_form/content_style/5/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/5/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/6/6.jpg b/app/assets/stylesheets/application_form/content_style/6/6.jpg deleted file mode 100644 index eb8e0d0..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/6/6.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/6/css/menu.css b/app/assets/stylesheets/application_form/content_style/6/css/menu.css deleted file mode 100644 index 908d0be..0000000 --- a/app/assets/stylesheets/application_form/content_style/6/css/menu.css +++ /dev/null @@ -1,43 +0,0 @@ -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - } -} -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.mobile-menu .modules-menu { - background: #2cafcc; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu .modules-menu-level-0 > li > a { - color: #c2c8bd; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu,.modules-menu .modules-menu-level-0{ - background: #4a4a4a; - margin-bottom: 0; - padding: 0 1em; - } - .modules-menu .modules-menu-level-0 > li:hover { - background-color: #91BFEA; - border-radius: 0.5em; - } -} -.modules-menu .modules-menu-level-0 > li:hover > a { - color: #fff; -} diff --git a/app/assets/stylesheets/application_form/content_style/6/css/template.css b/app/assets/stylesheets/application_form/content_style/6/css/template.css deleted file mode 100644 index 37cc51c..0000000 --- a/app/assets/stylesheets/application_form/content_style/6/css/template.css +++ /dev/null @@ -1,58 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_h3{ - font-weight: bold; - margin: 0.5em 0; -} -[class*=widget-title] { - margin: 0.5em 0; - line-height: 1.5; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} - -.internal-page [class*=widget-title],.internal-page .layout-content-box h3,.internal-page .layout-content-box h1,.internal-page .layout-content-box .w-annc__widget-title1{ - margin: 0.5em 0; - line-height: 1.5; - border: 0.1em solid #8a8a88; - border-left: 0.4em solid #8a8a88; - font-weight: bold; - padding: 0.2em; -} -.application_form_hr{ - display: none; -} -a[class*="more"],a.btn-primary { - background: transparent; - color: #9fca8f; - border: navajowhite; - font-weight: bold; -} -li.w-annc__item.row:before{ - display: none; -} -.layout-content-box a[class*="more"]:hover{ - color: #9fca8f; - background: #e9e9e9; -} -.layout-content-box [class*="annc__title"]:hover, a.btn-primary:hover, .layout-content-box a:hover{ - color: #4db924; - background: transparent; -} -.layout-content-box [class*="annc__title"], .layout-content-box a{ - color: #333333; - background: transparent; -} -.w-annc__postdate-wrap{ - line-height: 1.8; -} -.w-annc__postdate-wrap { - color: #a4a4a4; -} -.layout-content{ - padding-top: 0; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/6/info.json b/app/assets/stylesheets/application_form/content_style/6/info.json deleted file mode 100644 index e04c137..0000000 --- a/app/assets/stylesheets/application_form/content_style/6/info.json +++ /dev/null @@ -1,2 +0,0 @@ -{ "template": "horizontal_6_main_left_annc_right_album_right", - "read_more_position": "lower_right" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/6/js/content.js b/app/assets/stylesheets/application_form/content_style/6/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/6/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/7/7.jpg b/app/assets/stylesheets/application_form/content_style/7/7.jpg deleted file mode 100644 index 5992db6..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/7/7.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/7/css/menu.css b/app/assets/stylesheets/application_form/content_style/7/css/menu.css deleted file mode 100644 index ae89903..0000000 --- a/app/assets/stylesheets/application_form/content_style/7/css/menu.css +++ /dev/null @@ -1,45 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - display: block; - width: 100%; - padding: 0.2em; - border-bottom: #e3e3e3 0.2em dotted !important; - } - .modules-menu .modules-menu-level-0 > li:hover { - background: #ededed; - color: #a4d29a; - border-radius: 0; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #5c7e64; - font-weight: bold; - } - .modules-menu .modules-menu-level-0 > li:hover > a { - color: inherit; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu, .modules-menu .modules-menu-level-0{ - margin-bottom: 0; - padding: 0; - background: transparent; - } -} - diff --git a/app/assets/stylesheets/application_form/content_style/7/css/template.css b/app/assets/stylesheets/application_form/content_style/7/css/template.css deleted file mode 100644 index 271b6fc..0000000 --- a/app/assets/stylesheets/application_form/content_style/7/css/template.css +++ /dev/null @@ -1,100 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_h3{ - background: #a52d14; - font-size: 1.3em; - color: #ecd4cf; - line-height: 1.5; - font-weight: bold; - margin: 0; - padding: 0.2em 0.5em; -} -.application_form_hr{ - border-top: 0.1em dashed #ecd4cf; - margin: 0.5em 0; -} -[class*=widget-title] { - margin: 0.5em 0; - line-height: 1.5; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} -.layout-content-box h3, .layout-content-box h1,.layout-content-box .i-annc .i-annc__th{ - background: #a52d14; - color: #ecd4cf; - margin: 0; - padding: 0.2em 0.5em; -} -.layout-content-box .i-annc .i-annc__th{ - border-top: 0.1em solid #de9485; -} -h1.i-annc__page-title:not(:empty) { - border-bottom: 0.1em dashed #de9485; -} -.internal-page .layout-content-box h3{ - font-size: 1.3em; -} -.layout-content-box h3,.layout-content-box h1{ - font-weight: bold; -} -.application_form_hr{ - display: none; -} -a[class*="more"],a.btn-primary { - background: #a52d14; - color: #ffebe7; -} -li.w-annc__item.row:before{ - display: none; -} -.w-annc a.w-annc__title { - color: #666666; -} -.layout-content-box a:hover, .layout-content-box .w-annc__title:hover{ - color: #a52d14; -} -.layout-content-box .w-annc__title{ - text-decoration: underline; -} -.w-annc__postdate-wrap{ - line-height: 1.8; -} -a[class*="more"]:hover,a.btn-primary:hover { - background: #781703; - color: #ffebe7; -} -.layout-content-box li.w-annc__item.row{ - border-bottom: 0em; - margin: 0; - padding: 0.4em; -} -.layout-content-box li.w-annc__item.row:nth-child(2n+2),.layout-content-box .table-striped>tbody>tr:nth-child(2n+2){ - background: #e9e9e9; -} -.layout-content-box .table-striped>tbody>tr:nth-of-type(odd){ - background: transparent; -} -tbody td, tbody td a, .i-annc a.i-annc__title{ - color: #9b9b9b; -} -.mainContent{ - background: #ffffff; - padding: 0; -} -.layout-content{ - padding-top: 0; -} -.body-banner{ - padding: 0; -} -.row, .layout-content-box{ - margin: 0; - padding: 0; -} -#application_form_content{ - padding: 0.5em; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/7/info.json b/app/assets/stylesheets/application_form/content_style/7/info.json deleted file mode 100644 index 4bbf797..0000000 --- a/app/assets/stylesheets/application_form/content_style/7/info.json +++ /dev/null @@ -1,3 +0,0 @@ -{ "template": "vertical_7_main_right_annc_left_album_bottom", - "read_more_position": "lower_right", - "main_content": "show_information"} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/7/js/content.js b/app/assets/stylesheets/application_form/content_style/7/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/7/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/8/8.jpg b/app/assets/stylesheets/application_form/content_style/8/8.jpg deleted file mode 100644 index 2198d3e..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/8/8.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/8/css/menu.css b/app/assets/stylesheets/application_form/content_style/8/css/menu.css deleted file mode 100644 index ae89903..0000000 --- a/app/assets/stylesheets/application_form/content_style/8/css/menu.css +++ /dev/null @@ -1,45 +0,0 @@ -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -/*img.site-logo{ - display: none; -}*/ -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - display: block; - width: 100%; - padding: 0.2em; - border-bottom: #e3e3e3 0.2em dotted !important; - } - .modules-menu .modules-menu-level-0 > li:hover { - background: #ededed; - color: #a4d29a; - border-radius: 0; - } - .modules-menu .modules-menu-level-0 > li > a { - color: #5c7e64; - font-weight: bold; - } - .modules-menu .modules-menu-level-0 > li:hover > a { - color: inherit; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu, .modules-menu .modules-menu-level-0{ - margin-bottom: 0; - padding: 0; - background: transparent; - } -} - diff --git a/app/assets/stylesheets/application_form/content_style/8/css/template.css b/app/assets/stylesheets/application_form/content_style/8/css/template.css deleted file mode 100644 index 271b6fc..0000000 --- a/app/assets/stylesheets/application_form/content_style/8/css/template.css +++ /dev/null @@ -1,100 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_h3{ - background: #a52d14; - font-size: 1.3em; - color: #ecd4cf; - line-height: 1.5; - font-weight: bold; - margin: 0; - padding: 0.2em 0.5em; -} -.application_form_hr{ - border-top: 0.1em dashed #ecd4cf; - margin: 0.5em 0; -} -[class*=widget-title] { - margin: 0.5em 0; - line-height: 1.5; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} -.layout-content-box h3, .layout-content-box h1,.layout-content-box .i-annc .i-annc__th{ - background: #a52d14; - color: #ecd4cf; - margin: 0; - padding: 0.2em 0.5em; -} -.layout-content-box .i-annc .i-annc__th{ - border-top: 0.1em solid #de9485; -} -h1.i-annc__page-title:not(:empty) { - border-bottom: 0.1em dashed #de9485; -} -.internal-page .layout-content-box h3{ - font-size: 1.3em; -} -.layout-content-box h3,.layout-content-box h1{ - font-weight: bold; -} -.application_form_hr{ - display: none; -} -a[class*="more"],a.btn-primary { - background: #a52d14; - color: #ffebe7; -} -li.w-annc__item.row:before{ - display: none; -} -.w-annc a.w-annc__title { - color: #666666; -} -.layout-content-box a:hover, .layout-content-box .w-annc__title:hover{ - color: #a52d14; -} -.layout-content-box .w-annc__title{ - text-decoration: underline; -} -.w-annc__postdate-wrap{ - line-height: 1.8; -} -a[class*="more"]:hover,a.btn-primary:hover { - background: #781703; - color: #ffebe7; -} -.layout-content-box li.w-annc__item.row{ - border-bottom: 0em; - margin: 0; - padding: 0.4em; -} -.layout-content-box li.w-annc__item.row:nth-child(2n+2),.layout-content-box .table-striped>tbody>tr:nth-child(2n+2){ - background: #e9e9e9; -} -.layout-content-box .table-striped>tbody>tr:nth-of-type(odd){ - background: transparent; -} -tbody td, tbody td a, .i-annc a.i-annc__title{ - color: #9b9b9b; -} -.mainContent{ - background: #ffffff; - padding: 0; -} -.layout-content{ - padding-top: 0; -} -.body-banner{ - padding: 0; -} -.row, .layout-content-box{ - margin: 0; - padding: 0; -} -#application_form_content{ - padding: 0.5em; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/8/info.json b/app/assets/stylesheets/application_form/content_style/8/info.json deleted file mode 100644 index 65d1a8e..0000000 --- a/app/assets/stylesheets/application_form/content_style/8/info.json +++ /dev/null @@ -1,2 +0,0 @@ -{ "template": "vertical_7_main_right_annc_left_album_bottom", - "read_more_position": "lower_right"} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/8/js/content.js b/app/assets/stylesheets/application_form/content_style/8/js/content.js deleted file mode 100644 index dd0bbe5..0000000 --- a/app/assets/stylesheets/application_form/content_style/8/js/content.js +++ /dev/null @@ -1,7 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/9/9.jpg b/app/assets/stylesheets/application_form/content_style/9/9.jpg deleted file mode 100644 index 043f552..0000000 Binary files a/app/assets/stylesheets/application_form/content_style/9/9.jpg and /dev/null differ diff --git a/app/assets/stylesheets/application_form/content_style/9/css/menu.css b/app/assets/stylesheets/application_form/content_style/9/css/menu.css deleted file mode 100644 index b22adc0..0000000 --- a/app/assets/stylesheets/application_form/content_style/9/css/menu.css +++ /dev/null @@ -1,42 +0,0 @@ -@media (min-width: 768px){ - .modules-menu-level-0, #main-nav{ - display: inline-block; - } - .modules-menu-level-0 > li { - float: left; - } -} -.mobile-menu .modules-menu.collapse.in{ - height: 100%; -} -img.site-logo{ - display: none; -} -.layout-slide{ - padding: 0; -} -@media (min-width: 768px){ - .modules-menu .modules-menu-level-0 > li > a { - color: #c2c8bd; - } - .layout-header > .container{ - padding: 0; - } - .navbar-collapse.collapse{ - padding: 0; - } - .modules-menu, .modules-menu-level-0{ - background: #2f3361; - } - .modules-menu .modules-menu-level-0{ - margin-bottom: 0; - padding: 0 1em; - } - .modules-menu .modules-menu-level-0 li:hover{ - background: #333333; - } - .modules-menu .modules-menu-level-0 li:hover > a{ - color: #ffffff; - } -} - diff --git a/app/assets/stylesheets/application_form/content_style/9/css/template.css b/app/assets/stylesheets/application_form/content_style/9/css/template.css deleted file mode 100644 index c611470..0000000 --- a/app/assets/stylesheets/application_form/content_style/9/css/template.css +++ /dev/null @@ -1,79 +0,0 @@ -.layout-content-inner{ - background: #ffffff; -} -.application_form_h3{ - margin: 0.5em 0; - font-size: 1.5em; - line-height: 1.5; - font-weight: bold; - color: #be9bb3; -} -.application_form_hr{ - border-top: 0.1em dashed #acacac; - margin: 0.5em 0; -} -.internal-page [class*=widget-title],.internal-page .layout-content-box h3,.internal-page .layout-content-box h1,.internal-page .layout-content-box .w-annc__widget-title{ - margin: 0.5em 0; - line-height: 1.5; - font-weight: bold; - color: #be9bb3; -} -@media (max-width: 767px){ - .layout-content{ - background: #ffffff; - } -} -.layout-content-box h3,.layout-content-box h2,.layout-content-box h1 { - overflow: hidden; - position: relative; -} -.application_form_hr{ - display: none; -} -a[class*="more"],a.btn-primary { - background: transparent; - color: #a5a5a5; - border: #a5a5a5 0.2em solid; - font-weight: bold; -} -li.w-annc__item.row:before{ - display: none; -} -.w-annc a.w-annc__title{ - color: #666666; -} -.layout-content-box [class*="annc__title"]:hover, .layout-content-box a:hover{ - color: #6d76dd; - background: transparent; -} -a.btn-primary:hover, .layout-content-box .w-annc__title:hover{ - color: #ffffff; - background: #2f3361; - border-color: #2f3361; -} -.w-annc__postdate-wrap{ - line-height: 1.8; -} -.w-annc__postdate-wrap { - color: #c0c0c0; -} -.slash-background{ - background: linear-gradient(-45deg, #ffffff 0.45em, #666666 0.5em, #ffffff 0.45em ); - position: absolute; - z-index: 0; - width: 200%; - height: 1em; - top: 0.15em; - left: -50%; - transform: scaleX(0.6) scaleY(2); - background-size: 0.5em 100%; -} -.layout-content-box h3 > *:nth-child(1),.layout-content-box h2 > *:nth-child(1),.layout-content-box h1 > *:nth-child(1){ - z-index: 1; - background: #fff; - padding-right: 0.4em; - position: relative; -} -.layout-content{ - padding-top: 0; -} \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/9/info.json b/app/assets/stylesheets/application_form/content_style/9/info.json deleted file mode 100644 index c8ef291..0000000 --- a/app/assets/stylesheets/application_form/content_style/9/info.json +++ /dev/null @@ -1,3 +0,0 @@ -{ "template": "horizontal_9_main_left_annc_right_album_right", - "read_more_position": "lower_right", - "main_content": "show_information" } \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/content_style/9/js/content.js b/app/assets/stylesheets/application_form/content_style/9/js/content.js deleted file mode 100644 index 5854985..0000000 --- a/app/assets/stylesheets/application_form/content_style/9/js/content.js +++ /dev/null @@ -1,13 +0,0 @@ -$(document).ready(function(){ - $('#main-content > * > [class*="-title"] ,[data-pp] > * > [class*="-title"], .page-module-title').each(function(i,h3){ - if($(h3).prop('tagName').match(/(h1|h2|h3|h4)/i) && $(h3).next(".application_form_hr").length == 0){ - $(h3).after("
") - } - }) - $.each($('.layout-content-box h3,.layout-content-box h2,.layout-content-box h1'),function(){ - if($(this).find("*").length == 0){ - $(this).html(""+$(this).html()+""); - } - $(this).append('') - }) -}) \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal/footer.html.erb b/app/assets/stylesheets/application_form/templates/horizontal/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal/header.html.erb b/app/assets/stylesheets/application_form/templates/horizontal/header.html.erb deleted file mode 100644 index e9eff8c..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal/header.html.erb +++ /dev/null @@ -1,43 +0,0 @@ -
- - - -
- -
-
- \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal/index.html.erb b/app/assets/stylesheets/application_form/templates/horizontal/index.html.erb deleted file mode 100644 index 984c6c7..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal/index.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
- /accesskey" title="Content">::: -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal/menu.html.erb b/app/assets/stylesheets/application_form/templates/horizontal/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal/page.html.erb b/app/assets/stylesheets/application_form/templates/horizontal/page.html.erb deleted file mode 100644 index f4c8b59..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal/page.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal/pagination.html.erb b/app/assets/stylesheets/application_form/templates/horizontal/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/header.html.erb deleted file mode 100644 index 3d9ef35..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/header.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/index.html.erb deleted file mode 100644 index e3379b4..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/index.html.erb +++ /dev/null @@ -1,45 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/page.html.erb deleted file mode 100644 index f4c8b59..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/page.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_12_main_left_annc_right_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/footer.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/header.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/header.html.erb deleted file mode 100644 index 3d9ef35..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/header.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/index.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/index.html.erb deleted file mode 100644 index d927032..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/index.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/menu.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/page.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/page.html.erb deleted file mode 100644 index f4c8b59..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/page.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/pagination.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_13_main_left_annc_right_album_left/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/header.html.erb deleted file mode 100644 index 4ff6f1d..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/header.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/index.html.erb deleted file mode 100644 index cf40290..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/index.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/page.html.erb deleted file mode 100644 index f4c8b59..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/page.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_5_main_right_annc_left_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/header.html.erb deleted file mode 100644 index 4ff6f1d..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/header.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/index.html.erb deleted file mode 100644 index f0fdc37..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/index.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/page.html.erb deleted file mode 100644 index f4c8b59..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/page.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_6_main_left_annc_right_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/header.html.erb deleted file mode 100644 index 4ff6f1d..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/header.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/index.html.erb deleted file mode 100644 index 808ce14..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/index.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/page.html.erb deleted file mode 100644 index f4c8b59..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/page.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
- -
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/horizontal_9_main_left_annc_right_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/header.html.erb deleted file mode 100644 index 4834ef1..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/header.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/index.html.erb deleted file mode 100644 index 981bf2b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/index.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/menu.html.erb deleted file mode 100644 index 266519f..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/menu.html.erb +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/page.html.erb deleted file mode 100644 index 9061877..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/page.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_1_main_left_annc_top_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/footer.html.erb b/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/header.html.erb b/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/header.html.erb deleted file mode 100644 index 4834ef1..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/header.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/index.html.erb b/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/index.html.erb deleted file mode 100644 index 37183ab..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/index.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/menu.html.erb b/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/page.html.erb b/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/page.html.erb deleted file mode 100644 index 9061877..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/page.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/pagination.html.erb b/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_2_main_right_annc_left_album_bottom/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/header.html.erb deleted file mode 100644 index 4834ef1..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/header.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/index.html.erb deleted file mode 100644 index 9061877..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/index.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/page.html.erb deleted file mode 100644 index 9061877..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/page.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_3_main_top_annc_left_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/footer.html.erb b/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/header.html.erb b/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/header.html.erb deleted file mode 100644 index 4834ef1..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/header.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/index.html.erb b/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/index.html.erb deleted file mode 100644 index e7e3ae6..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/index.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/menu.html.erb b/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/page.html.erb b/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/page.html.erb deleted file mode 100644 index 9061877..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/page.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/pagination.html.erb b/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_4_main_right_annc_left_album_right/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/footer.html.erb b/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/footer.html.erb deleted file mode 100644 index 3b2397b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/footer.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/header.html.erb b/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/header.html.erb deleted file mode 100644 index 4031e98..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/header.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
- - - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/index.html.erb b/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/index.html.erb deleted file mode 100644 index 2d1c1ad..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/index.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/menu.html.erb b/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/menu.html.erb deleted file mode 100644 index 9f1f55b..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/menu.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/page.html.erb b/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/page.html.erb deleted file mode 100644 index 9061877..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/page.html.erb +++ /dev/null @@ -1,55 +0,0 @@ - - - - <%= render_partial("head") %> - - - <%= render_orbit_bar %> -
- <%= render_header %> -
-
-
-
-
-
- -
-
-
- - -
-
-
-
-
-
-
-
-
- <%= yield %> -
-
-
-
-
-
-
-
- <%= render_every_page_sharer %> -
-
-
-
-
-
-
-
-
- <%= render_footer %> - - \ No newline at end of file diff --git a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/pagination.html.erb b/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/pagination.html.erb deleted file mode 100644 index 0c22683..0000000 --- a/app/assets/stylesheets/application_form/templates/vertical_7_main_right_annc_left_album_bottom/pagination.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/app/controllers/admin/application_forms_controller.rb b/app/controllers/admin/application_forms_controller.rb index 2bc7d3b..62de4c7 100644 --- a/app/controllers/admin/application_forms_controller.rb +++ b/app/controllers/admin/application_forms_controller.rb @@ -448,7 +448,7 @@ class Admin::ApplicationFormsController < OrbitAdminController end def new @application_form = ApplicationFormMain.new - @application_form_setting = ApplicationFormSetting.get_one + @application_form_setting = ApplicationFormSetting.first @members = (0...@application_form_setting.reviewer_length).collect{nil} create_set (false) @@ -504,11 +504,11 @@ class Admin::ApplicationFormsController < OrbitAdminController end def setting - @application_form_setting = ApplicationFormSetting.get_one + @application_form_setting = ApplicationFormSetting.first end def update_setting - @application_form_setting = ApplicationFormSetting.get_one + @application_form_setting = ApplicationFormSetting.first tmp = params.require(:application_form_setting).permit! @application_form_setting.update_attributes(tmp) redirect_to admin_application_forms_path @@ -516,24 +516,8 @@ class Admin::ApplicationFormsController < OrbitAdminController def edit @application_form_items = ApplicationFormItem.all - @application_form_setting = ApplicationFormSetting.get_one + @application_form_setting = ApplicationFormSetting.first @application_form = ApplicationFormMain.where(id: params[:id]).first - except_attributes = ApplicationFormSignup::HiddenFields - @application_form.application_form_signup_field_sets.each do |signup_field_set| - if (!(ApplicationFormSignup.attribute_names.include? signup_field_set.field_name) && signup_field_set.field_name != 'recaptcha') || except_attributes.include?(signup_field_set.field_name) - signup_field_set.delete - end - end - @application_form.application_form_submission_field_sets.each do |submission_field_set| - if (!(ApplicationFormSignupContribute.attribute_names.include? submission_field_set.field_name)) || except_attributes.include?(submission_field_set.field_name) - submission_field_set.delete - end - end - @application_form.application_form_signup_field_customs.each do |custom_set| - if !(@application_form.application_form_signup_fields.collect(&:id).include? custom_set.application_form_signup_field_id) - custom_set.delete - end - end create_set (true) @signup_sets = @application_form.application_form_signup_field_sets @submission_set = @application_form.application_form_submission_field_sets @@ -886,8 +870,10 @@ class Admin::ApplicationFormsController < OrbitAdminController end def create_set (save_flag) except_attributes = ApplicationFormSignup::HiddenFields - @application_form.application_form_signup_field_sets.where(:field_name.in=>except_attributes).destroy - ApplicationFormSignup.attribute_names.each do |attr_signup| + if @application_form.application_form_signup_field_sets.where(:field_name.in=>except_attributes).destroy != 0 + @application_form = @application_form.reload + end + (ApplicationFormSignup.attribute_names + ['recaptcha']).each do |attr_signup| next if except_attributes.include?(attr_signup) signup_set = @application_form.application_form_signup_field_sets.select{|v| v.field_name==attr_signup } if signup_set.length==0 @@ -915,21 +901,6 @@ class Admin::ApplicationFormsController < OrbitAdminController end end end - signup_set = @application_form.application_form_signup_field_sets.select{|v| v.field_name== 'recaptcha' } - if signup_set.length==0 - name1 = Hash.new - now_locale = I18n.locale - I18n.available_locales.each do |locale| - I18n.locale = locale - name1[locale] = t("application_form_signup.recaptcha") - end - I18n.locale = now_locale - if save_flag - @application_form.application_form_signup_field_sets.create(field_name:'recaptcha',name:name1,placeholder:name1,hidden:true) - else - @application_form.application_form_signup_field_sets.new(field_name:'recaptcha',name:name1,placeholder:name1,hidden:true) - end - end @application_form.application_form_submission_field_sets.where(:field_name.in=>except_attributes).destroy ApplicationFormSignupContribute.attribute_names.each do |attr_submission| next if except_attributes.include?(attr_submission) diff --git a/app/controllers/application_forms_controller.rb b/app/controllers/application_forms_controller.rb index 87d610d..e3cddf6 100644 --- a/app/controllers/application_forms_controller.rb +++ b/app/controllers/application_forms_controller.rb @@ -10,6 +10,7 @@ class ApplicationFormsController < ApplicationController time_now = Time.now application_forms = ApplicationFormMain.all.desc(:application_form_start_date).filter_by_categories + application_forms = application_forms.any_of({:application_form_start_date.lte=>Time.now, :application_form_end_date.gte=>Time.now},{:application_form_start_date.lte=>Time.now, :application_form_end_date => nil}) { "application_forms" => application_forms, 'time_now' => time_now, @@ -69,216 +70,216 @@ class ApplicationFormsController < ApplicationController } } end - def custom_frontend_data - params = OrbitHelper.params - application_form = ApplicationFormMain.find_by(:uid=>params[:uid]) - @application_form = application_form - @site_in_use_locales = Site.first.in_use_locales rescue I18n.available_locales - application_form_template_setting = application_form.application_form_template_setting - @application_form_template_setting = application_form_template_setting - home_page = Page.where(:parent_page_id=>application_form.id).first - prefix_url = OrbitHelper.request.path.split("-").first + "-#{params[:uid]}" - @prefix_url = prefix_url - header_data = "Home | " + - "Main Site" - content_style = application_form_template_setting.content_style - background_style = application_form_template_setting.background_style - background_style_info = ApplicationFormTemplateSetting.background_style_infos[background_style].to_h - content_style_info = ApplicationFormTemplateSetting.content_style_infos[content_style].to_h - extra_css = content_style_info["css"].to_a + background_style_info["css"].to_a - extra_js = content_style_info["js"].to_a + background_style_info["js"].to_a - template_path = content_style_info["template"] - template_info = content_style_info["info"] - custom_footer = application_form_template_setting.footer_info - if application_form_template_setting.application_form_banner_images.count != 0 || background_style_info["default_logo"] - banner_title = application_form.title - external_link = prefix_url + "/home" - images = [] - if application_form_template_setting.application_form_banner_images.count == 0 - images = [{ - "image_link" => background_style_info["default_logo"], - "image_alt" => banner_title, - "title" => "", - "alt_title" => banner_title, - "class" => "active", - "height" => 0, - "width" => 0, - "caption" => '
', - "context" => "", - "link" => external_link, - "target" => "" - }] - else - images = application_form_template_setting.application_form_banner_images.map.with_index do |image,i| - caption = (i == 0 ? '
' : "") - klass = (i == 0 ? "active" : "") - alt_title = image.description - context = "" - image_link = image.file.url - { - "image_link" => image_link, - "image_alt" => alt_title, - "title" => "", - "alt_title" => alt_title, - "class" => klass, - "height" => 0, - "width" => 0, - "caption" => caption, - "context" => context, - "link" => external_link, - "target" => "" - } - end - end - custom_banner = { - "extras" => { - "ad_fx" => "fade", - "speed" => 500, - "title" => banner_title, - "banner-height" => 0, - "banner-width" => 0, - "base_image" => 0, - "timeout" => (5 * 1000), - "more" => "More" - }, - "images" => images - } - else - custom_banner = nil - end - @@session = OrbitHelper.request.session - @@session[:application_form_main_id] = @application_form.id - if params[:method].present? - main_content = render_other_method - elsif params[:current_page_module] == "application_forms_home" - application_form = ApplicationFormMain.where(uid: params[:uid]).first - time_now = Time.now - data = { - "application_form" => application_form, - "time_now" => time_now - } - @_request = OrbitHelper.request - if template_info["main_content"] - main_content = render_other_method("show_data",template_info["main_content"]) - else - main_content = render_to_string("application_forms/custom_home",:locals=>{:application_form=>application_form, - :params=>params,:session=>OrbitHelper.request.session},:layout=>false) - end - elsif params[:current_page_module] == "application_forms_page" - time_now = Time.now - params = OrbitHelper.params - application_form = ApplicationFormMain.find_by(uid: params[:uid]) - if application_form.application_form_start_date <= time_now && ( application_form.application_form_end_date.nil? || application_form.application_form_end_date+1 >= time_now ) - sign_up = ('' + t('application_form.signup') + '').html_safe - elsif application_form.registration_status.blank? - sign_up = t('application_form.sign_up_not_open') - elsif application_form.application_form_start_date > time_now - sign_up = t('application_form.sign_up_not_yet') - else - sign_up = t('application_form.sign_up_overdue') - end - if !application_form.registration_status.blank? && application_form.registration_status.include?('C') && application_form.contribute_start_date <= time_now && ( application_form.contribute_end_date.nil? || application_form.contribute_end_date+1 >= time_now ) - if !@@session[:application_form_signup_id].blank? - if @@session[:application_form_main_id] == application_form.id - contribute_action = ('' + t('application_form_signup.uploads') + '').html_safe - else - contribute_action = ('' + t('application_form_signup.con_login') + '').html_safe - end - else - contribute_action = ('' + t('application_form_signup.con_login') + '').html_safe - end - end - data = { - 'application_form' => application_form, - 'sign_up' => sign_up, - 'contribute_action' => contribute_action, - 'time_now' => time_now, - 'contribute_time_range' => ApplicationFormMain.time_range(application_form.contribute_start_date, application_form.contribute_end_date), - 'sign_up_time_range' => ApplicationFormMain.time_range(application_form.application_form_start_date, application_form.application_form_end_date), - 'application_form_time_range' => ApplicationFormMain.time_range(application_form.application_form_start_date, application_form.application_form_end_date) - } - @_request = OrbitHelper.request - main_content = render_to_string("application_forms/show_data",:locals=>{:action_data=>data, - :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, - :params=>params,:session=>OrbitHelper.request.session},:layout=>false) - else - main_content = render_other_method("render_"+params[:current_page_module]) rescue nil - end - custom_datapp_data = {} - if custom_banner - custom_banner["custom_widget_type"] = "module_widget" - custom_banner["custom_widget_module"] = "ad_banner" - if custom_banner["images"].count > 1 - custom_banner["custom_widget_file"] = "ad_banner_widget1" - else - custom_banner["custom_widget_file"] = "ad_banner_widget4" - end - custom_datapp_data["300"] = [custom_banner] - end - return {"main_content"=>main_content, - "extra_css"=>extra_css, - "extra_js"=>extra_js, - "header_data" => header_data, - "prefix_url" => prefix_url, - "template_path" => template_path, - "custom_datapp_data" => custom_datapp_data, - "custom_footer" => (custom_footer.blank? ? nil : custom_footer) - } - end - def render_application_form_registration - action_data = show - @_request = OrbitHelper.request - action_data["prefix_url"] = @prefix_url - render_to_string("application_forms/show",:locals=>{:action_data=>action_data, - :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, - :params=>params,:session=>OrbitHelper.request.session},:layout=>false) - end - def render_application_form_registered_participants - action_data = {"application_form"=>@application_form, "application_form_template_setting"=>@application_form_template_setting} - @_request = OrbitHelper.request - action_data["prefix_url"] = @prefix_url - render_to_string("application_forms/registered_participants",:locals=>{:action_data=>action_data, - :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, - :params=>params,:session=>OrbitHelper.request.session},:layout=>false) - end - def render_other_method(render_method=nil,render_template=nil) - params = OrbitHelper.params - if render_method && render_template.nil? - return eval(render_method) - end - render_method = render_method || params[:method] - render_template = render_template || render_method - params = OrbitHelper.params - action_data = eval(render_method) - @application_form_main_url = @prefix_url + '/home/introduction' - if action_data - if render_method == "con_upload" || render_method == "signup_ok" - action_data["prefix_url"] = @prefix_url + '/home/submission' - else - action_data["prefix_url"] = @prefix_url - end - end - @_request = OrbitHelper.request - render_to_string("application_forms/#{render_template}",:locals=>{:action_data=>action_data, - :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, - :params=>params,:session=>OrbitHelper.request.session},:layout=>false).html_safe - end - def render_application_form_submission - if @@session[:application_form_signup_id] - action_data = con_upload - action_data["prefix_url"] = @prefix_url + '/home/submission' - @_request = OrbitHelper.request - render_to_string("application_forms/con_upload",:locals=>{:action_data=>action_data, - :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, - :params=>params,:session=>@@session},:layout=>false).html_safe - else - action_data = con_login - @_request = OrbitHelper.request - render_to_string("application_forms/con_login",:locals=>{:action_data=>action_data, - :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, - :params=>params,:session=>@@session},:layout=>false).html_safe - end - end + # def custom_frontend_data + # params = OrbitHelper.params + # application_form = ApplicationFormMain.find_by(:uid=>params[:uid]) + # @application_form = application_form + # @site_in_use_locales = Site.first.in_use_locales rescue I18n.available_locales + # application_form_template_setting = application_form.application_form_template_setting + # @application_form_template_setting = application_form_template_setting + # home_page = Page.where(:parent_page_id=>application_form.id).first + # prefix_url = OrbitHelper.request.path.split("-").first + "-#{params[:uid]}" + # @prefix_url = prefix_url + # header_data = "Home | " + + # "Main Site" + # content_style = application_form_template_setting.content_style + # background_style = application_form_template_setting.background_style + # background_style_info = ApplicationFormTemplateSetting.background_style_infos[background_style].to_h + # content_style_info = ApplicationFormTemplateSetting.content_style_infos[content_style].to_h + # extra_css = content_style_info["css"].to_a + background_style_info["css"].to_a + # extra_js = content_style_info["js"].to_a + background_style_info["js"].to_a + # template_path = content_style_info["template"] + # template_info = content_style_info["info"] + # custom_footer = application_form_template_setting.footer_info + # if application_form_template_setting.application_form_banner_images.count != 0 || background_style_info["default_logo"] + # banner_title = application_form.title + # external_link = prefix_url + "/home" + # images = [] + # if application_form_template_setting.application_form_banner_images.count == 0 + # images = [{ + # "image_link" => background_style_info["default_logo"], + # "image_alt" => banner_title, + # "title" => "", + # "alt_title" => banner_title, + # "class" => "active", + # "height" => 0, + # "width" => 0, + # "caption" => '
', + # "context" => "", + # "link" => external_link, + # "target" => "" + # }] + # else + # images = application_form_template_setting.application_form_banner_images.map.with_index do |image,i| + # caption = (i == 0 ? '
' : "") + # klass = (i == 0 ? "active" : "") + # alt_title = image.description + # context = "" + # image_link = image.file.url + # { + # "image_link" => image_link, + # "image_alt" => alt_title, + # "title" => "", + # "alt_title" => alt_title, + # "class" => klass, + # "height" => 0, + # "width" => 0, + # "caption" => caption, + # "context" => context, + # "link" => external_link, + # "target" => "" + # } + # end + # end + # custom_banner = { + # "extras" => { + # "ad_fx" => "fade", + # "speed" => 500, + # "title" => banner_title, + # "banner-height" => 0, + # "banner-width" => 0, + # "base_image" => 0, + # "timeout" => (5 * 1000), + # "more" => "More" + # }, + # "images" => images + # } + # else + # custom_banner = nil + # end + # @@session = OrbitHelper.request.session + # @@session[:application_form_main_id] = @application_form.id + # if params[:method].present? + # main_content = render_other_method + # elsif params[:current_page_module] == "application_forms_home" + # application_form = ApplicationFormMain.where(uid: params[:uid]).first + # time_now = Time.now + # data = { + # "application_form" => application_form, + # "time_now" => time_now + # } + # @_request = OrbitHelper.request + # if template_info["main_content"] + # main_content = render_other_method("show_data",template_info["main_content"]) + # else + # main_content = render_to_string("application_forms/custom_home",:locals=>{:application_form=>application_form, + # :params=>params,:session=>OrbitHelper.request.session},:layout=>false) + # end + # elsif params[:current_page_module] == "application_forms_page" + # time_now = Time.now + # params = OrbitHelper.params + # application_form = ApplicationFormMain.find_by(uid: params[:uid]) + # if application_form.application_form_start_date <= time_now && ( application_form.application_form_end_date.nil? || application_form.application_form_end_date+1 >= time_now ) + # sign_up = ('' + t('application_form.signup') + '').html_safe + # elsif application_form.registration_status.blank? + # sign_up = t('application_form.sign_up_not_open') + # elsif application_form.application_form_start_date > time_now + # sign_up = t('application_form.sign_up_not_yet') + # else + # sign_up = t('application_form.sign_up_overdue') + # end + # if !application_form.registration_status.blank? && application_form.registration_status.include?('C') && application_form.contribute_start_date <= time_now && ( application_form.contribute_end_date.nil? || application_form.contribute_end_date+1 >= time_now ) + # if !@@session[:application_form_signup_id].blank? + # if @@session[:application_form_main_id] == application_form.id + # contribute_action = ('' + t('application_form_signup.uploads') + '').html_safe + # else + # contribute_action = ('' + t('application_form_signup.con_login') + '').html_safe + # end + # else + # contribute_action = ('' + t('application_form_signup.con_login') + '').html_safe + # end + # end + # data = { + # 'application_form' => application_form, + # 'sign_up' => sign_up, + # 'contribute_action' => contribute_action, + # 'time_now' => time_now, + # 'contribute_time_range' => ApplicationFormMain.time_range(application_form.contribute_start_date, application_form.contribute_end_date), + # 'sign_up_time_range' => ApplicationFormMain.time_range(application_form.application_form_start_date, application_form.application_form_end_date), + # 'application_form_time_range' => ApplicationFormMain.time_range(application_form.application_form_start_date, application_form.application_form_end_date) + # } + # @_request = OrbitHelper.request + # main_content = render_to_string("application_forms/show_data",:locals=>{:action_data=>data, + # :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, + # :params=>params,:session=>OrbitHelper.request.session},:layout=>false) + # else + # main_content = render_other_method("render_"+params[:current_page_module]) rescue nil + # end + # custom_datapp_data = {} + # if custom_banner + # custom_banner["custom_widget_type"] = "module_widget" + # custom_banner["custom_widget_module"] = "ad_banner" + # if custom_banner["images"].count > 1 + # custom_banner["custom_widget_file"] = "ad_banner_widget1" + # else + # custom_banner["custom_widget_file"] = "ad_banner_widget4" + # end + # custom_datapp_data["300"] = [custom_banner] + # end + # return {"main_content"=>main_content, + # "extra_css"=>extra_css, + # "extra_js"=>extra_js, + # "header_data" => header_data, + # "prefix_url" => prefix_url, + # "template_path" => template_path, + # "custom_datapp_data" => custom_datapp_data, + # "custom_footer" => (custom_footer.blank? ? nil : custom_footer) + # } + # end + # def render_application_form_registration + # action_data = show + # @_request = OrbitHelper.request + # action_data["prefix_url"] = @prefix_url + # render_to_string("application_forms/show",:locals=>{:action_data=>action_data, + # :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, + # :params=>params,:session=>OrbitHelper.request.session},:layout=>false) + # end + # def render_application_form_registered_participants + # action_data = {"application_form"=>@application_form, "application_form_template_setting"=>@application_form_template_setting} + # @_request = OrbitHelper.request + # action_data["prefix_url"] = @prefix_url + # render_to_string("application_forms/registered_participants",:locals=>{:action_data=>action_data, + # :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, + # :params=>params,:session=>OrbitHelper.request.session},:layout=>false) + # end + # def render_other_method(render_method=nil,render_template=nil) + # params = OrbitHelper.params + # if render_method && render_template.nil? + # return eval(render_method) + # end + # render_method = render_method || params[:method] + # render_template = render_template || render_method + # params = OrbitHelper.params + # action_data = eval(render_method) + # @application_form_main_url = @prefix_url + '/home/introduction' + # if action_data + # if render_method == "con_upload" || render_method == "signup_ok" + # action_data["prefix_url"] = @prefix_url + '/home/submission' + # else + # action_data["prefix_url"] = @prefix_url + # end + # end + # @_request = OrbitHelper.request + # render_to_string("application_forms/#{render_template}",:locals=>{:action_data=>action_data, + # :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, + # :params=>params,:session=>OrbitHelper.request.session},:layout=>false).html_safe + # end + # def render_application_form_submission + # if @@session[:application_form_signup_id] + # action_data = con_upload + # action_data["prefix_url"] = @prefix_url + '/home/submission' + # @_request = OrbitHelper.request + # render_to_string("application_forms/con_upload",:locals=>{:action_data=>action_data, + # :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, + # :params=>params,:session=>@@session},:layout=>false).html_safe + # else + # action_data = con_login + # @_request = OrbitHelper.request + # render_to_string("application_forms/con_login",:locals=>{:action_data=>action_data, + # :request=>OrbitHelper.request,:flash=>OrbitHelper.request.flash, + # :params=>params,:session=>@@session},:layout=>false).html_safe + # end + # end def show_privacy params = OrbitHelper.params @@ -384,23 +385,79 @@ class ApplicationFormsController < ApplicationController response = {} case params[:type] when "application_form_signup_email" - response["success"] = ApplicationFormSignup.where(:email => params[:value], :application_form_main_id => params[:no]).count > 0 ? false : true end render :json => response.to_json end - + def render_404 + render :file => "#{Rails.root}/app/views/errors/404.html", :layout => false, :status => 404, :formats => [:html] + end + def agree_link + signup = ApplicationFormSignup.find(params[:id]) rescue nil + stage_num = signup ? signup.get_stage_num(params[:cipher]) : nil + if stage_num.nil? + render_404 + else + @type = params[:type] + application_form = signup.application_form_main + @application_form = application_form + form_params_main_id = application_form.id + extra_text = "
#{I18n.t('application_form_signup.serial_number')}: #{signup.display_serial_number}" + extra_text += render_to_string("application_forms/signup_email_contents",:locals=>{:application_form=>application_form, + :application_form_signup=>signup},:layout=>false) + if params[:type] == 'agree' + if stage_num == application_form.get_max_stage + signup.update(:review_status => 2) + signup.clean_cipher + @type = 'finish' + mail_to = [signup.email] + extra_email = MemberProfile.find(application_form.organizer_id).email rescue nil + if extra_email + mail_to << extra_email + end + send_mail('edit_file', mail_to, form_params_main_id,extra_text) + else + offset = application_form.reviewer_enables[(stage_num+1)..-1].index(true) + new_stage = stage_num + 1 + new_stage += offset if offset + signup.update_process_stage(new_stage) + host_url = Site.first.root_url + if host_url == "http://" + host_url = request.protocol + request.host_with_port + end + agree_link = host_url + Rails.application.routes.url_helpers.xhr_application_forms_agree_link_path(:locale=>I18n.locale, :id=>signup.id.to_s, :cipher=>signup.get_cipher_stage(signup.process_stage)) + send_mail('submission', signup.get_reviewer_email, form_params_main_id,extra_text, {'agree_link'=>agree_link}) + end + else + mail_to = [signup.email] + extra_email = MemberProfile.find(application_form.organizer_id).email rescue nil + if extra_email + mail_to << extra_email + end + signup.update(:review_status => 1) + signup.clean_cipher + send_mail('add_file', mail_to, form_params_main_id,extra_text, {'signup_id'=>signup.id}) + end + end + end def create - - @signup = ApplicationFormSignup.where(email: params[:application_form_signup][:email], application_form_main_id: params[:application_form_signup][:application_form_main_id] ).first + form_params = params[:application_form_signup] + form_params_email = form_params[:email] + form_params_main_id = form_params[:application_form_main_id] + @signup = ApplicationFormSignup.where(email: form_params_email, application_form_main_id: form_params_main_id ).first - @application_form = ApplicationFormMain.where(id:params[:application_form_signup][:application_form_main_id]).first + @application_form = ApplicationFormMain.where(id: form_params_main_id).first @application_form_signup = ApplicationFormSignup.new(application_form_signup_params) if @application_form.application_form_signup_field_sets.count!=0 flag = @application_form.application_form_signup_field_sets.select{|v| v.field_name=='recaptcha'}[0].disabled else flag = false end + if @signup.present? + @signup.destroy + @signup = nil + end + begin if gotcha_valid? || flag if @signup.blank? && @application_form_signup.save # if gotcha_valid? && @application_form_signup.save @@ -430,14 +487,16 @@ class ApplicationFormsController < ApplicationController extra_text = "
#{I18n.t('application_form_signup.serial_number')}: #{@application_form_signup.display_serial_number}" extra_text += render_to_string("application_forms/signup_email_contents",:locals=>{:application_form=>@application_form, :application_form_signup=>@application_form_signup},:layout=>false) - if params['application_form_signup']['status']=='C' - status_param = '&status=' - send_mail('submission',params[:application_form_signup][:email],params[:application_form_signup][:application_form_main_id],extra_text) + send_mail('signup', form_params_email, form_params_main_id, extra_text) + host_url = "" + if request.referer.match('//'+request.host).nil? + host_url = request.protocol + request.host_with_port else - status_param = '' - send_mail('signup',params[:application_form_signup][:email],params[:application_form_signup][:application_form_main_id],extra_text) + host_url = request.referer.match(/http(s|):\/\/[^\/]+/)[0] end - redirect_to "#{params[:referer_url]}/?method=signup_ok#{status_param}&serial_number=#{@application_form_signup.display_serial_number}" + agree_link = host_url + Rails.application.routes.url_helpers.xhr_application_forms_agree_link_path(:locale=>I18n.locale, :id=>@application_form_signup.id.to_s, :cipher=>@application_form_signup.get_cipher_stage(1)) + send_mail('submission', @application_form_signup.get_reviewer_email, form_params_main_id,extra_text, {'agree_link'=>agree_link}) + redirect_to "#{params[:referer_url]}/?method=signup_ok&serial_number=#{@application_form_signup.display_serial_number}" else if !@signup.blank? redirect_to "#{params[:referer_url]}", :notice => 'mail已存在' @@ -470,7 +529,9 @@ class ApplicationFormsController < ApplicationController end redirect_to referer_url, :notice => t('recaptcha.errors.verification_failed') end - + rescue => e + render :html => [e.to_s, e.backtrace].to_s + end end def signup_ok @@ -709,22 +770,26 @@ class ApplicationFormsController < ApplicationController def application_form_signup_values_params params.require(:application_form_signup_values).permit! end - def send_mail(field_name,email,application_form_id,extra_text="") + def send_mail(field_name,email,application_form_id,extra_text="", extra_data={}) + return if email.blank? + @application_form = ApplicationFormMain.find(application_form_id) if @application_form.nil? email_set = @application_form.application_form_email_sets.select{|v| v.field_name == field_name} if email_set.length==0 - mail = Email.create(mail_to:[email], + mail = Email.create(mail_to:Array(email), module_app_key:"application_form", template:"email/#{field_name}_email.html.erb", mail_sentdate:Time.current, mail_subject: t("application_form.email_#{field_name}_success"), - template_data:{'application_form_id'=>application_form_id,'locale'=>I18n.locale,'extra_text'=> extra_text}) + template_data:{'application_form_id'=>application_form_id,'locale'=>I18n.locale,'extra_text'=> extra_text}.merge(extra_data), + mail_lang: I18n.locale) elsif !(email_set[0].disabled) - mail = Email.create(mail_to:[email], + mail = Email.create(mail_to:Array(email), module_app_key:"application_form", template:"email/#{field_name}_email.html.erb", mail_sentdate:Time.current, mail_subject: email_set[0].title[I18n.locale], - template_data:{'application_form_id'=>application_form_id,'locale'=>I18n.locale,'extra_text'=> extra_text}) + template_data:{'application_form_id'=>application_form_id,'locale'=>I18n.locale,'extra_text'=> extra_text}.merge(extra_data), + mail_lang: I18n.locale) end begin mail.deliver diff --git a/app/models/application_form_main.rb b/app/models/application_form_main.rb index 6a315eb..2809c32 100644 --- a/app/models/application_form_main.rb +++ b/app/models/application_form_main.rb @@ -8,8 +8,8 @@ class ApplicationFormMain include OrbitCategory::Categorizable include Slug ChoiceTypes = ["checkbox","radio","select"] - field :annc_count, :type => Integer, :default => 0 - field :album_count, :type => Integer, :default => 0 + # field :annc_count, :type => Integer, :default => 0 + # field :album_count, :type => Integer, :default => 0 field :copy_id field :except_clone_relations, :type=>Array, :default => [] field :signup_note, localize: true @@ -59,7 +59,6 @@ class ApplicationFormMain field :unassigned_mode_1_application_form_signup_ids field :review_start_date, :type => Date field :review_end_date, :type => Date - field :last_serial_number, :type => Integer, :default => 0 field :assign_mode, :type => Integer, :default => 0 # 0 => 用default signup ids來分配 ,1 => 用final_session來分配, 2 => 用final_session來分配(當有preffered session欄位時) field :update_old_flag, :type => Boolean, :default => false belongs_to :application_form_item @@ -193,54 +192,19 @@ class ApplicationFormMain end end after_initialize do - unless self.new_record? || @triggered_initialize - @triggered_initialize = true - save_flag = false - application_form_reviews = self.application_form_reviews - if application_form_reviews.present? - """ - if self['reviewer_ids'].nil? - self['reviewer_ids'] = application_form_reviews.pluck(:reviewer_id).flatten.select{|s| !s.nil?}.to_a - save_flag = true - else - self['reviewer_ids'].each do |reviewer_id| - application_form_review_to_destroy = application_form_reviews.where(:reviewer_id=>reviewer_id)[1] - if application_form_review_to_destroy - application_form_review_to_destroy.destroy - end - end - end - """ - if application_form_reviews.count != 0 && self.review_start_date.nil? && self.review_end_date.nil? - review_start_date = application_form_reviews.pluck(:review_start_date).select{|t| t.present?}.first.to_datetime rescue nil - review_end_date = application_form_reviews.pluck(:review_end_date).select{|t| t.present?}.first.to_datetime rescue nil - self.review_start_date = review_start_date - self.review_end_date = review_end_date - if (self.review_start_date_changed? || self.review_end_date_changed?) - save_flag = true - end - end - end - if self.unassigned_application_form_signup_ids.nil? - self.unassigned_application_form_signup_ids = self.application_form_signup_ids.map{|s| s.to_s} - save_flag = true - end - if self.unassigned_mode_1_application_form_signup_ids.nil? - self.unassigned_mode_1_application_form_signup_ids = self.application_form_signup_ids.map{|s| s.to_s} - save_flag = true - end - unless self.last_serial_number_changed_from_default? - self.application_form_signups.sort_ordered.each do |ss| - if ss.serial_number.nil? - self.last_serial_number += 1 - ss.serial_number = self.last_serial_number - ss.save(:validate=>false) - save_flag = true - end - end - end - self.save(:validate=>false) if save_flag + end + def get_max_stage + self.reviewer_enables.rindex(true) || 0 + end + def get_reviewer_email(stage=1 , form_params={}) + stage = stage - 1 + member_ids = [] + if self.reviewer_type_list[stage] == "defined_by_applicant" + member_ids = Array(form_params[:reviewer_ids_list][stage]) rescue [] + else + member_ids = self.reviewer_ids_list[stage] end + return MemberProfile.where(:id.in=>member_ids).pluck(:email).select{|s| s.present?}.uniq end def self.time_range(date1 = null, date2 = null) diff --git a/app/models/application_form_setting.rb b/app/models/application_form_setting.rb index 6a5f039..6237b85 100644 --- a/app/models/application_form_setting.rb +++ b/app/models/application_form_setting.rb @@ -3,6 +3,7 @@ class ApplicationFormSetting include Mongoid::Timestamps field :reviewer_length, default: 3, :type=> Integer + field :last_serial_number, :type => Integer, :default => 0 def self.get_one s = self.first s = self.create if s.nil? diff --git a/app/models/application_form_signup.rb b/app/models/application_form_signup.rb index 7a735b3..45e2dde 100644 --- a/app/models/application_form_signup.rb +++ b/app/models/application_form_signup.rb @@ -1,12 +1,14 @@ # encoding: utf-8 class ApplicationFormSignup - + require 'openssl/cipher' include Mongoid::Document include Mongoid::Timestamps - HiddenFields = ['application_form_signup_id', 'password', 'status', 'reviewer_ids_list','_id', 'created_at', 'updated_at','application_form_main_id',"serial_number","final_session","final_sessions","preferred_sessions",'application_form_session_id',"application_form_session_ids","preferred_session","sort_number","abstract_number","presentation_type"] - DefaultEnableFields = ['name','tel','phone','email'] + HiddenFields = ['application_form_signup_id', 'password', 'status', 'reviewer_ids_list','_id', 'created_at', 'updated_at','application_form_main_id',"serial_number","final_session","final_sessions","preferred_sessions",'application_form_session_id',"application_form_session_ids","preferred_session","sort_number","abstract_number","presentation_type", "cipher_stage_num", "process_stage", "review_status"] + DefaultEnableFields = ['name','tel','phone','email', 'recaptcha'] field :sort_number , type: Integer, default: 10000 - + field :process_stage, type: Integer, default: 1 + field :review_status, type: Integer, default: 0 # 0 => 審核中, 1 => 不通過, 2=> 申請通過 + field :cipher_stage_num, type: Array, default: [] field :status field :name # become Last Name for TICC field :tel, type: String # become First Name for TICC @@ -49,8 +51,9 @@ class ApplicationFormSignup before_create do unit = self.unit_translations.values.select{|v| v.present?}.first self.unit_translations = I18n.available_locales.map{|l| [l.to_s,unit]}.to_h + self.random_cipher(false) if self.serial_number.nil? - s = ApplicationFormMain.find(self.application_form_main) + s = ApplicationFormSetting.first s.last_serial_number += 1 self.serial_number = s.last_serial_number s.save(:validate=>false) @@ -79,6 +82,49 @@ class ApplicationFormSignup application_form_session.save end end + def clean_cipher + self.update(:cipher_stage_num => []) + end + def random_cipher(save_flag=true) + cipher = OpenSSL::Cipher::AES.new(128, :CBC) + cipher.encrypt + key = cipher.random_key + iv = cipher.random_iv + (1..5).each do |i| + encrypted = cipher.update(i.to_s) + cipher.final + self.cipher_stage_num << Base64.encode64(encrypted).strip() + end + self.save if save_flag + end + def update_process_stage(new_stage) #stage start from 0 + (0..new_stage - 1).each{|i| self.cipher_stage_num[i] = nil} + new_stage = new_stage + 1 + self.process_stage = new_stage + self.save + end + def review_progress + stage_trans = I18n.t('application_form.stage') + max_stage = @max_stage + if max_stage.nil? + max_stage = self.application_form_main.get_max_stage + end + max_stage += 1 + " #{I18n.t('application_form.num.'+self.process_stage.to_s)}#{stage_trans} / #{I18n.t('application_form.num.'+max_stage.to_s)}#{stage_trans} : #{I18n.t('application_form.status.'+review_status.to_s)}" + end + def get_reviewer_email(stage=self.process_stage, override_reviewer_ids_list=nil) + stage = stage - 1 + if override_reviewer_ids_list.nil? + override_reviewer_ids_list = self.reviewer_ids_list + end + member_ids = override_reviewer_ids_list[stage] + return MemberProfile.where(:id.in=>member_ids).pluck(:email).select{|s| s.present?}.uniq + end + def get_cipher_stage(stage) + self.cipher_stage_num[stage - 1] + end + def get_stage_num(cipher) + return self.cipher_stage_num.index(cipher) + end def display_serial_number display_format_string(self.serial_number,4) end diff --git a/app/views/admin/application_forms/_application_form_signup_render_table.html.erb b/app/views/admin/application_forms/_application_form_signup_render_table.html.erb index 7a5de89..acac01b 100644 --- a/app/views/admin/application_forms/_application_form_signup_render_table.html.erb +++ b/app/views/admin/application_forms/_application_form_signup_render_table.html.erb @@ -17,6 +17,7 @@ > <% display_title = @application_form.nil? %> <% @application_form_signups.each do |application_form_signup| %> + <% application_form_signup.instance_variable_set(:@max_stage, @max_stage) %> <% @application_form = application_form_signup.application_form_main if display_title %> <% vals = [] %> <% edit_urls = {} %> diff --git a/app/views/admin/application_forms/_get_display_fields.html.erb b/app/views/admin/application_forms/_get_display_fields.html.erb index 5e0d04b..5cd4c03 100644 --- a/app/views/admin/application_forms/_get_display_fields.html.erb +++ b/app/views/admin/application_forms/_get_display_fields.html.erb @@ -2,13 +2,14 @@ <% @field_name_translations = [] %> <% default_hidden = [] %> <% - default_application_form_signup_fields = ["serial_number"] + default_application_form_signup_fields = ["serial_number", "review_progress"] default_application_form_signup_fields.each do |f| @field_names << "application_form_signup.#{f}" @field_name_translations << t("application_form_signup.#{f}") end %> <% if @application_form.present? %> + <% @max_stage = @application_form.get_max_stage %> <% if @application_form.application_form_signup_field_sets.count != 0 %> <% @application_form.application_form_signup_field_sets.each do |field_set| %> <% next if field_set.field_name == "password" %> @@ -118,6 +119,7 @@ <% end %> <% @display_field = @application_form_signup_admin_setting.display_field %> <% @display_field.delete("application_form_signup_field_set.password") %> + <% @display_field.delete("application_form_signup_field_set.recaptcha") %> <% if @display_field.blank? @display_field = default_show end %> diff --git a/app/views/application_forms/agree_link.html.erb b/app/views/application_forms/agree_link.html.erb new file mode 100644 index 0000000..3050952 --- /dev/null +++ b/app/views/application_forms/agree_link.html.erb @@ -0,0 +1,26 @@ + +

<% if @type == 'agree' %> +<%=t('application_form.send_email_to_next_stage_reviewer')%> +<% elsif @type == 'disagree' %> +<%=t('application_form.email_add_file_success')%> +<% elsif @type == 'finish' %> +<%=t('application_form.email_edit_file_success')%> +<% end %>

+ \ No newline at end of file diff --git a/app/views/application_forms/index.html.erb b/app/views/application_forms/index.html.erb index 3017dbf..80d4095 100644 --- a/app/views/application_forms/index.html.erb +++ b/app/views/application_forms/index.html.erb @@ -15,7 +15,6 @@ <%= t(:category) %> <%= t('application_form.title') %> - <%= t('application_form_signup.time') %> <%= t('application_form.signup') %> @@ -42,7 +41,6 @@ <%= ('' + application_form.title + '').html_safe %> <% end %> - <%= ApplicationFormMain.time_range(application_form.application_form_start_date, application_form.application_form_end_date) %> <%= sign_up %>
diff --git a/app/views/application_forms/show_data.html.erb b/app/views/application_forms/show_data.html.erb index 7c77d78..22a6709 100644 --- a/app/views/application_forms/show_data.html.erb +++ b/app/views/application_forms/show_data.html.erb @@ -39,16 +39,6 @@ <%= nl2br(@application_form.content) %> <% end %> - - <%= t('application_form.signup_during') %> - <%= @sign_up_time_range %> - - <% if !@contribute_time_range.blank? %> - - <%= t('application_form.contribute_during') %> - <%= @contribute_time_range %> - - <% end %> <%= t('application_form.signup') %> <%= @sign_up %>
<%= @contribute_action %> diff --git a/app/views/email/add_file_email.html.erb b/app/views/email/add_file_email.html.erb index 86c16ae..6e960fd 100644 --- a/app/views/email/add_file_email.html.erb +++ b/app/views/email/add_file_email.html.erb @@ -1,8 +1,19 @@ -<% email_set = ApplicationFormMain.where(id:@data['application_form_id']).first.application_form_email_sets.select{|v| v.field_name == 'add_file'} %> + +<% email_set = ApplicationFormMain.find(@data['application_form_id']).application_form_email_sets.select{|v| v.field_name == 'add_file'} + signup = ApplicationFormSignup.find(@data['signup_id']) +%> <% if email_set.length != 0 %> <% if !(email_set[0].content.nil?) %> <%= email_set[0].content[@data['locale']].html_safe %> <% end %> <% else %> <%= t('application_form.email_add_file_content') %> -<% end %> \ No newline at end of file +<% end %> +
+<%= t('application_form.denied_stage')%>: <%= t("application_form.num.#{signup.process_stage}") + t('application_form.stage_review') %> +
+<%= (@data['extra_text'] rescue "").to_s.html_safe %> \ No newline at end of file diff --git a/app/views/email/edit_file_email.html.erb b/app/views/email/edit_file_email.html.erb index 22ee40c..a95e761 100644 --- a/app/views/email/edit_file_email.html.erb +++ b/app/views/email/edit_file_email.html.erb @@ -5,4 +5,5 @@ <% end %> <% else %> <%= t('application_form.email_edit_file_content') %> -<% end %> \ No newline at end of file +<% end %> +<%= (@data['extra_text'] rescue "").to_s.html_safe %> \ No newline at end of file diff --git a/app/views/email/signup_email.html.erb b/app/views/email/signup_email.html.erb index 1f2d271..7b974c6 100644 --- a/app/views/email/signup_email.html.erb +++ b/app/views/email/signup_email.html.erb @@ -1,4 +1,4 @@ -<% email_set = ApplicationFormMain.where(id:@data['application_form_id']).first.application_form_email_sets.select{|v| v.field_name == 'signup'} %> +<% email_set = ApplicationFormMain.find(@data['application_form_id']).application_form_email_sets.select{|v| v.field_name == 'signup'} %> <% if email_set.length != 0 %> <% if !(email_set[0].content.nil?) %> <%= email_set[0].content[@data['locale']].html_safe %> diff --git a/app/views/email/submission_email.html.erb b/app/views/email/submission_email.html.erb index 4e56c56..2ff59f5 100644 --- a/app/views/email/submission_email.html.erb +++ b/app/views/email/submission_email.html.erb @@ -1,4 +1,9 @@ -<% email_set = ApplicationFormMain.where(id:@data['application_form_id']).first.application_form_email_sets.select{|v| v.field_name == 'submission'} %> + +<% email_set = ApplicationFormMain.find(@data['application_form_id']).application_form_email_sets.select{|v| v.field_name == 'submission'} %> <% if email_set.length != 0 %> <% if !(email_set[0].content.nil?) %> <%= email_set[0].content[@data['locale']].html_safe %> @@ -6,4 +11,10 @@ <% else %> <%= t('application_form.email_submission_content') %> <% end %> +
+<%= t('application_form.please_click_the_link_below_directly') %> +<% ['agree', 'disagree'].each do |c| %> +

"><%= t("application_form.link_choice.#{c}") %>

+<% end %> +
<%= (@data['extra_text'] rescue "").to_s.html_safe %> \ No newline at end of file diff --git a/application_form.gemspec b/application_form.gemspec index a76ce7b..4f995fa 100644 --- a/application_form.gemspec +++ b/application_form.gemspec @@ -94,6 +94,6 @@ Gem::Specification.new do |s| s.test_files = ["test/dummy", "test/dummy/app", "test/dummy/app/assets", "test/dummy/app/assets/javascripts", "test/dummy/app/assets/javascripts/application.js", "test/dummy/app/assets/images", "test/dummy/app/assets/stylesheets", "test/dummy/app/assets/stylesheets/application.css", "test/dummy/app/models", "test/dummy/app/models/concerns", "test/dummy/app/helpers", "test/dummy/app/helpers/application_helper.rb", "test/dummy/app/mailers", "test/dummy/app/views", "test/dummy/app/views/layouts", "test/dummy/app/views/layouts/application.html.erb", "test/dummy/app/controllers", "test/dummy/app/controllers/concerns", "test/dummy/app/controllers/application_controller.rb", "test/dummy/config", "test/dummy/config/routes.rb", "test/dummy/config/environments", "test/dummy/config/environments/test.rb", "test/dummy/config/environments/development.rb", "test/dummy/config/environments/production.rb", "test/dummy/config/initializers", "test/dummy/config/initializers/assets.rb", "test/dummy/config/initializers/session_store.rb", "test/dummy/config/initializers/wrap_parameters.rb", "test/dummy/config/initializers/filter_parameter_logging.rb", "test/dummy/config/initializers/inflections.rb", "test/dummy/config/initializers/mime_types.rb", "test/dummy/config/initializers/backtrace_silencers.rb", "test/dummy/config/initializers/cookies_serializer.rb", "test/dummy/config/secrets.yml", "test/dummy/config/boot.rb", "test/dummy/config/environment.rb", "test/dummy/config/database.yml", "test/dummy/config/application.rb", "test/dummy/config/locales", "test/dummy/config/locales/en.yml", "test/dummy/public", "test/dummy/public/500.html", "test/dummy/public/422.html", "test/dummy/public/404.html", "test/dummy/public/favicon.ico", "test/dummy/bin", "test/dummy/bin/rake", "test/dummy/bin/rails", "test/dummy/bin/bundle", "test/dummy/lib", "test/dummy/lib/assets", "test/dummy/config.ru", "test/dummy/Rakefile", "test/dummy/README.rdoc", "test/dummy/log", "test/application_form_test.rb", "test/helpers/application_form_helper_test.rb", "test/test_helper.rb", "test/controllers/application_form_controller_test.rb"] s.installed_by_version = "2.2.2" if s.respond_to? :installed_by_version - s.add_dependency "custom_announcement" - s.add_dependency "custom_gallery" + # s.add_dependency "custom_announcement" + # s.add_dependency "custom_gallery" end diff --git a/config/locales/en.yml b/config/locales/en.yml index b199edc..3f37e62 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -27,6 +27,30 @@ en: abstract_number: Abstract number presentation_type: Presentation application_form: + close: "Close" + send_email_to_next_stage_reviewer: "Email has been sent to reviewer of next stage!" + denied_stage: "Denied Stage" + stage_review: "Stage Review" + status: + '0': 'Reviewing' + '1': 'Denied' + '2': 'Success' + num: + '0': '0 ' + '1': '1 ' + '2': '2 ' + '3': '3 ' + '4': '4 ' + '5': '5 ' + '6': '6 ' + '7': '7 ' + '8': '8 ' + '9': '9 ' + stage: "Stage" + link_choice: + agree: Agree + disagree: Disagree + please_click_the_link_below_directly: Please click the link below directly save_name: Save File Name and_so_on: and so on custom1: the first custom field @@ -107,17 +131,17 @@ en: display_field: Display field note: Note email_signup_success: Application sent success - email_submission_success: Process approved success + email_submission_success: Notice of application's approval email_add_file_success: Application Denied email_edit_file_success: Application Approved success email_signup_content: Application sent success - email_submission_content: Process approved success + email_submission_content: Notice of application's approval email_add_file_content: Application Denied email_edit_file_content: Application Approved success email_title: Title email_content: Content email_signup: Application sent - email_submission: Process approved + email_submission: Notice of approval email_edit_file: Application Approved email_add_file: Denied auto_send_email_set: Auto send email setting @@ -199,8 +223,9 @@ en: content: Content #內容 application_form_signup: + review_progress: Review progress reviewer_ids_list: Reviewer Stages - serial_number: Sign-up No. + serial_number: Application No. status: Attendee Role title: File Name description: Summary @@ -229,7 +254,7 @@ en: files: Files #檔案 logout: Log Out #登出 logouting: Logging Out #登出中 - success_message: 'Registration successful, thank you.' + success_message: 'Your application has been submitted. Please waiting for review. Thank you.' email_address: Email address _password: Password login: Login diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index f77ae4f..9a69392 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -28,6 +28,30 @@ zh_tw: abstract_number: 摘要編號 presentation_type: 發表方式 application_form: + close: "關閉" + send_email_to_next_stage_reviewer: "已寄送email給下個階段審核者!" + denied_stage: "未通過階段" + stage_review: "階審核" + status: + '0': '審核中' + '1': '不通過' + '2': '申請通過' + num: + '0': '零' + '1': '一' + '2': '二' + '3': '三' + '4': '四' + '5': '五' + '6': '六' + '7': '七' + '8': '八' + '9': '九' + stage: "階段" + link_choice: + agree: 同意 + disagree: 不同意 + please_click_the_link_below_directly: 請直接點選以下連結 save_name: 檔案儲存名稱 and_so_on: 以此類推 custom1: 客製化欄位的第一個欄位 @@ -108,17 +132,17 @@ zh_tw: display_field: 顯示的欄位 note: 附註 email_signup_success: 申請已送出成功 - email_submission_success: 審核階段已通過 + email_submission_success: 表單申請審核通知 email_add_file_success: 申請不通過 email_edit_file_success: 申請已通過 email_signup_content: 申請已送出成功 - email_submission_content: 審核階段已通過 + email_submission_content: 表單申請審核通知 email_add_file_content: 申請不通過 email_edit_file_content: 申請已通過 email_title: 主旨 email_content: 內文 email_signup: 申請送出 - email_submission: 階段通過 + email_submission: 審核通知 email_edit_file: 申請通過 email_add_file: 不通過 auto_send_email_set: 自動發信設定 @@ -200,8 +224,9 @@ zh_tw: content: 內容 application_form_signup: + review_progress: 審核進度 reviewer_ids_list: 審查階段 - serial_number: 註冊編號 + serial_number: 申請序號 status: 報名身分 title: 稿件名稱 description: 摘要 @@ -230,7 +255,7 @@ zh_tw: files: 檔案 logout: Logout logouting: 登出中 - success_message: '您的報名已成功,感謝您的參與。' + success_message: '您的申請已送出,請靜候審核,謝謝。' email_address: Email address _password: Password login: Login diff --git a/config/routes.rb b/config/routes.rb index 5b5c5c0..bf2db04 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,8 @@ Rails.application.routes.draw do locales = Site.first.in_use_locales rescue I18n.available_locales - + Thread.new do + end scope "(:locale)", locale: Regexp.new(locales.join("|")) do namespace :admin do resource :application_forms, only: [] do @@ -65,7 +66,7 @@ Rails.application.routes.draw do post 'del_file', to: 'application_forms#del_file' end end - + get '/xhr/application_forms/agree_link' , to: 'application_forms#agree_link' end end diff --git a/custom_announcement/.gitignore b/custom_announcement/.gitignore deleted file mode 100644 index de5d954..0000000 --- a/custom_announcement/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.bundle/ -log/*.log -pkg/ -test/dummy/db/*.sqlite3 -test/dummy/db/*.sqlite3-journal -test/dummy/log/*.log -test/dummy/tmp/ -test/dummy/.sass-cache diff --git a/custom_announcement/Gemfile b/custom_announcement/Gemfile deleted file mode 100644 index df1126e..0000000 --- a/custom_announcement/Gemfile +++ /dev/null @@ -1,14 +0,0 @@ -source "https://rubygems.org" - -# Declare your gem's dependencies in custom_bulletin.gemspec. -# Bundler will treat runtime dependencies like base dependencies, and -# development dependencies will be added by default to the :development group. -gemspec - -# Declare any dependencies that are still in development here instead of in -# your gemspec. These might include edge Rails or gems from your path or -# Git. Remember to move these dependencies to your gemspec before releasing -# your gem to rubygems.org. - -# To use debugger -# gem 'debugger' diff --git a/custom_announcement/Gemfile.lock b/custom_announcement/Gemfile.lock deleted file mode 100644 index 0b0b618..0000000 --- a/custom_announcement/Gemfile.lock +++ /dev/null @@ -1,106 +0,0 @@ -PATH - remote: . - specs: - custom_announcement (0.0.1) - mongoid (= 4.0.0.beta1) - rails (~> 4.1.0.rc2) - -GEM - remote: https://rubygems.org/ - specs: - actionmailer (4.1.0.rc2) - actionpack (= 4.1.0.rc2) - actionview (= 4.1.0.rc2) - mail (~> 2.5.4) - actionpack (4.1.0.rc2) - actionview (= 4.1.0.rc2) - activesupport (= 4.1.0.rc2) - rack (~> 1.5.2) - rack-test (~> 0.6.2) - actionview (4.1.0.rc2) - activesupport (= 4.1.0.rc2) - builder (~> 3.1) - erubis (~> 2.7.0) - activemodel (4.1.0.rc2) - activesupport (= 4.1.0.rc2) - builder (~> 3.1) - activerecord (4.1.0.rc2) - activemodel (= 4.1.0.rc2) - activesupport (= 4.1.0.rc2) - arel (~> 5.0.0) - activesupport (4.1.0.rc2) - i18n (~> 0.6, >= 0.6.9) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.1) - tzinfo (~> 1.1) - arel (5.0.0) - atomic (1.1.16) - bson (2.2.1) - builder (3.2.2) - connection_pool (2.0.0) - erubis (2.7.0) - hike (1.2.3) - i18n (0.6.9) - json (1.8.1) - mail (2.5.4) - mime-types (~> 1.16) - treetop (~> 1.4.8) - mime-types (1.25.1) - minitest (5.3.1) - mongoid (4.0.0.beta1) - activemodel (>= 4.0.0) - moped (~> 2.0.beta6) - origin (~> 2.1) - tzinfo (>= 0.3.37) - moped (2.0.0.rc1) - bson (~> 2.2) - connection_pool (~> 2.0) - optionable (~> 0.2.0) - multi_json (1.9.2) - optionable (0.2.0) - origin (2.1.1) - polyglot (0.3.4) - rack (1.5.2) - rack-test (0.6.2) - rack (>= 1.0) - rails (4.1.0.rc2) - actionmailer (= 4.1.0.rc2) - actionpack (= 4.1.0.rc2) - actionview (= 4.1.0.rc2) - activemodel (= 4.1.0.rc2) - activerecord (= 4.1.0.rc2) - activesupport (= 4.1.0.rc2) - bundler (>= 1.3.0, < 2.0) - railties (= 4.1.0.rc2) - sprockets-rails (~> 2.0.0) - railties (4.1.0.rc2) - actionpack (= 4.1.0.rc2) - activesupport (= 4.1.0.rc2) - rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) - rake (10.2.2) - sprockets (2.12.0) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.0.1) - actionpack (>= 3.0) - activesupport (>= 3.0) - sprockets (~> 2.8) - thor (0.19.1) - thread_safe (0.3.1) - atomic (>= 1.1.7, < 2) - tilt (1.4.1) - treetop (1.4.15) - polyglot - polyglot (>= 0.3.1) - tzinfo (1.1.0) - thread_safe (~> 0.1) - -PLATFORMS - ruby - -DEPENDENCIES - custom_announcement! diff --git a/custom_announcement/MIT-LICENSE b/custom_announcement/MIT-LICENSE deleted file mode 100644 index ea966ec..0000000 --- a/custom_announcement/MIT-LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2014 YOURNAME - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/custom_announcement/README.rdoc b/custom_announcement/README.rdoc deleted file mode 100644 index abac94e..0000000 --- a/custom_announcement/README.rdoc +++ /dev/null @@ -1,3 +0,0 @@ -= CustomBulletin - -This project rocks and uses MIT-LICENSE. \ No newline at end of file diff --git a/custom_announcement/Rakefile b/custom_announcement/Rakefile deleted file mode 100644 index cc90c74..0000000 --- a/custom_announcement/Rakefile +++ /dev/null @@ -1,32 +0,0 @@ -begin - require 'bundler/setup' -rescue LoadError - puts 'You must `gem install bundler` and `bundle install` to run rake tasks' -end - -require 'rdoc/task' - -RDoc::Task.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'CustomAnnouncement' - rdoc.options << '--line-numbers' - rdoc.rdoc_files.include('README.rdoc') - rdoc.rdoc_files.include('lib/**/*.rb') -end - - - - -Bundler::GemHelper.install_tasks - -require 'rake/testtask' - -Rake::TestTask.new(:test) do |t| - t.libs << 'lib' - t.libs << 'test' - t.pattern = 'test/**/*_test.rb' - t.verbose = false -end - - -task default: :test diff --git a/custom_announcement/app/assets/images/custom_announcement-default.jpg b/custom_announcement/app/assets/images/custom_announcement-default.jpg deleted file mode 100644 index b6b82f0..0000000 Binary files a/custom_announcement/app/assets/images/custom_announcement-default.jpg and /dev/null differ diff --git a/custom_announcement/app/assets/images/custom_bulletin/.keep b/custom_announcement/app/assets/images/custom_bulletin/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/assets/javascripts/admin/custom_announcements.js b/custom_announcement/app/assets/javascripts/admin/custom_announcements.js deleted file mode 100644 index dee720f..0000000 --- a/custom_announcement/app/assets/javascripts/admin/custom_announcements.js +++ /dev/null @@ -1,2 +0,0 @@ -// Place all the behaviors and hooks related to the matching controller here. -// All this logic will automatically be available in application.js. diff --git a/custom_announcement/app/assets/javascripts/custom_bulletin/.keep b/custom_announcement/app/assets/javascripts/custom_bulletin/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/assets/javascripts/custom_bulletin/animsition-init.js b/custom_announcement/app/assets/javascripts/custom_bulletin/animsition-init.js deleted file mode 100644 index 5684ee5..0000000 --- a/custom_announcement/app/assets/javascripts/custom_bulletin/animsition-init.js +++ /dev/null @@ -1,9 +0,0 @@ -( function( $ ) { - 'use strict'; - $( document ).on( 'ready', function() { - var $settings = wpexAnimsition; - $settings.inDuration = parseInt( $settings.inDuration ); - $settings.outDuration = parseInt( $settings.outDuration ); - $( 'body' ).animsition( $settings ); - } ); -} ) ( jQuery ); \ No newline at end of file diff --git a/custom_announcement/app/assets/javascripts/custom_bulletin/animsition.js b/custom_announcement/app/assets/javascripts/custom_bulletin/animsition.js deleted file mode 100644 index f60b120..0000000 --- a/custom_announcement/app/assets/javascripts/custom_bulletin/animsition.js +++ /dev/null @@ -1,115 +0,0 @@ -/*! - * animsition v4.0.2 - * A simple and easy jQuery plugin for CSS animated page transitions. - * http://blivesta.github.io/animsition - * License : MIT - * Author : blivesta (http://blivesta.com/) - */ -!function (t) { - "use strict"; - "function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof exports ? module.exports = t(require("jquery")) : t(jQuery) -}(function (t) { - "use strict"; - var n = "animsition", - i = { - init: function (a) { - a = t.extend({ inClass: "fade-in", - outClass: "fade-out", - inDuration: 1500, - outDuration: 800, - linkElement: ".animsition-link", - loading: !0, - loadingParentElement: "body", - loadingClass: "animsition-loading", - loadingInner: "", - timeout: !1, - timeoutCountdown: 5e3, - onLoadEvent: !0, - browser: ["animation-duration", "-webkit-animation-duration"], - overlay: !1, - overlayClass: "animsition-overlay-slide", - overlayParentElement: "body", - transition: function (t) { window.location.href = t } }, a), - i.settings = { timer: !1, - data: { inClass: "animsition-in-class", - inDuration: "animsition-in-duration", - outClass: "animsition-out-class", - outDuration: "animsition-out-duration", overlay: "animsition-overlay" - }, - events: { inStart: "animsition.inStart", - inEnd: "animsition.inEnd", - outStart: "animsition.outStart", - outEnd: "animsition.outEnd" - } - }; - var o = i.supportCheck.call(this, a); - if (!o && a.browser.length > 0 && (!o || !this.length)) - return "console" in window || (window.console = {}, window.console.log = function (t) { return t }), this.length || console.log("Animsition: Element does not exist on page."), o || console.log("Animsition: Does not support this browser."), i.destroy.call(this); var e = i.optionCheck.call(this, a); return e && t("." + a.overlayClass).length <= 0 && i.addOverlay.call(this, a), a.loading && t("." + a.loadingClass).length <= 0 && i.addLoading.call(this, a), this.each(function () { var o = this, e = t(this), s = t(window), r = t(document), l = e.data(n); l || (a = t.extend({}, a), e.data(n, { options: a }), a.timeout && i.addTimer.call(o), a.onLoadEvent && s.on("load." + n, function () { i.settings.timer && clearTimeout(i.settings.timer), i["in"].call(o) }), s.on("pageshow." + n, function (t) { t.originalEvent.persisted && i["in"].call(o) }), s.on("unload." + n, function () { }), r.on("click." + n, a.linkElement, function (n) { n.preventDefault(); var a = t(this), e = a.attr("href"); 2 === n.which || n.metaKey || n.shiftKey || -1 !== navigator.platform.toUpperCase().indexOf("WIN") && n.ctrlKey ? window.open(e, "_blank") : i.out.call(o, a, e) })) }) - }, addOverlay: function (n) { - t(n.overlayParentElement).prepend('
') - }, addLoading: function (n) { - t(n.loadingParentElement).append('
' + n.loadingInner + "
") - }, removeLoading: function () { - var i = t(this), a = i.data(n).options, o = t(a.loadingParentElement).children("." + a.loadingClass); - o.fadeOut().remove() - }, addTimer: function () { - var a = this, o = t(this), - e = o.data(n).options; - i.settings.timer = setTimeout(function () { - i["in"].call(a), t(window).off("load." + n) }, e.timeoutCountdown) - }, supportCheck: function (n) { - var i = t(this), a = n.browser, o = a.length, e = !1; - 0 === o && (e = !0); - for (var s = 0; o > s; s++) - if ("string" == typeof i.css(a[s])) { - e = !0; break - } - return e - }, optionCheck: function (n) { - var a, o = t(this); - return a = n.overlay || o.data(i.settings.data.overlay) ? !0 : !1 - }, animationCheck: function (i, a, o) { - var e = t(this), s = e.data(n).options, - r = typeof i, l = !a && "number" === r, - d = a && "string" === r && i.length > 0; - return l || d ? i = i : a && o ? i = s.inClass : !a && o ? i = s.inDuration : a && !o ? i = s.outClass : a || o || (i = s.outDuration), i - }, "in": function () { - var a = this, o = t(this), e = o.data(n).options, - s = o.data(i.settings.data.inDuration), r = o.data(i.settings.data.inClass), - l = i.animationCheck.call(a, s, !1, !0), d = i.animationCheck.call(a, r, !0, !0), - u = i.optionCheck.call(a, e), c = o.data(n).outClass; - e.loading && i.removeLoading.call(a), c && o.removeClass(c), u ? i.inOverlay.call(a, d, l) : i.inDefault.call(a, d, l) - }, inDefault: function (n, a) { - var o = t(this); o.css({ "animation-duration": a + "ms" }).addClass(n).trigger(i.settings.events.inStart).animateCallback(function () { o.removeClass(n).css({ opacity: 1 }).trigger(i.settings.events.inEnd) }) - }, inOverlay: function (a, o) { - var e = t(this), s = e.data(n).options; - e.css({ opacity: 1 }).trigger(i.settings.events.inStart), - t(s.overlayParentElement).children("." + s.overlayClass).css({ "animation-duration": o + "ms" }).addClass(a).animateCallback(function () { e.trigger(i.settings.events.inEnd) }) - }, out: function (a, o) { - var e = this, s = t(this), r = s.data(n).options, l = a.data(i.settings.data.outClass), d = s.data(i.settings.data.outClass), u = a.data(i.settings.data.outDuration), c = s.data(i.settings.data.outDuration), m = l ? l : d, g = u ? u : c, f = i.animationCheck.call(e, m, !0, !1), v = i.animationCheck.call(e, g, !1, !1), h = i.optionCheck.call(e, r); s.data(n).outClass = f, h ? i.outOverlay.call(e, f, v, o) : i.outDefault.call(e, f, v, o) - }, outDefault: function (a, o, e) { - var s = t(this), r = s.data(n).options; - s.css({ "animation-duration": o + 1 + "ms" }).addClass(a).trigger(i.settings.events.outStart).animateCallback(function () { - s.trigger(i.settings.events.outEnd), r.transition(e) - }) - }, outOverlay: function (a, o, e) { - var s = this, r = t(this), l = r.data(n).options, - d = r.data(i.settings.data.inClass), u = i.animationCheck.call(s, d, !0, !0); - t(l.overlayParentElement).children("." + l.overlayClass).css({ "animation-duration": o + 1 + "ms" }).removeClass(u).addClass(a).trigger(i.settings.events.outStart).animateCallback(function () { - r.trigger(i.settings.events.outEnd), l.transition(e) }) - }, destroy: function () { - return this.each(function () { - var i = t(this); t(window).off("." + n), i.css({ opacity: 1 }).removeData(n) - }) - } - }; - t.fn.animateCallback = function (n) { - var i = "animationend webkitAnimationEnd"; - return this.each(function () { - var a = t(this); a.on(i, function () { return a.off(i), n.call(this) }) - }) - }, - t.fn.animsition = function (a) { - return i[a] ? i[a].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof a && a ? void t.error("Method " + a + " does not exist on jQuery." + n) : i.init.apply(this, arguments) - } -}); \ No newline at end of file diff --git a/custom_announcement/app/assets/javascripts/custom_bulletin/wpex.min.js b/custom_announcement/app/assets/javascripts/custom_bulletin/wpex.min.js deleted file mode 100644 index 9d63254..0000000 --- a/custom_announcement/app/assets/javascripts/custom_bulletin/wpex.min.js +++ /dev/null @@ -1,2656 +0,0 @@ -(function () { - "use strict"; - if (!Array.prototype.findIndex) { - Object.defineProperty(Array.prototype, 'findIndex', { - value: function(predicate) { - // 1. Let O be ? ToObject(this value). - if (this == null) { - throw new TypeError('"this" is null or not defined'); - } - var o = Object(this); - // 2. Let len be ? ToLength(? Get(O, "length")). - var len = o.length >>> 0; - // 3. If IsCallable(predicate) is false, throw a TypeError exception. - if (typeof predicate !== 'function') { - throw new TypeError('predicate must be a function'); - } - // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. - var thisArg = arguments[1]; - // 5. Let k be 0. - var k = 0; - // 6. Repeat, while k < len - while (k < len) { - // a. Let Pk be ! ToString(k). - // b. Let kValue be ? Get(O, Pk). - // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). - // d. If testResult is true, return k. - var kValue = o[k]; - if (predicate.call(thisArg, kValue, k, o)) { - return k; - } - // e. Increase k by 1. - k++; - } - // 7. Return -1. - return -1; - } - }); - } - function e() { } function t(e, t) { for (var n = e.length; n--;)if (e[n].listener === t) return n; return -1 } var n = e.prototype; n.getListeners = function (e) { var t, n, i = this._getEvents(); if ("object" == typeof e) { t = {}; for (n in i) i.hasOwnProperty(n) && e.test(n) && (t[n] = i[n]) } else t = i[e] || (i[e] = []); return t }, n.flattenListeners = function (e) { var t, n = []; for (t = 0; e.length > t; t += 1)n.push(e[t].listener); return n }, n.getListenersAsObject = function (e) { var t, n = this.getListeners(e); return n instanceof Array && (t = {}, t[e] = n), t || n }, n.addListener = function (e, n) { var i, r = this.getListenersAsObject(e), o = "object" == typeof n; for (i in r) r.hasOwnProperty(i) && -1 === t(r[i], n) && r[i].push(o ? n : { listener: n, once: false }); return this }, n.on = n.addListener, n.addOnceListener = function (e, t) { return this.addListener(e, { listener: t, once: true }) }, n.once = n.addOnceListener, n.defineEvent = function (e) { return this.getListeners(e), this }, n.defineEvents = function (e) { for (var t = 0; e.length > t; t += 1)this.defineEvent(e[t]); return this }, n.removeListener = function (e, n) { var i, r, o = this.getListenersAsObject(e); for (r in o) o.hasOwnProperty(r) && (i = t(o[r], n), -1 !== i && o[r].splice(i, 1)); return this }, n.off = n.removeListener, n.addListeners = function (e, t) { return this.manipulateListeners(false, e, t) }, n.removeListeners = function (e, t) { return this.manipulateListeners(true, e, t) }, n.manipulateListeners = function (e, t, n) { var i, r, o = e ? this.removeListener : this.addListener, s = e ? this.removeListeners : this.addListeners; if ("object" != typeof t || t instanceof RegExp) for (i = n.length; i--;)o.call(this, t, n[i]); else for (i in t) t.hasOwnProperty(i) && (r = t[i]) && ("function" == typeof r ? o.call(this, i, r) : s.call(this, i, r)); return this }, n.removeEvent = function (e) { var t, n = typeof e, i = this._getEvents(); if ("string" === n) delete i[e]; else if ("object" === n) for (t in i) i.hasOwnProperty(t) && e.test(t) && delete i[t]; else delete this._events; return this }, n.emitEvent = function (e, t) { var n, i, r, o, s = this.getListenersAsObject(e); for (r in s) if (s.hasOwnProperty(r)) for (i = s[r].length; i--;)n = s[r][i], o = n.listener.apply(this, t || []), (o === this._getOnceReturnValue() || n.once === true) && this.removeListener(e, s[r][i].listener); return this }, n.trigger = n.emitEvent, n.emit = function (e) { var t = Array.prototype.slice.call(arguments, 1); return this.emitEvent(e, t) }, n.setOnceReturnValue = function (e) { return this._onceReturnValue = e, this }, n._getOnceReturnValue = function () { return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : true }, n._getEvents = function () { return this._events || (this._events = {}) }, "function" == typeof define && define.amd ? define(function () { return e }) : "undefined" != typeof module && module.exports ? module.exports = e : this.EventEmitter = e }).call(this), function (e) { "use strict"; var t = document.documentElement, n = function () { }; t.addEventListener ? n = function (e, t, n) { e.addEventListener(t, n, false) } : t.attachEvent && (n = function (t, n, i) { t[n + i] = i.handleEvent ? function () { var t = e.event; t.target = t.target || t.srcElement, i.handleEvent.call(i, t) } : function () { var n = e.event; n.target = n.target || n.srcElement, i.call(t, n) }, t.attachEvent("on" + n, t[n + i]) }); var i = function () { }; t.removeEventListener ? i = function (e, t, n) { e.removeEventListener(t, n, false) } : t.detachEvent && (i = function (e, t, n) { e.detachEvent("on" + t, e[t + n]); try { delete e[t + n] } catch (i) { e[t + n] = void 0 } }); var r = { bind: n, unbind: i }; "function" == typeof define && define.amd ? define(r) : e.eventie = r }(this), function (e) { "use strict"; function t(e, t) { for (var n in t) e[n] = t[n]; return e } function n(e) { return "[object Array]" === c.call(e) } function i(e) { var t = []; if (n(e)) t = e; else if ("number" == typeof e.length) for (var i = 0, r = e.length; r > i; i++)t.push(e[i]); else t.push(e); return t } function r(e, n) { function r(e, n, s) { if (!(this instanceof r)) return new r(e, n); "string" == typeof e && (e = document.querySelectorAll(e)), this.elements = i(e), this.options = t({}, this.options), "function" == typeof n ? s = n : t(this.options, n), s && this.on("always", s), this.getImages(), o && (this.jqDeferred = new o.Deferred); var a = this; setTimeout(function () { a.check() }) } function c(e) { this.img = e } r.prototype = new e, r.prototype.options = {}, r.prototype.getImages = function () { this.images = []; for (var e = 0, t = this.elements.length; t > e; e++) { var n = this.elements[e]; "IMG" === n.nodeName && this.addImage(n); for (var i = n.querySelectorAll("img"), r = 0, o = i.length; o > r; r++) { var s = i[r]; this.addImage(s) } } }, r.prototype.addImage = function (e) { var t = new c(e); this.images.push(t) }, r.prototype.check = function () { function e(e, r) { return t.options.debug && a && s.log("confirm", e, r), t.progress(e), n++, n === i && t.complete(), true } var t = this, n = 0, i = this.images.length; if (this.hasAnyBroken = false, !i) return this.complete(), void 0; for (var r = 0; i > r; r++) { var o = this.images[r]; o.on("confirm", e), o.check() } }, r.prototype.progress = function (e) { this.hasAnyBroken = this.hasAnyBroken || !e.isLoaded; var t = this; setTimeout(function () { t.emit("progress", t, e), t.jqDeferred && t.jqDeferred.notify(t, e) }) }, r.prototype.complete = function () { var e = this.hasAnyBroken ? "fail" : "done"; this.isComplete = true; var t = this; setTimeout(function () { if (t.emit(e, t), t.emit("always", t), t.jqDeferred) { var n = t.hasAnyBroken ? "reject" : "resolve"; t.jqDeferred[n](t) } }) }, o && (o.fn.imagesLoaded = function (e, t) { var n = new r(this, e, t); return n.jqDeferred.promise(o(this)) }); var f = {}; return c.prototype = new e, c.prototype.check = function () { var e = f[this.img.src]; if (e) return this.useCached(e), void 0; if (f[this.img.src] = this, this.img.complete && void 0 !== this.img.naturalWidth) return this.confirm(0 !== this.img.naturalWidth, "naturalWidth"), void 0; var t = this.proxyImage = new Image; n.bind(t, "load", this), n.bind(t, "error", this), t.src = this.img.src }, c.prototype.useCached = function (e) { if (e.isConfirmed) this.confirm(e.isLoaded, "cached was confirmed"); else { var t = this; e.on("confirm", function (e) { return t.confirm(e.isLoaded, "cache emitted confirmed"), true }) } }, c.prototype.confirm = function (e, t) { this.isConfirmed = true, this.isLoaded = e, this.emit("confirm", this, t) }, c.prototype.handleEvent = function (e) { var t = "on" + e.type; this[t] && this[t](e) }, c.prototype.onload = function () { this.confirm(true, "onload"), this.unbindProxyEvents() }, c.prototype.onerror = function () { this.confirm(false, "onerror"), this.unbindProxyEvents() }, c.prototype.unbindProxyEvents = function () { n.unbind(this.proxyImage, "load", this), n.unbind(this.proxyImage, "error", this) }, r } var o = e.jQuery, s = e.console, a = s !== void 0, c = Object.prototype.toString; "function" == typeof define && define.amd ? define(["eventEmitter/EventEmitter", "eventie/eventie"], r) : e.imagesLoaded = r(e.EventEmitter, e.eventie) }(window); (function (window) { - var slice = Array.prototype.slice; function noop() { } - function defineBridget($) { - if (!$) { return } - function addOptionMethod(PluginClass) { - if (PluginClass.prototype.option) { return } - PluginClass.prototype.option = function (opts) { - if (!$.isPlainObject(opts)) { return } - this.options = $.extend(true, this.options, opts) - } - } - var logError = typeof console === 'undefined' ? noop : function (message) { console.error(message) }; function bridge(namespace, PluginClass) { - $.fn[namespace] = function (options) { - if (typeof options === 'string') { - var args = slice.call(arguments, 1); for (var i = 0, len = this.length; i < len; i++) { - var elem = this[i]; var instance = $.data(elem, namespace); if (!instance) { logError("cannot call methods on " + namespace + " prior to initialization; " + "attempted to call '" + options + "'"); continue } - if (!$.isFunction(instance[options]) || options.charAt(0) === '_') { logError("no such method '" + options + "' for " + namespace + " instance"); continue } - var returnValue = instance[options].apply(instance, args); if (returnValue !== undefined) { return returnValue } - } - return this - } else { return this.each(function () { var instance = $.data(this, namespace); if (instance) { instance.option(options); instance._init() } else { instance = new PluginClass(this, options); $.data(this, namespace, instance) } }) } - } - } - $.bridget = function (namespace, PluginClass) { addOptionMethod(PluginClass); bridge(namespace, PluginClass) }; return $.bridget - } - if (typeof define === 'function' && define.amd) { define('jquery-bridget/jquery.bridget', ['jquery'], defineBridget) } else if (typeof exports === 'object') { defineBridget(require('jquery')) } else { defineBridget(window.jQuery) } -})(window); -(function (window) { - var docElem = document.documentElement; var bind = function () { }; function getIEEvent(obj) { var event = window.event; event.target = event.target || event.srcElement || obj; return event } - if (docElem.addEventListener) { bind = function (obj, type, fn) { obj.addEventListener(type, fn, false) } } else if (docElem.attachEvent) { bind = function (obj, type, fn) { obj[type + fn] = fn.handleEvent ? function () { var event = getIEEvent(obj); fn.handleEvent.call(fn, event) } : function () { var event = getIEEvent(obj); fn.call(obj, event) }; obj.attachEvent("on" + type, obj[type + fn]) } } - var unbind = function () { }; if (docElem.removeEventListener) { unbind = function (obj, type, fn) { obj.removeEventListener(type, fn, false) } } else if (docElem.detachEvent) { unbind = function (obj, type, fn) { obj.detachEvent("on" + type, obj[type + fn]); try { delete obj[type + fn] } catch (err) { obj[type + fn] = undefined } } } - var eventie = { bind: bind, unbind: unbind }; if (typeof define === 'function' && define.amd) { define('eventie/eventie', eventie) } else if (typeof exports === 'object') { module.exports = eventie } else { window.eventie = eventie } -})(window); (function () { - 'use strict'; function EventEmitter() { } - var proto = EventEmitter.prototype; var exports = this; var originalGlobalValue = exports.EventEmitter; function indexOfListener(listeners, listener) { - var i = listeners.length; while (i--) { if (listeners[i].listener === listener) { return i } } - return -1 - } - function alias(name) { return function aliasClosure() { return this[name].apply(this, arguments) } } - proto.getListeners = function getListeners(evt) { - var events = this._getEvents(); var response; var key; if (evt instanceof RegExp) { response = {}; for (key in events) { if (events.hasOwnProperty(key) && evt.test(key)) { response[key] = events[key] } } } - else { response = events[evt] || (events[evt] = []) } - return response - }; proto.flattenListeners = function flattenListeners(listeners) { - var flatListeners = []; var i; for (i = 0; i < listeners.length; i += 1) { flatListeners.push(listeners[i].listener) } - return flatListeners - }; proto.getListenersAsObject = function getListenersAsObject(evt) { - var listeners = this.getListeners(evt); var response; if (listeners instanceof Array) { response = {}; response[evt] = listeners } - return response || listeners - }; proto.addListener = function addListener(evt, listener) { - var listeners = this.getListenersAsObject(evt); var listenerIsWrapped = typeof listener === 'object'; var key; for (key in listeners) { if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) { listeners[key].push(listenerIsWrapped ? listener : { listener: listener, once: false }) } } - return this - }; proto.on = alias('addListener'); proto.addOnceListener = function addOnceListener(evt, listener) { return this.addListener(evt, { listener: listener, once: true }) }; proto.once = alias('addOnceListener'); proto.defineEvent = function defineEvent(evt) { this.getListeners(evt); return this }; proto.defineEvents = function defineEvents(evts) { - for (var i = 0; i < evts.length; i += 1) { this.defineEvent(evts[i]) } - return this - }; proto.removeListener = function removeListener(evt, listener) { - var listeners = this.getListenersAsObject(evt); var index; var key; for (key in listeners) { if (listeners.hasOwnProperty(key)) { index = indexOfListener(listeners[key], listener); if (index !== -1) { listeners[key].splice(index, 1) } } } - return this - }; proto.off = alias('removeListener'); proto.addListeners = function addListeners(evt, listeners) { return this.manipulateListeners(false, evt, listeners) }; proto.removeListeners = function removeListeners(evt, listeners) { return this.manipulateListeners(true, evt, listeners) }; proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) { - var i; var value; var single = remove ? this.removeListener : this.addListener; var multiple = remove ? this.removeListeners : this.addListeners; if (typeof evt === 'object' && !(evt instanceof RegExp)) { - for (i in evt) { - if (evt.hasOwnProperty(i) && (value = evt[i])) { - if (typeof value === 'function') { single.call(this, i, value) } - else { multiple.call(this, i, value) } - } - } - } - else { i = listeners.length; while (i--) { single.call(this, evt, listeners[i]) } } - return this - }; proto.removeEvent = function removeEvent(evt) { - var type = typeof evt; var events = this._getEvents(); var key; if (type === 'string') { delete events[evt] } - else if (evt instanceof RegExp) { for (key in events) { if (events.hasOwnProperty(key) && evt.test(key)) { delete events[key] } } } - else { delete this._events } - return this - }; proto.removeAllListeners = alias('removeEvent'); proto.emitEvent = function emitEvent(evt, args) { - var listeners = this.getListenersAsObject(evt); var listener; var i; var key; var response; for (key in listeners) { - if (listeners.hasOwnProperty(key)) { - i = listeners[key].length; while (i--) { - listener = listeners[key][i]; if (listener.once === true) { this.removeListener(evt, listener.listener) } - response = listener.listener.apply(this, args || []); if (response === this._getOnceReturnValue()) { this.removeListener(evt, listener.listener) } - } - } - } - return this - }; proto.trigger = alias('emitEvent'); proto.emit = function emit(evt) { var args = Array.prototype.slice.call(arguments, 1); return this.emitEvent(evt, args) }; proto.setOnceReturnValue = function setOnceReturnValue(value) { this._onceReturnValue = value; return this }; proto._getOnceReturnValue = function _getOnceReturnValue() { - if (this.hasOwnProperty('_onceReturnValue')) { return this._onceReturnValue } - else { return true } - }; proto._getEvents = function _getEvents() { return this._events || (this._events = {}) }; EventEmitter.noConflict = function noConflict() { exports.EventEmitter = originalGlobalValue; return EventEmitter }; if (typeof define === 'function' && define.amd) { define('eventEmitter/EventEmitter', [], function () { return EventEmitter }) } - else if (typeof module === 'object' && module.exports) { module.exports = EventEmitter } - else { exports.EventEmitter = EventEmitter } -}.call(this)); (function (window) { - var prefixes = 'Webkit Moz ms Ms O'.split(' '); var docElemStyle = document.documentElement.style; function getStyleProperty(propName) { - if (!propName) { return } - if (typeof docElemStyle[propName] === 'string') { return propName } - propName = propName.charAt(0).toUpperCase() + propName.slice(1); var prefixed; for (var i = 0, len = prefixes.length; i < len; i++) { prefixed = prefixes[i] + propName; if (typeof docElemStyle[prefixed] === 'string') { return prefixed } } - } - if (typeof define === 'function' && define.amd) { define('get-style-property/get-style-property', [], function () { return getStyleProperty }) } else if (typeof exports === 'object') { module.exports = getStyleProperty } else { window.getStyleProperty = getStyleProperty } -})(window); (function (window, undefined) { - function getStyleSize(value) { var num = parseFloat(value); var isValid = value.indexOf('%') === -1 && !isNaN(num); return isValid && num } - function noop() { } - var logError = typeof console === 'undefined' ? noop : function (message) { console.error(message) }; var measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth']; function getZeroSize() { - var size = { width: 0, height: 0, innerWidth: 0, innerHeight: 0, outerWidth: 0, outerHeight: 0 }; for (var i = 0, len = measurements.length; i < len; i++) { var measurement = measurements[i]; size[measurement] = 0 } - return size - } - function defineGetSize(getStyleProperty) { - var isSetup = false; var getStyle, boxSizingProp, isBoxSizeOuter; function setup() { - if (isSetup) { return } - isSetup = true; var getComputedStyle = window.getComputedStyle; getStyle = (function () { - var getStyleFn = getComputedStyle ? function (elem) { return getComputedStyle(elem, null) } : function (elem) { return elem.currentStyle }; return function getStyle(elem) { - var style = getStyleFn(elem); if (!style) { logError('Style returned ' + style + '. Are you running this code in a hidden iframe on Firefox? ' + 'See http://bit.ly/getsizebug1') } - return style - } - })(); boxSizingProp = getStyleProperty('boxSizing'); if (boxSizingProp) { var div = document.createElement('div'); div.style.width = '200px'; div.style.padding = '1px 2px 3px 4px'; div.style.borderStyle = 'solid'; div.style.borderWidth = '1px 2px 3px 4px'; div.style[boxSizingProp] = 'border-box'; var body = document.body || document.documentElement; body.appendChild(div); var style = getStyle(div); isBoxSizeOuter = getStyleSize(style.width) === 200; body.removeChild(div) } - } - function getSize(elem) { - setup(); if (typeof elem === 'string') { elem = document.querySelector(elem) } - if (!elem || typeof elem !== 'object' || !elem.nodeType) { return } - var style = getStyle(elem); if (style.display === 'none') { return getZeroSize() } - var size = {}; size.width = elem.offsetWidth; size.height = elem.offsetHeight; var isBorderBox = size.isBorderBox = !!(boxSizingProp && style[boxSizingProp] && style[boxSizingProp] === 'border-box'); for (var i = 0, len = measurements.length; i < len; i++) { var measurement = measurements[i]; var value = style[measurement]; value = mungeNonPixel(elem, value); var num = parseFloat(value); size[measurement] = !isNaN(num) ? num : 0 } - var paddingWidth = size.paddingLeft + size.paddingRight; var paddingHeight = size.paddingTop + size.paddingBottom; var marginWidth = size.marginLeft + size.marginRight; var marginHeight = size.marginTop + size.marginBottom; var borderWidth = size.borderLeftWidth + size.borderRightWidth; var borderHeight = size.borderTopWidth + size.borderBottomWidth; var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; var styleWidth = getStyleSize(style.width); if (styleWidth !== false) { size.width = styleWidth + (isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth) } - var styleHeight = getStyleSize(style.height); if (styleHeight !== false) { size.height = styleHeight + (isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight) } - size.innerWidth = size.width - (paddingWidth + borderWidth); size.innerHeight = size.height - (paddingHeight + borderHeight); size.outerWidth = size.width + marginWidth; size.outerHeight = size.height + marginHeight; return size - } - function mungeNonPixel(elem, value) { - if (window.getComputedStyle || value.indexOf('%') === -1) { return value } - var style = elem.style; var left = style.left; var rs = elem.runtimeStyle; var rsLeft = rs && rs.left; if (rsLeft) { rs.left = elem.currentStyle.left } - style.left = value; value = style.pixelLeft; style.left = left; if (rsLeft) { rs.left = rsLeft } - return value - } - return getSize - } - if (typeof define === 'function' && define.amd) { define('get-size/get-size', ['get-style-property/get-style-property'], defineGetSize) } else if (typeof exports === 'object') { module.exports = defineGetSize(require('desandro-get-style-property')) } else { window.getSize = defineGetSize(window.getStyleProperty) } -})(window); (function (window) { - var document = window.document; var queue = []; function docReady(fn) { - if (typeof fn !== 'function') { return } - if (docReady.isReady) { fn() } else { queue.push(fn) } - } - docReady.isReady = false; function onReady(event) { - var isIE8NotReady = event.type === 'readystatechange' && document.readyState !== 'complete'; if (docReady.isReady || isIE8NotReady) { return } - trigger() - } - function trigger() { docReady.isReady = true; for (var i = 0, len = queue.length; i < len; i++) { var fn = queue[i]; fn() } } - function defineDocReady(eventie) { - if (document.readyState === 'complete') { trigger() } else { eventie.bind(document, 'DOMContentLoaded', onReady); eventie.bind(document, 'readystatechange', onReady); eventie.bind(window, 'load', onReady) } - return docReady - } - if (typeof define === 'function' && define.amd) { define('doc-ready/doc-ready', ['eventie/eventie'], defineDocReady) } else if (typeof exports === 'object') { module.exports = defineDocReady(require('eventie')) } else { window.docReady = defineDocReady(window.eventie) } -})(window); (function (ElemProto) { - 'use strict'; var matchesMethod = (function () { - if (ElemProto.matches) { return 'matches' } - if (ElemProto.matchesSelector) { return 'matchesSelector' } - var prefixes = ['webkit', 'moz', 'ms', 'o']; for (var i = 0, len = prefixes.length; i < len; i++) { var prefix = prefixes[i]; var method = prefix + 'MatchesSelector'; if (ElemProto[method]) { return method } } - })(); function match(elem, selector) { return elem[matchesMethod](selector) } - function checkParent(elem) { - if (elem.parentNode) { return } - var fragment = document.createDocumentFragment(); fragment.appendChild(elem) - } - function query(elem, selector) { - checkParent(elem); var elems = elem.parentNode.querySelectorAll(selector); for (var i = 0, len = elems.length; i < len; i++) { if (elems[i] === elem) { return true } } - return false - } - function matchChild(elem, selector) { checkParent(elem); return match(elem, selector) } - var matchesSelector; if (matchesMethod) { var div = document.createElement('div'); var supportsOrphans = match(div, 'div'); matchesSelector = supportsOrphans ? match : matchChild } else { matchesSelector = query } - if (typeof define === 'function' && define.amd) { define('matches-selector/matches-selector', [], function () { return matchesSelector }) } else if (typeof exports === 'object') { module.exports = matchesSelector } - else { window.matchesSelector = matchesSelector } -})(Element.prototype); -(function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define('fizzy-ui-utils/utils', ['doc-ready/doc-ready', 'matches-selector/matches-selector'], function (docReady, matchesSelector) { return factory(window, docReady, matchesSelector) }) } else if (typeof exports == 'object') { module.exports = factory(window, require('doc-ready'), require('desandro-matches-selector')) } else { window.fizzyUIUtils = factory(window, window.docReady, window.matchesSelector) } }(window, function factory(window, docReady, matchesSelector) { - var utils = {}; utils.extend = function (a, b) { - for (var prop in b) { a[prop] = b[prop] } - return a - }; utils.modulo = function (num, div) { return ((num % div) + div) % div }; var objToString = Object.prototype.toString; utils.isArray = function (obj) { return objToString.call(obj) == '[object Array]' }; utils.makeArray = function (obj) { - var ary = []; if (utils.isArray(obj)) { ary = obj } else if (obj && typeof obj.length == 'number') { for (var i = 0, len = obj.length; i < len; i++) { ary.push(obj[i]) } } else { ary.push(obj) } - return ary - }; utils.indexOf = Array.prototype.indexOf ? function (ary, obj) { return ary.indexOf(obj) } : function (ary, obj) { - for (var i = 0, len = ary.length; i < len; i++) { if (ary[i] === obj) { return i } } - return -1 - }; utils.removeFrom = function (ary, obj) { var index = utils.indexOf(ary, obj); if (index != -1) { ary.splice(index, 1) } }; utils.isElement = (typeof HTMLElement == 'function' || typeof HTMLElement == 'object') ? function isElementDOM2(obj) { return obj instanceof HTMLElement } : function isElementQuirky(obj) { return obj && typeof obj == 'object' && obj.nodeType == 1 && typeof obj.nodeName == 'string' }; utils.setText = (function () { - var setTextProperty; function setText(elem, text) { setTextProperty = setTextProperty || (document.documentElement.textContent !== undefined ? 'textContent' : 'innerText'); elem[setTextProperty] = text } - return setText - })(); utils.getParent = function (elem, selector) { while (elem != document.body) { elem = elem.parentNode; if (matchesSelector(elem, selector)) { return elem } } }; utils.getQueryElement = function (elem) { - if (typeof elem == 'string') { return document.querySelector(elem) } - return elem - }; utils.handleEvent = function (event) { var method = 'on' + event.type; if (this[method]) { this[method](event) } }; utils.filterFindElements = function (elems, selector) { - elems = utils.makeArray(elems); var ffElems = []; for (var i = 0, len = elems.length; i < len; i++) { - var elem = elems[i]; if (!utils.isElement(elem)) { continue } - if (selector) { - if (matchesSelector(elem, selector)) { ffElems.push(elem) } - var childElems = elem.querySelectorAll(selector); for (var j = 0, jLen = childElems.length; j < jLen; j++) { ffElems.push(childElems[j]) } - } else { ffElems.push(elem) } - } - return ffElems - }; utils.debounceMethod = function (_class, methodName, threshold) { - var method = _class.prototype[methodName]; var timeoutName = methodName + 'Timeout'; _class.prototype[methodName] = function () { - var timeout = this[timeoutName]; if (timeout) { clearTimeout(timeout) } - var args = arguments; var _this = this; this[timeoutName] = setTimeout(function () { method.apply(_this, args); delete _this[timeoutName] }, threshold || 100) - } - }; utils.toDashed = function (str) { return str.replace(/(.)([A-Z])/g, function (match, $1, $2) { return $1 + '-' + $2 }).toLowerCase() }; var console = window.console; utils.htmlInit = function (WidgetClass, namespace) { - docReady(function () { - var dashedNamespace = utils.toDashed(namespace); var elems = document.querySelectorAll('.js-' + dashedNamespace); var dataAttr = 'data-' + dashedNamespace + '-options'; for (var i = 0, len = elems.length; i < len; i++) { - var elem = elems[i]; var attr = elem.getAttribute(dataAttr); var options; try { options = attr && JSON.parse(attr) } catch (error) { - if (console) { console.error('Error parsing ' + dataAttr + ' on ' + elem.nodeName.toLowerCase() + (elem.id ? '#' + elem.id : '') + ': ' + error) } - continue - } - var instance = new WidgetClass(elem, options); var jQuery = window.jQuery; if (jQuery) { jQuery.data(elem, namespace, instance) } - } - }) - }; return utils -})); -(function (window, factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - define('outlayer/item', - ['eventEmitter/EventEmitter', 'get-size/get-size', - 'get-style-property/get-style-property', 'fizzy-ui-utils/utils'], - function (EventEmitter, getSize, getStyleProperty, utils) { - return factory(window, EventEmitter, getSize, getStyleProperty, utils) - } - ) - } - else if (typeof exports === 'object') { - module.exports = factory(window, require('wolfy87-eventemitter'), require('get-size'), require('desandro-get-style-property'), require('fizzy-ui-utils')) - } - else { - window.Outlayer = {}; - window.Outlayer.Item = factory(window, window.EventEmitter, window.getSize, window.getStyleProperty, window.fizzyUIUtils) - } -}(window, function factory(window, EventEmitter, getSize, getStyleProperty, utils) { - 'use strict'; - var getComputedStyle = window.getComputedStyle; - var getStyle = getComputedStyle ? function (elem) { return getComputedStyle(elem, null) } : function (elem) { return elem.currentStyle }; function isEmptyObj(obj) { - for (var prop in obj) { - return false - } - prop = null; - return true; - } - var transitionProperty = getStyleProperty('transition'); - var transformProperty = getStyleProperty('transform'); - var supportsCSS3 = transitionProperty && transformProperty; - var is3d = !!getStyleProperty('perspective'); - var transitionEndEvent = { WebkitTransition: 'webkitTransitionEnd', - MozTransition: 'transitionend', - OTransition: 'otransitionend', - transition: 'transitionend' }[transitionProperty]; - var prefixableProperties = ['transform', 'transition', 'transitionDuration', 'transitionProperty']; - var vendorProperties = (function () { - var cache = {}; - for (var i = 0, len = prefixableProperties.length; i < len; i++) { - var prop = prefixableProperties[i]; - var supportedProp = getStyleProperty(prop); - if (supportedProp && supportedProp !== prop) { cache[prop] = supportedProp } - } - return cache - })(); - function Item(element, layout) { - if (!element) { return } - this.element = element; this.layout = layout; this.position = { x: 0, y: 0 }; this._create() - } - utils.extend(Item.prototype, EventEmitter.prototype); - Item.prototype._create = function () { - this._transn = { ingProperties: {}, clean: {}, onEnd: {} }; - var el = $(this.element); - if(el.hasClass("row")){ - el.css("width","100%"); - }else if(el.filter("[class*='col-md']").length == 0){ - el.css("width","100%"); - } - this.css({ position: 'absolute' }) - }; - Item.prototype.handleEvent = function (event) { - var method = 'on' + event.type; - if (this[method]) { - this[method](event) - } - }; - Item.prototype.getSize = function () { - this.size = getSize(this.element) - }; - Item.prototype.css = function (style) { - var elemStyle = this.element.style; - for (var prop in style) { - var supportedProp = vendorProperties[prop] || prop; elemStyle[supportedProp] = style[prop] - } - }; - Item.prototype.getPosition = function () { - var style = getStyle(this.element); - var layoutOptions = this.layout.options; - var isOriginLeft = layoutOptions.isOriginLeft; - var isOriginTop = layoutOptions.isOriginTop; - var xValue = style[isOriginLeft ? 'left' : 'right']; - var yValue = style[isOriginTop ? 'top' : 'bottom']; - var layoutSize = this.layout.size; - var x = xValue.indexOf('%') != -1 ? (parseFloat(xValue) / 100) * layoutSize.width : parseInt(xValue, 10); - var y = yValue.indexOf('%') != -1 ? (parseFloat(yValue) / 100) * layoutSize.height : parseInt(yValue, 10); - x = isNaN(x) ? 0 : x; y = isNaN(y) ? 0 : y; - x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight; - y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom; - this.position.x = x; this.position.y = y - }; - Item.prototype.layoutPosition = function () { - var layoutSize = this.layout.size; - var layoutOptions = this.layout.options; - var style = {}; - var xPadding = layoutOptions.isOriginLeft ? 'paddingLeft' : 'paddingRight'; - var xProperty = layoutOptions.isOriginLeft ? 'left' : 'right'; - var xResetProperty = layoutOptions.isOriginLeft ? 'right' : 'left'; - var x = this.position.x + layoutSize[xPadding]; style[xProperty] = this.getXValue(x); - style[xResetProperty] = ''; - var yPadding = layoutOptions.isOriginTop ? 'paddingTop' : 'paddingBottom'; - var yProperty = layoutOptions.isOriginTop ? 'top' : 'bottom'; - var yResetProperty = layoutOptions.isOriginTop ? 'bottom' : 'top'; - var y = this.position.y + layoutSize[yPadding]; style[yProperty] = this.getYValue(y); - style[yResetProperty] = ''; - this.css(style); - this.emitEvent('layout', [this]) - }; - Item.prototype.getXValue = function (x) { - var layoutOptions = this.layout.options; - return layoutOptions.percentPosition && !layoutOptions.isHorizontal ? ((x / this.layout.size.width) * 100) + '%' : x + 'px' }; Item.prototype.getYValue = function (y) { var layoutOptions = this.layout.options; return layoutOptions.percentPosition && layoutOptions.isHorizontal ? ((y / this.layout.size.height) * 100) + '%' : y + 'px' }; Item.prototype._transitionTo = function (x, y) { - this.getPosition(); - var curX = this.position.x; - var curY = this.position.y; var compareX = parseInt(x, 10); - var compareY = parseInt(y, 10); - var didNotMove = compareX === this.position.x && compareY === this.position.y; - this.setPosition(x, y); - if (didNotMove && !this.isTransitioning) { - this.layoutPosition(); - return - } - var transX = x - curX; - var transY = y - curY; - var transitionStyle = {}; - transitionStyle.transform = this.getTranslate(transX, transY); - this.transition({ to: transitionStyle, onTransitionEnd: { transform: this.layoutPosition }, isCleaning: true }) - }; - Item.prototype.getTranslate = function (x, y) { - var layoutOptions = this.layout.options; - x = layoutOptions.isOriginLeft ? x : -x; - y = layoutOptions.isOriginTop ? y : -y; - if (is3d) { - return 'translate3d(' + x + 'px, ' + y + 'px, 0)'; - } - return 'translate(' + x + 'px, ' + y + 'px)'; - }; - Item.prototype.goTo = function (x, y) { - this.setPosition(x, y); - this.layoutPosition(); - }; - Item.prototype.moveTo = supportsCSS3 ? Item.prototype._transitionTo : Item.prototype.goTo; - Item.prototype.setPosition = function (x, y) { - this.position.x = parseInt(x, 10); - this.position.y = parseInt(y, 10) - }; - Item.prototype._nonTransition = function (args) { - this.css(args.to); - if (args.isCleaning) { - this._removeStyles(args.to) - } - for (var prop in args.onTransitionEnd) { - args.onTransitionEnd[prop].call(this) - } - }; - Item.prototype._transition = function (args) { - if (!parseFloat(this.layout.options.transitionDuration)) { - this._nonTransition(args); return - } - var _transition = this._transn; - for (var prop in args.onTransitionEnd) { - _transition.onEnd[prop] = args.onTransitionEnd[prop]; - } - for (prop in args.to) { - _transition.ingProperties[prop] = true; - if (args.isCleaning) { - _transition.clean[prop] = true - } - } - if (args.from) { - this.css(args.from); - var h = this.element.offsetHeight; - h = null - } - this.enableTransition(args.to); - this.css(args.to); - this.isTransitioning = true; - }; - function toDashedAll(str) { - return str.replace(/([A-Z])/g, function ($1) { - return '-' + $1.toLowerCase() - }) - } - var transitionProps = 'opacity,' + toDashedAll(vendorProperties.transform || 'transform'); - Item.prototype.enableTransition = function () { - if (this.isTransitioning) { - return - } - this.css({ transitionProperty: transitionProps, - transitionDuration: this.layout.options.transitionDuration - }); - this.element.addEventListener(transitionEndEvent, this, false); - }; - Item.prototype.transition = Item.prototype[transitionProperty ? '_transition' : '_nonTransition']; - Item.prototype.onwebkitTransitionEnd = function (event) { - this.ontransitionend(event) - }; - Item.prototype.onotransitionend = function (event) { - this.ontransitionend(event) - }; - var dashedVendorProperties = { '-webkit-transform': 'transform', - '-moz-transform': 'transform', - '-o-transform': 'transform' }; - Item.prototype.ontransitionend = function (event) { - if (event.target !== this.element) { - return - } - var _transition = this._transn; - var propertyName = dashedVendorProperties[event.propertyName] || event.propertyName; - delete _transition.ingProperties[propertyName]; - if (isEmptyObj(_transition.ingProperties)) { - this.disableTransition() - } - if (propertyName in _transition.clean) { - this.element.style[event.propertyName] = ''; - delete _transition.clean[propertyName] - } - if (propertyName in _transition.onEnd) { - var onTransitionEnd = _transition.onEnd[propertyName]; - onTransitionEnd.call(this); - delete _transition.onEnd[propertyName] - } - this.emitEvent('transitionEnd', [this]) - }; - Item.prototype.disableTransition = function () { - this.removeTransitionStyles(); - this.element.removeEventListener(transitionEndEvent, this, false); - this.isTransitioning = false }; - Item.prototype._removeStyles = function (style) { - var cleanStyle = {}; - for (var prop in style) { - cleanStyle[prop] = ''; - } - this.css(cleanStyle); - }; - var cleanTransitionStyle = { transitionProperty: '', transitionDuration: '' }; - Item.prototype.removeTransitionStyles = function () { this.css(cleanTransitionStyle) }; - Item.prototype.removeElem = function () { - this.element.parentNode.removeChild(this.element); this.css({ display: '' }); - this.emitEvent('remove', [this]) - }; - Item.prototype.remove = function () { - if (!transitionProperty || !parseFloat(this.layout.options.transitionDuration)) { - this.removeElem(); return - } - var _this = this; this.once('transitionEnd', function () { _this.removeElem() }); - this.hide() - }; - Item.prototype.reveal = function () { - delete this.isHidden; - this.css({ display: '' }); - var options = this.layout.options; var onTransitionEnd = {}; - var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle'); - onTransitionEnd[transitionEndProperty] = this.onRevealTransitionEnd; - this.transition({ from: options.hiddenStyle, to: options.visibleStyle, - isCleaning: true, onTransitionEnd: onTransitionEnd - }) - }; - Item.prototype.onRevealTransitionEnd = function () { - if (!this.isHidden) { - this.emitEvent('reveal') - } - }; - Item.prototype.getHideRevealTransitionEndProperty = function (styleProperty) { - var optionStyle = this.layout.options[styleProperty]; - if (optionStyle.opacity) { - return 'opacity' - } - for (var prop in optionStyle) { - return prop - } - }; - Item.prototype.hide = function () { - this.isHidden = true; - this.css({ display: '' }); - var options = this.layout.options; - var onTransitionEnd = {}; - var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle'); - onTransitionEnd[transitionEndProperty] = this.onHideTransitionEnd; - this.transition({ from: options.visibleStyle, to: options.hiddenStyle, isCleaning: true, onTransitionEnd: onTransitionEnd }) - }; - Item.prototype.onHideTransitionEnd = function () { - if (this.isHidden) { this.css({ display: 'none' }); this.emitEvent('hide') } - }; - Item.prototype.destroy = function () { - this.css({ position: '', left: '', right: '', top: '', bottom: '', transition: '', transform: '' }) - }; - return Item; -})); (function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define('outlayer/outlayer', ['eventie/eventie', 'eventEmitter/EventEmitter', 'get-size/get-size', 'fizzy-ui-utils/utils', './item'], function (eventie, EventEmitter, getSize, utils, Item) { return factory(window, eventie, EventEmitter, getSize, utils, Item) }) } else if (typeof exports == 'object') { module.exports = factory(window, require('eventie'), require('wolfy87-eventemitter'), require('get-size'), require('fizzy-ui-utils'), require('./item')) } else { window.Outlayer = factory(window, window.eventie, window.EventEmitter, window.getSize, window.fizzyUIUtils, window.Outlayer.Item) } }(window, function factory(window, eventie, EventEmitter, getSize, utils, Item) { - 'use strict'; var console = window.console; var jQuery = window.jQuery; var noop = function () { }; var GUID = 0; var instances = {}; function Outlayer(element, options) { - var queryElement = utils.getQueryElement(element); if (!queryElement) { - if (console) { console.error('Bad element for ' + this.constructor.namespace + ': ' + (queryElement || element)) } - return - } - this.element = queryElement; if (jQuery) { this.$element = jQuery(this.element) } - this.options = utils.extend({}, this.constructor.defaults); this.option(options); var id = ++GUID; this.element.outlayerGUID = id; instances[id] = this; this._create(); if (this.options.isInitLayout) { this.layout() } - } - Outlayer.namespace = 'outlayer'; Outlayer.Item = Item; Outlayer.defaults = { containerStyle: { position: 'relative' }, isInitLayout: true, isOriginLeft: true, isOriginTop: true, isResizeBound: true, isResizingContainer: true, transitionDuration: '0.4s', hiddenStyle: { opacity: 0, transform: 'scale(0.001)' }, visibleStyle: { opacity: 1, transform: 'scale(1)' } }; utils.extend(Outlayer.prototype, EventEmitter.prototype); Outlayer.prototype.option = function (opts) { utils.extend(this.options, opts) }; Outlayer.prototype._create = function () { this.reloadItems(); this.stamps = []; this.stamp(this.options.stamp); utils.extend(this.element.style, this.options.containerStyle); if (this.options.isResizeBound) { this.bindResize() } }; Outlayer.prototype.reloadItems = function () { this.items = this._itemize(this.element.children) }; Outlayer.prototype._itemize = function (elems) { - var itemElems = this._filterFindItemElements(elems); var Item = this.constructor.Item; var items = []; for (var i = 0, len = itemElems.length; i < len; i++) { var elem = itemElems[i]; var item = new Item(elem, this); items.push(item) } - return items - }; Outlayer.prototype._filterFindItemElements = function (elems) { return utils.filterFindElements(elems, this.options.itemSelector) }; Outlayer.prototype.getItemElements = function () { - var elems = []; for (var i = 0, len = this.items.length; i < len; i++) { elems.push(this.items[i].element) } - return elems - }; Outlayer.prototype.layout = function () { this._resetLayout(); this._manageStamps(); var isInstant = this.options.isLayoutInstant !== undefined ? this.options.isLayoutInstant : !this._isLayoutInited; this.layoutItems(this.items, isInstant); this._isLayoutInited = true }; Outlayer.prototype._init = Outlayer.prototype.layout; Outlayer.prototype._resetLayout = function () { this.getSize() }; Outlayer.prototype.getSize = function () { this.size = getSize(this.element) }; Outlayer.prototype._getMeasurement = function (measurement, size) { - var option = this.options[measurement]; var elem; if (!option) { this[measurement] = 0 } else { - if (typeof option === 'string') { elem = this.element.querySelector(option) } else if (utils.isElement(option)) { elem = option } - this[measurement] = elem ? getSize(elem)[size] : option - } - }; Outlayer.prototype.layoutItems = function (items, isInstant) { items = this._getItemsForLayout(items); this._layoutItems(items, isInstant); this._postLayout() }; Outlayer.prototype._getItemsForLayout = function (items) { - var layoutItems = []; for (var i = 0, len = items.length; i < len; i++) { var item = items[i]; if (!item.isIgnored) { layoutItems.push(item) } } - return layoutItems - }; Outlayer.prototype._layoutItems = function (items, isInstant) { - this._emitCompleteOnItems('layout', items); if (!items || !items.length) { return } - var queue = []; for (var i = 0, len = items.length; i < len; i++) { var item = items[i]; var position = this._getItemLayoutPosition(item); position.item = item; position.isInstant = isInstant || item.isLayoutInstant; queue.push(position) } - this._processLayoutQueue(queue) - }; Outlayer.prototype._getItemLayoutPosition = function () { return { x: 0, y: 0 } }; Outlayer.prototype._processLayoutQueue = function (queue) { for (var i = 0, len = queue.length; i < len; i++) { var obj = queue[i]; this._positionItem(obj.item, obj.x, obj.y, obj.isInstant) } }; Outlayer.prototype._positionItem = function (item, x, y, isInstant) { if (isInstant) { item.goTo(x, y) } else { item.moveTo(x, y) } }; Outlayer.prototype._postLayout = function () { this.resizeContainer() }; Outlayer.prototype.resizeContainer = function () { - if (!this.options.isResizingContainer) { return } - var size = this._getContainerSize(); if (size) { this._setContainerMeasure(size.width, true); this._setContainerMeasure(size.height, false) } - }; Outlayer.prototype._getContainerSize = noop; Outlayer.prototype._setContainerMeasure = function (measure, isWidth) { - if (measure === undefined) { return } - var elemSize = this.size; if (elemSize.isBorderBox) { measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight + elemSize.borderLeftWidth + elemSize.borderRightWidth : elemSize.paddingBottom + elemSize.paddingTop + elemSize.borderTopWidth + elemSize.borderBottomWidth } - measure = Math.max(measure, 0); this.element.style[isWidth ? 'width' : 'height'] = measure + 'px' - }; Outlayer.prototype._emitCompleteOnItems = function (eventName, items) { - var _this = this; function onComplete() { _this.dispatchEvent(eventName + 'Complete', null, [items]) } - var count = items.length; if (!items || !count) { onComplete(); return } - var doneCount = 0; function tick() { doneCount++; if (doneCount === count) { onComplete() } } - for (var i = 0, len = items.length; i < len; i++) { var item = items[i]; item.once(eventName, tick) } - }; Outlayer.prototype.dispatchEvent = function (type, event, args) { var emitArgs = event ? [event].concat(args) : args; this.emitEvent(type, emitArgs); if (jQuery) { this.$element = this.$element || jQuery(this.element); if (event) { var $event = jQuery.Event(event); $event.type = type; this.$element.trigger($event, args) } else { this.$element.trigger(type, args) } } }; Outlayer.prototype.ignore = function (elem) { var item = this.getItem(elem); if (item) { item.isIgnored = true } }; Outlayer.prototype.unignore = function (elem) { var item = this.getItem(elem); if (item) { delete item.isIgnored } }; Outlayer.prototype.stamp = function (elems) { - elems = this._find(elems); if (!elems) { return } - this.stamps = this.stamps.concat(elems); for (var i = 0, len = elems.length; i < len; i++) { var elem = elems[i]; this.ignore(elem) } - }; Outlayer.prototype.unstamp = function (elems) { - elems = this._find(elems); if (!elems) { return } - for (var i = 0, len = elems.length; i < len; i++) { var elem = elems[i]; utils.removeFrom(this.stamps, elem); this.unignore(elem) } - }; Outlayer.prototype._find = function (elems) { - if (!elems) { return } - if (typeof elems === 'string') { elems = this.element.querySelectorAll(elems) } - elems = utils.makeArray(elems); return elems - }; Outlayer.prototype._manageStamps = function () { - if (!this.stamps || !this.stamps.length) { return } - this._getBoundingRect(); for (var i = 0, len = this.stamps.length; i < len; i++) { var stamp = this.stamps[i]; this._manageStamp(stamp) } - }; - Outlayer.prototype._getBoundingRect = function () { var boundingRect = this.element.getBoundingClientRect(); var size = this.size; this._boundingRect = { left: boundingRect.left + size.paddingLeft + size.borderLeftWidth, top: boundingRect.top + size.paddingTop + size.borderTopWidth, right: boundingRect.right - (size.paddingRight + size.borderRightWidth), bottom: boundingRect.bottom - (size.paddingBottom + size.borderBottomWidth) } }; Outlayer.prototype._manageStamp = noop; Outlayer.prototype._getElementOffset = function (elem) { var boundingRect = elem.getBoundingClientRect(); var thisRect = this._boundingRect; var size = getSize(elem); var offset = { left: boundingRect.left - thisRect.left - size.marginLeft, top: boundingRect.top - thisRect.top - size.marginTop, right: thisRect.right - boundingRect.right - size.marginRight, bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom }; return offset }; Outlayer.prototype.handleEvent = function (event) { var method = 'on' + event.type; if (this[method]) { this[method](event) } }; - Outlayer.prototype.bindResize = function () { - if (this.isResizeBound) { return } - eventie.bind(window, 'resize', this); this.isResizeBound = true - }; Outlayer.prototype.unbindResize = function () { - if (this.isResizeBound) { eventie.unbind(window, 'resize', this) } - this.isResizeBound = false - }; Outlayer.prototype.onresize = function () { - if (this.resizeTimeout) { clearTimeout(this.resizeTimeout) } - var _this = this; function delayed() { _this.resize(); delete _this.resizeTimeout } - this.resizeTimeout = setTimeout(delayed, 100) - }; Outlayer.prototype.resize = function () { - if (!this.isResizeBound || !this.needsResizeLayout()) { return } - this.layout() - }; Outlayer.prototype.needsResizeLayout = function () { var size = getSize(this.element); var hasSizes = this.size && size; return hasSizes && size.innerWidth !== this.size.innerWidth }; Outlayer.prototype.addItems = function (elems) { - var items = this._itemize(elems); if (items.length) { this.items = this.items.concat(items) } - return items - }; Outlayer.prototype.appended = function (elems) { - var items = this.addItems(elems); if (!items.length) { return } - this.layoutItems(items, true); this.reveal(items) - }; Outlayer.prototype.prepended = function (elems) { - var items = this._itemize(elems); if (!items.length) { return } - var previousItems = this.items.slice(0); this.items = items.concat(previousItems); this._resetLayout(); this._manageStamps(); this.layoutItems(items, true); this.reveal(items); this.layoutItems(previousItems) - }; Outlayer.prototype.reveal = function (items) { this._emitCompleteOnItems('reveal', items); var len = items && items.length; for (var i = 0; len && i < len; i++) { var item = items[i]; item.reveal() } }; Outlayer.prototype.hide = function (items) { this._emitCompleteOnItems('hide', items); var len = items && items.length; for (var i = 0; len && i < len; i++) { var item = items[i]; item.hide() } }; Outlayer.prototype.revealItemElements = function (elems) { var items = this.getItems(elems); this.reveal(items) }; Outlayer.prototype.hideItemElements = function (elems) { var items = this.getItems(elems); this.hide(items) }; Outlayer.prototype.getItem = function (elem) { for (var i = 0, len = this.items.length; i < len; i++) { var item = this.items[i]; if (item.element === elem) { return item } } }; Outlayer.prototype.getItems = function (elems) { - elems = utils.makeArray(elems); var items = []; for (var i = 0, len = elems.length; i < len; i++) { var elem = elems[i]; var item = this.getItem(elem); if (item) { items.push(item) } } - return items - }; Outlayer.prototype.remove = function (elems) { - var removeItems = this.getItems(elems); this._emitCompleteOnItems('remove', removeItems); if (!removeItems || !removeItems.length) { return } - for (var i = 0, len = removeItems.length; i < len; i++) { var item = removeItems[i]; item.remove(); utils.removeFrom(this.items, item) } - }; Outlayer.prototype.destroy = function () { - var style = this.element.style; style.height = ''; style.position = ''; style.width = ''; for (var i = 0, len = this.items.length; i < len; i++) { var item = this.items[i]; item.destroy() } - this.unbindResize(); var id = this.element.outlayerGUID; delete instances[id]; delete this.element.outlayerGUID; if (jQuery) { jQuery.removeData(this.element, this.constructor.namespace) } - }; Outlayer.data = function (elem) { elem = utils.getQueryElement(elem); var id = elem && elem.outlayerGUID; return id && instances[id] }; - Outlayer.create = function (namespace, options) { - function Layout() { - Outlayer.apply(this, arguments) - } - if (Object.create) { - Layout.prototype = Object.create(Outlayer.prototype) - } else { - utils.extend(Layout.prototype, Outlayer.prototype) - } - Layout.prototype.constructor = Layout; - Layout.defaults = utils.extend({}, Outlayer.defaults); - utils.extend(Layout.defaults, options); Layout.prototype.settings = {}; - Layout.namespace = namespace; - Layout.data = Outlayer.data; - Layout.Item = function LayoutItem() { - Item.apply(this, arguments) - }; - Layout.Item.prototype = new Item(); - utils.htmlInit(Layout, namespace); - if (jQuery && jQuery.bridget) { - jQuery.bridget(namespace, Layout) - } - return Layout - }; - Outlayer.Item = Item; - return Outlayer -})); (function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define('isotope/js/item', ['outlayer/outlayer'], factory) } else if (typeof exports == 'object') { module.exports = factory(require('outlayer')) } else { window.Isotope = window.Isotope || {}; window.Isotope.Item = factory(window.Outlayer) } }(window, function factory(Outlayer) { - 'use strict'; function Item() { Outlayer.Item.apply(this, arguments) } - Item.prototype = new Outlayer.Item(); Item.prototype._create = function () { this.id = this.layout.itemGUID++; Outlayer.Item.prototype._create.call(this); this.sortData = {} }; Item.prototype.updateSortData = function () { - if (this.isIgnored) { return } - this.sortData.id = this.id; this.sortData['original-order'] = this.id; this.sortData.random = Math.random(); var getSortData = this.layout.options.getSortData; var sorters = this.layout._sorters; for (var key in getSortData) { var sorter = sorters[key]; this.sortData[key] = sorter(this.element, this) } - }; var _destroy = Item.prototype.destroy; Item.prototype.destroy = function () { _destroy.apply(this, arguments); this.css({ display: '' }) }; return Item -})); (function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define('isotope/js/layout-mode', ['get-size/get-size', 'outlayer/outlayer'], factory) } else if (typeof exports == 'object') { module.exports = factory(require('get-size'), require('outlayer')) } else { window.Isotope = window.Isotope || {}; window.Isotope.LayoutMode = factory(window.getSize, window.Outlayer) } }(window, function factory(getSize, Outlayer) { - 'use strict'; function LayoutMode(isotope) { this.isotope = isotope; if (isotope) { this.options = isotope.options[this.namespace]; this.element = isotope.element; this.items = isotope.filteredItems; this.size = isotope.size } } (function () { - var facadeMethods = ['_resetLayout', '_getItemLayoutPosition', '_manageStamp', '_getContainerSize', '_getElementOffset', 'needsResizeLayout']; for (var i = 0, len = facadeMethods.length; i < len; i++) { var methodName = facadeMethods[i]; LayoutMode.prototype[methodName] = getOutlayerMethod(methodName) } - function getOutlayerMethod(methodName) { return function () { return Outlayer.prototype[methodName].apply(this.isotope, arguments) } } - })(); LayoutMode.prototype.needsVerticalResizeLayout = function () { var size = getSize(this.isotope.element); var hasSizes = this.isotope.size && size; return hasSizes && size.innerHeight != this.isotope.size.innerHeight }; LayoutMode.prototype._getMeasurement = function () { this.isotope._getMeasurement.apply(this, arguments) }; LayoutMode.prototype.getColumnWidth = function () { this.getSegmentSize('column', 'Width') }; LayoutMode.prototype.getRowHeight = function () { this.getSegmentSize('row', 'Height') }; LayoutMode.prototype.getSegmentSize = function (segment, size) { - var segmentName = segment + size; var outerSize = 'outer' + size; this._getMeasurement(segmentName, outerSize); if (this[segmentName]) { return } - var firstItemSize = this.getFirstItemSize(); this[segmentName] = firstItemSize && firstItemSize[outerSize] || this.isotope.size['inner' + size] - }; LayoutMode.prototype.getFirstItemSize = function () { var firstItem = this.isotope.filteredItems[0]; return firstItem && firstItem.element && getSize(firstItem.element) }; LayoutMode.prototype.layout = function () { this.isotope.layout.apply(this.isotope, arguments) }; LayoutMode.prototype.getSize = function () { this.isotope.getSize(); this.size = this.isotope.size }; LayoutMode.modes = {}; LayoutMode.create = function (namespace, options) { - function Mode() { LayoutMode.apply(this, arguments) } - Mode.prototype = new LayoutMode(); if (options) { Mode.options = options } - Mode.prototype.namespace = namespace; LayoutMode.modes[namespace] = Mode; return Mode - }; return LayoutMode -})); (function (window, factory) { 'use strict'; if (typeof define === 'function' && define.amd) { define('masonry/masonry', ['outlayer/outlayer', 'get-size/get-size', 'fizzy-ui-utils/utils'], factory) } else if (typeof exports === 'object') { module.exports = factory(require('outlayer'), require('get-size'), require('fizzy-ui-utils')) } else { window.Masonry = factory(window.Outlayer, window.getSize, window.fizzyUIUtils) } }(window, function factory(Outlayer, getSize, utils) { - var Masonry = Outlayer.create('masonry'); Masonry.prototype._resetLayout = function () { - this.getSize(); this._getMeasurement('columnWidth', 'outerWidth'); this._getMeasurement('gutter', 'outerWidth'); this.measureColumns(); var i = this.cols; this.colYs = []; while (i--) { this.colYs.push(0) } - this.maxY = 0 - }; Masonry.prototype.measureColumns = function () { - this.getContainerWidth(); if (!this.columnWidth) { var firstItem = this.items[0]; var firstItemElem = firstItem && firstItem.element; this.columnWidth = firstItemElem && getSize(firstItemElem).outerWidth || this.containerWidth } - var columnWidth = this.columnWidth += this.gutter; var containerWidth = this.containerWidth + this.gutter; var cols = containerWidth / columnWidth; var excess = columnWidth - containerWidth % columnWidth; var mathMethod = excess && excess < 1 ? 'round' : 'floor'; cols = Math[mathMethod](cols); this.cols = Math.max(cols, 1) - }; Masonry.prototype.getContainerWidth = function () { var container = this.options.isFitWidth ? this.element.parentNode : this.element; var size = getSize(container); this.containerWidth = size && size.innerWidth }; Masonry.prototype._getItemLayoutPosition = function (item) { - item.getSize(); var remainder = item.size.outerWidth % this.columnWidth; var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil'; var colSpan = Math[mathMethod](item.size.outerWidth / this.columnWidth); colSpan = Math.min(colSpan, this.cols); var colGroup = this._getColGroup(colSpan); var minimumY = Math.min.apply(Math, colGroup); var shortColIndex = utils.indexOf(colGroup, minimumY); var position = { x: this.columnWidth * shortColIndex, y: minimumY }; var setHeight = minimumY + item.size.outerHeight; var setSpan = this.cols + 1 - colGroup.length; for (var i = 0; i < setSpan; i++) { this.colYs[shortColIndex + i] = setHeight } - return position - }; Masonry.prototype._getColGroup = function (colSpan) { - if (colSpan < 2) { return this.colYs } - var colGroup = []; var groupCount = this.cols + 1 - colSpan; for (var i = 0; i < groupCount; i++) { var groupColYs = this.colYs.slice(i, i + colSpan); colGroup[i] = Math.max.apply(Math, groupColYs) } - return colGroup - }; Masonry.prototype._manageStamp = function (stamp) { var stampSize = getSize(stamp); var offset = this._getElementOffset(stamp); var firstX = this.options.isOriginLeft ? offset.left : offset.right; var lastX = firstX + stampSize.outerWidth; var firstCol = Math.floor(firstX / this.columnWidth); firstCol = Math.max(0, firstCol); var lastCol = Math.floor(lastX / this.columnWidth); lastCol -= lastX % this.columnWidth ? 0 : 1; lastCol = Math.min(this.cols - 1, lastCol); var stampMaxY = (this.options.isOriginTop ? offset.top : offset.bottom) + stampSize.outerHeight; for (var i = firstCol; i <= lastCol; i++) { this.colYs[i] = Math.max(stampMaxY, this.colYs[i]) } }; Masonry.prototype._getContainerSize = function () { - this.maxY = Math.max.apply(Math, this.colYs); var size = { height: this.maxY }; if (this.options.isFitWidth) { size.width = this._getContainerFitWidth() } - return size - }; Masonry.prototype._getContainerFitWidth = function () { - var unusedCols = 0; var i = this.cols; while (--i) { - if (this.colYs[i] !== 0) { break } - unusedCols++ - } - return (this.cols - unusedCols) * this.columnWidth - this.gutter - }; Masonry.prototype.needsResizeLayout = function () { var previousWidth = this.containerWidth; this.getContainerWidth(); return previousWidth !== this.containerWidth }; return Masonry -})); (function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define('isotope/js/layout-modes/masonry', ['../layout-mode', 'masonry/masonry'], factory) } else if (typeof exports == 'object') { module.exports = factory(require('../layout-mode'), require('masonry-layout')) } else { factory(window.Isotope.LayoutMode, window.Masonry) } }(window, function factory(LayoutMode, Masonry) { - 'use strict'; function extend(a, b) { - for (var prop in b) { a[prop] = b[prop] } - return a - } - var MasonryMode = LayoutMode.create('masonry'); var _getElementOffset = MasonryMode.prototype._getElementOffset; var layout = MasonryMode.prototype.layout; var _getMeasurement = MasonryMode.prototype._getMeasurement; extend(MasonryMode.prototype, Masonry.prototype); MasonryMode.prototype._getElementOffset = _getElementOffset; MasonryMode.prototype.layout = layout; MasonryMode.prototype._getMeasurement = _getMeasurement; var measureColumns = MasonryMode.prototype.measureColumns; MasonryMode.prototype.measureColumns = function () { this.items = this.isotope.filteredItems; measureColumns.call(this) }; var _manageStamp = MasonryMode.prototype._manageStamp; MasonryMode.prototype._manageStamp = function () { this.options.isOriginLeft = this.isotope.options.isOriginLeft; this.options.isOriginTop = this.isotope.options.isOriginTop; _manageStamp.apply(this, arguments) }; return MasonryMode -})); (function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define('isotope/js/layout-modes/fit-rows', ['../layout-mode'], factory) } else if (typeof exports == 'object') { module.exports = factory(require('../layout-mode')) } else { factory(window.Isotope.LayoutMode) } }(window, function factory(LayoutMode) { - 'use strict'; var FitRows = LayoutMode.create('fitRows'); FitRows.prototype._resetLayout = function () { this.x = 0; this.y = 0; this.maxY = 0; this._getMeasurement('gutter', 'outerWidth') }; FitRows.prototype._getItemLayoutPosition = function (item) { - item.getSize(); var itemWidth = item.size.outerWidth + this.gutter; var containerWidth = this.isotope.size.innerWidth + this.gutter; if (this.x !== 0 && itemWidth + this.x > containerWidth) { this.x = 0; this.y = this.maxY } - var position = { x: this.x, y: this.y }; this.maxY = Math.max(this.maxY, this.y + item.size.outerHeight); this.x += itemWidth; return position - }; FitRows.prototype._getContainerSize = function () { return { height: this.maxY } }; return FitRows -})); -(function (window, factory) { - 'use strict'; if (typeof define == 'function' && define.amd) { define('isotope/js/layout-modes/vertical', ['../layout-mode'], factory) } else if (typeof exports == 'object') { module.exports = factory(require('../layout-mode')) } else { factory(window.Isotope.LayoutMode) } }(window, function factory(LayoutMode) { 'use strict'; var Vertical = LayoutMode.create('vertical', { horizontalAlignment: 0 }); Vertical.prototype._resetLayout = function () { this.y = 0 }; Vertical.prototype._getItemLayoutPosition = function (item) { item.getSize(); var x = (this.isotope.size.innerWidth - item.size.outerWidth) * this.options.horizontalAlignment; var y = this.y; this.y += item.size.outerHeight; return { x: x, y: y } }; Vertical.prototype._getContainerSize = function () { return { height: this.y } }; return Vertical })); (function (window, factory) { 'use strict'; if (typeof define == 'function' && define.amd) { define(['outlayer/outlayer', 'get-size/get-size', 'matches-selector/matches-selector', 'fizzy-ui-utils/utils', 'isotope/js/item', 'isotope/js/layout-mode', 'isotope/js/layout-modes/masonry', 'isotope/js/layout-modes/fit-rows', 'isotope/js/layout-modes/vertical'], function (Outlayer, getSize, matchesSelector, utils, Item, LayoutMode) { return factory(window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode) }) } else if (typeof exports == 'object') { module.exports = factory(window, require('outlayer'), require('get-size'), require('desandro-matches-selector'), require('fizzy-ui-utils'), require('./item'), require('./layout-mode'), require('./layout-modes/masonry'), require('./layout-modes/fit-rows'), require('./layout-modes/vertical')) } else { window.Isotope = factory(window, window.Outlayer, window.getSize, window.matchesSelector, window.fizzyUIUtils, window.Isotope.Item, window.Isotope.LayoutMode) } }(window, function factory(window, Outlayer, getSize, matchesSelector, utils, Item, LayoutMode) { - var jQuery = window.jQuery; var trim = String.prototype.trim ? function (str) { return str.trim() } : function (str) { return str.replace(/^\s+|\s+$/g, '') }; var docElem = document.documentElement; var getText = docElem.textContent ? function (elem) { return elem.textContent } : function (elem) { return elem.innerText }; var Isotope = Outlayer.create('isotope', { layoutMode: "masonry", isJQueryFiltering: true, sortAscending: true }); Isotope.Item = Item; Isotope.LayoutMode = LayoutMode; Isotope.prototype._create = function () { this.itemGUID = 0; this._sorters = {}; this._getSorters(); Outlayer.prototype._create.call(this); this.modes = {}; this.filteredItems = this.items; this.sortHistory = ['original-order']; for (var name in LayoutMode.modes) { this._initLayoutMode(name) } }; Isotope.prototype.reloadItems = function () { this.itemGUID = 0; Outlayer.prototype.reloadItems.call(this) }; Isotope.prototype._itemize = function () { - var items = Outlayer.prototype._itemize.apply(this, arguments); for (var i = 0, len = items.length; i < len; i++) { var item = items[i]; item.id = this.itemGUID++ } - this._updateItemsSortData(items); return items - }; Isotope.prototype._initLayoutMode = function (name) { var Mode = LayoutMode.modes[name]; var initialOpts = this.options[name] || {}; this.options[name] = Mode.options ? utils.extend(Mode.options, initialOpts) : initialOpts; this.modes[name] = new Mode(this) }; Isotope.prototype.layout = function () { - if (!this._isLayoutInited && this.options.isInitLayout) { this.arrange(); return } - this._layout() - }; Isotope.prototype._layout = function () { var isInstant = this._getIsInstant(); this._resetLayout(); this._manageStamps(); this.layoutItems(this.filteredItems, isInstant); this._isLayoutInited = true }; Isotope.prototype.arrange = function (opts) { - this.option(opts); this._getIsInstant(); var filtered = this._filter(this.items); this.filteredItems = filtered.matches; var _this = this; function hideReveal() { _this.reveal(filtered.needReveal); _this.hide(filtered.needHide) } - this._bindArrangeComplete(); if (this._isInstant) { this._noTransition(hideReveal) } else { hideReveal() } - this._sort(); this._layout() - }; Isotope.prototype._init = Isotope.prototype.arrange; Isotope.prototype._getIsInstant = function () { var isInstant = this.options.isLayoutInstant !== undefined ? this.options.isLayoutInstant : !this._isLayoutInited; this._isInstant = isInstant; return isInstant }; Isotope.prototype._bindArrangeComplete = function () { - var isLayoutComplete, isHideComplete, isRevealComplete; var _this = this; function arrangeParallelCallback() { if (isLayoutComplete && isHideComplete && isRevealComplete) { _this.dispatchEvent('arrangeComplete', null, [_this.filteredItems]) } } - this.once('layoutComplete', function () { isLayoutComplete = true; arrangeParallelCallback() }); this.once('hideComplete', function () { isHideComplete = true; arrangeParallelCallback() }); this.once('revealComplete', function () { isRevealComplete = true; arrangeParallelCallback() }) - }; Isotope.prototype._filter = function (items) { - var filter = this.options.filter; filter = filter || '*'; var matches = []; var hiddenMatched = []; var visibleUnmatched = []; var test = this._getFilterTest(filter); for (var i = 0, len = items.length; i < len; i++) { - var item = items[i]; if (item.isIgnored) { continue } - var isMatched = test(item); if (isMatched) { matches.push(item) } - if (isMatched && item.isHidden) { hiddenMatched.push(item) } else if (!isMatched && !item.isHidden) { visibleUnmatched.push(item) } - } - return { matches: matches, needReveal: hiddenMatched, needHide: visibleUnmatched } - }; Isotope.prototype._getFilterTest = function (filter) { - if (jQuery && this.options.isJQueryFiltering) { return function (item) { return jQuery(item.element).is(filter) } } - if (typeof filter == 'function') { return function (item) { return filter(item.element) } } - return function (item) { return matchesSelector(item.element, filter) } - }; Isotope.prototype.updateSortData = function (elems) { - var items; if (elems) { elems = utils.makeArray(elems); items = this.getItems(elems) } else { items = this.items } - this._getSorters(); this._updateItemsSortData(items) - }; Isotope.prototype._getSorters = function () { var getSortData = this.options.getSortData; for (var key in getSortData) { var sorter = getSortData[key]; this._sorters[key] = mungeSorter(sorter) } }; Isotope.prototype._updateItemsSortData = function (items) { var len = items && items.length; for (var i = 0; len && i < len; i++) { var item = items[i]; item.updateSortData() } }; var mungeSorter = (function () { - function mungeSorter(sorter) { - if (typeof sorter != 'string') { return sorter } - var args = trim(sorter).split(' '); var query = args[0]; var attrMatch = query.match(/^\[(.+)\]$/); var attr = attrMatch && attrMatch[1]; var getValue = getValueGetter(attr, query); var parser = Isotope.sortDataParsers[args[1]]; sorter = parser ? function (elem) { return elem && parser(getValue(elem)) } : function (elem) { return elem && getValue(elem) }; return sorter - } - function getValueGetter(attr, query) { - var getValue; if (attr) { getValue = function (elem) { return elem.getAttribute(attr) } } else { getValue = function (elem) { var child = elem.querySelector(query); return child && getText(child) } } - return getValue - } - return mungeSorter - })(); Isotope.sortDataParsers = { 'parseInt': function (val) { return parseInt(val, 10) }, 'parseFloat': function (val) { return parseFloat(val) } }; Isotope.prototype._sort = function () { - var sortByOpt = this.options.sortBy; if (!sortByOpt) { return } - var sortBys = [].concat.apply(sortByOpt, this.sortHistory); var itemSorter = getItemSorter(sortBys, this.options.sortAscending); this.filteredItems.sort(itemSorter); if (sortByOpt != this.sortHistory[0]) { this.sortHistory.unshift(sortByOpt) } - }; function getItemSorter(sortBys, sortAsc) { - return function sorter(itemA, itemB) { - for (var i = 0, len = sortBys.length; i < len; i++) { var sortBy = sortBys[i]; var a = itemA.sortData[sortBy]; var b = itemB.sortData[sortBy]; if (a > b || a < b) { var isAscending = sortAsc[sortBy] !== undefined ? sortAsc[sortBy] : sortAsc; var direction = isAscending ? 1 : -1; return (a > b ? 1 : -1) * direction } } - return 0 - } - } - Isotope.prototype._mode = function () { - var layoutMode = this.options.layoutMode; var mode = this.modes[layoutMode]; if (!mode) { throw new Error('No layout mode: ' + layoutMode) } - mode.options = this.options[layoutMode]; return mode - }; - Isotope.prototype._resetLayout = function () { Outlayer.prototype._resetLayout.call(this); this._mode()._resetLayout() }; Isotope.prototype._getItemLayoutPosition = function (item) { return this._mode()._getItemLayoutPosition(item) }; Isotope.prototype._manageStamp = function (stamp) { this._mode()._manageStamp(stamp) }; Isotope.prototype._getContainerSize = function () { return this._mode()._getContainerSize() }; - Isotope.prototype.needsResizeLayout = function () { - return this._mode().needsResizeLayout() - }; - Isotope.prototype.appended = function (elems) { - var items = this.addItems(elems); if (!items.length) { return } - var filteredItems = this._filterRevealAdded(items); this.filteredItems = this.filteredItems.concat(filteredItems) - }; Isotope.prototype.prepended = function (elems) { - var items = this._itemize(elems); if (!items.length) { return } - this._resetLayout(); this._manageStamps(); var filteredItems = this._filterRevealAdded(items); this.layoutItems(this.filteredItems); this.filteredItems = filteredItems.concat(this.filteredItems); this.items = items.concat(this.items) - }; Isotope.prototype._filterRevealAdded = function (items) { var filtered = this._filter(items); this.hide(filtered.needHide); this.reveal(filtered.matches); this.layoutItems(filtered.matches, true); return filtered.matches }; Isotope.prototype.insert = function (elems) { - var items = this.addItems(elems); if (!items.length) { return } - var i, item; var len = items.length; for (i = 0; i < len; i++) { item = items[i]; this.element.appendChild(item.element) } - var filteredInsertItems = this._filter(items).matches; for (i = 0; i < len; i++) { items[i].isLayoutInstant = true } - this.arrange(); for (i = 0; i < len; i++) { delete items[i].isLayoutInstant } - this.reveal(filteredInsertItems) - }; var _remove = Isotope.prototype.remove; Isotope.prototype.remove = function (elems) { - elems = utils.makeArray(elems); var removeItems = this.getItems(elems); _remove.call(this, elems); var len = removeItems && removeItems.length; if (!len) { return } - for (var i = 0; i < len; i++) { var item = removeItems[i]; utils.removeFrom(this.filteredItems, item) } - }; Isotope.prototype.shuffle = function () { - for (var i = 0, len = this.items.length; i < len; i++) { var item = this.items[i]; item.sortData.random = Math.random() } - this.options.sortBy = 'random'; this._sort(); this._layout() - }; Isotope.prototype._noTransition = function (fn) { var transitionDuration = this.options.transitionDuration; this.options.transitionDuration = 0; var returnValue = fn.call(this); this.options.transitionDuration = transitionDuration; return returnValue }; Isotope.prototype.getFilteredItemElements = function () { - var elems = []; for (var i = 0, len = this.filteredItems.length; i < len; i++) { elems.push(this.filteredItems[i].element) } - return elems - }; return Isotope -})); (function (factory) { if (typeof define === "function" && define.amd) { define(['jquery'], function ($) { return factory($) }) } else if (typeof module === "object" && typeof module.exports === "object") { exports = factory(require('jquery')) } else { factory(jQuery) } })(function ($) { - $.easing.jswing = $.easing.swing; $.extend($.easing, { - def: 'easeOutQuad', swing: function (x, t, b, c, d) { return $.easing[$.easing.def](x, t, b, c, d) }, easeInQuad: function (x, t, b, c, d) { return c * (t /= d) * t + b }, easeOutQuad: function (x, t, b, c, d) { return -c * (t /= d) * (t - 2) + b }, easeInOutQuad: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b }, easeInCubic: function (x, t, b, c, d) { return c * (t /= d) * t * t + b }, easeOutCubic: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b }, easeInOutCubic: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b }, easeInQuart: function (x, t, b, c, d) { return c * (t /= d) * t * t * t + b }, easeOutQuart: function (x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b }, easeInOutQuart: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b }, easeInQuint: function (x, t, b, c, d) { return c * (t /= d) * t * t * t * t + b }, easeOutQuint: function (x, t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b }, easeInOutQuint: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b }, easeInSine: function (x, t, b, c, d) { return -c * Math.cos(t / d * (Math.PI / 2)) + c + b }, easeOutSine: function (x, t, b, c, d) { return c * Math.sin(t / d * (Math.PI / 2)) + b }, easeInOutSine: function (x, t, b, c, d) { return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b }, easeInExpo: function (x, t, b, c, d) { return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b }, easeOutExpo: function (x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b }, easeInOutExpo: function (x, t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b }, easeInCirc: function (x, t, b, c, d) { return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b }, easeOutCirc: function (x, t, b, c, d) { return c * Math.sqrt(1 - (t = t / d - 1) * t) + b }, easeInOutCirc: function (x, t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b }, easeInElastic: function (x, t, b, c, d) { - var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4 } - else var s = p / (2 * Math.PI) * Math.asin(c / a); return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b - }, easeOutElastic: function (x, t, b, c, d) { - var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4 } - else var s = p / (2 * Math.PI) * Math.asin(c / a); return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b - }, easeInOutElastic: function (x, t, b, c, d) { - var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < Math.abs(c)) { a = c; var s = p / 4 } - else var s = p / (2 * Math.PI) * Math.asin(c / a); if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b - }, easeInBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b }, easeOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b }, easeInOutBack: function (x, t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b }, easeInBounce: function (x, t, b, c, d) { return c - $.easing.easeOutBounce(x, d - t, 0, c, d) + b }, easeOutBounce: function (x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b } }, easeInOutBounce: function (x, t, b, c, d) { if (t < d / 2) return $.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b; return $.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b } - }) -}); (function ($) { - var types = ['DOMMouseScroll', 'mousewheel']; if ($.event.fixHooks) { for (var i = types.length; i;) { $.event.fixHooks[types[--i]] = $.event.mouseHooks } } - $.event.special.mousewheel = { setup: function () { if (this.addEventListener) { for (var i = types.length; i;) { this.addEventListener(types[--i], handler, false) } } else { this.onmousewheel = handler } }, teardown: function () { if (this.removeEventListener) { for (var i = types.length; i;) { this.removeEventListener(types[--i], handler, false) } } else { this.onmousewheel = null } } }; $.fn.extend({ mousewheel: function (fn) { return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel") }, unmousewheel: function (fn) { return this.unbind("mousewheel", fn) } }); function handler(event) { - var orgEvent = event || window.event, args = [].slice.call(arguments, 1), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; event = $.event.fix(orgEvent); event.type = "mousewheel"; if (orgEvent.wheelDelta) { delta = orgEvent.wheelDelta / 120 } - if (orgEvent.detail) { delta = -orgEvent.detail / 3 } - deltaY = delta; if (orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) { deltaY = 0; deltaX = -1 * delta } - if (orgEvent.wheelDeltaY !== undefined) { deltaY = orgEvent.wheelDeltaY / 120 } - if (orgEvent.wheelDeltaX !== undefined) { deltaX = -1 * orgEvent.wheelDeltaX / 120 } - args.unshift(event, delta, deltaX, deltaY); return ($.event.dispatch || $.event.handle).apply(this, args) - } -})(jQuery); (function (window, $) { - "use strict"; $.SliderPro = { modules: [], addModule: function (name, module) { this.modules.push(name); $.extend(SliderPro.prototype, module) } }; var NS = $.SliderPro.namespace = 'SliderPro'; var SliderPro = function (instance, options) { this.instance = instance; this.$slider = $(this.instance); this.$slides = null; this.$slidesMask = null; this.$slidesContainer = null; this.slides = []; this.slidesOrder = []; this.options = options; this.settings = {}; this.originalSettings = {}; this.originalGotoSlide = null; this.selectedSlideIndex = 0; this.previousSlideIndex = 0; this.middleSlidePosition = 0; this.supportedAnimation = null; this.vendorPrefix = null; this.transitionEvent = null; this.positionProperty = null; this.sizeProperty = null; this.isIE = null; this.slidesPosition = 0; this.slidesSize = 0; this.averageSlideSize = 0; this.slideWidth = 0; this.slideHeight = 0; this.previousSlideWidth = 0; this.previousSlideHeight = 0; this.previousWindowWidth = 0; this.previousWindowHeight = 0; this.allowResize = true; this.uniqueId = new Date().valueOf(); this.breakpoints = []; this.currentBreakpoint = -1; this.shuffledIndexes = []; this._init() }; SliderPro.prototype = { - _init: function () { - var that = this; this.supportedAnimation = SliderProUtils.getSupportedAnimation(); this.vendorPrefix = SliderProUtils.getVendorPrefix(); this.transitionEvent = SliderProUtils.getTransitionEvent(); this.isIE = SliderProUtils.checkIE(); this.$slider.removeClass('sp-no-js'); if (window.navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) { this.$slider.addClass('ios') } - var rmsie = /(msie) ([\w.]+)/, ieVersion = rmsie.exec(window.navigator.userAgent.toLowerCase()); if (this.isIE) { this.$slider.addClass('ie') } - if (ieVersion !== null) { this.$slider.addClass('ie' + parseInt(ieVersion[2], 10)) } - this.$slidesContainer = $('
').appendTo(this.$slider); this.$slidesMask = $('
').appendTo(this.$slidesContainer); this.$slides = this.$slider.find('.sp-slides').appendTo(this.$slidesMask); this.$slider.find('.sp-slide').appendTo(this.$slides); var modules = $.SliderPro.modules; if (typeof modules !== 'undefined') { for (var i = 0; i < modules.length; i++) { var defaults = modules[i].substring(0, 1).toLowerCase() + modules[i].substring(1) + 'Defaults'; if (typeof this[defaults] !== 'undefined') { $.extend(this.defaults, this[defaults]) } } } - this.settings = $.extend({}, this.defaults, this.options); if (typeof modules !== 'undefined') { for (var j = 0; j < modules.length; j++) { if (typeof this['init' + modules[j]] !== 'undefined') { this['init' + modules[j]]() } } } - this.originalSettings = $.extend({}, this.settings); this.originalGotoSlide = this.gotoSlide; if (this.settings.breakpoints !== null) { - for (var sizes in this.settings.breakpoints) { this.breakpoints.push({ size: parseInt(sizes, 10), properties: this.settings.breakpoints[sizes] }) } - this.breakpoints = this.breakpoints.sort(function (a, b) { return a.size >= b.size ? 1 : -1 }) - } - this.selectedSlideIndex = this.settings.startSlide; if (this.settings.shuffle === true) { - var slides = this.$slides.find('.sp-slide'), shuffledSlides = []; slides.each(function (index) { that.shuffledIndexes.push(index) }); for (var k = this.shuffledIndexes.length - 1; k > 0; k--) { var l = Math.floor(Math.random() * (k + 1)), temp = this.shuffledIndexes[k]; this.shuffledIndexes[k] = this.shuffledIndexes[l]; this.shuffledIndexes[l] = temp } - $.each(this.shuffledIndexes, function (index, element) { shuffledSlides.push(slides[element]) }); this.$slides.empty().append(shuffledSlides) - } - $(window).on('resize.' + this.uniqueId + '.' + NS, function () { - var newWindowWidth = $(window).width(), newWindowHeight = $(window).height(); if (that.allowResize === false || (that.previousWindowWidth === newWindowWidth && that.previousWindowHeight === newWindowHeight)) { return } - that.previousWindowWidth = newWindowWidth; that.previousWindowHeight = newWindowHeight; that.allowResize = false; setTimeout(function () { that.resize(); that.allowResize = true }, 200) - }); this.on('update.' + NS, function () { that.previousSlideWidth = 0; that.resize() }); this.update(); this.$slides.find('.sp-slide').eq(this.selectedSlideIndex).addClass('sp-selected'); this.trigger({ type: 'init' }); if ($.isFunction(this.settings.init)) { this.settings.init.call(this, { type: 'init' }) } - }, update: function () { - var that = this; if (this.settings.orientation === 'horizontal') { this.$slider.removeClass('sp-vertical').addClass('sp-horizontal'); this.$slider.css({ 'height': '', 'max-height': '' }); this.$slides.find('.sp-slide').css('top', '') } else if (this.settings.orientation === 'vertical') { this.$slider.removeClass('sp-horizontal').addClass('sp-vertical'); this.$slides.find('.sp-slide').css('left', '') } - if (this.settings.rightToLeft === true) { this.$slider.addClass('sp-rtl') } else { this.$slider.removeClass('sp-rtl') } - this.positionProperty = this.settings.orientation === 'horizontal' ? 'left' : 'top'; this.sizeProperty = this.settings.orientation === 'horizontal' ? 'width' : 'height'; this.gotoSlide = this.originalGotoSlide; for (var i = this.slides.length - 1; i >= 0; i--) { if (this.$slider.find('.sp-slide[data-index="' + i + '"]').length === 0) { var slide = this.slides[i]; slide.off('imagesLoaded.' + NS); slide.destroy(); this.slides.splice(i, 1) } } - this.slidesOrder.length = 0; this.$slider.find('.sp-slide').each(function (index) { - var $slide = $(this); if (typeof $slide.attr('data-init') === 'undefined') { that._createSlide(index, $slide) } else { that.slides[index].setIndex(index) } - that.slidesOrder.push(index) - }); this.middleSlidePosition = parseInt((that.slidesOrder.length - 1) / 2, 10); if (this.settings.loop === true) { this._updateSlidesOrder() } - this.trigger({ type: 'update' }); if ($.isFunction(this.settings.update)) { this.settings.update.call(this, { type: 'update' }) } - }, _createSlide: function (index, element) { - var that = this, slide = new SliderProSlide($(element), index, this.settings); this.slides.splice(index, 0, slide); slide.on('imagesLoaded.' + NS, function (event) { - if (that.$slides.hasClass('sp-animated') === false) { that._resetSlidesPosition() } - that._calculateSlidesSize(); if (that.settings.autoHeight === true && event.index === that.selectedSlideIndex) { that._resizeHeightTo(slide.getSize().height) } - }) - }, _updateSlidesOrder: function () { var slicedItems, i, distance = $.inArray(this.selectedSlideIndex, this.slidesOrder) - this.middleSlidePosition; if (distance < 0) { slicedItems = this.slidesOrder.splice(distance, Math.abs(distance)); for (i = slicedItems.length - 1; i >= 0; i--) { this.slidesOrder.unshift(slicedItems[i]) } } else if (distance > 0) { slicedItems = this.slidesOrder.splice(0, distance); for (i = 0; i <= slicedItems.length - 1; i++) { this.slidesOrder.push(slicedItems[i]) } } }, _updateSlidesPosition: function () { - var selectedSlidePixelPosition = parseInt(this.$slides.find('.sp-slide').eq(this.selectedSlideIndex).css(this.positionProperty), 10), slide, $slideElement, slideIndex, slideSize, previousPosition = selectedSlidePixelPosition; if (this.settings.rightToLeft === true && this.settings.orientation === 'horizontal') { - for (slideIndex = this.middleSlidePosition; slideIndex >= 0; slideIndex--) { slide = this.getSlideAt(this.slidesOrder[slideIndex]); $slideElement = slide.$slide; $slideElement.css(this.positionProperty, previousPosition); previousPosition = parseInt($slideElement.css(this.positionProperty), 10) + slide.getSize()[this.sizeProperty] + this.settings.slideDistance } - previousPosition = selectedSlidePixelPosition; for (slideIndex = this.middleSlidePosition + 1; slideIndex < this.slidesOrder.length; slideIndex++) { slide = this.getSlideAt(this.slidesOrder[slideIndex]); $slideElement = slide.$slide; $slideElement.css(this.positionProperty, previousPosition - (slide.getSize()[this.sizeProperty] + this.settings.slideDistance)); previousPosition = parseInt($slideElement.css(this.positionProperty), 10) } - } else { - for (slideIndex = this.middleSlidePosition - 1; slideIndex >= 0; slideIndex--) { slide = this.getSlideAt(this.slidesOrder[slideIndex]); $slideElement = slide.$slide; $slideElement.css(this.positionProperty, previousPosition - (slide.getSize()[this.sizeProperty] + this.settings.slideDistance)); previousPosition = parseInt($slideElement.css(this.positionProperty), 10) } - previousPosition = selectedSlidePixelPosition; for (slideIndex = this.middleSlidePosition; slideIndex < this.slidesOrder.length; slideIndex++) { slide = this.getSlideAt(this.slidesOrder[slideIndex]); $slideElement = slide.$slide; $slideElement.css(this.positionProperty, previousPosition); previousPosition = parseInt($slideElement.css(this.positionProperty), 10) + slide.getSize()[this.sizeProperty] + this.settings.slideDistance } - } - }, _resetSlidesPosition: function () { - var previousPosition = 0, slide, $slideElement, slideIndex; if (this.settings.rightToLeft === true && this.settings.orientation === 'horizontal') { for (slideIndex = 0; slideIndex < this.slidesOrder.length; slideIndex++) { slide = this.getSlideAt(this.slidesOrder[slideIndex]); $slideElement = slide.$slide; $slideElement.css(this.positionProperty, previousPosition - (slide.getSize()[this.sizeProperty] + this.settings.slideDistance)); previousPosition = parseInt($slideElement.css(this.positionProperty), 10) } } else { for (slideIndex = 0; slideIndex < this.slidesOrder.length; slideIndex++) { slide = this.getSlideAt(this.slidesOrder[slideIndex]); $slideElement = slide.$slide; $slideElement.css(this.positionProperty, previousPosition); previousPosition = parseInt($slideElement.css(this.positionProperty), 10) + slide.getSize()[this.sizeProperty] + this.settings.slideDistance } } - var selectedSlideOffset = this.settings.centerSelectedSlide === true ? Math.round((parseInt(this.$slidesMask.css(this.sizeProperty), 10) - this.getSlideAt(this.selectedSlideIndex).getSize()[this.sizeProperty]) / 2) : 0, newSlidesPosition = -parseInt(this.$slides.find('.sp-slide').eq(this.selectedSlideIndex).css(this.positionProperty), 10) + selectedSlideOffset; this._moveTo(newSlidesPosition, true) - }, _calculateSlidesSize: function () { var firstSlide = this.$slides.find('.sp-slide').eq(this.slidesOrder[0]), firstSlidePosition = parseInt(firstSlide.css(this.positionProperty), 10), lastSlide = this.$slides.find('.sp-slide').eq(this.slidesOrder[this.slidesOrder.length - 1]), lastSlidePosition = parseInt(lastSlide.css(this.positionProperty), 10) + (this.settings.rightToLeft === true && this.settings.orientation === 'horizontal' ? -1 : 1) * parseInt(lastSlide.css(this.sizeProperty), 10); this.slidesSize = Math.abs(lastSlidePosition - firstSlidePosition); this.averageSlideSize = Math.round(this.slidesSize / this.slides.length) }, resize: function () { - var that = this; if (this.settings.breakpoints !== null && this.breakpoints.length > 0) { - if ($(window).width() > this.breakpoints[this.breakpoints.length - 1].size && this.currentBreakpoint !== -1) { this.currentBreakpoint = -1; this._setProperties(this.originalSettings, false) } else { - for (var i = 0, n = this.breakpoints.length; i < n; i++) { - if ($(window).width() <= this.breakpoints[i].size) { - if (this.currentBreakpoint !== this.breakpoints[i].size) { - var eventObject = { type: 'breakpointReach', size: this.breakpoints[i].size, settings: this.breakpoints[i].properties }; this.trigger(eventObject); if ($.isFunction(this.settings.breakpointReach)) - this.settings.breakpointReach.call(this, eventObject); this.currentBreakpoint = this.breakpoints[i].size; var settings = $.extend({}, this.originalSettings, this.breakpoints[i].properties); this._setProperties(settings, false); return - } - break - } - } - } - } - if (this.settings.responsive === true) { if ((this.settings.forceSize === 'fullWidth' || this.settings.forceSize === 'fullWindow') && (this.settings.visibleSize === 'auto' || this.settings.visibleSize !== 'auto' && this.settings.orientation === 'vertical')) { this.$slider.css('margin', 0); this.$slider.css({ 'width': $(window).width(), 'max-width': '', 'marginLeft': -this.$slider.offset().left }) } else { this.$slider.css({ 'width': '100%', 'max-width': this.settings.width, 'marginLeft': '' }) } } else { this.$slider.css({ 'width': this.settings.width }) } - if (this.settings.aspectRatio === -1) { this.settings.aspectRatio = this.settings.width / this.settings.height } - this.slideWidth = this.$slider.width(); if (this.settings.forceSize === 'fullWindow') { this.slideHeight = $(window).height() } else { this.slideHeight = isNaN(this.settings.aspectRatio) ? this.settings.height : this.slideWidth / this.settings.aspectRatio } - if (this.previousSlideWidth !== this.slideWidth || this.previousSlideHeight !== this.slideHeight || this.settings.visibleSize !== 'auto' || this.$slider.outerWidth() > this.$slider.parent().width() || this.$slider.width() !== this.$slidesMask.width()) { this.previousSlideWidth = this.slideWidth; this.previousSlideHeight = this.slideHeight } else { return } - this._resizeSlides(); this.$slidesMask.css({ 'width': this.slideWidth, 'height': this.slideHeight }); if (this.settings.autoHeight === true) { setTimeout(function () { that._resizeHeight() }, 1) } else { this.$slidesMask.css(this.vendorPrefix + 'transition', '') } - if (this.settings.visibleSize !== 'auto') { - if (this.settings.orientation === 'horizontal') { - if (this.settings.forceSize === 'fullWidth' || this.settings.forceSize === 'fullWindow') { this.$slider.css('margin', 0); this.$slider.css({ 'width': $(window).width(), 'max-width': '', 'marginLeft': -this.$slider.offset().left }) } else { this.$slider.css({ 'width': this.settings.visibleSize, 'max-width': '100%', 'marginLeft': 0 }) } - this.$slidesMask.css('width', this.$slider.width()) - } else { - if (this.settings.forceSize === 'fullWindow') { this.$slider.css({ 'height': $(window).height(), 'max-height': '' }) } else { this.$slider.css({ 'height': this.settings.visibleSize, 'max-height': '100%' }) } - this.$slidesMask.css('height', this.$slider.height()) - } - } - this._resetSlidesPosition(); this._calculateSlidesSize(); this.trigger({ type: 'sliderResize' }); if ($.isFunction(this.settings.sliderResize)) { this.settings.sliderResize.call(this, { type: 'sliderResize' }) } - }, _resizeSlides: function () { - var slideWidth = this.slideWidth, slideHeight = this.slideHeight; if (this.settings.autoSlideSize === true) { if (this.settings.orientation === 'horizontal') { slideWidth = 'auto' } else if (this.settings.orientation === 'vertical') { slideHeight = 'auto' } } else if (this.settings.autoHeight === true) { slideHeight = 'auto' } - $.each(this.slides, function (index, element) { element.setSize(slideWidth, slideHeight) }) - }, _resizeHeight: function () { var that = this, selectedSlide = this.getSlideAt(this.selectedSlideIndex); this._resizeHeightTo(selectedSlide.getSize().height) }, gotoSlide: function (index) { - if (index === this.selectedSlideIndex || typeof this.slides[index] === 'undefined') { return } - var that = this; this.previousSlideIndex = this.selectedSlideIndex; this.selectedSlideIndex = index; this.$slides.find('.sp-selected').removeClass('sp-selected'); this.$slides.find('.sp-slide').eq(this.selectedSlideIndex).addClass('sp-selected'); if (this.settings.loop === true) { this._updateSlidesOrder(); this._updateSlidesPosition() } - if (this.settings.autoHeight === true) { this._resizeHeight() } - var selectedSlideOffset = this.settings.centerSelectedSlide === true ? Math.round((parseInt(this.$slidesMask.css(this.sizeProperty), 10) - this.getSlideAt(this.selectedSlideIndex).getSize()[this.sizeProperty]) / 2) : 0, newSlidesPosition = -parseInt(this.$slides.find('.sp-slide').eq(this.selectedSlideIndex).css(this.positionProperty), 10) + selectedSlideOffset; this._moveTo(newSlidesPosition, false, function () { that._resetSlidesPosition(); that.trigger({ type: 'gotoSlideComplete', index: index, previousIndex: that.previousSlideIndex }); if ($.isFunction(that.settings.gotoSlideComplete)) { that.settings.gotoSlideComplete.call(that, { type: 'gotoSlideComplete', index: index, previousIndex: that.previousSlideIndex }) } }); this.trigger({ type: 'gotoSlide', index: index, previousIndex: this.previousSlideIndex }); if ($.isFunction(this.settings.gotoSlide)) { this.settings.gotoSlide.call(this, { type: 'gotoSlide', index: index, previousIndex: this.previousSlideIndex }) } - }, nextSlide: function () { var index = (this.selectedSlideIndex >= this.getTotalSlides() - 1) ? 0 : (this.selectedSlideIndex + 1); this.gotoSlide(index) }, previousSlide: function () { var index = this.selectedSlideIndex <= 0 ? (this.getTotalSlides() - 1) : (this.selectedSlideIndex - 1); this.gotoSlide(index) }, _moveTo: function (position, instant, callback) { - var that = this, css = {}; if (position === this.slidesPosition) { return } - this.slidesPosition = position; if ((this.supportedAnimation === 'css-3d' || this.supportedAnimation === 'css-2d') && this.isIE === false) { - var transition, left = this.settings.orientation === 'horizontal' ? position : 0, top = this.settings.orientation === 'horizontal' ? 0 : position; if (this.supportedAnimation === 'css-3d') { css[this.vendorPrefix + 'transform'] = 'translate3d(' + left + 'px, ' + top + 'px, 0)' } else { css[this.vendorPrefix + 'transform'] = 'translate(' + left + 'px, ' + top + 'px)' } - if (typeof instant !== 'undefined' && instant === true) { transition = '' } else { - this.$slides.addClass('sp-animated'); transition = this.vendorPrefix + 'transform ' + this.settings.slideAnimationDuration / 1000 + 's'; this.$slides.on(this.transitionEvent, function (event) { - if (event.target !== event.currentTarget) { return } - that.$slides.off(that.transitionEvent); that.$slides.removeClass('sp-animated'); if (typeof callback === 'function') { callback() } - }) - } - css[this.vendorPrefix + 'transition'] = transition; this.$slides.css(css) - } else { css['margin-' + this.positionProperty] = position; if (typeof instant !== 'undefined' && instant === true) { this.$slides.css(css) } else { this.$slides.addClass('sp-animated'); this.$slides.animate(css, this.settings.slideAnimationDuration, function () { that.$slides.removeClass('sp-animated'); if (typeof callback === 'function') { callback() } }) } } - }, _stopMovement: function () { - var css = {}; if ((this.supportedAnimation === 'css-3d' || this.supportedAnimation === 'css-2d') && this.isIE === false) { - var matrixString = this.$slides.css(this.vendorPrefix + 'transform'), matrixType = matrixString.indexOf('matrix3d') !== -1 ? 'matrix3d' : 'matrix', matrixArray = matrixString.replace(matrixType, '').match(/-?[0-9\.]+/g), left = matrixType === 'matrix3d' ? parseInt(matrixArray[12], 10) : parseInt(matrixArray[4], 10), top = matrixType === 'matrix3d' ? parseInt(matrixArray[13], 10) : parseInt(matrixArray[5], 10); if (this.supportedAnimation === 'css-3d') { css[this.vendorPrefix + 'transform'] = 'translate3d(' + left + 'px, ' + top + 'px, 0)' } else { css[this.vendorPrefix + 'transform'] = 'translate(' + left + 'px, ' + top + 'px)' } - css[this.vendorPrefix + 'transition'] = ''; this.$slides.css(css); this.$slides.off(this.transitionEvent); this.slidesPosition = this.settings.orientation === 'horizontal' ? left : top - } else { this.$slides.stop(); this.slidesPosition = parseInt(this.$slides.css('margin-' + this.positionProperty), 10) } - this.$slides.removeClass('sp-animated') - }, _resizeHeightTo: function (height) { - var that = this, css = { 'height': height }; if (this.supportedAnimation === 'css-3d' || this.supportedAnimation === 'css-2d') { - css[this.vendorPrefix + 'transition'] = 'height ' + this.settings.heightAnimationDuration / 1000 + 's'; this.$slidesMask.off(this.transitionEvent); this.$slidesMask.on(this.transitionEvent, function (event) { - if (event.target !== event.currentTarget) { return } - that.$slidesMask.off(that.transitionEvent); that.trigger({ type: 'resizeHeightComplete' }); if ($.isFunction(that.settings.resizeHeightComplete)) { that.settings.resizeHeightComplete.call(that, { type: 'resizeHeightComplete' }) } - }); this.$slidesMask.css(css) - } else { this.$slidesMask.stop().animate(css, this.settings.heightAnimationDuration, function (event) { that.trigger({ type: 'resizeHeightComplete' }); if ($.isFunction(that.settings.resizeHeightComplete)) { that.settings.resizeHeightComplete.call(that, { type: 'resizeHeightComplete' }) } }) } - }, destroy: function () { - this.$slider.removeData('sliderPro'); this.$slider.removeAttr('style'); this.$slides.removeAttr('style'); this.off('update.' + NS); $(window).off('resize.' + this.uniqueId + '.' + NS); var modules = $.SliderPro.modules; if (typeof modules !== 'undefined') { for (var i = 0; i < modules.length; i++) { if (typeof this['destroy' + modules[i]] !== 'undefined') { this['destroy' + modules[i]]() } } } - $.each(this.slides, function (index, element) { element.destroy() }); this.slides.length = 0; this.$slides.prependTo(this.$slider); this.$slidesContainer.remove() - }, _setProperties: function (properties, store) { - for (var prop in properties) { this.settings[prop] = properties[prop]; if (store !== false) { this.originalSettings[prop] = properties[prop] } } - this.update() - }, on: function (type, callback) { return this.$slider.on(type, callback) }, off: function (type) { return this.$slider.off(type) }, trigger: function (data) { return this.$slider.triggerHandler(data) }, getSlideAt: function (index) { return this.slides[index] }, getSelectedSlide: function () { return this.selectedSlideIndex }, getTotalSlides: function () { return this.slides.length }, defaults: { width: 500, height: 300, responsive: true, aspectRatio: -1, imageScaleMode: 'cover', centerImage: true, allowScaleUp: true, autoHeight: false, autoSlideSize: false, startSlide: 0, shuffle: false, orientation: 'horizontal', forceSize: 'none', loop: true, slideDistance: 10, slideAnimationDuration: 700, heightAnimationDuration: 700, visibleSize: 'auto', centerSelectedSlide: true, rightToLeft: false, breakpoints: null, init: function () { }, update: function () { }, sliderResize: function () { }, gotoSlide: function () { }, gotoSlideComplete: function () { }, resizeHeightComplete: function () { }, breakpointReach: function () { } } - }; var SliderProSlide = function (slide, index, settings) { this.$slide = slide; this.$mainImage = null; this.$imageContainer = null; this.hasMainImage = false; this.isMainImageLoaded = false; this.isMainImageLoading = false; this.hasImages = false; this.areImagesLoaded = false; this.areImagesLoading = false; this.width = 0; this.height = 0; this.settings = settings; this.setIndex(index); this._init() }; SliderProSlide.prototype = { - _init: function () { - var that = this; this.$slide.attr('data-init', true); this.$mainImage = this.$slide.find('.sp-image').length !== 0 ? this.$slide.find('.sp-image') : null; if (this.$mainImage !== null) { this.hasMainImage = true; this.$imageContainer = $('
').prependTo(this.$slide); if (this.$mainImage.parent('a').length !== 0) { this.$mainImage.parent('a').appendTo(this.$imageContainer) } else { this.$mainImage.appendTo(this.$imageContainer) } } - this.hasImages = this.$slide.find('img').length !== 0 ? true : false - }, setSize: function (width, height) { var that = this; this.width = width; this.height = height; this.$slide.css({ 'width': this.width, 'height': this.height }); if (this.hasMainImage === true) { this.$imageContainer.css({ 'width': this.settings.width, 'height': this.settings.height }); if (typeof this.$mainImage.attr('data-src') === 'undefined') { this.resizeMainImage() } } }, getSize: function () { - var that = this, size; if (this.hasImages === true && this.areImagesLoaded === false && this.areImagesLoading === false) { this.areImagesLoading = true; var status = SliderProUtils.checkImagesStatus(this.$slide); if (status !== 'complete') { SliderProUtils.checkImagesComplete(this.$slide, function () { that.areImagesLoaded = true; that.areImagesLoading = false; that.trigger({ type: 'imagesLoaded.' + NS, index: that.index }) }); return { 'width': this.settings.width, 'height': this.settings.height } } } - size = this.calculateSize(); return { 'width': size.width, 'height': size.height } - }, calculateSize: function () { - var width = this.$slide.width(), height = this.$slide.height(); this.$slide.children().each(function (index, element) { - var child = $(element); if (child.is(':hidden') === true) { return } - var rect = element.getBoundingClientRect(), bottom = child.position().top + (rect.bottom - rect.top), right = child.position().left + (rect.right - rect.left); if (bottom > height) { height = bottom } - if (right > width) { width = right } - }); return { width: width, height: height } - }, resizeMainImage: function (isNewImage) { - var that = this; if (isNewImage === true) { this.isMainImageLoaded = false; this.isMainImageLoading = false } - if (this.isMainImageLoaded === false && this.isMainImageLoading === false) { this.isMainImageLoading = true; SliderProUtils.checkImagesComplete(this.$mainImage, function () { that.isMainImageLoaded = true; that.isMainImageLoading = false; that.resizeMainImage(); that.trigger({ type: 'imagesLoaded.' + NS, index: that.index }) }); return } - this.$imageContainer.css({ 'width': this.width, 'height': this.height }); if (this.settings.allowScaleUp === false) { this.$mainImage.css({ 'width': '', 'height': '', 'maxWidth': '', 'maxHeight': '' }); this.$mainImage.css({ 'maxWidth': this.$mainImage.width(), 'maxHeight': this.$mainImage.height() }) } - if (this.settings.autoSlideSize === true) { if (this.settings.orientation === 'horizontal') { this.$mainImage.css({ width: 'auto', height: '100%' }) } else if (this.settings.orientation === 'vertical') { this.$mainImage.css({ width: '100%', height: 'auto' }) } } else if (this.settings.autoHeight === true) { this.$mainImage.css({ width: '100%', height: 'auto' }) } else { - if (this.settings.imageScaleMode === 'cover') { if (this.$mainImage.width() / this.$mainImage.height() <= this.width / this.height) { this.$mainImage.css({ width: '100%', height: 'auto' }) } else { this.$mainImage.css({ width: 'auto', height: '100%' }) } } else if (this.settings.imageScaleMode === 'contain') { if (this.$mainImage.width() / this.$mainImage.height() >= this.width / this.height) { this.$mainImage.css({ width: '100%', height: 'auto' }) } else { this.$mainImage.css({ width: 'auto', height: '100%' }) } } else if (this.settings.imageScaleMode === 'exact') { this.$mainImage.css({ width: '100%', height: '100%' }) } - if (this.settings.centerImage === true) { this.$mainImage.css({ 'marginLeft': (this.$imageContainer.width() - this.$mainImage.width()) * 0.5, 'marginTop': (this.$imageContainer.height() - this.$mainImage.height()) * 0.5 }) } - } - }, destroy: function () { this.$slide.removeAttr('style'); this.$slide.removeAttr('data-init'); this.$slide.removeAttr('data-index'); this.$slide.removeAttr('data-loaded'); if (this.hasMainImage === true) { this.$slide.find('.sp-image').removeAttr('style').appendTo(this.$slide); this.$slide.find('.sp-image-container').remove() } }, getIndex: function () { return this.index }, setIndex: function (index) { this.index = index; this.$slide.attr('data-index', this.index) }, on: function (type, callback) { return this.$slide.on(type, callback) }, off: function (type) { return this.$slide.off(type) }, trigger: function (data) { return this.$slide.triggerHandler(data) } - }; window.SliderPro = SliderPro; window.SliderProSlide = SliderProSlide; $.fn.sliderPro = function (options) { var args = Array.prototype.slice.call(arguments, 1); return this.each(function () { if (typeof $(this).data('sliderPro') === 'undefined') { var newInstance = new SliderPro(this, options); $(this).data('sliderPro', newInstance) } else if (typeof options !== 'undefined') { var currentInstance = $(this).data('sliderPro'); if (typeof currentInstance[options] === 'function') { currentInstance[options].apply(currentInstance, args) } else if (typeof currentInstance.settings[options] !== 'undefined') { var obj = {}; obj[options] = args[0]; currentInstance._setProperties(obj) } else if (typeof options === 'object') { currentInstance._setProperties(options) } else { $.error(options + ' does not exist in sliderPro.') } } }) }; var SliderProUtils = { - supportedAnimation: null, vendorPrefix: null, transitionEvent: null, isIE: null, getSupportedAnimation: function () { - if (this.supportedAnimation !== null) { return this.supportedAnimation } - var element = document.body || document.documentElement, elementStyle = element.style, isCSSTransitions = typeof elementStyle.transition !== 'undefined' || typeof elementStyle.WebkitTransition !== 'undefined' || typeof elementStyle.MozTransition !== 'undefined' || typeof elementStyle.OTransition !== 'undefined'; if (isCSSTransitions === true) { - var div = document.createElement('div'); if (typeof div.style.WebkitPerspective !== 'undefined' || typeof div.style.perspective !== 'undefined') { this.supportedAnimation = 'css-3d' } - if (this.supportedAnimation === 'css-3d' && typeof div.styleWebkitPerspective !== 'undefined') { - var style = document.createElement('style'); style.textContent = '@media (transform-3d),(-webkit-transform-3d){#test-3d{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0;}}'; document.getElementsByTagName('head')[0].appendChild(style); div.id = 'test-3d'; document.body.appendChild(div); if (!(div.offsetLeft === 9 && div.offsetHeight === 5)) { this.supportedAnimation = null } - style.parentNode.removeChild(style); div.parentNode.removeChild(div) - } - if (this.supportedAnimation === null && (typeof div.style['-webkit-transform'] !== 'undefined' || typeof div.style.transform !== 'undefined')) { this.supportedAnimation = 'css-2d' } - } else { this.supportedAnimation = 'javascript' } - return this.supportedAnimation - }, getVendorPrefix: function () { - if (this.vendorPrefix !== null) { return this.vendorPrefix } - var div = document.createElement('div'), prefixes = ['Webkit', 'Moz', 'ms', 'O']; if ('transform' in div.style) { this.vendorPrefix = ''; return this.vendorPrefix } - for (var i = 0; i < prefixes.length; i++) { if ((prefixes[i] + 'Transform') in div.style) { this.vendorPrefix = '-' + prefixes[i].toLowerCase() + '-'; break } } - return this.vendorPrefix - }, getTransitionEvent: function () { - if (this.transitionEvent !== null) { return this.transitionEvent } - var div = document.createElement('div'), transitions = { 'transition': 'transitionend', 'WebkitTransition': 'webkitTransitionEnd', 'MozTransition': 'transitionend', 'OTransition': 'oTransitionEnd' }; for (var transition in transitions) { if (transition in div.style) { this.transitionEvent = transitions[transition]; break } } - return this.transitionEvent - }, checkImagesComplete: function (target, callback) { - var that = this, status = this.checkImagesStatus(target); if (status === 'loading') { var checkImages = setInterval(function () { status = that.checkImagesStatus(target); if (status === 'complete') { clearInterval(checkImages); if (typeof callback === 'function') { callback() } } }, 100) } else if (typeof callback === 'function') { callback() } - return status - }, checkImagesStatus: function (target) { - var status = 'complete'; if (target.is('img') && target[0].complete === false) { status = 'loading' } else { target.find('img').each(function (index) { var image = $(this)[0]; if (image.complete === false) { status = 'loading' } }) } - return status - }, checkIE: function () { - if (this.isIE !== null) { return this.isIE } - var userAgent = window.navigator.userAgent, msie = userAgent.indexOf('MSIE'); if (userAgent.indexOf('MSIE') !== -1 || userAgent.match(/Trident.*rv\:11\./)) { this.isIE = true } else { this.isIE = false } - return this.isIE - } - }; window.SliderProUtils = SliderProUtils -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Thumbnails.' + $.SliderPro.namespace; var Thumbnails = { - $thumbnails: null, $thumbnailsContainer: null, thumbnails: null, selectedThumbnailIndex: 0, thumbnailsSize: 0, thumbnailsContainerSize: 0, thumbnailsPosition: 0, thumbnailsOrientation: null, thumbnailsPositionProperty: null, isThumbnailScroller: false, initThumbnails: function () { var that = this; this.thumbnails = []; this.on('update.' + NS, $.proxy(this._thumbnailsOnUpdate, this)); this.on('sliderResize.' + NS, $.proxy(this._thumbnailsOnResize, this)); this.on('gotoSlide.' + NS, function (event) { that._gotoThumbnail(event.index) }) }, _thumbnailsOnUpdate: function () { - var that = this; if (this.$slider.find('.sp-thumbnail').length === 0 && this.thumbnails.length === 0) { this.isThumbnailScroller = false; return } - this.isThumbnailScroller = true; if (this.$thumbnailsContainer === null) { this.$thumbnailsContainer = $('
').insertAfter(this.$slidesContainer) } - if (this.$thumbnails === null) { - if (this.$slider.find('.sp-thumbnails').length !== 0) { - this.$thumbnails = this.$slider.find('.sp-thumbnails').appendTo(this.$thumbnailsContainer); if (this.settings.shuffle === true) { - var thumbnails = this.$thumbnails.find('.sp-thumbnail'), shuffledThumbnails = []; $.each(this.shuffledIndexes, function (index, element) { - var $thumbnail = $(thumbnails[element]); if ($thumbnail.parent('a').length !== 0) { $thumbnail = $thumbnail.parent('a') } - shuffledThumbnails.push($thumbnail) - }); this.$thumbnails.empty().append(shuffledThumbnails) - } - } else { this.$thumbnails = $('
').appendTo(this.$thumbnailsContainer) } - } - this.$slides.find('.sp-thumbnail').each(function (index) { - var $thumbnail = $(this), thumbnailIndex = $thumbnail.parents('.sp-slide').index(), lastThumbnailIndex = that.$thumbnails.find('.sp-thumbnail').length - 1; if ($thumbnail.parent('a').length !== 0) { $thumbnail = $thumbnail.parent('a') } - if (thumbnailIndex > lastThumbnailIndex) { $thumbnail.appendTo(that.$thumbnails) } else { $thumbnail.insertBefore(that.$thumbnails.find('.sp-thumbnail').eq(thumbnailIndex)) } - }); for (var i = this.thumbnails.length - 1; i >= 0; i--) { if (this.$thumbnails.find('.sp-thumbnail[data-index="' + i + '"]').length === 0) { var thumbnail = this.thumbnails[i]; thumbnail.destroy(); this.thumbnails.splice(i, 1) } } - this.$thumbnails.find('.sp-thumbnail').each(function (index) { var $thumbnail = $(this); if (typeof $thumbnail.attr('data-init') === 'undefined') { that._createThumbnail($thumbnail, index) } else { that.thumbnails[index].setIndex(index) } }); this.$thumbnailsContainer.removeClass('sp-top-thumbnails sp-bottom-thumbnails sp-left-thumbnails sp-right-thumbnails'); if (this.settings.thumbnailsPosition === 'top') { this.$thumbnailsContainer.addClass('sp-top-thumbnails'); this.thumbnailsOrientation = 'horizontal' } else if (this.settings.thumbnailsPosition === 'bottom') { this.$thumbnailsContainer.addClass('sp-bottom-thumbnails'); this.thumbnailsOrientation = 'horizontal' } else if (this.settings.thumbnailsPosition === 'left') { this.$thumbnailsContainer.addClass('sp-left-thumbnails'); this.thumbnailsOrientation = 'vertical' } else if (this.settings.thumbnailsPosition === 'right') { this.$thumbnailsContainer.addClass('sp-right-thumbnails'); this.thumbnailsOrientation = 'vertical' } - if (this.settings.thumbnailPointer === true) { this.$thumbnailsContainer.addClass('sp-has-pointer') } else { this.$thumbnailsContainer.removeClass('sp-has-pointer') } - this.selectedThumbnailIndex = this.selectedSlideIndex; this.$thumbnails.find('.sp-thumbnail-container').eq(this.selectedThumbnailIndex).addClass('sp-selected-thumbnail'); this.thumbnailsSize = 0; $.each(this.thumbnails, function (index, thumbnail) { thumbnail.setSize(that.settings.thumbnailWidth, that.settings.thumbnailHeight); that.thumbnailsSize += that.thumbnailsOrientation === 'horizontal' ? thumbnail.getSize().width : thumbnail.getSize().height }); if (this.thumbnailsOrientation === 'horizontal') { this.$thumbnails.css({ 'width': this.thumbnailsSize, 'height': this.settings.thumbnailHeight }); this.$thumbnailsContainer.css('height', ''); this.thumbnailsPositionProperty = 'left' } else { this.$thumbnails.css({ 'width': this.settings.thumbnailWidth, 'height': this.thumbnailsSize }); this.$thumbnailsContainer.css('width', ''); this.thumbnailsPositionProperty = 'top' } - this.trigger({ type: 'thumbnailsUpdate' }); if ($.isFunction(this.settings.thumbnailsUpdate)) { this.settings.thumbnailsUpdate.call(this, { type: 'thumbnailsUpdate' }) } - }, _createThumbnail: function (element, index) { var that = this, thumbnail = new Thumbnail(element, this.$thumbnails, index); thumbnail.on('thumbnailClick.' + NS, function (event) { that.gotoSlide(event.index) }); this.thumbnails.splice(index, 0, thumbnail) }, _thumbnailsOnResize: function () { - if (this.isThumbnailScroller === false) { return } - var that = this, newThumbnailsPosition; if (this.thumbnailsOrientation === 'horizontal') { this.thumbnailsContainerSize = Math.min(this.$slidesMask.width(), this.thumbnailsSize); this.$thumbnailsContainer.css('width', this.thumbnailsContainerSize); if (this.settings.forceSize === 'fullWindow') { this.$slidesMask.css('height', this.$slidesMask.height() - this.$thumbnailsContainer.outerHeight(true)); this.slideHeight = this.$slidesMask.height(); this._resizeSlides(); this._resetSlidesPosition() } } else if (this.thumbnailsOrientation === 'vertical') { - if (this.$slidesMask.width() + this.$thumbnailsContainer.outerWidth(true) > this.$slider.parent().width()) { - if (this.settings.forceSize === 'fullWidth' || this.settings.forceSize === 'fullWindow') { this.$slider.css('max-width', $(window).width() - this.$thumbnailsContainer.outerWidth(true)) } else { this.$slider.css('max-width', this.$slider.parent().width() - this.$thumbnailsContainer.outerWidth(true)) } - this.$slidesMask.css('width', this.$slider.width()); if (this.settings.orientation === 'vertical') { this.slideWidth = this.$slider.width(); this._resizeSlides() } - this._resetSlidesPosition() - } - this.thumbnailsContainerSize = Math.min(this.$slidesMask.height(), this.thumbnailsSize); this.$thumbnailsContainer.css('height', this.thumbnailsContainerSize) - } - if (this.thumbnailsSize <= this.thumbnailsContainerSize || this.$thumbnails.find('.sp-selected-thumbnail').length === 0) { newThumbnailsPosition = 0 } else { newThumbnailsPosition = Math.max(-this.thumbnails[this.selectedThumbnailIndex].getPosition()[this.thumbnailsPositionProperty], this.thumbnailsContainerSize - this.thumbnailsSize) } - if (this.settings.thumbnailsPosition === 'top') { this.$slider.css({ 'paddingTop': this.$thumbnailsContainer.outerHeight(true), 'paddingLeft': '', 'paddingRight': '' }) } else if (this.settings.thumbnailsPosition === 'bottom') { this.$slider.css({ 'paddingTop': '', 'paddingLeft': '', 'paddingRight': '' }) } else if (this.settings.thumbnailsPosition === 'left') { this.$slider.css({ 'paddingTop': '', 'paddingLeft': this.$thumbnailsContainer.outerWidth(true), 'paddingRight': '' }) } else if (this.settings.thumbnailsPosition === 'right') { this.$slider.css({ 'paddingTop': '', 'paddingLeft': '', 'paddingRight': this.$thumbnailsContainer.outerWidth(true) }) } - this._moveThumbnailsTo(newThumbnailsPosition, true) - }, _gotoThumbnail: function (index) { - if (this.isThumbnailScroller === false || typeof this.thumbnails[index] === 'undefined') { return } - var previousIndex = this.selectedThumbnailIndex, newThumbnailsPosition = this.thumbnailsPosition; this.selectedThumbnailIndex = index; this.$thumbnails.find('.sp-selected-thumbnail').removeClass('sp-selected-thumbnail'); this.$thumbnails.find('.sp-thumbnail-container').eq(this.selectedThumbnailIndex).addClass('sp-selected-thumbnail'); if (this.settings.rightToLeft === true && this.thumbnailsOrientation === 'horizontal') { if (this.selectedThumbnailIndex >= previousIndex) { var rtlNextThumbnailIndex = this.selectedThumbnailIndex === this.thumbnails.length - 1 ? this.selectedThumbnailIndex : this.selectedThumbnailIndex + 1, rtlNextThumbnail = this.thumbnails[rtlNextThumbnailIndex]; if (rtlNextThumbnail.getPosition().left < -this.thumbnailsPosition) { newThumbnailsPosition = -rtlNextThumbnail.getPosition().left } } else if (this.selectedThumbnailIndex < previousIndex) { var rtlPreviousThumbnailIndex = this.selectedThumbnailIndex === 0 ? this.selectedThumbnailIndex : this.selectedThumbnailIndex - 1, rtlPreviousThumbnail = this.thumbnails[rtlPreviousThumbnailIndex], rtlThumbnailsRightPosition = -this.thumbnailsPosition + this.thumbnailsContainerSize; if (rtlPreviousThumbnail.getPosition().right > rtlThumbnailsRightPosition) { newThumbnailsPosition = this.thumbnailsPosition - (rtlPreviousThumbnail.getPosition().right - rtlThumbnailsRightPosition) } } } else { if (this.selectedThumbnailIndex >= previousIndex) { var nextThumbnailIndex = this.selectedThumbnailIndex === this.thumbnails.length - 1 ? this.selectedThumbnailIndex : this.selectedThumbnailIndex + 1, nextThumbnail = this.thumbnails[nextThumbnailIndex], nextThumbnailPosition = this.thumbnailsOrientation === 'horizontal' ? nextThumbnail.getPosition().right : nextThumbnail.getPosition().bottom, thumbnailsRightPosition = -this.thumbnailsPosition + this.thumbnailsContainerSize; if (nextThumbnailPosition > thumbnailsRightPosition) { newThumbnailsPosition = this.thumbnailsPosition - (nextThumbnailPosition - thumbnailsRightPosition) } } else if (this.selectedThumbnailIndex < previousIndex) { var previousThumbnailIndex = this.selectedThumbnailIndex === 0 ? this.selectedThumbnailIndex : this.selectedThumbnailIndex - 1, previousThumbnail = this.thumbnails[previousThumbnailIndex], previousThumbnailPosition = this.thumbnailsOrientation === 'horizontal' ? previousThumbnail.getPosition().left : previousThumbnail.getPosition().top; if (previousThumbnailPosition < -this.thumbnailsPosition) { newThumbnailsPosition = -previousThumbnailPosition } } } - this._moveThumbnailsTo(newThumbnailsPosition); this.trigger({ type: 'gotoThumbnail' }); if ($.isFunction(this.settings.gotoThumbnail)) { this.settings.gotoThumbnail.call(this, { type: 'gotoThumbnail' }) } - }, _moveThumbnailsTo: function (position, instant, callback) { - var that = this, css = {}; if (position === this.thumbnailsPosition) { return } - this.thumbnailsPosition = position; if (this.supportedAnimation === 'css-3d' || this.supportedAnimation === 'css-2d') { - var transition, left = this.thumbnailsOrientation === 'horizontal' ? position : 0, top = this.thumbnailsOrientation === 'horizontal' ? 0 : position; if (this.supportedAnimation === 'css-3d') { css[this.vendorPrefix + 'transform'] = 'translate3d(' + left + 'px, ' + top + 'px, 0)' } else { css[this.vendorPrefix + 'transform'] = 'translate(' + left + 'px, ' + top + 'px)' } - if (typeof instant !== 'undefined' && instant === true) { transition = '' } else { - this.$thumbnails.addClass('sp-animated'); transition = this.vendorPrefix + 'transform ' + 700 / 1000 + 's'; this.$thumbnails.on(this.transitionEvent, function (event) { - if (event.target !== event.currentTarget) { return } - that.$thumbnails.off(that.transitionEvent); that.$thumbnails.removeClass('sp-animated'); if (typeof callback === 'function') { callback() } - that.trigger({ type: 'thumbnailsMoveComplete' }); if ($.isFunction(that.settings.thumbnailsMoveComplete)) { that.settings.thumbnailsMoveComplete.call(that, { type: 'thumbnailsMoveComplete' }) } - }) - } - css[this.vendorPrefix + 'transition'] = transition; this.$thumbnails.css(css) - } else { - css['margin-' + this.thumbnailsPositionProperty] = position; if (typeof instant !== 'undefined' && instant === true) { this.$thumbnails.css(css) } else { - this.$thumbnails.addClass('sp-animated').animate(css, 700, function () { - that.$thumbnails.removeClass('sp-animated'); if (typeof callback === 'function') { callback() } - that.trigger({ type: 'thumbnailsMoveComplete' }); if ($.isFunction(that.settings.thumbnailsMoveComplete)) { that.settings.thumbnailsMoveComplete.call(that, { type: 'thumbnailsMoveComplete' }) } - }) - } - } - }, _stopThumbnailsMovement: function () { - var css = {}; if (this.supportedAnimation === 'css-3d' || this.supportedAnimation === 'css-2d') { - var matrixString = this.$thumbnails.css(this.vendorPrefix + 'transform'), matrixType = matrixString.indexOf('matrix3d') !== -1 ? 'matrix3d' : 'matrix', matrixArray = matrixString.replace(matrixType, '').match(/-?[0-9\.]+/g), left = matrixType === 'matrix3d' ? parseInt(matrixArray[12], 10) : parseInt(matrixArray[4], 10), top = matrixType === 'matrix3d' ? parseInt(matrixArray[13], 10) : parseInt(matrixArray[5], 10); if (this.supportedAnimation === 'css-3d') { css[this.vendorPrefix + 'transform'] = 'translate3d(' + left + 'px, ' + top + 'px, 0)' } else { css[this.vendorPrefix + 'transform'] = 'translate(' + left + 'px, ' + top + 'px)' } - css[this.vendorPrefix + 'transition'] = ''; this.$thumbnails.css(css); this.$thumbnails.off(this.transitionEvent); this.thumbnailsPosition = this.thumbnailsOrientation === 'horizontal' ? parseInt(matrixArray[4], 10) : parseInt(matrixArray[5], 10) - } else { this.$thumbnails.stop(); this.thumbnailsPosition = parseInt(this.$thumbnails.css('margin-' + this.thumbnailsPositionProperty), 10) } - this.$thumbnails.removeClass('sp-animated') - }, destroyThumbnails: function () { - var that = this; this.off('update.' + NS); if (this.isThumbnailScroller === false) { return } - this.off('sliderResize.' + NS); this.off('gotoSlide.' + NS); $(window).off('resize.' + this.uniqueId + '.' + NS); this.$thumbnails.find('.sp-thumbnail').each(function () { var $thumbnail = $(this), index = parseInt($thumbnail.attr('data-index'), 10), thumbnail = that.thumbnails[index]; thumbnail.off('thumbnailClick.' + NS); thumbnail.destroy() }); this.thumbnails.length = 0; this.$thumbnails.appendTo(this.$slider); this.$thumbnailsContainer.remove(); this.$slider.css({ 'paddingTop': '', 'paddingLeft': '', 'paddingRight': '' }) - }, thumbnailsDefaults: { thumbnailWidth: 100, thumbnailHeight: 80, thumbnailsPosition: 'bottom', thumbnailPointer: false, thumbnailsUpdate: function () { }, gotoThumbnail: function () { }, thumbnailsMoveComplete: function () { } } - }; var Thumbnail = function (thumbnail, thumbnails, index) { this.$thumbnail = thumbnail; this.$thumbnails = thumbnails; this.$thumbnailContainer = null; this.width = 0; this.height = 0; this.isImageLoaded = false; this.setIndex(index); this._init() }; Thumbnail.prototype = { - _init: function () { - var that = this; this.$thumbnail.attr('data-init', true); this.$thumbnailContainer = $('
').appendTo(this.$thumbnails); if (this.$thumbnail.parent('a').length !== 0) { this.$thumbnail.parent('a').appendTo(this.$thumbnailContainer) } else { this.$thumbnail.appendTo(this.$thumbnailContainer) } - this.$thumbnailContainer.on('click.' + NS, function () { that.trigger({ type: 'thumbnailClick.' + NS, index: that.index }) }) - }, setSize: function (width, height) { this.width = width; this.height = height; this.$thumbnailContainer.css({ 'width': this.width, 'height': this.height }); if (this.$thumbnail.is('img') && typeof this.$thumbnail.attr('data-src') === 'undefined') { this.resizeImage() } }, getSize: function () { return { width: this.$thumbnailContainer.outerWidth(true), height: this.$thumbnailContainer.outerHeight(true) } }, getPosition: function () { return { left: this.$thumbnailContainer.position().left + parseInt(this.$thumbnailContainer.css('marginLeft'), 10), right: this.$thumbnailContainer.position().left + parseInt(this.$thumbnailContainer.css('marginLeft'), 10) + this.$thumbnailContainer.outerWidth(), top: this.$thumbnailContainer.position().top + parseInt(this.$thumbnailContainer.css('marginTop'), 10), bottom: this.$thumbnailContainer.position().top + parseInt(this.$thumbnailContainer.css('marginTop'), 10) + this.$thumbnailContainer.outerHeight() } }, setIndex: function (index) { this.index = index; this.$thumbnail.attr('data-index', this.index) }, resizeImage: function () { - var that = this; if (this.isImageLoaded === false) { SliderProUtils.checkImagesComplete(this.$thumbnailContainer, function () { that.isImageLoaded = true; that.resizeImage() }); return } - this.$thumbnail = this.$thumbnailContainer.find('.sp-thumbnail'); var imageWidth = this.$thumbnail.width(), imageHeight = this.$thumbnail.height(); if (imageWidth / imageHeight <= this.width / this.height) { this.$thumbnail.css({ width: '100%', height: 'auto' }) } else { this.$thumbnail.css({ width: 'auto', height: '100%' }) } - this.$thumbnail.css({ 'marginLeft': (this.$thumbnailContainer.width() - this.$thumbnail.width()) * 0.5, 'marginTop': (this.$thumbnailContainer.height() - this.$thumbnail.height()) * 0.5 }) - }, destroy: function () { - this.$thumbnailContainer.off('click.' + NS); this.$thumbnail.removeAttr('data-init'); this.$thumbnail.removeAttr('data-index'); if (this.$thumbnail.parent('a').length !== 0) { this.$thumbnail.parent('a').insertBefore(this.$thumbnailContainer) } else { this.$thumbnail.insertBefore(this.$thumbnailContainer) } - this.$thumbnailContainer.remove() - }, on: function (type, callback) { return this.$thumbnailContainer.on(type, callback) }, off: function (type) { return this.$thumbnailContainer.off(type) }, trigger: function (data) { return this.$thumbnailContainer.triggerHandler(data) } - }; $.SliderPro.addModule('Thumbnails', Thumbnails) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'ConditionalImages.' + $.SliderPro.namespace; var ConditionalImages = { - previousImageSize: null, currentImageSize: null, isRetinaScreen: false, initConditionalImages: function () { this.currentImageSize = this.previousImageSize = 'default'; this.isRetinaScreen = (typeof this._isRetina !== 'undefined') && (this._isRetina() === true); this.on('update.' + NS, $.proxy(this._conditionalImagesOnUpdate, this)); this.on('sliderResize.' + NS, $.proxy(this._conditionalImagesOnResize, this)) }, _conditionalImagesOnUpdate: function () { $.each(this.slides, function (index, element) { var $slide = element.$slide; $slide.find('img:not([ data-default ])').each(function () { var $image = $(this); if (typeof $image.attr('data-src') !== 'undefined') { $image.attr('data-default', $image.attr('data-src')) } else { $image.attr('data-default', $image.attr('src')) } }) }) }, _conditionalImagesOnResize: function () { - if (this.slideWidth <= this.settings.smallSize) { this.currentImageSize = 'small' } else if (this.slideWidth <= this.settings.mediumSize) { this.currentImageSize = 'medium' } else if (this.slideWidth <= this.settings.largeSize) { this.currentImageSize = 'large' } else { this.currentImageSize = 'default' } - if (this.previousImageSize !== this.currentImageSize) { - var that = this; $.each(this.slides, function (index, element) { - var $slide = element.$slide; $slide.find('img').each(function () { - var $image = $(this), imageSource = ''; if (that.isRetinaScreen === true && typeof $image.attr('data-retina' + that.currentImageSize) !== 'undefined') { imageSource = $image.attr('data-retina' + that.currentImageSize); if (typeof $image.attr('data-retina') !== 'undefined' && $image.attr('data-retina') !== imageSource) { $image.attr('data-retina', imageSource) } } else if ((that.isRetinaScreen === false || that.isRetinaScreen === true && typeof $image.attr('data-retina') === 'undefined') && typeof $image.attr('data-' + that.currentImageSize) !== 'undefined') { imageSource = $image.attr('data-' + that.currentImageSize); if (typeof $image.attr('data-src') !== 'undefined' && $image.attr('data-src') !== imageSource) { $image.attr('data-src', imageSource) } } - if (imageSource !== '') { if (typeof $image.attr('data-src') === 'undefined' && $image.attr('src') !== imageSource) { that._loadConditionalImage($image, imageSource, function (newImage) { if (newImage.hasClass('sp-image')) { element.$mainImage = newImage; element.resizeMainImage(true) } }) } } - }) - }); this.previousImageSize = this.currentImageSize - } - }, _loadConditionalImage: function (image, source, callback) { - var newImage = $(new Image()); newImage.attr('class', image.attr('class')); newImage.attr('style', image.attr('style')); $.each(image.data(), function (name, value) { newImage.attr('data-' + name, value) }); if (typeof image.attr('width') !== 'undefined') { newImage.attr('width', image.attr('width')) } - if (typeof image.attr('height') !== 'undefined') { newImage.attr('height', image.attr('height')) } - if (typeof image.attr('alt') !== 'undefined') { newImage.attr('alt', image.attr('alt')) } - if (typeof image.attr('title') !== 'undefined') { newImage.attr('title', image.attr('title')) } - newImage.attr('src', source); newImage.insertAfter(image); image.remove(); image = null; if (typeof callback === 'function') { callback(newImage) } - }, destroyConditionalImages: function () { this.off('update.' + NS); this.off('sliderResize.' + NS) }, conditionalImagesDefaults: { smallSize: 480, mediumSize: 768, largeSize: 1024 } - }; $.SliderPro.addModule('ConditionalImages', ConditionalImages) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Retina.' + $.SliderPro.namespace; var Retina = { - initRetina: function () { - var that = this; if (this._isRetina() === false) { return } - this.on('update.' + NS, $.proxy(this._checkRetinaImages, this)); if (this.$slider.find('.sp-thumbnail').length !== 0) { this.on('update.Thumbnails.' + NS, $.proxy(this._checkRetinaThumbnailImages, this)) } - }, _isRetina: function () { - if (window.devicePixelRatio >= 2) { return true } - if (window.matchMedia && (window.matchMedia("(-webkit-min-device-pixel-ratio: 2),(min-resolution: 2dppx)").matches)) { return true } - return false - }, _checkRetinaImages: function () { var that = this; $.each(this.slides, function (index, element) { var $slide = element.$slide; if (typeof $slide.attr('data-retina-loaded') === 'undefined') { $slide.attr('data-retina-loaded', true); $slide.find('img[data-retina]').each(function () { var $image = $(this); if (typeof $image.attr('data-src') !== 'undefined') { $image.attr('data-src', $image.attr('data-retina')) } else { that._loadRetinaImage($image, function (newImage) { if (newImage.hasClass('sp-image')) { element.$mainImage = newImage; element.resizeMainImage(true) } }) } }) } }) }, _checkRetinaThumbnailImages: function () { var that = this; $.each(this.thumbnails, function (index, element) { var $thumbnail = element.$thumbnailContainer; if (typeof $thumbnail.attr('data-retina-loaded') === 'undefined') { $thumbnail.attr('data-retina-loaded', true); $thumbnail.find('img[data-retina]').each(function () { var $image = $(this); if (typeof $image.attr('data-src') !== 'undefined') { $image.attr('data-src', $image.attr('data-retina')) } else { that._loadRetinaImage($image, function (newImage) { if (newImage.hasClass('sp-thumbnail')) { element.resizeImage() } }) } }) } }) }, _loadRetinaImage: function (image, callback) { - var retinaFound = false, newImagePath = ''; if (typeof image.attr('data-retina') !== 'undefined') { retinaFound = true; newImagePath = image.attr('data-retina') } - if (typeof image.attr('data-src') !== 'undefined') { - if (retinaFound === false) { newImagePath = image.attr('data-src') } - image.removeAttr('data-src') - } - if (newImagePath === '') { return } - var newImage = $(new Image()); newImage.attr('class', image.attr('class')); newImage.attr('style', image.attr('style')); $.each(image.data(), function (name, value) { newImage.attr('data-' + name, value) }); if (typeof image.attr('width') !== 'undefined') { newImage.attr('width', image.attr('width')) } - if (typeof image.attr('height') !== 'undefined') { newImage.attr('height', image.attr('height')) } - if (typeof image.attr('alt') !== 'undefined') { newImage.attr('alt', image.attr('alt')) } - if (typeof image.attr('title') !== 'undefined') { newImage.attr('title', image.attr('title')) } - newImage.insertAfter(image); image.remove(); image = null; newImage.attr('src', newImagePath); if (typeof callback === 'function') { callback(newImage) } - }, destroyRetina: function () { this.off('update.' + NS); this.off('update.Thumbnails.' + NS) } - }; $.SliderPro.addModule('Retina', Retina) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'LazyLoading.' + $.SliderPro.namespace; var LazyLoading = { - allowLazyLoadingCheck: true, initLazyLoading: function () { var that = this; this.on('sliderResize.' + NS, $.proxy(this._lazyLoadingOnResize, this)); this.on('gotoSlide.' + NS, $.proxy(this._checkAndLoadVisibleImages, this)); this.on('thumbnailsUpdate.' + NS + ' ' + 'thumbnailsMoveComplete.' + NS, $.proxy(this._checkAndLoadVisibleThumbnailImages, this)) }, _lazyLoadingOnResize: function () { - var that = this; if (this.allowLazyLoadingCheck === false) { return } - this.allowLazyLoadingCheck = false; this._checkAndLoadVisibleImages(); if (this.$slider.find('.sp-thumbnail').length !== 0) { this._checkAndLoadVisibleThumbnailImages() } - setTimeout(function () { that.allowLazyLoadingCheck = true }, 500) - }, _checkAndLoadVisibleImages: function () { - if (this.$slider.find('.sp-slide:not([ data-loaded ])').length === 0) { return } - var that = this, referencePosition = this.settings.loop === true ? this.middleSlidePosition : this.selectedSlideIndex, visibleOnSides = Math.ceil((parseInt(this.$slidesMask.css(this.sizeProperty), 10) - this.averageSlideSize) / 2 / this.averageSlideSize), from = referencePosition - visibleOnSides - 1 > 0 ? referencePosition - visibleOnSides - 1 : 0, to = referencePosition + visibleOnSides + 1 < this.getTotalSlides() - 1 ? referencePosition + visibleOnSides + 1 : this.getTotalSlides() - 1, slidesToCheck = this.slidesOrder.slice(from, to + 1); $.each(slidesToCheck, function (index, element) { var slide = that.slides[element], $slide = slide.$slide; if (typeof $slide.attr('data-loaded') === 'undefined') { $slide.attr('data-loaded', true); $slide.find('img[ data-src ]').each(function () { var image = $(this); that._loadImage(image, function (newImage) { if (newImage.hasClass('sp-image')) { slide.$mainImage = newImage; slide.resizeMainImage(true) } }) }) } }) - }, _checkAndLoadVisibleThumbnailImages: function () { - if (this.$slider.find('.sp-thumbnail-container:not([ data-loaded ])').length === 0) { return } - var that = this, thumbnailSize = this.thumbnailsSize / this.thumbnails.length, from = Math.floor(Math.abs(this.thumbnailsPosition / thumbnailSize)), to = Math.floor((-this.thumbnailsPosition + this.thumbnailsContainerSize) / thumbnailSize), thumbnailsToCheck = this.thumbnails.slice(from, to + 1); $.each(thumbnailsToCheck, function (index, element) { var $thumbnailContainer = element.$thumbnailContainer; if (typeof $thumbnailContainer.attr('data-loaded') === 'undefined') { $thumbnailContainer.attr('data-loaded', true); $thumbnailContainer.find('img[ data-src ]').each(function () { var image = $(this); that._loadImage(image, function () { element.resizeImage() }) }) } }) - }, _loadImage: function (image, callback) { - var newImage = $(new Image()); newImage.attr('class', image.attr('class')); newImage.attr('style', image.attr('style')); $.each(image.data(), function (name, value) { newImage.attr('data-' + name, value) }); if (typeof image.attr('width') !== 'undefined') { newImage.attr('width', image.attr('width')) } - if (typeof image.attr('height') !== 'undefined') { newImage.attr('height', image.attr('height')) } - if (typeof image.attr('alt') !== 'undefined') { newImage.attr('alt', image.attr('alt')) } - if (typeof image.attr('title') !== 'undefined') { newImage.attr('title', image.attr('title')) } - newImage.attr('src', image.attr('data-src')); newImage.removeAttr('data-src'); newImage.insertAfter(image); image.remove(); image = null; if (typeof callback === 'function') { callback(newImage) } - }, destroyLazyLoading: function () { this.off('update.' + NS); this.off('gotoSlide.' + NS); this.off('sliderResize.' + NS); this.off('thumbnailsUpdate.' + NS); this.off('thumbnailsMoveComplete.' + NS) } - }; $.SliderPro.addModule('LazyLoading', LazyLoading) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Layers.' + $.SliderPro.namespace; var Layers = { - layersGotoSlideReference: null, waitForLayersTimer: null, initLayers: function () { this.on('update.' + NS, $.proxy(this._layersOnUpdate, this)); this.on('sliderResize.' + NS, $.proxy(this._layersOnResize, this)); this.on('gotoSlide.' + NS, $.proxy(this._layersOnGotoSlide, this)) }, _layersOnUpdate: function (event) { - var that = this; $.each(this.slides, function (index, element) { - var $slide = element.$slide; this.$slide.find('.sp-layer:not([ data-layer-init ])').each(function () { - var layer = new Layer($(this)); if (typeof element.layers === 'undefined') { element.layers = [] } - element.layers.push(layer); if ($(this).hasClass('sp-static') === false) { - if (typeof element.animatedLayers === 'undefined') { element.animatedLayers = [] } - element.animatedLayers.push(layer) - } - }) - }); if (this.settings.waitForLayers === true) { clearTimeout(this.waitForLayersTimer); this.waitForLayersTimer = setTimeout(function () { that.layersGotoSlideReference = that.gotoSlide; that.gotoSlide = that._layersGotoSlide }, 1) } - setTimeout(function () { that.showLayers(that.selectedSlideIndex) }, 1) - }, _layersOnResize: function () { - var that = this, autoScaleReference, useAutoScale = this.settings.autoScaleLayers, scaleRatio; if (this.settings.autoScaleLayers === false) { return } - if (this.settings.autoScaleReference === -1) { if (typeof this.settings.width === 'string' && this.settings.width.indexOf('%') !== -1) { useAutoScale = false } else { autoScaleReference = parseInt(this.settings.width, 10) } } else { autoScaleReference = this.settings.autoScaleReference } - if (useAutoScale === true && this.slideWidth < autoScaleReference) { scaleRatio = that.slideWidth / autoScaleReference } else { scaleRatio = 1 } - $.each(this.slides, function (index, slide) { if (typeof slide.layers !== 'undefined') { $.each(slide.layers, function (index, layer) { layer.scale(scaleRatio) }) } }) - }, _layersGotoSlide: function (index) { var that = this, animatedLayers = this.slides[this.selectedSlideIndex].animatedLayers; if (this.$slider.hasClass('sp-swiping') || typeof animatedLayers === 'undefined' || animatedLayers.length === 0) { this.layersGotoSlideReference(index) } else { this.on('hideLayersComplete.' + NS, function () { that.off('hideLayersComplete.' + NS); that.layersGotoSlideReference(index) }); this.hideLayers(this.selectedSlideIndex) } }, _layersOnGotoSlide: function (event) { - if (this.previousSlideIndex !== this.selectedSlideIndex) { this.hideLayers(this.previousSlideIndex) } - this.showLayers(this.selectedSlideIndex) - }, showLayers: function (index) { - var that = this, animatedLayers = this.slides[index].animatedLayers, layerCounter = 0; if (typeof animatedLayers === 'undefined') { return } - $.each(animatedLayers, function (index, element) { if (element.isVisible() === true) { layerCounter++; if (layerCounter === animatedLayers.length) { that.trigger({ type: 'showLayersComplete', index: index }); if ($.isFunction(that.settings.showLayersComplete)) { that.settings.showLayersComplete.call(that, { type: 'showLayersComplete', index: index }) } } } else { element.show(function () { layerCounter++; if (layerCounter === animatedLayers.length) { that.trigger({ type: 'showLayersComplete', index: index }); if ($.isFunction(that.settings.showLayersComplete)) { that.settings.showLayersComplete.call(that, { type: 'showLayersComplete', index: index }) } } }) } }) - }, hideLayers: function (index) { - var that = this, animatedLayers = this.slides[index].animatedLayers, layerCounter = 0; if (typeof animatedLayers === 'undefined') { return } - $.each(animatedLayers, function (index, element) { if (element.isVisible() === false) { layerCounter++; if (layerCounter === animatedLayers.length) { that.trigger({ type: 'hideLayersComplete', index: index }); if ($.isFunction(that.settings.hideLayersComplete)) { that.settings.hideLayersComplete.call(that, { type: 'hideLayersComplete', index: index }) } } } else { element.hide(function () { layerCounter++; if (layerCounter === animatedLayers.length) { that.trigger({ type: 'hideLayersComplete', index: index }); if ($.isFunction(that.settings.hideLayersComplete)) { that.settings.hideLayersComplete.call(that, { type: 'hideLayersComplete', index: index }) } } }) } }) - }, destroyLayers: function () { this.off('update.' + NS); this.off('resize.' + NS); this.off('gotoSlide.' + NS); this.off('hideLayersComplete.' + NS) }, layersDefaults: { waitForLayers: false, autoScaleLayers: true, autoScaleReference: -1, showLayersComplete: function () { }, hideLayersComplete: function () { } } - }; var slideDestroy = window.SliderProSlide.prototype.destroy; window.SliderProSlide.prototype.destroy = function () { - if (typeof this.layers !== 'undefined') { $.each(this.layers, function (index, element) { element.destroy() }); this.layers.length = 0 } - if (typeof this.animatedLayers !== 'undefined') { this.animatedLayers.length = 0 } - slideDestroy.apply(this) - }; var Layer = function (layer) { this.$layer = layer; this.visible = false; this.styled = false; this.data = null; this.position = null; this.horizontalProperty = null; this.verticalProperty = null; this.horizontalPosition = null; this.verticalPosition = null; this.scaleRatio = 1; this.supportedAnimation = SliderProUtils.getSupportedAnimation(); this.vendorPrefix = SliderProUtils.getVendorPrefix(); this.transitionEvent = SliderProUtils.getTransitionEvent(); this.stayTimer = null; this._init() }; Layer.prototype = { - _init: function () { this.$layer.attr('data-layer-init', true); if (this.$layer.hasClass('sp-static')) { this._setStyle() } else { this.$layer.css({ 'visibility': 'hidden' }) } }, _setStyle: function () { - this.styled = true; this.data = this.$layer.data(); if (typeof this.data.width !== 'undefined') { this.$layer.css('width', this.data.width) } - if (typeof this.data.height !== 'undefined') { this.$layer.css('height', this.data.height) } - if (typeof this.data.depth !== 'undefined') { this.$layer.css('z-index', this.data.depth) } - this.position = this.data.position ? (this.data.position).toLowerCase() : 'topleft'; if (this.position.indexOf('right') !== -1) { this.horizontalProperty = 'right' } else if (this.position.indexOf('left') !== -1) { this.horizontalProperty = 'left' } else { this.horizontalProperty = 'center' } - if (this.position.indexOf('bottom') !== -1) { this.verticalProperty = 'bottom' } else if (this.position.indexOf('top') !== -1) { this.verticalProperty = 'top' } else { this.verticalProperty = 'center' } - this._setPosition(); this.scale(this.scaleRatio) - }, _setPosition: function () { - var inlineStyle = this.$layer.attr('style'); this.horizontalPosition = typeof this.data.horizontal !== 'undefined' ? this.data.horizontal : 0; this.verticalPosition = typeof this.data.vertical !== 'undefined' ? this.data.vertical : 0; if (this.horizontalProperty === 'center') { - if (this.$layer.is('img') === false && (typeof inlineStyle === 'undefined' || (typeof inlineStyle !== 'undefined' && inlineStyle.indexOf('width') === -1))) { this.$layer.css('white-space', 'nowrap'); this.$layer.css('width', this.$layer.outerWidth(true)) } - this.$layer.css({ 'marginLeft': 'auto', 'marginRight': 'auto', 'left': this.horizontalPosition, 'right': 0 }) - } else { this.$layer.css(this.horizontalProperty, this.horizontalPosition) } - if (this.verticalProperty === 'center') { - if (this.$layer.is('img') === false && (typeof inlineStyle === 'undefined' || (typeof inlineStyle !== 'undefined' && inlineStyle.indexOf('height') === -1))) { this.$layer.css('white-space', 'nowrap'); this.$layer.css('height', this.$layer.outerHeight(true)) } - this.$layer.css({ 'marginTop': 'auto', 'marginBottom': 'auto', 'top': this.verticalPosition, 'bottom': 0 }) - } else { this.$layer.css(this.verticalProperty, this.verticalPosition) } - }, scale: function (ratio) { - if (this.$layer.hasClass('sp-no-scale')) { return } - this.scaleRatio = ratio; if (this.styled === false) { return } - var horizontalProperty = this.horizontalProperty === 'center' ? 'left' : this.horizontalProperty, verticalProperty = this.verticalProperty === 'center' ? 'top' : this.verticalProperty, css = {}; css[this.vendorPrefix + 'transform-origin'] = this.horizontalProperty + ' ' + this.verticalProperty; css[this.vendorPrefix + 'transform'] = 'scale(' + this.scaleRatio + ')'; if (typeof this.horizontalPosition !== 'string') { css[horizontalProperty] = this.horizontalPosition * this.scaleRatio } - if (typeof this.verticalPosition !== 'string') { css[verticalProperty] = this.verticalPosition * this.scaleRatio } - if (typeof this.data.width === 'string' && this.data.width.indexOf('%') !== -1) { css.width = (parseInt(this.data.width, 10) / this.scaleRatio).toString() + '%' } - if (typeof this.data.height === 'string' && this.data.height.indexOf('%') !== -1) { css.height = (parseInt(this.data.height, 10) / this.scaleRatio).toString() + '%' } - this.$layer.css(css) - }, show: function (callback) { - if (this.visible === true) { return } - this.visible = true; if (this.styled === false) { this._setStyle() } - var that = this, offset = typeof this.data.showOffset !== 'undefined' ? this.data.showOffset : 50, duration = typeof this.data.showDuration !== 'undefined' ? this.data.showDuration / 1000 : 0.4, delay = typeof this.data.showDelay !== 'undefined' ? this.data.showDelay : 10, stayDuration = typeof that.data.stayDuration !== 'undefined' ? parseInt(that.data.stayDuration, 10) : -1; if (this.supportedAnimation === 'javascript') { - this.$layer.stop().delay(delay).css({ 'opacity': 0, 'visibility': 'visible' }).animate({ 'opacity': 1 }, duration * 1000, function () { - if (stayDuration !== -1) { that.stayTimer = setTimeout(function () { that.hide(); that.stayTimer = null }, stayDuration) } - if (typeof callback !== 'undefined') { callback() } - }) - } else { - var start = { 'opacity': 0, 'visibility': 'visible' }, target = { 'opacity': 1 }, transformValues = ''; start[this.vendorPrefix + 'transform'] = 'scale(' + this.scaleRatio + ')'; target[this.vendorPrefix + 'transform'] = 'scale(' + this.scaleRatio + ')'; target[this.vendorPrefix + 'transition'] = 'opacity ' + duration + 's'; if (typeof this.data.showTransition !== 'undefined') { - if (this.data.showTransition === 'left') { transformValues = offset + 'px, 0' } else if (this.data.showTransition === 'right') { transformValues = '-' + offset + 'px, 0' } else if (this.data.showTransition === 'up') { transformValues = '0, ' + offset + 'px' } else if (this.data.showTransition === 'down') { transformValues = '0, -' + offset + 'px' } - start[this.vendorPrefix + 'transform'] += this.supportedAnimation === 'css-3d' ? ' translate3d(' + transformValues + ', 0)' : ' translate(' + transformValues + ')'; target[this.vendorPrefix + 'transform'] += this.supportedAnimation === 'css-3d' ? ' translate3d(0, 0, 0)' : ' translate(0, 0)'; target[this.vendorPrefix + 'transition'] += ', ' + this.vendorPrefix + 'transform ' + duration + 's' - } - this.$layer.on(this.transitionEvent, function (event) { - if (event.target !== event.currentTarget) { return } - that.$layer.off(that.transitionEvent).css(that.vendorPrefix + 'transition', ''); if (stayDuration !== -1) { that.stayTimer = setTimeout(function () { that.hide(); that.stayTimer = null }, stayDuration) } - if (typeof callback !== 'undefined') { callback() } - }); this.$layer.css(start); setTimeout(function () { that.$layer.css(target) }, delay) - } - }, hide: function (callback) { - if (this.visible === false) { return } - var that = this, offset = typeof this.data.hideOffset !== 'undefined' ? this.data.hideOffset : 50, duration = typeof this.data.hideDuration !== 'undefined' ? this.data.hideDuration / 1000 : 0.4, delay = typeof this.data.hideDelay !== 'undefined' ? this.data.hideDelay : 10; this.visible = false; if (this.stayTimer !== null) { clearTimeout(this.stayTimer) } - if (this.supportedAnimation === 'javascript') { this.$layer.stop().delay(delay).animate({ 'opacity': 0 }, duration * 1000, function () { $(this).css('visibility', 'hidden'); if (typeof callback !== 'undefined') { callback() } }) } else { - var transformValues = '', target = { 'opacity': 0 }; target[this.vendorPrefix + 'transform'] = 'scale(' + this.scaleRatio + ')'; target[this.vendorPrefix + 'transition'] = 'opacity ' + duration + 's'; if (typeof this.data.hideTransition !== 'undefined') { - if (this.data.hideTransition === 'left') { transformValues = '-' + offset + 'px, 0' } else if (this.data.hideTransition === 'right') { transformValues = offset + 'px, 0' } else if (this.data.hideTransition === 'up') { transformValues = '0, -' + offset + 'px' } else if (this.data.hideTransition === 'down') { transformValues = '0, ' + offset + 'px' } - target[this.vendorPrefix + 'transform'] += this.supportedAnimation === 'css-3d' ? ' translate3d(' + transformValues + ', 0)' : ' translate(' + transformValues + ')'; target[this.vendorPrefix + 'transition'] += ', ' + this.vendorPrefix + 'transform ' + duration + 's' - } - this.$layer.on(this.transitionEvent, function (event) { - if (event.target !== event.currentTarget) { return } - that.$layer.off(that.transitionEvent).css(that.vendorPrefix + 'transition', ''); if (that.visible === false) { that.$layer.css('visibility', 'hidden') } - if (typeof callback !== 'undefined') { callback() } - }); setTimeout(function () { that.$layer.css(target) }, delay) - } - }, isVisible: function () { - if (this.visible === false || this.$layer.is(':hidden')) { return false } - return true - }, destroy: function () { this.$layer.removeAttr('style'); this.$layer.removeAttr('data-layer-init') } - }; $.SliderPro.addModule('Layers', Layers) -})(window, jQuery); -(function (window, $) { - "use strict"; var NS = 'TouchSwipe.' + $.SliderPro.namespace; var TouchSwipe = { - touchStartPoint: { x: 0, y: 0 }, touchEndPoint: { x: 0, y: 0 }, touchDistance: { x: 0, y: 0 }, touchStartPosition: 0, isTouchMoving: false, touchSwipeEvents: { startEvent: '', moveEvent: '', endEvent: '' }, initTouchSwipe: function () { - var that = this; if (this.settings.touchSwipe === false) { return } - this.touchSwipeEvents.startEvent = 'touchstart' + '.' + NS + ' mousedown' + '.' + NS; this.touchSwipeEvents.moveEvent = 'touchmove' + '.' + NS + ' mousemove' + '.' + NS; this.touchSwipeEvents.endEvent = 'touchend' + '.' + this.uniqueId + '.' + NS + ' mouseup' + '.' + this.uniqueId + '.' + NS; this.$slidesMask.on(this.touchSwipeEvents.startEvent, $.proxy(this._onTouchStart, this)); this.$slidesMask.on('dragstart.' + NS, function (event) { event.preventDefault() }); this.$slidesMask.addClass('sp-grab') - }, _onTouchStart: function (event) { - if ($(event.target).closest('.sp-selectable').length >= 1) { return } - var that = this, eventObject = typeof event.originalEvent.touches !== 'undefined' ? event.originalEvent.touches[0] : event.originalEvent; if (typeof event.originalEvent.touches === 'undefined') { event.preventDefault() } - $(event.target).parents('.sp-slide').find('a').one('click.' + NS, function (event) { event.preventDefault() }); this.touchStartPoint.x = eventObject.pageX || eventObject.clientX; this.touchStartPoint.y = eventObject.pageY || eventObject.clientY; this.touchStartPosition = this.slidesPosition; this.touchDistance.x = this.touchDistance.y = 0; if (this.$slides.hasClass('sp-animated')) { this.isTouchMoving = true; this._stopMovement(); this.touchStartPosition = this.slidesPosition } - this.$slidesMask.on(this.touchSwipeEvents.moveEvent, $.proxy(this._onTouchMove, this)); $(document).on(this.touchSwipeEvents.endEvent, $.proxy(this._onTouchEnd, this)); this.$slidesMask.removeClass('sp-grab').addClass('sp-grabbing'); this.$slider.addClass('sp-swiping') - }, _onTouchMove: function (event) { - var eventObject = typeof event.originalEvent.touches !== 'undefined' ? event.originalEvent.touches[0] : event.originalEvent; this.isTouchMoving = true; this.touchEndPoint.x = eventObject.pageX || eventObject.clientX; this.touchEndPoint.y = eventObject.pageY || eventObject.clientY; this.touchDistance.x = this.touchEndPoint.x - this.touchStartPoint.x; this.touchDistance.y = this.touchEndPoint.y - this.touchStartPoint.y; var distance = this.settings.orientation === 'horizontal' ? this.touchDistance.x : this.touchDistance.y, oppositeDistance = this.settings.orientation === 'horizontal' ? this.touchDistance.y : this.touchDistance.x; if (Math.abs(distance) > Math.abs(oppositeDistance)) { event.preventDefault() } else { return } - if (this.settings.loop === false) { if ((this.slidesPosition > this.touchStartPosition && this.selectedSlideIndex === 0) || (this.slidesPosition < this.touchStartPosition && this.selectedSlideIndex === this.getTotalSlides() - 1)) { distance = distance * 0.2 } } - this._moveTo(this.touchStartPosition + distance, true) - }, _onTouchEnd: function (event) { - var that = this, touchDistance = this.settings.orientation === 'horizontal' ? this.touchDistance.x : this.touchDistance.y; this.$slidesMask.off(this.touchSwipeEvents.moveEvent); $(document).off(this.touchSwipeEvents.endEvent); this.$slidesMask.removeClass('sp-grabbing').addClass('sp-grab'); if (this.isTouchMoving === false || this.isTouchMoving === true && Math.abs(this.touchDistance.x) < 10 && Math.abs(this.touchDistance.y) < 10) { $(event.target).parents('.sp-slide').find('a').off('click.' + NS); this.$slider.removeClass('sp-swiping') } - setTimeout(function () { that.$slider.removeClass('sp-swiping') }, 1); if (this.isTouchMoving === false) { return } - this.isTouchMoving = false; $(event.target).parents('.sp-slide').one('click', function (event) { event.preventDefault() }); var selectedSlideOffset = this.settings.centerSelectedSlide === true ? Math.round((parseInt(this.$slidesMask.css(this.sizeProperty), 10) - this.getSlideAt(this.selectedSlideIndex).getSize()[this.sizeProperty]) / 2) : 0, oldSlidesPosition = -parseInt(this.$slides.find('.sp-slide').eq(this.selectedSlideIndex).css(this.positionProperty), 10) + selectedSlideOffset; if (Math.abs(touchDistance) < this.settings.touchSwipeThreshold) { this._moveTo(oldSlidesPosition) } else { var slideArrayDistance = (this.settings.rightToLeft === true && this.settings.orientation === 'horizontal' ? -1 : 1) * touchDistance / (this.averageSlideSize + this.settings.slideDistance); slideArrayDistance = parseInt(slideArrayDistance, 10) + (slideArrayDistance > 0 ? 1 : -1); var nextSlideIndex = this.slidesOrder[$.inArray(this.selectedSlideIndex, this.slidesOrder) - slideArrayDistance]; if (this.settings.loop === true) { this.gotoSlide(nextSlideIndex) } else { if (typeof nextSlideIndex !== 'undefined') { this.gotoSlide(nextSlideIndex) } else { this._moveTo(oldSlidesPosition) } } } - }, destroyTouchSwipe: function () { this.$slidesMask.off(this.touchSwipeEvents.startEvent); this.$slidesMask.off(this.touchSwipeEvents.moveEvent); this.$slidesMask.off('dragstart.' + NS); $(document).off(this.touchSwipeEvents.endEvent); this.$slidesMask.removeClass('sp-grab') }, touchSwipeDefaults: { touchSwipe: true, touchSwipeThreshold: 50 } - }; $.SliderPro.addModule('TouchSwipe', TouchSwipe) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Caption.' + $.SliderPro.namespace; var Caption = { - $captionContainer: null, captionContent: '', initCaption: function () { this.on('update.' + NS, $.proxy(this._captionOnUpdate, this)); this.on('gotoSlide.' + NS, $.proxy(this._updateCaptionContent, this)) }, _captionOnUpdate: function () { - this.$captionContainer = this.$slider.find('.sp-caption-container'); if (this.$slider.find('.sp-caption').length && this.$captionContainer.length === 0) { this.$captionContainer = $('
').appendTo(this.$slider); this._updateCaptionContent() } - this.$slides.find('.sp-caption').each(function () { $(this).css('display', 'none') }) - }, _updateCaptionContent: function () { - var that = this, newCaptionField = this.$slider.find('.sp-slide').eq(this.selectedSlideIndex).find('.sp-caption'), newCaptionContent = newCaptionField.length !== 0 ? newCaptionField.html() : ''; if (this.settings.fadeCaption === true) { - if (this.captionContent !== '') { - if (parseFloat(this.$captionContainer.css('opacity'), 10) === 0) { this.$captionContainer.css(this.vendorPrefix + 'transition', ''); this.$captionContainer.css('opacity', 1) } - this._fadeCaptionTo(0, function () { that.captionContent = newCaptionContent; if (newCaptionContent !== '') { that.$captionContainer.html(that.captionContent); that._fadeCaptionTo(1) } else { that.$captionContainer.empty() } }) - } else { this.captionContent = newCaptionContent; this.$captionContainer.html(this.captionContent); this.$captionContainer.css('opacity', 0); this._fadeCaptionTo(1) } - } else { this.captionContent = newCaptionContent; this.$captionContainer.html(this.captionContent) } - }, _fadeCaptionTo: function (opacity, callback) { - var that = this; if (this.supportedAnimation === 'css-3d' || this.supportedAnimation === 'css-2d') { - setTimeout(function () { var css = { 'opacity': opacity }; css[that.vendorPrefix + 'transition'] = 'opacity ' + that.settings.captionFadeDuration / 1000 + 's'; that.$captionContainer.css(css) }, 1); this.$captionContainer.on(this.transitionEvent, function (event) { - if (event.target !== event.currentTarget) { return } - that.$captionContainer.off(that.transitionEvent); that.$captionContainer.css(that.vendorPrefix + 'transition', ''); if (typeof callback === 'function') { callback() } - }) - } else { this.$captionContainer.stop().animate({ 'opacity': opacity }, this.settings.captionFadeDuration, function () { if (typeof callback === 'function') { callback() } }) } - }, destroyCaption: function () { this.off('update.' + NS); this.off('gotoSlide.' + NS); this.$captionContainer.remove(); this.$slider.find('.sp-caption').each(function () { $(this).css('display', '') }) }, captionDefaults: { fadeCaption: true, captionFadeDuration: 500 } - }; $.SliderPro.addModule('Caption', Caption) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'DeepLinking.' + $.SliderPro.namespace; var DeepLinking = { - initDeepLinking: function () { - var that = this; this.on('init.' + NS, function () { that._gotoHash(window.location.hash) }); this.on('gotoSlide.' + NS, function (event) { - if (that.settings.updateHash === true) { - var slideId = that.$slider.find('.sp-slide').eq(event.index).attr('id'); if (typeof slideId === 'undefined') { slideId = event.index } - window.location.hash = that.$slider.attr('id') + '/' + slideId - } - }); $(window).on('hashchange.' + this.uniqueId + '.' + NS, function () { that._gotoHash(window.location.hash) }) - }, _parseHash: function (hash) { - if (hash !== '') { hash = hash.substring(1); var values = hash.split('/'), slideId = values.pop(), sliderId = hash.slice(0, -slideId.toString().length - 1); if (this.$slider.attr('id') === sliderId) { return { 'sliderID': sliderId, 'slideId': slideId } } } - return false - }, _gotoHash: function (hash) { - var result = this._parseHash(hash); if (result === false) { return } - var slideId = result.slideId, slideIdNumber = parseInt(slideId, 10); if (isNaN(slideIdNumber)) { var slideIndex = this.$slider.find('.sp-slide#' + slideId).index(); if (slideIndex !== -1 && slideIndex !== this.selectedSlideIndex) { this.gotoSlide(slideIndex) } } else if (slideIdNumber !== this.selectedSlideIndex) { this.gotoSlide(slideIdNumber) } - }, destroyDeepLinking: function () { this.off('init.' + NS); this.off('gotoSlide.' + NS); $(window).off('hashchange.' + this.uniqueId + '.' + NS) }, deepLinkingDefaults: { updateHash: false } - }; $.SliderPro.addModule('DeepLinking', DeepLinking) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Autoplay.' + $.SliderPro.namespace; var Autoplay = { - autoplayTimer: null, isTimerRunning: false, isTimerPaused: false, initAutoplay: function () { this.on('update.' + NS, $.proxy(this._autoplayOnUpdate, this)) }, _autoplayOnUpdate: function (event) { if (this.settings.autoplay === true) { this.on('gotoSlide.' + NS, $.proxy(this._autoplayOnGotoSlide, this)); this.on('mouseenter.' + NS, $.proxy(this._autoplayOnMouseEnter, this)); this.on('mouseleave.' + NS, $.proxy(this._autoplayOnMouseLeave, this)); this.startAutoplay() } else { this.off('gotoSlide.' + NS); this.off('mouseenter.' + NS); this.off('mouseleave.' + NS); this.stopAutoplay() } }, _autoplayOnGotoSlide: function (event) { - if (this.isTimerRunning === true) { this.stopAutoplay() } - if (this.isTimerPaused === false) { this.startAutoplay() } - }, _autoplayOnMouseEnter: function (event) { if (this.isTimerRunning && (this.settings.autoplayOnHover === 'pause' || this.settings.autoplayOnHover === 'stop')) { this.stopAutoplay(); this.isTimerPaused = true } }, _autoplayOnMouseLeave: function (event) { if (this.settings.autoplay === true && this.isTimerRunning === false && this.settings.autoplayOnHover !== 'stop') { this.startAutoplay(); this.isTimerPaused = false } }, startAutoplay: function () { var that = this; this.isTimerRunning = true; this.autoplayTimer = setTimeout(function () { if (that.settings.autoplayDirection === 'normal') { that.nextSlide() } else if (that.settings.autoplayDirection === 'backwards') { that.previousSlide() } }, this.settings.autoplayDelay) }, stopAutoplay: function () { this.isTimerRunning = false; this.isTimerPaused = false; clearTimeout(this.autoplayTimer) }, destroyAutoplay: function () { clearTimeout(this.autoplayTimer); this.off('update.' + NS); this.off('gotoSlide.' + NS); this.off('mouseenter.' + NS); this.off('mouseleave.' + NS) }, autoplayDefaults: { autoplay: true, autoplayDelay: 5000, autoplayDirection: 'normal', autoplayOnHover: 'pause' } - }; $.SliderPro.addModule('Autoplay', Autoplay) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Keyboard.' + $.SliderPro.namespace; var Keyboard = { - initKeyboard: function () { - var that = this, hasFocus = false; if (this.settings.keyboard === false) { return } - this.$slider.on('focus.' + NS, function () { hasFocus = true }); this.$slider.on('blur.' + NS, function () { hasFocus = false }); $(document).on('keydown.' + this.uniqueId + '.' + NS, function (event) { - if (that.settings.keyboardOnlyOnFocus === true && hasFocus === false) { return } - if (event.which === 37) { that.previousSlide() } else if (event.which === 39) { that.nextSlide() } else if (event.which === 13) { var link = that.$slider.find('.sp-slide').eq(that.selectedSlideIndex).find('.sp-image-container a'); if (link.length !== 0) { link[0].click() } } - }) - }, destroyKeyboard: function () { this.$slider.off('focus.' + NS); this.$slider.off('blur.' + NS); $(document).off('keydown.' + this.uniqueId + '.' + NS) }, keyboardDefaults: { keyboard: true, keyboardOnlyOnFocus: false } - }; $.SliderPro.addModule('Keyboard', Keyboard) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'FullScreen.' + $.SliderPro.namespace; var FullScreen = { - isFullScreen: false, $fullScreenButton: null, sizeBeforeFullScreen: {}, initFullScreen: function () { - if (!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled)) { return } - this.on('update.' + NS, $.proxy(this._fullScreenOnUpdate, this)) - }, _fullScreenOnUpdate: function () { - if (this.settings.fullScreen === true && this.$fullScreenButton === null) { this._addFullScreen() } else if (this.settings.fullScreen === false && this.$fullScreenButton !== null) { this._removeFullScreen() } - if (this.settings.fullScreen === true) { if (this.settings.fadeFullScreen === true) { this.$fullScreenButton.addClass('sp-fade-full-screen') } else if (this.settings.fadeFullScreen === false) { this.$fullScreenButton.removeClass('sp-fade-full-screen') } } - }, _addFullScreen: function () { this.$fullScreenButton = $('
').appendTo(this.$slider); this.$fullScreenButton.on('click.' + NS, $.proxy(this._onFullScreenButtonClick, this)); document.addEventListener('fullscreenchange', $.proxy(this._onFullScreenChange, this)); document.addEventListener('mozfullscreenchange', $.proxy(this._onFullScreenChange, this)); document.addEventListener('webkitfullscreenchange', $.proxy(this._onFullScreenChange, this)); document.addEventListener('MSFullscreenChange', $.proxy(this._onFullScreenChange, this)) }, _removeFullScreen: function () { if (this.$fullScreenButton !== null) { this.$fullScreenButton.off('click.' + NS); this.$fullScreenButton.remove(); this.$fullScreenButton = null; document.removeEventListener('fullscreenchange', this._onFullScreenChange); document.removeEventListener('mozfullscreenchange', this._onFullScreenChange); document.removeEventListener('webkitfullscreenchange', this._onFullScreenChange); document.removeEventListener('MSFullscreenChange', this._onFullScreenChange) } }, _onFullScreenButtonClick: function () { if (this.isFullScreen === false) { if (this.instance.requestFullScreen) { this.instance.requestFullScreen() } else if (this.instance.mozRequestFullScreen) { this.instance.mozRequestFullScreen() } else if (this.instance.webkitRequestFullScreen) { this.instance.webkitRequestFullScreen() } else if (this.instance.msRequestFullscreen) { this.instance.msRequestFullscreen() } } else { if (document.exitFullScreen) { document.exitFullScreen() } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen() } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen() } else if (document.msExitFullscreen) { document.msExitFullscreen() } } }, _onFullScreenChange: function () { - this.isFullScreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement ? true : false; if (this.isFullScreen === true) { this.sizeBeforeFullScreen = { forceSize: this.settings.forceSize, autoHeight: this.settings.autoHeight }; this.$slider.addClass('sp-full-screen'); this.settings.forceSize = 'fullWindow'; this.settings.autoHeight = false } else { this.$slider.css('margin', ''); this.$slider.removeClass('sp-full-screen'); this.settings.forceSize = this.sizeBeforeFullScreen.forceSize; this.settings.autoHeight = this.sizeBeforeFullScreen.autoHeight } - this.resize() - }, destroyFullScreen: function () { this.off('update.' + NS); this._removeFullScreen() }, fullScreenDefaults: { fullScreen: false, fadeFullScreen: true } - }; $.SliderPro.addModule('FullScreen', FullScreen) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Buttons.' + $.SliderPro.namespace; var Buttons = { - $buttons: null, initButtons: function () { this.on('update.' + NS, $.proxy(this._buttonsOnUpdate, this)) }, _buttonsOnUpdate: function () { this.$buttons = this.$slider.find('.sp-buttons'); if (this.settings.buttons === true && this.getTotalSlides() > 1 && this.$buttons.length === 0) { this._createButtons() } else if (this.settings.buttons === true && this.getTotalSlides() !== this.$buttons.find('.sp-button').length && this.$buttons.length !== 0) { this._adjustButtons() } else if (this.settings.buttons === false || (this.getTotalSlides() <= 1 && this.$buttons.length !== 0)) { this._removeButtons() } }, _createButtons: function () { - var that = this; this.$buttons = $('
').appendTo(this.$slider); for (var i = 0; i < this.getTotalSlides(); i++) { $('
').appendTo(this.$buttons) } - this.$buttons.on('click.' + NS, '.sp-button', function () { that.gotoSlide($(this).index()) }); this.$buttons.find('.sp-button').eq(this.selectedSlideIndex).addClass('sp-selected-button'); this.on('gotoSlide.' + NS, function (event) { that.$buttons.find('.sp-selected-button').removeClass('sp-selected-button'); that.$buttons.find('.sp-button').eq(event.index).addClass('sp-selected-button') }); this.$slider.addClass('sp-has-buttons') - }, _adjustButtons: function () { - this.$buttons.empty(); for (var i = 0; i < this.getTotalSlides(); i++) { $('
').appendTo(this.$buttons) } - this.$buttons.find('.sp-selected-button').removeClass('sp-selected-button'); this.$buttons.find('.sp-button').eq(this.selectedSlideIndex).addClass('sp-selected-button') - }, _removeButtons: function () { this.$buttons.off('click.' + NS, '.sp-button'); this.off('gotoSlide.' + NS); this.$buttons.remove(); this.$slider.removeClass('sp-has-buttons') }, destroyButtons: function () { this._removeButtons(); this.off('update.' + NS) }, buttonsDefaults: { buttons: true } - }; $.SliderPro.addModule('Buttons', Buttons) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Arrows.' + $.SliderPro.namespace; var Arrows = { - $arrows: null, $previousArrow: null, $nextArrow: null, initArrows: function () { this.on('update.' + NS, $.proxy(this._arrowsOnUpdate, this)); this.on('gotoSlide.' + NS, $.proxy(this._checkArrowsVisibility, this)) }, _arrowsOnUpdate: function () { - var that = this; if (this.settings.arrows === true && this.$arrows === null) { this.$arrows = $('
').appendTo(this.$slidesContainer); this.$previousArrow = $('
').appendTo(this.$arrows); this.$nextArrow = $('
').appendTo(this.$arrows); this.$previousArrow.on('click.' + NS, function () { that.previousSlide() }); this.$nextArrow.on('click.' + NS, function () { that.nextSlide() }); this._checkArrowsVisibility() } else if (this.settings.arrows === false && this.$arrows !== null) { this._removeArrows() } - if (this.settings.arrows === true) { if (this.settings.fadeArrows === true) { this.$arrows.addClass('sp-fade-arrows') } else if (this.settings.fadeArrows === false) { this.$arrows.removeClass('sp-fade-arrows') } } - }, _checkArrowsVisibility: function () { - if (this.settings.arrows === false || this.settings.loop === true) { return } - if (this.selectedSlideIndex === 0) { this.$previousArrow.css('display', 'none') } else { this.$previousArrow.css('display', 'block') } - if (this.selectedSlideIndex === this.getTotalSlides() - 1) { this.$nextArrow.css('display', 'none') } else { this.$nextArrow.css('display', 'block') } - }, _removeArrows: function () { if (this.$arrows !== null) { this.$previousArrow.off('click.' + NS); this.$nextArrow.off('click.' + NS); this.$arrows.remove(); this.$arrows = null } }, destroyArrows: function () { this._removeArrows(); this.off('update.' + NS); this.off('gotoSlide.' + NS) }, arrowsDefaults: { arrows: false, fadeArrows: true } - }; $.SliderPro.addModule('Arrows', Arrows) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'ThumbnailTouchSwipe.' + $.SliderPro.namespace; var ThumbnailTouchSwipe = { - thumbnailTouchStartPoint: { x: 0, y: 0 }, thumbnailTouchEndPoint: { x: 0, y: 0 }, thumbnailTouchDistance: { x: 0, y: 0 }, thumbnailTouchStartPosition: 0, isThumbnailTouchMoving: false, isThumbnailTouchSwipe: false, thumbnailTouchSwipeEvents: { startEvent: '', moveEvent: '', endEvent: '' }, initThumbnailTouchSwipe: function () { this.on('update.' + NS, $.proxy(this._thumbnailTouchSwipeOnUpdate, this)) }, _thumbnailTouchSwipeOnUpdate: function () { - if (this.isThumbnailScroller === false) { return } - if (this.settings.thumbnailTouchSwipe === true && this.isThumbnailTouchSwipe === false) { this.isThumbnailTouchSwipe = true; this.thumbnailTouchSwipeEvents.startEvent = 'touchstart' + '.' + NS + ' mousedown' + '.' + NS; this.thumbnailTouchSwipeEvents.moveEvent = 'touchmove' + '.' + NS + ' mousemove' + '.' + NS; this.thumbnailTouchSwipeEvents.endEvent = 'touchend' + '.' + this.uniqueId + '.' + NS + ' mouseup' + '.' + this.uniqueId + '.' + NS; this.$thumbnails.on(this.thumbnailTouchSwipeEvents.startEvent, $.proxy(this._onThumbnailTouchStart, this)); this.$thumbnails.on('dragstart.' + NS, function (event) { event.preventDefault() }); this.$thumbnails.addClass('sp-grab') } - $.each(this.thumbnails, function (index, thumbnail) { thumbnail.off('thumbnailClick') }) - }, _onThumbnailTouchStart: function (event) { - if ($(event.target).closest('.sp-selectable').length >= 1) { return } - var that = this, eventObject = typeof event.originalEvent.touches !== 'undefined' ? event.originalEvent.touches[0] : event.originalEvent; if (typeof event.originalEvent.touches === 'undefined') { event.preventDefault() } - $(event.target).parents('.sp-thumbnail-container').find('a').one('click.' + NS, function (event) { event.preventDefault() }); this.thumbnailTouchStartPoint.x = eventObject.pageX || eventObject.clientX; this.thumbnailTouchStartPoint.y = eventObject.pageY || eventObject.clientY; this.thumbnailTouchStartPosition = this.thumbnailsPosition; this.thumbnailTouchDistance.x = this.thumbnailTouchDistance.y = 0; if (this.$thumbnails.hasClass('sp-animated')) { this.isThumbnailTouchMoving = true; this._stopThumbnailsMovement(); this.thumbnailTouchStartPosition = this.thumbnailsPosition } - this.$thumbnails.on(this.thumbnailTouchSwipeEvents.moveEvent, $.proxy(this._onThumbnailTouchMove, this)); $(document).on(this.thumbnailTouchSwipeEvents.endEvent, $.proxy(this._onThumbnailTouchEnd, this)); this.$thumbnails.removeClass('sp-grab').addClass('sp-grabbing'); this.$thumbnailsContainer.addClass('sp-swiping') - }, _onThumbnailTouchMove: function (event) { - var eventObject = typeof event.originalEvent.touches !== 'undefined' ? event.originalEvent.touches[0] : event.originalEvent; this.isThumbnailTouchMoving = true; this.thumbnailTouchEndPoint.x = eventObject.pageX || eventObject.clientX; this.thumbnailTouchEndPoint.y = eventObject.pageY || eventObject.clientY; this.thumbnailTouchDistance.x = this.thumbnailTouchEndPoint.x - this.thumbnailTouchStartPoint.x; this.thumbnailTouchDistance.y = this.thumbnailTouchEndPoint.y - this.thumbnailTouchStartPoint.y; var distance = this.thumbnailsOrientation === 'horizontal' ? this.thumbnailTouchDistance.x : this.thumbnailTouchDistance.y, oppositeDistance = this.thumbnailsOrientation === 'horizontal' ? this.thumbnailTouchDistance.y : this.thumbnailTouchDistance.x; if (Math.abs(distance) > Math.abs(oppositeDistance)) { event.preventDefault() } else { return } - if (this.thumbnailsPosition >= 0) { var infOffset = -this.thumbnailTouchStartPosition; distance = infOffset + (distance - infOffset) * 0.2 } else if (this.thumbnailsPosition <= -this.thumbnailsSize + this.thumbnailsContainerSize) { var supOffset = this.thumbnailsSize - this.thumbnailsContainerSize + this.thumbnailTouchStartPosition; distance = -supOffset + (distance + supOffset) * 0.2 } - this._moveThumbnailsTo(this.thumbnailTouchStartPosition + distance, true) - }, _onThumbnailTouchEnd: function (event) { - var that = this, thumbnailTouchDistance = this.thumbnailsOrientation === 'horizontal' ? this.thumbnailTouchDistance.x : this.thumbnailTouchDistance.y; this.$thumbnails.off(this.thumbnailTouchSwipeEvents.moveEvent); $(document).off(this.thumbnailTouchSwipeEvents.endEvent); this.$thumbnails.removeClass('sp-grabbing').addClass('sp-grab'); if (this.isThumbnailTouchMoving === false || this.isThumbnailTouchMoving === true && Math.abs(this.thumbnailTouchDistance.x) < 10 && Math.abs(this.thumbnailTouchDistance.y) < 10) { - var targetThumbnail = $(event.target).hasClass('sp-thumbnail-container') ? $(event.target) : $(event.target).parents('.sp-thumbnail-container'), index = targetThumbnail.index(); if ($(event.target).parents('a').length !== 0) { $(event.target).parents('a').off('click.' + NS); this.$thumbnailsContainer.removeClass('sp-swiping') } else if (index !== this.selectedThumbnailIndex && index !== -1) { this.gotoSlide(index) } - return - } - this.isThumbnailTouchMoving = false; $(event.target).parents('.sp-thumbnail').one('click', function (event) { event.preventDefault() }); setTimeout(function () { that.$thumbnailsContainer.removeClass('sp-swiping') }, 1); if (this.thumbnailsPosition > 0) { this._moveThumbnailsTo(0) } else if (this.thumbnailsPosition < this.thumbnailsContainerSize - this.thumbnailsSize) { this._moveThumbnailsTo(this.thumbnailsContainerSize - this.thumbnailsSize) } - this.trigger({ type: 'thumbnailsMoveComplete' }); if ($.isFunction(this.settings.thumbnailsMoveComplete)) { this.settings.thumbnailsMoveComplete.call(this, { type: 'thumbnailsMoveComplete' }) } - }, destroyThumbnailTouchSwipe: function () { - this.off('update.' + NS); if (this.isThumbnailScroller === false) { return } - this.$thumbnails.off(this.thumbnailTouchSwipeEvents.startEvent); this.$thumbnails.off(this.thumbnailTouchSwipeEvents.moveEvent); this.$thumbnails.off('dragstart.' + NS); $(document).off(this.thumbnailTouchSwipeEvents.endEvent); this.$thumbnails.removeClass('sp-grab') - }, thumbnailTouchSwipeDefaults: { thumbnailTouchSwipe: true } - }; $.SliderPro.addModule('ThumbnailTouchSwipe', ThumbnailTouchSwipe) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'ThumbnailArrows.' + $.SliderPro.namespace; var ThumbnailArrows = { - $thumbnailArrows: null, $previousThumbnailArrow: null, $nextThumbnailArrow: null, initThumbnailArrows: function () { var that = this; this.on('update.' + NS, $.proxy(this._thumbnailArrowsOnUpdate, this)); this.on('sliderResize.' + NS + ' ' + 'thumbnailsMoveComplete.' + NS, function () { if (that.isThumbnailScroller === true && that.settings.thumbnailArrows === true) { that._checkThumbnailArrowsVisibility() } }) }, _thumbnailArrowsOnUpdate: function () { - var that = this; if (this.isThumbnailScroller === false) { return } - if (this.settings.thumbnailArrows === true && this.$thumbnailArrows === null) { this.$thumbnailArrows = $('
').appendTo(this.$thumbnailsContainer); this.$previousThumbnailArrow = $('
').appendTo(this.$thumbnailArrows); this.$nextThumbnailArrow = $('
').appendTo(this.$thumbnailArrows); this.$previousThumbnailArrow.on('click.' + NS, function () { var previousPosition = Math.min(0, that.thumbnailsPosition + that.thumbnailsContainerSize); that._moveThumbnailsTo(previousPosition) }); this.$nextThumbnailArrow.on('click.' + NS, function () { var nextPosition = Math.max(that.thumbnailsContainerSize - that.thumbnailsSize, that.thumbnailsPosition - that.thumbnailsContainerSize); that._moveThumbnailsTo(nextPosition) }) } else if (this.settings.thumbnailArrows === false && this.$thumbnailArrows !== null) { this._removeThumbnailArrows() } - if (this.settings.thumbnailArrows === true) { - if (this.settings.fadeThumbnailArrows === true) { this.$thumbnailArrows.addClass('sp-fade-thumbnail-arrows') } else if (this.settings.fadeThumbnailArrows === false) { this.$thumbnailArrows.removeClass('sp-fade-thumbnail-arrows') } - this._checkThumbnailArrowsVisibility() - } - }, _checkThumbnailArrowsVisibility: function () { - if (this.thumbnailsPosition === 0) { this.$previousThumbnailArrow.css('display', 'none') } else { this.$previousThumbnailArrow.css('display', 'block') } - if (this.thumbnailsPosition === this.thumbnailsContainerSize - this.thumbnailsSize) { this.$nextThumbnailArrow.css('display', 'none') } else { this.$nextThumbnailArrow.css('display', 'block') } - }, _removeThumbnailArrows: function () { if (this.$thumbnailArrows !== null) { this.$previousThumbnailArrow.off('click.' + NS); this.$nextThumbnailArrow.off('click.' + NS); this.$thumbnailArrows.remove(); this.$thumbnailArrows = null } }, destroyThumbnailArrows: function () { this._removeThumbnailArrows(); this.off('update.' + NS); this.off('sliderResize.' + NS); this.off('thumbnailsMoveComplete.' + NS) }, thumbnailArrowsDefaults: { thumbnailArrows: false, fadeThumbnailArrows: true } - }; $.SliderPro.addModule('ThumbnailArrows', ThumbnailArrows) -})(window, jQuery); (function (window, $) { - "use strict"; var NS = 'Video.' + $.SliderPro.namespace; var Video = { - firstInit: false, initVideo: function () { this.on('update.' + NS, $.proxy(this._videoOnUpdate, this)); this.on('gotoSlideComplete.' + NS, $.proxy(this._videoOnGotoSlideComplete, this)) }, _videoOnUpdate: function () { var that = this; this.$slider.find('.sp-video').not('a, [data-video-init]').each(function () { var video = $(this); that._initVideo(video) }); this.$slider.find('a.sp-video').not('[data-video-preinit]').each(function () { var video = $(this); that._preinitVideo(video) }); if (this.firstInit === false) { this.firstInit = true; this._videoOnGotoSlideComplete({ index: this.selectedSlideIndex, previousIndex: -1 }) } }, _initVideo: function (video) { - var that = this; video.attr('data-video-init', true).videoController(); video.on('videoPlay.' + NS, function () { - if (that.settings.playVideoAction === 'stopAutoplay' && typeof that.stopAutoplay !== 'undefined') { that.stopAutoplay(); that.settings.autoplay = false } - var eventObject = { type: 'videoPlay', video: video }; that.trigger(eventObject); if ($.isFunction(that.settings.videoPlay)) { that.settings.videoPlay.call(that, eventObject) } - }); video.on('videoPause.' + NS, function () { - if (that.settings.pauseVideoAction === 'startAutoplay' && typeof that.startAutoplay !== 'undefined') { that.startAutoplay(); that.settings.autoplay = true } - var eventObject = { type: 'videoPause', video: video }; that.trigger(eventObject); if ($.isFunction(that.settings.videoPause)) { that.settings.videoPause.call(that, eventObject) } - }); video.on('videoEnded.' + NS, function () { - if (that.settings.endVideoAction === 'startAutoplay' && typeof that.startAutoplay !== 'undefined') { that.startAutoplay(); that.settings.autoplay = true } else if (that.settings.endVideoAction === 'nextSlide') { that.nextSlide() } else if (that.settings.endVideoAction === 'replayVideo') { video.videoController('replay') } - var eventObject = { type: 'videoEnd', video: video }; that.trigger(eventObject); if ($.isFunction(that.settings.videoEnd)) { that.settings.videoEnd.call(that, eventObject) } - }) - }, _preinitVideo: function (video) { - var that = this; video.attr('data-video-preinit', true); video.on('click.' + NS, function (event) { - if (that.$slider.hasClass('sp-swiping')) { return } - event.preventDefault(); var href = video.attr('href'), iframe, provider, regExp, match, id, src, videoAttributes, videoWidth = video.children('img').attr('width') || video.children('img').width(), videoHeight = video.children('img').attr('height') || video.children('img').height(); if (href.indexOf('youtube') !== -1 || href.indexOf('youtu.be') !== -1) { provider = 'youtube' } else if (href.indexOf('vimeo') !== -1) { provider = 'vimeo' } - regExp = provider === 'youtube' ? /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/ : /http:\/\/(www\.)?vimeo.com\/(\d+)/; match = href.match(regExp); id = match[2]; src = provider === 'youtube' ? '//www.youtube.com/embed/' + id + '?enablejsapi=1&wmode=opaque' : '//player.vimeo.com/video/' + id + '?api=1'; videoAttributes = href.split('?')[1]; if (typeof videoAttributes !== 'undefined') { videoAttributes = videoAttributes.split('&'); $.each(videoAttributes, function (index, value) { if (value.indexOf(id) === -1) { src += '&' + value } }) } - iframe = $('').attr({ 'src': src, 'width': videoWidth, 'height': videoHeight, 'class': video.attr('class'), 'frameborder': 0, 'allowfullscreen': 'allowfullscreen' }).insertBefore(video); that._initVideo(iframe); iframe.videoController('play'); video.css('display', 'none') - }) - }, _videoOnGotoSlideComplete: function (event) { - var previousVideo = this.$slides.find('.sp-slide').eq(event.previousIndex).find('.sp-video[data-video-init]'); if (event.previousIndex !== -1 && previousVideo.length !== 0) { if (this.settings.leaveVideoAction === 'stopVideo') { previousVideo.videoController('stop') } else if (this.settings.leaveVideoAction === 'pauseVideo') { previousVideo.videoController('pause') } else if (this.settings.leaveVideoAction === 'removeVideo') { if (previousVideo.siblings('a.sp-video').length !== 0) { previousVideo.siblings('a.sp-video').css('display', ''); previousVideo.videoController('destroy'); previousVideo.remove() } else { previousVideo.videoController('stop') } } } - if (this.settings.reachVideoAction === 'playVideo') { var loadedVideo = this.$slides.find('.sp-slide').eq(event.index).find('.sp-video[data-video-init]'), unloadedVideo = this.$slides.find('.sp-slide').eq(event.index).find('.sp-video[data-video-preinit]'); if (loadedVideo.length !== 0) { loadedVideo.videoController('play') } else if (unloadedVideo.length !== 0) { unloadedVideo.trigger('click.' + NS) } } - }, destroyVideo: function () { this.$slider.find('.sp-video[ data-video-preinit ]').each(function () { var video = $(this); video.removeAttr('data-video-preinit'); video.off('click.' + NS) }); this.$slider.find('.sp-video[ data-video-init ]').each(function () { var video = $(this); video.removeAttr('data-video-init'); video.off('Video'); video.videoController('destroy') }); this.off('update.' + NS); this.off('gotoSlideComplete.' + NS) }, videoDefaults: { reachVideoAction: 'none', leaveVideoAction: 'pauseVideo', playVideoAction: 'stopAutoplay', pauseVideoAction: 'none', endVideoAction: 'none', videoPlay: function () { }, videoPause: function () { }, videoEnd: function () { } } - }; $.SliderPro.addModule('Video', Video) -})(window, jQuery); (function ($) { - "use strict"; var isIOS = window.navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false; var VideoController = function (instance, options) { this.$video = $(instance); this.options = options; this.settings = {}; this.player = null; this._init() }; VideoController.prototype = { - _init: function () { - this.settings = $.extend({}, this.defaults, this.options); var that = this, players = $.VideoController.players, videoID = this.$video.attr('id'); for (var name in players) { if (typeof players[name] !== 'undefined' && players[name].isType(this.$video)) { this.player = new players[name](this.$video); break } } - if (this.player === null) { return } - var events = ['ready', 'start', 'play', 'pause', 'ended']; $.each(events, function (index, element) { var event = 'video' + element.charAt(0).toUpperCase() + element.slice(1); that.player.on(element, function () { that.trigger({ type: event, video: videoID }); if ($.isFunction(that.settings[event])) { that.settings[event].call(that, { type: event, video: videoID }) } }) }) - }, play: function () { - if (isIOS === true && this.player.isStarted() === false || this.player.getState() === 'playing') { return } - this.player.play() - }, stop: function () { - if (isIOS === true && this.player.isStarted() === false || this.player.getState() === 'stopped') { return } - this.player.stop() - }, pause: function () { - if (isIOS === true && this.player.isStarted() === false || this.player.getState() === 'paused') { return } - this.player.pause() - }, replay: function () { - if (isIOS === true && this.player.isStarted() === false) { return } - this.player.replay() - }, on: function (type, callback) { return this.$video.on(type, callback) }, off: function (type) { return this.$video.off(type) }, trigger: function (data) { return this.$video.triggerHandler(data) }, destroy: function () { - if (this.player.isStarted() === true) { this.stop() } - this.player.off('ready'); this.player.off('start'); this.player.off('play'); this.player.off('pause'); this.player.off('ended'); this.$video.removeData('videoController') - }, defaults: { videoReady: function () { }, videoStart: function () { }, videoPlay: function () { }, videoPause: function () { }, videoEnded: function () { } } - }; $.VideoController = { players: {}, addPlayer: function (name, player) { this.players[name] = player } }; $.fn.videoController = function (options) { var args = Array.prototype.slice.call(arguments, 1); return this.each(function () { if (typeof $(this).data('videoController') === 'undefined') { var newInstance = new VideoController(this, options); $(this).data('videoController', newInstance) } else if (typeof options !== 'undefined') { var currentInstance = $(this).data('videoController'); if (typeof currentInstance[options] === 'function') { currentInstance[options].apply(currentInstance, args) } else { $.error(options + ' does not exist in videoController.') } } }) }; var Video = function (video) { this.$video = video; this.player = null; this.ready = false; this.started = false; this.state = ''; this.events = $({}); this._init() }; Video.prototype = { _init: function () { }, play: function () { }, pause: function () { }, stop: function () { }, replay: function () { }, isType: function () { }, isReady: function () { return this.ready }, isStarted: function () { return this.started }, getState: function () { return this.state }, on: function (type, callback) { return this.events.on(type, callback) }, off: function (type) { return this.events.off(type) }, trigger: function (data) { return this.events.triggerHandler(data) } }; var YoutubeVideoHelper = { youtubeAPIAdded: false, youtubeVideos: [] }; var YoutubeVideo = function (video) { this.init = false; var youtubeAPILoaded = window.YT && window.YT.Player; if (typeof youtubeAPILoaded !== 'undefined') { Video.call(this, video) } else { YoutubeVideoHelper.youtubeVideos.push({ 'video': video, 'scope': this }); if (YoutubeVideoHelper.youtubeAPIAdded === false) { YoutubeVideoHelper.youtubeAPIAdded = true; var tag = document.createElement('script'); tag.src = "//www.youtube.com/player_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); window.onYouTubePlayerAPIReady = function () { $.each(YoutubeVideoHelper.youtubeVideos, function (index, element) { Video.call(element.scope, element.video) }) } } } }; YoutubeVideo.prototype = new Video(); YoutubeVideo.prototype.constructor = YoutubeVideo; $.VideoController.addPlayer('YoutubeVideo', YoutubeVideo); YoutubeVideo.isType = function (video) { - if (video.is('iframe')) { var src = video.attr('src'); if (src.indexOf('youtube.com') !== -1 || src.indexOf('youtu.be') !== -1) { return true } } - return false - }; YoutubeVideo.prototype._init = function () { this.init = true; this._setup() }; YoutubeVideo.prototype._setup = function () { - var that = this; this.player = new YT.Player(this.$video[0], { - events: { - 'onReady': function () { that.trigger({ type: 'ready' }); that.ready = true }, 'onStateChange': function (event) { - switch (event.data) { - case YT.PlayerState.PLAYING: if (that.started === false) { that.started = true; that.trigger({ type: 'start' }) } - that.state = 'playing'; that.trigger({ type: 'play' }); break; case YT.PlayerState.PAUSED: that.state = 'paused'; that.trigger({ type: 'pause' }); break; case YT.PlayerState.ENDED: that.state = 'ended'; that.trigger({ type: 'ended' }); break - } - } - } - }) - }; YoutubeVideo.prototype.play = function () { var that = this; if (this.ready === true) { this.player.playVideo() } else { var timer = setInterval(function () { if (that.ready === true) { clearInterval(timer); that.player.playVideo() } }, 100) } }; YoutubeVideo.prototype.pause = function () { if (isIOS === true) { this.stop() } else { this.player.pauseVideo() } }; YoutubeVideo.prototype.stop = function () { this.player.seekTo(1); this.player.stopVideo(); this.state = 'stopped' }; YoutubeVideo.prototype.replay = function () { this.player.seekTo(1); this.player.playVideo() }; YoutubeVideo.prototype.on = function (type, callback) { var that = this; if (this.init === true) { Video.prototype.on.call(this, type, callback) } else { var timer = setInterval(function () { if (that.init === true) { clearInterval(timer); Video.prototype.on.call(that, type, callback) } }, 100) } }; var VimeoVideoHelper = { vimeoAPIAdded: false, vimeoVideos: [] }; var VimeoVideo = function (video) { this.init = false; if (typeof window.Froogaloop !== 'undefined') { Video.call(this, video) } else { VimeoVideoHelper.vimeoVideos.push({ 'video': video, 'scope': this }); if (VimeoVideoHelper.vimeoAPIAdded === false) { VimeoVideoHelper.vimeoAPIAdded = true; var tag = document.createElement('script'); tag.src = "//a.vimeocdn.com/js/froogaloop2.min.js"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var checkVimeoAPITimer = setInterval(function () { if (typeof window.Froogaloop !== 'undefined') { clearInterval(checkVimeoAPITimer); $.each(VimeoVideoHelper.vimeoVideos, function (index, element) { Video.call(element.scope, element.video) }) } }, 100) } } }; VimeoVideo.prototype = new Video(); VimeoVideo.prototype.constructor = VimeoVideo; $.VideoController.addPlayer('VimeoVideo', VimeoVideo); VimeoVideo.isType = function (video) { - if (video.is('iframe')) { var src = video.attr('src'); if (src.indexOf('vimeo.com') !== -1) { return true } } - return false - }; VimeoVideo.prototype._init = function () { this.init = true; this._setup() }; VimeoVideo.prototype._setup = function () { - var that = this; this.player = $f(this.$video[0]); this.player.addEvent('ready', function () { - that.ready = true; that.trigger({ type: 'ready' }); that.player.addEvent('play', function () { - if (that.started === false) { that.started = true; that.trigger({ type: 'start' }) } - that.state = 'playing'; that.trigger({ type: 'play' }) - }); that.player.addEvent('pause', function () { that.state = 'paused'; that.trigger({ type: 'pause' }) }); that.player.addEvent('finish', function () { that.state = 'ended'; that.trigger({ type: 'ended' }) }) - }) - }; VimeoVideo.prototype.play = function () { var that = this; if (this.ready === true) { this.player.api('play') } else { var timer = setInterval(function () { if (that.ready === true) { clearInterval(timer); that.player.api('play') } }, 100) } }; VimeoVideo.prototype.pause = function () { this.player.api('pause') }; VimeoVideo.prototype.stop = function () { this.player.api('seekTo', 0); this.player.api('pause'); this.state = 'stopped' }; VimeoVideo.prototype.replay = function () { this.player.api('seekTo', 0); this.player.api('play') }; VimeoVideo.prototype.on = function (type, callback) { var that = this; if (this.init === true) { Video.prototype.on.call(this, type, callback) } else { var timer = setInterval(function () { if (that.init === true) { clearInterval(timer); Video.prototype.on.call(that, type, callback) } }, 100) } }; var HTML5Video = function (video) { Video.call(this, video) }; HTML5Video.prototype = new Video(); HTML5Video.prototype.constructor = HTML5Video; $.VideoController.addPlayer('HTML5Video', HTML5Video); HTML5Video.isType = function (video) { - if (video.is('video') && video.hasClass('video-js') === false && video.hasClass('sublime') === false) { return true } - return false - }; HTML5Video.prototype._init = function () { - var that = this; this.player = this.$video[0]; var checkVideoReady = setInterval(function () { - if (that.player.readyState === 4) { - clearInterval(checkVideoReady); that.ready = true; that.trigger({ type: 'ready' }); that.player.addEventListener('play', function () { - if (that.started === false) { that.started = true; that.trigger({ type: 'start' }) } - that.state = 'playing'; that.trigger({ type: 'play' }) - }); that.player.addEventListener('pause', function () { that.state = 'paused'; that.trigger({ type: 'pause' }) }); that.player.addEventListener('ended', function () { that.state = 'ended'; that.trigger({ type: 'ended' }) }) - } - }, 100) - }; HTML5Video.prototype.play = function () { var that = this; if (this.ready === true) { this.player.play() } else { var timer = setInterval(function () { if (that.ready === true) { clearInterval(timer); that.player.play() } }, 100) } }; HTML5Video.prototype.pause = function () { this.player.pause() }; HTML5Video.prototype.stop = function () { this.player.currentTime = 0; this.player.pause(); this.state = 'stopped' }; HTML5Video.prototype.replay = function () { this.player.currentTime = 0; this.player.play() }; var VideoJSVideo = function (video) { Video.call(this, video) }; VideoJSVideo.prototype = new Video(); VideoJSVideo.prototype.constructor = VideoJSVideo; $.VideoController.addPlayer('VideoJSVideo', VideoJSVideo); VideoJSVideo.isType = function (video) { - if ((typeof video.attr('data-videojs-id') !== 'undefined' || video.hasClass('video-js')) && typeof videojs !== 'undefined') { return true } - return false - }; VideoJSVideo.prototype._init = function () { - var that = this, videoID = this.$video.hasClass('video-js') ? this.$video.attr('id') : this.$video.attr('data-videojs-id'); this.player = videojs(videoID); this.player.ready(function () { - that.ready = true; that.trigger({ type: 'ready' }); that.player.on('play', function () { - if (that.started === false) { that.started = true; that.trigger({ type: 'start' }) } - that.state = 'playing'; that.trigger({ type: 'play' }) - }); that.player.on('pause', function () { that.state = 'paused'; that.trigger({ type: 'pause' }) }); that.player.on('ended', function () { that.state = 'ended'; that.trigger({ type: 'ended' }) }) - }) - }; VideoJSVideo.prototype.play = function () { this.player.play() }; VideoJSVideo.prototype.pause = function () { this.player.pause() }; VideoJSVideo.prototype.stop = function () { this.player.currentTime(0); this.player.pause(); this.state = 'stopped' }; VideoJSVideo.prototype.replay = function () { this.player.currentTime(0); this.player.play() }; var SublimeVideo = function (video) { Video.call(this, video) }; SublimeVideo.prototype = new Video(); SublimeVideo.prototype.constructor = SublimeVideo; $.VideoController.addPlayer('SublimeVideo', SublimeVideo); SublimeVideo.isType = function (video) { - if (video.hasClass('sublime') && typeof sublime !== 'undefined') { return true } - return false - }; SublimeVideo.prototype._init = function () { - var that = this; sublime.ready(function () { - that.player = sublime.player(that.$video.attr('id')); that.ready = true; that.trigger({ type: 'ready' }); that.player.on('play', function () { - if (that.started === false) { that.started = true; that.trigger({ type: 'start' }) } - that.state = 'playing'; that.trigger({ type: 'play' }) - }); that.player.on('pause', function () { that.state = 'paused'; that.trigger({ type: 'pause' }) }); that.player.on('stop', function () { that.state = 'stopped'; that.trigger({ type: 'stop' }) }); that.player.on('end', function () { that.state = 'ended'; that.trigger({ type: 'ended' }) }) - }) - }; SublimeVideo.prototype.play = function () { this.player.play() }; SublimeVideo.prototype.pause = function () { this.player.pause() }; SublimeVideo.prototype.stop = function () { this.player.stop() }; SublimeVideo.prototype.replay = function () { this.player.stop(); this.player.play() }; var JWPlayerVideo = function (video) { Video.call(this, video) }; JWPlayerVideo.prototype = new Video(); JWPlayerVideo.prototype.constructor = JWPlayerVideo; $.VideoController.addPlayer('JWPlayerVideo', JWPlayerVideo); JWPlayerVideo.isType = function (video) { - if ((typeof video.attr('data-jwplayer-id') !== 'undefined' || video.hasClass('jwplayer') || video.find("object[data*='jwplayer']").length !== 0) && typeof jwplayer !== 'undefined') { return true } - return false - }; JWPlayerVideo.prototype._init = function () { - var that = this, videoID; if (this.$video.hasClass('jwplayer')) { videoID = this.$video.attr('id') } else if (typeof this.$video.attr('data-jwplayer-id') !== 'undefined') { videoID = this.$video.attr('data-jwplayer-id') } else if (this.$video.find("object[data*='jwplayer']").length !== 0) { videoID = this.$video.find('object').attr('id') } - this.player = jwplayer(videoID); this.player.onReady(function () { - that.ready = true; that.trigger({ type: 'ready' }); that.player.onPlay(function () { - if (that.started === false) { that.started = true; that.trigger({ type: 'start' }) } - that.state = 'playing'; that.trigger({ type: 'play' }) - }); that.player.onPause(function () { that.state = 'paused'; that.trigger({ type: 'pause' }) }); that.player.onComplete(function () { that.state = 'ended'; that.trigger({ type: 'ended' }) }) - }) - }; JWPlayerVideo.prototype.play = function () { this.player.play(true) }; JWPlayerVideo.prototype.pause = function () { this.player.pause(true) }; JWPlayerVideo.prototype.stop = function () { this.player.stop(); this.state = 'stopped' }; JWPlayerVideo.prototype.replay = function () { this.player.seek(0); this.player.play(true) } -})(jQuery); (function (window, $) { - "use strict"; var NS = 'ThumbnailsNc.' + $.SliderPro.namespace; var ThumbnailsNc = { - $thumbnailsNc: null, $thumbnailsNcContainer: null, thumbnailsNc: null, selectedThumbnailNcIndex: 0, thumbnailsNcPositionProperty: null, initThumbnailsNc: function () { - var that = this; if (!this.$slider.children('.sp-nc-thumbnails').length) { return } - this.thumbnailsNc = []; this.on('update.' + NS, $.proxy(this._thumbnailsOnUpdateNc, this)); this.on('gotoSlide.' + NS, function (event) { that._gotoThumbnailNc(event.index) }) - }, _thumbnailsOnUpdateNc: function () { - var that = this; if (this.$thumbnailsNcContainer === null) { this.$thumbnailsNcContainer = $('
').insertAfter(this.$slidesContainer) } - if (this.$thumbnailsNc === null) { - if (this.$slider.find('.sp-nc-thumbnails').length !== 0) { - this.$thumbnailsNc = this.$slider.find('.sp-nc-thumbnails').appendTo(this.$thumbnailsNcContainer); if (this.settings.shuffle === true) { - var thumbnailsNc = this.$thumbnailsNc.find('.sp-nc-thumbnail'), shuffledThumbnails = []; $.each(this.shuffledIndexes, function (index, element) { - var $thumbnail = $(thumbnailsNc[element]); if ($thumbnail.parent('a').length !== 0) { $thumbnail = $thumbnail.parent('a') } - shuffledThumbnails.push($thumbnail) - }); this.$thumbnailsNc.empty().append(shuffledThumbnails) - } - } else { this.$thumbnailsNc = $('
').appendTo(this.$thumbnailsNcContainer) } - } - this.$slides.find('.sp-nc-thumbnail').each(function (index) { - var $thumbnail = $(this), thumbnailIndex = $thumbnail.parents('.sp-slide').index(), lastThumbnailIndex = that.$thumbnailsNc.find('.sp-nc-thumbnail').length - 1; if ($thumbnail.parent('a').length !== 0) { $thumbnail = $thumbnail.parent('a') } - if (thumbnailIndex > lastThumbnailIndex) { $thumbnail.appendTo(that.$thumbnailsNc) } else { $thumbnail.insertBefore(that.$thumbnailsNc.find('.sp-nc-thumbnail').eq(thumbnailIndex)) } - }); for (var i = this.thumbnailsNc.length - 1; i >= 0; i--) { if (this.$thumbnailsNc.find('.sp-nc-thumbnail[data-index="' + i + '"]').length === 0) { var thumbnail = this.thumbnailsNc[i]; thumbnail.destroy(); this.thumbnailsNc.splice(i, 1) } } - this.$thumbnailsNc.find('.sp-nc-thumbnail').each(function (index) { var $thumbnail = $(this); if (typeof $thumbnail.attr('data-init') === 'undefined') { that._createThumbnailNc($thumbnail, index) } else { that.thumbnailsNc[index].setIndexNc(index) } }); if (this.settings.thumbnailPointer === true) { this.$thumbnailsNcContainer.addClass('sp-has-pointer') } else { this.$thumbnailsNcContainer.removeClass('sp-has-pointer') } - this.selectedThumbnailNcIndex = this.selectedSlideIndex; this.$thumbnailsNc.find('.sp-nc-thumbnail-container').eq(this.selectedThumbnailNcIndex).addClass('sp-nc-selected-thumbnail') - }, _createThumbnailNc: function (element, index) { var that = this, thumbnail = new ThumbnailNc(element, this.$thumbnailsNc, index); thumbnail.on('thumbnailClick.' + NS, function (event) { that.gotoSlide(event.index) }); this.thumbnailsNc.splice(index, 0, thumbnail) }, _gotoThumbnailNc: function (index) { var previousIndex = this.selectedThumbnailNcIndex; this.selectedThumbnailNcIndex = index; this.$thumbnailsNc.find('.sp-nc-selected-thumbnail').removeClass('sp-nc-selected-thumbnail'); this.$thumbnailsNc.find('.sp-nc-thumbnail-container').eq(this.selectedThumbnailNcIndex).addClass('sp-nc-selected-thumbnail'); this.trigger({ type: 'gotoThumbnail' }); if ($.isFunction(this.settings.gotoThumbnail)) { this.settings.gotoThumbnail.call(this, { type: 'gotoThumbnail' }) } }, thumbnailsNcDefaults: { thumbnailWidth: 100, thumbnailHeight: 80, thumbnailPointer: false, gotoThumbnail: function () { }, } - }; var ThumbnailNc = function (thumbnail, thumbnailsNc, index) { this.$thumbnail = thumbnail; this.$thumbnailsNc = thumbnailsNc; this.$thumbnailContainer = null; this.width = 0; this.height = 0; this.isImageLoaded = false; this.setIndexNc(index); this._init() }; ThumbnailNc.prototype = { _init: function () { var that = this; this.$thumbnail.attr('data-init', true); this.$thumbnailContainer = $('
').appendTo(this.$thumbnailsNc); this.$thumbnail.appendTo(this.$thumbnailContainer); this.$thumbnailContainer.on('click.' + NS, function () { that.trigger({ type: 'thumbnailClick.' + NS, index: that.index }) }) }, setIndexNc: function (index) { this.index = index; this.$thumbnail.attr('data-index', this.index) }, on: function (type, callback) { return this.$thumbnailContainer.on(type, callback) }, off: function (type) { return this.$thumbnailContainer.off(type) }, trigger: function (data) { return this.$thumbnailContainer.triggerHandler(data) } }; $.SliderPro.addModule('ThumbnailsNc', ThumbnailsNc) -})(window, jQuery); (function ($) { - $.fn.wpexEqualHeights = function (options) { - var $items = this, - $window = $(window), $targets = null; - var $settings = $.extend({ children: '', mobileBreakPoint: '', reset: false }, options); - if (!$($settings.children).length) { return } - function setHeights(el, reset) { - var $tallest = 0; if ($settings.children) { - var $children = el.find($settings.children).not('.vc_row.vc_inner .vc_column-inner'); - $children.each(function () { - var $child = $(this); if (reset) { $child.css('height', '') } - $height = $child.outerHeight(true); - if($child.children().length != 0){ - $height = 0; - var childs = $child.children(); - for(var i = 0;i $tallest) { $tallest = $height } - if(!window.wpexAnimsition.equal_height){ - $child.css("height", $height + 'px'); - } - }); - if(window.wpexAnimsition.equal_height){ - $children.css('height', $tallest + 'px') - } - } - } - $items.each(function () { - var $this = $(this); - if ($this.is(window.wpexAnimsition.container_block)) { - setHeights($this, false) - } else { - $this.imagesLoaded(function () { - setHeights($this, false) }) - } - }); - $window.resize(function () { - $items.each(function () { - setHeights($(this), true) - }) - }) - } -}(jQuery)); (function ($) { - $.fn.extend({ - leanerModal: function (options) { - function close_modal(modal_id) { $(modal_id).removeClass('active'); $("#lean_overlay").fadeOut(); $(modal_id).css({ display: "none" }) } - var defaults = { overlay: .5, closeButton: ".modal_close" }; var overlay = $('
'); if (!$("#lean_overlay").length) { $("body").append(overlay) } - options = $.extend(defaults, options); return this.each(function () { var _options = options; $(this).on("click", function (e) { var modal_id = _options.id; $("#lean_overlay").on("click", function () { close_modal(modal_id) }); $(_options.closeButton).on("click", function () { close_modal(modal_id) }); var modal_height = $(modal_id).outerHeight(); var modal_width = $(modal_id).outerWidth(); $("#lean_overlay").css({ display: "block", opacity: 0 }); $("#lean_overlay").stop(true, true).fadeTo(200, _options.overlay); $(modal_id).css({ display: "block", position: "fixed", opacity: 0, "z-index": 11e3, left: 50 + "%", "margin-left": -(modal_width / 2) + "px" }); $(modal_id).stop(true, true).fadeTo(200, 1).addClass('active'); return false }) }) - } - }) -})(jQuery); (function ($, window, document, undefined) { - var pluginName = 'scrolly2'; function Plugin(element, options) { this.$element = $(element); this.init() } - Plugin.prototype.init = function () { var self = this; this.startPosition = 0; this.offsetTop = this.$element.offset().top; this.height = this.$element.outerHeight(true); this.velocity = this.$element.attr('data-velocity'); this.direction = this.$element.attr('data-direction'); $(window).bind('scroll', function () { self.scrolly2() }) }; Plugin.prototype.scrolly2 = function () { - var viewTop = $(window).scrollTop() - 20; var viewBottom = $(window).scrollTop() + $(window).height() + 20; var elemTop = this.$element.offset().top; var elemBottom = this.$element.offset().top + this.$element.height(); if (elemTop >= viewBottom || elemBottom <= viewTop) { return } - if (this.$element.offset().top > $(window).height()) { if (this.direction !== 'none') { this.startPosition = (this.$element.offset().top - $(window).height()) * Math.abs(this.velocity) } } - var position = this.startPosition + $(window).scrollTop() * this.velocity; var xPos = "50%"; var yPos = "50%"; if (this.direction === 'left') { xPos = position + 'px' } else if (this.direction === 'right') { xPos = 'calc(100% + ' + -position + 'px)' } else if (this.direction === 'down') { var offset = -($(window).height() - this.$element.offset().top - this.$element.height() - parseInt(this.$element.css('paddingTop')) - parseInt(this.$element.css('paddingBottom'))); yPos = 'calc(100% + ' + (offset - $(window).scrollTop() - position) + 'px)' } else { yPos = (this.$element.offset().top - $(window).scrollTop() + position) + 'px' } - this.$element.css({ backgroundPosition: xPos + ' ' + yPos }) - }; $.fn[pluginName] = function (options) { return this.each(function () { if (!$.data(this, 'plugin_' + pluginName)) { $.data(this, 'plugin_' + pluginName, new Plugin(this, options)) } }) } -})(jQuery, window, document); (function () { - 'use strict'; var babelHelpers = {}; babelHelpers.classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function") } }; babelHelpers.createClass = function () { - function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } - return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } - }(); babelHelpers; var sidrStatus = { moving: false, opened: false }; var helper = { - isUrl: function isUrl(str) { var pattern = new RegExp('^(https?:\\/\\/)?' + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.?)+[a-z]{2,}|' + '((\\d{1,3}\\.){3}\\d{1,3}))' + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + '(\\?[;&a-z\\d%_.~+=-]*)?' + '(\\#[-a-z\\d_]*)?$', 'i'); if (pattern.test(str)) { return true } else { return false } }, addPrefixes: function addPrefixes($element) { this.addPrefix($element, 'id'); this.addPrefix($element, 'class'); $element.removeAttr('style') }, addPrefix: function addPrefix($element, attribute) { var toReplace = $element.attr(attribute); if (typeof toReplace === 'string' && toReplace !== '' && toReplace !== 'sidr-inner') { $element.attr(attribute, toReplace.replace(/([A-Za-z0-9_.\-]+)/g, 'sidr-' + attribute + '-$1')) } }, transitions: function () { - var body = document.body || document.documentElement, style = body.style, supported = false, property = 'transition'; if (property in style) { supported = true } else { - (function () { - var prefixes = ['moz', 'webkit', 'o', 'ms'], prefix = undefined, i = undefined; property = property.charAt(0).toUpperCase() + property.substr(1); supported = function () { - for (i = 0; i < prefixes.length; i++) { prefix = prefixes[i]; if (prefix + property in style) { return true } } - return false - }(); property = supported ? '-' + prefix.toLowerCase() + '-' + property.toLowerCase() : null - })() - } - return { supported: supported, property: property } - }() - }; var $$2 = jQuery; var bodyAnimationClass = 'sidr-animating'; var openAction = 'open'; var closeAction = 'close'; var transitionEndEvent = 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend'; var Menu = function () { - function Menu(name) { babelHelpers.classCallCheck(this, Menu); this.name = name; this.item = $$2('#' + name); this.openClass = name === 'sidr' ? 'sidr-open' : 'sidr-open ' + name + '-open'; this.menuWidth = this.item.outerWidth(true); this.speed = this.item.data('speed'); this.side = this.item.data('side'); this.displace = this.item.data('displace'); this.timing = this.item.data('timing'); this.method = this.item.data('method'); this.onOpenCallback = this.item.data('onOpen'); this.onCloseCallback = this.item.data('onClose'); this.onOpenEndCallback = this.item.data('onOpenEnd'); this.onCloseEndCallback = this.item.data('onCloseEnd'); this.body = $$2(this.item.data('body')) } - babelHelpers.createClass(Menu, [{ - key: 'getAnimation', value: function getAnimation(action, element) { - var animation = {}, prop = this.side; if (action === 'open' && element === 'body') { animation[prop] = this.menuWidth + 'px' } else if (action === 'close' && element === 'menu') { animation[prop] = '-' + this.menuWidth + 'px' } else { animation[prop] = 0 } - return animation - } - }, { key: 'prepareBody', value: function prepareBody(action) { var prop = action === 'open' ? 'hidden' : ''; if (this.body.is('body')) { var $html = $$2('html'), scrollTop = $html.scrollTop(); if (this.displace) { $html.css('overflow-x', prop).scrollTop(scrollTop) } else { $html.css('overflow', prop).scrollTop(scrollTop) } } } }, { key: 'openBody', value: function openBody() { if (this.displace) { var transitions = helper.transitions, $body = this.body; if (transitions.supported) { $body.css(transitions.property, this.side + ' ' + this.speed / 1000 + 's ' + this.timing).css(this.side, 0).css({ width: $body.width(), position: 'absolute' }); $body.css(this.side, this.menuWidth + 'px') } else { var bodyAnimation = this.getAnimation(openAction, 'body'); $body.css({ width: $body.width(), position: 'absolute' }).animate(bodyAnimation, { queue: false, duration: this.speed }) } } } }, { - key: 'onCloseBody', value: function onCloseBody() { - var transitions = helper.transitions, resetStyles = { width: '', position: '', right: '', left: '' }; if (transitions.supported) { resetStyles[transitions.property] = '' } - this.body.css(resetStyles).unbind(transitionEndEvent) - } - }, { key: 'closeBody', value: function closeBody() { var _this = this; if (this.displace) { if (helper.transitions.supported) { this.body.css(this.side, 0).one(transitionEndEvent, function () { _this.onCloseBody() }) } else { var bodyAnimation = this.getAnimation(closeAction, 'body'); this.body.animate(bodyAnimation, { queue: false, duration: this.speed, complete: function complete() { _this.onCloseBody() } }) } } } }, { key: 'moveBody', value: function moveBody(action) { if (action === openAction) { this.openBody() } else { this.closeBody() } } }, { key: 'onOpenMenu', value: function onOpenMenu(callback) { var name = this.name; sidrStatus.moving = false; sidrStatus.opened = name; this.item.unbind(transitionEndEvent); this.body.removeClass(bodyAnimationClass).addClass(this.openClass); this.onOpenEndCallback(); if (typeof callback === 'function') { callback(name) } } }, { key: 'openMenu', value: function openMenu(callback) { var _this2 = this; var $item = this.item; if (helper.transitions.supported) { $item.css(this.side, 0).one(transitionEndEvent, function () { _this2.onOpenMenu(callback) }) } else { var menuAnimation = this.getAnimation(openAction, 'menu'); $item.css('display', 'block').animate(menuAnimation, { queue: false, duration: this.speed, complete: function complete() { _this2.onOpenMenu(callback) } }) } } }, { key: 'onCloseMenu', value: function onCloseMenu(callback) { this.item.css({ left: '', right: '' }).unbind(transitionEndEvent); sidrStatus.moving = false; sidrStatus.opened = false; this.body.removeClass(bodyAnimationClass).removeClass(this.openClass); $$2('html').css('overflow', ''); this.onCloseEndCallback(); if (typeof callback === 'function') { callback(name) } } }, { key: 'closeMenu', value: function closeMenu(callback) { var _this3 = this; var item = this.item; if (helper.transitions.supported) { item.css(this.side, '').one(transitionEndEvent, function () { _this3.onCloseMenu(callback) }) } else { var menuAnimation = this.getAnimation(closeAction, 'menu'); item.animate(menuAnimation, { queue: false, duration: this.speed, complete: function complete() { _this3.onCloseMenu() } }) } } }, { key: 'moveMenu', value: function moveMenu(action, callback) { this.body.addClass(bodyAnimationClass); if (action === openAction) { this.openMenu(callback) } else { this.closeMenu(callback) } } }, { key: 'move', value: function move(action, callback) { sidrStatus.moving = true; this.prepareBody(action); this.moveBody(action); this.moveMenu(action, callback) } }, { - key: 'open', value: function open(callback) { - var _this4 = this; if (sidrStatus.opened === this.name || sidrStatus.moving) { return } - if (sidrStatus.opened !== false) { var alreadyOpenedMenu = new Menu(sidrStatus.opened); alreadyOpenedMenu.close(function () { _this4.open(callback) }); return } - this.move('open', callback); this.onOpenCallback() - } - }, { - key: 'close', value: function close(callback) { - if (sidrStatus.opened !== this.name || sidrStatus.moving) { return } - this.move('close', callback); this.onCloseCallback() - } - }, { key: 'toggle', value: function toggle(callback) { if (sidrStatus.opened === this.name) { this.close(callback) } else { this.open(callback) } } }]); return Menu - }(); var $$1 = jQuery; function execute(action, name, callback) { var sidr = new Menu(name); switch (action) { case 'open': sidr.open(callback); break; case 'close': sidr.close(callback); break; case 'toggle': sidr.toggle(callback); break; default: $$1.error('Method ' + action + ' does not exist on jQuery.sidr'); break } } - var i; var $ = jQuery; var publicMethods = ['open', 'close', 'toggle']; var methodName; var methods = {}; var getMethod = function getMethod(methodName) { - return function (name, callback) { - if (typeof name === 'function') { callback = name; name = 'sidr' } else if (!name) { name = 'sidr' } - execute(methodName, name, callback) - } - }; for (i = 0; i < publicMethods.length; i++) { methodName = publicMethods[i]; methods[methodName] = getMethod(methodName) } - function sidr(method) { if (method === 'status') { return sidrStatus } else if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)) } else if (typeof method === 'function' || typeof method === 'string' || !method) { return methods.toggle.apply(this, arguments) } else { $.error('Method ' + method + ' does not exist on jQuery.sidr') } } - var $$3 = jQuery; function fillContent($sideMenu, settings) { - if (typeof settings.source === 'function') { var newContent = settings.source(name); $sideMenu.html(newContent) } else if (typeof settings.source === 'string' && helper.isUrl(settings.source)) { $$3.get(settings.source, function (data) { $sideMenu.html(data) }) } else if (typeof settings.source === 'string') { - var htmlContent = '', selectors = settings.source.split(','); $$3.each(selectors, function (index, element) { htmlContent += '
' + $$3(element).html() + '
' }); if (settings.renaming) { var $htmlContent = $$3('
').html(htmlContent); $htmlContent.find('*').each(function (index, element) { var $element = $$3(element); helper.addPrefixes($element) }); htmlContent = $htmlContent.html() } - $sideMenu.html(htmlContent) - } else if (settings.source !== null) { $$3.error('Invalid Sidr Source') } - return $sideMenu - } - function fnSidr(options) { - var transitions = helper.transitions, settings = $$3.extend({ name: 'sidr', speed: 200, side: 'left', source: null, renaming: true, body: 'body', displace: true, timing: 'ease', method: 'toggle', bind: 'touchstart click', onOpen: function onOpen() { }, onClose: function onClose() { }, onOpenEnd: function onOpenEnd() { }, onCloseEnd: function onCloseEnd() { } }, options), name = settings.name, $sideMenu = $$3('#' + name); if ($sideMenu.length === 0) { $sideMenu = $$3('
').attr('id', name).appendTo($$3('body')) } - if (transitions.supported) { $sideMenu.css(transitions.property, settings.side + ' ' + settings.speed / 1000 + 's ' + settings.timing) } - $sideMenu.addClass('sidr').addClass(settings.side).data({ speed: settings.speed, side: settings.side, body: settings.body, displace: settings.displace, timing: settings.timing, method: settings.method, onOpen: settings.onOpen, onClose: settings.onClose, onOpenEnd: settings.onOpenEnd, onCloseEnd: settings.onCloseEnd }); $sideMenu = fillContent($sideMenu, settings); return this.each(function () { var $this = $$3(this), data = $this.data('sidr'), flag = false; if (!data) { sidrStatus.moving = false; sidrStatus.opened = false; $this.data('sidr', name); $this.bind(settings.bind, function (event) { event.preventDefault(); if (!flag) { flag = true; sidr(settings.method, name); setTimeout(function () { flag = false }, 100) } }) } }) - } - jQuery.sidr = sidr; jQuery.fn.sidr = fnSidr -}()); (function ($, w) { - "use strict"; var methods = (function () { - var c = { bcClass: 'sf-breadcrumb', menuClass: 'sf-js-enabled', anchorClass: 'sf-with-ul', menuArrowClass: 'sf-arrows' }, ios = (function () { - var ios = /^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent); if (ios) { $('html').css('cursor', 'pointer').on('click', $.noop) } - return ios - })(), wp7 = (function () { var style = document.documentElement.style; return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent)) })(), unprefixedPointerEvents = (function () { return (!!w.PointerEvent) })(), toggleMenuClasses = function ($menu, o, add) { - var classes = c.menuClass, method; if (o.cssArrows) { classes += ' ' + c.menuArrowClass } - method = (add) ? 'addClass' : 'removeClass'; $menu[method](classes) - }, setPathToCurrent = function ($menu, o) { return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels).addClass(o.hoverClass + ' ' + c.bcClass).filter(function () { return ($(this).children(o.popUpSelector).hide().show().length) }).removeClass(o.pathClass) }, toggleAnchorClass = function ($li, add) { var method = (add) ? 'addClass' : 'removeClass'; $li.children('a')[method](c.anchorClass) }, toggleTouchAction = function ($menu) { var msTouchAction = $menu.css('ms-touch-action'); var touchAction = $menu.css('touch-action'); touchAction = touchAction || msTouchAction; touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y'; $menu.css({ 'ms-touch-action': touchAction, 'touch-action': touchAction }) }, getMenu = function ($el) { return $el.closest('.' + c.menuClass) }, getOptions = function ($el) { return getMenu($el).data('sfOptions') }, over = function () { var $this = $(this), o = getOptions($this); clearTimeout(o.sfTimer); $this.siblings().superfish('hide').end().superfish('show') }, close = function (o) { o.retainPath = ($.inArray(this[0], o.$path) > -1); this.superfish('hide'); if (!this.parents('.' + o.hoverClass).length) { o.onIdle.call(getMenu(this)); if (o.$path.length) { $.proxy(over, o.$path)() } } }, out = function () { - var $this = $(this), o = getOptions($this); if (ios) { $.proxy(close, $this, o)() } - else { clearTimeout(o.sfTimer); o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay) } - }, touchHandler = function (e) { - var $this = $(this), o = getOptions($this), $ul = $this.siblings(e.data.popUpSelector); if (o.onHandleTouch.call($ul) === false) { return this } - if ($ul.length > 0 && $ul.is(':hidden')) { $this.one('click.superfish', false); if (e.type === 'MSPointerDown' || e.type === 'pointerdown') { $this.trigger('focus') } else { $.proxy(over, $this.parent('li'))() } } - }, applyHandlers = function ($menu, o) { - var targets = 'li:has(' + o.popUpSelector + ')'; if ($.fn.hoverIntent && !o.disableHI) { $menu.hoverIntent(over, out, targets) } - else { $menu.on('mouseenter.superfish', targets, over).on('mouseleave.superfish', targets, out) } - var touchevent = 'MSPointerDown.superfish'; if (unprefixedPointerEvents) { touchevent = 'pointerdown.superfish' } - if (!ios) { touchevent += ' touchend.superfish' } - if (wp7) { touchevent += ' mousedown.superfish' } - $menu.on('focusin.superfish', 'li', over).on('focusout.superfish', 'li', out).on(touchevent, 'a', o, touchHandler) - }; return { - hide: function (instant) { - if (this.length) { - var $this = this, o = getOptions($this); if (!o) { return this } - var not = (o.retainPath === true) ? o.$path : '', $ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector), speed = o.speedOut; if (instant) { $ul.show(); speed = 0 } - o.retainPath = false; if (o.onBeforeHide.call($ul) === false) { return this } - $ul.stop(true, true).animate(o.animationOut, speed, function () { var $this = $(this); o.onHide.call($this) }) - } - return this - }, show: function () { - var o = getOptions(this); if (!o) { return this } - var $this = this.addClass(o.hoverClass), $ul = $this.children(o.popUpSelector); if (o.onBeforeShow.call($ul) === false) { return this } - $ul.stop(true, true).animate(o.animation, o.speed, function () { o.onShow.call($ul) }); return this - }, destroy: function () { - return this.each(function () { - var $this = $(this), o = $this.data('sfOptions'), $hasPopUp; if (!o) { return false } - $hasPopUp = $this.find(o.popUpSelector).parent('li'); clearTimeout(o.sfTimer); toggleMenuClasses($this, o); toggleAnchorClass($hasPopUp); toggleTouchAction($this); $this.off('.superfish').off('.hoverIntent'); $hasPopUp.children(o.popUpSelector).attr('style', function (i, style) { return style.replace(/display[^;]+;?/g, '') }); o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass); $this.find('.' + o.hoverClass).removeClass(o.hoverClass); o.onDestroy.call($this); $this.removeData('sfOptions') - }) - }, init: function (op) { - return this.each(function () { - var $this = $(this); if ($this.data('sfOptions')) { return false } - var o = $.extend({}, $.fn.superfish.defaults, op), $hasPopUp = $this.find(o.popUpSelector).parent('li'); o.$path = setPathToCurrent($this, o); $this.data('sfOptions', o); toggleMenuClasses($this, o, true); toggleAnchorClass($hasPopUp, true); toggleTouchAction($this); applyHandlers($this, o); $hasPopUp.not('.' + c.bcClass).superfish('hide', true); o.onInit.call(this) - }) - } - } - })(); $.fn.superfish = function (method, args) { - if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)) } - else if (typeof method === 'object' || !method) { return methods.init.apply(this, arguments) } - else { return $.error('Method ' + method + ' does not exist on jQuery.fn.superfish') } - }; $.fn.superfish.defaults = { popUpSelector: 'ul,.sf-mega', hoverClass: 'sfHover', pathClass: 'overrideThisToUse', pathLevels: 1, delay: 800, animation: { opacity: 'show' }, animationOut: { opacity: 'hide' }, speed: 'normal', speedOut: 'fast', cssArrows: true, disableHI: false, onInit: $.noop, onBeforeShow: $.noop, onShow: $.noop, onBeforeHide: $.noop, onHide: $.noop, onIdle: $.noop, onDestroy: $.noop, onHandleTouch: $.noop } -})(jQuery, window); (function ($) { $.fn.supersubs = function (options) { var opts = $.extend({}, $.fn.supersubs.defaults, options); return this.each(function () { var $$ = $(this); var o = $.meta ? $.extend({}, opts, $$.data()) : opts; $ULs = $$.find("ul").show(); var fontsize = $('').css({ "padding": 0, "position": "absolute", "top": "-999em", "width": "auto" }).appendTo($$)[0].clientWidth; $("#menu-fontsize").remove(); $ULs.each(function (i) { var $ul = $(this); var $LIs = $ul.children(); var $As = $LIs.children("a"); var liFloat = $LIs.css("white-space", "nowrap").css("float"); $ul.add($LIs).add($As).css({ "float": "none", "width": "auto" }); var emWidth = $ul[0].clientWidth / fontsize; emWidth += o.extraWidth; if (emWidth > o.maxWidth) emWidth = o.maxWidth; else if (emWidth < o.minWidth) emWidth = o.minWidth; emWidth += "em"; $ul.css("width", emWidth); $LIs.css({ "float": liFloat, "width": "100%", "white-space": "normal" }).each(function () { var $childUl = $(this).children("ul"); var offsetDirection = $childUl.css("left") !== undefined ? "left" : "right"; $childUl.css(offsetDirection, "100%") }) }).hide() }) }; $.fn.supersubs.defaults = { minWidth: 9, maxWidth: 25, extraWidth: 0 } })(jQuery); (function ($) { function maybeCall(thing, ctx) { return typeof thing == "function" ? thing.call(ctx) : thing } function isElementInDOM(ele) { while (ele = ele.parentNode) if (ele == document) return true; return false } function Tipsy(element, options) { this.$element = $(element); this.options = options; this.enabled = true; this.fixTitle() } Tipsy.prototype = { show: function () { var title = this.getTitle(); if (title && this.enabled) { var $tip = this.tip(); $tip.find(".tipsy-inner")[this.options.html ? "html" : "text"](title); $tip[0].className = "tipsy"; $tip.remove().css({ top: 0, left: 0, visibility: "hidden", display: "block" }).prependTo(document.body); var pos = $.extend({}, this.$element.offset(), { width: this.$element[0].offsetWidth, height: this.$element[0].offsetHeight }); var actualWidth = $tip[0].offsetWidth, actualHeight = $tip[0].offsetHeight, gravity = maybeCall(this.options.gravity, this.$element[0]); var tp; switch (gravity.charAt(0)) { case "n": tp = { top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2 }; break; case "s": tp = { top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2 }; break; case "e": tp = { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset }; break; case "w": tp = { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset }; break }if (gravity.length == 2) if (gravity.charAt(1) == "w") tp.left = pos.left + pos.width / 2 - 15; else tp.left = pos.left + pos.width / 2 - actualWidth + 15; $tip.css(tp).addClass("tipsy-" + gravity); $tip.find(".tipsy-arrow")[0].className = "tipsy-arrow tipsy-arrow-" + gravity.charAt(0); if (this.options.className) $tip.addClass(maybeCall(this.options.className, this.$element[0])); if (this.options.fade) $tip.stop().css({ opacity: 0, display: "block", visibility: "visible" }).animate({ opacity: this.options.opacity }); else $tip.css({ visibility: "visible", opacity: this.options.opacity }) } }, hide: function () { if (this.options.fade) this.tip().stop().fadeOut(function () { $(this).remove() }); else this.tip().remove() }, fixTitle: function () { var $e = this.$element; if ($e.attr("title") || typeof $e.attr("original-title") != "string") $e.attr("original-title", $e.attr("title") || "").removeAttr("title") }, getTitle: function () { var title, $e = this.$element, o = this.options; this.fixTitle(); var title, o = this.options; if (typeof o.title == "string") title = $e.attr(o.title == "title" ? "original-title" : o.title); else if (typeof o.title == "function") title = o.title.call($e[0]); title = ("" + title).replace(/(^\s*|\s*$)/, ""); return title || o.fallback }, tip: function () { if (!this.$tip) { this.$tip = $('
').html('
'); this.$tip.data("tipsy-pointee", this.$element[0]) } return this.$tip }, validate: function () { if (!this.$element[0].parentNode) { this.hide(); this.$element = null; this.options = null } }, enable: function () { this.enabled = true }, disable: function () { this.enabled = false }, toggleEnabled: function () { this.enabled = !this.enabled } }; $.fn.tipsy = function (options) { if (options === true) return this.data("tipsy"); else if (typeof options == "string") { var tipsy = this.data("tipsy"); if (tipsy) tipsy[options](); return this } options = $.extend({}, $.fn.tipsy.defaults, options); function get(ele) { var tipsy = $.data(ele, "tipsy"); if (!tipsy) { tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options)); $.data(ele, "tipsy", tipsy) } return tipsy } function enter() { var tipsy = get(this); tipsy.hoverState = "in"; if (options.delayIn == 0) tipsy.show(); else { tipsy.fixTitle(); setTimeout(function () { if (tipsy.hoverState == "in") tipsy.show() }, options.delayIn) } } function leave() { var tipsy = get(this); tipsy.hoverState = "out"; if (options.delayOut == 0) tipsy.hide(); else setTimeout(function () { if (tipsy.hoverState == "out") tipsy.hide() }, options.delayOut) } if (!options.live) this.each(function () { get(this) }); if (options.trigger != "manual") { var binder = options.live ? "live" : "bind", eventIn = options.trigger == "hover" ? "mouseenter" : "focus", eventOut = options.trigger == "hover" ? "mouseleave" : "blur"; this[binder](eventIn, enter)[binder](eventOut, leave) } return this }; $.fn.tipsy.defaults = { className: null, delayIn: 0, delayOut: 0, fade: false, fallback: "", gravity: "n", html: false, live: false, offset: 0, opacity: 0.8, title: "title", trigger: "hover" }; $.fn.tipsy.revalidate = function () { $(".tipsy").each(function () { var pointee = $.data(this, "tipsy-pointee"); if (!pointee || !isElementInDOM(pointee)) $(this).remove() }) }; $.fn.tipsy.elementOptions = function (ele, options) { return $.metadata ? $.extend({}, options, $(ele).metadata()) : options }; $.fn.tipsy.autoNS = function () { return $(this).offset().top > $(document).scrollTop() + $(window).height() / 2 ? "s" : "n" }; $.fn.tipsy.autoWE = function () { return $(this).offset().left > $(document).scrollLeft() + $(window).width() / 2 ? "e" : "w" }; $.fn.tipsy.autoBounds = function (margin, prefer) { return function () { var dir = { ns: prefer[0], ew: prefer.length > 1 ? prefer[1] : false }, boundTop = $(document).scrollTop() + margin, boundLeft = $(document).scrollLeft() + margin, $this = $(this); if ($this.offset().top < boundTop) dir.ns = "n"; if ($this.offset().left < boundLeft) dir.ew = "w"; if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = "e"; if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = "s"; return dir.ns + (dir.ew ? dir.ew : "") } } })(jQuery); !function (a, b) { "use strict"; if ("function" != typeof a.createEvent) return false; var c, d, e, f, g, h, i, j, k = "undefined" != typeof jQuery, l = function (a) { var b = a.toLowerCase(), c = "MS" + a; return navigator.msPointerEnabled ? c : b }, m = false, n = { touchstart: l("PointerDown") + " touchstart", touchend: l("PointerUp") + " touchend", touchmove: l("PointerMove") + " touchmove" }, o = function (a, b, c) { for (var d = b.split(" "), e = d.length; e--;)a.addEventListener(d[e], c, false) }, p = function (a) { return a.targetTouches ? a.targetTouches[0] : a }, q = function () { return (new Date).getTime() }, r = function (b, e, f, g) { var h = a.createEvent("Event"); if (h.originalEvent = f, g = g || {}, g.x = c, g.y = d, g.distance = g.distance, k && (h = jQuery.Event(e, { originalEvent: f }), jQuery(b).trigger(h, g)), h.initEvent) { for (var i in g) h[i] = g[i]; h.initEvent(e, true, true), b.dispatchEvent(h) } for (; b;)b["on" + e] && b["on" + e](h), b = b.parentNode }, s = function (a) { if ("mousedown" !== a.type && (m = true), "mousedown" !== a.type || !m) { var b = p(a); e = c = b.pageX, f = d = b.pageY, j = setTimeout(function () { r(a.target, "longtap", a), h = a.target }, y), g = q(), B++ } }, t = function (a) { if ("mouseup" === a.type && m) return void (m = false); var b = [], k = q(), l = f - d, n = e - c; if (clearTimeout(i), clearTimeout(j), -v >= n && b.push("swiperight"), n >= v && b.push("swipeleft"), -v >= l && b.push("swipedown"), l >= v && b.push("swipeup"), b.length) { for (var o = 0; o < b.length; o++) { var p = b[o]; r(a.target, p, a, { distance: { x: Math.abs(n), y: Math.abs(l) } }) } B = 0 } else e >= c - z && c + z >= e && f >= d - z && d + z >= f && g + w - k >= 0 && (r(a.target, B >= 2 && h === a.target ? "dbltap" : "tap", a), h = a.target), i = setTimeout(function () { B = 0 }, x) }, u = function (a) { if ("mousemove" !== a.type || !m) { var b = p(a); c = b.pageX, d = b.pageY } }, v = b.SWIPE_THRESHOLD || 100, w = b.TAP_THRESHOLD || 150, x = b.DBL_TAP_THRESHOLD || 200, y = b.LONG_TAP_THRESHOLD || 1e3, z = b.TAP_PRECISION / 2 || 30, A = b.JUST_ON_TOUCH_DEVICES, B = 0; o(a, n.touchstart + (A ? "" : " mousedown"), s), o(a, n.touchend + (A ? "" : " mouseup"), t), o(a, n.touchmove + (A ? "" : " mousemove"), u) }(document, window); (function (a) { if (typeof define === "function" && define.amd && define.amd.jQuery) { define(["jquery"], a) } else { a(jQuery) } }(function (f) { var p = "left", o = "right", e = "up", x = "down", c = "in", z = "out", m = "none", s = "auto", l = "swipe", t = "pinch", A = "tap", j = "doubletap", b = "longtap", y = "hold", D = "horizontal", u = "vertical", i = "all", r = 10, g = "start", k = "move", h = "end", q = "cancel", a = "ontouchstart" in window, v = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled, d = window.navigator.pointerEnabled || window.navigator.msPointerEnabled, B = "TouchSwipe"; var n = { fingers: 1, threshold: 75, cancelThreshold: null, pinchThreshold: 20, maxTimeThreshold: null, fingerReleaseThreshold: 250, longTapThreshold: 500, doubleTapThreshold: 200, swipe: null, swipeLeft: null, swipeRight: null, swipeUp: null, swipeDown: null, swipeStatus: null, pinchIn: null, pinchOut: null, pinchStatus: null, click: null, tap: null, doubleTap: null, longTap: null, hold: null, triggerOnTouchEnd: true, triggerOnTouchLeave: false, allowPageScroll: "auto", fallbackToMouseEvents: true, excludedElements: "label, button, input, select, textarea, a, .noSwipe" }; f.fn.swipe = function (G) { var F = f(this), E = F.data(B); if (E && typeof G === "string") { if (E[G]) { return E[G].apply(this, Array.prototype.slice.call(arguments, 1)) } else { f.error("Method " + G + " does not exist on jQuery.swipe") } } else { if (!E && (typeof G === "object" || !G)) { return w.apply(this, arguments) } } return F }; f.fn.swipe.defaults = n; f.fn.swipe.phases = { PHASE_START: g, PHASE_MOVE: k, PHASE_END: h, PHASE_CANCEL: q }; f.fn.swipe.directions = { LEFT: p, RIGHT: o, UP: e, DOWN: x, IN: c, OUT: z }; f.fn.swipe.pageScroll = { NONE: m, HORIZONTAL: D, VERTICAL: u, AUTO: s }; f.fn.swipe.fingers = { ONE: 1, TWO: 2, THREE: 3, ALL: i }; function w(E) { if (E && (E.allowPageScroll === undefined && (E.swipe !== undefined || E.swipeStatus !== undefined))) { E.allowPageScroll = m } if (E.click !== undefined && E.tap === undefined) { E.tap = E.click } if (!E) { E = {} } E = f.extend({}, f.fn.swipe.defaults, E); return this.each(function () { var G = f(this); var F = G.data(B); if (!F) { F = new C(this, E); G.data(B, F) } }) } function C(a4, av) { var az = (a || d || !av.fallbackToMouseEvents), J = az ? (d ? (v ? "MSPointerDown" : "pointerdown") : "touchstart") : "mousedown", ay = az ? (d ? (v ? "MSPointerMove" : "pointermove") : "touchmove") : "mousemove", U = az ? (d ? (v ? "MSPointerUp" : "pointerup") : "touchend") : "mouseup", S = az ? null : "mouseleave", aD = (d ? (v ? "MSPointerCancel" : "pointercancel") : "touchcancel"); var ag = 0, aP = null, ab = 0, a1 = 0, aZ = 0, G = 1, aq = 0, aJ = 0, M = null; var aR = f(a4); var Z = "start"; var W = 0; var aQ = null; var T = 0, a2 = 0, a5 = 0, ad = 0, N = 0; var aW = null, af = null; try { aR.bind(J, aN); aR.bind(aD, a9) } catch (ak) { f.error("events not supported " + J + "," + aD + " on jQuery.swipe") } this.enable = function () { aR.bind(J, aN); aR.bind(aD, a9); return aR }; this.disable = function () { aK(); return aR }; this.destroy = function () { aK(); aR.data(B, null); return aR }; this.option = function (bc, bb) { if (av[bc] !== undefined) { if (bb === undefined) { return av[bc] } else { av[bc] = bb } } else { f.error("Option " + bc + " does not exist on jQuery.swipe.options") } return null }; function aN(bd) { if (aB()) { return } if (f(bd.target).closest(av.excludedElements, aR).length > 0) { return } var be = bd.originalEvent ? bd.originalEvent : bd; var bc, bb = a ? be.touches[0] : be; Z = g; if (a) { W = be.touches.length } else { bd.preventDefault() } ag = 0; aP = null; aJ = null; ab = 0; a1 = 0; aZ = 0; G = 1; aq = 0; aQ = aj(); M = aa(); R(); if (!a || (W === av.fingers || av.fingers === i) || aX()) { ai(0, bb); T = at(); if (W == 2) { ai(1, be.touches[1]); a1 = aZ = au(aQ[0].start, aQ[1].start) } if (av.swipeStatus || av.pinchStatus) { bc = O(be, Z) } } else { bc = false } if (bc === false) { Z = q; O(be, Z); return bc } else { if (av.hold) { af = setTimeout(f.proxy(function () { aR.trigger("hold", [be.target]); if (av.hold) { bc = av.hold.call(aR, be, be.target) } }, this), av.longTapThreshold) } ao(true) } return null } function a3(be) { var bh = be.originalEvent ? be.originalEvent : be; if (Z === h || Z === q || am()) { return } var bd, bc = a ? bh.touches[0] : bh; var bf = aH(bc); a2 = at(); if (a) { W = bh.touches.length } if (av.hold) { clearTimeout(af) } Z = k; if (W == 2) { if (a1 == 0) { ai(1, bh.touches[1]); a1 = aZ = au(aQ[0].start, aQ[1].start) } else { aH(bh.touches[1]); aZ = au(aQ[0].end, aQ[1].end); aJ = ar(aQ[0].end, aQ[1].end) } G = a7(a1, aZ); aq = Math.abs(a1 - aZ) } if ((W === av.fingers || av.fingers === i) || !a || aX()) { aP = aL(bf.start, bf.end); al(be, aP); ag = aS(bf.start, bf.end); ab = aM(); aI(aP, ag); if (av.swipeStatus || av.pinchStatus) { bd = O(bh, Z) } if (!av.triggerOnTouchEnd || av.triggerOnTouchLeave) { var bb = true; if (av.triggerOnTouchLeave) { var bg = aY(this); bb = E(bf.end, bg) } if (!av.triggerOnTouchEnd && bb) { Z = aC(k) } else { if (av.triggerOnTouchLeave && !bb) { Z = aC(h) } } if (Z == q || Z == h) { O(bh, Z) } } } else { Z = q; O(bh, Z) } if (bd === false) { Z = q; O(bh, Z) } } function L(bb) { var bc = bb.originalEvent; if (a) { if (bc.touches.length > 0) { F(); return true } } if (am()) { W = ad } a2 = at(); ab = aM(); if (ba() || !an()) { Z = q; O(bc, Z) } else { if (av.triggerOnTouchEnd || (av.triggerOnTouchEnd == false && Z === k)) { bb.preventDefault(); Z = h; O(bc, Z) } else { if (!av.triggerOnTouchEnd && a6()) { Z = h; aF(bc, Z, A) } else { if (Z === k) { Z = q; O(bc, Z) } } } } ao(false); return null } function a9() { W = 0; a2 = 0; T = 0; a1 = 0; aZ = 0; G = 1; R(); ao(false) } function K(bb) { var bc = bb.originalEvent; if (av.triggerOnTouchLeave) { Z = aC(h); O(bc, Z) } } function aK() { aR.unbind(J, aN); aR.unbind(aD, a9); aR.unbind(ay, a3); aR.unbind(U, L); if (S) { aR.unbind(S, K) } ao(false) } function aC(bf) { var be = bf; var bd = aA(); var bc = an(); var bb = ba(); if (!bd || bb) { be = q } else { if (bc && bf == k && (!av.triggerOnTouchEnd || av.triggerOnTouchLeave)) { be = h } else { if (!bc && bf == h && av.triggerOnTouchLeave) { be = q } } } return be } function O(bd, bb) { var bc = undefined; if (I() || V()) { bc = aF(bd, bb, l) } else { if ((P() || aX()) && bc !== false) { bc = aF(bd, bb, t) } } if (aG() && bc !== false) { bc = aF(bd, bb, j) } else { if (ap() && bc !== false) { bc = aF(bd, bb, b) } else { if (ah() && bc !== false) { bc = aF(bd, bb, A) } } } if (bb === q) { a9(bd) } if (bb === h) { if (a) { if (bd.touches.length == 0) { a9(bd) } } else { a9(bd) } } return bc } function aF(be, bb, bd) { var bc = undefined; if (bd == l) { aR.trigger("swipeStatus", [bb, aP || null, ag || 0, ab || 0, W, aQ]); if (av.swipeStatus) { bc = av.swipeStatus.call(aR, be, bb, aP || null, ag || 0, ab || 0, W, aQ); if (bc === false) { return false } } if (bb == h && aV()) { aR.trigger("swipe", [aP, ag, ab, W, aQ]); if (av.swipe) { bc = av.swipe.call(aR, be, aP, ag, ab, W, aQ); if (bc === false) { return false } } switch (aP) { case p: aR.trigger("swipeLeft", [aP, ag, ab, W, aQ]); if (av.swipeLeft) { bc = av.swipeLeft.call(aR, be, aP, ag, ab, W, aQ) } break; case o: aR.trigger("swipeRight", [aP, ag, ab, W, aQ]); if (av.swipeRight) { bc = av.swipeRight.call(aR, be, aP, ag, ab, W, aQ) } break; case e: aR.trigger("swipeUp", [aP, ag, ab, W, aQ]); if (av.swipeUp) { bc = av.swipeUp.call(aR, be, aP, ag, ab, W, aQ) } break; case x: aR.trigger("swipeDown", [aP, ag, ab, W, aQ]); if (av.swipeDown) { bc = av.swipeDown.call(aR, be, aP, ag, ab, W, aQ) } break } } } if (bd == t) { aR.trigger("pinchStatus", [bb, aJ || null, aq || 0, ab || 0, W, G, aQ]); if (av.pinchStatus) { bc = av.pinchStatus.call(aR, be, bb, aJ || null, aq || 0, ab || 0, W, G, aQ); if (bc === false) { return false } } if (bb == h && a8()) { switch (aJ) { case c: aR.trigger("pinchIn", [aJ || null, aq || 0, ab || 0, W, G, aQ]); if (av.pinchIn) { bc = av.pinchIn.call(aR, be, aJ || null, aq || 0, ab || 0, W, G, aQ) } break; case z: aR.trigger("pinchOut", [aJ || null, aq || 0, ab || 0, W, G, aQ]); if (av.pinchOut) { bc = av.pinchOut.call(aR, be, aJ || null, aq || 0, ab || 0, W, G, aQ) } break } } } if (bd == A) { if (bb === q || bb === h) { clearTimeout(aW); clearTimeout(af); if (Y() && !H()) { N = at(); aW = setTimeout(f.proxy(function () { N = null; aR.trigger("tap", [be.target]); if (av.tap) { bc = av.tap.call(aR, be, be.target) } }, this), av.doubleTapThreshold) } else { N = null; aR.trigger("tap", [be.target]); if (av.tap) { bc = av.tap.call(aR, be, be.target) } } } } else { if (bd == j) { if (bb === q || bb === h) { clearTimeout(aW); N = null; aR.trigger("doubletap", [be.target]); if (av.doubleTap) { bc = av.doubleTap.call(aR, be, be.target) } } } else { if (bd == b) { if (bb === q || bb === h) { clearTimeout(aW); N = null; aR.trigger("longtap", [be.target]); if (av.longTap) { bc = av.longTap.call(aR, be, be.target) } } } } } return bc } function an() { var bb = true; if (av.threshold !== null) { bb = ag >= av.threshold } return bb } function ba() { var bb = false; if (av.cancelThreshold !== null && aP !== null) { bb = (aT(aP) - ag) >= av.cancelThreshold } return bb } function ae() { if (av.pinchThreshold !== null) { return aq >= av.pinchThreshold } return true } function aA() { var bb; if (av.maxTimeThreshold) { if (ab >= av.maxTimeThreshold) { bb = false } else { bb = true } } else { bb = true } return bb } function al(bb, bc) { if (av.allowPageScroll === m || aX()) { bb.preventDefault() } else { var bd = av.allowPageScroll === s; switch (bc) { case p: if ((av.swipeLeft && bd) || (!bd && av.allowPageScroll != D)) { bb.preventDefault() } break; case o: if ((av.swipeRight && bd) || (!bd && av.allowPageScroll != D)) { bb.preventDefault() } break; case e: if ((av.swipeUp && bd) || (!bd && av.allowPageScroll != u)) { bb.preventDefault() } break; case x: if ((av.swipeDown && bd) || (!bd && av.allowPageScroll != u)) { bb.preventDefault() } break } } } function a8() { var bc = aO(); var bb = X(); var bd = ae(); return bc && bb && bd } function aX() { return !!(av.pinchStatus || av.pinchIn || av.pinchOut) } function P() { return !!(a8() && aX()) } function aV() { var be = aA(); var bg = an(); var bd = aO(); var bb = X(); var bc = ba(); var bf = !bc && bb && bd && bg && be; return bf } function V() { return !!(av.swipe || av.swipeStatus || av.swipeLeft || av.swipeRight || av.swipeUp || av.swipeDown) } function I() { return !!(aV() && V()) } function aO() { return ((W === av.fingers || av.fingers === i) || !a) } function X() { return aQ[0].end.x !== 0 } function a6() { return !!(av.tap) } function Y() { return !!(av.doubleTap) } function aU() { return !!(av.longTap) } function Q() { if (N == null) { return false } var bb = at(); return (Y() && ((bb - N) <= av.doubleTapThreshold)) } function H() { return Q() } function ax() { return ((W === 1 || !a) && (isNaN(ag) || ag < av.threshold)) } function a0() { return ((ab > av.longTapThreshold) && (ag < r)) } function ah() { return !!(ax() && a6()) } function aG() { return !!(Q() && Y()) } function ap() { return !!(a0() && aU()) } function F() { a5 = at(); ad = event.touches.length + 1 } function R() { a5 = 0; ad = 0 } function am() { var bb = false; if (a5) { var bc = at() - a5; if (bc <= av.fingerReleaseThreshold) { bb = true } } return bb } function aB() { return !!(aR.data(B + "_intouch") === true) } function ao(bb) { if (bb === true) { aR.bind(ay, a3); aR.bind(U, L); if (S) { aR.bind(S, K) } } else { aR.unbind(ay, a3, false); aR.unbind(U, L, false); if (S) { aR.unbind(S, K, false) } } aR.data(B + "_intouch", bb === true) } function ai(bc, bb) { var bd = bb.identifier !== undefined ? bb.identifier : 0; aQ[bc].identifier = bd; aQ[bc].start.x = aQ[bc].end.x = bb.pageX || bb.clientX; aQ[bc].start.y = aQ[bc].end.y = bb.pageY || bb.clientY; return aQ[bc] } function aH(bb) { var bd = bb.identifier !== undefined ? bb.identifier : 0; var bc = ac(bd); bc.end.x = bb.pageX || bb.clientX; bc.end.y = bb.pageY || bb.clientY; return bc } function ac(bc) { for (var bb = 0; bb < aQ.length; bb++) { if (aQ[bb].identifier == bc) { return aQ[bb] } } } function aj() { var bb = []; for (var bc = 0; bc <= 5; bc++) { bb.push({ start: { x: 0, y: 0 }, end: { x: 0, y: 0 }, identifier: 0 }) } return bb } function aI(bb, bc) { bc = Math.max(bc, aT(bb)); M[bb].distance = bc } function aT(bb) { if (M[bb]) { return M[bb].distance } return undefined } function aa() { var bb = {}; bb[p] = aw(p); bb[o] = aw(o); bb[e] = aw(e); bb[x] = aw(x); return bb } function aw(bb) { return { direction: bb, distance: 0 } } function aM() { return a2 - T } function au(be, bd) { var bc = Math.abs(be.x - bd.x); var bb = Math.abs(be.y - bd.y); return Math.round(Math.sqrt(bc * bc + bb * bb)) } function a7(bb, bc) { var bd = (bc / bb) * 1; return bd.toFixed(2) } function ar() { if (G < 1) { return z } else { return c } } function aS(bc, bb) { return Math.round(Math.sqrt(Math.pow(bb.x - bc.x, 2) + Math.pow(bb.y - bc.y, 2))) } function aE(be, bc) { var bb = be.x - bc.x; var bg = bc.y - be.y; var bd = Math.atan2(bg, bb); var bf = Math.round(bd * 180 / Math.PI); if (bf < 0) { bf = 360 - Math.abs(bf) } return bf } function aL(bc, bb) { var bd = aE(bc, bb); if ((bd <= 45) && (bd >= 0)) { return p } else { if ((bd <= 360) && (bd >= 315)) { return p } else { if ((bd >= 135) && (bd <= 225)) { return o } else { if ((bd > 45) && (bd < 135)) { return x } else { return e } } } } } function at() { var bb = new Date(); return bb.getTime() } function aY(bb) { bb = f(bb); var bd = bb.offset(); var bc = { left: bd.left, right: bd.left + bb.outerWidth(), top: bd.top, bottom: bd.top + bb.outerHeight() }; return bc } function E(bb, bc) { return (bb.x > bc.left && bb.x < bc.right && bb.y > bc.top && bb.y < bc.bottom) } } })); !function ($) { - "use strict"; var Typed = function (el, options) { this.el = $(el); this.options = $.extend({}, $.fn.typed.defaults, options); this.isInput = this.el.is('input'); this.attr = this.options.attr; this.showCursor = this.isInput ? false : this.options.showCursor; this.elContent = this.attr ? this.el.attr(this.attr) : this.el.text(); this.contentType = this.options.contentType; this.typeSpeed = this.options.typeSpeed; this.startDelay = this.options.startDelay; this.backSpeed = this.options.backSpeed; this.backDelay = this.options.backDelay; this.stringsElement = this.options.stringsElement; this.strings = this.options.strings; this.strPos = 0; this.arrayPos = 0; this.stopNum = 0; this.loop = this.options.loop; this.loopCount = this.options.loopCount; this.curLoop = 0; this.stop = false; this.cursorChar = this.options.cursorChar; this.shuffle = this.options.shuffle; this.sequence = []; this.build() }; Typed.prototype = { - constructor: Typed, init: function () { var self = this; self.timeout = setTimeout(function () { for (var i = 0; i < self.strings.length; ++i)self.sequence[i] = i; if (self.shuffle) self.sequence = self.shuffleArray(self.sequence); self.typewrite(self.strings[self.sequence[self.arrayPos]], self.strPos) }, self.startDelay) }, build: function () { - var self = this; if (this.showCursor === true) { this.cursor = $("" + this.cursorChar + ""); this.el.after(this.cursor) } - if (this.stringsElement) { this.strings = []; this.stringsElement.hide(); console.log(this.stringsElement.children()); var strings = this.stringsElement.children(); $.each(strings, function (key, value) { self.strings.push($(value).html()) }) } - this.init() - }, typewrite: function (curString, curStrPos) { - if (this.stop === true) { return } - var humanize = Math.round(Math.random() * (100 - 30)) + this.typeSpeed; var self = this; self.timeout = setTimeout(function () { - var charPause = 0; var substr = curString.substr(curStrPos); if (substr.charAt(0) === '^') { - var skip = 1; if (/^\^\d+/.test(substr)) { substr = /\d+/.exec(substr)[0]; skip += substr.length; charPause = parseInt(substr) } - curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip) - } - if (self.contentType === 'html') { - var curChar = curString.substr(curStrPos).charAt(0) - if (curChar === '<' || curChar === '&') { - var tag = ''; var endTag = ''; if (curChar === '<') { endTag = '>' } - else { endTag = ';' } - while (curString.substr(curStrPos + 1).charAt(0) !== endTag) { tag += curString.substr(curStrPos).charAt(0); curStrPos++; if (curStrPos + 1 > curString.length) { break } } - curStrPos++; tag += endTag - } - } - self.timeout = setTimeout(function () { - if (curStrPos === curString.length) { - self.options.onStringTyped(self.arrayPos); if (self.arrayPos === self.strings.length - 1) { - self.options.callback(); self.curLoop++; if (self.loop === false || self.curLoop === self.loopCount) - return - } - self.timeout = setTimeout(function () { self.backspace(curString, curStrPos) }, self.backDelay) - } else { - if (curStrPos === 0) { self.options.preStringTyped(self.arrayPos) } - var nextString = curString.substr(0, curStrPos + 1); if (self.attr) { self.el.attr(self.attr, nextString) } else { if (self.isInput) { self.el.val(nextString) } else if (self.contentType === 'html') { self.el.html(nextString) } else { self.el.text(nextString) } } - curStrPos++; self.typewrite(curString, curStrPos) - } - }, charPause) - }, humanize) - }, backspace: function (curString, curStrPos) { - if (this.stop === true) { return } - var humanize = Math.round(Math.random() * (100 - 30)) + this.backSpeed; var self = this; self.timeout = setTimeout(function () { - if (self.contentType === 'html') { - if (curString.substr(curStrPos).charAt(0) === '>') { - var tag = ''; while (curString.substr(curStrPos - 1).charAt(0) !== '<') { tag -= curString.substr(curStrPos).charAt(0); curStrPos--; if (curStrPos < 0) { break } } - curStrPos--; tag += '<' - } - } - var nextString = curString.substr(0, curStrPos); if (self.attr) { self.el.attr(self.attr, nextString) } else { if (self.isInput) { self.el.val(nextString) } else if (self.contentType === 'html') { self.el.html(nextString) } else { self.el.text(nextString) } } - if (curStrPos > self.stopNum) { curStrPos--; self.backspace(curString, curStrPos) } - else if (curStrPos <= self.stopNum) { self.arrayPos++; if (self.arrayPos === self.strings.length) { self.arrayPos = 0; if (self.shuffle) self.sequence = self.shuffleArray(self.sequence); self.init() } else self.typewrite(self.strings[self.sequence[self.arrayPos]], curStrPos) } - }, humanize) - }, shuffleArray: function (array) { - var tmp, current, top = array.length; if (top) while (--top) { current = Math.floor(Math.random() * (top + 1)); tmp = array[current]; array[current] = array[top]; array[top] = tmp } - return array - }, reset: function () { - var self = this; clearInterval(self.timeout); var id = this.el.attr('id'); this.el.empty(); if (typeof this.cursor !== 'undefined') { this.cursor.remove() } - this.strPos = 0; this.arrayPos = 0; this.curLoop = 0; this.options.resetCallback() - } - }; $.fn.typed = function (option) { - return this.each(function () { - var $this = $(this), data = $this.data('typed'), options = typeof option == 'object' && option; if (data) { data.reset() } - $this.data('typed', (data = new Typed(this, options))); if (typeof option == 'string') data[option]() - }) - }; $.fn.typed.defaults = { strings: ["These are the default values...", "You know what you should do?", "Use your own!", "Have a great day!"], stringsElement: null, typeSpeed: 0, startDelay: 0, backSpeed: 0, shuffle: false, backDelay: 500, loop: false, loopCount: false, showCursor: true, cursorChar: "|", attr: null, contentType: 'html', callback: function () { }, preStringTyped: function () { }, onStringTyped: function () { }, resetCallback: function () { } } -}(window.jQuery); (function ($, window, document, undefined) { - function wpexOwl(element, options) { this.settings = null; this.options = $.extend({}, wpexOwl.Defaults, options); this.$element = $(element); this._handlers = {}; this._plugins = {}; this._supress = {}; this._current = null; this._speed = null; this._coordinates = []; this._breakpoint = null; this._width = null; this._items = []; this._clones = []; this._mergers = []; this._widths = []; this._invalidated = {}; this._pipe = []; this._drag = { time: null, target: null, pointer: null, stage: { start: null, current: null }, direction: null }; this._states = { current: {}, tags: { 'initializing': ['busy'], 'animating': ['busy'], 'dragging': ['interacting'] } }; $.each(['onResize', 'onThrottledResize'], $.proxy(function (i, handler) { this._handlers[handler] = $.proxy(this[handler], this) }, this)); $.each(wpexOwl.Plugins, $.proxy(function (key, plugin) { this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] = new plugin(this) }, this)); $.each(wpexOwl.Workers, $.proxy(function (priority, worker) { this._pipe.push({ 'filter': worker.filter, 'run': $.proxy(worker.run, this) }) }, this)); this.setup(); this.initialize() } - wpexOwl.Defaults = { items: 3, loop: false, center: false, rewind: false, mouseDrag: true, touchDrag: true, pullDrag: true, freeDrag: false, margin: 0, stagePadding: 0, merge: false, mergeFit: true, autoWidth: false, startPosition: 0, rtl: false, smartSpeed: 250, fluidSpeed: false, dragEndSpeed: false, responsive: {}, responsiveRefreshRate: 200, responsiveBaseElement: window, fallbackEasing: 'swing', info: false, nestedItemSelector: false, itemElement: 'div', stageElement: 'div', refreshClass: 'owl-refresh', loadedClass: 'owl-loaded', loadingClass: 'owl-loading', rtlClass: 'owl-rtl', responsiveClass: 'owl-responsive', dragClass: 'owl-drag', itemClass: 'owl-item', stageClass: 'owl-stage', stageOuterClass: 'owl-stage-outer', grabClass: 'owl-grab' }; wpexOwl.Width = { Default: 'default', Inner: 'inner', Outer: 'outer' }; wpexOwl.Type = { Event: 'event', State: 'state' }; wpexOwl.Plugins = {}; wpexOwl.Workers = [{ filter: ['width', 'settings'], run: function () { this._width = this.$element.width() } }, { filter: ['width', 'items', 'settings'], run: function (cache) { cache.current = this._items && this._items[this.relative(this._current)] } }, { filter: ['items', 'settings'], run: function () { this.$stage.children('.cloned').remove() } }, { filter: ['width', 'items', 'settings'], run: function (cache) { var margin = this.settings.margin || '', grid = !this.settings.autoWidth, rtl = this.settings.rtl, css = { 'width': 'auto', 'margin-left': rtl ? margin : '', 'margin-right': rtl ? '' : margin }; !grid && this.$stage.children().css(css); cache.css = css } }, { - filter: ['width', 'items', 'settings'], run: function (cache) { - var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, merge = null, iterator = this._items.length, grid = !this.settings.autoWidth, widths = []; cache.items = { merge: false, width: width }; while (iterator--) { merge = this._mergers[iterator]; merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; cache.items.merge = merge > 1 || cache.items.merge; widths[iterator] = !grid ? this._items[iterator].width() : width * merge } - this._widths = widths - } - }, { - filter: ['items', 'settings'], run: function () { - var clones = [], items = this._items, settings = this.settings, view = Math.max(settings.items * 2, 4), size = Math.ceil(items.length / 2) * 2, repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, append = '', prepend = ''; repeat /= 2; while (repeat--) { clones.push(this.normalize(clones.length / 2, true)); append = append + items[clones[clones.length - 1]][0].outerHTML; clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); prepend = items[clones[clones.length - 1]][0].outerHTML + prepend } - this._clones = clones; $(append).addClass('cloned').appendTo(this.$stage); $(prepend).addClass('cloned').prependTo(this.$stage) - } - }, { - filter: ['width', 'items', 'settings'], run: function () { - var rtl = this.settings.rtl ? 1 : -1, size = this._clones.length + this._items.length, iterator = -1, previous = 0, current = 0, coordinates = []; while (++iterator < size) { previous = coordinates[iterator - 1] || 0; current = this._widths[this.relative(iterator)] + this.settings.margin; coordinates.push(previous + current * rtl) } - this._coordinates = coordinates - } - }, { filter: ['width', 'items', 'settings'], run: function () { var padding = this.settings.stagePadding, coordinates = this._coordinates, css = { 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, 'padding-left': padding || '', 'padding-right': padding || '' }; this.$stage.css(css) } }, { filter: ['width', 'items', 'settings'], run: function (cache) { var iterator = this._coordinates.length, grid = !this.settings.autoWidth, items = this.$stage.children(); if (grid && cache.items.merge) { while (iterator--) { cache.css.width = this._widths[this.relative(iterator)]; items.eq(iterator).css(cache.css) } } else if (grid) { cache.css.width = cache.items.width; items.css(cache.css) } } }, { filter: ['items'], run: function () { this._coordinates.length < 1 && this.$stage.removeAttr('style') } }, { filter: ['width', 'items', 'settings'], run: function (cache) { cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); this.reset(cache.current) } }, { filter: ['position'], run: function () { this.animate(this.coordinates(this._current)) } }, { - filter: ['width', 'position', 'items', 'settings'], run: function () { - var rtl = this.settings.rtl ? 1 : -1, padding = this.settings.stagePadding * 2, begin = this.coordinates(this.current()) + padding, end = begin + this.width() * rtl, inner, outer, matches = [], i, n; for (i = 0, n = this._coordinates.length; i < n; i++) { inner = this._coordinates[i - 1] || 0; outer = Math.abs(this._coordinates[i]) + padding * rtl; if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { matches.push(i) } } - this.$stage.children('.active').removeClass('active'); this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); if (this.settings.center) { this.$stage.children('.center').removeClass('center'); this.$stage.children().eq(this.current()).addClass('center') } - } - }]; wpexOwl.prototype.initialize = function () { - this.enter('initializing'); this.trigger('initialize'); this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); if (this.settings.autoWidth && !this.is('pre-loading')) { var imgs, nestedSelector, width; imgs = this.$element.find('img'); nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; width = this.$element.children(nestedSelector).width(); if (imgs.length && width <= 0) { this.preloadAutoWidthImages(imgs) } } - this.$element.addClass(this.options.loadingClass); this.$stage = $('<' + this.settings.stageElement + ' class="' + this.settings.stageClass + '"/>').wrap('
'); this.$element.append(this.$stage.parent()); this.replace(this.$element.children().not(this.$stage.parent())); if (this.$element.is(':visible')) { this.refresh() } else { this.invalidate('width') } - this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass); this.registerEventHandlers(); this.leave('initializing'); this.trigger('initialized') - }; wpexOwl.prototype.setup = function () { - var viewport = this.viewport(), overwrites = this.options.responsive, match = -1, settings = null; if (!overwrites) { settings = $.extend({}, this.options) } else { $.each(overwrites, function (breakpoint) { if (breakpoint <= viewport && breakpoint > match) { match = Number(breakpoint) } }); settings = $.extend({}, this.options, overwrites[match]); delete settings.responsive; if (settings.responsiveClass) { this.$element.attr('class', this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match)) } } - if (this.settings === null || this._breakpoint !== match) { this.trigger('change', { property: { name: 'settings', value: settings } }); this._breakpoint = match; this.settings = settings; this.invalidate('settings'); this.trigger('changed', { property: { name: 'settings', value: this.settings } }) } - }; wpexOwl.prototype.optionsLogic = function () { if (this.settings.autoWidth) { this.settings.stagePadding = false; this.settings.merge = false } }; wpexOwl.prototype.prepare = function (item) { - var event = this.trigger('prepare', { content: item }); if (!event.data) { event.data = $('<' + this.settings.itemElement + '/>').addClass(this.options.itemClass).append(item) } - this.trigger('prepared', { content: event.data }); return event.data - }; wpexOwl.prototype.update = function () { - var i = 0, n = this._pipe.length, filter = $.proxy(function (p) { return this[p] }, this._invalidated), cache = {}; while (i < n) { - if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { this._pipe[i].run(cache) } - i++ - } - this._invalidated = {}; !this.is('valid') && this.enter('valid') - }; wpexOwl.prototype.width = function (dimension) { dimension = dimension || wpexOwl.Width.Default; switch (dimension) { case wpexOwl.Width.Inner: case wpexOwl.Width.Outer: return this._width; default: return this._width - this.settings.stagePadding * 2 + this.settings.margin } }; wpexOwl.prototype.refresh = function () { this.enter('refreshing'); this.trigger('refresh'); this.setup(); this.optionsLogic(); this.$element.addClass(this.options.refreshClass); this.update(); this.$element.removeClass(this.options.refreshClass); this.leave('refreshing'); this.trigger('refreshed') }; wpexOwl.prototype.onThrottledResize = function () { window.clearTimeout(this.resizeTimer); this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate) }; wpexOwl.prototype.onResize = function () { - if (!this._items.length) { return false } - if (this._width === this.$element.width()) { return false } - if (!this.$element.is(':visible')) { return false } - this.enter('resizing'); if (this.trigger('resize').isDefaultPrevented()) { this.leave('resizing'); return false } - this.invalidate('width'); this.refresh(); this.leave('resizing'); this.trigger('resized') - }; wpexOwl.prototype.registerEventHandlers = function () { - if ($.support.transition) { this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)) } - if (this.settings.responsive !== false) { this.on(window, 'resize', this._handlers.onThrottledResize) } - if (this.settings.mouseDrag) { this.$element.addClass(this.options.dragClass); this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); this.$stage.on('dragstart.owl.core selectstart.owl.core', function () { return false }) } - if (this.settings.touchDrag) { this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)) } - }; wpexOwl.prototype.onDragStart = function (event) { - var stage = null; if (event.which === 3) { return } - if ($.support.transform) { stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); stage = { x: stage[stage.length === 16 ? 12 : 4], y: stage[stage.length === 16 ? 13 : 5] } } else { stage = this.$stage.position(); stage = { x: this.settings.rtl ? stage.left + this.$stage.width() - this.width() + this.settings.margin : stage.left, y: stage.top } } - if (this.is('animating')) { - $.support.transform ? this.animate(stage.x) : this.$stage.stop() - this.invalidate('position') - } - this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); this.speed(0); this._drag.time = new Date().getTime(); this._drag.target = $(event.target); this._drag.stage.start = stage; this._drag.stage.current = stage; this._drag.pointer = this.pointer(event); $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function (event) { - var delta = this.difference(this._drag.pointer, this.pointer(event)); $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { return } - event.preventDefault(); this.enter('dragging'); this.trigger('drag') - }, this)) - }; wpexOwl.prototype.onDragMove = function (event) { - var minimum = null, maximum = null, pull = null, delta = this.difference(this._drag.pointer, this.pointer(event)), stage = this.difference(this._drag.stage.start, delta); if (!this.is('dragging')) { return } - event.preventDefault(); if (this.settings.loop) { minimum = this.coordinates(this.minimum()); maximum = this.coordinates(this.maximum() + 1) - minimum; stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum } else { minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull) } - this._drag.stage.current = stage; this.animate(stage.x) - }; wpexOwl.prototype.onDragEnd = function (event) { - var delta = this.difference(this._drag.pointer, this.pointer(event)), stage = this._drag.stage.current, direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; $(document).off('.owl.core'); this.$element.removeClass(this.options.grabClass); if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); this.invalidate('position'); this.update(); this._drag.direction = direction; if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { this._drag.target.one('click.owl.core', function () { return false }) } } - if (!this.is('dragging')) { return } - this.leave('dragging'); this.trigger('dragged') - }; wpexOwl.prototype.closest = function (coordinate, direction) { - var position = -1, pull = 30, width = this.width(), coordinates = this.coordinates(); if (!this.settings.freeDrag) { - $.each(coordinates, $.proxy(function (index, value) { - if (coordinate > value - pull && coordinate < value + pull) { position = index } else if (this.op(coordinate, '<', value) && this.op(coordinate, '>', coordinates[index + 1] || value - width)) { position = direction === 'left' ? index + 1 : index } - return position === -1 - }, this)) - } - if (!this.settings.loop) { if (this.op(coordinate, '>', coordinates[this.minimum()])) { position = coordinate = this.minimum() } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { position = coordinate = this.maximum() } } - return position - }; wpexOwl.prototype.animate = function (coordinate) { - var animate = this.speed() > 0; this.is('animating') && this.onTransitionEnd(); if (animate) { this.enter('animating'); this.trigger('translate') } - if ($.support.transform3d && $.support.transition) { this.$stage.css({ transform: 'translate3d(' + coordinate + 'px,0px,0px)', transition: (this.speed() / 1000) + 's' }) } else if (animate) { this.$stage.animate({ left: coordinate + 'px' }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)) } else { this.$stage.css({ left: coordinate + 'px' }) } - }; wpexOwl.prototype.is = function (state) { return this._states.current[state] && this._states.current[state] > 0 }; wpexOwl.prototype.current = function (position) { - if (position === undefined) { return this._current } - if (this._items.length === 0) { return undefined } - position = this.normalize(position); if (this._current !== position) { - var event = this.trigger('change', { property: { name: 'position', value: position } }); if (event.data !== undefined) { position = this.normalize(event.data) } - this._current = position; this.invalidate('position'); this.trigger('changed', { property: { name: 'position', value: this._current } }) - } - return this._current - }; wpexOwl.prototype.invalidate = function (part) { - if ($.type(part) === 'string') { this._invalidated[part] = true; this.is('valid') && this.leave('valid') } - return $.map(this._invalidated, function (v, i) { return i }) - }; wpexOwl.prototype.reset = function (position) { - position = this.normalize(position); if (position === undefined) { return } - this._speed = 0; this._current = position; this.suppress(['translate', 'translated']); this.animate(this.coordinates(position)); this.release(['translate', 'translated']) - }; wpexOwl.prototype.normalize = function (position, relative) { - var n = this._items.length, m = relative ? 0 : this._clones.length; if (!$.isNumeric(position) || n < 1) { position = undefined } else if (position < 0 || position >= n + m) { position = ((position - m / 2) % n + n) % n + m / 2 } - return position - }; wpexOwl.prototype.relative = function (position) { position -= this._clones.length / 2; return this.normalize(position, true) }; wpexOwl.prototype.maximum = function (relative) { - var settings = this.settings, maximum = this._coordinates.length, boundary = Math.abs(this._coordinates[maximum - 1]) - this._width, i = -1, j; if (settings.loop) { maximum = this._clones.length / 2 + this._items.length - 1 } else if (settings.autoWidth || settings.merge) { while (maximum - i > 1) { Math.abs(this._coordinates[j = maximum + i >> 1]) < boundary ? i = j : maximum = j } } else if (settings.center) { maximum = this._items.length - 1 } else { maximum = this._items.length - settings.items } - if (relative) { maximum -= this._clones.length / 2 } - return Math.max(maximum, 0) - }; wpexOwl.prototype.minimum = function (relative) { return relative ? 0 : this._clones.length / 2 }; wpexOwl.prototype.items = function (position) { - if (position === undefined) { return this._items.slice() } - position = this.normalize(position, true); return this._items[position] - }; wpexOwl.prototype.mergers = function (position) { - if (position === undefined) { return this._mergers.slice() } - position = this.normalize(position, true); return this._mergers[position] - }; wpexOwl.prototype.clones = function (position) { - var odd = this._clones.length / 2, even = odd + this._items.length, map = function (index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; if (position === undefined) { return $.map(this._clones, function (v, i) { return map(i) }) } - return $.map(this._clones, function (v, i) { return v === position ? map(i) : null }) - }; wpexOwl.prototype.speed = function (speed) { - if (speed !== undefined) { this._speed = speed } - return this._speed - }; wpexOwl.prototype.coordinates = function (position) { - var coordinate = null; if (position === undefined) { return $.map(this._coordinates, $.proxy(function (coordinate, index) { return this.coordinates(index) }, this)) } - if (this.settings.center) { coordinate = this._coordinates[position]; coordinate += (this.width() - coordinate + (this._coordinates[position - 1] || 0)) / 2 * (this.settings.rtl ? -1 : 1) } else { coordinate = this._coordinates[position - 1] || 0 } - return coordinate - }; wpexOwl.prototype.duration = function (from, to, factor) { return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)) }; wpexOwl.prototype.to = function (position, speed) { - var current = this.current(), revert = null, distance = position - this.relative(current), direction = (distance > 0) - (distance < 0), items = this._items.length, minimum = this.minimum(), maximum = this.maximum(); if (this.settings.loop) { - if (!this.settings.rewind && Math.abs(distance) > items / 2) { distance += direction * -1 * items } - position = current + distance; revert = ((position - minimum) % items + items) % items + minimum; if (revert !== position && revert - distance <= maximum && revert - distance > 0) { current = revert - distance; position = revert; this.reset(current) } - } else if (this.settings.rewind) { maximum += 1; position = (position % maximum + maximum) % maximum } else { position = Math.max(minimum, Math.min(maximum, position)) } - this.speed(this.duration(current, position, speed)); this.current(position); if (this.$element.is(':visible')) { this.update() } - }; wpexOwl.prototype.next = function (speed) { speed = speed || false; this.to(this.relative(this.current()) + 1, speed) }; wpexOwl.prototype.prev = function (speed) { speed = speed || false; this.to(this.relative(this.current()) - 1, speed) }; wpexOwl.prototype.onTransitionEnd = function (event) { - if (event !== undefined) { event.stopPropagation(); if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { return false } } - this.leave('animating'); this.trigger('translated') - }; wpexOwl.prototype.viewport = function () { - var width; if (this.options.responsiveBaseElement !== window) { width = $(this.options.responsiveBaseElement).width() } else if (window.innerWidth) { width = window.innerWidth } else if (document.documentElement && document.documentElement.clientWidth) { width = document.documentElement.clientWidth } else { throw 'Can not detect viewport width.' } - return width - }; wpexOwl.prototype.replace = function (content) { - this.$stage.empty(); this._items = []; if (content) { content = (content instanceof jQuery) ? content : $(content) } - if (this.settings.nestedItemSelector) { content = content.find('.' + this.settings.nestedItemSelector) } - content.filter(function () { return this.nodeType === 1 }).each($.proxy(function (index, item) { item = this.prepare(item); this.$stage.append(item); this._items.push(item); this._mergers.push(item.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1) }, this)); this.reset($.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); this.invalidate('items') - }; wpexOwl.prototype.add = function (content, position) { - var current = this.relative(this._current); position = position === undefined ? this._items.length : this.normalize(position, true); content = content instanceof jQuery ? content : $(content); this.trigger('add', { content: content, position: position }); content = this.prepare(content); if (this._items.length === 0 || position === this._items.length) { this._items.length === 0 && this.$stage.append(content); this._items.length !== 0 && this._items[position - 1].after(content); this._items.push(content); this._mergers.push(content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1) } else { this._items[position].before(content); this._items.splice(position, 0, content); this._mergers.splice(position, 0, content.find('[data-merge]').andSelf('[data-merge]').attr('data-merge') * 1 || 1) } - this._items[current] && this.reset(this._items[current].index()); this.invalidate('items'); this.trigger('added', { content: content, position: position }) - }; wpexOwl.prototype.remove = function (position) { - position = this.normalize(position, true); if (position === undefined) { return } - this.trigger('remove', { content: this._items[position], position: position }); this._items[position].remove(); this._items.splice(position, 1); this._mergers.splice(position, 1); this.invalidate('items'); this.trigger('removed', { content: null, position: position }) - }; wpexOwl.prototype.preloadAutoWidthImages = function (images) { images.each($.proxy(function (i, element) { this.enter('pre-loading'); element = $(element); $(new Image()).one('load', $.proxy(function (e) { element.attr('src', e.target.src); element.css('opacity', 1); this.leave('pre-loading'); !this.is('pre-loading') && !this.is('initializing') && this.refresh() }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')) }, this)) }; wpexOwl.prototype.destroy = function () { - this.$element.off('.owl.core'); this.$stage.off('.owl.core'); $(document).off('.owl.core'); if (this.settings.responsive !== false) { window.clearTimeout(this.resizeTimer); this.off(window, 'resize', this._handlers.onThrottledResize) } - for (var i in this._plugins) { this._plugins[i].destroy() } - this.$stage.children('.cloned').remove(); this.$stage.unwrap(); this.$stage.children().contents().unwrap(); this.$stage.children().unwrap(); this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')).removeData('owl.carousel') - }; wpexOwl.prototype.op = function (a, o, b) { var rtl = this.settings.rtl; switch (o) { case '<': return rtl ? a > b : a < b; case '>': return rtl ? a < b : a > b; case '>=': return rtl ? a <= b : a >= b; case '<=': return rtl ? a >= b : a <= b; default: break } }; wpexOwl.prototype.on = function (element, event, listener, capture) { if (element.addEventListener) { element.addEventListener(event, listener, capture) } else if (element.attachEvent) { element.attachEvent('on' + event, listener) } }; wpexOwl.prototype.off = function (element, event, listener, capture) { if (element.removeEventListener) { element.removeEventListener(event, listener, capture) } else if (element.detachEvent) { element.detachEvent('on' + event, listener) } }; wpexOwl.prototype.trigger = function (name, data, namespace, state, enter) { - var status = { item: { count: this._items.length, index: this.current() } }, handler = $.camelCase($.grep(['on', name, namespace], function (v) { return v }).join('-').toLowerCase()), event = $.Event([name, 'owl', namespace || 'carousel'].join('.').toLowerCase(), $.extend({ relatedTarget: this }, status, data)); if (!this._supress[name]) { $.each(this._plugins, function (name, plugin) { if (plugin.onTrigger) { plugin.onTrigger(event) } }); this.register({ type: wpexOwl.Type.Event, name: name }); this.$element.trigger(event); if (this.settings && typeof this.settings[handler] === 'function') { this.settings[handler].call(this, event) } } - return event - }; wpexOwl.prototype.enter = function (name) { - $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) { - if (this._states.current[name] === undefined) { this._states.current[name] = 0 } - this._states.current[name]++ - }, this)) - }; wpexOwl.prototype.leave = function (name) { $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) { this._states.current[name]-- }, this)) }; wpexOwl.prototype.register = function (object) { - if (object.type === wpexOwl.Type.Event) { - if (!$.event.special[object.name]) { $.event.special[object.name] = {} } - if (!$.event.special[object.name].owl) { - var _default = $.event.special[object.name]._default; $.event.special[object.name]._default = function (e) { - if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { return _default.apply(this, arguments) } - return e.namespace && e.namespace.indexOf('owl') > -1 - }; $.event.special[object.name].owl = true - } - } else if (object.type === wpexOwl.Type.State) { - if (!this._states.tags[object.name]) { this._states.tags[object.name] = object.tags } else { this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags) } - this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function (tag, i) { return $.inArray(tag, this._states.tags[object.name]) === i }, this)) - } - }; wpexOwl.prototype.suppress = function (events) { $.each(events, $.proxy(function (index, event) { this._supress[event] = true }, this)) }; wpexOwl.prototype.release = function (events) { $.each(events, $.proxy(function (index, event) { delete this._supress[event] }, this)) }; wpexOwl.prototype.pointer = function (event) { - var result = { x: null, y: null }; event = event.originalEvent || event || window.event; event = event.touches && event.touches.length ? event.touches[0] : event.changedTouches && event.changedTouches.length ? event.changedTouches[0] : event; if (event.pageX) { result.x = event.pageX; result.y = event.pageY } else { result.x = event.clientX; result.y = event.clientY } - return result - }; wpexOwl.prototype.difference = function (first, second) { return { x: first.x - second.x, y: first.y - second.y } }; $.fn.wpexOwlCarousel = function (option) { - var args = Array.prototype.slice.call(arguments, 1); return this.each(function () { - var $this = $(this), data = $this.data('owl.carousel'); if (!data) { data = new wpexOwl(this, typeof option == 'object' && option); $this.data('owl.carousel', data); $.each(['next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'], function (i, event) { data.register({ type: wpexOwl.Type.Event, name: event }); data.$element.on(event + '.owl.carousel.core', $.proxy(function (e) { if (e.namespace && e.relatedTarget !== this) { this.suppress([event]); data[event].apply(this, [].slice.call(arguments, 1)); this.release([event]) } }, data)) }) } - if (typeof option == 'string' && option.charAt(0) !== '_') { data[option].apply(data, args) } - }) - }; $.fn.wpexOwlCarousel.Constructor = wpexOwl -})(window.Zepto || window.jQuery, window, document); (function ($, window, document, undefined) { - var AutoRefresh = function (carousel) { this._core = carousel; this._interval = null; this._visible = null; this._handlers = { 'initialized.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.autoRefresh) { this.watch() } }, this) }; this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); this._core.$element.on(this._handlers) }; AutoRefresh.Defaults = { autoRefresh: true, autoRefreshInterval: 500 }; AutoRefresh.prototype.watch = function () { - if (this._interval) { return } - this._visible = this._core.$element.is(':visible'); this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval) - }; AutoRefresh.prototype.refresh = function () { - if (this._core.$element.is(':visible') === this._visible) { return } - this._visible = !this._visible; this._core.$element.toggleClass('owl-hidden', !this._visible); this._visible && (this._core.invalidate('width') && this._core.refresh()) - }; AutoRefresh.prototype.destroy = function () { - var handler, property; window.clearInterval(this._interval); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]) } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; $.fn.wpexOwlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh -})(window.Zepto || window.jQuery, window, document); (function ($, window, document, undefined) { - var Lazy = function (carousel) { - this._core = carousel; this._loaded = []; this._handlers = { - 'initialized.owl.carousel change.owl.carousel': $.proxy(function (e) { - if (!e.namespace) { return } - if (!this._core.settings || !this._core.settings.lazyLoad) { return } - if ((e.property && e.property.name == 'position') || e.type == 'initialized') { var settings = this._core.settings, n = (settings.center && Math.ceil(settings.items / 2) || settings.items), i = ((settings.center && n * -1) || 0), position = ((e.property && e.property.value) || this._core.current()) + i, clones = this._core.clones().length, load = $.proxy(function (i, v) { this.load(v) }, this); while (i++ < n) { this.load(clones / 2 + this._core.relative(position)); clones && $.each(this._core.clones(this._core.relative(position)), load); position++ } } - }, this) - }; this._core.options = $.extend({}, Lazy.Defaults, this._core.options); this._core.$element.on(this._handlers) - } - Lazy.Defaults = { lazyLoad: false } - Lazy.prototype.load = function (position) { - var $item = this._core.$stage.children().eq(position), $elements = $item && $item.find('.owl-lazy'); if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { return } - $elements.each($.proxy(function (index, element) { var $element = $(element), image, url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src'); this._core.trigger('load', { element: $element, url: url }, 'lazy'); if ($element.is('img')) { $element.one('load.owl.lazy', $.proxy(function () { $element.css('opacity', 1); this._core.trigger('loaded', { element: $element, url: url }, 'lazy') }, this)).attr('src', url) } else { image = new Image(); image.onload = $.proxy(function () { $element.css({ 'background-image': 'url(' + url + ')', 'opacity': '1' }); this._core.trigger('loaded', { element: $element, url: url }, 'lazy') }, this); image.src = url } }, this)); this._loaded.push($item.get(0)) - } - Lazy.prototype.destroy = function () { - var handler, property; for (handler in this.handlers) { this._core.$element.off(handler, this.handlers[handler]) } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; $.fn.wpexOwlCarousel.Constructor.Plugins.Lazy = Lazy -})(window.Zepto || window.jQuery, window, document); (function ($, window, document, undefined) { - var AutoHeight = function (carousel) { this._core = carousel; this._handlers = { 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.autoHeight) { this.update() } }, this), 'changed.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.autoHeight && e.property.name == 'position') { this.update() } }, this), 'loaded.owl.lazy': $.proxy(function (e) { if (e.namespace && this._core.settings.autoHeight && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { this.update() } }, this) }; this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); this._core.$element.on(this._handlers) }; AutoHeight.Defaults = { autoHeight: false, autoHeightClass: 'owl-height' }; AutoHeight.prototype.update = function () { var start = this._core._current, end = start + this._core.settings.items, visible = this._core.$stage.children().toArray().slice(start, end); heights = [], maxheight = 0; $.each(visible, function (index, item) { heights.push($(item).height()) }); maxheight = Math.max.apply(null, heights); this._core.$stage.parent().height(maxheight).addClass(this._core.settings.autoHeightClass) }; AutoHeight.prototype.destroy = function () { - var handler, property; for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]) } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; $.fn.wpexOwlCarousel.Constructor.Plugins.AutoHeight = AutoHeight -})(window.Zepto || window.jQuery, window, document); -(function ($, window, document, undefined) { - var Animate = function (scope) { this.core = scope; this.core.options = $.extend({}, Animate.Defaults, this.core.options); this.swapping = true; this.previous = undefined; this.next = undefined; this.handlers = { 'change.owl.carousel': $.proxy(function (e) { if (e.namespace && e.property.name == 'position') { this.previous = this.core.current(); this.next = e.property.value } }, this), 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function (e) { if (e.namespace) { this.swapping = e.type == 'translated' } }, this), 'translate.owl.carousel': $.proxy(function (e) { if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { this.swap() } }, this) }; this.core.$element.on(this.handlers) }; Animate.Defaults = { animateOut: false, animateIn: false }; Animate.prototype.swap = function () { - if (this.core.settings.items !== 1) { return } - if (!$.support.animation || !$.support.transition) { return } - this.core.speed(0); var left, clear = $.proxy(this.clear, this), previous = this.core.$stage.children().eq(this.previous), next = this.core.$stage.children().eq(this.next), incoming = this.core.settings.animateIn, outgoing = this.core.settings.animateOut; if (this.core.current() === this.previous) { return } - if (outgoing) { left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); previous.one($.support.animation.end, clear).css({ 'left': left + 'px' }).addClass('animated owl-animated-out').addClass(outgoing) } - if (incoming) { next.one($.support.animation.end, clear).addClass('animated owl-animated-in').addClass(incoming) } - }; Animate.prototype.clear = function (e) { $(e.target).css({ 'left': '' }).removeClass('animated owl-animated-out owl-animated-in').removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut); this.core.onTransitionEnd() }; Animate.prototype.destroy = function () { - var handler, property; for (handler in this.handlers) { this.core.$element.off(handler, this.handlers[handler]) } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; $.fn.wpexOwlCarousel.Constructor.Plugins.Animate = Animate -})(window.Zepto || window.jQuery, window, document); (function ($, window, document, undefined) { - var Autoplay = function (carousel) { this._core = carousel; this._interval = null; this._paused = false; this._handlers = { 'changed.owl.carousel': $.proxy(function (e) { if (e.namespace && e.property.name === 'settings') { if (this._core.settings.autoplay) { this.play() } else { this.stop() } } }, this), 'initialized.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.autoplay) { this.play() } }, this), 'play.owl.autoplay': $.proxy(function (e, t, s) { if (e.namespace) { this.play(t, s) } }, this), 'stop.owl.autoplay': $.proxy(function (e) { if (e.namespace) { this.stop() } }, this), 'mouseover.owl.autoplay': $.proxy(function () { if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { this.pause() } }, this), 'mouseleave.owl.autoplay': $.proxy(function () { if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { this.play() } }, this) }; this._core.$element.on(this._handlers); this._core.options = $.extend({}, Autoplay.Defaults, this._core.options) }; Autoplay.Defaults = { autoplay: false, autoplayTimeout: 5000, autoplayHoverPause: false, autoplaySpeed: false }; Autoplay.prototype.play = function (timeout, speed) { - this._paused = false; if (this._core.is('rotating')) { return } - this._core.enter('rotating'); this._interval = window.setInterval($.proxy(function () { - if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) { return } - this._core.next(speed || this._core.settings.autoplaySpeed) - }, this), timeout || this._core.settings.autoplayTimeout) - }; Autoplay.prototype.stop = function () { - if (!this._core.is('rotating')) { return } - window.clearInterval(this._interval); this._core.leave('rotating') - }; Autoplay.prototype.pause = function () { - if (!this._core.is('rotating')) { return } - this._paused = true - }; Autoplay.prototype.destroy = function () { - var handler, property; this.stop(); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]) } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; $.fn.wpexOwlCarousel.Constructor.Plugins.autoplay = Autoplay -})(window.Zepto || window.jQuery, window, document); -(function ($, window, document, undefined) { - 'use strict'; var Navigation = function (carousel) { this._core = carousel; this._initialized = false; this._pages = []; this._controls = {}; this._templates = []; this.$element = this._core.$element; this._overrides = { next: this._core.next, prev: this._core.prev, to: this._core.to }; this._handlers = { 'prepared.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.dotsData) { this._templates.push('
' + $(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot') + '
') } }, this), 'added.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.dotsData) { this._templates.splice(e.position, 0, this._templates.pop()) } }, this), 'remove.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.dotsData) { this._templates.splice(e.position, 1) } }, this), 'changed.owl.carousel': $.proxy(function (e) { if (e.namespace && e.property.name == 'position') { this.draw() } }, this), 'initialized.owl.carousel': $.proxy(function (e) { if (e.namespace && !this._initialized) { this._core.trigger('initialize', null, 'navigation'); this.initialize(); this.update(); this.draw(); this._initialized = true; this._core.trigger('initialized', null, 'navigation') } }, this), 'refreshed.owl.carousel': $.proxy(function (e) { if (e.namespace && this._initialized) { this._core.trigger('refresh', null, 'navigation'); this.update(); this.draw(); this._core.trigger('refreshed', null, 'navigation') } }, this) }; this._core.options = $.extend({}, Navigation.Defaults, this._core.options); this.$element.on(this._handlers) }; Navigation.Defaults = { nav: false, navText: ['prev', 'next'], navSpeed: false, navElement: 'div', navContainer: false, navContainerClass: 'owl-nav', navClass: ['owl-prev', 'owl-next'], slideBy: 1, dotClass: 'owl-dot', dotsClass: 'owl-dots', dots: true, dotsEach: false, dotsData: false, dotsSpeed: false, dotsContainer: false }; Navigation.prototype.initialize = function () { - var override, settings = this._core.settings; this._controls.$relative = (settings.navContainer ? $(settings.navContainer) : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); this._controls.$previous = $('<' + settings.navElement + '>').addClass(settings.navClass[0]).html(settings.navText[0]).prependTo(this._controls.$relative).on('click', $.proxy(function (e) { this.prev(settings.navSpeed) }, this)); this._controls.$next = $('<' + settings.navElement + '>').addClass(settings.navClass[1]).html(settings.navText[1]).appendTo(this._controls.$relative).on('click', $.proxy(function (e) { this.next(settings.navSpeed) }, this)); if (!settings.dotsData) { this._templates = [$('
').addClass(settings.dotClass).append($('')).prop('outerHTML')] } - this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) : $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); this._controls.$absolute.on('click', 'div', $.proxy(function (e) { var index = $(e.target).parent().is(this._controls.$absolute) ? $(e.target).index() : $(e.target).parent().index(); e.preventDefault(); this.to(index, settings.dotsSpeed) }, this)); for (override in this._overrides) { this._core[override] = $.proxy(this[override], this) } - }; Navigation.prototype.destroy = function () { - var handler, control, property, override; for (handler in this._handlers) { this.$element.off(handler, this._handlers[handler]) } - for (control in this._controls) { this._controls[control].remove() } - for (override in this.overides) { this._core[override] = this._overrides[override] } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; Navigation.prototype.update = function () { - var i, j, k, lower = this._core.clones().length / 2, upper = lower + this._core.items().length, maximum = this._core.maximum(true), settings = this._core.settings, size = settings.center || settings.autoWidth || settings.dotsData ? 1 : settings.dotsEach || settings.items; if (settings.slideBy !== 'page') { settings.slideBy = Math.min(settings.slideBy, settings.items) } - if (settings.dots || settings.slideBy == 'page') { - this._pages = []; for (i = lower, j = 0, k = 0; i < upper; i++) { - if (j >= size || j === 0) { - this._pages.push({ start: Math.min(maximum, i - lower), end: i - lower + size - 1 }); if (Math.min(maximum, i - lower) === maximum) { break } - j = 0, ++k - } - j += this._core.mergers(this._core.relative(i)) - } - } - }; Navigation.prototype.draw = function () { - var difference, settings = this._core.settings, disabled = this._core.items().length <= settings.items, index = this._core.relative(this._core.current()), loop = settings.loop || settings.rewind; this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); if (settings.nav) { this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)) } - this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); if (settings.dots) { - difference = this._pages.length - this._controls.$absolute.children().length; if (settings.dotsData && difference !== 0) { this._controls.$absolute.html(this._templates.join('')) } else if (difference > 0) { this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])) } else if (difference < 0) { this._controls.$absolute.children().slice(difference).remove() } - this._controls.$absolute.find('.active').removeClass('active'); this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active') - } - }; Navigation.prototype.onTrigger = function (event) { var settings = this._core.settings; event.page = { index: $.inArray(this.current(), this._pages), count: this._pages.length, size: settings && (settings.center || settings.autoWidth || settings.dotsData ? 1 : settings.dotsEach || settings.items) } }; Navigation.prototype.current = function () { var current = this._core.relative(this._core.current()); return $.grep(this._pages, $.proxy(function (page, index) { return page.start <= current && page.end >= current }, this)).pop() }; Navigation.prototype.getPosition = function (successor) { - var position, length, settings = this._core.settings; if (settings.slideBy == 'page') { position = $.inArray(this.current(), this._pages); length = this._pages.length; successor ? ++position : --position; position = this._pages[((position % length) + length) % length].start } else { position = this._core.relative(this._core.current()); length = this._core.items().length; successor ? position += settings.slideBy : position -= settings.slideBy } - return position - }; Navigation.prototype.next = function (speed) { $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed) }; Navigation.prototype.prev = function (speed) { $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed) }; Navigation.prototype.to = function (position, speed, standard) { var length; if (!standard) { length = this._pages.length; $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed) } else { $.proxy(this._overrides.to, this._core)(position, speed) } }; $.fn.wpexOwlCarousel.Constructor.Plugins.Navigation = Navigation -})(window.Zepto || window.jQuery, window, document); (function ($, window, document, undefined) { - 'use strict'; var Hash = function (carousel) { - this._core = carousel; this._hashes = {}; this.$element = this._core.$element; this._handlers = { - 'initialized.owl.carousel': $.proxy(function (e) { if (e.namespace && this._core.settings.startPosition === 'URLHash') { $(window).trigger('hashchange.owl.navigation') } }, this), 'prepared.owl.carousel': $.proxy(function (e) { - if (e.namespace) { - var hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash'); if (!hash) { return } - this._hashes[hash] = e.content - } - }, this), 'changed.owl.carousel': $.proxy(function (e) { - if (e.namespace && e.property.name === 'position') { - var current = this._core.items(this._core.relative(this._core.current())), hash = $.map(this._hashes, function (item, hash) { return item === current ? hash : null }).join(); if (!hash || window.location.hash.slice(1) === hash) { return } - window.location.hash = hash - } - }, this) - }; this._core.options = $.extend({}, Hash.Defaults, this._core.options); this.$element.on(this._handlers); $(window).on('hashchange.owl.navigation', $.proxy(function (e) { - var hash = window.location.hash.substring(1), items = this._core.$stage.children(), position = this._hashes[hash] && items.index(this._hashes[hash]); if (position === undefined || position === this._core.current()) { return } - this._core.to(this._core.relative(position), false, true) - }, this)) - }; Hash.Defaults = { URLhashListener: false }; Hash.prototype.destroy = function () { - var handler, property; $(window).off('hashchange.owl.navigation'); for (handler in this._handlers) { this._core.$element.off(handler, this._handlers[handler]) } - for (property in Object.getOwnPropertyNames(this)) { typeof this[property] != 'function' && (this[property] = null) } - }; $.fn.wpexOwlCarousel.Constructor.Plugins.Hash = Hash -})(window.Zepto || window.jQuery, window, document); (function ($, window, document, undefined) { - var style = $('').get(0).style, prefixes = 'Webkit Moz O ms'.split(' '), events = { transition: { end: { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd', transition: 'transitionend' } }, animation: { end: { WebkitAnimation: 'webkitAnimationEnd', MozAnimation: 'animationend', OAnimation: 'oAnimationEnd', animation: 'animationend' } } }, tests = { csstransforms: function () { return !!test('transform') }, csstransforms3d: function () { return !!test('perspective') }, csstransitions: function () { return !!test('transition') }, cssanimations: function () { return !!test('animation') } }; function test(property, prefixed) { var result = false, upper = property.charAt(0).toUpperCase() + property.slice(1); $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function (i, property) { if (style[property] !== undefined) { result = prefixed ? property : true; return false } }); return result } - function prefixed(property) { return test(property, true) } - if (tests.csstransitions()) { - $.support.transition = new String(prefixed('transition')) - $.support.transition.end = events.transition.end[$.support.transition] - } - if (tests.cssanimations()) { - $.support.animation = new String(prefixed('animation')) - $.support.animation.end = events.animation.end[$.support.animation] - } - if (tests.csstransforms()) { $.support.transform = new String(prefixed('transform')); $.support.transform3d = tests.csstransforms3d() } -})(window.Zepto || window.jQuery, window, document); -var wpex = {}; -(function ($) { - 'use strict'; wpex = { - init: function () { this.config_func(); this.bindEvents();}, - config_func: function () { - this.config = { - $window: $(window), - $document: $(document), - $head: $('head'), - windowWidth: $(window).width(), - windowHeight: $(window).height(), - windowTop: $(window).scrollTop(), - $body: $('body'), viewportWidth: '', - $wpAdminBar: null, isRetina: false, - heightChanged: false, widthChanged: false, - isRTL: false, iLightboxSettings: {}, - vcActive: false, isMobile: false, - mobileMenuStyle: null, mobileMenuToggleStyle: null, - mobileMenuBreakpoint: 960, $siteWrap: null, - $siteMain: null, $siteHeader: null, - siteHeaderStyle: null, siteHeaderHeight: 0, - siteHeaderTop: 0, siteHeaderBottom: 0, - verticalHeaderActive: false, hasHeaderOverlay: false, - hasStickyHeader: false, hasStickyMobileHeader: false, - hasStickyNavbar: false, $siteLogo: null, siteLogoHeight: 0, - siteLogoSrc: null, $siteNavWrap: null, $siteNav: null, - $siteNavDropdowns: null, - $localScrollTargets: 'li.local-scroll a, a.local-scroll, .local-scroll-link, .local-scroll-link > a', - localScrollOffset: 0, localScrollSpeed: 600, - localScrollEasing: 'easeInOutCubic', localScrollSections: [], - hasTopBar: false, hasStickyTopBar: false, $stickyTopBar: null, - hasStickyTopBarMobile: false - } - }, - bindEvents: function () { - var self = this; self.config.$document.ready(function () { - self.initUpdateConfig(); - self.responsiveText(); - self.superfish(); self.mobileMenu(); - self.navNoClick(); self.hideEditLink(); - self.inlineHeaderLogo(); - self.menuSearch(); self.headerCart(); - self.backTopLink(); self.smoothCommentScroll(); - self.tipsyTooltips(); self.customHovers(); self.toggleBar(); - self.customSelects(); self.wpexOwlCarousel(); - self.autoLightbox(); self.iLightbox(); - self.skillbar(); self.milestone(); self.countdown(); self.typedText(); - - - self.archiveMasonryGrids(); self.isotopeGrids(); - self.responsiveCSS(); self.vcexFilterNav(); self.ctf7Preloader(); - self.vcAccessability(); self.rtlStretchRows(); self.vcPageEditable(); - self.wooGallery(); self.twentytwenty() }); - self.config.$window.on('load', function () { - self.config.$body.addClass('wpex-window-loaded'); - self.windowLoadUpdateConfig(); self.megaMenusWidth(); self.megaMenusTop(); - self.flushDropdownsTop(); self.fadeIn(); self.parallax(); - self.sliderPro(); self.stickyTopBar(); self.vcTabsTogglesJS(); - if (self.config.hasStickyHeader) { - var $stickyStyle = wpexLocalize.stickyHeaderStyle; - if ('standard' == $stickyStyle || 'shrink' == $stickyStyle || 'shrink_animated' == $stickyStyle) { - self.stickyHeader(); - if ('shrink' == $stickyStyle || 'shrink_animated' == $stickyStyle) { - self.shrinkStickyHeader() - } - } - } - self.stickyHeaderMenu(); - self.stickyVcexNavbar(); - self.headerOverlayOffset(); - self.footerReveal(); - self.titleBreadcrumbsFix(); - if ($.fn.infinitescroll !== undefined && $('div.infinite-scroll-nav').length) { - self.infiniteScrollInit() - } - self.loadMore(); - if (wpexLocalize.scrollToHash) { - window.setTimeout(function () { - self.scrollToHash(self) }, parseInt(wpex.scrollToHashTimeout)) - } - }); - self.config.$window.on("load",function(){ - self.equalHeights(); - self.bindEvents(); - }) - self.config.$window.resize(function () { - self.config.widthChanged = false; - self.config.heightChanged = false; - if (self.config.$window.width() != self.config.windowWidth) { - self.config.widthChanged = true; self.widthResizeUpdateConfig() - } - if (self.config.$window.height() != self.config.windowHeight) { - self.config.windowHeight = self.config.$window.height(); - self.config.heightChanged = true - } - self.equalHeights(); - }); - self.config.$window.scroll(function () { - self.config.$hasScrolled = false; - if (self.config.$window.scrollTop() != self.config.windowTop) { - self.config.$hasScrolled = true; self.config.windowTop = self.config.$window.scrollTop(); - self.localScrollHighlight() - } - }); - self.config.$window.on('orientationchange', function () { - self.widthResizeUpdateConfig(); self.isotopeGrids(); self.vcexFilterNav(); - self.archiveMasonryGrids() - }) - }, - initUpdateConfig: function () { - var self = this; - self.config.$body.addClass('wpex-docready wpb-js-composer'); - self.config.vcActive = this.config.$body.hasClass('wpb-js-composer'); - self.config.viewportWidth = self.viewportWidth(); self.config.isRetina = self.retinaCheck(); if (self.config.isRetina) { self.config.$body.addClass('wpex-is-retina') } - if (self.mobileCheck()) { self.config.isMobile = true; self.config.$body.addClass('wpex-is-mobile-device') } - var $wpAdminBar = $('#wpadminbar'); if ($wpAdminBar.length) { self.config.$wpAdminBar = $wpAdminBar } - var $siteWrap = $('#wrap'); if ($siteWrap) { self.config.$siteWrap = $siteWrap } - var $siteMain = $('#main'); if ($siteMain) { self.config.$siteMain = $siteMain } - var $siteHeader = $('#site-header'); if ($siteHeader.length) { self.config.siteHeaderStyle = wpexLocalize.siteHeaderStyle; self.config.$siteHeader = $('#site-header') } - var $siteLogo = $('#site-logo img.logo-img'); if ($siteLogo.length) { self.config.$siteLogo = $siteLogo; self.config.siteLogoSrc = self.config.$siteLogo.attr('src') } - var $siteNavWrap = $('#site-navigation-wrap'); if ($siteNavWrap.length) { - self.config.$siteNavWrap = $siteNavWrap; var $siteNav = $('#site-navigation', $siteNavWrap); if ($siteNav.length) { self.config.$siteNav = $siteNav } - if (wpexLocalize.hasStickyNavbar) { self.config.hasStickyNavbar = true } - var $siteNavDropdowns = $('.dropdown-menu > .menu-item-has-children > ul', $siteNavWrap); if ($siteNavWrap.length) { self.config.$siteNavDropdowns = $siteNavDropdowns } - } - if (wpexLocalize.hasMobileMenu) { self.config.mobileMenuStyle = wpexLocalize.mobileMenuStyle; self.config.mobileMenuToggleStyle = wpexLocalize.mobileMenuToggleStyle; self.config.mobileMenuBreakpoint = wpexLocalize.mobileMenuBreakpoint } - self.config.$footerReveal = $('.footer-reveal-visible'); if (self.config.$footerReveal.length && self.config.$siteWrap && self.config.$siteMain) { self.config.$hasFooterReveal = true } - if (self.config.$siteHeader && self.config.$body.hasClass('has-overlay-header')) { self.config.hasHeaderOverlay = true } - var $topBarWrap = $('#top-bar-wrap'); if ($topBarWrap.length) { self.config.hasTopBar = true; if ($topBarWrap.hasClass('wpex-top-bar-sticky')) { self.config.$stickyTopBar = $topBarWrap; if (self.config.$stickyTopBar.length) { self.config.hasStickyTopBar = true; self.config.hasStickyTopBarMobile = wpexLocalize.hasStickyTopBarMobile } } } - self.config.hasStickyMobileHeader = wpexLocalize.hasStickyMobileHeader; if (self.config.$siteHeader && wpexLocalize.hasStickyHeader) { self.config.hasStickyHeader = true } - if (this.config.$body.hasClass('wpex-has-vertical-header')) { self.config.verticalHeaderActive = true } - if (wpexLocalize.localScrollSpeed) { self.config.localScrollSpeed = parseInt(wpexLocalize.localScrollSpeed) } - if (wpexLocalize.localScrollEasing) { self.config.localScrollEasing = wpexLocalize.localScrollEasing; if ('false' == self.config.localScrollEasing) { self.config.localScrollEasing = 'swing' } } - self.config.localScrollSections = self.localScrollSections() - }, windowLoadUpdateConfig: function () { - if (this.config.$siteHeader) { var siteHeaderTop = this.config.$siteHeader.offset().top; this.config.windowHeight = this.config.$window.height(); this.config.siteHeaderHeight = this.config.$siteHeader.outerHeight(); this.config.siteHeaderBottom = siteHeaderTop + this.config.siteHeaderHeight; this.config.siteHeaderTop = siteHeaderTop; if (this.config.$siteLogo) { this.config.siteLogoHeight = this.config.$siteLogo.height() } } - this.config.localScrollOffset = this.parseLocalScrollOffset('init') - }, widthResizeUpdateConfig: function () { - this.config.windowHeight = this.config.$window.height(); - this.config.windowWidth = this.config.$window.width(); - this.config.windowTop = this.config.$window.scrollTop(); - this.config.viewportWidth = this.viewportWidth(); - if (this.config.$siteHeader) { - this.config.siteHeaderHeight = this.config.$siteHeader.outerHeight() - } - if (this.config.$siteLogo) { - this.config.siteLogoHeight = this.config.$siteLogo.height() - } - if (this.config.windowWidth < 960) { - this.config.verticalHeaderActive = false - }else if (this.config.$body.hasClass('wpex-has-vertical-header')) { - this.config.verticalHeaderActive = true - } - this.config.localScrollOffset = this.parseLocalScrollOffset('resize'); - this.megaMenusWidth(); - this.inlineHeaderLogo(); - this.responsiveText(); - }, retinaCheck: function () { - var mediaQuery = '(-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3/2), (min-resolution: 1.5dppx)'; if (window.devicePixelRatio > 1) { return true } - if (window.matchMedia && window.matchMedia(mediaQuery).matches) { return true } - return false - }, mobileCheck: function () { if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { return true } }, viewportWidth: function () { - var e = window, a = 'inner'; if (!('innerWidth' in window)) { a = 'client'; e = document.documentElement || document.body } - return e[a + 'Width'] - }, superfish: function () { - if (!this.config.$siteNav || undefined === $.fn.superfish) { return } - $('ul.sf-menu', this.config.$siteNav).superfish({ delay: wpexLocalize.superfishDelay, speed: wpexLocalize.superfishSpeed, speedOut: wpexLocalize.superfishSpeedOut, cssArrows: false, disableHI: false, animation: { opacity: 'show' }, animationOut: { opacity: 'hide' } }) - }, megaMenusWidth: function () { - if (!wpexLocalize.megaMenuJS || 'one' != this.config.siteHeaderStyle || !this.config.$siteNavDropdowns || !this.config.$siteNavWrap.is(':visible')) { return } - var $megamenu = $('.megamenu > ul', this.config.$siteNavWrap); if (!$megamenu.length) { return } - var $headerContainerWidth = this.config.$siteHeader.find('.container').outerWidth(), $navWrapWidth = this.config.$siteNavWrap.outerWidth(), $siteNavigationWrapPosition = parseInt(this.config.$siteNavWrap.css('right')); if ('auto' == $siteNavigationWrapPosition) { $siteNavigationWrapPosition = 0 } - var $megaMenuNegativeMargin = $headerContainerWidth - $navWrapWidth - $siteNavigationWrapPosition; $megamenu.css({ 'width': $headerContainerWidth, 'margin-left': -$megaMenuNegativeMargin }) - }, megaMenusTop: function () { - var self = this; if (!self.config.$siteNavDropdowns || 'one' != self.config.siteHeaderStyle) { return } - var $megamenu = $('.megamenu > ul', self.config.$siteNavWrap); if (!$megamenu.length) return; function setPosition() { if (self.config.$siteNavWrap.is(':visible')) { var $headerHeight = self.config.$siteHeader.outerHeight(); var $navHeight = self.config.$siteNavWrap.outerHeight(); var $megaMenuTop = $headerHeight - $navHeight; $megamenu.css({ 'top': $megaMenuTop / 2 + $navHeight }) } } - setPosition(); this.config.$window.scroll(function () { setPosition() }); this.config.$window.resize(function () { setPosition() }); $('.megamenu > a', self.config.$siteNav).hover(function () { setPosition() }) - }, flushDropdownsTop: function () { - var self = this; if (!self.config.$siteNavDropdowns || !self.config.$siteNavWrap.hasClass('wpex-flush-dropdowns')) { return } - function setPosition() { if (self.config.$siteNavWrap.is(':visible')) { var $headerHeight = self.config.$siteHeader.outerHeight(); var $siteNavWrapHeight = self.config.$siteNavWrap.outerHeight(); var $dropTop = $headerHeight - $siteNavWrapHeight; self.config.$siteNavDropdowns.css('top', $dropTop / 2 + $siteNavWrapHeight) } } - setPosition(); this.config.$window.scroll(function () { setPosition() }); this.config.$window.resize(function () { setPosition() }); $('.wpex-flush-dropdowns li.menu-item-has-children > a').hover(function () { setPosition() }) - }, mobileMenu: function () { if ('sidr' == this.config.mobileMenuStyle && typeof wpexLocalize.sidrSource !== 'undefined') { this.mobileMenuSidr() } else if ('toggle' == this.config.mobileMenuStyle) { this.mobileMenuToggle() } else if ('full_screen' == this.config.mobileMenuStyle) { this.mobileMenuFullScreen() } }, mobileMenuSidr: function () { - var self = this, $toggleBtn = $('a.mobile-menu-toggle, li.mobile-menu-toggle > a'); self.config.$body.append('
'); var $sidrOverlay = $('.wpex-sidr-overlay'); $toggleBtn.click(function () { $(this).toggleClass('wpex-active') }); $toggleBtn.sidr({ - name: 'sidr-main', source: wpexLocalize.sidrSource, side: wpexLocalize.sidrSide, displace: wpexLocalize.sidrDisplace, speed: parseInt(wpexLocalize.sidrSpeed), renaming: true, bind: 'click', onOpen: function () { - $('#sidr-main').addClass('wpex-mobile-menu'); if (wpexLocalize.sidrBodyNoScroll) { self.config.$body.addClass('wpex-noscroll') } - $sidrOverlay.fadeIn(wpexLocalize.sidrSpeed, function () { $sidrOverlay.addClass('wpex-custom-cursor') }); $('.wpex-sidr-overlay').on('click', function (event) { $.sidr('close', 'sidr-main'); return false }) - }, onClose: function () { - $toggleBtn.removeClass('wpex-active'); if (wpexLocalize.sidrBodyNoScroll) { self.config.$body.removeClass('wpex-noscroll') } - $sidrOverlay.removeClass('wpex-custom-cursor').fadeOut(wpexLocalize.sidrSpeed) - }, onCloseEnd: function () { $('.sidr-class-menu-item-has-children.active').removeClass('active').find('ul').hide(); if ($.fn.vc_rowBehaviour !== undefined) { vc_rowBehaviour() } } - }); var $sidrMain = $('#sidr-main'); var $sidrMenu = $('.sidr-class-dropdown-menu', $sidrMain), $sidrDropdownTargetEl = $('.sidr-class-menu-item-has-children > a', $sidrMenu); $('.sidr-class-menu-item-has-children', $sidrMenu).children('a').append(''); $sidrDropdownTargetEl.on('click', function (event) { - var $parentEl = $(this).parent('li'); if (!$parentEl.hasClass('active')) { var $allParentLis = $parentEl.parents('li'); $('.sidr-class-menu-item-has-children', $sidrMenu).not($allParentLis).removeClass('active').children('ul').stop(true, true).slideUp('fast'); $parentEl.addClass('active').children('ul').stop(true, true).slideDown('fast') } else { $parentEl.removeClass('active'); $parentEl.find('li').removeClass('active'); $parentEl.find('ul').stop(true, true).slideUp('fast') } - return false - }); var $parents = $('li.sidr-class-menu-item-has-children > a', $sidrMenu); $parents.each(function () { var $this = $(this); if ($this && $this.attr('href') && '#' != $this.attr('href')) { var $parent = $this.parent('li'), el = $parent.clone(); $this.removeAttr('data-ls_linkto'); $parent.removeClass('sidr-class-local-scroll'); el.removeClass('sidr-class-menu-item-has-children sidr-class-dropdown'); el.find('a').removeClass(); el.find('ul, .sidr-class-dropdown-toggle').remove().end().prependTo($this.next('ul')) } }); $("[class*='sidr-class-fa']", $sidrMain).attr('class', function (i, c) { c = c.replace('sidr-class-fa', 'fa'); c = c.replace('sidr-class-fa-', 'fa-'); return c }); $('.sidr-class-wpex-close > a', $sidrMain).on('click', function (e) { e.preventDefault(); $.sidr('close', 'sidr-main') }); self.config.$window.resize(function () { if (self.config.viewportWidth >= self.config.mobileMenuBreakpoint) { $.sidr('close', 'sidr-main') } }); $('li.sidr-class-local-scroll > a', $sidrMain).click(function () { var $hash = this.hash; if ($.inArray($hash, self.config.localScrollSections) > -1) { $.sidr('close', 'sidr-main'); self.scrollTo($hash); return false } }) - }, mobileMenuToggle: function () { - var self = this, $position = wpexLocalize.mobileToggleMenuPosition, $classes = 'mobile-toggle-nav wpex-mobile-menu wpex-clr wpex-togglep-' + $position, $mobileMenuContents = '', $mobileSearch = $('#mobile-menu-search'), $appendTo = self.config.$siteHeader, $toggleBtn = $('a.mobile-menu-toggle, li.mobile-menu-toggle > a'); if ('fixed_top' == self.config.mobileMenuToggleStyle) { $appendTo = $('#wpex-mobile-menu-fixed-top'); if ($appendTo.length) { $appendTo.append('') } } - else if ('absolute' == $position) { if ('navbar' == self.config.mobileMenuToggleStyle) { $appendTo = $('#wpex-mobile-menu-navbar'); if ($appendTo.length) { $appendTo.append('') } } else if ($appendTo) { $appendTo.append('') } } - else if ('afterself' == $position) { $appendTo = $('#wpex-mobile-menu-navbar'); $('').insertAfter($appendTo) } else { $('').insertAfter($appendTo) } - var $mobileToggleNav = $('.mobile-toggle-nav'); if ($('#mobile-menu-alternative').length) { $mobileMenuContents = $('#mobile-menu-alternative .dropdown-menu').html() } else { $mobileMenuContents = $('.dropdown-menu', self.config.$siteNav).html() } - $mobileToggleNav.html('
    ' + $mobileMenuContents + '
'); $('.mobile-toggle-nav-ul, .mobile-toggle-nav-ul *').children().each(function () { $(this).removeAttr('style') }); $('.mobile-toggle-nav-ul').addClass('container'); var parseDropParents = false; if (!parseDropParents) { var $parents = $mobileToggleNav.find('li.menu-item-has-children > a'); $parents.each(function () { var $this = $(this); if ($this && $this.attr('href') && '#' != $this.attr('href')) { var $parent = $this.parent('li'), el = $parent.clone(); $parent.removeClass('local-scroll'); $this.removeAttr('data-ls_linkto'); el.removeClass('menu-item-has-children'); el.find('ul, .wpex-open-submenu').remove().end().prependTo($this.next('ul')) } }); parseDropParents = true } - var dropDownParents = $mobileToggleNav.find('.menu-item-has-children'); dropDownParents.children('a').append(''); var $dropdownTargetEl = $dropdownTargetEl = $('.menu-item-has-children > a', $mobileToggleNav); $dropdownTargetEl.on('click', function (event) { - var $parentEl = $(this).parent('li'); if (!$parentEl.hasClass('active')) { var $allParentLis = $parentEl.parents('li'); $('.menu-item-has-children', $mobileToggleNav).not($allParentLis).removeClass('active').children('ul').stop(true, true).slideUp('fast'); $parentEl.addClass('active').children('ul').stop(true, true).slideDown('fast') } else { $parentEl.removeClass('active'); $parentEl.find('li').removeClass('active'); $parentEl.find('ul').stop(true, true).slideUp('fast') } - return false - }); function openToggle($button) { - if (wpexLocalize.animateMobileToggle) { $mobileToggleNav.stop(true, true).slideDown('fast').addClass('visible') } else { $mobileToggleNav.addClass('visible') } - $button.addClass('wpex-active') - } - function closeToggle($button) { - if (wpexLocalize.animateMobileToggle) { $mobileToggleNav.stop(true, true).slideUp('fast').removeClass('visible') } else { $mobileToggleNav.removeClass('visible') } - $mobileToggleNav.find('li.active > ul').stop(true, true).slideUp('fast'); $mobileToggleNav.find('.active').removeClass('active'); $button.removeClass('wpex-active') - } - $toggleBtn.on('click', function (e) { - if ($mobileToggleNav.hasClass('visible')) { closeToggle($(this)) } else { openToggle($(this)) } - return false - }); self.config.$window.resize(function () { if (self.config.viewportWidth >= self.config.mobileMenuBreakpoint && $mobileToggleNav.hasClass('visible')) { closeToggle($toggleBtn) } }); if ($mobileSearch.length) { $mobileToggleNav.append(''); $('.mobile-toggle-nav-search').append($mobileSearch) } - }, mobileMenuFullScreen: function () { - var self = this, $style = wpexLocalize.fullScreenMobileMenuStyle ? wpexLocalize.fullScreenMobileMenuStyle : false, $mobileSearch = $('#mobile-menu-search'), $menuHTML = ''; self.config.$body.append('
×
'); var $navUL = $('.full-screen-overlay-nav-ul'); if ($('#mobile-menu-alternative').length) { $menuHTML = $('#mobile-menu-alternative .dropdown-menu').html() } else { $menuHTML = $('#site-navigation .dropdown-menu').html() } - $navUL.html($menuHTML); var $nav = $('.full-screen-overlay-nav'); $('.full-screen-overlay-nav, .full-screen-overlay-nav *').children().each(function () { $(this).removeAttr('style') }); var parseDropParents = false; if (!parseDropParents) { var $parents = $nav.find('li.menu-item-has-children > a'); $parents.each(function () { var $this = $(this); if ($this && $this.attr('href') && '#' != $this.attr('href')) { var $parent = $this.parent('li'), el = $parent.clone(); $parent.removeClass('local-scroll'); $this.removeAttr('data-ls_linkto'); el.removeClass('menu-item-has-children'); el.find('ul').remove().end().prependTo($this.next('ul')) } }); parseDropParents = true } - var $dropdownTargetEl = $nav.find('li.menu-item-has-children > a'); $dropdownTargetEl.on('click', function (event) { - var $parentEl = $(this).parent('li'); if (!$parentEl.hasClass('wpex-active')) { var $allParentLis = $parentEl.parents('li'); $nav.find('.menu-item-has-children').not($allParentLis).removeClass('wpex-active').children('ul').stop(true, true).slideUp('fast'); $parentEl.addClass('wpex-active').children('ul').stop(true, true).slideDown({ duration: 'normal', easing: 'easeInQuad' }) } else { $parentEl.removeClass('wpex-active'); $parentEl.find('li').removeClass('wpex-active'); $parentEl.find('ul').stop(true, true).slideUp('fast') } - return false - }); $('.mobile-menu-toggle').on('click', function () { $nav.addClass('visible'); self.config.$body.addClass('wpex-noscroll'); return false }); $('.local-scroll > a', $nav).click(function () { var $hash = this.hash; if ($.inArray($hash, self.config.localScrollSections) > -1) { $nav.removeClass('visible'); self.config.$body.removeClass('wpex-noscroll'); return false } }); $('.full-screen-overlay-nav-close').on('click', function () { $nav.removeClass('visible'); $nav.find('li.wpex-active > ul').stop(true, true).slideUp('fast'); $nav.find('.wpex-active').removeClass('wpex-active'); self.config.$body.removeClass('wpex-noscroll'); return false }); if ($mobileSearch.length) { $navUL.append($mobileSearch); $('#mobile-menu-search').wrap('') } - }, navNoClick: function () { $('li.nav-no-click > a, li.sidr-class-nav-no-click > a').on('click', function () { return false }) }, menuSearch: function () { - var self = this; var $toggleEl = ''; var $wrapEl = $('.header-searchform-wrap'); if ($wrapEl.length) { - if ($wrapEl.data('placeholder')) { $wrapEl.find('input[type="search"]').attr('placeholder', $wrapEl.data('placeholder')) } - if ($wrapEl.data('disable-autocomplete')) { $wrapEl.find('input[type="search"]').attr('autocomplete', 'off') } - } - if ('drop_down' == wpexLocalize.menuSearchStyle) { - $toggleEl = $('a.search-dropdown-toggle, a.mobile-menu-search'); var $searchDropdownForm = $('#searchform-dropdown'); $toggleEl.click(function (event) { - $searchDropdownForm.toggleClass('show'); $(this).parent('li').toggleClass('active'); var $transitionDuration = $searchDropdownForm.css('transition-duration'); $transitionDuration = $transitionDuration.replace('s', '') * 1000; if ($transitionDuration) { setTimeout(function () { $searchDropdownForm.find('input[type="search"]').focus() }, $transitionDuration) } - $('div#current-shop-items-dropdown').removeClass('show'); $('li.wcmenucart-toggle-dropdown').removeClass('active'); return false - }); self.config.$document.on('click', function (event) { if (!$(event.target).closest('#searchform-dropdown.show').length) { $toggleEl.parent('li').removeClass('active'); $searchDropdownForm.removeClass('show') } }) - } - else if ('overlay' == wpexLocalize.menuSearchStyle) { - $toggleEl = $('a.search-overlay-toggle, a.mobile-menu-search, li.search-overlay-toggle > a'); var $overlayEl = $('#wpex-searchform-overlay'); var $inner = $overlayEl.find('.wpex-inner'); $toggleEl.on('click', function (event) { - $overlayEl.toggleClass('active'); $overlayEl.find('input[type="search"]').val(''); if ($overlayEl.hasClass('active')) { var $overlayElTransitionDuration = $overlayEl.css('transition-duration'); $overlayElTransitionDuration = $overlayElTransitionDuration.replace('s', '') * 1000; setTimeout(function () { $overlayEl.find('input[type="search"]').focus() }, $overlayElTransitionDuration) } - return false - }); $inner.click(function (event) { event.stopPropagation() }); $overlayEl.click(function () { $overlayEl.removeClass('active') }) - } - else if ('header_replace' == wpexLocalize.menuSearchStyle) { - $toggleEl = $('a.search-header-replace-toggle, a.mobile-menu-search'); var $headerReplace = $('#searchform-header-replace'); $toggleEl.click(function (event) { - $headerReplace.toggleClass('show'); var $transitionDuration = $headerReplace.css('transition-duration'); $transitionDuration = $transitionDuration.replace('s', '') * 1000; if ($transitionDuration) { setTimeout(function () { $headerReplace.find('input[type="search"]').focus() }, $transitionDuration) } - return false - }); $('#searchform-header-replace-close').click(function () { $headerReplace.removeClass('show'); return false }); self.config.$document.on('click', function (event) { if (!$(event.target).closest($('#searchform-header-replace.show')).length) { $headerReplace.removeClass('show') } }) - } - }, headerCart: function () { - }, headerOverlayOffset: function () { - }, hideEditLink: function () { - }, inlineHeaderLogo: function () { - var self = this; if ('five' != self.config.siteHeaderStyle) return; var $headerLogo = $('#site-header-inner > .header-five-logo', self.config.$siteHeader); var $headerNav = $('.navbar-style-five', self.config.$siteHeader); var $navLiCount = $headerNav.children('#site-navigation').children('ul').children('li').size(); var $navBeforeMiddleLi = Math.round($navLiCount / 2) - parseInt(wpexLocalize.headerFiveSplitOffset); var $centeredLogo = $('.menu-item-logo .header-five-logo'); if (this.config.viewportWidth >= this.config.mobileMenuBreakpoint && $headerLogo.length && $headerNav.length) { $('').insertAfter($headerNav.find('#site-navigation > ul > li:nth( ' + $navBeforeMiddleLi + ' )')); $headerLogo.appendTo($headerNav.find('.menu-item-logo')) } - if (this.config.viewportWidth < this.config.mobileMenuBreakpoint && $centeredLogo.length) { $centeredLogo.prependTo($('#site-header-inner')); $('.menu-item-logo').remove() } - $headerLogo.addClass('display') - }, backTopLink: function () { var self = this; var $scrollTopLink = $('a#site-scroll-top'); if ($scrollTopLink.length) { var $speed = wpexLocalize.scrollTopSpeed ? parseInt(wpexLocalize.scrollTopSpeed) : 1000; var $offset = wpexLocalize.scrollTopOffset ? parseInt(wpexLocalize.scrollTopOffset) : 100; self.config.$window.scroll(function () { if ($(this).scrollTop() > $offset) { $scrollTopLink.addClass('show') } else { $scrollTopLink.removeClass('show') } }); $scrollTopLink.on('click', function (event) { $('html, body').stop(true, true).animate({ scrollTop: 0 }, $speed, self.config.localScrollEasing); return false }) } }, smoothCommentScroll: function () { var self = this; $('.single li.comment-scroll a').click(function (event) { var $target = $('#comments'); var $offset = $target.offset().top - self.config.localScrollOffset - 20; self.scrollTo($target, $offset); return false }) }, tipsyTooltips: function () { $('a.tooltip-left').tipsy({ fade: true, gravity: 'e' }); $('a.tooltip-right').tipsy({ fade: true, gravity: 'w' }); $('a.tooltip-up').tipsy({ fade: true, gravity: 's' }); $('a.tooltip-down').tipsy({ fade: true, gravity: 'n' }) }, responsiveText: function () { var self = this; var $responsiveText = $('.wpex-responsive-txt'); $responsiveText.each(function () { var $this = $(this); var $thisWidth = $this.width(); var $data = $this.data(); var $minFont = self.parseData($data.minFontSize, 13); var $maxFont = self.parseData($data.maxFontSize, 40); var $ratio = self.parseData($data.responsiveTextRatio, 10); var $fontBase = $thisWidth / $ratio; var $fontSize = $fontBase > $maxFont ? $maxFont : $fontBase < $minFont ? $minFont : $fontBase; $this.css('font-size', $fontSize + 'px') }) }, toggleBar: function () { - var self = this; var $toggleBtn = $('a.toggle-bar-btn, a.togglebar-toggle, .togglebar-toggle > a'); var $toggleBarWrap = $('#toggle-bar-wrap'); if ($toggleBtn.length && $toggleBarWrap.length) { - $toggleBtn.on('click', function (event) { - var $fa = $('.toggle-bar-btn').find('.fa'); if ($fa.length) { $fa.toggleClass($toggleBtn.data('icon')); $fa.toggleClass($toggleBtn.data('icon-hover')) } - $toggleBarWrap.toggleClass('active-bar'); return false - }); self.config.$document.on('click', function (event) { if (!$(event.target).closest('#toggle-bar-wrap.active-bar').length) { $toggleBarWrap.removeClass('active-bar'); var $fa = $toggleBtn.children('.fa'); if ($fa.length) { $fa.removeClass($toggleBtn.data('icon-hover')).addClass($toggleBtn.data('icon')) } } }) - } - }, skillbar: function ($context) { - }, milestone: function ($context) { - - }, twentytwenty: function ($context) { - if (undefined === $.fn.twentytwenty || undefined === $.fn.imagesLoaded) { return } - $('.vcex-image-ba', $context).each(function () { var $this = $(this); $this.imagesLoaded(function () { $this.twentytwenty($this.data('options')) }) }) - }, countdown: function ($context) { - if (undefined === $.fn.countdown) { return } - $('.vcex-countdown', $context).each(function () { - var $this = $(this), endDate = $this.data('countdown'), days = $this.data('days'), hours = $this.data('hours'), minutes = $this.data('minutes'), seconds = $this.data('seconds'), timezone = $this.data('timezone'); if (timezone && typeof moment.tz !== 'undefined' && $.isFunction(moment.tz)) { endDate = moment.tz(endDate, timezone).toDate() } - if (!endDate) { return } - $this.countdown(endDate, function (event) { $this.html(event.strftime('
%-D ' + days + '
%-H ' + hours + '
%-M ' + minutes + '
%-S ' + seconds + '
')) }) - }) - }, typedText: function ($context) { - }, parallax: function ($context) { $('.wpex-parallax-bg', $context).each(function () { var $this = $(this); $this.scrolly2().trigger('scroll'); $this.css({ 'opacity': 1 }) }) }, parseLocalScrollOffset: function (instance) { - var self = this; var $offset = 0; if (wpexLocalize.localScrollOffset) { return wpexLocalize.localScrollOffset } - if (wpexLocalize.localScrollExtraOffset) { $offset = $offset + parseInt(wpexLocalize.localScrollExtraOffset) } - if ($('#wpadminbar').is(':visible')) { $offset = parseInt($offset) + parseInt($('#wpadminbar').outerHeight()) } - if ('fixed_top' == self.config.mobileMenuToggleStyle) { var $mmFixed = $('#wpex-mobile-menu-fixed-top'); if ($mmFixed.length && $mmFixed.is(':visible')) { $offset = parseInt($offset) + parseInt($mmFixed.outerHeight()) } } - if (self.config.hasStickyTopBar) { $offset = parseInt($offset) + parseInt(self.config.$stickyTopBar.outerHeight()) } - if (self.config.hasStickyHeader) { - if (!self.config.hasStickyMobileHeader && self.config.windowWidth <= wpexLocalize.stickyHeaderBreakPoint) { $offset = parseInt($offset) + 0 } - else { - if (self.config.$siteHeader.hasClass('shrink-sticky-header')) { if ('init' == instance || self.config.$siteHeader.is(':visible')) { $offset = parseInt($offset) + parseInt(wpexLocalize.shrinkHeaderHeight) } } - else { $offset = parseInt($offset) + parseInt(self.config.siteHeaderHeight) } - } - } - if (self.config.hasStickyNavbar) { if (self.config.viewportWidth >= wpexLocalize.stickyNavbarBreakPoint) { $offset = parseInt($offset) + parseInt(self.config.$siteNavWrap.outerHeight()) } } - var $vcexNavbarSticky = $('.vcex-navbar-sticky'); if ($vcexNavbarSticky.length) { $offset = parseInt($offset) + parseInt($vcexNavbarSticky.outerHeight()) } - $offset = $offset ? $offset - 1 : 0; return $offset - }, scrollTo: function (hash, offset, callback) { - if (!hash) { return } - var self = this; var $target = null; var $page = $('html, body'); var $isLsDataLink = false; var $lsTarget = $('[data-ls_id="' + hash + '"]'); if ($lsTarget.length) { $target = $lsTarget; $isLsDataLink = true } - else { if (typeof hash == 'string') { $target = $(hash) } else { $target = hash } } - if ($target.length) { - var $lsSpeed = self.config.localScrollSpeed ? parseInt(self.config.localScrollSpeed) : 1000, $lsOffset = self.config.localScrollOffset, $lsEasing = self.config.localScrollEasing; offset = offset ? offset : $target.offset().top - $lsOffset; if (hash && $isLsDataLink && wpexLocalize.localScrollUpdateHash) { window.location.hash = hash } - var $mobileToggleNav = $('.mobile-toggle-nav'); if ($mobileToggleNav.hasClass('visible')) { $('a.mobile-menu-toggle, li.mobile-menu-toggle > a').removeClass('wpex-active'); if (wpexLocalize.animateMobileToggle) { $mobileToggleNav.slideUp('fast', function () { $mobileToggleNav.removeClass('visible'); $page.stop(true, true).animate({ scrollTop: $target.offset().top - $lsOffset }, $lsSpeed) }) } else { $mobileToggleNav.hide().removeClass('visible'); $page.stop(true, true).animate({ scrollTop: $target.offset().top - $lsOffset }, $lsSpeed) } } - else { $page.stop(true, true).animate({ scrollTop: offset }, $lsSpeed, $lsEasing) } - } - }, scrollToHash: function (self) { - var hash = location.hash; var $target = ''; var $offset = ''; if (!hash) { return } - if ('#view_comments' == hash || '#comments_reply' == hash) { - $target = $('#comments'); $offset = $target.offset().top - self.config.localScrollOffset - 20; if ($target.length) { self.scrollTo($target, $offset) } - return - } - if (self.config.hasStickyHeader && hash.indexOf('comment-') != -1) { $target = $(hash); $offset = $target.offset().top - self.config.localScrollOffset - 20; self.scrollTo($target, $offset); return } - if (hash.indexOf('localscroll-') != -1) { self.scrollTo(hash.replace('localscroll-', '')); return } - if ($('[data-ls_id="' + hash + '"]').length) { self.scrollTo(hash); return } - }, localScrollSections: function () { - var self = this; if (self.config.$siteNav) { var $navLinks = $('a', this.config.$siteNav); var $location = location; var $currentPage = $location.href; $currentPage = $location.hash ? $currentPage.substr(0, $currentPage.indexOf('#')) : $currentPage; $navLinks.each(function () { var $this = $(this); var $ref = $this.attr('href'); if ($ref && $ref.indexOf('localscroll-') != -1) { $this.parent('li').addClass('local-scroll'); var $withoutHash = $ref.substr(0, $ref.indexOf('#')); if ($withoutHash == $currentPage) { var $hash = $ref.substring($ref.indexOf('#') + 1); var $parseHash = $hash.replace('localscroll-', ''); $this.attr('data-ls_linkto', '#' + $parseHash) } } }) } - var $array = []; var $links = $(self.config.$localScrollTargets); for (var i = 0; i < $links.length; i++) { - var $link = $links[i]; var $linkDom = $($link); var $href = $($link).attr('href'); var $hash = $href ? '#' + $href.replace(/^.*?(#|$)/, '') : null; if ($hash && '#' != $hash) { - if (!$linkDom.attr('data-ls_linkto')) { $linkDom.attr('data-ls_linkto', $hash) } - if ($('[data-ls_id="' + $hash + '"]').length) { if ($.inArray($hash, $array) == -1) { $array.push($hash) } } - else if ($($hash).length) { if ($.inArray($hash, $array) == -1) { $array.push($hash) } } - } - } - return $array - }, - localScrollHighlight: function () { - if (!wpexLocalize.localScrollHighlight) { return } - var self = this, localScrollSections = self.config.localScrollSections; if (!localScrollSections.length) { return } - var $windowPos = this.config.$window.scrollTop(), $divPos, $divHeight, $higlight_link; for (var i = 0; i < localScrollSections.length; i++) { - var $section = localScrollSections[i]; if ($('[data-ls_id="' + $section + '"]').length) { var $targetDiv = $('[data-ls_id="' + $section + '"]'); $divPos = $targetDiv.offset().top - self.config.localScrollOffset - 1; $divHeight = $targetDiv.outerHeight(); $higlight_link = $('[data-ls_linkto="' + $section + '"]') } - else if ($($section).length) { $divPos = $($section).offset().top - self.config.localScrollOffset - 1; $divHeight = $($section).outerHeight(); $higlight_link = $('[data-ls_linkto="' + $section + '"]') } - if ($windowPos >= $divPos && $windowPos < ($divPos + $divHeight)) { $higlight_link.addClass('active'); $higlight_link.parent('li').addClass('current-menu-item') } else { $higlight_link.removeClass('active'); $higlight_link.parent('li').removeClass('current-menu-item') } - } - }, equalHeights: function ($context) { - if ($.fn.wpexEqualHeights !== undefined) { - var container_block = $(window.wpexAnimsition.linkElement).parents(window.wpexAnimsition.container_block); - $(container_block, $context).wpexEqualHeights({ children: window.wpexAnimsition.children_text_block }); - } - }, footerReveal: function () { - var self = this; if (!self.config.$hasFooterReveal) { return } - var $footerReveal = self.config.$footerReveal; - function showHide() { - if (self.config.viewportWidth < 960) { - if ($footerReveal.hasClass('footer-reveal')) { - $footerReveal.toggleClass('footer-reveal footer-reveal-visible'); - self.config.$siteWrap.css('margin-bottom', '') - } - return - } - var $hideFooter = false, - $footerRevealHeight = $footerReveal.outerHeight(), - windowHeight = self.config.windowHeight, $heightCheck = 0; - if ($footerReveal.hasClass('footer-reveal')) { - $heightCheck = self.config.$siteWrap.outerHeight() + self.config.localScrollOffset - } else { - $heightCheck = self.config.$siteWrap.outerHeight() + self.config.localScrollOffset - $footerRevealHeight - } - if ((windowHeight > $footerRevealHeight) && ($heightCheck > windowHeight)) { - $hideFooter = true - } - if ($hideFooter && $footerReveal.hasClass('footer-reveal-visible')) { - self.config.$siteWrap.css({ 'margin-bottom': $footerRevealHeight }); $footerReveal.removeClass('footer-reveal-visible'); - $footerReveal.addClass('footer-reveal') - } - if (!$hideFooter && $footerReveal.hasClass('footer-reveal')) { self.config.$siteWrap.css('margin-bottom', ''); $footerReveal.removeClass('footer-reveal'); $footerReveal.removeClass('wpex-visible'); $footerReveal.addClass('footer-reveal-visible') } - } - function reveal() { if ($footerReveal.hasClass('footer-reveal')) { if (self.scrolledToBottom(self.config.$siteMain)) { $footerReveal.addClass('wpex-visible') } else { $footerReveal.removeClass('wpex-visible') } } } - showHide(); self.config.$window.scroll(function () { reveal() }); self.config.$window.resize(function () { if (self.config.widthChanged || self.config.heightChanged) { showHide() } }) - }, titleBreadcrumbsFix: function () { - - }, customSelects: function ($context) { $(wpexLocalize.customSelects, $context).each(function () { var $this = $(this); var elID = $this.attr('id'); var elClass = elID ? ' wpex-' + elID : ''; if ($this.is(':visible')) { if ($this.attr('multiple')) { $this.wrap('
') } else { $this.wrap('
') } } }); $('.wpex-select-wrap', $context).append(''); if ($.fn.select2 !== undefined) { $('#calc_shipping_country').select2() } }, fadeIn: function () { $('.fade-in-image, .wpex-show-on-load').addClass('no-opacity') }, wpexOwlCarousel: function ($context) { - if (undefined === $.fn.wpexOwlCarousel) { return } - var self = this; $('.wpex-carousel', $context).each(function () { var $this = $(this), $data = $this.data(); var owl = $this.wpexOwlCarousel({ animateIn: false, animateOut: false, lazyLoad: false, smartSpeed: $data.smartSpeed ? $data.smartSpeed : wpexLocalize.carouselSpeed, rtl: wpexLocalize.isRTL ? true : false, dots: $data.dots, nav: $data.nav, items: $data.items, slideBy: $data.slideby, center: $data.center, loop: $data.loop, margin: $data.margin, autoplay: $data.autoplay, autoplayTimeout: $data.autoplayTimeout, autoHeight: $data.autoHeight, autoWidth: $data.autoWidth, autoplayHoverPause: true, navText: ['', ''], responsive: { 0: { items: $data.itemsMobilePortrait }, 480: { items: $data.itemsMobileLandscape }, 768: { items: $data.itemsTablet }, 960: { items: $data.items } } }) }) - }, sliderPro: function ($context) { - var self = this; if (undefined === $.fn.sliderPro) { return } - $('.wpex-slider', $context).each(function () { - var $slider = $(this); var $data = $slider.data(); var $slides = $slider.find('.sp-slide'); $slider.find('.wpex-slider-slide, .wpex-slider-thumbnails.sp-thumbnails').css({ 'opacity': 1, 'display': 'block' }); var $autoHeight = self.parseData($data.autoHeight, true); var $preloader = $slider.prev('.wpex-slider-preloaderimg'); var $height = ($preloader.length && $autoHeight) ? $preloader.outerHeight() : null; var $heightAnimationDuration = self.parseData($data.heightAnimationDuration, 600); var $loop = self.parseData($data.loop, false); var $autoplay = self.parseData($data.autoPlay, true); if (!$autoHeight && $slides.length) { var $tallest = self.getTallestEl($slides); $height = $tallest.height() } - $slider.sliderPro({ aspectRatio: -1, width: '100%', height: $height, responsive: true, fade: self.parseData($data.fade, 600), touchSwipe: self.parseData($data.touchSwipe, true), fadeDuration: self.parseData($data.animationSpeed, 600), slideAnimationDuration: self.parseData($data.animationSpeed, 600), autoHeight: $autoHeight, heightAnimationDuration: parseInt($heightAnimationDuration), arrows: self.parseData($data.arrows, true), fadeArrows: self.parseData($data.fadeArrows, true), autoplay: $autoplay, autoplayDelay: self.parseData($data.autoPlayDelay, 5000), buttons: self.parseData($data.buttons, true), shuffle: self.parseData($data.shuffle, false), orientation: self.parseData($data.direction, 'horizontal'), loop: $loop, keyboard: false, fullScreen: self.parseData($data.fullscreen, false), slideDistance: self.parseData($data.slideDistance, 0), thumbnailsPosition: 'bottom', thumbnailHeight: self.parseData($data.thumbnailHeight, 70), thumbnailWidth: self.parseData($data.thumbnailWidth, 70), thumbnailPointer: self.parseData($data.thumbnailPointer, false), updateHash: self.parseData($data.updateHash, false), thumbnailArrows: false, fadeThumbnailArrows: false, thumbnailTouchSwipe: true, fadeCaption: self.parseData($data.fadeCaption, true), captionFadeDuration: 600, waitForLayers: true, autoScaleLayers: true, forceSize: 'none', reachVideoAction: 'playVideo', leaveVideoAction: 'pauseVideo', endVideoAction: 'nextSlide', fadeOutPreviousSlide: true, autoplayOnHover: self.parseData($data.autoplayOnHover, 'pause'), init: function (event) { $slider.prev('.wpex-slider-preloaderimg').remove() }, gotoSlide: function (event) { if (!$loop && $autoplay && event.index === $slider.find('.sp-slide').length - 1) { $slider.data('sliderPro').stopAutoplay() } } }) - }); $('.woo-product-entry-slider').click(function () { return false }); if (undefined === $.fn.imagesLoaded) { return } - var $sliderProThumbsNC = $('.wpex-slider-thumbnails.sp-nc-thumbnails', $context); $sliderProThumbsNC.each(function () { var $this = $(this); $this.imagesLoaded(function () { $this.css({ 'opacity': 1, 'display': 'block' }) }) }) - }, isotopeGrids: function ($context) { - var self = this; - if (undefined === $.fn.imagesLoaded || undefined === $.fn.isotope) { return } - var containers = $(window.wpexAnimsition.linkElement).parents(window.wpexAnimsition.container_block); - function get_filter_constraint(filterLink){ - var filter_attr = window.wpexAnimsition.filter_attr; - var filter_constraint = filterLink.attr(filter_attr); - var filter_attrs = filter_attr.split(","); - if(filter_attrs.length != 1){ - filter_constraint = []; - filter_attr = ""; - filter_attrs.forEach(function(fa){ - var tmp_filter_constraint = filterLink.attr(fa); - if( tmp_filter_constraint != undefined){ - if(window.wpexAnimsition.use_attr_filter){ - if(tmp_filter_constraint == "all"){ - filter_constraint.push("["+fa+"]"); - }else{ - filter_constraint.push("["+fa+(fa[fa.length-1] == "s" ? '*' : '')+"=\""+tmp_filter_constraint+"\"]"); - } - }else{ - filter_constraint.push(tmp_filter_constraint); - } - } - }) - if(window.wpexAnimsition.use_attr_filter){ - filter_constraint = filter_constraint.join("],["); - }else{ - filter_constraint = filter_constraint.join(","); - } - }else{ - if(window.wpexAnimsition.use_attr_filter){ - if(filter_constraint == "all"){ - filter_constraint = "["+filter_attr+"]"; - }else{ - filter_constraint = "["+filter_attr+(filter_attr[filter_attr.length-1] == "s" ? '*' : '')+"=\""+filter_constraint+"\"]"; - } - } - } - if(filterLink.data("count_limit") != undefined){ - filter_constraint = filter_constraint+":nth-child(-n+"+filterLink.data("count_limit")+")"; - } - return filter_constraint; - } - var container_text_arr = window.wpexAnimsition.container_block.split(","); - if(window.already_changes == undefined) - window.already_changes = container_text_arr.map(function(){return false}); - $(containers).each(function (i,v) { - var $container = $(v); - if(container_text_arr[i] == undefined){ - return; - } - if($(container_text_arr[i]).parents(window.wpexAnimsition.need_fix_containers).length != 0){ - if(!window.already_changes[i]){ - var $filter = $container.parent().find(window.wpexAnimsition.filter_bar); - var $filterLinks = $filter.find(window.wpexAnimsition.filter_option); - var $divs = []; - $filterLinks.each(function (i,v) { - var filter_constraint = get_filter_constraint($(v)); - var $div = $("
"); - var filter_constraints = filter_constraint.split(",") - filter_constraints.forEach(function(vv){ - var rm_attr = ""; - var clone_mode = false; - var max_count = -1; - if(vv[0] == "["){ - if(vv.search('=') != -1){ - var attr_pair = vv.slice(1,-1).split("="); - attr_pair = attr_pair.map(function(v){ return v.match(/[^"^']+/)[0]}); - attr_pair[0] = attr_pair[0].replace("*",""); - $div.attr(attr_pair[0],attr_pair[1]); - rm_attr = attr_pair[0]; - }else{ - clone_mode = true; - var attr_pair = [vv.split(/\[|\]/)[1],"All"]; - $(v).attr(attr_pair[0],attr_pair[1]); - $div.attr(attr_pair[0],attr_pair[1]); - var match_max_count = vv.match(/:nth-child\(-n\+(\d+)\)/) - if(match_max_count && match_max_count.length == 2){ - max_count = match_max_count[1]; - } - rm_attr = attr_pair[0]; - } - }else if(vv[0] == "."){ - $div.attr('class',vv.slice(1)); - rm_attr = 'class'; - }else if(vv[0] == "#"){ - $div.attr('id',vv.slice(1)); - rm_attr = 'id'; - } - var linkElements = $container.parent().find(window.wpexAnimsition.linkElement).filter(vv); - if(linkElements.length != 0){ - var parents_elements = window.wpexAnimsition.linkElement.split(/>| /).slice(0,-1).filter(function(v){return v!=""}); - parents_elements = parents_elements.reverse(); - var parent_el = null; - parents_elements.forEach(function(vvv){ - if(parent_el == null){ - parent_el = linkElements.parents(vvv) - }else{ - parent_el = parent_el.parents(vvv) - } - }) - $div.append(parent_el.eq(0).prop("outerHTML")); - if(!clone_mode){ - $div.find(window.wpexAnimsition.linkElement).remove(); - linkElements.removeAttr(rm_attr); - linkElements.appendTo($div.find("*").eq(-1)); - }else if(max_count != -1){ - $(v).removeAttr("data-count_limit"); - $(v).removeData("count_limit"); - $div.find(window.wpexAnimsition.linkElement).not(":lt("+max_count+")").remove(); - $div.find(window.wpexAnimsition.linkElement).removeAttr(rm_attr); - } - } - }) - $divs.push($div.prop("outerHTML")); - }) - $(v).before($divs.join("")); - var parents_text = window.wpexAnimsition.container_block.split(',').map(function(t){ - var str_arr = t.split(/>| /); - return ((str_arr.length <= 1) ? "*" : str_arr[0]); - }).join(","); - var parent_node = $(v).parents(parents_text); - $(v).remove(); - var activeItems; - var $filter = parent_node.find(window.wpexAnimsition.filter_bar); - if ($filter.length) { - var $filterLinks = $filter.find(window.wpexAnimsition.filter_option); - activeItems = ''; - if($filterLinks.length != 0){ - var filter_constraint = get_filter_constraint($filterLinks.eq(0)); - $filterLinks.each(function(){ - var filter_constraint = get_filter_constraint($(this)); - var inactive_node = parent_node.find(filter_constraint).not(window.wpexAnimsition.filter_option); - inactive_node.css("display","none"); - inactive_node.find("> *").addClass("hidden_item"); - inactive_node.find("> *").removeClass("active"); - }) - var active_node = parent_node.find(filter_constraint).not(window.wpexAnimsition.filter_option) - active_node.css("display",""); - active_node.find("> *").removeClass("hidden_item"); - active_node.find("> *").eq(0).addClass("active"); - active_node.find("> *").eq(0).css("display",""); - active_node.find(window.wpexAnimsition.linkElement).css("display",""); - } - $filterLinks.click(function () { - var filter_constraint = get_filter_constraint($(this)); - $filterLinks.each(function(){ - var filter_constraint = get_filter_constraint($(this)); - var inactive_node = parent_node.find(filter_constraint).not(window.wpexAnimsition.filter_option); - inactive_node.css("display","none"); - inactive_node.find("> *").addClass("hidden_item"); - inactive_node.find("> *").removeClass("active"); - }) - var active_node = parent_node.find(filter_constraint).not(window.wpexAnimsition.filter_option) - active_node.css("display",""); - active_node.find("> *").removeClass("hidden_item"); - active_node.find("> *").eq(0).addClass("active"); - active_node.find("> *").eq(0).css("display",""); - active_node.find(window.wpexAnimsition.linkElement).css("display",""); - active_node.find(window.wpexAnimsition.children_text_block).css("height",""); - return false; - }) - } - } - window.already_changes[i] = true; - return; - } - $container.imagesLoaded(function () { - var activeItems; - var $filter = $container.parent().find(window.wpexAnimsition.filter_bar); - if ($filter.length) { - var $filterLinks = $filter.find(window.wpexAnimsition.filter_option); - activeItems = ''; - if($filterLinks.length != 0){ - var filter_constraint = get_filter_constraint($filterLinks.eq(0)); - activeItems = filter_constraint; - } - $filterLinks.click(function () { - var filter_constraint = get_filter_constraint($(this)); - $grid.isotope({ filter: filter_constraint}); - self.equalHeights(); - return false; - }) - } - var $grid = $container.isotope({ - itemSelector: window.wpexAnimsition.linkElement, - transformsEnabled: true, - isOriginLeft: wpexLocalize.isRTL ? false : true, - transitionDuration: $container.data('transition-duration') ? $container.data('transition-duration') + 's' : '0.4s', - layoutMode: $container.data('layout-mode') ? $container.data('layout-mode') : 'masonry', - filter: activeItems - }) - $grid.on( 'layoutComplete', function(){ - //Something to call after animation - }); - }) - }) - }, customHovers: function () { - - }, responsiveCSS: function () { var headCSS = ''; var mediaObj = {}; var bkPoints = {}; $('.wpex-vc-rcss').remove(); bkPoints.d = ''; bkPoints = $.extend(bkPoints, wpexLocalize.responsiveDataBreakpoints); $.each(bkPoints, function (key) { mediaObj[key] = '' }); $('[data-wpex-rcss]').each(function (index, value) { var $this = $(this); var uniqueClass = 'wpex-rcss-' + index; var data = $this.data('wpex-rcss'); $this.addClass(uniqueClass); $.each(data, function (key, val) { var thisVal = val; var target = key; $.each(bkPoints, function (key) { if (thisVal[key]) { mediaObj[key] += '.' + uniqueClass + '{' + target + ':' + thisVal[key] + '!important;}' } }) }) }); $.each(mediaObj, function (key, val) { if ('d' == key) { headCSS += val } else { if (val) { headCSS += '@media (max-width: ' + bkPoints[key] + ') { ' + val + ' }' } } }); if (headCSS) { headCSS = ''; this.config.$head.append(headCSS) } }, vcexFilterNav: function ($context) { - - }, archiveMasonryGrids: function () { - if (undefined === $.fn.imagesLoaded || undefined === $.fn.isotope) { return } - var self = this, $archives = $('.blog-masonry-grid,div.wpex-row.portfolio-masonry,div.wpex-row.portfolio-no-margins,div.wpex-row.staff-masonry,div.wpex-row.staff-no-margins'); $archives.each(function () { var $this = $(this); var $data = $this.data(); $this.imagesLoaded(function () { var $grid = $this.isotope({ itemSelector: '.isotope-entry', transformsEnabled: true, isOriginLeft: wpexLocalize.isRTL ? false : true, transitionDuration: self.parseData($data.transitionDuration, '0.0') + 's', layoutMode: self.parseData($data.layoutMode, 'masonry') }) }) }) - }, autoLightbox: function () { - if (!wpexLocalize.iLightbox.auto) { return } - var self = this, imageExt = ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tiff', 'tif', 'jfif', 'jpe']; $('.wpb_text_column a:has(img), body.no-composer .entry a:has(img)').each(function () { var $this = $(this); var href = $this.attr('href'); var ext = self.getUrlExtension(href); if (href && imageExt.indexOf(ext) !== -1) { if (!$this.parents('.woocommerce-product-gallery').length) { $this.addClass('wpex-lightbox') } } }) - }, - iLightbox: function ($context) { - }, - overlayHovers: function () { - }, stickyTopBar: function () { - - }, stickyOffset: function () { - - }, stickyHeader: function () { - - }, shrinkStickyHeader: function () { - - }, stickyHeaderMenu: function () { - - }, stickyVcexNavbar: function () { - - }, infiniteScrollInit: function () { - }, loadMore: function () { - - }, ctf7Preloader: function () { - if (!wpexLocalize.altercf7Prealoader) { return } - var $forms = $('form.wpcf7-form'); $forms.each(function () { var $this = $(this); var $button = $this.find('.wpcf7-submit'); if ($button.length) { $this.find('.ajax-loader').remove(); var $customLoader = $(''); $button.after($customLoader); $button.on('click', function () { $customLoader.addClass('visible') }); $('div.wpcf7').on('wpcf7:invalid wpcf7:spam wpcf7:mailsent wpcf7:mailfailed', function () { $customLoader.removeClass('visible') }) } }) - }, vcTabsTogglesJS: function () { - - }, vcAccessability: function () { - - }, rtlStretchRows: function () { - - }, vcexRemoveiFrameDups: function ($context) { - - }, vcPageEditable: function () { - - }, vcPageEditableFuncs: function ($context) { - - }, wooGallery: function () { - }, parseData: function (val, fallback) { return (typeof val !== 'undefined') ? val : fallback }, getUrlExtension: function (url) { var ext = url.split('.').pop().toLowerCase(); var extra = ext.indexOf('?') !== -1 ? ext.split('?').pop() : ''; ext = ext.replace(extra, ''); return ext.replace('?', '') }, scrolledToBottom: function (elem) { return this.config.windowTop >= elem.offset().top + elem.outerHeight() - window.innerHeight }, isElementInWindowView: function (elem) { var docViewTop = this.config.$window.scrollTop(); var docViewBottom = docViewTop + this.config.windowHeight; var elemTop = $(elem).offset().top; var elemBottom = elemTop + $(elem).height(); return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)) }, getTallestEl: function (el) { var tallest; var first = 1; el.each(function () { var $this = $(this); if (first == 1) { tallest = $this; first = 0 } else { if (tallest.height() < $this.height()) { tallest = $this } } }); return tallest }, - }; wpex.init() -})(jQuery) \ No newline at end of file diff --git a/custom_announcement/app/assets/javascripts/form.js b/custom_announcement/app/assets/javascripts/form.js deleted file mode 100644 index 6be0876..0000000 --- a/custom_announcement/app/assets/javascripts/form.js +++ /dev/null @@ -1,21 +0,0 @@ -$(document).ready(function() { - var config = {} - config.autoGrow_minHeight = 50; - config.allowedContent = false; - config.disallowedContent = 'img'; - config.toolbar = [ - { name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] }, - { name: 'editing', items: [ 'Find', 'Replace', '-', 'SelectAll', '-', 'Scayt' ] }, - - { name: 'basicstyles', items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'CopyFormatting', 'RemoveFormat' ] }, - '/', - { name: 'insert', items: [ 'SpecialChar'] }, - { name: 'styles', items: [ 'Font' ] }, - { name: 'colors', items: [ 'TextColor', 'BGColor' ] } - ]; - - var ckeditor_reduce = $('.ckeditor_reduce') - ckeditor_reduce.each(function(i,v){ - CKEDITOR.replace(v,config); - }) -}); \ No newline at end of file diff --git a/custom_announcement/app/assets/stylesheets/admin/custom_announcements.css b/custom_announcement/app/assets/stylesheets/admin/custom_announcements.css deleted file mode 100644 index 2c22c38..0000000 --- a/custom_announcement/app/assets/stylesheets/admin/custom_announcements.css +++ /dev/null @@ -1,7 +0,0 @@ -/* - Place all the styles related to the matching controller here. - They will automatically be included in application.css. -*/ -.table .expired{ - color: #BE2E2E; -} \ No newline at end of file diff --git a/custom_announcement/app/assets/stylesheets/custom_bulletin/.keep b/custom_announcement/app/assets/stylesheets/custom_bulletin/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/assets/stylesheets/custom_bulletin/bootstrap/_mixins.scss b/custom_announcement/app/assets/stylesheets/custom_bulletin/bootstrap/_mixins.scss deleted file mode 100644 index 74ccf9f..0000000 --- a/custom_announcement/app/assets/stylesheets/custom_bulletin/bootstrap/_mixins.scss +++ /dev/null @@ -1,947 +0,0 @@ -// -// Mixins -// -------------------------------------------------- - - -// Utilities -// ------------------------- - -// Clearfix -// Source: http://nicolasgallagher.com/micro-clearfix-hack/ -// -// For modern browsers -// 1. The space content is one way to avoid an Opera bug when the -// contenteditable attribute is included anywhere else in the document. -// Otherwise it causes space to appear at the top and bottom of elements -// that are clearfixed. -// 2. The use of `table` rather than `block` is only necessary if using -// `:before` to contain the top-margins of child elements. -@mixin clearfix() { - &:before, - &:after { - content: " "; // 1 - display: table; // 2 - } - &:after { - clear: both; - } -} - -// WebKit-style focus -@mixin tab-focus() { - // Default - outline: thin dotted; - // WebKit - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -// Center-align a block level element -@mixin center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} - -// Sizing shortcuts -@mixin size($width, $height) { - width: $width; - height: $height; -} -@mixin square($size) { - @include size($size, $size); -} - -// Placeholder text -@mixin placeholder($color: $input-color-placeholder) { - &::-moz-placeholder { color: $color; // Firefox - opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526 - &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+ - &::-webkit-input-placeholder { color: $color; } // Safari and Chrome -} - -// Text overflow -// Requires inline-block or block for proper styling -@mixin text-overflow() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -// CSS image replacement -// -// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for -// mixins being reused as classes with the same name, this doesn't hold up. As -// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note -// that we cannot chain the mixins together in Less, so they are repeated. -// -// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 - -// Deprecated as of v3.0.1 (will be removed in v4) -@mixin hide-text() { - font: #{0/0} a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -// New mixin to use as of v3.0.1 -@mixin text-hide() { - @include hide-text(); -} - - - -// CSS3 PROPERTIES -// -------------------------------------------------- - -// Single side border-radius -@mixin border-top-radius($radius) { - border-top-right-radius: $radius; - border-top-left-radius: $radius; -} -@mixin border-right-radius($radius) { - border-bottom-right-radius: $radius; - border-top-right-radius: $radius; -} -@mixin border-bottom-radius($radius) { - border-bottom-right-radius: $radius; - border-bottom-left-radius: $radius; -} -@mixin border-left-radius($radius) { - border-bottom-left-radius: $radius; - border-top-left-radius: $radius; -} - -// Drop shadows -// -// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's -// supported browsers that have box shadow capabilities now support the -// standard `box-shadow` property. -@mixin box-shadow($shadow...) { - -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1 - box-shadow: $shadow; -} - -// Transitions -@mixin transition($transition...) { - -webkit-transition: $transition; - transition: $transition; -} -@mixin transition-property($transition-property...) { - -webkit-transition-property: $transition-property; - transition-property: $transition-property; -} -@mixin transition-delay($transition-delay) { - -webkit-transition-delay: $transition-delay; - transition-delay: $transition-delay; -} -@mixin transition-duration($transition-duration...) { - -webkit-transition-duration: $transition-duration; - transition-duration: $transition-duration; -} -@mixin transition-transform($transition...) { - -webkit-transition: -webkit-transform $transition; - -moz-transition: -moz-transform $transition; - -o-transition: -o-transform $transition; - transition: transform $transition; -} - -// Transformations -@mixin rotate($degrees) { - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); // IE9 only - transform: rotate($degrees); -} -@mixin scale($scale-args...) { - -webkit-transform: scale($scale-args); - -ms-transform: scale($scale-args); // IE9 only - transform: scale($scale-args); -} -@mixin translate($x, $y) { - -webkit-transform: translate($x, $y); - -ms-transform: translate($x, $y); // IE9 only - transform: translate($x, $y); -} -@mixin skew($x, $y) { - -webkit-transform: skew($x, $y); - -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ - transform: skew($x, $y); -} -@mixin translate3d($x, $y, $z) { - -webkit-transform: translate3d($x, $y, $z); - transform: translate3d($x, $y, $z); -} - -@mixin rotateX($degrees) { - -webkit-transform: rotateX($degrees); - -ms-transform: rotateX($degrees); // IE9 only - transform: rotateX($degrees); -} -@mixin rotateY($degrees) { - -webkit-transform: rotateY($degrees); - -ms-transform: rotateY($degrees); // IE9 only - transform: rotateY($degrees); -} -@mixin perspective($perspective) { - -webkit-perspective: $perspective; - -moz-perspective: $perspective; - perspective: $perspective; -} -@mixin perspective-origin($perspective) { - -webkit-perspective-origin: $perspective; - -moz-perspective-origin: $perspective; - perspective-origin: $perspective; -} -@mixin transform-origin($origin) { - -webkit-transform-origin: $origin; - -moz-transform-origin: $origin; - -ms-transform-origin: $origin; // IE9 only - transform-origin: $origin; -} - -// Animations -@mixin animation($animation) { - -webkit-animation: $animation; - animation: $animation; -} -@mixin animation-name($name) { - -webkit-animation-name: $name; - animation-name: $name; -} -@mixin animation-duration($duration) { - -webkit-animation-duration: $duration; - animation-duration: $duration; -} -@mixin animation-timing-function($timing-function) { - -webkit-animation-timing-function: $timing-function; - animation-timing-function: $timing-function; -} -@mixin animation-delay($delay) { - -webkit-animation-delay: $delay; - animation-delay: $delay; -} -@mixin animation-iteration-count($iteration-count) { - -webkit-animation-iteration-count: $iteration-count; - animation-iteration-count: $iteration-count; -} -@mixin animation-direction($direction) { - -webkit-animation-direction: $direction; - animation-direction: $direction; -} - -// Backface visibility -// Prevent browsers from flickering when using CSS 3D transforms. -// Default value is `visible`, but can be changed to `hidden` -@mixin backface-visibility($visibility){ - -webkit-backface-visibility: $visibility; - -moz-backface-visibility: $visibility; - backface-visibility: $visibility; -} - -// Box sizing -@mixin box-sizing($boxmodel) { - -webkit-box-sizing: $boxmodel; - -moz-box-sizing: $boxmodel; - box-sizing: $boxmodel; -} - -// User select -// For selecting text on the page -@mixin user-select($select) { - -webkit-user-select: $select; - -moz-user-select: $select; - -ms-user-select: $select; // IE10+ - user-select: $select; -} - -// Resize anything -@mixin resizable($direction) { - resize: $direction; // Options: horizontal, vertical, both - overflow: auto; // Safari fix -} - -// CSS3 Content Columns -@mixin content-columns($column-count, $column-gap: $grid-gutter-width) { - -webkit-column-count: $column-count; - -moz-column-count: $column-count; - column-count: $column-count; - -webkit-column-gap: $column-gap; - -moz-column-gap: $column-gap; - column-gap: $column-gap; -} - -// Optional hyphenation -@mixin hyphens($mode: auto) { - word-wrap: break-word; - -webkit-hyphens: $mode; - -moz-hyphens: $mode; - -ms-hyphens: $mode; // IE10+ - -o-hyphens: $mode; - hyphens: $mode; -} - -// Opacity -@mixin opacity($opacity) { - opacity: $opacity; - // IE8 filter - $opacity-ie: ($opacity * 100); - filter: #{alpha(opacity=$opacity-ie)}; -} - - - -// GRADIENTS -// -------------------------------------------------- - - - -// Horizontal gradient, from left to right -// -// Creates two color stops, start and end, by specifying a color and position for each color stop. -// Color stops are not available in IE9 and below. -@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { - background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1-6, Chrome 10+ - background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down -} - -// Vertical gradient, from top to bottom -// -// Creates two color stops, start and end, by specifying a color and position for each color stop. -// Color stops are not available in IE9 and below. -@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) { - background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+ - background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down -} - -@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) { - background-repeat: repeat-x; - background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+ - background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+ -} -@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) { - background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color); - background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color); - background-repeat: no-repeat; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback -} -@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) { - background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color); - background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color); - background-repeat: no-repeat; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback -} -@mixin gradient-radial($inner-color: #555, $outer-color: #333) { - background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color); - background-image: radial-gradient(circle, $inner-color, $outer-color); - background-repeat: no-repeat; -} -@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) { - background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); - background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); -} - -// Reset filters for IE -// -// When you need to remove a gradient background, do not forget to use this to reset -// the IE filter for IE9 and below. -@mixin reset-filter() { - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -} - - - -// Retina images -// -// Short retina mixin for setting background-image and -size - -@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { - background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}")); - - @media - only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and ( min--moz-device-pixel-ratio: 2), - only screen and ( -o-min-device-pixel-ratio: 2/1), - only screen and ( min-device-pixel-ratio: 2), - only screen and ( min-resolution: 192dpi), - only screen and ( min-resolution: 2dppx) { - background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}")); - background-size: $width-1x $height-1x; - } -} - - -// Responsive image -// -// Keep images from scaling beyond the width of their parents. - -@mixin img-responsive($display: block) { - display: $display; - max-width: 100%; // Part 1: Set a maximum relative to the parent - height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching -} - - -// COMPONENT MIXINS -// -------------------------------------------------- - -// Horizontal dividers -// ------------------------- -// Dividers (basically an hr) within dropdowns and nav lists -@mixin nav-divider($color: #e5e5e5) { - height: 1px; - margin: (($line-height-computed / 2) - 1) 0; - overflow: hidden; - background-color: $color; -} - -// Panels -// ------------------------- -@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) { - border-color: $border; - - & > .panel-heading { - color: $heading-text-color; - background-color: $heading-bg-color; - border-color: $heading-border; - - + .panel-collapse .panel-body { - border-top-color: $border; - } - } - & > .panel-footer { - + .panel-collapse .panel-body { - border-bottom-color: $border; - } - } -} - -// Alerts -// ------------------------- -@mixin alert-variant($background, $border, $text-color) { - background-color: $background; - border-color: $border; - color: $text-color; - - hr { - border-top-color: darken($border, 5%); - } - .alert-link { - color: darken($text-color, 10%); - } -} - -// Tables -// ------------------------- -@mixin table-row-variant($state, $background) { - // Exact selectors below required to override `.table-striped` and prevent - // inheritance to nested tables. - .table > thead > tr, - .table > tbody > tr, - .table > tfoot > tr { - > td.#{$state}, - > th.#{$state}, - &.#{$state} > td, - &.#{$state} > th { - background-color: $background; - } - } - - // Hover states for `.table-hover` - // Note: this is not available for cells or rows within `thead` or `tfoot`. - .table-hover > tbody > tr { - > td.#{$state}:hover, - > th.#{$state}:hover, - &.#{$state}:hover > td, - &.#{$state}:hover > th { - background-color: darken($background, 5%); - } - } -} - -// List Groups -// ------------------------- -@mixin list-group-item-variant($state, $background, $color) { - .list-group-item-#{$state} { - color: $color; - background-color: $background; - - // [converter] extracted a& to a.list-group-item-#{$state} - } - - a.list-group-item-#{$state} { - color: $color; - - .list-group-item-heading { color: inherit; } - - &:hover, - &:focus { - color: $color; - background-color: darken($background, 5%); - } - &.active, - &.active:hover, - &.active:focus { - color: #fff; - background-color: $color; - border-color: $color; - } - } -} - -// Button variants -// ------------------------- -// Easily pump out default styles, as well as :hover, :focus, :active, -// and disabled options for all buttons -@mixin button-variant($color, $background, $border) { - color: $color; - background-color: $background; - border-color: $border; - - &:hover, - &:focus, - &:active, - &.active { - color: $color; - background-color: darken($background, 8%); - border-color: darken($border, 12%); - } - .open & { &.dropdown-toggle { - color: $color; - background-color: darken($background, 8%); - border-color: darken($border, 12%); - } } - &:active, - &.active { - background-image: none; - } - .open & { &.dropdown-toggle { - background-image: none; - } } - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &:active, - &.active { - background-color: $background; - border-color: $border; - } - } - - .badge { - color: $background; - background-color: $color; - } -} - -// Button sizes -// ------------------------- -@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { - padding: $padding-vertical $padding-horizontal; - font-size: $font-size; - line-height: $line-height; - border-radius: $border-radius; -} - -// Pagination -// ------------------------- -@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) { - > li { - > a, - > span { - padding: $padding-vertical $padding-horizontal; - font-size: $font-size; - } - &:first-child { - > a, - > span { - @include border-left-radius($border-radius); - } - } - &:last-child { - > a, - > span { - @include border-right-radius($border-radius); - } - } - } -} - -// Labels -// ------------------------- -@mixin label-variant($color) { - background-color: $color; - &[href] { - &:hover, - &:focus { - background-color: darken($color, 10%); - } - } -} - -// Contextual backgrounds -// ------------------------- -// [converter] $parent hack -@mixin bg-variant($parent, $color) { - #{$parent} { - background-color: $color; - } - a#{$parent}:hover { - background-color: darken($color, 10%); - } -} - -// Typography -// ------------------------- -// [converter] $parent hack -@mixin text-emphasis-variant($parent, $color) { - #{$parent} { - color: $color; - } - a#{$parent}:hover { - color: darken($color, 10%); - } -} - -// Navbar vertical align -// ------------------------- -// Vertically center elements in the navbar. -// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. -@mixin navbar-vertical-align($element-height) { - margin-top: (($navbar-height - $element-height) / 2); - margin-bottom: (($navbar-height - $element-height) / 2); -} - -// Progress bars -// ------------------------- -@mixin progress-bar-variant($color) { - background-color: $color; - .progress-striped & { - @include gradient-striped(); - } -} - -// Responsive utilities -// ------------------------- -// More easily include all the states for responsive-utilities.less. -// [converter] $parent hack -@mixin responsive-visibility($parent) { - #{$parent} { - display: block !important; - } - table#{$parent} { display: table; } - tr#{$parent} { display: table-row !important; } - th#{$parent}, - td#{$parent} { display: table-cell !important; } -} - -// [converter] $parent hack -@mixin responsive-invisibility($parent) { - #{$parent} { - display: none !important; - } -} - - -// Grid System -// ----------- - -// Centered container element -@mixin container-fixed() { - margin-right: auto; - margin-left: auto; - padding-left: ($grid-gutter-width / 2); - padding-right: ($grid-gutter-width / 2); - @include clearfix(); -} - -// Creates a wrapper for a series of columns -@mixin make-row($gutter: $grid-gutter-width) { - margin-left: ($gutter / -2); - margin-right: ($gutter / -2); - @include clearfix(); -} - -// Generate the extra small columns -@mixin make-xs-column($columns, $gutter: $grid-gutter-width) { - position: relative; - float: left; - width: percentage(($columns / $grid-columns)); - min-height: 1px; - padding-left: ($gutter / 2); - padding-right: ($gutter / 2); -} -@mixin make-xs-column-offset($columns) { - @media (min-width: $screen-xs-min) { - margin-left: percentage(($columns / $grid-columns)); - } -} -@mixin make-xs-column-push($columns) { - @media (min-width: $screen-xs-min) { - left: percentage(($columns / $grid-columns)); - } -} -@mixin make-xs-column-pull($columns) { - @media (min-width: $screen-xs-min) { - right: percentage(($columns / $grid-columns)); - } -} - - -// Generate the small columns -@mixin make-sm-column($columns, $gutter: $grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: ($gutter / 2); - padding-right: ($gutter / 2); - - @media (min-width: $screen-sm-min) { - float: left; - width: percentage(($columns / $grid-columns)); - } -} -@mixin make-sm-column-offset($columns) { - @media (min-width: $screen-sm-min) { - margin-left: percentage(($columns / $grid-columns)); - } -} -@mixin make-sm-column-push($columns) { - @media (min-width: $screen-sm-min) { - left: percentage(($columns / $grid-columns)); - } -} -@mixin make-sm-column-pull($columns) { - @media (min-width: $screen-sm-min) { - right: percentage(($columns / $grid-columns)); - } -} - - -// Generate the medium columns -@mixin make-md-column($columns, $gutter: $grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: ($gutter / 2); - padding-right: ($gutter / 2); - - @media (min-width: $screen-md-min) { - float: left; - width: percentage(($columns / $grid-columns)); - } -} -@mixin make-md-column-offset($columns) { - @media (min-width: $screen-md-min) { - margin-left: percentage(($columns / $grid-columns)); - } -} -@mixin make-md-column-push($columns) { - @media (min-width: $screen-md-min) { - left: percentage(($columns / $grid-columns)); - } -} -@mixin make-md-column-pull($columns) { - @media (min-width: $screen-md-min) { - right: percentage(($columns / $grid-columns)); - } -} - - -// Generate the large columns -@mixin make-lg-column($columns, $gutter: $grid-gutter-width) { - position: relative; - min-height: 1px; - padding-left: ($gutter / 2); - padding-right: ($gutter / 2); - - @media (min-width: $screen-lg-min) { - float: left; - width: percentage(($columns / $grid-columns)); - } -} -@mixin make-lg-column-offset($columns) { - @media (min-width: $screen-lg-min) { - margin-left: percentage(($columns / $grid-columns)); - } -} -@mixin make-lg-column-push($columns) { - @media (min-width: $screen-lg-min) { - left: percentage(($columns / $grid-columns)); - } -} -@mixin make-lg-column-pull($columns) { - @media (min-width: $screen-lg-min) { - right: percentage(($columns / $grid-columns)); - } -} - - -// Framework grid generation -// -// Used only by Bootstrap to generate the correct number of grid classes given -// any value of `$grid-columns`. - -// [converter] This is defined recursively in LESS, but Sass supports real loops -@mixin make-grid-columns() { - $list: ''; - $i: 1; - $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; - @for $i from (1 + 1) through $grid-columns { - $list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}"; - } - #{$list} { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: ($grid-gutter-width / 2); - padding-right: ($grid-gutter-width / 2); - } -} - - -// [converter] This is defined recursively in LESS, but Sass supports real loops -@mixin float-grid-columns($class) { - $list: ''; - $i: 1; - $list: ".col-#{$class}-#{$i}"; - @for $i from (1 + 1) through $grid-columns { - $list: "#{$list}, .col-#{$class}-#{$i}"; - } - #{$list} { - float: left; - } -} - - -@mixin calc-grid-column($index, $class, $type) { - @if ($type == width) and ($index > 0) { - .col-#{$class}-#{$index} { - width: percentage(($index / $grid-columns)); - } - } - @if ($type == push) { - .col-#{$class}-push-#{$index} { - left: percentage(($index / $grid-columns)); - } - } - @if ($type == pull) { - .col-#{$class}-pull-#{$index} { - right: percentage(($index / $grid-columns)); - } - } - @if ($type == offset) { - .col-#{$class}-offset-#{$index} { - margin-left: percentage(($index / $grid-columns)); - } - } -} - -// [converter] This is defined recursively in LESS, but Sass supports real loops -@mixin loop-grid-columns($columns, $class, $type) { - @for $i from 0 through $columns { - @include calc-grid-column($i, $class, $type); - } -} - - -// Create grid for specific class -@mixin make-grid($class) { - @include float-grid-columns($class); - @include loop-grid-columns($grid-columns, $class, width); - @include loop-grid-columns($grid-columns, $class, pull); - @include loop-grid-columns($grid-columns, $class, push); - @include loop-grid-columns($grid-columns, $class, offset); -} - -// Form validation states -// -// Used in forms.less to generate the form validation CSS for warnings, errors, -// and successes. - -@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { - // Color the label and help text - .help-block, - .control-label, - .radio, - .checkbox, - .radio-inline, - .checkbox-inline { - color: $text-color; - } - // Set the border and box shadow on specific inputs to match - .form-control { - border-color: $border-color; - @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work - &:focus { - border-color: darken($border-color, 10%); - $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%); - @include box-shadow($shadow); - } - } - // Set validation states also for addons - .input-group-addon { - color: $text-color; - border-color: $border-color; - background-color: $background-color; - } - // Optional feedback icon - .form-control-feedback { - color: $text-color; - } -} - -// Form control focus state -// -// Generate a customized focus state and for any input with the specified color, -// which defaults to the `$input-focus-border` variable. -// -// We highly encourage you to not customize the default value, but instead use -// this to tweak colors on an as-needed basis. This aesthetic change is based on -// WebKit's default styles, but applicable to a wider range of browsers. Its -// usability and accessibility should be taken into account with any change. -// -// Example usage: change the default blue border and shadow to white for better -// contrast against a dark gray background. - -@mixin form-control-focus($color: $input-border-focus) { - $color-rgba: rgba(red($color), green($color), blue($color), .6); - &:focus { - border-color: $color; - outline: 0; - @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); - } -} - -// Form control sizing -// -// Relative text size, padding, and border-radii changes for form controls. For -// horizontal sizing, wrap controls in the predefined grid classes. `` background color -$input-bg: #fff !default; -//** `` background color -$input-bg-disabled: $gray-lighter !default; - -//** Text color for ``s -$input-color: $gray !default; -//** `` border color -$input-border: #ccc !default; -//** `` border radius -$input-border-radius: $border-radius-base !default; -//** Border color for inputs on focus -$input-border-focus: #66afe9 !default; - -//** Placeholder text color -$input-color-placeholder: $gray-light !default; - -//** Default `.form-control` height -$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; -//** Large `.form-control` height -$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; -//** Small `.form-control` height -$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; - -$legend-color: $gray-dark !default; -$legend-border-color: #e5e5e5 !default; - -//** Background color for textual input addons -$input-group-addon-bg: $gray-lighter !default; -//** Border color for textual input addons -$input-group-addon-border-color: $input-border !default; - - -//== Dropdowns -// -//## Dropdown menu container and contents. - -//** Background for the dropdown menu. -$dropdown-bg: #fff !default; -//** Dropdown menu `border-color`. -$dropdown-border: rgba(0,0,0,.15) !default; -//** Dropdown menu `border-color` **for IE8**. -$dropdown-fallback-border: #ccc !default; -//** Divider color for between dropdown items. -$dropdown-divider-bg: #e5e5e5 !default; - -//** Dropdown link text color. -$dropdown-link-color: $gray-dark !default; -//** Hover color for dropdown links. -$dropdown-link-hover-color: darken($gray-dark, 5%) !default; -//** Hover background for dropdown links. -$dropdown-link-hover-bg: #f5f5f5 !default; - -//** Active dropdown menu item text color. -$dropdown-link-active-color: $component-active-color !default; -//** Active dropdown menu item background color. -$dropdown-link-active-bg: $component-active-bg !default; - -//** Disabled dropdown menu item background color. -$dropdown-link-disabled-color: $gray-light !default; - -//** Text color for headers within dropdown menus. -$dropdown-header-color: $gray-light !default; - -// Note: Deprecated $dropdown-caret-color as of v3.1.0 -$dropdown-caret-color: #000 !default; - - -//-- Z-index master list -// -// Warning: Avoid customizing these values. They're used for a bird's eye view -// of components dependent on the z-axis and are designed to all work together. -// -// Note: These variables are not generated into the Customizer. - -$zindex-navbar: 1000 !default; -$zindex-dropdown: 1000 !default; -$zindex-popover: 1010 !default; -$zindex-tooltip: 1030 !default; -$zindex-navbar-fixed: 1030 !default; -$zindex-modal-background: 1040 !default; -$zindex-modal: 1050 !default; - - -//== Media queries breakpoints -// -//## Define the breakpoints at which your layout will change, adapting to different screen sizes. - -// Extra small screen / phone -// Note: Deprecated $screen-xs and $screen-phone as of v3.0.1 -$screen-xs: 480px !default; -$screen-xs-min: $screen-xs !default; -$screen-phone: $screen-xs-min !default; - -// Small screen / tablet -// Note: Deprecated $screen-sm and $screen-tablet as of v3.0.1 -$screen-sm: 768px !default; -$screen-sm-min: $screen-sm !default; -$screen-tablet: $screen-sm-min !default; - -// Medium screen / desktop -// Note: Deprecated $screen-md and $screen-desktop as of v3.0.1 -$screen-md: 992px !default; -$screen-md-min: $screen-md !default; -$screen-desktop: $screen-md-min !default; - -// Large screen / wide desktop -// Note: Deprecated $screen-lg and $screen-lg-desktop as of v3.0.1 -$screen-lg: 1200px !default; -$screen-lg-min: $screen-lg !default; -$screen-lg-desktop: $screen-lg-min !default; - -// So media queries don't overlap when required, provide a maximum -$screen-xs-max: ($screen-sm-min - 1) !default; -$screen-sm-max: ($screen-md-min - 1) !default; -$screen-md-max: ($screen-lg-min - 1) !default; - - -//== Grid system -// -//## Define your custom responsive grid. - -//** Number of columns in the grid. -$grid-columns: 12 !default; -//** Padding between columns. Gets divided in half for the left and right. -$grid-gutter-width: 30px !default; -// Navbar collapse -//** Point at which the navbar becomes uncollapsed. -$grid-float-breakpoint: $screen-sm-min !default; -//** Point at which the navbar begins collapsing. -$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; - - -//== Container sizes -// -//## Define the maximum width of `.container` for different screen sizes. - -// Small screen / tablet -$container-tablet: ((720px + $grid-gutter-width)) !default; -//** For `$screen-sm-min` and up. -$container-sm: $container-tablet !default; - -// Medium screen / desktop -$container-desktop: ((940px + $grid-gutter-width)) !default; -//** For `$screen-md-min` and up. -$container-md: $container-desktop !default; - -// Large screen / wide desktop -$container-large-desktop: ((1140px + $grid-gutter-width)) !default; -//** For `$screen-lg-min` and up. -$container-lg: $container-large-desktop !default; - - -//== Navbar -// -//## - -// Basics of a navbar -$navbar-height: 50px !default; -$navbar-margin-bottom: $line-height-computed !default; -$navbar-border-radius: $border-radius-base !default; -$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default; -$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default; -$navbar-collapse-max-height: 340px !default; - -$navbar-default-color: #777 !default; -$navbar-default-bg: #f8f8f8 !default; -$navbar-default-border: darken($navbar-default-bg, 6.5%) !default; - -// Navbar links -$navbar-default-link-color: #777 !default; -$navbar-default-link-hover-color: #333 !default; -$navbar-default-link-hover-bg: transparent !default; -$navbar-default-link-active-color: #555 !default; -$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; -$navbar-default-link-disabled-color: #ccc !default; -$navbar-default-link-disabled-bg: transparent !default; - -// Navbar brand label -$navbar-default-brand-color: $navbar-default-link-color !default; -$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default; -$navbar-default-brand-hover-bg: transparent !default; - -// Navbar toggle -$navbar-default-toggle-hover-bg: #ddd !default; -$navbar-default-toggle-icon-bar-bg: #888 !default; -$navbar-default-toggle-border-color: #ddd !default; - - -// Inverted navbar -// Reset inverted navbar basics -$navbar-inverse-color: $gray-light !default; -$navbar-inverse-bg: #222 !default; -$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default; - -// Inverted navbar links -$navbar-inverse-link-color: $gray-light !default; -$navbar-inverse-link-hover-color: #fff !default; -$navbar-inverse-link-hover-bg: transparent !default; -$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; -$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; -$navbar-inverse-link-disabled-color: #444 !default; -$navbar-inverse-link-disabled-bg: transparent !default; - -// Inverted navbar brand label -$navbar-inverse-brand-color: $navbar-inverse-link-color !default; -$navbar-inverse-brand-hover-color: #fff !default; -$navbar-inverse-brand-hover-bg: transparent !default; - -// Inverted navbar toggle -$navbar-inverse-toggle-hover-bg: #333 !default; -$navbar-inverse-toggle-icon-bar-bg: #fff !default; -$navbar-inverse-toggle-border-color: #333 !default; - - -//== Navs -// -//## - -//=== Shared nav styles -$nav-link-padding: 10px 15px !default; -$nav-link-hover-bg: $gray-lighter !default; - -$nav-disabled-link-color: $gray-light !default; -$nav-disabled-link-hover-color: $gray-light !default; - -$nav-open-link-hover-color: #fff !default; - -//== Tabs -$nav-tabs-border-color: #ddd !default; - -$nav-tabs-link-hover-border-color: $gray-lighter !default; - -$nav-tabs-active-link-hover-bg: $body-bg !default; -$nav-tabs-active-link-hover-color: $gray !default; -$nav-tabs-active-link-hover-border-color: #ddd !default; - -$nav-tabs-justified-link-border-color: #ddd !default; -$nav-tabs-justified-active-link-border-color: $body-bg !default; - -//== Pills -$nav-pills-border-radius: $border-radius-base !default; -$nav-pills-active-link-hover-bg: $component-active-bg !default; -$nav-pills-active-link-hover-color: $component-active-color !default; - - -//== Pagination -// -//## - -$pagination-color: $link-color !default; -$pagination-bg: #fff !default; -$pagination-border: #ddd !default; - -$pagination-hover-color: $link-hover-color !default; -$pagination-hover-bg: $gray-lighter !default; -$pagination-hover-border: #ddd !default; - -$pagination-active-color: #fff !default; -$pagination-active-bg: $brand-primary !default; -$pagination-active-border: $brand-primary !default; - -$pagination-disabled-color: $gray-light !default; -$pagination-disabled-bg: #fff !default; -$pagination-disabled-border: #ddd !default; - - -//== Pager -// -//## - -$pager-bg: $pagination-bg !default; -$pager-border: $pagination-border !default; -$pager-border-radius: 15px !default; - -$pager-hover-bg: $pagination-hover-bg !default; - -$pager-active-bg: $pagination-active-bg !default; -$pager-active-color: $pagination-active-color !default; - -$pager-disabled-color: $pagination-disabled-color !default; - - -//== Jumbotron -// -//## - -$jumbotron-padding: 30px !default; -$jumbotron-color: inherit !default; -$jumbotron-bg: $gray-lighter !default; -$jumbotron-heading-color: inherit !default; -$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; - - -//== Form states and alerts -// -//## Define colors for form feedback states and, by default, alerts. - -$state-success-text: #3c763d !default; -$state-success-bg: #dff0d8 !default; -$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; - -$state-info-text: #31708f !default; -$state-info-bg: #d9edf7 !default; -$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; - -$state-warning-text: #8a6d3b !default; -$state-warning-bg: #fcf8e3 !default; -$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; - -$state-danger-text: #a94442 !default; -$state-danger-bg: #f2dede !default; -$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; - - -//== Tooltips -// -//## - -//** Tooltip max width -$tooltip-max-width: 200px !default; -//** Tooltip text color -$tooltip-color: #fff !default; -//** Tooltip background color -$tooltip-bg: #000 !default; -$tooltip-opacity: .9 !default; - -//** Tooltip arrow width -$tooltip-arrow-width: 5px !default; -//** Tooltip arrow color -$tooltip-arrow-color: $tooltip-bg !default; - - -//== Popovers -// -//## - -//** Popover body background color -$popover-bg: #fff !default; -//** Popover maximum width -$popover-max-width: 276px !default; -//** Popover border color -$popover-border-color: rgba(0,0,0,.2) !default; -//** Popover fallback border color -$popover-fallback-border-color: #ccc !default; - -//** Popover title background color -$popover-title-bg: darken($popover-bg, 3%) !default; - -//** Popover arrow width -$popover-arrow-width: 10px !default; -//** Popover arrow color -$popover-arrow-color: #fff !default; - -//** Popover outer arrow width -$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; -//** Popover outer arrow color -$popover-arrow-outer-color: fadein($popover-border-color, 5%) !default; -//** Popover outer arrow fallback color -$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; - - -//== Labels -// -//## - -//** Default label background color -$label-default-bg: $gray-light !default; -//** Primary label background color -$label-primary-bg: $brand-primary !default; -//** Success label background color -$label-success-bg: $brand-success !default; -//** Info label background color -$label-info-bg: $brand-info !default; -//** Warning label background color -$label-warning-bg: $brand-warning !default; -//** Danger label background color -$label-danger-bg: $brand-danger !default; - -//** Default label text color -$label-color: #fff !default; -//** Default text color of a linked label -$label-link-hover-color: #fff !default; - - -//== Modals -// -//## - -//** Padding applied to the modal body -$modal-inner-padding: 20px !default; - -//** Padding applied to the modal title -$modal-title-padding: 15px !default; -//** Modal title line-height -$modal-title-line-height: $line-height-base !default; - -//** Background color of modal content area -$modal-content-bg: #fff !default; -//** Modal content border color -$modal-content-border-color: rgba(0,0,0,.2) !default; -//** Modal content border color **for IE8** -$modal-content-fallback-border-color: #999 !default; - -//** Modal backdrop background color -$modal-backdrop-bg: #000 !default; -//** Modal backdrop opacity -$modal-backdrop-opacity: .5 !default; -//** Modal header border color -$modal-header-border-color: #e5e5e5 !default; -//** Modal footer border color -$modal-footer-border-color: $modal-header-border-color !default; - -$modal-lg: 900px !default; -$modal-md: 600px !default; -$modal-sm: 300px !default; - - -//== Alerts -// -//## Define alert colors, border radius, and padding. - -$alert-padding: 15px !default; -$alert-border-radius: $border-radius-base !default; -$alert-link-font-weight: bold !default; - -$alert-success-bg: $state-success-bg !default; -$alert-success-text: $state-success-text !default; -$alert-success-border: $state-success-border !default; - -$alert-info-bg: $state-info-bg !default; -$alert-info-text: $state-info-text !default; -$alert-info-border: $state-info-border !default; - -$alert-warning-bg: $state-warning-bg !default; -$alert-warning-text: $state-warning-text !default; -$alert-warning-border: $state-warning-border !default; - -$alert-danger-bg: $state-danger-bg !default; -$alert-danger-text: $state-danger-text !default; -$alert-danger-border: $state-danger-border !default; - - -//== Progress bars -// -//## - -//** Background color of the whole progress component -$progress-bg: #f5f5f5 !default; -//** Progress bar text color -$progress-bar-color: #fff !default; - -//** Default progress bar color -$progress-bar-bg: $brand-primary !default; -//** Success progress bar color -$progress-bar-success-bg: $brand-success !default; -//** Warning progress bar color -$progress-bar-warning-bg: $brand-warning !default; -//** Danger progress bar color -$progress-bar-danger-bg: $brand-danger !default; -//** Info progress bar color -$progress-bar-info-bg: $brand-info !default; - - -//== List group -// -//## - -//** Background color on `.list-group-item` -$list-group-bg: #fff !default; -//** `.list-group-item` border color -$list-group-border: #ddd !default; -//** List group border radius -$list-group-border-radius: $border-radius-base !default; - -//** Background color of single list elements on hover -$list-group-hover-bg: #f5f5f5 !default; -//** Text color of active list elements -$list-group-active-color: $component-active-color !default; -//** Background color of active list elements -$list-group-active-bg: $component-active-bg !default; -//** Border color of active list elements -$list-group-active-border: $list-group-active-bg !default; -$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; - -$list-group-link-color: #555 !default; -$list-group-link-heading-color: #333 !default; - - -//== Panels -// -//## - -$panel-bg: #fff !default; -$panel-body-padding: 15px !default; -$panel-border-radius: $border-radius-base !default; - -//** Border color for elements within panels -$panel-inner-border: #ddd !default; -$panel-footer-bg: #f5f5f5 !default; - -$panel-default-text: $gray-dark !default; -$panel-default-border: #ddd !default; -$panel-default-heading-bg: #f5f5f5 !default; - -$panel-primary-text: #fff !default; -$panel-primary-border: $brand-primary !default; -$panel-primary-heading-bg: $brand-primary !default; - -$panel-success-text: $state-success-text !default; -$panel-success-border: $state-success-border !default; -$panel-success-heading-bg: $state-success-bg !default; - -$panel-info-text: $state-info-text !default; -$panel-info-border: $state-info-border !default; -$panel-info-heading-bg: $state-info-bg !default; - -$panel-warning-text: $state-warning-text !default; -$panel-warning-border: $state-warning-border !default; -$panel-warning-heading-bg: $state-warning-bg !default; - -$panel-danger-text: $state-danger-text !default; -$panel-danger-border: $state-danger-border !default; -$panel-danger-heading-bg: $state-danger-bg !default; - - -//== Thumbnails -// -//## - -//** Padding around the thumbnail image -$thumbnail-padding: 4px !default; -//** Thumbnail background color -$thumbnail-bg: $body-bg !default; -//** Thumbnail border color -$thumbnail-border: #ddd !default; -//** Thumbnail border radius -$thumbnail-border-radius: $border-radius-base !default; - -//** Custom text color for thumbnail captions -$thumbnail-caption-color: $text-color !default; -//** Padding around the thumbnail caption -$thumbnail-caption-padding: 9px !default; - - -//== Wells -// -//## - -$well-bg: #f5f5f5 !default; -$well-border: darken($well-bg, 7%) !default; - - -//== Badges -// -//## - -$badge-color: #fff !default; -//** Linked badge text color on hover -$badge-link-hover-color: #fff !default; -$badge-bg: $gray-light !default; - -//** Badge text color in active nav link -$badge-active-color: $link-color !default; -//** Badge background color in active nav link -$badge-active-bg: #fff !default; - -$badge-font-weight: bold !default; -$badge-line-height: 1 !default; -$badge-border-radius: 10px !default; - - -//== Breadcrumbs -// -//## - -$breadcrumb-padding-vertical: 8px !default; -$breadcrumb-padding-horizontal: 15px !default; -//** Breadcrumb background color -$breadcrumb-bg: #f5f5f5 !default; -//** Breadcrumb text color -$breadcrumb-color: #ccc !default; -//** Text color of current page in the breadcrumb -$breadcrumb-active-color: $gray-light !default; -//** Textual separator for between breadcrumb elements -$breadcrumb-separator: "/" !default; - - -//== Carousel -// -//## - -$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; - -$carousel-control-color: #fff !default; -$carousel-control-width: 15% !default; -$carousel-control-opacity: .5 !default; -$carousel-control-font-size: 20px !default; - -$carousel-indicator-active-bg: #fff !default; -$carousel-indicator-border-color: #fff !default; - -$carousel-caption-color: #fff !default; - - -//== Close -// -//## - -$close-font-weight: bold !default; -$close-color: #000 !default; -$close-text-shadow: 0 1px 0 #fff !default; - - -//== Code -// -//## - -$code-color: #c7254e !default; -$code-bg: #f9f2f4 !default; - -$kbd-color: #fff !default; -$kbd-bg: #333 !default; - -$pre-bg: #f5f5f5 !default; -$pre-color: $gray-dark !default; -$pre-border-color: #ccc !default; -$pre-scrollable-max-height: 340px !default; - - -//== Type -// -//## - -//** Text muted color -$text-muted: $gray-light !default; -//** Abbreviations and acronyms border color -$abbr-border-color: $gray-light !default; -//** Headings small color -$headings-small-color: $gray-light !default; -//** Blockquote small color -$blockquote-small-color: $gray-light !default; -//** Blockquote font size -$blockquote-font-size: ($font-size-base * 1.25) !default; -//** Blockquote border color -$blockquote-border-color: $gray-lighter !default; -//** Page header border color -$page-header-border-color: $gray-lighter !default; - - -//== Miscellaneous -// -//## - -//** Horizontal line color. -$hr-border: $gray-lighter !default; - -//** Horizontal offset for forms and lists. -$component-offset-horizontal: 180px !default; diff --git a/custom_announcement/app/assets/stylesheets/custom_bulletin/bootstrap/bootstrap.min.css b/custom_announcement/app/assets/stylesheets/custom_bulletin/bootstrap/bootstrap.min.css deleted file mode 100644 index fc564e4..0000000 --- a/custom_announcement/app/assets/stylesheets/custom_bulletin/bootstrap/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.5 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * //*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:0.0625em dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 2.5em}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 0.125em;border:0.0625em solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:0.0625em solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:0.0625em solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:0.0625em solid #ddd!important}}@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.woff2) format('woff2'),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')}.glyphicon{position:relative;top:0.0625em;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:0.625em;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.875em;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:0.3125em auto -webkit-focus-ring-color;outline-offset:-0.125em}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0.375em}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:0.25em;line-height:1.42857143;background-color:#fff;border:0.0625em solid #ddd;border-radius:0.25em;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:1.25em;margin-bottom:1.25em;border:0;border-top:0.0625em solid #eee}.sr-only{position:absolute;width:0.0625em;height:0.0625em;padding:0;margin:-0.0625em;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:1.25em;margin-bottom:0.625em}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:0.625em;margin-bottom:0.625em}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:2.250em}.h2,h2{font-size:1.875em}.h3,h3{font-size:1.500em}.h4,h4{font-size:1.125em}.h5,h5{font-size:0.875em}.h6,h6{font-size:0.750em}p{margin:0 0 0.625em}.lead{margin-bottom:1.25em;font-size:1em;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:1.313em}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:0.5625em;margin:2.5em 0 1.25em;border-bottom:0.0625em solid #eee}ol,ul{margin-top:0;margin-bottom:0.625em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-0.3125em;list-style:none}.list-inline>li{display:inline-block;padding-right:0.3125em;padding-left:0.3125em}dl{margin-top:0;margin-bottom:1.25em}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:10em;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:11.25em}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:0.0625em dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0.625em 1.25em;margin:0 0 1.25em;font-size:1.094em;border-left:0.3125em solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:0.9375em;padding-left:0;text-align:right;border-right:0.3125em solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:1.25em;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:0.125em 0.25em;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0.25em}kbd{padding:0.125em 0.25em;font-size:90%;color:#fff;background-color:#333;border-radius:0.1875em;-webkit-box-shadow:inset 0 -0.0625em 0 rgba(0,0,0,.25);box-shadow:inset 0 -0.0625em 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.0.3125em;margin:0 0 0.625em;font-size:0.813em;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:0.0625em solid #ccc;border-radius:0.25em}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:32.5em;overflow-y:scroll}.container{padding-right:0.9375em;padding-left:0.9375em;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:46.875em}}@media (min-width:990.125em){.container{width:60.625em}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:0.9375em;padding-left:0.9375em;margin-right:auto;margin-left:auto}.row{margin-right:-0.9375em;margin-left:-0.9375em}.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,.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,.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,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:0.0625em;padding-right:0.9375em;padding-left:0.9375em}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.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.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:990.125em){.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.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.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.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:0.5em;padding-bottom:0.5em;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:1.25em}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:0.5em;line-height:1.42857143;vertical-align:top;border-top:0.0625em solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:0.125em solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:0.125em solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:0.3125em}.table-bordered{border:0.0625em solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:0.0625em solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:0.125em}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:0.9375em;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:0.0625em solid #ddd}.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}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:1.25em;font-size:1.313em;line-height:inherit;color:#333;border:0;border-bottom:0.0625em solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:0.3125em;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:0.25em 0 0;margin-top:0.0625em\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:0.3125em auto -webkit-focus-ring-color;outline-offset:-0.125em}output{display:block;padding-top:0.4375em;font-size:0.875em;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:30.25em;padding:0.375em 1.125em;font-size:0.875em;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:0.0625em solid #ccc;border-radius:0.25em;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075);box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-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}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.5em rgba(102,175,233,.6);box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.5em rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:30.25em}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:1.875em}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:40.375em}}.form-group{margin-bottom:0.9375em}.checkbox,.radio{position:relative;display:block;margin-top:0.625em;margin-bottom:0.625em}.checkbox label,.radio label{min-height:1.25em;padding-left:1.25em;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:0.25em\9;margin-left:-1.25em}.checkbox+.checkbox,.radio+.radio{margin-top:-0.3125em}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:1.25em;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:0.625em}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:30.25em;padding-top:0.4375em;padding-bottom:0.4375em;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:1.875em;padding:0.3125em 0.625em;font-size:0.750em;line-height:1.5;border-radius:0.1875em}select.input-sm{height:1.875em;line-height:1.875em}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:1.875em;padding:0.3125em 0.625em;font-size:0.750em;line-height:1.5;border-radius:0.1875em}.form-group-sm select.form-control{height:1.875em;line-height:1.875em}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:1.875em;min-height:30.125em;padding:0.375em 0.625em;font-size:0.750em;line-height:1.5}.input-lg{height:40.375em;padding:0.625em 10.375em;font-size:1.125em;line-height:1.3333333;border-radius:0.375em}select.input-lg{height:40.375em;line-height:40.375em}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:40.375em;padding:0.625em 10.375em;font-size:1.125em;line-height:1.3333333;border-radius:0.375em}.form-group-lg select.form-control{height:40.375em;line-height:40.375em}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:40.375em;min-height:2.375em;padding:10.0625em 10.375em;font-size:1.125em;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.0.3125em}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30.25em;height:30.25em;line-height:30.25em;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:40.375em;height:40.375em;line-height:40.375em}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:1.875em;height:1.875em;line-height:1.875em}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075);box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.375em #67b168;box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.375em #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075);box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.375em #c0a16b;box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.375em #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075);box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.375em #ce8483;box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.075),0 0 0.375em #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:20.3125em}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:0.3125em;margin-bottom:0.625em;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:0.4375em;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:1.6875em}.form-horizontal .form-group{margin-right:-0.9375em;margin-left:-0.9375em}@media (min-width:768px){.form-horizontal .control-label{padding-top:0.4375em;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:0.9375em}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:10.0625em;font-size:1.125em}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:0.375em;font-size:0.750em}}.btn{display:inline-block;padding:0.375em 1.125em;margin-bottom:0;font-size:0.875em;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:0.0625em solid transparent;border-radius:0.25em}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:0.3125em auto -webkit-focus-ring-color;outline-offset:-0.125em}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 0.1875em 0.3125em rgba(0,0,0,.125);box-shadow:inset 0 0.1875em 0.3125em rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:0.625em 10.375em;font-size:1.125em;line-height:1.3333333;border-radius:0.375em}.btn-group-sm>.btn,.btn-sm{padding:0.3125em 0.625em;font-size:0.750em;line-height:1.5;border-radius:0.1875em}.btn-group-xs>.btn,.btn-xs{padding:0.0625em 0.3125em;font-size:0.750em;line-height:1.5;border-radius:0.1875em}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:0.3125em}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:0.125em;vertical-align:middle;border-top:0.25em dashed;border-top:0.25em solid\9;border-right:0.25em solid transparent;border-left:0.25em solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10em;padding:0.3125em 0;margin:0.125em 0 0;font-size:0.875em;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:0.0625em solid #ccc;border:0.0625em solid rgba(0,0,0,.15);border-radius:0.25em;-webkit-box-shadow:0 0.375em 1.125em rgba(0,0,0,.175);box-shadow:0 0.375em 1.125em rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:0.0625em;margin:0.5625em 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:0.1875em 1.25em;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:0.1875em 1.25em;font-size:0.750em;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:0.25em dashed;border-bottom:0.25em solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:0.125em}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-0.0625em}.btn-toolbar{margin-left:-0.3125em}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:0.3125em}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:0.5em;padding-left:0.5em}.btn-group>.btn-lg+.dropdown-toggle{padding-right:1.125em;padding-left:1.125em}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 0.1875em 0.3125em rgba(0,0,0,.125);box-shadow:inset 0 0.1875em 0.3125em rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:0.3125em 0.3125em 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 0.3125em 0.3125em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-0.0625em;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0.25em;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0.25em}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:40.375em;padding:0.625em 10.375em;font-size:1.125em;line-height:1.3333333;border-radius:0.375em}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:40.375em;line-height:40.375em}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:1.875em;padding:0.3125em 0.625em;font-size:0.750em;line-height:1.5;border-radius:0.1875em}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:1.875em;line-height:1.875em}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:0.375em 1.125em;font-size:0.875em;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:0.0625em solid #ccc;border-radius:0.25em}.input-group-addon.input-sm{padding:0.3125em 0.625em;font-size:0.750em;border-radius:0.1875em}.input-group-addon.input-lg{padding:0.625em 10.375em;font-size:1.125em;border-radius:0.375em}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-0.0625em}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-0.0625em}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-0.0625em}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:0.625em 0.9375em}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:0.0625em;margin:0.5625em 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:0.0625em solid #ddd}.nav-tabs>li{float:left;margin-bottom:-0.0625em}.nav-tabs>li>a{margin-right:0.125em;line-height:1.42857143;border:0.0625em solid transparent;border-radius:0.25em 0.25em 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:0.0625em solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:0.3125em;text-align:center}.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}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0.25em}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:0.0625em solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:0.0625em solid #ddd;border-radius:0.25em 0.25em 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}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0.25em}.nav-pills>li+li{margin-left:0.125em}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:0.125em;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:0.3125em;text-align:center}.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}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0.25em}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:0.0625em solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:0.0625em solid #ddd;border-radius:0.25em 0.25em 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-0.0625em;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:3.125em;margin-bottom:1.25em;border:0.0625em solid transparent}@media (min-width:768px){.navbar{border-radius:0.25em}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:0.9375em;padding-left:0.9375em;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:0.0625em solid transparent;-webkit-box-shadow:inset 0 0.0625em 0 rgba(255,255,255,.1);box-shadow:inset 0 0.0625em 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;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}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:32.5em}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:12.5em}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-0.9375em;margin-left:-0.9375em}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 0.0625em}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.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}}.navbar-fixed-top{top:0;border-width:0 0 0.0625em}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:0.0625em 0 0}.navbar-brand{float:left;height:3.125em;padding:0.9375em 0.9375em;font-size:1.125em;line-height:1.25em}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-0.9375em}}.navbar-toggle{position:relative;float:right;padding:0.5625em 0.625em;margin-top:0.5em;margin-right:0.9375em;margin-bottom:0.5em;background-color:transparent;background-image:none;border:0.0625em solid transparent;border-radius:0.25em}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:1.375em;height:0.125em;border-radius:0.0625em}.navbar-toggle .icon-bar+.icon-bar{margin-top:0.25em}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.0.3125em -0.9375em}.navbar-nav>li>a{padding-top:0.625em;padding-bottom:0.625em;line-height:1.25em}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:0.3125em 0.9375em 0.3125em 20.3125em}.navbar-nav .open .dropdown-menu>li>a{line-height:1.25em}.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:0.9375em;padding-bottom:0.9375em}}.navbar-form{padding:0.625em 0.9375em;margin-top:0.5em;margin-right:-0.9375em;margin-bottom:0.5em;margin-left:-0.9375em;border-top:0.0625em solid transparent;border-bottom:0.0625em solid transparent;-webkit-box-shadow:inset 0 0.0625em 0 rgba(255,255,255,.1),0 0.0625em 0 rgba(255,255,255,.1);box-shadow:inset 0 0.0625em 0 rgba(255,255,255,.1),0 0.0625em 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;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:0.3125em}.navbar-form .form-group:last-child{margin-bottom:0}}@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-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:0.25em;border-top-right-radius:0.25em;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:0.5em;margin-bottom:0.5em}.navbar-btn.btn-sm{margin-top:0.625em;margin-bottom:0.625em}.navbar-btn.btn-xs{margin-top:10.25em;margin-bottom:10.25em}.navbar-text{margin-top:0.9375em;margin-bottom:0.9375em}@media (min-width:768px){.navbar-text{float:left;margin-right:0.9375em;margin-left:0.9375em}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-0.9375em}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.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}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.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:#9d9d9d}.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}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:0.5em 0.9375em;margin-bottom:1.25em;list-style:none;background-color:#f5f5f5;border-radius:0.25em}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 0.3125em;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:1.25em 0;border-radius:0.25em}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:0.375em 1.125em;margin-left:-0.0625em;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:0.0625em solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:0.25em;border-bottom-left-radius:0.25em}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:0.25em;border-bottom-right-radius:0.25em}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:0.625em 10.375em;font-size:1.125em;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:0.375em;border-bottom-left-radius:0.375em}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:0.375em;border-bottom-right-radius:0.375em}.pagination-sm>li>a,.pagination-sm>li>span{padding:0.3125em 0.625em;font-size:0.750em;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:0.1875em;border-bottom-left-radius:0.1875em}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:0.1875em;border-bottom-right-radius:0.1875em}.pager{padding-left:0;margin:1.25em 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:0.3125em 10.25em;background-color:#fff;border:0.0625em solid #ddd;border-radius:0.9375em}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.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}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-0.0625em}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:0.625em;padding:0.1875em 0.4375em;font-size:0.750em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:0.625em}.badge:empty{display:none}.btn .badge{position:relative;top:-0.0625em}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:0.0625em 0.3125em}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:0.3125em}.nav-pills>li>a>.badge{margin-left:0.1875em}.jumbotron{padding-top:1.875em;padding-bottom:1.875em;margin-bottom:1.875em;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:0.9375em;font-size:1.313em;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:0.9375em;padding-left:0.9375em;border-radius:0.375em}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:3em;padding-bottom:3em}.container .jumbotron,.container-fluid .jumbotron{padding-right:3.75em;padding-left:3.75em}.jumbotron .h1,.jumbotron h1{font-size:3.938em}}.thumbnail{display:block;padding:0.25em;margin-bottom:1.25em;line-height:1.42857143;background-color:#fff;border:0.0625em solid #ddd;border-radius:0.25em;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:0.5625em;color:#333}.alert{padding:0.9375em;margin-bottom:1.25em;border:0.0625em solid transparent;border-radius:0.25em}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:0.3125em}.alert-dismissable,.alert-dismissible{padding-right:30.3125em}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-0.125em;right:-20.0625em;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:2.5em 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:2.5em 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:2.5em 0}to{background-position:0 0}}.progress{height:1.25em;margin-bottom:1.25em;overflow:hidden;background-color:#f5f5f5;border-radius:0.25em;-webkit-box-shadow:inset 0 0.0625em 0.125em rgba(0,0,0,.1);box-shadow:inset 0 0.0625em 0.125em rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:0.750em;line-height:1.25em;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -0.0625em 0 rgba(0,0,0,.15);box-shadow:inset 0 -0.0625em 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.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:-o-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);-webkit-background-size:2.5em 2.5em;background-size:2.5em 2.5em}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.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:-o-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)}.progress-bar-info{background-color:#5bc0de}.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:-o-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)}.progress-bar-warning{background-color:#f0ad4e}.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:-o-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)}.progress-bar-danger{background-color:#d9534f}.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:-o-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)}.media{margin-top:0.9375em}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:625em}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:0.625em}.media-left,.media>.pull-left{padding-right:0.625em}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:0.3125em}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:1.25em}.list-group-item{position:relative;display:block;padding:0.625em 0.9375em;margin-bottom:-0.0625em;background-color:#fff;border:0.0625em solid #ddd}.list-group-item:first-child{border-top-left-radius:0.25em;border-top-right-radius:0.25em}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0.25em;border-bottom-left-radius:0.25em}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:0.3125em}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:1.25em;background-color:#fff;border:0.0625em solid transparent;border-radius:0.25em;-webkit-box-shadow:0 0.0625em 0.0625em rgba(0,0,0,.05);box-shadow:0 0.0625em 0.0625em rgba(0,0,0,.05)}.panel-body{padding:0.9375em}.panel-heading{padding:0.625em 0.9375em;border-bottom:0.0625em solid transparent;border-top-left-radius:0.1875em;border-top-right-radius:0.1875em}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:1em;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:0.625em 0.9375em;background-color:#f5f5f5;border-top:0.0625em solid #ddd;border-bottom-right-radius:0.1875em;border-bottom-left-radius:0.1875em}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:0.0625em 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:0.1875em;border-top-right-radius:0.1875em}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:0.1875em;border-bottom-left-radius:0.1875em}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:0.9375em;padding-left:0.9375em}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:0.1875em;border-top-right-radius:0.1875em}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:0.1875em;border-top-right-radius:0.1875em}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:0.1875em}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:0.1875em}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:0.1875em;border-bottom-left-radius:0.1875em}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:0.1875em;border-bottom-left-radius:0.1875em}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:0.1875em}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:0.1875em}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:0.0625em solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:1.25em}.panel-group .panel{margin-bottom:0;border-radius:0.25em}.panel-group .panel+.panel{margin-top:0.3125em}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:0.0625em solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:0.0625em solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:1.25em;padding:10.5625em;margin-bottom:1.25em;background-color:#f5f5f5;border:0.0625em solid #e3e3e3;border-radius:0.25em;-webkit-box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.05);box-shadow:inset 0 0.0625em 0.0625em rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:20.25em;border-radius:0.375em}.well-sm{padding:0.5625em;border-radius:0.1875em}.close{float:right;font-size:1.313em;font-weight:700;line-height:1;color:#000;text-shadow:0 0.0625em 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:0.625em}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:0.0625em solid #999;border:0.0625em solid rgba(0,0,0,.2);border-radius:0.375em;outline:0;-webkit-box-shadow:0 0.1875em 0.5625em rgba(0,0,0,.5);box-shadow:0 0.1875em 0.5625em rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:0.9375em;border-bottom:0.0625em solid #e5e5e5}.modal-header .close{margin-top:-0.125em}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:0.9375em}.modal-footer{padding:0.9375em;text-align:right;border-top:0.0625em solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:0.3125em}.modal-footer .btn-group .btn+.btn{margin-left:-0.0625em}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9990.5625em;width:3.125em;height:3.125em;overflow:scroll}@media (min-width:768px){.modal-dialog{width:37.5em;margin:1.875em auto}.modal-content{-webkit-box-shadow:0 0.3125em 0.9375em rgba(0,0,0,.5);box-shadow:0 0.3125em 0.9375em rgba(0,0,0,.5)}.modal-sm{width:18.75em}}@media (min-width:990.125em){.modal-lg{width:56.25em}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.750em;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:0.3125em 0;margin-top:-0.1875em}.tooltip.right{padding:0 0.3125em;margin-left:0.1875em}.tooltip.bottom{padding:0.3125em 0;margin-top:0.1875em}.tooltip.left{padding:0 0.3125em;margin-left:-0.1875em}.tooltip-inner{max-width:12.5em;padding:0.1875em 0.5em;color:#fff;text-align:center;background-color:#000;border-radius:0.25em}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-0.3125em;border-width:0.3125em 0.3125em 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:0.3125em;bottom:0;margin-bottom:-0.3125em;border-width:0.3125em 0.3125em 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:0.3125em;margin-bottom:-0.3125em;border-width:0.3125em 0.3125em 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-0.3125em;border-width:0.3125em 0.3125em 0.3125em 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-0.3125em;border-width:0.3125em 0 0.3125em 0.3125em;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-0.3125em;border-width:0 0.3125em 0.3125em;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:0.3125em;margin-top:-0.3125em;border-width:0 0.3125em 0.3125em;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:0.3125em;margin-top:-0.3125em;border-width:0 0.3125em 0.3125em;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:270.375em;padding:0.0625em;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.875em;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:0.0625em solid #ccc;border:0.0625em solid rgba(0,0,0,.2);border-radius:0.375em;-webkit-box-shadow:0 0.3125em 0.625em rgba(0,0,0,.2);box-shadow:0 0.3125em 0.625em rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-0.625em}.popover.right{margin-left:0.625em}.popover.bottom{margin-top:0.625em}.popover.left{margin-left:-0.625em}.popover-title{padding:0.5em 10.25em;margin:0;font-size:0.875em;background-color:#f7f7f7;border-bottom:0.0625em solid #ebebeb;border-radius:0.3125em 0.3125em 0 0}.popover-content{padding:0.5625em 10.25em}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:10.0625em}.popover>.arrow:after{content:"";border-width:0.625em}.popover.top>.arrow{bottom:-10.0625em;left:50%;margin-left:-10.0625em;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:0.0625em;margin-left:-0.625em;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-10.0625em;margin-top:-10.0625em;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-0.625em;left:0.0625em;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-10.0625em;left:50%;margin-left:-10.0625em;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:0.0625em;margin-left:-0.625em;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-10.0625em;margin-top:-10.0625em;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:0.0625em;bottom:-0.625em;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:62.5em;perspective:62.5em}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:1.250em;color:#fff;text-align:center;text-shadow:0 0.0625em 0.125em rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-0.625em}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-0.625em}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-0.625em}.carousel-control .icon-next,.carousel-control .icon-prev{width:1.25em;height:1.25em;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:0.625em;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:0.625em;height:0.625em;margin:0.0625em;text-indent:-990.5625em;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:0.0625em solid #fff;border-radius:0.625em}.carousel-indicators .active{width:1.125em;height:1.125em;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:1.25em;left:15%;z-index:10;padding-top:1.25em;padding-bottom:1.25em;color:#fff;text-align:center;text-shadow:0 0.0625em 0.125em rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:1.875em;height:1.875em;margin-top:-0.9375em;font-size:1.875em}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-0.9375em}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-0.9375em}.carousel-caption{right:20%;left:20%;padding-bottom:1.875em}.carousel-indicators{bottom:1.25em}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:990.0625em){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:990.0625em){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:990.0625em){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:990.0625em){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:990.125em) and (max-width:1190.5625em){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:990.125em) and (max-width:1190.5625em){.visible-md-block{display:block!important}}@media (min-width:990.125em) and (max-width:1190.5625em){.visible-md-inline{display:inline!important}}@media (min-width:990.125em) and (max-width:1190.5625em){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:990.0625em){.hidden-sm{display:none!important}}@media (min-width:990.125em) and (max-width:1190.5625em){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/custom_announcement/app/controllers/.keep b/custom_announcement/app/controllers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/controllers/admin/custom_announcements_controller.rb b/custom_announcement/app/controllers/admin/custom_announcements_controller.rb deleted file mode 100644 index 87b2009..0000000 --- a/custom_announcement/app/controllers/admin/custom_announcements_controller.rb +++ /dev/null @@ -1,554 +0,0 @@ -# encoding: utf-8 -require 'rubyXL' -class Admin::CustomAnnouncementsController < OrbitAdminController - include Admin::CustomAnnouncementsHelper - before_action ->(module_app = @app_title) { set_variables module_app } - before_action :set_custom_bulletin, only: [:edit, :destroy, :comment] - before_action :load_access_level, :load_settings - before_action :set_module_pages, only: [:edit,:new] - def set_module_pages - @module_pages = Page.where(:module => 'custom_announcement').collect{|p| [p.name,p.id] } - end - def initialize - super - @app_title = "custom_announcement" - end - def comment_hidden - b = CustomBulletinComment.find(params[:id]) rescue nil - if !b.nil? - b.is_hidden = !b.is_hidden - b.save - @table_feed_fields = ["custom_announcement.time", "custom_announcement.comment", "custom_announcement.account","ip","is_hidden"] - @comments = b.custom_bulletin.custom_bulletin_comments.reverse rescue [] - render partial: 'comment' - end - end - def comment - @table_feed_fields = ["custom_announcement.time", "custom_announcement.comment", "custom_announcement.account","ip","is_hidden"] - @comments = @custom_bulletin.custom_bulletin_comments.reverse rescue [] - end - def index - @custom_bulletin_configs = CustomBulletinConfig.all - CustomBulletin.remove_expired_status - @tags = @module_app.tags - @table_fields = [:status, :category, :title, :start_date, :end_date, "custom_announcement.comment", :last_modified] - @current_user = current_user - if CustomAnnouncementSetting.first.is_display_edit_only && !current_user.is_admin? && !current_user.is_manager?(@module_app) - current_user_is_sub_manager = !current_user.is_manager?(@module_app) && (current_user.is_sub_manager?(@module_app) || current_user.is_sub_manager_with_role?(@module_app)) rescue false - if current_user_is_sub_manager - @categories = current_user.approved_categories.select{|c| c.module_app_id == @module_app.id} rescue [] - @filter_fields = filter_fields(@categories, @tags) - @custom_bulletins = CustomBulletin.where(:create_user_id=>current_user.id,:is_preview.in=>[false,nil]) - .order_by(sort) - .with_categories(filters("category")) - .with_tags(filters("tag")) - .with_status(filters("status")) - else - @custom_bulletins = CustomBulletin.where(:uid=>nil) - @categories = @module_app.categories.enabled - @filter_fields = filter_fields(@categories, @tags) - end - else - @categories = @module_app.categories.enabled - @filter_fields = filter_fields(@categories, @tags) - @custom_bulletins = CustomBulletin.where(:is_preview.in=>[false,nil]) - .order_by(sort) - .with_categories(filters("category")) - .with_tags(filters("tag")) - .with_status(filters("status")) - end - if params[:custom_module].present? - @custom_bulletins = @custom_bulletins.where(:custom_module=>params[:custom_module]) - end - if params[:bind_uid].present? - @custom_bulletins = @custom_bulletins.where(:bind_uid=>params[:bind_uid]) - end - @custom_bulletins = search_data(@custom_bulletins,[:title]).page(params[:page]).per(10) - - if request.xhr? - render :partial => "index" - elsif params[:custom_module].blank? || params[:bind_uid].blank? - render "display_enable_modules" - end - end - - def feed - @table_feed_fields = ["custom_announcement.feed_name", :tags, "custom_announcement.rssfeed", "custom_announcement.jsonfeed"] - @feeds = CustomBulletinFeed.all.asc(:created_at) - - end - def generate_iframe_url - iframe_params = params.require(:iframe).permit! - uids = iframe_params['member_ids'].to_a.map{|m_id| MemberProfile.find(m_id).uid rescue nil}.select{|uid| !uid.nil?} - url_params = iframe_params.except(:member_ids) - url_params['uids'] = uids if uids != [] - render :text => '/xhr/panel/custom_announcement/widget/sync_data?'+url_params.to_param - end - def settings - @setting = @custom_announcement_setting - roles = Role.all - @sorted_members = roles.inject({}) do |members,role| - members_for_role = role.member_profiles.select{|m| (m.user.nil? ? false : m.user.approved)} - members[role] = members_for_role - members - end - @sorted_members['no_role'] = MemberProfile.any_in(:role_ids=>[nil,[]]).select{|m| (m.user.nil? ? false : m.user.approved)} - @unapproved_members = User.where(:approved => false).map{|u| u.member_profile} - end - - def import - end - - def excel_format - respond_to do |format| - format.xlsx { - response.headers['Content-Disposition'] = 'attachment; filename="custom_announcement_import_format.xlsx"' - } - end - end - - def export_excel - @custom_announcements = CustomBulletin.all.desc(:created_at) - respond_to do |format| - format.xlsx { - response.headers['Content-Disposition'] = 'attachment; filename="custom_announcement_export.xlsx"' - } - end - end - - def import_from_xml - download_tmp_xml params["import_xml"] - import_from_tmp_xml File.read(File.join(Rails.root, "tmp", "ann_cc_ntu.xml")) - redirect_to admin_custom_announcements_path - end - - def import - end - - - def import_from_wp - import_from_wordpress params["import_xml"].tempfile - redirect_to admin_custom_announcements_path - end - - def importcustom_anns - workbook = RubyXL::Parser.parse(params["import_file"].tempfile) - categories = @module_app.categories.asc(:created_at).to_a - tags = @module_app.tags.asc(:created_at).to_a - sheet = workbook[0] - if sheet.count <= 503 - sheet.each_with_index do |row, i| - next if i < 3 - v = row.cells.first.value rescue nil - next if v.blank? - import_this_custom_announcement(row, categories, tags) - end - redirect_to admin_custom_announcements_path - else - redirect_to admin_custom_announcements_path(:error => "1") - end - end - - def createsettings - setting = CustomAnnouncementSetting.new(settings_params) - setting.save - redirect_to admin_custom_announcement_settings_path - end - - def updatesettings - setting = @custom_announcement_setting - ids = params['custom_announcement_setting']['custom_anns_status_settings'].to_a.collect do |i,v| - v['_id'] - end.compact - CustomAnnsStatusSetting.where(:id.nin=>ids).destroy - setting.update_attributes(settings_params) - setting.save - redirect_to admin_custom_announcement_settings_path - end - - def feedform - if params[:type] == "new" - @custom_announcement_feed = CustomBulletinFeed.new - render :partial => "feed_form" - else params[:type] == "edit" - @custom_announcement_feed = CustomBulletinFeed.find(params[:id]) - render :partial => "edit_feed_form" - end - end - - def createfeed - custom_announcement_feed = CustomBulletinFeed.new(feed_params) - custom_announcement_feed.save - create_feed_cache(nil,custom_announcement_feed) - feeds = CustomBulletinFeed.all.asc(:created_at) - render :partial => "feed", :collection => feeds - end - - def updatefeed - ann_feed = CustomBulletinFeed.find(params[:id]) - ann_feed.update_attributes(feed_params) - ann_feed.save - create_feed_cache(nil,ann_feed) - feeds = CustomBulletinFeed.all.asc(:created_at) - render :partial => "feed", :collection => feeds - end - - def deletefeed - ann_feed = CustomBulletinFeed.find(params[:id]) - ann_feed.destroy - feeds = CustomBulletinFeed.all.asc(:created_at) - render :partial => "feed", :collection => feeds - end - - def new - @tags = @module_app.tags - @statuses = [] - @custom_bulletin = CustomBulletin.new - @custom_bulletin.email_sentdate = Time.now - @reach_limit = @custom_bulletin.check_status_limit(current_user,true) - if defined? Calendar - categories = user_authenticated_categories rescue ['all'] - if categories.first == "all" - @calendar_categories = CalendarType.all - else - @calendar_categories = CalendarType.where(:category_id.in => categories) rescue [] - end - end - end - - def create - bps = custom_bulletin_params - custom_bulletin = CustomBulletin.new(bps) - if !bps['custom_bulletin_links_attributes'].nil? - bps['custom_bulletin_links_attributes'].each do |idx,link| - bps['custom_bulletin_links_attributes'].delete(idx.to_s) if link['url'].blank? - end - end - if((!CustomAnnouncementSetting.first.only_manager_can_edit_status) || (CustomAnnouncementSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) ) - if bps[:is_top] == "1" && !CustomAnnouncementSetting.check_limit_for_user(custom_bulletin.create_user_id, custom_bulletin.id) - bps[:is_top] = "0" - bps[:top_end_date] = nil - end - else - bps[:is_top] = false - bps[:is_hot] = false - bps[:is_hidden] = false - end - - if !defined?(Calendar).nil? - bps = update_calendar(bps,custom_bulletin) - end - custom_bulletin.create_user_id = current_user.id - custom_bulletin.update_user_id = current_user.id - if CustomAnnouncementSetting.is_pro? - if user_can_approve? - custom_bulletin.approved = true - else - send_notification_mail_to_managers(custom_bulletin,"approval",I18n.locale) - end - else - custom_bulletin.approved = true - end - - custom_bulletin.save - build_email(custom_bulletin,I18n.locale) - create_feed_cache(custom_bulletin) - if bps[:custom_module].present? - redirect_to admin_custom_announcements_path + "/#{bps[:custom_module]}#{bps[:bind_uid].present? ? ('-'+bps[:bind_uid]) : ''}" - else - redirect_to admin_custom_announcements_path - end - end - - def approve_custom_bulletin - id = params[:id] - custom_bulletin = CustomBulletin.find(id) - if params["approved"] == "true" - custom_bulletin.approved = true - custom_bulletin.rejected = false - custom_bulletin.reapproval = false - else - custom_bulletin.rejected = true - custom_bulletin.reapproval = false - custom_bulletin.rejection_reason = params["reason"] - send_rejection_email(custom_bulletin,I18n.locale) - end - custom_bulletin.save - create_feed_cache(custom_bulletin) - redirect_to admin_custom_announcements_path - end - - def edit - if can_edit_or_delete?(@custom_bulletin) - @reach_limit = @custom_bulletin.check_status_limit(current_user,true) - @tags = @module_app.tags - @categories = @module_app.categories.enabled - if defined? Calendar - categories = user_authenticated_categories rescue ['all'] - if categories.first == "all" - @calendar_categories = CalendarType.all - else - @calendar_categories = CalendarType.where(:category_id.in => categories) rescue [] - end - end - @statuses = [] - @custom_bulletin.email_sentdate = Time.now if @custom_bulletin.email_sent == false - else - render_401 - end - end - - def update - uid = params[:id].split('-').last - custom_bulletin = CustomBulletin.find_by(:uid=>uid) - bps = custom_bulletin_params - bps[:tags] = bps[:tags].blank? ? [] : bps[:tags] - bps[:email_member_ids] = bps[:email_member_ids].blank? ? [] : bps[:email_member_ids] - - if !bps['custom_bulletin_links_attributes'].nil? - bps['custom_bulletin_links_attributes'].each do |idx,link| - bps['custom_bulletin_links_attributes'].delete(idx.to_s) if link['url'].blank? - end - end - if((!CustomAnnouncementSetting.first.only_manager_can_edit_status) || (CustomAnnouncementSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) ) - if bps[:is_top] == "1" && !CustomAnnouncementSetting.check_limit_for_user(custom_bulletin.create_user_id, custom_bulletin.id) - bps[:is_top] = "0" - bps[:top_end_date] = nil - end - else - bps[:is_top] = custom_bulletin.is_top - bps[:is_hot] = custom_bulletin.is_hot - bps[:is_hidden] = custom_bulletin.is_hidden - end - if !defined?(Calendar).nil? - bps = update_calendar(bps,custom_bulletin) - end - custom_bulletin.update_attributes(bps) - custom_bulletin.update_user_id = current_user.id - if custom_bulletin.rejected - custom_bulletin.reapproval = true - custom_bulletin.save - send_notification_mail_to_managers(custom_bulletin,"reapproval",I18n.locale) - else - custom_bulletin.save - end - build_email(custom_bulletin,I18n.locale) - create_feed_cache(custom_bulletin) - custom_module = custom_bulletin.custom_module - now_custom_bulletin_page = CustomBulletin.where(:custom_module=>custom_module,:title.ne => "",:is_preview.in=>[false,nil]) - .order_by(sort).map(&:id).map.with_index.select{|v,i| v==custom_bulletin.id}[0][1] rescue nil - now_custom_bulletin_page = now_custom_bulletin_page.nil? ? 0 : ((now_custom_bulletin_page+1).to_f/10).ceil - bind_uid = custom_bulletin.bind_uid - if custom_module.present? - redirect_to admin_custom_announcements_path + "/#{custom_module}#{bind_uid.present? ? ('-'+bind_uid) : ''}?page=#{now_custom_bulletin_page}" - else - redirect_to admin_custom_announcements_path(:page=>now_custom_bulletin_page) - end - end - - def destroy - custom_module = @custom_bulletin.custom_module - bind_uid = @custom_bulletin.bind_uid - @custom_bulletin.destroy - if custom_module.present? - redirect_to admin_custom_announcements_path + "/#{custom_module}#{bind_uid.present? ? ('-'+bind_uid) : ''}" - else - redirect_to admin_custom_announcements_path - end - end - - def delete - if params[:ids] - CustomBulletin.any_in(:uid => params[:ids]).destroy_all - end - redirect_to admin_custom_announcements_path - end - - def preview - if params['preview_type'].eql?('edit') - custom_bulletin_data = custom_bulletin_params - org_custom_bulletin = CustomBulletin.find(params['custom_bulletin_id']) - custom_bulletin = org_custom_bulletin.clone - custom_bulletin.generate_uid - custom_bulletin.custom_bulletin_files = [] - custom_bulletin.custom_bulletin_links = [] - if custom_bulletin_data['image'].blank? - custom_bulletin.image = org_custom_bulletin.image - end - - if !custom_bulletin_data['custom_bulletin_files_attributes'].blank? - custom_bulletin_data['custom_bulletin_files_attributes'].each do |key, custom_bulletin_file| - next if !custom_bulletin_file['_destroy'].blank? - file = nil - if custom_bulletin_file['id'].blank? - file = CustomBulletinFile.new(custom_bulletin_file) - file.custom_bulletin_id = custom_bulletin.id - file.save - else - org_file = CustomBulletinFile.find(custom_bulletin_file['id']) - file = org_file.clone - file.custom_bulletin_id = custom_bulletin.id - file.file = org_file.file - custom_bulletin_file.delete('id') - custom_bulletin_file.delete('_destroy') - file.update_attributes(custom_bulletin_file) - end - - file.save - custom_bulletin.custom_bulletin_files << file - end - end - - if !custom_bulletin_data['custom_bulletin_links_attributes'].blank? - custom_bulletin_data['custom_bulletin_links_attributes'].each do |key, custom_bulletin_link| - next if !custom_bulletin_link['_destroy'].blank? - - if custom_bulletin_link['id'].blank? - link = CustomBulletinLink.new(custom_bulletin_link) - link.custom_bulletin_id = custom_bulletin.id - else - link = CustomBulletinLink.find(custom_bulletin_link['id']).clone - link.custom_bulletin_id = custom_bulletin.id - custom_bulletin_link.delete('id') - custom_bulletin_link.delete('_destroy') - link.update_attributes(custom_bulletin_link) - end - - link.save - custom_bulletin.custom_bulletin_links << link - end - end - - custom_bulletin_data.delete('custom_bulletin_files_attributes') - custom_bulletin_data.delete('custom_bulletin_links_attributes') - custom_bulletin.update_attributes(custom_bulletin_data) - else - custom_bulletin = CustomBulletin.new(custom_bulletin_params) - end - - custom_bulletin.is_preview = true - custom_bulletin.save - create_feed_cache(custom_bulletin) - render :text=>page_for_custom_bulletin(custom_bulletin) + "?preview=true" - end - - def destroy_preview - custom_bulletin = CustomBulletin.find_by(:uid=>params['uid']) - if custom_bulletin.is_preview - custom_bulletin.destroy - end - render :json=>{'destroy'=>custom_bulletin.id.to_s} - end - - def build_email(custom_bulletin,locale) - if custom_bulletin.email_sent and !custom_bulletin.email_addresses.blank? - if custom_bulletin.email.nil? - email = Email.new - email.save - email.deliver rescue nil - custom_bulletin.email_id = email.id - custom_bulletin.save - end - - is_sent = custom_bulletin.email.is_sent - is_sent = !params[:resend_mail].eql?("true") if !params[:resend_mail].blank? - doc = Nokogiri::HTML(custom_bulletin.title_translations[locale]) - title = doc.text.empty? ? 'no content' : doc.text - - custom_bulletin.email.update_attributes( - :create_user=>current_user, - :mail_sentdate=>custom_bulletin.email_sentdate, - :module_app=>@module_app, - :mail_lang => locale, - :mail_to=>custom_bulletin.email_addresses, - :mail_subject=>title, - :template=>'custom_announcements/email', - :template_data=>{ - "host" => request.host_with_port, - "title" => title, - "url" => page_for_custom_bulletin(custom_bulletin) - }, - :is_sent=>is_sent - ) - custom_bulletin.email.deliver - else - custom_bulletin.email.destroy if !custom_bulletin.email.nil? - end - end - - private - - def load_settings - @custom_announcement_setting = CustomAnnouncementSetting.first rescue nil - if @custom_announcement_setting.nil? - @custom_announcement_setting = CustomAnnouncementSetting.create - end - end - - def set_custom_bulletin - @custom_bulletin = CustomBulletin.find(params[:id]) - end - def custom_bulletin_config_params - params.require(:custom_bulletin_config).permit! - end - def custom_bulletin_params - params[:custom_bulletin][:email_sent] = params[:custom_bulletin][:email_sent].nil? ? 0 : params[:custom_bulletin][:email_sent] - params.require(:custom_bulletin).permit! - end - - def feed_params - params.require(:custom_bulletin_feed).permit! - end - - def settings_params - params.require(:custom_announcement_setting).permit! - end - def update_calendar(bps,custom_bulletin) - if bps[:add_to_calendar] == '0' && !bps[:event_id].blank? - Event.find(bps[:event_id]).destroy rescue nil - bps[:event_id] = nil - elsif bps[:add_to_calendar] == '1' - event = Event.find(bps[:event_id]) rescue Event.new(create_user_id: current_user.id) - e_start = bps[:calendar_start_date].blank? ? bps[:postdate] : bps[:calendar_start_date] - e_start = Time.now.to_datetime if e_start.blank? - e_end = bps[:calendar_end_date].blank? ? bps[:deadline] : bps[:calendar_end_date] - #e_end = Time.now.to_datetime + 1.year if e_end.blank? - event.update_attributes(model_class: 'CustomBulletin', - module_key: 'custom_announcement', - model_cat: bps[:category_id], - model_tags: bps[:tags], - model_page_id: bps[:page_id], - model_id: custom_bulletin.id,start: e_start, - end: e_end,update_user_id: current_user.id, - all_day: bps[:calendar_all_day], - calendar_type_id: bps[:calendar_type_id], - title_translations: bps[:title_translations], - note_translations: bps[:subtitle_translations]) - bps[:event_id] = event.id - end - bps - end - def create_feed_cache(custom_bulletin=nil,custom_bulletin_feed=nil) - if !custom_bulletin.nil? - CustomBulletinFeed.where(:tag_ids.in => Array(custom_bulletin.tag_ids).collect{|v| v.to_s}).each do |custom_bulletin_feed| - uid = custom_bulletin_feed.uid - uri = URI(request.protocol + request.host_with_port + "/xhr/custom_announcements/feed/#{uid}.json") - Thread.new do - res_net = Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https',open_timeout: 60,read_timeout: 60) do |http| - req = Net::HTTP::Get.new(uri) - http.request(req) - end - end - end - elsif !custom_bulletin_feed.nil? - uid = custom_bulletin_feed.uid - uri = URI(request.protocol + request.host_with_port + "/xhr/custom_announcements/feed/#{uid}.json") - Thread.new do - res_net = Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https',open_timeout: 60,read_timeout: 60) do |http| - req = Net::HTTP::Get.new(uri) - http.request(req) - end - end - end - end -end diff --git a/custom_announcement/app/controllers/custom_announcement_feeds_controller.rb b/custom_announcement/app/controllers/custom_announcement_feeds_controller.rb deleted file mode 100644 index 8e42aca..0000000 --- a/custom_announcement/app/controllers/custom_announcement_feeds_controller.rb +++ /dev/null @@ -1,159 +0,0 @@ -require "rss" -class CustomAnnouncementFeedsController < ApplicationController - include Admin::CustomAnnouncementsHelper - def feed - uid = params[:uid] - feed_cache = CustomBulletinFeedCache.where(uid: uid).first - custom_anns = '' - if feed_cache.nil? - CustomBulletinFeedCache.create(uid: uid,content: '') - Thread.new do - custom_anns = get_custom_announcements(uid).to_json - feed_cache = CustomBulletinFeedCache.where(uid: uid).first - if !feed_cache.nil? - feed_cache.update_attributes(content: custom_anns) - end - end - else - custom_anns = feed_cache.content - end - render :json => custom_anns - end - - def rssfeed - uid = params[:uid] - @bf = CustomBulletinFeed.find_by(:uid => uid) rescue nil - if !@bf.nil? - tags = @bf.tag_ids - if !tags.empty? - @custom_announcements = CustomBulletin.can_display_and_sorted.is_approved.filter_by_tags(tags) - end - end - respond_to do |format| - format.html {redirect_to "/xhr/custom_announcements/rssfeed/#{@bf.uid}.rss"} - format.rss - end - end - - def feeds - feeds = [] - CustomBulletinFeed.all.each do |bf| - feed = {} - feed["title_translations"] = bf.title_translations - feed["uid"] = bf.uid - feed["url"] = "#{request.base_url}/xhr/custom_announcements/feed/#{bf.uid}" - feed["xml_url"] = "#{request.base_url}/xhr/custom_announcements/rssfeed/#{bf.uid}.rss" - feed["tags"] = [] - bf.tag_ids.each do |t| - tag = Tag.find(t) - d = {} - d["name_translations"] = tag.name_translations - feed["tags"] << d - end - feeds << feed - end - render :json => {"feeds" => feeds}.to_json - end - - private - - def smart_convertor(text) - html_string = text - url = request.protocol + request.host_with_port - html_string = html_string.gsub(/img.*?src="(?=\/)(.*?)|a.*?href="(?=\/)(.*?)/i){|w| w+url} - html_string = html_string.gsub(/img.*?src="\.\.(?=\/)(.*?)|a.*?href="\.\.(?=\/)(.*?)/i){|w| w[0...-2]+url} - return html_string - end - - def get_custom_announcements(uid) - bf = CustomBulletinFeed.find_by(:uid => uid) rescue nil - startdt = params[:start] - enddt = params[:end] - dt = params[:date] - if !bf.nil? - tags = bf.tag_ids - if !tags.empty? - if !dt.nil? - dt = DateTime.parse(dt) - dtt = dt + 1.day - custom_announcements = CustomBulletin.where(:postdate.gt => dt, :postdate.lt => dtt).can_display_and_sorted.is_approved.filter_by_tags(tags) - elsif !startdt.nil? && enddt.nil? - startdt = DateTime.parse(startdt) - enddt = DateTime.now - custom_announcements = CustomBulletin.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved.filter_by_tags(tags) - elsif !startdt.nil? && !enddt.nil? - startdt = DateTime.parse(startdt) - enddt = DateTime.parse(enddt) + 1.day - custom_announcements = CustomBulletin.where(:postdate.gt => startdt, :postdate.lt => enddt).can_display_and_sorted.is_approved.filter_by_tags(tags) - else - custom_announcements = CustomBulletin.all.can_display_and_sorted.is_approved.filter_by_tags(tags) - end - else - custom_announcements = [] - end - end - all_custom_anns = [] - tag_names = [] - tag_ids = [] - custom_announcements.each do |custom_anns| - user = User.find(custom_anns.create_user_id) rescue nil - if !user.nil? - author = user.member_profile && user.member_profile.name == "" ? user.user_name : user.member_profile.name - else - author = "" - end - a = {} - a["id"] = custom_anns.uid - a["title_translations"] = custom_anns.title_translations - a["subtitle_translations"] = custom_anns.subtitle_translations - a["text_translations"] = {} - a["text_translations"]["en"] = smart_convertor(custom_anns.text_translations["en"]) if !custom_anns.text_translations["en"].blank? - a["text_translations"]["zh_tw"] = smart_convertor(custom_anns.text_translations["zh_tw"]) if !custom_anns.text_translations["zh_tw"].blank? - a["postdate"] = custom_anns.postdate - a["image_description_translations"] = custom_anns.image_description_translations - a["image"] = {} - a["display_img"] = custom_anns.display_img - a["image"]["original"] = ("#{request.base_url}" + custom_anns.image.url rescue "") - a["image"]["thumb"] = ("#{request.base_url}" + custom_anns.image.thumb.url rescue "") - a["image"]["mobile"] = ("#{request.base_url}" + custom_anns.image.mobile.url rescue "") - a["tags"] = [] - a["author"] = author - a["params"] = custom_anns.to_param - a["subtitle_ann"] = custom_anns.subtitle if custom_anns.display_subtitle? - a["custom_bulletin_links"] = [] - a["custom_bulletin_files"] = [] - a["custom_bulletin_carousel_images"] = custom_anns.custom_bulletin_carousel_images.map{|image| {"src"=>"#{request.base_url}" + image.file.url,"description"=>image.description.to_s,"description_text"=>image.description_text }} - custom_anns.tags.each do |tag| - if !tag_ids.include?(tag.id.to_s) - tag_ids << tag.id.to_s - tag_names << {"name_translations" => tag.name_translations} - end - a["tags"] << {"name_translations" => tag.name_translations} - end - custom_anns.custom_bulletin_links.each do |bl| - b = {} - b["url"] = bl.url - b["title_translations"] = bl.title_translations - a["custom_bulletin_links"] << b - end - custom_anns.custom_bulletin_files.each do |bf| - b = {} - b["description_translations"] = bf.description_translations - b["title_translations"] = bf.title_translations - b["url"] = ("#{request.base_url}" + bf.file.url rescue "") - a["custom_bulletin_files"] << b - end - all_custom_anns << a - end - { - "custom_announcements" => all_custom_anns, - "tags" => tag_names - } - end -end - - - - - - diff --git a/custom_announcement/app/controllers/custom_announcements_controller.rb b/custom_announcement/app/controllers/custom_announcements_controller.rb deleted file mode 100644 index b98a133..0000000 --- a/custom_announcement/app/controllers/custom_announcements_controller.rb +++ /dev/null @@ -1,809 +0,0 @@ -class CustomAnnouncementsController < ApplicationController - include CustomAnnouncementsHelper - def comment - @custom_bulletin = CustomBulletin.where(:uid=>params[:uid]).first - comment_val = params['comment'] - if !@custom_bulletin.nil? && @custom_bulletin.open_comment_for_user(OrbitHelper.current_user) && !comment_val.blank? - account_id = OrbitHelper.current_user.member_profile.id.to_s rescue 'visitor' - b = CustomBulletinComment.new(ip: request.remote_ip,comment: comment_val,account_id: account_id) - b.custom_bulletin_id = @custom_bulletin.id - b.save - render :json => {} - end - end - def index - CustomBulletin.remove_expired_status - sorted,total_pages = get_sorted_annc - sorted = [] if sorted.nil? - custom_anns = sorted.collect do |a| - if a["source-site"].blank? - statuses = a.statuses_with_classname.collect do |status| - { - "status" => status["name"], - "status-class" => "status-#{status['classname']}" - } - end - locale = OrbitHelper.get_site_locale.to_s - files = a.custom_bulletin_files.map{|file| { "file_url" => file.file.url + "\" title=\"#{file.file_title}", "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title rescue '') } if file.enabled_for?(locale) } rescue [] - files.delete(nil) - links = a.custom_bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] - author = User.find(a.create_user_id).member_profile.name rescue "" - desc = a.image_description - desc = (desc.blank? ? "custom_announcement image" : desc) - link_to_show = a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param) - target = a.is_external_link ? "_blank" : "_self" - doc = Nokogiri::HTML(a.title) - title = doc.text.empty? ? 'no content' : doc.text - { - "department" => author, - "custom_bulletin_links" => links, - "custom_bulletin_files" => files, - "title" => a.title, - "source-site" => "", - "source-site-title" => "", - "source-site-link" => "", - "subtitle" => a.subtitle, - "statuses" => statuses, - "category" => (a.category.title rescue ''), - "postdate" => a.postdate, - "author" => author, - "is_top" => (a.is_top? ? 1 : 0), - "link_to_show" => link_to_show+"\" title=\"#{title}\"", - "target" => target, - "img_src" => a.image.thumb.url || "/assets/custom_announcement-default.jpg", - "img_description" => desc, - "more" => t(:more_plus), - "view_count" => a.view_count - } - else - a - end - end - #If no data , hide title&table - if sorted.count == 0 - display = "hide" - end - # custom_anns = custom_anns.concat(feeds_custom_anns) - # total_pages = custom_announcements.total_pages - params = OrbitHelper.params - page = Page.where(url:params['url']).first - @annc_page_title = nil - if (params['category'] != page.categories rescue true) - @annc_page_title = Category.find(Array(params['category']).first).title rescue nil - end - if (params["tags"] != page.tags && !params["tags"].blank? && params["tags"].count == 1 && params["tags"][0] != "all" rescue true) - @annc_page_title = Tag.find(Array(params['tags']).first).name rescue nil - end - { - "custom_announcements" => custom_anns, - "extras" => { - "widget-title" =>t('custom_announcement.custom_announcement'), - "title-head" => t('custom_announcement.table.title'), - "date-head" => t('custom_announcement.table.date'), - "status-head" => t('custom_announcement.table.status'), - "author-head" => t('custom_announcement.table.author'), - "subtitle-head" => t('custom_announcement.table.sub_title'), - "category-head" => t('custom_announcement.table.category'), - "link-head" => t('custom_announcement.table.link'), - "file-head" => t('custom_announcement.table.file'), - "view-count-head" => t('custom_announcement.table.view_count'), - "display" => display, - "department-head" => t('custom_announcement.table.department'), - "page-title" => @annc_page_title - }, - "total_pages" => total_pages - } - - end - def self.custom_widget_data - @custom_configs = CustomBulletinConfig.all.to_a - ac = ActionController::Base.new - ac.render_to_string("custom_announcements/custom_widget_data",:locals=>{:@custom_data_field=>@custom_data_field,:@custom_configs=>@custom_configs,:@field_name=>@field_name}) - end - def random_custom_announcement_widget - pack_data(true) - end - - def widget - pack_data() - end - - def tag_cloud - ma = ModuleApp.where(:key => "custom_announcement").first - temp = [] - ma.tags.each do |tag| - t1 = tag.taggings.collect{|t| t.taggable_id.to_s} - count = CustomBulletin.where(:id.in => t1).can_display_and_sorted.count - temp << { - "tag-name" => tag.name, - "count" => count, - "tag-url" => OrbitHelper.widget_more_url + "?tags[]=" + tag.id.to_s - } - end - max = temp.max_by{|t| t["count"]}["count"] - tags = [] - temp.each do |tag| - if tag["count"] > 0 - percent = (tag["count"] * 100) / max - font_size = ((percent / 10).round) + 16 - tag["font-size"] = font_size - tags << tag - end - end - { - "tags" => tags, - "extras" => {} - } - end - - def pack_data(is_random=false) - cats = OrbitHelper.widget_categories || [] - tags = OrbitHelper.widget_tags || [] - subpart = OrbitHelper.get_current_widget - custom_data_field = subpart.custom_data_field - get_tabs_option - custom_anns = [] - use_tag = false - if @tab_option == 0 - custom_anns = get_anncs_for_pack_data(cats,tags,nil,is_random) - else - if cats.count != 1 || tags == ["all"] - cats.each do |cat| - custom_anns = custom_anns + get_anncs_for_pack_data([cat],tags,'') - end - else - tags.each do |tag| - custom_anns = custom_anns + get_anncs_for_pack_data(cats,[tag],tag) - end - use_tag = true - end - end - mp = (custom_anns[0]["img_src"] rescue "") - mpd = (custom_anns[0]["img_description"] rescue "") - if @tab_option == 1 - if use_tag - tags = ["all"] + tags - else - cats = ["all"] + cats - end - custom_anns = custom_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} - end - cats = cats.uniq - tags = tags.uniq - tags_translations = tags.map{|tag_id| - if tag_id == "all" - t = I18n.t(:all) - else - t = Tag.find(tag_id).name rescue "" - end - [tag_id,t] - }.to_h - cats_translations = cats.map{|cat_id| - if cat_id == "all" - t = I18n.t(:all) - else - t = Category.find(cat_id).title rescue "" - end - [cat_id,t] - }.to_h - cats_relations = cats_translations.map{|cat_id,t| - if cat_id == "all" - t = "all" - end - [cat_id,t] - }.to_h - page = OrbitHelper.page.find_page(:page_id=> subpart.read_more_page_id).first rescue nil - page = OrbitHelper.page.find_page(:module => "custom_announcement").first rescue nil if page.nil? - all_cats = cats.dup - all_cats.delete "all" - if all_cats.count == 0 - all_cats = ["all"] - end - all_tags = tags.dup - all_tags.delete "all" - if all_tags.count == 0 - all_tags = ["all"] - end - max_all_count = [OrbitHelper.widget_data_count,custom_anns.count].min - if @tab_option != 0 - OrbitHelper.set_widget_title(OrbitHelper.widget_title + - "
" + - "
    " + - (use_tag ? tags.map.with_index{|tag,i| - read_more_url = "/#{I18n.locale.to_s + page.url}" rescue "" - read_more_url = read_more_url + "?" + {"category"=>all_cats,"tags"=>(tag == 'all' ? all_tags : [tag])}.to_param if read_more_url != "" - read_more_text = I18n.t("custom_announcement.more") - if tag != "all" - begin - read_more_text = I18n.t("custom_announcement.more_") + tags_translations[tag] - rescue - nil - end - end - "
  • #{tags_translations[tag]}
  • " - }.join("") : cats.map.with_index{|cat,i| - read_more_url = "/#{I18n.locale.to_s + page.url}" rescue "" - read_more_url = read_more_url + "?" + {"category"=>(cat == 'all' ? all_cats : cat)}.to_param if read_more_url != "" - read_more_text = I18n.t("custom_announcement.more") - if cat != "all" - begin - read_more_text = I18n.t("custom_announcement.more_") + cats_translations[cat] - rescue - nil - end - end - "
  • #{cats_translations[cat]}
  • " - }.join("")) + - "
" - ) - filter_attr = (use_tag ? 'data-tags' : 'data-category') - extra_html = ' - - - - ' - else - read_more_text = I18n.t("custom_announcement.more") - if cats.count == 1 && cats[0] != "all" - begin - read_more_text = I18n.t("custom_announcement.more_") + ((all_tags.count == 1 && all_tags[0] != 'all') ? tags_translations[tags[0]] : cats_translations[cats[0]]) - rescue - nil - end - end - extra_html = " - - " - end - if (@read_more_option != 0 rescue false) - extra_html += " - - " - end - extra_after_html = "" - if @all_setting_option == 0 && @tab_option == 1 - extra_after_html = " - - " - end - if @tab_option == 0 - read_more_url = "/#{I18n.locale.to_s + page.get_url}" rescue "" - read_more_url = read_more_url + "?" + {"category"=>all_cats,"tags"=>all_tags}.to_param if read_more_url != "" - extra_after_html += " - - " - end - { - "custom_announcements" => custom_anns, - "extras" => { - "more_url"=>OrbitHelper.widget_more_url, - "main_picture" => mp, - "main_picture_description" => mpd, - "title-head" => t('custom_announcement.table.title'), - "date-head" => t('custom_announcement.table.date'), - "author-head" => t('custom_announcement.table.author'), - "status-head" => t('custom_announcement.table.status'), - "subtitle-head" => t('custom_announcement.table.sub_title'), - "category-head" => t('custom_announcement.table.category'), - "link-head" => t('custom_announcement.table.link'), - "file-head" => t('custom_announcement.table.file'), - "read_more" => read_more_url, - "read_more_text" => "read more", - "extra_brefore_html" => extra_html, - "extra_after_html" => extra_after_html - } - } - end - def get_tabs_option - subpart = OrbitHelper.get_current_widget - tab_options = ["not_enable_tabs","enable_tabs_with_categories_include_all","enable_tabs_with_categories"] - read_more_options = ['default','upper_left','lower_left','upper_right','lower_right'] - all_setting_options = ['the_same_as_data_count','display_all_in_other_tabs'] - @tab_option = 0 - @read_more_option = 0 - @all_setting_option = 0 - if subpart.methods.include? 'select_options'.to_sym - ModuleApp.all.select{|tmp| tmp.key.to_s=='custom_announcement'}.each do |modile_app| - @show_options = modile_app.show_options rescue nil - end - subpart.select_options.each do |select_option| - if !(@show_options.nil?) && select_option.field_name == @show_options.keys[1].to_s - value = YAML.load(select_option.value) - tmp = value[:en] - I18n.with_locale(:en) do - tab_options.each_with_index do |option,i| - if tmp == t("custom_announcement.#{option}") - @tab_option = i - break - end - end - end - end - if !(@show_options.nil?) && select_option.field_name == @show_options.keys[2].to_s - value = YAML.load(select_option.value) - tmp = value[:en] - I18n.with_locale(:en) do - read_more_options.each_with_index do |option,i| - if tmp == t("custom_announcement.#{option}") - @read_more_option = i - break - end - end - end - end - if !(@show_options.nil?) && select_option.field_name == @show_options.keys[3].to_s - value = YAML.load(select_option.value) - tmp = value[:en] - I18n.with_locale(:en) do - all_setting_options.each_with_index do |option,i| - if tmp == t("custom_announcement.#{option}") - @all_setting_option = i - break - end - end - end - end - end - end - end - def get_anncs_for_pack_data(cats,tags,set_tags=nil,is_random = false) - subpart = OrbitHelper.get_current_widget - custom_data_field = subpart.custom_data_field - widget_data_count = OrbitHelper.widget_data_count - custom_anns_cache = CustomAnnsCache.where(parent_id: subpart.id.to_s + cats.to_s + tags.to_s + custom_data_field.to_s + widget_data_count.to_s,locale: I18n.locale.to_s) - set_image_version_for_widget() - devide_flag = (!(defined? SiteFeed).nil?) - if custom_anns_cache.count != 1 || is_random - CustomBulletin.remove_expired_status - uid = OrbitHelper.params[:uid] rescue "" - sorted_custom_anns = CustomBulletin.where(:title.nin => ["",nil],:is_preview.in=>[false,nil], :uid.ne => uid) - .can_display_and_sorted.is_approved - .filter_by_widget_categories(cats,false).filter_by_tags(tags) - if custom_data_field - if (custom_data_field[:bind_module_app] rescue false) - sorted_custom_anns = sorted_custom_anns.where(:custom_module=>custom_data_field[:bind_module_app]) - end - if (custom_data_field[:bind_uid] rescue false) - sorted_custom_anns = sorted_custom_anns.where(:bind_uid=>custom_data_field[:bind_uid]) - end - end - if !is_random - sorted_custom_anns = sorted_custom_anns.limit(widget_data_count) - if custom_anns_cache.count > 1 - custom_anns_cache.destroy - end - if devide_flag - now_custom_anns = sorted_custom_anns.to_a - top_custom_anns = now_custom_anns.select{|v| v.is_top}.map{|v| data_to_human_type(v,set_tags)} - not_top_custom_anns = now_custom_anns.select{|v| !v.is_top}.map{|v| data_to_human_type(v,set_tags)} - CustomAnnsCache.create(parent_id: subpart.id.to_s + cats.to_s + tags.to_s + custom_data_field.to_s + widget_data_count.to_s,locale: I18n.locale.to_s,filter_result: {top: top_custom_anns,not_top: not_top_custom_anns}) - else - custom_anns = sorted_custom_anns.map{|v| data_to_human_type(v,set_tags)} - CustomAnnsCache.create(parent_id: subpart.id.to_s + cats.to_s + tags.to_s + custom_data_field.to_s + widget_data_count.to_s,locale: I18n.locale.to_s,filter_result: custom_anns) - end - else - if devide_flag - custom_anns = sorted_custom_anns.sample(widget_data_count) - top_custom_anns = custom_anns.select{|v| v.is_top}.map{|v| data_to_human_type(v,set_tags)} - not_top_custom_anns = custom_anns.select{|v| !v.is_top}.map{|v| data_to_human_type(v,set_tags)} - else - custom_anns = sorted_custom_anns.sample(widget_data_count).map{|v| data_to_human_type(v,set_tags)} - end - end - elsif devide_flag - now_custom_anns = custom_anns_cache.first.filter_result - top_custom_anns = now_custom_anns[:top] - not_top_custom_anns = now_custom_anns[:not_top] - else - custom_anns = custom_anns_cache.first.filter_result - end - if devide_flag - rest_count = widget_data_count - top_custom_anns.count - if rest_count <= 0 - custom_anns = top_custom_anns - else - feeds_custom_anns = get_feed_custom_announcements("widget") - top_custom_anns = top_custom_anns + feeds_custom_anns.select{|v| v['is_top']} - top_custom_anns = top_custom_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} - rest_all_custom_anns = feeds_custom_anns.select{|v| v['is_top'] != true} + not_top_custom_anns.take(rest_count) - rest_custom_anns = rest_all_custom_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]}.take(rest_count) - custom_anns = (top_custom_anns + rest_custom_anns).take(widget_data_count) - end - end - custom_anns.each{|a| a["postdate"] = a["postdate"].in_time_zone(Time.zone.utc_offset / 3600).strftime('%Y-%m-%d %H:%M') rescue nil } - custom_anns - end - def get_file - @url = request.path - begin - file = CustomBulletinFile.find(params[:id]) - @url = file.file.url - if file.can_access?(OrbitHelper.current_user) - @path = file.file.path rescue "" - @filename = @path.split("/").last - @ext = @path.split("/").last.to_s.split(".").last - if @ext == "png" || @ext == "jpg" || @ext == "bmp" || @ext == "pdf" - render "archives/download_file.html",:layout=>false - else - send_file(@path) - end - else - render :file => "#{Rails.root}/app/views/errors/403.html", :layout => false, :status => :not_found, :content_type => 'text/html' - end - rescue - render :file => "#{Rails.root}/app/views/errors/404.html", :layout => false, :status => :not_found, :content_type => 'text/html' - end - end - def show_local_custom_announcement(uid, is_preview) - locale = OrbitHelper.get_site_locale.to_s - if is_preview - custom_announcement = CustomBulletin.where(:uid => uid).first - else - custom_announcement = CustomBulletin.can_display_and_sorted.where(:uid => uid).first - end - @custom_bulletin = custom_announcement - custom_announcement = CustomBulletin.where(:uid => uid).first if custom_announcement.nil? - url_to_edit = OrbitHelper.user_can_edit?(custom_announcement) ? "/admin/custom_announcements/#{custom_announcement.id.to_s}/edit" : "" - - access_level = OrbitHelper.user_access_level? - - if !custom_announcement.approved && (access_level != "manager" && access_level != "admin") - if CustomAnnouncementSetting.is_pro? - if !(access_level == "sub_manager" && CustomAnnouncementSetting.first.approvers.include?(OrbitHelper.current_user.id.to_s)) - return {} - end - elsif access_level != "sub_manager" - return {} - end - end - - return {} if (custom_announcement.category.disable rescue false) - - tags = custom_announcement.tags.map{|tag| { - "tag" => tag.name , - "url" => OrbitHelper.page_for_tag(tag) - } } rescue [] - files = custom_announcement.custom_bulletin_files.map do |file| - { "file_url" => "/xhr/custom_announcements/file/#{file.id}/#{file['file']}" + "\" title=\"#{file.file_title}", - "file_title" => (file.title.blank? ? URI.unescape(File.basename(file.file.path)) : file.title rescue '') } rescue nil if file.enabled_for?(locale) - end rescue [] - files.delete(nil) - files.each do |file| - if file["file_url"] =="" || file["file_url"] == nil - files.delete(file) - end - end - links = custom_announcement.custom_bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] - update_user = custom_announcement.update_user.member_profile.name rescue "" - desc = custom_announcement.image_description - desc = (desc.nil? || desc == "" ? "custom_announcement image" : desc) - - request = OrbitHelper.request - meta_desc = custom_announcement.subtitle.nil? || custom_announcement.subtitle == "" ? custom_announcement.text[0..200] : custom_announcement.subtitle - OrbitHelper.render_meta_tags([{"property" => "og:title", "content" => custom_announcement.title},{"property" => "og:site_name", "content" => Site.first.title},{"property" => "og:url", "content" => request.original_url.split("?").first},{"property" => "og:description", "content" => meta_desc},{"property" => "og:image", "content" => "#{request.base_url}#{custom_announcement.image.url}"},{"property" => "og:type", "content" => "Article"}]) - - subtitle_ann = nil - img_src = nil - img_description = nil - subtitle_ann = custom_announcement.subtitle if custom_announcement.display_subtitle? - img_src = (custom_announcement.image.thumb.url || "/assets/custom_announcement-default.jpg") if custom_announcement.display_img? - img_description = custom_announcement.image_description if (custom_announcement.image_description.present?) && (custom_announcement.display_img?) - show_comment_flag = custom_announcement.open_comment_for_user(OrbitHelper.current_user) - custom_bulletin_carousel_images = custom_announcement.custom_bulletin_carousel_images.map{|image| {"src"=>image.file.url,"description"=>image.description.to_s,"description_text"=>image.description_text }} - resume_btn_title = (I18n.locale.to_s =="zh_tw") ? "繼續播放" : "resume" - pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause" - prev_btn_title = (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" - next_btn_title = (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" - { - "tags" => tags, - "custom_bulletin_files" => files, - "custom_bulletin_links" => links, - "custom_bulletin_carousel_images" => custom_bulletin_carousel_images, - "data" => { - "title" => custom_announcement.title, - "subtitle_ann" => subtitle_ann, - "update_user" => update_user, - "updated_at" => (custom_announcement.postdate.in_time_zone(Time.zone.utc_offset / 3600).strftime('%Y-%m-%d %H:%M') rescue ""), - "body" =>custom_announcement.text, - "image" => custom_announcement.image.url, - "img_src" => img_src, - "img_description" => img_description, - "hide_class" => custom_announcement.display_img? ? custom_announcement.image_display_class : ' hide', - "alt_title" => desc, - "resume_btn_title" => resume_btn_title, - "pause_btn_title" => pause_btn_title, - "prev_btn_title" => prev_btn_title, - "next_btn_title" => next_btn_title, - "carousel_display_style" => (custom_bulletin_carousel_images.count == 0 ? 'display: none' : 'width: 50%;margin: auto;'), - "carousel_count" => custom_bulletin_carousel_images.count - }, - "comments" => custom_announcement.comments, - "show_comment_flag" => show_comment_flag, - "impressionist" => (custom_announcement.is_preview ? nil : custom_announcement), - "url_to_edit"=>url_to_edit - } - end - - def show_feed_custom_announcement(uid) - custom_announcement = OrbitHelper.get_from_feed(uid) - locale = OrbitHelper.get_site_locale.to_s - url_to_edit = "#" - return {} if custom_announcement.blank? - tags = [] - - custom_announcement["tags"].each{|tag| - t = Tag.where(:name => tag["name_translations"][locale]).first rescue nil - if t.nil? - I18n.locale = (locale == "en" ? :zh_tw : :en) - t = Tag.where(:name => tag["name_translations"][locale]).first rescue nil - I18n.locale = locale.to_sym - end - tags << { - "tag" => tag["name_translations"][locale], - "url" => (t.nil? ? "#" : OrbitHelper.page_for_tag(t)) - } - } - - files = custom_announcement["custom_bulletin_files"].map{|file| { "file_url" => file["url"], "file_title" => (file["title_translations"][locale] == "" ? URI.unescape(File.basename(file["url"])) : file["title_translations"][locale] rescue '') } } rescue [] - - files.each do |file| - if file["file_url"] =="" || file["file_url"] == nil - files.delete(file) - end - end - links = custom_announcement["custom_bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale] == "" ? link["url"] : link["title_translations"][locale]) } } rescue [] - - update_user = custom_announcement["author"] - desc = custom_announcement["image_description_translations"][locale] rescue "" - desc = (desc.nil? || desc == "" ? "custom_announcement image" : desc) - img_description = nil - img_description = custom_announcement["image_description_translations"][I18n.locale] if custom_announcement['display_img'] - img_src = nil - img_src = (custom_announcement['image']['thumb'] || "/assets/custom_announcement-default.jpg") if custom_announcement['display_img'] - subtitle_ann = custom_announcement['subtitle_ann'] - request = OrbitHelper.request - if custom_announcement["subtitle_translations"].present? - meta_desc = custom_announcement["subtitle_translations"][locale] != "" ? custom_announcement["subtitle_translations"][locale] : custom_announcement["text_translations"][locale][0..200] rescue "" - else - meta_desc = "" - end - - OrbitHelper.render_meta_tags([{"property" => "og:title", "content" => custom_announcement["title_translations"][locale]},{"property" => "og:site_name", "content" => Site.first.title},{"property" => "og:url", "content" => request.original_url.split("?").first},{"property" => "og:description", "content" => meta_desc},{"property" => "og:image", "content" => custom_announcement["image"]["original"]},{"property" => "og:type", "content" => "Article"}]) - - datetime = DateTime.parse(custom_announcement["postdate"]) - - custom_bulletin_carousel_images = Array(custom_announcement["custom_bulletin_carousel_images"]) - resume_btn_title = (I18n.locale.to_s =="zh_tw") ? "繼續播放" : "resume" - pause_btn_title = (I18n.locale.to_s =="zh_tw") ? "暫停播放" : "pause" - prev_btn_title = (I18n.locale.to_s =="zh_tw") ? "上一張" : "prev" - next_btn_title = (I18n.locale.to_s =="zh_tw") ? "下一張" : "next" - - { - "tags" => tags, - "custom_bulletin_files" => files, - "custom_bulletin_links" => links, - "custom_bulletin_carousel_images" => custom_bulletin_carousel_images, - "data" => { - "title" => custom_announcement["title_translations"][locale], - "subtitle_ann" => subtitle_ann, - "update_user" => update_user, - "updated_at" => (datetime.in_time_zone(Time.zone.utc_offset / 3600).strftime('%Y-%m-%d %H:%M') rescue ""), - "body" => custom_announcement["text_translations"][locale], - "image" => custom_announcement["image"]["original"], - "img_src" => img_src, - "img_description" => img_description, - "hide_class" => custom_announcement["display_img"] ? '' : ' hide', - "alt_title" => desc, - "resume_btn_title" => resume_btn_title, - "pause_btn_title" => pause_btn_title, - "prev_btn_title" => prev_btn_title, - "next_btn_title" => next_btn_title, - "carousel_display_style" => (custom_bulletin_carousel_images.count == 0 ? 'display: none' : 'width: 50%;margin: auto;'), - "carousel_count" => custom_bulletin_carousel_images.count - }, - "comments" => [], - "show_comment_flag" => false, - "impressionist" => nil, - "url_to_edit" => url_to_edit - } - end - - def show - params = OrbitHelper.params - uid = params[:uid] - if OrbitHelper.is_object_from_feed?(uid) - show_feed_custom_announcement(uid) - else - show_local_custom_announcement(uid, (params["preview"] == "true" ? true : false)) - end - end - def show_widget - @type = "show_widget" - @show_page = params[:show_page] - if params[:tags].nil? - @tags = ['all'] - else - @tags = params[:tags] - end - if params[:categories].nil? - @categories = ['all'] - else - @categories = params[:categories] - end - OrbitHelper.set_site_locale(I18n.locale) - OrbitHelper.set_current_widget_module("custom_announcement") - OrbitHelper.set_params(params,current_user) - CustomBulletin.remove_expired_status - OrbitHelper.set_page_number(params[:page_no].to_i) - OrbitHelper.set_page_data_count((params[:data_count].blank? ? 10 : params[:data_count].to_i)) - sorted,total_pages = get_sorted_annc - custom_anns = sorted.collect do |a| - if a["source-site"].blank? - statuses = a.statuses_with_classname.collect do |status| - { - "status" => status["name"], - "status-class" => "status-#{status['classname']}" - } - end - locale = I18n.locale.to_s - files = a.custom_bulletin_files.map{|file| { "file_url" => file.file.url + "\" title=\"#{file.file_title}", "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title rescue '') } if file.enabled_for?(locale) } rescue [] - files.delete(nil) - links = a.custom_bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] - author = User.find(a.create_user_id).member_profile.name rescue "" - desc = a.image_description - desc = (desc.blank? ? "custom_announcement image" : desc) - link_to_show = (a.is_external_link ? a.external_link : OrbitHelper.url_to_show(a.to_param)) rescue "" - target = a.is_external_link ? "_blank" : "_self" - doc = Nokogiri::HTML(a.title) - title = doc.text.empty? ? 'no content' : doc.text - { - "department" => author, - "custom_bulletin_links" => links, - "custom_bulletin_files" => files, - "title" => a.title, - "source-site" => "", - "source-site-title" => "", - "source-site-link" => "", - "subtitle" => a.subtitle, - "statuses" => statuses, - "category" => a.category.title, - "postdate" => a.postdate, - "author" => author, - "is_top" => (a.is_top? ? 1 : 0), - "link_to_show" => link_to_show+"\" title=\"#{title}\"", - "target" => target, - "img_src" => a.image.thumb.url || "/assets/custom_announcement-default.jpg", - "img_description" => desc, - "more" => t(:more_plus), - "view_count" => a.view_count - } - else - a - end - end - #If no data , hide title&table - if sorted.count == 0 - display = "hide" - end - # custom_anns = custom_anns.concat(feeds_custom_anns) - # total_pages = custom_announcements.total_pages - - - @data = { - "custom_announcements" => custom_anns, - "extras" => { - "widget-title" =>t('custom_announcement.custom_announcement'), - "title-head" => t('custom_announcement.table.title'), - "date-head" => t('custom_announcement.table.date'), - "status-head" => t('custom_announcement.table.status'), - "author-head" => t('custom_announcement.table.author'), - "subtitle-head" => t('custom_announcement.table.sub_title'), - "category-head" => t('custom_announcement.table.category'), - "link-head" => t('custom_announcement.table.link'), - "file-head" => t('custom_announcement.table.file'), - "view-count-head" => t('custom_announcement.table.view_count'), - "display" => display, - "department-head" => t('custom_announcement.table.department') - }, - "total_pages" => total_pages - } - render :layout => false - end - -end diff --git a/custom_announcement/app/controllers/custom_bulletins_controller.rb b/custom_announcement/app/controllers/custom_bulletins_controller.rb deleted file mode 100644 index a4134fc..0000000 --- a/custom_announcement/app/controllers/custom_bulletins_controller.rb +++ /dev/null @@ -1,128 +0,0 @@ -# encoding: utf-8 -class CustomBulletinsController < ApplicationController - before_filter :set_I18n - def get_custom_bulletins - page = Page.where(:module => "custom_announcement").first rescue nil - - # 頁次 - page_num = params[:page_num].blank? ? 0 : params[:page_num].to_i - # 每頁顯示的則數 - per_page = params[:per_page].blank? ? 10 : params[:per_page].to_i - per_page = per_page > 0 ? per_page : 10 - - I18n.locale = :zh_tw - if !params[:keyword].blank? - keyword = Regexp.new(".*"+params[:keyword]+".*") - custom_bulletins = CustomBulletin.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword}) - else - custom_bulletins = CustomBulletin.all - end - - if !params[:category].blank? - module_id = ModuleApp.where(:key=>"custom_announcement").first.id - category = Regexp.new(".*"+params[:category]+".*") - category_id = Category.where(:title => category, :module_app_id => module_id).first.id - custom_bulletins = custom_bulletins.where(:category_id => category_id) - else - custom_bulletins = custom_bulletins - end - - custom_bulletins = custom_bulletins.where(:is_preview.in=>[false,nil]) - custom_bulletins = custom_bulletins.where(:approved.ne => false , :rejected.ne => true) - custom_bulletins = custom_bulletins.where(:postdate.lt=>Time.now) - custom_bulletins = custom_bulletins.desc( :is_top, :postdate).page(page_num).per(per_page) - - custom_bulletins = custom_bulletins.collect do |b| - image = request.protocol + request.host_with_port + b.image.url rescue nil - - links = b.custom_bulletin_links.collect do |bl| - { - "title" => bl.title_translations, - "url" => bl.url - } - end rescue nil - - files = b.custom_bulletin_files.collect do |bf| - file = request.protocol + request.host_with_port + bf.file.url rescue nil - { - "title" => bf.title_translations, - "description" => bf.description_translations, - "file" => file - } - end rescue nil - - ts = b.tags.collect do |t| - { - "name" => t.name_translations - } - end rescue nil - - text = {"en" => "", "zh_tw" => ""} - text["en"] = (b.text_translations["en"].nil? ? "" :smart_convertor(b.text_translations["en"])) - text["zh_tw"] = (b.text_translations["zh_tw"].nil? ? "" : smart_convertor(b.text_translations["zh_tw"])) - - author = User.find(b.create_user_id).member_profile.name rescue "" - - { - "id" => b.id.to_s, - "title" => b.title_translations, - "subtitle" => b.subtitle_translations, - "text" => text, - "postdate" => b.postdate, - "deadline" => b.deadline, - "category" => b.category.title_translations, - "tags" => ts, - "image" => image, - "links" => links, - "files" => files, - "author" => author, - "url" => "/#{I18n.locale.to_s + page.url}/#{b.to_param}" - } - - end - - # 計算總筆數 Start - if !params[:keyword].blank? - keyword = Regexp.new(".*"+params[:keyword]+".*") - custom_bulletin_count = CustomBulletin.any_of({:title=>keyword},{:subtitle=>keyword},{:text=>keyword}) - else - custom_bulletin_count = CustomBulletin.all - end - custom_bulletin_count = custom_bulletin_count.where(:is_preview.in=>[false,nil]) - custom_bulletin_count = custom_bulletin_count.where(:approved.ne => false , :rejected.ne => true) - custom_bulletin_count = custom_bulletin_count.where(:postdate.lt=>Time.now) - total_pages = custom_bulletin_count.count - # End - - render :json => { - "custom_bulletins" => custom_bulletins, - "custom_bulletins_count" => custom_bulletins.count, - "page_num" => page_num, - "total_pages" => total_pages, - }.to_json - end - - def smart_convertor(text) - html_string = text - links = html_string.scan(/img.*?src="(.*?)"/i) - links.each do |link| - l = link.first - new_link = nil - if l.starts_with?("/") - new_link = request.protocol + request.host_with_port + l - elsif l.starts_with?("..") - l1 = l.gsub("../","") - new_link = request.protocol + request.host_with_port + "/" + l1 - end - html_string = html_string.sub(l,new_link) if !new_link.nil? - end - return html_string - end - - protected - - def set_I18n - I18n.locale = params[:lang] if params[:lang].present? - end - -end diff --git a/custom_announcement/app/helpers/.keep b/custom_announcement/app/helpers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/helpers/admin/custom_announcements_helper.rb b/custom_announcement/app/helpers/admin/custom_announcements_helper.rb deleted file mode 100644 index b594b76..0000000 --- a/custom_announcement/app/helpers/admin/custom_announcements_helper.rb +++ /dev/null @@ -1,327 +0,0 @@ -require "net/http" -require "uri" -require 'json' - -module Admin::CustomAnnouncementsHelper - def back_end_breadcrumb - if params[:controller] == "admin/custom_announcements" - res = '' - divider = "/" - res << "
  • #{t(:dashboard_)}#{divider}
  • " - if params[:custom_module] - trans_name = I18n.t("module_name.#{params[:custom_module]}") - if trans_name.include?("translation missing") - trans_name = params[:custom_module] - end - res << "
  • #{trans_name}#{divider}
  • " - end - if params[:action] != "index" - if params[:custom_module] - extra_url = "/#{params[:custom_module]}#{params[:bind_uid].present? ? ('-'+params[:bind_uid]) : ''}" - end - res << "
  • #{t('module_name.'+@module_app.key)}#{divider}
  • " - res << "
  • #{t(params[:action], scope: 'restful_actions')}
  • " - else - res << "
  • #{t('module_name.'+@module_app.key)}
  • " - end - res.html_safe - else - super - end - end - def page_for_custom_bulletin(custom_bulletin) - ann_page = nil - pages = Page.where(:module=>'custom_announcement') - - pages.each do |page| - if page.categories.count ==1 - if page.categories.include?(custom_bulletin.category.id.to_s) - ann_page = page - end - end - break if !ann_page.nil? - end - - if ann_page.nil? - pages.each do |page| - if (page.categories.include?(custom_bulletin.category.id.to_s) rescue false) - ann_page = page - end - break if !ann_page.nil? - end - end - - ann_page = pages.first if ann_page.nil? - (ann_page.get_url+'/'+custom_bulletin.to_param).gsub('//','/') rescue "#" - end - - def import_this_custom_announcement(row,categories,tags) - value = {} - custom_anns = CustomBulletin.new - row.cells.each_with_index do |cell,index| - val = cell.value rescue nil - if [8,9,10,11,12,13,14,15].exclude?(index) - next if val.blank? - end - case index - when 0 - custom_anns.category = categories[val.to_i] - when 1 - new_tags = [] - if (val.include?(",") rescue false) - ts = val.split(",") - ts.each do |t| - new_tags << tags[t.to_i] - end - else - new_tags << tags[val.to_i] - end - custom_anns.tags=new_tags - when 2 - custom_anns.postdate = val - when 3 - custom_anns.deadline = val - when 4 - custom_anns.is_top = (val.to_i == 1 ? true : false) - when 5 - custom_anns.is_hot = (val.to_i == 1 ? true : false) - when 6 - custom_anns.is_hidden = (val.to_i == 1 ? true : false) - when 7 - custom_anns.remote_image_url = val - when 8 - value["en"] = val - when 9 - value["zh_tw"] = val - custom_anns.image_description_translations = value - value = {} - when 10 - value["en"] = val - when 11 - value["zh_tw"] = val - custom_anns.title_translations = value - value = {} - when 12 - value["en"] = val - when 13 - value["zh_tw"] = val - custom_anns.subtitle_translations = value - value = {} - when 14 - value["en"] = val - when 15 - value["zh_tw"] = val - custom_anns.text_translations = value - value = {} - when 16 - links = val.split(";") rescue [] - desc_en = row.cells[17].value.split(";") rescue [] - desc_zh_tw = row.cells[18].value.split(";") rescue [] - links.each_with_index do |link,i| - bl = CustomBulletinLink.new - bl.url = link.strip - bl.title_translations = {"en" => desc_en[i], "zh_tw" => desc_zh_tw[i]} - bl.custom_bulletin_id = custom_anns.id - bl.save - end - when 19 - files = val.split(";") rescue [] - desc_en = row.cells[20].value.split(";") rescue [] - desc_zh_tw = row.cells[21].value.split(";") rescue [] - alt_en = row.cells[22].value.split(";") rescue [] - alt_zh_tw = row.cells[23].value.split(";") rescue [] - files.each_with_index do |file, i| - bf = CustomBulletinFile.new - bf.remote_file_url = file.strip rescue nil - bf.title_translations = {"en" => (desc_en[i] rescue ""), "zh_tw" => (desc_zh_tw[i] rescue "")} - bf.description_translations = {"en" => (alt_en[i] rescue ""), "zh_tw" => (alt_zh_tw[i] rescue "")} - bf.custom_bulletin_id = custom_anns.id - bf.save - end - end - end - custom_anns.create_user_id = current_user.id.to_s - custom_anns.update_user_id = current_user.id.to_s - custom_anns.approved = true - custom_anns.save - end - - def send_rejection_email(custom_announcement,locale) - user = User.find(custom_announcement.create_user_id) rescue nil - if !user.nil? - email = user.member_profile.email - if !email.nil? && email != "" - url = "http://#{request.host_with_port}/admin/custom_announcements/#{custom_announcement.id}/edit" - datatosend = "

    Hello #{user.name},

    #{current_user.name} #{t("custom_announcement.rejected_annoucement")} : #{custom_announcement.rejection_reason} #{t("custom_announcement.click_here_to_see")}

    " - mail = Email.new(:mail_to => email, :mail_subject => "CustomAnnouncement rejected公告未通過 : #{custom_announcement.title_translations[locale]}.", :template => "email/custom_announcement_email.html.erb", :template_data => {"html" => datatosend}) - mail.save - mail.deliver rescue nil - end - end - end - - def send_notification_mail_to_managers(custom_announcement, type, locale) - users = [] - if @custom_announcement_setting.email_to.include?("managers") - authorizations = Authorization.where(:module_app_id => @module_app.id) - users = authorizations.collect do |auth| - auth.user - end - end - if @custom_announcement_setting.email_to.include?("admins") - wg = Workgroup.where(:key => "admin").first - admins = User.where(:workgroup_id => wg.id) - users.delete(nil) - users = users.concat(admins.to_a) - end - if @custom_announcement_setting.email_to.include?("approvers") - approvers = User.find(@custom_announcement_setting.approvers).to_a rescue [] - auths = Authorization.where(:category_id => custom_announcement.category_id).collect{|a| a.user} - users = users.concat(approvers & auths) - end - users.each do |user| - email = user.member_profile.email - if !email.nil? && email != "" - send_email(user.name, email, custom_announcement, type, locale) - # sleep(1) - end - end - end - - def send_email(name, useremail, custom_announcement, type, locale) - url = "http://#{request.host_with_port}/admin/custom_announcements?url=#{page_for_custom_bulletin(custom_announcement).sub("http://" + request.host_with_port, "")}&id=#{custom_announcement.id}" - - case type - when "approval" - datatosend = "

    #{t("custom_announcement.approval_mail_hi", :name => name)},

    #{t("custom_announcement.submitted_new_custom_announcement", :poster => current_user.name)}

    #{t("custom_announcement.approval_custom_announcement_title")} : #{custom_announcement.title_translations[locale]}
    #{t("custom_announcement.click_here_to_see")} : #{url}

    " - when "reapproval" - datatosend = "

    #{t("custom_announcement.approval_mail_hi", :name => name)},

    #{t("custom_announcement.updated_annoucement", :poster => current_user.name)}

    #{t("custom_announcement.approval_custom_announcement_title")} : #{custom_announcement.title_translations[locale]}
    #{t("custom_announcement.click_here_to_see")} : #{url}

    " - end - email = Email.new(:mail_to => useremail, :mail_subject => " #{t("custom_announcement.custom_announcement_subject")} : #{custom_announcement.title_translations[locale]}.", :template => "email/custom_announcement_email.html.erb", :template_data => {"html" => datatosend}) - email.save - email.deliver rescue nil - end - - def download_tmp_xml(url) - xml = File.join(Rails.root, "tmp", "ann_cc_ntu.xml") - open(xml, 'wb') do |fo| - fo.print open(url).read - end - end - - def import_from_tmp_xml(file) - xml = Nokogiri::XML(file) - return if xml.nil? - custom_announcements = [] - xml.xpath("//channel").xpath("//item").each do |custom_anns| - custom_announcements << { - :title => (custom_anns>"title").text, - :category => (custom_anns>"category").text, - :postdate => (custom_anns>"pubDate").text, - :text => (custom_anns>"description").text, - :rss2_sn => (custom_anns>"link").text.split("=").last - } - end - custom_announcements.each do |custom_anns| - ma = ModuleApp.where(:key => "custom_announcement").first - cat = Category.where(:title => custom_anns[:category]).first rescue nil - if cat.nil? - cat = Category.create(:title_translations => {"en" => custom_anns[:category], "zh_tw" => custom_anns[:category]}, :module_app_id => ma.id) - end - ann = CustomBulletin.where(:rss2_sn => custom_anns[:rss2_sn]).first rescue nil - if ann.nil? - ann = CustomBulletin.new(:title_translations => {"en" => "", "zh_tw" => custom_anns[:title]}, :postdate => custom_anns[:postdate], :subtitle_translations => {"en" => "", "zh_tw" => custom_anns[:title]}, :text_translations => {"en" => "", "zh_tw" => custom_anns[:text]}, :rss2_sn => custom_anns[:rss2_sn], :category_id => cat.id, :approved => true, :create_user_id => current_user.id) - else - ann.update_attributes(:title_translations => {"en" => "", "zh_tw" => custom_anns[:title]}, :postdate => custom_anns[:postdate], :subtitle_translations => {"en" => "", "zh_tw" => custom_anns[:title]}, :text_translations => {"en" => "", "zh_tw" => custom_anns[:text]}) - end - ann.save - end - File.delete(file) - end - - def import_from_wordpress(xmlfile) - xml_file = File.read(xmlfile) - doc = Nokogiri::XML.parse(xml_file) - - doc.xpath("//channel").each do|channel_data| - channel_data.xpath('//item').each do|itme| - - bu = CustomBulletin.where(:rss2_sn => itme.xpath('wp:post_id').text ).first rescue nil - if bu.nil? - bu = CustomBulletin.new - bu.approved = true - bu.rss2_sn = itme.xpath('wp:post_id').text - bu.title_translations = {"en" => itme.xpath('title').text, "zh_tw" => itme.xpath('title').text} - bu.text_translations = {"en" => itme.xpath('content:encoded').text, "zh_tw" => itme.xpath('content:encoded').text} - bu.postdate = itme.xpath('wp:post_date').text - - itme.xpath('category').each do |i_cate| - if i_cate["domain"].to_s == "category" - - cat = @module_app.categories.where(:title => i_cate.text.to_s).first rescue nil - if cat.nil? - cat = Category.new - cat.module_app = @module_app - cat.title_translations = {"en" => i_cate.text.to_s, "zh_tw" => i_cate.text.to_s} - cat.save - end - bu.category = cat - - elsif i_cate["domain"].to_s == "post_tag" - - tag = Tag.where(:name => i_cate.text.to_s ).first rescue nil - if tag.nil? - tag = Tag.new - tag.name_translations = {"en" => i_cate.text.to_s, "zh_tw" => i_cate.text.to_s} - tag.module_app_ids << @module_app.id - tag.save - end - - bu.tags = tag - end - end - - bu.save - end - - end - end - File.delete(xmlfile) - end - - def load_access_level - if (current_user.is_admin? rescue false) - @access_level = "admin" - elsif (current_user.is_manager?(@module_app) rescue false) - @access_level = "manager" - else - @access_level = "users" - end - end - - def user_can_approve?(custom_anns=nil) - can_approve = false - setting = CustomAnnouncementSetting.first - case @access_level - when "admin" - can_approve = true - when "manager" - can_approve = true - else - can_approve = false - end - if !can_approve - if !custom_anns.nil? - if setting.approvers.include?(current_user.id.to_s) - if (current_user.approved_categories_for_module(@module_app).include?(custom_anns.category) rescue false) - can_approve = true - end - end - else - can_approve = setting.approvers.include?(current_user.id.to_s) - end - end - can_approve - end - -end diff --git a/custom_announcement/app/helpers/custom_announcements_helper.rb b/custom_announcement/app/helpers/custom_announcements_helper.rb deleted file mode 100644 index ec8b8b6..0000000 --- a/custom_announcement/app/helpers/custom_announcements_helper.rb +++ /dev/null @@ -1,488 +0,0 @@ -module CustomAnnouncementsHelper - def self.complementaryColor(my_hex) - if my_hex[0] == '#' - my_hex = my_hex[1..-1] - end - rgb = my_hex.split(//).each_slice(my_hex.length/3).map{|v| v.join} - comp = rgb.map{|a| (255 - a.to_i(16)).to_s(16).rjust(2,'0')} - '#'+comp.join - end - def self.lighten_color(my_hex,percent) - if my_hex[0] == '#' - my_hex = my_hex[1..-1] - end - rgb = my_hex.split(//).each_slice(my_hex.length/3).map{|v| v.join} - comp = rgb.collect do |a| - tmp = a.to_i(16)*(1+percent/100.0) - tmp = 255 if tmp>255 - tmp = 0 if tmp < 0 - tmp.to_i.to_s(16).rjust(2,'0') - end - '#'+comp.join - end - def set_image_version_for_widget - subpart = OrbitHelper.get_current_widget - @image_version = 'thumb' - if subpart.methods.include? 'select_options'.to_sym - ModuleApp.all.select{|tmp| tmp.key.to_s=='custom_announcement'}.each do |modile_app| - @show_options = modile_app.show_options rescue nil - end - subpart.select_options.each do |select_option| - if !(@show_options.nil?) && select_option.field_name == @show_options.keys.first.to_s - value = YAML.load(select_option.value) - tmp = value[:en] - I18n.with_locale(:en) do - if tmp == t('custom_announcement.small_size') - @image_version = 'thumb' - elsif tmp == t('custom_announcement.medium_size') - @image_version = 'mobile' - elsif tmp == t('custom_announcement.orignal_size') - @image_version = 'orignal' - end - end - end - end - end - end - def data_to_human_type(a,set_tag_ids=nil) - statuses = a.statuses_with_classname.collect do |status| - { - "status" => status["name"], - "status-class" => "status-#{status['classname']}" - } - end - files = a.custom_bulletin_files.map{|file| { "file_url" => file.file.url, "file_title" => (file.title.blank? ? File.basename(file.file.path) : file.title rescue '') } if file.enabled_for?(locale) } rescue [] - files.delete(nil) - links = a.custom_bulletin_links.map{|link| { "link_url" => link.url, "link_title" => (link.title.blank? ? link.url : link.title) } } rescue [] - author = User.find(a.create_user_id).member_profile.name rescue "" - desc = a.image_description - desc = (desc.nil? || desc == "" ? "custom_announcement image" : desc) - link_to_show = (a.is_external_link? ? a.external_link : OrbitHelper.widget_item_url(a.to_param)) rescue "" - target = a.is_external_link ? "_blank" : "_self" - if @image_version == 'thumb' - image_url = a.image.thumb.url - elsif @image_version == 'mobile' - image_url = a.image.mobile.url - else - image_url = a.image.url - end - { - "custom_bulletin_links" => links, - "custom_bulletin_files" => files, - "title" => a.title, - "source-site" => "", - "source-site-title" => "", - "source-site-link" => "", - "subtitle" => a.subtitle, - "statuses" => statuses, - "category" => (a.category.title rescue ''), - "tag_ids" => (set_tag_ids.nil? ? (a.tag_ids.map{|id| id.to_s}.to_s.gsub('"',"'") rescue '[]') : set_tag_ids), - "postdate" => a.postdate, - "author" => author, - "link_to_show" => link_to_show, - "target" => target, - "img_src" => image_url || "/assets/custom_announcement-default.jpg", - "img_description" => desc - } - end - def get_feed_annc(type,site_source,locale) - ma_key = 'custom_announcement' - if type == "index" - categories = Array(OrbitHelper.page_categories) - elsif type == "widget" - categories = Array(OrbitHelper.widget_categories) - else - categories = [] - end - if categories.include?("all") - feeds = SiteFeedCustomAnnc.where(:channel_key => ma_key) - else - feeds = SiteFeedCustomAnnc.where(:channel_key => ma_key, :merge_with_category.in => categories) - end - if feeds.count > 0 - temp_ids = [] - data = feeds.collect do |feed| - feed.all_contents_for_feed(site_source,locale,type=='widget') - end.flatten.compact - else - data = [] - end - data - end - def get_feed_custom_announcements(type,site_source=nil) - locale = OrbitHelper.get_site_locale.to_s - if !(defined? SiteFeedCustomAnnc).nil? - fans = get_feed_annc(type,site_source,locale) - else - feed_custom_anns = OrbitHelper.get_feed_for_module(type) - fans = [] - feed_custom_anns.each do |fa| - next if !site_source.nil? && site_source != fa["source-site-title"] - status = { - "status" => "#{fa["source-site-title"]}", - "status-class" => "status-source" - } - - files = fa["custom_bulletin_files"].collect{|bf| { "file_url" => bf["url"], "file_title" => (fa["title_translations"][locale].blank? ? File.basename(fa["url"]) : fa["title_translations"][locale] rescue '') }} rescue [] - links = fa["custom_bulletin_links"].map{|link| { "link_url" => link["url"], "link_title" => (link["title_translations"][locale].blank? ? link["url"] : link["title_translations"][locale]) } } rescue [] - - x = { - "custom_bulletin_links" => links, - "custom_bulletin_files" => files, - "custom_bulletin_carousel_images" => fa["custom_bulletin_carousel_images"].to_a, - "title" => fa["title_translations"][locale], - "subtitle" => fa["subtitle_translations"][locale], - "statuses" => [status], - "category" => fa["category"], - "postdate" => fa["postdate"], - "author" => fa["author"], - "source-site" => "#{fa["source-site-title"]}", - "source-site-title" => fa["source-site-title"], - "source-site-link" => fa["source-site"], - "link_to_show" => OrbitHelper.url_to_show(fa["params"]), - "target" => "_self", - "img_src" => fa["image"]["thumb"] || "/assets/custom_announcement-default.jpg", - "img_description" => fa["image_description_translations"][locale], - "more" => t(:more_plus), - "view_count" => "" - } - if (!x["title"].empty? rescue false) - fans << x - end - end - end - fans - end - def filter_by_keywords(sorted,keywords,stime,etime) - kflag = keywords.blank? - sflag = stime.blank? - eflag = etime.blank? - stime = stime.to_s.split('/') - stime = Time.zone.local(*stime) rescue nil - etime = etime.to_s.split('/') - etime = Time.zone.local(*etime) rescue nil - if !kflag || !sflag || !eflag - sorted.select{|custom_anns| - if kflag - flag = true - else - if custom_anns["source-site"].present? - title = Nokogiri::HTML(custom_anns["title"].to_s).text - else - title = Nokogiri::HTML(custom_anns.title.to_s).text - end - flag = title.include?(keywords.to_s) - end - if sflag && !eflag - flag = flag && (custom_anns.postdate<=etime) - elsif !sflag && eflag - flag = flag && (custom_anns.postdate>=stime) - elsif !sflag && !eflag - flag = flag && (custom_anns.postdate>=stime) && (custom_anns.postdate<=etime) - end - flag - } - else - sorted - end - end - def get_sorted_annc(data_count=nil) - params = OrbitHelper.params - locale = OrbitHelper.get_site_locale.to_s - page_number = OrbitHelper.page_number.to_i - page = OrbitHelper.page rescue nil - unless page - page = Page.where(url:params['url']).first - end - page_number = 1 if page_number == 0 - page_data_count = data_count || OrbitHelper.page_data_count.to_i - feeds_custom_anns = [] - custom_data_field = page.custom_data_field rescue nil - if custom_data_field.nil? - custom_data_field = {} - elsif custom_data_field["bind_module_app"] - custom_data_field["custom_module"] = custom_data_field["bind_module_app"] - custom_data_field.delete('bind_module_app') - end - if @type == "show_widget" - tags = @tags - categories = @categories - else - tags = page.tags - tags = params[:tags] if params[:tags].present? - categories = params['category']=='all' ? (page.categories || []) : (Array(params['category']) rescue (page.categories || [])) - if params['category'].present? - tags = ["all"] - end - end - if !params["source"].present? - if @type == "show_widget" - if params[:uids].blank? - custom_announcements = CustomBulletin.where(:title.nin => ["",nil],:is_preview.in=>[false,nil]).where(custom_data_field) - .can_display_and_sorted.is_approved - .filter_by_categories(categories,false).filter_by_tags(tags).to_a - else - member_prfile = MemberProfile.any_in(:uid=>params[:uids]) - user_ids = member_prfile.map{|m| m.user.id rescue nil}.select{|id| !id.nil?} - custom_announcements = CustomBulletin.where(:title.nin => ["",nil],:is_preview.in=>[false,nil],:create_user_id.in=>user_ids).where(custom_data_field) - .can_display_and_sorted.is_approved - .filter_by_categories(categories,false).filter_by_tags(tags).to_a - end - else - custom_announcements = CustomBulletin.where(:title.nin => ["",nil],:is_preview.in=>[false,nil]).where(custom_data_field) - .can_display_and_sorted.is_approved - .filter_by_categories(categories,false).filter_by_tags(tags).to_a - end - if !(defined? SiteFeed).nil? - if @type != "show_widget" - feeds_custom_anns = get_feed_custom_announcements("index") - else - feeds_custom_anns = [] - end - end - else - custom_announcements = [] - if @type != "show_widget" - feeds_custom_anns = get_feed_custom_announcements("index",params["source"]) - else - feeds_custom_anns = [] - end - end - if !feeds_custom_anns.blank? - if custom_announcements.count != 0 - top_custom_anns = custom_announcements.select{|v| v.is_top} + feeds_custom_anns.select{|v| v['is_top']} - rest_all_custom_anns = feeds_custom_anns.select{|v| v['is_top'] != true} + custom_announcements.select{|v| !v.is_top} - rest_custom_anns = rest_all_custom_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} - all_sorted = top_custom_anns.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + rest_custom_anns - else - all_sorted = feeds_custom_anns.select{|v| v['is_top']}.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} + feeds_custom_anns.select{|v| v['is_top'] != true}.sort{|v1,v2| v2["postdate"]<=>v1["postdate"]} - end - all_filter = filter_by_keywords(all_sorted,params[:keywords],params[:stime],params[:etime]) - else - all_filter = filter_by_keywords(custom_announcements,params[:keywords],params[:stime],params[:etime]) - end - if page_data_count != 0 - sorted = all_filter[(page_number-1)*page_data_count...page_number*page_data_count] - else - sorted = all_filter - end - annc_count = all_filter.count - total_pages = page_data_count == 0 ? 1 : (annc_count.to_f / page_data_count).ceil - [sorted,total_pages] - end - def render_view_for_annc(overridehtml=nil) - @key = Site.first.template - def render_link_to_edit(html, url_to_edit) - if html.scan("{{link_to_edit}}").length == 0 - html = url_to_edit.blank? ? html : html + "

    #{t(:edit)}

    " - else - html = url_to_edit.blank? ? html.gsub("{{link_to_edit}}","") : html.gsub("{{link_to_edit}}","

    #{t(:edit)}

    ") - end - return html - end - - def parsing_repeats_again(elements,d,level) - newhtml = [] - oldhtml = [] - elements.each do |el| - html_to_render = "" - data_name = el.attr("data-list") - wrap_elements = el.css("*[data-list][data-level='#{level}']") - if d[data_name] - d[data_name].each_with_index do |item,i| - element = el.inner_html - if wrap_elements.count > 0 - htmls = parsing_repeats_again(wrap_elements,d[data_name][i], level + 1) - htmls[0].each_with_index do |html,i| - element = element.gsub(html,htmls[1][i]) - end - end - item.each do |key,value| - if !value.kind_of?(Array) - value = value.nil? ? "" : value - element = element.gsub("{{#{key}}}",value.to_s.html_safe) - element = element.gsub("%7B%7B#{key}%7D%7D",value.to_s.html_safe) - element = render_link_to_edit(element, value) if key.eql?("url_to_edit") - end - end - html_to_render = html_to_render + element - end - temp = el.to_s - oldhtml << temp - temp = temp.gsub(el.inner_html, html_to_render) - newhtml << temp - end - end - [oldhtml,newhtml] - end - - - if @target_action == "index" - filename = overridehtml.nil? ? params[:layout_type] : overridehtml - f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', 'custom_announcement', "#{filename}.html.erb") - if !File.exists?f - f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', 'custom_announcement', "index.html.erb") - if !File.exists?f - return "
    Maybe the administrator has changed the theme, please select the index page design again from the page settings.
    ".html_safe - end - end - file = File.open(f) - doc = Nokogiri::HTML(file, nil, "UTF-8") - file.close - controller = CustomAnnouncementsController.new - begin - data = @data# rescue nil - rescue Exception => e - write_debug_file(e,'custom_announcements',@target_action) if Site::DEBUG - end - if !data.nil? - wrap_elements = doc.css("*[data-list][data-level='0']") - htmls = parsing_repeats_again(wrap_elements,data,1) - html = doc.to_s - htmls[0].each_with_index do |h,i| - html = html.gsub(h,htmls[1][i]) - end - extras = data["extras"] || {} - extras["page-title"] = Page.find_by(:page_id => params[:page_id]).name rescue "" if !extras["page-title"] - extras.each do |key,value| - value = value.nil? ? "" : value - html = html.gsub("{{#{key}}}",value.to_s.html_safe) - html = html.gsub("%7B%7B#{key}%7D%7D",value.to_s.html_safe) - end - total_pages = data['total_pages'].to_i rescue 1 - if total_pages > 1 - html = html.gsub("{{pagination_goes_here}}",create_pagination(total_pages)) - else - html = html.gsub("{{pagination_goes_here}}",""); - end - html.html_safe - else - return "
    No content to show.
    ".html_safe - end - else - filename = overridehtml.nil? ? @target_action : overridehtml - f = File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', 'custom_announcement', "#{filename}.html.erb") - if File.exists?f - file = File.open(f) - doc = Nokogiri::HTML(file, nil, "UTF-8") - file.close - controller = CustomAnnouncementsController.new - begin - data = @data# rescue nil - rescue Exception => e - write_debug_file(e,'custom_announcements',@target_action) if Site::DEBUG - end - if data.nil? - return "
    No content to show.
    ".html_safe - end - - if data.blank? || data.empty? - file = File.open("#{Rails.root}/app/views/errors/404.html") - doc = Nokogiri::HTML(file, nil, "UTF-8") - file.close - doc.to_html.html_safe - else - unless data['impressionist'].blank? - Thread.new do - impression = data['impressionist'].impressions.create - impression.user_id = request.session['user_id'] - impression.controller_name = 'custom_announcements' - impression.action_name = @target_action - impression.ip_address = request.remote_ip - impression.session_hash = request.session.id - impression.request_hash = @impressionist_hash - impression.referrer = request.referrer - impression.save - end - data['impressionist'].inc(view_count: 1) - data["data"]["view_count"] = data["impressionist"].view_count if data["data"].present? - end - wrap_elements = doc.css("*[data-list][data-level='0']") - if wrap_elements.count == 0 - wrap_element_html = doc.to_s - el = wrap_element_html - data.each do |key,value| - next if key.eql? 'impressionist' - value = value.nil? ? "" : value - el = el.gsub("{{#{key}}}",value.to_s.html_safe) - el = el.gsub("%7B%7B#{key}%7D%7D",value.to_s.html_safe) - end - el.html_safe - else - keys = data.keys - not_array_key = nil - data.keys.each do |key| - not_array_key = key if data["#{key}"].kind_of?(Hash) - end - htmls = parsing_repeats_again(wrap_elements,data,1) - html = doc.to_s - htmls[0].each_with_index do |h,i| - html = html.gsub(h,htmls[1][i]) - end - extras = data["#{not_array_key}"] || {} - extras.each do |key,value| - next if key.eql? 'impressionist' - value = value.nil? ? "" : value - html = html.gsub("{{#{key}}}",value.to_s) - html = html.gsub("%7B%7B#{key}%7D%7D",value.to_s) - end - html = render_link_to_edit(html, data["url_to_edit"]) if !data["url_to_edit"].nil? - total_pages = data['total_pages'].to_i rescue 1 - if @show_page == "false" - html = html.gsub("{{pagination_goes_here}}","") - else - if total_pages > 1 - html = html.gsub("{{pagination_goes_here}}",create_pagination(total_pages)) - else - html = html.gsub("{{pagination_goes_here}}","") - end - end - html = Nokogiri::HTML.parse(html) - html.css('.i-annc__page-title').remove - dates = html.css("*[date-format]") - if !dates.blank? - dates.each do |d| - begin - format = d.attributes["date-format"].value - date = DateTime.parse(d.inner_text) - d.inner_html = d.inner_html.gsub(d.inner_text.strip, " " + date.strftime(format)) - rescue - next - end - end - end - html.css("body")[0].inner_html = html.css("body")[0].inner_html.gsub("{{page-title}}","") - html.css("body").to_html.html_safe - end - end - else - return "
    There is a problem with the design. We will try to fix it as soon as possible. Sorry for the inconvenience!! :(
    ".html_safe - end - end - end - def get_layouts(module_app) - layout_types = [] - @key = Site.first.template - f = File.join("#{Rails.root}/app/templates/#{@key}/modules/#{module_app}/info.json") - if File.exists?f - info = File.read(f) - hash = JSON.parse(info) rescue {} - frontends = hash["frontend"] || [] - frontends.each do |frontend| - frontend["thumbnail"] = "/assets/#{module_app}/thumbs/#{frontend["thumbnail"]}" - layout_types << frontend - end - end - if layout_types.empty? - Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_app}/*").each do |w| - next if File.ftype(w).eql?("directory") - w = File.basename(w, ".*") - w = File.basename(w, ".*") - if w[0,1] != "_" && w[0,1] != "s" && w != "info" - layout_types << w - end - end - end - layout_types - end -end diff --git a/custom_announcement/app/mailers/.keep b/custom_announcement/app/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/models/.keep b/custom_announcement/app/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/models/custom_announcement_setting.rb b/custom_announcement/app/models/custom_announcement_setting.rb deleted file mode 100644 index 2d206c2..0000000 --- a/custom_announcement/app/models/custom_announcement_setting.rb +++ /dev/null @@ -1,26 +0,0 @@ -class CustomAnnouncementSetting - include Mongoid::Document - include Mongoid::Timestamps - - field :top_limit, type: Integer, :default => 0 - field :pro_enabled, type: Boolean, :default => false - field :approvers, type: Array, :default => [] - field :email_to, type: Array, :default => ["admins","managers","approvers"] - field :is_display_edit_only, type: Boolean, :default => false - field :only_manager_can_edit_status, type: Boolean, :default => false - field :top_text , type: String , localize: true - field :hot_text , type: String , localize: true - field :hidden_text , type: String , localize: true - has_many :custom_anns_status_settings, :autosave => true, :dependent => :destroy - accepts_nested_attributes_for :custom_anns_status_settings, :allow_destroy => true - def self.check_limit_for_user(user_id, b_id = nil) - limit = self.first.top_limit rescue 0 - return true if limit == 0 - count = CustomBulletin.where(:is_top => true, :create_user_id => user_id, :id.ne => b_id).count - return count < limit - end - - def self.is_pro? - self.first.pro_enabled rescue false - end -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_anns_cache.rb b/custom_announcement/app/models/custom_anns_cache.rb deleted file mode 100644 index 40fc6cf..0000000 --- a/custom_announcement/app/models/custom_anns_cache.rb +++ /dev/null @@ -1,6 +0,0 @@ -class CustomAnnsCache - include Mongoid::Document - field :parent_id - field :filter_result - field :locale,type: String,default: 'zh_tw' -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_anns_status_setting.rb b/custom_announcement/app/models/custom_anns_status_setting.rb deleted file mode 100644 index 6089ee9..0000000 --- a/custom_announcement/app/models/custom_anns_status_setting.rb +++ /dev/null @@ -1,7 +0,0 @@ -class CustomAnnsStatusSetting - include Mongoid::Document - field :role_id - field :status - field :top_limit - belongs_to :custom_announcement_setting -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_bulletin.rb b/custom_announcement/app/models/custom_bulletin.rb deleted file mode 100644 index 953490b..0000000 --- a/custom_announcement/app/models/custom_bulletin.rb +++ /dev/null @@ -1,246 +0,0 @@ -class CustomBulletin - include Mongoid::Document - include Mongoid::Timestamps - - include OrbitModel::Status - include OrbitModel::Impression - # encoding: utf-8 - include OrbitTag::Taggable - include OrbitCategory::Categorizable - include Slug - require 'custom_bulletin_model/cache' - include ::CustomBulletinModel::Cache - attr_accessor :org_tag_ids - def tags=(ids) - self.org_tag_ids = self.tag_ids - super(ids) - end - def []=(index,value) - if index.to_s=='tags' - self.org_tag_ids = self.tag_ids - end - super(index,value) - end - SubPart.class_eval { include CustomBulletinModel::Cache } - Page.class_eval { include CustomBulletinModel::Cache } - before_destroy do - CustomAnnsCache.all.destroy - end - field :custom_module - field :bind_uid - field :image_display_class, type: String, default: "full-size-img" #3 choices: full-size-img , pull-left , pull-right - field :add_to_calendar,type: Boolean,default: false - field :calendar_start_date, :type => DateTime - field :calendar_end_date, :type => DateTime - field :calendar_all_day,type: Boolean,default: false - field :calendar_type_id - field :event_id - field :page_id - field :title, type: String, localize: true - field :subtitle, localize: true - field :text, localize: true - field :create_user_id - field :update_user_id - field :public, :type => Boolean, :default => true - field :postdate , :type => DateTime, :default => Time.now - field :deadline , :type => DateTime - field :rss2_sn - field :approved, :type => Boolean, :default => false - field :is_preview, :type => Boolean, :default => false - field :expirable_created_at, type: DateTime - field :rejected, :type => Boolean, :default => false - field :reapproval, :type => Boolean, :default => false - field :rejection_reason - field :is_external_link, :type => Boolean, :default => false - field :external_link - field :display_subtitle, :type => Boolean, :default => false - field :display_img, :type => Boolean, :default => false - - field :email_id - field :email_sent, :type => Boolean, :default => false - field :email_sentdate , :type => DateTime - field :email_member_ids - field :other_mailaddress - field :image_description, localize: true - field :top_end_date, :type => DateTime - field :open_comment, :type => Boolean, :default => false - field :comment_end_time, :type => DateTime - field :comment_role, :type => Array, :default => [] - - mount_uploader :image, ImageUploader - - has_many :custom_bulletin_links, :autosave => true, :dependent => :destroy - has_many :custom_bulletin_files, :autosave => true, :dependent => :destroy - has_many :custom_bulletin_comments, :autosave => true, :dependent => :destroy - has_many :custom_bulletin_carousel_images, :autosave => true, :dependent => :destroy - accepts_nested_attributes_for :custom_bulletin_files, :allow_destroy => true - accepts_nested_attributes_for :custom_bulletin_links, :allow_destroy => true - accepts_nested_attributes_for :custom_bulletin_carousel_images, :allow_destroy => true - - before_destroy :destroy_email - - scope :can_display_and_sorted, ->{where(:is_hidden=>false,:is_preview => false).any_of({:postdate.lte=>Time.now, :deadline.gte=>Time.now},{:postdate.lte=>Time.now, :deadline=>nil},{:postdate=>nil}).order(is_top: :desc,postdate: :desc,id: :desc)} - scope :is_approved, ->{where(:approved => true)} - - before_create :set_expire - before_save :check_limit - - after_create do - custom_record_callback(1) - end - after_destroy do - custom_record_callback(-1) - end - def custom_record_callback(num) - if self.custom_module && self.bind_uid.present? - custom_bulletin_config = CustomBulletinConfig.where(:module=>self.custom_module).first - if custom_bulletin_config && custom_bulletin_config.custom_record_callback.present? && custom_bulletin_config.bind_model.present? - target_model = custom_bulletin_config.bind_model.constantize rescue nil - if target_model - target_record = target_model.where(custom_bulletin_config.uid_field=>self.bind_uid).first - target_record.send(custom_bulletin_config.custom_record_callback,num) if target_record - end - end - end - end - def to_calendar_param - self.to_param - end - def calendar_type - CalendarType.where(:category_id.in => self.calendar_type_id) - end - def event - if !self.event_id.nil? - Event.where(:id => self.event_id).first - else - nil - end - end - def check_limit - check_status_limit(update_user) - end - def check_status_limit(user,check_only=false) - role_ids = user.member_profile.roles.map(&:id) rescue [] - status_settings = (role_ids.collect do |role_id| - CustomAnnouncementSetting.first.custom_anns_status_settings.select{|v| v.role_id.to_s == role_id.to_s} - end.flatten rescue []) - reach_limit = [] - if status_settings.count != 0 - reach_limit = status_settings.collect do |status_setting| - status = status_setting.status - if status_setting.top_limit.to_i <= CustomBulletin.where(:update_user_id.in => Role.find(status_setting.role_id).member_profiles.collect(&:user).flatten.uniq.map{|v| v.id},status => true).count - if !check_only - if self[status] && !CustomBulletin.where(id:self.id).first[status] - self[status] = false - nil - end - else - status - end - else - nil - end - end.compact - reach_limit = reach_limit.group_by{|v| v}.collect do |k,v| - if v.count >= user.member_profile.roles.count - k - else - nil - end - end.compact - end - reach_limit - end - def slug_title - doc = Nokogiri::HTML(self.title) - title = doc.text.gsub('/','-') - end - def set_expire - self.expirable_created_at = Time.now if self.is_preview - return true - end - - def update_user - User.find(update_user_id) rescue nil - end - - def update_user=(user) - self.update_user_id = user.id - end - - def email_members - MemberProfile.find(self.email_member_ids) rescue [] - end - - def email_addresses - addresses = self.email_members.collect{|member| member.email} rescue [] - addresses = addresses +[self.other_mailaddress] if !self.other_mailaddress.blank? - addresses.flatten - end - - def email - mail = Email.find(self.email_id) rescue nil - end - - def expired? - (self.deadline < Time.now) rescue false - end - - def destroy_email - mail = Email.find(self.email_id) rescue nil - mail.destroy if !mail.nil? - end - - def self.remove_expired_status - self.where(:is_top => true, :top_end_date.ne => nil, :top_end_date.lt => Time.now).each do |b| - b.is_top = false - b.top_end_date = nil - b.save - end - end - - def display_subtitle? - self.display_subtitle rescue false - end - - def display_img? - self.display_img rescue false - end - def comments - self.custom_bulletin_comments.select{|v| !v.is_hidden} - end - def open_comment_for_user(user) - role_ids = user.member_profile.roles.collect{|v| v.id.to_s} rescue ['visitor'] - self.open_comment && (self.comment_end_time.blank? || self.comment_end_time > Time.now) && (self.comment_role.any?{|v| role_ids.include?(v)} || self.comment_role.include?('visitor') || (self.comment_role.include?('all_member') && role_ids[0] != 'visitor')) - end - def statuses - statuses = [] - statuses << top_text if is_top? - statuses << hot_text if is_hot? - statuses << hidden_text if is_hidden? - statuses - end - def statuses_with_classname - statuses = [] - statuses << {"name" => top_text, "classname" => "top"} if is_top? - statuses << {"name" => hot_text, "classname" => "hot"} if is_hot? - statuses << {"name" => hidden_text, "classname" => "hidden"} if is_hidden? - statuses - end - def status_for_table - status = "" - status << "#{top_text} " if self.is_top - status << "#{hot_text} " if self.is_hot - status << "#{hidden_text}"if self.is_hidden - status.html_safe - end - def top_text - I18n.t("custom_announcement.status.top") - end - def hot_text - I18n.t("custom_announcement.status.hot") - end - def hidden_text - I18n.t("custom_announcement.status.hidden") - end -end diff --git a/custom_announcement/app/models/custom_bulletin_carousel_image.rb b/custom_announcement/app/models/custom_bulletin_carousel_image.rb deleted file mode 100644 index 611be68..0000000 --- a/custom_announcement/app/models/custom_bulletin_carousel_image.rb +++ /dev/null @@ -1,15 +0,0 @@ -# encoding: utf-8 -class CustomBulletinCarouselImage - - include Mongoid::Document - include Mongoid::Timestamps - - mount_uploader :file, AssetUploader - - field :description, localize: true - - belongs_to :custom_bulletin - def description_text - Nokogiri::HTML(self.description.to_s).css("body").text() rescue "" - end -end diff --git a/custom_announcement/app/models/custom_bulletin_comment.rb b/custom_announcement/app/models/custom_bulletin_comment.rb deleted file mode 100644 index 2068e04..0000000 --- a/custom_announcement/app/models/custom_bulletin_comment.rb +++ /dev/null @@ -1,21 +0,0 @@ -# encoding: utf-8 -class CustomBulletinComment - include Mongoid::Document - include Mongoid::Timestamps - - field :ip - field :comment - field :account_id - field :is_hidden,type: Boolean,default: false - def time - self.created_at.strftime('%Y/%m/%d %H:%M') - end - def account - tmp = MemberProfile.where(:id => self.account_id).collect{|v| v.name}.join - tmp.blank? ? I18n.t('custom_announcement_visitor') : tmp - end - def roles - MemberProfile.where(:id => self.account_id).collect{|v| v.roles}.flatten - end - belongs_to :custom_bulletin -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_bulletin_config.rb b/custom_announcement/app/models/custom_bulletin_config.rb deleted file mode 100644 index cc34327..0000000 --- a/custom_announcement/app/models/custom_bulletin_config.rb +++ /dev/null @@ -1,10 +0,0 @@ -class CustomBulletinConfig - include Mongoid::Document - include Mongoid::Timestamps - field :module - field :bind_model , :type => String - field :title_field , :type => String , :default => "slug_title" - field :uid_field , :type => String , :default => "uid" - field :custom_record_callback #if exists, it will call 'custom_record_callback(num)' - #where num is 1 when create bulletin, num is -1 when destroy. -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_bulletin_feed.rb b/custom_announcement/app/models/custom_bulletin_feed.rb deleted file mode 100644 index 3ecfc46..0000000 --- a/custom_announcement/app/models/custom_bulletin_feed.rb +++ /dev/null @@ -1,11 +0,0 @@ -class CustomBulletinFeed - include Mongoid::Document - include Mongoid::Timestamps - include Slug - - field :title, as: :slug_title, type: String, localize: true - field :tag_ids, type: Array, default: [] - before_save do - CustomBulletinFeedCache.where(uid: self.uid).destroy - end -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_bulletin_feed_cache.rb b/custom_announcement/app/models/custom_bulletin_feed_cache.rb deleted file mode 100644 index e59135e..0000000 --- a/custom_announcement/app/models/custom_bulletin_feed_cache.rb +++ /dev/null @@ -1,8 +0,0 @@ -class CustomBulletinFeedCache - include Mongoid::Document - include Mongoid::Timestamps - - field :content, type: String, default: '' - field :uid - -end \ No newline at end of file diff --git a/custom_announcement/app/models/custom_bulletin_file.rb b/custom_announcement/app/models/custom_bulletin_file.rb deleted file mode 100644 index 4855c7e..0000000 --- a/custom_announcement/app/models/custom_bulletin_file.rb +++ /dev/null @@ -1,38 +0,0 @@ -# encoding: utf-8 -class CustomBulletinFile - - include Mongoid::Document - include Mongoid::Timestamps - - mount_uploader :file, AssetUploader - - field :description, localize: true - field :title, localize: true - field :choose_lang, :type => Array, :default => ["en","zh_tw"] - field :privacy_type, type: String, default: 'public' - belongs_to :custom_bulletin - - def file_title - if self.description.present? - return self.description - elsif self.title.present? - return self.title - else - return File.basename(self.file.path) - end - end - def enabled_for?(lang) - if lang.nil? - return true - else - return self.choose_lang.include?(lang) - end - end - def can_access?(user) - if user.nil? && self.privacy_type == 'logged_in' - return false - else - return true - end - end -end diff --git a/custom_announcement/app/models/custom_bulletin_link.rb b/custom_announcement/app/models/custom_bulletin_link.rb deleted file mode 100644 index b341cf4..0000000 --- a/custom_announcement/app/models/custom_bulletin_link.rb +++ /dev/null @@ -1,25 +0,0 @@ -# encoding: utf-8 -require 'uri' - -class CustomBulletinLink - include Mongoid::Document - include Mongoid::Timestamps - - field :url - field :title, localize: true - - belongs_to :custom_bulletin - - before_validation :add_http - - #validates :url, :presence => true, :format => /\A(http|https):\/\/(([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5})|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(:[0-9]{1,5})?(\/.*)?\Z/i - - protected - - def add_http - unless self.url[/^http:\/\//] || self.url[/^https:\/\//] - self.url = 'http://' + self.url - end - end - -end \ No newline at end of file diff --git a/custom_announcement/app/views/.keep b/custom_announcement/app/views/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/app/views/admin/custom_announcements/_approval_modal.html.erb b/custom_announcement/app/views/admin/custom_announcements/_approval_modal.html.erb deleted file mode 100644 index ddefde4..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_approval_modal.html.erb +++ /dev/null @@ -1,122 +0,0 @@ - - \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_comment.html.erb b/custom_announcement/app/views/admin/custom_announcements/_comment.html.erb deleted file mode 100644 index 008fd92..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_comment.html.erb +++ /dev/null @@ -1,25 +0,0 @@ - - - - <% @table_feed_fields.each do |f| %> - <%= thead(f) %> - <% end %> - - - - <% @comments.each do |comment| %> - - - - - - - - <% end %> - -
    <%= comment.time %><%= comment.comment.html_safe %> - <%= comment.account %> - <% comment.roles.each do |role| %> - <%= role.title rescue '' %> - <% end %> - <%= comment.ip %><%= button_tag (comment.is_hidden ? t('show') : t('is_hidden')), type: 'button',"data-href" => "/#{I18n.locale}/admin/annc-comment-hidden/#{comment.id}",:onclick => "update_status(this)" ,class: (comment.is_hidden ? 'btn btn-primary' : 'btn btn-info') %>
    \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_edit_feed_form.html.erb b/custom_announcement/app/views/admin/custom_announcements/_edit_feed_form.html.erb deleted file mode 100644 index 03eecc9..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_edit_feed_form.html.erb +++ /dev/null @@ -1,38 +0,0 @@ -<%= form_for @custom_announcement_feed, url: admin_custom_announcement_updatefeed_path(:id => @custom_announcement_feed.id), html: {class: "form-horizontal main-forms"} do |f| %> -
    - <% @site_in_use_locales.each do |locale| %> - <%= f.fields_for :title_translations do |f| %> -
    - -
    - <%= f.text_field locale, data: {"fv-validation" => "required;","fv-messages" => "Cannot be empty.;"}, value: (@custom_announcement_feed.title_translations[locale.to_s] rescue nil) %> -
    -
    - <% end %> - <% end %> -
    -
    -
    - -
    -
    -
    -<% end %> - - \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_feed.html.erb b/custom_announcement/app/views/admin/custom_announcements/_feed.html.erb deleted file mode 100644 index 37ee357..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_feed.html.erb +++ /dev/null @@ -1,51 +0,0 @@ - - - <%= feed.title %> -
    - -
    - - -
    -
    - -
    -
    - - - RSS Feed - - - JSON Feed - - \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_feed_form.html.erb b/custom_announcement/app/views/admin/custom_announcements/_feed_form.html.erb deleted file mode 100644 index 76967be..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_feed_form.html.erb +++ /dev/null @@ -1,38 +0,0 @@ -<%= form_for @custom_announcement_feed, url: admin_custom_announcement_createfeed_path, html: {class: "form-horizontal main-forms"} do |f| %> -
    - <% @site_in_use_locales.each do |locale| %> - <%= f.fields_for :title_translations do |f| %> -
    - -
    - <%= f.text_field locale, data: {"fv-validation" => "required;","fv-messages" => "Cannot be empty.;"}, value: (@custom_announcement_feed.title_translations[locale.to_s] rescue nil) %> -
    -
    - <% end %> - <% end %> -
    - -
    -<% end %> - - \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_form.html.erb b/custom_announcement/app/views/admin/custom_announcements/_form.html.erb deleted file mode 100644 index 44fb021..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_form.html.erb +++ /dev/null @@ -1,705 +0,0 @@ -<% content_for :page_specific_css do %> - <%= stylesheet_link_tag "lib/main-forms" %> - <%= stylesheet_link_tag "lib/fileupload" %> - <%= stylesheet_link_tag "lib/main-list" %> -<% end %> - -<% content_for :page_specific_javascript do %> - <%= javascript_include_tag "lib/bootstrap-fileupload" %> - <%= javascript_include_tag "lib/bootstrap-datetimepicker" %> - <%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %> - <%= javascript_include_tag "lib/file-type" %> - <%= javascript_include_tag "lib/module-area" %> - <%= javascript_include_tag "form" %> -<% end %> - - -
    - - - - - -
    - - -
    - - -
    - -
    - <%= select_category(f, @module_app) %> -
    -
    - - -
    - -
    - <%= f.datetime_picker :postdate, :no_label => true, :new_record => @custom_bulletin.new_record?, :data=>{"picker-type" => "range", "range" => "start"} %> -
    -
    - -
    - -
    - <%= f.datetime_picker :deadline, :no_label => true, :new_record => @custom_bulletin.new_record?, :data=>{"picker-type" => "range", "range" => "end"} %> -
    -
    - -
    - <%= f.label :is_external_link, t("custom_announcement.is_external_link"), :class => "control-label muted" %> -
    - <%= f.check_box :is_external_link %> -
    -
    - - - - -
    - <%= f.label :display_subtitle, t("custom_announcement.display_subtitle"), :class => "control-label muted" %> -
    - <%= f.check_box :display_subtitle %> -
    -
    - - -
    - <%= f.label :display_img, t("custom_announcement.display_img"), :class => "control-label muted" %> -
    - <%= f.check_box :display_img %> -
    -
    - - - <% image_display_class_relation = {"full_width"=>"full-size-img","up_left_corner"=>"pull-left","up_right_corner"=>"pull-right"} %> -
    - <%= f.label :image_display_class, t("custom_announcement.cover_image_display_setting"), :class => "control-label muted" %> -
    - <% image_display_class_relation.each.with_index do |(key,value),i| %> - - <% end %> -
    -
    -
    - - - <% if defined? Calendar %> -
    -
    - -
    - <%= f.check_box :add_to_calendar,onchange: 'trigger_on_add_calendar(this)' %> -
    -
    -
    > -
    - -
    - <%= f.select :calendar_type_id, @calendar_categories.collect{|t| [ t.title, t.id ]} %> -
    -
    -
    -
    - - -
    -
    - <%= f.datetime_picker :calendar_start_date, :new_record => @custom_bulletin.new_record?, :no_label => true, :data=>{"picker-type" => "range", "range" => "start"} %> -
    -
    -
    -
    - - -
    -
    - <%= f.datetime_picker :calendar_end_date, :new_record => @custom_bulletin.new_record?, :no_label => true, :data=>{"picker-type" => "range", "range" => "end"} %> -
    -
    -
    - -
    - <%= f.check_box :calendar_all_day %> -
    -
    -
    - -
    - <%= f.select :page_id,[["----- Select a page -----",nil]]+@module_pages %> -
    -
    -
    - <%= f.hidden_field :event_id %> -
    - <% end %> - - <% if((!CustomAnnouncementSetting.first.only_manager_can_edit_status) || (CustomAnnouncementSetting.first.only_manager_can_edit_status && (@current_user.is_admin? || @current_user.is_manager?(@module_app))) ) %> -
    - -
    - -
    - <% if !(@reach_limit.include?('is_top') && @custom_bulletin.is_top != true) || current_user.is_admin? %> - - <% else %> - - <% end %> - <% if !(@reach_limit.include?('is_hot') && @custom_bulletin.is_hot != true) || current_user.is_admin? %> - - <% else %> - - <% end %> - -
    -
    - <% if !@custom_bulletin.is_top? && !CustomAnnouncementSetting.check_limit_for_user((@custom_bulletin.new_record? ? current_user.id : @custom_bulletin.create_user_id)) %> - Top limit has been reached. The custom_bulletin wont be marked as top even if you click on it. - <% end %> -
    -
    -
    " data-for="is_top"> - -
    - <%= f.datetime_picker :top_end_date, :no_label => true, :new_record => @custom_bulletin.new_record? %> -
    -
    -
    - -
    - <%= f.check_box :open_comment %><%= t('custom_announcement.open') %> -
    -
    -
    " data-for="open_comment"> - -
    - <%= f.datetime_picker :comment_end_time, :no_label => true, :new_record => @custom_bulletin.new_record? %> -
    -
    -
    " data-for="open_comment"> - -
    - <%= check_box_tag 'custom_bulletin[comment_role][]','visitor',@custom_bulletin.comment_role.include?('visitor') %> - <%= t('custom_announcement.visitor') %> -
    - <%= check_box_tag 'custom_bulletin[comment_role][]','all_member',@custom_bulletin.comment_role.include?('all_member'),class: 'role_all_member' %> - <%= t('custom_announcement.all_member') %> -
    - <% Role.all.each do |role| %> - <%= check_box_tag 'custom_bulletin[comment_role][]',role.id.to_s,@custom_bulletin.comment_role.include?(role.id.to_s),class: 'role' %> - <%= role.title %> - <% end %> -
    -
    -
    - <% end %> - - -
    -
    - - <%= select_tags(f, @module_app) %> -
    -
    - - -
    - - -
    - -
    -
    -
    - <% if @custom_bulletin.image.file %> - <%= image_tag @custom_bulletin.image %> - <% else %> - - <% end %> -
    -
    - - <%= t(:select_image) %> - <%= t(:change) %> - <%= f.file_field :image %> - - <%= t(:cancel) %> -
    - -
    -
    -
    -
    - <% @site_in_use_locales.each do |locale| %> - <%= f.fields_for :image_description_translations do |f| %> -
    - -
    - <%= f.text_field locale, value: (@custom_bulletin.image_description_translations[locale.to_s] rescue nil) %> -
    -
    - <% end %> - <% end %> - -
    - - -
    - - -
    - - -
    - -
    - - - -
    - <%= render partial: 'admin/member_selects/email_selection_box', locals: {field: 'custom_bulletin[email_member_ids][]', email_members: @custom_bulletin.email_members} %> -
    -
    -
    -
    - -
    -
    - <%= "#{t("custom_announcement.other_mailaddress")}(#{t("custom_announcement.other_mailaddress_note")})"%> - <%= f.text_area :other_mailaddress, :class=>"span12", :cols=>"25", :rows=>"10" %> -
    -
    -
    - -
    -
    - -
    - <%= f.datetime_picker :email_sentdate, :no_label => true %> -
    -
    -
    - - <% if (@custom_bulletin.email.is_sent rescue false) %> -
    -
    - -
    - -
    -
    -
    - <% end %> - -
    - -
    - - - - - - -
    - - <% @site_in_use_locales.each_with_index do |locale, i| %> - -
    "> - - -
    - -
    - <%= f.fields_for :title_translations do |f| %> - <%= f.text_area locale, class: "ckeditor_reduce input-block-level", placeholder: t(:title), value: (@custom_bulletin.title_translations[locale] rescue nil) %> - <% end %> -
    -
    - - -
    - -
    -
    - <%= f.fields_for :subtitle_translations do |f| %> - <%= f.text_area locale, rows: 2, class: "ckeditor input-block-level", value: (@custom_bulletin.subtitle_translations[locale] rescue nil) %> - <% end %> -
    -
    -
    - - -
    - -
    -
    - <%= f.fields_for :text_translations do |f| %> - <%= f.cktext_area locale, rows: 5, class: "input-block-level", :value => (@custom_bulletin.text_translations[locale] rescue nil) %> - <% end %> -
    -
    -
    - -
    - - <% end %> - - -
    - -
    - - - <% if @custom_bulletin && !@custom_bulletin.custom_bulletin_links.blank? %> -
    - <% @custom_bulletin.custom_bulletin_links.each_with_index do |custom_bulletin_link, i| %> - <%= f.fields_for :custom_bulletin_links, custom_bulletin_link do |f| %> - <%= render :partial => 'form_link', :object => custom_bulletin_link, :locals => {:f => f, :i => i} %> - <% end %> - <% end %> -
    -
    - <% end %> - - -
    -
    -

    - <%= hidden_field_tag 'custom_bulletin_link_field_count', @custom_bulletin.custom_bulletin_links.count %> - <%= t(:add) %> -

    - -
    -
    - - -
    - -
    -
    <%= t("custom_announcement.file_description_hint") %>
    - - <% if @custom_bulletin && !@custom_bulletin.custom_bulletin_files.blank? %> -
    - <% @custom_bulletin.custom_bulletin_files.each_with_index do |custom_bulletin_file, i| %> - <%= f.fields_for :custom_bulletin_files, custom_bulletin_file do |f| %> - <%= render :partial => 'form_file', :object => custom_bulletin_file, :locals => {:f => f, :i => i} %> - <% end %> - <% end %> -
    -
    - <% end %> - - -
    -
    -

    - <%= hidden_field_tag 'custom_bulletin_file_field_count', @custom_bulletin.custom_bulletin_files.count %> - <%= t(:add) %> -

    - -
    -
    - -
    - -
    - - -
    - <%= get_referer_url[:action] rescue "" %> - <%= f.submit t('submit'), class: 'btn btn-primary' %> - - <%= button_tag t("preview"), id: "button_for_preview", name: "commit", class: 'btn', type: :button %> - <%= link_to t('cancel'), admin_custom_announcements_path + (params[:custom_module].blank? ? '' : "/#{params[:custom_module]}#{(params[:bind_uid].blank? ? '' : ('-'+params[:bind_uid]))}"), :class=>"btn" %> - <% if params[:custom_module].present? %> - <%= f.hidden_field :custom_module, :value=> params[:custom_module] %> - <% if params[:bind_uid].present? %> - <%= f.hidden_field :bind_uid, :value=> params[:bind_uid] %> - <% end %> - <% end %> -
    - - - - -<% if !@module_app.tags.empty? %> - -<% end %> - - diff --git a/custom_announcement/app/views/admin/custom_announcements/_form_file.html.erb b/custom_announcement/app/views/admin/custom_announcements/_form_file.html.erb deleted file mode 100644 index ab29460..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_form_file.html.erb +++ /dev/null @@ -1,89 +0,0 @@ -<% if form_file.new_record? %> -
    -<% else %> -
    - <% if form_file.file.blank? %> - <%= t(:no_file) %> - <% else %> - <%= link_to content_tag(:i) + form_file.file_identifier, form_file.file.url, {:class => 'file-link file-type', :target => '_blank', :title => form_file.file_identifier} %> - <% end %> -<% end %> -
    - - - - <% @site_in_use_locales.each_with_index do |locale, i| %> - <%= locale %>"> - <%= f.fields_for :title_translations do |f| %> - <%= f.text_field locale, :class => "input-medium", placeholder: t(:alternative), :value => (form_file.title_translations[locale] rescue nil) %> - <% end %> - - <% end %> - - - - <% @site_in_use_locales.each_with_index do |locale, i| %> - <%= locale %>"> - <%= f.fields_for :description_translations do |f| %> - <%= f.text_field locale, :class => "input-medium", placeholder: t(:description), :value => (form_file.description_translations[locale] rescue nil) %> - <% end %> - - <% end %> - - - - - - <%= hidden_field_tag 'custom_bulletin[custom_bulletin_files_attributes][0][choose_lang][]', '' %> - - <% if form_file.new_record? %> - - - - <% else %> - - <%= f.hidden_field :id %> - - <%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %> - - <% end %> - - <% case form_file.privacy_type - when "public" - icon = "icons-earth" - when "logged_in" - icon = "icons-users" - end - %> - - - <%= f.hidden_field :privacy_type, class: 'privacy_type' %> - -
    -
    \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_form_image.html.erb b/custom_announcement/app/views/admin/custom_announcements/_form_image.html.erb deleted file mode 100644 index 4087ea1..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_form_image.html.erb +++ /dev/null @@ -1,49 +0,0 @@ - -
    -
    - -
    -
    -
    - <% if form_image.file.file %> - <%= image_tag form_image.file %> - <% else %> - - <% end %> -
    -
    - - <%= t(:select_image) %> - <%= t(:change) %> - <%= f.file_field :file %> - - <%= t(:cancel) %> -
    - -
    -
    -
    -
    - <% @site_in_use_locales.each do |locale| %> - <%= f.fields_for :description_translations do |f| %> -
    - -
    - <%= f.text_field locale, value: (form_image.description_translations[locale.to_s] rescue nil) %> -
    -
    - <% end %> - <% end %> -
    \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/_form_link.html.erb b/custom_announcement/app/views/admin/custom_announcements/_form_link.html.erb deleted file mode 100644 index 461a3fc..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_form_link.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
    - - <%= f.text_field :url, class: "input-large", placeholder: t(:url) %> - - - <% @site_in_use_locales.each_with_index do |locale, i| %> - <%= locale %>"> - <%= f.fields_for :title_translations do |f| %> - <%= f.text_field locale, :class => "input-large", placeholder: t(:url_alt), :value => (form_link.title_translations[locale] rescue nil) %> - <% end %> - - <% end %> - - - <% if form_link.new_record? %> - - - - <% else %> - - <%= f.hidden_field :id %> - - <%= f.hidden_field :_destroy, :value => nil, :class => 'should_destroy' %> - - <% end %> -
    diff --git a/custom_announcement/app/views/admin/custom_announcements/_index.html.erb b/custom_announcement/app/views/admin/custom_announcements/_index.html.erb deleted file mode 100644 index b2d3dc2..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/_index.html.erb +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - <% @table_fields.each do |f| %> - <%= thead(f) %> - <% end %> - - - - <% @custom_bulletins.each do |b| %> - - - - - - - - - - - - - <% end %> - -
    - <%= b.status_for_table %> - - <%= b.category.title rescue "" %> - <% if (b.category.disable rescue false) %> - <%= t(:disabled) %> - <% end %> - - <% if b.expired? || (b.category.disable rescue false)%> - <%= b.title.to_s.html_safe %> - <% else %> - <%= b.title.to_s.html_safe %> - <% end %> - - <% if b.expired? %> - <%= t(:expired) %> - <% end %> - - <% if b.reapproval %> - <%= t("custom_announcement.reapproval") + " " + t(:pending) %> - <% end %> - <% if b.rejected %> - <%= t(:rejected) %> : <%= b.rejection_reason rescue "" %> - <% end %> - <% if !b.approved? && !b.rejected %> - <%= t(:pending) %> - <% end %> -
    - -
    -
    <%= format_value b.postdate %>"><%= format_value b.deadline %><%= link_to b.custom_bulletin_comments.count.to_s,"/#{I18n.locale}/admin/custom_announcements/#{params[:custom_module]}#{params[:bind_uid].present? ? ('-'+params[:bind_uid]) : ''}/#{b.id}/comment" %><%= b.update_user.user_name rescue ""%>
    -
    " class="footable-row-detail-inner" style="display: none;"> -
    - <%= t(:view_count) %> : - <%= b.view_count %> -
    -
    - <%= t(:tags) %> : - <% b.tags.each do |tag| %> - <%= tag.name %> - <% end %> -
    -
    - <%= t("custom_announcement.email_to") %> : - <% b.email_members.each do |member| %> - <%= member.name %> - <% end %> - <% unless b.other_mailaddress.nil? %> - <% b.other_mailaddress.split(',').each do |mailaddress| %> - <%= mailaddress %> - <% end %> - <% end %> -
    -
    -
    -<%= - content_tag :div, class: "bottomnav clearfix" do - content_tag(:div, paginate(@custom_bulletins), class: "pagination pagination-centered") + - content_tag(:div, link_to(t(:new_),(params[:custom_module].blank? ? "#{@module_app.key.pluralize}/new" : "#{params[:custom_module]}#{params[:bind_uid].present? ? ('-'+params[:bind_uid]) : ''}/new"), :class=>"btn btn-primary"), class: "pull-right") - end -%> \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/comment.html.erb b/custom_announcement/app/views/admin/custom_announcements/comment.html.erb deleted file mode 100644 index b28a5d3..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/comment.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -<% content_for :page_specific_css do %> - <%= stylesheet_link_tag("admin/tags") %> -<% end %> - -<%= render 'comment' %> \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/display_enable_modules.html.erb b/custom_announcement/app/views/admin/custom_announcements/display_enable_modules.html.erb deleted file mode 100644 index 444ae04..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/display_enable_modules.html.erb +++ /dev/null @@ -1,74 +0,0 @@ -<% if params[:custom_module].blank? %> -
    - -
    -<% else %> - <% config = @custom_bulletin_configs.where(:module=>params[:custom_module]).first %> - <% target_model = config.bind_model.constantize %> - <% page_num = params[:page] || 1 %> - <% target_records = target_model.where(config.title_field.to_sym.nin=>[nil,""]).page(page_num).per(10) %> - <% if params[:search_title].present? - target_records = target_records.where(config.title_field.to_sym=>/#{params[:search_title].gsub(/(\[|\]|\(|\)|\.)/){|f| "\\"+f}}/) - end %> -

    <%= t("module_name.#{config.module}") %>

    -
    - -
    - - - - - - <% target_records.each do |record| %> - - <% uid = record.send(config.uid_field) %> - - - - <% end %> -
    <%= t(:title) %><%= t("custom_announcement.total_amount") %>
    - " title="<%=record.send(config.title_field)%>"><%= record.send(config.title_field) %> - - <%= CustomBulletin.where(:custom_module=>params[:custom_module],:bind_uid=>uid).count %> -
    - <%= - content_tag :div, class: "bottomnav clearfix" do - content_tag :div, paginate(target_records), class: "pagination pagination-centered" - end - %> -<% end %> - \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/edit.html.erb b/custom_announcement/app/views/admin/custom_announcements/edit.html.erb deleted file mode 100644 index ee64d5f..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/edit.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -<%= form_for @custom_bulletin, url: admin_custom_announcement_path(@custom_bulletin), html: {class: "form-horizontal main-forms previewable"} do |f| %> -
    - <%= render :partial => 'form', locals: {f: f} %> -
    -<% end %> \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/excel_format.xlsx.axlsx b/custom_announcement/app/views/admin/custom_announcements/excel_format.xlsx.axlsx deleted file mode 100644 index c414556..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/excel_format.xlsx.axlsx +++ /dev/null @@ -1,125 +0,0 @@ -# encoding: utf-8 - -wb = xlsx_package.workbook - -wb.add_worksheet(name: "CustomAnnoucement") do |sheet| - - heading = sheet.styles.add_style(:b => true, :locked => true) - example = sheet.styles.add_style(:i => true) - row = [] - row1 = [] - row2 = [] - - row << t("category") - row1 << "select" - t = "" - @module_app.categories.asc(:created_at).each_with_index do |cat,i| - t = t + "#{i}" + " -> " + cat.title + ", " - end - if @module_app.categories.count > 0 - t = t + " Example : 0" - else - t = "Leave this field blank" - end - row2 << t - - row << t("tags") - row1 << "select" - t = "" - @module_app.tags.asc(:created_at).each_with_index do |tag,i| - t = t + "#{i}" + " -> " + tag.name + ", " - end - if @module_app.tags.count > 0 - t = t + " Example : 0,1,2" - else - t = "Leave this field blank" - end - row2 << t - - row << t("start_date") - row1 << "date" - row2 << "Format: YYYY/MM/DD, Example: 2015/12/10" - - row << t("end_date") - row1 << "date" - row2 << "Format: YYYY/MM/DD, Example: 2015/12/12" - - row << t("top") - row1 << "boolean" - row2 << "0 for false, 1 for true" - - row << t("hot") - row1 << "boolean" - row2 << "0 for false, 1 for true" - - row << t("hide") - row1 << "boolean" - row2 << "0 for false, 1 for true " - - row << t("image") - row1 << "url" - row2 << "http://www.example.com/images/example.png" - - row << t("image") + " " + t("description") + " - " + t("en") - row1 << "textfield" - row2 << "" - row << t("image") + " " + t("description") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "" - - row << t("title") + " - " + t("en") - row1 << "textfield" - row2 << "" - row << t("title") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "" - - row << t("subtitle") + " - " + t("en") - row1 << "textarea" - row2 << "" - row << t("subtitle") + " - " + t("zh_tw") - row1 << "textarea" - row2 << "" - - row << t("content") + " - " + t("en") - row1 << "editor" - row2 << "" - row << t("content") + " - " + t("zh_tw") - row1 << "editor" - row2 << "" - - row << t("link") - row1 << "textfield" - row2 << "Seperate with ';'. Example: http://rulingcom.com; http://google.com" - - row << t("link") + " " + t("url_alt") + " - " + t("en") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine" - row << t("link") + " " + t("url_alt") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine" - - row << t("file_") - row1 << "textfield" - row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png" - - row << t("file_") + " " + t("description") + " - " + t("en") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait" - row << t("file_") + " " + t("description") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait" - - row << t("file_") + " " + t("alternative") + " - " + t("en") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2" - row << t("file_") + " " + t("alternative") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2" - - - sheet.add_row row, :style => heading - sheet.add_row row1 - sheet.add_row row2, :style => example - -end \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/export_excel.xlsx.axlsx b/custom_announcement/app/views/admin/custom_announcements/export_excel.xlsx.axlsx deleted file mode 100644 index bae0f7e..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/export_excel.xlsx.axlsx +++ /dev/null @@ -1,177 +0,0 @@ -# encoding: utf-8 - -wb = xlsx_package.workbook - -wb.add_worksheet(name: "CustomAnnoucement") do |sheet| - - heading = sheet.styles.add_style(:b => true, :locked => true) - example = sheet.styles.add_style(:i => true) - row = [] - row1 = [] - row2 = [] - - row << t("category") - row1 << "select" - t = "" - categories = @module_app.categories.asc(:created_at) - categories.each_with_index do |cat,i| - t = t + "#{i}" + " -> " + cat.title + ", " - end - if categories.count > 0 - t = t + " Example : 0" - else - t = "Leave this field blank" - end - row2 << t - - row << t("tags") - row1 << "select" - t = "" - tags = @module_app.tags.asc(:created_at) - tags.each_with_index do |tag,i| - t = t + "#{i}" + " -> " + tag.name + ", " - end - if tags.count > 0 - t = t + " Example : 0,1,2" - else - t = "Leave this field blank" - end - row2 << t - - row << t("start_date") - row1 << "date" - row2 << "Format: YYYY/MM/DD, Example: 2015/12/10" - - row << t("end_date") - row1 << "date" - row2 << "Format: YYYY/MM/DD, Example: 2015/12/12" - - row << t("top") - row1 << "boolean" - row2 << "0 for false, 1 for true" - - row << t("hot") - row1 << "boolean" - row2 << "0 for false, 1 for true" - - row << t("hide") - row1 << "boolean" - row2 << "0 for false, 1 for true " - - row << t("image") - row1 << "url" - row2 << "http://www.example.com/images/example.png" - - row << t("image") + " " + t("description") + " - " + t("en") - row1 << "textfield" - row2 << "" - row << t("image") + " " + t("description") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "" - - row << t("title") + " - " + t("en") - row1 << "textfield" - row2 << "" - row << t("title") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "" - - row << t("subtitle") + " - " + t("en") - row1 << "textarea" - row2 << "" - row << t("subtitle") + " - " + t("zh_tw") - row1 << "textarea" - row2 << "" - - row << t("content") + " - " + t("en") - row1 << "editor" - row2 << "" - row << t("content") + " - " + t("zh_tw") - row1 << "editor" - row2 << "" - - row << t("link") - row1 << "textfield" - row2 << "Seperate with ';'. Example: http://rulingcom.com; http://google.com" - - row << t("link") + " " + t("url_alt") + " - " + t("en") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine" - row << t("link") + " " + t("url_alt") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Rulingcom official site; Google search engine" - - row << t("file_") - row1 << "textfield" - row2 << "Seperate with ';'. Example: http://www.example.com/images/example.png; http://www.example.com/images/example2.png" - - row << t("file_") + " " + t("description") + " - " + t("en") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait" - row << t("file_") + " " + t("description") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : Great view; Nice potrait" - - row << t("file_") + " " + t("alternative") + " - " + t("en") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2" - row << t("file_") + " " + t("alternative") + " - " + t("zh_tw") - row1 << "textfield" - row2 << "Seperate with ';' with respective to the links in the link columns. Example : example1; example2" - - - sheet.add_row row, :style => heading - sheet.add_row row1 - sheet.add_row row2, :style => example - - @custom_announcements.each do |custom_anns| - row = [] - row << categories.to_a.index(custom_anns.category) - t = [] - custom_anns.tags.each do |tag| - t << tags.to_a.index(tag) - end - row << t.join(",") - row << (custom_anns.postdate.strftime("%Y/%m/%d") rescue "") - row << (custom_anns.deadline.strftime("%Y/%m/%d") rescue "") - row << (custom_anns.is_top? ? 1 : 0) - row << (custom_anns.is_hot? ? 1 : 0) - row << (custom_anns.is_hidden? ? 1 : 0) - row << ("http://" + request.host_with_port + custom_anns.image.url rescue "") - row << custom_anns.image_description_translations["en"] - row << custom_anns.image_description_translations["zh_tw"] - row << custom_anns.title_translations["en"] - row << custom_anns.title_translations["zh_tw"] - row << custom_anns.subtitle_translations["en"] - row << custom_anns.subtitle_translations["zh_tw"] - row << custom_anns.text_translations["en"] - row << custom_anns.text_translations["zh_tw"] - - links = custom_anns.custom_bulletin_links.asc(:created_at) - t = links.collect{|l|l.url} - row << t.join(";") - t = links.collect{|l|l.title_translations["en"]} - row << t.join(";") - t = links.collect{|l|l.title_translations["zh_tw"]} - row << t.join(";") - - files = custom_anns.custom_bulletin_files.asc(:created_at) - t = files.collect{|f|("http://" + request.host_with_port + f.file.url rescue nil)} - t.delete(nil) - row << t.join(";") - t = files.collect{|l|l.description_translations["en"]} - row << t.join(";") - t = files.collect{|l|l.description_translations["zh_tw"]} - row << t.join(";") - t = files.collect{|l|l.title_translations["en"]} - row << t.join(";") - t = files.collect{|l|l.title_translations["zh_tw"]} - row << t.join(";") - sheet.add_row row - end - - - - - -end \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/feed.html.erb b/custom_announcement/app/views/admin/custom_announcements/feed.html.erb deleted file mode 100644 index aef0d9c..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/feed.html.erb +++ /dev/null @@ -1,124 +0,0 @@ -<% content_for :page_specific_css do %> - <%= stylesheet_link_tag("admin/tags") %> -<% end %> -<% content_for :page_specific_javascript do %> - <%= javascript_include_tag "validator" %> -<% end %> - - - - - <% @table_feed_fields.each do |f| %> - <%= thead(f) %> - <% end %> - - - - <%= render :partial => "feed", :collection => @feeds %> - -
    -<% if current_user.is_admin? or current_user.is_manager?(@module_app) %> - - - - -<% end %> - - -
    \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/import.html.erb b/custom_announcement/app/views/admin/custom_announcements/import.html.erb deleted file mode 100644 index 58a1fff..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/import.html.erb +++ /dev/null @@ -1,87 +0,0 @@ -<% content_for :page_specific_javascript do %> - -<% end %> -
    -

    <%= t("custom_announcement.export_to_excel") %>

    - -

    <%= t("custom_announcement.import_from_excel") %>

    - <%= hidden_field_tag :authenticity_token, form_authenticity_token %> -
    - <% if @module_app.categories.count > 0 %> - -
    - -
    - - <%= t("custom_announcement.please_create_tags_cats") %> -
    -
    - <% else %> -
    -
    -

    <%= t("custom_announcement.create_atleast_one_cat") %>

    -
    -
    - <% end %> -
    - <% if @module_app.categories.count > 0 %> -
    - " class="btn btn-primary"> -
    - <% end %> -
    - - - -
    -

    <%= t("custom_announcement.import_from_wp_xml") %>

    - <%= hidden_field_tag :authenticity_token, form_authenticity_token %> -
    -
    - -
    - -
    -
    -
    -
    - " class="btn btn-primary"> -
    -
    - - \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/index.html.erb b/custom_announcement/app/views/admin/custom_announcements/index.html.erb deleted file mode 100644 index e92155a..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/index.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -<%= render_filter @filter_fields, "index_table" %> -<% custom_config = CustomBulletinConfig.where(:module=>params[:custom_module]).first %> -<% target_model = custom_config.bind_model.constantize %> -

    <%= target_model.where(custom_config.uid_field=>params[:bind_uid]).first.send(custom_config.title_field) %>

    - - <%= render 'index'%> - - -<%= render 'layouts/delete_modal', delete_options: @delete_options %> - -<% if CustomAnnouncementSetting.is_pro? && user_can_approve? %> - <%= render :partial=> "approval_modal" %> - - -<% end %> \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/new.html.erb b/custom_announcement/app/views/admin/custom_announcements/new.html.erb deleted file mode 100644 index 3d1cf85..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -<%= form_for @custom_bulletin, url: admin_custom_announcements_path, html: {class: "form-horizontal main-forms previewable"} do |f| %> -
    - <%= render :partial => 'form', locals: {f: f} %> -
    -<% end %> \ No newline at end of file diff --git a/custom_announcement/app/views/admin/custom_announcements/settings.html.erb b/custom_announcement/app/views/admin/custom_announcements/settings.html.erb deleted file mode 100644 index 2c16609..0000000 --- a/custom_announcement/app/views/admin/custom_announcements/settings.html.erb +++ /dev/null @@ -1,390 +0,0 @@ -<%= stylesheet_link_tag "select2/select2" %> -<%= javascript_include_tag 'validator' %> -<%= javascript_include_tag "select2/select2.min" %> -<% content_for :page_specific_css do %> - <%= stylesheet_link_tag "lib/main-forms" %> -<% end %> - -<% - sub_managers = @module_app.sub_managers - sub_managers.delete(nil) - all_statuses = [[t('top'),'is_top'],[t('hot'),'is_hot']] - tp1 = select_tag("custom_announcement_setting[custom_anns_status_settings][-1][status]",options_for_select(all_statuses)) - tp2 = select_tag("custom_announcement_setting[custom_anns_status_settings][-1][role_id]",options_for_select(Role.all.map{|r| [r.title,r.id]})) - tp3 = number_field_tag("custom_announcement_setting[custom_anns_status_settings][-1][top_limit]",nil, min: 0,required: true) - tp4 = "" - all_tp = "
    #{tp1}
    #{tp2}
    #{tp3}
    #{tp4}
    " -%> - -
    <%= t("custom_announcement.click_on_submit") %>
    -<%= form_for @setting, url: (@setting.new_record? ? admin_custom_announcement_createsettings_path : admin_custom_announcement_updatesettings_path), html: {class: "form-horizontal main-forms"} do |f| %> -
    -
    - <%= f.label :only_manager_can_edit_status, t("custom_announcement.only_manager_can_edit_status"), :class => "control-label muted" %> -
    - <%= f.check_box :only_manager_can_edit_status %> -
    -
    -
    - <%= f.label :is_display_edit_only, t("custom_announcement.is_display_edit_only"), :class => "control-label muted" %> -
    - <%= f.check_box :is_display_edit_only %> -
    -
    -
    - <%= f.label :top_limit, t("custom_announcement.top_limit"), :class => "control-label muted" %> -
    - <%= f.number_field :top_limit, :min => "0" %> - <%= t("custom_announcement.for_unlimited") %> -
    -
    -
    -
    -
    -
    - <%= t('status') %> -
    -
    - <%= t('role') %> -
    -
    - <%= t('custom_announcement.top_limit') %> -
    -
    - <% (CustomAnnouncementSetting.first.custom_anns_status_settings rescue []).each_with_index do |v,i| %> -
    - <%= hidden_field_tag("custom_announcement_setting[custom_anns_status_settings][#{i}][_id]",v.id) %> -
    - <%= select_tag("custom_announcement_setting[custom_anns_status_settings][#{i}][status]",options_for_select(all_statuses,:selected => v['status'])) %> -
    -
    - <%= select_tag("custom_announcement_setting[custom_anns_status_settings][#{i}][role_id]",options_for_select(Role.all.map{|r| [r.title,r.id]},:selected => v['role_id'])) %> -
    -
    - <%= number_field_tag("custom_announcement_setting[custom_anns_status_settings][#{i}][top_limit]",v['top_limit'], min: 0,required: true) %> -
    -
    - -
    -
    - <% end %> -
    -
    - -
    -
    -
    -
    - <% if CustomAnnouncementSetting.is_pro? %> - <% if !sub_managers.blank? %> -
    - <%= f.label "Approver Setting", :class => "control-label muted" %> -
    - <%= t("custom_announcement.approvers_list") %> - <%= @setting.approvers.count %> -
    -
    - <% else %> - - <% end %> -
    - <%= f.label "Send emails to", :class => "control-label muted" %> -
    - > <%= t("admin") %> - > <%= t("manager") %> - > <%= t("custom_announcement.approver") %> -
    -
    -
    -
    - <% sub_managers.each do |sm| %> - <% if @setting.approvers.include?(sm.id.to_s) %> - - <% end %> - <% end %> -
    -<% end %> -
    - <%= f.submit t('submit'), class: 'btn btn-primary' %> -
    -<% end %> -
    -<% if CustomAnnouncementSetting.is_pro? %> - - -<% end %> -<%= fields_for :iframe do |f| %> -
    -
    - <%=t('custom_announcement.custom_announcement_setting_for_iframe')%> -
    - <%= f.label :layout_type, t("custom_announcement.layout_type"), :class => "control-label muted" %> -
    - <% @layout_types = get_layouts(@module_app.key) %> - <% if @layout_types.first.kind_of?(Hash) %> - - - <% else %> - <%= f.select(:layout, @layout_types) %> - <% end %> -
    -
    -
    - <%= f.label :tags, t(:tags), :class => "control-label muted" %> -
    - <% @module_app.tags.each_with_index do |t,index| %> - - <% end %> -
    -
    -
    - -
    - <% @module_app.categories.each_with_index do |c,index| %> - - <% end %> -
    -
    -
    - <%= f.label :authors, t('custom_announcement.table.author'), :class => "control-label muted" %> -
    - <%= render partial: 'admin/members/generate_modal_select' , locals: { :@sorted_members => @sorted_members ,:member_form_id => "card-list-members",:member_field_name=>"iframe[member_ids][]" } %> -
    -
    -
    - <%= f.label :show_page, t('custom_announcement.show_page'), :class => "control-label muted" %> -
    - <%=f.check_box :show_page ,{:checked=>'checked'},'true','false'%> -
    -
    -
    - <%= f.label :data_count, t(:data_count), :class => "control-label muted" %> -
    - <%=f.number_field :data_count, {min: 0,:value=> 10} %> -
    -
    - -
    -
    -<% end %> - \ No newline at end of file diff --git a/custom_announcement/app/views/custom_announcement_feeds/rssfeed.rss.builder b/custom_announcement/app/views/custom_announcement_feeds/rssfeed.rss.builder deleted file mode 100644 index f1f4766..0000000 --- a/custom_announcement/app/views/custom_announcement_feeds/rssfeed.rss.builder +++ /dev/null @@ -1,16 +0,0 @@ -xml.instruct! :xml, :version => "1.0" -xml.rss :version => "2.0" do - xml.channel do - xml.title @bf.title - xml.link "/xhr/custom_announcements/rssfeed/73999228.rss" - - for custom_announcement in @custom_announcements - xml.item do - xml.title custom_announcement.title - xml.description custom_announcement.subtitle - xml.pubDate custom_announcement.created_at.to_s(:rfc822) - xml.link page_for_custom_bulletin(custom_announcement) - end - end - end -end \ No newline at end of file diff --git a/custom_announcement/app/views/custom_announcements/custom_widget_data.html.erb b/custom_announcement/app/views/custom_announcements/custom_widget_data.html.erb deleted file mode 100644 index caf6e5c..0000000 --- a/custom_announcement/app/views/custom_announcements/custom_widget_data.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -<% active_module = @custom_data_field[:bind_module_app] rescue nil %> -<% active_uid = @custom_data_field[:bind_uid] rescue nil %> -<% active_module = @custom_configs.first.module rescue nil if active_module.nil? %> -<% if @custom_configs.length != 0 %> -
    - -
    - <%= select_tag("#{@field_name}[custom_data_field][bind_module_app]", options_for_select(@custom_configs.map{|c| [t("module_name.#{c.module}"),c.module]},active_module),{:id=>"custom_bind_module_app"})%> -
    -
    -
    - -
    - <% @custom_configs.each do |c| %> - <% title_field = c.title_field - uid_field = c.uid_field - bind_model = c.bind_model.constantize rescue nil - %> - <% if bind_model %> -
    " data-module="<%= c.module %>"> - <%= select_tag("#{@field_name}[custom_data_field][bind_uid]", options_for_select(bind_model.where(title_field.to_sym.nin=>[nil,""]).map{|target_model| [target_model.send(title_field),target_model.send(uid_field)]},active_uid),{:id=>"custom_bind_uid"})%> -
    - <% end %> - <% end %> -
    -
    - -<% end %> \ No newline at end of file diff --git a/custom_announcement/app/views/custom_announcements/email.html.erb b/custom_announcement/app/views/custom_announcements/email.html.erb deleted file mode 100644 index df7d9ae..0000000 --- a/custom_announcement/app/views/custom_announcements/email.html.erb +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -
    - - <%= t('custom_announcement.mail_hi') %>

    - <%= t('custom_announcement.mail_url_view') %>

    - " target="_blank"> <%= @data["title"] %>

    - - --
    - <%= t('custom_announcement.mail_source') %> :" target="_blank"> <%= Site.first.title %>
    - <%= t('custom_announcement.mail_time') %> <%= DateTime.now.strftime('%Y/%m/%d %H:%M:%S') %> -
    - - - \ No newline at end of file diff --git a/custom_announcement/app/views/custom_announcements/index.html.erb b/custom_announcement/app/views/custom_announcements/index.html.erb deleted file mode 100644 index bc26212..0000000 --- a/custom_announcement/app/views/custom_announcements/index.html.erb +++ /dev/null @@ -1,85 +0,0 @@ -<% params = OrbitHelper.params - page = Page.where(url:params['url']).first - enable_search_flag = false - if page.methods.include? 'select_option_items'.to_sym - ModuleApp.all.select{|tmp| tmp.key.to_s=='custom_announcement'}.each do |modile_app| - @show_option_items = modile_app.show_option_items rescue nil - end - page.select_option_items.each do |select_option_item| - if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys[1].to_s - value = YAML.load(select_option_item.value) - if value[I18n.locale] == t('custom_announcement.yes') - enable_search_flag = true - end - end - end - end -%> -<% if enable_search_flag %> - -
    - <% cats = Array(page.categories) - if cats.include? 'all' - cats = ModuleApp.where(key: 'custom_announcement').first.categories - else - cats = cats.map{|v| Category.where(id: v).first}.compact - end - all_cat = [[t('custom_announcement.all'),'all']] - %> -
    - <%= select_tag('category',options_for_select(all_cat.concat(cats.map{|v| [v.title,v.id.to_s]}),:selected => params['category'].to_s),:id=>"category_select_box",:prompt => t('custom_announcement.select_prompt')) %> - " placeholder="<%= t('custom_announcement.keywords') %>"> -
    -
    - " placeholder="<%= t('custom_announcement.stime') %>" data-format="yyyy/mm/dd"> -
    - ~ -
    - " placeholder="<%= t('custom_announcement.etime') %>" data-format="yyyy/mm/dd"> -
    -
    - - -
    -
    -<% end %> -<%= render_view %> \ No newline at end of file diff --git a/custom_announcement/app/views/custom_announcements/show.html.erb b/custom_announcement/app/views/custom_announcements/show.html.erb deleted file mode 100644 index ce3ea3e..0000000 --- a/custom_announcement/app/views/custom_announcements/show.html.erb +++ /dev/null @@ -1,180 +0,0 @@ -<% - params = OrbitHelper.params - page = Page.where(url:params['url']).first - @show_back_and_next_flag = 0 - if page.methods.include? 'select_option_items'.to_sym - ModuleApp.all.select{|tmp| tmp.key.to_s=='custom_announcement'}.each do |modile_app| - @show_option_items = modile_app.show_option_items rescue nil - end - page.select_option_items.each do |select_option_item| - if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys.first.to_s - value = YAML.load(select_option_item.value) - tmp = value[:en] - I18n.with_locale(:en) do - if tmp == t('custom_announcement.not_show') - @show_back_and_next_flag = 0 - elsif tmp == t('custom_announcement.show_top') - @show_back_and_next_flag = 1 - elsif tmp == t('custom_announcement.show_bottom') - @show_back_and_next_flag = 2 - end - end - end - end - end - if @show_back_and_next_flag != 0 - uid = params['uid'] - sorted,total_pages = get_sorted_annc(0) - now_index = sorted.to_enum.with_index.select{|v| v[0].uid==uid}[0][1] rescue nil - if !now_index.nil? - if now_index != 0 - prev_result = sorted[now_index-1] - prev_url = params['url'] + '/' + prev_result.to_param - prev_content = "" - end - if now_index != sorted.length-1 - next_result = sorted[now_index+1] - next_url = params['url'] + '/' + next_result.to_param - next_content = "" - end - content = "
    #{prev_content}#{next_content}
    ".html_safe - else - content = '' - end - end -%> -<% if @show_back_and_next_flag!=0 %> - -<% end %> - -<% if @show_back_and_next_flag==1 %> -<%= content %> -<% end %> -<%= render_view %> -<% if @show_back_and_next_flag==2 %> -<%= content %> -<% end %> -<% site = Site.first - hover_color = site.orbit_bar_background_hover_color rescue nil - hover_color = '#0095CF' if hover_color.blank? - bg_color = site.orbit_bar_background_color rescue nil - bg_color = bg_color.blank? ? '#3a3b3c' : CustomAnnouncementsHelper.lighten_color(bg_color,-40) - color1 = CustomAnnouncementsHelper.lighten_color(bg_color,-40) - color2 = CustomAnnouncementsHelper.lighten_color(CustomAnnouncementsHelper.complementaryColor(bg_color),40) -%> - - -<% action_data['comments'].reverse.each do |comment| %> -
    -
    - <%= comment.time %> -
    -
    - <%= comment.comment.html_safe %> -
    -
    by <%= comment.account %>
    -
    -
    -<% end %> -<% if action_data['show_comment_flag'] %> -
    -
    - -
    -<% end %> \ No newline at end of file diff --git a/custom_announcement/app/views/custom_announcements/show_widget.html.erb b/custom_announcement/app/views/custom_announcements/show_widget.html.erb deleted file mode 100644 index d7fab74..0000000 --- a/custom_announcement/app/views/custom_announcements/show_widget.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - - - - <%= render_site_title %> - <%= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"%> - <%= stylesheet_link_tag "custom_bulletin/bootstrap/bootstrap.min.css"%> - <%= stylesheet_link_tag "template/template"%> - <%= javascript_include_tag "jquery.min"%> - <%= javascript_include_tag "bootstrap.min"%> - - - <% @target_action = "show_widget" %> - <%=render_view_for_annc((!params[:layout_type].blank? ? params[:layout_type] : 'annc_index1'))%> - - \ No newline at end of file diff --git a/custom_announcement/app/views/email/custom_announcement_email.html.erb b/custom_announcement/app/views/email/custom_announcement_email.html.erb deleted file mode 100644 index 902acf0..0000000 --- a/custom_announcement/app/views/email/custom_announcement_email.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= @data["html"].html_safe %> \ No newline at end of file diff --git a/custom_announcement/app/views/email/reapproval_custom_announcement_email.html.erb b/custom_announcement/app/views/email/reapproval_custom_announcement_email.html.erb deleted file mode 100644 index 81fdfa2..0000000 --- a/custom_announcement/app/views/email/reapproval_custom_announcement_email.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -

    Hello <%= @data["name"] %>,

    -

    <%= @data["submitter"] %> <%= t("custom_announcement.updated_annoucement") %> -<%= t("custom_announcement.click_here_to_see") %> \ No newline at end of file diff --git a/custom_announcement/app/views/email/rejection_email.html.erb b/custom_announcement/app/views/email/rejection_email.html.erb deleted file mode 100644 index 1603780..0000000 --- a/custom_announcement/app/views/email/rejection_email.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -

    Hello <%= @data["name"] %>,

    -

    <%= @data["rejector"] %> <%= t("annoucement.rejected_annoucement") %> : <%= @data["reason"].nil? || @data["reason"] == "" ? "" : "#{@data["reason"]}" %>

    -<%= t("custom_announcement.click_here_to_see") %> \ No newline at end of file diff --git a/custom_announcement/bin/rails b/custom_announcement/bin/rails deleted file mode 100644 index 3edef2a..0000000 --- a/custom_announcement/bin/rails +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env ruby -# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application. - -ENGINE_ROOT = File.expand_path('../..', __FILE__) -ENGINE_PATH = File.expand_path('../../lib/custom_announcement/engine', __FILE__) - -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) - -# require 'rails/all' -# require 'rails/engine/commands' -require "action_controller/railtie" -require "action_mailer/railtie" -require "sprockets/railtie" -require "rails/test_unit/railtie" -require 'rails/engine/commands' -require "mongoid/railtie" diff --git a/custom_announcement/config/initializers/scheduler.rb b/custom_announcement/config/initializers/scheduler.rb deleted file mode 100644 index 9af31b9..0000000 --- a/custom_announcement/config/initializers/scheduler.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'rufus-scheduler' - -scheduler = Rufus::Scheduler.new - -#return if defined?(Rails::Console) || Rails.env.test? || File.split($0).last == 'rake' - -scheduler.cron '43 2 * * *' do - system('bundle exec rake custom_bulletin:remove_preview_custom_bulletins') -end diff --git a/custom_announcement/config/locales/en.yml b/custom_announcement/config/locales/en.yml deleted file mode 100644 index 0fc3be1..0000000 --- a/custom_announcement/config/locales/en.yml +++ /dev/null @@ -1,169 +0,0 @@ -en: - module_name: - custom_announcement: CustomAnnouncement - restful_actions: - feed: Feed - import: Import - custom_announcement: - total_amount: Total amount - use_module: Use Module - use_content: Use Content - cover_image_display_setting: Cover Image display setting - full_width: Full width - up_left_corner: Up-left corner - up_right_corner: Up-right corner - all_tabs_setting: '"All" tab setting' - the_same_as_data_count: The same as data count - display_all_in_other_tabs: Display all contents in other tabs - read_more_position_options: '"read more" button position' - default: Default - upper_left: Upper left - lower_left: Lower left - upper_right: Upper right - lower_right: Lower right - tabs_options: Tabs options - not_enable_tabs: Not enable tabs - enable_tabs_with_categories_include_all: Enable tabs with categories(include all) - enable_tabs_with_categories: Enable tabs with categories - time: Time - send_comment: Send Comment - comment: Comment - account: Account - open_comment: Open for Comment - open: Open - comment_end_time: Comment End Time - comment_role: Comment Role - visitor: Visitor - all_member: All Member - add_to_calendar: Add to calendar - blank_to_set: (blank to use custom_announcement setting) - stime: start time - etime: end time - select_prompt: --select category-- - all: All - keywords: Keywords - enable_search: Enable search feature - 'yes': 'Yes' - 'no': 'No' - image: Cover Image - carousel_image: Carousel Image - carousel_image_title: Carousel Image(display at the bottom of show page) - picture_showing_size: Picture Showing Size - orignal_size: Original Size - small_size: Small Size - medium_size: Medium Size - showing_back_and_next: Show back and next - not_show: Not show - show_top: Show at top - show_bottom: Show at bottom - prev: previous - next: next - table: - title : Title - date : Date - status : Status - sub_title: Sub Title - category: Category - author: Author - link: Link - file: File - view_count: View Count - department: Department - add_new: Add New - export_to_excel: Export to Excel - export_all_custom_anns: Export all CustomAnnouncement - import_from_excel: Import from Excel - download_example_sheet_here: Download example sheet here - please_create_tags_cats: Please create all the tags and categories before hand. Only excel file is allowed - create_atleast_one_cat: Please create atleast one category before importing. - import_from_wp_xml: Import from WordPress XML - click_on_submit: Click on Submit to save the changes - approvers_list: Approvers List - click_set_sub_manager: Click here to set Sub Managers for this module - approver: Approver - top_limit: Top Limit - for_unlimited: Put 0 for unlimited - feed_name: Feed Name - rssfeed: RSS Feed Link - jsonfeed: JSON Feed Link - feed_list: Feed List - approve: Approve - all_articles: All Articles - settings: Settings - import: Import / Export - custom_announcement: CustomAnnouncement - approval_setting: Approval Setting - approve_custom_bulletin_fail: Approval Fail - approve_custom_bulletin_success: Approve Successfully - approval_waiting: Approval - submitted_new_custom_announcement: "%{poster} submitted a new custom_announcement waiting for your approval." - click_here_to_see: Please click the link below to view the custom_announcement. - rejected_annoucement: has rejected your custom_announcement, because - updated_annoucement: "%{poster} updated the rejected custom_announcement." - custom_announcement_subject: New custom_announcement waiting for approval - approval_site: Site - approval_mail_hi: Hello %{name}, - approval_custom_announcement_title: CustomAnnouncement Title - custom_bulletins: CustomBulletins - categories: Categories - create_custom_bulletin_success: Create CustomBulletin Successfully - create_custom_bulletin_category_success: Create Category Successfully - date: CustomAnnouncement Date - default_widget: - custom_bulletin_category_with_title: CustomBulletin Category with Title - postdate: Post Date - subtitle: Subtitle - title: Title - editing_custom_announcement: Edit CustomAnnouncement - editing_custom_announcement_category: Edit Category - file: Attachment - file_description: File Description - file_description_hint: 'File Description will display in the title of file link.(When placing mouse on the link,the title will display)' - file_name: File Name - frontend: - custom_bulletins: CustomAnnouncement front-end - search_result: Search result - link_name: Link Name - new_custom_bulletin_category: New CustomBulletin Category - picture: Cover Picture - search: Search - selected_file: Select File - update_custom_bulletin_category_success: Update Category Successfully - url: URL - widget: - custom_bulletins_and_web_links: Differential Nav. - index: Index - search: Search - more: More - more_: 'More ' - email_reminder: Email Reminder - activate_email_reminder: Activate Email Reminder - email_sentdate: Email Time - email_to: Email To - mail_subject: this is an custom_announcement reminder from【%{site_title}】 - view_count: View Counts - other_mailaddress: Other Email - other_mailaddress_note: Divide different email accounts with "," - mail_hi: Hi - mail_url_view: This email is the reminder of an custom_announcement, please click the link for the details - mail_source: Source - mail_time: Time - image_upload_size_note: The following recommendations %{image_upload_size} upload size - resend_mail: Re-send Email - is_external_link: Enable External Link - external_link: External Link - external_link_hint: "Make sure URL starts with http://" - display_subtitle: Display Subtitle in Content Page - display_img: Display Cover Image in Content Page - is_display_edit_only: Only display editable custom_announcements - only_manager_can_edit_status: Only manager can edit status of custom_announcements - layout_type: Layout type - custom_announcement_setting_for_iframe: CustomAnnouncement settings for iframe - url_generate: Url Generate - show_page: Show pagination - URL: URL - copy: Copy - status: - top: Important - hot: Hot - hidden: Hidden \ No newline at end of file diff --git a/custom_announcement/config/locales/zh_tw.yml b/custom_announcement/config/locales/zh_tw.yml deleted file mode 100644 index 9d6e110..0000000 --- a/custom_announcement/config/locales/zh_tw.yml +++ /dev/null @@ -1,172 +0,0 @@ -zh_tw: - module_name: - custom_announcement: 客製公告 - restful_actions: - feed: 供給 - import: 匯入 - custom_announcement: - total_amount: 總數 - use_module: 使用模組 - use_content: 使用內容 - cover_image_display_setting: 封面圖片顯示設定 - full_width: 滿版呈現 - up_left_corner: 左上角 - up_right_corner: 右上角 - all_tabs_setting: '"全部"頁籤設定' - the_same_as_data_count: 與Data count相同 - display_all_in_other_tabs: 顯示在其他頁籤的全部內容 - read_more_position_options: '"更多"按鈕的位置' - default: 預設 - upper_left: 左上 - lower_left: 左下 - upper_right: 右上 - lower_right: 右下 - tabs_options: 頁籤選項 - not_enable_tabs: 無頁籤 - enable_tabs_with_categories_include_all: 開啟頁籤(依類別,並包含全部所選類別之頁籤) - enable_tabs_with_categories: 開啟頁籤(依類別) - time: 時間 - send_comment: 送出留言 - comment: 留言內容 - account: 帳號 - open_comment: 開放評論 - open: 開放 - comment_end_time: 停止開放時間 - comment_role: 留言身分 - visitor: 訪客 - all_member: 全部會員 - add_to_calendar: 加入行事曆 - blank_to_set: (留白則使用公告設定) - stime: 開始時間 - etime: 結束時間 - select_prompt: --選取類別-- - all: 全部 - keywords: 關鍵字 - enable_search: 開啟搜尋功能 - 'yes': 是 - 'no': 否 - image: 封面圖片 - carousel_image: 輪播圖片 - carousel_image_title: 輪播圖片(在show頁面底部顯示) - picture_showing_size: 圖片顯示大小 - orignal_size: 原圖大小 - small_size: 小張縮圖 - medium_size: 中等縮圖 - showing_back_and_next: 顯示上下則 - not_show: 不顯示 - show_top: 顯示在最上面 - show_bottom: 顯示在最下面 - prev: 上一則 - next: 下一則 - table: - title : 標題 - date : 張貼日期 - status : 標籤 - sub_title: 副標題 - category: 類別 - author: 張貼人 - link: 超連結 - file: 檔案下載 - view_count: 瀏覽人次 - department: 單位 - add_new: 新建 - import: 匯入 - export_to_excel: 匯出至Excel檔 - export_all_custom_anns: 匯出所有公告 - import_from_excel: 從Excel檔匯入 - download_example_sheet_here: 在此下載範例 - please_create_tags_cats: 甲、 請事先建立所有標籤及分類。 僅限Excel檔。 - create_atleast_one_cat: 匯入前, 請先建立至少一個類別 - import_from_wp_xml: 從WordPress XML檔匯入 - top_limit: 最高設限 - for_unlimited: 歸零不設限 - click_on_submit: 點"提交"儲存變更 - approvers_list: 審核人名單 - click_set_sub_manager: 點這邊來設定這個模組的副管理者 - approver: 審核人 - approve: 通過 - feed_name: Feed 標題 - settings: 設定 - import: 匯入 / 匯出 - rssfeed: RSS 供給連結 - jsonfeed: JSON 供給連結 - feed_list: 訂閱清單 - all_articles: 文章列表 - custom_announcement: 客製公告 - approval_setting: 審核設定 - approve_custom_bulletin_fail: 審核失敗 - approve_custom_bulletin_success: 審核成功 - approval_waiting: 審核 - submitted_new_custom_announcement: 貴單位於全球資訊網有一則 %{poster} 張貼的最新消息待您審核發布, - click_here_to_see: 請您點擊以下網址,前往審核 - rejected_annoucement: 未通過您的公告審核,原因為 - updated_annoucement: 貴單位於全球資訊網有一則 %{poster} 被拒絕的最新消息已重新編輯待您審核發布, - custom_announcement_subject: 系統訊息 - 最新消息內容審核通知 - approval_mail_hi: 親愛的 %{name} 主管您好 - approval_site: 網址 - approval_custom_announcement_title: 消息標題 - custom_bulletins: 公告 - categories: 類別 - create_custom_bulletin_success: 建立公告成功 - create_custom_bulletin_category_success: 建立類別成功 - date: 起迄日期 - default_widget: - custom_bulletin_category_with_title: 公告類別及標題 - postdate: 張貼日期 - subtitle: 副標題 - title: 標題 - editing_custom_announcement: 編輯類別 - editing_custom_announcement_category: 編輯類別 - error: - no_avilb_cate_for_posting: 沒有可以張貼的類別 - file: 附加檔案 - file_description: 檔案描述 - file_description_hint: '檔案描述將會顯示在前台檔案連結的title(把滑鼠放在連結上會出現的文字)' - file_name: 檔案名稱 - frontend: - custom_bulletins: 公告前台 - search_result: 搜尋結果頁 - link_name: 連結名稱 - new_custom_bulletin_category: 新增公告類別 - picture: 刊頭圖片 - search: 搜尋 - selected_file: 選擇檔案 - update_custom_bulletin_category_success: 更新類別成功 - url: 連結位置 - widget: - custom_bulletins_and_web_links: 分眾頁籤 - index: 索引 - search: 搜尋 - more: 更多+ - more_: 更多 - email_reminder: 寄送提醒 - activate_email_reminder: 開啟寄送提醒 - email_sentdate: 寄送時間 - email_to: 寄送對象 - view_count: 瀏覽人次 - other_mailaddress: 其他Mail - other_mailaddress_note: 輸入多組mail時,請用","逗號隔開 - mail_subject: 來自【%{site_title}】的公告事件提醒 - mail_hi: 您好 - mail_url_view: 此封信件為公告事件提醒,請點選以下連結詳細觀看 - mail_source: 來源 - mail_time: 時間 - image_upload_size_note: 建議檔案小於%{image_upload_size} - resend_mail: 重新寄送提醒 - is_external_link: 連結外部網址 - external_link: 外部連結 - external_link_hint: "確定連結開頭為http://" - display_subtitle: 內容頁顯示副標題 - display_img: 內容頁顯示封面圖片 - is_display_edit_only: 只顯示可更新的公告 - only_manager_can_edit_status: 只有管理者可更新公告狀態 - layout_type: 頁面樣式 - custom_announcement_setting_for_iframe: 公告iframe設定 - url_generate: 網址生成 - show_page: 顯示頁碼 - URL: 網址 - copy: 複製 - status: - top: 重要 - hot: 熱門 - hidden: 隱藏 \ No newline at end of file diff --git a/custom_announcement/config/routes.rb b/custom_announcement/config/routes.rb deleted file mode 100644 index 10eb46c..0000000 --- a/custom_announcement/config/routes.rb +++ /dev/null @@ -1,59 +0,0 @@ -Rails.application.routes.draw do - - locales = Site.first.in_use_locales rescue I18n.available_locales - - scope "(:locale)", locale: Regexp.new(locales.join("|")) do - namespace :admin do - post 'custom_announcement/preview', to: 'custom_announcements#preview' - post 'custom_announcement/createfeed', to: 'custom_announcements#createfeed' - post 'custom_announcement/importcustom_anns', to: 'custom_announcements#importcustom_anns' - post 'custom_announcement/import_from_xml', to: 'custom_announcements#import_from_xml' - get 'custom_announcement/excel_format', to: 'custom_announcements#excel_format' - get 'custom_announcement/export_excel', to: 'custom_announcements#export_excel' - patch 'custom_announcement/updatefeed', to: 'custom_announcements#updatefeed' - delete 'custom_announcement/deletefeed', to: 'custom_announcements#deletefeed' - get 'custom_announcement/destroy_preview/:slug_title-:uid', to: 'custom_announcements#destroy_preview' - post 'custom_announcement/approve_custom_bulletin', to: 'custom_announcements#approve_custom_bulletin' - get 'custom_announcement/feed', to: 'custom_announcements#feed' - get 'custom_announcements/feedform', to: 'custom_announcements#feedform' - get 'custom_announcement/settings', to: 'custom_announcements#settings' - get 'custom_announcement/import', to: 'custom_announcements#import' - post 'custom_announcement/createsettings', to: 'custom_announcements#createsettings' - patch 'custom_announcement/updatesettings', to: 'custom_announcements#updatesettings' - post 'custom_announcement/import_from_wp', to: 'custom_announcements#import_from_wp' - post 'custom_announcement/generate_iframe_url' => 'custom_announcements#generate_iframe_url' - resources :custom_announcements do - collection do - get "/:custom_module-:bind_uid" => "custom_announcements#index" - get "/:custom_module-:bind_uid/new" => "custom_announcements#new" - get "/:custom_module-:bind_uid/:id/edit" => "custom_announcements#edit" - delete "/:custom_module-:bind_uid/:id/destroy" => "custom_announcements#destroy" - get '/:custom_module-:bind_uid/:id/comment'=> 'custom_announcements#comment' - - get "/:custom_module" => "custom_announcements#index" - get "/:custom_module/new" => "custom_announcements#new" - get "/:custom_module/:id/edit" => "custom_announcements#edit" - delete "/:custom_module/:id/destroy" => "custom_announcements#destroy" - get '/:custom_module/:id/comment'=> 'custom_announcements#comment' - end - end - get 'custom_announcements/:id/comment'=> 'custom_announcements#comment' - get 'annc-comment-hidden/:id' => 'custom_announcements#comment_hidden' - end - - resources :custom_announcements do - collection do - get ':slug_title-:uid', to: 'custom_announcements#show', as: :display - end - end - - get "/xhr/custom_announcements/feed/:uid" => "custom_announcement_feeds#feed" - get "/xhr/custom_announcements/rssfeed/:uid" => "custom_announcement_feeds#rssfeed" - get "/xhr/custom_announcements/feeds" => "custom_announcement_feeds#feeds" - get '/xhr/custom_announcements/custom_announcement.json', to: 'custom_bulletins#get_custom_bulletins' - get '/xhr/panel/custom_announcement/widget/sync_data' => 'custom_announcements#show_widget' - get '/xhr/custom_announcements/:slug_title-:uid/comment', to: 'custom_announcements#comment' - get '/xhr/custom_announcements/file/:id/*f_name' => 'custom_announcements#get_file' - end - -end diff --git a/custom_announcement/custom_announcement.gemspec b/custom_announcement/custom_announcement.gemspec deleted file mode 100644 index 0a60965..0000000 --- a/custom_announcement/custom_announcement.gemspec +++ /dev/null @@ -1,37 +0,0 @@ -# encoding: UTF-8 -$:.push File.expand_path("../lib", __FILE__) - -# Maintain your gem's version: -require "custom_announcement/version" -require 'json' -bundle_update_flag = ARGV[0]=='update' || ARGV[0]=='install' -if bundle_update_flag - env_pwd = ENV['PWD'] - app_path = File.expand_path(__dir__) - template_path = env_pwd + '/app/templates' - all_template = Dir.glob(template_path+'/*/') - all_template.each do |folder| - if !folder.include?('mobile') - if Dir.exist?("#{folder}modules/") - Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)} - end - end - end -end -# Describe your gem and declare its dependencies: -Gem::Specification.new do |s| - s.name = "custom_announcement" - s.version = CustomAnnouncement::VERSION - s.authors = ["RulingDigital"] - s.email = ["bohung@rulingcom.com"] - s.homepage = "http://www.rulingcom.com" - s.summary = "CustomAnnouncements for Orbit" - s.description = "CustomAnnouncements for Orbit" - s.license = "MIT" - - s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] - s.test_files = Dir["test/**/*"] - - s.add_dependency "rufus-scheduler", "~> 3.6.0" - s.add_dependency "mimemagic" , "0.3.9" -end diff --git a/custom_announcement/lib/custom_announcement.rb b/custom_announcement/lib/custom_announcement.rb deleted file mode 100644 index 2bbb27f..0000000 --- a/custom_announcement/lib/custom_announcement.rb +++ /dev/null @@ -1,4 +0,0 @@ -require "custom_announcement/engine" -module CustomAnnouncement - -end diff --git a/custom_announcement/lib/custom_announcement/engine.rb b/custom_announcement/lib/custom_announcement/engine.rb deleted file mode 100644 index 96751f2..0000000 --- a/custom_announcement/lib/custom_announcement/engine.rb +++ /dev/null @@ -1,154 +0,0 @@ -require "yaml" -module CustomAnnouncement - class Engine < ::Rails::Engine - initializer "custom_announcement" do - begin - translate_data = Dir["#{CustomAnnouncement::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))} - data = {} - key1 = {} - key2 = {} - key3 = {} - key4 = {} - key1_attr = [] - key2_attr = [] - key3_attr = [] - key4_attr = [] - data_item = {} - key_item1 = {} - key_item2 = {} - key_item3 = {} - value_item1 = {} - value_item2 = {} - value_item3 = {} - value2_item1 = {} - value2_item2 = {} - key1_options = ['small_size','medium_size','orignal_size'] - key2_options = ['not_enable_tabs','enable_tabs_with_categories_include_all','enable_tabs_with_categories'] - key3_options = ['default','upper_left','lower_left','upper_right','lower_right'] - key4_options = ['the_same_as_data_count','display_all_in_other_tabs'] - key1_options.each_with_index do |k,i| - key1_attr[i] = {} - end - key2_options.each_with_index do |k,i| - key2_attr[i] = {} - end - key3_options.each_with_index do |k,i| - key3_attr[i] = {} - end - key4_options.each_with_index do |k,i| - key4_attr[i] = {} - end - translate_data.each do |t_data| - v = t_data.values - k = t_data.keys[0] - key1[k] = v[0]['custom_announcement']['picture_showing_size'] - key2[k] = v[0]['custom_announcement']['tabs_options'] - key3[k] = v[0]['custom_announcement']['read_more_position_options'] - key4[k] = v[0]['custom_announcement']['all_tabs_setting'] - key1_options.each_with_index do |kk,i| - key1_attr[i][k] = v[0]['custom_announcement'][kk] - end - key2_options.each_with_index do |kk,i| - key2_attr[i][k] = v[0]['custom_announcement'][kk] - end - key3_options.each_with_index do |kk,i| - key3_attr[i][k] = v[0]['custom_announcement'][kk] - end - key4_options.each_with_index do |kk,i| - key4_attr[i][k] = v[0]['custom_announcement'][kk] - end - key_item1[k] = v[0]['custom_announcement']['showing_back_and_next'] - key_item2[k] = v[0]['custom_announcement']['enable_search'] - value_item1[k] = v[0]['custom_announcement']['not_show'] - value_item2[k] = v[0]['custom_announcement']['show_bottom'] - value_item3[k] = v[0]['custom_announcement']['show_top'] - value2_item1[k] = v[0]['custom_announcement']['no'] - value2_item2[k] = v[0]['custom_announcement']['yes'] - end - data[key1] = key1_attr - data[key2] = key2_attr - data[key3] = key3_attr - data[key4] = key4_attr - data_item[key_item1] = [value_item1,value_item2,value_item3] - data_item[key_item2] = [value2_item1,value2_item2] - require File.expand_path('../../../app/models/custom_anns_cache', __FILE__) - if defined? CustomAnnsCache - CustomAnnsCache.destroy_all - end - rescue => e - puts ['error in custom_announcement',e] - end - OrbitApp.registration "CustomAnnouncement", :type => "ModuleApp" do - module_label "custom_announcement.custom_announcement" - base_url File.expand_path File.dirname(__FILE__) - widget_methods ["widget","random_custom_announcement_widget", "tag_cloud"] - widget_settings [{"data_count"=>30,"enable_custom_widget_data"=>true}] - taggable "CustomBulletin" - categorizable - authorizable - frontend_enabled - feeds_url "/xhr/custom_announcements/feeds" - data_count 1..30 - begin - show_options data - show_option_items data_item - rescue => e - puts ['there_was_no_show_option_method',e] - end - side_bar do - set_sidebar_order(100) rescue nil - head_label_i18n 'custom_announcement.custom_announcement', icon_class: "icon-bullhorn" - available_for "users" - active_for_controllers (['admin/custom_announcements']) - head_link_path "admin_custom_announcements_path" - - context_link 'custom_announcement.all_articles', - :link_path=>"admin_custom_announcements_path" , - :priority=>1, - :active_for_action=>{'admin/custom_announcements'=>'index'}, - :available_for => 'users' - # context_link 'new_', - # :link_path=>"new_admin_custom_announcement_path" , - # :priority=>2, - # :active_for_action=>{'admin/custom_announcements'=>'new'}, - # :available_for => 'sub_managers' - context_link 'categories', - :link_path=>"admin_module_app_categories_path" , - :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'custom_announcement').id}", - :priority=>3, - :active_for_action=>{'admin/custom_announcements'=>'categories'}, - :active_for_category => 'CustomAnnouncement', - :available_for => 'managers' - context_link 'tags', - :link_path=>"admin_module_app_tags_path" , - :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'custom_announcement').id}", - :priority=>4, - :active_for_action=>{'admin/custom_announcements'=>'tags'}, - :active_for_tag => 'CustomAnnouncement', - :available_for => 'managers' - context_link 'custom_announcement.feed_list', - :link_path=>"admin_custom_announcement_feed_path" , - :priority=>5, - :active_for_action=>{'admin/custom_announcements'=>'feed'}, - :available_for => 'managers' - context_link 'custom_announcement.import', - :link_path=>"admin_custom_announcement_import_path" , - :priority=>6, - :active_for_action=>{'admin/custom_announcements'=>'import'}, - :available_for => 'managers' - context_link 'custom_announcement.settings', - :link_path=>"admin_custom_announcement_settings_path" , - :priority=>6, - :active_for_action=>{'admin/custom_announcements'=>'settings'}, - :available_for => 'managers' - end - - end - # temp = YAML.load_file(File.join(Rails.root,"config","mongoid.yml")) - # dbsettings = temp["production"]["sessions"]["default"] - # s = Moped::Session.new(dbsettings["hosts"]) - # s.use dbsettings["database"] - # s[:custom_bulletins].indexes.create({expirable_created_at: 1},{ expireAfterSeconds: 180 }) - end - end -end \ No newline at end of file diff --git a/custom_announcement/lib/custom_announcement/version.rb b/custom_announcement/lib/custom_announcement/version.rb deleted file mode 100644 index ca643c0..0000000 --- a/custom_announcement/lib/custom_announcement/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module CustomAnnouncement - VERSION = "0.0.1" -end diff --git a/custom_announcement/lib/custom_bulletin_model/cache.rb b/custom_announcement/lib/custom_bulletin_model/cache.rb deleted file mode 100644 index 4f9c84d..0000000 --- a/custom_announcement/lib/custom_bulletin_model/cache.rb +++ /dev/null @@ -1,20 +0,0 @@ -module CustomBulletinModel - module Cache - require 'active_support/concern' - extend ActiveSupport::Concern - included do - before_save :do_before_save - end - def do_before_save - if self.class == SubPart - CustomAnnsCache.where(parent_id:self.id).destroy - elsif self.class == CustomBulletin || (self.class == Page && self.module == "custom_announcement") - if self.class == CustomBulletin - tmp_tag_ids = (Array(self.tag_ids) + Array(self.org_tag_ids)).uniq - CustomBulletinFeedCache.where(:uid.in => CustomBulletinFeed.where(:tag_ids.in => tmp_tag_ids.collect{|v| v.to_s}).pluck(:uid)).destroy - end - CustomAnnsCache.all.destroy - end - end - end -end \ No newline at end of file diff --git a/custom_announcement/lib/tasks/custom_bulletin_tasks.rake b/custom_announcement/lib/tasks/custom_bulletin_tasks.rake deleted file mode 100644 index e7b7693..0000000 --- a/custom_announcement/lib/tasks/custom_bulletin_tasks.rake +++ /dev/null @@ -1,8 +0,0 @@ -desc 'Remove duplicated custom_bulletins (custom_announcements) created by preview' - -namespace :custom_bulletin do - task :remove_preview_custom_bulletins => [:environment] do - custom_bulletins = CustomBulletin.where(is_preview: true) - custom_bulletins.destroy_all - end -end diff --git a/custom_announcement/modules/custom_announcement/_annc_widget1.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget1.html.erb deleted file mode 100644 index 7874f6a..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget1.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • -
      - {{img_description}} -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget10.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget10.html.erb deleted file mode 100644 index 8f355bb..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget10.html.erb +++ /dev/null @@ -1,22 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • -

      - - {{status}} - - {{title}} -

      - -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget11.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget11.html.erb deleted file mode 100644 index 8cb505b..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget11.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • - -

      - - {{status}} - - {{title}} -

      -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget12.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget12.html.erb deleted file mode 100644 index c28572a..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget12.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
    -

    - {{widget-title}} -

    - - - - - - - - - - - - - -
    {{title-head}}{{date-head}}
    - - {{status}} - - {{title}} -
    - -
    \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/_annc_widget13.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget13.html.erb deleted file mode 100644 index 8c84f35..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget13.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
    -

    - {{widget-title}} -

    - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}
    - - {{status}} - - {{title}} -
    - -
    \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/_annc_widget14.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget14.html.erb deleted file mode 100644 index e80bd4e..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget14.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -
    -

    - {{widget-title}} -

    -
    -
    - {{main_picture_description}} -
    -
      -
    • -
      -

      - - {{status}} - - {{title}} -

      - -
      -
    • -
    -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget15.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget15.html.erb deleted file mode 100644 index 7d7dc70..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget15.html.erb +++ /dev/null @@ -1,162 +0,0 @@ -
    - -
    - - -
    -
      -
    • -
      - {{img_description}} -
      -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    -
    - - diff --git a/custom_announcement/modules/custom_announcement/_annc_widget16.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget16.html.erb deleted file mode 100644 index e8f44b7..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget16.html.erb +++ /dev/null @@ -1,47 +0,0 @@ -
    - -

    - {{widget-title}} -

    - - - -
    - -
    -
    - {{img_description}} -
    -
    -
    - - {{status}} - - -
    -

    - {{title}} -

    -
    -
    -
    -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget17.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget17.html.erb deleted file mode 100644 index f89b735..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget17.html.erb +++ /dev/null @@ -1,31 +0,0 @@ -
    -
    -

    Search

    -
    -

    - - -

    -
    -
    -

    - {{widget-title}} -

    -
      -
    • - -

      - - {{status}} - - {{title}} -

      -
    • -
    - -
    \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/_annc_widget18.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget18.html.erb deleted file mode 100644 index 059e48d..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget18.html.erb +++ /dev/null @@ -1,86 +0,0 @@ -
    - - -
    - - \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/_annc_widget2.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget2.html.erb deleted file mode 100644 index ac0e8b9..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget2.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • -
      - {{img_description}} -
      -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget3.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget3.html.erb deleted file mode 100644 index 1dd7f21..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget3.html.erb +++ /dev/null @@ -1,34 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
      - {{img_description}} -
      -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget4.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget4.html.erb deleted file mode 100644 index 1c00e14..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget4.html.erb +++ /dev/null @@ -1,107 +0,0 @@ -
    - -
      -
    • -
      - {{img_description}} -
      -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    -
    - - diff --git a/custom_announcement/modules/custom_announcement/_annc_widget5.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget5.html.erb deleted file mode 100644 index 836d1ee..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget5.html.erb +++ /dev/null @@ -1,31 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • -
      -
      - - - - {{category}} - - - {{status}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget6.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget6.html.erb deleted file mode 100644 index 78d2489..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget6.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • - - - {{category}} - -

      - - {{status}} - - {{title}} -

      - -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget7.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget7.html.erb deleted file mode 100644 index f229ae5..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget7.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
    -

    - {{widget-title}} -

    -
      -
    • - -

      - - {{status}} - - {{title}} -

      - - - {{category}} - -
    • -
    - -
    diff --git a/custom_announcement/modules/custom_announcement/_annc_widget8.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget8.html.erb deleted file mode 100644 index d251900..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget8.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -
    -

    - {{widget-title}} -

    - - - - - - - - - - - - - - - -
    {{category-head}}{{title-head}}{{date-head}}
    {{category}} - - {{status}} - - {{title}} -
    - -
    \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/_annc_widget9.html.erb b/custom_announcement/modules/custom_announcement/_annc_widget9.html.erb deleted file mode 100644 index 008b072..0000000 --- a/custom_announcement/modules/custom_announcement/_annc_widget9.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -
    -

    - {{widget-title}} -

    - - - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}{{category-head}}
    - - {{status}} - - {{title}} - {{category}}
    - -
    \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index1.html.erb b/custom_announcement/modules/custom_announcement/annc_index1.html.erb deleted file mode 100644 index 9623c45..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index1.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - -
    {{category-head}}{{title-head}}{{date-head}}
    {{category}} - - {{status}} - - {{title}} -
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index10.html.erb b/custom_announcement/modules/custom_announcement/annc_index10.html.erb deleted file mode 100644 index c589b43..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index10.html.erb +++ /dev/null @@ -1,22 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • - -

      - - {{status}} - - {{title}} -

      - - - {{category}} - -
    • -
    > -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index11.html.erb b/custom_announcement/modules/custom_announcement/annc_index11.html.erb deleted file mode 100644 index 7365c75..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index11.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • -

      - - {{status}} - - {{title}} -

      - -
    • -
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index12.html.erb b/custom_announcement/modules/custom_announcement/annc_index12.html.erb deleted file mode 100644 index bed0aff..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index12.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • - -

      - - {{status}} - - {{title}} -

      -
    • -
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index13.html.erb b/custom_announcement/modules/custom_announcement/annc_index13.html.erb deleted file mode 100644 index bee85e5..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index13.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - -
    {{title-head}}{{date-head}}
    - - {{status}} - - {{title}} -
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index14.html.erb b/custom_announcement/modules/custom_announcement/annc_index14.html.erb deleted file mode 100644 index f80ca3b..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index14.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}
    - - {{status}} - - {{title}} -
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index15.html.erb b/custom_announcement/modules/custom_announcement/annc_index15.html.erb deleted file mode 100644 index 3eb9a05..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index15.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}{{view-count-head}}
    - - {{status}} - - {{title}} - {{view_count}}
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index16.html.erb b/custom_announcement/modules/custom_announcement/annc_index16.html.erb deleted file mode 100644 index d282496..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index16.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}{{link-head}}{{file-head}}
    - - {{status}} - - {{title}} - - -
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index17.html.erb b/custom_announcement/modules/custom_announcement/annc_index17.html.erb deleted file mode 100644 index 0e35310..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index17.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - - - -
    {{category-head}}{{title-head}}{{date-head}}{{department-head}}
    {{category}} - - {{status}} - - {{title}} - {{department}}
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index2.html.erb b/custom_announcement/modules/custom_announcement/annc_index2.html.erb deleted file mode 100644 index 864061e..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index2.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - - - -
    {{category-head}}{{title-head}}{{date-head}}{{view-count-head}}
    {{category}} - - {{status}} - - {{title}} - {{view_count}}
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index3.html.erb b/custom_announcement/modules/custom_announcement/annc_index3.html.erb deleted file mode 100644 index b69e56f..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index3.html.erb +++ /dev/null @@ -1,25 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}{{category-head}}
    - - {{status}} - - {{title}} - {{category}}
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index4.html.erb b/custom_announcement/modules/custom_announcement/annc_index4.html.erb deleted file mode 100644 index e95aa94..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index4.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -
    -

    {{page-title}}

    - - - - - - - - - - - - - - - - - -
    {{date-head}}{{title-head}}{{category-head}}{{view-count-head}}
    - - {{status}} - - {{title}} - {{category}}{{view_count}}
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index5.html.erb b/custom_announcement/modules/custom_announcement/annc_index5.html.erb deleted file mode 100644 index d0614d0..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index5.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • -
      - {{img_description}} -
      -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    -
    -{{pagination_goes_here}} diff --git a/custom_announcement/modules/custom_announcement/annc_index6.html.erb b/custom_announcement/modules/custom_announcement/annc_index6.html.erb deleted file mode 100644 index 4e29e2a..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index6.html.erb +++ /dev/null @@ -1,30 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
      - {{img_description}} -
      -
    • -
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index7.html.erb b/custom_announcement/modules/custom_announcement/annc_index7.html.erb deleted file mode 100644 index b731bc9..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index7.html.erb +++ /dev/null @@ -1,83 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • -
      - {{img_description}} -
      -
      -
      - - {{status}} - - - - - {{category}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    -
    -{{pagination_goes_here}} - diff --git a/custom_announcement/modules/custom_announcement/annc_index8.html.erb b/custom_announcement/modules/custom_announcement/annc_index8.html.erb deleted file mode 100644 index b4e0462..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index8.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • -
      -
      - - - - {{category}} - - - {{status}} - -
      -

      - {{title}} -

      -

      {{subtitle}}

      -
      -
    • -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/annc_index9.html.erb b/custom_announcement/modules/custom_announcement/annc_index9.html.erb deleted file mode 100644 index dd09135..0000000 --- a/custom_announcement/modules/custom_announcement/annc_index9.html.erb +++ /dev/null @@ -1,22 +0,0 @@ -
    -

    {{page-title}}

    -
      -
    • - - - {{category}} - -

      - - {{status}} - - {{title}} -

      - -
    • -
    -
    -{{pagination_goes_here}} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/info.json b/custom_announcement/modules/custom_announcement/info.json deleted file mode 100644 index 476c487..0000000 --- a/custom_announcement/modules/custom_announcement/info.json +++ /dev/null @@ -1,288 +0,0 @@ -{ - "frontend": [ - { - "filename" : "annc_index1", - "name" : { - "zh_tw" : "1. 標準標題列表-1A ( 模組標題, 類別, 狀態, 標題, 日期 )", - "en" : "1. Standard Title List-1 (widget-title, category, status, title, postdate)" - }, - "thumbnail" : "annc_index1_thumbs.png" - }, - { - "filename" : "annc_index2", - "name" : { - "zh_tw" : "2. 標準標題列表-1B ( 模組標題, 類別, 狀態, 標題, 日期, 瀏覽人次 )", - "en" : "2. Standard Title List-1B (widget-title, category, status, title, postdate, view-count)" - }, - "thumbnail" : "annc_index2_thumbs.png" - }, - { - "filename" : "annc_index3", - "name" : { - "zh_tw" : "3. 標準表格列表-2A ( 模組標題, 日期, 狀態, 標題, 類別 )", - "en" : "3. Standard Table List-2 (widget-title, postdate, status, title, category)" - }, - "thumbnail" : "annc_index3_thumbs.png" - }, - { - "filename" : "annc_index4", - "name" : { - "zh_tw" : "4. 標準表格列表-2B ( 模組標題, 日期, 狀態, 標題, 類別, 瀏覽人次 )", - "en" : "4. Standard Table List-2 (widget-title, postdate, status, title, category, view-count)" - }, - "thumbnail" : "annc_index4_thumbs.png" - }, - { - "filename" : "annc_index5", - "name" : { - "zh_tw" : "5. 左圖右文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "5. Balanced Image + Text(Left) (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_index5_thumbs.png" - }, - { - "filename" : "annc_index6", - "name" : { - "zh_tw" : "6. 右圖左文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "6. Balanced Image + Text(Right) (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_index6_thumbs.png" - }, - { - "filename" : "annc_index7", - "name" : { - "zh_tw" : "7. 三欄圖文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "7. 3-Column Standard Image + Text (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_index7_thumbs.png" - }, - { - "filename" : "annc_index8", - "name" : { - "zh_tw" : "8. 標準文字列表 ( 模組標題, 日期, 類別, 狀態, 標題, 副標題 )", - "en" : "8. Standard Text List (widget-title, postdate, category, status, title, subtitle)" - }, - "thumbnail" : "annc_index8_thumbs.png" - }, - { - "filename" : "annc_index9", - "name" : { - "zh_tw" : "9. 標準標題列表-1 ( 模組標題, 類別, 狀態, 標題, 日期 )", - "en" : "9. Standard Title List-1 (widget-title, category, status, title, postdate)" - }, - "thumbnail" : "annc_index9_thumbs.png" - }, - { - "filename" : "annc_index10", - "name" : { - "zh_tw" : "10. 標準標題列表-2 ( 模組標題, 日期, 狀態, 標題, 類別 )", - "en" : "10. Standard Title List-2 (widget-title, postdate, status, title, category)" - }, - "thumbnail" : "annc_index10_thumbs.png" - }, - { - "filename" : "annc_index11", - "name" : { - "zh_tw" : "11. 精簡標題列表-1 ( 模組標題, 狀態, 標題, 日期 )", - "en" : "11. Simple Title List-1 (widget-title, status, title, postdate)" - }, - "thumbnail" : "annc_index11_thumbs.png" - }, - { - "filename" : "annc_index12", - "name" : { - "zh_tw" : "12. 精簡標題列表-2 ( 模組標題, 日期, 狀態, 標題 )", - "en" : "12. Simple Title List-2 (widget-title, postdate, status, title)" - }, - "thumbnail" : "annc_index12_thumbs.png" - }, - { - "filename" : "annc_index13", - "name" : { - "zh_tw" : "13. 精簡表格列表-1 ( 模組標題, 狀態, 標題, 日期 )", - "en" : "13. Simple Table List (widget-title, status, title, postdate)" - }, - "thumbnail" : "annc_index13_thumbs.png" - }, - { - "filename" : "annc_index14", - "name" : { - "zh_tw" : "14. 精簡表格列表-2 ( 模組標題, 日期, 狀態, 標題 )", - "en" : "14. Simple Table List (widget-title, postdate, status, title)" - }, - "thumbnail" : "annc_index14_thumbs.png" - }, - { - "filename" : "annc_index15", - "name" : { - "zh_tw" : "15. 精簡表格列表-3 ( 模組標題, 日期, 狀態, 標題, 瀏覽人次 )", - "en" : "15. Simple Table List (widget-title, postdate, status, title, view-count)" - }, - "thumbnail" : "annc_index15_thumbs.png" - }, - { - "filename" : "annc_index16", - "name" : { - "zh_tw" : "16. 連結 + 附件表格列表 ( 模組標題, 類別, 狀態, 標題 )", - "en" : "16. Table List including Links and attachments (widget-title, category, status, title, view-count)" - }, - "thumbnail" : "annc_index16_thumbs.png" - }, - { - "filename" : "annc_index17", - "name" : { - "zh_tw" : "17. 標準標題列表-1A ( 類別, 標題, 日期, 張貼人 )", - "en" : "1. Standard Title List-1 ( category, title, postdate, department)" - }, - "thumbnail" : "annc_index1_thumbs.png" - } - ], - "widgets" : [ - { - "filename" : "annc_widget1", - "name" : { - "zh_tw" : "1. 標準圖文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "1. Standard Image + Text (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_widget1_thumbs.png" - }, - { - "filename" : "annc_widget2", - "name" : { - "zh_tw" : "2. 左圖右文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "2. Balanced Image + Text(Left) (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_widget2_thumbs.png" - }, - { - "filename" : "annc_widget3", - "name" : { - "zh_tw" : "3. 右圖左文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "3. Balanced Image + Text(Right) (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_widget3_thumbs.png" - }, - { - "filename" : "annc_widget4", - "force_cover": "true", - "name" : { - "zh_tw" : "4. 三欄圖文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "4. 3-Column Standard Image + Text (widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_widget4_thumbs.png" - }, - { - "filename" : "annc_widget15", - "force_cover": "true", - "name" : { - "zh_tw" : "4.5. 三欄圖文-slide ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )", - "en" : "4.5. 3-Column Standard Image + Text -slide(widget-title, image, status, postdate, category, title, subtitle)" - }, - "thumbnail" : "annc_widget4_thumbs.png" - }, - { - "filename" : "annc_widget5", - "name" : { - "zh_tw" : "5. 標準文字列表 ( 模組標題, 日期, 類別, 狀態, 標題, 副標題 )", - "en" : "5. Standard Text List (widget-title, postdate, category, status, title, subtitle)" - }, - "thumbnail" : "annc_widget5_thumbs.png" - }, - { - "filename" : "annc_widget6", - "name" : { - "zh_tw" : "6. 標準標題列表-1 ( 模組標題, 類別, 狀態, 標題, 日期 )", - "en" : "6. Standard Title List-1 (widget-title, category, status, title, postdate)" - }, - "thumbnail" : "annc_widget6_thumbs.png" - }, - { - "filename" : "annc_widget7", - "name" : { - "zh_tw" : "7. 標準標題列表-2 ( 模組標題, 日期, 狀態, 標題, 類別 )", - "en" : "7. Standard Title List-2 (widget-title, postdate, status, title, category)" - }, - "thumbnail" : "annc_widget7_thumbs.png" - }, - { - "filename" : "annc_widget8", - "name" : { - "zh_tw" : "8. 標準表格列表-1 ( 模組標題, 類別, 狀態, 標題, 日期 )", - "en" : "8. Standard Table List-1 (widget-title, category, status, title, postdate)" - }, - "thumbnail" : "annc_widget8_thumbs.png" - }, - { - "filename" : "annc_widget9", - "name" : { - "zh_tw" : "9. 標準表格列表-2 ( 模組標題, 日期, 狀態, 標題, 類別 )", - "en" : "9. Standard Table List-2 (widget-title, postdate, status, title, category)" - }, - "thumbnail" : "annc_widget9_thumbs.png" - }, - { - "filename" : "annc_widget10", - "name" : { - "zh_tw" : "10. 精簡標題列表-1 ( 模組標題, 狀態, 標題, 日期 )", - "en" : "10. Simple Title List-1 (widget-title, status, title, postdate)" - }, - "thumbnail" : "annc_widget10_thumbs.png" - }, - { - "filename" : "annc_widget11", - "name" : { - "zh_tw" : "11. 精簡標題列表-2 ( 模組標題, 日期, 狀態, 標題 )", - "en" : "11. Simple Title List-2 (widget-title, postdate, status, title)" - }, - "thumbnail" : "annc_widget11_thumbs.png" - }, - { - "filename" : "annc_widget12", - "name" : { - "zh_tw" : "12. 精簡表格列表-1 ( 模組標題, 狀態, 標題, 日期 )", - "en" : "12. Simple Table List (widget-title, status, title, postdate)" - }, - "thumbnail" : "annc_widget12_thumbs.png" - }, - { - "filename" : "annc_widget13", - "name" : { - "zh_tw" : "13. 精簡表格列表-2 ( 模組標題, 日期, 狀態, 標題 )", - "en" : "13. Simple Table List (widget-title, postdate, status, title)" - }, - "thumbnail" : "annc_widget13_thumbs.png" - }, - { - "filename" : "annc_widget14", - "name" : { - "zh_tw" : "14. 一圖 + 標題列表 ( 模組標題, 圖片, 狀態, 標題, 日期 )", - "en" : "14. 1 Image + Title List (widget-title, image, status, title, postdate)" - }, - "thumbnail" : "annc_widget14_thumbs.png" - }, - { - "filename" : "annc_widget18", - "name" : { - "zh_tw" : "15. 三欄圖文精簡版 ( 模組標題, 標題, 副標題(只顯示15字) )", - "en" : "15. 3-Column Standard Image + Text Lite (widget-title, title, subtitle(only display 15 words))" - }, - "thumbnail" : "annc_widget4_thumbs.png" - }, - { - "filename" : "annc_widget16", - "name" : { - "zh_tw" : "16. 單欄圖文輪播 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題 )", - "en" : "16. Image + Text slide (widget-title, image, status, postdate, category, title)" - }, - "thumbnail" : "annc_widget1_thumbs.png" - }, - { - "filename" : "annc_widget17", - "name" : { - "zh_tw" : "17. 含搜尋功能之精簡標題列表-2 ( 模組標題, 日期, 狀態, 標題 )", - "en" : "17. Simple Title List-2 (widget-title, postdate, status, title), including search" - }, - "thumbnail" : "annc_widget11_thumbs.png" - } - ] -} \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/show.html.erb b/custom_announcement/modules/custom_announcement/show.html.erb deleted file mode 100644 index b31da4c..0000000 --- a/custom_announcement/modules/custom_announcement/show.html.erb +++ /dev/null @@ -1,342 +0,0 @@ - -
    -

    {{title}}

    - -
      -
    • - - {{updated_at}} -
    • -
    • - - {{update_user}} -
    • -
    • - - - {{tag}} - -
    • -
    - -
    -
    - {{img_description}} - {{img_description}} -
    -
    {{subtitle_ann}}
    -
    {{body}}
    -
    - - - -
    - - -{{link_to_edit}} - - \ No newline at end of file diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index10_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index10_thumbs.png deleted file mode 100644 index 0745dc6..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index10_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index11_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index11_thumbs.png deleted file mode 100644 index 8dc2261..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index11_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index12_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index12_thumbs.png deleted file mode 100644 index 2e00654..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index12_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index13_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index13_thumbs.png deleted file mode 100644 index 82eee2c..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index13_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index14_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index14_thumbs.png deleted file mode 100644 index 0a58044..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index14_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index15_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index15_thumbs.png deleted file mode 100644 index cb9ed5e..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index15_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index16_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index16_thumbs.png deleted file mode 100644 index 6ecaa4e..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index16_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index1_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index1_thumbs.png deleted file mode 100644 index 0ad29c4..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index1_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index2_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index2_thumbs.png deleted file mode 100644 index d7baca7..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index2_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index3_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index3_thumbs.png deleted file mode 100644 index 0193f81..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index3_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index4_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index4_thumbs.png deleted file mode 100644 index 7c0a551..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index4_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index5_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index5_thumbs.png deleted file mode 100644 index 832fe35..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index5_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index6_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index6_thumbs.png deleted file mode 100644 index eac8619..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index6_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index7_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index7_thumbs.png deleted file mode 100644 index b69abd9..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index7_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index8_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index8_thumbs.png deleted file mode 100644 index cf6eb30..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index8_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_index9_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_index9_thumbs.png deleted file mode 100644 index 9fc7c23..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_index9_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget10_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget10_thumbs.png deleted file mode 100644 index 8dc2261..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget10_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget11_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget11_thumbs.png deleted file mode 100644 index 2e00654..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget11_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget12_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget12_thumbs.png deleted file mode 100644 index 82eee2c..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget12_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget13_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget13_thumbs.png deleted file mode 100644 index 0a58044..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget13_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget14_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget14_thumbs.png deleted file mode 100644 index d1cab18..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget14_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget1_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget1_thumbs.png deleted file mode 100644 index 77ba0a8..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget1_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget2_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget2_thumbs.png deleted file mode 100644 index 832fe35..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget2_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget3_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget3_thumbs.png deleted file mode 100644 index eac8619..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget3_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget4_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget4_thumbs.png deleted file mode 100644 index b69abd9..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget4_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget5_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget5_thumbs.png deleted file mode 100644 index cf6eb30..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget5_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget6_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget6_thumbs.png deleted file mode 100644 index 9fc7c23..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget6_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget7_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget7_thumbs.png deleted file mode 100644 index 0745dc6..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget7_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget8_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget8_thumbs.png deleted file mode 100644 index 7cfddf7..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget8_thumbs.png and /dev/null differ diff --git a/custom_announcement/modules/custom_announcement/thumbs/annc_widget9_thumbs.png b/custom_announcement/modules/custom_announcement/thumbs/annc_widget9_thumbs.png deleted file mode 100644 index b0a2bb4..0000000 Binary files a/custom_announcement/modules/custom_announcement/thumbs/annc_widget9_thumbs.png and /dev/null differ diff --git a/custom_announcement/source.txt b/custom_announcement/source.txt deleted file mode 100644 index 2ea6f7f..0000000 --- a/custom_announcement/source.txt +++ /dev/null @@ -1 +0,0 @@ -http://gitlab.tp.rulingcom.com/chiu/custom_announcement.git \ No newline at end of file diff --git a/custom_announcement/test/controllers/admin/custom_announcements_controller_test.rb b/custom_announcement/test/controllers/admin/custom_announcements_controller_test.rb deleted file mode 100644 index 3e91633..0000000 --- a/custom_announcement/test/controllers/admin/custom_announcements_controller_test.rb +++ /dev/null @@ -1,14 +0,0 @@ -require 'test_helper' - -class Admin::CustomAnnouncementsControllerTest < ActionController::TestCase - test "should get new" do - get :new - assert_response :success - end - - test "should get create" do - get :create - assert_response :success - end - -end diff --git a/custom_announcement/test/custom_bulletin_test.rb b/custom_announcement/test/custom_bulletin_test.rb deleted file mode 100644 index 118825e..0000000 --- a/custom_announcement/test/custom_bulletin_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'test_helper' - -class CustomBulletinTest < ActiveSupport::TestCase - test "truth" do - assert_kind_of Module, CustomBulletin - end -end diff --git a/custom_announcement/test/dummy/README.rdoc b/custom_announcement/test/dummy/README.rdoc deleted file mode 100644 index dd4e97e..0000000 --- a/custom_announcement/test/dummy/README.rdoc +++ /dev/null @@ -1,28 +0,0 @@ -== README - -This README would normally document whatever steps are necessary to get the -application up and running. - -Things you may want to cover: - -* Ruby version - -* System dependencies - -* Configuration - -* Database creation - -* Database initialization - -* How to run the test suite - -* Services (job queues, cache servers, search engines, etc.) - -* Deployment instructions - -* ... - - -Please feel free to use a different markup language if you do not plan to run -rake doc:app. diff --git a/custom_announcement/test/dummy/Rakefile b/custom_announcement/test/dummy/Rakefile deleted file mode 100644 index ba6b733..0000000 --- a/custom_announcement/test/dummy/Rakefile +++ /dev/null @@ -1,6 +0,0 @@ -# Add your own tasks in files placed in lib/tasks ending in .rake, -# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. - -require File.expand_path('../config/application', __FILE__) - -Rails.application.load_tasks diff --git a/custom_announcement/test/dummy/app/assets/images/.keep b/custom_announcement/test/dummy/app/assets/images/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/app/assets/javascripts/application.js b/custom_announcement/test/dummy/app/assets/javascripts/application.js deleted file mode 100644 index 5bc2e1c..0000000 --- a/custom_announcement/test/dummy/app/assets/javascripts/application.js +++ /dev/null @@ -1,13 +0,0 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, -// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. -// -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// compiled file. -// -// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require_tree . diff --git a/custom_announcement/test/dummy/app/assets/stylesheets/application.css b/custom_announcement/test/dummy/app/assets/stylesheets/application.css deleted file mode 100644 index a443db3..0000000 --- a/custom_announcement/test/dummy/app/assets/stylesheets/application.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This is a manifest file that'll be compiled into application.css, which will include all the files - * listed below. - * - * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, - * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. - * - * You're free to add application-wide styles to this file and they'll appear at the bottom of the - * compiled file so the styles you add here take precedence over styles defined in any styles - * defined in the other CSS/SCSS files in this directory. It is generally better to create a new - * file per style scope. - * - *= require_tree . - *= require_self - */ diff --git a/custom_announcement/test/dummy/app/controllers/application_controller.rb b/custom_announcement/test/dummy/app/controllers/application_controller.rb deleted file mode 100644 index d83690e..0000000 --- a/custom_announcement/test/dummy/app/controllers/application_controller.rb +++ /dev/null @@ -1,5 +0,0 @@ -class ApplicationController < ActionController::Base - # Prevent CSRF attacks by raising an exception. - # For APIs, you may want to use :null_session instead. - protect_from_forgery with: :exception -end diff --git a/custom_announcement/test/dummy/app/controllers/concerns/.keep b/custom_announcement/test/dummy/app/controllers/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/app/helpers/application_helper.rb b/custom_announcement/test/dummy/app/helpers/application_helper.rb deleted file mode 100644 index de6be79..0000000 --- a/custom_announcement/test/dummy/app/helpers/application_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ApplicationHelper -end diff --git a/custom_announcement/test/dummy/app/mailers/.keep b/custom_announcement/test/dummy/app/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/app/models/.keep b/custom_announcement/test/dummy/app/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/app/models/concerns/.keep b/custom_announcement/test/dummy/app/models/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/app/views/layouts/application.html.erb b/custom_announcement/test/dummy/app/views/layouts/application.html.erb deleted file mode 100644 index 593a778..0000000 --- a/custom_announcement/test/dummy/app/views/layouts/application.html.erb +++ /dev/null @@ -1,14 +0,0 @@ - - - - Dummy - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> - <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> - <%= csrf_meta_tags %> - - - -<%= yield %> - - - diff --git a/custom_announcement/test/dummy/bin/bundle b/custom_announcement/test/dummy/bin/bundle deleted file mode 100644 index 66e9889..0000000 --- a/custom_announcement/test/dummy/bin/bundle +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -load Gem.bin_path('bundler', 'bundle') diff --git a/custom_announcement/test/dummy/bin/rails b/custom_announcement/test/dummy/bin/rails deleted file mode 100644 index 728cd85..0000000 --- a/custom_announcement/test/dummy/bin/rails +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../../config/application', __FILE__) -require_relative '../config/boot' -require 'rails/commands' diff --git a/custom_announcement/test/dummy/bin/rake b/custom_announcement/test/dummy/bin/rake deleted file mode 100644 index 1724048..0000000 --- a/custom_announcement/test/dummy/bin/rake +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -require_relative '../config/boot' -require 'rake' -Rake.application.run diff --git a/custom_announcement/test/dummy/config.ru b/custom_announcement/test/dummy/config.ru deleted file mode 100644 index 5bc2a61..0000000 --- a/custom_announcement/test/dummy/config.ru +++ /dev/null @@ -1,4 +0,0 @@ -# This file is used by Rack-based servers to start the application. - -require ::File.expand_path('../config/environment', __FILE__) -run Rails.application diff --git a/custom_announcement/test/dummy/config/application.rb b/custom_announcement/test/dummy/config/application.rb deleted file mode 100644 index e4c8d3a..0000000 --- a/custom_announcement/test/dummy/config/application.rb +++ /dev/null @@ -1,29 +0,0 @@ -require File.expand_path('../boot', __FILE__) - -# Pick the frameworks you want: -# require "active_record/railtie" -require "action_controller/railtie" -require "action_mailer/railtie" -require "action_view/railtie" -require "sprockets/railtie" -require "rails/test_unit/railtie" - -Bundler.require(*Rails.groups) -require "custom_bulletin" - -module Dummy - class Application < Rails::Application - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. - - # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. - # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. - # config.time_zone = 'Central Time (US & Canada)' - - # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - # config.i18n.default_locale = :de - end -end - diff --git a/custom_announcement/test/dummy/config/boot.rb b/custom_announcement/test/dummy/config/boot.rb deleted file mode 100644 index 6266cfc..0000000 --- a/custom_announcement/test/dummy/config/boot.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__) - -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) -$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__) diff --git a/custom_announcement/test/dummy/config/environment.rb b/custom_announcement/test/dummy/config/environment.rb deleted file mode 100644 index ee8d90d..0000000 --- a/custom_announcement/test/dummy/config/environment.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Load the Rails application. -require File.expand_path('../application', __FILE__) - -# Initialize the Rails application. -Rails.application.initialize! diff --git a/custom_announcement/test/dummy/config/environments/development.rb b/custom_announcement/test/dummy/config/environments/development.rb deleted file mode 100644 index a384d95..0000000 --- a/custom_announcement/test/dummy/config/environments/development.rb +++ /dev/null @@ -1,34 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # In the development environment your application's code is reloaded on - # every request. This slows down response time but is perfect for development - # since you don't have to restart the web server when you make code changes. - config.cache_classes = false - - # Do not eager load code on boot. - config.eager_load = false - - # Show full error reports and disable caching. - config.consider_all_requests_local = true - config.action_controller.perform_caching = false - - # Don't care if the mailer can't send. - config.action_mailer.raise_delivery_errors = false - - # Print deprecation notices to the Rails logger. - config.active_support.deprecation = :log - - # Debug mode disables concatenation and preprocessing of assets. - # This option may cause significant delays in view rendering with a large - # number of complex assets. - config.assets.debug = true - - # Adds additional error checking when serving assets at runtime. - # Checks for improperly declared sprockets dependencies. - # Raises helpful error messages. - config.assets.raise_runtime_errors = true - - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true -end diff --git a/custom_announcement/test/dummy/config/environments/production.rb b/custom_announcement/test/dummy/config/environments/production.rb deleted file mode 100644 index 4f67ce3..0000000 --- a/custom_announcement/test/dummy/config/environments/production.rb +++ /dev/null @@ -1,80 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # Code is not reloaded between requests. - config.cache_classes = true - - # Eager load code on boot. This eager loads most of Rails and - # your application in memory, allowing both threaded web servers - # and those relying on copy on write to perform better. - # Rake tasks automatically ignore this option for performance. - config.eager_load = true - - # Full error reports are disabled and caching is turned on. - config.consider_all_requests_local = false - config.action_controller.perform_caching = true - - # Enable Rack::Cache to put a simple HTTP cache in front of your application - # Add `rack-cache` to your Gemfile before enabling this. - # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. - # config.action_dispatch.rack_cache = true - - # Disable Rails's static asset server (Apache or nginx will already do this). - config.serve_static_assets = false - - # Compress JavaScripts and CSS. - config.assets.js_compressor = :uglifier - # config.assets.css_compressor = :sass - - # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = false - - # Generate digests for assets URLs. - config.assets.digest = true - - # Version of your assets, change this if you want to expire all your assets. - config.assets.version = '1.0' - - # Specifies the header that your server uses for sending files. - # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache - # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx - - # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. - # config.force_ssl = true - - # Set to :debug to see everything in the log. - config.log_level = :info - - # Prepend all log lines with the following tags. - # config.log_tags = [ :subdomain, :uuid ] - - # Use a different logger for distributed setups. - # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) - - # Use a different cache store in production. - # config.cache_store = :mem_cache_store - - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = "http://assets.example.com" - - # Precompile additional assets. - # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. - # config.assets.precompile += %w( search.js ) - - # Ignore bad email addresses and do not raise email delivery errors. - # Set this to true and configure the email server for immediate delivery to raise delivery errors. - # config.action_mailer.raise_delivery_errors = false - - # Enable locale fallbacks for I18n (makes lookups for any locale fall back to - # the I18n.default_locale when a translation cannot be found). - config.i18n.fallbacks = true - - # Send deprecation notices to registered listeners. - config.active_support.deprecation = :notify - - # Disable automatic flushing of the log to improve performance. - # config.autoflush_log = false - - # Use default logging formatter so that PID and timestamp are not suppressed. - config.log_formatter = ::Logger::Formatter.new -end diff --git a/custom_announcement/test/dummy/config/environments/test.rb b/custom_announcement/test/dummy/config/environments/test.rb deleted file mode 100644 index 053f5b6..0000000 --- a/custom_announcement/test/dummy/config/environments/test.rb +++ /dev/null @@ -1,39 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # The test environment is used exclusively to run your application's - # test suite. You never need to work with it otherwise. Remember that - # your test database is "scratch space" for the test suite and is wiped - # and recreated between test runs. Don't rely on the data there! - config.cache_classes = true - - # Do not eager load code on boot. This avoids loading your whole application - # just for the purpose of running a single test. If you are using a tool that - # preloads Rails for running tests, you may have to set it to true. - config.eager_load = false - - # Configure static asset server for tests with Cache-Control for performance. - config.serve_static_assets = true - config.static_cache_control = 'public, max-age=3600' - - # Show full error reports and disable caching. - config.consider_all_requests_local = true - config.action_controller.perform_caching = false - - # Raise exceptions instead of rendering exception templates. - config.action_dispatch.show_exceptions = false - - # Disable request forgery protection in test environment. - config.action_controller.allow_forgery_protection = false - - # Tell Action Mailer not to deliver emails to the real world. - # The :test delivery method accumulates sent emails in the - # ActionMailer::Base.deliveries array. - config.action_mailer.delivery_method = :test - - # Print deprecation notices to the stderr. - config.active_support.deprecation = :stderr - - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true -end diff --git a/custom_announcement/test/dummy/config/initializers/backtrace_silencers.rb b/custom_announcement/test/dummy/config/initializers/backtrace_silencers.rb deleted file mode 100644 index 59385cd..0000000 --- a/custom_announcement/test/dummy/config/initializers/backtrace_silencers.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. -# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } - -# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. -# Rails.backtrace_cleaner.remove_silencers! diff --git a/custom_announcement/test/dummy/config/initializers/cookies_serializer.rb b/custom_announcement/test/dummy/config/initializers/cookies_serializer.rb deleted file mode 100644 index 7a06a89..0000000 --- a/custom_announcement/test/dummy/config/initializers/cookies_serializer.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.action_dispatch.cookies_serializer = :json \ No newline at end of file diff --git a/custom_announcement/test/dummy/config/initializers/filter_parameter_logging.rb b/custom_announcement/test/dummy/config/initializers/filter_parameter_logging.rb deleted file mode 100644 index 4a994e1..0000000 --- a/custom_announcement/test/dummy/config/initializers/filter_parameter_logging.rb +++ /dev/null @@ -1,4 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Configure sensitive parameters which will be filtered from the log file. -Rails.application.config.filter_parameters += [:password] diff --git a/custom_announcement/test/dummy/config/initializers/inflections.rb b/custom_announcement/test/dummy/config/initializers/inflections.rb deleted file mode 100644 index ac033bf..0000000 --- a/custom_announcement/test/dummy/config/initializers/inflections.rb +++ /dev/null @@ -1,16 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Add new inflection rules using the following format. Inflections -# are locale specific, and you may define rules for as many different -# locales as you wish. All of these examples are active by default: -# ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.plural /^(ox)$/i, '\1en' -# inflect.singular /^(ox)en/i, '\1' -# inflect.irregular 'person', 'people' -# inflect.uncountable %w( fish sheep ) -# end - -# These inflection rules are supported but not enabled by default: -# ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.acronym 'RESTful' -# end diff --git a/custom_announcement/test/dummy/config/initializers/mime_types.rb b/custom_announcement/test/dummy/config/initializers/mime_types.rb deleted file mode 100644 index 72aca7e..0000000 --- a/custom_announcement/test/dummy/config/initializers/mime_types.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Add new mime types for use in respond_to blocks: -# Mime::Type.register "text/richtext", :rtf -# Mime::Type.register_alias "text/html", :iphone diff --git a/custom_announcement/test/dummy/config/initializers/session_store.rb b/custom_announcement/test/dummy/config/initializers/session_store.rb deleted file mode 100644 index e766b67..0000000 --- a/custom_announcement/test/dummy/config/initializers/session_store.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.session_store :cookie_store, key: '_dummy_session' diff --git a/custom_announcement/test/dummy/config/initializers/wrap_parameters.rb b/custom_announcement/test/dummy/config/initializers/wrap_parameters.rb deleted file mode 100644 index b81ea74..0000000 --- a/custom_announcement/test/dummy/config/initializers/wrap_parameters.rb +++ /dev/null @@ -1,9 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# This file contains settings for ActionController::ParamsWrapper which -# is enabled by default. - -# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. -ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] if respond_to?(:wrap_parameters) -end diff --git a/custom_announcement/test/dummy/config/locales/en.yml b/custom_announcement/test/dummy/config/locales/en.yml deleted file mode 100644 index 0653957..0000000 --- a/custom_announcement/test/dummy/config/locales/en.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Files in the config/locales directory are used for internationalization -# and are automatically loaded by Rails. If you want to use locales other -# than English, add the necessary files in this directory. -# -# To use the locales, use `I18n.t`: -# -# I18n.t 'hello' -# -# In views, this is aliased to just `t`: -# -# <%= t('hello') %> -# -# To use a different locale, set it with `I18n.locale`: -# -# I18n.locale = :es -# -# This would use the information in config/locales/es.yml. -# -# To learn more, please read the Rails Internationalization guide -# available at http://guides.rubyonrails.org/i18n.html. - -en: - hello: "Hello world" diff --git a/custom_announcement/test/dummy/config/routes.rb b/custom_announcement/test/dummy/config/routes.rb deleted file mode 100644 index 3f66539..0000000 --- a/custom_announcement/test/dummy/config/routes.rb +++ /dev/null @@ -1,56 +0,0 @@ -Rails.application.routes.draw do - # The priority is based upon order of creation: first created -> highest priority. - # See how all your routes lay out with "rake routes". - - # You can have the root of your site routed with "root" - # root 'welcome#index' - - # Example of regular route: - # get 'products/:id' => 'catalog#view' - - # Example of named route that can be invoked with purchase_url(id: product.id) - # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase - - # Example resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Example resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Example resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Example resource route with more complex sub-resources: - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', on: :collection - # end - # end - - # Example resource route with concerns: - # concern :toggleable do - # post 'toggle' - # end - # resources :posts, concerns: :toggleable - # resources :photos, concerns: :toggleable - - # Example resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end -end diff --git a/custom_announcement/test/dummy/config/secrets.yml b/custom_announcement/test/dummy/config/secrets.yml deleted file mode 100644 index e9213c0..0000000 --- a/custom_announcement/test/dummy/config/secrets.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Your secret key is used for verifying the integrity of signed cookies. -# If you change this key, all old signed cookies will become invalid! - -# Make sure the secret is at least 30 characters and all random, -# no regular words or you'll be exposed to dictionary attacks. -# You can use `rake secret` to generate a secure secret key. - -# Make sure the secrets in this file are kept private -# if you're sharing your code publicly. - -development: - secret_key_base: 51f457918fc204bef2280de08080b24d6289997cc1af905e47aead42b5e027b6bc27cd6cbd1cb11a34d8df4163d63db2a0ff973acfa11b239a5dd15d6bfb5bfd - -test: - secret_key_base: 1a2d31f4fb35a33e52a69eac67e125b9b1ba5b302e8d3468e60282061a8e74d1a8d977fb88f2eb001aecb99c9c3fbde29e0c7c5ac5d548e1458772ee50ed48e9 - -# Do not keep production secrets in the repository, -# instead read values from the environment. -production: - secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/custom_announcement/test/dummy/lib/assets/.keep b/custom_announcement/test/dummy/lib/assets/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/log/.keep b/custom_announcement/test/dummy/log/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/dummy/public/404.html b/custom_announcement/test/dummy/public/404.html deleted file mode 100644 index b612547..0000000 --- a/custom_announcement/test/dummy/public/404.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - The page you were looking for doesn't exist (404) - - - - - - -
    -
    -

    The page you were looking for doesn't exist.

    -

    You may have mistyped the address or the page may have moved.

    -
    -

    If you are the application owner check the logs for more information.

    -
    - - diff --git a/custom_announcement/test/dummy/public/422.html b/custom_announcement/test/dummy/public/422.html deleted file mode 100644 index a21f82b..0000000 --- a/custom_announcement/test/dummy/public/422.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - The change you wanted was rejected (422) - - - - - - -
    -
    -

    The change you wanted was rejected.

    -

    Maybe you tried to change something you didn't have access to.

    -
    -

    If you are the application owner check the logs for more information.

    -
    - - diff --git a/custom_announcement/test/dummy/public/500.html b/custom_announcement/test/dummy/public/500.html deleted file mode 100644 index 061abc5..0000000 --- a/custom_announcement/test/dummy/public/500.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - We're sorry, but something went wrong (500) - - - - - - -
    -
    -

    We're sorry, but something went wrong.

    -
    -

    If you are the application owner check the logs for more information.

    -
    - - diff --git a/custom_announcement/test/dummy/public/favicon.ico b/custom_announcement/test/dummy/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/custom_announcement/test/helpers/admin/custom_announcements_helper_test.rb b/custom_announcement/test/helpers/admin/custom_announcements_helper_test.rb deleted file mode 100644 index fc77f0d..0000000 --- a/custom_announcement/test/helpers/admin/custom_announcements_helper_test.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'test_helper' - -class Admin::CustomAnnouncementsHelperTest < ActionView::TestCase -end diff --git a/custom_announcement/test/integration/navigation_test.rb b/custom_announcement/test/integration/navigation_test.rb deleted file mode 100644 index eec8c0e..0000000 --- a/custom_announcement/test/integration/navigation_test.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'test_helper' - -class NavigationTest < ActionDispatch::IntegrationTest - - # test "the truth" do - # assert true - # end -end - diff --git a/custom_announcement/test/test_helper.rb b/custom_announcement/test/test_helper.rb deleted file mode 100644 index 1e26a31..0000000 --- a/custom_announcement/test/test_helper.rb +++ /dev/null @@ -1,15 +0,0 @@ -# Configure Rails Environment -ENV["RAILS_ENV"] = "test" - -require File.expand_path("../dummy/config/environment.rb", __FILE__) -require "rails/test_help" - -Rails.backtrace_cleaner.remove_silencers! - -# Load support files -Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } - -# Load fixtures from the engine -if ActiveSupport::TestCase.method_defined?(:fixture_path=) - ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) -end diff --git a/custom_gallery/.gitignore b/custom_gallery/.gitignore deleted file mode 100644 index de5d954..0000000 --- a/custom_gallery/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.bundle/ -log/*.log -pkg/ -test/dummy/db/*.sqlite3 -test/dummy/db/*.sqlite3-journal -test/dummy/log/*.log -test/dummy/tmp/ -test/dummy/.sass-cache diff --git a/custom_gallery/Gemfile b/custom_gallery/Gemfile deleted file mode 100644 index a5fcaa2..0000000 --- a/custom_gallery/Gemfile +++ /dev/null @@ -1,14 +0,0 @@ -source "https://rubygems.org" - -# Declare your gem's dependencies in custom_gallery.gemspec. -# Bundler will treat runtime dependencies like base dependencies, and -# development dependencies will be added by default to the :development group. -gemspec - -# Declare any dependencies that are still in development here instead of in -# your gemspec. These might include edge Rails or gems from your path or -# Git. Remember to move these dependencies to your gemspec before releasing -# your gem to rubygems.org. - -# To use debugger -# gem 'debugger' diff --git a/custom_gallery/Gemfile.lock b/custom_gallery/Gemfile.lock deleted file mode 100644 index 2e7e0cd..0000000 --- a/custom_gallery/Gemfile.lock +++ /dev/null @@ -1,104 +0,0 @@ -PATH - remote: . - specs: - custom_gallery (0.0.1) - mongoid (= 4.0.0.beta1) - rails (~> 4.1.0.rc2) - -GEM - remote: https://rubygems.org/ - specs: - actionmailer (4.1.0) - actionpack (= 4.1.0) - actionview (= 4.1.0) - mail (~> 2.5.4) - actionpack (4.1.0) - actionview (= 4.1.0) - activesupport (= 4.1.0) - rack (~> 1.5.2) - rack-test (~> 0.6.2) - actionview (4.1.0) - activesupport (= 4.1.0) - builder (~> 3.1) - erubis (~> 2.7.0) - activemodel (4.1.0) - activesupport (= 4.1.0) - builder (~> 3.1) - activerecord (4.1.0) - activemodel (= 4.1.0) - activesupport (= 4.1.0) - arel (~> 5.0.0) - activesupport (4.1.0) - i18n (~> 0.6, >= 0.6.9) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.1) - tzinfo (~> 1.1) - arel (5.0.1.20140414130214) - bson (2.2.2) - builder (3.2.2) - connection_pool (2.0.0) - erubis (2.7.0) - hike (1.2.3) - i18n (0.6.9) - json (1.8.1) - mail (2.5.4) - mime-types (~> 1.16) - treetop (~> 1.4.8) - mime-types (1.25.1) - minitest (5.3.3) - mongoid (4.0.0.beta1) - activemodel (>= 4.0.0) - moped (~> 2.0.beta6) - origin (~> 2.1) - tzinfo (>= 0.3.37) - moped (2.0.0.rc1) - bson (~> 2.2) - connection_pool (~> 2.0) - optionable (~> 0.2.0) - multi_json (1.9.3) - optionable (0.2.0) - origin (2.1.1) - polyglot (0.3.4) - rack (1.5.2) - rack-test (0.6.2) - rack (>= 1.0) - rails (4.1.0) - actionmailer (= 4.1.0) - actionpack (= 4.1.0) - actionview (= 4.1.0) - activemodel (= 4.1.0) - activerecord (= 4.1.0) - activesupport (= 4.1.0) - bundler (>= 1.3.0, < 2.0) - railties (= 4.1.0) - sprockets-rails (~> 2.0) - railties (4.1.0) - actionpack (= 4.1.0) - activesupport (= 4.1.0) - rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) - rake (10.3.1) - sprockets (2.12.1) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.1.3) - actionpack (>= 3.0) - activesupport (>= 3.0) - sprockets (~> 2.8) - thor (0.19.1) - thread_safe (0.3.3) - tilt (1.4.1) - treetop (1.4.15) - polyglot - polyglot (>= 0.3.1) - tzinfo (1.1.0) - thread_safe (~> 0.1) - -PLATFORMS - ruby - -DEPENDENCIES - custom_gallery! diff --git a/custom_gallery/MIT-LICENSE b/custom_gallery/MIT-LICENSE deleted file mode 100644 index ea966ec..0000000 --- a/custom_gallery/MIT-LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright 2014 YOURNAME - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/custom_gallery/README.rdoc b/custom_gallery/README.rdoc deleted file mode 100644 index c0009f6..0000000 --- a/custom_gallery/README.rdoc +++ /dev/null @@ -1,6 +0,0 @@ -= CustomGallery - -This project rocks and uses MIT-LICENSE. - - -### 20190116 jason Join edit \ No newline at end of file diff --git a/custom_gallery/Rakefile b/custom_gallery/Rakefile deleted file mode 100644 index 0ddcc68..0000000 --- a/custom_gallery/Rakefile +++ /dev/null @@ -1,32 +0,0 @@ -begin - require 'bundler/setup' -rescue LoadError - puts 'You must `gem install bundler` and `bundle install` to run rake tasks' -end - -require 'rdoc/task' - -RDoc::Task.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'CustomGallery' - rdoc.options << '--line-numbers' - rdoc.rdoc_files.include('README.rdoc') - rdoc.rdoc_files.include('lib/**/*.rb') -end - - - - -Bundler::GemHelper.install_tasks - -require 'rake/testtask' - -Rake::TestTask.new(:test) do |t| - t.libs << 'lib' - t.libs << 'test' - t.pattern = 'test/**/*_test.rb' - t.verbose = false -end - - -task default: :test diff --git a/custom_gallery/app/assets/images/custom_gallery/.gitkeep b/custom_gallery/app/assets/images/custom_gallery/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/assets/images/custom_gallery/.keep b/custom_gallery/app/assets/images/custom_gallery/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/assets/images/custom_gallery/default.jpg b/custom_gallery/app/assets/images/custom_gallery/default.jpg deleted file mode 100644 index 1a90afb..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/default.jpg and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/nodata.jpg b/custom_gallery/app/assets/images/custom_gallery/nodata.jpg deleted file mode 100644 index d3c857b..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/nodata.jpg and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/pbar-ani.gif b/custom_gallery/app/assets/images/custom_gallery/pbar-ani.gif deleted file mode 100644 index 6edd174..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/pbar-ani.gif and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/slidelistbg.png b/custom_gallery/app/assets/images/custom_gallery/slidelistbg.png deleted file mode 100644 index 8d468d0..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/slidelistbg.png and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/slidenav.png b/custom_gallery/app/assets/images/custom_gallery/slidenav.png deleted file mode 100644 index 79fd32e..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/slidenav.png and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/slidetitlebg.png b/custom_gallery/app/assets/images/custom_gallery/slidetitlebg.png deleted file mode 100644 index f6de34e..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/slidetitlebg.png and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/slideui.gif b/custom_gallery/app/assets/images/custom_gallery/slideui.gif deleted file mode 100644 index 8d16d90..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/slideui.gif and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/upicon.png b/custom_gallery/app/assets/images/custom_gallery/upicon.png deleted file mode 100644 index 0a16ebe..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/upicon.png and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/uploadbg.gif b/custom_gallery/app/assets/images/custom_gallery/uploadbg.gif deleted file mode 100644 index e5fac42..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/uploadbg.gif and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/uppt.png b/custom_gallery/app/assets/images/custom_gallery/uppt.png deleted file mode 100644 index b1c0db0..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/uppt.png and /dev/null differ diff --git a/custom_gallery/app/assets/images/custom_gallery/upsep.png b/custom_gallery/app/assets/images/custom_gallery/upsep.png deleted file mode 100644 index 314f8ac..0000000 Binary files a/custom_gallery/app/assets/images/custom_gallery/upsep.png and /dev/null differ diff --git a/custom_gallery/app/assets/images/jquery.minicolors.png b/custom_gallery/app/assets/images/jquery.minicolors.png deleted file mode 100644 index bccc201..0000000 Binary files a/custom_gallery/app/assets/images/jquery.minicolors.png and /dev/null differ diff --git a/custom_gallery/app/assets/javascripts/cropper.js b/custom_gallery/app/assets/javascripts/cropper.js deleted file mode 100644 index b449513..0000000 --- a/custom_gallery/app/assets/javascripts/cropper.js +++ /dev/null @@ -1,3566 +0,0 @@ -/*! - * Cropper.js v1.5.5 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2019-08-04T02:26:31.160Z - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.Cropper = factory()); -}(this, function () { 'use strict'; - - function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); - } - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; - } - - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); - } - - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) { - for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } - } - - function _iterableToArray(iter) { - if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); - } - - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance"); - } - - var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; - var WINDOW = IS_BROWSER ? window : {}; - var IS_TOUCH_DEVICE = IS_BROWSER ? 'ontouchstart' in WINDOW.document.documentElement : false; - var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false; - var NAMESPACE = 'cropper'; // Actions - - var ACTION_ALL = 'all'; - var ACTION_CROP = 'crop'; - var ACTION_MOVE = 'move'; - var ACTION_ZOOM = 'zoom'; - var ACTION_EAST = 'e'; - var ACTION_WEST = 'w'; - var ACTION_SOUTH = 's'; - var ACTION_NORTH = 'n'; - var ACTION_NORTH_EAST = 'ne'; - var ACTION_NORTH_WEST = 'nw'; - var ACTION_SOUTH_EAST = 'se'; - var ACTION_SOUTH_WEST = 'sw'; // Classes - - var CLASS_CROP = "".concat(NAMESPACE, "-crop"); - var CLASS_DISABLED = "".concat(NAMESPACE, "-disabled"); - var CLASS_HIDDEN = "".concat(NAMESPACE, "-hidden"); - var CLASS_HIDE = "".concat(NAMESPACE, "-hide"); - var CLASS_INVISIBLE = "".concat(NAMESPACE, "-invisible"); - var CLASS_MODAL = "".concat(NAMESPACE, "-modal"); - var CLASS_MOVE = "".concat(NAMESPACE, "-move"); // Data keys - - var DATA_ACTION = "".concat(NAMESPACE, "Action"); - var DATA_PREVIEW = "".concat(NAMESPACE, "Preview"); // Drag modes - - var DRAG_MODE_CROP = 'crop'; - var DRAG_MODE_MOVE = 'move'; - var DRAG_MODE_NONE = 'none'; // Events - - var EVENT_CROP = 'crop'; - var EVENT_CROP_END = 'cropend'; - var EVENT_CROP_MOVE = 'cropmove'; - var EVENT_CROP_START = 'cropstart'; - var EVENT_DBLCLICK = 'dblclick'; - var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown'; - var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove'; - var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup'; - var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START; - var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE; - var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END; - var EVENT_READY = 'ready'; - var EVENT_RESIZE = 'resize'; - var EVENT_WHEEL = 'wheel'; - var EVENT_ZOOM = 'zoom'; // Mime types - - var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps - - var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/; - var REGEXP_DATA_URL = /^data:/; - var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/; - var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc - // Inspired by the default width and height of a canvas element. - - var MIN_CONTAINER_WIDTH = 200; - var MIN_CONTAINER_HEIGHT = 100; - - var DEFAULTS = { - // Define the view mode of the cropper - viewMode: 0, - // 0, 1, 2, 3 - // Define the dragging mode of the cropper - dragMode: DRAG_MODE_CROP, - // 'crop', 'move' or 'none' - // Define the initial aspect ratio of the crop box - initialAspectRatio: NaN, - // Define the aspect ratio of the crop box - aspectRatio: NaN, - // An object with the previous cropping result data - data: null, - // A selector for adding extra containers to preview - preview: '', - // Re-render the cropper when resize the window - responsive: true, - // Restore the cropped area after resize the window - restore: true, - // Check if the current image is a cross-origin image - checkCrossOrigin: true, - // Check the current image's Exif Orientation information - checkOrientation: true, - // Show the black modal - modal: true, - // Show the dashed lines for guiding - guides: true, - // Show the center indicator for guiding - center: true, - // Show the white modal to highlight the crop box - highlight: true, - // Show the grid background - background: true, - // Enable to crop the image automatically when initialize - autoCrop: true, - // Define the percentage of automatic cropping area when initializes - autoCropArea: 0.8, - // Enable to move the image - movable: true, - // Enable to rotate the image - rotatable: true, - // Enable to scale the image - scalable: true, - // Enable to zoom the image - zoomable: true, - // Enable to zoom the image by dragging touch - zoomOnTouch: true, - // Enable to zoom the image by wheeling mouse - zoomOnWheel: true, - // Define zoom ratio when zoom the image by wheeling mouse - wheelZoomRatio: 0.1, - // Enable to move the crop box - cropBoxMovable: true, - // Enable to resize the crop box - cropBoxResizable: true, - // Toggle drag mode between "crop" and "move" when click twice on the cropper - toggleDragModeOnDblclick: true, - // Size limitation - minCanvasWidth: 0, - minCanvasHeight: 0, - minCropBoxWidth: 0, - minCropBoxHeight: 0, - minContainerWidth: 200, - minContainerHeight: 100, - // Shortcuts of events - ready: null, - cropstart: null, - cropmove: null, - cropend: null, - crop: null, - zoom: null - }; - - var TEMPLATE = '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '
    ' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
    ' + '
    '; - - /** - * Check if the given value is not a number. - */ - - var isNaN = Number.isNaN || WINDOW.isNaN; - /** - * Check if the given value is a number. - * @param {*} value - The value to check. - * @returns {boolean} Returns `true` if the given value is a number, else `false`. - */ - - function isNumber(value) { - return typeof value === 'number' && !isNaN(value); - } - /** - * Check if the given value is a positive number. - * @param {*} value - The value to check. - * @returns {boolean} Returns `true` if the given value is a positive number, else `false`. - */ - - var isPositiveNumber = function isPositiveNumber(value) { - return value > 0 && value < Infinity; - }; - /** - * Check if the given value is undefined. - * @param {*} value - The value to check. - * @returns {boolean} Returns `true` if the given value is undefined, else `false`. - */ - - function isUndefined(value) { - return typeof value === 'undefined'; - } - /** - * Check if the given value is an object. - * @param {*} value - The value to check. - * @returns {boolean} Returns `true` if the given value is an object, else `false`. - */ - - function isObject(value) { - return _typeof(value) === 'object' && value !== null; - } - var hasOwnProperty = Object.prototype.hasOwnProperty; - /** - * Check if the given value is a plain object. - * @param {*} value - The value to check. - * @returns {boolean} Returns `true` if the given value is a plain object, else `false`. - */ - - function isPlainObject(value) { - if (!isObject(value)) { - return false; - } - - try { - var _constructor = value.constructor; - var prototype = _constructor.prototype; - return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf'); - } catch (error) { - return false; - } - } - /** - * Check if the given value is a function. - * @param {*} value - The value to check. - * @returns {boolean} Returns `true` if the given value is a function, else `false`. - */ - - function isFunction(value) { - return typeof value === 'function'; - } - var slice = Array.prototype.slice; - /** - * Convert array-like or iterable object to an array. - * @param {*} value - The value to convert. - * @returns {Array} Returns a new array. - */ - - function toArray(value) { - return Array.from ? Array.from(value) : slice.call(value); - } - /** - * Iterate the given data. - * @param {*} data - The data to iterate. - * @param {Function} callback - The process function for each element. - * @returns {*} The original data. - */ - - function forEach(data, callback) { - if (data && isFunction(callback)) { - if (Array.isArray(data) || isNumber(data.length) - /* array-like */ - ) { - toArray(data).forEach(function (value, key) { - callback.call(data, value, key, data); - }); - } else if (isObject(data)) { - Object.keys(data).forEach(function (key) { - callback.call(data, data[key], key, data); - }); - } - } - - return data; - } - /** - * Extend the given object. - * @param {*} target - The target object to extend. - * @param {*} args - The rest objects for merging to the target object. - * @returns {Object} The extended object. - */ - - var assign = Object.assign || function assign(target) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - if (isObject(target) && args.length > 0) { - args.forEach(function (arg) { - if (isObject(arg)) { - Object.keys(arg).forEach(function (key) { - target[key] = arg[key]; - }); - } - }); - } - - return target; - }; - var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/; - /** - * Normalize decimal number. - * Check out {@link http://0.30000000000000004.com/} - * @param {number} value - The value to normalize. - * @param {number} [times=100000000000] - The times for normalizing. - * @returns {number} Returns the normalized number. - */ - - function normalizeDecimalNumber(value) { - var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000; - return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value; - } - var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/; - /** - * Apply styles to the given element. - * @param {Element} element - The target element. - * @param {Object} styles - The styles for applying. - */ - - function setStyle(element, styles) { - var style = element.style; - forEach(styles, function (value, property) { - if (REGEXP_SUFFIX.test(property) && isNumber(value)) { - value = "".concat(value, "px"); - } - - style[property] = value; - }); - } - /** - * Check if the given element has a special class. - * @param {Element} element - The element to check. - * @param {string} value - The class to search. - * @returns {boolean} Returns `true` if the special class was found. - */ - - function hasClass(element, value) { - return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1; - } - /** - * Add classes to the given element. - * @param {Element} element - The target element. - * @param {string} value - The classes to be added. - */ - - function addClass(element, value) { - if (!value) { - return; - } - - if (isNumber(element.length)) { - forEach(element, function (elem) { - addClass(elem, value); - }); - return; - } - - if (element.classList) { - element.classList.add(value); - return; - } - - var className = element.className.trim(); - - if (!className) { - element.className = value; - } else if (className.indexOf(value) < 0) { - element.className = "".concat(className, " ").concat(value); - } - } - /** - * Remove classes from the given element. - * @param {Element} element - The target element. - * @param {string} value - The classes to be removed. - */ - - function removeClass(element, value) { - if (!value) { - return; - } - - if (isNumber(element.length)) { - forEach(element, function (elem) { - removeClass(elem, value); - }); - return; - } - - if (element.classList) { - element.classList.remove(value); - return; - } - - if (element.className.indexOf(value) >= 0) { - element.className = element.className.replace(value, ''); - } - } - /** - * Add or remove classes from the given element. - * @param {Element} element - The target element. - * @param {string} value - The classes to be toggled. - * @param {boolean} added - Add only. - */ - - function toggleClass(element, value, added) { - if (!value) { - return; - } - - if (isNumber(element.length)) { - forEach(element, function (elem) { - toggleClass(elem, value, added); - }); - return; - } // IE10-11 doesn't support the second parameter of `classList.toggle` - - - if (added) { - addClass(element, value); - } else { - removeClass(element, value); - } - } - var REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g; - /** - * Transform the given string from camelCase to kebab-case - * @param {string} value - The value to transform. - * @returns {string} The transformed value. - */ - - function toParamCase(value) { - return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase(); - } - /** - * Get data from the given element. - * @param {Element} element - The target element. - * @param {string} name - The data key to get. - * @returns {string} The data value. - */ - - function getData(element, name) { - if (isObject(element[name])) { - return element[name]; - } - - if (element.dataset) { - return element.dataset[name]; - } - - return element.getAttribute("data-".concat(toParamCase(name))); - } - /** - * Set data to the given element. - * @param {Element} element - The target element. - * @param {string} name - The data key to set. - * @param {string} data - The data value. - */ - - function setData(element, name, data) { - if (isObject(data)) { - element[name] = data; - } else if (element.dataset) { - element.dataset[name] = data; - } else { - element.setAttribute("data-".concat(toParamCase(name)), data); - } - } - /** - * Remove data from the given element. - * @param {Element} element - The target element. - * @param {string} name - The data key to remove. - */ - - function removeData(element, name) { - if (isObject(element[name])) { - try { - delete element[name]; - } catch (error) { - element[name] = undefined; - } - } else if (element.dataset) { - // #128 Safari not allows to delete dataset property - try { - delete element.dataset[name]; - } catch (error) { - element.dataset[name] = undefined; - } - } else { - element.removeAttribute("data-".concat(toParamCase(name))); - } - } - var REGEXP_SPACES = /\s\s*/; - - var onceSupported = function () { - var supported = false; - - if (IS_BROWSER) { - var once = false; - - var listener = function listener() {}; - - var options = Object.defineProperty({}, 'once', { - get: function get() { - supported = true; - return once; - }, - - /** - * This setter can fix a `TypeError` in strict mode - * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only} - * @param {boolean} value - The value to set - */ - set: function set(value) { - once = value; - } - }); - WINDOW.addEventListener('test', listener, options); - WINDOW.removeEventListener('test', listener, options); - } - - return supported; - }(); - /** - * Remove event listener from the target element. - * @param {Element} element - The event target. - * @param {string} type - The event type(s). - * @param {Function} listener - The event listener. - * @param {Object} options - The event options. - */ - - - function removeListener(element, type, listener) { - var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; - var handler = listener; - type.trim().split(REGEXP_SPACES).forEach(function (event) { - if (!onceSupported) { - var listeners = element.listeners; - - if (listeners && listeners[event] && listeners[event][listener]) { - handler = listeners[event][listener]; - delete listeners[event][listener]; - - if (Object.keys(listeners[event]).length === 0) { - delete listeners[event]; - } - - if (Object.keys(listeners).length === 0) { - delete element.listeners; - } - } - } - - element.removeEventListener(event, handler, options); - }); - } - /** - * Add event listener to the target element. - * @param {Element} element - The event target. - * @param {string} type - The event type(s). - * @param {Function} listener - The event listener. - * @param {Object} options - The event options. - */ - - function addListener(element, type, listener) { - var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; - var _handler = listener; - type.trim().split(REGEXP_SPACES).forEach(function (event) { - if (options.once && !onceSupported) { - var _element$listeners = element.listeners, - listeners = _element$listeners === void 0 ? {} : _element$listeners; - - _handler = function handler() { - delete listeners[event][listener]; - element.removeEventListener(event, _handler, options); - - for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - listener.apply(element, args); - }; - - if (!listeners[event]) { - listeners[event] = {}; - } - - if (listeners[event][listener]) { - element.removeEventListener(event, listeners[event][listener], options); - } - - listeners[event][listener] = _handler; - element.listeners = listeners; - } - - element.addEventListener(event, _handler, options); - }); - } - /** - * Dispatch event on the target element. - * @param {Element} element - The event target. - * @param {string} type - The event type(s). - * @param {Object} data - The additional event data. - * @returns {boolean} Indicate if the event is default prevented or not. - */ - - function dispatchEvent(element, type, data) { - var event; // Event and CustomEvent on IE9-11 are global objects, not constructors - - if (isFunction(Event) && isFunction(CustomEvent)) { - event = new CustomEvent(type, { - detail: data, - bubbles: true, - cancelable: true - }); - } else { - event = document.createEvent('CustomEvent'); - event.initCustomEvent(type, true, true, data); - } - - return element.dispatchEvent(event); - } - /** - * Get the offset base on the document. - * @param {Element} element - The target element. - * @returns {Object} The offset data. - */ - - function getOffset(element) { - var box = element.getBoundingClientRect(); - return { - left: box.left + (window.pageXOffset - document.documentElement.clientLeft), - top: box.top + (window.pageYOffset - document.documentElement.clientTop) - }; - } - var location = WINDOW.location; - var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i; - /** - * Check if the given URL is a cross origin URL. - * @param {string} url - The target URL. - * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`. - */ - - function isCrossOriginURL(url) { - var parts = url.match(REGEXP_ORIGINS); - return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port); - } - /** - * Add timestamp to the given URL. - * @param {string} url - The target URL. - * @returns {string} The result URL. - */ - - function addTimestamp(url) { - var timestamp = "timestamp=".concat(new Date().getTime()); - return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp; - } - /** - * Get transforms base on the given object. - * @param {Object} obj - The target object. - * @returns {string} A string contains transform values. - */ - - function getTransforms(_ref) { - var rotate = _ref.rotate, - scaleX = _ref.scaleX, - scaleY = _ref.scaleY, - translateX = _ref.translateX, - translateY = _ref.translateY; - var values = []; - - if (isNumber(translateX) && translateX !== 0) { - values.push("translateX(".concat(translateX, "px)")); - } - - if (isNumber(translateY) && translateY !== 0) { - values.push("translateY(".concat(translateY, "px)")); - } // Rotate should come first before scale to match orientation transform - - - if (isNumber(rotate) && rotate !== 0) { - values.push("rotate(".concat(rotate, "deg)")); - } - - if (isNumber(scaleX) && scaleX !== 1) { - values.push("scaleX(".concat(scaleX, ")")); - } - - if (isNumber(scaleY) && scaleY !== 1) { - values.push("scaleY(".concat(scaleY, ")")); - } - - var transform = values.length ? values.join(' ') : 'none'; - return { - WebkitTransform: transform, - msTransform: transform, - transform: transform - }; - } - /** - * Get the max ratio of a group of pointers. - * @param {string} pointers - The target pointers. - * @returns {number} The result ratio. - */ - - function getMaxZoomRatio(pointers) { - var pointers2 = assign({}, pointers); - var ratios = []; - forEach(pointers, function (pointer, pointerId) { - delete pointers2[pointerId]; - forEach(pointers2, function (pointer2) { - var x1 = Math.abs(pointer.startX - pointer2.startX); - var y1 = Math.abs(pointer.startY - pointer2.startY); - var x2 = Math.abs(pointer.endX - pointer2.endX); - var y2 = Math.abs(pointer.endY - pointer2.endY); - var z1 = Math.sqrt(x1 * x1 + y1 * y1); - var z2 = Math.sqrt(x2 * x2 + y2 * y2); - var ratio = (z2 - z1) / z1; - ratios.push(ratio); - }); - }); - ratios.sort(function (a, b) { - return Math.abs(a) < Math.abs(b); - }); - return ratios[0]; - } - /** - * Get a pointer from an event object. - * @param {Object} event - The target event object. - * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not. - * @returns {Object} The result pointer contains start and/or end point coordinates. - */ - - function getPointer(_ref2, endOnly) { - var pageX = _ref2.pageX, - pageY = _ref2.pageY; - var end = { - endX: pageX, - endY: pageY - }; - return endOnly ? end : assign({ - startX: pageX, - startY: pageY - }, end); - } - /** - * Get the center point coordinate of a group of pointers. - * @param {Object} pointers - The target pointers. - * @returns {Object} The center point coordinate. - */ - - function getPointersCenter(pointers) { - var pageX = 0; - var pageY = 0; - var count = 0; - forEach(pointers, function (_ref3) { - var startX = _ref3.startX, - startY = _ref3.startY; - pageX += startX; - pageY += startY; - count += 1; - }); - pageX /= count; - pageY /= count; - return { - pageX: pageX, - pageY: pageY - }; - } - /** - * Get the max sizes in a rectangle under the given aspect ratio. - * @param {Object} data - The original sizes. - * @param {string} [type='contain'] - The adjust type. - * @returns {Object} The result sizes. - */ - - function getAdjustedSizes(_ref4) // or 'cover' - { - var aspectRatio = _ref4.aspectRatio, - height = _ref4.height, - width = _ref4.width; - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain'; - var isValidWidth = isPositiveNumber(width); - var isValidHeight = isPositiveNumber(height); - - if (isValidWidth && isValidHeight) { - var adjustedWidth = height * aspectRatio; - - if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) { - height = width / aspectRatio; - } else { - width = height * aspectRatio; - } - } else if (isValidWidth) { - height = width / aspectRatio; - } else if (isValidHeight) { - width = height * aspectRatio; - } - - return { - width: width, - height: height - }; - } - /** - * Get the new sizes of a rectangle after rotated. - * @param {Object} data - The original sizes. - * @returns {Object} The result sizes. - */ - - function getRotatedSizes(_ref5) { - var width = _ref5.width, - height = _ref5.height, - degree = _ref5.degree; - degree = Math.abs(degree) % 180; - - if (degree === 90) { - return { - width: height, - height: width - }; - } - - var arc = degree % 90 * Math.PI / 180; - var sinArc = Math.sin(arc); - var cosArc = Math.cos(arc); - var newWidth = width * cosArc + height * sinArc; - var newHeight = width * sinArc + height * cosArc; - return degree > 90 ? { - width: newHeight, - height: newWidth - } : { - width: newWidth, - height: newHeight - }; - } - /** - * Get a canvas which drew the given image. - * @param {HTMLImageElement} image - The image for drawing. - * @param {Object} imageData - The image data. - * @param {Object} canvasData - The canvas data. - * @param {Object} options - The options. - * @returns {HTMLCanvasElement} The result canvas. - */ - - function getSourceCanvas(image, _ref6, _ref7, _ref8) { - var imageAspectRatio = _ref6.aspectRatio, - imageNaturalWidth = _ref6.naturalWidth, - imageNaturalHeight = _ref6.naturalHeight, - _ref6$rotate = _ref6.rotate, - rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate, - _ref6$scaleX = _ref6.scaleX, - scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX, - _ref6$scaleY = _ref6.scaleY, - scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY; - var aspectRatio = _ref7.aspectRatio, - naturalWidth = _ref7.naturalWidth, - naturalHeight = _ref7.naturalHeight; - var _ref8$fillColor = _ref8.fillColor, - fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor, - _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled, - imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE, - _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality, - imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ, - _ref8$maxWidth = _ref8.maxWidth, - maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth, - _ref8$maxHeight = _ref8.maxHeight, - maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight, - _ref8$minWidth = _ref8.minWidth, - minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth, - _ref8$minHeight = _ref8.minHeight, - minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight; - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - var maxSizes = getAdjustedSizes({ - aspectRatio: aspectRatio, - width: maxWidth, - height: maxHeight - }); - var minSizes = getAdjustedSizes({ - aspectRatio: aspectRatio, - width: minWidth, - height: minHeight - }, 'cover'); - var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth)); - var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as - // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90 - - var destMaxSizes = getAdjustedSizes({ - aspectRatio: imageAspectRatio, - width: maxWidth, - height: maxHeight - }); - var destMinSizes = getAdjustedSizes({ - aspectRatio: imageAspectRatio, - width: minWidth, - height: minHeight - }, 'cover'); - var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth)); - var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight)); - var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight]; - canvas.width = normalizeDecimalNumber(width); - canvas.height = normalizeDecimalNumber(height); - context.fillStyle = fillColor; - context.fillRect(0, 0, width, height); - context.save(); - context.translate(width / 2, height / 2); - context.rotate(rotate * Math.PI / 180); - context.scale(scaleX, scaleY); - context.imageSmoothingEnabled = imageSmoothingEnabled; - context.imageSmoothingQuality = imageSmoothingQuality; - context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) { - return Math.floor(normalizeDecimalNumber(param)); - })))); - context.restore(); - return canvas; - } - var fromCharCode = String.fromCharCode; - /** - * Get string from char code in data view. - * @param {DataView} dataView - The data view for read. - * @param {number} start - The start index. - * @param {number} length - The read length. - * @returns {string} The read result. - */ - - function getStringFromCharCode(dataView, start, length) { - var str = ''; - length += start; - - for (var i = start; i < length; i += 1) { - str += fromCharCode(dataView.getUint8(i)); - } - - return str; - } - var REGEXP_DATA_URL_HEAD = /^data:.*,/; - /** - * Transform Data URL to array buffer. - * @param {string} dataURL - The Data URL to transform. - * @returns {ArrayBuffer} The result array buffer. - */ - - function dataURLToArrayBuffer(dataURL) { - var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, ''); - var binary = atob(base64); - var arrayBuffer = new ArrayBuffer(binary.length); - var uint8 = new Uint8Array(arrayBuffer); - forEach(uint8, function (value, i) { - uint8[i] = binary.charCodeAt(i); - }); - return arrayBuffer; - } - /** - * Transform array buffer to Data URL. - * @param {ArrayBuffer} arrayBuffer - The array buffer to transform. - * @param {string} mimeType - The mime type of the Data URL. - * @returns {string} The result Data URL. - */ - - function arrayBufferToDataURL(arrayBuffer, mimeType) { - var chunks = []; // Chunk Typed Array for better performance (#435) - - var chunkSize = 8192; - var uint8 = new Uint8Array(arrayBuffer); - - while (uint8.length > 0) { - // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9 - // eslint-disable-next-line prefer-spread - chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize)))); - uint8 = uint8.subarray(chunkSize); - } - - return "data:".concat(mimeType, ";base64,").concat(btoa(chunks.join(''))); - } - /** - * Get orientation value from given array buffer. - * @param {ArrayBuffer} arrayBuffer - The array buffer to read. - * @returns {number} The read orientation value. - */ - - function resetAndGetOrientation(arrayBuffer) { - var dataView = new DataView(arrayBuffer); - var orientation; // Ignores range error when the image does not have correct Exif information - - try { - var littleEndian; - var app1Start; - var ifdStart; // Only handle JPEG image (start by 0xFFD8) - - if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) { - var length = dataView.byteLength; - var offset = 2; - - while (offset + 1 < length) { - if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) { - app1Start = offset; - break; - } - - offset += 1; - } - } - - if (app1Start) { - var exifIDCode = app1Start + 4; - var tiffOffset = app1Start + 10; - - if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') { - var endianness = dataView.getUint16(tiffOffset); - littleEndian = endianness === 0x4949; - - if (littleEndian || endianness === 0x4D4D - /* bigEndian */ - ) { - if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) { - var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); - - if (firstIFDOffset >= 0x00000008) { - ifdStart = tiffOffset + firstIFDOffset; - } - } - } - } - } - - if (ifdStart) { - var _length = dataView.getUint16(ifdStart, littleEndian); - - var _offset; - - var i; - - for (i = 0; i < _length; i += 1) { - _offset = ifdStart + i * 12 + 2; - - if (dataView.getUint16(_offset, littleEndian) === 0x0112 - /* Orientation */ - ) { - // 8 is the offset of the current tag's value - _offset += 8; // Get the original orientation value - - orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value - - dataView.setUint16(_offset, 1, littleEndian); - break; - } - } - } - } catch (error) { - orientation = 1; - } - - return orientation; - } - /** - * Parse Exif Orientation value. - * @param {number} orientation - The orientation to parse. - * @returns {Object} The parsed result. - */ - - function parseOrientation(orientation) { - var rotate = 0; - var scaleX = 1; - var scaleY = 1; - - switch (orientation) { - // Flip horizontal - case 2: - scaleX = -1; - break; - // Rotate left 180° - - case 3: - rotate = -180; - break; - // Flip vertical - - case 4: - scaleY = -1; - break; - // Flip vertical and rotate right 90° - - case 5: - rotate = 90; - scaleY = -1; - break; - // Rotate right 90° - - case 6: - rotate = 90; - break; - // Flip horizontal and rotate right 90° - - case 7: - rotate = 90; - scaleX = -1; - break; - // Rotate left 90° - - case 8: - rotate = -90; - break; - - default: - } - - return { - rotate: rotate, - scaleX: scaleX, - scaleY: scaleY - }; - } - - var render = { - render: function render() { - this.initContainer(); - this.initCanvas(); - this.initCropBox(); - this.renderCanvas(); - - if (this.cropped) { - this.renderCropBox(); - } - }, - initContainer: function initContainer() { - var element = this.element, - options = this.options, - container = this.container, - cropper = this.cropper; - addClass(cropper, CLASS_HIDDEN); - removeClass(element, CLASS_HIDDEN); - var containerData = { - width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200), - height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100) - }; - this.containerData = containerData; - setStyle(cropper, { - width: containerData.width, - height: containerData.height - }); - addClass(element, CLASS_HIDDEN); - removeClass(cropper, CLASS_HIDDEN); - }, - // Canvas (image wrapper) - initCanvas: function initCanvas() { - var containerData = this.containerData, - imageData = this.imageData; - var viewMode = this.options.viewMode; - var rotated = Math.abs(imageData.rotate) % 180 === 90; - var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth; - var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight; - var aspectRatio = naturalWidth / naturalHeight; - var canvasWidth = containerData.width; - var canvasHeight = containerData.height; - - if (containerData.height * aspectRatio > containerData.width) { - if (viewMode === 3) { - canvasWidth = containerData.height * aspectRatio; - } else { - canvasHeight = containerData.width / aspectRatio; - } - } else if (viewMode === 3) { - canvasHeight = containerData.width / aspectRatio; - } else { - canvasWidth = containerData.height * aspectRatio; - } - - var canvasData = { - aspectRatio: aspectRatio, - naturalWidth: naturalWidth, - naturalHeight: naturalHeight, - width: canvasWidth, - height: canvasHeight - }; - canvasData.left = (containerData.width - canvasWidth) / 2; - canvasData.top = (containerData.height - canvasHeight) / 2; - canvasData.oldLeft = canvasData.left; - canvasData.oldTop = canvasData.top; - this.canvasData = canvasData; - this.limited = viewMode === 1 || viewMode === 2; - this.limitCanvas(true, true); - this.initialImageData = assign({}, imageData); - this.initialCanvasData = assign({}, canvasData); - }, - limitCanvas: function limitCanvas(sizeLimited, positionLimited) { - var options = this.options, - containerData = this.containerData, - canvasData = this.canvasData, - cropBoxData = this.cropBoxData; - var viewMode = options.viewMode; - var aspectRatio = canvasData.aspectRatio; - var cropped = this.cropped && cropBoxData; - - if (sizeLimited) { - var minCanvasWidth = Number(options.minCanvasWidth) || 0; - var minCanvasHeight = Number(options.minCanvasHeight) || 0; - - if (viewMode > 1) { - minCanvasWidth = Math.max(minCanvasWidth, containerData.width); - minCanvasHeight = Math.max(minCanvasHeight, containerData.height); - - if (viewMode === 3) { - if (minCanvasHeight * aspectRatio > minCanvasWidth) { - minCanvasWidth = minCanvasHeight * aspectRatio; - } else { - minCanvasHeight = minCanvasWidth / aspectRatio; - } - } - } else if (viewMode > 0) { - if (minCanvasWidth) { - minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0); - } else if (minCanvasHeight) { - minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0); - } else if (cropped) { - minCanvasWidth = cropBoxData.width; - minCanvasHeight = cropBoxData.height; - - if (minCanvasHeight * aspectRatio > minCanvasWidth) { - minCanvasWidth = minCanvasHeight * aspectRatio; - } else { - minCanvasHeight = minCanvasWidth / aspectRatio; - } - } - } - - var _getAdjustedSizes = getAdjustedSizes({ - aspectRatio: aspectRatio, - width: minCanvasWidth, - height: minCanvasHeight - }); - - minCanvasWidth = _getAdjustedSizes.width; - minCanvasHeight = _getAdjustedSizes.height; - canvasData.minWidth = minCanvasWidth; - canvasData.minHeight = minCanvasHeight; - canvasData.maxWidth = Infinity; - canvasData.maxHeight = Infinity; - } - - if (positionLimited) { - if (viewMode > (cropped ? 0 : 1)) { - var newCanvasLeft = containerData.width - canvasData.width; - var newCanvasTop = containerData.height - canvasData.height; - canvasData.minLeft = Math.min(0, newCanvasLeft); - canvasData.minTop = Math.min(0, newCanvasTop); - canvasData.maxLeft = Math.max(0, newCanvasLeft); - canvasData.maxTop = Math.max(0, newCanvasTop); - - if (cropped && this.limited) { - canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width)); - canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height)); - canvasData.maxLeft = cropBoxData.left; - canvasData.maxTop = cropBoxData.top; - - if (viewMode === 2) { - if (canvasData.width >= containerData.width) { - canvasData.minLeft = Math.min(0, newCanvasLeft); - canvasData.maxLeft = Math.max(0, newCanvasLeft); - } - - if (canvasData.height >= containerData.height) { - canvasData.minTop = Math.min(0, newCanvasTop); - canvasData.maxTop = Math.max(0, newCanvasTop); - } - } - } - } else { - canvasData.minLeft = -canvasData.width; - canvasData.minTop = -canvasData.height; - canvasData.maxLeft = containerData.width; - canvasData.maxTop = containerData.height; - } - } - }, - renderCanvas: function renderCanvas(changed, transformed) { - var canvasData = this.canvasData, - imageData = this.imageData; - - if (transformed) { - var _getRotatedSizes = getRotatedSizes({ - width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), - height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), - degree: imageData.rotate || 0 - }), - naturalWidth = _getRotatedSizes.width, - naturalHeight = _getRotatedSizes.height; - - var width = canvasData.width * (naturalWidth / canvasData.naturalWidth); - var height = canvasData.height * (naturalHeight / canvasData.naturalHeight); - canvasData.left -= (width - canvasData.width) / 2; - canvasData.top -= (height - canvasData.height) / 2; - canvasData.width = width; - canvasData.height = height; - canvasData.aspectRatio = naturalWidth / naturalHeight; - canvasData.naturalWidth = naturalWidth; - canvasData.naturalHeight = naturalHeight; - this.limitCanvas(true, false); - } - - if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) { - canvasData.left = canvasData.oldLeft; - } - - if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) { - canvasData.top = canvasData.oldTop; - } - - canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth); - canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight); - this.limitCanvas(false, true); - canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft); - canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop); - canvasData.oldLeft = canvasData.left; - canvasData.oldTop = canvasData.top; - setStyle(this.canvas, assign({ - width: canvasData.width, - height: canvasData.height - }, getTransforms({ - translateX: canvasData.left, - translateY: canvasData.top - }))); - this.renderImage(changed); - - if (this.cropped && this.limited) { - this.limitCropBox(true, true); - } - }, - renderImage: function renderImage(changed) { - var canvasData = this.canvasData, - imageData = this.imageData; - var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth); - var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight); - assign(imageData, { - width: width, - height: height, - left: (canvasData.width - width) / 2, - top: (canvasData.height - height) / 2 - }); - setStyle(this.image, assign({ - width: imageData.width, - height: imageData.height - }, getTransforms(assign({ - translateX: imageData.left, - translateY: imageData.top - }, imageData)))); - - if (changed) { - this.output(); - } - }, - initCropBox: function initCropBox() { - var options = this.options, - canvasData = this.canvasData; - var aspectRatio = options.aspectRatio || options.initialAspectRatio; - var autoCropArea = Number(options.autoCropArea) || 0.8; - var cropBoxData = { - width: canvasData.width, - height: canvasData.height - }; - - if (aspectRatio) { - if (canvasData.height * aspectRatio > canvasData.width) { - cropBoxData.height = cropBoxData.width / aspectRatio; - } else { - cropBoxData.width = cropBoxData.height * aspectRatio; - } - } - - this.cropBoxData = cropBoxData; - this.limitCropBox(true, true); // Initialize auto crop area - - cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); - cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than "minWidth/Height" - - cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea); - cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea); - cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2; - cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2; - cropBoxData.oldLeft = cropBoxData.left; - cropBoxData.oldTop = cropBoxData.top; - this.initialCropBoxData = assign({}, cropBoxData); - }, - limitCropBox: function limitCropBox(sizeLimited, positionLimited) { - var options = this.options, - containerData = this.containerData, - canvasData = this.canvasData, - cropBoxData = this.cropBoxData, - limited = this.limited; - var aspectRatio = options.aspectRatio; - - if (sizeLimited) { - var minCropBoxWidth = Number(options.minCropBoxWidth) || 0; - var minCropBoxHeight = Number(options.minCropBoxHeight) || 0; - var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width; - var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height - - minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width); - minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height); - - if (aspectRatio) { - if (minCropBoxWidth && minCropBoxHeight) { - if (minCropBoxHeight * aspectRatio > minCropBoxWidth) { - minCropBoxHeight = minCropBoxWidth / aspectRatio; - } else { - minCropBoxWidth = minCropBoxHeight * aspectRatio; - } - } else if (minCropBoxWidth) { - minCropBoxHeight = minCropBoxWidth / aspectRatio; - } else if (minCropBoxHeight) { - minCropBoxWidth = minCropBoxHeight * aspectRatio; - } - - if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) { - maxCropBoxHeight = maxCropBoxWidth / aspectRatio; - } else { - maxCropBoxWidth = maxCropBoxHeight * aspectRatio; - } - } // The minWidth/Height must be less than maxWidth/Height - - - cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth); - cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight); - cropBoxData.maxWidth = maxCropBoxWidth; - cropBoxData.maxHeight = maxCropBoxHeight; - } - - if (positionLimited) { - if (limited) { - cropBoxData.minLeft = Math.max(0, canvasData.left); - cropBoxData.minTop = Math.max(0, canvasData.top); - cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width; - cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height; - } else { - cropBoxData.minLeft = 0; - cropBoxData.minTop = 0; - cropBoxData.maxLeft = containerData.width - cropBoxData.width; - cropBoxData.maxTop = containerData.height - cropBoxData.height; - } - } - }, - renderCropBox: function renderCropBox() { - var options = this.options, - containerData = this.containerData, - cropBoxData = this.cropBoxData; - - if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) { - cropBoxData.left = cropBoxData.oldLeft; - } - - if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) { - cropBoxData.top = cropBoxData.oldTop; - } - - cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); - cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); - this.limitCropBox(false, true); - cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft); - cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop); - cropBoxData.oldLeft = cropBoxData.left; - cropBoxData.oldTop = cropBoxData.top; - - if (options.movable && options.cropBoxMovable) { - // Turn to move the canvas when the crop box is equal to the container - setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL); - } - - setStyle(this.cropBox, assign({ - width: cropBoxData.width, - height: cropBoxData.height - }, getTransforms({ - translateX: cropBoxData.left, - translateY: cropBoxData.top - }))); - - if (this.cropped && this.limited) { - this.limitCanvas(true, true); - } - - if (!this.disabled) { - this.output(); - } - }, - output: function output() { - this.preview(); - dispatchEvent(this.element, EVENT_CROP, this.getData()); - } - }; - - var preview = { - initPreview: function initPreview() { - var element = this.element, - crossOrigin = this.crossOrigin; - var preview = this.options.preview; - var url = crossOrigin ? this.crossOriginUrl : this.url; - var alt = element.alt || 'The image to preview'; - var image = document.createElement('img'); - - if (crossOrigin) { - image.crossOrigin = crossOrigin; - } - - image.src = url; - image.alt = alt; - this.viewBox.appendChild(image); - this.viewBoxImage = image; - - if (!preview) { - return; - } - - var previews = preview; - - if (typeof preview === 'string') { - previews = element.ownerDocument.querySelectorAll(preview); - } else if (preview.querySelector) { - previews = [preview]; - } - - this.previews = previews; - forEach(previews, function (el) { - var img = document.createElement('img'); // Save the original size for recover - - setData(el, DATA_PREVIEW, { - width: el.offsetWidth, - height: el.offsetHeight, - html: el.innerHTML - }); - - if (crossOrigin) { - img.crossOrigin = crossOrigin; - } - - img.src = url; - img.alt = alt; - /** - * Override img element styles - * Add `display:block` to avoid margin top issue - * Add `height:auto` to override `height` attribute on IE8 - * (Occur only when margin-top <= -height) - */ - - img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"'; - el.innerHTML = ''; - el.appendChild(img); - }); - }, - resetPreview: function resetPreview() { - forEach(this.previews, function (element) { - var data = getData(element, DATA_PREVIEW); - setStyle(element, { - width: data.width, - height: data.height - }); - element.innerHTML = data.html; - removeData(element, DATA_PREVIEW); - }); - }, - preview: function preview() { - var imageData = this.imageData, - canvasData = this.canvasData, - cropBoxData = this.cropBoxData; - var cropBoxWidth = cropBoxData.width, - cropBoxHeight = cropBoxData.height; - var width = imageData.width, - height = imageData.height; - var left = cropBoxData.left - canvasData.left - imageData.left; - var top = cropBoxData.top - canvasData.top - imageData.top; - - if (!this.cropped || this.disabled) { - return; - } - - setStyle(this.viewBoxImage, assign({ - width: width, - height: height - }, getTransforms(assign({ - translateX: -left, - translateY: -top - }, imageData)))); - forEach(this.previews, function (element) { - var data = getData(element, DATA_PREVIEW); - var originalWidth = data.width; - var originalHeight = data.height; - var newWidth = originalWidth; - var newHeight = originalHeight; - var ratio = 1; - - if (cropBoxWidth) { - ratio = originalWidth / cropBoxWidth; - newHeight = cropBoxHeight * ratio; - } - - if (cropBoxHeight && newHeight > originalHeight) { - ratio = originalHeight / cropBoxHeight; - newWidth = cropBoxWidth * ratio; - newHeight = originalHeight; - } - - setStyle(element, { - width: newWidth, - height: newHeight - }); - setStyle(element.getElementsByTagName('img')[0], assign({ - width: width * ratio, - height: height * ratio - }, getTransforms(assign({ - translateX: -left * ratio, - translateY: -top * ratio - }, imageData)))); - }); - } - }; - - var events = { - bind: function bind() { - var element = this.element, - options = this.options, - cropper = this.cropper; - - if (isFunction(options.cropstart)) { - addListener(element, EVENT_CROP_START, options.cropstart); - } - - if (isFunction(options.cropmove)) { - addListener(element, EVENT_CROP_MOVE, options.cropmove); - } - - if (isFunction(options.cropend)) { - addListener(element, EVENT_CROP_END, options.cropend); - } - - if (isFunction(options.crop)) { - addListener(element, EVENT_CROP, options.crop); - } - - if (isFunction(options.zoom)) { - addListener(element, EVENT_ZOOM, options.zoom); - } - - addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this)); - - if (options.zoomable && options.zoomOnWheel) { - addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), { - passive: false, - capture: true - }); - } - - if (options.toggleDragModeOnDblclick) { - addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this)); - } - - addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this)); - addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this)); - - if (options.responsive) { - addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this)); - } - }, - unbind: function unbind() { - var element = this.element, - options = this.options, - cropper = this.cropper; - - if (isFunction(options.cropstart)) { - removeListener(element, EVENT_CROP_START, options.cropstart); - } - - if (isFunction(options.cropmove)) { - removeListener(element, EVENT_CROP_MOVE, options.cropmove); - } - - if (isFunction(options.cropend)) { - removeListener(element, EVENT_CROP_END, options.cropend); - } - - if (isFunction(options.crop)) { - removeListener(element, EVENT_CROP, options.crop); - } - - if (isFunction(options.zoom)) { - removeListener(element, EVENT_ZOOM, options.zoom); - } - - removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart); - - if (options.zoomable && options.zoomOnWheel) { - removeListener(cropper, EVENT_WHEEL, this.onWheel, { - passive: false, - capture: true - }); - } - - if (options.toggleDragModeOnDblclick) { - removeListener(cropper, EVENT_DBLCLICK, this.onDblclick); - } - - removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove); - removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd); - - if (options.responsive) { - removeListener(window, EVENT_RESIZE, this.onResize); - } - } - }; - - var handlers = { - resize: function resize() { - var options = this.options, - container = this.container, - containerData = this.containerData; - var minContainerWidth = Number(options.minContainerWidth) || MIN_CONTAINER_WIDTH; - var minContainerHeight = Number(options.minContainerHeight) || MIN_CONTAINER_HEIGHT; - - if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) { - return; - } - - var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed - - if (ratio !== 1 || container.offsetHeight !== containerData.height) { - var canvasData; - var cropBoxData; - - if (options.restore) { - canvasData = this.getCanvasData(); - cropBoxData = this.getCropBoxData(); - } - - this.render(); - - if (options.restore) { - this.setCanvasData(forEach(canvasData, function (n, i) { - canvasData[i] = n * ratio; - })); - this.setCropBoxData(forEach(cropBoxData, function (n, i) { - cropBoxData[i] = n * ratio; - })); - } - } - }, - dblclick: function dblclick() { - if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) { - return; - } - - this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP); - }, - wheel: function wheel(event) { - var _this = this; - - var ratio = Number(this.options.wheelZoomRatio) || 0.1; - var delta = 1; - - if (this.disabled) { - return; - } - - event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21) - - if (this.wheeling) { - return; - } - - this.wheeling = true; - setTimeout(function () { - _this.wheeling = false; - }, 50); - - if (event.deltaY) { - delta = event.deltaY > 0 ? 1 : -1; - } else if (event.wheelDelta) { - delta = -event.wheelDelta / 120; - } else if (event.detail) { - delta = event.detail > 0 ? 1 : -1; - } - - this.zoom(-delta * ratio, event); - }, - cropStart: function cropStart(event) { - var buttons = event.buttons, - button = event.button; - - if (this.disabled // No primary button (Usually the left button) - // Note that touch events have no `buttons` or `button` property - || isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu - || event.ctrlKey) { - return; - } - - var options = this.options, - pointers = this.pointers; - var action; - - if (event.changedTouches) { - // Handle touch event - forEach(event.changedTouches, function (touch) { - pointers[touch.identifier] = getPointer(touch); - }); - } else { - // Handle mouse event and pointer event - pointers[event.pointerId || 0] = getPointer(event); - } - - if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) { - action = ACTION_ZOOM; - } else { - action = getData(event.target, DATA_ACTION); - } - - if (!REGEXP_ACTIONS.test(action)) { - return; - } - - if (dispatchEvent(this.element, EVENT_CROP_START, { - originalEvent: event, - action: action - }) === false) { - return; - } // This line is required for preventing page zooming in iOS browsers - - - event.preventDefault(); - this.action = action; - this.cropping = false; - - if (action === ACTION_CROP) { - this.cropping = true; - addClass(this.dragBox, CLASS_MODAL); - } - }, - cropMove: function cropMove(event) { - var action = this.action; - - if (this.disabled || !action) { - return; - } - - var pointers = this.pointers; - event.preventDefault(); - - if (dispatchEvent(this.element, EVENT_CROP_MOVE, { - originalEvent: event, - action: action - }) === false) { - return; - } - - if (event.changedTouches) { - forEach(event.changedTouches, function (touch) { - // The first parameter should not be undefined (#432) - assign(pointers[touch.identifier] || {}, getPointer(touch, true)); - }); - } else { - assign(pointers[event.pointerId || 0] || {}, getPointer(event, true)); - } - - this.change(event); - }, - cropEnd: function cropEnd(event) { - if (this.disabled) { - return; - } - - var action = this.action, - pointers = this.pointers; - - if (event.changedTouches) { - forEach(event.changedTouches, function (touch) { - delete pointers[touch.identifier]; - }); - } else { - delete pointers[event.pointerId || 0]; - } - - if (!action) { - return; - } - - event.preventDefault(); - - if (!Object.keys(pointers).length) { - this.action = ''; - } - - if (this.cropping) { - this.cropping = false; - toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal); - } - - dispatchEvent(this.element, EVENT_CROP_END, { - originalEvent: event, - action: action - }); - } - }; - - var change = { - change: function change(event) { - var options = this.options, - canvasData = this.canvasData, - containerData = this.containerData, - cropBoxData = this.cropBoxData, - pointers = this.pointers; - var action = this.action; - var aspectRatio = options.aspectRatio; - var left = cropBoxData.left, - top = cropBoxData.top, - width = cropBoxData.width, - height = cropBoxData.height; - var right = left + width; - var bottom = top + height; - var minLeft = 0; - var minTop = 0; - var maxWidth = containerData.width; - var maxHeight = containerData.height; - var renderable = true; - var offset; // Locking aspect ratio in "free mode" by holding shift key - - if (!aspectRatio && event.shiftKey) { - aspectRatio = width && height ? width / height : 1; - } - - if (this.limited) { - minLeft = cropBoxData.minLeft; - minTop = cropBoxData.minTop; - maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width); - maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height); - } - - var pointer = pointers[Object.keys(pointers)[0]]; - var range = { - x: pointer.endX - pointer.startX, - y: pointer.endY - pointer.startY - }; - - var check = function check(side) { - switch (side) { - case ACTION_EAST: - if (right + range.x > maxWidth) { - range.x = maxWidth - right; - } - - break; - - case ACTION_WEST: - if (left + range.x < minLeft) { - range.x = minLeft - left; - } - - break; - - case ACTION_NORTH: - if (top + range.y < minTop) { - range.y = minTop - top; - } - - break; - - case ACTION_SOUTH: - if (bottom + range.y > maxHeight) { - range.y = maxHeight - bottom; - } - - break; - - default: - } - }; - - switch (action) { - // Move crop box - case ACTION_ALL: - left += range.x; - top += range.y; - break; - // Resize crop box - - case ACTION_EAST: - if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) { - renderable = false; - break; - } - - check(ACTION_EAST); - width += range.x; - - if (width < 0) { - action = ACTION_WEST; - width = -width; - left -= width; - } - - if (aspectRatio) { - height = width / aspectRatio; - top += (cropBoxData.height - height) / 2; - } - - break; - - case ACTION_NORTH: - if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) { - renderable = false; - break; - } - - check(ACTION_NORTH); - height -= range.y; - top += range.y; - - if (height < 0) { - action = ACTION_SOUTH; - height = -height; - top -= height; - } - - if (aspectRatio) { - width = height * aspectRatio; - left += (cropBoxData.width - width) / 2; - } - - break; - - case ACTION_WEST: - if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) { - renderable = false; - break; - } - - check(ACTION_WEST); - width -= range.x; - left += range.x; - - if (width < 0) { - action = ACTION_EAST; - width = -width; - left -= width; - } - - if (aspectRatio) { - height = width / aspectRatio; - top += (cropBoxData.height - height) / 2; - } - - break; - - case ACTION_SOUTH: - if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) { - renderable = false; - break; - } - - check(ACTION_SOUTH); - height += range.y; - - if (height < 0) { - action = ACTION_NORTH; - height = -height; - top -= height; - } - - if (aspectRatio) { - width = height * aspectRatio; - left += (cropBoxData.width - width) / 2; - } - - break; - - case ACTION_NORTH_EAST: - if (aspectRatio) { - if (range.y <= 0 && (top <= minTop || right >= maxWidth)) { - renderable = false; - break; - } - - check(ACTION_NORTH); - height -= range.y; - top += range.y; - width = height * aspectRatio; - } else { - check(ACTION_NORTH); - check(ACTION_EAST); - - if (range.x >= 0) { - if (right < maxWidth) { - width += range.x; - } else if (range.y <= 0 && top <= minTop) { - renderable = false; - } - } else { - width += range.x; - } - - if (range.y <= 0) { - if (top > minTop) { - height -= range.y; - top += range.y; - } - } else { - height -= range.y; - top += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_SOUTH_WEST; - height = -height; - width = -width; - top -= height; - left -= width; - } else if (width < 0) { - action = ACTION_NORTH_WEST; - width = -width; - left -= width; - } else if (height < 0) { - action = ACTION_SOUTH_EAST; - height = -height; - top -= height; - } - - break; - - case ACTION_NORTH_WEST: - if (aspectRatio) { - if (range.y <= 0 && (top <= minTop || left <= minLeft)) { - renderable = false; - break; - } - - check(ACTION_NORTH); - height -= range.y; - top += range.y; - width = height * aspectRatio; - left += cropBoxData.width - width; - } else { - check(ACTION_NORTH); - check(ACTION_WEST); - - if (range.x <= 0) { - if (left > minLeft) { - width -= range.x; - left += range.x; - } else if (range.y <= 0 && top <= minTop) { - renderable = false; - } - } else { - width -= range.x; - left += range.x; - } - - if (range.y <= 0) { - if (top > minTop) { - height -= range.y; - top += range.y; - } - } else { - height -= range.y; - top += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_SOUTH_EAST; - height = -height; - width = -width; - top -= height; - left -= width; - } else if (width < 0) { - action = ACTION_NORTH_EAST; - width = -width; - left -= width; - } else if (height < 0) { - action = ACTION_SOUTH_WEST; - height = -height; - top -= height; - } - - break; - - case ACTION_SOUTH_WEST: - if (aspectRatio) { - if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) { - renderable = false; - break; - } - - check(ACTION_WEST); - width -= range.x; - left += range.x; - height = width / aspectRatio; - } else { - check(ACTION_SOUTH); - check(ACTION_WEST); - - if (range.x <= 0) { - if (left > minLeft) { - width -= range.x; - left += range.x; - } else if (range.y >= 0 && bottom >= maxHeight) { - renderable = false; - } - } else { - width -= range.x; - left += range.x; - } - - if (range.y >= 0) { - if (bottom < maxHeight) { - height += range.y; - } - } else { - height += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_NORTH_EAST; - height = -height; - width = -width; - top -= height; - left -= width; - } else if (width < 0) { - action = ACTION_SOUTH_EAST; - width = -width; - left -= width; - } else if (height < 0) { - action = ACTION_NORTH_WEST; - height = -height; - top -= height; - } - - break; - - case ACTION_SOUTH_EAST: - if (aspectRatio) { - if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) { - renderable = false; - break; - } - - check(ACTION_EAST); - width += range.x; - height = width / aspectRatio; - } else { - check(ACTION_SOUTH); - check(ACTION_EAST); - - if (range.x >= 0) { - if (right < maxWidth) { - width += range.x; - } else if (range.y >= 0 && bottom >= maxHeight) { - renderable = false; - } - } else { - width += range.x; - } - - if (range.y >= 0) { - if (bottom < maxHeight) { - height += range.y; - } - } else { - height += range.y; - } - } - - if (width < 0 && height < 0) { - action = ACTION_NORTH_WEST; - height = -height; - width = -width; - top -= height; - left -= width; - } else if (width < 0) { - action = ACTION_SOUTH_WEST; - width = -width; - left -= width; - } else if (height < 0) { - action = ACTION_NORTH_EAST; - height = -height; - top -= height; - } - - break; - // Move canvas - - case ACTION_MOVE: - this.move(range.x, range.y); - renderable = false; - break; - // Zoom canvas - - case ACTION_ZOOM: - this.zoom(getMaxZoomRatio(pointers), event); - renderable = false; - break; - // Create crop box - - case ACTION_CROP: - if (!range.x || !range.y) { - renderable = false; - break; - } - - offset = getOffset(this.cropper); - left = pointer.startX - offset.left; - top = pointer.startY - offset.top; - width = cropBoxData.minWidth; - height = cropBoxData.minHeight; - - if (range.x > 0) { - action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST; - } else if (range.x < 0) { - left -= width; - action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST; - } - - if (range.y < 0) { - top -= height; - } // Show the crop box if is hidden - - - if (!this.cropped) { - removeClass(this.cropBox, CLASS_HIDDEN); - this.cropped = true; - - if (this.limited) { - this.limitCropBox(true, true); - } - } - - break; - - default: - } - - if (renderable) { - cropBoxData.width = width; - cropBoxData.height = height; - cropBoxData.left = left; - cropBoxData.top = top; - this.action = action; - this.renderCropBox(); - } // Override - - - forEach(pointers, function (p) { - p.startX = p.endX; - p.startY = p.endY; - }); - } - }; - - var methods = { - // Show the crop box manually - crop: function crop() { - if (this.ready && !this.cropped && !this.disabled) { - this.cropped = true; - this.limitCropBox(true, true); - - if (this.options.modal) { - addClass(this.dragBox, CLASS_MODAL); - } - - removeClass(this.cropBox, CLASS_HIDDEN); - this.setCropBoxData(this.initialCropBoxData); - } - - return this; - }, - // Reset the image and crop box to their initial states - reset: function reset() { - if (this.ready && !this.disabled) { - this.imageData = assign({}, this.initialImageData); - this.canvasData = assign({}, this.initialCanvasData); - this.cropBoxData = assign({}, this.initialCropBoxData); - this.renderCanvas(); - - if (this.cropped) { - this.renderCropBox(); - } - } - - return this; - }, - // Clear the crop box - clear: function clear() { - if (this.cropped && !this.disabled) { - assign(this.cropBoxData, { - left: 0, - top: 0, - width: 0, - height: 0 - }); - this.cropped = false; - this.renderCropBox(); - this.limitCanvas(true, true); // Render canvas after crop box rendered - - this.renderCanvas(); - removeClass(this.dragBox, CLASS_MODAL); - addClass(this.cropBox, CLASS_HIDDEN); - } - - return this; - }, - - /** - * Replace the image's src and rebuild the cropper - * @param {string} url - The new URL. - * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one. - * @returns {Cropper} this - */ - replace: function replace(url) { - var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - if (!this.disabled && url) { - if (this.isImg) { - this.element.src = url; - } - - if (hasSameSize) { - this.url = url; - this.image.src = url; - - if (this.ready) { - this.viewBoxImage.src = url; - forEach(this.previews, function (element) { - element.getElementsByTagName('img')[0].src = url; - }); - } - } else { - if (this.isImg) { - this.replaced = true; - } - - this.options.data = null; - this.uncreate(); - this.load(url); - } - } - - return this; - }, - // Enable (unfreeze) the cropper - enable: function enable() { - if (this.ready && this.disabled) { - this.disabled = false; - removeClass(this.cropper, CLASS_DISABLED); - } - - return this; - }, - // Disable (freeze) the cropper - disable: function disable() { - if (this.ready && !this.disabled) { - this.disabled = true; - addClass(this.cropper, CLASS_DISABLED); - } - - return this; - }, - - /** - * Destroy the cropper and remove the instance from the image - * @returns {Cropper} this - */ - destroy: function destroy() { - var element = this.element; - - if (!element[NAMESPACE]) { - return this; - } - - element[NAMESPACE] = undefined; - - if (this.isImg && this.replaced) { - element.src = this.originalUrl; - } - - this.uncreate(); - return this; - }, - - /** - * Move the canvas with relative offsets - * @param {number} offsetX - The relative offset distance on the x-axis. - * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis. - * @returns {Cropper} this - */ - move: function move(offsetX) { - var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX; - var _this$canvasData = this.canvasData, - left = _this$canvasData.left, - top = _this$canvasData.top; - return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY)); - }, - - /** - * Move the canvas to an absolute point - * @param {number} x - The x-axis coordinate. - * @param {number} [y=x] - The y-axis coordinate. - * @returns {Cropper} this - */ - moveTo: function moveTo(x) { - var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x; - var canvasData = this.canvasData; - var changed = false; - x = Number(x); - y = Number(y); - - if (this.ready && !this.disabled && this.options.movable) { - if (isNumber(x)) { - canvasData.left = x; - changed = true; - } - - if (isNumber(y)) { - canvasData.top = y; - changed = true; - } - - if (changed) { - this.renderCanvas(true); - } - } - - return this; - }, - - /** - * Zoom the canvas with a relative ratio - * @param {number} ratio - The target ratio. - * @param {Event} _originalEvent - The original event if any. - * @returns {Cropper} this - */ - zoom: function zoom(ratio, _originalEvent) { - var canvasData = this.canvasData; - ratio = Number(ratio); - - if (ratio < 0) { - ratio = 1 / (1 - ratio); - } else { - ratio = 1 + ratio; - } - - return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent); - }, - - /** - * Zoom the canvas to an absolute ratio - * @param {number} ratio - The target ratio. - * @param {Object} pivot - The zoom pivot point coordinate. - * @param {Event} _originalEvent - The original event if any. - * @returns {Cropper} this - */ - zoomTo: function zoomTo(ratio, pivot, _originalEvent) { - var options = this.options, - canvasData = this.canvasData; - var width = canvasData.width, - height = canvasData.height, - naturalWidth = canvasData.naturalWidth, - naturalHeight = canvasData.naturalHeight; - ratio = Number(ratio); - - if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) { - var newWidth = naturalWidth * ratio; - var newHeight = naturalHeight * ratio; - - if (dispatchEvent(this.element, EVENT_ZOOM, { - ratio: ratio, - oldRatio: width / naturalWidth, - originalEvent: _originalEvent - }) === false) { - return this; - } - - if (_originalEvent) { - var pointers = this.pointers; - var offset = getOffset(this.cropper); - var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : { - pageX: _originalEvent.pageX, - pageY: _originalEvent.pageY - }; // Zoom from the triggering point of the event - - canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width); - canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height); - } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) { - canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width); - canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height); - } else { - // Zoom from the center of the canvas - canvasData.left -= (newWidth - width) / 2; - canvasData.top -= (newHeight - height) / 2; - } - - canvasData.width = newWidth; - canvasData.height = newHeight; - this.renderCanvas(true); - } - - return this; - }, - - /** - * Rotate the canvas with a relative degree - * @param {number} degree - The rotate degree. - * @returns {Cropper} this - */ - rotate: function rotate(degree) { - return this.rotateTo((this.imageData.rotate || 0) + Number(degree)); - }, - - /** - * Rotate the canvas to an absolute degree - * @param {number} degree - The rotate degree. - * @returns {Cropper} this - */ - rotateTo: function rotateTo(degree) { - degree = Number(degree); - - if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) { - this.imageData.rotate = degree % 360; - this.renderCanvas(true, true); - } - - return this; - }, - - /** - * Scale the image on the x-axis. - * @param {number} scaleX - The scale ratio on the x-axis. - * @returns {Cropper} this - */ - scaleX: function scaleX(_scaleX) { - var scaleY = this.imageData.scaleY; - return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1); - }, - - /** - * Scale the image on the y-axis. - * @param {number} scaleY - The scale ratio on the y-axis. - * @returns {Cropper} this - */ - scaleY: function scaleY(_scaleY) { - var scaleX = this.imageData.scaleX; - return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY); - }, - - /** - * Scale the image - * @param {number} scaleX - The scale ratio on the x-axis. - * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis. - * @returns {Cropper} this - */ - scale: function scale(scaleX) { - var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX; - var imageData = this.imageData; - var transformed = false; - scaleX = Number(scaleX); - scaleY = Number(scaleY); - - if (this.ready && !this.disabled && this.options.scalable) { - if (isNumber(scaleX)) { - imageData.scaleX = scaleX; - transformed = true; - } - - if (isNumber(scaleY)) { - imageData.scaleY = scaleY; - transformed = true; - } - - if (transformed) { - this.renderCanvas(true, true); - } - } - - return this; - }, - - /** - * Get the cropped area position and size data (base on the original image) - * @param {boolean} [rounded=false] - Indicate if round the data values or not. - * @returns {Object} The result cropped data. - */ - getData: function getData() { - var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var options = this.options, - imageData = this.imageData, - canvasData = this.canvasData, - cropBoxData = this.cropBoxData; - var data; - - if (this.ready && this.cropped) { - data = { - x: cropBoxData.left - canvasData.left, - y: cropBoxData.top - canvasData.top, - width: cropBoxData.width, - height: cropBoxData.height - }; - var ratio = imageData.width / imageData.naturalWidth; - forEach(data, function (n, i) { - data[i] = n / ratio; - }); - - if (rounded) { - // In case rounding off leads to extra 1px in right or bottom border - // we should round the top-left corner and the dimension (#343). - var bottom = Math.round(data.y + data.height); - var right = Math.round(data.x + data.width); - data.x = Math.round(data.x); - data.y = Math.round(data.y); - data.width = right - data.x; - data.height = bottom - data.y; - } - } else { - data = { - x: 0, - y: 0, - width: 0, - height: 0 - }; - } - - if (options.rotatable) { - data.rotate = imageData.rotate || 0; - } - - if (options.scalable) { - data.scaleX = imageData.scaleX || 1; - data.scaleY = imageData.scaleY || 1; - } - - return data; - }, - - /** - * Set the cropped area position and size with new data - * @param {Object} data - The new data. - * @returns {Cropper} this - */ - setData: function setData(data) { - var options = this.options, - imageData = this.imageData, - canvasData = this.canvasData; - var cropBoxData = {}; - - if (this.ready && !this.disabled && isPlainObject(data)) { - var transformed = false; - - if (options.rotatable) { - if (isNumber(data.rotate) && data.rotate !== imageData.rotate) { - imageData.rotate = data.rotate; - transformed = true; - } - } - - if (options.scalable) { - if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) { - imageData.scaleX = data.scaleX; - transformed = true; - } - - if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) { - imageData.scaleY = data.scaleY; - transformed = true; - } - } - - if (transformed) { - this.renderCanvas(true, true); - } - - var ratio = imageData.width / imageData.naturalWidth; - - if (isNumber(data.x)) { - cropBoxData.left = data.x * ratio + canvasData.left; - } - - if (isNumber(data.y)) { - cropBoxData.top = data.y * ratio + canvasData.top; - } - - if (isNumber(data.width)) { - cropBoxData.width = data.width * ratio; - } - - if (isNumber(data.height)) { - cropBoxData.height = data.height * ratio; - } - - this.setCropBoxData(cropBoxData); - } - - return this; - }, - - /** - * Get the container size data. - * @returns {Object} The result container data. - */ - getContainerData: function getContainerData() { - return this.ready ? assign({}, this.containerData) : {}; - }, - - /** - * Get the image position and size data. - * @returns {Object} The result image data. - */ - getImageData: function getImageData() { - return this.sized ? assign({}, this.imageData) : {}; - }, - - /** - * Get the canvas position and size data. - * @returns {Object} The result canvas data. - */ - getCanvasData: function getCanvasData() { - var canvasData = this.canvasData; - var data = {}; - - if (this.ready) { - forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) { - data[n] = canvasData[n]; - }); - } - - return data; - }, - - /** - * Set the canvas position and size with new data. - * @param {Object} data - The new canvas data. - * @returns {Cropper} this - */ - setCanvasData: function setCanvasData(data) { - var canvasData = this.canvasData; - var aspectRatio = canvasData.aspectRatio; - - if (this.ready && !this.disabled && isPlainObject(data)) { - if (isNumber(data.left)) { - canvasData.left = data.left; - } - - if (isNumber(data.top)) { - canvasData.top = data.top; - } - - if (isNumber(data.width)) { - canvasData.width = data.width; - canvasData.height = data.width / aspectRatio; - } else if (isNumber(data.height)) { - canvasData.height = data.height; - canvasData.width = data.height * aspectRatio; - } - - this.renderCanvas(true); - } - - return this; - }, - - /** - * Get the crop box position and size data. - * @returns {Object} The result crop box data. - */ - getCropBoxData: function getCropBoxData() { - var cropBoxData = this.cropBoxData; - var data; - - if (this.ready && this.cropped) { - data = { - left: cropBoxData.left, - top: cropBoxData.top, - width: cropBoxData.width, - height: cropBoxData.height - }; - } - - return data || {}; - }, - - /** - * Set the crop box position and size with new data. - * @param {Object} data - The new crop box data. - * @returns {Cropper} this - */ - setCropBoxData: function setCropBoxData(data) { - var cropBoxData = this.cropBoxData; - var aspectRatio = this.options.aspectRatio; - var widthChanged; - var heightChanged; - - if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) { - if (isNumber(data.left)) { - cropBoxData.left = data.left; - } - - if (isNumber(data.top)) { - cropBoxData.top = data.top; - } - - if (isNumber(data.width) && data.width !== cropBoxData.width) { - widthChanged = true; - cropBoxData.width = data.width; - } - - if (isNumber(data.height) && data.height !== cropBoxData.height) { - heightChanged = true; - cropBoxData.height = data.height; - } - - if (aspectRatio) { - if (widthChanged) { - cropBoxData.height = cropBoxData.width / aspectRatio; - } else if (heightChanged) { - cropBoxData.width = cropBoxData.height * aspectRatio; - } - } - - this.renderCropBox(); - } - - return this; - }, - - /** - * Get a canvas drawn the cropped image. - * @param {Object} [options={}] - The config options. - * @returns {HTMLCanvasElement} - The result canvas. - */ - getCroppedCanvas: function getCroppedCanvas() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - if (!this.ready || !window.HTMLCanvasElement) { - return null; - } - - var canvasData = this.canvasData; - var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped. - - if (!this.cropped) { - return source; - } - - var _this$getData = this.getData(), - initialX = _this$getData.x, - initialY = _this$getData.y, - initialWidth = _this$getData.width, - initialHeight = _this$getData.height; - - var ratio = source.width / Math.floor(canvasData.naturalWidth); - - if (ratio !== 1) { - initialX *= ratio; - initialY *= ratio; - initialWidth *= ratio; - initialHeight *= ratio; - } - - var aspectRatio = initialWidth / initialHeight; - var maxSizes = getAdjustedSizes({ - aspectRatio: aspectRatio, - width: options.maxWidth || Infinity, - height: options.maxHeight || Infinity - }); - var minSizes = getAdjustedSizes({ - aspectRatio: aspectRatio, - width: options.minWidth || 0, - height: options.minHeight || 0 - }, 'cover'); - - var _getAdjustedSizes = getAdjustedSizes({ - aspectRatio: aspectRatio, - width: options.width || (ratio !== 1 ? source.width : initialWidth), - height: options.height || (ratio !== 1 ? source.height : initialHeight) - }), - width = _getAdjustedSizes.width, - height = _getAdjustedSizes.height; - - width = Math.min(maxSizes.width, Math.max(minSizes.width, width)); - height = Math.min(maxSizes.height, Math.max(minSizes.height, height)); - var canvas = document.createElement('canvas'); - var context = canvas.getContext('2d'); - canvas.width = normalizeDecimalNumber(width); - canvas.height = normalizeDecimalNumber(height); - context.fillStyle = options.fillColor || 'transparent'; - context.fillRect(0, 0, width, height); - var _options$imageSmoothi = options.imageSmoothingEnabled, - imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi, - imageSmoothingQuality = options.imageSmoothingQuality; - context.imageSmoothingEnabled = imageSmoothingEnabled; - - if (imageSmoothingQuality) { - context.imageSmoothingQuality = imageSmoothingQuality; - } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage - - - var sourceWidth = source.width; - var sourceHeight = source.height; // Source canvas parameters - - var srcX = initialX; - var srcY = initialY; - var srcWidth; - var srcHeight; // Destination canvas parameters - - var dstX; - var dstY; - var dstWidth; - var dstHeight; - - if (srcX <= -initialWidth || srcX > sourceWidth) { - srcX = 0; - srcWidth = 0; - dstX = 0; - dstWidth = 0; - } else if (srcX <= 0) { - dstX = -srcX; - srcX = 0; - srcWidth = Math.min(sourceWidth, initialWidth + srcX); - dstWidth = srcWidth; - } else if (srcX <= sourceWidth) { - dstX = 0; - srcWidth = Math.min(initialWidth, sourceWidth - srcX); - dstWidth = srcWidth; - } - - if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) { - srcY = 0; - srcHeight = 0; - dstY = 0; - dstHeight = 0; - } else if (srcY <= 0) { - dstY = -srcY; - srcY = 0; - srcHeight = Math.min(sourceHeight, initialHeight + srcY); - dstHeight = srcHeight; - } else if (srcY <= sourceHeight) { - dstY = 0; - srcHeight = Math.min(initialHeight, sourceHeight - srcY); - dstHeight = srcHeight; - } - - var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid "IndexSizeError" - - if (dstWidth > 0 && dstHeight > 0) { - var scale = width / initialWidth; - params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale); - } // All the numerical parameters should be integer for `drawImage` - // https://github.com/fengyuanchen/cropper/issues/476 - - - context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) { - return Math.floor(normalizeDecimalNumber(param)); - })))); - return canvas; - }, - - /** - * Change the aspect ratio of the crop box. - * @param {number} aspectRatio - The new aspect ratio. - * @returns {Cropper} this - */ - setAspectRatio: function setAspectRatio(aspectRatio) { - var options = this.options; - - if (!this.disabled && !isUndefined(aspectRatio)) { - // 0 -> NaN - options.aspectRatio = Math.max(0, aspectRatio) || NaN; - - if (this.ready) { - this.initCropBox(); - - if (this.cropped) { - this.renderCropBox(); - } - } - } - - return this; - }, - - /** - * Change the drag mode. - * @param {string} mode - The new drag mode. - * @returns {Cropper} this - */ - setDragMode: function setDragMode(mode) { - var options = this.options, - dragBox = this.dragBox, - face = this.face; - - if (this.ready && !this.disabled) { - var croppable = mode === DRAG_MODE_CROP; - var movable = options.movable && mode === DRAG_MODE_MOVE; - mode = croppable || movable ? mode : DRAG_MODE_NONE; - options.dragMode = mode; - setData(dragBox, DATA_ACTION, mode); - toggleClass(dragBox, CLASS_CROP, croppable); - toggleClass(dragBox, CLASS_MOVE, movable); - - if (!options.cropBoxMovable) { - // Sync drag mode to crop box when it is not movable - setData(face, DATA_ACTION, mode); - toggleClass(face, CLASS_CROP, croppable); - toggleClass(face, CLASS_MOVE, movable); - } - } - - return this; - } - }; - - var AnotherCropper = WINDOW.Cropper; - - var Cropper = - /*#__PURE__*/ - function () { - /** - * Create a new Cropper. - * @param {Element} element - The target element for cropping. - * @param {Object} [options={}] - The configuration options. - */ - function Cropper(element) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - _classCallCheck(this, Cropper); - - if (!element || !REGEXP_TAG_NAME.test(element.tagName)) { - throw new Error('The first argument is required and must be an or element.'); - } - - this.element = element; - this.options = assign({}, DEFAULTS, isPlainObject(options) && options); - this.cropped = false; - this.disabled = false; - this.pointers = {}; - this.ready = false; - this.reloading = false; - this.replaced = false; - this.sized = false; - this.sizing = false; - this.init(); - } - - _createClass(Cropper, [{ - key: "init", - value: function init() { - var element = this.element; - var tagName = element.tagName.toLowerCase(); - var url; - - if (element[NAMESPACE]) { - return; - } - - element[NAMESPACE] = this; - - if (tagName === 'img') { - this.isImg = true; // e.g.: "img/picture.jpg" - - url = element.getAttribute('src') || ''; - this.originalUrl = url; // Stop when it's a blank image - - if (!url) { - return; - } // e.g.: "http://example.com/img/picture.jpg" - - - url = element.src; - } else if (tagName === 'canvas' && window.HTMLCanvasElement) { - url = element.toDataURL(); - } - - this.load(url); - } - }, { - key: "load", - value: function load(url) { - var _this = this; - - if (!url) { - return; - } - - this.url = url; - this.imageData = {}; - var element = this.element, - options = this.options; - - if (!options.rotatable && !options.scalable) { - options.checkOrientation = false; - } // Only IE10+ supports Typed Arrays - - - if (!options.checkOrientation || !window.ArrayBuffer) { - this.clone(); - return; - } // Detect the mime type of the image directly if it is a Data URL - - - if (REGEXP_DATA_URL.test(url)) { - // Read ArrayBuffer from Data URL of JPEG images directly for better performance - if (REGEXP_DATA_URL_JPEG.test(url)) { - this.read(dataURLToArrayBuffer(url)); - } else { - // Only a JPEG image may contains Exif Orientation information, - // the rest types of Data URLs are not necessary to check orientation at all. - this.clone(); - } - - return; - } // 1. Detect the mime type of the image by a XMLHttpRequest. - // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image. - - - var xhr = new XMLHttpRequest(); - var clone = this.clone.bind(this); - this.reloading = true; - this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes: - // http, https, data, chrome, chrome-extension. - // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy - // in some browsers as IE11 and Safari. - - xhr.onabort = clone; - xhr.onerror = clone; - xhr.ontimeout = clone; - - xhr.onprogress = function () { - // Abort the request directly if it not a JPEG image for better performance - if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) { - xhr.abort(); - } - }; - - xhr.onload = function () { - _this.read(xhr.response); - }; - - xhr.onloadend = function () { - _this.reloading = false; - _this.xhr = null; - }; // Bust cache when there is a "crossOrigin" property to avoid browser cache error - - - if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) { - url = addTimestamp(url); - } - - xhr.open('GET', url); - xhr.responseType = 'arraybuffer'; - xhr.withCredentials = element.crossOrigin === 'use-credentials'; - xhr.send(); - } - }, { - key: "read", - value: function read(arrayBuffer) { - var options = this.options, - imageData = this.imageData; // Reset the orientation value to its default value 1 - // as some iOS browsers will render image with its orientation - - var orientation = resetAndGetOrientation(arrayBuffer); - var rotate = 0; - var scaleX = 1; - var scaleY = 1; - - if (orientation > 1) { - // Generate a new URL which has the default orientation value - this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG); - - var _parseOrientation = parseOrientation(orientation); - - rotate = _parseOrientation.rotate; - scaleX = _parseOrientation.scaleX; - scaleY = _parseOrientation.scaleY; - } - - if (options.rotatable) { - imageData.rotate = rotate; - } - - if (options.scalable) { - imageData.scaleX = scaleX; - imageData.scaleY = scaleY; - } - - this.clone(); - } - }, { - key: "clone", - value: function clone() { - var element = this.element, - url = this.url; - var crossOrigin = element.crossOrigin; - var crossOriginUrl = url; - - if (this.options.checkCrossOrigin && isCrossOriginURL(url)) { - if (!crossOrigin) { - crossOrigin = 'anonymous'; - } // Bust cache when there is not a "crossOrigin" property (#519) - - - crossOriginUrl = addTimestamp(url); - } - - this.crossOrigin = crossOrigin; - this.crossOriginUrl = crossOriginUrl; - var image = document.createElement('img'); - - if (crossOrigin) { - image.crossOrigin = crossOrigin; - } - - image.src = crossOriginUrl || url; - image.alt = element.alt || 'The image to crop'; - this.image = image; - image.onload = this.start.bind(this); - image.onerror = this.stop.bind(this); - addClass(image, CLASS_HIDE); - element.parentNode.insertBefore(image, element.nextSibling); - } - }, { - key: "start", - value: function start() { - var _this2 = this; - - var image = this.image; - image.onload = null; - image.onerror = null; - this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices, - // such as Safari for iOS, Chrome for iOS, and in-app browsers. - - var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent); - - var done = function done(naturalWidth, naturalHeight) { - assign(_this2.imageData, { - naturalWidth: naturalWidth, - naturalHeight: naturalHeight, - aspectRatio: naturalWidth / naturalHeight - }); - _this2.sizing = false; - _this2.sized = true; - - _this2.build(); - }; // Most modern browsers (excepts iOS WebKit) - - - if (image.naturalWidth && !isIOSWebKit) { - done(image.naturalWidth, image.naturalHeight); - return; - } - - var sizingImage = document.createElement('img'); - var body = document.body || document.documentElement; - this.sizingImage = sizingImage; - - sizingImage.onload = function () { - done(sizingImage.width, sizingImage.height); - - if (!isIOSWebKit) { - body.removeChild(sizingImage); - } - }; - - sizingImage.src = image.src; // iOS WebKit will convert the image automatically - // with its orientation once append it into DOM (#279) - - if (!isIOSWebKit) { - sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;'; - body.appendChild(sizingImage); - } - } - }, { - key: "stop", - value: function stop() { - var image = this.image; - image.onload = null; - image.onerror = null; - image.parentNode.removeChild(image); - this.image = null; - } - }, { - key: "build", - value: function build() { - if (!this.sized || this.ready) { - return; - } - - var element = this.element, - options = this.options, - image = this.image; // Create cropper elements - - var container = element.parentNode; - var template = document.createElement('div'); - template.innerHTML = TEMPLATE; - var cropper = template.querySelector(".".concat(NAMESPACE, "-container")); - var canvas = cropper.querySelector(".".concat(NAMESPACE, "-canvas")); - var dragBox = cropper.querySelector(".".concat(NAMESPACE, "-drag-box")); - var cropBox = cropper.querySelector(".".concat(NAMESPACE, "-crop-box")); - var face = cropBox.querySelector(".".concat(NAMESPACE, "-face")); - this.container = container; - this.cropper = cropper; - this.canvas = canvas; - this.dragBox = dragBox; - this.cropBox = cropBox; - this.viewBox = cropper.querySelector(".".concat(NAMESPACE, "-view-box")); - this.face = face; - canvas.appendChild(image); // Hide the original image - - addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image - - container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden - - if (!this.isImg) { - removeClass(image, CLASS_HIDE); - } - - this.initPreview(); - this.bind(); - options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN; - options.aspectRatio = Math.max(0, options.aspectRatio) || NaN; - options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0; - addClass(cropBox, CLASS_HIDDEN); - - if (!options.guides) { - addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-dashed")), CLASS_HIDDEN); - } - - if (!options.center) { - addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-center")), CLASS_HIDDEN); - } - - if (options.background) { - addClass(cropper, "".concat(NAMESPACE, "-bg")); - } - - if (!options.highlight) { - addClass(face, CLASS_INVISIBLE); - } - - if (options.cropBoxMovable) { - addClass(face, CLASS_MOVE); - setData(face, DATA_ACTION, ACTION_ALL); - } - - if (!options.cropBoxResizable) { - addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-line")), CLASS_HIDDEN); - addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-point")), CLASS_HIDDEN); - } - - this.render(); - this.ready = true; - this.setDragMode(options.dragMode); - - if (options.autoCrop) { - this.crop(); - } - - this.setData(options.data); - - if (isFunction(options.ready)) { - addListener(element, EVENT_READY, options.ready, { - once: true - }); - } - - dispatchEvent(element, EVENT_READY); - } - }, { - key: "unbuild", - value: function unbuild() { - if (!this.ready) { - return; - } - - this.ready = false; - this.unbind(); - this.resetPreview(); - this.cropper.parentNode.removeChild(this.cropper); - removeClass(this.element, CLASS_HIDDEN); - } - }, { - key: "uncreate", - value: function uncreate() { - if (this.ready) { - this.unbuild(); - this.ready = false; - this.cropped = false; - } else if (this.sizing) { - this.sizingImage.onload = null; - this.sizing = false; - this.sized = false; - } else if (this.reloading) { - this.xhr.onabort = null; - this.xhr.abort(); - } else if (this.image) { - this.stop(); - } - } - /** - * Get the no conflict cropper class. - * @returns {Cropper} The cropper class. - */ - - }], [{ - key: "noConflict", - value: function noConflict() { - window.Cropper = AnotherCropper; - return Cropper; - } - /** - * Change the default options. - * @param {Object} options - The new default options. - */ - - }, { - key: "setDefaults", - value: function setDefaults(options) { - assign(DEFAULTS, isPlainObject(options) && options); - } - }]); - - return Cropper; - }(); - - assign(Cropper.prototype, render, preview, events, handlers, change, methods); - - return Cropper; - -})); diff --git a/custom_gallery/app/assets/javascripts/custom_gallery.js b/custom_gallery/app/assets/javascripts/custom_gallery.js deleted file mode 100644 index 5a5d137..0000000 --- a/custom_gallery/app/assets/javascripts/custom_gallery.js +++ /dev/null @@ -1,548 +0,0 @@ -function rotate(){ - $("#crop_div").dialog("open"); -} -function change_degree(degree_change){ - var degree_org = parseInt($('#show_degree').text()) - degree_org+=degree_change - if (degree_org==360 || degree_org==-360){ - degree_org = 0 - } - $('#show_degree').text(degree_org) -} -function init_upload(temp_length){ - var value = $("input[name='all_upload_length']") - if (value.val()==''){ - value.val(temp_length) - $.ajax({ - type : "post", - url : "/admin/custom_galleries/init_upload", - dataType : "json", - data:{all_length: value.val()}, - async: false, - global:false, - success: function() - { - }, - error : function(data){ - alert('init upload process failed, please try again later.') - } - }); - if (value.val()=='1'){ - value.val('') - } - } -} -function form_submit() { - var temp_length = $('#file-list').find('li.template-upload').length - init_upload(temp_length) - var length_upload - var count_upload - var send_start - if (temp_length>1){ - $( 'form#fileupload' ).ajaxSuccess(function() { - if (typeof length_upload == "undefined"){ - count_upload = 1 - length_upload = $('#file-list').find('li.template-upload').length - } - else{ - count_upload ++ - } - if (count_upload === length_upload){ - send_start = undefined - $.ajax({ - url : "/admin/custom_galleries/start_upload_process", - dataType : "json", - type : "post", - error: function(){ - alert('init upload process failed, please try again later.') - }, - success: function(){ - window.location.href = '/admin/custom_galleries/upload_process' - } - }) - $.ajax({ - url : "/admin/custom_galleries/start_upload_process", - dataType : "json", - type : "post", - error: function(){ - alert('init upload process failed, please try again later.') - }, - success: function(){ - window.location.href = '/admin/custom_galleries/upload_process' - } - }) - } - }); - } -} -function form_only_one_submit() { - var temp_length = 1 - init_upload(temp_length) -} -!function ($) { - $.fn.checkListLength = function (param){ - _defaultSettings = { - onlyOne: null, - }; - _set = $.extend(_defaultSettings, param); - $this = this; - $li = this.children('li'); - $dropzone = $('#dropzone'); - if(($li.length - _set.onlyOne) === 0) { - $('#dropzone').fadeIn(300); - } else { - $('#dropzone').fadeOut(300); - } - $('#file-list').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true }); - }; -}(window.jQuery); - -$(function () { - 'use strict'; - // Initialize the jQuery File Upload widget: - if($('#fileupload').length){ - $('#fileupload').fileupload({ - //maxFileSize: 5000000,= - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - dropZone: $('#dropzone'), - headers:{ - 'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content") - } - }); - } -}); -Array.prototype.uniq = function(){ - var attr = this - attr = $.grep(attr, function(v, k){ - return $.inArray(v ,attr) === k; - }); - return attr; -} - -function batch_crop(){ - var check_li = $('#imgholder').find("input[type='checkbox']:checked").parents('li'); - var image_ids =[]; - if (check_li.length>0){ - check_li.each(function(){ - image_ids.push($(this).data('image-id')); - }); - if (navigator.onLine) { - window.location.href = '/admin/custom_galleries/batch_crop?image_ids=' + image_ids.join(',') - } else { - alert('Please connect the network and try again later!') - } - }else{ - alert('Please select at least one') - } -} -function select_all() { - $('#imgholder').find("input[type='checkbox']:not(:checked)").trigger('click') -} -function translate(ele,pretext,text,return_flag){ - var return_value - if (navigator.onLine) { - $.ajax({ - url : "/admin/custom_galleries/translate", - dataType : "json", - type : "post", - async: false, - data:{text:text}, - success:function(data){ - if (return_flag){ - return_value = data.translate - } - else{ - ele.html(pretext + data.translate) - } - }, - error:function(){ - var back = text.split('.')[1].split('_') - var result = [] - for (i=0;i a').rsImg(); - if($containerData.custom_galleryId == 'custom_gallery') { - // $container.masonry({ - // itemSelector : '.rgcustom_album', - // isAnimated: true, - // }); - $custom_albumname.each(function(i) { - var $custom_albumblock = $(this).closest('a').height(), - $H = $(this).outerHeight(true); - if($H > $custom_albumblock) { - $(this).css({ - 'bottom': "auto", - 'top': 0, - }); - $(this).hover(function() { - $(this).stop(true, true).delay(500).animate({ - 'top': '-='+($H-$custom_albumblock), - },($H-$custom_albumblock)*10) - },function() { - $(this).stop(true, true); - $(this).css({ - 'bottom': "auto", - 'top': 0, - }); - }); - }; - }); - $('#orbit_custom_gallery').delegate('.icons-tag', clickEvent, function(){ - var tmp = $(this).parents('.rgcustom_album').eq(0) - var now_this = $(this) - if (tmp.find('.custom_albumtag').eq(0).find('li.label').length == 0){ - var ele_id = tmp.attr('data-image-id') - $.ajax({ - type : "post", - url : "/admin/custom_galleries/get_tag", - dataType : "text", - data:{ele_id: ele_id}, - global:false, - success: function(data) - { - tmp.find('.custom_albumtag').eq(0).html(data) - now_this.parents('.custom_gallery_info').nextAll('.custom_albumtag').slideToggle(300); - }, - error : function(data){ - alert('init process failed, please try again later.') - } - }); - }else{ - $(this).parents('.custom_gallery_info').nextAll('.custom_albumtag').slideToggle(300); - } - }); - }; - }); - - var bindEvent = function(instance,elem){ - var $e = elem, - image_id = $e.closest(".rgcustom_album").data("image-id"); - obj = photosData.custom_galleries.filter(function(a) { - return a.id == image_id; - })[0]; - switch($e.attr("for")){ - case "description": - instance.find(".description-editor").each(function(){ - var locale = $(this).attr("for") - $(this).html(obj.description ? obj.description[locale] : ''); - CKEDITOR.replace(this,config); - }) - - instance.find(".title-editor").each(function(){ - var locale = $(this).attr("for") - $(this).html(obj.title ? obj.title[locale] : ''); - CKEDITOR.replace(this,config); - }) - instance.find("a[data-toggle=\"tab\"],div[role=\"tabpanel\"]").each(function(){ - $(this).attr('id',$(this).attr('id').replace('-fake','')) - }) - instance.find("input[type=hidden]").val(image_id); - instance.find("form").bind("ajax:success",function(evt, data, status){ - $.pageslide.close(); - photosData = data; - }) - instance.find('.btn-group a[data-toggle="tab"]').click(function(){ - $(this).tab('show'); - $(this).parents('.btn-group').eq(0).children('a[data-toggle="tab"]').removeClass('active in'); - $(this).addClass('active in') - var inst = $($(this).attr('href')).find('textarea') - window.setTimeout(function(){ - CKEDITOR.instances[inst.attr('name')].execCommand('autogrow') - },300) - }) - break; - case "tags": - instance.find('.tags-groups').cardCheck({ - item: '.card' - }); - for(i = 0; i < obj.tags.length; i++){ - instance.find("input[value="+obj.tags[i]+"]").parent().addClass('active'); - instance.find("input[value="+obj.tags[i]+"]").prop("checked","checked"); - } - instance.find("form").submit(function(event) { - var checkboxes = $(this).find("input[type=checkbox]:checked"), - tag_ids = [], - image_ids =[image_id]; - - checkboxes.each(function(){ - tag_ids.push($(this).val()); - }) - $.post("/admin/custom_galleries/image_tagging",{"image_ids":image_ids,"tag_ids":tag_ids},function(json){ - $.pageslide.close(); - photosData = json; - }) - return false; - }); - break; - case "batch": - instance.find('.tags-groups').cardCheck({ - item: '.card' - }); - instance.find("form").submit(function(event) { - var checkboxes = $(this).find("input[type=checkbox]:checked"), - tag_ids = [], - image_ids =[], - images = $("#imgholder .rgcustom_album.active"); - checkboxes.each(function(){ - tag_ids.push($(this).val()); - }) - images.each(function(){ - image_ids.push($(this).data("image-id")); - }) - $.post("/admin/custom_galleries/image_tagging",{"image_ids":image_ids,"tag_ids":tag_ids},function(json){ - $.pageslide.close(); - photosData = json; - }) - return false; - }); - break; - } - } - - if($("#imgholder").length){ - $('.open').pageslide({ - W: '40vw', - loadComplete: function(instance,elem) { - bindEvent(instance,elem); - } - }) - } - $("#imgholder").on(clickEvent, '.photo_cover', function(event) { - var image_id = $(this).closest(".rgcustom_album").data("image-id"), - custom_album_id = $("#imgholder").data("custom_gallery-id"), - set_cover = true; - if($(this).children().hasClass("icons-star-2")){ - $(".icons-star").removeClass("icons-star").addClass('icons-star-2'); - $(this).children().removeClass("icons-star-2").addClass("icons-star"); - }else{ - $(this).children().removeClass("icons-star").addClass("icons-star-2"); - set_cover = false; - } - $.post("/admin/custom_galleries/set_cover",{"custom_album_id":custom_album_id,"image_id":image_id,"set_cover":set_cover}); - - }); - - $("#delete_selected_photos_btn").click(function(){ - var photos_to_delete = [], - delete_cover = false, - $photos = $(".rgcustom_album.active"), - custom_album_id = $("#imgholder").data("custom_gallery-id"); - $('.modal-body .spinning').fadeIn('fast'); - $('.modal-body .text-warning').hide(0); - $photos.each(function(){ - photos_to_delete.push($(this).data('image-id')); - if ($(this).find(".icons-star").length) { - delete_cover = true; - }; - }); - $.ajax({ - url : "/admin/custom_galleries/delete_photos", - type : "POST", - data : {"images":photos_to_delete,"delete_cover":delete_cover,"custom_album_id":custom_album_id}, - success : function(){ - $photos.slideUp(300,function() { - $(this).remove(); - }); - $('#dialog').modal('hide'); - $('.modal-body .spinning').hide(); - $('.modal-body .text-warning').show(); - $('.deletephoto, .deselect, .addtags').addClass('hide') - } - }); - }) - - $('#imgholder').on(clickEvent, '.checkbox', function() { - $(this).prop('checked') ? $(this).closest('.rgcustom_album').addClass('active') : $(this).closest('.rgcustom_album').removeClass('active'); - var checkLength = $("#imgholder .rgcustom_album.active"); - checkLength.length ? $('.deletephoto, .deselect, .addtags, .crop').removeClass('hide') : $('.deletephoto, .deselect, .addtags, .crop').addClass('hide'); - }); - $('.deselect').on(clickEvent, function(event) { - $('.rgcustom_album').removeClass('active'); - $('.checkbox').prop('checked', false) - $('.deletephoto, .deselect, .addtags').addClass('hide') - event.preventDefault(); - }); - $('.phtot-action').delegate('li', clickEvent, function(event) { - $('.checkbox').prop('checked', false) - $('.rgcustom_album').removeClass('active'); - $('.deletephoto, .deselect, .addtags').removeClass('hide') - }); - var images_order = []; - $("#edit-order-btn").on("click",function(){ - var el = $(this); - if($container.data("order-edit") == "0"){ - $container.sortable("enable"); - $(".order-edit-notification").slideDown(); - images_order = $container.sortable( "toArray", { attribute: "data-image-id" }); - images_order = images_order.uniq(); - $container.data("order-edit","1"); - translate(el,'','custom_gallery.save_order',false) - }else{ - var temp = $container.sortable( "toArray", { attribute: "data-image-id" }), - type = $container.attr("id"); - temp = temp.uniq() - if(images_order.toString() != temp.toString()){ - $.ajax({ - url : "/admin/custom_galleries/order", - data : {"imageids" : temp, "type" : type}, - type : "post", - dataType : "json" - }) - } - $(".order-edit-notification").slideUp(); - $container.sortable("disable"); - $container.data("order-edit","0"); - translate(el,'','custom_gallery.edit_order',false) - } - return false; - }) - - // - - var last_image_id = null; - $('.add-imgs').on({ - click: function() { - $('#fileupload').slideToggle(300, function() { - if(!$(this).is(':hidden')) { - translate($('.add-imgs'),' ','custom_gallery.close_panel',false) - $('.rgbody').stop(true, false).animate({'padding-bottom': 280}, 300); - $("#edit-order-btn").hide(); - $.ajax({ - url : "/admin/custom_galleries/last_image_id", - data : {"custom_albumid" : $("#fileupload_aid").val()}, - dataType : "json", - type : "get" - }).done(function(d){ - last_image_id = d.last_image_id; - }) - } else { - translate($('.add-imgs'),' ','custom_gallery.add_image',false) - $('.files').empty() - $('#file-list').checkListLength(); - $('.rgbody').stop(true, false).animate({'padding-bottom': 0}, 300); - $("#edit-order-btn").show(); - fetchNewImages(); - }; - }); - return false; - } - }); - var fetchNewImages = function(){ - var custom_albumid = $("#fileupload_aid").val(); - - $.getJSON('/admin/custom_galleries/get_photoData_json?id='+custom_albumid, function(json, textStatus) { - photosData = json; - }); - - $.ajax({ - url : "/admin/custom_galleries/new_images", - data : {"last_image_id" : last_image_id, "custom_album_id" : custom_albumid}, - success : function(data){ - var $e = $(data); - $imgs = $e.find("img"); - $("#imgholder").prepend($e); - $os = $e.find("a.open"); - $os.pageslide({ - W: '40vw', - loadComplete: function(instance,elem) { - bindEvent(instance,elem); - } - }); - } - }) - - } - var buttons_option={} - var op_fn1 = function() { - var check_img = $('#imgholder').find("input[type='checkbox']:checked").parents('li').find('img'); - check_img.each(function(){ - check_img.css('transform','rotate('+$('#show_degree').text()+'deg)'); - }); - } - var op_fn2 = function() { - var confirm_msg = translate('','','custom_gallery.confirm_msg',true) - if ( confirm (confirm_msg) ){ - var check_li = $('#imgholder').find("input[type='checkbox']:checked").parents('li'); - var image_ids =[]; - check_li.each(function(){ - image_ids.push($(this).data('image-id')); - }); - if (navigator.onLine) { - window.location.href = '/admin/custom_galleries/rotate_images?image_ids=' + image_ids.join(',') +'&rotate_angle=' + $('#show_degree').text() - } else { - alert('Please connect the network and try again later!') - } - console.log(image_ids) - $(this).dialog("close"); - } - - } - var op_fn3 = function() { $(this).dialog("close"); } - var op1 = translate('','','custom_gallery.review',true) - var op2 = translate('','','custom_gallery.rotate',true) - var op3 = translate('','','custom_gallery.close_panel',true) - buttons_option[op1] = op_fn1 - buttons_option[op2] = op_fn2 - buttons_option[op3] = op_fn3 - $("#crop_div").dialog({ - autoOpen: false, - show: "blind", - hide: "explode", - buttons: buttons_option - }); -}); - diff --git a/custom_gallery/app/assets/javascripts/custom_galleryAPI.js.erb b/custom_gallery/app/assets/javascripts/custom_galleryAPI.js.erb deleted file mode 100644 index 5ef550f..0000000 --- a/custom_gallery/app/assets/javascripts/custom_galleryAPI.js.erb +++ /dev/null @@ -1,297 +0,0 @@ -<%# encoding: utf-8 %> -$.extend($.expr[':'], { - 'containsi': function (elem, i, match, array) { - return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; - } -}); -var custom_galleryAPI = function(){ - g = this; - this.urlVars = rcom.getUrlVars(); - this.custom_albumArea = $("#orbit_custom_gallery"); - this.loadArea = null; - this.tagList = $("ul#custom_gallery_tag_list"); - this.loading = $("#loading"); - - this.fullscreen_mode = false; - - this.loadTheater = function(id){ - - g.loadstart(); - var imageArray = []; - var imagecount = 0; - var picHeight = 0; - var bindHandlers = function(){ - var $slidelist = $('.slidelist'), - $rslide = $('.rslide'), - $rslidenav = $('.rslidenav'), - $img = $("#main_pic img"), - wHeight = $(window).height(); - - $("#main_pic").height(picHeight); - $img.height("100%"); - - $('.bt-tag').click(function(){ - if(!$(this).hasClass("active")) - updatePhotoTag(); - $(this).toggleClass("active"); - var $tag_panel = $('#tag_panel'), - tag_panel_position = 0; - - if( $tag_panel.css('right') == '0px' ){ - tag_panel_position = -200; - } - $tag_panel.animate({'right':tag_panel_position}, 300); - - g.custom_albumArea - .delay(200) - .animate({'margin-right':tag_panel_position+200},300); - return false; - }); - var updatePhotoTag = function(){ - var tags = imageArray[imagecount].tag_ids; - if(tags.length > 0 && g.tagList.find("li").length == 0){ - var tagnames = imageArray[imagecount].tag_names; - g.tagList.empty(); - for(i in tagnames){ - $li = $("
  • "+tagnames[i]+"
  • "); - g.tagList.append($li); - } - }else if(tags.length > 0 && g.tagList.find("li").length > 0) { - g.tagList.find("input").attr("checked",false); - for(tag in tags){ - g.tagList.find("li[data-content="+tags[tag]+"] input").attr("checked",true); - } - }else if(tags.length == 0){ - if(g.tagList.find("input").length == 0) - g.tagList.empty(); - else - g.tagList.find("input").attr("checked",false); - } - } - g.custom_albumArea.find("#tag_search_box").keyup(function(e){ - sval = $(this).val(); - if(sval == "<%= I18n.t('custom_gallery.search_tags') %>") - sval = ""; - sval = sval.replace(/(^\s*)|(\s*$)/g,''); - if(sval){ - var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range - var re2 = new RegExp("^[\uE7C7-\uE7F3]*$"); - if ((re1.test(sval) && (re2.test(sval)))){ - $("#custom_gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp(); - }else{ - $("#custom_gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp(); - } - - }else{ - $("#custom_gallery_tag_list li").slideDown(); - } - }) - g.custom_albumArea.find("#tag_panel .bt-save").click(function(){ - g.saveTags(imageArray[imagecount]._id,"pic",function(tagids){ - imageArray[imagecount].tag_ids = tagids; - }) - }) - $(".slidectrl a.togglelist").click(function(){ - var rslide_h = $rslide.outerHeight(); - if ( $slidelist.height() < 1 ){ - $slidelist.stop().animate({'height':rslide_h - 30}, 300); - $slidelist.find("ul").show(); - } else { - $slidelist.stop().animate({'height':'0px'}, 300); - $slidelist.find("ul").hide(); - } - }) - $(".slidectrl .togglescreen").click(function(){ - toggleFullscreen(); - }) - $(".slidectrl .browserfullscreen").click(function(){ - browserFullScreen(); - }) - $slidelist.find(".list_element").click(function(){ - imagecount = parseInt($(this).parent().attr("for")); - changeImage($(this)); - }) - $rslidenav.find(".navN").click(function(){ - nextpic($(this)); - }) - $rslidenav.find("a.navP").click(function(){ - prevpic($(this)); - }) - $("#nextpic").click(function(){ - nextpic($(this)); - }) - - $(document).keydown(function(e){ - if (e.keyCode == 37){ - prevpic($rslidenav.find(".navP")); - return false; - } - if(e.keyCode == 39){ - nextpic($rslidenav.find(".navN")); - return false; - } - if(e.keyCode == 27){ - toggleFullscreen(); - $rslide.removeClass('browserFullScreen'); - return false; - } - if(e.keyCode == 70 || e.keyCode == 102){ - if($rslide.hasClass("fullscreen")) - browserFullScreen(); - } - }); - var browserFullScreen = function(){ - if(g.fullscreen_mode==false){ - var el = document.documentElement, - rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen; - rfs.call(el); - g.fullscreen_mode = true; - }else{ - var el = document, - rfs = el.exitFullscreen || el.msExitFullscreen || el.webkitExitFullscreen || el.mozCancelFullScreen; - rfs.call(el); - g.fullscreen_mode = false; - } - } - $(window).resize(function(){ - if(window.innerWidth == screen.width && window.innerHeight == screen.height) { - $rslide.addClass('browserFullScreen'); - } else { - $rslide.removeClass('browserFullScreen'); - } - }) - var nextpic = function(dom){ - if(imagecount == imageArray.length - 1) - imagecount = 0; - else - imagecount++; - changeImage(dom); - } - var prevpic = function(dom){ - if(imagecount == 0) - imagecount = imageArray.length - 1 - else - imagecount--; - changeImage(dom); - } - var toggleFullscreen = function(){ - if($rslide.hasClass("fullscreen")){ - $rslide.css("position","relative"); - $rslide.removeClass("fullscreen"); - $(".slidectrl .browserfullscreen").hide(); - $img.css({"padding":""}) - $("#main_pic").height(picHeight ); - }else{ - $("#main_pic").height(wHeight); - // $img.height("100%"); - $rslide.css("position",""); - $rslide.addClass("fullscreen"); - $img.css({"padding":($rslide.height()-$img.height())/2}) - $(".slidectrl .browserfullscreen").show(); - } - } - window.onpopstate = function(){ - var image_id = document.URL.split('/')[document.URL.split('/').length-1]; - var image = imageArray.filter(function(a){return a._id == image_id})[0]; - imagecount = imageArray.indexOf(image); - changeTheaterImage(image.file.theater.url); - } - var changeImage = function(dom){ - var pageurl = dom.attr('href'); - - if(rcom.getInternetExplorerVersion() == -1){ - if(pageurl!=window.location){ - window.history.pushState({path:pageurl},'',pageurl); - } - }else{ - window.location.hash = pageurl; - } - - changeTheaterImage(dom.attr("data-content")); - } - var changeTheaterImage = function(url){ - $img.fadeOut(200,function(){ - g.loadstart(); - $img.attr("src",""); - $img.attr({"src":url,"height":picHeight+"px"}).load(function(){ - $img.fadeIn(200); - g.loadcomplete(); - }); - - if($rslide.hasClass("fullscreen")){ - $img.css({"padding":($rslide.height()-$img.height())/2}) - } - $slidelist.stop().animate({'height':'0px'}, 300); - $slidelist.find("ul").hide(); - // $(".slideinfo b.info").text(imageArray[imagecount].title); - if($('.bt-tag').hasClass("active")) - updatePhotoTag(); - if(imageArray[imagecount].description) - $(".slideinfo .info").text(imageArray[imagecount].description); - else - $(".slideinfo .info").text(""); - if(imageArray.length > 1) - updateNavigation(); - }) - } - var updateNavigation = function(){ - var next, prev; - if(imagecount == 0){ - next = 1; - prev = imageArray.length - 1; - }else if(imagecount == imageArray.length - 1){ - next = 0 - prev = imageArray.length - 2; - }else{ - next = imagecount + 1; - prev = imagecount - 1; - } - $(".navN").attr({"href":imageArray[next]._id,"data-content":imageArray[next].file.theater.url}); - $(".navP").attr({"href":imageArray[prev]._id,"data-content":imageArray[prev].file.theater.url}); - }; - if(imageArray.length > 1) - updateNavigation(); - } - - var preparestage = function(custom_albumid){ - $.getJSON("../custom_galleries/"+custom_albumid+"/imgs",function(custom_album){ - // imageArray = eval(custom_album.images); - $.each(custom_album.images,function(i,image){ - imageArray.push(image) - if(image._id == id) - imagecount = i; - }) - bindHandlers(); - }) - } - - if(rcom.getInternetExplorerVersion()!=-1){ - var photo_id = window.location.hash.replace("#",""); - if(photo_id){ - var url = window.location.href; - var params = url.split("/"); - // params[params.length-1] = photo_id; - url = url.replace(params[params.length-1],photo_id); - - window.location.href = url; - } - } - - var custom_albumid = $("#main_pic").attr("data-content"); - g.custom_albumArea.find(".bt-back").attr("href",'/'+g.locale+"/admin/custom_galleries/"+custom_albumid); - g.custom_albumArea.find(".bt-edit").attr("href","../custom_albums/"+custom_albumid+"/edit"); - g.custom_albumArea.css("margin-bottom","0"); - picHeight = $(window).height() - ($("#orbit-bar").outerHeight() + $("#orbit_custom_gallery .form-actions").outerHeight()); - preparestage(custom_albumid); - - } - this.loadcomplete = function(){ - g.loading.hide(); - } - this.loadstart = function(){ - g.loading.show(); - } - -} - custom_galleryAPI.prototype.locale = "<%= I18n.locale %>"; - diff --git a/custom_gallery/app/assets/javascripts/custom_galleryAPI_frontend.js.erb b/custom_gallery/app/assets/javascripts/custom_galleryAPI_frontend.js.erb deleted file mode 100644 index 12ccb27..0000000 --- a/custom_gallery/app/assets/javascripts/custom_galleryAPI_frontend.js.erb +++ /dev/null @@ -1,273 +0,0 @@ -<%# encoding: utf-8 %> -$.extend($.expr[':'], { - 'containsi': function (elem, i, match, array) { - return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; - } -}); - -var custom_galleryAPI = function(){ - g = this; - this.urlVars = rcom.getUrlVars(); - this.custom_albumArea = $("#orbit_custom_gallery"); - this.loadArea = "theater"; - this.tagList = $(".taglist ul"); - this.loading = $("#loading"); - this.fullscreen_mode = false; - // this.authenticated = false; - this.initialize = function(callbackFn){ - if(g.loadArea == "theater"){ - if(rcom.getInternetExplorerVersion()!=-1){ - var photo_id = window.location.hash.replace("#",""); - if(photo_id){ - var params = rcom.getUrlVars(); - var url = window.location.href.split("?")[0]; - params["image_id"] = photo_id; - for(i=0;i"+tags[tag].name+""); - } - - } - - - $(".slidectrl a.togglelist").click(function(){ - var rslide_h = $rslide.outerHeight(); - if ( $slidelist.height() < 1 ){ - $slidelist.stop().animate({'height':rslide_h - 30}, 300); - $slidelist.find("ul").show(); - } else { - $slidelist.stop().animate({'height':'0px'}, 300); - $slidelist.find("ul").hide(); - } - }) - $(".slidectrl .togglescreen").click(function(){ - toggleFullscreen(); - }) - $(".slidectrl .browserfullscreen").click(function(){ - browserFullScreen(); - }) - $slidelist.find(".list_element").click(function(){ - imagecount = parseInt($(this).parent().attr("for")); - changeImage($(this)); - }) - $rslidenav.find(".navN").click(function(){ - nextpic($(this)); - }) - $rslidenav.find("a.navP").click(function(){ - prevpic($(this)); - }) - $("#nextpic").click(function(){ - nextpic($(this)); - }) - - $(document).keydown(function(e){ - if (e.keyCode == 37){ - prevpic($rslidenav.find(".navP")); - return false; - } - if(e.keyCode == 39){ - nextpic($rslidenav.find(".navN")); - return false; - } - if(e.keyCode == 27){ - toggleFullscreen(); - $rslide.removeClass('browserFullScreen'); - return false; - } - if(e.keyCode == 70 || e.keyCode == 102){ - if($rslide.hasClass("fullscreen")) - browserFullScreen(); - } - }); - var browserFullScreen = function(){ - if(g.fullscreen_mode==false){ - var el = document.documentElement, - rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen; - rfs.call(el); - g.fullscreen_mode = true; - }else{ - var el = document, - rfs = el.exitFullscreen || el.msExitFullscreen || el.webkitExitFullscreen || el.mozCancelFullScreen; - rfs.call(el); - g.fullscreen_mode = false; - } - } - $(window).resize(function(){ - if(window.innerWidth == screen.width && window.innerHeight == screen.height) { - $rslide.addClass('browserFullScreen'); - } else { - $rslide.removeClass('browserFullScreen'); - } - }) - var nextpic = function(dom){ - if(imagecount == imageArray.length - 1) - imagecount = 0; - else - imagecount++; - changeImage(dom); - } - var prevpic = function(dom){ - if(imagecount == 0) - imagecount = imageArray.length - 1 - else - imagecount--; - changeImage(dom); - } - var toggleFullscreen = function(){ - if($rslide.hasClass("fullscreen")){ - $rslide.css("position","relative"); - $rslide.removeClass("fullscreen"); - $(".slidectrl .browserfullscreen").hide(); - $img.css({"padding":""}) - $("#main_pic").height("auto"); - }else{ - $("#main_pic").height(wHeight); - $img.css("height","auto"); - $rslide.css("position",""); - $rslide.addClass("fullscreen"); - $img.css({"padding":($rslide.height()-$img.height())/2}) - $(".slidectrl .browserfullscreen").show(); - } - } - window.onpopstate = function(){ - var image_id = window.location.pathname.split('/')[window.location.pathname.split('/').length-1].split('-'); - var image = imageArray.filter(function(a){return a._id == image_id[1]})[0]; - imagecount = imageArray.indexOf(image); - changeTheaterImage(image.file.theater.url); - } - var changeImage = function(dom){ - var pageurl = dom.attr('href'); - - if(rcom.getInternetExplorerVersion() == -1){ - if(pageurl!=window.location){ - var segments = window.location.pathname.split("/"), - uid = segments[segments.length-1]; - pageurl = window.location.pathname.replace(uid,"-"+pageurl)+"?method=theater"; - window.history.pushState({path:pageurl},'',pageurl); - } - }else{ - window.location.hash = pageurl; - } - - changeTheaterImage(dom.attr("data-content")); - } - var changeTheaterImage = function(url){ - $img.fadeOut(200,function(){ - g.loadstart(); - if($rslide.hasClass("fullscreen")){ - - $img.attr({"src":url}).css("height","100%").load(function(){ - g.loadcomplete(); - $img.fadeIn(200); - }); - }else{ - $img.attr({"src":url}).css("height","auto").load(function(){ - g.loadcomplete(); - $img.fadeIn(200); - });; - } - if($rslide.hasClass("fullscreen")){ - $img.css({"padding":($rslide.height()-$img.height())/2}) - } - $slidelist.stop().animate({'height':'0px'}, 300); - $slidelist.find("ul").hide(); - // $(".slideinfo b.info").text(imageArray[imagecount].title); - updatePhotoTag(); - if(imageArray[imagecount].description) - $(".slideinfo .info").text(imageArray[imagecount].description); - else - $(".slideinfo .info").text(""); - if(imageArray.length > 1) - updateNavigation(); - }) - - } - var updateNavigation = function(){ - var next, prev; - if(imagecount == 0){ - next = 1; - prev = imageArray.length - 1; - }else if(imagecount == imageArray.length - 1){ - next = 0 - prev = imageArray.length - 2; - }else{ - next = imagecount + 1; - prev = imagecount - 1; - } - $(".navN").attr({"href":imageArray[next]._id,"data-content":imageArray[next].file.theater.url}); - $(".navP").attr({"href":imageArray[prev]._id,"data-content":imageArray[prev].file.theater.url}); - }; - if(imageArray.length > 1) - updateNavigation(); - } - - var preparestage = function(images){ - // $.getJSON("/custom_galleries/imgs?id=" + custom_albumid, function(custom_album){ - imageArray = images; - $.each(images,function(i,image){ - if(image._id == id) - imagecount = i; - }) - bindHandlers(); - // }) - } - // if(rcom.getInternetExplorerVersion()!=-1){ - // var url_constructor = window.location.href.split("/"); - // var url = ""; - // for(x=0;x<=url_constructor.length-1;x++){ - // if(x == url_constructor.length-1){ - // url+="#!/"+url_constructor[x]; - // }else{ - // url+=url_constructor[x]+"/"; - // } - // } - - // window.location.href = url; - // } - - var custom_albumid = $("#main_pic").attr("data-content"); - g.custom_albumArea.css("margin-bottom","0"); - // picHeight = $(window).height() - ($("#orbit-bar").outerHeight() + $("#orbit_custom_gallery .form-actions").outerHeight()); - preparestage(json_image_data); - - } - this.loadcomplete = function(){ - g.loading.hide(); - } - this.loadstart = function(){ - g.loading.show(); - } - -} -custom_galleryAPI.prototype.locale = "en"; diff --git a/custom_gallery/app/assets/javascripts/custom_gallery_old.js b/custom_gallery/app/assets/javascripts/custom_gallery_old.js deleted file mode 100644 index 9a78181..0000000 --- a/custom_gallery/app/assets/javascripts/custom_gallery_old.js +++ /dev/null @@ -1 +0,0 @@ -//= require custom_galleryAPI \ No newline at end of file diff --git a/custom_gallery/app/assets/javascripts/custom_theater.js b/custom_gallery/app/assets/javascripts/custom_theater.js deleted file mode 100644 index ee055aa..0000000 --- a/custom_gallery/app/assets/javascripts/custom_theater.js +++ /dev/null @@ -1,539 +0,0 @@ -window.CustomGalleryTheater = function(){ - var parent_divs = $('.custom_gallery').parents('div'), - parent_div_z_index = parent_divs.eq(parent_divs.length-1).css('z-index') - parent_divs.eq(parent_divs.length-1).css('z-index','2000') - var gt = this, - currentPic = {}, - windowHeight = 0, - windowWidth = 0, - swipeController = null, - resizing = null; - loadingInterval = null, - mainPicLoading = 0, - nextPicLoading = 0, - prevPicLoading = 0, - currentSwipeImageDom = null, - currentSwipeImageDomLeftPos = 0, - windowScreenThresholdForTouch = 0, - loadingProcess = 0; - gt.stage = null; - gt.stripNextBtn = null; - gt.stripPrevBtn = null; - gt.thumbToggle = null; - gt.descriptionToggle = null; - gt.closeBtn = null; - gt.imageContainer = null; - gt.custom_albumData = {}; - gt.loader = null; - gt.thumbStrip = null; - gt.descriptionArea = null; - gt.isTheaterInitialized = false; - - var play_flag = false; - var button_left_string = '', - button_right_string = '', - button_play_string = '', - button_stop_string = '', - playtimeoutID; - var initialize = function(){ - gt.stage = $("#custom_gallery-theater-stage"); - gt.closeBtn = gt.stage.find(".custom_gallery-close"); - gt.switchBtn = gt.stage.find(".custom_gallery-theme-switch"); - gt.imageContainer = gt.stage.find(".image-container"); - gt.thumbStrip = gt.stage.find(".custom_gallery-thumb-wrap"); - gt.thumbToggle = gt.stage.find(".custom_gallery-thumb-toggle"); - gt.loader = gt.stage.find(".custom_gallery-loader"); - gt.stripNextBtn = gt.stage.find(".custom_gallery-thumb-next"); - gt.stripPrevBtn = gt.stage.find(".custom_gallery-thumb-prev"); - gt.descriptionArea = gt.stage.find(".custom_gallery-img-desc"); - gt.descriptionToggle = gt.stage.find(".custom_gallery-toggle-desc"); - windowScreenThresholdForTouch = windowWidth / 3; - startLoading(); - windowHeight = $(window).height(); - windowWidth = $(window).width(); - var addButton = function () { - $('.theaterButton').remove(); - if (!play_flag){ - $(button_left_string+button_play_string+button_right_string).insertAfter($('img.gal-active')); - } - else{ - $(button_left_string+button_stop_string+button_right_string).insertAfter($('img.gal-active')); - } - if (!$(".gal-prev").length) { $('#theaterPreviousButton').remove(); } - if (!$(".gal-next").length) { $('#theaterNextButton').remove(); } - - $('#theaterPreviousButton').click(function () { - gt.previousPic(); - }); - $('#theaterNextButton').click(function () { - gt.nextPic(); - }); - $('#theaterPlayButton').click(function () { - play_flag = true; - playtimeoutID = window.setInterval(function(){ - gt.playallPic(); - },3000) - window.onhashchange() - }); - $('#theaterStopButton').click(function () { - play_flag = false; - window.onhashchange() - window.clearInterval(playtimeoutID) - }); - } - window.onhashchange = locationHashChanged; - bindHandler(); - if(window.location.hash != "" && window.location.hash != "#"){ - var id = window.location.hash.split("#")[1]; - gt.createTheater("/xhr/custom_galleries/theater/" + id); - } - - - addButton(); - function locationHashChanged() { - addButton(); - } - - } - - var bindHandler = function(){ - // handler to close the theater - gt.closeBtn.on("click",gt.destroyTheater); - - // handler to show theater - $("#main-content div[data-list=images] a").on("click",function(){ - gt.createTheater($(this).attr("href")); - return false; - }) - - gt.switchBtn.on("click",gt.switchTheme); - gt.descriptionToggle.on("click", gt.toggleDescription) - gt.stripPrevBtn.on("click", gt.scrollStripRight); - gt.stripNextBtn.on("click", gt.scrollStripLeft); - - if(Modernizr.touch){ - gt.imageContainer.swipe({ - swipe : function(event, direction, distance, duration, fingerCount){ - if(direction == "left"){ - gt.nextPic(); - }else if(direction == "right"){ - gt.previousPic(); - } - } - }) - gt.thumbToggle.swipe({ - swipe : function(event, direction, distance, duration, fingerCount){ - if(direction == "up"){ - gt.thumbStrip.parent().addClass("show"); - gt.thumbToggle.addClass("up"); - gt.thumbToggle.find("i").removeClass("fa-angle-double-up").addClass("fa-angle-double-down"); - }else if(direction == "down"){ - gt.thumbStrip.parent().removeClass("show"); - gt.thumbToggle.removeClass("up"); - gt.thumbToggle.find("i").removeClass("fa-angle-double-down").addClass("fa-angle-double-up"); - } - } - }) - } - - //handler for window resize - $(window).resize(function(){ - clearTimeout(resizing); - resizing = setTimeout(doneResizing,1000); - }) - } - - var bindKeyHandlers = function(){ - if(!Modernizr.touch){ - $(document.body).on("click",".gal-active", gt.nextPic); - $(document.body).on("click",".gal-prev", gt.previousPic); - $(document.body).on("click",".gal-next", gt.nextPic); - $(document).on("keyup",function(e){ - switch(e.keyCode){ - case 39: - gt.nextPic(); - break; - case 37: - gt.previousPic(); - break; - case 27: - gt.destroyTheater(); - break; - } - }) - } - } - - - var doneResizing = function(){ - windowHeight = $(window).height(); - windowWidth = $(window).width(); - setThumbNavs(); - } - - var unBindKeyHandlers = function(){ - $(document).unbind("keyup"); - } - - gt.destroyTheater = function(){ - parent_divs.eq(parent_divs.length-1).css('z-index',parent_div_z_index) - gt.stage.hide(); - $("body").removeClass("custom_gallery-mode-on"); - gt.imageContainer.empty() - unBindKeyHandlers(); - window.location.hash = ""; - } - - gt.createTheater = function(link){ - gt.stage.show(); - $("body").addClass("custom_gallery-mode-on"); - bindKeyHandlers(); - gt.isTheaterInitialized = false; - if(!gt.isTheaterInitialized){ - $.ajax({ - url : link, - dataType : "json", - type : "get", - async:false - }).done(function(data){ - gt.custom_albumData = data.data; - var cp = gt.custom_albumData.images.filter(function(x){return x._id == gt.custom_albumData.image})[0]; - currentPic = {"image" : cp, "index" : gt.custom_albumData.images.indexOf(cp)}; - createThumbStrip(); - }) - }else{ - var id = link.split("/")[4], - cp = gt.custom_albumData.images.filter(function(x){return x._id == id})[0]; - currentPic = {"image" : cp, "index" : gt.custom_albumData.images.indexOf(cp)}; - createThumbStrip(); - } - window.currentPic = currentPic; - } - - gt.hasNextImage = function(){ - return (currentPic.index + 1) <= (gt.custom_albumData.images.length - 1); - } - - gt.hasPreviousImage = function(){ - return (currentPic.index > 0); - } - - gt.nextPic = function(){ - if(loadingProcess == 0){ - if(gt.hasNextImage()){ - startLoading(); - currentPic.image = gt.custom_albumData.images[currentPic.index + 1]; - currentPic.index = currentPic.index + 1; - setMainPic("next"); - } - } - } - gt.playallPic = function(){ - if(loadingProcess == 0){ - mainPicLoading = 1; - nextPicLoading = 1; - prevPicLoading = 1; - if(gt.hasNextImage()){ - currentPic.image = gt.custom_albumData.images[currentPic.index + 1]; - currentPic.index = currentPic.index + 1; - setMainPic("next"); - } - else{ - currentPic.image = gt.custom_albumData.images[0]; - currentPic.index = 0; - setMainPic(); - gt.isTheaterInitialized = false; - setTimeout(function(){ - loadingProcess = 0; - nextPicLoading = 0; - $('.theaterButton').remove() - $("img.custom_gallery-image.gal-prev.gal-inactive").remove(); - img = $("img.custom_gallery-image.gal-active"); - img.eq(0).remove(); - window.onhashchange() - },100) - } - } - } - - - gt.previousPic = function(){ - if(loadingProcess == 0){ - if(gt.hasPreviousImage()) { - startLoading(); - currentPic.image = gt.custom_albumData.images[currentPic.index - 1]; - currentPic.index = currentPic.index - 1; - setMainPic("prev"); - } - } - } - - gt.scrollStripLeft = function(){ - pixels_to_move = parseInt(gt.thumbStrip.css("left")) - (66 * 3); - maximum_pixels = (windowWidth / 2) - (66 * (gt.custom_albumData.images.length - 1)); - if(pixels_to_move < maximum_pixels){ - pixels_to_move = maximum_pixels; - } - gt.thumbStrip.css("left",pixels_to_move + "px"); - } - - gt.scrollStripRight = function(){ - pixels_to_move = parseInt(gt.thumbStrip.css("left")) + (66 * 3); - maximum_pixels = (windowWidth / 2); - if(pixels_to_move > maximum_pixels){ - pixels_to_move = maximum_pixels; - } - gt.thumbStrip.css("left",pixels_to_move + "px"); - } - - - gt.switchTheme = function(){ - var themeWhiteKlass = "theme-white", - nightKlass = "fa fa-circle", - dayKlass = "fa fa-circle-o", - $body = $("body"); - - if (!gt.switchBtn.hasClass(themeWhiteKlass)) { - gt.switchBtn - .addClass(themeWhiteKlass) - .find("i") - .attr("class", dayKlass); - - $body.addClass(themeWhiteKlass); - - } else { - gt.switchBtn - .removeClass(themeWhiteKlass) - .find("i") - .attr("class", nightKlass); - - $body.removeClass(themeWhiteKlass); - - } - } - - gt.toggleDescription = function(){ - $(this).toggleClass("active"); - gt.descriptionArea.toggleClass("active"); - } - - var startLoading = function(){ - loadingProcess = 1; - mainPicLoading = 0; - nextPicLoading = 0; - prevPicLoading = 0; - gt.loader.show(); - loadingInterval = setInterval(stopLoading, 300); - - } - - var stopLoading = function(){ - if(mainPicLoading == 1 && nextPicLoading == 1 && prevPicLoading == 1){ - clearInterval(loadingInterval); - setTimeout(function(){ - loadingProcess = 0; - gt.loader.hide(); - },100) - } - } - - var createThumbStrip = function(){ - if(!gt.isTheaterInitialized){ - $.each(gt.custom_albumData.images,function(index, image){ - var li = $(""), - a = $(""), - img = $("Image Thumb"); - a.on("click",function(){ - startLoading(); - var old_index = currentPic.index; - currentPic.image = gt.custom_albumData.images[index]; - currentPic.index = index; - if(old_index > index){ - setMainPic("prev",true); - }else if(old_index < index){ - setMainPic("next",true); - } - return false; - }) - - img.attr("src",image.file.thumb.url); - img.attr("alt",image.alt_title); - li.attr("data-index",index); - a.append(img); - li.append(a); - gt.thumbStrip.append(li); - }) - setThumbNavs(); - } - setMainPic(); - if (!$('.theaterButton').length){ - window.onhashchange() - } - } - - - var setThumbNavs = function() { - var $thumbNav = gt.stage.find('.custom_gallery-thumb-navs'), - $thumb = gt.thumbStrip.find('img'), - thumbs = $thumb.length, - thumbWidth = $thumb.eq(0).width(), - thumbGap = parseInt($thumb.closest('li').css('margin-right'), 10), - widthSum = (thumbWidth + thumbGap) * thumbs, - margin = widthSum * 0.1, - totalWidth = widthSum + margin; - - if (windowWidth < totalWidth) { - $thumbNav.addClass('show'); - }else{ - $thumbNav.removeClass('show'); - } - }; - function one_load(img){ - if (img[0].complete){ - setTimeout(loaded(img),100) - }else{ - setTimeout(one_load,20) - } - } - function loaded(img){ - calculateHeight(img); - mainPicLoading = 1; - img.fadeIn(100); - } - window.setMainPic = function(direction,selectedFromStrip){ - var img = null; - $('div.custom_gallery-show-original a').eq(0).attr('href',currentPic.image.url) - if(direction == null){ - img = $(""); - img.hide(); - img.attr("src", currentPic.image.file.theater.url); - gt.imageContainer.append(img); - img.one("load", function(){ - one_load(img) - }) - gt.isTheaterInitialized = true; - }else{ - img = gt.imageContainer.find(".gal-active"); - if(selectedFromStrip){ - gt.imageContainer.find(".gal-" + direction).attr("src",currentPic.image.file.theater.url); - } - if(direction == "next"){ - gt.imageContainer.find(".gal-prev").remove(); - img.removeClass("gal-active").addClass("gal-prev gal-inactive temp"); - gt.imageContainer.find(".gal-next").removeClass("gal-inactive gal-next").addClass("gal-active"); - gt.thumbStrip.css("left",(parseInt(gt.thumbStrip.css("left")) - 66) + "px"); - }else if(direction == "prev"){ - gt.imageContainer.find(".gal-next").remove(); - img.removeClass("gal-active").addClass("gal-next gal-inactive temp"); - gt.imageContainer.find(".gal-prev").removeClass("gal-inactive gal-prev").addClass("gal-active"); - gt.thumbStrip.css("left",(parseInt(gt.thumbStrip.css("left")) + 66) + "px"); - } - mainPicLoading = 1; - } - gt.descriptionArea.html("

    " + currentPic.image.description + "

    "); - if(currentPic.image.description == null){ - gt.descriptionArea.addClass("hide"); - }else{ - gt.descriptionArea.removeClass("hide"); - } - if (direction!=null){ - calculateHeight(gt.imageContainer.find(".gal-active")); - } - gt.thumbStrip.find("li.active").removeClass("active"); - gt.thumbStrip.find("li[data-index=" + currentPic.index + "]").addClass("active"); - - setStripToCenter(); - setNextPic(); - setPrevPic(); - changeUrl(); - } - - var calculateHeight = function(img){ - var h = 0, - w = 0, - new_width = 0; - if(!Modernizr.touch){ - if(typeof currentPic.image.height == "undefined"){ - h = img.height(); - currentPic.image.height = h; - w = img.width(); - currentPic.image.width = w; - }else{ - h = currentPic.image.height; - w = currentPic.image.width; - } - }else{ - h = img.height(); - w = img.width(); - } - if(h > (windowHeight - 150)){ - new_width = Math.round((windowHeight - 100) * w / h); - new_width = (new_width / windowWidth) * 100; - img.width(new_width + "%"); - }else{ - if(windowWidth < 770){ - img.width("90%"); - }else{ - img.width("65%"); - } - } - if (typeof set_custom_gallery_height != 'undefined'){ - set_custom_gallery_height() - } - } - - var changeUrl = function(){ - window.location.hash = currentPic.image._id - } - - var setStripToCenter = function(){ - left = (windowWidth / 2) - (66 * currentPic.index); - gt.thumbStrip.css("left",left + "px"); - } - - var setNextPic = function(){ - gt.imageContainer.find(".gal-next.temp").remove() - if(gt.hasNextImage()) { - var obj = gt.custom_albumData.images[currentPic.index + 1], - nextImg = $(""); - nextImg.attr("src",obj.file.theater.url); - nextImg.hide(); - gt.imageContainer.append(nextImg); - nextImg.on("load",function(){ - calculateHeight(nextImg); - nextPicLoading = 1; - nextImg.fadeIn(100); - }) - }else{ - nextPicLoading = 1; - } - } - - var setPrevPic = function(){ - gt.imageContainer.find(".gal-prev.temp").remove() - if(gt.hasPreviousImage()) { - var obj = gt.custom_albumData.images[currentPic.index - 1], - prevImg = $(""); - prevImg.attr("src",obj.file.theater.url); - prevImg.hide(); - gt.imageContainer.prepend(prevImg); - prevImg.on("load",function(){ - calculateHeight(prevImg); - prevPicLoading = 1; - prevImg.fadeIn(100); - }) - }else{ - prevPicLoading = 1; - } - } - - var l = function(x){ - console.log(x) - } - - $(document).ready(function(){ - initialize(); - }) -} - -// custom_gallery-image gal-prev gal-inactive \ No newline at end of file diff --git a/custom_gallery/app/assets/javascripts/cycle.js b/custom_gallery/app/assets/javascripts/cycle.js deleted file mode 100644 index cd60730..0000000 --- a/custom_gallery/app/assets/javascripts/cycle.js +++ /dev/null @@ -1,1551 +0,0 @@ -/*! - * jQuery Cycle Plugin (with Transition Definitions) - * Examples and documentation at: http://jquery.malsup.com/cycle/ - * Copyright (c) 2007-2010 M. Alsup - * Version: 2.9999.8 (26-OCT-2012) - * Dual licensed under the MIT and GPL licenses. - * http://jquery.malsup.com/license.html - * Requires: jQuery v1.3.2 or later - */ -;(function($, undefined) { -"use strict"; - -var ver = '2.9999.8'; - -// if $.support is not defined (pre jQuery 1.3) add what I need -if ($.support === undefined) { - $.support = { - opacity: !($.browser.msie) - }; -} - -function debug(s) { - if ($.fn.cycle.debug) - log(s); -} -function log() { - if (window.console && console.log) - console.log('[cycle] ' + Array.prototype.join.call(arguments,' ')); -} -$.expr[':'].paused = function(el) { - return el.cyclePause; -}; - - -// the options arg can be... -// a number - indicates an immediate transition should occur to the given slide index -// a string - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc) -// an object - properties to control the slideshow -// -// the arg2 arg can be... -// the name of an fx (only used in conjunction with a numeric value for 'options') -// the value true (only used in first arg == 'resume') and indicates -// that the resume should occur immediately (not wait for next timeout) - -$.fn.cycle = function(options, arg2) { - var o = { s: this.selector, c: this.context }; - - // in 1.3+ we can fix mistakes with the ready state - if (this.length === 0 && options != 'stop') { - if (!$.isReady && o.s) { - log('DOM not ready, queuing slideshow'); - $(function() { - $(o.s,o.c).cycle(options,arg2); - }); - return this; - } - // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready() - log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)')); - return this; - } - - // iterate the matched nodeset - return this.each(function() { - var opts = handleArguments(this, options, arg2); - if (opts === false) - return; - - opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink; - - // stop existing slideshow for this container (if there is one) - if (this.cycleTimeout) - clearTimeout(this.cycleTimeout); - this.cycleTimeout = this.cyclePause = 0; - this.cycleStop = 0; // issue #108 - - var $cont = $(this); - var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children(); - var els = $slides.get(); - - if (els.length < 2) { - log('terminating; too few slides: ' + els.length); - return; - } - - var opts2 = buildOptions($cont, $slides, els, opts, o); - if (opts2 === false) - return; - - var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards); - - // if it's an auto slideshow, kick it off - if (startTime) { - startTime += (opts2.delay || 0); - if (startTime < 10) - startTime = 10; - debug('first timeout: ' + startTime); - this.cycleTimeout = setTimeout(function(){go(els,opts2,0,!opts.backwards);}, startTime); - } - }); -}; - -function triggerPause(cont, byHover, onPager) { - var opts = $(cont).data('cycle.opts'); - if (!opts) - return; - var paused = !!cont.cyclePause; - if (paused && opts.paused) - opts.paused(cont, opts, byHover, onPager); - else if (!paused && opts.resumed) - opts.resumed(cont, opts, byHover, onPager); -} - -// process the args that were passed to the plugin fn -function handleArguments(cont, options, arg2) { - if (cont.cycleStop === undefined) - cont.cycleStop = 0; - if (options === undefined || options === null) - options = {}; - if (options.constructor == String) { - switch(options) { - case 'destroy': - case 'stop': - var opts = $(cont).data('cycle.opts'); - if (!opts) - return false; - cont.cycleStop++; // callbacks look for change - if (cont.cycleTimeout) - clearTimeout(cont.cycleTimeout); - cont.cycleTimeout = 0; - if (opts.elements) - $(opts.elements).stop(); - $(cont).removeData('cycle.opts'); - if (options == 'destroy') - destroy(cont, opts); - return false; - case 'toggle': - cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1; - checkInstantResume(cont.cyclePause, arg2, cont); - triggerPause(cont); - return false; - case 'pause': - cont.cyclePause = 1; - triggerPause(cont); - return false; - case 'resume': - cont.cyclePause = 0; - checkInstantResume(false, arg2, cont); - triggerPause(cont); - return false; - case 'prev': - case 'next': - opts = $(cont).data('cycle.opts'); - if (!opts) { - log('options not found, "prev/next" ignored'); - return false; - } - $.fn.cycle[options](opts); - return false; - default: - options = { fx: options }; - } - return options; - } - else if (options.constructor == Number) { - // go to the requested slide - var num = options; - options = $(cont).data('cycle.opts'); - if (!options) { - log('options not found, can not advance slide'); - return false; - } - if (num < 0 || num >= options.elements.length) { - log('invalid slide index: ' + num); - return false; - } - options.nextSlide = num; - if (cont.cycleTimeout) { - clearTimeout(cont.cycleTimeout); - cont.cycleTimeout = 0; - } - if (typeof arg2 == 'string') - options.oneTimeFx = arg2; - go(options.elements, options, 1, num >= options.currSlide); - return false; - } - return options; - - function checkInstantResume(isPaused, arg2, cont) { - if (!isPaused && arg2 === true) { // resume now! - var options = $(cont).data('cycle.opts'); - if (!options) { - log('options not found, can not resume'); - return false; - } - if (cont.cycleTimeout) { - clearTimeout(cont.cycleTimeout); - cont.cycleTimeout = 0; - } - go(options.elements, options, 1, !options.backwards); - } - } -} - -function removeFilter(el, opts) { - if (!$.support.opacity && opts.cleartype && el.style.filter) { - try { el.style.removeAttribute('filter'); } - catch(smother) {} // handle old opera versions - } -} - -// unbind event handlers -function destroy(cont, opts) { - if (opts.next) - $(opts.next).unbind(opts.prevNextEvent); - if (opts.prev) - $(opts.prev).unbind(opts.prevNextEvent); - - if (opts.pager || opts.pagerAnchorBuilder) - $.each(opts.pagerAnchors || [], function() { - this.unbind().remove(); - }); - opts.pagerAnchors = null; - $(cont).unbind('mouseenter.cycle mouseleave.cycle'); - if (opts.destroy) // callback - opts.destroy(opts); -} - -// one-time initialization -function buildOptions($cont, $slides, els, options, o) { - var startingSlideSpecified; - // support metadata plugin (v1.0 and v2.0) - var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {}); - var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null; - if (meta) - opts = $.extend(opts, meta); - if (opts.autostop) - opts.countdown = opts.autostopCount || els.length; - - var cont = $cont[0]; - $cont.data('cycle.opts', opts); - opts.$cont = $cont; - opts.stopCount = cont.cycleStop; - opts.elements = els; - opts.before = opts.before ? [opts.before] : []; - opts.after = opts.after ? [opts.after] : []; - - // push some after callbacks - if (!$.support.opacity && opts.cleartype) - opts.after.push(function() { removeFilter(this, opts); }); - if (opts.continuous) - opts.after.push(function() { go(els,opts,0,!opts.backwards); }); - - saveOriginalOpts(opts); - - // clearType corrections - if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) - clearTypeFix($slides); - - // container requires non-static position so that slides can be position within - if ($cont.css('position') == 'static') - $cont.css('position', 'relative'); - if (opts.width) - $cont.width(opts.width); - if (opts.height && opts.height != 'auto') - $cont.height(opts.height); - - if (opts.startingSlide !== undefined) { - opts.startingSlide = parseInt(opts.startingSlide,10); - if (opts.startingSlide >= els.length || opts.startSlide < 0) - opts.startingSlide = 0; // catch bogus input - else - startingSlideSpecified = true; - } - else if (opts.backwards) - opts.startingSlide = els.length - 1; - else - opts.startingSlide = 0; - - // if random, mix up the slide array - if (opts.random) { - opts.randomMap = []; - for (var i = 0; i < els.length; i++) - opts.randomMap.push(i); - opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;}); - if (startingSlideSpecified) { - // try to find the specified starting slide and if found set start slide index in the map accordingly - for ( var cnt = 0; cnt < els.length; cnt++ ) { - if ( opts.startingSlide == opts.randomMap[cnt] ) { - opts.randomIndex = cnt; - } - } - } - else { - opts.randomIndex = 1; - opts.startingSlide = opts.randomMap[1]; - } - } - else if (opts.startingSlide >= els.length) - opts.startingSlide = 0; // catch bogus input - opts.currSlide = opts.startingSlide || 0; - var first = opts.startingSlide; - - // set position and zIndex on all the slides - $slides.css({position: 'absolute', top:0, left:0}).hide().each(function(i) { - var z; - if (opts.backwards) - z = first ? i <= first ? els.length + (i-first) : first-i : els.length-i; - else - z = first ? i >= first ? els.length - (i-first) : first-i : els.length-i; - $(this).css('z-index', z); - }); - - // make sure first slide is visible - $(els[first]).css('opacity',1).show(); // opacity bit needed to handle restart use case - removeFilter(els[first], opts); - - // stretch slides - if (opts.fit) { - if (!opts.aspect) { - if (opts.width) - $slides.width(opts.width); - if (opts.height && opts.height != 'auto') - $slides.height(opts.height); - } else { - $slides.each(function(){ - var $slide = $(this); - var ratio = (opts.aspect === true) ? $slide.width()/$slide.height() : opts.aspect; - if( opts.width && $slide.width() != opts.width ) { - $slide.width( opts.width ); - $slide.height( opts.width / ratio ); - } - - if( opts.height && $slide.height() < opts.height ) { - $slide.height( opts.height ); - $slide.width( opts.height * ratio ); - } - }); - } - } - - if (opts.center && ((!opts.fit) || opts.aspect)) { - $slides.each(function(){ - var $slide = $(this); - $slide.css({ - "margin-left": opts.width ? - ((opts.width - $slide.width()) / 2) + "px" : - 0, - "margin-top": opts.height ? - ((opts.height - $slide.height()) / 2) + "px" : - 0 - }); - }); - } - - if (opts.center && !opts.fit && !opts.slideResize) { - $slides.each(function(){ - var $slide = $(this); - $slide.css({ - "margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0, - "margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0 - }); - }); - } - - // stretch container - var reshape = (opts.containerResize || opts.containerResizeHeight) && !$cont.innerHeight(); - if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9 - var maxw = 0, maxh = 0; - for(var j=0; j < els.length; j++) { - var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight(); - if (!w) w = e.offsetWidth || e.width || $e.attr('width'); - if (!h) h = e.offsetHeight || e.height || $e.attr('height'); - maxw = w > maxw ? w : maxw; - maxh = h > maxh ? h : maxh; - } - if (opts.containerResize && maxw > 0 && maxh > 0) - $cont.css({width:maxw+'px',height:maxh+'px'}); - if (opts.containerResizeHeight && maxh > 0) - $cont.css({height:maxh+'px'}); - } - - var pauseFlag = false; // https://github.com/malsup/cycle/issues/44 - if (opts.pause) - $cont.bind('mouseenter.cycle', function(){ - pauseFlag = true; - this.cyclePause++; - triggerPause(cont, true); - }).bind('mouseleave.cycle', function(){ - if (pauseFlag) - this.cyclePause--; - triggerPause(cont, true); - }); - - if (supportMultiTransitions(opts) === false) - return false; - - // apparently a lot of people use image slideshows without height/width attributes on the images. - // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that. - var requeue = false; - options.requeueAttempts = options.requeueAttempts || 0; - $slides.each(function() { - // try to get height/width of each slide - var $el = $(this); - this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0); - this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0); - - if ( $el.is('img') ) { - // sigh.. sniffing, hacking, shrugging... this crappy hack tries to account for what browsers do when - // an image is being downloaded and the markup did not include sizing info (height/width attributes); - // there seems to be some "default" sizes used in this situation - var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete); - var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete); - var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete); - var loadingOther = (this.cycleH === 0 && this.cycleW === 0 && !this.complete); - // don't requeue for images that are still loading but have a valid size - if (loadingIE || loadingFF || loadingOp || loadingOther) { - if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever - log(options.requeueAttempts,' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH); - setTimeout(function() {$(o.s,o.c).cycle(options);}, opts.requeueTimeout); - requeue = true; - return false; // break each loop - } - else { - log('could not determine size of image: '+this.src, this.cycleW, this.cycleH); - } - } - } - return true; - }); - - if (requeue) - return false; - - opts.cssBefore = opts.cssBefore || {}; - opts.cssAfter = opts.cssAfter || {}; - opts.cssFirst = opts.cssFirst || {}; - opts.animIn = opts.animIn || {}; - opts.animOut = opts.animOut || {}; - - $slides.not(':eq('+first+')').css(opts.cssBefore); - $($slides[first]).css(opts.cssFirst); - - if (opts.timeout) { - opts.timeout = parseInt(opts.timeout,10); - // ensure that timeout and speed settings are sane - if (opts.speed.constructor == String) - opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed,10); - if (!opts.sync) - opts.speed = opts.speed / 2; - - var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250; - while((opts.timeout - opts.speed) < buffer) // sanitize timeout - opts.timeout += opts.speed; - } - if (opts.easing) - opts.easeIn = opts.easeOut = opts.easing; - if (!opts.speedIn) - opts.speedIn = opts.speed; - if (!opts.speedOut) - opts.speedOut = opts.speed; - - opts.slideCount = els.length; - opts.currSlide = opts.lastSlide = first; - if (opts.random) { - if (++opts.randomIndex == els.length) - opts.randomIndex = 0; - opts.nextSlide = opts.randomMap[opts.randomIndex]; - } - else if (opts.backwards) - opts.nextSlide = opts.startingSlide === 0 ? (els.length-1) : opts.startingSlide-1; - else - opts.nextSlide = opts.startingSlide >= (els.length-1) ? 0 : opts.startingSlide+1; - - // run transition init fn - if (!opts.multiFx) { - var init = $.fn.cycle.transitions[opts.fx]; - if ($.isFunction(init)) - init($cont, $slides, opts); - else if (opts.fx != 'custom' && !opts.multiFx) { - log('unknown transition: ' + opts.fx,'; slideshow terminating'); - return false; - } - } - - // fire artificial events - var e0 = $slides[first]; - if (!opts.skipInitializationCallbacks) { - if (opts.before.length) - opts.before[0].apply(e0, [e0, e0, opts, true]); - if (opts.after.length) - opts.after[0].apply(e0, [e0, e0, opts, true]); - } - if (opts.next) - $(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1);}); - if (opts.prev) - $(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0);}); - if (opts.pager || opts.pagerAnchorBuilder) - buildPager(els,opts); - - exposeAddSlide(opts, els); - - return opts; -} - -// save off original opts so we can restore after clearing state -function saveOriginalOpts(opts) { - opts.original = { before: [], after: [] }; - opts.original.cssBefore = $.extend({}, opts.cssBefore); - opts.original.cssAfter = $.extend({}, opts.cssAfter); - opts.original.animIn = $.extend({}, opts.animIn); - opts.original.animOut = $.extend({}, opts.animOut); - $.each(opts.before, function() { opts.original.before.push(this); }); - $.each(opts.after, function() { opts.original.after.push(this); }); -} - -function supportMultiTransitions(opts) { - var i, tx, txs = $.fn.cycle.transitions; - // look for multiple effects - if (opts.fx.indexOf(',') > 0) { - opts.multiFx = true; - opts.fxs = opts.fx.replace(/\s*/g,'').split(','); - // discard any bogus effect names - for (i=0; i < opts.fxs.length; i++) { - var fx = opts.fxs[i]; - tx = txs[fx]; - if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) { - log('discarding unknown transition: ',fx); - opts.fxs.splice(i,1); - i--; - } - } - // if we have an empty list then we threw everything away! - if (!opts.fxs.length) { - log('No valid transitions named; slideshow terminating.'); - return false; - } - } - else if (opts.fx == 'all') { // auto-gen the list of transitions - opts.multiFx = true; - opts.fxs = []; - for (var p in txs) { - if (txs.hasOwnProperty(p)) { - tx = txs[p]; - if (txs.hasOwnProperty(p) && $.isFunction(tx)) - opts.fxs.push(p); - } - } - } - if (opts.multiFx && opts.randomizeEffects) { - // munge the fxs array to make effect selection random - var r1 = Math.floor(Math.random() * 20) + 30; - for (i = 0; i < r1; i++) { - var r2 = Math.floor(Math.random() * opts.fxs.length); - opts.fxs.push(opts.fxs.splice(r2,1)[0]); - } - debug('randomized fx sequence: ',opts.fxs); - } - return true; -} - -// provide a mechanism for adding slides after the slideshow has started -function exposeAddSlide(opts, els) { - opts.addSlide = function(newSlide, prepend) { - var $s = $(newSlide), s = $s[0]; - if (!opts.autostopCount) - opts.countdown++; - els[prepend?'unshift':'push'](s); - if (opts.els) - opts.els[prepend?'unshift':'push'](s); // shuffle needs this - opts.slideCount = els.length; - - // add the slide to the random map and resort - if (opts.random) { - opts.randomMap.push(opts.slideCount-1); - opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;}); - } - - $s.css('position','absolute'); - $s[prepend?'prependTo':'appendTo'](opts.$cont); - - if (prepend) { - opts.currSlide++; - opts.nextSlide++; - } - - if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) - clearTypeFix($s); - - if (opts.fit && opts.width) - $s.width(opts.width); - if (opts.fit && opts.height && opts.height != 'auto') - $s.height(opts.height); - s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height(); - s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width(); - - $s.css(opts.cssBefore); - - if (opts.pager || opts.pagerAnchorBuilder) - $.fn.cycle.createPagerAnchor(els.length-1, s, $(opts.pager), els, opts); - - if ($.isFunction(opts.onAddSlide)) - opts.onAddSlide($s); - else - $s.hide(); // default behavior - }; -} - -// reset internal state; we do this on every pass in order to support multiple effects -$.fn.cycle.resetState = function(opts, fx) { - fx = fx || opts.fx; - opts.before = []; opts.after = []; - opts.cssBefore = $.extend({}, opts.original.cssBefore); - opts.cssAfter = $.extend({}, opts.original.cssAfter); - opts.animIn = $.extend({}, opts.original.animIn); - opts.animOut = $.extend({}, opts.original.animOut); - opts.fxFn = null; - $.each(opts.original.before, function() { opts.before.push(this); }); - $.each(opts.original.after, function() { opts.after.push(this); }); - - // re-init - var init = $.fn.cycle.transitions[fx]; - if ($.isFunction(init)) - init(opts.$cont, $(opts.elements), opts); -}; - -// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt -function go(els, opts, manual, fwd) { - var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide]; - - // opts.busy is true if we're in the middle of an animation - if (manual && opts.busy && opts.manualTrump) { - // let manual transitions requests trump active ones - debug('manualTrump in go(), stopping active transition'); - $(els).stop(true,true); - opts.busy = 0; - clearTimeout(p.cycleTimeout); - } - - // don't begin another timeout-based transition if there is one active - if (opts.busy) { - debug('transition active, ignoring new tx request'); - return; - } - - - // stop cycling if we have an outstanding stop request - if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual) - return; - - // check to see if we should stop cycling based on autostop options - if (!manual && !p.cyclePause && !opts.bounce && - ((opts.autostop && (--opts.countdown <= 0)) || - (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) { - if (opts.end) - opts.end(opts); - return; - } - - // if slideshow is paused, only transition on a manual trigger - var changed = false; - if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) { - changed = true; - var fx = opts.fx; - // keep trying to get the slide size if we don't have it yet - curr.cycleH = curr.cycleH || $(curr).height(); - curr.cycleW = curr.cycleW || $(curr).width(); - next.cycleH = next.cycleH || $(next).height(); - next.cycleW = next.cycleW || $(next).width(); - - // support multiple transition types - if (opts.multiFx) { - if (fwd && (opts.lastFx === undefined || ++opts.lastFx >= opts.fxs.length)) - opts.lastFx = 0; - else if (!fwd && (opts.lastFx === undefined || --opts.lastFx < 0)) - opts.lastFx = opts.fxs.length - 1; - fx = opts.fxs[opts.lastFx]; - } - - // one-time fx overrides apply to: $('div').cycle(3,'zoom'); - if (opts.oneTimeFx) { - fx = opts.oneTimeFx; - opts.oneTimeFx = null; - } - - $.fn.cycle.resetState(opts, fx); - - // run the before callbacks - if (opts.before.length) - $.each(opts.before, function(i,o) { - if (p.cycleStop != opts.stopCount) return; - o.apply(next, [curr, next, opts, fwd]); - }); - - // stage the after callacks - var after = function() { - opts.busy = 0; - $.each(opts.after, function(i,o) { - if (p.cycleStop != opts.stopCount) return; - o.apply(next, [curr, next, opts, fwd]); - }); - if (!p.cycleStop) { - // queue next transition - queueNext(); - } - }; - - debug('tx firing('+fx+'); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide); - - // get ready to perform the transition - opts.busy = 1; - if (opts.fxFn) // fx function provided? - opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent); - else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ? - $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent); - else - $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent); - } - else { - queueNext(); - } - - if (changed || opts.nextSlide == opts.currSlide) { - // calculate the next slide - var roll; - opts.lastSlide = opts.currSlide; - if (opts.random) { - opts.currSlide = opts.nextSlide; - if (++opts.randomIndex == els.length) { - opts.randomIndex = 0; - opts.randomMap.sort(function(a,b) {return Math.random() - 0.5;}); - } - opts.nextSlide = opts.randomMap[opts.randomIndex]; - if (opts.nextSlide == opts.currSlide) - opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1; - } - else if (opts.backwards) { - roll = (opts.nextSlide - 1) < 0; - if (roll && opts.bounce) { - opts.backwards = !opts.backwards; - opts.nextSlide = 1; - opts.currSlide = 0; - } - else { - opts.nextSlide = roll ? (els.length-1) : opts.nextSlide-1; - opts.currSlide = roll ? 0 : opts.nextSlide+1; - } - } - else { // sequence - roll = (opts.nextSlide + 1) == els.length; - if (roll && opts.bounce) { - opts.backwards = !opts.backwards; - opts.nextSlide = els.length-2; - opts.currSlide = els.length-1; - } - else { - opts.nextSlide = roll ? 0 : opts.nextSlide+1; - opts.currSlide = roll ? els.length-1 : opts.nextSlide-1; - } - } - } - if (changed && opts.pager) - opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass); - - function queueNext() { - // stage the next transition - var ms = 0, timeout = opts.timeout; - if (opts.timeout && !opts.continuous) { - ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd); - if (opts.fx == 'shuffle') - ms -= opts.speedOut; - } - else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic - ms = 10; - if (ms > 0) - p.cycleTimeout = setTimeout(function(){ go(els, opts, 0, !opts.backwards); }, ms); - } -} - -// invoked after transition -$.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) { - $(pager).each(function() { - $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName); - }); -}; - -// calculate timeout value for current transition -function getTimeout(curr, next, opts, fwd) { - if (opts.timeoutFn) { - // call user provided calc fn - var t = opts.timeoutFn.call(curr,curr,next,opts,fwd); - while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout - t += opts.speed; - debug('calculated timeout: ' + t + '; speed: ' + opts.speed); - if (t !== false) - return t; - } - return opts.timeout; -} - -// expose next/prev function, caller must pass in state -$.fn.cycle.next = function(opts) { advance(opts,1); }; -$.fn.cycle.prev = function(opts) { advance(opts,0);}; - -// advance slide forward or back -function advance(opts, moveForward) { - var val = moveForward ? 1 : -1; - var els = opts.elements; - var p = opts.$cont[0], timeout = p.cycleTimeout; - if (timeout) { - clearTimeout(timeout); - p.cycleTimeout = 0; - } - if (opts.random && val < 0) { - // move back to the previously display slide - opts.randomIndex--; - if (--opts.randomIndex == -2) - opts.randomIndex = els.length-2; - else if (opts.randomIndex == -1) - opts.randomIndex = els.length-1; - opts.nextSlide = opts.randomMap[opts.randomIndex]; - } - else if (opts.random) { - opts.nextSlide = opts.randomMap[opts.randomIndex]; - } - else { - opts.nextSlide = opts.currSlide + val; - if (opts.nextSlide < 0) { - if (opts.nowrap) return false; - opts.nextSlide = els.length - 1; - } - else if (opts.nextSlide >= els.length) { - if (opts.nowrap) return false; - opts.nextSlide = 0; - } - } - - var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated - if ($.isFunction(cb)) - cb(val > 0, opts.nextSlide, els[opts.nextSlide]); - go(els, opts, 1, moveForward); - return false; -} - -function buildPager(els, opts) { - var $p = $(opts.pager); - $.each(els, function(i,o) { - $.fn.cycle.createPagerAnchor(i,o,$p,els,opts); - }); - opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass); -} - -$.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) { - var a; - if ($.isFunction(opts.pagerAnchorBuilder)) { - a = opts.pagerAnchorBuilder(i,el); - debug('pagerAnchorBuilder('+i+', el) returned: ' + a); - } - else - a = ''+(i+1)+''; - - if (!a) - return; - var $a = $(a); - // don't reparent if anchor is in the dom - if ($a.parents('body').length === 0) { - var arr = []; - if ($p.length > 1) { - $p.each(function() { - var $clone = $a.clone(true); - $(this).append($clone); - arr.push($clone[0]); - }); - $a = $(arr); - } - else { - $a.appendTo($p); - } - } - - opts.pagerAnchors = opts.pagerAnchors || []; - opts.pagerAnchors.push($a); - - var pagerFn = function(e) { - e.preventDefault(); - opts.nextSlide = i; - var p = opts.$cont[0], timeout = p.cycleTimeout; - if (timeout) { - clearTimeout(timeout); - p.cycleTimeout = 0; - } - var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated - if ($.isFunction(cb)) - cb(opts.nextSlide, els[opts.nextSlide]); - go(els,opts,1,opts.currSlide < i); // trigger the trans -// return false; // <== allow bubble - }; - - if ( /mouseenter|mouseover/i.test(opts.pagerEvent) ) { - $a.hover(pagerFn, function(){/* no-op */} ); - } - else { - $a.bind(opts.pagerEvent, pagerFn); - } - - if ( ! /^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble) - $a.bind('click.cycle', function(){return false;}); // suppress click - - var cont = opts.$cont[0]; - var pauseFlag = false; // https://github.com/malsup/cycle/issues/44 - if (opts.pauseOnPagerHover) { - $a.hover( - function() { - pauseFlag = true; - cont.cyclePause++; - triggerPause(cont,true,true); - }, function() { - if (pauseFlag) - cont.cyclePause--; - triggerPause(cont,true,true); - } - ); - } -}; - -// helper fn to calculate the number of slides between the current and the next -$.fn.cycle.hopsFromLast = function(opts, fwd) { - var hops, l = opts.lastSlide, c = opts.currSlide; - if (fwd) - hops = c > l ? c - l : opts.slideCount - l; - else - hops = c < l ? l - c : l + opts.slideCount - c; - return hops; -}; - -// fix clearType problems in ie6 by setting an explicit bg color -// (otherwise text slides look horrible during a fade transition) -function clearTypeFix($slides) { - debug('applying clearType background-color hack'); - function hex(s) { - s = parseInt(s,10).toString(16); - return s.length < 2 ? '0'+s : s; - } - function getBg(e) { - for ( ; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) { - var v = $.css(e,'background-color'); - if (v && v.indexOf('rgb') >= 0 ) { - var rgb = v.match(/\d+/g); - return '#'+ hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]); - } - if (v && v != 'transparent') - return v; - } - return '#ffffff'; - } - $slides.each(function() { $(this).css('background-color', getBg(this)); }); -} - -// reset common props before the next transition -$.fn.cycle.commonReset = function(curr,next,opts,w,h,rev) { - $(opts.elements).not(curr).hide(); - if (typeof opts.cssBefore.opacity == 'undefined') - opts.cssBefore.opacity = 1; - opts.cssBefore.display = 'block'; - if (opts.slideResize && w !== false && next.cycleW > 0) - opts.cssBefore.width = next.cycleW; - if (opts.slideResize && h !== false && next.cycleH > 0) - opts.cssBefore.height = next.cycleH; - opts.cssAfter = opts.cssAfter || {}; - opts.cssAfter.display = 'none'; - $(curr).css('zIndex',opts.slideCount + (rev === true ? 1 : 0)); - $(next).css('zIndex',opts.slideCount + (rev === true ? 0 : 1)); -}; - -// the actual fn for effecting a transition -$.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) { - var $l = $(curr), $n = $(next); - var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut; - $n.css(opts.cssBefore); - if (speedOverride) { - if (typeof speedOverride == 'number') - speedIn = speedOut = speedOverride; - else - speedIn = speedOut = 1; - easeIn = easeOut = null; - } - var fn = function() { - $n.animate(opts.animIn, speedIn, easeIn, function() { - cb(); - }); - }; - $l.animate(opts.animOut, speedOut, easeOut, function() { - $l.css(opts.cssAfter); - if (!opts.sync) - fn(); - }); - if (opts.sync) fn(); -}; - -// transition definitions - only fade is defined here, transition pack defines the rest -$.fn.cycle.transitions = { - fade: function($cont, $slides, opts) { - $slides.not(':eq('+opts.currSlide+')').css('opacity',0); - opts.before.push(function(curr,next,opts) { - $.fn.cycle.commonReset(curr,next,opts); - opts.cssBefore.opacity = 0; - }); - opts.animIn = { opacity: 1 }; - opts.animOut = { opacity: 0 }; - opts.cssBefore = { top: 0, left: 0 }; - } -}; - -$.fn.cycle.ver = function() { return ver; }; - -// override these globally if you like (they are all optional) -$.fn.cycle.defaults = { - activePagerClass: 'activeSlide', // class name used for the active pager link - after: null, // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag) - allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling - animIn: null, // properties that define how the slide animates in - animOut: null, // properties that define how the slide animates out - aspect: false, // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option) - autostop: 0, // true to end slideshow after X transitions (where X == slide count) - autostopCount: 0, // number of transitions (optionally used with autostop to define X) - backwards: false, // true to start slideshow at last slide and move backwards through the stack - before: null, // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag) - center: null, // set to true to have cycle add top/left margin to each slide (use with width and height options) - cleartype: !$.support.opacity, // true if clearType corrections should be applied (for IE) - cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides) - containerResize: 1, // resize container to fit largest slide - containerResizeHeight: 0, // resize containers height to fit the largest slide but leave the width dynamic - continuous: 0, // true to start next transition immediately after current one completes - cssAfter: null, // properties that defined the state of the slide after transitioning out - cssBefore: null, // properties that define the initial state of the slide before transitioning in - delay: 0, // additional delay (in ms) for first transition (hint: can be negative) - easeIn: null, // easing for "in" transition - easeOut: null, // easing for "out" transition - easing: null, // easing method for both in and out transitions - end: null, // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options) - fastOnEvent: 0, // force fast transitions when triggered manually (via pager or prev/next); value == time in ms - fit: 0, // force slides to fit container - fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle') - fxFn: null, // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag) - height: 'auto', // container height (if the 'fit' option is true, the slides will be set to this height as well) - manualTrump: true, // causes manual transition to stop an active transition instead of being ignored - metaAttr: 'cycle', // data- attribute that holds the option data for the slideshow - next: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide - nowrap: 0, // true to prevent slideshow from wrapping - onPagerEvent: null, // callback fn for pager events: function(zeroBasedSlideIndex, slideElement) - onPrevNextEvent: null, // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement) - pager: null, // element, jQuery object, or jQuery selector string for the element to use as pager container - pagerAnchorBuilder: null, // callback fn for building anchor links: function(index, DOMelement) - pagerEvent: 'click.cycle', // name of event which drives the pager navigation - pause: 0, // true to enable "pause on hover" - pauseOnPagerHover: 0, // true to pause when hovering over pager link - prev: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide - prevNextEvent: 'click.cycle',// event which drives the manual transition to the previous or next slide - random: 0, // true for random, false for sequence (not applicable to shuffle fx) - randomizeEffects: 1, // valid when multiple effects are used; true to make the effect sequence random - requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded - requeueTimeout: 250, // ms delay for requeue - rev: 0, // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle) - shuffle: null, // coords for shuffle animation, ex: { top:15, left: 200 } - skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition - slideExpr: null, // expression for selecting slides (if something other than all children is required) - slideResize: 1, // force slide width/height to fixed size before every transition - speed: 1000, // speed of the transition (any valid fx speed value) - speedIn: null, // speed of the 'in' transition - speedOut: null, // speed of the 'out' transition - startingSlide: undefined,// zero-based index of the first slide to be displayed - sync: 1, // true if in/out transitions should occur simultaneously - timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance) - timeoutFn: null, // callback for determining per-slide timeout value: function(currSlideElement, nextSlideElement, options, forwardFlag) - updateActivePagerLink: null,// callback fn invoked to update the active pager link (adds/removes activePagerClass style) - width: null // container width (if the 'fit' option is true, the slides will be set to this width as well) -}; - -})(jQuery); - - -/*! - * jQuery Cycle Plugin Transition Definitions - * This script is a plugin for the jQuery Cycle Plugin - * Examples and documentation at: http://malsup.com/jquery/cycle/ - * Copyright (c) 2007-2010 M. Alsup - * Version: 2.73 - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - */ -(function($) { -"use strict"; - -// -// These functions define slide initialization and properties for the named -// transitions. To save file size feel free to remove any of these that you -// don't need. -// -$.fn.cycle.transitions.none = function($cont, $slides, opts) { - opts.fxFn = function(curr,next,opts,after){ - $(next).show(); - $(curr).hide(); - after(); - }; -}; - -// not a cross-fade, fadeout only fades out the top slide -$.fn.cycle.transitions.fadeout = function($cont, $slides, opts) { - $slides.not(':eq('+opts.currSlide+')').css({ display: 'block', 'opacity': 1 }); - opts.before.push(function(curr,next,opts,w,h,rev) { - $(curr).css('zIndex',opts.slideCount + (rev !== true ? 1 : 0)); - $(next).css('zIndex',opts.slideCount + (rev !== true ? 0 : 1)); - }); - opts.animIn.opacity = 1; - opts.animOut.opacity = 0; - opts.cssBefore.opacity = 1; - opts.cssBefore.display = 'block'; - opts.cssAfter.zIndex = 0; -}; - -// scrollUp/Down/Left/Right -$.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) { - $cont.css('overflow','hidden'); - opts.before.push($.fn.cycle.commonReset); - var h = $cont.height(); - opts.cssBefore.top = h; - opts.cssBefore.left = 0; - opts.cssFirst.top = 0; - opts.animIn.top = 0; - opts.animOut.top = -h; -}; -$.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) { - $cont.css('overflow','hidden'); - opts.before.push($.fn.cycle.commonReset); - var h = $cont.height(); - opts.cssFirst.top = 0; - opts.cssBefore.top = -h; - opts.cssBefore.left = 0; - opts.animIn.top = 0; - opts.animOut.top = h; -}; -$.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) { - $cont.css('overflow','hidden'); - opts.before.push($.fn.cycle.commonReset); - var w = $cont.width(); - opts.cssFirst.left = 0; - opts.cssBefore.left = w; - opts.cssBefore.top = 0; - opts.animIn.left = 0; - opts.animOut.left = 0-w; -}; -$.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) { - $cont.css('overflow','hidden'); - opts.before.push($.fn.cycle.commonReset); - var w = $cont.width(); - opts.cssFirst.left = 0; - opts.cssBefore.left = -w; - opts.cssBefore.top = 0; - opts.animIn.left = 0; - opts.animOut.left = w; -}; -$.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) { - $cont.css('overflow','hidden').width(); - opts.before.push(function(curr, next, opts, fwd) { - if (opts.rev) - fwd = !fwd; - $.fn.cycle.commonReset(curr,next,opts); - opts.cssBefore.left = fwd ? (next.cycleW-1) : (1-next.cycleW); - opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW; - }); - opts.cssFirst.left = 0; - opts.cssBefore.top = 0; - opts.animIn.left = 0; - opts.animOut.top = 0; -}; -$.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) { - $cont.css('overflow','hidden'); - opts.before.push(function(curr, next, opts, fwd) { - if (opts.rev) - fwd = !fwd; - $.fn.cycle.commonReset(curr,next,opts); - opts.cssBefore.top = fwd ? (1-next.cycleH) : (next.cycleH-1); - opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH; - }); - opts.cssFirst.top = 0; - opts.cssBefore.left = 0; - opts.animIn.top = 0; - opts.animOut.left = 0; -}; - -// slideX/slideY -$.fn.cycle.transitions.slideX = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $(opts.elements).not(curr).hide(); - $.fn.cycle.commonReset(curr,next,opts,false,true); - opts.animIn.width = next.cycleW; - }); - opts.cssBefore.left = 0; - opts.cssBefore.top = 0; - opts.cssBefore.width = 0; - opts.animIn.width = 'show'; - opts.animOut.width = 0; -}; -$.fn.cycle.transitions.slideY = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $(opts.elements).not(curr).hide(); - $.fn.cycle.commonReset(curr,next,opts,true,false); - opts.animIn.height = next.cycleH; - }); - opts.cssBefore.left = 0; - opts.cssBefore.top = 0; - opts.cssBefore.height = 0; - opts.animIn.height = 'show'; - opts.animOut.height = 0; -}; - -// shuffle -$.fn.cycle.transitions.shuffle = function($cont, $slides, opts) { - var i, w = $cont.css('overflow', 'visible').width(); - $slides.css({left: 0, top: 0}); - opts.before.push(function(curr,next,opts) { - $.fn.cycle.commonReset(curr,next,opts,true,true,true); - }); - // only adjust speed once! - if (!opts.speedAdjusted) { - opts.speed = opts.speed / 2; // shuffle has 2 transitions - opts.speedAdjusted = true; - } - opts.random = 0; - opts.shuffle = opts.shuffle || {left:-w, top:15}; - opts.els = []; - for (i=0; i < $slides.length; i++) - opts.els.push($slides[i]); - - for (i=0; i < opts.currSlide; i++) - opts.els.push(opts.els.shift()); - - // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!) - opts.fxFn = function(curr, next, opts, cb, fwd) { - if (opts.rev) - fwd = !fwd; - var $el = fwd ? $(curr) : $(next); - $(next).css(opts.cssBefore); - var count = opts.slideCount; - $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() { - var hops = $.fn.cycle.hopsFromLast(opts, fwd); - for (var k=0; k < hops; k++) { - if (fwd) - opts.els.push(opts.els.shift()); - else - opts.els.unshift(opts.els.pop()); - } - if (fwd) { - for (var i=0, len=opts.els.length; i < len; i++) - $(opts.els[i]).css('z-index', len-i+count); - } - else { - var z = $(curr).css('z-index'); - $el.css('z-index', parseInt(z,10)+1+count); - } - $el.animate({left:0, top:0}, opts.speedOut, opts.easeOut, function() { - $(fwd ? this : curr).hide(); - if (cb) cb(); - }); - }); - }; - $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 }); -}; - -// turnUp/Down/Left/Right -$.fn.cycle.transitions.turnUp = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,true,false); - opts.cssBefore.top = next.cycleH; - opts.animIn.height = next.cycleH; - opts.animOut.width = next.cycleW; - }); - opts.cssFirst.top = 0; - opts.cssBefore.left = 0; - opts.cssBefore.height = 0; - opts.animIn.top = 0; - opts.animOut.height = 0; -}; -$.fn.cycle.transitions.turnDown = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,true,false); - opts.animIn.height = next.cycleH; - opts.animOut.top = curr.cycleH; - }); - opts.cssFirst.top = 0; - opts.cssBefore.left = 0; - opts.cssBefore.top = 0; - opts.cssBefore.height = 0; - opts.animOut.height = 0; -}; -$.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,false,true); - opts.cssBefore.left = next.cycleW; - opts.animIn.width = next.cycleW; - }); - opts.cssBefore.top = 0; - opts.cssBefore.width = 0; - opts.animIn.left = 0; - opts.animOut.width = 0; -}; -$.fn.cycle.transitions.turnRight = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,false,true); - opts.animIn.width = next.cycleW; - opts.animOut.left = curr.cycleW; - }); - $.extend(opts.cssBefore, { top: 0, left: 0, width: 0 }); - opts.animIn.left = 0; - opts.animOut.width = 0; -}; - -// zoom -$.fn.cycle.transitions.zoom = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,false,false,true); - opts.cssBefore.top = next.cycleH/2; - opts.cssBefore.left = next.cycleW/2; - $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH }); - $.extend(opts.animOut, { width: 0, height: 0, top: curr.cycleH/2, left: curr.cycleW/2 }); - }); - opts.cssFirst.top = 0; - opts.cssFirst.left = 0; - opts.cssBefore.width = 0; - opts.cssBefore.height = 0; -}; - -// fadeZoom -$.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,false,false); - opts.cssBefore.left = next.cycleW/2; - opts.cssBefore.top = next.cycleH/2; - $.extend(opts.animIn, { top: 0, left: 0, width: next.cycleW, height: next.cycleH }); - }); - opts.cssBefore.width = 0; - opts.cssBefore.height = 0; - opts.animOut.opacity = 0; -}; - -// blindX -$.fn.cycle.transitions.blindX = function($cont, $slides, opts) { - var w = $cont.css('overflow','hidden').width(); - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts); - opts.animIn.width = next.cycleW; - opts.animOut.left = curr.cycleW; - }); - opts.cssBefore.left = w; - opts.cssBefore.top = 0; - opts.animIn.left = 0; - opts.animOut.left = w; -}; -// blindY -$.fn.cycle.transitions.blindY = function($cont, $slides, opts) { - var h = $cont.css('overflow','hidden').height(); - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts); - opts.animIn.height = next.cycleH; - opts.animOut.top = curr.cycleH; - }); - opts.cssBefore.top = h; - opts.cssBefore.left = 0; - opts.animIn.top = 0; - opts.animOut.top = h; -}; -// blindZ -$.fn.cycle.transitions.blindZ = function($cont, $slides, opts) { - var h = $cont.css('overflow','hidden').height(); - var w = $cont.width(); - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts); - opts.animIn.height = next.cycleH; - opts.animOut.top = curr.cycleH; - }); - opts.cssBefore.top = h; - opts.cssBefore.left = w; - opts.animIn.top = 0; - opts.animIn.left = 0; - opts.animOut.top = h; - opts.animOut.left = w; -}; - -// growX - grow horizontally from centered 0 width -$.fn.cycle.transitions.growX = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,false,true); - opts.cssBefore.left = this.cycleW/2; - opts.animIn.left = 0; - opts.animIn.width = this.cycleW; - opts.animOut.left = 0; - }); - opts.cssBefore.top = 0; - opts.cssBefore.width = 0; -}; -// growY - grow vertically from centered 0 height -$.fn.cycle.transitions.growY = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,true,false); - opts.cssBefore.top = this.cycleH/2; - opts.animIn.top = 0; - opts.animIn.height = this.cycleH; - opts.animOut.top = 0; - }); - opts.cssBefore.height = 0; - opts.cssBefore.left = 0; -}; - -// curtainX - squeeze in both edges horizontally -$.fn.cycle.transitions.curtainX = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,false,true,true); - opts.cssBefore.left = next.cycleW/2; - opts.animIn.left = 0; - opts.animIn.width = this.cycleW; - opts.animOut.left = curr.cycleW/2; - opts.animOut.width = 0; - }); - opts.cssBefore.top = 0; - opts.cssBefore.width = 0; -}; -// curtainY - squeeze in both edges vertically -$.fn.cycle.transitions.curtainY = function($cont, $slides, opts) { - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,true,false,true); - opts.cssBefore.top = next.cycleH/2; - opts.animIn.top = 0; - opts.animIn.height = next.cycleH; - opts.animOut.top = curr.cycleH/2; - opts.animOut.height = 0; - }); - opts.cssBefore.height = 0; - opts.cssBefore.left = 0; -}; - -// cover - curr slide covered by next slide -$.fn.cycle.transitions.cover = function($cont, $slides, opts) { - var d = opts.direction || 'left'; - var w = $cont.css('overflow','hidden').width(); - var h = $cont.height(); - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts); - opts.cssAfter.display = ''; - if (d == 'right') - opts.cssBefore.left = -w; - else if (d == 'up') - opts.cssBefore.top = h; - else if (d == 'down') - opts.cssBefore.top = -h; - else - opts.cssBefore.left = w; - }); - opts.animIn.left = 0; - opts.animIn.top = 0; - opts.cssBefore.top = 0; - opts.cssBefore.left = 0; -}; - -// uncover - curr slide moves off next slide -$.fn.cycle.transitions.uncover = function($cont, $slides, opts) { - var d = opts.direction || 'left'; - var w = $cont.css('overflow','hidden').width(); - var h = $cont.height(); - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,true,true,true); - if (d == 'right') - opts.animOut.left = w; - else if (d == 'up') - opts.animOut.top = -h; - else if (d == 'down') - opts.animOut.top = h; - else - opts.animOut.left = -w; - }); - opts.animIn.left = 0; - opts.animIn.top = 0; - opts.cssBefore.top = 0; - opts.cssBefore.left = 0; -}; - -// toss - move top slide and fade away -$.fn.cycle.transitions.toss = function($cont, $slides, opts) { - var w = $cont.css('overflow','visible').width(); - var h = $cont.height(); - opts.before.push(function(curr, next, opts) { - $.fn.cycle.commonReset(curr,next,opts,true,true,true); - // provide default toss settings if animOut not provided - if (!opts.animOut.left && !opts.animOut.top) - $.extend(opts.animOut, { left: w*2, top: -h/2, opacity: 0 }); - else - opts.animOut.opacity = 0; - }); - opts.cssBefore.left = 0; - opts.cssBefore.top = 0; - opts.animIn.left = 0; -}; - -// wipe - clip animation -$.fn.cycle.transitions.wipe = function($cont, $slides, opts) { - var w = $cont.css('overflow','hidden').width(); - var h = $cont.height(); - opts.cssBefore = opts.cssBefore || {}; - var clip; - if (opts.clip) { - if (/l2r/.test(opts.clip)) - clip = 'rect(0px 0px '+h+'px 0px)'; - else if (/r2l/.test(opts.clip)) - clip = 'rect(0px '+w+'px '+h+'px '+w+'px)'; - else if (/t2b/.test(opts.clip)) - clip = 'rect(0px '+w+'px 0px 0px)'; - else if (/b2t/.test(opts.clip)) - clip = 'rect('+h+'px '+w+'px '+h+'px 0px)'; - else if (/zoom/.test(opts.clip)) { - var top = parseInt(h/2,10); - var left = parseInt(w/2,10); - clip = 'rect('+top+'px '+left+'px '+top+'px '+left+'px)'; - } - } - - opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)'; - - var d = opts.cssBefore.clip.match(/(\d+)/g); - var t = parseInt(d[0],10), r = parseInt(d[1],10), b = parseInt(d[2],10), l = parseInt(d[3],10); - - opts.before.push(function(curr, next, opts) { - if (curr == next) return; - var $curr = $(curr), $next = $(next); - $.fn.cycle.commonReset(curr,next,opts,true,true,false); - opts.cssAfter.display = 'block'; - - var step = 1, count = parseInt((opts.speedIn / 13),10) - 1; - (function f() { - var tt = t ? t - parseInt(step * (t/count),10) : 0; - var ll = l ? l - parseInt(step * (l/count),10) : 0; - var bb = b < h ? b + parseInt(step * ((h-b)/count || 1),10) : h; - var rr = r < w ? r + parseInt(step * ((w-r)/count || 1),10) : w; - $next.css({ clip: 'rect('+tt+'px '+rr+'px '+bb+'px '+ll+'px)' }); - (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none'); - })(); - }); - $.extend(opts.cssBefore, { display: 'block', opacity: 1, top: 0, left: 0 }); - opts.animIn = { left: 0 }; - opts.animOut = { left: 0 }; -}; - -})(jQuery); \ No newline at end of file diff --git a/custom_gallery/app/assets/javascripts/jquery-cropper.js b/custom_gallery/app/assets/javascripts/jquery-cropper.js deleted file mode 100644 index 8cbe437..0000000 --- a/custom_gallery/app/assets/javascripts/jquery-cropper.js +++ /dev/null @@ -1,75 +0,0 @@ -/*! - * jQuery Cropper v1.0.0 - * https://github.com/fengyuanchen/jquery-cropper - * - * Copyright (c) 2018 Chen Fengyuan - * Released under the MIT license - * - * Date: 2018-04-01T06:20:13.168Z - */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery'), require('cropperjs')) : - typeof define === 'function' && define.amd ? define(['jquery', 'cropperjs'], factory) : - (factory(global.jQuery,global.Cropper)); -}(this, (function ($,Cropper) { 'use strict'; - - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; - Cropper = Cropper && Cropper.hasOwnProperty('default') ? Cropper['default'] : Cropper; - - if ($.fn) { - var AnotherCropper = $.fn.cropper; - var NAMESPACE = 'cropper'; - - $.fn.cropper = function jQueryCropper(option) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var result = void 0; - - this.each(function (i, element) { - var $element = $(element); - var isDestroy = option === 'destroy'; - var cropper = $element.data(NAMESPACE); - - if (!cropper) { - if (isDestroy) { - return; - } - - var options = $.extend({}, $element.data(), $.isPlainObject(option) && option); - - cropper = new Cropper(element, options); - $element.data(NAMESPACE, cropper); - } - - if (typeof option === 'string') { - var fn = cropper[option]; - - if ($.isFunction(fn)) { - result = fn.apply(cropper, args); - - if (result === cropper) { - result = undefined; - } - - if (isDestroy) { - $element.removeData(NAMESPACE); - } - } - } - }); - - return result !== undefined ? result : this; - }; - - $.fn.cropper.Constructor = Cropper; - $.fn.cropper.setDefaults = Cropper.setDefaults; - $.fn.cropper.noConflict = function noConflict() { - $.fn.cropper = AnotherCropper; - return this; - }; - } - -}))); \ No newline at end of file diff --git a/custom_gallery/app/assets/javascripts/jquery.lite.image.resize.js b/custom_gallery/app/assets/javascripts/jquery.lite.image.resize.js deleted file mode 100644 index 27873c3..0000000 --- a/custom_gallery/app/assets/javascripts/jquery.lite.image.resize.js +++ /dev/null @@ -1,136 +0,0 @@ -/* =================================================== - * jquery-lite-image-resize v.1.0.1 - * https://github.com/RayChang/jquery-lite-image-resize - * =================================================== - * How to use ? - * - * HTML element closest to the image to add class "resizeimg". - * - * Example: - *
    - * - *
    - * - * Or you can use: - * $('your class').rsImg(); - * - * Note : HTML structure must be a structure like the example above. - * -*/ - -!function ($) { - - "use strict"; - - var ResizeImg = function(element, elementLength, i) { - this.element = $(element); - this.element.data('exists', true); - this.elementLength = elementLength; - this.index = i; - }; - ResizeImg.prototype.resize = function(callback) { - var $img = this.element.children('img').eq(0), - elW = this.element.innerWidth(), - elH = this.element.innerHeight(), - elScale = elW/elH, - ell = this.elementLength, - index = this.index, - image = document.createElement("img"); - image.src = $img.attr('src'); - this.element.css({ - 'position': 'relative', - 'overflow': 'hidden', - }); - function imageLoadComplete() { - var imgW = image.width, - imgH = image.height, - imgScale = imgW/imgH, - portrait = { - 'position': 'absolute', - 'height': '100%', - 'width': 'auto', - 'max-width': 'none', - 'left': '50%', - 'top': 0, - 'margin-left': imgW*(elH/imgH)/-2 - }, - landscape = { - 'position': 'absolute', - 'height': 'auto', - 'max-height': 'none', - 'width': '100%', - 'left': 0, - 'top': '50%', - 'margin-top': imgH*(elW/imgW)/-2 - }, - center = { - 'position': 'absolute', - 'height': '100%', - 'width': '100%', - 'top': 0, - 'left': 0 - }; - if(imgScale < 1) { - if(elScale < 1) { - if(elScale > imgScale) { - $img.css(landscape); - } else { - $img.css(portrait); - }; - } else { - $img.css(landscape); - }; - }; - - if(imgScale > 1) { - if(elScale > 1) { - if(elScale > imgScale) { - $img.css(landscape); - } else { - $img.css(portrait); - }; - } else { - $img.css(portrait); - }; - }; - - if(imgScale == 1) { - if(elScale < 1) { - $img.css(portrait); - } else if(elScale > 1) { - $img.css(landscape); - } else { - $img.css(center); - }; - }; - $img.fadeTo(500, 1); - - if(index == ell && callback) { - ResizeImg.prototype.callback(callback) - } - } - if(/MSIE 8.0/g.test($ua)) { - imageLoadComplete(); - } else { - image.onload = imageLoadComplete; - } - }; - - ResizeImg.prototype.callback = function(callback) { - callback(); - }; - - $.fn.rsImg = function (callback) { - var elementLength = this.length - 1; - this.each(function (i) { - if(!$(this).data('exists')) { - $(this).children("img").fadeTo(0,0); - new ResizeImg(this, elementLength, i).resize(callback); - }; - }); - }; - - $(function() { - $('.resizeimg').rsImg(); - }); -}(window.jQuery); diff --git a/custom_gallery/app/assets/javascripts/jquery.masonry.min.js b/custom_gallery/app/assets/javascripts/jquery.masonry.min.js deleted file mode 100644 index 57c081c..0000000 --- a/custom_gallery/app/assets/javascripts/jquery.masonry.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * jQuery Masonry v2.1.08 - * A dynamic layout plugin for jQuery - * The flip-side of CSS Floats - * http://masonry.desandro.com - * - * Licensed under the MIT license. - * Copyright 2012 David DeSandro - */ -(function(e,t,n){"use strict";var r=t.event,i;r.special.smartresize={setup:function(){t(this).bind("resize",r.special.smartresize.handler)},teardown:function(){t(this).unbind("resize",r.special.smartresize.handler)},handler:function(e,t){var n=this,s=arguments;e.type="smartresize",i&&clearTimeout(i),i=setTimeout(function(){r.dispatch.apply(n,s)},t==="execAsap"?0:100)}},t.fn.smartresize=function(e){return e?this.bind("smartresize",e):this.trigger("smartresize",["execAsap"])},t.Mason=function(e,n){this.element=t(n),this._create(e),this._init()},t.Mason.settings={isResizable:!0,isAnimated:!1,animationOptions:{queue:!1,duration:500},gutterWidth:0,isRTL:!1,isFitWidth:!1,containerStyle:{position:"relative"}},t.Mason.prototype={_filterFindBricks:function(e){var t=this.options.itemSelector;return t?e.filter(t).add(e.find(t)):e},_getBricks:function(e){var t=this._filterFindBricks(e).css({position:"absolute"}).addClass("masonry-brick");return t},_create:function(n){this.options=t.extend(!0,{},t.Mason.settings,n),this.styleQueue=[];var r=this.element[0].style;this.originalStyle={height:r.height||""};var i=this.options.containerStyle;for(var s in i)this.originalStyle[s]=r[s]||"";this.element.css(i),this.horizontalDirection=this.options.isRTL?"right":"left";var o=this.element.css("padding-"+this.horizontalDirection),u=this.element.css("padding-top");this.offset={x:o?parseInt(o,10):0,y:u?parseInt(u,10):0},this.isFluid=this.options.columnWidth&&typeof this.options.columnWidth=="function";var a=this;setTimeout(function(){a.element.addClass("masonry")},0),this.options.isResizable&&t(e).bind("smartresize.masonry",function(){a.resize()}),this.reloadItems()},_init:function(e){this._getColumns(),this._reLayout(e)},option:function(e,n){t.isPlainObject(e)&&(this.options=t.extend(!0,this.options,e))},layout:function(e,t){for(var n=0,r=e.length;n'); - var defaults = $.minicolors.defaults; - var name; - var size; - var swatches; - var swatch; - var swatchString; - var panel; - var i; - - // Do nothing if already initialized - if(input.data('minicolors-initialized')) return; - - // Handle settings - settings = $.extend(true, {}, defaults, settings); - - // The wrapper - minicolors - .addClass('minicolors-theme-' + settings.theme) - .toggleClass('minicolors-with-opacity', settings.opacity); - - // Custom positioning - if(settings.position !== undefined) { - $.each(settings.position.split(' '), function() { - minicolors.addClass('minicolors-position-' + this); - }); - } - - // Input size - if(settings.format === 'rgb') { - size = settings.opacity ? '25' : '20'; - } else { - size = settings.keywords ? '11' : '7'; - } - - // The input - input - .addClass('minicolors-input') - .data('minicolors-initialized', false) - .data('minicolors-settings', settings) - .prop('size', size) - .wrap(minicolors) - .after( - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' - ); - - // The swatch - if(!settings.inline) { - input.after(''); - input.next('.minicolors-input-swatch').on('click', function(event) { - event.preventDefault(); - input.focus(); - }); - } - - // Prevent text selection in IE - panel = input.parent().find('.minicolors-panel'); - panel.on('selectstart', function() { return false; }).end(); - - // Swatches - if(settings.swatches && settings.swatches.length !== 0) { - panel.addClass('minicolors-with-swatches'); - swatches = $('
      ') - .appendTo(panel); - for(i = 0; i < settings.swatches.length; ++i) { - // allow for custom objects as swatches - if($.type(settings.swatches[i]) === 'object') { - name = settings.swatches[i].name; - swatch = settings.swatches[i].color; - } else { - name = ''; - swatch = settings.swatches[i]; - } - swatchString = swatch; - swatch = isRgb(swatch) ? parseRgb(swatch, true) : hex2rgb(parseHex(swatch, true)); - $('
    • ') - .appendTo(swatches) - .data('swatch-color', swatchString) - .find('.minicolors-swatch-color') - .css({ - backgroundColor: rgb2hex(swatch), - opacity: swatch.a - }); - settings.swatches[i] = swatch; - } - } - - // Inline controls - if(settings.inline) input.parent().addClass('minicolors-inline'); - - updateFromInput(input, false); - - input.data('minicolors-initialized', true); - } - - // Returns the input back to its original state - function destroy(input) { - var minicolors = input.parent(); - - // Revert the input element - input - .removeData('minicolors-initialized') - .removeData('minicolors-settings') - .removeProp('size') - .removeClass('minicolors-input'); - - // Remove the wrap and destroy whatever remains - minicolors.before(input).remove(); - } - - // Shows the specified dropdown panel - function show(input) { - var minicolors = input.parent(); - var panel = minicolors.find('.minicolors-panel'); - var settings = input.data('minicolors-settings'); - - // Do nothing if uninitialized, disabled, inline, or already open - if( - !input.data('minicolors-initialized') || - input.prop('disabled') || - minicolors.hasClass('minicolors-inline') || - minicolors.hasClass('minicolors-focus') - ) return; - - hide(); - - minicolors.addClass('minicolors-focus'); - if (panel.animate) { - panel - .stop(true, true) - .fadeIn(settings.showSpeed, function () { - if (settings.show) settings.show.call(input.get(0)); - }); - } else { - panel.show(); - if (settings.show) settings.show.call(input.get(0)); - } - } - - // Hides all dropdown panels - function hide() { - $('.minicolors-focus').each(function() { - var minicolors = $(this); - var input = minicolors.find('.minicolors-input'); - var panel = minicolors.find('.minicolors-panel'); - var settings = input.data('minicolors-settings'); - - if (panel.animate) { - panel.fadeOut(settings.hideSpeed, function () { - if (settings.hide) settings.hide.call(input.get(0)); - minicolors.removeClass('minicolors-focus'); - }); - } else { - panel.hide(); - if (settings.hide) settings.hide.call(input.get(0)); - minicolors.removeClass('minicolors-focus'); - } - }); - } - - // Moves the selected picker - function move(target, event, animate) { - var input = target.parents('.minicolors').find('.minicolors-input'); - var settings = input.data('minicolors-settings'); - var picker = target.find('[class$=-picker]'); - var offsetX = target.offset().left; - var offsetY = target.offset().top; - var x = Math.round(event.pageX - offsetX); - var y = Math.round(event.pageY - offsetY); - var duration = animate ? settings.animationSpeed : 0; - var wx, wy, r, phi, styles; - - // Touch support - if(event.originalEvent.changedTouches) { - x = event.originalEvent.changedTouches[0].pageX - offsetX; - y = event.originalEvent.changedTouches[0].pageY - offsetY; - } - - // Constrain picker to its container - if(x < 0) x = 0; - if(y < 0) y = 0; - if(x > target.width()) x = target.width(); - if(y > target.height()) y = target.height(); - - // Constrain color wheel values to the wheel - if(target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid')) { - wx = 75 - x; - wy = 75 - y; - r = Math.sqrt(wx * wx + wy * wy); - phi = Math.atan2(wy, wx); - if(phi < 0) phi += Math.PI * 2; - if(r > 75) { - r = 75; - x = 75 - (75 * Math.cos(phi)); - y = 75 - (75 * Math.sin(phi)); - } - x = Math.round(x); - y = Math.round(y); - } - - // Move the picker - styles = { - top: y + 'px' - }; - if(target.is('.minicolors-grid')) { - styles.left = x + 'px'; - } - if (picker.animate) { - picker - .stop(true) - .animate(styles, duration, settings.animationEasing, function() { - updateFromControl(input, target); - }); - } else { - picker - .css(styles); - updateFromControl(input, target); - } - } - - // Sets the input based on the color picker values - function updateFromControl(input, target) { - - function getCoords(picker, container) { - var left, top; - if(!picker.length || !container) return null; - left = picker.offset().left; - top = picker.offset().top; - - return { - x: left - container.offset().left + (picker.outerWidth() / 2), - y: top - container.offset().top + (picker.outerHeight() / 2) - }; - } - - var hue, saturation, brightness, x, y, r, phi; - var hex = input.val(); - var opacity = input.attr('data-opacity'); - - // Helpful references - var minicolors = input.parent(); - var settings = input.data('minicolors-settings'); - var swatch = minicolors.find('.minicolors-input-swatch'); - - // Panel objects - var grid = minicolors.find('.minicolors-grid'); - var slider = minicolors.find('.minicolors-slider'); - var opacitySlider = minicolors.find('.minicolors-opacity-slider'); - - // Picker objects - var gridPicker = grid.find('[class$=-picker]'); - var sliderPicker = slider.find('[class$=-picker]'); - var opacityPicker = opacitySlider.find('[class$=-picker]'); - - // Picker positions - var gridPos = getCoords(gridPicker, grid); - var sliderPos = getCoords(sliderPicker, slider); - var opacityPos = getCoords(opacityPicker, opacitySlider); - - // Handle colors - if(target.is('.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider')) { - - // Determine HSB values - switch(settings.control) { - case 'wheel': - // Calculate hue, saturation, and brightness - x = (grid.width() / 2) - gridPos.x; - y = (grid.height() / 2) - gridPos.y; - r = Math.sqrt(x * x + y * y); - phi = Math.atan2(y, x); - if(phi < 0) phi += Math.PI * 2; - if(r > 75) { - r = 75; - gridPos.x = 69 - (75 * Math.cos(phi)); - gridPos.y = 69 - (75 * Math.sin(phi)); - } - saturation = keepWithin(r / 0.75, 0, 100); - hue = keepWithin(phi * 180 / Math.PI, 0, 360); - brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100); - hex = hsb2hex({ - h: hue, - s: saturation, - b: brightness - }); - - // Update UI - slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 })); - break; - - case 'saturation': - // Calculate hue, saturation, and brightness - hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360); - saturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100); - brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100); - hex = hsb2hex({ - h: hue, - s: saturation, - b: brightness - }); - - // Update UI - slider.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: brightness })); - minicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100); - break; - - case 'brightness': - // Calculate hue, saturation, and brightness - hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360); - saturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100); - brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100); - hex = hsb2hex({ - h: hue, - s: saturation, - b: brightness - }); - - // Update UI - slider.css('backgroundColor', hsb2hex({ h: hue, s: saturation, b: 100 })); - minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (brightness / 100)); - break; - - default: - // Calculate hue, saturation, and brightness - hue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height()), 10), 0, 360); - saturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100); - brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100); - hex = hsb2hex({ - h: hue, - s: saturation, - b: brightness - }); - - // Update UI - grid.css('backgroundColor', hsb2hex({ h: hue, s: 100, b: 100 })); - break; - } - - // Handle opacity - if(settings.opacity) { - opacity = parseFloat(1 - (opacityPos.y / opacitySlider.height())).toFixed(2); - } else { - opacity = 1; - } - - updateInput(input, hex, opacity); - } - else { - // Set swatch color - swatch.find('span').css({ - backgroundColor: hex, - opacity: opacity - }); - - // Handle change event - doChange(input, hex, opacity); - } - } - - // Sets the value of the input and does the appropriate conversions - // to respect settings, also updates the swatch - function updateInput(input, value, opacity) { - var rgb; - - // Helpful references - var minicolors = input.parent(); - var settings = input.data('minicolors-settings'); - var swatch = minicolors.find('.minicolors-input-swatch'); - - if(settings.opacity) input.attr('data-opacity', opacity); - - // Set color string - if(settings.format === 'rgb') { - // Returns RGB(A) string - - // Checks for input format and does the conversion - if(isRgb(value)) { - rgb = parseRgb(value, true); - } - else { - rgb = hex2rgb(parseHex(value, true)); - } - - opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1); - if(isNaN(opacity) || !settings.opacity) opacity = 1; - - if(input.minicolors('rgbObject').a <= 1 && rgb && settings.opacity) { - // Set RGBA string if alpha - value = 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')'; - } else { - // Set RGB string (alpha = 1) - value = 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')'; - } - } else { - // Returns hex color - - // Checks for input format and does the conversion - if(isRgb(value)) { - value = rgbString2hex(value); - } - - value = convertCase(value, settings.letterCase); - } - - // Update value from picker - input.val(value); - - // Set swatch color - swatch.find('span').css({ - backgroundColor: value, - opacity: opacity - }); - - // Handle change event - doChange(input, value, opacity); - } - - // Sets the color picker values from the input - function updateFromInput(input, preserveInputValue) { - var hex, hsb, opacity, keywords, alpha, value, x, y, r, phi; - - // Helpful references - var minicolors = input.parent(); - var settings = input.data('minicolors-settings'); - var swatch = minicolors.find('.minicolors-input-swatch'); - - // Panel objects - var grid = minicolors.find('.minicolors-grid'); - var slider = minicolors.find('.minicolors-slider'); - var opacitySlider = minicolors.find('.minicolors-opacity-slider'); - - // Picker objects - var gridPicker = grid.find('[class$=-picker]'); - var sliderPicker = slider.find('[class$=-picker]'); - var opacityPicker = opacitySlider.find('[class$=-picker]'); - - // Determine hex/HSB values - if(isRgb(input.val())) { - // If input value is a rgb(a) string, convert it to hex color and update opacity - hex = rgbString2hex(input.val()); - alpha = keepWithin(parseFloat(getAlpha(input.val())).toFixed(2), 0, 1); - if(alpha) { - input.attr('data-opacity', alpha); - } - } else { - hex = convertCase(parseHex(input.val(), true), settings.letterCase); - } - - if(!hex){ - hex = convertCase(parseInput(settings.defaultValue, true), settings.letterCase); - } - hsb = hex2hsb(hex); - - // Get array of lowercase keywords - keywords = !settings.keywords ? [] : $.map(settings.keywords.split(','), function(a) { - return $.trim(a.toLowerCase()); - }); - - // Set color string - if(input.val() !== '' && $.inArray(input.val().toLowerCase(), keywords) > -1) { - value = convertCase(input.val()); - } else { - value = isRgb(input.val()) ? parseRgb(input.val()) : hex; - } - - // Update input value - if(!preserveInputValue) input.val(value); - - // Determine opacity value - if(settings.opacity) { - // Get from data-opacity attribute and keep within 0-1 range - opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1); - if(isNaN(opacity)) opacity = 1; - input.attr('data-opacity', opacity); - swatch.find('span').css('opacity', opacity); - - // Set opacity picker position - y = keepWithin(opacitySlider.height() - (opacitySlider.height() * opacity), 0, opacitySlider.height()); - opacityPicker.css('top', y + 'px'); - } - - // Set opacity to zero if input value is transparent - if(input.val().toLowerCase() === 'transparent') { - swatch.find('span').css('opacity', 0); - } - - // Update swatch - swatch.find('span').css('backgroundColor', hex); - - // Determine picker locations - switch(settings.control) { - case 'wheel': - // Set grid position - r = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2); - phi = hsb.h * Math.PI / 180; - x = keepWithin(75 - Math.cos(phi) * r, 0, grid.width()); - y = keepWithin(75 - Math.sin(phi) * r, 0, grid.height()); - gridPicker.css({ - top: y + 'px', - left: x + 'px' - }); - - // Set slider position - y = 150 - (hsb.b / (100 / grid.height())); - if(hex === '') y = 0; - sliderPicker.css('top', y + 'px'); - - // Update panel color - slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 })); - break; - - case 'saturation': - // Set grid position - x = keepWithin((5 * hsb.h) / 12, 0, 150); - y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height()); - gridPicker.css({ - top: y + 'px', - left: x + 'px' - }); - - // Set slider position - y = keepWithin(slider.height() - (hsb.s * (slider.height() / 100)), 0, slider.height()); - sliderPicker.css('top', y + 'px'); - - // Update UI - slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: hsb.b })); - minicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100); - break; - - case 'brightness': - // Set grid position - x = keepWithin((5 * hsb.h) / 12, 0, 150); - y = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height()); - gridPicker.css({ - top: y + 'px', - left: x + 'px' - }); - - // Set slider position - y = keepWithin(slider.height() - (hsb.b * (slider.height() / 100)), 0, slider.height()); - sliderPicker.css('top', y + 'px'); - - // Update UI - slider.css('backgroundColor', hsb2hex({ h: hsb.h, s: hsb.s, b: 100 })); - minicolors.find('.minicolors-grid-inner').css('opacity', 1 - (hsb.b / 100)); - break; - - default: - // Set grid position - x = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width()); - y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height()); - gridPicker.css({ - top: y + 'px', - left: x + 'px' - }); - - // Set slider position - y = keepWithin(slider.height() - (hsb.h / (360 / slider.height())), 0, slider.height()); - sliderPicker.css('top', y + 'px'); - - // Update panel color - grid.css('backgroundColor', hsb2hex({ h: hsb.h, s: 100, b: 100 })); - break; - } - - // Fire change event, but only if minicolors is fully initialized - if(input.data('minicolors-initialized')) { - doChange(input, value, opacity); - } - } - - // Runs the change and changeDelay callbacks - function doChange(input, value, opacity) { - var settings = input.data('minicolors-settings'); - var lastChange = input.data('minicolors-lastChange'); - var obj, sel, i; - - // Only run if it actually changed - if(!lastChange || lastChange.value !== value || lastChange.opacity !== opacity) { - - // Remember last-changed value - input.data('minicolors-lastChange', { - value: value, - opacity: opacity - }); - - // Check and select applicable swatch - if(settings.swatches && settings.swatches.length !== 0) { - if(!isRgb(value)) { - obj = hex2rgb(value); - } - else { - obj = parseRgb(value, true); - } - sel = -1; - for(i = 0; i < settings.swatches.length; ++i) { - if(obj.r === settings.swatches[i].r && obj.g === settings.swatches[i].g && obj.b === settings.swatches[i].b && obj.a === settings.swatches[i].a) { - sel = i; - break; - } - } - - input.parent().find('.minicolors-swatches .minicolors-swatch').removeClass('selected'); - if(sel !== -1) { - input.parent().find('.minicolors-swatches .minicolors-swatch').eq(i).addClass('selected'); - } - } - - // Fire change event - if(settings.change) { - if(settings.changeDelay) { - // Call after a delay - clearTimeout(input.data('minicolors-changeTimeout')); - input.data('minicolors-changeTimeout', setTimeout(function() { - settings.change.call(input.get(0), value, opacity); - }, settings.changeDelay)); - } else { - // Call immediately - settings.change.call(input.get(0), value, opacity); - } - } - input.trigger('change').trigger('input'); - } - } - - // Generates an RGB(A) object based on the input's value - function rgbObject(input) { - var rgb, - opacity = $(input).attr('data-opacity'); - if( isRgb($(input).val()) ) { - rgb = parseRgb($(input).val(), true); - } else { - var hex = parseHex($(input).val(), true); - rgb = hex2rgb(hex); - } - if( !rgb ) return null; - if( opacity !== undefined ) $.extend(rgb, { a: parseFloat(opacity) }); - return rgb; - } - - // Generates an RGB(A) string based on the input's value - function rgbString(input, alpha) { - var rgb, - opacity = $(input).attr('data-opacity'); - if( isRgb($(input).val()) ) { - rgb = parseRgb($(input).val(), true); - } else { - var hex = parseHex($(input).val(), true); - rgb = hex2rgb(hex); - } - if( !rgb ) return null; - if( opacity === undefined ) opacity = 1; - if( alpha ) { - return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')'; - } else { - return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')'; - } - } - - // Converts to the letter case specified in settings - function convertCase(string, letterCase) { - return letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase(); - } - - // Parses a string and returns a valid hex string when possible - function parseHex(string, expand) { - string = string.replace(/^#/g, ''); - if(!string.match(/^[A-F0-9]{3,6}/ig)) return ''; - if(string.length !== 3 && string.length !== 6) return ''; - if(string.length === 3 && expand) { - string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2]; - } - return '#' + string; - } - - // Parses a string and returns a valid RGB(A) string when possible - function parseRgb(string, obj) { - var values = string.replace(/[^\d,.]/g, ''); - var rgba = values.split(','); - - rgba[0] = keepWithin(parseInt(rgba[0], 10), 0, 255); - rgba[1] = keepWithin(parseInt(rgba[1], 10), 0, 255); - rgba[2] = keepWithin(parseInt(rgba[2], 10), 0, 255); - if(rgba[3] !== undefined) { - rgba[3] = keepWithin(parseFloat(rgba[3], 10), 0, 1); - } - - // Return RGBA object - if( obj ) { - if (rgba[3] !== undefined) { - return { - r: rgba[0], - g: rgba[1], - b: rgba[2], - a: rgba[3] - }; - } else { - return { - r: rgba[0], - g: rgba[1], - b: rgba[2] - }; - } - } - - // Return RGBA string - if(typeof(rgba[3]) !== 'undefined' && rgba[3] <= 1) { - return 'rgba(' + rgba[0] + ', ' + rgba[1] + ', ' + rgba[2] + ', ' + rgba[3] + ')'; - } else { - return 'rgb(' + rgba[0] + ', ' + rgba[1] + ', ' + rgba[2] + ')'; - } - - } - - // Parses a string and returns a valid color string when possible - function parseInput(string, expand) { - if(isRgb(string)) { - // Returns a valid rgb(a) string - return parseRgb(string); - } else { - return parseHex(string, expand); - } - } - - // Keeps value within min and max - function keepWithin(value, min, max) { - if(value < min) value = min; - if(value > max) value = max; - return value; - } - - // Checks if a string is a valid RGB(A) string - function isRgb(string) { - var rgb = string.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); - return (rgb && rgb.length === 4) ? true : false; - } - - // Function to get alpha from a RGB(A) string - function getAlpha(rgba) { - rgba = rgba.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+(\.\d{1,2})?|\.\d{1,2})[\s+]?/i); - return (rgba && rgba.length === 6) ? rgba[4] : '1'; - } - - // Converts an HSB object to an RGB object - function hsb2rgb(hsb) { - var rgb = {}; - var h = Math.round(hsb.h); - var s = Math.round(hsb.s * 255 / 100); - var v = Math.round(hsb.b * 255 / 100); - if(s === 0) { - rgb.r = rgb.g = rgb.b = v; - } else { - var t1 = v; - var t2 = (255 - s) * v / 255; - var t3 = (t1 - t2) * (h % 60) / 60; - if(h === 360) h = 0; - if(h < 60) { rgb.r = t1; rgb.b = t2; rgb.g = t2 + t3; } - else if(h < 120) {rgb.g = t1; rgb.b = t2; rgb.r = t1 - t3; } - else if(h < 180) {rgb.g = t1; rgb.r = t2; rgb.b = t2 + t3; } - else if(h < 240) {rgb.b = t1; rgb.r = t2; rgb.g = t1 - t3; } - else if(h < 300) {rgb.b = t1; rgb.g = t2; rgb.r = t2 + t3; } - else if(h < 360) {rgb.r = t1; rgb.g = t2; rgb.b = t1 - t3; } - else { rgb.r = 0; rgb.g = 0; rgb.b = 0; } - } - return { - r: Math.round(rgb.r), - g: Math.round(rgb.g), - b: Math.round(rgb.b) - }; - } - - // Converts an RGB string to a hex string - function rgbString2hex(rgb){ - rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); - return (rgb && rgb.length === 4) ? '#' + - ('0' + parseInt(rgb[1],10).toString(16)).slice(-2) + - ('0' + parseInt(rgb[2],10).toString(16)).slice(-2) + - ('0' + parseInt(rgb[3],10).toString(16)).slice(-2) : ''; - } - - // Converts an RGB object to a hex string - function rgb2hex(rgb) { - var hex = [ - rgb.r.toString(16), - rgb.g.toString(16), - rgb.b.toString(16) - ]; - $.each(hex, function(nr, val) { - if(val.length === 1) hex[nr] = '0' + val; - }); - return '#' + hex.join(''); - } - - // Converts an HSB object to a hex string - function hsb2hex(hsb) { - return rgb2hex(hsb2rgb(hsb)); - } - - // Converts a hex string to an HSB object - function hex2hsb(hex) { - var hsb = rgb2hsb(hex2rgb(hex)); - if(hsb.s === 0) hsb.h = 360; - return hsb; - } - - // Converts an RGB object to an HSB object - function rgb2hsb(rgb) { - var hsb = { h: 0, s: 0, b: 0 }; - var min = Math.min(rgb.r, rgb.g, rgb.b); - var max = Math.max(rgb.r, rgb.g, rgb.b); - var delta = max - min; - hsb.b = max; - hsb.s = max !== 0 ? 255 * delta / max : 0; - if(hsb.s !== 0) { - if(rgb.r === max) { - hsb.h = (rgb.g - rgb.b) / delta; - } else if(rgb.g === max) { - hsb.h = 2 + (rgb.b - rgb.r) / delta; - } else { - hsb.h = 4 + (rgb.r - rgb.g) / delta; - } - } else { - hsb.h = -1; - } - hsb.h *= 60; - if(hsb.h < 0) { - hsb.h += 360; - } - hsb.s *= 100/255; - hsb.b *= 100/255; - return hsb; - } - - // Converts a hex string to an RGB object - function hex2rgb(hex) { - hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16); - return { - r: hex >> 16, - g: (hex & 0x00FF00) >> 8, - b: (hex & 0x0000FF) - }; - } - - // Handle events - $([document]) - // Hide on clicks outside of the control - .on('mousedown.minicolors touchstart.minicolors', function(event) { - if(!$(event.target).parents().add(event.target).hasClass('minicolors')) { - hide(); - } - }) - // Start moving - .on('mousedown.minicolors touchstart.minicolors', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function(event) { - var target = $(this); - event.preventDefault(); - $(event.delegateTarget).data('minicolors-target', target); - move(target, event, true); - }) - // Move pickers - .on('mousemove.minicolors touchmove.minicolors', function(event) { - var target = $(event.delegateTarget).data('minicolors-target'); - if(target) move(target, event); - }) - // Stop moving - .on('mouseup.minicolors touchend.minicolors', function() { - $(this).removeData('minicolors-target'); - }) - // Selected a swatch - .on('click.minicolors', '.minicolors-swatches li', function(event) { - event.preventDefault(); - var target = $(this), input = target.parents('.minicolors').find('.minicolors-input'), color = target.data('swatch-color'); - updateInput(input, color, getAlpha(color)); - updateFromInput(input); - }) - // Show panel when swatch is clicked - .on('mousedown.minicolors touchstart.minicolors', '.minicolors-input-swatch', function(event) { - var input = $(this).parent().find('.minicolors-input'); - event.preventDefault(); - show(input); - }) - // Show on focus - .on('focus.minicolors', '.minicolors-input', function() { - var input = $(this); - if(!input.data('minicolors-initialized')) return; - show(input); - }) - // Update value on blur - .on('blur.minicolors', '.minicolors-input', function() { - var input = $(this); - var settings = input.data('minicolors-settings'); - var keywords; - var hex; - var rgba; - var swatchOpacity; - var value; - - if(!input.data('minicolors-initialized')) return; - - // Get array of lowercase keywords - keywords = !settings.keywords ? [] : $.map(settings.keywords.split(','), function(a) { - return $.trim(a.toLowerCase()); - }); - - // Set color string - if(input.val() !== '' && $.inArray(input.val().toLowerCase(), keywords) > -1) { - value = input.val(); - } else { - // Get RGBA values for easy conversion - if(isRgb(input.val())) { - rgba = parseRgb(input.val(), true); - } else { - hex = parseHex(input.val(), true); - rgba = hex ? hex2rgb(hex) : null; - } - - // Convert to format - if(rgba === null) { - value = settings.defaultValue; - } else if(settings.format === 'rgb') { - value = settings.opacity ? - parseRgb('rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + input.attr('data-opacity') + ')') : - parseRgb('rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')'); - } else { - value = rgb2hex(rgba); - } - } - - // Update swatch opacity - swatchOpacity = settings.opacity ? input.attr('data-opacity') : 1; - if(value.toLowerCase() === 'transparent') swatchOpacity = 0; - input - .closest('.minicolors') - .find('.minicolors-input-swatch > span') - .css('opacity', swatchOpacity); - - // Set input value - input.val(value); - - // Is it blank? - if(input.val() === '') input.val(parseInput(settings.defaultValue, true)); - - // Adjust case - input.val(convertCase(input.val(), settings.letterCase)); - - }) - // Handle keypresses - .on('keydown.minicolors', '.minicolors-input', function(event) { - var input = $(this); - if(!input.data('minicolors-initialized')) return; - switch(event.which) { - case 9: // tab - hide(); - break; - case 13: // enter - case 27: // esc - hide(); - input.blur(); - break; - } - }) - // Update on keyup - .on('keyup.minicolors', '.minicolors-input', function() { - var input = $(this); - if(!input.data('minicolors-initialized')) return; - updateFromInput(input, true); - }) - // Update on paste - .on('paste.minicolors', '.minicolors-input', function() { - var input = $(this); - if(!input.data('minicolors-initialized')) return; - setTimeout(function() { - updateFromInput(input, true); - }, 1); - }); -})); diff --git a/custom_gallery/app/assets/javascripts/jquery.touchSwipe.min.js b/custom_gallery/app/assets/javascripts/jquery.touchSwipe.min.js deleted file mode 100644 index b7fd340..0000000 --- a/custom_gallery/app/assets/javascripts/jquery.touchSwipe.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){if(typeof define==="function"&&define.amd&&define.amd.jQuery){define(["jquery"],a)}else{a(jQuery)}}(function(f){var y="1.6.9",p="left",o="right",e="up",x="down",c="in",A="out",m="none",s="auto",l="swipe",t="pinch",B="tap",j="doubletap",b="longtap",z="hold",E="horizontal",u="vertical",i="all",r=10,g="start",k="move",h="end",q="cancel",a="ontouchstart" in window,v=window.navigator.msPointerEnabled&&!window.navigator.pointerEnabled,d=window.navigator.pointerEnabled||window.navigator.msPointerEnabled,C="TouchSwipe";var n={fingers:1,threshold:75,cancelThreshold:null,pinchThreshold:20,maxTimeThreshold:null,fingerReleaseThreshold:250,longTapThreshold:500,doubleTapThreshold:200,swipe:null,swipeLeft:null,swipeRight:null,swipeUp:null,swipeDown:null,swipeStatus:null,pinchIn:null,pinchOut:null,pinchStatus:null,click:null,tap:null,doubleTap:null,longTap:null,hold:null,triggerOnTouchEnd:true,triggerOnTouchLeave:false,allowPageScroll:"auto",fallbackToMouseEvents:true,excludedElements:"label, button, input, select, textarea, a, .noSwipe",preventDefaultEvents:true};f.fn.swipe=function(H){var G=f(this),F=G.data(C);if(F&&typeof H==="string"){if(F[H]){return F[H].apply(this,Array.prototype.slice.call(arguments,1))}else{f.error("Method "+H+" does not exist on jQuery.swipe")}}else{if(!F&&(typeof H==="object"||!H)){return w.apply(this,arguments)}}return G};f.fn.swipe.version=y;f.fn.swipe.defaults=n;f.fn.swipe.phases={PHASE_START:g,PHASE_MOVE:k,PHASE_END:h,PHASE_CANCEL:q};f.fn.swipe.directions={LEFT:p,RIGHT:o,UP:e,DOWN:x,IN:c,OUT:A};f.fn.swipe.pageScroll={NONE:m,HORIZONTAL:E,VERTICAL:u,AUTO:s};f.fn.swipe.fingers={ONE:1,TWO:2,THREE:3,ALL:i};function w(F){if(F&&(F.allowPageScroll===undefined&&(F.swipe!==undefined||F.swipeStatus!==undefined))){F.allowPageScroll=m}if(F.click!==undefined&&F.tap===undefined){F.tap=F.click}if(!F){F={}}F=f.extend({},f.fn.swipe.defaults,F);return this.each(function(){var H=f(this);var G=H.data(C);if(!G){G=new D(this,F);H.data(C,G)}})}function D(a5,aw){var aA=(a||d||!aw.fallbackToMouseEvents),K=aA?(d?(v?"MSPointerDown":"pointerdown"):"touchstart"):"mousedown",az=aA?(d?(v?"MSPointerMove":"pointermove"):"touchmove"):"mousemove",V=aA?(d?(v?"MSPointerUp":"pointerup"):"touchend"):"mouseup",T=aA?null:"mouseleave",aE=(d?(v?"MSPointerCancel":"pointercancel"):"touchcancel");var ah=0,aQ=null,ac=0,a2=0,a0=0,H=1,ar=0,aK=0,N=null;var aS=f(a5);var aa="start";var X=0;var aR=null;var U=0,a3=0,a6=0,ae=0,O=0;var aX=null,ag=null;try{aS.bind(K,aO);aS.bind(aE,ba)}catch(al){f.error("events not supported "+K+","+aE+" on jQuery.swipe")}this.enable=function(){aS.bind(K,aO);aS.bind(aE,ba);return aS};this.disable=function(){aL();return aS};this.destroy=function(){aL();aS.data(C,null);aS=null};this.option=function(bd,bc){if(aw[bd]!==undefined){if(bc===undefined){return aw[bd]}else{aw[bd]=bc}}else{f.error("Option "+bd+" does not exist on jQuery.swipe.options")}return null};function aO(be){if(aC()){return}if(f(be.target).closest(aw.excludedElements,aS).length>0){return}var bf=be.originalEvent?be.originalEvent:be;var bd,bg=bf.touches,bc=bg?bg[0]:bf;aa=g;if(bg){X=bg.length}else{be.preventDefault()}ah=0;aQ=null;aK=null;ac=0;a2=0;a0=0;H=1;ar=0;aR=ak();N=ab();S();if(!bg||(X===aw.fingers||aw.fingers===i)||aY()){aj(0,bc);U=au();if(X==2){aj(1,bg[1]);a2=a0=av(aR[0].start,aR[1].start)}if(aw.swipeStatus||aw.pinchStatus){bd=P(bf,aa)}}else{bd=false}if(bd===false){aa=q;P(bf,aa);return bd}else{if(aw.hold){ag=setTimeout(f.proxy(function(){aS.trigger("hold",[bf.target]);if(aw.hold){bd=aw.hold.call(aS,bf,bf.target)}},this),aw.longTapThreshold)}ap(true)}return null}function a4(bf){var bi=bf.originalEvent?bf.originalEvent:bf;if(aa===h||aa===q||an()){return}var be,bj=bi.touches,bd=bj?bj[0]:bi;var bg=aI(bd);a3=au();if(bj){X=bj.length}if(aw.hold){clearTimeout(ag)}aa=k;if(X==2){if(a2==0){aj(1,bj[1]);a2=a0=av(aR[0].start,aR[1].start)}else{aI(bj[1]);a0=av(aR[0].end,aR[1].end);aK=at(aR[0].end,aR[1].end)}H=a8(a2,a0);ar=Math.abs(a2-a0)}if((X===aw.fingers||aw.fingers===i)||!bj||aY()){aQ=aM(bg.start,bg.end);am(bf,aQ);ah=aT(bg.start,bg.end);ac=aN();aJ(aQ,ah);if(aw.swipeStatus||aw.pinchStatus){be=P(bi,aa)}if(!aw.triggerOnTouchEnd||aw.triggerOnTouchLeave){var bc=true;if(aw.triggerOnTouchLeave){var bh=aZ(this);bc=F(bg.end,bh)}if(!aw.triggerOnTouchEnd&&bc){aa=aD(k)}else{if(aw.triggerOnTouchLeave&&!bc){aa=aD(h)}}if(aa==q||aa==h){P(bi,aa)}}}else{aa=q;P(bi,aa)}if(be===false){aa=q;P(bi,aa)}}function M(bc){var bd=bc.originalEvent?bc.originalEvent:bc,be=bd.touches;if(be){if(be.length){G();return true}}if(an()){X=ae}a3=au();ac=aN();if(bb()||!ao()){aa=q;P(bd,aa)}else{if(aw.triggerOnTouchEnd||(aw.triggerOnTouchEnd==false&&aa===k)){bc.preventDefault();aa=h;P(bd,aa)}else{if(!aw.triggerOnTouchEnd&&a7()){aa=h;aG(bd,aa,B)}else{if(aa===k){aa=q;P(bd,aa)}}}}ap(false);return null}function ba(){X=0;a3=0;U=0;a2=0;a0=0;H=1;S();ap(false)}function L(bc){var bd=bc.originalEvent?bc.originalEvent:bc;if(aw.triggerOnTouchLeave){aa=aD(h);P(bd,aa)}}function aL(){aS.unbind(K,aO);aS.unbind(aE,ba);aS.unbind(az,a4);aS.unbind(V,M);if(T){aS.unbind(T,L)}ap(false)}function aD(bg){var bf=bg;var be=aB();var bd=ao();var bc=bb();if(!be||bc){bf=q}else{if(bd&&bg==k&&(!aw.triggerOnTouchEnd||aw.triggerOnTouchLeave)){bf=h}else{if(!bd&&bg==h&&aw.triggerOnTouchLeave){bf=q}}}return bf}function P(be,bc){var bd,bf=be.touches;if((J()||W())||(Q()||aY())){if(J()||W()){bd=aG(be,bc,l)}if((Q()||aY())&&bd!==false){bd=aG(be,bc,t)}}else{if(aH()&&bd!==false){bd=aG(be,bc,j)}else{if(aq()&&bd!==false){bd=aG(be,bc,b)}else{if(ai()&&bd!==false){bd=aG(be,bc,B)}}}}if(bc===q){ba(be)}if(bc===h){if(bf){if(!bf.length){ba(be)}}else{ba(be)}}return bd}function aG(bf,bc,be){var bd;if(be==l){aS.trigger("swipeStatus",[bc,aQ||null,ah||0,ac||0,X,aR]);if(aw.swipeStatus){bd=aw.swipeStatus.call(aS,bf,bc,aQ||null,ah||0,ac||0,X,aR);if(bd===false){return false}}if(bc==h&&aW()){aS.trigger("swipe",[aQ,ah,ac,X,aR]);if(aw.swipe){bd=aw.swipe.call(aS,bf,aQ,ah,ac,X,aR);if(bd===false){return false}}switch(aQ){case p:aS.trigger("swipeLeft",[aQ,ah,ac,X,aR]);if(aw.swipeLeft){bd=aw.swipeLeft.call(aS,bf,aQ,ah,ac,X,aR)}break;case o:aS.trigger("swipeRight",[aQ,ah,ac,X,aR]);if(aw.swipeRight){bd=aw.swipeRight.call(aS,bf,aQ,ah,ac,X,aR)}break;case e:aS.trigger("swipeUp",[aQ,ah,ac,X,aR]);if(aw.swipeUp){bd=aw.swipeUp.call(aS,bf,aQ,ah,ac,X,aR)}break;case x:aS.trigger("swipeDown",[aQ,ah,ac,X,aR]);if(aw.swipeDown){bd=aw.swipeDown.call(aS,bf,aQ,ah,ac,X,aR)}break}}}if(be==t){aS.trigger("pinchStatus",[bc,aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchStatus){bd=aw.pinchStatus.call(aS,bf,bc,aK||null,ar||0,ac||0,X,H,aR);if(bd===false){return false}}if(bc==h&&a9()){switch(aK){case c:aS.trigger("pinchIn",[aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchIn){bd=aw.pinchIn.call(aS,bf,aK||null,ar||0,ac||0,X,H,aR)}break;case A:aS.trigger("pinchOut",[aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchOut){bd=aw.pinchOut.call(aS,bf,aK||null,ar||0,ac||0,X,H,aR)}break}}}if(be==B){if(bc===q||bc===h){clearTimeout(aX);clearTimeout(ag);if(Z()&&!I()){O=au();aX=setTimeout(f.proxy(function(){O=null;aS.trigger("tap",[bf.target]);if(aw.tap){bd=aw.tap.call(aS,bf,bf.target)}},this),aw.doubleTapThreshold)}else{O=null;aS.trigger("tap",[bf.target]);if(aw.tap){bd=aw.tap.call(aS,bf,bf.target)}}}}else{if(be==j){if(bc===q||bc===h){clearTimeout(aX);O=null;aS.trigger("doubletap",[bf.target]);if(aw.doubleTap){bd=aw.doubleTap.call(aS,bf,bf.target)}}}else{if(be==b){if(bc===q||bc===h){clearTimeout(aX);O=null;aS.trigger("longtap",[bf.target]);if(aw.longTap){bd=aw.longTap.call(aS,bf,bf.target)}}}}}return bd}function ao(){var bc=true;if(aw.threshold!==null){bc=ah>=aw.threshold}return bc}function bb(){var bc=false;if(aw.cancelThreshold!==null&&aQ!==null){bc=(aU(aQ)-ah)>=aw.cancelThreshold}return bc}function af(){if(aw.pinchThreshold!==null){return ar>=aw.pinchThreshold}return true}function aB(){var bc;if(aw.maxTimeThreshold){if(ac>=aw.maxTimeThreshold){bc=false}else{bc=true}}else{bc=true}return bc}function am(bc,bd){if(aw.preventDefaultEvents===false){return}if(aw.allowPageScroll===m){bc.preventDefault()}else{var be=aw.allowPageScroll===s;switch(bd){case p:if((aw.swipeLeft&&be)||(!be&&aw.allowPageScroll!=E)){bc.preventDefault()}break;case o:if((aw.swipeRight&&be)||(!be&&aw.allowPageScroll!=E)){bc.preventDefault()}break;case e:if((aw.swipeUp&&be)||(!be&&aw.allowPageScroll!=u)){bc.preventDefault()}break;case x:if((aw.swipeDown&&be)||(!be&&aw.allowPageScroll!=u)){bc.preventDefault()}break}}}function a9(){var bd=aP();var bc=Y();var be=af();return bd&&bc&&be}function aY(){return !!(aw.pinchStatus||aw.pinchIn||aw.pinchOut)}function Q(){return !!(a9()&&aY())}function aW(){var bf=aB();var bh=ao();var be=aP();var bc=Y();var bd=bb();var bg=!bd&&bc&&be&&bh&&bf;return bg}function W(){return !!(aw.swipe||aw.swipeStatus||aw.swipeLeft||aw.swipeRight||aw.swipeUp||aw.swipeDown)}function J(){return !!(aW()&&W())}function aP(){return((X===aw.fingers||aw.fingers===i)||!a)}function Y(){return aR[0].end.x!==0}function a7(){return !!(aw.tap)}function Z(){return !!(aw.doubleTap)}function aV(){return !!(aw.longTap)}function R(){if(O==null){return false}var bc=au();return(Z()&&((bc-O)<=aw.doubleTapThreshold))}function I(){return R()}function ay(){return((X===1||!a)&&(isNaN(ah)||ahaw.longTapThreshold)&&(ah=0)){return p}else{if((be<=360)&&(be>=315)){return p}else{if((be>=135)&&(be<=225)){return o}else{if((be>45)&&(be<135)){return x}else{return e}}}}}function au(){var bc=new Date();return bc.getTime()}function aZ(bc){bc=f(bc);var be=bc.offset();var bd={left:be.left,right:be.left+bc.outerWidth(),top:be.top,bottom:be.top+bc.outerHeight()};return bd}function F(bc,bd){return(bc.x>bd.left&&bc.xbd.top&&bc.y',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},y={}.hasOwnProperty,z;!C(y,"undefined")&&!C(y.call,"undefined")?z=function(a,b){return y.call(a,b)}:z=function(a,b){return b in a&&C(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=v.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(v.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(v.call(arguments)))};return e}),r.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:x(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},r.multiplebgs=function(){return A("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},r.backgroundsize=function(){return G("backgroundSize")},r.csscolumns=function(){return G("columnCount")},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="",(a.firstChild&&a.firstChild.namespaceURI)==q.svg};for(var H in r)z(r,H)&&(w=H.toLowerCase(),e[w]=r[H](),u.push((e[w]?"":"no-")+w));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)z(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},A(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return E([a])},e.testAllProps=G,e.testStyles=x,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+u.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f"; - for(i=current_year;i>=year;i--){ - dthtml+=""; - } - dthtml+=" Date: Month: "; - dom.html(dthtml); -}, - -//loading overlay around a dom... -loadingWrapper : function(dom, display){ - if(display){ - dom.prepend("
      "); - $rss("#loading_wrapper").height(dom.height()); - $rss("#loading_wrapper").width(dom.width()); - }else{ - domId=dom.attr("id"); - $rss("#"+domId+" #loading_wrapper").remove(); - } - }, - -//validating a dom.... -validate : function(dom, validation, errormsg){ - var domValue = dom.val(); - var error = false; - var regex=""; - var msg = ""; - switch(validation){ - case "required": - if(domValue=="")error=true; - msg="Cannot be empty."; - break; - case "email": - regex=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; - msg="Invalid Email Address."; - break; - case "number": - regex=/^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/; - msg = "Only numbers are accepted."; - break; - case "alphanumeric": - regex=/^\s*[a-zA-Z0-9,\s]+\s*$/; - msg="Only numbers, alphabets and spaces are allowed."; - break; - } - domId=dom.attr("name"); - if(errormsg=="")errormsg=msg; - if(regex!="")if(!regex.test(domValue))error=true; - if(error){$rss("#"+domId+"_error").remove();dom.after(""+errormsg+"");return false;} else{ $rss("#"+domId+"_error").remove();return true;} - }, - -bindToSpinner : function(dom,data,callbackFn){ - var domId = dom.attr("id"); - var dhtml=""; - var spinnerValue=Array(); - var spinnerDisplay=Array(); - $rss.each(data,function(i,it){ - $rss.each(data[i],function(key,it){ - spinnerValue.push(it); - }); - }); - dhtml=""; - dom.html(dhtml); - if(typeof callbackFn=="function") - callbackFn.call(this, dhtml); - }, - - //binds the recieved json to a table -bindToTable : function(dom,data,headers,actions,css_class,callbackFn){ - if(!css_class)css_class=""; - var dhtml=""; - var domId = dom.attr("id"); - if(actions){ - var btnTitles=Array(); - var btnFunctions=Array(); - $rss.each(actions,function(title,func){ - btnTitles.push(title); - btnFunctions.push(func); - }); - rcom.translate(btnTitles,function(convertedData){ - btnTitles=convertedData.slice(); - - rcom.translate(headers,function(convertedData){ - headers=convertedData; - if(!data)return; - $rss.each(headers,function(i,head){ - dhtml+=""; - }); - dhtml+=""; - if(data.length==0)dhtml+=""; - $rss.each(data,function(i,item){ - var cl=""; - if(i%2!=0)cl="even"; - dhtml+=""; - $rss.each(item,function(i,it){ - if(i!="id"){ - if(it==null)it="Not Set"; - dhtml+=""; - } - }) - dhtml+=""; - dhtml+=""; - }); - dhtml+="
      "+head+"
      No Data
      "+it+""; - for(x=0;x"+btnTitles[x]+""; - } - dhtml+="
      "; - dom.html(dhtml); - }); - }); - }else{ - rcom.translate(headers,function(convertedData){ - headers=convertedData; - if(!data)return; - if(headers.length>0){ - $rss.each(headers,function(i,head){ - dhtml+=""+head+""; - }); - } - dhtml+=""; - if(data.length==0)dhtml+="No Data"; - - $rss.each(data,function(i,item){ - var cl=""; - if(i%2!=0)cl="even"; - dhtml+=""; - $rss.each(item,function(i,it){ - if(i!="id"){ - if(it==null)it="Not Set"; - dhtml+=""+it+""; - } - }) - dhtml+=""; - }); - dhtml+=""; - dom.html(dhtml); - }); - } - - if(typeof callbackFn=="function") - callbackFn.call(this, dhtml); -}, - //convert to date string which can be directly inserted in database or according to any format. -convertToInsertableDate : function(y,m,d,format){ - var dt=""; - if(m<10)m="0"+m; - if(d<10)d="0"+d; - switch(format){ - case "yyyy-mm-dd": - dt= y+"-"+m+"-"+d; - break; - case "dd-mm-yyyy": - dt= d+"-"+m+"-"+y; - break; - case "mm-dd-yyyy": - dt= m+"-"+d+"-"+y; - break; - default: - dt= y+"-"+m+"-"+d; - break; - } - return dt; - }, -//a fucntion to show specific divs and hide all other -showDoms : function(doms){ - $rss("body").find("div").each(function(){$rss(this).hide();}); - $rss.each(doms,function(i,dom){ - dom.show(); - }); - }, - -//a function to translate the word or array.. -translate : function(data,callbackFn){ - var cdata=""; - var status =true; - if(!data){ - if(typeof callbackFn=="function") - callbackFn.call(this,cdata); - status=false; - } - if(data==""){ - if(typeof callbackFn=="function") - callbackFn.call(this,cdata); - status=false; - } - if(status){ - $rss.getJSON("../../classes/translate.php", {fn:"translateThis",tData:data},function(convertedData){ - if(typeof callbackFn=="function") - callbackFn.call(this, convertedData); - }); - } - }, - -// a function to bind JSON to list -bindToList : function(dom,data,callbackFn){ - var domId = dom.attr("id"); - var dhtml=""; - var listValue=Array(); - var listDisplay=Array(); - $rss.each(data,function(i,it){ - $rss.each(data[i],function(key,it){ - listValue.push(it); - }); - }); - dhtml="
        "; - for(i=0,y=1,z=0;i"+listValue[y]+""; - } - dhtml+="
      "; - dom.html(dhtml); - if(typeof callbackFn=="function") - callbackFn.call(this,dhtml); - }, -makeDraggable : function(handler,dom){ - handler.css("position","absolute"); - dom.css("position","absolute"); - var puranix=0; - var nayeex=0; - var puraniy=0; - var nayeey=0; - var offset=""; - var zIndex=dom.css("z-index"); - handler.mousedown(function(e){ - puranix=e.clientX; - puraniy=e.clientY; - offset=dom.offset(); - $rss(this).mousemove(function(e){ - nayeex=e.clientX-puranix; - nayeex+=offset.left; - nayeey=e.clientY-puraniy; - nayeey+=offset.top; - dom.css({"left":nayeex+"px","top":nayeey+"px","z-index":"9999"}); - }) - }).mouseup(function(){ - $rss(this).unbind("mousemove"); - dom.css("z-index",zIndex); - }) - }, - -//automatically scrolls to the bottom of the div -scrollToBottom : function(dom){ - var domId = dom.attr("id"); -// var domScrollHeight = document.getElementById(domId).scrollHeight; - var obj = document.getElementById(domId); - - if((obj.scrollTop+100) >= (obj.scrollHeight - obj.offsetHeight)) - dom.scrollTop(obj.scrollHeight); - }, - -/*ajax loading of images... needs following settings -dom:in which images ve to be loaded -url:the server url for making ajax calls -limit:how many images to load -divClass:the class of div surrounding each image -nameClass:class for span showing name -fn:function to be called in on the server -imageSrc:the image source of all the images. -bindTo:to bind images to a onclick function or else will be binded to normal a tag. -urlKey:to specify the key of the value.. if bindTo is used, this will be neglected.. -returns json; -*/ -loadImages : function(settings,callbackFn){ - - var dom = settings.dom; - var domid= dom.attr("id"); - var temp_array=Array(); - var starting = $rss("#"+domid+" img:last").attr("id"); - if(typeof starting != 'undefined'){ - starting = starting.substr(4,starting.length-1); - }else{starting = 0}; - var temp_var=""; - var json = ""; - var dhtml=""; - var extraparam=""; - if(typeof settings.extraParam != "undefined"){ - extraparam = settings.extraParam; - } - $rss.getJSON(settings.url,{fn:settings.fn,id:settings.whereId,limit:settings.limit,start:starting,extra:extraparam},function(images){ - json = eval(images); - $rss.each(images,function(i,pic){ - var temp_array=Array(); - var a_var=Array(); - var name_var=""; - var title=""; - $rss.each(pic,function(i,value){ - temp_array.push(value); - }) - if(temp_array.length>=4){ - name_var=""+temp_array[3]+"
      " - } - if(temp_array[2]==null) - title = ""; - else - title = temp_array[2]; - if(typeof settings.bindTo!="undefined"){ - a_var[1]="onclick='"+settings.bindTo+"("+temp_array[0]+");return false;'"; - a_var[0]=""; - }else{a_var[0]='?'+settings.urlKey+'='+temp_array[0];a_var[1]="";} - dhtml="
      "+name_var; - dom.delay(100).append(dhtml); - $rss("#pic_"+pic.id).delay(100).fadeIn(200); - - }) - if(typeof callbackFn=="function") - callbackFn.call(this,json); - }) - - - }, - -//function to get url variables... -getUrlVars : function(){ - var vars = [], hash; - var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); - for(var i = 0; i < hashes.length; i++){ - hash = hashes[i].split('='); - vars.push(hash[0]); - vars[hash[0]] = hash[1]; - } - if(vars[0] == window.location.href){ - vars =[]; - } - return vars; -}, -/*function to open a modalwindow on a page.. self reliant no images, no css needed. -settings - -width:in percentage or pixcel -height:in percentage or pixcel -closeBtn:true or false -envClose:closing through background click, true or flase -loadDiv:load html from a div -loadPage:load a page -loadHtml: load html - -*/ -modalWindow : function(settings,callbackFn){ - - var envClose = settings.envClose; - var dhtml=""; - if(typeof envClose == "undefined") - envClose = true; - var closeBtn = settings.closeBtn; - if(typeof closeBtn == "undefined") - closeBtn = true; - - var rgmaskHeight = $rss(window).height(); - var rgmaskWidth = $rss(window).width(); - var tempheight = settings.height; - var tempwidth = settings.width; - - var maxheight = (rgmaskHeight*85)/100; - var maxwidth = (rgmaskWidth*85)/100; - - if(typeof tempheight!="undefined"){ - tempheight = tempheight.toString(); - if(tempheight.charAt(tempheight.length-1)=='%') - tempheight=(rgmaskHeight*parseInt(tempheight.substr(0,tempheight.length)))/100; - if(tempheight>maxheight) - tempheight=maxheight; - }else{tempheight="auto";} - if(typeof tempwidth!="undefined"){ - tempwidth = tempwidth.toString(); - if(tempwidth.charAt(tempwidth.length-1)=='%') - tempwidth=(rgmaskWidth*parseInt(tempwidth.substr(0,tempwidth.length)))/100; - if(tempwidth>maxwidth) - tempwidth=maxwidth; - }else{tempwidth="auto";} - $rss("body").append('
      '); - $rss("#rgsheath").css({background: "#000", width: "100%", position: "fixed", top: 0, left: 0,opacity:0.5,'z-index':199}); - $rss("body").append('
      '); - $rss("#rgWindow").css({"position": "fixed", "z-index": "999", "background": "#fff", "border": "solid 1px #ccc", "padding": "10px", "border-radius": "5px", "-webkit-border-radius": "5px", "-moz-border-radius": "5px", "-ms-border-radius": "5px", "box-shadow": "0 0 20px rgba(0,0,0,0.7)","-webkit-box-shadow": "0 0 20px rgba(0,0,0,0.7)","-moz-box-shadow": "0 0 20px rgba(0,0,0,0.7)","-ms-box-shadow": "0 0 20px rgba(0,0,0,0.7)"}); - var rgWTop = (rgmaskHeight-20)/2; - var rgWLeft = (rgmaskWidth-20)/2; - $rss("#rgWindow").css({top:rgWTop+"px", left:rgWLeft+"px"}); - if(typeof settings.loadDiv!="undefined"){ - dhtml = $rss(settings.loadDiv).html(); - $rss("#rgWindow").html(dhtml).hide(); - prepareWindow(); - } - if(typeof settings.loadHtml!="undefined"){ - dhtml = settings.loadHtml; - $rss("#rgWindow").html(dhtml).hide(); - prepareWindow(); - } - if(typeof settings.loadPage!="undefined"){ - $rss("#rgWindow").load(settings.loadPage,function(){$rss(this).hide();dhtml=$rss(this).html();prepareWindow();}); - } - function prepareWindow(){ - if(tempheight!="auto") - rgWTop = (rgmaskHeight-tempheight)/2; - else{ - tempheight=$rss("#rgWindow").height()+30; - if(tempheight>maxheight) - tempheight=maxheight; - rgWTop=(rgmaskHeight-tempheight)/2; - } - if(tempwidth!="auto") - rgWLeft = (rgmaskWidth-tempwidth)/2; - else{ - tempwidth=$rss("#rgWindow").width(); - if(tempwidth>maxwidth) - tempwidth=maxwidth; - rgWLeft=(rgmaskWidth-tempwidth)/2; - } - tempwidth=parseInt(tempwidth)+25; - $rss("#rgWindow").empty().show(); - var closebtn = ""; - if(closeBtn) - closebtn='X'; - $rss("#rgWindow").animate({"width":tempwidth+"px","height":tempheight+"px",top:rgWTop+"px", left:rgWLeft+"px"},500,function(){$rss("#rgWindow").html(closebtn+"
      "+dhtml+"
      "); - $rss("#close_modal").mouseover(function(){$rss(this).css("color","#999");}).mouseout(function(){$rss(this).css("color","#666");}) - $rss("#close_modal").click(function(){rcom.modalWindowClose(); return false;}) - if(envClose) - $rss("#rgsheath").click(function(){ - rcom.modalWindowClose(); - }) - $rss(document).one("keydown",function(e){ - if (e.keyCode == 27){ - rcom.modalWindowClose(); - return false; - } - }) - - if(typeof callbackFn=="function") - callbackFn.call(this,$rss("#rgWindow")); - }); - } -}, -modalWindowUpdate : function(settings,callbackFn){ - var rgmaskHeight = $rss(window).height(); - var rgmaskWidth = $rss(window).width(); - var tempheight = settings.height; - var tempwidth = settings.width; - var dhtml = ""; - var maxheight = (rgmaskHeight*85)/100; - var maxwidth = (rgmaskWidth*85)/100; - if(typeof tempheight!="undefined"){ - tempheight = tempheight.toString(); - if(tempheight.charAt(tempheight.length-1)=='%') - tempheight=(rgmaskHeight*parseInt(tempheight.substr(0,tempheight.length)))/100; - if(tempheight>maxheight) - tempheight=maxheight; - }else{tempheight="auto";} - if(typeof tempwidth!="undefined"){ - tempwidth = tempwidth.toString(); - if(tempwidth.charAt(tempwidth.length-1)=='%') - tempwidth=(rgmaskWidth*parseInt(tempwidth.substr(0,tempwidth.length)))/100; - if(tempwidth>maxwidth) - tempwidth=maxwidth; - }else{tempwidth="auto";}; - $rss("body").append("
      "); - - if(typeof settings.loadDiv!="undefined"){ - dhtml = $rss("#"+settings.loadDiv).html(); - $rss("#rgwindow_temp_div").html(dhtml).hide(); - prepareWindow(); - } - if(typeof settings.loadHtml!="undefined"){ - dhtml = settings.loadHtml; - $rss("#rgwindow_temp_div").html(dhtml).hide(); - prepareWindow(); - } - if(typeof settings.loadPage!="undefined"){ - $rss("#rgwindow_temp_div").load(settings.loadPage,function(){$rss(this).hide();dhtml=$rss(this).html();prepareWindow();}); - } - function prepareWindow(){ - if(tempheight!="auto") - rgWTop = (rgmaskHeight-tempheight)/2; - else{ - tempheight=$rss("#rgwindow_temp_div").height()+30; - if(tempheight>maxheight) - tempheight=maxheight; - rgWTop=(rgmaskHeight-tempheight)/2; - } - if(tempwidth!="auto") - rgWLeft = (rgmaskWidth-tempwidth)/2; - else{ - tempwidth=$rss("#rgwindow_temp_div").width(); - if(tempwidth>maxwidth) - tempwidth=maxwidth; - rgWLeft=(rgmaskWidth-tempwidth)/2; - } - tempwidth=parseInt(tempwidth)+25; - $rss("#rgContent").empty(); - $rss("#rgWindow").animate({"width":tempwidth+"px","height":tempheight+"px",top:rgWTop+"px", left:rgWLeft+"px"},500,function(){$rss("#rgContent").css("height",tempheight+"px").html(dhtml)}); - $rss("#rgwindow_temp_div").remove(); - } -}, -modalWindowClose : function(callbackFn){ - if($rss("#rgWindow").length>0){ - $rss("#rgWindow").empty(); - var rgmaskHeight = $rss(window).height(); - var rgmaskWidth = $rss(window).width(); - var x = (rgmaskHeight-20)/2; - var y = (rgmaskWidth-20)/2 - $rss("#rgWindow").animate({top:x+"px", left:y+"px","width":"50px","height":"50px"},300,function(){$rss(this).fadeOut(100).remove();$rss("#rgsheath").fadeOut(500).remove();}) - } - if(typeof callbackFn=="function") - callbackFn.call(this,"harry"); -}, -bindDomToHead : function(dom){ - var gc = dom.css("background"); - var t = dom.offset(); - var gw = dom.width(); - $rss(window).scroll(function(){ - var wt = $rss(window).scrollTop(); - if ( wt > t.top ) { - var cssObj = { - 'position':'fixed', - 'top':0, - 'width':gw, - 'background':gc, - 'box-shadow':'0 1px 0 rgba(0,0,0,0.2)', - 'z-index':99 - } - dom.css(cssObj); - } else { - dom.attr('style',""); - } - }); -}, -progressBar : function(dom,settings){ - var domid = dom.prop("id"); - if($rss("#rss_progressbar_div_"+domid).length==0){ - if(typeof settings.top == "undefined") - settings.value = 1; - if(typeof settings.top == "undefined") - settings.top = (dom.height()-12)/2; - dom.append(""); - $rss("#rss_progressbar_div_"+domid).fadeIn(500); - } -}, -progressBarValue : function(dom,value){ - var domid = dom.prop("id"); - if($rss("#rss_progressbar_div_"+domid).length==1){ - $rss("#rss_progressbar_"+domid).animate({"width":value+"%"},100); - - } -}, -progressBarClose : function(dom){ - var domid = dom.prop("id"); - $rss("#rss_progressbar_div_"+domid).fadeOut(500,function(){$(this).remove();}); -}, -getInternetExplorerVersion: function(){ - var rv = -1; // Return value assumes failure. - if (navigator.appName == 'Microsoft Internet Explorer') - { - var ua = navigator.userAgent; - var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); - if (re.exec(ua) != null) - rv = parseFloat( RegExp.$1 ); - } - return rv; - } -} -$ = jQuery.noConflict(); diff --git a/custom_gallery/app/assets/javascripts/theater-widget.js b/custom_gallery/app/assets/javascripts/theater-widget.js deleted file mode 100644 index 0f00043..0000000 --- a/custom_gallery/app/assets/javascripts/theater-widget.js +++ /dev/null @@ -1,536 +0,0 @@ -var CustomGalleryTheaterWidget = function(widget){ - var parent_divs = widget, - parent_div_z_index = parent_divs.eq(parent_divs.length-1).css('z-index') - parent_divs.eq(parent_divs.length-1).css('z-index','2000') - var gt = this, - currentPic = {}, - windowHeight = 0, - windowWidth = 0, - swipeController = null, - resizing = null; - loadingInterval = null, - mainPicLoading = 0, - nextPicLoading = 0, - prevPicLoading = 0, - currentSwipeImageDom = null, - currentSwipeImageDomLeftPos = 0, - windowScreenThresholdForTouch = 0, - loadingProcess = 0; - gt.stage = null; - gt.stripNextBtn = null; - gt.stripPrevBtn = null; - gt.thumbToggle = null; - gt.descriptionToggle = null; - gt.closeBtn = null; - gt.imageContainer = null; - gt.custom_albumData = {}; - gt.loader = null; - gt.thumbStrip = null; - gt.descriptionArea = null; - gt.isTheaterInitialized = false; - - var play_flag = false; - var button_left_string = '', - button_right_string = '', - button_play_string = '', - button_stop_string = '', - playtimeoutID; - var initialize = function(){ - gt.stage = widget.find('#custom_gallery-theater-stage'); - gt.closeBtn = gt.stage.find(".custom_gallery-close"); - gt.switchBtn = gt.stage.find(".custom_gallery-theme-switch"); - gt.imageContainer = gt.stage.find(".image-container"); - gt.thumbStrip = gt.stage.find(".custom_gallery-thumb-wrap"); - gt.thumbToggle = gt.stage.find(".custom_gallery-thumb-toggle"); - gt.loader = gt.stage.find(".custom_gallery-loader"); - gt.stripNextBtn = gt.stage.find(".custom_gallery-thumb-next"); - gt.stripPrevBtn = gt.stage.find(".custom_gallery-thumb-prev"); - gt.descriptionArea = gt.stage.find(".custom_gallery-img-desc"); - gt.descriptionToggle = gt.stage.find(".custom_gallery-toggle-desc"); - windowScreenThresholdForTouch = windowWidth / 3; - startLoading(); - windowHeight = $(window).height(); - windowWidth = $(window).width(); - var addButton = function () { - widget.find('.theaterButton').remove(); - if (!play_flag){ - $(button_left_string+button_play_string+button_right_string).insertAfter(widget.find('img.gal-active')); - } - else{ - $(button_left_string+button_stop_string+button_right_string).insertAfter(widget.find('img.gal-active')); - } - if (!widget.find(".gal-prev").length) { widget.find('#theaterPreviousButton').remove(); } - if (!widget.find(".gal-next").length) { widget.find('#theaterNextButton').remove(); } - - widget.find('#theaterPreviousButton').click(function () { - gt.previousPic(); - addButton() - }); - widget.find('#theaterNextButton').click(function () { - gt.nextPic(); - addButton() - }); - widget.find('#theaterPlayButton').click(function () { - play_flag = true; - playtimeoutID = window.setInterval(function(){ - gt.playallPic(); - },3000) - addButton() - }); - widget.find('#theaterStopButton').click(function () { - play_flag = false; - addButton() - window.clearInterval(playtimeoutID) - }); - } - bindHandler(); - gt.createTheater(); - - addButton(); - - } - - var bindHandler = function(){ - // handler to close the theater - gt.closeBtn.on("click",gt.destroyTheater); - - // handler to show theater - widget.find("div[data-list=images] a").on("click",function(){ - gt.createTheater(); - return false; - }) - - gt.switchBtn.on("click",gt.switchTheme); - gt.descriptionToggle.on("click", gt.toggleDescription) - gt.stripPrevBtn.on("click", gt.scrollStripRight); - gt.stripNextBtn.on("click", gt.scrollStripLeft); - - if(Modernizr.touch){ - gt.imageContainer.swipe({ - swipe : function(event, direction, distance, duration, fingerCount){ - if(direction == "left"){ - gt.nextPic(); - }else if(direction == "right"){ - gt.previousPic(); - } - } - }) - gt.thumbToggle.swipe({ - swipe : function(event, direction, distance, duration, fingerCount){ - if(direction == "up"){ - gt.thumbStrip.parent().addClass("show"); - gt.thumbToggle.addClass("up"); - gt.thumbToggle.find("i").removeClass("fa-angle-double-up").addClass("fa-angle-double-down"); - }else if(direction == "down"){ - gt.thumbStrip.parent().removeClass("show"); - gt.thumbToggle.removeClass("up"); - gt.thumbToggle.find("i").removeClass("fa-angle-double-down").addClass("fa-angle-double-up"); - } - } - }) - } - - //handler for window resize - $(window).resize(function(){ - clearTimeout(resizing); - resizing = setTimeout(doneResizing,1000); - }) - } - - var bindKeyHandlers = function(){ - if(!Modernizr.touch){ - widget.on("click",".gal-active", gt.nextPic); - widget.on("click",".gal-prev", gt.previousPic); - widget.on("click",".gal-next", gt.nextPic); - $(document).on("keyup",function(e){ - switch(e.keyCode){ - case 39: - gt.nextPic(); - break; - case 37: - gt.previousPic(); - break; - case 27: - gt.destroyTheater(); - break; - } - }) - } - } - - - var doneResizing = function(){ - windowHeight = $(window).height(); - windowWidth = $(window).width(); - setThumbNavs(); - } - - var unBindKeyHandlers = function(){ - $(document).unbind("keyup"); - } - - gt.destroyTheater = function(){ - parent_divs.eq(parent_divs.length-1).css('z-index',parent_div_z_index) - gt.stage.hide(); - widget.removeClass("custom_gallery-mode-on"); - gt.imageContainer.empty() - unBindKeyHandlers(); - } - - gt.createTheater = function(){ - gt.stage.show(); - widget.addClass("custom_gallery-mode-on"); - bindKeyHandlers(); - gt.isTheaterInitialized = false; - gt.custom_albumData = {} - gt.custom_albumData.images = $.map(widget.find('img.custom_gallery-thumb'),function(v){ - var url = $(v).attr('data-link'), - theater_url = $(v).attr('data-theater-url'), - thumb_url = $(v).attr('src') - return {'url': url, - 'file': {'theater': {url: theater_url}, - 'thumb': {url: thumb_url} - } - } - }) - var cp = gt.custom_albumData.images[0]; - currentPic = {"image" : cp, "index" : 0}; - createThumbStrip(); - - currentPic = currentPic; - } - - gt.hasNextImage = function(){ - return (currentPic.index + 1) <= (gt.custom_albumData.images.length - 1); - } - - gt.hasPreviousImage = function(){ - return (currentPic.index > 0); - } - - gt.nextPic = function(){ - if(loadingProcess == 0){ - if(gt.hasNextImage()){ - startLoading(); - currentPic.image = gt.custom_albumData.images[currentPic.index + 1]; - currentPic.index = currentPic.index + 1; - setMainPic("next"); - } - } - } - gt.playallPic = function(){ - if(loadingProcess == 0){ - mainPicLoading = 1; - nextPicLoading = 1; - prevPicLoading = 1; - if(gt.hasNextImage()){ - currentPic.image = gt.custom_albumData.images[currentPic.index + 1]; - currentPic.index = currentPic.index + 1; - setMainPic("next"); - } - else{ - currentPic.image = gt.custom_albumData.images[0]; - currentPic.index = 0; - setMainPic(); - gt.isTheaterInitialized = false; - setTimeout(function(){ - loadingProcess = 0; - nextPicLoading = 0; - widget.find('.theaterButton').remove() - widget.find("img.custom_gallery-image.gal-prev.gal-inactive").remove(); - img = widget.find("img.custom_gallery-image.gal-active"); - img.eq(0).remove(); - },100) - } - } - } - - - gt.previousPic = function(){ - if(loadingProcess == 0){ - if(gt.hasPreviousImage()) { - startLoading(); - currentPic.image = gt.custom_albumData.images[currentPic.index - 1]; - currentPic.index = currentPic.index - 1; - setMainPic("prev"); - } - } - } - - gt.scrollStripLeft = function(){ - pixels_to_move = parseInt(gt.thumbStrip.css("left")) - (66 * 3); - maximum_pixels = (windowWidth / 2) - (66 * (gt.custom_albumData.images.length - 1)); - if(pixels_to_move < maximum_pixels){ - pixels_to_move = maximum_pixels; - } - gt.thumbStrip.css("left",pixels_to_move + "px"); - } - - gt.scrollStripRight = function(){ - pixels_to_move = parseInt(gt.thumbStrip.css("left")) + (66 * 3); - maximum_pixels = (windowWidth / 2); - if(pixels_to_move > maximum_pixels){ - pixels_to_move = maximum_pixels; - } - gt.thumbStrip.css("left",pixels_to_move + "px"); - } - - - gt.switchTheme = function(){ - var themeWhiteKlass = "theme-white", - nightKlass = "fa fa-circle", - dayKlass = "fa fa-circle-o", - $body = widget; - - if (!gt.switchBtn.hasClass(themeWhiteKlass)) { - gt.switchBtn - .addClass(themeWhiteKlass) - .find("i") - .attr("class", dayKlass); - - $body.addClass(themeWhiteKlass); - - } else { - gt.switchBtn - .removeClass(themeWhiteKlass) - .find("i") - .attr("class", nightKlass); - - $body.removeClass(themeWhiteKlass); - - } - } - - gt.toggleDescription = function(){ - $(this).toggleClass("active"); - gt.descriptionArea.toggleClass("active"); - } - - var startLoading = function(){ - loadingProcess = 1; - mainPicLoading = 0; - nextPicLoading = 0; - prevPicLoading = 0; - gt.loader.show(); - loadingInterval = setInterval(stopLoading, 300); - - } - - var stopLoading = function(){ - if(mainPicLoading == 1 && nextPicLoading == 1 && prevPicLoading == 1){ - clearInterval(loadingInterval); - setTimeout(function(){ - loadingProcess = 0; - gt.loader.hide(); - },100) - } - } - - var createThumbStrip = function(){ - if(!gt.isTheaterInitialized){ - gt.thumbStrip.html('') - $.each(gt.custom_albumData.images,function(index, image){ - var li = $(""), - a = $(""), - img = $("Image Thumb"); - a.on("click",function(){ - startLoading(); - var old_index = currentPic.index; - currentPic.image = gt.custom_albumData.images[index]; - currentPic.index = index; - if(old_index > index){ - setMainPic("prev",true); - }else if(old_index < index){ - setMainPic("next",true); - } - return false; - }) - - img.attr("src",image.file.thumb.url); - img.attr("alt",image.alt_title); - li.attr("data-index",index); - a.append(img); - li.append(a); - gt.thumbStrip.append(li); - }) - setThumbNavs(); - } - setMainPic(); - } - - - var setThumbNavs = function() { - var $thumbNav = gt.stage.find('.custom_gallery-thumb-navs'), - $thumb = gt.thumbStrip.find('img'), - thumbs = $thumb.length, - thumbWidth = $thumb.eq(0).width(), - thumbGap = parseInt($thumb.closest('li').css('margin-right'), 10), - widthSum = (thumbWidth + thumbGap) * thumbs, - margin = widthSum * 0.1, - totalWidth = widthSum + margin; - - if (windowWidth < totalWidth) { - $thumbNav.addClass('show'); - }else{ - $thumbNav.removeClass('show'); - } - }; - function one_load(img){ - if (img[0].complete){ - setTimeout(loaded(img),100) - }else{ - setTimeout(one_load,20) - } - } - function loaded(img){ - calculateHeight(img); - mainPicLoading = 1; - img.fadeIn(100); - } - window.setMainPic = function(direction,selectedFromStrip){ - var img = null; - widget.find('div.custom_gallery-show-original a').eq(0).attr('href',currentPic.image.url) - if(direction == null){ - img = $(""); - img.hide(); - img.attr("src", currentPic.image.file.theater.url); - gt.imageContainer.append(img); - img.one("load", function(){ - one_load(img) - }) - gt.isTheaterInitialized = true; - }else{ - img = gt.imageContainer.find(".gal-active"); - if(selectedFromStrip){ - gt.imageContainer.find(".gal-" + direction).attr("src",currentPic.image.file.theater.url); - } - if(direction == "next"){ - gt.imageContainer.find(".gal-prev").remove(); - img.removeClass("gal-active").addClass("gal-prev gal-inactive temp"); - gt.imageContainer.find(".gal-next").removeClass("gal-inactive gal-next").addClass("gal-active"); - gt.thumbStrip.css("left",(parseInt(gt.thumbStrip.css("left")) - 66) + "px"); - }else if(direction == "prev"){ - gt.imageContainer.find(".gal-next").remove(); - img.removeClass("gal-active").addClass("gal-next gal-inactive temp"); - gt.imageContainer.find(".gal-prev").removeClass("gal-inactive gal-prev").addClass("gal-active"); - gt.thumbStrip.css("left",(parseInt(gt.thumbStrip.css("left")) + 66) + "px"); - } - mainPicLoading = 1; - } - gt.descriptionArea.html("

      " + currentPic.image.description + "

      "); - if(currentPic.image.description == null){ - gt.descriptionArea.addClass("hide"); - }else{ - gt.descriptionArea.removeClass("hide"); - } - if (direction!=null){ - calculateHeight(gt.imageContainer.find(".gal-active")); - } - gt.thumbStrip.find("li.active").removeClass("active"); - gt.thumbStrip.find("li[data-index=" + currentPic.index + "]").addClass("active"); - - setStripToCenter(); - setNextPic(); - setPrevPic(); - } - - var calculateHeight = function(img){ - var h = 0, - w = 0, - new_width = 0; - if(!Modernizr.touch){ - if(typeof currentPic.image.height == "undefined"){ - h = img.height(); - currentPic.image.height = h; - w = img.width(); - currentPic.image.width = w; - }else{ - h = currentPic.image.height; - w = currentPic.image.width; - } - }else{ - h = img.height(); - w = img.width(); - } - if(h > (windowHeight - 150)){ - new_width = Math.round((windowHeight - 100) * w / h); - new_width = (new_width / windowWidth) * 100; - img.width(new_width + "%"); - }else{ - if(windowWidth < 770){ - img.width("90%"); - }else{ - img.width("65%"); - } - } - if (typeof set_custom_gallery_height != 'undefined'){ - set_custom_gallery_height(widget) - } - } - - var setStripToCenter = function(){ - left = (windowWidth / 2) - (66 * currentPic.index); - gt.thumbStrip.css("left",left + "px"); - } - - var setNextPic = function(){ - gt.imageContainer.find(".gal-next.temp").remove() - if(gt.hasNextImage()) { - var obj = gt.custom_albumData.images[currentPic.index + 1], - nextImg = $(""); - nextImg.attr("src",obj.file.theater.url); - nextImg.hide(); - gt.imageContainer.append(nextImg); - nextImg.on("load",function(){ - calculateHeight(nextImg); - nextPicLoading = 1; - nextImg.fadeIn(100); - }) - }else{ - nextPicLoading = 1; - } - } - - var setPrevPic = function(){ - gt.imageContainer.find(".gal-prev.temp").remove() - if(gt.hasPreviousImage()) { - var obj = gt.custom_albumData.images[currentPic.index - 1], - prevImg = $(""); - prevImg.attr("src",obj.file.theater.url); - prevImg.hide(); - gt.imageContainer.prepend(prevImg); - prevImg.on("load",function(){ - calculateHeight(prevImg); - prevPicLoading = 1; - prevImg.fadeIn(100); - }) - }else{ - prevPicLoading = 1; - } - } - - var l = function(x){ - console.log(x) - } - - initialize(); -} -if (typeof bind_custom_gallery_widget_slide == 'undefined'){ - function set_custom_gallery_height(widget){ - var h = widget.find('.custom_gallery-thumb-container').height()+widget.find('.custom_gallery-image.gal-active').height()+widget.find('.custom_gallery-actions').height()+widget.find('.theaterButton').height()+20 - widget.find('.show-custom_gallery-2.custom_gallery').css('height',h) - } - var bind_custom_gallery_widget_slide = function(){ - $('.widget-custom_gallery.widget5').each(function(){ - CustomGalleryTheaterWidget($(this)); - $(window).resize(function(){ - set_custom_gallery_height($(this)) - }); - }) - } - $(document).ready(function(){ - bind_custom_gallery_widget_slide() - }) -} - -// custom_gallery-image gal-prev gal-inactive \ No newline at end of file diff --git a/custom_gallery/app/assets/javascripts/theater_bak.js b/custom_gallery/app/assets/javascripts/theater_bak.js deleted file mode 100644 index dcc64b2..0000000 --- a/custom_gallery/app/assets/javascripts/theater_bak.js +++ /dev/null @@ -1,261 +0,0 @@ -var CustomGalleryTheater = function(){ - var gt = this, - currentPic = {}, - windowHeight = 0, - windowWidth = 0; - gt.stage = null; - gt.closeBtn = null; - gt.mainStageImage = null; - gt.prevStageImage = null; - gt.nextStageImage = null; - gt.custom_albumData = {}; - gt.thumbStrip = null; - gt.isTheaterInitialized = false; - - var initialize = function(){ - gt.stage = $("#custom_gallery-theater-stage"); - gt.closeBtn = gt.stage.find(".custom_gallery-close"); - gt.switchBtn = gt.stage.find(".custom_gallery-theme-switch"); - gt.mainStageImage = gt.stage.find(".gal-active"); - gt.prevStageImage = gt.stage.find(".gal-prev"); - gt.nextStageImage = gt.stage.find(".gal-next"); - gt.thumbStrip = gt.stage.find(".custom_gallery-thumb-wrap"); - windowHeight = $(window).height(); - windowWidth = $(window).width(); - bindHandler(); - if(window.location.hash != "" && window.location.hash != "#"){ - var id = window.location.hash.split("#")[1]; - gt.createTheater("/xhr/custom_galleries/theater/" + id); - } - } - - var bindHandler = function(){ - // handler to close the theater - gt.closeBtn.on("click",function(){ - gt.destroyTheater(); - }) - - // handler to show theater - $("div[data-list=images] a").on("click",function(){ - gt.createTheater($(this).attr("href")); - return false; - }) - - // handler to show next image - gt.nextStageImage.on("click",function(){ - if($(this).attr("src") != "#"){ - gt.nextPic(); - } - }) - // handler to show prev image - gt.prevStageImage.on("click",function(){ - if($(this).attr("src") != "#"){ - gt.previousPic(); - } - }) - - // handler to go to next image on center image click - gt.mainStageImage.on("click",gt.nextPic); - - gt.switchBtn.on("click", function() { - var themeWhiteKlass = "theme-white", - nightKlass = "fa fa-circle", - dayKlass = "fa fa-circle-o", - $body = $("body"); - - if (!$(this).hasClass(themeWhiteKlass)) { - $(this) - .addClass(themeWhiteKlass) - .find("i") - .attr("class", dayKlass); - - $body.addClass(themeWhiteKlass); - - } else { - $(this) - .removeClass(themeWhiteKlass) - .find("i") - .attr("class", nightKlass); - - $body.removeClass(themeWhiteKlass); - - } - - }); - - //handler for window resize - $(window).resize(function(){ - windowHeight = $(window).height(); - windowWidth = $(window).width(); - }) - } - - var bindKeyHandlers = function(){ - $(document).on("keyup",function(e){ - switch(e.keyCode){ - case 39: - gt.nextPic(); - break; - case 37: - gt.previousPic(); - break; - case 27: - gt.destroyTheater(); - break; - } - }) - } - - var unBindKeyHandlers = function(){ - $(document).unbind("keypress"); - } - - gt.destroyTheater = function(){ - gt.stage.hide(); - $("body").removeClass("custom_gallery-mode-on"); - unBindKeyHandlers(); - window.location.hash = ""; - } - - gt.createTheater = function(link){ - gt.stage.show(); - $("body").addClass("custom_gallery-mode-on"); - bindKeyHandlers(); - if(!gt.isTheaterInitialized){ - $.ajax({ - url : link, - dataType : "json", - type : "get" - }).done(function(data){ - gt.custom_albumData = data.data; - var cp = gt.custom_albumData.images.filter(function(x){return x._id == gt.custom_albumData.image})[0]; - currentPic = {"image" : cp, "index" : gt.custom_albumData.images.indexOf(cp)}; - createThumbStrip(); - }) - }else{ - var id = link.split("/")[4], - cp = gt.custom_albumData.images.filter(function(x){return x._id == id})[0]; - currentPic = {"image" : cp, "index" : gt.custom_albumData.images.indexOf(cp)}; - createThumbStrip(); - } - } - - gt.nextPic = function(){ - if((currentPic.index + 1) <= (gt.custom_albumData.images.length - 1)){ - currentPic.image = gt.custom_albumData.images[currentPic.index + 1]; - currentPic.index = currentPic.index + 1; - setMainPic(); - } - } - - gt.previousPic = function(){ - if(currentPic.index > 0) { - currentPic.image = gt.custom_albumData.images[currentPic.index - 1]; - currentPic.index = currentPic.index - 1; - setMainPic(); - } - } - - var createThumbStrip = function(){ - if(!gt.isTheaterInitialized){ - $.each(gt.custom_albumData.images,function(index, image){ - var li = $(""), - a = $(""), - img = $("Image Thumb"); - a.on("click",function(){ - currentPic.image = gt.custom_albumData.images[index]; - currentPic.index = index; - setMainPic(); - return false; - }) - img.attr("src",image.file.thumb.url); - img.attr("alt",image.alt_title); - li.attr("data-index",index); - a.append(img); - li.append(a); - gt.thumbStrip.append(li); - }) - gt.isTheaterInitialized = true; - } - setMainPic(); - } - - var setMainPic = function(){ - var obj = currentPic.image; - gt.mainStageImage.fadeOut(100,function(){ - gt.mainStageImage.attr("src",obj.file.theater.url); - gt.mainStageImage.attr("alt",obj.alt_title); - gt.mainStageImage.one("load",function(){ - var h = 0, - w = 0, - new_width = 0; - if(typeof currentPic.image.height == "undefined"){ - h = gt.mainStageImage.height(); - currentPic.image.height = h; - w = gt.mainStageImage.width(); - currentPic.image.width = w; - }else{ - h = currentPic.image.height; - w = currentPic.image.width; - } - if(h > (windowHeight - 100)){ - new_width = Math.round((windowHeight - 100) * w / h); - new_width = (new_width / windowWidth) * 100; - gt.mainStageImage.width(new_width + "%"); - }else{ - if(windowWidth < 770){ - gt.mainStageImage.width("90%"); - }else{ - gt.mainStageImage.width("65%"); - } - } - gt.mainStageImage.fadeIn(100); - }) - }); - gt.thumbStrip.find("li.active").removeClass("active"); - gt.thumbStrip.find("li[data-index=" + currentPic.index + "]").addClass("active"); - changeUrl(); - setNextPic(); - setPrevPic(); - } - - var changeUrl = function(){ - window.location.hash = currentPic.image._id - } - - var setNextPic = function(){ - gt.nextStageImage.attr("src","#"); - if((currentPic.index + 1) <= (gt.custom_albumData.images.length - 1)) { - gt.nextStageImage.hide(); - var obj = gt.custom_albumData.images[currentPic.index + 1]; - gt.nextStageImage.attr("src",obj.file.theater.url); - gt.nextStageImage.on("load",function(){ - gt.nextStageImage.show(); - }); - }else{ - gt.nextStageImage.hide(); - } - } - - var setPrevPic = function(){ - gt.prevStageImage.attr("src","#"); - if(currentPic.index > 0) { - gt.prevStageImage.hide(); - var obj = gt.custom_albumData.images[currentPic.index - 1]; - gt.prevStageImage.attr("src",obj.file.theater.url); - gt.prevStageImage.on("load",function(){ - gt.prevStageImage.show(); - }); - }else{ - gt.prevStageImage.hide(); - } - } - - var l = function(x){ - console.log(x) - } - - $(document).ready(function(){ - initialize(); - }) -} \ No newline at end of file diff --git a/custom_gallery/app/assets/javascripts/upload.js b/custom_gallery/app/assets/javascripts/upload.js deleted file mode 100644 index efaf107..0000000 --- a/custom_gallery/app/assets/javascripts/upload.js +++ /dev/null @@ -1,39 +0,0 @@ -//https://github.com/blueimp/jQuery-File-Upload - -$(function () { - - 'use strict'; - // Initialize the jQuery File Upload widget: - $('#fileupload').fileupload({ - acceptFileTypes:/(\.|\/)(jpe?g|png)$/i, - headers:{ - 'X-CSRF-Token': $('meta[name="csrf-token"]').attr("content") - } - }); - $('#fileupload').bind("fileuploadadd",function(e,data){$(".fileupload-content").css("background-image","none");}) - // Load existing files: -/* $.getJSON($('#fileupload form').prop('action'),{custom_albumid:pagevars['id']}, function (files) { - var fu = $('#fileupload').data('fileupload'); - fu._adjustMaxNumberOfFiles(-files.length); - fu._renderDownload(files) - .appendTo($('#fileupload .files')) - .fadeIn(function () { - // Fix for IE7 and lower: - $(this).show(); - }); - }); -*/ - // Open download dialogs via iframes, - // to prevent aborting current uploads: - $('#fileupload .files').delegate( - 'a:not([target^=_blank])', - 'click', - function (e) { - e.preventDefault(); - $('') - .prop('src', this.href) - .appendTo('body'); - } - ); - -}); \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/cropper.css b/custom_gallery/app/assets/stylesheets/cropper.css deleted file mode 100644 index 6c5dee5..0000000 --- a/custom_gallery/app/assets/stylesheets/cropper.css +++ /dev/null @@ -1,304 +0,0 @@ -/*! - * Cropper.js v1.5.5 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2019-08-04T02:26:27.232Z - */ - -.cropper-container { - direction: ltr; - font-size: 0; - line-height: 0; - position: relative; - -ms-touch-action: none; - touch-action: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.cropper-container img { - display: block; - height: 100%; - image-orientation: 0deg; - max-height: none !important; - max-width: none !important; - min-height: 0 !important; - min-width: 0 !important; - width: 100%; -} - -.cropper-wrap-box, -.cropper-canvas, -.cropper-drag-box, -.cropper-crop-box, -.cropper-modal { - bottom: 0; - left: 0; - position: absolute; - right: 0; - top: 0; -} - -.cropper-wrap-box, -.cropper-canvas { - overflow: hidden; -} - -.cropper-drag-box { - background-color: #fff; - opacity: 0; -} - -.cropper-modal { - background-color: #000; - opacity: 0.5; -} - -.cropper-view-box { - display: block; - height: 100%; - outline: 1px solid #39f; - outline-color: rgba(51, 153, 255, 0.75); - overflow: hidden; - width: 100%; -} - -.cropper-dashed { - border: 0 dashed #eee; - display: block; - opacity: 0.5; - position: absolute; -} - -.cropper-dashed.dashed-h { - border-bottom-width: 1px; - border-top-width: 1px; - height: calc(100% / 3); - left: 0; - top: calc(100% / 3); - width: 100%; -} - -.cropper-dashed.dashed-v { - border-left-width: 1px; - border-right-width: 1px; - height: 100%; - left: calc(100% / 3); - top: 0; - width: calc(100% / 3); -} - -.cropper-center { - display: block; - height: 0; - left: 50%; - opacity: 0.75; - position: absolute; - top: 50%; - width: 0; -} - -.cropper-center::before, -.cropper-center::after { - background-color: #eee; - content: ' '; - display: block; - position: absolute; -} - -.cropper-center::before { - height: 1px; - left: -3px; - top: 0; - width: 7px; -} - -.cropper-center::after { - height: 7px; - left: 0; - top: -3px; - width: 1px; -} - -.cropper-face, -.cropper-line, -.cropper-point { - display: block; - height: 100%; - opacity: 0.1; - position: absolute; - width: 100%; -} - -.cropper-face { - background-color: #fff; - left: 0; - top: 0; -} - -.cropper-line { - background-color: #39f; -} - -.cropper-line.line-e { - cursor: ew-resize; - right: -3px; - top: 0; - width: 5px; -} - -.cropper-line.line-n { - cursor: ns-resize; - height: 5px; - left: 0; - top: -3px; -} - -.cropper-line.line-w { - cursor: ew-resize; - left: -3px; - top: 0; - width: 5px; -} - -.cropper-line.line-s { - bottom: -3px; - cursor: ns-resize; - height: 5px; - left: 0; -} - -.cropper-point { - background-color: #39f; - height: 5px; - opacity: 0.75; - width: 5px; -} - -.cropper-point.point-e { - cursor: ew-resize; - margin-top: -3px; - right: -3px; - top: 50%; -} - -.cropper-point.point-n { - cursor: ns-resize; - left: 50%; - margin-left: -3px; - top: -3px; -} - -.cropper-point.point-w { - cursor: ew-resize; - left: -3px; - margin-top: -3px; - top: 50%; -} - -.cropper-point.point-s { - bottom: -3px; - cursor: s-resize; - left: 50%; - margin-left: -3px; -} - -.cropper-point.point-ne { - cursor: nesw-resize; - right: -3px; - top: -3px; -} - -.cropper-point.point-nw { - cursor: nwse-resize; - left: -3px; - top: -3px; -} - -.cropper-point.point-sw { - bottom: -3px; - cursor: nesw-resize; - left: -3px; -} - -.cropper-point.point-se { - bottom: -3px; - cursor: nwse-resize; - height: 20px; - opacity: 1; - right: -3px; - width: 20px; -} - -@media (min-width: 768px) { - .cropper-point.point-se { - height: 15px; - width: 15px; - } -} - -@media (min-width: 992px) { - .cropper-point.point-se { - height: 10px; - width: 10px; - } -} - -@media (min-width: 1200px) { - .cropper-point.point-se { - height: 5px; - opacity: 0.75; - width: 5px; - } -} - -.cropper-point.point-se::before { - background-color: #39f; - bottom: -50%; - content: ' '; - display: block; - height: 200%; - opacity: 0; - position: absolute; - right: -50%; - width: 200%; -} - -.cropper-invisible { - opacity: 0; -} - -.cropper-bg { - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC'); -} - -.cropper-hide { - display: block; - height: 0; - position: absolute; - width: 0; -} - -.cropper-hidden { - display: none !important; -} - -.cropper-move { - cursor: move; -} - -.cropper-crop { - cursor: crosshair; -} - -.cropper-disabled .cropper-drag-box, -.cropper-disabled .cropper-face, -.cropper-disabled .cropper-line, -.cropper-disabled .cropper-point { - cursor: not-allowed; -} diff --git a/custom_gallery/app/assets/stylesheets/custom_gallery.css b/custom_gallery/app/assets/stylesheets/custom_gallery.css deleted file mode 100644 index 904cb52..0000000 --- a/custom_gallery/app/assets/stylesheets/custom_gallery.css +++ /dev/null @@ -1,554 +0,0 @@ -#orbit_custom_gallery { - margin: 0; - padding: 0 0 10px; - list-style: none; -} -#orbit_custom_gallery .rgcustom_album { - position: relative; - float: left; - margin: 5px; - padding: 5px; - width: 200px; - background: #FFFFFF; - overflow: hidden; - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - -o-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - -webkit-transition-property: left, right, top; - -moz-transition-property: left, right, top; - -ms-transition-property: left, right, top; - -o-transition-property: left, right, top; - transition-property: left, right, top; -} -#orbit_custom_gallery .rgcustom_album:hover { - box-shadow: 0px 0px 5px rgba(0,0,0,.2); -} -#orbit_custom_gallery .rgcustom_album > a { - position: relative; - display: block; - overflow: hidden; - margin: 0 0 10px; - width: 200px; - height: 200px; - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear; -} -#orbit_custom_gallery .rgcustom_album a img { - max-width: none; -} -#orbit_custom_gallery .rgcustom_album:hover a img { - -webkit-filter: blur(2px); -} -#orbit_custom_gallery .rgcustom_album > a:after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; - margin: 0; - background-color: #000000; - opacity: .0; - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear; -} -#orbit_custom_gallery .rgcustom_album:hover a:after { - opacity: .4; - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)"; - filter: alpha(opacity=40); -} -#orbit_custom_gallery .rgcustom_album a .custom_albumname { - position: absolute; - bottom: 0; - margin: 0; - padding: 10px; - color: #F2F2F2; - text-shadow: 0px -1px 0 rgba(0,0,0,0.4); - letter-spacing: -0.5px; - font-size: 30px; - font-family: 'Playfair Display SC', sans-serif; - line-height: 28px; - z-index: 1; - opacity: .0; - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear; -} -#orbit_custom_gallery .rgcustom_album:hover a .custom_albumname { - opacity: 1; - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info { - margin: 0; - list-style: none; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li { - display: inline-block; - float: left; - color: #777777; - font-size: 1.2em; - line-height: 20px; - cursor: pointer; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li > a { - display: inline-block; - margin-left: 5px; - color: #777777; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li:hover > a { - color: #E41B2B; - text-decoration: none; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li:hover { - color: #0088CC; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li .icons-tag { - margin-left: 3px; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li.custom_albumcateg { - float: right; - overflow: hidden; - max-width: 125px; - text-align: right; - text-overflow: ellipsis; - white-space: nowrap; -} -#orbit_custom_gallery .rgcustom_album .custom_gallery_info li.view { - overflow: hidden; - max-width: 50px; - text-overflow: ellipsis; - white-space: nowrap; -} -#orbit_custom_gallery .rgcustom_album .custom_albumtag { - display: none; - overflow: hidden; - margin: 0; -} - - -/* CustomGallery Body */ -div.rgbody{ - margin-bottom:50px; -} -.rgbody .custom_gallery-info { - padding: 0 5px; -} -.rgbody .custom_gallery-info h3 { - margin: 5px 0 0; - color: #333; - text-shadow: 0 1px 0 #ffffff; - font-family: 'Playfair Display SC', sans-serif; -} -.rgbody .custom_gallery-info .muted { - font-family: 'Raleway', sans-serif; -} - -#imgholder { - margin: 0; - padding: 0 0 10px; - list-style: none; -} -.rgcustom_album .photo_edit{ - right: 100%; - transition-duration: 0.5s; -} -.rgcustom_album:hover .photo_edit{ - transform: translate(100%); -} -#imgholder .rgcustom_album { - position: relative; - float: left; - margin: 5px; - padding: 5px; - width: 200px; - background: #FFFFFF; - overflow: hidden; - -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - -o-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1); - -webkit-transition-property: left, right, top; - -moz-transition-property: left, right, top; - -ms-transition-property: left, right, top; - -o-transition-property: left, right, top; - transition-property: left, right, top; -} -#imgholder .rgcustom_album.active { - background-color: #51a351; -} -#imgholder .rgcustom_album.active-single { - background-color: #F89406; -} -#imgholder .rgcustom_album .photo-action { - margin: 0; - list-style: none; - left: 5px; - right: 5px; - height: 0; - position: absolute; - background-color: #FFF; - bottom: 5px; - opacity: .9; - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear; -} -#imgholder .rgcustom_album:hover .photo-action { - padding: 5px; - height: 30px; -} -#imgholder .rgcustom_album .photo-action li { - display: inline-block; - float: left; - color: #777; - font-size: 11px; - line-height: 30px; - cursor: pointer; - width: 33%; - text-align: center; - font-size: 1.2em; -} -#imgholder .rgcustom_album .photo-action a { - color: #777; - display: block; - text-decoration: none; - width: 100%; - height: 100%; -} -#imgholder .rgcustom_album .photo-action li:hover a { - color: #08C; -} -#imgholder .rgcustom_album .photo-action .icons-star { - color: #F8A900; - font-size: 1.4em; - line-height: 1.4em; -} -#imgholder .rgcustom_album a { - display: block; - overflow: hidden; - margin: 0; - width: 200px; - height: 200px; - -webkit-transition: all .2s linear; - -moz-transition: all .2s linear; - -o-transition: all .2s linear; - transition: all .2s linear; -} -#imgholder .rgcustom_album a img { - max-width: none; -} - -#imgholder .rgcustom_album .check { - position: absolute; - top: 0; - right: 0; - width: 40px; - height: 40px; -} -#imgholder .rgcustom_album .check:after { - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - color: #F2F2F2; - text-decoration: inherit; - content: "\f00c"; - line-height: 25px; - text-indent: 20px; - font-size: 1.3em; - position: absolute; - top: 0; - right: 0; - width: 0px; - height: 0px; - border-style: solid; - border-width: 0 40px 40px 0; - border-color: transparent #FFF transparent transparent; -} -#imgholder .rgcustom_album.active .check:after { - color: #FFF; - border-color: transparent #51a351 transparent transparent; -} -#imgholder .rgcustom_album.active-single .check:after { - color: #FFF; - border-color: transparent #F89406 transparent transparent; -} -#imgholder .rgcustom_album input[type="checkbox"] { - position: absolute; - top: 0; - right: 0; - z-index: 3; - display: block; - margin: 0; - width: 100%; - height: 100%; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); - opacity: 0; -} - -/* Page Silde */ -#view-photo-tags .phtot-tags { - margin: 0; - padding: 0; - list-style: none; -} -#view-photo-tags .phtot-tags li { - margin: 0 5px 5px 0; - white-space: nowrap; -} - -/* Dialog */ -.modal-body { - min-height: 80px; - line-height: 80px; - text-align: center; -} -.modal-body .spinning { - display: none; - position: absolute; - width: 70px; - height: 70px; - top: 50%; - left: 50%; - margin: -35px 0 0 -35px; -} - -/* File Upload */ -#upload-panel { - clear: both; -} -#upload-panel iframe { - width: 100%; - border: none; -} -#fileupload { - position: relative; - display: none; - clear: both; - overflow: hidden; - margin: 40px 0 15px; - height: 254px; - border: 1px solid #d4d4d4; - border-radius: 4px; - background-color: #FDFDFD; - /*-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset; - box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;*/ -} -#fileupload table { - margin: 0; -} -#fileupload .fileupload-buttonbar .navbar { - margin-bottom: 0; -} -#fileupload .fileupload-buttonbar .navbar .add-photo { - border: none; - border-right: 1px solid #d4d4d4; - background-color: transparent; - padding: 10px 15px 10px; - color: #777777; - text-decoration: none; - text-shadow: 0 1px 0 #ffffff; -} -#fileupload .fileupload-buttonbar .navbar .add-photo:hover { - color: #333333; - text-decoration: none; - background-color: #EDEDED; -} -#fileupload .fileupload-buttonbar .navbar .fileinput-button { - position: relative; - overflow: hidden; -} -#fileupload .fileupload-buttonbar .navbar .fileinput-button input { - position: absolute; - top: 0; - right: 0; - margin: 0; - font-size: 23px; - opacity: 0; - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - cursor: pointer; - -webkit-transform: translate(-300px, 0) scale(4); - -moz-transform: translate(-300px, 0) scale(4); - -ms-transform: translate(-300px, 0) scale(4); - -o-transform: translate(-300px, 0) scale(4); - transform: translate(-300px, 0) scale(4); - direction: ltr; -} -#fileupload .fileupload-buttonbar .navbar-inner { - border-width: 0 0 1px; - border-radius: 4px 4px 0 0; - padding: 0; -} - -#fileupload .fileupload-progress .progress { - position: absolute; - right: 0; - left: 0; - margin-bottom: 0; - height: 5px; - border-radius: 0; - background-color: transparent; - background-image: none; -} -#fileupload .fileupload-progress .progress-success.progress-striped .bar { - background-color: #0088CC; -} -#fileupload .fileupload-progress .progress-extended { - position: absolute; - top: 1px; - right: 0; - padding-right: 15px; - color: #0088CC; - text-align: right; - text-shadow: 0 1px 0 #ffffff; - letter-spacing: -0.1em; - font-size: 12px; - font-family: 'Varela Round', sans-serif; - line-height: 40px; -} -#fileupload .fileupload-buttonbar { - position: relative; - z-index: 3; -} -#fileupload #dropzone { - margin: 15px 10px 10px; - padding: 30px; - text-align: center; - font-size: 2em; - font-family: 'Raleway'; - line-height: 1.2em; - color: #e4e4e4; -} -#fileupload #dropzone div[data-icons] { - font-size: 4em; - height: 70px; - padding-top: 30px; - text-shadow: 0px -1px 0px #ececec; - color: #f5f5f5; -} -#fileupload #dropzone.drop { - position: absolute; - top: 37px; - left: 0; - right: 0; - bottom: 0; - border: 2px dashed #0088CC; - border-radius: 10px; - color: #0088CC; - background-color: #FFFFFF; - z-index: 0; -} -#fileupload #dropzone.fade { - opacity: .3; -} -#fileupload #dropzone.in { - opacity: .7; - z-index: 2; - border-color: #faa732; - color: #faa732; -} -#fileupload #dropzone.drop div[data-icons] { - text-shadow: 0px -1px 0px #0c5f80; - color: #0088CC; -} -#fileupload #dropzone.in div[data-icons] { - text-shadow: 0px -1px 0px #a28a10; - color: #faa732; -} -#fileupload #file-list { - position: relative; - z-index: 1; - height: 209px; - margin: 2px 0; -} -#fileupload #file-list .pane { - margin-right: 2px; -} -#fileupload #file-list .files { - margin: 0; - padding: 10px 14px 10px 10px; - list-style: none; -} -#fileupload #file-list .files > li { - padding: 10px; -} -#fileupload #file-list .files > li:nth-child(even) { - background-color: #e9e9e9; - border-radius: 3px; -} -#fileupload #file-list .files ul { - position: relative; - margin: 0; - padding: 0; - list-style: none; -} -#fileupload #file-list .files ul li { - float: left; -} -#fileupload #file-list .files ul li.action-bnt { - float: right; -} -#fileupload #file-list .preview { - width: 80px; - min-height: 1px; - margin-right: 10px; - text-align: center; -} -#fileupload #file-list .name { - width: 150px; - max-width: 250px; - margin-left: 15px; -} -#fileupload #file-list .progress { - position: absolute; - left: -5px; - right: -5px; - bottom: -5px; - margin-bottom: 0; - height: 5px; - box-shadow: none; - background-color: transparent; - background-image: none; -} -#fileupload #file-list .size { - width: 80px; -} -#fileupload #file-list .action-bnt { - text-align: right; -} -.cke_contents.cke_reset{ - position: relative; -} -.order-edit-notification{ - background-color: #ffffd5; - z-index: 10; - display: none; - height: 25px; - margin-left: 40%; - position: fixed; - text-align: center; - margin-top: 5px; - top: 85px; - width: 250px; - font-size: 13px; -} \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/custom_gallery_card.css b/custom_gallery/app/assets/stylesheets/custom_gallery_card.css deleted file mode 100644 index 0bd9e7e..0000000 --- a/custom_gallery/app/assets/stylesheets/custom_gallery_card.css +++ /dev/null @@ -1,91 +0,0 @@ -.custom_gallery.card-group .row { - position: relative; - display: flex; - flex-wrap: wrap; -} -.custom_gallery.card-group .card-back { - transform: rotateY(180deg) translateX(-100%); - position: absolute; - backface-visibility: hidden; - transition: transform 300ms; - transition-timing-function: linear; - display: block; - width: 100%; - height: 100%; - top: 0; - background: white; - color: black; -} -.custom_gallery.card-group .card.card-flip.h-100:nth-child(4n) { - margin-right: 0em; -} - -.custom_gallery.card-group .card.card-flip.h-100 { - position: relative; - overflow: hidden; - width: 25%; - width: calc( 25% - 0.75em); - background: white; - margin-right: 1em; - margin-bottom: 1em; -} -@media (max-width: 768px){ - .custom_gallery.card-group .card.card-flip.h-100 { - width: 50%; - width: calc( 50% - 0.5em); - } - .custom_gallery.card-group .card.card-flip.h-100:nth-child(2n) { - margin-right: 0em; - } -} -@media (max-width: 575px){ - .custom_gallery.card-group .card.card-flip.h-100 { - width: 100%; - margin-right: 0em; - } -} -.custom_gallery.card-group h3.card-title { - padding: 0.5em; - margin: 0; - font-size: 1.2em; -} -.custom_gallery.card-group .card-front{ - backface-visibility: hidden; - width: 100%; - height: 100%; -} -.custom_gallery.card-group .card.card-flip.h-100:hover .card-back { - transform: rotateY(0deg); -} -.custom_gallery.card-group .card-button-group{ - bottom: 0; - right: 0; - position: absolute; - display: flex; -} -.custom_gallery.card-group .card-body{ - width: 100%; - position: inherit; - display: flex; - flex-direction: column; - height: 100%; -} -.custom_gallery.card-group .card-button-group a { - color: #fff; - display: block; - background: #6c757d; - padding: 0.5em; - width: 2.3em; - height: 2.3em; - margin-right: 0.1em; - border-radius: 0; -} -.custom_gallery.card-group .card-button-group a:hover { - color: #fff; - background-color: #5a6268; - border-color: #545b62; -} -.custom_gallery.card-group .card-button-group a:focus { - color: #fff; - outline: 0.1em dotted !important; -} \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/custom_gallery_frontend.css b/custom_gallery/app/assets/stylesheets/custom_gallery_frontend.css deleted file mode 100644 index 286dcc6..0000000 --- a/custom_gallery/app/assets/stylesheets/custom_gallery_frontend.css +++ /dev/null @@ -1,332 +0,0 @@ -.rg, .rgp { - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; -} -.rg input, .rgp input, .rg textarea, .rgp textarea { - resize: none; - margin: 0; - display: block; - font-size: 13px; - } -.rgp textarea { overflow: auto; } -.rg a, .rgp a { - text-decoration: none; - outline: none; - } -.rg a:hover { } - -/*.rg img { display: block; border: none; }*/ - -.rgmask { background: #000; width: 100%; position: fixed; top: 0; left: 0; } - -.rgui { - display: inline-block; - cursor: pointer; - } -.rghead, .rgbody { overflow: hidden; } -.rghead { - padding: 10px 0; - } -.rgtitle { - color: #333; - text-shadow: 0 1px 0 #ddd; - font-size: 2em; - padding: 0 8px; - } -.rgbody { - - } -.rgfn { overflow: hidden; } -.rgcustom_album, .rgphoto { float: left; margin: 0 10px 24px 0; } -.rgcustom_album { - margin: 0 16px 16px 0; - padding: 6px; - width: 138px; - height: 220px; - border: solid 1px #ccc; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; -} -.rgcustom_album > a { - display: block; - float: none; - margin: -6px -6px 0 -6px; -} -.rgcustom_album img { - transition: all, 0.5s ease; - -webkit-transition: all, 0.5s ease; - -moz-transition: all 0.5s ease; - -ms-transition: all, 0.5s ease; - } -.rgphoto { } -.rgphoto a { - display: block; - - transition: all, 0.3s ease; - -webkit-transition: all, 0.3s ease; - -moz-transition: all, 0.3s ease; -} -.rgphoto a:hover img { - opacity: 0.85; -} -.rgphoto img, .rgphoto_edit img { - /*display: block;*/ - - transition: all, 0.3s ease; - -webkit-transition: all, 0.3s ease; - -moz-transition: all, 0.3s ease; - } -.rgcustom_album .custom_albumname { - font-size: 1.25em; - /*line-height: ;*/ - margin: 6px 0; - display: block; - height: 45px; - overflow: hidden; - transition: background 0.3s ease; - -webkit-transition: background 0.3s ease; - -moz-transition: background 0.3s ease; - -ms-transition: background 0.3s ease; - } -.rgcustom_album a:hover img { - opacity: 0.85; - } -.rgcustom_album .categoryname {} -.rgcustom_album .tagnames { - display: block; - margin-top: 8px; - padding-top: 8px; - line-height: 22px; - height: 22px; - overflow: hidden; - border-top: solid 1px #ccc; - color: #666; -} - -.taglist { - padding: 10px 0; -} -.taglist_title { - font-size: 1.5em; - margin: 0 0 10px 0; -} -.taglist ul { - padding: 10px 0; - border-top: solid 1px #ddd; - overflow: hidden; -} -.taglist li { - float: left; - margin: 0 8px 8px 0; -} - -.rgp .rgtitle { margin: 0 0 10px 0; } - - -/* Ruling Slide */ -.rslide { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; - background: #222; - clear: both; - /*z-index: 99;*/ - min-height: 250px; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - } -.rslide.fullscreen { position: fixed; z-index: 99; } -.rslide.fullscreen .comp img{ - width: auto; -} -.rslideinside { - } -.comp { - width: 100%; - height: auto; - overflow: hidden; - position: relative; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - } -.comp img{ display: block; width: 100%; height: auto; margin: 0 auto; cursor: pointer; min-height: 250px; } -.comp .full{ width: auto; height: auto; max-width: 100%; max-height: 100%; } -.rslidenav { - position: absolute; - top: 50%; - left: 0; - right: 0; - margin-top: -35px; - } -.rslidenav a { - position: absolute; - display: block; - width: 30px; - height: 40px; - overflow: hidden; - text-indent: -999px; - background: #000 0 center url(../../../assets/custom_gallery/slidenav.png) no-repeat; - background: rgba(0,0,0,0.9) 0 0 url(../../../assets/custom_gallery/slidenav.png) no-repeat; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - } -.rslidenav a:hover { - background-color: #fff; - background-color: rgba(255,255,255,0.9); - } -.rslidenav .navP { left: 0; border-radius: 0 4px 4px 0; background-position: 0 -40px; } -.rslidenav .navN { right: 0; border-radius: 4px 0 0 4px; background-position: -30px 0; } -.rslidenav a.navP:hover { background-position: -30px -40px; } -.rslidenav a.navN:hover { background-position: 0 0; } -.slidectrl { - position: absolute; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 30px; - background: #000 left top url(../../../assets/custom_gallery/slidetitlebg.png) repeat-x; - background: rgba(0,0,0,0.9) left top url(../../../assets/custom_gallery/slidetitlebg.png) repeat-x; - /*z-index: 999;*/ - } -.slidectrl a { - display: block; - float: right; - text-indent: -9999px; - overflow: hidden; - width: 30px; - height: 30px; - background: transparent 0 0 url(../../../assets/custom_gallery/slideui.gif) no-repeat; - border-left: solid 1px #222; - } -.slidectrl a.togglelist { background-position: 0 -30px; } -.slidectrl a.togglescreen { background-position: 0 -90px; } -.slidectrl a.toinline { background-position: -30px 0; } -.slidectrl a.sharebt { background-position: -30px -30px; } -.slidectrl a.browserfullscreen { display:none;} -.slidectrl a.slidestop { background-position: 0 -60px; } -.fullscreen .slidectrl a.togglescreen { background-position: -30px -90px; } -.browserFullScreen .slidectrl a.browserfullscreen { background-position: -30px 0; } -.browserFullScreen .togglescreen { display: none; } -.slideinfo { - height: 30px; - line-height: 30px; - color: #fff; - font-size: 13px; - overflow: hidden; - } -.slideinfo .info { padding: 0 0 0 6px; text-transform: uppercase; } -.slideinfo span.info { color: #ccc; text-transform: none; } - -.slidelist { - position: absolute; - bottom: 30px; - z-index: 98; - width: 100%; - height: 0; - overflow: auto; - overflow-x: hidden; - background: transparent 0 0 url(../../../assets/custom_gallery/slidelistbg.png); - } -.slidelist ul { - margin: 0 auto; - padding: 10px 0 10px 10px; - list-style: none; - } -.slidelist li { - display: inline-block; - margin: 0 10px 10px 0; - } -.slidelist a { - border: solid 2px #fff; - display: block; - width: 120px; - height: 96px; - position: relative; - - box-shadow: 0 0 6px rgba(0,0,0,0.7); - -webkit-box-shadow: 0 0 6px rgba(0,0,0,0.7); - -moz-box-shadow: 0 0 6px rgba(0,0,0,0.7); - -ms-box-shadow: 0 0 6px rgba(0,0,0,0.7); - } -.slidelist a.playall { - border: none; - width: 80px; - height: 32px; - margin: 31px 0 0 22px; - background: transparent 0 0 url(../../../assets/custom_gallery/playall.png) no-repeat; - - box-shadow: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - -ms-box-shadow: none; - } -.slidelist a.playall:hover { background-position: 0 -32px; } -#li_play_all { width: 124px; height: 94px; } -.slidelist img { - margin: 0; - background: #fff; - display: block; - - transition: all 0.2s ease; - -webkit-transition: all 0.2s ease; - -moz-transition: all 0.2s ease; - -ms-transition: all 0.2s ease; - } -.slidelist a:hover img { - padding: 4px; - margin: -4px; - } - -.dm { - background: #fff; - border: solid 1px #a4a4a4; - border-right-color: #666; - position: absolute; - overflow: hidden; - padding: 2px 0; - display: none; - - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - } -.dm ul { margin: 0; padding: 0; list-style: none !important; } -.dm li { - margin: 0; - padding: 0; - border-bottom: solid 1px #ccc; - list-style: none !important; - } -.dm li a { - display: block; - padding: 6px 10px; - font-size: 13px; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - } -.dm li a:hover { background: #eee; } - - - -/* orbit style implementation */ -#orbit_custom_gallery { - margin: 0 -10px 30px -10px; -} \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/custom_gallery_old.css b/custom_gallery/app/assets/stylesheets/custom_gallery_old.css deleted file mode 100644 index 021fa5e..0000000 --- a/custom_gallery/app/assets/stylesheets/custom_gallery_old.css +++ /dev/null @@ -1,564 +0,0 @@ -.rg, .rgp { - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; -} -.rg input, .rgp input, .rg textarea, .rgp textarea { - resize: none; - margin: 0; - display: block; - font-size: 13px; - } -.rgp textarea { overflow: auto; } -.rg a, .rgp a { - text-decoration: none; - outline: none; - } -.rg a:hover { } - -/*.rg img { display: block; border: none;}*/ - -.rgmask { background: #000; width: 100%; position: fixed; top: 0; left: 0; } - -.rgui { - display: inline-block; - cursor: pointer; - } -.rghead, .rgbody { overflow: hidden; } -.rghead { - border-bottom: solid 1px #ccc; - padding: 10px 0; - background: #fff; - } -.rgtitle { - color: #333; - text-shadow: 0 1px 0 #ddd; - font-size: 2em; - padding: 0 8px; - } -.rgbody { - - } -.rgfn { overflow: hidden; padding: 4px 10px; } -.rgcustom_album, .rgphoto { float: left; margin: 0 10px 24px 0; } -.rgcustom_album { - padding: 16px; - margin: 0 8px 8px 0; - border: solid 1px #ccc; - width: 300px; - height: 120px; - border-radius: 4px; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; -} -.rgcustom_album > a { - display: block; - float: left; - margin-right: 10px; -} -.rgcustom_album:hover { - box-shadow: 0 0 6px rgba(0,0,0,0.2); -} -.rgcustom_album img { - transition: all, 0.5s ease; - -webkit-transition: all, 0.5s ease; - -moz-transition: all 0.5s ease; - -ms-transition: all, 0.5s ease; - } -.rgphoto { } -.rgphoto a { - display: block; - padding: 4px; - border: solid 1px #ddd; - background-color: #fff; - border-radius: 4px; - transition: all, 0.3s ease; - -webkit-transition: all, 0.3s ease; - -moz-transition: all, 0.3s ease; -} -.rgphoto a:hover { - border-color: #999; - box-shadow: 0 3px 6px rgba(0,0,0,0.2); -} -.rgphoto img, .rgphoto_edit img { - /*display: block;*/ - border-radius: 3px; - transition: all, 0.3s ease; - -webkit-transition: all, 0.3s ease; - -moz-transition: all, 0.3s ease; - } -.rgcustom_album .custom_albumname { - font-size: 18px; - padding: 6px 0; - display: block; - transition: background 0.3s ease; - -webkit-transition: background 0.3s ease; - -moz-transition: background 0.3s ease; - -ms-transition: background 0.3s ease; - } -.rgcustom_album a:hover img { - opacity: 0.85; - } - -.rgp .rgtitle { margin: 0 0 10px 0; } - -/* Photo Edit */ -.custom_albumname_edit label, .custom_albumname_edit .rginput, .rgphoto_edit > a, .rgphoto_edit .rginput { float: left; } -.rgphoto_edit, .custom_albumname_edit { - clear: both; - overflow: hidden; - margin-bottom: 10px; -} -.custom_albumname_edit label { - width: 150px; - margin: 0 10px 0 0; - text-align: right; - padding: 0; - line-height: 24px; -} -.custom_albumname_edit .rginput { } -.rgphoto_edit img { margin: 0 10px 10px 0; } -.rgphoto_edit .rginput { margin-right: 10px; } -.rgphoto_edit .edit_fn { float: left; margin-bottom: 10px; } -.rgphoto_edit .edit_fn .bt-dels { } - -/* Delete List */ -.rglist { overflow: hidden; padding: 10px 0; } -.list { table-layout:fixed; width: 100%; margin: 0 0 12px 0; } -.list thead th { padding: 8px 4px; font-size: 30px; font-weight: bold; } -.list th img { width: 60px; height: 45px; } -.list .photoname { padding-left: 6px; } -.list .photofn { padding-right: 4px; } -.list .photofn a { float: right; margin-left: 4px; display: block; } -.list th { padding: 4px 0 4px 4px; } -.list tbody th, .list tbody td { border-bottom: solid 1px #ccc; } -.list .odd th, .list .odd td { background: #f6f6f6; } -.list .c1 { width: 64px; } -.list .c3 { width: 40px; } - -/* Ruling Slide */ -.rslide { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; - background: #222; - clear: both; - /*z-index: 99;*/ - min-height: 250px; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - } -.rslide.fullscreen { position: fixed; z-index: 99; } -.rslideinside { - /* - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; - */ - } -.comp { - width: 100%; - height: auto; - overflow: hidden; - position: relative; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - } -.comp img{ display: block; width: auto; height: auto; margin: 0 auto; cursor: pointer; min-height: 250px; } -.comp .full{ width: auto; height: auto; max-width: 100%; max-height: 100%; } -.rslidenav { - position: absolute; - top: 50%; - left: 0; - right: 0; - margin-top: -35px; - } -.rslidenav a { - position: absolute; - display: block; - width: 30px; - height: 40px; - overflow: hidden; - text-indent: -999px; - background: #000 0 center url(../../../assets/custom_gallery/slidenav.png) no-repeat; - background: rgba(0,0,0,0.9) 0 0 url(../../../assets/custom_gallery/slidenav.png) no-repeat; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - } -.rslidenav a:hover { - background-color: #fff; - background-color: rgba(255,255,255,0.9); - } -.rslidenav .navP { left: 0; border-radius: 0 4px 4px 0; background-position: 0 -40px; } -.rslidenav .navN { right: 0; border-radius: 4px 0 0 4px; background-position: -30px 0; } -.rslidenav a.navP:hover { background-position: -30px -40px; } -.rslidenav a.navN:hover { background-position: 0 0; } -.slidectrl { - position: absolute; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 30px; - background: #000 left top url(../../../assets/custom_gallery/slidetitlebg.png) repeat-x; - background: rgba(0,0,0,0.9) left top url(../../../assets/custom_gallery/slidetitlebg.png) repeat-x; - /*z-index: 999;*/ - } -.slidectrl a { - display: block; - float: right; - text-indent: -9999px; - overflow: hidden; - width: 30px; - height: 30px; - background: transparent 0 0 url(../../../assets/custom_gallery/slideui.gif) no-repeat; - border-left: solid 1px #222; - } -.slidectrl a.togglelist { background-position: 0 -30px; } -.slidectrl a.togglescreen { background-position: 0 -90px; } -.slidectrl a.toinline { background-position: -30px 0; } -.slidectrl a.sharebt { background-position: -30px -30px; } -.slidectrl a.browserfullscreen { display:none;} -.slidectrl a.slidestop { background-position: 0 -60px; } -.fullscreen .slidectrl a.togglescreen { background-position: -30px -90px; } -.browserFullScreen .slidectrl a.browserfullscreen { background-position: -30px 0; } -.browserFullScreen .togglescreen { display: none; } -.slideinfo { - height: 30px; - line-height: 30px; - color: #fff; - font-size: 13px; - overflow: hidden; - } -.slideinfo .info { padding: 0 0 0 6px; text-transform: uppercase; } -.slideinfo span.info { color: #ccc; text-transform: none; } - -.slidelist { - position: absolute; - bottom: 30px; - z-index: 99; - width: 100%; - height: 0; - overflow: auto; - overflow-x: hidden; - background: transparent 0 0 url(../../../assets/custom_gallery/slidelistbg.png); - } -.slidelist ul { - margin: 0 auto; - padding: 10px 0 10px 10px; - list-style: none; - } -.slidelist li { - display: inline-block; - margin: 0 10px 10px 0; - } -.slidelist a { - border: solid 2px #fff; - display: block; - width: 150px; - height: 120px; - position: relative; - - box-shadow: 0 0 6px rgba(0,0,0,0.7); - -webkit-box-shadow: 0 0 6px rgba(0,0,0,0.7); - -moz-box-shadow: 0 0 6px rgba(0,0,0,0.7); - -ms-box-shadow: 0 0 6px rgba(0,0,0,0.7); - } -.slidelist a.playall { - border: none; - width: 80px; - height: 32px; - margin: 31px 0 0 22px; - background: transparent 0 0 url(../../../assets/custom_gallery/playall.png) no-repeat; - - box-shadow: none; - -webkit-box-shadow: none; - -moz-box-shadow: none; - -ms-box-shadow: none; - } -.slidelist a.playall:hover { background-position: 0 -32px; } -#li_play_all { width: 124px; height: 94px; } -.slidelist img { - margin: 0; - background: #fff; - display: block; - - transition: all 0.2s ease; - -webkit-transition: all 0.2s ease; - -moz-transition: all 0.2s ease; - -ms-transition: all 0.2s ease; - } -.slidelist a:hover img { - padding: 4px; - margin: -4px; - } - -.dm { - background: #fff; - border: solid 1px #a4a4a4; - border-right-color: #666; - position: absolute; - overflow: hidden; - padding: 2px 0; - display: none; - - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - } -.dm ul { margin: 0; padding: 0; list-style: none !important; } -.dm li { - margin: 0; - padding: 0; - border-bottom: solid 1px #ccc; - list-style: none !important; - } -.dm li a { - display: block; - padding: 6px 10px; - font-size: 13px; - - transition: all 0.3s ease; - -webkit-transition: all 0.3s ease; - -moz-transition: all 0.3s ease; - -ms-transition: all 0.3s ease; - } -.dm li a:hover { background: #eee; } - -/* Ruling CustomGallery UI */ -.rgbt { - padding: 0 0 0 32px; - vertical-align: top; - - text-shadow: 0 1px 0 #fff; - -webkit-text-shadow: 0 1px 0 #fff; - -moz-text-shadow: 0 1px 0 #fff; - -ms-text-shadow: 0 1px 0 #fff; - } -.rgbt span { - padding: 0 12px 0 8px; - display: inline-block; - line-height: 30px; - height: 32px; - font-size: 14px; - } - -.rgbtsg { - padding: 6px; - } -.rgphoto_edit .rgbtsg.active { display: inline-block; } -.bt-finish { display: block; float: right; clear: both; } -.bt-addnew { - margin: 0 auto; - width: 98px; - height: 100px; - display: block; - } -.bt-next{ - background-position: 0 -258px; - display: block; - float: right; - clear: both; - } -.bt-next:hover { background-position: 0 -448px; } -.bt-next:active { background-position: 0 -638px; } -.bt-close { - position: absolute; - right: 6px; - top: 6px; - } - - -.inputui { - margin: 0 0 8px 0; - } -.inputui span { - padding: 0 4px 0 0; - display: block; - } -.rginput { max-width: 400px; } -.rginput input, .rginput textarea { color: #999; } -.rginput.focus input, .rginput.focus textarea { color: #333; } - -.rgih26 { width: 208px; } -.rgih26 span { } -.rgih26 input { width: 356px; } -.rgih26.focus { } -.rgih26.focus span { } -.rgih68 { width: 396px; } -.rgih68 span { padding: 3px 4px 3px 0; } -.rgih68 textarea { width: 392px; height: 62px; } -.rgih68.focus { } -.rgih68.focus span { } -.rgih98 { width: 396px; } -.rgih98 span { } -.rgih98 textarea { width: 356px; height: 110px; } -.rgih98.focus { } -.rgih98.focus span { } - -.w380 { width: 386px; } - -#imgholder { overflow: hidden; } - -/* upload panel */ -#upload_panel_holder { - display: none; - margin: 16px 0 0 0; - clear: both; - float: right; - width: 100%; -} -#upload_panel { - background-color: #ddd; -} - -/* tag panel */ -#tag_panel { - position: fixed; - right: -200px; - top: 31px; - width: 200px; - min-height: 100px; - border-left: solid 1px #ccc; - background-color: #fff; -} -#tag_panel .scrollbar { - right: 0px; - top: 0px; - width: 9px; -} -#tag_panel .viewport { - height: 100%; -} - -.tag_list { - margin: 0; - padding: 0; -} -.tag_list li { - padding: 4px 6px; - border-top: solid 1px #f6f6f6; -} -.tag_list li:first-child { - border: 0; -} -.tag_list li:hover { - background-color: #08c; -} -.tag_list li:hover label { - color: #fff; -} -.tag_list input[type=checkbox], .tag_list label { - display: inline-block; - vertical-align: middle; - text-transform: capitalize; - margin: 0; -} -.tag_list label { - padding: 0 6px; -} -.tag_search { - position: absolute; - left: -1px; - bottom: -30px; - width: 200px; - height: 32px; - background-color: #f5f5f5; - border-left: solid 1px #ccc; - border-top: solid 1px #ddd; -} -.tag_search input[type=text] { - box-shadow: none; - width: 92px; - height: 25px; - line-height: 25px; - padding: 3px 6px 3px 24px; - border: 0; - border-top: solid 1px #fff; -} -.tag_search input[type=text]:focus { - background-color: #fff; -} -.tag_search .icon-search { - position: absolute; - left: 6px; - top: 50%; - margin-top: -7px; -} -#tag_panel .tag_save { - position: absolute; - right: 0; - bottom: 0; - height: 31px; - border-left: solid 1px #ccc; - background-color: #fff; - padding: 2px 4px 0 4px; -} - - -/* orbit style implementation */ -#orbit_custom_gallery { - margin-bottom: 30px; -} -#orbit_custom_gallery .nav-tabs, #orbit_custom_gallery .tab-pane { - margin-left: 8px; - margin-right: 8px; -} -.tab_content .tab-pane{ - display: none; -} -.tab_content .active{ - display: block; -} -#orbit_custom_gallery .btn { margin: 0; } -#orbit_custom_gallery .btn i { margin-right: 4px; } -#orbit_custom_gallery .rgfn .btn { - margin-left: 8px; -} -#orbit_custom_gallery .form-actions { background-color: whiteSmoke; } - -.o_custom_gallery .tagnames { - display: block; - margin-top: 6px; -} -.o_custom_gallery .label-tags { - display: inline-block; - margin: 0 6px 6px 0; -} - -.o_custom_gallery .rgbody, .o_custom_album .rgbody { - padding: 10px 8px; -} - -#categories .add-custom_album .control-label { - text-align: left; - width: 100px; - padding-left: 12px; - padding-right: 12px; -} -.o_custom_album_edit form { - margin-left: 8px; -} - -#loading{ - background: #fff 0 center url("../../../assets/loading.gif") no-repeat; - height: 16px; - margin: auto; - width: 220px; -} diff --git a/custom_gallery/app/assets/stylesheets/custom_theater.css b/custom_gallery/app/assets/stylesheets/custom_theater.css deleted file mode 100644 index 9bc8102..0000000 --- a/custom_gallery/app/assets/stylesheets/custom_theater.css +++ /dev/null @@ -1,536 +0,0 @@ -@import url(https://fonts.googleapis.com/css?family=Roboto); - -/* Reset and basic styles */ - -body { - overflow-x: hidden; -} - -*, -*:before, -*:after { - box-sizing: border-box; -} - -.custom_gallery-mode-on { - /*overflow-y: hidden;*/ -} - - -/* CustomGallery */ - -#custom_gallery-theater-stage { - display: none; -} - -#custom_gallery-theater-stage > .custom_gallery { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: #000; - z-index: 2000; -} - -.custom_gallery-loader { - padding: 10px; - position: absolute; - display: none; - left: 50%; - top: 10px; - -webkit-transform: translate(-50%, 50%); - transform: translate(-50%, 50%); - border-radius: 2px; - z-index: 2000; - background-color: rgba(0, 0, 0, .6); - -webkit-transition: .3s all; - transition: .3s all; -} - -.spinner { - margin: 0 auto; - width: 50px; - height: 20px; - text-align: center; - font-size: 0.625rem; -} - -.spinner > div { - background-color: #e8e8e8; - height: 100%; - width: 4px; - display: inline-block; - -webkit-animation: stretchdelay 1.2s infinite ease-in-out; - animation: stretchdelay 1.2s infinite ease-in-out; -} - -.spinner .rect2 { - -webkit-animation-delay: -1.1s; - animation-delay: -1.1s; -} - -.spinner .rect3 { - -webkit-animation-delay: -1.0s; - animation-delay: -1.0s; -} - -.spinner .rect4 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; -} - -.spinner .rect5 { - -webkit-animation-delay: -0.8s; - animation-delay: -0.8s; -} - -@-webkit-keyframes stretchdelay { - 0%, - 40%, - 100% { - -webkit-transform: scaleY(0.4) - } - 20% { - -webkit-transform: scaleY(1.0) - } -} - -@keyframes stretchdelay { - 0%, - 40%, - 100% { - transform: scaleY(0.4); - -webkit-transform: scaleY(0.4); - } - 20% { - transform: scaleY(1.0); - -webkit-transform: scaleY(1.0); - } -} - -.custom_gallery-actions { - position: absolute; - right: 1rem; - top: 1rem; - cursor: pointer; - background: rgba(255, 255, 255, .7); - border-radius: 2px; - z-index: 2000; -} - -.custom_gallery-actions-btn { - padding: 8px 12px 8px 10px; - display: inline-block; -} - -.custom_gallery-actions-btn:hover { - color: #fff; -} - -.touch .custom_gallery-actions-btn { - padding: 12px 15px 12px 15px; -} - -.custom_gallery-toggle-desc.active { - color: #fff; -} - -.custom_gallery-theme-switch { - border-right: 1px solid rgba(255, 255, 255, .2); - border-left: 1px solid rgba(255, 255, 255, .2); -} - -.custom_gallery-close { - color: #000; -} - -.touch .image-container { - height: 100%; - padding-bottom: 150px; - z-index: 800; -} - -.custom_gallery-image { - position: fixed; - left: 50%; - top: 50%; - width: 60%; - height: auto; - cursor: pointer; -} - -.no-touch .custom_gallery-image { - -webkit-transition: .3s all; - transition: .3s all; -} - -.gal-prev { - display: none; - left: 0; - -webkit-transform: translate(-95%, -50%); - transform: translate(-95%, -50%); -} - -.gal-prev:hover { - -webkit-transform: translate(-94%, -50%); - transform: translate(-94%, -50%); -} - -.gal-next { - display: none; - left: auto; - right: 0; - -webkit-transform: translate(95%, -50%); - transform: translate(95%, -50%); -} - -.gal-next:hover { - -webkit-transform: translate(94%, -50%); - transform: translate(94%, -50%); -} - -.gal-inactive { - -webkit-transition: .3s all; - transition: .3s all; - opacity: .3; -} - -.gal-inactive:hover { - opacity: 1; -} - -.gal-active { - display: none; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} - - -/* Thumbnails */ - -.custom_gallery-thumb-toggle { - position: absolute; - bottom: -1000px; -} - -.custom_gallery-thumb-wrap { - overflow-y: hidden; - overflow-x: hidden; - list-style: none; - margin: 0 auto; - padding: 10px 0; - text-align: center; - white-space: nowrap; - position: absolute; - left: 50%; - bottom: 0; - -webkit-transition: .3s all; - transition: .3s all; -} - -.custom_gallery-item { - margin-right: 1em; - display: inline-block; -} - -.custom_gallery-item.active { - border-radius: 2px; - border-radius: 0.125rem; - border: 5px solid #fff; -} - -.custom_gallery-thumb { - width: 50px; - height: 50px; - opacity: .5; - -webkit-transition: .3s opacity; - transition: .3s opacity; -} - -.custom_gallery-thumb:hover { - opacity: 1; -} - -.custom_gallery-thumb-container { - height: 80px; - position: fixed; - left: 0; - bottom: 0; - width: 100%; - background: #1b1b1b; -} - -.custom_gallery-thumb-navs { - display: none; -} - -.custom_gallery-thumb-navs.show { - display: block; -} - -.custom_gallery-thumb-nav { - position: absolute; - cursor: pointer; - font-size: 1.4rem; - color: rgba(255, 255, 255, .7); - background: #222; - height: 80px; - line-height: 80px; - width: 50px; - text-align: center; - z-index: 900; -} - -.custom_gallery-thumb-nav:hover { - color: #fff; -} - -.custom_gallery-thumb-prev { - left: 0; -} - -.custom_gallery-thumb-next { - right: 0; -} - -.active .custom_gallery-thumb { - opacity: 1; -} - -.custom_gallery-img-desc { - color: #000; - line-height: 1.7; - padding: 1rem 1.5rem; - font-family: 'Roboto', sans-serif; - font-size: 0.8125rem; - position: fixed; - top: 4rem; - left: 0; - right: 0; - margin: auto; - border-radius: 2px; - width: 90%; - background-color: #bdbdbd; - opacity: 0; - -webkit-transition: .3s all; - transition: .3s all; - z-index: 1000; -} - -.custom_gallery-img-desc p { - overflow: hidden; - height: 90px; -} - -.custom_gallery-img-desc:empty { - display: none; -} - -.custom_gallery-img-desc.active { - opacity: 1; -} - - -/* White theme */ - -.theme-white #custom_gallery-theater-stage > .custom_gallery { - background-color: #fffdf7; -} - -.theme-white .custom_gallery-actions { - background-color: #eee; - border: 1px solid #ddd; -} - -.theme-white .custom_gallery-toggle-desc.active { - color: #ff4444; -} - -.theme-white .custom_gallery-theme-switch { - border-right: 1px solid #ddd; - border-left: 1px solid #ddd; -} - -.theme-white .custom_gallery-thumb-toggle, -.theme-white .custom_gallery-thumb-toggle:before, -.theme-white .custom_gallery-thumb-toggle:after { - color: #777; - border-color: #aaa; -} - -.theme-white .custom_gallery-thumb-container { - background-color: #e2e2e2; - border-top: 1px solid #c7c7c7; -} - -.theme-white .custom_gallery-actions-btn { - color: #777; -} - -.theme-white .custom_gallery-actions-btn:hover { - color: #ff4444; -} - -.theme-white .custom_gallery-item.active { - border-color: #ff4444; -} - -.theme-white .custom_gallery-thumb-nav { - color: #777; - background-color: #eee; -} - -.theme-white .custom_gallery-thumb-prev { - border-right: 1px solid #c7c7c7; -} - -.theme-white .custom_gallery-thumb-next { - border-left: 1px solid #c7c7c7; -} - -.theme-white .custom_gallery-thumb-nav:hover { - color: #ff4444; -} - -.theme-white .custom_gallery-img-desc { - background-color: #eee; -} - -.theme-white .custom_gallery-loader { - background-color: #777; -} - -.theme-white .spinner > div { - color: #ff4444; -} - -@media screen and (max-width: 768px) { - .gal-prev { - -webkit-transform: translate(-101%, -50%); - transform: translate(-101%, -50%); - } - .gal-next { - -webkit-transform: translate(101%, -50%); - transform: translate(101%, -50%); - } - .custom_gallery-thumb-toggle { - bottom: 50px; - left: 0; - color: #fff; - width: 100%; - text-align: center; - -webkit-transition: .1s all; - transition: .1s all; - } - .custom_gallery-thumb-toggle.up { - bottom: 96px; - } - .custom_gallery-thumb-toggle:before { - content: ""; - position: absolute; - top: 50%; - left: 10%; - margin: auto; - width: 38%; - border-top: 1px solid rgba(255, 255, 255, .2); - height: 1px; - } - .custom_gallery-thumb-toggle:after { - content: ""; - position: absolute; - top: 50%; - right: 10%; - margin: auto; - width: 38%; - border-top: 1px solid rgba(255, 255, 255, .2); - height: 1px; - } - .custom_gallery-thumb-container { - bottom: -1000px; - -webkit-transition: .1s all; - transition: .1s all; - } - .custom_gallery-thumb-container.show { - bottom: 0; - } -} - -/* CSS for button */ - -@media(max-width: 769px){ - .custom_gallery .custom_gallery-thumb-toggle{ - display: none; - } - } - -/* 相本裡的左右控制鍵 */ -#theaterPlayButton,#theaterStopButton{ - left:30%; -} -#theaterStopButton{ - -webkit-text-stroke: 0.02em #ffbb35; - text-shadow: 0em 0em 0.2em #ff0000; -} -.theaterButton{ -position: absolute; -text-align: center; -width: 35%; -bottom: 1.8em; -background-color: transparent; -border: none; -color: white; -padding: 0.4em 1em; -text-align: center; -text-decoration: none; -display: inline-block; -font-size: 2.2rem; -margin: 4px 2px; -cursor: pointer; -border-radius: 5px; --webkit-text-stroke: 1px #06a2ff; -text-shadow: 0em 0em 0.2em #8F7; -} - -#theaterNextButton{ -right:0; -} -#theaterPreviousButton{ -left:0; -} - -.show-custom_gallery-2 .custom_gallery-thumb-container{ - overflow: hidden; -} -.show-custom_gallery-2 img.custom_gallery-image{ - position: absolute; -} -.show-custom_gallery-2 .image-container{ - position: relative; - height: 100%; - width: 100%; -} -#custom_gallery-theater-stage > .show-custom_gallery-2.custom_gallery{ - position: relative; - height: 0; - width: 100%; - z-index: unset; - overflow: hidden; -} -.show-custom_gallery-2 .custom_gallery-thumb-container{ - position: absolute; -} -.show-custom_gallery-2 .custom_gallery-image { - top: 42%; -} -.show-custom_gallery-2 .custom_gallery-actions{ - display: none; -} -.show-custom_gallery-2 .custom_gallery-img-desc{ - position: absolute; -} -@media screen and (max-width: 768px){ - .show-custom_gallery-2 .custom_gallery-thumb-container { - bottom: 0px; - } -} \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/filter.css b/custom_gallery/app/assets/stylesheets/filter.css deleted file mode 100644 index 6e76a70..0000000 --- a/custom_gallery/app/assets/stylesheets/filter.css +++ /dev/null @@ -1,84 +0,0 @@ -/* Filter */ -#filter.open { - border-bottom: none; - padding-bottom: 10px; -} -#filter .filter-nav { - margin-bottom: 0px; -} -#filter.open .filter-nav { - margin-bottom: 10px; -} -#filter .filter-nav a { - text-decoration: none; -} -#filter .filter-nav .accordion-group { - border: none; -} -#filter .filter-nav .accordion-group.active { - background-color: #08c; - position: relative; -} -#filter .filter-nav .accordion-group.active a { - color: #FFF; -} -#filter .filter-nav .accordion-group.active:after { - display: block; - height: 0px; - width: 0px; - position: absolute; - bottom: -12px; - left: 50%; - margin-left: -5px; - content: ""; - border-style: solid; - border-width: 0 6px 6px 6px; - border-color: transparent transparent #e5e5e5 transparent; - z-index: 5 -} -#filter .filter-group { - clear: both; - border: none; - margin-bottom: 0px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; - border-radius: 4px; -} -#filter .filter-group .accordion-body { - background-color: #e5e5e5; - border-radius: 3px; -} -#filter .filter-group .accordion-body .filter-clear { - padding: 4px; - border-top: 1px solid #D5D5D5; - text-align: right; - -webkit-box-shadow: inset 0px 1px 0px #ECECEC; - -moz-box-shadow: inset 0px 1px 0px #ECECEC; - -o-box-shadow: inset 0px 1px 0px #ECECEC; - box-shadow: inset 0px 1px 0px #ECECEC; -} -#filter .filter-group .accordion-body .filter-clear a { - text-decoration: none; -} -#filter .filter-group .collapse.in { -} -#filter .filter-group .accordion-inner { - padding: 8px 8px 5px; - /*margin-top: 10px;*/ -} -#filter .filter-group .accordion-inner > .btn { - margin-bottom: 3px; -} - - -/* Responsive */ -@media (max-width: 480px) { - /* Filter */ - #filter .filter-nav { - float: left; - } - #filter .accordion-inner.pagination-right { - text-align: left; - } -} \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/jquery-ui.css b/custom_gallery/app/assets/stylesheets/jquery-ui.css deleted file mode 100644 index 759a187..0000000 --- a/custom_gallery/app/assets/stylesheets/jquery-ui.css +++ /dev/null @@ -1,566 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } -/* - * jQuery UI Accordion 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { width: 100%; } -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; } -/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.16 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ -/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } -/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } -/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/ - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } -.ui-widget-content a { color: #222222/*{fcContent}*/; } -.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } -.ui-widget-header a { color: #222222/*{fcHeader}*/; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } - -/* Overlays */ -.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/jquery.fileupload-ui.css b/custom_gallery/app/assets/stylesheets/jquery.fileupload-ui.css deleted file mode 100644 index 71b8d42..0000000 --- a/custom_gallery/app/assets/stylesheets/jquery.fileupload-ui.css +++ /dev/null @@ -1,168 +0,0 @@ -@charset 'UTF-8'; -/* - * jQuery File Upload UI Plugin CSS 5.0.6 - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://creativecommons.org/licenses/MIT/ - */ -body { margin: 0; } -#fileupload { position: relative; } -#fileupload form { margin: 0; } -.fileupload-buttonbar .ui-button input { - position: absolute; - top: 0; - right: 0; - margin: 0; - border: solid transparent; - border-width: 0 0 100px 200px; - opacity: 0; - filter: alpha(opacity=0); - -o-transform: translate(250px, -50px) scale(1); - -moz-transform: translate(-300px, 0) scale(4); - direction: ltr; - cursor: pointer; -} - -.fileinput-button { - overflow: hidden; -} - -/* Fix for IE 6: */ -/**html .fileinput-button { - padding: 2px 0; -}*/ - -/* Fix for IE 7: */ -/**+html .fileinput-button { - padding: 2px 0; -}*/ - -.fileupload-buttonbar { - height: 44px; - border-bottom: none; - background: transparent 0 0 url(../../../assets/custom_gallery/uppt.png) repeat-x; - position: relative; - z-index: 9; - } - -.fileupload-buttonbar .ui-button { - vertical-align: middle; - font-size: 13px; - font-family: mako; - border: none; - margin: 0; - padding: 0; - background: none; - } -.fileupload-buttonbar .ui-button .ui-button-text { - height: 40px; - line-height: 40px; - padding: 0 14px 0 26px; - background: transparent right center url(../../../assets/custom_gallery/upsep.png) no-repeat; - text-shadow: 1px 1px 0 #fff; - } - -.fileupload-content { - border-top-width: 0; - height: 250px; - overflow: auto; - overflow-x:hidden; - background: #FAFAFA center center url(../../../assets/custom_gallery/uploadbg.gif) no-repeat; - position: relative; - margin-top: -2px; - z-index: 2; - } - -.fileupload-content .ui-progressbar { - width: auto; - height: 18px; - } - -.fileupload-content .ui-progressbar-value { - background: url(../../../assets/custom_gallery/pbar-ani.gif); - height: 16px; - margin: 0; - border-left: none; - border-right: none; - border-radius: 6px; - } -.files .ui-progressbar-value { border: none; height: 18px; border-radius: 2px; } -.fileupload-content .fileupload-progressbar { - width: 400px; - margin: -20px 0 0 -202px; - padding: 2px; - background: rgba(0,0,0,0.8); - position: fixed; - top: 50%; - left: 50%; - border: 0; - border-radius: 4px; - box-shadow: 0 2px 3px rgba(0,0,0,0.4); - -webkit-box-shadow: 0 2px 3px rgba(0,0,0,0.4); - -moz-box-shadow: 0 2px 3px rgba(0,0,0,0.4); - -ms-box-shadow: 0 2px 3px rgba(0,0,0,0.4); - } - -.files { - margin: 0; - border-collapse: collapse; - width: 100%; - table-layout:fixed; - font-family: mako; -} - -.files td { - padding: 5px 4px; - border-spacing: 0; - font-size: 13px; - } - -.files img { border: none; width: 80px; } - -.files .name { } - -.files .size { - text-align: right; - white-space: nowrap; - width: 100px; - } -.files .preview { width: 88px; } -/*.files .progress { width: ; }*/ -.files .start { width: 40px; } -.files .cancel { width: 40px; } - -.ui-state-disabled .ui-state-disabled { - opacity: 1; - filter: alpha(opacity=100); -} - -.ui-state-disabled input { - cursor: default; -} -.fileupload-buttonbar .ui-icon { - background: transparent center 0 url(../../../assets/custom_gallery/upicon.png) no-repeat; - height: 16px; - margin: 0; - padding: 12px 0; - top: 0; - } -.ui-icon.ui-icon-plusthick {} -.ui-button:hover .ui-icon.ui-icon-plusthick { background-position: center -40px; } -.ui-icon.ui-icon-circle-arrow-e { background-position: center -80px; } -.ui-button:hover .ui-icon.ui-icon-circle-arrow-e { background-position: center -120px; } -.ui-icon.ui-icon-cancel { background-position: center -160px; } -.ui-button:hover .ui-icon.ui-icon-cancel { background-position: center -200px; } -.ui-icon.ui-icon-trash { background-position: center -240px; } -.ui-button:hover .ui-icon.ui-icon-trash { background-position: center -280px; } - -.files .ui-icon { background: transparent center 0 url(../../../assets/custom_gallery/upicon.png) no-repeat; } -.files .ui-icon.ui-icon-circle-arrow-e { background-position: center -91px; } -.files .ui-button:hover .ui-icon.ui-icon-circle-arrow-e { background-position: center -131px; } -.files .ui-icon.ui-icon-cancel { background-position: center -171px; } -.files .ui-button:hover .ui-icon.ui-icon-cancel { background-position: center -211px; } -.files .ui-icon.ui-icon-trash { background-position: center -251px; } -.files .ui-button:hover .ui-icon.ui-icon-trash { background-position: center -291px; } \ No newline at end of file diff --git a/custom_gallery/app/assets/stylesheets/jquery.minicolors.css b/custom_gallery/app/assets/stylesheets/jquery.minicolors.css deleted file mode 100644 index a281101..0000000 --- a/custom_gallery/app/assets/stylesheets/jquery.minicolors.css +++ /dev/null @@ -1,432 +0,0 @@ -.minicolors { - position: relative; -} - -.minicolors-sprite { - background-image: url(jquery.minicolors.png); -} - -.minicolors-swatch { - position: absolute; - vertical-align: middle; - background-position: -80px 0; - border: solid 1px #ccc; - cursor: text; - padding: 0; - margin: 0; - display: inline-block; -} - -.minicolors-swatch-color { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.minicolors input[type=hidden] + .minicolors-swatch { - width: 28px; - position: static; - cursor: pointer; -} - -.minicolors input[type=hidden][disabled] + .minicolors-swatch { - cursor: default; -} - -/* Panel */ -.minicolors-panel { - position: relative; - width: 173px; - background: white; - border: solid 1px #CCC; - box-shadow: 0 0 20px rgba(0, 0, 0, .2); - z-index: 99999; - box-sizing: content-box; - display: none; -} - -.minicolors-panel.minicolors-visible { - display: block; -} - -/* Panel positioning */ -.minicolors-position-top .minicolors-panel { - top: -154px; -} - -.minicolors-position-right .minicolors-panel { - right: 0; -} - -.minicolors-position-bottom .minicolors-panel { - top: auto; -} - -.minicolors-position-left .minicolors-panel { - left: 0; -} - -.minicolors-with-opacity .minicolors-panel { - width: 194px; -} - -.minicolors .minicolors-grid { - position: relative; - top: 1px; - left: 1px; /* LTR */ - width: 150px; - height: 150px; - margin-bottom: 2px; - background-position: -120px 0; - cursor: crosshair; -} -[dir=rtl] .minicolors .minicolors-grid { - right: 1px; -} - -.minicolors .minicolors-grid-inner { - position: absolute; - top: 0; - left: 0; - width: 150px; - height: 150px; -} - -.minicolors-slider-saturation .minicolors-grid { - background-position: -420px 0; -} - -.minicolors-slider-saturation .minicolors-grid-inner { - background-position: -270px 0; - background-image: inherit; -} - -.minicolors-slider-brightness .minicolors-grid { - background-position: -570px 0; -} - -.minicolors-slider-brightness .minicolors-grid-inner { - background-color: black; -} - -.minicolors-slider-wheel .minicolors-grid { - background-position: -720px 0; -} - -.minicolors-slider, -.minicolors-opacity-slider { - position: absolute; - top: 1px; - left: 152px; /* LTR */ - width: 20px; - height: 150px; - background-color: white; - background-position: 0 0; - cursor: row-resize; -} -[dir=rtl] .minicolors-slider, -[dir=rtl] .minicolors-opacity-slider { - right: 152px; -} - -.minicolors-slider-saturation .minicolors-slider { - background-position: -60px 0; -} - -.minicolors-slider-brightness .minicolors-slider { - background-position: -20px 0; -} - -.minicolors-slider-wheel .minicolors-slider { - background-position: -20px 0; -} - -.minicolors-opacity-slider { - left: 173px; /* LTR */ - background-position: -40px 0; - display: none; -} -[dir=rtl] .minicolors-opacity-slider { - right: 173px; -} - -.minicolors-with-opacity .minicolors-opacity-slider { - display: block; -} - -/* Pickers */ -.minicolors-grid .minicolors-picker { - position: absolute; - top: 70px; - left: 70px; - width: 12px; - height: 12px; - border: solid 1px black; - border-radius: 10px; - margin-top: -6px; - margin-left: -6px; - background: none; -} - -.minicolors-grid .minicolors-picker > div { - position: absolute; - top: 0; - left: 0; - width: 8px; - height: 8px; - border-radius: 8px; - border: solid 2px white; - box-sizing: content-box; -} - -.minicolors-picker { - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 2px; - background: white; - border: solid 1px black; - margin-top: -2px; - box-sizing: content-box; -} - -/* Swatches */ -.minicolors-swatches, -.minicolors-swatches li { - margin: 5px 0 3px 5px; /* LTR */ - padding: 0; - list-style: none; - overflow: hidden; -} -[dir=rtl] .minicolors-swatches, -[dir=rtl] .minicolors-swatches li { - margin: 5px 5px 3px 0; -} - -.minicolors-swatches .minicolors-swatch { - position: relative; - float: left; /* LTR */ - cursor: pointer; - margin:0 4px 0 0; /* LTR */ -} -[dir=rtl] .minicolors-swatches .minicolors-swatch { - float: right; - margin:0 0 0 4px; -} - -.minicolors-with-opacity .minicolors-swatches .minicolors-swatch { - margin-right: 7px; /* LTR */ -} -[dir=rtl] .minicolors-with-opacity .minicolors-swatches .minicolors-swatch { - margin-right: 0; - margin-left: 7px; -} - -.minicolors-swatch.selected { - border-color: #000; -} - -/* Inline controls */ -.minicolors-inline { - display: inline-block; -} - -.minicolors-inline .minicolors-input { - display: none !important; -} - -.minicolors-inline .minicolors-panel { - position: relative; - top: auto; - left: auto; /* LTR */ - box-shadow: none; - z-index: auto; - display: inline-block; -} -[dir=rtl] .minicolors-inline .minicolors-panel { - right: auto; -} - -/* Default theme */ -.minicolors-theme-default .minicolors-swatch { - top: 5px; - left: 5px; /* LTR */ - width: 18px; - height: 18px; -} -[dir=rtl] .minicolors-theme-default .minicolors-swatch { - right: 5px; -} -.minicolors-theme-default .minicolors-swatches .minicolors-swatch { - margin-bottom: 2px; - top: 0; - left: 0; /* LTR */ - width: 18px; - height: 18px; -} -[dir=rtl] .minicolors-theme-default .minicolors-swatches .minicolors-swatch { - right: 0; -} -.minicolors-theme-default.minicolors-position-right .minicolors-swatch { - left: auto; /* LTR */ - right: 5px; /* LTR */ -} -[dir=rtl] .minicolors-theme-default.minicolors-position-left .minicolors-swatch { - right: auto; - left: 5px; -} -.minicolors-theme-default.minicolors { - width: auto; - display: inline-block; -} -.minicolors-theme-default .minicolors-input { - height: 20px; - width: auto; - display: inline-block; - padding-left: 26px; /* LTR */ -} -[dir=rtl] .minicolors-theme-default .minicolors-input { - text-align: right; - unicode-bidi: plaintext; - padding-left: 1px; - padding-right: 26px; -} -.minicolors-theme-default.minicolors-position-right .minicolors-input { - padding-right: 26px; /* LTR */ - padding-left: inherit; /* LTR */ -} -[dir=rtl] .minicolors-theme-default.minicolors-position-left .minicolors-input { - padding-right: inherit; - padding-left: 26px; -} - -/* Bootstrap theme */ -.minicolors-theme-bootstrap .minicolors-swatch { - z-index: 2; - top: 3px; - left: 3px; /* LTR */ - width: 28px; - height: 28px; - border-radius: 3px; -} -[dir=rtl] .minicolors-theme-bootstrap .minicolors-swatch { - right: 3px; -} -.minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch { - margin-bottom: 2px; - top: 0; - left: 0; /* LTR */ - width: 20px; - height: 20px; -} -[dir=rtl] .minicolors-theme-bootstrap .minicolors-swatches .minicolors-swatch { - right: 0; -} -.minicolors-theme-bootstrap .minicolors-swatch-color { - border-radius: inherit; -} -.minicolors-theme-bootstrap.minicolors-position-right > .minicolors-swatch { - left: auto; /* LTR */ - right: 3px; /* LTR */ -} -[dir=rtl] .minicolors-theme-bootstrap.minicolors-position-left > .minicolors-swatch { - right: auto; - left: 3px; -} -.minicolors-theme-bootstrap .minicolors-input { - float: none; - padding-left: 44px; /* LTR */ -} -[dir=rtl] .minicolors-theme-bootstrap .minicolors-input { - text-align: right; - unicode-bidi: plaintext; - padding-left: 12px; - padding-right: 44px; -} -.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input { - padding-right: 44px; /* LTR */ - padding-left: 12px; /* LTR */ -} -[dir=rtl] .minicolors-theme-bootstrap.minicolors-position-left .minicolors-input { - padding-right: 12px; - padding-left: 44px; -} -.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch { - top: 4px; - left: 4px; /* LTR */ - width: 37px; - height: 37px; - border-radius: 5px; -} -[dir=rtl] .minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch { - right: 4px; -} -.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch { - width: 24px; - height: 24px; -} -.minicolors-theme-bootstrap .minicolors-input.input-xs + .minicolors-swatch { - width: 18px; - height: 18px; -} -.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input { - border-top-left-radius: 0; /* LTR */ - border-bottom-left-radius: 0; /* LTR */ -} -[dir=rtl] .input-group .minicolors-theme-bootstrap .minicolors-input { - border-radius: 4px; -} -[dir=rtl] .input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -[dir=rtl] .input-group .minicolors-theme-bootstrap:not(:last-child) .minicolors-input { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -/* bootstrap input-group rtl override */ -[dir=rtl] .input-group .form-control, -[dir=rtl] .input-group-addon, -[dir=rtl] .input-group-btn > .btn, -[dir=rtl] .input-group-btn > .btn-group > .btn, -[dir=rtl] .input-group-btn > .dropdown-toggle { - border: 1px solid #ccc; - border-radius: 4px; -} -[dir=rtl] .input-group .form-control:first-child, -[dir=rtl] .input-group-addon:first-child, -[dir=rtl] .input-group-btn:first-child > .btn, -[dir=rtl] .input-group-btn:first-child > .btn-group > .btn, -[dir=rtl] .input-group-btn:first-child > .dropdown-toggle, -[dir=rtl] .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -[dir=rtl] .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left: 0; -} -[dir=rtl] .input-group .form-control:last-child, -[dir=rtl] .input-group-addon:last-child, -[dir=rtl] .input-group-btn:last-child > .btn, -[dir=rtl] .input-group-btn:last-child > .btn-group > .btn, -[dir=rtl] .input-group-btn:last-child > .dropdown-toggle, -[dir=rtl] .input-group-btn:first-child > .btn:not(:first-child), -[dir=rtl] .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -/* Semantic Ui theme */ -.minicolors-theme-semanticui .minicolors-swatch { - top: 0; - left: 0; /* LTR */ - padding: 18px; -} -[dir=rtl] .minicolors-theme-semanticui .minicolors-swatch { - right: 0; -} -.minicolors-theme-semanticui input { - text-indent: 30px; -} diff --git a/custom_gallery/app/assets/stylesheets/widget_custom_gallery.css b/custom_gallery/app/assets/stylesheets/widget_custom_gallery.css deleted file mode 100644 index c9537eb..0000000 --- a/custom_gallery/app/assets/stylesheets/widget_custom_gallery.css +++ /dev/null @@ -1,70 +0,0 @@ -.widget_custom_gallery { - margin-bottom: 20px; -} -.widget_custom_gallery:after { - display: table; - width: 100%; - content: ''; -} -.widget_custom_gallery ul { - list-style: none; - margin: 0; - padding: 0; -} -.widget_custom_gallery li a { - display: block; -} -.widget_custom_gallery li a img { - height: auto; - display: block; -} - -/* widget 1 */ -.w1 ul { - margin: 0 -1%; -} -.w1 li { - float: left; - margin: 1%; -} -.w1.c2 li { width: 48%; } -.w1.c3 li { width: 31.3333%; } -.w1.c4 li { width: 23%; } -.w1.c5 li { width: 18%; } -.w1.c6 li { width: 14.6666%; } -.w1 li a { - -webkit-transition: opacity 0.3s ease; - -moz-transition: opacity 0.3s ease; - transition: opacity 0.3s ease; -} -.w1 li a:hover { - opacity: 0.8; - position: relative; -} -.w1 li a img { - width: 100%; -} - -/* widget 2 */ -.w2 li { - width: 100%; -} -.w2 li a img { - width: 100%; - height: auto; -} -.w2 li a { - position: relative; - overflow: hidden; - color: #fff; - text-transform: capitalize; -} -.w2 li a .desc { - position: absolute; - bottom: -60px; - opacity: 0; - display: block; - width: 100%; - padding: 5%; - background-color: rgba(8, 166, 255, 0.8); -} \ No newline at end of file diff --git a/custom_gallery/app/controllers/.keep b/custom_gallery/app/controllers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/controllers/admin/custom_galleries_controller.rb b/custom_gallery/app/controllers/admin/custom_galleries_controller.rb deleted file mode 100644 index 0dfeeac..0000000 --- a/custom_gallery/app/controllers/admin/custom_galleries_controller.rb +++ /dev/null @@ -1,673 +0,0 @@ -require 'rubyXL' -class Admin::CustomGalleriesController < OrbitAdminController - include Admin::CustomGalleriesHelper - before_filter :setup_vars - before_action :authenticate_user, :except => "imgs" - before_action :log_user_action - layout :compute_layout - find_tag = Tag.all.select{|value| value.name==I18n.t('custom_gallery.not_show_desc')} - if find_tag.length==0 - module_app_id = ModuleApp.where(:key=>"custom_gallery").first[:_id] - tags = ModuleApp.where(:key=>"custom_gallery").first.tags - tag0 = Tag.new(is_default: false,module_app_ids: [module_app_id]) - tag1 = Tag.new(is_default: false,module_app_ids: [module_app_id]) - nowlocale = I18n.locale - I18n.available_locales.each do |locale| - I18n.locale = locale - tag0.name = I18n.t('custom_gallery.show_desc') - tag1.name = I18n.t('custom_gallery.not_show_desc') - end - I18n.locale = nowlocale - tag0.save - tag1.save - tags << tag0 - tags << tag1 - elsif find_tag.length>1 - show_tags = Tag.all.select{|value| value.name==I18n.t('custom_gallery.show_desc')} - show_tags.each_with_index do |show_tag,index1| - if index1>0 - if show_tag.taggings.count==0 - show_tag.delete - end - end - end - find_tag.each_with_index do |not_show_tag,index1| - if index1>0 - if not_show_tag.taggings.count==0 - not_show_tag.delete - end - end - end - end - def compute_layout - if action_name== 'index' && !params['page_no'].nil? - false - else - 'back_end' - end - end - def get_tag - custom_album = CustomAlbum.find(params['ele_id']) rescue nil - if !custom_album.nil? - text = custom_album.tags.collect do |tag| - "
    • #{tag.name}
    • " - end.join - render :text => text - else - render :text => '' - end - end - def rotate_images - begin - image_ids = params['image_ids'].split(',') - count = image_ids.count - rot_ang = params[:rotate_angle].to_i - variable = CustomAlbumVariable.first - if variable.nil? - variable = CustomAlbumVariable.new - end - variable.finish = false - variable.save! - Thread.new do - variable = CustomAlbumVariable.first - image_ids.each_with_index do |image_id,index| - image = CustomAlbumImage.find(image_id) rescue nil - next if image.nil? - if !(image.custom_album_crops.first.nil?) - w_and_h = image.file.get_w_and_h - cords = image.custom_album_crops.map{|v| [[v.crop_x.to_f,v.crop_y.to_f], - [v.crop_x.to_f,v.crop_y.to_f+v.crop_h.to_f], - [v.crop_w.to_f+v.crop_x.to_f,v.crop_y.to_f], - [v.crop_w.to_f+v.crop_x.to_f,v.crop_y.to_f+v.crop_h.to_f]]}[0] - rot_diff = rot_ang/90 - if (rot_diff) % 2 == 1 - new_w = (w_and_h[1]).to_f - new_h = (w_and_h[0]).to_f - else - new_w = (w_and_h[0]).to_f - new_h = (w_and_h[1]).to_f - end - - rot_times = rot_diff % 4 - deg = (90.0*rot_times/180*Math::PI) - cords = cords.collect do |cord| - x = cord[0]-w_and_h[0].to_f/2 - y = cord[1]-w_and_h[1].to_f/2 - [x*Math.cos(deg)-y*Math.sin(deg)+new_w/2,x*Math.sin(deg)+y*Math.cos(deg)+new_h/2] - end - all_x = cords.collect do |cord| - cord[0] - end - all_y = cords.collect do |cord| - cord[1] - end - image.custom_album_crops.first.update_attributes(crop_x: all_x.min,crop_y: all_y.min,crop_w: all_x.max - all_x.min,crop_h: all_y.max - all_y.min) - end - variable.progress_percent = (index*100.0/count).floor.to_s+'%' - image.file.rotate_ang(rot_ang) - all_version = image.file.versions.map{|k,v| k} - begin - variable.progress_filename = image[:file].to_s - all_version.each do |version| - if !(version.to_s == 'resized' && crop_but_no_backup(image)) - image.file.recreate_versions! version - image.save! - end - end - rescue => e - variable.progress_filename = e.inspect.to_s - puts e.inspect - end - variable.save! - end - variable.finish = true - variable.save! - end - rescue => e - puts e.inspect - end - redirect_to :controller=> 'images' ,:action => 'crop_process' - end - - def save_crop - begin - images = CustomAlbumImage.where(:id.in => Array(params[:id])) - x = params['x'] - y = params['y'] - w = params['w'] - h = params['h'] - cords = x.zip(y,w,h) - count = cords.length - variable = CustomAlbumVariable.first - if variable.nil? - variable = CustomAlbumVariable.new - end - variable.finish = false - variable.save! - Thread.new do - variable = CustomAlbumVariable.first - image_ids= images.pluck(:id) - image_ids.each_with_index do |image_id,index| - image = CustomAlbumImage.find(image_id) - cord = cords[index] - if image.custom_album_crops.first.nil? - image.custom_album_crops.create(crop_x: cord[0],crop_y: cord[1],crop_w: cord[2],crop_h: cord[3]) - else - image.custom_album_crops.first.update_attributes(crop_x: cord[0],crop_y: cord[1],crop_w: cord[2],crop_h: cord[3]) - end - variable.progress_percent = (index*100.0/count).floor.to_s+'%' - all_version = image.file.versions.map{|k,v| k} - begin - #org_fname = image.file.path - #org_extname = File.extname(org_fname) - #org_fname.slice! org_extname - #FileUtils.cp(org_fname + org_extname, org_fname + '_resized' + org_extname) - variable.progress_filename = image[:file].to_s - all_version.each do |version| - if !(version.to_s == 'resized' && crop_but_no_backup(image)) - image.file.recreate_versions! version - image.save! - end - end - rescue => e - variable.progress_filename = e.inspect.to_s - puts e.inspect - end - variable.save! - end - variable.finish = true - variable.save! - end - rescue => e - puts e.inspect - end - redirect_url = "/admin/custom_galleries/crop_process" - render :json => {'href' => redirect_url}.to_json - end - def call_translate - text = params['text'] - render :json => {'translate' => "#{t(text.to_s)}" }.to_json - end - def recreate_image - notalive = ((CustomAlbumVariable.first.notalive.nil? ? true : CustomAlbumVariable.first.notalive) rescue true) - if notalive - if !params['custom_album_id'].to_s.empty? - variable = CustomAlbumVariable.first - if variable.nil? - variable = CustomAlbumVariable.new - end - variable.finish = false - variable.save! - choice_ids = params['custom_album_id'].split(',') - custom_albums = CustomAlbum.where(:id.in => choice_ids) - if !(params['use_default']=='true') - color = params['color_choice'].to_s.empty? ? 'transparent' : params['color_choice'] - custom_albums.each do |custom_album| - if custom_album.custom_album_colors.first.nil? - custom_album.custom_album_colors.create('color' => color) - else - custom_album.custom_album_colors.first.update_attributes('color' => color, 'updated_at' => Time.now) - end - end - end - count = custom_albums.reduce(0){|x,i| i.custom_album_images.count+x} - Thread.new do - i = 0 - custom_album_ids = custom_albums.pluck(:id) - custom_album_ids.each do |custom_album_id| - custom_album = CustomAlbum.find(custom_album_id) rescue CustomAlbum.new() - custom_album_image_ids = custom_album.custom_album_images.pluck(:id) - custom_album_image_ids.each do |image_id| - image = CustomAlbumImage.find(image_id) - error = nil - all_version = image.file.versions.map{|k,v| k} - begin - all_version.each do |version| - if !(version.to_s == 'resized' && crop_but_no_backup(image)) - image.file.recreate_versions! version - image.save! - end - end - rescue => error - end - variable = CustomAlbumVariable.first - variable.progress_percent = (i*100.0/count).floor.to_s+'%' - if !error.nil? - variable.progress_filename = error.inspect.to_s.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?') - sleep(1) - else - variable.progress_filename = image[:file].to_s - end - variable.save! - i+=1 - end - end - variable = CustomAlbumVariable.first - variable.finish = true - variable.save! - end - else - variable = CustomAlbumVariable.first - variable.finish = true - variable.progress_filename = '' - variable.progress_percent = '100%' - variable.save! - end - end - end - def finish_recreate - variable = CustomAlbumVariable.first - variable.progress_percent = '0%' - variable.progress_filename = '' - variable.notalive = true - variable.save! - render :text => '' - end - def recreate_progress - progress_percent = CustomAlbumVariable.first.progress_percent rescue '0%' - progress_filename = CustomAlbumVariable.first.progress_filename rescue '' - finish = CustomAlbumVariable.first.finish rescue false - render :json => {'percent' => progress_percent, 'filename' => progress_filename, 'finish' => finish }.to_json - end - def filter_custom_album - @tags = @module_app.tags - categories = @module_app.categories.enabled - @filter_fields = filter_fields(categories, @tags) - @filter_fields.delete(:status) - custom_albums1 = CustomAlbum.where(:order.in => [nil,-1]).desc(:created_at).with_categories(filters("category")).with_tags(filters("tag")) - custom_albums1 = search_data(custom_albums1,[:name]) - custom_albums2 = CustomAlbum.all.where(:order.ne=>-1).and(:order.ne=>nil).asc(:order).with_categories(filters("category")).with_tags(filters("tag")) - custom_albums2 = search_data(custom_albums2,[:name]) - @fiter_custom_albums = custom_albums1.concat(custom_albums2) - end - def update_custom_album_setting - if params[:custom_album_setting_limit] - params_custom_album_setting = {:limit=>params[:custom_album_setting_limit]} - else - params_custom_album_setting = params.require(:custom_album_setting).permit! - end - CustomAlbumSetting.first.update_attributes(params_custom_album_setting) - redirect_to '/admin/custom_galleries' - end - def setting - @custom_album_setting = CustomAlbumSetting.first - end - def index - custom_album_length = CustomAlbum.where(:custom_module=>params[:custom_module],:bind_uid=>params[:bind_uid]).count - custom_album_sort = CustomAlbum.where(:custom_module=>params[:custom_module],:bind_uid=>params[:bind_uid]).asc(:created_at) - if (custom_album_sort.first.custom_album_colors.first.nil? rescue false) - custom_album_sort.each_with_index do |custom_album| - if custom_album.custom_album_colors.first.nil? - custom_album.custom_album_colors.create('color' => 'transparent') - end - end - end - @url = request.original_fullpath - @limit_count = CustomAlbumSetting.first.limit.to_i - @limit_count = custom_album_length if @limit_count == 0 - if params['page_no'].nil? - @show_script = true - @custom_albums = filter_custom_album.take @limit_count - else - @show_script = false - start = (params['page_no'].to_i - 1)*@limit_count - @custom_albums = filter_custom_album[start...start+@limit_count] - end - if CustomAlbumColor.count!=0 - if CustomAlbumColor.all.desc('updated_at').first[:color] == 'transparent' - @color_save = '' - else - @color_save = CustomAlbumColor.desc('updated_at').first[:color] - end - else - @color_save = 'transparent' - end - @custom_album_configs = CustomAlbumConfig.all - if request.xhr? - render :partial => "custom_albums" - elsif params[:custom_module].blank? || params[:bind_uid].blank? - render "display_enable_modules" - end - end - - def show - @custom_album = CustomAlbum.find(params[:id]) - @images = @custom_album.custom_album_images.where(:order.in => [nil,-1]).desc(:created_at) - images = @custom_album.custom_album_images.where(:order.gt => -1).asc(:order) - @images = @images.concat(images) - image_content = [] - @images.each do |image| - image_content << {"id" => image.id.to_s,"title"=> image.title_translations, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}} - end - @tags = @module_app.tags - @photos_data = {"custom_galleries" => image_content}.to_json - end - - def new - @custom_album = CustomAlbum.new - @tags = @module_app.tags - @categories = @module_app.categories - end - - def create - custom_album = CustomAlbum.new(custom_album_params) - custom_album.save! - custom_module = custom_album.custom_module - bind_uid = custom_album.bind_uid - if custom_module.present? - redirect_to admin_custom_galleries_path + "/#{custom_module}#{bind_uid.present? ? ('-'+bind_uid) : ''}" - else - redirect_to admin_custom_galleries_path - end - end - - def destroy - custom_album = CustomAlbum.find(params[:id]) - custom_module = custom_album.custom_module - bind_uid = custom_album.bind_uid - custom_album.destroy - if custom_module.present? - redirect_to admin_custom_galleries_path + "/#{custom_module}#{bind_uid.present? ? ('-'+bind_uid) : ''}" - else - redirect_to admin_custom_galleries_path - end - end - - def edit - @custom_album = CustomAlbum.find(params[:id]) - if can_edit_or_delete?(@custom_album) - @tags = @module_app.tags - @categories = @module_app.categories - else - render_401 - end - end - - def import - @custom_album = CustomAlbum.find(params[:id]) - end - - def importimages - custom_album = CustomAlbum.find(params[:id]) - workbook = RubyXL::Parser.parse(params["import_file"].tempfile) - sheet = workbook[0] - if sheet.count <= 203 - sheet.each_with_index do |row, i| - next if i < 3 - v = row.cells.first.value rescue nil - next if v.blank? - import_this_image(row, custom_album) - end - redirect_to admin_custom_gallery_path(custom_album.id) - else - redirect_to import_admin_custom_gallery_path(:error => "1") - end - end - - def excel_format - @custom_album = CustomAlbum.find(params[:id]) - respond_to do |format| - format.xlsx { - response.headers['Content-Disposition'] = 'attachment; filename="custom_gallery_import_format.xlsx"' - } - end - end - - def set_cover - if params[:set_cover] == "true" - custom_album = CustomAlbum.find(params[:custom_album_id]) - image = CustomAlbumImage.find(params[:image_id]) - custom_album.update_attributes({:cover_path => image.file.thumb.url, :cover=>params[:image_id]}) - else - custom_album = CustomAlbum.find(params[:custom_album_id]) - custom_album.update_attributes({:cover_path => nil, :cover=>"default"}) - end - render :json =>{"success"=>true}.to_json - end - - def get_photoData_json - @custom_album = CustomAlbum.find(params[:id]) - @images = @custom_album.custom_album_images.where(:order => [nil,-1]).desc(:created_at) - images = @custom_album.custom_album_images.where(:order.gt => -1).asc(:order) - @images = @images.concat(images) - image_content = [] - @images.each do |image| - image_content << {"id" => image.id.to_s,"title"=> image.title_translations, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}} - end - render :json=>{"custom_galleries" => image_content}.to_json - end - - def get_custom_album_json - custom_albums = CustomAlbum.all - output = Array.new - - custom_albums.each do |custom_album| - tag_names = Array.new - - custom_album.tag_ids.each do |tag| - tag_names << get_tags.include?(tag) - end - if custom_album.cover_path - cover_path = custom_album.cover_path - else - cover_path = "/assets/custom_gallery/default.jpg" - end - output << { - custom_album_cover_file: "http://#{request.host_with_port}"+cover_path, - custom_album_name: custom_album.name, - custom_album_tag_names: tag_names, - custom_album_link:"http://#{request.host_with_port}#{panel_custom_gallery_back_end_custom_album_get_imgs_json_path(custom_album)}", - } - end - - render :json=>JSON.pretty_generate(output) - end - - def get_imgs_json - custom_album = CustomAlbum.find(params[:custom_album_id]) - images = custom_album.custom_album_images.all - output = Array.new - - images.each do |image| - tags = Array.new - - image.tag_ids.each do |tag| - tags << get_tags.include?(tag) - end - - if image.file.theater.present? - @image_file = image.file.theater.url - else - @image_file = image.file.url - end - - output << { - image_title: image.title, - image_description: image.description, - image_file: { url: "http://#{request.host_with_port}#{@image_file}", - thumb: "http://#{request.host_with_port}#{image.file.thumb.to_s}"}, - image_tag_names: tags} - end - - render :json=>JSON.pretty_generate(output) - end - - def imgs - @custom_album = CustomAlbum.find(params[:custom_gallery_id]) - @tag_names = Array.new - @images = @custom_album.custom_album_images.asc(:order) - @output = Array.new - @images.each do |values| - @output << { _id: values.id.to_s, - theater_link: admin_image_path(values), - description: values.description, - title: values.title, - file: values.file.as_json[:file], - custom_gallery_custom_album_id: values.custom_album_id, - order: values.order, - tags: values.tags} - end - render :json=>{"images" => @output, "tags" => @custom_album.tags}.to_json - end - - - def upload_process - if CustomAlbumUnprocess.first.upload_success - custom_album_unprocess = Array(CustomAlbumUnprocess.all) - count = custom_album_unprocess.count - Thread.new do - custom_album_unprocess.each_with_index do |un_image,i| - begin - custom_album = CustomAlbumImage.all.select{|value| value.id.to_s == un_image.image_id.to_s}[0] - custom_album.file = un_image.save_var - custom_album.save! - file = un_image.save_var.tempfile - file.close - File.delete file.path - un_image.delete - variable = CustomAlbumVariable.first - variable.progress_filename = custom_album[:file] - variable.progress_percent = ((i+1)*100.0/count).floor.to_s + '%' - variable.save! - rescue => e - puts ['err',un_image.inspect,e.inspect] - un_image.destroy - end - end - variable = CustomAlbumVariable.first - variable.finish = true - variable.save! - end - custom_album_temp = CustomAlbumUnprocess.first - custom_album_temp.upload_success = false - custom_album_temp.save! - end - end - def start_upload_process - custom_album_temp = CustomAlbumUnprocess.first - custom_album_temp.upload_success = true - custom_album_temp.save! - render :json => {}.to_json - end - def init_upload - variable = CustomAlbumVariable.first - if variable.nil? - variable = CustomAlbumVariable.new - end - variable.count = params['all_length'].to_i - variable.finish = false - variable.progress_percent = '0%' - variable.progress_filename = 'processing!!' - variable.notalive = true - variable.save! - render :json => {}.to_json - end - def upload_image - custom_album = CustomAlbum.find(params[:custom_album_id]) - files = params['files'] - custom_album_unprocess = CustomAlbumUnprocess.new() - files.each do |file| - image = custom_album.custom_album_images.new - image.tags = (custom_album.tags rescue []) - if(CustomAlbumVariable.first.count==1 rescue true) - image.file = file - else - custom_album_unprocess.image_id = image.id - custom_album_unprocess.upload_success = false - custom_album_unprocess.save_var = file - custom_album_unprocess.save! - ObjectSpace.undefine_finalizer(file.tempfile) - end - image.save! - end - render :json=>{"files"=>[{}]}.to_json - end - - def last_image_id - custom_album = CustomAlbum.find(params[:custom_albumid]) - lastimage = custom_album.custom_album_images.last - render :json => {"last_image_id" => lastimage.id.to_s}.to_json - end - - def new_images - @custom_album = CustomAlbum.find(params[:custom_album_id]) - if params[:last_image_id].present? - lastimage = CustomAlbumImage.find(params[:last_image_id]) - @newimages = @custom_album.custom_album_images.where(:created_at.gt => lastimage.created_at,:order => -1).desc(:created_at) - else - @newimages = @custom_album.custom_album_images.where(:order => [nil,-1]).desc(:created_at) - end - render :layout=>false - end - - - def images_tags - custom_album = CustomAlbum.find(params[:custom_album_id]) - tags = Array.new - images = custom_album.custom_album_images.all - images.each do |image| - tags << {"id"=>image.id, "tags" => image.tags} - end - render :json=>tags.to_json - end - - def update - custom_album = CustomAlbum.find(params[:id]) - tagsToDestroy = [] - tagsToAdd = [] - new_tags = params[:custom_album][:tags] || [] - old_tags = custom_album.tags.collect{|t| t.id.to_s} - old_tags.each do |tag| - if !new_tags.include?(tag) - tagsToDestroy << tag - end - end - if new_tags != nil - new_tags.each do |tag| - if !old_tags.include?(tag) - tagsToAdd << tag - end - end - end - update_children_image_tag(custom_album,tagsToDestroy,tagsToAdd) - custom_album.update_attributes(custom_album_params) - redirect_to "/admin/custom_galleries/"+custom_album.id.to_s - end - - def update_children_image_tag(custom_album,tagsToDestroy,tagsToAdd) - # tagsToDestroy will contain all tag ids which have to be deleted from the galley_images - # tagsToAdd will contain all tag ids which ve to be added in tall custom_album_images - images = custom_album.custom_album_images - images.each do |image| - image_tags = image.tags.collect{|t| t.id.to_s} - tagsToAdd.each do |tag| - image_tags << tag - end - tagsToDestroy.each do |tag| - if image_tags.include?tag - image_tags.delete(tag) - end - end - image.tags = image_tags - image.save - end - end - - private - def crop_but_no_backup image - fname = image.file.path - extension = File.extname(fname) - base_name = fname.chomp(extension) - base_name += ('_resized'+ extension) - File.file?(base_name) - end - def setup_vars - @module_app = ModuleApp.where(:key=>"custom_gallery").first - end - - def custom_album_params - p = params.require(:custom_album).permit! - p["tags"] = p["tags"] || [] - p - end -end diff --git a/custom_gallery/app/controllers/admin/custom_images_controller.rb b/custom_gallery/app/controllers/admin/custom_images_controller.rb deleted file mode 100644 index b45724b..0000000 --- a/custom_gallery/app/controllers/admin/custom_images_controller.rb +++ /dev/null @@ -1,107 +0,0 @@ -class Admin::CustomImagesController < OrbitAdminController - before_filter :setup_vars - def crop_process - end - def batch_crop - images = params['image_ids'].split(',') - @img = [] - images.each do |image| - @img << CustomAlbumImage.find(image) - end - render 'batch_crop' - end - def edit - @image = CustomAlbumImage.find(params[:id]) - render 'edit_image' - end - def show - @image = CustomAlbumImage.find(params[:id]) - @custom_albumid = @image.custom_album_id - @custom_album = CustomAlbum.find(@custom_albumid) - @images = @custom_album.custom_album_images.asc(:order) - end - - def changeorder - type = params[:type] - if type == "imgholder" - images = params[:imageids] - images.each_with_index do |image, i| - img = CustomAlbumImage.find(image) rescue nil - if !img.nil? - img.order = i - img.save - end - end - elsif type == "orbit_custom_gallery" - custom_albums = params[:imageids] - custom_albums.each_with_index do |custom_albumid, i| - custom_album = CustomAlbum.find(custom_albumid) rescue nil - if !custom_album.nil? - custom_album.order = i - custom_album.save - end - end - end - render :json => {"success" => true}.to_json - end - - def delete_photos - images = params['images'] - images.each do |image| - img = CustomAlbumImage.find(image) - begin - FileUtils.rm_rf(File.dirname(img.file.path)) - rescue => e - puts ["can't delete",e] - end - img.delete - end - if params['delete_cover'] == "true" - custom_album = CustomAlbum.find(params['custom_album_id']) - custom_album.update_attributes(:cover=>"default",:cover_path => nil) - end - render :json =>{"success"=>true}.to_json - end - - def image_tagging - images = params[:image_ids] - tags = params[:tag_ids] || [] - i = nil - images.each do |image| - img = CustomAlbumImage.find(image) - img.tags = tags - img.save - i = img - end - @custom_album = CustomAlbum.find(i.custom_album_id.to_s) - @images = @custom_album.custom_album_images - @image_content = [] - @images.each do |image| - @image_content << {"id" => image.id.to_s, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}} - end - render :json=>{"custom_galleries" => @image_content}.to_json - end - - def update_image - image = CustomAlbumImage.find(params[:image_id]) - image.update_attributes(update_params) - image.save! - @custom_album = CustomAlbum.find(image.custom_album_id.to_s) - @images = @custom_album.custom_album_images - @image_content = [] - @images.each do |image| - @image_content << {"id" => image.id.to_s, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}} - end - render :json=>{"custom_galleries" => @image_content}.to_json - end - - private - - def setup_vars - @module_app = ModuleApp.where(:key=>"custom_gallery").first - end - - def update_params - params.require(:custom_album_image).permit! - end -end \ No newline at end of file diff --git a/custom_gallery/app/controllers/custom_galleries_controller.rb b/custom_gallery/app/controllers/custom_galleries_controller.rb deleted file mode 100644 index d4b0f7f..0000000 --- a/custom_gallery/app/controllers/custom_galleries_controller.rb +++ /dev/null @@ -1,284 +0,0 @@ -class CustomGalleriesController < ApplicationController - - find_tag = Tag.all.select{|value| value.name==I18n.t('custom_gallery.not_show_desc')} - if find_tag.length==0 - module_app_id = ModuleApp.where(:key=>"custom_gallery").first[:_id] - tags = ModuleApp.where(:key=>"custom_gallery").first.tags - tag0 = Tag.new(is_default: false,module_app_ids: [module_app_id]) - tag1 = Tag.new(is_default: false,module_app_ids: [module_app_id]) - nowlocale = I18n.locale - I18n.available_locales.each do |locale| - I18n.locale = locale - tag0.name = I18n.t('custom_gallery.show_desc') - tag1.name = I18n.t('custom_gallery.not_show_desc') - end - I18n.locale = nowlocale - tag0.save - tag1.save - tags << tag0 - tags << tag1 - elsif find_tag.length>1 - show_tags = Tag.all.select{|value| value.name==I18n.t('custom_gallery.show_desc')} - show_tags.each_with_index do |show_tag,index1| - if index1>0 - if show_tag.taggings.count==0 - show_tag.delete - end - end - end - find_tag.each_with_index do |not_show_tag,index1| - if index1>0 - if not_show_tag.taggings.count==0 - not_show_tag.delete - end - end - end - end - - def index - @custom_album_setting = CustomAlbumSetting.first - params = OrbitHelper.params - page = OrbitHelper.page rescue nil - unless page - page = Page.where(url:params['url']).first - end - custom_data_field = page.custom_data_field rescue nil - if custom_data_field.nil? - custom_data_field = {} - elsif custom_data_field["bind_module_app"] - custom_data_field["custom_module"] = custom_data_field["bind_module_app"] - custom_data_field.delete('bind_module_app') - end - custom_album_tp = CustomAlbum.where(custom_data_field).filter_by_categories.filter_by_tags - all_count = custom_album_tp.count - page_data_count = OrbitHelper.page_data_count - no_order_count = custom_album_tp.where(:order.in=>[-1,nil]).count - with_order_count = all_count - no_order_count - with_order_total_pages = (with_order_count.to_f / page_data_count).ceil - custom_albums_with_order = custom_album_tp.asc(:order).where(:order.ne=>-1).and(:order.ne=>nil).to_a rescue [] - page_no = (params[:page_no] || 1).to_i - if page_no < with_order_total_pages - custom_albums_no_order = [] - elsif page_no == with_order_total_pages - if custom_albums_with_order.count == page_data_count - custom_albums_no_order = [] - else - custom_albums_no_order = custom_album_tp.desc(:created_at).where(:order.in=>[-1,nil]).page(nil).per(all_count)[0...(page_data_count - custom_albums_with_order.count)] - end - else - custom_albums_with_order = [] - start_index = (page_data_count - (with_order_count % page_data_count) + page_data_count*(page_no - 1 - with_order_total_pages)) - custom_albums_no_order = custom_album_tp.desc(:created_at).where(:order.in=>[-1,nil]).page(nil).per(all_count)[start_index...(start_index+page_data_count)].to_a - end - custom_albums = custom_albums_with_order.concat(custom_albums_no_order) - custom_album_color_map = CustomAlbumColor.where(:custom_album_id.in=> custom_albums.map{|v| v.id}).pluck(:custom_album_id,:color,:custom_album_card_background_color,:custom_album_card_text_color).map{|v| [v[0],v[1..-1]]}.to_h - custom_galleries = custom_albums.collect do |a| - doc = Nokogiri::HTML(a.description.to_s) - alt_text = doc.text.empty? ? 'custom_gallery image' : doc.text - colors = custom_album_color_map[a.id] - { - "custom_album-name" => a.name, - "custom_album-description" => a.description, - "alt_title" => alt_text, - "link_to_show" => OrbitHelper.url_to_show(a.to_param), - "thumb-src" => a.cover_path || "/assets/custom_gallery/default.jpg", - "custom_album_color" => iterate_data(colors[1],colors[0],@custom_album_setting.custom_album_card_background_color,'transparent'), - "custom_album_card_text_color" => iterate_data(colors[2],@custom_album_setting.custom_album_card_text_color) - } - end - { - "custom_albums" => custom_galleries, - "extras" => {"widget-title"=>"CustomGallery"}, - "total_pages" => custom_album_tp.total_pages - } - end - def show - @custom_album_setting = CustomAlbumSetting.first - params = OrbitHelper.params - custom_album = CustomAlbum.find_by_param(params[:uid]) - flag = show_desc? - colors = CustomAlbumColor.where(:custom_album_id=> custom_album.id).pluck(:color,:custom_album_card_background_color,:custom_album_card_text_color)[0] rescue [] - images = custom_album.custom_album_images.asc(:order).collect do |a| - alt_text = (a.description.blank? ? "custom_gallery image" : Nokogiri::HTML(a.description.to_s).text()) - { - "image-description" => (flag ? a.description : ''), - "image_short_description" => a.title, - "alt_title" => alt_text, - "link_to_show" => "#" + a.id.to_s, - "thumb-src" => a.file.thumb.url, - "thumb-large-src" => a.file.thumb_large.url, - "mobile-src" => a.file.mobile.url, - "theater-src" => a.file.theater.url, - - "custom_album_color" => iterate_data(colors[1],colors[0],@custom_album_setting.custom_album_card_background_color,'transparent'), - "custom_album_card_text_color" => iterate_data(colors[2],@custom_album_setting.custom_album_card_text_color) - } - end - { - "images" => images, - "data" => {"custom_album-title"=>custom_album.name, - "custom_album-description" => (flag ? "

      #{custom_album.description}

      " : "")} - } - end - def iterate_data(*args) - tmp = nil - args.each do |arg| - if !arg.blank? && arg != 'transparent' - tmp = arg - break - end - end - tmp - end - def self.custom_widget_data - @custom_configs = CustomAlbumConfig.all.to_a - ac = ActionController::Base.new - ac.render_to_string("custom_galleries/custom_widget_data",:locals=>{:@custom_data_field=>@custom_data_field,:@custom_configs=>@custom_configs,:@field_name=>@field_name}) - end - def custom_album_widget - @custom_album_setting = CustomAlbumSetting.first - params = OrbitHelper.params - tags = OrbitHelper.widget_tags.empty? ? ["all"] : OrbitHelper.widget_tags - custom_album_tp = CustomAlbum.filter_by_widget_categories(OrbitHelper.widget_categories,false).filter_by_tags(tags) - all_count = custom_album_tp.count - page_data_count = OrbitHelper.widget_data_count - no_order_count = custom_album_tp.where(:order.in=>[-1,nil]).count - with_order_count = all_count - no_order_count - with_order_total_pages = (with_order_count.to_f / page_data_count).ceil - custom_albums_with_order = custom_album_tp.asc(:order).where(:order.ne=>-1).and(:order.ne=>nil).to_a rescue [] - page_no = (params[:page_no] || 1).to_i - if page_no < with_order_total_pages - custom_albums_no_order = [] - custom_albums_with_order = custom_albums_with_order[(page_no-1)*page_data_count...page_no*page_data_count] - elsif page_no == with_order_total_pages - if custom_albums_with_order.count == page_data_count - custom_albums_no_order = [] - else - custom_albums_no_order = custom_album_tp.desc(:created_at).where(:order.in=>[-1,nil]).page(nil).per(all_count)[0...(page_data_count - custom_albums_with_order.count)] - end - else - custom_albums_with_order = [] - start_index = (page_data_count - (with_order_count % page_data_count) + page_data_count*(page_no - 1 - with_order_total_pages)) - custom_albums_no_order = custom_album_tp.desc(:created_at).where(:order.in=>[-1,nil]).page(nil).per(all_count)[start_index...(start_index+page_data_count)].to_a - end - custom_albums = custom_albums_with_order.concat(custom_albums_no_order) - custom_album_color_map = CustomAlbumColor.where(:custom_album_id.in=> custom_albums.map{|v| v.id}).pluck(:custom_album_id,:color,:custom_album_card_background_color,:custom_album_card_text_color).map{|v| [v[0],v[1..-1]]}.to_h - custom_galleries = custom_albums.collect.with_index do |a,i| - doc = Nokogiri::HTML(a.description.to_s) - alt_text = doc.text.empty? ? 'custom_gallery image' : doc.text.strip - colors = custom_album_color_map[a.id] - thumb_src = a.cover_path || "/assets/custom_gallery/default.jpg" - cover_image = CustomAlbumImage.find(a.cover) rescue a.custom_album_images.first - image_description = a.description - image_short_description = a.name - { - "link_text" => a.name, - "custom_album-name" => a.name, - "custom_album-description" => a.description, - "alt_title" => alt_text, - "link_to_show" => OrbitHelper.widget_more_url + "/" + a.to_param + "#" + (cover_image.id.to_s rescue ""), - "src" => thumb_src.gsub("thumb_",""), - "thumb-src" => thumb_src, - "thumb-large-src" => thumb_src.gsub("thumb_","thumb_large_"), - "mobile-src" => thumb_src.gsub("thumb_","mobile_"), - "theater-src" => thumb_src.gsub("thumb_","theater_"), - "image_description" => image_description, - "image_short_description" => image_short_description, - "custom_album_color" => iterate_data(colors[1],colors[0],@custom_album_setting.custom_album_card_background_color,'transparent'), - "custom_album_card_text_color" => iterate_data(colors[2],@custom_album_setting.custom_album_card_text_color), - "i" => i - } - end - { - "images" => custom_galleries, - "extras" => {"widget-title"=>"CustomGallery","more_url" => OrbitHelper.widget_more_url,"more_text"=>(locale == :en ? 'more' : '更多照片')} - } - end - def widget - @custom_album_setting = CustomAlbumSetting.first - tags = OrbitHelper.widget_tags.empty? ? ["all"] : OrbitHelper.widget_tags - custom_album_ids = CustomAlbum.filter_by_widget_categories(OrbitHelper.widget_categories,false).filter_by_tags(tags).pluck(:id) - custom_album_color_map = CustomAlbumColor.where(:custom_album_id.in=> custom_album_ids).pluck(:custom_album_id,:color,:custom_album_card_background_color,:custom_album_card_text_color).map{|v| [v[0],v[1..-1]]}.to_h - params = OrbitHelper.params - counts = OrbitHelper.widget_data_count - images = CustomAlbumImage.where({custom_album_id:{"$in"=>custom_album_ids}}).desc(:id).limit(counts *5).sample(counts) - images = images.each_with_index.collect do |a,i| - colors = custom_album_color_map[a.custom_album_id] - alt_text = (a.description.blank? ? "custom_gallery image" : Nokogiri::HTML(a.description).text().strip) - { - "link_text" => "", - "link_to_show" => OrbitHelper.widget_more_url + "/" + a.custom_album.to_param + "#" + a.id.to_s, - "alt_title" => alt_text, - "src" => a.file.url, - "thumb-src" => a.file.thumb.url, - "thumb-large-src" => a.file.thumb_large.url, - "image_description" => a.description, - "image_short_description" => a.title, - "mobile-src" => a.file.mobile.url, - "theater-src" => a.file.theater.url, - "custom_album-name" => a.custom_album.name_translations[I18n.locale], - "custom_album_color" => iterate_data(colors[1],colors[0],@custom_album_setting.custom_album_card_background_color,'transparent'), - "custom_album_card_text_color" => iterate_data(colors[2],@custom_album_setting.custom_album_card_text_color), - "i" => i - } - end - { - "images" => images, - "extras" => {"widget-title"=>"CustomGallery","more_url" => OrbitHelper.widget_more_url,"more_text"=>(locale == :en ? 'more' : '更多照片')} - } - end - def imgs(custom_album_id) - custom_album = CustomAlbum.find(custom_album_id) - tag_names = Array.new - images = custom_album.custom_album_images.asc(:order) - output = Array.new - images.each do |values| - alt_text = (values.description.nil? || values.description == "" ? "custom_gallery image" : values.description) - output << { _id: values.id.to_s, - description: values.description, - title: values.title, - alt_title: alt_text, - url: values.file.url, - file: values.file.as_json[:file], - custom_gallery_custom_album_id: values.custom_album_id, - tags: values.tags} - end - return output - end - def theater - if params[:id].include?('page=') - custom_album = CustomAlbum.where(uid: params[:id].sub('page=','')).first - custom_albumid = custom_album.id - image = custom_album.custom_album_images.first - else - image = CustomAlbumImage.find(params[:id]) - custom_albumid = image.custom_album_id - custom_album = CustomAlbum.find(custom_albumid) - end - images = custom_album.custom_album_images.asc(:order) - data = { - "custom_album" => custom_album, - "image" => image.id.to_s, - "images" => imgs(custom_albumid) - } - render :json => {"data" => data}.to_json - end - - private - - def show_desc? - tags = OrbitHelper.page_tags if tags.blank? - tags = [tags].flatten.uniq - flag = true - tag_temp = Tag.all.select{|value| tags.include? value.id.to_s} - tag_temp_length = 0 - tag_temp.each do |value| - if value.name==I18n.t('custom_gallery.show_desc') - flag = true - elsif value.name==I18n.t('custom_gallery.not_show_desc') - flag = false - end - end - flag - end -end \ No newline at end of file diff --git a/custom_gallery/app/helpers/.keep b/custom_gallery/app/helpers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/helpers/admin/custom_galleries_helper.rb b/custom_gallery/app/helpers/admin/custom_galleries_helper.rb deleted file mode 100644 index 5e6434f..0000000 --- a/custom_gallery/app/helpers/admin/custom_galleries_helper.rb +++ /dev/null @@ -1,46 +0,0 @@ -module Admin::CustomGalleriesHelper - def back_end_breadcrumb - if params[:controller] == "admin/custom_galleries" - res = '' - divider = "/" - res << "
    • #{t(:dashboard_)}#{divider}
    • " - if params[:custom_module] - trans_name = I18n.t("module_name.#{params[:custom_module]}") - if trans_name.include?("translation missing") - trans_name = params[:custom_module] - end - res << "
    • #{trans_name}#{divider}
    • " - end - if params[:action] != "index" - if params[:custom_module] - extra_url = "/#{params[:custom_module]}#{params[:bind_uid].present? ? ('-'+params[:bind_uid]) : ''}" - end - res << "
    • #{t('module_name.'+@module_app.key)}#{divider}
    • " - res << "
    • #{t(params[:action], scope: 'restful_actions')}
    • " - else - res << "
    • #{t('module_name.'+@module_app.key)}
    • " - end - res.html_safe - else - super - end - end - def import_this_image(row,custom_album) - value = {} - image = CustomAlbumImage.new - image.custom_album = custom_album - row.cells.each_with_index do |cell,index| - val = cell.value rescue nil - next if val.blank? - case index - when 0 - image.remote_file_url = val - when 1 - value["zh_tw"] = val - value["en"] = (row.cells[index + 1].value rescue "") - image.description_translations = value - end - end - image.save - end -end diff --git a/custom_gallery/app/mailers/.keep b/custom_gallery/app/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/models/.keep b/custom_gallery/app/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/models/custom_album.rb b/custom_gallery/app/models/custom_album.rb deleted file mode 100644 index 9ae92a3..0000000 --- a/custom_gallery/app/models/custom_album.rb +++ /dev/null @@ -1,119 +0,0 @@ -class CustomAlbum - include Mongoid::Document - include Mongoid::Timestamps - - include OrbitCategory::Categorizable - include OrbitTag::Taggable - include Slug - - field :custom_module - field :bind_uid - field :name, as: :slug_title, localize: true - field :description, localize: true - field :cover, default: "default" - field :cover_path #can refact - field :tag_names - field :uid, type: String - field :rss2_id, type: String - field :order, type: Integer, default: -1 - field :resize_gravity - # has_and_belongs_to_many :tags, :class_name => "CustomGalleryTag" - has_many :custom_album_images, :autosave => true, :dependent => :destroy - has_many :custom_album_colors, :autosave => true, :dependent => :destroy - accepts_nested_attributes_for :custom_album_images, :allow_destroy => true - accepts_nested_attributes_for :custom_album_colors, :allow_destroy => true - before_save do |record| - if record.order.nil? || record.order == -1 - topest_order = CustomAlbum.all.pluck(:order).sort{|a,b| a.to_i<=>b.to_i}.first - if topest_order.nil? || topest_order == 0 - record.order = -2 - else - record.order = topest_order - 1 - end - end - end - after_create do - custom_record_callback(1) - end - after_destroy do - custom_record_callback(-1) - end - def custom_record_callback(num) - if self.custom_module && self.bind_uid.present? - custom_album_config = CustomAlbumConfig.where(:module=>self.custom_module).first - if custom_album_config && custom_album_config.custom_record_callback.present? && custom_album_config.bind_model.present? - target_model = custom_album_config.bind_model.constantize rescue nil - if target_model - target_record = target_model.where(custom_album_config.uid_field=>self.bind_uid).first - target_record.send(custom_album_config.custom_record_callback,num) if target_record - end - end - end - end - def resize_gravity - """ - NorthWestGravity - Position object at top-left of region - NorthGravity - Position object at top-center of region - NorthEastGravity - Position object at top-right of region - WestGravity - Position object at left-center of region - CenterGravity - Position object at center of region - EastGravity - Position object at right-center of region - SouthWestGravity - Position object at left-bottom of region - SouthGravity - Position object at bottom-center of region - SouthEastGravity - Position object at bottom-right of region - """ - tmp = self[:resize_gravity] - (tmp.blank? ? (CustomAlbumSetting.first.resize_gravity.blank? ? "Center" : CustomAlbumSetting.first.resize_gravity) : tmp) rescue 'Center' - end - def self.find_by_param(input) - self.find_by(uid: input) - end - def self.filter_by_tags(tags=[]) - tags = OrbitHelper.page_tags if tags.blank? - tags = [tags].flatten.uniq - if !(tags.include?("all")) - tag_temp = Tag.all.select{|value| tags.include? value.id.to_s} - tag_temp_length = 0 - tag_temp.each do |value| - if value.name==I18n.t('custom_gallery.show_desc') || value.name==I18n.t('custom_gallery.not_show_desc') - tag_temp_length+=1 - end - end - if tag_temp_length!=0 - if (tags.length - tag_temp_length) == 0 - tags = ['all'] - end - end - end - if tags.blank? || (tags.include?("all") rescue false) - self.all - else - tags - taggings = Tagging.where(:tag_id.in=>tags).map{|item| item.taggable_id} - self.where(:id.in=>taggings) - end - end - def cover - tmp = self['cover'] - if tmp=='default' - tmp = (self.custom_album_images.first.id.to_s rescue 'default') - end - tmp - end - def cover_path - tmp = self['cover_path'] - if tmp.nil? - tmp = (self.custom_album_images.first.file.thumb.url rescue nil) - end - tmp - end -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_color.rb b/custom_gallery/app/models/custom_album_color.rb deleted file mode 100644 index 30dc125..0000000 --- a/custom_gallery/app/models/custom_album_color.rb +++ /dev/null @@ -1,9 +0,0 @@ -class CustomAlbumColor - include Mongoid::Document - include Mongoid::Timestamps - field :color, type: String - field :custom_album_card_background_color, type: String - field :custom_album_card_text_color, type: String - - belongs_to :custom_album -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_config.rb b/custom_gallery/app/models/custom_album_config.rb deleted file mode 100644 index c6ca1fa..0000000 --- a/custom_gallery/app/models/custom_album_config.rb +++ /dev/null @@ -1,10 +0,0 @@ -class CustomAlbumConfig - include Mongoid::Document - include Mongoid::Timestamps - field :module - field :bind_model , :type => String - field :title_field , :type => String , :default => "slug_title" - field :uid_field , :type => String , :default => "uid" - field :custom_record_callback #if exists, it will call 'custom_record_callback(num)' - #where num is 1 when create bulletin, num is -1 when destroy. -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_crop.rb b/custom_gallery/app/models/custom_album_crop.rb deleted file mode 100644 index ea7665d..0000000 --- a/custom_gallery/app/models/custom_album_crop.rb +++ /dev/null @@ -1,8 +0,0 @@ -class CustomAlbumCrop - include Mongoid::Document - field :crop_x, type: String - field :crop_y, type: String - field :crop_w, type: String - field :crop_h, type: String - belongs_to :custom_album_image -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_image.rb b/custom_gallery/app/models/custom_album_image.rb deleted file mode 100644 index a0948a9..0000000 --- a/custom_gallery/app/models/custom_album_image.rb +++ /dev/null @@ -1,27 +0,0 @@ -require 'net/http' -class CustomAlbumImage - include Mongoid::Document - include Mongoid::Timestamps - include OrbitTag::Taggable - mount_uploader :file, CustomGalleryUploader - field :title - field :title_translations, type: Hash, default: {} - field :description, localize: true - field :rss2_id, type: String - field :order, type: Integer, default: -1 - - # has_and_belongs_to_many :tags, :class_name => "CustomGalleryTag" - def title_translations - tmp = super || {} - if tmp == {} - tmp = I18n.available_locales.collect{|locale| [locale,self[:title]]}.to_h - end - tmp - end - def title - self.title_translations[I18n.locale] - end - belongs_to :custom_album - has_many :custom_album_crops, :autosave => true, :dependent => :destroy - accepts_nested_attributes_for :custom_album_crops, :allow_destroy => true -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_setting.rb b/custom_gallery/app/models/custom_album_setting.rb deleted file mode 100644 index 927cfaf..0000000 --- a/custom_gallery/app/models/custom_album_setting.rb +++ /dev/null @@ -1,9 +0,0 @@ -class CustomAlbumSetting - include Mongoid::Document - include Mongoid::Timestamps - field :limit - field :resize_gravity, type: String, default: 'center' - ResizeGravities = %w[Center NorthWest North NorthEast West East SouthWest South SouthEast] - field :custom_album_card_background_color, default: '' - field :custom_album_card_text_color, default: '#000000' -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_unprocess.rb b/custom_gallery/app/models/custom_album_unprocess.rb deleted file mode 100644 index 0182c71..0000000 --- a/custom_gallery/app/models/custom_album_unprocess.rb +++ /dev/null @@ -1,18 +0,0 @@ -class CustomAlbumUnprocess - include Mongoid::Document - field :image_id - field :save_var, type: String - field :upload_success, type: Boolean - def save_var - temp = YAML.load(self[:save_var]) - temp[:tempfile] = File.open(temp[:tempfile]) - ActionDispatch::Http::UploadedFile.new(temp) - end - def save_var=(value) - temp = {:filename => value.original_filename, - :type => value.content_type, - :head => value.headers, - :tempfile => value.tempfile.path} - self[:save_var] = temp.to_yaml - end -end \ No newline at end of file diff --git a/custom_gallery/app/models/custom_album_variable.rb b/custom_gallery/app/models/custom_album_variable.rb deleted file mode 100644 index e0240da..0000000 --- a/custom_gallery/app/models/custom_album_variable.rb +++ /dev/null @@ -1,8 +0,0 @@ -class CustomAlbumVariable - include Mongoid::Document - field :count, type: Integer - field :progress_percent, type: String - field :progress_filename, type: String - field :finish, type: Boolean - field :notalive, type: Boolean -end \ No newline at end of file diff --git a/custom_gallery/app/uploaders/custom_gallery_uploader.rb b/custom_gallery/app/uploaders/custom_gallery_uploader.rb deleted file mode 100644 index 1236986..0000000 --- a/custom_gallery/app/uploaders/custom_gallery_uploader.rb +++ /dev/null @@ -1,183 +0,0 @@ -# encoding: utf-8 -module CarrierWave - module Uploader - module Versions - def store_dir - "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" - end - end - end -end - -class CustomGalleryUploader < CarrierWave::Uploader::Base - # Include RMagick or ImageScience support: - # include CarrierWave::RMagick - # include CarrierWave::ImageScience - include CarrierWave::MiniMagick - # Choose what kind of storage to use for this uploader: - # storage :file - # storage :s3 - - # Override the directory where uploaded files will be stored. - # This is a sensible default for uploaders that are meant to be mounted: - def store_dir - "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" - end - def get_org_url - if have_crop? - model.file.resized.url - else - model.file.url - end - end - def fix_exif_rotation - manipulate! do |img| - img.tap(&:auto_orient) - end - end - # Provide a default URL as a default if there hasn't been a file uploaded: - # def default_url - # "/images/fallback/" + [version_name, "default.png"].compact.join('_') - # end - - # Process files as they are uploaded: - # process :scale => [200, 300] - # - # def scale(width, height) - # # do something - # end - - # Create different versions of your uploaded files: - # version :thumb do - # process :scale => [50, 50] - # end - process :resizer - process :optimize - version :resized, :if => :have_crop? do #backup - def full_filename(for_file) - extension = File.extname(super(for_file)) - base_name = super(for_file).split('resized_').join('').chomp(extension) - base_name + '_resized'+ extension - end - end - version :crop_from_org, :if => :have_crop? do - process :crop_it - def full_filename(for_file) - super(for_file).split('crop_from_org_').join('') - end - end - version :thumb do - process :convert => 'png', :if => :transparent? - process :pad_process => [200,200] - end - version :thumb_large do - process :convert => 'png', :if => :transparent? - process :pad_process => [600,600] - end - version :theater do - process :limit_process => [1920, 1080] - end - version :mobile do - process :limit_process => [1152, 768] - end -# Add a white list of extensions which are allowed to be uploaded. -# For images you might use something like this: -# def extension_white_list -# %w(jpg jpeg gif png) -# end - -# Override the filename of the uploaded files: -# def filename -# "something.jpg" if original_filename -# end - -# def manipulate! -# raise current_path.inspect -# image = ::MiniMagick::Image.open(current_path) -# image = yield(image) -# image.write(current_path) -# ::MiniMagick::Image.open(current_path) -# rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e -# raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}") -# end - def get_w_and_h - if have_crop? - img = MiniMagick::Image.open(model.file.resized.path) - else - img = MiniMagick::Image.open(model.file.path) - end - [img[:width], img[:height]] - end - def rotate_ang(angle) - if have_crop? - img_path = model.file.resized.path - else - img_path = model.file.path - end - puts img_path - img = MiniMagick::Image.open(img_path) - img.rotate(angle) - puts img - img.write(img_path) - end - def optimize (*arg) - manipulate! do |img| - return img unless img.mime_type.match /image\/jpeg/ - img.strip - img.combine_options do |c| - c.quality "90" - c.depth "24" - c.interlace "plane" - end - img - end - end - private - def resizer - size_of_file = size.to_f / (2**20) - if size_of_file > 5 - img = MiniMagick::Image.open(path) - img_width = img[:width] - img_height = img[:height] - multiple = [img_width/Math.sqrt(size_of_file/5)/1920,img_height/Math.sqrt(size_of_file/5)/1080].max - if (multiple - multiple.to_i)>0.5 - multiple = multiple.to_i + 0.5 - else - multiple = multiple.to_i - end - resize_to_limit(multiple*1920,multiple*1080) - else - manipulate! do |img| - img - end - end - end - def limit_process(w,h) - resize_to_limit(w,h) - end - def have_crop?(*arg) - !(model.custom_album_crops.first.nil?) - end - def crop_it - crops = model.custom_album_crops.first - x=(crops.crop_x).to_i.abs.to_s - y=(crops.crop_y).to_i.abs.to_s - w=crops.crop_w.to_i - h=crops.crop_h.to_i - crop_image("#{w}x#{h}+#{x}+#{y}") - end - def crop_image(geometry) - img = MiniMagick::Image.open(model.file.resized.path) - img.crop(geometry) - img.write(model.file.crop_from_org.path) - end - def transparent?(*arg) - now_custom_album = model.custom_album - now_custom_album.custom_album_colors.first['color']=='transparent' rescue true - end - def pad_process (w,h) - now_custom_album = model.custom_album - resize_and_pad(w, h, (transparent? ? :transparent : now_custom_album.custom_album_colors.first['color']), (now_custom_album.resize_gravity rescue 'Center')) - end -end - diff --git a/custom_gallery/app/views/.keep b/custom_gallery/app/views/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/app/views/admin/custom_galleries/_custom_album.html.erb b/custom_gallery/app/views/admin/custom_galleries/_custom_album.html.erb deleted file mode 100644 index 93dae6c..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/_custom_album.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -
    • -
      - -
      - - <% if custom_album.cover == "default" %> - <%= image_tag "custom_gallery/default.jpg" %> - <% else %> - - <% end %> -

      <%= custom_album.name %>

      -
      - -
        - -
      -
    • \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/_custom_albums.html.erb b/custom_gallery/app/views/admin/custom_galleries/_custom_albums.html.erb deleted file mode 100644 index 0da9a6e..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/_custom_albums.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%= render :partial => "custom_album", :collection => @custom_albums %> - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/_form.html.erb b/custom_gallery/app/views/admin/custom_galleries/_form.html.erb deleted file mode 100644 index db571db..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/_form.html.erb +++ /dev/null @@ -1,202 +0,0 @@ -<% content_for :page_specific_css do %> - <%= stylesheet_link_tag "lib/main-forms" %> - <%= stylesheet_link_tag "lib/fileupload" %> - <%= stylesheet_link_tag "lib/main-list" %> - <%= stylesheet_link_tag "jquery.minicolors" %> -<% end %> -<% content_for :page_specific_javascript do %> - <%= javascript_include_tag "lib/bootstrap-fileupload" %> - <%= javascript_include_tag "lib/bootstrap-datetimepicker" %> - <%= javascript_include_tag "lib/datetimepicker/datetimepicker.js" %> - <%= javascript_include_tag "lib/modal-preview" %> - <%= javascript_include_tag "lib/file-type" %> - <%= javascript_include_tag "jquery.minicolors" %> -<% end %> - - -
      - -
      - - - - - - -
      - - -
      - - -
      - -
      - <%= select_category(f, @module_app) %> -
      -
      - -
      - -
      - - -
      - - <%= select_tags(f, @module_app) %> -
      -
      - - <% if @custom_album.custom_album_colors.first.nil? %> - <% @custom_album.custom_album_colors.new('color' => 'transparent') %> - <% end %> - <%= f.fields_for :custom_album_colors do |custom_album_color_form| %> -
      - -
      - - <%= custom_album_color_form.text_field :color , :class => 'input-block-level minicolors-input' %> - - - <%= t('custom_gallery.transparent') %> - -
      -
      - - <%= custom_album_color_form.text_field :custom_album_card_background_color, :class => 'input-block-level minicolors-input' %> - - - <%= t('custom_gallery.transparent') %> - -
      -
      - - <%= custom_album_color_form.text_field :custom_album_card_text_color, :class => 'input-block-level minicolors-input' %> - - - <%= t('custom_gallery.transparent') %> - -
      -
      - -
      - <%= f.select :resize_gravity, [["---#{t("default")}: #{t("custom_gallery.gravity.#{CustomAlbumSetting::ResizeGravities[0]}")}---",nil]]+CustomAlbumSetting::ResizeGravities.collect{|v| [t("custom_gallery.gravity.#{v}"),v]} %> -
      -
      -
      - <% end %> -
      -
      -
      - - -
      - - - - <% @site_in_use_locales.each_with_index do |locale, i| %> - -
      -
      - <%= f.fields_for :name_translations do |name| %> - <%= label_tag(locale, t("custom_gallery.custom_album_name"),:class=>"control-label muted") %> -
      - <%= name.text_field locale, :class => "input-block-level", :placeholder=>"#{t(:title)}",:value => (@custom_album.name_translations[locale] rescue nil) %> -
      - <% end %> -
      -
      - <%= f.fields_for :description_translations do |desc| %> - <%= label_tag(locale, t("custom_gallery.custom_album_desc"), :class=>"control-label muted") %> -
      -
      - <%= desc.text_area locale, :class => "ckeditor input-block-level", :value => (@custom_album.description_translations[locale] rescue nil)%> -
      -
      - <% end %> -
      -
      - <% end %> - -
      - -
      - -
      - <%= f.submit t("custom_gallery.save"), :class=> "btn btn-primary bt-form-save" %> - <%= link_to t('cancel'), admin_custom_galleries_path + (params[:custom_module].blank? ? '' : "/#{params[:custom_module]}#{(params[:bind_uid].blank? ? '' : ('-'+params[:bind_uid]))}"), :class=>"btn" %> - <% if params[:custom_module].present? %> - <%= f.hidden_field :custom_module, :value=> params[:custom_module] %> - <% if params[:bind_uid].present? %> - <%= f.hidden_field :bind_uid, :value=> params[:bind_uid] %> - <% end %> - <% end %> -
      -
      - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/_image.html.erb b/custom_gallery/app/views/admin/custom_galleries/_image.html.erb deleted file mode 100644 index 91d1c33..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/_image.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -
    • - - - - <% if can_edit_or_delete?(@custom_album) %> - - - ">edit -
        -
      • ">
      • -
      • -
      • -
      - <% end %> -
      - -
      -
    • \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/_recreate_thumb.html.erb b/custom_gallery/app/views/admin/custom_galleries/_recreate_thumb.html.erb deleted file mode 100644 index f31c99f..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/_recreate_thumb.html.erb +++ /dev/null @@ -1,106 +0,0 @@ -<%= javascript_include_tag "jquery.minicolors.js" %> -<%= stylesheet_link_tag "jquery.minicolors.css" %> - -
      - -<%= t('custom_gallery.recreate_thumb')+':' %> - - - - -<%= t('custom_gallery.transparent') %> - - - - - - - -
      - - - - - - -
      - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/create.js.erb b/custom_gallery/app/views/admin/custom_galleries/create.js.erb deleted file mode 100644 index a1e7517..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/create.js.erb +++ /dev/null @@ -1,3 +0,0 @@ -var gal = new custom_galleryAPI(); -gal.loadCustomAlbums("all"); -rcom.modalWindowClose(); diff --git a/custom_gallery/app/views/admin/custom_galleries/display_enable_modules.html.erb b/custom_gallery/app/views/admin/custom_galleries/display_enable_modules.html.erb deleted file mode 100644 index ac854f0..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/display_enable_modules.html.erb +++ /dev/null @@ -1,74 +0,0 @@ -<% if params[:custom_module].blank? %> -
      - -
      -<% else %> - <% config = @custom_album_configs.where(:module=>params[:custom_module]).first %> - <% target_model = config.bind_model.constantize %> - <% page_num = params[:page] || 1 %> - <% target_records = target_model.where(config.title_field.to_sym.nin=>[nil,""]).page(page_num).per(10) %> - <% if params[:search_title].present? - target_records = target_records.where(config.title_field.to_sym=>/#{params[:search_title].gsub(/(\[|\]|\(|\)|\.)/){|f| "\\"+f}}/) - end %> -

      <%= t("module_name.#{config.module}") %>

      -
      - -
      - - - - - - <% target_records.each do |record| %> - - <% uid = record.send(config.uid_field) %> - - - - <% end %> -
      <%= t(:title) %><%= t("custom_gallery.total_amount") %>
      - " title="<%=record.send(config.title_field)%>"><%= record.send(config.title_field) %> - - <%= CustomAlbum.where(:custom_module=>params[:custom_module],:bind_uid=>uid).count %> -
      - <%= - content_tag :div, class: "bottomnav clearfix" do - content_tag :div, paginate(target_records), class: "pagination pagination-centered" - end - %> -<% end %> - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/edit.html.erb b/custom_gallery/app/views/admin/custom_galleries/edit.html.erb deleted file mode 100644 index f6301f8..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/edit.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<%= form_for @custom_album, :url => {:action => "update"}, :html => {:class => 'form-horizontal main-forms'} do |f| %> - <%= render :partial => 'form', :locals => {:f => f} %> -<% end %> diff --git a/custom_gallery/app/views/admin/custom_galleries/excel_format.xlsx.axlsx b/custom_gallery/app/views/admin/custom_galleries/excel_format.xlsx.axlsx deleted file mode 100644 index 90bfa14..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/excel_format.xlsx.axlsx +++ /dev/null @@ -1,28 +0,0 @@ -# encoding: utf-8 - -wb = xlsx_package.workbook - -wb.add_worksheet(name: @custom_album.name[0..100]) do |sheet| - - sheet.merge_cells "A1:C1" - heading = sheet.styles.add_style(:b => true, :locked => true, :alignment=>{:horizontal => :center}) - example = sheet.styles.add_style(:i => true) - row = [] - row1 = [] - row2 = [] - - row << "Import for custom_album #{@custom_album.name}" - - row1 << t("custom_gallery.img_link") - row2 << "http://www.example.com/example.jpg" - - row1 << t("custom_gallery.img_description") + "(" + t(:zh_tw) + ")" - row2 << "This is an image" - row1 << t("custom_gallery.img_description") + "(" + t(:en) + ")" - row2 << "This is an image" - - sheet.add_row row, :style => heading - sheet.add_row row1 - sheet.add_row row2, :style => example - -end \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/import.html.erb b/custom_gallery/app/views/admin/custom_galleries/import.html.erb deleted file mode 100644 index 82a44a9..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/import.html.erb +++ /dev/null @@ -1,36 +0,0 @@ -<% content_for :page_specific_javascript do %> - -<% end %> -
      -

      Import from Excel for custom_album <%= @custom_album.name %>

      - <%= hidden_field_tag :authenticity_token, form_authenticity_token %> -
      - -
      - -
      - - Only excel file is allowed. Max 200 entries. -
      -
      -
      -
      - -
      -
      - - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/index.html.erb b/custom_gallery/app/views/admin/custom_galleries/index.html.erb deleted file mode 100644 index 60693db..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/index.html.erb +++ /dev/null @@ -1,87 +0,0 @@ -<% if @show_script %> - <%= stylesheet_link_tag "custom_gallery" %> - <%= stylesheet_link_tag "lib/tags-groups" %> - <% content_for :page_specific_javascript do %> - <%= javascript_include_tag "lib/jquery-ui-1.10.0.custom.min" %> - <%= javascript_include_tag "jquery.masonry.min.js" %> - <%= javascript_include_tag "jquery.lite.image.resize.js" %> - <%= javascript_include_tag "custom_gallery" %> - - <% end %> - - <%= render_filter @filter_fields, "orbit_custom_gallery" %> - <% custom_config = CustomAlbumConfig.where(:module=>params[:custom_module]).first %> - <% target_model = custom_config.bind_model.constantize %> -

      <%= target_model.where(custom_config.uid_field=>params[:bind_uid]).first.send(custom_config.title_field) %>

      -
      CustomAlbums re-ordering enabled.
      - <%= render 'recreate_thumb' %> - - <%= form_tag '/admin/custom_galleries/update_custom_album_setting',remote: true,:class=>'update_custom_album_setting_form' do %> - <%= t('custom_gallery.custom_album_limit_for_one_page') %>: - <%= text_field_tag :custom_album_setting_limit, CustomAlbumSetting.first.limit,:placeholder => t('custom_gallery.blank_for_nil') %> - - <% end %> -
      - -
      -
      -
      - <% if can_edit_or_delete?(nil) %> - <%= t('custom_gallery.edit_order') %> - <% end %> - <% if @fiter_custom_albums.length > @limit_count %> - - <% end %> - "><%=t(:new_)%> -
      -
      -<% else %> - <%= render :partial => "custom_albums" %> -<% end %> \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/new.html.erb b/custom_gallery/app/views/admin/custom_galleries/new.html.erb deleted file mode 100644 index cae3e83..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -
      -<%= form_for @custom_album, :url => {:action => "create"}, :html => {:class => 'form-horizontal main-forms'} do |f| %> - <%= render :partial => 'form', :locals => {:f => f} %> -<% end %> -
      diff --git a/custom_gallery/app/views/admin/custom_galleries/new_images.html.erb b/custom_gallery/app/views/admin/custom_galleries/new_images.html.erb deleted file mode 100644 index cdf89ca..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/new_images.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% @newimages.each do |image| %> - <%= render :partial=>"image", :object=>image %> -<% end %> \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/recreate_image.html.erb b/custom_gallery/app/views/admin/custom_galleries/recreate_image.html.erb deleted file mode 100644 index 8e9656c..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/recreate_image.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -<%= t('custom_gallery.progressbar')+':' %> -
      -
      -
      0
      -
      -
      -
      - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/setting.html.erb b/custom_gallery/app/views/admin/custom_galleries/setting.html.erb deleted file mode 100644 index 6c5fcd9..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/setting.html.erb +++ /dev/null @@ -1,79 +0,0 @@ -<%= javascript_include_tag "jquery.minicolors" %> -<%= stylesheet_link_tag "jquery.minicolors" %> - - -<%= form_for @custom_album_setting, url: '/admin/custom_galleries/update_custom_album_setting',:class=>'update_custom_album_setting_form',method: 'post' do |f| %> -
      - - <%= f.text_field :limit,:placeholder => t('custom_gallery.blank_for_nil') %> -
      -
      - - <%= f.select :resize_gravity, [["---#{t("default")}: #{t("custom_gallery.gravity.#{CustomAlbumSetting::ResizeGravities[0]}")}---",nil]]+CustomAlbumSetting::ResizeGravities.collect{|v| [t("custom_gallery.gravity.#{v}"),v]} %> -
      -
      - - <%= f.text_field :custom_album_card_background_color, :class => 'input-block-level minicolors-input' %> - - - <%= t('custom_gallery.transparent') %> - -
      -
      - - <%= f.text_field :custom_album_card_text_color, :class => 'input-block-level minicolors-input' %> - - - <%= t('custom_gallery.transparent') %> - -
      - - <%= f.hidden_field :id %> - <%= f.submit t('submit'),:class=>'btn btn-primary' %> -<% end %> \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_galleries/show.html.erb b/custom_gallery/app/views/admin/custom_galleries/show.html.erb deleted file mode 100644 index 892cc61..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/show.html.erb +++ /dev/null @@ -1,275 +0,0 @@ -<%= stylesheet_link_tag "custom_gallery" %> -<%= stylesheet_link_tag "lib/tags-groups" %> - - - -
      Images re-ordering enabled.
      -
      - -
      -
      - <%= t('custom_gallery.crop_div').html_safe %> -
      - 0° -
      - - -
      - <%= t('custom_gallery.rotate_images') %> - <%= t('custom_gallery.batch_crop') %> - <%= t('custom_gallery.deselect') %> - <% if can_edit_or_delete?(@custom_album) %> - <%= t('custom_gallery.delete_photo') %> - <%= t('custom_gallery.add_tags') %> - <%= t('custom_gallery.import') %> - - <%= t('custom_gallery.edit') %> - <%= t('custom_gallery.edit_order') %> - - - <%= t('custom_gallery.add_image') %> - <% end %> -
      -
      - - -
      - - -
      - -
      -
      -
      - -
      -
      -
      - -
      -
      - <%= t('custom_gallery.drop_files_here') %> -
      - -
      - -
      -
      - -
      -
      -
      -
      - -
      - - -
      - - - - - - - -<% content_for :page_specific_javascript do %> - <%= javascript_include_tag "jquery.masonry.min.js" %> - <%= javascript_include_tag "jquery.lite.image.resize.js" %> - <%= javascript_include_tag "lib/checkbox.card" %> - <%= javascript_include_tag "file-upload/vendor/jquery.ui.widget.js" %> - <%= javascript_include_tag "file-upload/tmpl.min.js" %> - <%= javascript_include_tag "file-upload/load-image.min.js" %> - <%= javascript_include_tag "file-upload/canvas-to-blob.min.js" %> - <%= javascript_include_tag "file-upload/jquery.iframe-transport.js" %> - <%= javascript_include_tag "file-upload/jquery.fileupload.js" %> - <%= javascript_include_tag "file-upload/jquery.fileupload-fp.js" %> - <%= javascript_include_tag "file-upload/jquery.fileupload-ui.js" %> - <%= javascript_include_tag "file-upload/drop-zone.js" %> - <%= javascript_include_tag "custom_gallery" %> -<% end %> - - - - - - - diff --git a/custom_gallery/app/views/admin/custom_galleries/upload_panel.html.erb b/custom_gallery/app/views/admin/custom_galleries/upload_panel.html.erb deleted file mode 100644 index 63b7063..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/upload_panel.html.erb +++ /dev/null @@ -1,107 +0,0 @@ - - -<%= csrf_meta_tag %> -<%= javascript_include_tag "jquery-latest" %> -<%= stylesheet_link_tag "jquery-ui" %> -<%= stylesheet_link_tag "jquery.fileupload-ui.css" %> - - - -
      -
      - <%= form_for @custom_album, :url => panel_custom_gallery_back_end_upload_image_path, :html => {:class => 'clear'} do |f| %> -
      - - - - - -
      - - <% end %> -
      -
      -
      -
      -
      - - - -
      - - <%= javascript_include_tag "jquery-ui.min" %> - <%= javascript_include_tag "jquery.tmpl.min" %> - <%= javascript_include_tag "jquery.iframe-transport" %> - <%= javascript_include_tag "jquery.fileupload" %> - <%= javascript_include_tag "jquery.fileupload-ui" %> - <%= javascript_include_tag "upload" %> - - - - - diff --git a/custom_gallery/app/views/admin/custom_galleries/upload_process.html.erb b/custom_gallery/app/views/admin/custom_galleries/upload_process.html.erb deleted file mode 100644 index 8e9656c..0000000 --- a/custom_gallery/app/views/admin/custom_galleries/upload_process.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -<%= t('custom_gallery.progressbar')+':' %> -
      -
      -
      0
      -
      -
      -
      - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_images/batch_crop.html.erb b/custom_gallery/app/views/admin/custom_images/batch_crop.html.erb deleted file mode 100644 index 4c3343d..0000000 --- a/custom_gallery/app/views/admin/custom_images/batch_crop.html.erb +++ /dev/null @@ -1,102 +0,0 @@ - - - - -
      -
      - - - - - - -
      - -
      -
      - <% @img.each do |image| %> -
      - -
      - <% end %> -
      - - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_images/crop_process.html.erb b/custom_gallery/app/views/admin/custom_images/crop_process.html.erb deleted file mode 100644 index 5ddd7bf..0000000 --- a/custom_gallery/app/views/admin/custom_images/crop_process.html.erb +++ /dev/null @@ -1,39 +0,0 @@ -<%= t('custom_gallery.progressbar')+':' %> -
      -
      -
      0
      -
      -
      -
      - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_images/edit_image.html.erb b/custom_gallery/app/views/admin/custom_images/edit_image.html.erb deleted file mode 100644 index fb27068..0000000 --- a/custom_gallery/app/views/admin/custom_images/edit_image.html.erb +++ /dev/null @@ -1,60 +0,0 @@ - - - - -
      - - \ No newline at end of file diff --git a/custom_gallery/app/views/admin/custom_images/show.html.erb b/custom_gallery/app/views/admin/custom_images/show.html.erb deleted file mode 100644 index 7133823..0000000 --- a/custom_gallery/app/views/admin/custom_images/show.html.erb +++ /dev/null @@ -1,59 +0,0 @@ - -<%= stylesheet_link_tag "custom_gallery_old" %> - - - -<%# content_for :page_specific_javascript do %> - <%= javascript_include_tag "rss" %> - <%= javascript_include_tag "custom_galleryAPI" %> -<%# end %> - - - - - - - diff --git a/custom_gallery/app/views/admin/custom_images/upload_panel.html.erb b/custom_gallery/app/views/admin/custom_images/upload_panel.html.erb deleted file mode 100644 index c6567cf..0000000 --- a/custom_gallery/app/views/admin/custom_images/upload_panel.html.erb +++ /dev/null @@ -1,111 +0,0 @@ - - -<%= csrf_meta_tag %> -<%= javascript_include_tag "jquery-latest" %> -<%= stylesheet_link_tag "jquery-ui" %> -<%= stylesheet_link_tag "jquery.fileupload-ui.css" %> - - - -
      -
      -<%= form_for @custom_album, :url => panel_custom_gallery_back_end_custom_album_path(@custom_album), :html => {:class => 'clear'} do |f| %> - - -
      - - - - - -
      - - <% end %> -
      -
      -
      -
      -
      - - - -
      - - <%= javascript_include_tag "jquery-ui.min" %> - <%= javascript_include_tag "jquery.tmpl.min" %> - <%= javascript_include_tag "jquery.iframe-transport" %> - <%= javascript_include_tag "jquery.fileupload" %> - <%= javascript_include_tag "jquery.fileupload-ui" %> - <%= javascript_include_tag "upload" %> - - - - - diff --git a/custom_gallery/app/views/custom_galleries/custom_widget_data.html.erb b/custom_gallery/app/views/custom_galleries/custom_widget_data.html.erb deleted file mode 100644 index d0f4c86..0000000 --- a/custom_gallery/app/views/custom_galleries/custom_widget_data.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -<% active_module = @custom_data_field[:bind_module_app] rescue nil %> -<% active_uid = @custom_data_field[:bind_uid] rescue nil %> -<% active_module = @custom_configs.first.module rescue nil if active_module.nil? %> -<% if @custom_configs.length != 0%> -
      - -
      - <%= select_tag("#{@field_name}[custom_data_field][bind_module_app]", options_for_select(@custom_configs.map{|c| [t("module_name.#{c.module}"),c.module]},active_module),{:id=>"custom_bind_module_app"})%> -
      -
      -
      - -
      - <% @custom_configs.each do |c| %> - <% title_field = c.title_field - uid_field = c.uid_field - bind_model = c.bind_model.constantize rescue nil - %> - <% if bind_model %> -
      " data-module="<%= c.module %>"> - <%= select_tag("#{@field_name}[custom_data_field][bind_uid]", options_for_select(bind_model.where(title_field.to_sym.nin=>[nil,""]).map{|target_model| [target_model.send(title_field),target_model.send(uid_field)]},active_uid),{:id=>"custom_bind_uid"})%> -
      - <% end %> - <% end %> -
      -
      - -<% end %> \ No newline at end of file diff --git a/custom_gallery/app/views/custom_galleries/index.html.erb b/custom_gallery/app/views/custom_galleries/index.html.erb deleted file mode 100644 index d2897fd..0000000 --- a/custom_gallery/app/views/custom_galleries/index.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -<%= render_view %> - diff --git a/custom_gallery/app/views/custom_galleries/show.html.erb b/custom_gallery/app/views/custom_galleries/show.html.erb deleted file mode 100644 index 65c2419..0000000 --- a/custom_gallery/app/views/custom_galleries/show.html.erb +++ /dev/null @@ -1,144 +0,0 @@ -<% - params = OrbitHelper.params - page = Page.where(url:params['url']).first - @layout_type = 0 - if page.methods.include?(:select_option_items) - @show_option_items = ModuleApp.where(key: 'custom_gallery').last.show_option_items rescue nil - page.select_option_items.each do |select_option_item| - if !(@show_option_items.nil?) && select_option_item.field_name == @show_option_items.keys.first.to_s - value = YAML.load(select_option_item.value) - tmp = value[:en] - I18n.with_locale(:en) do - if tmp == t('custom_gallery.grid_style') - @layout_type = 0 - elsif tmp == t('custom_gallery.card_style') - @layout_type = 1 - elsif tmp == t('custom_gallery.slideshow_style') - @layout_type = 2 - end - end - end - end - end - data = action_data -%> -<% if @layout_type==0 %> -<%= render_view %> -<% elsif @layout_type==1 %> - - -<% elsif @layout_type==2 %> - -<% end %> -<% OrbitHelper.render_css_in_head(["custom_theater.css"]) %> -<%= javascript_include_tag "jquery.touchSwipe.min" %> -<%= javascript_include_tag "custom_theater" %> -<% OrbitHelper.render_meta_tags([{"name" => "mobile-web-app-capable","content" => "yes"},{"name" => "apple-mobile-web-app-status-bar-style","content" => "black-translucent"}]) %> - - - \ No newline at end of file diff --git a/custom_gallery/app/views/custom_galleries/theater.html.erb b/custom_gallery/app/views/custom_galleries/theater.html.erb deleted file mode 100644 index c76a64b..0000000 --- a/custom_gallery/app/views/custom_galleries/theater.html.erb +++ /dev/null @@ -1,76 +0,0 @@ -<% data = action_data - @images = data["images"] - @custom_album = data["custom_album"] - @image = data["image"] - @back_link = data["back_to_custom_albums"] - @wall_images = data["wall_images"] -%> - -<%= stylesheet_link_tag "custom_gallery_frontend" %> - - - -<%# content_for :page_specific_javascript do %> - <%= javascript_include_tag "custom_galleryAPI_frontend" %> - <%#= javascript_include_tag "jquery.tinyscrollbar" %> - <%= javascript_include_tag "rss" %> -<%# end %> - - - - - - - diff --git a/custom_gallery/bin/rails b/custom_gallery/bin/rails deleted file mode 100644 index 0ebd3ab..0000000 --- a/custom_gallery/bin/rails +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env ruby -# This command will automatically be run when you run "rails" with Rails 4 gems installed from the root of your application. - -ENGINE_ROOT = File.expand_path('../..', __FILE__) -ENGINE_PATH = File.expand_path('../../lib/custom_gallery/engine', __FILE__) - -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) - -require "action_controller/railtie" -require "action_mailer/railtie" -require "sprockets/railtie" -require "rails/test_unit/railtie" -require "mongoid" -require 'rails/engine/commands' diff --git a/custom_gallery/config/locales/en.yml b/custom_gallery/config/locales/en.yml deleted file mode 100644 index 241c352..0000000 --- a/custom_gallery/config/locales/en.yml +++ /dev/null @@ -1,107 +0,0 @@ -en: - module_name: - custom_gallery: Custom Gallery - custom_gallery: - total_amount: Total amount - use_module: Use Module - use_content: Use Content - inner_page_layout: Inner Page Layout - card_style: Card Style - grid_style: Grid Style - slideshow_style: Slideshow style - custom_album_card_background_color: Background Color for custom_album card - custom_album_card_text_color: Text Color for custom_album card - thumb_resize_reference: Resize reference for thumb - gravity: - Center: center - NorthWest: top-left - North: top-center - NorthEast: top-right - West: left-center - East: right-center - SouthWest: left-bottom - South: bottom-center - SouthEast: bottom-right - short-description: Short Description - custom_album_limit_for_one_page: Amount of limit for custom_album in one page - blank_for_nil: blank present no limit - load_html: Load next batch - wait_time: please wait a minute - show_desc: Show the custom_album description - not_show_desc: Don't show the custom_album description - show_original_image: Show the original picture - width: Width - height: Height - review: Review - rotate: Rotate - confirm_msg: Are you sure to rotate images - add_degree: Add 90 degree - reduce_degree: Reduce 90 degree - crop_div: "Please input the degree you want to rotate.
      (positive for clockwise)" - rotate_images: Rotate images - batch_crop: Batch crop images - use_set: Use the previously configured color - add_files: Add files - start_upload: Start upload - cancel_upload: Cancel upload - drop_files_here: Drop files here - success: Success - file_uploaded_successfully: File uploaded successfully - close_panel: Close panel - no_choose: Please select at least one before apply - edit_order: Edit Order - save_order: Save Order - add_tags: Add tags - import: Import - delete_photo: Delete Photo - delete: Delete - deselect: Deselect - back: Back - edit: Edit - add_image: Add Image - progressbar: 'Progress bar' - error: 'Recreate thumb failed, please contact service agent or try again later' - 'sure?': 'Are yoy sure to apply? it will recreate all the thumbs of you choose' - recreate_thumb: 'Frame color' - 'recreate': 'Apply' - transparent: transparent - checked: select all - unchecked: unselect all - add_custom_album: Add CustomAlbum - add_images: Add Images - all: All - new: New - custom_album: CustomAlbum - custom_album_desc: CustomAlbum Description - custom_album_name: CustomAlbum Name - custom_album_not_found: CustomAlbum Not Found - custom_album_tag: CustomAlbum Tag - back_to_custom_albums: Back to CustomAlbums - back_to_photos: Back to Photos - cate_auth: Category Authorization - chinese: Chinese - cover: Cover - del_custom_album: Delete CustomAlbum - del_custom_album?: Delete this custom_album? - delete_selected: Delete Selected - english: English - frontend: - custom_albums: Front-end custom_albums - custom_gallery: CustomGallery - categories: Category - new_category: New Category - no_description: No Decription - photo_tag: Photo Tag - pic_not_found: Picture Not Found - img_link: Image Link - img_description: Image Description - save: Save - save_changes: Save Changes - search_tags: Search Tags - select_category: Select Category - set_cover: Set as Cover - widget: - widget1: Widget1 - widget_option: - horizontal: Horizontal - vertical: Vertical \ No newline at end of file diff --git a/custom_gallery/config/locales/zh_tw.yml b/custom_gallery/config/locales/zh_tw.yml deleted file mode 100644 index 8f4f802..0000000 --- a/custom_gallery/config/locales/zh_tw.yml +++ /dev/null @@ -1,107 +0,0 @@ -zh_tw: - module_name: - custom_gallery: 客製相簿 - custom_gallery: - total_amount: 總數 - use_module: 使用模組 - use_content: 使用內容 - inner_page_layout: 內頁頁面樣式 - card_style: 卡片樣式 - grid_style: 格子排版樣式 - slideshow_style: 輪播樣式 - custom_album_card_background_color: 相簿卡片背景顏色 - custom_album_card_text_color: 相簿卡片文字顏色 - thumb_resize_reference: 縮圖縮放參考 - gravity: - Center: 中心 - NorthWest: 左上 - North: 中心上方 - NorthEast: 右上 - West: 左側中心 - East: 右側中心 - SouthWest: 左下 - South: 中心下方 - SouthEast: 右下 - short-description: 簡短描述 - custom_album_limit_for_one_page: 一頁呈現的相簿數量 - blank_for_nil: 留白表示無限制 - load_html: 存取下一批資料 - wait_time: 請稍等 - show_desc: 顯示相簿描述 - not_show_desc: 不顯示相簿描述 - show_original_image: 顯示原始圖片 - width: 寬 - height: 高 - review: 預覽 - rotate: 旋轉 - confirm_msg: 確定要旋轉圖片嗎? - add_degree: 增加90度 - reduce_degree: 減少90度 - crop_div: "請輸入需要旋轉的角度.
      (順時針為正)" - rotate_images: 旋轉圖片 - batch_crop: 批量裁減圖片 - use_set: 使用先前已設定的顏色 - add_files: 新增檔案 - start_upload: 開始上傳 - cancel_upload: 取消上傳 - drop_files_here: 拖移檔案到此 - success: 成功 - file_uploaded_successfully: 檔案上傳成功 - close_panel: 關閉面板 - no_choose: 請至少選擇一項再按套用 - edit_order: 改變排序 - save_order: 儲存排序 - add_tags: 新增標籤 - import: 匯入 - delete_photo: 刪除圖片 - delete: 刪除 - deselect: 反選 - back: 返回 - edit: 編輯 - add_image: 新增圖片 - cancel: 關閉 - dashboard: 儀表板 - progressbar: 進度條 - error: '重新產生縮圖失敗,請聯絡客服或稍後再試' - 'sure?': '您真的确定要套用嗎? 會重新產生整個相簿的縮圖喔!' - recreate_thumb: 相框底色 - transparent: 透明 - checked: 全選 - unchecked: 全部反選 - recreate: 套用 - add_custom_album: 新增相冊 - add_images: 新增影像 - custom_album: 相冊 - custom_album_desc: 相冊描述 - custom_album_name: 相冊名稱 - custom_album_not_found: 找不到相冊 - custom_album_tag: 相冊標籤 - back_to_custom_albums: 回到相冊 - back_to_photos: 回到相片 - cate_auth: 類別授權 - chinese: 中文 - cover: 封面 - del_custom_album: 刪除相冊 - del_custom_album?: 要刪除這本相簿嗎? - delete_selected: 刪除已選取項目 - english: 英文 - frontend: - custom_albums: 相簿前台 - custom_gallery: 客製相簿 - manage_categories: 管理類別 - new_category: 新增類別 - no_description: 沒有描述 - photo_tag: 相片標籤 - pic_not_found: 找不到圖片 - img_link: 圖片連結 - img_description: 圖片描述 - save: 儲存 - save_changes: 儲存變更 - search_tags: 搜尋標籤 - select_category: 選擇類別 - set_cover: 設定為封面 - widget: - widget1: 插件1 - widget_option: - horizontal: 水平 - vertical: 垂直 \ No newline at end of file diff --git a/custom_gallery/config/routes.rb b/custom_gallery/config/routes.rb deleted file mode 100644 index b242e4a..0000000 --- a/custom_gallery/config/routes.rb +++ /dev/null @@ -1,49 +0,0 @@ -Rails.application.routes.draw do - locales = Site.first.in_use_locales rescue I18n.available_locales - scope "(:locale)", locale: Regexp.new(locales.join("|")) do - get "/xhr/custom_galleries/theater/:id" => "custom_galleries#theater" - namespace :admin do - get "custom_galleries/get_photoData_json" => "custom_galleries#get_photoData_json" - get "custom_galleries/recreate_image" => "custom_galleries#recreate_image" - get "custom_galleries/crop_process" => "custom_images#crop_process" - post "custom_galleries/recreate_image/recreate_progress" => "custom_galleries#recreate_progress" - get "custom_galleries/recreate_image/finish_recreate" => "custom_galleries#finish_recreate" - get "custom_galleries/batch_crop" => "custom_images#batch_crop" - get "custom_galleries/new_images" => "custom_galleries#new_images" - get "custom_galleries/last_image_id" => "custom_galleries#last_image_id" - post "custom_galleries/set_cover" => "custom_galleries#set_cover" - post "custom_galleries/delete_photos" => "custom_images#delete_photos" - post "custom_galleries/update_image" => "custom_images#update_image" - post "custom_galleries/image_tagging" => "custom_images#image_tagging" - post "custom_galleries/order" => "custom_images#changeorder" - post "custom_galleries/translate" => "custom_galleries#call_translate" - post "custom_galleries/save_crop" => "custom_galleries#save_crop" - get "custom_galleries/rotate_images" => "custom_galleries#rotate_images" - get "custom_galleries/upload_process" => "custom_galleries#upload_process" - post "custom_galleries/start_upload_process" => "custom_galleries#start_upload_process" - post "custom_galleries/init_upload" => "custom_galleries#init_upload" - post "custom_galleries/get_tag" => "custom_galleries#get_tag" - post "custom_galleries/update_custom_album_setting" => "custom_galleries#update_custom_album_setting" - get "custom_galleries/setting" => "custom_galleries#setting" - resources :custom_galleries do - get "imgs" => "custom_galleries#imgs" - member do - get "import" - get "excel_format" - post "importimages" - end - collection do - get "/:custom_module-:bind_uid" => "custom_galleries#index" - get "/:custom_module-:bind_uid/new" => "custom_galleries#new" - get "/:custom_module-:bind_uid/:id/edit" => "custom_galleries#edit" - delete "/:custom_module-:bind_uid/:id/destroy" => "custom_galleries#destroy" - - get "/:custom_module" => "custom_galleries#index", constraints: {custom_module: /.{1,23}/} - end - end - resources :custom_images - post "custom_galleries/upload_image" => "custom_galleries#upload_image" - # match "image_tagging" => "custom_album_images#image_tagging" - end - end -end diff --git a/custom_gallery/custom_gallery.gemspec b/custom_gallery/custom_gallery.gemspec deleted file mode 100644 index 964fdbf..0000000 --- a/custom_gallery/custom_gallery.gemspec +++ /dev/null @@ -1,33 +0,0 @@ -$:.push File.expand_path("../lib", __FILE__) - -# Maintain your gem's version: -require "custom_gallery/version" -bundle_update_flag = ARGV[0]=='update' || ARGV[0]=='install' -if bundle_update_flag - env_pwd = ENV['PWD'] - app_path = File.expand_path(__dir__) - template_path = env_pwd + '/app/templates' - all_template = Dir.glob(template_path+'/*/') - all_template.each do |folder| - if !folder.include?('mobile') - if Dir.exist?("#{folder}modules/") - Bundler.with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)} - end - end - end -end -#system ('rm -r '+app_path + '/modules/') -# Describe your gem and declare its dependencies: -Gem::Specification.new do |s| - s.name = "custom_gallery" - s.version = CustomGallery::VERSION - s.authors = ["Ruling Digital Inc."] - s.email = ["orbit@rulingcom.com"] - s.homepage = "http://www.rulingcom.com" - s.summary = "Campus CustomGallery." - s.description = "Campus Galllery" - s.license = "MIT" - - s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] - s.test_files = Dir["test/**/*"] -end diff --git a/custom_gallery/lib/custom_gallery.rb b/custom_gallery/lib/custom_gallery.rb deleted file mode 100644 index 68e5215..0000000 --- a/custom_gallery/lib/custom_gallery.rb +++ /dev/null @@ -1,4 +0,0 @@ -require "custom_gallery/engine" -module CustomGallery - -end diff --git a/custom_gallery/lib/custom_gallery/engine.rb b/custom_gallery/lib/custom_gallery/engine.rb deleted file mode 100644 index a214a41..0000000 --- a/custom_gallery/lib/custom_gallery/engine.rb +++ /dev/null @@ -1,95 +0,0 @@ -module CustomGallery - class Engine < ::Rails::Engine - initializer "custom_gallery" do - begin - translate_data = Dir["#{CustomGallery::Engine.root}/config/locales/*.yml"] .map{|yaml_file| YAML.load(File.read(yaml_file))} - data = {} - key1 = {} - value1 = {} - value2 = {} - value3 = {} - translate_data.each do |t_data| - v = t_data.values - k = t_data.keys[0] - key1[k] = v[0]['custom_gallery']['inner_page_layout'] - value1[k] = v[0]['custom_gallery']['grid_style'] - value2[k] = v[0]['custom_gallery']['card_style'] - value3[k] = v[0]['custom_gallery']['slideshow_style'] - end - data[key1] = [value1,value2,value3] - rescue => e - puts ['error in custom_gallery',e] - end - - require File.expand_path('../../../app/models/custom_album_setting', __FILE__) - if defined?(CustomAlbumSetting) - if CustomAlbumSetting.first.nil? - CustomAlbumSetting.create() - elsif CustomAlbumSetting.count > 1 - CustomAlbumSetting.all.to_a[1..-1].each do |custom_album_setting| - custom_album_setting.destroy - end - end - end - - OrbitApp.registration "CustomGallery", :type => "ModuleApp" do - module_label "custom_gallery.custom_gallery" - base_url File.expand_path File.dirname(__FILE__) - widget_methods ["widget","custom_album_widget"] - # widget_settings [] - widget_settings [{"data_count"=>30,"enable_custom_widget_data"=>true}] - models_to_cache [:custom_album,:custom_album_image] - taggable "CustomAlbum" - categorizable - authorizable - frontend_enabled - data_count 1..30 - begin - show_option_items data - rescue => e - puts ['there_was_no_show_option_method',e] - end - side_bar do - set_sidebar_order(100) rescue nil - head_label_i18n 'custom_gallery.custom_gallery', icon_class: "fa fa-file-image-o" - available_for "users" - active_for_controllers (['admin/custom_galleries','admin/images']) - head_link_path "admin_custom_galleries_path" - - context_link 'custom_gallery.all', - :link_path=>"admin_custom_galleries_path" , - :priority=>1, - :active_for_action=>{'admin/custom_galleries'=>"index"}, - :available_for => 'users' - - # context_link 'custom_gallery.new', - # :link_path=>"new_admin_custom_gallery_path" , - # :priority=>2, - # :active_for_action=>{'admin/custom_galleries'=>"new"}, - # :available_for => 'sub_managers' - - context_link 'categories', - :link_path=>"admin_module_app_categories_path" , - :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'custom_gallery').id}", - :priority=>3, - :active_for_action=>{'admin/custom_galleries'=>'categories'}, - :active_for_category => 'CustomGallery', - :available_for => 'managers' - - context_link 'tags', - :link_path=>"admin_module_app_tags_path" , - :link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'custom_gallery').id}", - :priority=>4, - :active_for_action=>{'admin/custom_galleries'=>'tags'}, - :active_for_tag => 'CustomGallery', - :available_for => 'managers' - context_link 'setting', - :link_path=>"admin_custom_galleries_setting_path" , - :priority=>5, - :active_for_action=>{'admin/custom_galleries'=>'setting'}, - :available_for => 'managers' - end - end - end - end -end diff --git a/custom_gallery/lib/custom_gallery/version.rb b/custom_gallery/lib/custom_gallery/version.rb deleted file mode 100644 index 72d12b3..0000000 --- a/custom_gallery/lib/custom_gallery/version.rb +++ /dev/null @@ -1,3 +0,0 @@ -module CustomGallery - VERSION = "0.0.1" -end diff --git a/custom_gallery/lib/tasks/custom_gallery_tasks.rake b/custom_gallery/lib/tasks/custom_gallery_tasks.rake deleted file mode 100644 index 02194ed..0000000 --- a/custom_gallery/lib/tasks/custom_gallery_tasks.rake +++ /dev/null @@ -1,4 +0,0 @@ -# desc "Explaining what the task does" -# task :custom_gallery do -# # Task goes here -# end diff --git a/custom_gallery/modules/custom_gallery/_custom_gallery_widget1.html.erb b/custom_gallery/modules/custom_gallery/_custom_gallery_widget1.html.erb deleted file mode 100644 index 8c8ff6d..0000000 --- a/custom_gallery/modules/custom_gallery/_custom_gallery_widget1.html.erb +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/custom_gallery/modules/custom_gallery/_custom_gallery_widget2.html.erb b/custom_gallery/modules/custom_gallery/_custom_gallery_widget2.html.erb deleted file mode 100644 index 721de0e..0000000 --- a/custom_gallery/modules/custom_gallery/_custom_gallery_widget2.html.erb +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/custom_gallery/modules/custom_gallery/_custom_gallery_widget3.html.erb b/custom_gallery/modules/custom_gallery/_custom_gallery_widget3.html.erb deleted file mode 100644 index 0a5dc2e..0000000 --- a/custom_gallery/modules/custom_gallery/_custom_gallery_widget3.html.erb +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/custom_gallery/modules/custom_gallery/_custom_gallery_widget4.html.erb b/custom_gallery/modules/custom_gallery/_custom_gallery_widget4.html.erb deleted file mode 100644 index cfd3241..0000000 --- a/custom_gallery/modules/custom_gallery/_custom_gallery_widget4.html.erb +++ /dev/null @@ -1,39 +0,0 @@ - \ No newline at end of file diff --git a/custom_gallery/modules/custom_gallery/_custom_gallery_widget5.html.erb b/custom_gallery/modules/custom_gallery/_custom_gallery_widget5.html.erb deleted file mode 100644 index 7570c11..0000000 --- a/custom_gallery/modules/custom_gallery/_custom_gallery_widget5.html.erb +++ /dev/null @@ -1,73 +0,0 @@ - - - -
      \ No newline at end of file diff --git a/custom_gallery/modules/custom_gallery/custom_gallery_index1.html.erb b/custom_gallery/modules/custom_gallery/custom_gallery_index1.html.erb deleted file mode 100644 index 4531ca1..0000000 --- a/custom_gallery/modules/custom_gallery/custom_gallery_index1.html.erb +++ /dev/null @@ -1,21 +0,0 @@ - -{{pagination_goes_here}} diff --git a/custom_gallery/modules/custom_gallery/custom_gallery_index2.html.erb b/custom_gallery/modules/custom_gallery/custom_gallery_index2.html.erb deleted file mode 100644 index dceb6f4..0000000 --- a/custom_gallery/modules/custom_gallery/custom_gallery_index2.html.erb +++ /dev/null @@ -1,21 +0,0 @@ - -{{pagination_goes_here}} diff --git a/custom_gallery/modules/custom_gallery/custom_gallery_index3.html.erb b/custom_gallery/modules/custom_gallery/custom_gallery_index3.html.erb deleted file mode 100644 index fb8f821..0000000 --- a/custom_gallery/modules/custom_gallery/custom_gallery_index3.html.erb +++ /dev/null @@ -1,20 +0,0 @@ - -{{pagination_goes_here}} diff --git a/custom_gallery/modules/custom_gallery/custom_gallery_index4.html.erb b/custom_gallery/modules/custom_gallery/custom_gallery_index4.html.erb deleted file mode 100644 index 8e69c37..0000000 --- a/custom_gallery/modules/custom_gallery/custom_gallery_index4.html.erb +++ /dev/null @@ -1,20 +0,0 @@ - -{{pagination_goes_here}} diff --git a/custom_gallery/modules/custom_gallery/custom_gallery_index5.html.erb b/custom_gallery/modules/custom_gallery/custom_gallery_index5.html.erb deleted file mode 100644 index 4a5a7a1..0000000 --- a/custom_gallery/modules/custom_gallery/custom_gallery_index5.html.erb +++ /dev/null @@ -1,32 +0,0 @@ - -{{pagination_goes_here}} diff --git a/custom_gallery/modules/custom_gallery/info.json b/custom_gallery/modules/custom_gallery/info.json deleted file mode 100644 index 6eec99f..0000000 --- a/custom_gallery/modules/custom_gallery/info.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "frontend": [ - { - "filename" : "custom_gallery_index1", - "name" : { - "zh_tw" : "1. 縮圖 ( 相本圖片, 相本說明, 分頁導覽 )", - "en" : "1. Thumbnail ( custom_gallery thumbnail, custom_gallery description, page navigation )" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_index2", - "name" : { - "zh_tw" : "2. 條列 ( 相本圖片, 相本說明, 分頁導覽 )", - "en" : "2. Thumbnail ( custom_gallery thumbnail, custom_gallery description, page navigation )" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_index3", - "name" : { - "zh_tw" : "3. 縮圖 ( 相本圖片, 分頁導覽 )", - "en" : "3. Thumbnail ( custom_gallery thumbnail, page navigation )" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_index4", - "name" : { - "zh_tw" : "4. 條列 ( 相本圖片, 分頁導覽 )", - "en" : "4. Thumbnail ( custom_gallery thumbnail, page navigation )" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_index5", - "name" : { - "zh_tw" : "5. 卡片", - "en" : "5. Card" - }, - "thumbnail" : "thumb.png" - } - ], - "widgets" : [ - { - "filename" : "custom_gallery_widget1", - "name" : { - "zh_tw" : "1. 跑馬燈 ( 模組標題, 圖片 )", - "en" : "1. Carousel Effect (widget-title, image)" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_widget2", - "name" : { - "zh_tw" : "2. 相本排版 ( 模組標題, 圖片 )", - "en" : "2. Thumbnail (widget-title, image)" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_widget3", - "name" : { - "zh_tw" : "3. 單本相簿跑馬燈 ( 圖片 )", - "en" : "3. Single Picture With Carousel Effect (image)" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_widget4", - "name" : { - "zh_tw" : "4. 卡片", - "en" : "4. Card" - }, - "thumbnail" : "thumb.png" - }, - { - "filename" : "custom_gallery_widget5", - "name" : { - "zh_tw" : "5. 投影片式輪播", - "en" : "5. Slide" - }, - "thumbnail" : "thumb.png" - } - ] -} \ No newline at end of file diff --git a/custom_gallery/modules/custom_gallery/show.html.erb b/custom_gallery/modules/custom_gallery/show.html.erb deleted file mode 100644 index 17c6d27..0000000 --- a/custom_gallery/modules/custom_gallery/show.html.erb +++ /dev/null @@ -1,18 +0,0 @@ - \ No newline at end of file diff --git a/custom_gallery/modules/custom_gallery/thumbs/thumb.png b/custom_gallery/modules/custom_gallery/thumbs/thumb.png deleted file mode 100644 index 266af56..0000000 Binary files a/custom_gallery/modules/custom_gallery/thumbs/thumb.png and /dev/null differ diff --git a/custom_gallery/source.txt b/custom_gallery/source.txt deleted file mode 100644 index 9e211c5..0000000 --- a/custom_gallery/source.txt +++ /dev/null @@ -1 +0,0 @@ -http://gitlab.tp.rulingcom.com/chiu/custom_gallery.git \ No newline at end of file diff --git a/custom_gallery/test/controllers/admin/custom_galleries_controller_test.rb b/custom_gallery/test/controllers/admin/custom_galleries_controller_test.rb deleted file mode 100644 index 8da6e84..0000000 --- a/custom_gallery/test/controllers/admin/custom_galleries_controller_test.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'test_helper' - -class Admin::CustomGalleriesControllerTest < ActionController::TestCase - test "should get index" do - get :index - assert_response :success - end - -end diff --git a/custom_gallery/test/custom_gallery_test.rb b/custom_gallery/test/custom_gallery_test.rb deleted file mode 100644 index 2d2f7f1..0000000 --- a/custom_gallery/test/custom_gallery_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'test_helper' - -class CustomGalleryTest < ActiveSupport::TestCase - test "truth" do - assert_kind_of Module, CustomGallery - end -end diff --git a/custom_gallery/test/dummy/README.rdoc b/custom_gallery/test/dummy/README.rdoc deleted file mode 100644 index dd4e97e..0000000 --- a/custom_gallery/test/dummy/README.rdoc +++ /dev/null @@ -1,28 +0,0 @@ -== README - -This README would normally document whatever steps are necessary to get the -application up and running. - -Things you may want to cover: - -* Ruby version - -* System dependencies - -* Configuration - -* Database creation - -* Database initialization - -* How to run the test suite - -* Services (job queues, cache servers, search engines, etc.) - -* Deployment instructions - -* ... - - -Please feel free to use a different markup language if you do not plan to run -rake doc:app. diff --git a/custom_gallery/test/dummy/Rakefile b/custom_gallery/test/dummy/Rakefile deleted file mode 100644 index ba6b733..0000000 --- a/custom_gallery/test/dummy/Rakefile +++ /dev/null @@ -1,6 +0,0 @@ -# Add your own tasks in files placed in lib/tasks ending in .rake, -# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. - -require File.expand_path('../config/application', __FILE__) - -Rails.application.load_tasks diff --git a/custom_gallery/test/dummy/app/assets/images/.keep b/custom_gallery/test/dummy/app/assets/images/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/app/assets/javascripts/application.js b/custom_gallery/test/dummy/app/assets/javascripts/application.js deleted file mode 100644 index 5bc2e1c..0000000 --- a/custom_gallery/test/dummy/app/assets/javascripts/application.js +++ /dev/null @@ -1,13 +0,0 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, -// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. -// -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// compiled file. -// -// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require_tree . diff --git a/custom_gallery/test/dummy/app/assets/stylesheets/application.css b/custom_gallery/test/dummy/app/assets/stylesheets/application.css deleted file mode 100644 index a443db3..0000000 --- a/custom_gallery/test/dummy/app/assets/stylesheets/application.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This is a manifest file that'll be compiled into application.css, which will include all the files - * listed below. - * - * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, - * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. - * - * You're free to add application-wide styles to this file and they'll appear at the bottom of the - * compiled file so the styles you add here take precedence over styles defined in any styles - * defined in the other CSS/SCSS files in this directory. It is generally better to create a new - * file per style scope. - * - *= require_tree . - *= require_self - */ diff --git a/custom_gallery/test/dummy/app/controllers/application_controller.rb b/custom_gallery/test/dummy/app/controllers/application_controller.rb deleted file mode 100644 index d83690e..0000000 --- a/custom_gallery/test/dummy/app/controllers/application_controller.rb +++ /dev/null @@ -1,5 +0,0 @@ -class ApplicationController < ActionController::Base - # Prevent CSRF attacks by raising an exception. - # For APIs, you may want to use :null_session instead. - protect_from_forgery with: :exception -end diff --git a/custom_gallery/test/dummy/app/controllers/concerns/.keep b/custom_gallery/test/dummy/app/controllers/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/app/helpers/application_helper.rb b/custom_gallery/test/dummy/app/helpers/application_helper.rb deleted file mode 100644 index de6be79..0000000 --- a/custom_gallery/test/dummy/app/helpers/application_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ApplicationHelper -end diff --git a/custom_gallery/test/dummy/app/mailers/.keep b/custom_gallery/test/dummy/app/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/app/models/.keep b/custom_gallery/test/dummy/app/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/app/models/concerns/.keep b/custom_gallery/test/dummy/app/models/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/app/views/layouts/application.html.erb b/custom_gallery/test/dummy/app/views/layouts/application.html.erb deleted file mode 100644 index 593a778..0000000 --- a/custom_gallery/test/dummy/app/views/layouts/application.html.erb +++ /dev/null @@ -1,14 +0,0 @@ - - - - Dummy - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> - <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> - <%= csrf_meta_tags %> - - - -<%= yield %> - - - diff --git a/custom_gallery/test/dummy/bin/bundle b/custom_gallery/test/dummy/bin/bundle deleted file mode 100644 index 66e9889..0000000 --- a/custom_gallery/test/dummy/bin/bundle +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -load Gem.bin_path('bundler', 'bundle') diff --git a/custom_gallery/test/dummy/bin/rails b/custom_gallery/test/dummy/bin/rails deleted file mode 100644 index 728cd85..0000000 --- a/custom_gallery/test/dummy/bin/rails +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../../config/application', __FILE__) -require_relative '../config/boot' -require 'rails/commands' diff --git a/custom_gallery/test/dummy/bin/rake b/custom_gallery/test/dummy/bin/rake deleted file mode 100644 index 1724048..0000000 --- a/custom_gallery/test/dummy/bin/rake +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -require_relative '../config/boot' -require 'rake' -Rake.application.run diff --git a/custom_gallery/test/dummy/config.ru b/custom_gallery/test/dummy/config.ru deleted file mode 100644 index 5bc2a61..0000000 --- a/custom_gallery/test/dummy/config.ru +++ /dev/null @@ -1,4 +0,0 @@ -# This file is used by Rack-based servers to start the application. - -require ::File.expand_path('../config/environment', __FILE__) -run Rails.application diff --git a/custom_gallery/test/dummy/config/application.rb b/custom_gallery/test/dummy/config/application.rb deleted file mode 100644 index e56fcad..0000000 --- a/custom_gallery/test/dummy/config/application.rb +++ /dev/null @@ -1,29 +0,0 @@ -require File.expand_path('../boot', __FILE__) - -# Pick the frameworks you want: -# require "active_record/railtie" -require "action_controller/railtie" -require "action_mailer/railtie" -require "action_view/railtie" -require "sprockets/railtie" -require "rails/test_unit/railtie" - -Bundler.require(*Rails.groups) -require "custom_gallery" - -module Dummy - class Application < Rails::Application - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. - - # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. - # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. - # config.time_zone = 'Central Time (US & Canada)' - - # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - # config.i18n.default_locale = :de - end -end - diff --git a/custom_gallery/test/dummy/config/boot.rb b/custom_gallery/test/dummy/config/boot.rb deleted file mode 100644 index 6266cfc..0000000 --- a/custom_gallery/test/dummy/config/boot.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__) - -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) -$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__) diff --git a/custom_gallery/test/dummy/config/environment.rb b/custom_gallery/test/dummy/config/environment.rb deleted file mode 100644 index ee8d90d..0000000 --- a/custom_gallery/test/dummy/config/environment.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Load the Rails application. -require File.expand_path('../application', __FILE__) - -# Initialize the Rails application. -Rails.application.initialize! diff --git a/custom_gallery/test/dummy/config/environments/development.rb b/custom_gallery/test/dummy/config/environments/development.rb deleted file mode 100644 index a384d95..0000000 --- a/custom_gallery/test/dummy/config/environments/development.rb +++ /dev/null @@ -1,34 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # In the development environment your application's code is reloaded on - # every request. This slows down response time but is perfect for development - # since you don't have to restart the web server when you make code changes. - config.cache_classes = false - - # Do not eager load code on boot. - config.eager_load = false - - # Show full error reports and disable caching. - config.consider_all_requests_local = true - config.action_controller.perform_caching = false - - # Don't care if the mailer can't send. - config.action_mailer.raise_delivery_errors = false - - # Print deprecation notices to the Rails logger. - config.active_support.deprecation = :log - - # Debug mode disables concatenation and preprocessing of assets. - # This option may cause significant delays in view rendering with a large - # number of complex assets. - config.assets.debug = true - - # Adds additional error checking when serving assets at runtime. - # Checks for improperly declared sprockets dependencies. - # Raises helpful error messages. - config.assets.raise_runtime_errors = true - - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true -end diff --git a/custom_gallery/test/dummy/config/environments/production.rb b/custom_gallery/test/dummy/config/environments/production.rb deleted file mode 100644 index 4f67ce3..0000000 --- a/custom_gallery/test/dummy/config/environments/production.rb +++ /dev/null @@ -1,80 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # Code is not reloaded between requests. - config.cache_classes = true - - # Eager load code on boot. This eager loads most of Rails and - # your application in memory, allowing both threaded web servers - # and those relying on copy on write to perform better. - # Rake tasks automatically ignore this option for performance. - config.eager_load = true - - # Full error reports are disabled and caching is turned on. - config.consider_all_requests_local = false - config.action_controller.perform_caching = true - - # Enable Rack::Cache to put a simple HTTP cache in front of your application - # Add `rack-cache` to your Gemfile before enabling this. - # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. - # config.action_dispatch.rack_cache = true - - # Disable Rails's static asset server (Apache or nginx will already do this). - config.serve_static_assets = false - - # Compress JavaScripts and CSS. - config.assets.js_compressor = :uglifier - # config.assets.css_compressor = :sass - - # Do not fallback to assets pipeline if a precompiled asset is missed. - config.assets.compile = false - - # Generate digests for assets URLs. - config.assets.digest = true - - # Version of your assets, change this if you want to expire all your assets. - config.assets.version = '1.0' - - # Specifies the header that your server uses for sending files. - # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache - # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx - - # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. - # config.force_ssl = true - - # Set to :debug to see everything in the log. - config.log_level = :info - - # Prepend all log lines with the following tags. - # config.log_tags = [ :subdomain, :uuid ] - - # Use a different logger for distributed setups. - # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) - - # Use a different cache store in production. - # config.cache_store = :mem_cache_store - - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = "http://assets.example.com" - - # Precompile additional assets. - # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. - # config.assets.precompile += %w( search.js ) - - # Ignore bad email addresses and do not raise email delivery errors. - # Set this to true and configure the email server for immediate delivery to raise delivery errors. - # config.action_mailer.raise_delivery_errors = false - - # Enable locale fallbacks for I18n (makes lookups for any locale fall back to - # the I18n.default_locale when a translation cannot be found). - config.i18n.fallbacks = true - - # Send deprecation notices to registered listeners. - config.active_support.deprecation = :notify - - # Disable automatic flushing of the log to improve performance. - # config.autoflush_log = false - - # Use default logging formatter so that PID and timestamp are not suppressed. - config.log_formatter = ::Logger::Formatter.new -end diff --git a/custom_gallery/test/dummy/config/environments/test.rb b/custom_gallery/test/dummy/config/environments/test.rb deleted file mode 100644 index 053f5b6..0000000 --- a/custom_gallery/test/dummy/config/environments/test.rb +++ /dev/null @@ -1,39 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # The test environment is used exclusively to run your application's - # test suite. You never need to work with it otherwise. Remember that - # your test database is "scratch space" for the test suite and is wiped - # and recreated between test runs. Don't rely on the data there! - config.cache_classes = true - - # Do not eager load code on boot. This avoids loading your whole application - # just for the purpose of running a single test. If you are using a tool that - # preloads Rails for running tests, you may have to set it to true. - config.eager_load = false - - # Configure static asset server for tests with Cache-Control for performance. - config.serve_static_assets = true - config.static_cache_control = 'public, max-age=3600' - - # Show full error reports and disable caching. - config.consider_all_requests_local = true - config.action_controller.perform_caching = false - - # Raise exceptions instead of rendering exception templates. - config.action_dispatch.show_exceptions = false - - # Disable request forgery protection in test environment. - config.action_controller.allow_forgery_protection = false - - # Tell Action Mailer not to deliver emails to the real world. - # The :test delivery method accumulates sent emails in the - # ActionMailer::Base.deliveries array. - config.action_mailer.delivery_method = :test - - # Print deprecation notices to the stderr. - config.active_support.deprecation = :stderr - - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true -end diff --git a/custom_gallery/test/dummy/config/initializers/backtrace_silencers.rb b/custom_gallery/test/dummy/config/initializers/backtrace_silencers.rb deleted file mode 100644 index 59385cd..0000000 --- a/custom_gallery/test/dummy/config/initializers/backtrace_silencers.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. -# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } - -# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. -# Rails.backtrace_cleaner.remove_silencers! diff --git a/custom_gallery/test/dummy/config/initializers/cookies_serializer.rb b/custom_gallery/test/dummy/config/initializers/cookies_serializer.rb deleted file mode 100644 index 7a06a89..0000000 --- a/custom_gallery/test/dummy/config/initializers/cookies_serializer.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.action_dispatch.cookies_serializer = :json \ No newline at end of file diff --git a/custom_gallery/test/dummy/config/initializers/filter_parameter_logging.rb b/custom_gallery/test/dummy/config/initializers/filter_parameter_logging.rb deleted file mode 100644 index 4a994e1..0000000 --- a/custom_gallery/test/dummy/config/initializers/filter_parameter_logging.rb +++ /dev/null @@ -1,4 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Configure sensitive parameters which will be filtered from the log file. -Rails.application.config.filter_parameters += [:password] diff --git a/custom_gallery/test/dummy/config/initializers/inflections.rb b/custom_gallery/test/dummy/config/initializers/inflections.rb deleted file mode 100644 index ac033bf..0000000 --- a/custom_gallery/test/dummy/config/initializers/inflections.rb +++ /dev/null @@ -1,16 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Add new inflection rules using the following format. Inflections -# are locale specific, and you may define rules for as many different -# locales as you wish. All of these examples are active by default: -# ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.plural /^(ox)$/i, '\1en' -# inflect.singular /^(ox)en/i, '\1' -# inflect.irregular 'person', 'people' -# inflect.uncountable %w( fish sheep ) -# end - -# These inflection rules are supported but not enabled by default: -# ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.acronym 'RESTful' -# end diff --git a/custom_gallery/test/dummy/config/initializers/mime_types.rb b/custom_gallery/test/dummy/config/initializers/mime_types.rb deleted file mode 100644 index dc18996..0000000 --- a/custom_gallery/test/dummy/config/initializers/mime_types.rb +++ /dev/null @@ -1,4 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Add new mime types for use in respond_to blocks: -# Mime::Type.register "text/richtext", :rtf diff --git a/custom_gallery/test/dummy/config/initializers/session_store.rb b/custom_gallery/test/dummy/config/initializers/session_store.rb deleted file mode 100644 index e766b67..0000000 --- a/custom_gallery/test/dummy/config/initializers/session_store.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.session_store :cookie_store, key: '_dummy_session' diff --git a/custom_gallery/test/dummy/config/initializers/wrap_parameters.rb b/custom_gallery/test/dummy/config/initializers/wrap_parameters.rb deleted file mode 100644 index b81ea74..0000000 --- a/custom_gallery/test/dummy/config/initializers/wrap_parameters.rb +++ /dev/null @@ -1,9 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# This file contains settings for ActionController::ParamsWrapper which -# is enabled by default. - -# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. -ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] if respond_to?(:wrap_parameters) -end diff --git a/custom_gallery/test/dummy/config/locales/en.yml b/custom_gallery/test/dummy/config/locales/en.yml deleted file mode 100644 index 0653957..0000000 --- a/custom_gallery/test/dummy/config/locales/en.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Files in the config/locales directory are used for internationalization -# and are automatically loaded by Rails. If you want to use locales other -# than English, add the necessary files in this directory. -# -# To use the locales, use `I18n.t`: -# -# I18n.t 'hello' -# -# In views, this is aliased to just `t`: -# -# <%= t('hello') %> -# -# To use a different locale, set it with `I18n.locale`: -# -# I18n.locale = :es -# -# This would use the information in config/locales/es.yml. -# -# To learn more, please read the Rails Internationalization guide -# available at http://guides.rubyonrails.org/i18n.html. - -en: - hello: "Hello world" diff --git a/custom_gallery/test/dummy/config/routes.rb b/custom_gallery/test/dummy/config/routes.rb deleted file mode 100644 index 3f66539..0000000 --- a/custom_gallery/test/dummy/config/routes.rb +++ /dev/null @@ -1,56 +0,0 @@ -Rails.application.routes.draw do - # The priority is based upon order of creation: first created -> highest priority. - # See how all your routes lay out with "rake routes". - - # You can have the root of your site routed with "root" - # root 'welcome#index' - - # Example of regular route: - # get 'products/:id' => 'catalog#view' - - # Example of named route that can be invoked with purchase_url(id: product.id) - # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase - - # Example resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Example resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Example resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Example resource route with more complex sub-resources: - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', on: :collection - # end - # end - - # Example resource route with concerns: - # concern :toggleable do - # post 'toggle' - # end - # resources :posts, concerns: :toggleable - # resources :photos, concerns: :toggleable - - # Example resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end -end diff --git a/custom_gallery/test/dummy/config/secrets.yml b/custom_gallery/test/dummy/config/secrets.yml deleted file mode 100644 index 71627a1..0000000 --- a/custom_gallery/test/dummy/config/secrets.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Your secret key is used for verifying the integrity of signed cookies. -# If you change this key, all old signed cookies will become invalid! - -# Make sure the secret is at least 30 characters and all random, -# no regular words or you'll be exposed to dictionary attacks. -# You can use `rake secret` to generate a secure secret key. - -# Make sure the secrets in this file are kept private -# if you're sharing your code publicly. - -development: - secret_key_base: ff4471524b4489ec0613567f06096c46920513dfcbf29b1a79ad705512cc0272a0aa3219cb163e29e1ad39a6b537f811700834b1924c7b453c8932c9d7bf3e85 - -test: - secret_key_base: 58df89e57dbb1fa1252eed82b37d078fd9c0d1725290bf7201fcf37fc0fad59a616d294cbaad869cf132b4e08b8fd5e01f05dfe4b7fabcc5e8c6fd56fe5b808b - -# Do not keep production secrets in the repository, -# instead read values from the environment. -production: - secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/custom_gallery/test/dummy/lib/assets/.keep b/custom_gallery/test/dummy/lib/assets/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/log/.keep b/custom_gallery/test/dummy/log/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/dummy/public/404.html b/custom_gallery/test/dummy/public/404.html deleted file mode 100644 index b612547..0000000 --- a/custom_gallery/test/dummy/public/404.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - The page you were looking for doesn't exist (404) - - - - - - -
      -
      -

      The page you were looking for doesn't exist.

      -

      You may have mistyped the address or the page may have moved.

      -
      -

      If you are the application owner check the logs for more information.

      -
      - - diff --git a/custom_gallery/test/dummy/public/422.html b/custom_gallery/test/dummy/public/422.html deleted file mode 100644 index a21f82b..0000000 --- a/custom_gallery/test/dummy/public/422.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - The change you wanted was rejected (422) - - - - - - -
      -
      -

      The change you wanted was rejected.

      -

      Maybe you tried to change something you didn't have access to.

      -
      -

      If you are the application owner check the logs for more information.

      -
      - - diff --git a/custom_gallery/test/dummy/public/500.html b/custom_gallery/test/dummy/public/500.html deleted file mode 100644 index 061abc5..0000000 --- a/custom_gallery/test/dummy/public/500.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - We're sorry, but something went wrong (500) - - - - - - -
      -
      -

      We're sorry, but something went wrong.

      -
      -

      If you are the application owner check the logs for more information.

      -
      - - diff --git a/custom_gallery/test/dummy/public/favicon.ico b/custom_gallery/test/dummy/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/custom_gallery/test/helpers/admin/custom_galleries_helper_test.rb b/custom_gallery/test/helpers/admin/custom_galleries_helper_test.rb deleted file mode 100644 index 8c119ed..0000000 --- a/custom_gallery/test/helpers/admin/custom_galleries_helper_test.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'test_helper' - -class Admin::CustomGalleriesHelperTest < ActionView::TestCase -end diff --git a/custom_gallery/test/integration/navigation_test.rb b/custom_gallery/test/integration/navigation_test.rb deleted file mode 100644 index eec8c0e..0000000 --- a/custom_gallery/test/integration/navigation_test.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'test_helper' - -class NavigationTest < ActionDispatch::IntegrationTest - - # test "the truth" do - # assert true - # end -end - diff --git a/custom_gallery/test/test_helper.rb b/custom_gallery/test/test_helper.rb deleted file mode 100644 index 1e26a31..0000000 --- a/custom_gallery/test/test_helper.rb +++ /dev/null @@ -1,15 +0,0 @@ -# Configure Rails Environment -ENV["RAILS_ENV"] = "test" - -require File.expand_path("../dummy/config/environment.rb", __FILE__) -require "rails/test_help" - -Rails.backtrace_cleaner.remove_silencers! - -# Load support files -Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } - -# Load fixtures from the engine -if ActiveSupport::TestCase.method_defined?(:fixture_path=) - ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__) -end