Version Description
~ Fixed some bugs
Download this release
Release Info
Developer | tunnhn |
Plugin | LearnPress – WordPress LMS Plugin |
Version | 2.1.7.4 |
Comparing to | |
See all releases |
Code changes from version 2.1.3 to 2.1.7.4
- assets/css/_icons.css +77 -75
- assets/css/admin/admin.css +158 -50
- assets/css/admin/attributes.css +2 -0
- assets/css/admin/course-editor.css +253 -251
- assets/css/admin/meta-box-course.css +78 -141
- assets/css/admin/meta-box-order.css +151 -149
- assets/css/admin/meta-box-question.css +0 -52
- assets/css/learnpress.css +450 -101
- assets/css/owl.carousel.css +0 -71
- assets/js/Chart.bundle.min.js +16 -0
- assets/js/admin/admin.js +2 -2
- assets/js/admin/attributes.js +6 -1
- assets/js/admin/course-editor.js +6 -6
- assets/js/admin/meta-box-course.js +46 -102
- assets/js/admin/meta-box-order.js +68 -18
- assets/js/admin/meta-box-quiz.js +13 -1
- assets/js/admin/modal-search-items.js +17 -6
- assets/js/admin/settings.js +29 -3
- assets/js/frontend/add-to-cart.js +27 -26
- assets/js/frontend/bak.course-lesson.js +0 -223
- assets/js/frontend/bak.course-quiz.js +0 -45
- assets/js/frontend/bak.single-course.v2.js +0 -245
- assets/js/frontend/bak.single-quiz.js +0 -731
- assets/js/frontend/checkout.js +4 -2
- assets/js/frontend/course-filters.js +146 -0
- assets/js/frontend/course_coming_soon.js +0 -28
- assets/js/frontend/course_coming_soon.min.js +0 -28
- assets/js/frontend/learnpress.js +1 -2
- assets/js/frontend/lesson.js +3 -6
- assets/js/frontend/profile.js +0 -236
- assets/js/frontend/quiz.js +9 -3
- assets/js/frontend/single-course.js +77 -24
- assets/js/global.js +126 -29
- assets/js/global.min.js +2 -2
- assets/js/jquery.cropit.js +0 -1207
- assets/js/jquery.mb-comingsoon.js +0 -346
- assets/js/jquery.mb-comingsoon.min.js +0 -1
- assets/js/jquery.ocupload.js +0 -277
- assets/{css → less}/_icons.less +0 -0
- assets/{css → less}/admin/admin.less +150 -36
- assets/{css → less}/admin/attributes.less +3 -2
- assets/{css → less}/admin/course-editor.less +0 -0
- {inc/libraries/meta-box/css → assets/less/admin}/index.php +0 -0
- assets/{css → less}/admin/meta-box-course.less +108 -176
- {inc/libraries/meta-box/css/jqueryui → assets/less}/index.php +0 -0
- assets/{css → less}/learnpress.less +438 -44
- inc/admin/class-lp-admin-ajax.php +112 -38
- inc/admin/class-lp-admin-menu.php +25 -3
- inc/admin/class-lp-admin.php +1 -0
- inc/admin/class-lp-meta-box-tabs.php +2 -1
- inc/admin/class-lp-profile.php +0 -139
- inc/admin/dashboard-statistics/class-lp-statistic-status.php +4 -4
- inc/admin/includes/class-markdown-parse.php +7 -5
- inc/admin/lp-admin-actions.php +26 -18
- inc/admin/lp-admin-functions.php +1980 -1664
- inc/admin/meta-boxes/class-course-tabs-field.php +1 -1
- inc/admin/meta-boxes/class-curriculum-field.php +0 -316
- inc/admin/meta-boxes/class-meta-box-tabs.php +0 -18
- inc/{libraries/meta-box/inc/fields → admin/meta-boxes}/duration.php +80 -67
- inc/admin/settings/class-lp-settings-courses.php +32 -4
- inc/admin/settings/class-lp-settings-emails.php +44 -21
- inc/admin/settings/class-lp-settings-general.php +11 -1
- inc/admin/settings/class-lp-settings-pages.php +1 -1
- inc/admin/sub-menus/settings.php +11 -0
- inc/admin/sub-menus/statistics.php +10 -1
- inc/admin/sub-menus/tools.php +24 -16
- inc/admin/views/html-admin-notice-templates.php +13 -9
- inc/admin/views/meta-boxes/course/attributes.php +0 -7
- inc/admin/views/meta-boxes/course/curriculum.php +33 -33
- inc/admin/views/meta-boxes/course/loop-item.php +56 -36
- inc/admin/views/meta-boxes/course/loop-section.php +26 -55
- inc/admin/views/meta-boxes/course/review-logs.php +2 -2
- inc/admin/views/meta-boxes/order/actions.php +33 -10
- inc/admin/views/meta-boxes/order/details.php +25 -12
- inc/admin/views/meta-boxes/order/order-item.php +5 -0
- inc/admin/views/meta-boxes/question/multi-choice-options.php +75 -7
- inc/admin/views/meta-boxes/tabs.php +13 -2
- inc/admin/views/question/html-base-option.php +137 -0
- inc/admin/views/settings/emails/enrolled-course-admin.php +76 -0
- inc/admin/views/settings/emails/update-course.php +50 -0
- inc/admin/views/settings/emails/user-order-changed-status.php +68 -0
- inc/admin/views/settings/fields/course-permalink.php +16 -13
- inc/admin/views/statistics/general.php +72 -0
- inc/api/class-lp-api.php +4 -0
- inc/attributes/lp-attributes-functions.php +82 -5
- inc/class-lp-ajax.php +109 -27
assets/css/_icons.css
CHANGED
@@ -1,75 +1,77 @@
|
|
1 |
-
@font-face {
|
2 |
-
font-family: 'lp-icons';
|
3 |
-
src: url('fonts/icons.eot?6gvjr0');
|
4 |
-
src: url('fonts/icons.eot?6gvjr0#iefix') format('embedded-opentype'), url('fonts/icons.ttf?6gvjr0') format('truetype'), url('fonts/icons.woff?6gvjr0') format('woff'), url('fonts/icons.svg?6gvjr0#icons') format('svg');
|
5 |
-
font-weight: normal;
|
6 |
-
font-style: normal;
|
7 |
-
}
|
8 |
-
[class^="lp-icon-"],
|
9 |
-
[class*=" lp-icon-"] {
|
10 |
-
/* use !important to prevent issues with browser extensions that change fonts */
|
11 |
-
font-family: 'lp-icons' !important;
|
12 |
-
speak: none;
|
13 |
-
font-style: normal;
|
14 |
-
font-weight: normal;
|
15 |
-
font-variant: normal;
|
16 |
-
text-transform: none;
|
17 |
-
line-height: 1;
|
18 |
-
/* Better Font Rendering =========== */
|
19 |
-
-webkit-font-smoothing: antialiased;
|
20 |
-
-moz-osx-font-smoothing: grayscale;
|
21 |
-
}
|
22 |
-
.lp-icon-file-text:before {
|
23 |
-
content: "\e926";
|
24 |
-
}
|
25 |
-
.icon-file-picture:before {
|
26 |
-
content: "\e927";
|
27 |
-
}
|
28 |
-
.icon-file-music:before {
|
29 |
-
content: "\e928";
|
30 |
-
}
|
31 |
-
.icon-file-video:before {
|
32 |
-
content: "\e92a";
|
33 |
-
}
|
34 |
-
.icon-file-zip:before {
|
35 |
-
content: "\e92b";
|
36 |
-
}
|
37 |
-
.icon-paste:before {
|
38 |
-
content: "\e92d";
|
39 |
-
}
|
40 |
-
.icon-alarm:before {
|
41 |
-
content: "\e950";
|
42 |
-
}
|
43 |
-
@font-face {
|
44 |
-
font-family: 'learnpress';
|
45 |
-
src: url('../fonts/icon.eot?ym8b3w');
|
46 |
-
src: url('../fonts/icon.eot?ym8b3w#iefix') format('embedded-opentype'), url('../fonts/icon.ttf?ym8b3w') format('truetype'), url('../fonts/icon.woff?ym8b3w') format('woff'), url('../fonts/icon.svg?ym8b3w#icon') format('svg');
|
47 |
-
font-weight: normal;
|
48 |
-
font-style: normal;
|
49 |
-
}
|
50 |
-
[class^="learn-press-icon-"],
|
51 |
-
[class*=" learn-press-icon-"],
|
52 |
-
.learn-press-icon {
|
53 |
-
font-family: 'learnpress';
|
54 |
-
/*speak: none;*/
|
55 |
-
font-style: normal;
|
56 |
-
font-weight: normal;
|
57 |
-
font-variant: normal;
|
58 |
-
text-transform: none;
|
59 |
-
line-height: 1;
|
60 |
-
/* Better Font Rendering =========== */
|
61 |
-
-webkit-font-smoothing: antialiased;
|
62 |
-
-moz-osx-font-smoothing: grayscale;
|
63 |
-
}
|
64 |
-
.icon-checkmark:before {
|
65 |
-
content: "\e903";
|
66 |
-
}
|
67 |
-
.icon-books:before {
|
68 |
-
content: "\e900";
|
69 |
-
}
|
70 |
-
.icon-alarm:before {
|
71 |
-
content: "\e901";
|
72 |
-
}
|
73 |
-
.icon-spinner:before {
|
74 |
-
content: "\e902";
|
75 |
-
}
|
|
|
|
1 |
+
@font-face {
|
2 |
+
font-family: 'lp-icons';
|
3 |
+
src: url('fonts/icons.eot?6gvjr0');
|
4 |
+
src: url('fonts/icons.eot?6gvjr0#iefix') format('embedded-opentype'), url('fonts/icons.ttf?6gvjr0') format('truetype'), url('fonts/icons.woff?6gvjr0') format('woff'), url('fonts/icons.svg?6gvjr0#icons') format('svg');
|
5 |
+
font-weight: normal;
|
6 |
+
font-style: normal;
|
7 |
+
}
|
8 |
+
[class^="lp-icon-"],
|
9 |
+
[class*=" lp-icon-"] {
|
10 |
+
/* use !important to prevent issues with browser extensions that change fonts */
|
11 |
+
font-family: 'lp-icons' !important;
|
12 |
+
speak: none;
|
13 |
+
font-style: normal;
|
14 |
+
font-weight: normal;
|
15 |
+
font-variant: normal;
|
16 |
+
text-transform: none;
|
17 |
+
line-height: 1;
|
18 |
+
/* Better Font Rendering =========== */
|
19 |
+
-webkit-font-smoothing: antialiased;
|
20 |
+
-moz-osx-font-smoothing: grayscale;
|
21 |
+
}
|
22 |
+
.lp-icon-file-text:before {
|
23 |
+
content: "\e926";
|
24 |
+
}
|
25 |
+
.icon-file-picture:before {
|
26 |
+
content: "\e927";
|
27 |
+
}
|
28 |
+
.icon-file-music:before {
|
29 |
+
content: "\e928";
|
30 |
+
}
|
31 |
+
.icon-file-video:before {
|
32 |
+
content: "\e92a";
|
33 |
+
}
|
34 |
+
.icon-file-zip:before {
|
35 |
+
content: "\e92b";
|
36 |
+
}
|
37 |
+
.icon-paste:before {
|
38 |
+
content: "\e92d";
|
39 |
+
}
|
40 |
+
.icon-alarm:before {
|
41 |
+
content: "\e950";
|
42 |
+
}
|
43 |
+
@font-face {
|
44 |
+
font-family: 'learnpress';
|
45 |
+
src: url('../fonts/icon.eot?ym8b3w');
|
46 |
+
src: url('../fonts/icon.eot?ym8b3w#iefix') format('embedded-opentype'), url('../fonts/icon.ttf?ym8b3w') format('truetype'), url('../fonts/icon.woff?ym8b3w') format('woff'), url('../fonts/icon.svg?ym8b3w#icon') format('svg');
|
47 |
+
font-weight: normal;
|
48 |
+
font-style: normal;
|
49 |
+
}
|
50 |
+
[class^="learn-press-icon-"],
|
51 |
+
[class*=" learn-press-icon-"],
|
52 |
+
.learn-press-icon {
|
53 |
+
font-family: 'learnpress';
|
54 |
+
/*speak: none;*/
|
55 |
+
font-style: normal;
|
56 |
+
font-weight: normal;
|
57 |
+
font-variant: normal;
|
58 |
+
text-transform: none;
|
59 |
+
line-height: 1;
|
60 |
+
/* Better Font Rendering =========== */
|
61 |
+
-webkit-font-smoothing: antialiased;
|
62 |
+
-moz-osx-font-smoothing: grayscale;
|
63 |
+
}
|
64 |
+
.icon-checkmark:before {
|
65 |
+
content: "\e903";
|
66 |
+
}
|
67 |
+
.icon-books:before {
|
68 |
+
content: "\e900";
|
69 |
+
}
|
70 |
+
.icon-alarm:before {
|
71 |
+
content: "\e901";
|
72 |
+
}
|
73 |
+
.icon-spinner:before {
|
74 |
+
content: "\e902";
|
75 |
+
}
|
76 |
+
|
77 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9pY29ucy5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksYUFBYSxVQUFiO0VBQ0EsU0FBWSx5QkFBWjtFQUNBLFNBQVksZ0NBQWdDLE9BQU8sMEJBQy9DLDBCQUEwQixPQUFPLGlCQUNqQywyQkFBMkIsT0FBTyxhQUNsQyxnQ0FBZ0MsT0FBTyxNQUgzQztFQUlBLG1CQUFBO0VBQ0Esa0JBQUE7O0FBR0o7QUFBcUI7O0VBRWpCLGFBQWEsVUFBYjtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxvQkFBQTtFQUNBLGNBQUE7O0VBR0EsbUNBQUE7RUFDQSxrQ0FBQTs7QUFHSixrQkFBa0I7RUFDZCxTQUFTLE9BQVQ7O0FBRUosa0JBQWtCO0VBQ2QsU0FBUyxPQUFUOztBQUVKLGdCQUFnQjtFQUNaLFNBQVMsT0FBVDs7QUFFSixnQkFBZ0I7RUFDWixTQUFTLE9BQVQ7O0FBRUosY0FBYztFQUNWLFNBQVMsT0FBVDs7QUFFSixXQUFXO0VBQ1AsU0FBUyxPQUFUOztBQUVKLFdBQVc7RUFDUCxTQUFTLE9BQVQ7O0FBR0o7RUFDSSxhQUFhLFlBQWI7RUFDQSxTQUFTLDJCQUFUO0VBQ0EsU0FBUyxrQ0FBa0MsT0FBTywwQkFDOUMsNEJBQTRCLE9BQU8saUJBQ25DLDZCQUE2QixPQUFPLGFBQ3BDLGlDQUFpQyxPQUFPLE1BSDVDO0VBSUEsbUJBQUE7RUFDQSxrQkFBQTs7QUFHSjtBQUE4QjtBQUErQjtFQUN6RCxhQUFhLFlBQWI7O0VBRUEsa0JBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RUFDQSxjQUFBOztFQUdBLG1DQUFBO0VBQ0Esa0NBQUE7O0FBRUosZUFBZTtFQUNYLFNBQVMsT0FBVDs7QUFFSixXQUFXO0VBQ1AsU0FBUyxPQUFUOztBQUVKLFdBQVc7RUFDUCxTQUFTLE9BQVQ7O0FBRUosYUFBYTtFQUNULFNBQVMsT0FBVCIsInNvdXJjZXNDb250ZW50IjpbIkBmb250LWZhY2Uge1xyXG4gICAgZm9udC1mYW1pbHk6ICdscC1pY29ucyc7XHJcbiAgICBzcmM6ICAgIHVybCgnZm9udHMvaWNvbnMuZW90PzZndmpyMCcpO1xyXG4gICAgc3JjOiAgICB1cmwoJ2ZvbnRzL2ljb25zLmVvdD82Z3ZqcjAjaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXHJcbiAgICB1cmwoJ2ZvbnRzL2ljb25zLnR0Zj82Z3ZqcjAnKSBmb3JtYXQoJ3RydWV0eXBlJyksXHJcbiAgICB1cmwoJ2ZvbnRzL2ljb25zLndvZmY/Nmd2anIwJykgZm9ybWF0KCd3b2ZmJyksXHJcbiAgICB1cmwoJ2ZvbnRzL2ljb25zLnN2Zz82Z3ZqcjAjaWNvbnMnKSBmb3JtYXQoJ3N2ZycpO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxufVxyXG5cclxuW2NsYXNzXj1cImxwLWljb24tXCJdLCBbY2xhc3MqPVwiIGxwLWljb24tXCJdIHtcclxuICAgIC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovXHJcbiAgICBmb250LWZhbWlseTogJ2xwLWljb25zJyAhaW1wb3J0YW50O1xyXG4gICAgc3BlYWs6IG5vbmU7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG5cclxuICAgIC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqL1xyXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG59XHJcblxyXG4ubHAtaWNvbi1maWxlLXRleHQ6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlOTI2XCI7XHJcbn1cclxuLmljb24tZmlsZS1waWN0dXJlOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTkyN1wiO1xyXG59XHJcbi5pY29uLWZpbGUtbXVzaWM6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlOTI4XCI7XHJcbn1cclxuLmljb24tZmlsZS12aWRlbzpiZWZvcmUge1xyXG4gICAgY29udGVudDogXCJcXGU5MmFcIjtcclxufVxyXG4uaWNvbi1maWxlLXppcDpiZWZvcmUge1xyXG4gICAgY29udGVudDogXCJcXGU5MmJcIjtcclxufVxyXG4uaWNvbi1wYXN0ZTpiZWZvcmUge1xyXG4gICAgY29udGVudDogXCJcXGU5MmRcIjtcclxufVxyXG4uaWNvbi1hbGFybTpiZWZvcmUge1xyXG4gICAgY29udGVudDogXCJcXGU5NTBcIjtcclxufVxyXG5cclxuQGZvbnQtZmFjZSB7XHJcbiAgICBmb250LWZhbWlseTogJ2xlYXJucHJlc3MnO1xyXG4gICAgc3JjOiB1cmwoJy4uL2ZvbnRzL2ljb24uZW90P3ltOGIzdycpO1xyXG4gICAgc3JjOiB1cmwoJy4uL2ZvbnRzL2ljb24uZW90P3ltOGIzdyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcclxuICAgIHVybCgnLi4vZm9udHMvaWNvbi50dGY/eW04YjN3JykgZm9ybWF0KCd0cnVldHlwZScpLFxyXG4gICAgdXJsKCcuLi9mb250cy9pY29uLndvZmY/eW04YjN3JykgZm9ybWF0KCd3b2ZmJyksXHJcbiAgICB1cmwoJy4uL2ZvbnRzL2ljb24uc3ZnP3ltOGIzdyNpY29uJykgZm9ybWF0KCdzdmcnKTtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbn1cclxuXHJcbltjbGFzc149XCJsZWFybi1wcmVzcy1pY29uLVwiXSwgW2NsYXNzKj1cIiBsZWFybi1wcmVzcy1pY29uLVwiXSwgLmxlYXJuLXByZXNzLWljb24ge1xyXG4gICAgZm9udC1mYW1pbHk6ICdsZWFybnByZXNzJztcclxuICAgIC8qc3BlYWs6IG5vbmU7Ki9cclxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcclxuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gICAgbGluZS1oZWlnaHQ6IDE7XHJcblxyXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXHJcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XHJcbn1cclxuLmljb24tY2hlY2ttYXJrOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTkwM1wiO1xyXG59XHJcbi5pY29uLWJvb2tzOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTkwMFwiO1xyXG59XHJcbi5pY29uLWFsYXJtOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiBcIlxcZTkwMVwiO1xyXG59XHJcbi5pY29uLXNwaW5uZXI6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6IFwiXFxlOTAyXCI7XHJcbn0iXSwiZmlsZSI6Il9pY29ucy5jc3MifQ== */
|
assets/css/admin/admin.css
CHANGED
@@ -4,12 +4,30 @@
|
|
4 |
* @author ThimPress
|
5 |
* @version 1.0
|
6 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
.rwmb-field {
|
8 |
margin: 20px 0 20px 0;
|
9 |
}
|
10 |
.rwmb-field .rwmb-input .rwmb-label {
|
11 |
margin-top: 0;
|
12 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
.lp-nav-tab-wrapper {
|
14 |
border-bottom: 1px solid #ccc;
|
15 |
margin: 0;
|
@@ -24,19 +42,6 @@
|
|
24 |
.learn-press-quick-add-page-inline > * {
|
25 |
vertical-align: top;
|
26 |
}
|
27 |
-
.post-type-lp_course .column-price,
|
28 |
-
.post-type-lp_course .column-students {
|
29 |
-
width: 10%;
|
30 |
-
}
|
31 |
-
.post-type-lp_course #course_curriculum .curriculum-section-items .lp-item-empty td.section-item-input {
|
32 |
-
padding-left: 40px;
|
33 |
-
}
|
34 |
-
.post-type-lp_course #course_curriculum .curriculum-section-items .lp-item-empty td.section-item-input.hover {
|
35 |
-
padding-left: 0;
|
36 |
-
}
|
37 |
-
.post-type-lp_course .type-lp_course.status-pending .row-actions .view {
|
38 |
-
display: none;
|
39 |
-
}
|
40 |
#learn-press-admin-settings {
|
41 |
/*input[name="learn_press_single_course_image_size[width]"],
|
42 |
input[name="learn_press_single_course_image_size[height]"],
|
@@ -92,6 +97,9 @@
|
|
92 |
box-sizing: border-box;
|
93 |
opacity: 0;
|
94 |
}
|
|
|
|
|
|
|
95 |
#learn-press-admin-settings .learn-press-settings-wrap:before {
|
96 |
content: '';
|
97 |
position: absolute;
|
@@ -108,10 +116,18 @@
|
|
108 |
#learn-press-admin-settings .learn-press-settings-wrap.ready {
|
109 |
opacity: 1;
|
110 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
#learn-press-admin-settings.no-subtabs .learn-press-settings-wrap {
|
112 |
float: none;
|
113 |
margin-left: 0;
|
114 |
padding-left: 25px;
|
|
|
115 |
}
|
116 |
#learn-press-admin-settings.no-subtabs .learn-press-settings-wrap:before {
|
117 |
display: none;
|
@@ -153,6 +169,40 @@
|
|
153 |
#learn-press-admin-settings .lp-setting-field .lp-sign-times {
|
154 |
font-size: 19px;
|
155 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
/* message box */
|
157 |
#learn-press-message-box-block {
|
158 |
position: fixed;
|
@@ -222,15 +272,39 @@
|
|
222 |
.meta_box_course_lesson_quiz li select {
|
223 |
min-width: 250px;
|
224 |
}
|
225 |
-
.description {
|
226 |
-
margin-top: 5px;
|
227 |
-
}
|
228 |
.dashed-placeholder {
|
229 |
border: 2px dashed #999;
|
230 |
padding: 10px;
|
231 |
}
|
232 |
.learn-press-message {
|
233 |
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
}
|
235 |
.learn-press-message .learn-press-admin-notice-dismiss {
|
236 |
position: absolute;
|
@@ -274,58 +348,70 @@ li.quick_quiz {
|
|
274 |
.column-taxonomy-course_category {
|
275 |
width: 15%;
|
276 |
}
|
277 |
-
|
278 |
-
|
279 |
-
position: fixed;
|
280 |
-
top: 0;
|
281 |
-
left: 0;
|
282 |
-
right: 0;
|
283 |
-
bottom: 0;
|
284 |
-
background-color: #000;
|
285 |
-
display: none;
|
286 |
-
z-index: 200;
|
287 |
-
opacity: 0.2;
|
288 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
.lpr-quick-add-form {
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
}
|
|
|
296 |
.lpr-quick-add-form input {
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
}
|
|
|
302 |
.lpr-quick-add-form input,
|
303 |
.lpr-quick-add-form select {
|
304 |
-
|
305 |
}
|
|
|
306 |
.lpr-quick-add-form .lpr-ajaxload {
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
}
|
|
|
313 |
.lpr-quick-add-form.working .lpr-ajaxload {
|
314 |
-
|
315 |
}
|
|
|
316 |
.lpr-quick-add-form.working button {
|
317 |
-
|
318 |
}
|
|
|
319 |
.post-type-lpr_question .lpr-question-option-label {
|
320 |
-
|
321 |
}
|
|
|
322 |
#lpr-question-options-wrap {
|
323 |
-
|
324 |
}
|
|
|
325 |
.lpr-question tr.lpr-disabled .dashicons-trash,
|
326 |
.lpr-question tr.lpr-disabled .dashicons-sort {
|
327 |
-
|
328 |
-
}
|
329 |
/*
|
330 |
* Add on page
|
331 |
*/
|
@@ -1463,7 +1549,8 @@ body.post-type-lp_question #question_answer_ .inside {
|
|
1463 |
}
|
1464 |
.post-type-lp_order #submitpost .misc-pub-section label {
|
1465 |
display: block;
|
1466 |
-
font-weight:
|
|
|
1467 |
}
|
1468 |
#learn-press-order {
|
1469 |
margin: 15px;
|
@@ -1819,7 +1906,7 @@ input.regular-text[id^="learn-press-emails"] {
|
|
1819 |
margin: 0;
|
1820 |
}
|
1821 |
.learn-press-tabs .learn-press-tab-content > li {
|
1822 |
-
padding: 0 20px
|
1823 |
float: left;
|
1824 |
width: 100%;
|
1825 |
margin-right: -100%;
|
@@ -1865,6 +1952,25 @@ input.regular-text[id^="learn-press-emails"] {
|
|
1865 |
content: '';
|
1866 |
display: block;
|
1867 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1868 |
@keyframes learn-press-meta-box-tabs-initialize-animation {
|
1869 |
0% {
|
1870 |
opacity: 0;
|
@@ -1920,3 +2026,5 @@ input.regular-text[id^="learn-press-emails"] {
|
|
1920 |
opacity: 0;
|
1921 |
}
|
1922 |
}
|
|
|
|
4 |
* @author ThimPress
|
5 |
* @version 1.0
|
6 |
*/
|
7 |
+
input:focus::-webkit-input-placeholder {
|
8 |
+
color: transparent !important;
|
9 |
+
}
|
10 |
+
input:focus::-moz-placeholder {
|
11 |
+
color: transparent !important;
|
12 |
+
}
|
13 |
+
input:focus:-moz-placeholder {
|
14 |
+
color: transparent !important;
|
15 |
+
}
|
16 |
.rwmb-field {
|
17 |
margin: 20px 0 20px 0;
|
18 |
}
|
19 |
.rwmb-field .rwmb-input .rwmb-label {
|
20 |
margin-top: 0;
|
21 |
}
|
22 |
+
.rwmb-field .rwmb-input .description {
|
23 |
+
margin-top: 5px;
|
24 |
+
}
|
25 |
+
.rwmb-field .rwmb-input .description.option-desc {
|
26 |
+
font-weight: normal;
|
27 |
+
margin: 8px 0 10px 24px;
|
28 |
+
font-size: smaller;
|
29 |
+
font-style: italic;
|
30 |
+
}
|
31 |
.lp-nav-tab-wrapper {
|
32 |
border-bottom: 1px solid #ccc;
|
33 |
margin: 0;
|
42 |
.learn-press-quick-add-page-inline > * {
|
43 |
vertical-align: top;
|
44 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
#learn-press-admin-settings {
|
46 |
/*input[name="learn_press_single_course_image_size[width]"],
|
47 |
input[name="learn_press_single_course_image_size[height]"],
|
97 |
box-sizing: border-box;
|
98 |
opacity: 0;
|
99 |
}
|
100 |
+
#learn-press-admin-settings .learn-press-settings-wrap input[name="learn_press_auto_redirect_message"] {
|
101 |
+
width: 80%;
|
102 |
+
}
|
103 |
#learn-press-admin-settings .learn-press-settings-wrap:before {
|
104 |
content: '';
|
105 |
position: absolute;
|
116 |
#learn-press-admin-settings .learn-press-settings-wrap.ready {
|
117 |
opacity: 1;
|
118 |
}
|
119 |
+
#learn-press-admin-settings .learn-press-settings-wrap #learn-press-reset-settings {
|
120 |
+
float: right;
|
121 |
+
opacity: 0.5;
|
122 |
+
}
|
123 |
+
#learn-press-admin-settings .learn-press-settings-wrap #learn-press-reset-settings:hover {
|
124 |
+
opacity: 1;
|
125 |
+
}
|
126 |
#learn-press-admin-settings.no-subtabs .learn-press-settings-wrap {
|
127 |
float: none;
|
128 |
margin-left: 0;
|
129 |
padding-left: 25px;
|
130 |
+
padding-right: 25px;
|
131 |
}
|
132 |
#learn-press-admin-settings.no-subtabs .learn-press-settings-wrap:before {
|
133 |
display: none;
|
169 |
#learn-press-admin-settings .lp-setting-field .lp-sign-times {
|
170 |
font-size: 19px;
|
171 |
}
|
172 |
+
.learnpress_page_learn-press-settings .select2-result .select2-result-label {
|
173 |
+
position: relative;
|
174 |
+
}
|
175 |
+
.learnpress_page_learn-press-settings .select2-result .select2-result-label:before {
|
176 |
+
display: inline-block;
|
177 |
+
border-bottom: 1px solid #23282d;
|
178 |
+
width: 20px;
|
179 |
+
position: absolute;
|
180 |
+
top: 50%;
|
181 |
+
left: 8px;
|
182 |
+
}
|
183 |
+
.learnpress_page_learn-press-settings .select2-result .select2-result-label:hover:before {
|
184 |
+
border-color: #FFF;
|
185 |
+
}
|
186 |
+
.learnpress_page_learn-press-settings .select2-result.level-1 .select2-result-label {
|
187 |
+
padding-left: 35px;
|
188 |
+
}
|
189 |
+
.learnpress_page_learn-press-settings .select2-result.level-1 .select2-result-label:before {
|
190 |
+
content: '';
|
191 |
+
}
|
192 |
+
.learnpress_page_learn-press-settings .select2-result.level-2 .select2-result-label {
|
193 |
+
padding-left: 60px;
|
194 |
+
}
|
195 |
+
.learnpress_page_learn-press-settings .select2-result.level-2 .select2-result-label:before {
|
196 |
+
left: 35px;
|
197 |
+
content: '';
|
198 |
+
}
|
199 |
+
.learnpress_page_learn-press-settings .select2-result.level-3 .select2-result-label {
|
200 |
+
padding-left: 85px;
|
201 |
+
}
|
202 |
+
.learnpress_page_learn-press-settings .select2-result.level-3 .select2-result-label:before {
|
203 |
+
left: 60px;
|
204 |
+
content: '';
|
205 |
+
}
|
206 |
/* message box */
|
207 |
#learn-press-message-box-block {
|
208 |
position: fixed;
|
272 |
.meta_box_course_lesson_quiz li select {
|
273 |
min-width: 250px;
|
274 |
}
|
|
|
|
|
|
|
275 |
.dashed-placeholder {
|
276 |
border: 2px dashed #999;
|
277 |
padding: 10px;
|
278 |
}
|
279 |
.learn-press-message {
|
280 |
position: relative;
|
281 |
+
background: #FFF;
|
282 |
+
border-left: 5px solid #00A0D2;
|
283 |
+
padding: 10px 10px 0px 10px;
|
284 |
+
margin-bottom: 20px;
|
285 |
+
overflow: hidden;
|
286 |
+
color: #777;
|
287 |
+
}
|
288 |
+
.learn-press-message button {
|
289 |
+
float: right;
|
290 |
+
}
|
291 |
+
.learn-press-message p {
|
292 |
+
margin: 0 0 10px;
|
293 |
+
}
|
294 |
+
.learn-press-message:after {
|
295 |
+
clear: both;
|
296 |
+
content: '';
|
297 |
+
display: block;
|
298 |
+
}
|
299 |
+
.learn-press-message.notice {
|
300 |
+
border-left-color: #b3d20a;
|
301 |
+
}
|
302 |
+
.learn-press-message.lp-error,
|
303 |
+
.learn-press-message.error {
|
304 |
+
border-left-color: #b81c23;
|
305 |
+
}
|
306 |
+
.learn-press-message ul {
|
307 |
+
list-style-type: none;
|
308 |
}
|
309 |
.learn-press-message .learn-press-admin-notice-dismiss {
|
310 |
position: absolute;
|
348 |
.column-taxonomy-course_category {
|
349 |
width: 15%;
|
350 |
}
|
351 |
+
.tools-button {
|
352 |
+
text-align: right;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
}
|
354 |
+
/*
|
355 |
+
#lpr-block {
|
356 |
+
position: fixed;
|
357 |
+
top: 0;
|
358 |
+
left: 0;
|
359 |
+
right: 0;
|
360 |
+
bottom: 0;
|
361 |
+
background-color: #000;
|
362 |
+
display: none;
|
363 |
+
z-index: 200;
|
364 |
+
opacity: 0.2;
|
365 |
+
}
|
366 |
+
|
367 |
.lpr-quick-add-form {
|
368 |
+
background-color: #FFF;
|
369 |
+
padding: 5px;
|
370 |
+
position: absolute;
|
371 |
+
z-index: 210;
|
372 |
+
border: 1px solid #DDD;
|
373 |
}
|
374 |
+
|
375 |
.lpr-quick-add-form input {
|
376 |
+
font-size: 15px;
|
377 |
+
border-radius: 3px;
|
378 |
+
border: 1px solid #DDD;
|
379 |
+
width: 350px;
|
380 |
}
|
381 |
+
|
382 |
.lpr-quick-add-form input,
|
383 |
.lpr-quick-add-form select {
|
384 |
+
vertical-align: top;
|
385 |
}
|
386 |
+
|
387 |
.lpr-quick-add-form .lpr-ajaxload {
|
388 |
+
display: none;
|
389 |
+
background: url(../../images/spinner.gif) no-repeat center;
|
390 |
+
width: 30px;
|
391 |
+
color: #FFF;
|
392 |
+
margin-top: 6px;
|
393 |
}
|
394 |
+
|
395 |
.lpr-quick-add-form.working .lpr-ajaxload {
|
396 |
+
display: inline-block;
|
397 |
}
|
398 |
+
|
399 |
.lpr-quick-add-form.working button {
|
400 |
+
display: none;
|
401 |
}
|
402 |
+
|
403 |
.post-type-lpr_question .lpr-question-option-label {
|
404 |
+
display: none;
|
405 |
}
|
406 |
+
|
407 |
#lpr-question-options-wrap {
|
408 |
+
margin-top: 8px;
|
409 |
}
|
410 |
+
|
411 |
.lpr-question tr.lpr-disabled .dashicons-trash,
|
412 |
.lpr-question tr.lpr-disabled .dashicons-sort {
|
413 |
+
display: none;
|
414 |
+
}*/
|
415 |
/*
|
416 |
* Add on page
|
417 |
*/
|
1549 |
}
|
1550 |
.post-type-lp_order #submitpost .misc-pub-section label {
|
1551 |
display: block;
|
1552 |
+
font-weight: 600;
|
1553 |
+
margin-bottom: 8px;
|
1554 |
}
|
1555 |
#learn-press-order {
|
1556 |
margin: 15px;
|
1906 |
margin: 0;
|
1907 |
}
|
1908 |
.learn-press-tabs .learn-press-tab-content > li {
|
1909 |
+
padding: 0 20px 10px 20px;
|
1910 |
float: left;
|
1911 |
width: 100%;
|
1912 |
margin-right: -100%;
|
1952 |
content: '';
|
1953 |
display: block;
|
1954 |
}
|
1955 |
+
/* Metabox Widget */
|
1956 |
+
#widgets-right .widgets-holder-wrap .rwmb-label {
|
1957 |
+
margin-bottom: 5px;
|
1958 |
+
}
|
1959 |
+
#widgets-right .widgets-holder-wrap .rwmb-input input[type="text"] {
|
1960 |
+
width: 100%;
|
1961 |
+
}
|
1962 |
+
#widgets-right .widgets-holder-wrap .description {
|
1963 |
+
padding: 0;
|
1964 |
+
margin-top: 5px;
|
1965 |
+
font-size: small;
|
1966 |
+
font-style: italic;
|
1967 |
+
}
|
1968 |
+
.outdated-readmore-link {
|
1969 |
+
font-style: italic;
|
1970 |
+
}
|
1971 |
+
.learn-press-message.notice-warning {
|
1972 |
+
border-left-color: #ffb900;
|
1973 |
+
}
|
1974 |
@keyframes learn-press-meta-box-tabs-initialize-animation {
|
1975 |
0% {
|
1976 |
opacity: 0;
|
2026 |
opacity: 0;
|
2027 |
}
|
2028 |
}
|
2029 |
+
|
2030 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,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QUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQTs7O0FBSVI7RUFDSTtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQTs7O0FBSVI7RUFDSTtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQTs7O0FBSVI7RUFDSTtJQUNJLFVBQUE7O0VBRUo7SUFDSSxVQUFBOztFQUVKO0lBQ0ksVUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBEZWZpbmUgYWxsIHN0eWxlcyBmb3IgYWRtaW4gc2lkZVxyXG4gKlxyXG4gKiBAYXV0aG9yIFRoaW1QcmVzc1xyXG4gKiBAdmVyc2lvbiAxLjBcclxuICovXHJcbi8vIGFkbWluIHZhcmlhYmxlc1xyXG5AcHJpbWFyeS1pY29uLWNvbG9yOiAjNjY2NjY2O1xyXG5AcHJpbWFyeS1pY29uLWhvdmVyLWNvbG9yOiAjMDBhMGQyO1xyXG5cclxuaW5wdXQ6Zm9jdXM6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG4gICAgY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbmlucHV0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dDpmb2N1czotbW96LXBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucndtYi1maWVsZCB7XHJcbiAgICBtYXJnaW46IDIwcHggMCAyMHB4IDA7XHJcbiAgICAucndtYi1pbnB1dCB7XHJcbiAgICAgICAgLnJ3bWItbGFiZWwge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAuZGVzY3JpcHRpb24ge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgICAgICYub3B0aW9uLWRlc2Mge1xyXG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDAgMTBweCAyNHB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiBzbWFsbGVyO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubHAtbmF2LXRhYi13cmFwcGVyIHtcclxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgcGFkZGluZzogOXB4IDE1cHggMCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1xdWljay1hZGQtcGFnZS1pbmxpbmUge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtcXVpY2stYWRkLXBhZ2UtaW5saW5lID4gKiB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRtaW4tc2V0dGluZ3Mge1xyXG4gICAgI2xlYXJuX3ByZXNzX2VtYWlsX2Zvcm1hdHMge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICB9XHJcbiAgICAubGVhcm4tcHJlc3MtZW1haWwtdmFyaWFibGVzIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgbGkge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogIzAwODViYTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5uYXYtdGFiLXdyYXBwZXIge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICB9XHJcbiAgICAuc3Vic3Vic3ViIHtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICB3aWR0aDogMjQwcHg7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgIG1hcmdpbjogMCAtMjYwcHggMCAyMHB4O1xyXG4gICAgICAgIHBhZGRpbmctdG9wOiAxMXB4O1xyXG4gICAgICAgIGxpIHtcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGEge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5sZWFybi1wcmVzcy1zZXR0aW5ncy13cmFwIHtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICBwYWRkaW5nOiAxcHggMCAxNXB4IDMwMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgei1pbmRleDogMDtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19hdXRvX3JlZGlyZWN0X21lc3NhZ2VcIl0ge1xyXG4gICAgICAgICAgICB3aWR0aDogODAlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMzBweDtcclxuICAgICAgICB9XHJcbiAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYucmVhZHkge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICAjbGVhcm4tcHJlc3MtcmVzZXQtc2V0dGluZ3Mge1xyXG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgJi5uby1zdWJ0YWJzIHtcclxuICAgICAgICAubGVhcm4tcHJlc3Mtc2V0dGluZ3Mtd3JhcCB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xyXG5cclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAuc3Vic3Vic3ViIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgbGFiZWwge1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgfVxyXG4gICAgLyppbnB1dFtuYW1lPVwibGVhcm5fcHJlc3Nfc2luZ2xlX2NvdXJzZV9pbWFnZV9zaXplW3dpZHRoXVwiXSxcclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19zaW5nbGVfY291cnNlX2ltYWdlX3NpemVbaGVpZ2h0XVwiXSxcclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19jb3Vyc2VfdGh1bWJuYWlsX2ltYWdlX3NpemVbd2lkdGhdXCJdLFxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX2NvdXJzZV90aHVtYm5haWxfaW1hZ2Vfc2l6ZVtoZWlnaHRdXCJdIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAtNHB4O1xyXG4gICAgfVxyXG4gICAgaW5wdXRbbmFtZT1cImxlYXJuX3ByZXNzX3NpbmdsZV9jb3Vyc2VfaW1hZ2Vfc2l6ZVtjcm9wXVwiXSxcclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19jb3Vyc2VfdGh1bWJuYWlsX2ltYWdlX3NpemVbY3JvcF1cIl0ge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDNweDtcclxuICAgIH0qL1xyXG5cclxuICAgIGlucHV0W25hbWU9XCJsZWFybl9wcmVzc19jb3Vyc2VfYmFzZVwiXSB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogM3B4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xyXG4gICAgfVxyXG4gICAgLmxwLWdyb3VwLXRpdGxlIHtcclxuICAgICAgICBwYWRkaW5nOiAwIDAgMTBweDtcclxuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgIzU2M2Q3YztcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwiZW1haWxcIl0sXHJcbiAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdLFxyXG4gICAgaW5wdXRbdHlwZT1cInRlbFwiXSxcclxuICAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcclxuICAgIHNlbGVjdCB7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIH1cclxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIC5scC1zZXR0aW5nLWZpZWxkIHtcclxuICAgICAgICBzcGFuIHtcclxuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5scC1zaWduLXRpbWVzIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxOXB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJucHJlc3NfcGFnZV9sZWFybi1wcmVzcy1zZXR0aW5ncyB7XHJcbiAgICAuc2VsZWN0Mi1yZXN1bHQge1xyXG4gICAgICAgIC5zZWxlY3QyLXJlc3VsdC1sYWJlbCB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMyMzI4MmQ7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbGVmdDogOHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0ZGRjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxldmVsLTEge1xyXG4gICAgICAgICAgICAuc2VsZWN0Mi1yZXN1bHQtbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzNXB4O1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYubGV2ZWwtMiB7XHJcbiAgICAgICAgICAgIC5zZWxlY3QyLXJlc3VsdC1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDYwcHg7XHJcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMzVweDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmLmxldmVsLTMge1xyXG4gICAgICAgICAgICAuc2VsZWN0Mi1yZXN1bHQtbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA4NXB4O1xyXG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDYwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIG1lc3NhZ2UgYm94ICovXHJcbiNsZWFybi1wcmVzcy1tZXNzYWdlLWJveC1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xyXG4gICAgei1pbmRleDogOTk5OTk7XHJcbiAgICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1tZXNzYWdlLWJveC13aW5kb3cge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgei1pbmRleDogMTAwMDAwO1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbiNtZXNzYWdlLWJveC13cmFwIHtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgLyogdGV4dC1hbGlnbjogY2VudGVyOyAqL1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIG1heC13aWR0aDogNzAlO1xyXG59XHJcblxyXG4ubWVzc2FnZS1ib3gtdGl0bGUge1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBtYXJnaW46IDAgMCA0MHB4IDA7XHJcbiAgICBmb250LXNpemU6IDM0cHg7XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveC1jb250ZW50IHtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveC1hbmltYXRpb24ge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vaW1hZ2VzL2FuaW1hdGlvbi5naWZcIik7XHJcbiAgICB3aWR0aDogMjIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICBtYXJnaW46IDIwcHggMCAwO1xyXG59XHJcblxyXG4ubWVzc2FnZS1ib3gtYnV0dG9ucyB7XHJcbiAgICBtYXJnaW46IDIwcHggMCAwO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM5MjkyOTI7XHJcbiAgICBwYWRkaW5nLXRvcDogMjBweDtcclxufVxyXG5cclxuLm1lc3NhZ2UtYm94LWJ1dHRvbiB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHggIWltcG9ydGFudDtcclxufVxyXG5cclxuLnBvc3QtdHlwZS1scF9sZXNzb24gLmNvbHVtbi1mb3JtYXQgLmxwLWxhYmVsIHtcclxuICAgIGZvbnQtc2l6ZTogMTAwJTtcclxufVxyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmhhbmRsZS5kYXNoaWNvbnMge1xyXG4gICAgY3Vyc29yOiBtb3ZlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG59XHJcblxyXG4ubWV0YV9ib3hfcmVtb3ZlIC5kYXNoaWNvbnMge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG59XHJcblxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIGlucHV0LFxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIHNlbGVjdCB7XHJcbiAgICBtaW4td2lkdGg6IDI1MHB4O1xyXG59XHJcblxyXG4uZGFzaGVkLXBsYWNlaG9sZGVyIHtcclxuICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjOTk5O1xyXG4gICAgcGFkZGluZzogMTBweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLW1lc3NhZ2Uge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzAwQTBEMjtcclxuICAgIHBhZGRpbmc6IDEwcHggMTBweCAwcHggMTBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgY29sb3I6ICM3Nzc7XHJcbiAgICBidXR0b24ge1xyXG4gICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgIH1cclxuICAgIHAge1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDEwcHg7XHJcbiAgICB9XHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICAgICYubm90aWNlIHtcclxuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogI2IzZDIwYTtcclxuICAgIH1cclxuICAgICYubHAtZXJyb3IsXHJcbiAgICAmLmVycm9yIHtcclxuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogI2I4MWMyMztcclxuICAgIH1cclxuICAgIHVsIHtcclxuICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAubGVhcm4tcHJlc3MtYWRtaW4tbm90aWNlLWRpc21pc3Mge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAxcHggMXB4ICNGMUYxRjE7XHJcbiAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBkYXNoaWNvbnM7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYzMzUnO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiogQ291cnNlIE1ldGFib3hcclxuKi9cclxubGkucXVpeiwgbGkubGVzc29uLCBsaS5xdWlja19sZXNzb24sIGxpLnF1aWNrX3F1aXoge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDMwcHg7XHJcbn1cclxuXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfc2VjdGlvbixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X2FkZF9sZXNzb24sXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfcXVpeixcclxuLndwLWNvcmUtdWkgLm1ldGFfYm94X3F1aWNrX2FkZF9sZXNzb24sXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9xdWlja19hZGRfcXVpeiB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbn1cclxuXHJcbi5jb2x1bW4tdGF4b25vbXktY291cnNlX2NhdGVnb3J5IHtcclxuICAgIHdpZHRoOiAxNSU7XHJcbn1cclxuXHJcbi50b29scy1idXR0b24ge1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbn1cclxuXHJcbi8qXHJcbiNscHItYmxvY2sge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB6LWluZGV4OiAyMDA7XHJcbiAgICBvcGFjaXR5OiAwLjI7XHJcbn1cclxuXHJcbi5scHItcXVpY2stYWRkLWZvcm0ge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDIxMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbn1cclxuXHJcbi5scHItcXVpY2stYWRkLWZvcm0gaW5wdXQge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHdpZHRoOiAzNTBweDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybSBpbnB1dCxcclxuLmxwci1xdWljay1hZGQtZm9ybSBzZWxlY3Qge1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybSAubHByLWFqYXhsb2FkIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL3NwaW5uZXIuZ2lmKSBuby1yZXBlYXQgY2VudGVyO1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICBjb2xvcjogI0ZGRjtcclxuICAgIG1hcmdpbi10b3A6IDZweDtcclxufVxyXG5cclxuLmxwci1xdWljay1hZGQtZm9ybS53b3JraW5nIC5scHItYWpheGxvYWQge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1mb3JtLndvcmtpbmcgYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5wb3N0LXR5cGUtbHByX3F1ZXN0aW9uIC5scHItcXVlc3Rpb24tb3B0aW9uLWxhYmVsIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbiNscHItcXVlc3Rpb24tb3B0aW9ucy13cmFwIHtcclxuICAgIG1hcmdpbi10b3A6IDhweDtcclxufVxyXG5cclxuLmxwci1xdWVzdGlvbiB0ci5scHItZGlzYWJsZWQgLmRhc2hpY29ucy10cmFzaCxcclxuLmxwci1xdWVzdGlvbiB0ci5scHItZGlzYWJsZWQgLmRhc2hpY29ucy1zb3J0IHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn0qL1xyXG5cclxuLypcclxuKiBBZGQgb24gcGFnZVxyXG4qL1xyXG4ubGVhcm5wcmVzcy1hZHZlcnRpcy1hZG1pbiB7XHJcblxyXG4gICAgbWFyZ2luLWxlZnQ6IDE2MHB4O1xyXG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgICA+IC5pdGVtIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG4gICAgPiAuaXRlbTpmaXJzdC1jaGlsZCB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcblxyXG4gICAgLmxlYXJucHJlc3Mtd3JhcC1pdGVtcyB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDFzLCBvcGFjaXR5IDFzO1xyXG4gICAgICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMXMsIG9wYWNpdHkgMXM7XHJcbiAgICAgICAgcGFkZGluZzogMjBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxuICAgIH1cclxuICAgIC50aGVtZS10aHVtYm5haWwge1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIHdpZHRoOiAzNSU7XHJcbiAgICB9XHJcbiAgICAudGhlbWUtZGV0YWlsIHtcclxuICAgICAgICBtYXJnaW4tbGVmdDogMzUlO1xyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICAgIH1cclxuICAgIC5sZWFybnByZXNzLWl0ZW0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiB2aXNpYmlsaXR5IDAuNXMgbGluZWFyLCBvcGFjaXR5IDAuNXMgbGluZWFyO1xyXG4gICAgICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgMC41cyBsaW5lYXIsIG9wYWNpdHkgMC41cyBsaW5lYXI7XHJcblxyXG4gICAgfVxyXG4gICAgaW1nIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB9XHJcbiAgICAubGVhcm5wcmVzcy1hY3RpdmUge1xyXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuXHJcbiAgICAubGVhcm5wcmVzcy1jb250cm9scyB7XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGJvdHRvbTogMzBweDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcblxyXG4gICAgICAgIC5wcmV2LWl0ZW0sXHJcbiAgICAgICAgLm5leHQtaXRlbSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICBmb250LWZhbWlseTogJ2Rhc2hpY29ucyc7XHJcbiAgICAgICAgICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XHJcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4O1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMDAwO1xyXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5wcmV2LWl0ZW0ge1xyXG4gICAgICAgICAgICByaWdodDogOTVweDtcclxuICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYzNDFcIjtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC5uZXh0LWl0ZW0ge1xyXG4gICAgICAgICAgICByaWdodDogNDVweDtcclxuXHJcbiAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMzQ1XCI7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTIwMHB4KSB7XHJcbiAgICAgICAgLnRoZW1lLXRodW1ibmFpbCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudGhlbWUtZGV0YWlsIHtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDUwJTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NjBweCkge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAzNnB4O1xyXG5cclxuICAgICAgICAudGhlbWUtdGh1bWJuYWlsIHtcclxuICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnRoZW1lLWRldGFpbCB7XHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc4MnB4KSB7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24taW5mbyB7XHJcbiAgICB3aWR0aDogNjUlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbn1cclxuXHJcbi5scHItYWRkLW9ucy13cmFwcGVyIC5hZGQtb24tYWN0aW9uIGEge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIGhlaWdodDogODBweDtcclxuICAgIHdpZHRoOiAxMDBweDtcclxuICAgIGJhY2tncm91bmQ6ICNFQkVCRUI7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwMHB4O1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiAuYWRkLW9uLWVuYWJsZWQge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWFyZ2luOiA0MHB4O1xyXG59XHJcblxyXG4ubHByLWFkZC1vbnMtd3JhcHBlciAuYWRkLW9uLWFjdGlvbiAuYWRkLW9uLWRpc2FibGVkIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG1hcmdpbjogNDBweDtcclxufVxyXG5cclxuLmxwci1hZGQtb25zLXdyYXBwZXIgLmFkZC1vbi1hY3Rpb24gYTpob3ZlciB7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dC1kaXNhYmxlKTtcclxufVxyXG5cclxuLmxwLXNlYXJjaC1hZGRvbiB7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICB3aWR0aDogMjgwcHg7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgICBmb250LXdlaWdodDogMzAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIHBhZGRpbmc6IDNweCA1cHg7XHJcbiAgICBoZWlnaHQ6IDMycHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIHtcclxuICAgIG1hcmdpbjogMjBweCAwIDA7XHJcblxyXG4gICAgLmxwLWFkZG9uLWhpZGRlbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgLmxwLWFjdGl2ZTpudGgtb2YtdHlwZSgybisxKSB7XHJcbiAgICAgICAgY2xlYXI6IG5vbmU7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7XHJcbiAgICB9XHJcbiAgICAubHAtYWN0aXZlOm50aC1vZi10eXBlKDJuKSB7XHJcbiAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICB9XHJcblxyXG4gICAgJi5sZWFybnByZXNzLXByZW1pdW0tcGx1Z2luIHtcclxuXHJcbiAgICAgICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XHJcblxyXG4gICAgICAgICAgICBwIHtcclxuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuICAgICAgICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcclxuICAgICAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiA0O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDYuNGVtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnM6YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgIC8qZmxvYXQ6IGxlZnQ7Ki9cclxuICAgIC8qd2lkdGg6IDI1JTsqL1xyXG4gICAgLypwb3NpdGlvbjogcmVsYXRpdmU7Ki9cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWlubmVyIHtcclxuICAgIG1hcmdpbjogMCAyMHB4IDQwcHggMjBweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFM0UzRTM7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmFkZC1vbi10aHVtYm5haWwgaW1nIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCAuYWRkLW9uLW92ZXJsYXkge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4yNXM7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQURFNkZGO1xyXG4gICAgb3BhY2l0eTogMDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLXRodW1ibmFpbCAuYWRkLW9uLWRlc2NyaXB0aW9uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDIwcHg7XHJcbiAgICByaWdodDogMjBweDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMjVzO1xyXG4gICAgY29sb3I6ICM0NDQ7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpOmhvdmVyIC5hZGQtb24tb3ZlcmxheSB7XHJcbiAgICBvcGFjaXR5OiAwLjM7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGk6aG92ZXIgLmFkZC1vbi1kZXNjcmlwdGlvbiB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24taW5mbyB7XHJcbiAgICBtaW4taGVpZ2h0OiA4MHB4O1xyXG4gICAgcGFkZGluZzogMjBweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XHJcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0ZGRjtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWluZm8gPiBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5hZGQtb24tYWN0aW9ucyB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDQzcHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zID4gbGkgLmFkZC1vbi1hY3Rpb25zIC5hZGQtb24tc3RhdGUge1xyXG4gICAgZm9udC1zaXplOiAzNnB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICBtYXJnaW4tdG9wOiAtOHB4O1xyXG4gICAgY29sb3I6ICMwNUIzRkY7XHJcbiAgICBtYXJnaW4tbGVmdDogLTlweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSAuYWRkLW9uLWFjdGlvbnMgLmFkZC1vbi1zdGF0ZS5jaGFuZ2Uge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQtdG9wIHtcclxuICAgIG1pbi1oZWlnaHQ6IDE4MHB4O1xyXG59XHJcblxyXG4ucHJlbWl1bV9hZGRfb25zLmFjdGl2ZSAuY29sdW1uLWRlc2NyaXB0aW9uIHAge1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xyXG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiA1O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG4gICAgbWF4LWhlaWdodDogOGVtO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYnV0dG9uLnNwaW5uZXIge1xyXG4gICAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9zcGlubmVyLmdpZikgbm8tcmVwZWF0IDRweCAhaW1wb3J0YW50O1xyXG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgIHdpZHRoOiBhdXRvO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzID4gc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzID4gc3Bhbi5lbmFibGVkIHtcclxuICAgIGNvbG9yOiAjN2FkMDNhO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzID4gc3Bhbi5kaXNhYmxlZCB7XHJcbiAgICBjb2xvcjogI0ZGMDAwMDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLmFjdGlvbi1saW5rcyAucHJpY2Uge1xyXG4gICAgY29sb3I6ICM0MzlmZGY7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAuYWN0aW9uLWxpbmtzIC5wcmljZSBkZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIGNvbG9yOiAjYWFhO1xyXG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWljb24gaW1nIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLWJ1bmRsZS1hY3RpdmF0ZS1hZGQtb25zLnNwaW5uZXIge1xyXG4gICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi12ZXJzaW9uIHtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwICNuYW1lIHtcclxuICAgIHdpZHRoOiAzMCU7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIHA6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwIC50aGVtZSB7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLWFkZC1vbnMtd3JhcCAudGhlbWUtY29udHJvbHMge1xyXG4gICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgLnRoZW1lIGgyIHtcclxuICAgIG1hcmdpbjogMCAwIDIwcHggMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1hZGQtb25zLXdyYXAgLnRoZW1lIGltZyB7XHJcbiAgICB3aWR0aDogNDAwcHg7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICBtYXJnaW46IDAgMjBweCAwIDA7XHJcbn1cclxuXHJcbi5yZWxhdGVkX3RoZW1lcyB7XHJcbiAgICAucGx1Z2luLWNhcmQtdG9wIHtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcclxuICAgIH1cclxuICAgIC50aGVtZS1jb250ZW50IHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB9XHJcbiAgICAuaW1hZ2UtdGh1bWJuYWlsIGltZyB7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcbiAgICAudGhlbWUtZGVzY3JpcHRpb24ge1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDI1cHggMDtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiA2O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjZlbTtcclxuICAgICAgICBtYXgtaGVpZ2h0OiA5LjZlbTtcclxuXHJcbiAgICB9XHJcbiAgICAudGhlbWUtdGl0bGUge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTAwcHg7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNmVtO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgICAgICAgbWluLWhlaWdodDogMy4yZW07XHJcbiAgICB9XHJcbiAgICAudGhlbWUtdGl0bGUgYSB7XHJcblxyXG4gICAgICAgIGNvbG9yOiAjNTQ1NDU0O1xyXG4gICAgfVxyXG4gICAgLnRoZW1lLXJhdGluZyB7XHJcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIC5zdGFyLXJhdGluZyB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgfVxyXG4gICAgLmNvdW50LXJhdGluZyB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB0b3A6IDJweDtcclxuICAgIH1cclxuICAgIC50aGVtZS1kZXRhaWwge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICByaWdodDogM3B4O1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcblxyXG4gICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLnRoZW1lLXByaWNlIHtcclxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjNTQ1NDU0O1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42ZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICAudGhlbWUtZm9vdGVyIHtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogLTIwcHg7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMjBweDtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XHJcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZGQ7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDEyODBweCkge1xyXG4gICAgLmxlYXJuLXByZXNzLWFkZC1vbnMgPiBsaSB7XHJcbiAgICAgICAgLyp3aWR0aDogMzMuMzMlOyovXHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc4MnB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyAuZW5hYmxlLW5vdyB7XHJcbiAgICAgICAgcGFkZGluZzogNXB4O1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyAuZW5hYmxlLW5vdzpiZWZvcmUge1xyXG4gICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy1hZGQtb25zIC5lbmFibGUtbm93OmJlZm9yZSB7XHJcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgI2xlYXJuLXByZXNzLWFkZC1vbnMtd3JhcCAudGhlbWUgaW1nIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgICAgICAvKndpZHRoOiA1MCU7Ki9cclxuICAgIH1cclxuXHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIC5jb2x1bW4tbmFtZSB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNTBweDtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XHJcbiAgICAubGVhcm4tcHJlc3MtYWRkLW9ucyA+IGxpIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAjbGVhcm4tcHJlc3MtYWRkLW9ucy13cmFwIC50aGVtZSBpbWcge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIG1hcmdpbjogMCAwIDIwcHggMDtcclxuICAgIH1cclxufVxyXG5cclxuLyoqL1xyXG5cclxuI2xwci1xdWl6LXF1ZXN0aW9ucy13cmFwIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2Uge1xyXG4gICAgaGVpZ2h0OiAyOXB4O1xyXG4gICAgcGFkZGluZy10b3A6IDNweDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLnBvc3QtdGl0bGUuY29sdW1uLXRpdGxlIHtcclxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb25zIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmxwci1yb3ctYWN0aW9uLWRyb3Bkb3duIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMTAwJTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICBtaW4td2lkdGg6IDE1MHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwci1yb3ctYWN0aW9uLWRyb3Bkb3duID4gbGkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb24tZHJvcGRvd24gPiBsaSA+IGEge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbnMgPiBhIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5scHItcm93LWFjdGlvbnMgPiBhOmFmdGVyIHtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gICAgYm9yZGVyOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjREREO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICByaWdodDogMDtcclxuICAgIHRvcDogNnB4O1xyXG59XHJcblxyXG4ubHByLXJvdy1hY3Rpb25zOmhvdmVyID4gdWwge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbn1cclxuXHJcbi8qIGFkZG9ucyBwYWdlICovXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIHtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24tYmxvY2sge1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAjREREO1xyXG4gICAgcGFkZGluZy1ib3R0b206IDIwcHg7XHJcbiAgICB3aWR0aDogNTAlO1xyXG4gICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1ibG9jazphZnRlciB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgY2xlYXI6IGJvdGg7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRtaW4tdGh1bWJuYWlsIHtcclxuICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgd2lkdGg6IDIwMHB4O1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkbWluLXRodW1ibmFpbCBpbWcge1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24taW5mbyB7XHJcbiAgICBtYXJnaW4tbGVmdDogMjIwcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XHJcbn1cclxuXHJcbiNscHItYWRkLW9ucy13cmFwcGVyIC5scHItYWRkLW9uLWluZm8gPiBoMyB7XHJcbiAgICBtYXJnaW4tdG9wOiAwO1xyXG59XHJcblxyXG4jbHByLWFkZC1vbnMtd3JhcHBlciAubHByLWFkZC1vbi1pbmZvID4gaDMgPiBzcGFuIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHBhZGRpbmc6IDAgNXB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzdBRDNGQTtcclxuICAgIGNvbG9yOiAjRkZGO1xyXG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxufVxyXG5cclxuI2xwci1hZGQtb25zLXdyYXBwZXIgLmxwci1hZGQtb24tYWN0aW9uIHtcclxuICAgIGZsb2F0OiByaWdodDtcclxuICAgIHdpZHRoOiAxMDBweDtcclxufVxyXG5cclxuLyogdG9nZ2xlICovXHJcbmlucHV0Lmxwci1mYW5jeS1jaGVja2JveCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZyB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDRweCByZ2JhKDAsIDAsIDAsIC42KTtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgaGVpZ2h0OiAxOXB4O1xyXG4gICAgd2lkdGg6IDUwcHg7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBmb250OiAxMXB4LzE4cHggYXJpYWw7XHJcbiAgICBiYWNrZ3JvdW5kOiAjY2NjO1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2U7XHJcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubHByLWZhbmN5LWNoZWNrYm94LnRvZzphZnRlciB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCByZ2JhKDAsIDAsIDAsIC42KTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGhlaWdodDogMTVweDtcclxuICAgIHdpZHRoOiAxNXB4O1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMnB4O1xyXG4gICAgbGVmdDogMnB4O1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2U7XHJcbiAgICAtbW96LXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxuICAgIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZTtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2c6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdPRkYnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDdweDtcclxuICAgIHRvcDogMXB4O1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbn1cclxuXHJcbi5scHItZmFuY3ktY2hlY2tib3gudG9nOmhvdmVyOmFmdGVyIHtcclxuICAgIGxlZnQ6IDVweDtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub246YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdPTic7XHJcbiAgICByaWdodDogMjhweDtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub24ge1xyXG4gICAgYmFja2dyb3VuZDogIzA1QjNGRjtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub246YWZ0ZXIge1xyXG4gICAgbGVmdDogMzNweDtcclxufVxyXG5cclxuLmxwci1mYW5jeS1jaGVja2JveC50b2cub246aG92ZXI6YWZ0ZXIge1xyXG4gICAgbGVmdDogMzBweDtcclxufVxyXG5cclxuLyoqL1xyXG4uY2xlYXJmaXg6YWZ0ZXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGNsZWFyOiBib3RoO1xyXG59XHJcblxyXG4uY2xlYXIge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBjbGVhcjogYm90aDtcclxuICAgIGhlaWdodDogMDtcclxufVxyXG5cclxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyB7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24ge1xyXG5cclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLmxwLWxpc3Qtb3B0aW9uLWVtcHR5IHRkLFxyXG4ubHAtbGlzdC1vcHRpb24ubHAtbGlzdC1vcHRpb24tZW1wdHkgdGgge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZCRTlFOTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLmxwLWxpc3Qtb3B0aW9uLWVtcHR5IC5scC1hbnN3ZXItY2hlY2sgaW5wdXQsXHJcbi5scC1saXN0LW9wdGlvbi5scC1saXN0LW9wdGlvbi1lbXB0eSAubHAtbGlzdC1vcHRpb24tYWN0aW9ucyBpIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAuY2xtIHtcclxuXHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtaXRlbS1jaGVja2JveCB7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtaXRlbS1uYW1lIHtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1pdGVtLWFjdGlvbnMge1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIHRoZWFkIHRoIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUFFQUVBO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcblxyXG4gICAgY29sb3I6ICMwMEEwRDI7XHJcblxyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIHRib2R5IHRoLFxyXG4ubHAtbGlzdC1vcHRpb25zIHRib2R5IHRkIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XHJcbiAgICBwYWRkaW5nOiAxMHB4IDEwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyAubHAtYW5zd2VyLWNoZWNrIHtcclxuICAgIHdpZHRoOiAxMDBweDtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyB0Ym9keSB0aCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuLmxwLWxpc3Qtb3B0aW9ucyB0Ym9keSB0ZCBpbnB1dFt0eXBlPVwidGV4dFwiXSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9ucyAudWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb25zIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB0ZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi9pbWFnZXMvc3RyaXBlLnBuZ1wiKTtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uIC5scC1hbnN3ZXItdGV4dCB7XHJcbiAgICBjb2xvcjogIzc3NztcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbiAubHAtYW5zd2VyLXRleHQ6YWZ0ZXIge1xyXG4gICAgZm9udC1mYW1pbHk6IGRhc2hpY29ucztcclxuICAgIGNvbnRlbnQ6ICdcXGY0NjQnO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24gLmxwLWFuc3dlci10ZXh0OmZvY3VzLFxyXG4ubHAtbGlzdC1vcHRpb246aG92ZXIgLmxwLWFuc3dlci10ZXh0IHtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb246aG92ZXIgLmxwLWFuc3dlci10ZXh0IHtcclxuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xyXG59XHJcblxyXG4ubHAtbGlzdC1vcHRpb24tYWN0aW9ucyB7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBjb2xvcjogIzAwQTBEMjtcclxufVxyXG5cclxuLmxwLWxpc3Qtb3B0aW9uLWFjdGlvbnMubHAtbW92ZS1saXN0LW9wdGlvbiB7XHJcbiAgICBjdXJzb3I6IG1vdmU7XHJcbn1cclxuXHJcbi5scC1saXN0LW9wdGlvbi1hY3Rpb25zOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMTU2MDc3O1xyXG59XHJcblxyXG4vKiBRdWVzdGlvbiBtZXRhIGJveCAqL1xyXG4jcXVlc3Rpb25fYW5zd2VyIC5yd21iLXF1ZXN0aW9uLXdyYXBwZXIge1xyXG4gICAgbWFyZ2luOiAxMnB4IDAgMCAwO1xyXG59XHJcblxyXG4ucXVlc3Rpb24tYm90dG9tLWFjdGlvbnMgPiAqIHtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKiBRdWl6IG1ldGEgYm94ICovXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1aXogI3F1ZXN0aW9ucyxcclxuYm9keS5wb3N0LXR5cGUtbHBfcXVlc3Rpb24gI3F1ZXN0aW9uX2Fuc3dlcl8ge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcblxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWl6ICNxdWVzdGlvbnMgLmhhbmRsZWRpdixcclxuYm9keS5wb3N0LXR5cGUtbHBfcXVlc3Rpb24gI3F1ZXN0aW9uX2Fuc3dlcl8gLmhhbmRsZWRpdiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWl6ICNxdWVzdGlvbnMgLmhuZGxlLFxyXG5ib2R5LnBvc3QtdHlwZS1scF9xdWVzdGlvbiAjcXVlc3Rpb25fYW5zd2VyXyAuaG5kbGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuYm9keS5wb3N0LXR5cGUtbHBfcXVpeiAjcXVlc3Rpb25zIC5pbnNpZGUsXHJcbmJvZHkucG9zdC10eXBlLWxwX3F1ZXN0aW9uICNxdWVzdGlvbl9hbnN3ZXJfIC5pbnNpZGUge1xyXG4gICAgcGFkZGluZzogMDtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbnMtaGVhZGluZyAucXVlc3Rpb25zLXRvZ2dsZSB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbnMtaGVhZGluZyAucXVlc3Rpb25zLXRvZ2dsZSBhOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMDBhMGQyO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMgPiB1bCB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDEwMCU7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFRUU7XHJcbiAgICBib3JkZXItdG9wOiBub25lO1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIHotaW5kZXg6IDUwO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zICNsZWFybi1wcmVzcy1kcm9wZG93bi1xdWVzdGlvbnMgPiB1bCA+IGxpIHtcclxuICAgIG1hcmdpbjogMDtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtZHJvcGRvd24tcXVlc3Rpb25zID4gdWwgbGkgPiBhIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogNXB4O1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLXF1ZXN0aW9uLW5hbWUge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgbWluLXdpZHRoOiAzNTBweDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBib3JkZXItY29sb3I6ICNFRUU7XHJcbiAgICBjb2xvcjogI0JCQjtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbiNxdWVzdGlvbnMgI2xlYXJuLXByZXNzLXRvZ2dsZS1xdWVzdGlvbnMge1xyXG4gICAgaGVpZ2h0OiAzMnB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjRUVFO1xyXG4gICAgd2lkdGg6IDMycHg7XHJcbiAgICBtYXJnaW4tbGVmdDogLTRweDtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIGZvbnQtc2l6ZTogMzBweDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBjb2xvcjogI0NDQztcclxuICAgIGJvcmRlci1sZWZ0OiBub25lO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtdG9nZ2xlLXF1ZXN0aW9uczpob3ZlciB7XHJcbiAgICBjb2xvcjogI0FBQUFBQTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtYnV0dG9uLWFkZC1xdWVzdGlvbiB7XHJcbiAgICBfdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyBpbnB1dFtuYW1lPVwibHAtbmV3LXF1ZXN0aW9uLW5hbWVcIl0ge1xyXG5cclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgei1pbmRleDogOTk5O1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWhlYWQgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICBtYXJnaW46IDFweCAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgcGFkZGluZy10b3A6IDJweDtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi1oZWFkIC5xdWl6LXF1ZXN0aW9uLWFjdGlvbnMgYSB7XHJcbiAgICBtYXJnaW46IDAgM3B4O1xyXG4gICAgY29sb3I6IEBwcmltYXJ5LWljb24tY29sb3I7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgYm94LXNoYWRvdzogbm9uZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi1oZWFkIC5xdWl6LXF1ZXN0aW9uLWFjdGlvbnMgYTpob3ZlciB7XHJcbiAgICBjb2xvcjogIzAwYTBkMjtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi1oZWFkOmhvdmVyIC5xdWl6LXF1ZXN0aW9uLWFjdGlvbnMge1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAucXVpei1xdWVzdGlvbi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciB7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi9pbWFnZXMvc3RyaXBlLnBuZ1wiKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWVzdGlvbi1uYW1lIHtcclxuICAgIGJvcmRlcjogbm9uZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICB3aWR0aDogNzAlO1xyXG4gICAgY29sb3I6ICM3Nzc7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG59XHJcblxyXG4jcXVlc3Rpb25zIC5xdWl6LXF1ZXN0aW9uLWljb24gaW1nIHtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxufVxyXG5cclxuI3F1ZXN0aW9ucyAjbGVhcm4tcHJlc3MtZHJvcGRvd24tcXVlc3Rpb25zIC5hZGRlZCB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4ubHByLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIHtcclxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxwci1jdXJyaWN1bHVtLXNlY3Rpb24gPiBoMyAubHByLWFjdGlvbiB7XHJcbiAgICB0b3A6IDA7XHJcbiAgICByaWdodDogMDtcclxufVxyXG5cclxuLmxwci1jdXJyaWN1bHVtLXNlY3Rpb24ubHByLWVtcHR5ID4gaDMge1xyXG4gICAgY3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5scHItY3VycmljdWx1bS1zZWN0aW9uLmxwci1lbXB0eSAubHByLWFjdGlvbiB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5scHItY291cnNlLWN1cnJpY3VsdW0gYnV0dG9uIHNwYW4ge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1zdGF0aXN0aWMge1xyXG4gICAgbWFyZ2luLXRvcDogMjBweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWNoYXJ0IHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWNoYXJ0IGNhbnZhcyB7XHJcbiAgICBoZWlnaHQ6IDcwdmg7XHJcbiAgICB3aWR0aDogMTAwdnc7XHJcbn1cclxuXHJcbi5jaGFydC1idXR0b25zIGZvcm0ge1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmNoYXJ0LWJ1dHRvbnMgZm9ybSBpbnB1dFt0eXBlPVwidGV4dFwiXSB7XHJcbiAgICB3aWR0aDogMTA1cHg7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBwYWRkaW5nOiA0cHg7XHJcbn1cclxuXHJcbi5jaGFydC1idXR0b25zIGZvcm0gc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBwYWRkaW5nOiA1cHg7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1jaGFydC5sb2FkaW5nOmFmdGVyIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgei1pbmRleDogMTA7XHJcbiAgICBiYWNrZ3JvdW5kOiAjRkZGO1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24ge1xyXG5cclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIG1hcmdpbi1yaWdodDogMTVweDtcclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAxMHB4O1xyXG4gICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG59XHJcblxyXG4uY2hhcnQtZGVzY3JpcHRpb24gbGkgc3BhbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi5jaGFydC1kZXNjcmlwdGlvbiBsaS5hbGw6YmVmb3JlIHtcclxuICAgIGJhY2tncm91bmQ6ICMyRkE3RkY7XHJcbn1cclxuXHJcbi5jaGFydC1kZXNjcmlwdGlvbiBsaS5pbnN0cnVjdG9yczpiZWZvcmUge1xyXG4gICAgYmFja2dyb3VuZDogI0VBQzc5QjtcclxufVxyXG5cclxuLmNoYXJ0LWRlc2NyaXB0aW9uIGxpLnN0dWRlbnRzOmJlZm9yZSB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjRDREMENCO1xyXG59XHJcblxyXG4ubHByLXN0YXRzLXRpbWUge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4ubHByLWhpZGRlbiB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG4jbHByLWN1c3RvbS10aW1lIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHRvcDogNHB4O1xyXG59XHJcblxyXG4vKiBibG9jayBwYWdlICovXHJcbiNscHItcGFnZS1ibG9jayB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xyXG4gICAgb3BhY2l0eTogMC41O1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICAgIHotaW5kZXg6IDk5OTk7XHJcbn1cclxuXHJcbiNmb3JtLXF1aWNrLWFkZC1sZXNzb24tbGluayB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbn1cclxuXHJcbiNfbHByX2NvdXJzZV9wcmljZV9kZXNjcmlwdGlvbiA+IHNwYW4ge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbn1cclxuXHJcbi5scHItaWdub3JlLCAubHByLWlnbm9yZTpob3ZlciB7XHJcbiAgICBjb2xvcjogI2RkM2QzNjtcclxufVxyXG5cclxuLmxwci1pZ25vcmU6aG92ZXIge1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4ubHByLXF1aWNrLWFkZC1wYWdlLWlubGluZSxcclxuLmxwci1xdWljay1hY3Rpb25zLWlubGluZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiNscHItdG9nZ2xlLXF1aXotbW9kZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N0ZGO1xyXG4gICAgcGFkZGluZzogM3B4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIGNvbG9yOiAjRkZGO1xyXG59XHJcblxyXG4uY29sdW1uLW51bV9vZl9xdWVzdGlvbiB7XHJcbiAgICB3aWR0aDogMTUwcHg7XHJcbn1cclxuXHJcbi5scC1zZWFyY2gtaXRlbXMgaW5wdXRbbmFtZT1cImxwLWl0ZW0tbmFtZVwiXSB7XHJcbiAgICB3aWR0aDogNTAwcHg7XHJcbn1cclxuXHJcbi5scC1idXR0b24tZHJvcGRvd24ge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbiAgICBwYWRkaW5nLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB6LWluZGV4OiA5OTk5ODtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24tbGFiZWwge1xyXG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1hcnJvdyB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAvKiB3aWR0aDogMjBweDsgKi9cclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogLTFweDtcclxuICAgIGJvdHRvbTogLTFweDtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24taXRlbXMge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgLyogd2lkdGg6IDEwMCU7ICovXHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xyXG4gICAgdG9wOiAxMDAlO1xyXG4gICAgbWFyZ2luLXRvcDogMXB4O1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIHJpZ2h0OiAtMXB4O1xyXG4gICAgLyogcmlnaHQ6IC0xcHg7ICovXHJcbiAgICB3aWR0aDogMjAwcHg7XHJcbiAgICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93biAubHAtZHJvcGRvd24taXRlbXMgbGkge1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4ubHAtYnV0dG9uLWRyb3Bkb3duIC5scC1kcm9wZG93bi1pdGVtcyBsaSBhIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgb3V0bGluZTogbm9uZTtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5scC1idXR0b24tZHJvcGRvd24gLmxwLWRyb3Bkb3duLWl0ZW1zIGxpIGE6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1kcm9wZG93bjpub3QoLmRpc2FibGVkKTpob3ZlciB1bCxcclxuLmxwLWJ1dHRvbi1kcm9wZG93bjpub3QoLmRpc2FibGVkKSB1bDpob3ZlciB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLmN1cnJpY3VsdW0tc2VjdGlvbi5scC1lbXB0eS1zZWN0aW9uIHtcclxufVxyXG5cclxuLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtY2hlY2staXRlbXMsXHJcbi5jdXJyaWN1bHVtLXNlY3Rpb24gLmxwLWNoZWNrLWl0ZW1zOmhvdmVyIHtcclxuICAgIHBhZGRpbmctbGVmdDogNXB4O1xyXG4gICAgcGFkZGluZy1yaWdodDogMzRweDtcclxuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5jb2x1bW4tZm9ybWF0LFxyXG4uY29sdW1uLWlzX3ByZXZpZXdhYmxlLFxyXG4uY29sdW1uLXRheG9ub215LXF1ZXN0aW9uLXRhZyB7XHJcbiAgICB3aWR0aDogMTAlO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmluc3RhbGwtbm93OmJlZm9yZSxcclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5kaXNhYmxlLW5vdzpiZWZvcmUsXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuZW5hYmxlLW5vdzpiZWZvcmUge1xyXG4gICAgbWFyZ2luOiAzcHggNXB4IDAgLTJweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIGZvbnQ6IDQwMCAyMHB4LzEgZGFzaGljb25zO1xyXG4gICAgLypzcGVhazogbm9uZTsqL1xyXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5pbnN0YWxsLW5vdzpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcZjEwNic7XHJcbiAgICBjb2xvcjogIzAwNzNhYTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5kaXNhYmxlLW5vdzpiZWZvcmUge1xyXG4gICAgY29udGVudDogJ1xcZjE0Nyc7XHJcbiAgICBjb2xvcjogIzAwNzNhYTtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLWFkZC1vbnMgLnBsdWdpbi1jYXJkIC5lbmFibGUtbm93OmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnXFxmMzM1JztcclxuICAgIGNvbG9yOiAjZDU0ZTIxO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmRpc2FibGUtbm93OmhvdmVyOmJlZm9yZSB7XHJcbiAgICBjb250ZW50OiAnXFxmMzM1JztcclxuICAgIGNvbG9yOiAjZDU0ZTIxO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmVuYWJsZS1ub3c6aG92ZXI6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdcXGYxNDcnO1xyXG4gICAgY29sb3I6ICMwMDczYWE7XHJcbn1cclxuXHJcbi5sZWFybi1wcmVzcy1hZGQtb25zIC5wbHVnaW4tY2FyZCAuYnV0dG9uLXdvcmtpbmc6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICdcXGY0NjMnICFpbXBvcnRhbnQ7XHJcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbHAtc3Bpbm5lciAycyBpbmZpbml0ZSBsaW5lYXI7XHJcbiAgICBhbmltYXRpb246IGxwLXNwaW5uZXIgMnMgaW5maW5pdGUgbGluZWFyO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtYWRkLW9ucyAucGx1Z2luLWNhcmQgLmJ1dHRvbi13b3JraW5nIHNwYW4ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmxwLWJ1dHRvbi1hY3Rpb25zIGEge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXF1aWNrLWNvbmZpcm0ge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgei1pbmRleDogOTk5OTtcclxuICAgIGNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7XHJcbiAgICBwYWRkaW5nOiAycHggOHB4O1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgbGVmdDogLTM5LjYyNXB4O1xyXG4gICAgdG9wOiAyNHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0M5MDIwMjtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXF1aWNrLWNvbmZpcm06aG92ZXIsXHJcbi5sZWFybi1wcmVzcy1xdWljay1jb25maXJtOmhvdmVyOmJlZm9yZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDczYjAwO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtcXVpY2stY29uZmlybTpiZWZvcmUge1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIC8qIGJvcmRlcjogMXB4IHNvbGlkOyAqL1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xyXG4gICAgd2lkdGg6IDdweDtcclxuICAgIGhlaWdodDogN3B4O1xyXG4gICAgdG9wOiAtM3B4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0M5MDIwMjtcclxuICAgIHJpZ2h0OiA3cHg7XHJcbn1cclxuXHJcbi8qIGNvdXJzZSAqL1xyXG4ud3AtY29yZS11aSAubWV0YV9ib3hfYWRkX3NlY3Rpb24sXHJcbi53cC1jb3JlLXVpIC5tZXRhX2JveF9hZGRfbGVzc29uIHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxufVxyXG5cclxuLmhpZGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLmhhbmRsZS5kYXNoaWNvbnMge1xyXG4gICAgY3Vyc29yOiBtb3ZlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xyXG59XHJcblxyXG4ubWV0YV9ib3hfcmVtb3ZlIC5kYXNoaWNvbnMge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG59XHJcblxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIGlucHV0LFxyXG4ubWV0YV9ib3hfY291cnNlX2xlc3Nvbl9xdWl6IGxpIHNlbGVjdCB7XHJcbiAgICBtaW4td2lkdGg6IDI1MHB4O1xyXG59XHJcblxyXG4ucndtYi1tZXRhLWJveCBsYWJlbCB7XHJcbiAgICBjb2xvcjogIzIyMjtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICBtYXJnaW46IDAgMCAxNnB4IDA7XHJcbn1cclxuXHJcbi5kZXNjcmlwdGlvbiB7XHJcbiAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbn1cclxuXHJcbi5kYXNoZWQtcGxhY2Vob2xkZXIge1xyXG4gICAgYm9yZGVyOiAycHggZGFzaGVkICM5OTk7XHJcbiAgICBwYWRkaW5nOiAxMHB4O1xyXG59XHJcblxyXG4vKlxyXG4gICAgVHVOTiBhZGRlZCAyMSAwMyAyMDE1XHJcbiAgICBNb2RpZmllZCAwMyBBcHIgMjAxNVxyXG4qL1xyXG4vKiBDb3Vyc2UgQ3VycmljdWx1bW4gbWV0YSBib3ggc2VjdGlvbiovXHJcblxyXG4vKioqKioqKioqKioqIHZlcnNpb24gMS4wICoqKioqKioqKioqKioqL1xyXG5cclxuLyogb3JkZXIgKi9cclxuLnBvc3QtdHlwZS1scF9vcmRlciAjcG9zdC1ib2R5LWNvbnRlbnQsXHJcbi5wb3N0LXR5cGUtbHBfb3JkZXIgI29yZGVyX2RldGFpbHMgLmhhbmRsZWRpdixcclxuLnBvc3QtdHlwZS1scF9vcmRlciAjb3JkZXJfZGV0YWlscyAuaG5kbGUge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuLnBvc3QtdHlwZS1scF9vcmRlciAjc3VibWl0cG9zdCAubWlzYy1wdWItc2VjdGlvbiBsYWJlbCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciB7XHJcbiAgICBtYXJnaW46IDE1cHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItZGF0YS1udW1iZXIge1xyXG4gICAgZm9udC1zaXplOiAzNnB4O1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciA+IGgzIHtcclxuICAgIG1hcmdpbjogMCAwIDEwcHggMDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItZGF0YS1kYXRlLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWRhdGEtc3RhdHVzLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWRhdGEtcGF5bWVudC1tZXRob2Qge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgcGFkZGluZzogMCAwIDEwcHggMDtcclxufVxyXG5cclxuI2xlYXJuLXByZXNzLW9yZGVyIC51c2VyLWRpc3BsYXktbmFtZSxcclxuI2xlYXJuLXByZXNzLW9yZGVyIC51c2VyLWVtYWlsLFxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLnVzZXItaXAtYWRkcmVzcyB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgbWFyZ2luOiAwIDAgMTBweCAwO1xyXG59XHJcblxyXG4jbGVhcm4tcHJlc3Mtb3JkZXIgLm9yZGVyLWl0ZW1zIHRhYmxlIHtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItaXRlbXMgdGFibGUgdGgsXHJcbiNsZWFybi1wcmVzcy1vcmRlciAub3JkZXItaXRlbXMgdGFibGUgdGQge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIHBhZGRpbmc6IDEwcHggMTVweDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbn1cclxuXHJcbiNsZWFybi1wcmVzcy1pbnN0YWxsLXNhbXBsZS1kYXRhLW5vdGljZSAuaW5zdGFsbC1zYW1wbGUtZGF0YS1sb2FkaW5nIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbi8qIGxlYXJuX3ByZXNzX2Rhc2hib2FyZF93aWRnZXQgKi9cclxuI2xlYXJuX3ByZXNzX2Rhc2hib2FyZF93aWRnZXQge1xyXG4gICAgLnN1YnN1YnN1YiB7XHJcbiAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIGlvcyBjaGVja2JveCAqL1xyXG4ubGVhcm4tcHJlc3MtY2hlY2tib3gge1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG5pbnB1dC5yZWd1bGFyLXRleHRbaWRePVwibGVhcm4tcHJlc3MtZW1haWxzXCJdIHtcclxuICAgIHdpZHRoOiA5NyU7XHJcbn1cclxuXHJcbi5pb3MtdWktc2VsZWN0IHtcclxuICAgIGJhY2tncm91bmQ6ICNkZGRkZGQ7XHJcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIGhlaWdodDogMThweDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogOXB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogOXB4O1xyXG4gICAgd2lkdGg6IDMwcHg7XHJcbiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gICAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICAgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLWluLW91dDtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xyXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZS1pbi1vdXQ7XHJcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdC5jaGVja2VkIHtcclxuICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMThweCAjNmRkYzVmO1xyXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMThweCAjNmRkYzVmO1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdC5jaGVja2VkIC5pbm5lciB7XHJcbiAgICBsZWZ0OiAxM3B4O1xyXG59XHJcblxyXG4uaW9zLXVpLXNlbGVjdCAuaW5uZXIge1xyXG4gICAgd2lkdGg6IDE2cHg7XHJcbiAgICBoZWlnaHQ6IDE2cHg7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDFweDtcclxuICAgIGxlZnQ6IDFweDtcclxuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTAwJTtcclxuICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAwLjg5LCAwLjQ0LCAxKTtcclxuICAgIC1tb3otdHJhbnNpdGlvbjogYWxsIDM1MG1zIGN1YmljLWJlemllcigwLCAwLjg5LCAwLjQ0LCAxKTtcclxuICAgIC1vLXRyYW5zaXRpb246IGFsbCAzNTBtcyBjdWJpYy1iZXppZXIoMCwgMC44OSwgMC40NCwgMSk7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgMzUwbXMgY3ViaWMtYmV6aWVyKDAsIDAuODksIDAuNDQsIDEpO1xyXG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDFweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgM3B4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG59XHJcblxyXG4ubHAtbGFiZWwtY291bnRlciB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3M0FBO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIGhlaWdodDogMjFweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgbWluLXdpZHRoOiAyMXB4O1xyXG4gICAgY29sb3I6ICNGRkY7XHJcbiAgICBwYWRkaW5nOiAwIDVweDtcclxufVxyXG5cclxuLmNvbHVtbi1udW1fb2ZfcXVlc3Rpb24sXHJcbi5jb2x1bW4tcHJldmlldyxcclxuLmNvbHVtbi1kdXJhdGlvbixcclxuLmNvbHVtbi10eXBlLFxyXG4uY29sdW1uLXRheG9ub215LXF1ZXN0aW9uX3RhZyB7XHJcbiAgICB3aWR0aDogMTAwcHg7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG59XHJcblxyXG4jbGVhcm5fcHJlc3NfZGFzaGJvYXJkX3dpZGdldCB7XHJcbiAgICAucnNzLXdpZGdldCB7XHJcbiAgICAgICAgdWwge1xyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAucnNzLWRhdGUge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG4jbGVhcm5fcHJlc3NfZGFzaGJvYXJkX3dpZGdldF9zdGF0dXMge1xyXG4gICAgLmluc2lkZSB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgIC5sZWFybnByZXNzLXN0YXRpc3RpYy1zdGF0dXMge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgICAgICAgICA+IGEsID4gc3BhbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmLmZ1bGwtd2lkdGgge1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0OiBub25lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VjZWNlYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlY2VjZWM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA+IGEge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ubHAtdGVtcGxhdGUtb3ZlcnJpZGVzIHtcclxuICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICB0aGVhZCB0aCBoNCB7XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgdGJvZHkgdGgge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHAge1xyXG4gICAgICAgICAgICBtYXJnaW46IDAgMCAwIDEwcHg7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcclxuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgICAgICAgICAgJi5jdXJyZW50IHtcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBhYWRjO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLmxwLXRlbXBsYXRlLXZlcnNpb24ge1xyXG4gICAgICAgIHdpZHRoOiAxMDBweDtcclxuICAgICAgICAmLm91dGRhdGVkIHtcclxuICAgICAgICAgICAgY29sb3I6ICNGRjAwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICYudXAtdG8tZGF0ZSB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMTg1OWZmO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5scC10ZW1wbGF0ZS12ZXJzaW9uLCAubHAtY29yZS12ZXJzaW9uIHtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgIH1cclxuICAgIC5scC10ZW1wbGF0ZS1maWxlIHtcclxuICAgICAgICB3aWR0aDogNTAlO1xyXG4gICAgfVxyXG4gICAgI2xlYXJuLXByZXNzLW5vLXRlbXBsYXRlcyB0ZCBwIHtcclxuICAgICAgICBjb2xvcjogIzAwNzNhYTtcclxuICAgIH1cclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGxwLXNwaW5uZXIge1xyXG4gICAgMCUge1xyXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XHJcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTtcclxuICAgIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBscC1zcGlubmVyIHtcclxuICAgIDAlIHtcclxuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpO1xyXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5yd21iLXF1aXpfcXVlc3Rpb25zLXdyYXBwZXIge1xyXG4gICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgIC5xdWl6LXF1ZXN0aW9ucy1oZWFkaW5nIHtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGOUY5Rjk7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcclxuICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgY29sb3I6ICM3Nzc7XHJcbiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4IDIwcHg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDMycHg7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjMDA3M2FhO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICAmLmRhc2hpY29ucy1hcnJvdy1kb3duIHtcclxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMGEwZDI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAjbGVhcm4tcHJlc3MtbGlzdC1xdWVzdGlvbnMge1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAucXVpei1xdWVzdGlvbiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjREREO1xyXG4gICAgICAgICAgICBtYXJnaW46IC0xcHggMCAwIDA7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwO1xyXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgybisxKSB7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDO1xyXG4gICAgICAgICAgICAgICAgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0ZDRkM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLnF1aXotcXVlc3Rpb24taGVhZCB7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgICAgICAgICAucXVpei1xdWVzdGlvbi1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLnF1ZXN0aW9uLW5hbWUge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC5tb3ZlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzY2NjtcclxuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHVybChcIi4uLy4uL2ltYWdlcy9vcGVuaGFuZC5jdXJcIikgNyA1LCBkZWZhdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICByaWdodDogMTRweDtcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgdG9wOiA1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMGEwZDI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgLnF1aXotcXVlc3Rpb24tYWN0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmRhc2hpY29ucy1hZG1pbi1wYWdlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5xdWl6LXF1ZXN0aW9uLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4ucG9zdC10eXBlLWxwX3F1aXoge1xyXG4gICAgI2dlbmVyYWwtc2V0dGluZ3Mge1xyXG4gICAgICAgIGEge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmxlYXJuLXByZXNzLXRhYnMge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICB1bC5oZWFkaW5nLXRhYnMge1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMTBweDtcclxuICAgICAgICBtYXJnaW46IDBweDtcclxuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcclxuXHJcbiAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDEwcHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgYSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLypmb250LXdlaWdodDogYm9sZDsqL1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDAyYTNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC02cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAtNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5sZWFybi1wcmVzcy10YWItY29udGVudCB7XHJcbiAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAxMHB4IDIwcHg7XHJcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTAwJTtcclxuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gICAgJi5pbml0aWFsaXplIHtcclxuICAgICAgICAubGVhcm4tcHJlc3MtdGFiLWNvbnRlbnQgPiBsaSB7XHJcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmxlYXJuLXByZXNzLXRhYi1jb250ZW50IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtdGV4dCk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiA1MCU7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjUlO1xyXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjYTBhMGEwO1xyXG5cclxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcclxuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIGxpbmVhciAxcztcclxuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcbiAgICAgICAgICAgICAgICAtbW96LWFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICAtbW96LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgLW8tYW5pbWF0aW9uOiBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIGxpbmVhciAxcztcclxuICAgICAgICAgICAgICAgIC1vLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgLW1zLWFuaW1hdGlvbjogbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiBsaW5lYXIgMXM7XHJcbiAgICAgICAgICAgICAgICAtbXMtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAmOm5vdCguaW5pdGlhbGl6ZSkge1xyXG4gICAgICAgIC5sZWFybi1wcmVzcy10YWItY29udGVudCA+IGxpIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgJi5hY3RpdmUge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICA+IHVsIHtcclxuICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vKiBNZXRhYm94IFdpZGdldCAqL1xyXG4jd2lkZ2V0cy1yaWdodCAud2lkZ2V0cy1ob2xkZXItd3JhcCB7XHJcbiAgICAucndtYi1sYWJlbCB7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xyXG4gICAgfVxyXG4gICAgLnJ3bWItaW5wdXR7XHJcbiAgICAgICAgaW5wdXRbdHlwZT1cInRleHRcIl17XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC5kZXNjcmlwdGlvbiB7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgZm9udC1zaXplOiBzbWFsbDtcclxuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5vdXRkYXRlZC1yZWFkbW9yZS1saW5re1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG59XHJcblxyXG4ubGVhcm4tcHJlc3MtbWVzc2FnZS5ub3RpY2Utd2FybmluZyB7XHJcbiAgICBib3JkZXItbGVmdC1jb2xvcjogI2ZmYjkwMDtcclxufVxyXG5cclxuQGtleWZyYW1lcyBsZWFybi1wcmVzcy1tZXRhLWJveC10YWJzLWluaXRpYWxpemUtYW5pbWF0aW9uIHtcclxuICAgIDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG4gICAgNTAlIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG4gICAgMTAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxufVxyXG5cclxuQC1tb3ota2V5ZnJhbWVzIGxlYXJuLXByZXNzLW1ldGEtYm94LXRhYnMtaW5pdGlhbGl6ZS1hbmltYXRpb24ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICA1MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiB7XHJcbiAgICAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxuICAgIDUwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkAtby1rZXlmcmFtZXMgbGVhcm4tcHJlc3MtbWV0YS1ib3gtdGFicy1pbml0aWFsaXplLWFuaW1hdGlvbiB7XHJcbiAgICAwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMDtcclxuICAgIH1cclxuICAgIDUwJSB7XHJcbiAgICAgICAgb3BhY2l0eTogMTtcclxuICAgIH1cclxuICAgIDEwMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkAtbXMta2V5ZnJhbWVzIGxlYXJuLXByZXNzLW1ldGEtYm94LXRhYnMtaW5pdGlhbGl6ZS1hbmltYXRpb24ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICA1MCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDE7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgfVxyXG59XHJcbiJdLCJmaWxlIjoiYWRtaW4vYWRtaW4uY3NzIn0= */
|
assets/css/admin/attributes.css
CHANGED
@@ -15,3 +15,5 @@
|
|
15 |
padding: 15px;
|
16 |
border-top: 1px solid #DDD;
|
17 |
}
|
|
|
|
15 |
padding: 15px;
|
16 |
border-top: 1px solid #DDD;
|
17 |
}
|
18 |
+
|
19 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFkbWluL2F0dHJpYnV0ZXMubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGNBQUE7O0FBREosa0JBRUk7RUFDSSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7O0FBTFIsa0JBRUksdUJBSUk7RUFDSSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTs7QUFUWixrQkFFSSx1QkFTSTtFQUNJLGFBQUE7RUFDQSwwQkFBQSIsInNvdXJjZXNDb250ZW50IjpbIi5jb3Vyc2UtYXR0cmlidXRlcyB7XHJcbiAgICBtYXJnaW46IDIwcHggMDtcclxuICAgIC5sZWFybi1wcmVzcy1hdHRyaWJ1dGUge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTFweDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgICAgID4gaDQge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XHJcbiAgICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLmxlYXJuLXByZXNzLWF0dHJpYnV0ZS1kYXRhIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMTVweDtcclxuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG4iXSwiZmlsZSI6ImFkbWluL2F0dHJpYnV0ZXMuY3NzIn0= */
|
assets/css/admin/course-editor.css
CHANGED
@@ -1,251 +1,253 @@
|
|
1 |
-
#learn-press-course-editor {
|
2 |
-
margin-bottom: 20px;
|
3 |
-
background: #FFF;
|
4 |
-
padding: 20px;
|
5 |
-
box-shadow: 0 0 10px #DDD;
|
6 |
-
}
|
7 |
-
#learn-press-course-editor:after {
|
8 |
-
display: block;
|
9 |
-
clear: both;
|
10 |
-
content: '';
|
11 |
-
}
|
12 |
-
#learn-press-course-editor #course-curriculum {
|
13 |
-
width: 38%;
|
14 |
-
border: 1px solid #DDD;
|
15 |
-
margin-bottom: 20px;
|
16 |
-
}
|
17 |
-
#learn-press-course-editor #course-curriculum .course-section {
|
18 |
-
background: #FFF;
|
19 |
-
position: relative;
|
20 |
-
border-bottom: 3px solid #B7B7B7;
|
21 |
-
}
|
22 |
-
#learn-press-course-editor #course-curriculum .course-section .section-head {
|
23 |
-
border-bottom: 1px solid #DDD;
|
24 |
-
background: #F9F9F9;
|
25 |
-
position: relative;
|
26 |
-
}
|
27 |
-
#learn-press-course-editor #course-curriculum .course-section .section-head input[type="text"] {
|
28 |
-
display: block;
|
29 |
-
width: 100%;
|
30 |
-
margin: 0;
|
31 |
-
border: none;
|
32 |
-
height: 50px;
|
33 |
-
font-weight: bold;
|
34 |
-
font-size: 20px;
|
35 |
-
padding: 10px 15px;
|
36 |
-
color: #777;
|
37 |
-
background: transparent;
|
38 |
-
}
|
39 |
-
#learn-press-course-editor #course-curriculum .course-section .section-head:hover .section-move,
|
40 |
-
#learn-press-course-editor #course-curriculum .course-section .section-head:hover .course-row-actions {
|
41 |
-
display: inline-block;
|
42 |
-
}
|
43 |
-
#learn-press-course-editor #course-curriculum .course-section .section-head:hover:after {
|
44 |
-
content: '';
|
45 |
-
display: block;
|
46 |
-
position: absolute;
|
47 |
-
top: 0;
|
48 |
-
left: 0;
|
49 |
-
width: 100%;
|
50 |
-
height: 100%;
|
51 |
-
background: #0085ba;
|
52 |
-
opacity: 0.1;
|
53 |
-
pointer-events: none;
|
54 |
-
}
|
55 |
-
#learn-press-course-editor #course-curriculum .course-section .section-add-content {
|
56 |
-
margin: 10px 10px;
|
57 |
-
}
|
58 |
-
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul {
|
59 |
-
margin-bottom: 10px;
|
60 |
-
display: none;
|
61 |
-
}
|
62 |
-
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li {
|
63 |
-
display: inline-block;
|
64 |
-
width: 70px;
|
65 |
-
border: 1px solid #DDD;
|
66 |
-
font-size: 48px;
|
67 |
-
height: 60px;
|
68 |
-
line-height: 60px;
|
69 |
-
border-radius: 3px;
|
70 |
-
margin-right: 6px;
|
71 |
-
background: #FFF;
|
72 |
-
}
|
73 |
-
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li:before {
|
74 |
-
color: #DDD;
|
75 |
-
}
|
76 |
-
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li:hover {
|
77 |
-
cursor: move;
|
78 |
-
}
|
79 |
-
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li:hover:before {
|
80 |
-
color: #00A0D2;
|
81 |
-
}
|
82 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items {
|
83 |
-
margin: 0;
|
84 |
-
min-height: 40px;
|
85 |
-
}
|
86 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items.section-empty:after {
|
87 |
-
content: 'Add item here';
|
88 |
-
display: block;
|
89 |
-
height: 50px;
|
90 |
-
font-size: 18px;
|
91 |
-
text-align: center;
|
92 |
-
line-height: 50px;
|
93 |
-
}
|
94 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li {
|
95 |
-
margin: 0;
|
96 |
-
border-bottom: 1px solid #DDD;
|
97 |
-
position: relative;
|
98 |
-
background: #FFF;
|
99 |
-
}
|
100 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li input[type="text"] {
|
101 |
-
width: 100%;
|
102 |
-
box-sizing: border-box;
|
103 |
-
margin: 0;
|
104 |
-
border: none;
|
105 |
-
padding: 10px 15px;
|
106 |
-
background: transparent;
|
107 |
-
color: #777;
|
108 |
-
}
|
109 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li:hover .section-item-move,
|
110 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li:hover .course-row-actions {
|
111 |
-
display: inline-block;
|
112 |
-
}
|
113 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li:hover:after {
|
114 |
-
content: '';
|
115 |
-
display: block;
|
116 |
-
position: absolute;
|
117 |
-
top: 0;
|
118 |
-
left: 0;
|
119 |
-
width: 100%;
|
120 |
-
height: 100%;
|
121 |
-
background: #0085ba;
|
122 |
-
opacity: 0.1;
|
123 |
-
pointer-events: none;
|
124 |
-
}
|
125 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li.ui-sortable-placeholder {
|
126 |
-
visibility: visible !important;
|
127 |
-
background: #FFF;
|
128 |
-
box-shadow: 0 0 20px #DDD inset;
|
129 |
-
}
|
130 |
-
#learn-press-course-editor #course-curriculum .course-section .section-items li.ui-sortable-placeholder:after {
|
131 |
-
content: 'Drop item here!';
|
132 |
-
position: absolute;
|
133 |
-
width: 100%;
|
134 |
-
height: 40px;
|
135 |
-
line-height: 40px;
|
136 |
-
text-align: center;
|
137 |
-
font-size: 20px;
|
138 |
-
color: #777;
|
139 |
-
}
|
140 |
-
#learn-press-course-editor #course-curriculum .course-section .section-move,
|
141 |
-
#learn-press-course-editor #course-curriculum .course-section .section-item-move {
|
142 |
-
display: none;
|
143 |
-
width: 15px;
|
144 |
-
height: 30px;
|
145 |
-
background: url("../../images/grippy_large.png") 4px center no-repeat;
|
146 |
-
position: absolute;
|
147 |
-
top: 50%;
|
148 |
-
margin-top: -15px;
|
149 |
-
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
150 |
-
}
|
151 |
-
#learn-press-course-editor #course-curriculum .course-section.ui-sortable-placeholder {
|
152 |
-
visibility: visible !important;
|
153 |
-
background: #FFF;
|
154 |
-
box-shadow: 0 0 20px #DDD inset;
|
155 |
-
}
|
156 |
-
#learn-press-course-editor #course-curriculum .course-section.ui-sortable-placeholder:after {
|
157 |
-
content: 'Drop section here!';
|
158 |
-
position: absolute;
|
159 |
-
width: 100%;
|
160 |
-
height: 40px;
|
161 |
-
line-height: 40px;
|
162 |
-
text-align: center;
|
163 |
-
font-size: 20px;
|
164 |
-
color: #777;
|
165 |
-
top: 50%;
|
166 |
-
margin-top: -20px;
|
167 |
-
}
|
168 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions {
|
169 |
-
position: absolute;
|
170 |
-
right: 4px;
|
171 |
-
height: 24px;
|
172 |
-
top: 50%;
|
173 |
-
margin-top: -13px;
|
174 |
-
line-height: 24px;
|
175 |
-
background: #F5F5F5;
|
176 |
-
padding: 0 8px;
|
177 |
-
font-size: 11px;
|
178 |
-
border-radius: 3px;
|
179 |
-
border: 1px solid #efefef;
|
180 |
-
display: none;
|
181 |
-
}
|
182 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a,
|
183 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions > div {
|
184 |
-
text-decoration: none;
|
185 |
-
color: #9c9c9c;
|
186 |
-
text-shadow: 1px 1px #fff;
|
187 |
-
}
|
188 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a:hover,
|
189 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions > div:hover {
|
190 |
-
color: #39afff;
|
191 |
-
}
|
192 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a.remove {
|
193 |
-
margin-right: 3px;
|
194 |
-
}
|
195 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a.remove:hover {
|
196 |
-
color: #FF0000;
|
197 |
-
}
|
198 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions .toggle {
|
199 |
-
display: inline-block;
|
200 |
-
width: 24px;
|
201 |
-
margin-right: -8px;
|
202 |
-
text-align: center;
|
203 |
-
font-size: 20px;
|
204 |
-
vertical-align: middle;
|
205 |
-
line-height: 23px;
|
206 |
-
border-left: 1px solid #efefef;
|
207 |
-
height: 24px;
|
208 |
-
background: #efefef;
|
209 |
-
margin-top: -2px;
|
210 |
-
}
|
211 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add {
|
212 |
-
margin-left: 3px;
|
213 |
-
display: inline-block;
|
214 |
-
}
|
215 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div {
|
216 |
-
display: none;
|
217 |
-
position: absolute;
|
218 |
-
min-width: 303px;
|
219 |
-
right: 0;
|
220 |
-
top: 100%;
|
221 |
-
background: #F5F5F5;
|
222 |
-
border: 1px solid #DDD;
|
223 |
-
z-index: 999;
|
224 |
-
text-align: right;
|
225 |
-
padding: 10px 10px 3px 10px;
|
226 |
-
}
|
227 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div ul {
|
228 |
-
margin-bottom: 10px;
|
229 |
-
}
|
230 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div ul li {
|
231 |
-
width: 65px;
|
232 |
-
height: 48px;
|
233 |
-
font-size: 48px;
|
234 |
-
border: 1px solid #DDD;
|
235 |
-
border-radius: 3px;
|
236 |
-
margin-left: 5px;
|
237 |
-
}
|
238 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div a {
|
239 |
-
text-align: right;
|
240 |
-
margin-left: 8px;
|
241 |
-
}
|
242 |
-
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add:hover > div {
|
243 |
-
display: block;
|
244 |
-
}
|
245 |
-
#learn-press-course-editor #course-item-editor {
|
246 |
-
width: 60%;
|
247 |
-
float: right;
|
248 |
-
border: 1px solid #DDD;
|
249 |
-
padding: 0 20px;
|
250 |
-
box-sizing: border-box;
|
251 |
-
}
|
|
|
|
1 |
+
#learn-press-course-editor {
|
2 |
+
margin-bottom: 20px;
|
3 |
+
background: #FFF;
|
4 |
+
padding: 20px;
|
5 |
+
box-shadow: 0 0 10px #DDD;
|
6 |
+
}
|
7 |
+
#learn-press-course-editor:after {
|
8 |
+
display: block;
|
9 |
+
clear: both;
|
10 |
+
content: '';
|
11 |
+
}
|
12 |
+
#learn-press-course-editor #course-curriculum {
|
13 |
+
width: 38%;
|
14 |
+
border: 1px solid #DDD;
|
15 |
+
margin-bottom: 20px;
|
16 |
+
}
|
17 |
+
#learn-press-course-editor #course-curriculum .course-section {
|
18 |
+
background: #FFF;
|
19 |
+
position: relative;
|
20 |
+
border-bottom: 3px solid #B7B7B7;
|
21 |
+
}
|
22 |
+
#learn-press-course-editor #course-curriculum .course-section .section-head {
|
23 |
+
border-bottom: 1px solid #DDD;
|
24 |
+
background: #F9F9F9;
|
25 |
+
position: relative;
|
26 |
+
}
|
27 |
+
#learn-press-course-editor #course-curriculum .course-section .section-head input[type="text"] {
|
28 |
+
display: block;
|
29 |
+
width: 100%;
|
30 |
+
margin: 0;
|
31 |
+
border: none;
|
32 |
+
height: 50px;
|
33 |
+
font-weight: bold;
|
34 |
+
font-size: 20px;
|
35 |
+
padding: 10px 15px;
|
36 |
+
color: #777;
|
37 |
+
background: transparent;
|
38 |
+
}
|
39 |
+
#learn-press-course-editor #course-curriculum .course-section .section-head:hover .section-move,
|
40 |
+
#learn-press-course-editor #course-curriculum .course-section .section-head:hover .course-row-actions {
|
41 |
+
display: inline-block;
|
42 |
+
}
|
43 |
+
#learn-press-course-editor #course-curriculum .course-section .section-head:hover:after {
|
44 |
+
content: '';
|
45 |
+
display: block;
|
46 |
+
position: absolute;
|
47 |
+
top: 0;
|
48 |
+
left: 0;
|
49 |
+
width: 100%;
|
50 |
+
height: 100%;
|
51 |
+
background: #0085ba;
|
52 |
+
opacity: 0.1;
|
53 |
+
pointer-events: none;
|
54 |
+
}
|
55 |
+
#learn-press-course-editor #course-curriculum .course-section .section-add-content {
|
56 |
+
margin: 10px 10px;
|
57 |
+
}
|
58 |
+
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul {
|
59 |
+
margin-bottom: 10px;
|
60 |
+
display: none;
|
61 |
+
}
|
62 |
+
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li {
|
63 |
+
display: inline-block;
|
64 |
+
width: 70px;
|
65 |
+
border: 1px solid #DDD;
|
66 |
+
font-size: 48px;
|
67 |
+
height: 60px;
|
68 |
+
line-height: 60px;
|
69 |
+
border-radius: 3px;
|
70 |
+
margin-right: 6px;
|
71 |
+
background: #FFF;
|
72 |
+
}
|
73 |
+
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li:before {
|
74 |
+
color: #DDD;
|
75 |
+
}
|
76 |
+
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li:hover {
|
77 |
+
cursor: move;
|
78 |
+
}
|
79 |
+
#learn-press-course-editor #course-curriculum .course-section .section-add-content > ul > li:hover:before {
|
80 |
+
color: #00A0D2;
|
81 |
+
}
|
82 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items {
|
83 |
+
margin: 0;
|
84 |
+
min-height: 40px;
|
85 |
+
}
|
86 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items.section-empty:after {
|
87 |
+
content: 'Add item here';
|
88 |
+
display: block;
|
89 |
+
height: 50px;
|
90 |
+
font-size: 18px;
|
91 |
+
text-align: center;
|
92 |
+
line-height: 50px;
|
93 |
+
}
|
94 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li {
|
95 |
+
margin: 0;
|
96 |
+
border-bottom: 1px solid #DDD;
|
97 |
+
position: relative;
|
98 |
+
background: #FFF;
|
99 |
+
}
|
100 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li input[type="text"] {
|
101 |
+
width: 100%;
|
102 |
+
box-sizing: border-box;
|
103 |
+
margin: 0;
|
104 |
+
border: none;
|
105 |
+
padding: 10px 15px;
|
106 |
+
background: transparent;
|
107 |
+
color: #777;
|
108 |
+
}
|
109 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li:hover .section-item-move,
|
110 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li:hover .course-row-actions {
|
111 |
+
display: inline-block;
|
112 |
+
}
|
113 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li:hover:after {
|
114 |
+
content: '';
|
115 |
+
display: block;
|
116 |
+
position: absolute;
|
117 |
+
top: 0;
|
118 |
+
left: 0;
|
119 |
+
width: 100%;
|
120 |
+
height: 100%;
|
121 |
+
background: #0085ba;
|
122 |
+
opacity: 0.1;
|
123 |
+
pointer-events: none;
|
124 |
+
}
|
125 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li.ui-sortable-placeholder {
|
126 |
+
visibility: visible !important;
|
127 |
+
background: #FFF;
|
128 |
+
box-shadow: 0 0 20px #DDD inset;
|
129 |
+
}
|
130 |
+
#learn-press-course-editor #course-curriculum .course-section .section-items li.ui-sortable-placeholder:after {
|
131 |
+
content: 'Drop item here!';
|
132 |
+
position: absolute;
|
133 |
+
width: 100%;
|
134 |
+
height: 40px;
|
135 |
+
line-height: 40px;
|
136 |
+
text-align: center;
|
137 |
+
font-size: 20px;
|
138 |
+
color: #777;
|
139 |
+
}
|
140 |
+
#learn-press-course-editor #course-curriculum .course-section .section-move,
|
141 |
+
#learn-press-course-editor #course-curriculum .course-section .section-item-move {
|
142 |
+
display: none;
|
143 |
+
width: 15px;
|
144 |
+
height: 30px;
|
145 |
+
background: url("../../images/grippy_large.png") 4px center no-repeat;
|
146 |
+
position: absolute;
|
147 |
+
top: 50%;
|
148 |
+
margin-top: -15px;
|
149 |
+
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
150 |
+
}
|
151 |
+
#learn-press-course-editor #course-curriculum .course-section.ui-sortable-placeholder {
|
152 |
+
visibility: visible !important;
|
153 |
+
background: #FFF;
|
154 |
+
box-shadow: 0 0 20px #DDD inset;
|
155 |
+
}
|
156 |
+
#learn-press-course-editor #course-curriculum .course-section.ui-sortable-placeholder:after {
|
157 |
+
content: 'Drop section here!';
|
158 |
+
position: absolute;
|
159 |
+
width: 100%;
|
160 |
+
height: 40px;
|
161 |
+
line-height: 40px;
|
162 |
+
text-align: center;
|
163 |
+
font-size: 20px;
|
164 |
+
color: #777;
|
165 |
+
top: 50%;
|
166 |
+
margin-top: -20px;
|
167 |
+
}
|
168 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions {
|
169 |
+
position: absolute;
|
170 |
+
right: 4px;
|
171 |
+
height: 24px;
|
172 |
+
top: 50%;
|
173 |
+
margin-top: -13px;
|
174 |
+
line-height: 24px;
|
175 |
+
background: #F5F5F5;
|
176 |
+
padding: 0 8px;
|
177 |
+
font-size: 11px;
|
178 |
+
border-radius: 3px;
|
179 |
+
border: 1px solid #efefef;
|
180 |
+
display: none;
|
181 |
+
}
|
182 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a,
|
183 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions > div {
|
184 |
+
text-decoration: none;
|
185 |
+
color: #9c9c9c;
|
186 |
+
text-shadow: 1px 1px #fff;
|
187 |
+
}
|
188 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a:hover,
|
189 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions > div:hover {
|
190 |
+
color: #39afff;
|
191 |
+
}
|
192 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a.remove {
|
193 |
+
margin-right: 3px;
|
194 |
+
}
|
195 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions a.remove:hover {
|
196 |
+
color: #FF0000;
|
197 |
+
}
|
198 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions .toggle {
|
199 |
+
display: inline-block;
|
200 |
+
width: 24px;
|
201 |
+
margin-right: -8px;
|
202 |
+
text-align: center;
|
203 |
+
font-size: 20px;
|
204 |
+
vertical-align: middle;
|
205 |
+
line-height: 23px;
|
206 |
+
border-left: 1px solid #efefef;
|
207 |
+
height: 24px;
|
208 |
+
background: #efefef;
|
209 |
+
margin-top: -2px;
|
210 |
+
}
|
211 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add {
|
212 |
+
margin-left: 3px;
|
213 |
+
display: inline-block;
|
214 |
+
}
|
215 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div {
|
216 |
+
display: none;
|
217 |
+
position: absolute;
|
218 |
+
min-width: 303px;
|
219 |
+
right: 0;
|
220 |
+
top: 100%;
|
221 |
+
background: #F5F5F5;
|
222 |
+
border: 1px solid #DDD;
|
223 |
+
z-index: 999;
|
224 |
+
text-align: right;
|
225 |
+
padding: 10px 10px 3px 10px;
|
226 |
+
}
|
227 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div ul {
|
228 |
+
margin-bottom: 10px;
|
229 |
+
}
|
230 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div ul li {
|
231 |
+
width: 65px;
|
232 |
+
height: 48px;
|
233 |
+
font-size: 48px;
|
234 |
+
border: 1px solid #DDD;
|
235 |
+
border-radius: 3px;
|
236 |
+
margin-left: 5px;
|
237 |
+
}
|
238 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add > div a {
|
239 |
+
text-align: right;
|
240 |
+
margin-left: 8px;
|
241 |
+
}
|
242 |
+
#learn-press-course-editor #course-curriculum .course-section .course-row-actions div.add:hover > div {
|
243 |
+
display: block;
|
244 |
+
}
|
245 |
+
#learn-press-course-editor #course-item-editor {
|
246 |
+
width: 60%;
|
247 |
+
float: right;
|
248 |
+
border: 1px solid #DDD;
|
249 |
+
padding: 0 20px;
|
250 |
+
box-sizing: border-box;
|
251 |
+
}
|
252 |
+
|
253 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFkbWluL2NvdXJzZS1lZGl0b3IubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxhQUFBO0VBQ0EseUJBQUE7O0FBQ0EsMEJBQUM7RUFDRyxjQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQVMsRUFBVDs7QUFSUiwwQkFhSTtFQUNJLFVBQUE7RUFDQSxzQkFBQTtFQUNBLG1CQUFBOztBQWhCUiwwQkFhSSxtQkFJSTtFQUNJLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQ0FBQTs7QUFwQlosMEJBYUksbUJBSUksZ0JBSUk7RUFDSSw2QkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7O0FBeEJoQiwwQkFhSSxtQkFJSSxnQkFJSSxjQUlJLE1BQUs7RUFDRCxjQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLHVCQUFBOztBQUVKLDBCQXhCWixtQkFJSSxnQkFJSSxjQWdCSyxNQUNHO0FBREosMEJBeEJaLG1CQUlJLGdCQUlJLGNBZ0JLLE1BQ2tCO0VBQ1gscUJBQUE7O0FBRUosMEJBNUJoQixtQkFJSSxnQkFJSSxjQWdCSyxNQUlJO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0VBQ0EsWUFBQTtFQUNBLG9CQUFBOztBQW5EeEIsMEJBYUksbUJBSUksZ0JBc0NJO0VBQ0ksaUJBQUE7O0FBeERoQiwwQkFhSSxtQkFJSSxnQkFzQ0kscUJBRUk7RUFDSSxtQkFBQTtFQUNBLGFBQUE7O0FBM0RwQiwwQkFhSSxtQkFJSSxnQkFzQ0kscUJBRUksS0FHSTtFQUNJLHFCQUFBO0VBQ0EsV0FBQTtFQUNBLHNCQUFBO0VBQ0EsZUFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0Es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Q0kscUJBQUE7RUFDQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxzQkFBQTtFQUNBLGlCQUFBO0VBQ0EsOEJBQUE7RUFDQSxZQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTs7QUF0TnBCLDBCQWFJLG1CQUlJLGdCQStKSSxvQkF3Q0ksSUFBRztFQUNDLGdCQUFBO0VBQ0EscUJBQUE7O0FBMU5wQiwwQkFhSSxtQkFJSSxnQkErSkksb0JBd0NJLElBQUcsSUFHQztFQUNJLGFBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsMkJBQUE7O0FBck94QiwwQkFhSSxtQkFJSSxnQkErSkksb0JBd0NJLElBQUcsSUFHQyxNQVdJO0VBQ0ksbUJBQUE7O0FBdk81QiwwQkFhSSxtQkFJSSxnQkErSkksb0JBd0NJLElBQUcsSUFHQyxNQVdJLEdBRUk7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGVBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7O0FBOU9oQywwQkFhSSxtQkFJSSxnQkErSkksb0JBd0NJLElBQUcsSUFHQyxNQXVCSTtFQUNJLGlCQUFBO0VBQ0EsZ0JBQUE7O0FBR1IsMEJBMU9oQixtQkFJSSxnQkErSkksb0JBd0NJLElBQUcsSUErQkUsTUFDRztFQUNJLGNBQUE7O0FBelA1QiwwQkFpUUk7RUFDSSxVQUFBO0VBQ0EsWUFBQTtFQUNBLHNCQUFBO0VBQ0EsZUFBQTtFQUNBLHNCQUFBIiwic291cmNlc0NvbnRlbnQiOlsiI2xlYXJuLXByZXNzLWNvdXJzZS1lZGl0b3Ige1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICBwYWRkaW5nOiAyMHB4O1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDEwcHggI0RERDtcclxuICAgICY6YWZ0ZXIge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgfVxyXG4gICAgI2NvdXJzZS1jdXJyaWN1bHVtLCAjY291cnNlLWl0ZW0tZWRpdG9yIHtcclxuXHJcbiAgICB9XHJcbiAgICAjY291cnNlLWN1cnJpY3VsdW0ge1xyXG4gICAgICAgIHdpZHRoOiAzOCU7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gICAgICAgIC5jb3Vyc2Utc2VjdGlvbiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICNCN0I3Qjc7XHJcbiAgICAgICAgICAgIC5zZWN0aW9uLWhlYWQge1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjlGOUY5O1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1cInRleHRcIl0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM3Nzc7XHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAuc2VjdGlvbi1tb3ZlLCAuY291cnNlLXJvdy1hY3Rpb25zIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwODViYTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC4xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLnNlY3Rpb24tYWRkLWNvbnRlbnQge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDEwcHg7XHJcbiAgICAgICAgICAgICAgICA+IHVsIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgPiBsaSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDcwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA2MHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNjBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNEREQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IG1vdmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMEEwRDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLnNlY3Rpb24taXRlbXMge1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgICYuc2VjdGlvbi1lbXB0eSB7XHJcbiAgICAgICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdBZGQgaXRlbSBoZXJlJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1cInRleHRcIl0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNzc3O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2VjdGlvbi1pdGVtLW1vdmUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jb3Vyc2Utcm93LWFjdGlvbnMge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDg1YmE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAmLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCAjREREIGluc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdEcm9wIGl0ZW0gaGVyZSEnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNzc3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC5zZWN0aW9uLW1vdmUsIC5zZWN0aW9uLWl0ZW0tbW92ZSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IDE1cHg7XHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi8uLi9pbWFnZXMvZ3JpcHB5X2xhcmdlLnBuZ1wiKSA0cHggY2VudGVyIG5vLXJlcGVhdDtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTE1cHg7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHVybChcIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvb3BlbmhhbmQuY3VyXCIpIDcgNSwgZGVmYXVsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAmLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHtcclxuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCAjREREIGluc2V0O1xyXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ0Ryb3Agc2VjdGlvbiBoZXJlISc7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNzc3O1xyXG4gICAgICAgICAgICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0yMHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICYuYWN0aXZlIHtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLmNvdXJzZS1yb3ctYWN0aW9ucyB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgICAgICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTNweDtcclxuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgOHB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VmZWZlZjtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgICAgICBhLCA+IGRpdiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjOWM5YzljO1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiAxcHggMXB4ICNmZmY7XHJcbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMzlhZmZmO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGEucmVtb3ZlIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDNweDtcclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRjAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLnRvZ2dsZXtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDI0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMjNweDtcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlZmVmZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlZmVmZWY7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTJweDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRpdi5hZGQge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgICAgICAgICAgICAgID4gZGl2IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDMwM3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAxMDAlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEwcHggM3B4IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDY1cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiBkaXYge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgI2NvdXJzZS1pdGVtLWVkaXRvciB7XHJcbiAgICAgICAgd2lkdGg6IDYwJTtcclxuICAgICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcclxuICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxufSJdLCJmaWxlIjoiYWRtaW4vY291cnNlLWVkaXRvci5jc3MifQ== */
|
assets/css/admin/meta-box-course.css
CHANGED
@@ -3,6 +3,13 @@
|
|
3 |
.rwmb-duration-wrapper select {
|
4 |
vertical-align: baseline;
|
5 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
.post-type-lp_course #postdivric,
|
7 |
.post-type-lp_course #submitpost {
|
8 |
visibility: hidden;
|
@@ -25,65 +32,68 @@
|
|
25 |
font-size: 12px;
|
26 |
font-style: italic;
|
27 |
}
|
28 |
-
#
|
29 |
-
margin: 20px 0 0;
|
30 |
-
}
|
31 |
-
#course_curriculum {
|
32 |
border: none;
|
33 |
background-color: transparent;
|
|
|
34 |
}
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
}
|
39 |
-
#
|
40 |
-
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
42 |
}
|
43 |
-
#
|
44 |
margin: 0 0 20px 0;
|
45 |
padding: 10px 20px;
|
46 |
background-color: #FFF;
|
47 |
line-height: 1;
|
48 |
border: 1px solid #DDD;
|
49 |
}
|
50 |
-
#
|
51 |
font-weight: normal;
|
52 |
color: #999;
|
53 |
display: block;
|
54 |
font-size: 90%;
|
55 |
margin-top: 10px;
|
56 |
}
|
57 |
-
#
|
58 |
float: right;
|
59 |
margin: -33px 7px 0 0;
|
60 |
line-height: 1;
|
61 |
box-shadow: none;
|
62 |
}
|
63 |
-
#
|
64 |
-webkit-box-shadow: none;
|
65 |
-moz-box-shadow: none;
|
66 |
box-shadow: none;
|
67 |
font-size: 32px;
|
68 |
}
|
69 |
-
#
|
70 |
margin: 0;
|
71 |
background-color: #FFF;
|
72 |
border-bottom: 1px solid #DDD;
|
73 |
}
|
74 |
-
#
|
75 |
margin: -1px 0 0 0;
|
76 |
background-color: #FFF;
|
77 |
border-bottom: 1px solid #DDD;
|
78 |
position: relative;
|
79 |
}
|
80 |
-
#
|
81 |
background-image: url("../../images/stripe.png");
|
82 |
visibility: visible !important;
|
83 |
border: 1px solid #DDD;
|
84 |
border-bottom: none;
|
85 |
}
|
86 |
-
#
|
87 |
border: 1px solid #DDD;
|
88 |
background-color: #F9F9F9;
|
89 |
border-bottom: none;
|
@@ -91,37 +101,37 @@
|
|
91 |
color: #777;
|
92 |
padding: 3px 20px;
|
93 |
}
|
94 |
-
#
|
95 |
background-color: #F9F9F9;
|
96 |
}
|
97 |
-
#
|
98 |
float: right;
|
99 |
margin: 14px 0;
|
100 |
visibility: hidden;
|
101 |
position: relative;
|
102 |
}
|
103 |
-
#
|
104 |
visibility: visible;
|
105 |
}
|
106 |
-
#
|
107 |
vertical-align: middle;
|
108 |
color: #666666;
|
109 |
width: 24px;
|
110 |
height: 24px;
|
111 |
box-shadow: none;
|
112 |
}
|
113 |
-
#
|
114 |
line-height: 28px;
|
115 |
}
|
116 |
-
#
|
117 |
width: 24px;
|
118 |
height: 24px;
|
119 |
font-size: 24px;
|
120 |
}
|
121 |
-
#
|
122 |
color: #00a0d2;
|
123 |
}
|
124 |
-
#
|
125 |
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
126 |
position: absolute;
|
127 |
right: -15px;
|
@@ -130,17 +140,17 @@
|
|
130 |
background: url("../../../assets/images/grippy_large.png") right no-repeat;
|
131 |
width: 20px;
|
132 |
}
|
133 |
-
#
|
134 |
border: 1px solid #DDD;
|
135 |
padding: 20px;
|
136 |
border-bottom-width: 0;
|
137 |
width: 100%;
|
138 |
box-sizing: border-box;
|
139 |
}
|
140 |
-
#
|
141 |
border-bottom: 1px solid #DDD;
|
142 |
}
|
143 |
-
#
|
144 |
border: none;
|
145 |
outline: none;
|
146 |
box-shadow: none;
|
@@ -151,65 +161,65 @@
|
|
151 |
padding: 0;
|
152 |
height: 50px;
|
153 |
}
|
154 |
-
#
|
155 |
color: #444;
|
156 |
}
|
157 |
-
#
|
158 |
_display: none;
|
159 |
}
|
160 |
-
#
|
161 |
border-collapse: collapse;
|
162 |
width: 100%;
|
163 |
}
|
164 |
-
#
|
165 |
border: 1px dashed #DDD;
|
166 |
margin: -1px 0 0 0;
|
167 |
padding: 5px 0;
|
168 |
background-color: #FFF;
|
169 |
}
|
170 |
-
#
|
171 |
-
#
|
172 |
background-color: #FCFCFC;
|
173 |
}
|
174 |
-
#
|
175 |
margin: 0;
|
176 |
float: right;
|
177 |
position: relative;
|
178 |
}
|
179 |
-
#
|
180 |
vertical-align: middle;
|
181 |
color: #666;
|
182 |
margin-top: -2px;
|
183 |
box-shadow: none;
|
184 |
}
|
185 |
-
#
|
186 |
color: #00a0d2;
|
187 |
}
|
188 |
-
#
|
189 |
display: none;
|
190 |
}
|
191 |
-
#
|
192 |
display: none;
|
193 |
}
|
194 |
-
#
|
195 |
visibility: visible !important;
|
196 |
}
|
197 |
-
#
|
198 |
background-image: url("../../../assets/images/stripe.png");
|
199 |
border-bottom: none;
|
200 |
}
|
201 |
-
#
|
202 |
visibility: hidden;
|
203 |
}
|
204 |
-
#
|
205 |
text-align: right;
|
206 |
margin-top: 0;
|
207 |
margin-bottom: 15px;
|
208 |
}
|
209 |
-
#
|
210 |
visibility: visible;
|
211 |
}
|
212 |
-
#
|
213 |
display: inline-block;
|
214 |
height: 34px;
|
215 |
border: none;
|
@@ -219,26 +229,26 @@
|
|
219 |
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
220 |
visibility: visible;
|
221 |
}
|
222 |
-
#
|
223 |
opacity: 0.4;
|
224 |
}
|
225 |
-
#
|
226 |
opacity: 1;
|
227 |
}
|
228 |
-
#
|
229 |
content: "\e900";
|
230 |
}
|
231 |
-
#
|
232 |
content: "\e901";
|
233 |
}
|
234 |
-
#
|
235 |
color: #999;
|
236 |
}
|
237 |
-
#
|
238 |
-
#
|
239 |
background-color: #F9F9F9;
|
240 |
}
|
241 |
-
#
|
242 |
width: 32px;
|
243 |
height: 32px;
|
244 |
display: inline-block;
|
@@ -248,10 +258,10 @@
|
|
248 |
line-height: 32px;
|
249 |
color: #00A0D2;
|
250 |
}
|
251 |
-
#
|
252 |
color: #FF0000;
|
253 |
}
|
254 |
-
#
|
255 |
color: #777;
|
256 |
border: none;
|
257 |
box-shadow: none;
|
@@ -263,7 +273,7 @@
|
|
263 |
overflow: hidden;
|
264 |
white-space: nowrap;
|
265 |
}
|
266 |
-
#
|
267 |
border: none;
|
268 |
box-shadow: none;
|
269 |
color: #999;
|
@@ -272,11 +282,11 @@
|
|
272 |
float: left;
|
273 |
padding-left: 0;
|
274 |
}
|
275 |
-
#
|
276 |
-
#
|
277 |
color: #444;
|
278 |
}
|
279 |
-
#
|
280 |
width: 32px;
|
281 |
white-space: nowrap;
|
282 |
}
|
@@ -292,13 +302,13 @@
|
|
292 |
cursor: pointer;
|
293 |
border: 1px solid transparent;
|
294 |
}
|
295 |
-
#
|
296 |
content: "\f469";
|
297 |
}
|
298 |
-
#
|
299 |
content: "\f330";
|
300 |
}
|
301 |
-
#
|
302 |
height: 30px;
|
303 |
}
|
304 |
#poststuff .postbox-container {
|
@@ -473,89 +483,14 @@ tr.focus .learn-press-dropdown-item-types > span.learn-press-icon {
|
|
473 |
.learn-press-dropdown-item-types li span.learn-press-icon.item-selected {
|
474 |
color: #0085ba;
|
475 |
}
|
|
|
|
|
|
|
476 |
.post-type-lp_course #switch-course-tabs,
|
477 |
.post-type-lp_course #toggle-meta-boxes {
|
478 |
float: right;
|
479 |
margin-left: 10px;
|
480 |
}
|
481 |
-
.post-type-lp_course.enable-course-tabs #post-body-content {
|
482 |
-
margin-bottom: 0;
|
483 |
-
}
|
484 |
-
.post-type-lp_course.enable-course-tabs #normal-sortables .postbox {
|
485 |
-
_visibility: hidden;
|
486 |
-
float: left;
|
487 |
-
margin-right: -100%;
|
488 |
-
width: 100%;
|
489 |
-
box-sizing: border-box;
|
490 |
-
height: 0;
|
491 |
-
overflow: hidden;
|
492 |
-
border-width: 0;
|
493 |
-
}
|
494 |
-
.post-type-lp_course.enable-course-tabs #normal-sortables .postbox.active {
|
495 |
-
height: auto;
|
496 |
-
border-width: 1px;
|
497 |
-
}
|
498 |
-
.post-type-lp_course.enable-course-tabs #normal-sortables .postbox .handlediv,
|
499 |
-
.post-type-lp_course.enable-course-tabs #normal-sortables .postbox .hndle {
|
500 |
-
display: none;
|
501 |
-
}
|
502 |
-
.post-type-lp_course.enable-course-tabs #course-tabs {
|
503 |
-
background: #FFF;
|
504 |
-
padding: 10px;
|
505 |
-
margin-bottom: 0;
|
506 |
-
border: 1px solid #DDD;
|
507 |
-
border-bottom: none;
|
508 |
-
}
|
509 |
-
.post-type-lp_course.enable-course-tabs #course-tabs:after {
|
510 |
-
display: block;
|
511 |
-
clear: both;
|
512 |
-
content: '';
|
513 |
-
}
|
514 |
-
.post-type-lp_course.enable-course-tabs #course-tabs.ui-sortable:not(.ui-sortable-disabled) li.ui-sortable-handle {
|
515 |
-
position: relative;
|
516 |
-
}
|
517 |
-
.post-type-lp_course.enable-course-tabs #course-tabs.ui-sortable:not(.ui-sortable-disabled) li.ui-sortable-handle a {
|
518 |
-
border: 1px solid #ddd;
|
519 |
-
padding: 0px 5px;
|
520 |
-
margin: 0 5px;
|
521 |
-
color: #DDD;
|
522 |
-
background: #FFF;
|
523 |
-
}
|
524 |
-
.post-type-lp_course.enable-course-tabs #course-tabs.ui-sortable:not(.ui-sortable-disabled) li.ui-sortable-handle:after {
|
525 |
-
content: '';
|
526 |
-
position: absolute;
|
527 |
-
top: 0;
|
528 |
-
left: 0;
|
529 |
-
width: 100%;
|
530 |
-
height: 100%;
|
531 |
-
cursor: move;
|
532 |
-
}
|
533 |
-
.post-type-lp_course.enable-course-tabs #course-tabs li {
|
534 |
-
float: left;
|
535 |
-
margin-bottom: 0;
|
536 |
-
}
|
537 |
-
.post-type-lp_course.enable-course-tabs #course-tabs li a {
|
538 |
-
display: block;
|
539 |
-
padding: 0 15px 0 0;
|
540 |
-
text-decoration: none;
|
541 |
-
outline: none;
|
542 |
-
box-shadow: none;
|
543 |
-
}
|
544 |
-
.post-type-lp_course.enable-course-tabs #course-tabs li.active a {
|
545 |
-
font-weight: bold;
|
546 |
-
}
|
547 |
-
.post-type-lp_course.enable-course-tabs #course-tabs li#switch-course-metaboxes {
|
548 |
-
float: right;
|
549 |
-
}
|
550 |
-
.post-type-lp_course.enable-course-tabs #course-tabs li#switch-course-metaboxes #complete-reorder-course-tabs {
|
551 |
-
display: none;
|
552 |
-
}
|
553 |
-
.post-type-lp_course.enable-course-tabs #course-tabs li#switch-course-metaboxes a {
|
554 |
-
padding-right: 0;
|
555 |
-
color: #FF0000;
|
556 |
-
display: inline-block;
|
557 |
-
margin-left: 15px;
|
558 |
-
}
|
559 |
/*
|
560 |
#lp-course-curriculum .lp-course-curriculum-toggle{
|
561 |
padding: 0;
|
@@ -859,3 +794,5 @@ tr.focus .learn-press-dropdown-item-types > span.learn-press-icon {
|
|
859 |
.lp-course-curriculum-toggle .expand{
|
860 |
display: none;
|
861 |
}*/
|
|
|
|
3 |
.rwmb-duration-wrapper select {
|
4 |
vertical-align: baseline;
|
5 |
}
|
6 |
+
#learn-press-toggle-course-results {
|
7 |
+
display: block;
|
8 |
+
margin-bottom: 10px;
|
9 |
+
}
|
10 |
+
#learn-press-toggle-course-results a {
|
11 |
+
box-shadow: none;
|
12 |
+
}
|
13 |
.post-type-lp_course #postdivric,
|
14 |
.post-type-lp_course #submitpost {
|
15 |
visibility: hidden;
|
32 |
font-size: 12px;
|
33 |
font-style: italic;
|
34 |
}
|
35 |
+
#lp-course-curriculum {
|
|
|
|
|
|
|
36 |
border: none;
|
37 |
background-color: transparent;
|
38 |
+
margin: 20px 0;
|
39 |
}
|
40 |
+
.post-type-lp_course .column-price,
|
41 |
+
.post-type-lp_course .column-students {
|
42 |
+
width: 10%;
|
43 |
}
|
44 |
+
.post-type-lp_course #lp-course-curriculum .curriculum-section-items .lp-item-empty td.section-item-input {
|
45 |
+
padding-left: 40px;
|
46 |
+
}
|
47 |
+
.post-type-lp_course #lp-course-curriculum .curriculum-section-items .lp-item-empty td.section-item-input.hover {
|
48 |
+
padding-left: 0;
|
49 |
+
}
|
50 |
+
.post-type-lp_course .type-lp_course.status-pending .row-actions .view {
|
51 |
+
display: none;
|
52 |
}
|
53 |
+
#lp-course-curriculum .curriculum-heading {
|
54 |
margin: 0 0 20px 0;
|
55 |
padding: 10px 20px;
|
56 |
background-color: #FFF;
|
57 |
line-height: 1;
|
58 |
border: 1px solid #DDD;
|
59 |
}
|
60 |
+
#lp-course-curriculum .curriculum-heading .description {
|
61 |
font-weight: normal;
|
62 |
color: #999;
|
63 |
display: block;
|
64 |
font-size: 90%;
|
65 |
margin-top: 10px;
|
66 |
}
|
67 |
+
#lp-course-curriculum .curriculum-heading .items-toggle {
|
68 |
float: right;
|
69 |
margin: -33px 7px 0 0;
|
70 |
line-height: 1;
|
71 |
box-shadow: none;
|
72 |
}
|
73 |
+
#lp-course-curriculum .curriculum-heading .items-toggle a {
|
74 |
-webkit-box-shadow: none;
|
75 |
-moz-box-shadow: none;
|
76 |
box-shadow: none;
|
77 |
font-size: 32px;
|
78 |
}
|
79 |
+
#lp-course-curriculum .curriculum-sections {
|
80 |
margin: 0;
|
81 |
background-color: #FFF;
|
82 |
border-bottom: 1px solid #DDD;
|
83 |
}
|
84 |
+
#lp-course-curriculum .curriculum-section {
|
85 |
margin: -1px 0 0 0;
|
86 |
background-color: #FFF;
|
87 |
border-bottom: 1px solid #DDD;
|
88 |
position: relative;
|
89 |
}
|
90 |
+
#lp-course-curriculum .curriculum-section.ui-sortable-placeholder {
|
91 |
background-image: url("../../images/stripe.png");
|
92 |
visibility: visible !important;
|
93 |
border: 1px solid #DDD;
|
94 |
border-bottom: none;
|
95 |
}
|
96 |
+
#lp-course-curriculum .curriculum-section-head {
|
97 |
border: 1px solid #DDD;
|
98 |
background-color: #F9F9F9;
|
99 |
border-bottom: none;
|
101 |
color: #777;
|
102 |
padding: 3px 20px;
|
103 |
}
|
104 |
+
#lp-course-curriculum .curriculum-section-head input {
|
105 |
background-color: #F9F9F9;
|
106 |
}
|
107 |
+
#lp-course-curriculum .curriculum-section-head .lp-section-actions {
|
108 |
float: right;
|
109 |
margin: 14px 0;
|
110 |
visibility: hidden;
|
111 |
position: relative;
|
112 |
}
|
113 |
+
#lp-course-curriculum .curriculum-section:not(.lp-empty-section) .curriculum-section-head:hover .lp-section-actions {
|
114 |
visibility: visible;
|
115 |
}
|
116 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a {
|
117 |
vertical-align: middle;
|
118 |
color: #666666;
|
119 |
width: 24px;
|
120 |
height: 24px;
|
121 |
box-shadow: none;
|
122 |
}
|
123 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a[data-action="expand"] {
|
124 |
line-height: 28px;
|
125 |
}
|
126 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a:before {
|
127 |
width: 24px;
|
128 |
height: 24px;
|
129 |
font-size: 24px;
|
130 |
}
|
131 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a:hover {
|
132 |
color: #00a0d2;
|
133 |
}
|
134 |
+
#lp-course-curriculum .curriculum-section .curriculum-section-head .lp-section-actions .move {
|
135 |
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
136 |
position: absolute;
|
137 |
right: -15px;
|
140 |
background: url("../../../assets/images/grippy_large.png") right no-repeat;
|
141 |
width: 20px;
|
142 |
}
|
143 |
+
#lp-course-curriculum .curriculum-section-content {
|
144 |
border: 1px solid #DDD;
|
145 |
padding: 20px;
|
146 |
border-bottom-width: 0;
|
147 |
width: 100%;
|
148 |
box-sizing: border-box;
|
149 |
}
|
150 |
+
#lp-course-curriculum .curriculum-section.ui-sortable-helper {
|
151 |
border-bottom: 1px solid #DDD;
|
152 |
}
|
153 |
+
#lp-course-curriculum .curriculum-section-head .lp-section-name {
|
154 |
border: none;
|
155 |
outline: none;
|
156 |
box-shadow: none;
|
161 |
padding: 0;
|
162 |
height: 50px;
|
163 |
}
|
164 |
+
#lp-course-curriculum .curriculum-section-head .lp-section-name:focus {
|
165 |
color: #444;
|
166 |
}
|
167 |
+
#lp-course-curriculum .curriculum-section.lp-empty-section .curriculum-section-content {
|
168 |
_display: none;
|
169 |
}
|
170 |
+
#lp-course-curriculum .curriculum-section-items {
|
171 |
border-collapse: collapse;
|
172 |
width: 100%;
|
173 |
}
|
174 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item {
|
175 |
border: 1px dashed #DDD;
|
176 |
margin: -1px 0 0 0;
|
177 |
padding: 5px 0;
|
178 |
background-color: #FFF;
|
179 |
}
|
180 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:nth-child(2n+1),
|
181 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:nth-child(2n+1) .section-item-input input {
|
182 |
background-color: #FCFCFC;
|
183 |
}
|
184 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .lp-item-actions {
|
185 |
margin: 0;
|
186 |
float: right;
|
187 |
position: relative;
|
188 |
}
|
189 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .lp-item-actions a {
|
190 |
vertical-align: middle;
|
191 |
color: #666;
|
192 |
margin-top: -2px;
|
193 |
box-shadow: none;
|
194 |
}
|
195 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .lp-item-actions a:hover {
|
196 |
color: #00a0d2;
|
197 |
}
|
198 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item[data-item_id=""] .lp-edit {
|
199 |
display: none;
|
200 |
}
|
201 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item.lp-item-empty .lp-item-actions {
|
202 |
display: none;
|
203 |
}
|
204 |
+
#lp-course-curriculum .lp-section-item.ui-sortable-placeholder {
|
205 |
visibility: visible !important;
|
206 |
}
|
207 |
+
#lp-course-curriculum .lp-section-item.ui-sortable-placeholder td {
|
208 |
background-image: url("../../../assets/images/stripe.png");
|
209 |
border-bottom: none;
|
210 |
}
|
211 |
+
#lp-course-curriculum .lp-item-actions > * {
|
212 |
visibility: hidden;
|
213 |
}
|
214 |
+
#lp-course-curriculum .item-bulk-actions {
|
215 |
text-align: right;
|
216 |
margin-top: 0;
|
217 |
margin-bottom: 15px;
|
218 |
}
|
219 |
+
#lp-course-curriculum .lp-section-item:not(.lp-item-empty):hover .lp-item-actions > * {
|
220 |
visibility: visible;
|
221 |
}
|
222 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:not(.lp-item-empty) .item-checkbox {
|
223 |
display: inline-block;
|
224 |
height: 34px;
|
225 |
border: none;
|
229 |
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
230 |
visibility: visible;
|
231 |
}
|
232 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .item-checkbox input {
|
233 |
opacity: 0.4;
|
234 |
}
|
235 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:not(.lp-item-empty):hover .item-checkbox input {
|
236 |
opacity: 1;
|
237 |
}
|
238 |
+
#lp-course-curriculum .lp-item-lp_lesson .handle.learn-press-icon:before {
|
239 |
content: "\e900";
|
240 |
}
|
241 |
+
#lp-course-curriculum .lp-item-lp_quiz .handle.learn-press-icon:before {
|
242 |
content: "\e901";
|
243 |
}
|
244 |
+
#lp-course-curriculum .lp-section-item.lp-item-new .handle {
|
245 |
color: #999;
|
246 |
}
|
247 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:hover,
|
248 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:hover input.lp-item-name {
|
249 |
background-color: #F9F9F9;
|
250 |
}
|
251 |
+
#lp-course-curriculum .lp-section-item .handle {
|
252 |
width: 32px;
|
253 |
height: 32px;
|
254 |
display: inline-block;
|
258 |
line-height: 32px;
|
259 |
color: #00A0D2;
|
260 |
}
|
261 |
+
#lp-course-curriculum .lp-section-item.remove input.lp-item-name {
|
262 |
color: #FF0000;
|
263 |
}
|
264 |
+
#lp-course-curriculum .lp-section-item input.lp-item-name {
|
265 |
color: #777;
|
266 |
border: none;
|
267 |
box-shadow: none;
|
273 |
overflow: hidden;
|
274 |
white-space: nowrap;
|
275 |
}
|
276 |
+
#lp-course-curriculum .lp-section-describe {
|
277 |
border: none;
|
278 |
box-shadow: none;
|
279 |
color: #999;
|
282 |
float: left;
|
283 |
padding-left: 0;
|
284 |
}
|
285 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item input.lp-item-name:focus,
|
286 |
+
#lp-course-curriculum input:focus {
|
287 |
color: #444;
|
288 |
}
|
289 |
+
#lp-course-curriculum .lp-section-item .section-item-icon {
|
290 |
width: 32px;
|
291 |
white-space: nowrap;
|
292 |
}
|
302 |
cursor: pointer;
|
303 |
border: 1px solid transparent;
|
304 |
}
|
305 |
+
#lp-course-curriculum .lp-section-item .learn-press-icon.item-lp_quiz:before {
|
306 |
content: "\f469";
|
307 |
}
|
308 |
+
#lp-course-curriculum .lp-section-item .learn-press-icon.item-lp_lesson:before {
|
309 |
content: "\f330";
|
310 |
}
|
311 |
+
#lp-course-curriculum .lp-section-item td {
|
312 |
height: 30px;
|
313 |
}
|
314 |
#poststuff .postbox-container {
|
483 |
.learn-press-dropdown-item-types li span.learn-press-icon.item-selected {
|
484 |
color: #0085ba;
|
485 |
}
|
486 |
+
.learn-press-course-attributes {
|
487 |
+
margin: 20px 0;
|
488 |
+
}
|
489 |
.post-type-lp_course #switch-course-tabs,
|
490 |
.post-type-lp_course #toggle-meta-boxes {
|
491 |
float: right;
|
492 |
margin-left: 10px;
|
493 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
494 |
/*
|
495 |
#lp-course-curriculum .lp-course-curriculum-toggle{
|
496 |
padding: 0;
|
794 |
.lp-course-curriculum-toggle .expand{
|
795 |
display: none;
|
796 |
}*/
|
797 |
+
|
798 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFkbWluL21ldGEtYm94LWNvdXJzZS5sZXNzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxzQkFBdUIsTUFBSztBQUM1QixzQkFBdUI7RUFDbkIsd0JBQUE7O0FBRUo7RUFDQyxjQUFBO0VBQWUsbUJBQUE7O0FBRGhCLGtDQUVDO0VBQUUsZ0JBQUE7O0FBRUgsb0JBQ0k7QUFESixvQkFFSTtFQUNJLGtCQUFBOztBQUlSO0VBQ0ksbUJBQUE7O0FBREosMkJBRUk7RUFDSSxrQkFBQTs7QUFIUiwyQkFLSTtFQUNJLFdBQUE7RUFDQSxhQUFBOztBQVBSLDJCQVNJO0VBQ0ksZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7RUFDQSx3QkFBQTtFQUNBLGVBQUE7RUFDQSxrQkFBQTs7QUFJUjtFQUNJLFlBQUE7RUFDQSw2QkFBQTtFQUNBLGNBQUE7O0FBSUEsb0JBQUU7QUFBZSxvQkFBRTtFQUNmLFVBQUE7O0FBRlIsb0JBS0ksc0JBQXNCLDBCQUEwQixlQUFlLEdBQUU7RUFDN0Qsa0JBQUE7O0FBQ0Esb0JBRkosc0JBQXNCLDBCQUEwQixlQUFlLEdBQUUsbUJBRTVEO0VBQ0csZUFBQTs7QUFNSixvQkFGSixnQkFFSyxlQUNHLGFBQWE7RUFDVCxhQUFBOztBQU9oQixxQkFBc0I7RUFDbEIsa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsY0FBQTtFQUNBLHNCQUFBOztBQUdKLHFCQUFzQixvQkFBb0I7RUFDdEMsbUJBQUE7RUFDQSxXQUFBO0VBQ0EsY0FBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTs7QUFHSixxQkFBc0Isb0JBQW9CO0VBQ3RDLFlBQUE7RUFDQSxxQkFBQTtFQUNBLGNBQUE7RUFDQSxnQkFBQTs7QUFHSixxQkFBc0Isb0JBQW9CLGNBQWM7RUFDcEQsd0JBQUE7RUFDQSxxQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZUFBQTs7QUFJSixxQkFBc0I7RUFDbEIsU0FBQTtFQUNBLHNCQUFBO0VBQ0EsNkJBQUE7O0FBR0oscUJBQXNCO0VBQ2xC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QVFKLG9CQUNJO0FBREosb0JBRUk7RUFDSSxZQUFBO0VBQ0EsaUJBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBtZXRhIGJveCBjb3Vyc2UgKi9cbi5yd21iLWR1cmF0aW9uLXdyYXBwZXIgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4ucndtYi1kdXJhdGlvbi13cmFwcGVyIHNlbGVjdCB7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuI2xlYXJuLXByZXNzLXRvZ2dsZS1jb3Vyc2UtcmVzdWx0c3tcblx0ZGlzcGxheTogYmxvY2s7bWFyZ2luLWJvdHRvbToxMHB4O1xuXHRhe2JveC1zaGFkb3c6IG5vbmU7fVxufVxuLnBvc3QtdHlwZS1scF9jb3Vyc2Uge1xuICAgICNwb3N0ZGl2cmljLFxuICAgICNzdWJtaXRwb3N0IHtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbn1cblxuI2xlYXJuLXByZXNzLXJldmlldy1tZXNzYWdlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgID4gaDQge1xuICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgfVxuICAgID4gdGV4dGFyZWEge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICB9XG4gICAgLmxwLXBlbmRpbmctcmV2aWV3LW1lc3NhZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjYzQ0O1xuICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIG1hcmdpbjogLTEwcHggLTEwcHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgfVxufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0ge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBtYXJnaW46IDIwcHggMDtcbn1cblxuLnBvc3QtdHlwZS1scF9jb3Vyc2Uge1xuICAgICYgLmNvbHVtbi1wcmljZSwgJiAuY29sdW1uLXN0dWRlbnRzIHtcbiAgICAgICAgd2lkdGg6IDEwJTtcbiAgICB9XG5cbiAgICAjbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtaXRlbS1lbXB0eSB0ZC5zZWN0aW9uLWl0ZW0taW5wdXQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG4gICAgICAgICYuaG92ZXIge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnR5cGUtbHBfY291cnNlIHtcblxuICAgICAgICAmLnN0YXR1cy1wZW5kaW5nIHtcbiAgICAgICAgICAgIC5yb3ctYWN0aW9ucyAudmlldyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0taGVhZGluZyB7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1oZWFkaW5nIC5kZXNjcmlwdGlvbiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBjb2xvcjogIzk5OTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDkwJTtcbiAgICBtYXJnaW4tdG9wOiAxMHB4Oztcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLWhlYWRpbmcgLml0ZW1zLXRvZ2dsZSB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbjogLTMzcHggN3B4IDAgMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0taGVhZGluZyAuaXRlbXMtdG9nZ2xlIGEge1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTtcbiAgICAtbW96LWJveC1zaGFkb3c6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBmb250LXNpemU6IDMycHg7XG5cbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb25zIHtcbiAgICBtYXJnaW46IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24ge1xuICAgIG1hcmdpbjogLTFweCAwIDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjREREO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24udWktc29ydGFibGUtcGxhY2Vob2xkZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uLy4uL2ltYWdlcy9zdHJpcGUucG5nXCIpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWhlYWQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y5RjlGOTtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBjb2xvcjogIzc3NztcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taGVhZCBpbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0Y5RjlGOTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taGVhZCAubHAtc2VjdGlvbi1hY3Rpb25zIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luOiAxNHB4IDA7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb246bm90KC5scC1lbXB0eS1zZWN0aW9uKSAuY3VycmljdWx1bS1zZWN0aW9uLWhlYWQ6aG92ZXIgLmxwLXNlY3Rpb24tYWN0aW9ucyB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24gLmxwLXNlY3Rpb24tYWN0aW9ucyBhIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGNvbG9yOiAjNjY2NjY2O1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBib3gtc2hhZG93OiBub25lO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtc2VjdGlvbi1hY3Rpb25zIGFbZGF0YS1hY3Rpb249XCJleHBhbmRcIl0ge1xuICAgIGxpbmUtaGVpZ2h0OiAyOHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtc2VjdGlvbi1hY3Rpb25zIGE6YmVmb3JlIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgZm9udC1zaXplOiAyNHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAubHAtc2VjdGlvbi1hY3Rpb25zIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjMDBhMGQyO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbiAuY3VycmljdWx1bS1zZWN0aW9uLWhlYWQgLmxwLXNlY3Rpb24tYWN0aW9ucyAubW92ZSB7XG4gICAgY3Vyc29yOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL29wZW5oYW5kLmN1clwiKSA3IDUsIGRlZmF1bHQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAtMTVweDtcbiAgICBoZWlnaHQ6IDU3cHg7XG4gICAgdG9wOiAtMTVweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2dyaXBweV9sYXJnZS5wbmdcIikgcmlnaHQgbm8tcmVwZWF0O1xuICAgIHdpZHRoOiAyMHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1jb250ZW50IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi51aS1zb3J0YWJsZS1oZWxwZXIge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjREREO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1oZWFkIC5scC1zZWN0aW9uLW5hbWUge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgZm9udC1zaXplOiAyNHB4O1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIHdpZHRoOiA3MCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgaGVpZ2h0OiA1MHB4O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1oZWFkIC5scC1zZWN0aW9uLW5hbWU6Zm9jdXMge1xuICAgIGNvbG9yOiAjNDQ0O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi5scC1lbXB0eS1zZWN0aW9uIC5jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudCB7XG4gICAgX2Rpc3BsYXk6IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIHtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtIHtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgI0RERDtcbiAgICBtYXJnaW46IC0xcHggMCAwIDA7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpudGgtY2hpbGQoMm4rMSksXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtOm50aC1jaGlsZCgybisxKSAuc2VjdGlvbi1pdGVtLWlucHV0IGlucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtIC5scC1pdGVtLWFjdGlvbnMge1xuICAgIG1hcmdpbjogMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtIC5scC1pdGVtLWFjdGlvbnMgYSB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBjb2xvcjogIzY2NjtcbiAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIC5scC1zZWN0aW9uLWl0ZW0gLmxwLWl0ZW0tYWN0aW9ucyBhOmhvdmVyIHtcbiAgICBjb2xvcjogIzAwYTBkMjtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbVtkYXRhLWl0ZW1faWQ9XCJcIl0gLmxwLWVkaXQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIC5scC1zZWN0aW9uLWl0ZW0ubHAtaXRlbS1lbXB0eSAubHAtaXRlbS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS51aS1zb3J0YWJsZS1oZWxwZXIgdGQge1xuXG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIHRkIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3N0cmlwZS5wbmdcIik7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1pdGVtLWFjdGlvbnMgPiAqIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1hY3Rpb25zID4gYSB7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuaXRlbS1idWxrLWFjdGlvbnMge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW06bm90KC5scC1pdGVtLWVtcHR5KTpob3ZlciAubHAtaXRlbS1hY3Rpb25zID4gKiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpub3QoLmxwLWl0ZW0tZW1wdHkpIC5pdGVtLWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICBwYWRkaW5nOiAwIDAgMCAwO1xuICAgIG1hcmdpbjogMCA0cHggMCAxMHB4O1xuICAgIGN1cnNvcjogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9vcGVuaGFuZC5jdXJcIikgNyA1LCBkZWZhdWx0O1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAuY3VycmljdWx1bS1zZWN0aW9uLWl0ZW1zIC5scC1zZWN0aW9uLWl0ZW0gLml0ZW0tY2hlY2tib3ggaW5wdXQge1xuICAgIG9wYWNpdHk6IDAuNDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpub3QoLmxwLWl0ZW0tZW1wdHkpOmhvdmVyIC5pdGVtLWNoZWNrYm94IGlucHV0IHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWl0ZW0tbHBfbGVzc29uIC5oYW5kbGUubGVhcm4tcHJlc3MtaWNvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTAwXCI7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1scF9xdWl6IC5oYW5kbGUubGVhcm4tcHJlc3MtaWNvbjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTAxXCI7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLmxwLWl0ZW0tbmV3IC5oYW5kbGUge1xuICAgIGNvbG9yOiAjOTk5O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmN1cnJpY3VsdW0tc2VjdGlvbi1pdGVtcyAubHAtc2VjdGlvbi1pdGVtOmhvdmVyLFxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbTpob3ZlciBpbnB1dC5scC1pdGVtLW5hbWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGOUY5Rjk7XG59XG5cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtIC5oYW5kbGUge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIGNvbG9yOiAjMDBBMEQyO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5yZW1vdmUgaW5wdXQubHAtaXRlbS1uYW1lIHtcbiAgICBjb2xvcjogI0ZGMDAwMDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0udWktc29ydGFibGUtaGVscGVyIHtcblxufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbSBpbnB1dC5scC1pdGVtLW5hbWUge1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24tZGVzY3JpYmUge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGNvbG9yOiAjOTk5O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB3aWR0aDogODAlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5jdXJyaWN1bHVtLXNlY3Rpb24taXRlbXMgLmxwLXNlY3Rpb24taXRlbSBpbnB1dC5scC1pdGVtLW5hbWU6Zm9jdXMsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gaW5wdXQ6Zm9jdXMge1xuICAgIGNvbG9yOiAjNDQ0O1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbSAuc2VjdGlvbi1pdGVtLWljb24ge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5scC1zZWN0aW9uLWl0ZW0gLmxlYXJuLXByZXNzLWljb24ge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBmb250LWZhbWlseTogZGFzaGljb25zO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIGNvbG9yOiAjREREO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0gLmxlYXJuLXByZXNzLWljb24uaXRlbS1scF9xdWl6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGY0NjlcIjtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0gLmxlYXJuLXByZXNzLWljb24uaXRlbS1scF9sZXNzb246YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZjMzMFwiO1xufVxuXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbSAubGVhcm4tcHJlc3MtaWNvbi5pdGVtLXNlbGVjdGVkLFxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW1bZGF0YS1pdGVtX2lkPVwiXCJdIC5sZWFybi1wcmVzcy1pY29uOmhvdmVyIHtcbn1cblxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW0gdGQge1xuICAgIGhlaWdodDogMzBweDtcbn1cblxuI3Bvc3RzdHVmZiAucG9zdGJveC1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuI2NvdXJzZV90YWJzIC5oYW5kbGVkaXYsXG4jY291cnNlX3RhYnMgLmhuZGxlLFxuI2NvdXJzZV90YWJzIC5yd21iLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4jY291cnNlX3RhYnMgLnJ3bWItaW5wdXQge1xuXG59XG5cbiNjb3Vyc2VfdGFicyAuaW5zaWRlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuI2NvdXJzZV90YWJzIC5yd21iLWNvdXJzZV90YWJzLXdyYXBwZXIge1xuICAgIG1hcmdpbjogMDtcbn1cblxuI2NvdXJzZV90YWJzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbn1cblxuI2NvdXJzZV90YWJzLmZpeGVkIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAzMHB4O1xuICAgIHotaW5kZXg6IDEwMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBsZWZ0OiAxODJweDtcbiAgICByaWdodDogMzIwcHg7XG59XG5cbiNjb3Vyc2VfdGFicy5maXhlZDpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuI2NvdXJzZV90YWJzX3BsYWNlaG9sZGVyIHtcbiAgICBoZWlnaHQ6IDQxcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuI3Bvc3RzdHVmZiBoMyNjb3Vyc2UtdGFicy1oMyB7XG4gICAgcGFkZGluZzogMDtcbn1cblxuI2NvdXJzZS10YWJzLWgzID4gYSB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgX2NvbG9yOiAjQUFBO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5sZWFybi1wcmVzcy1yZXZpZXctbG9ncyB7XG4gICAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gICAgLnJldmlldy1tZXNzYWdlIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgICBjb2xvcjogIzk5OTtcbiAgICB9XG4gICAgPiBsaSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI0RERDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnJldmlldy11c2VyIHtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG4gICAgICAgID4gKiB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucmV2aWV3LWluZGV4IHtcbiAgICAgICAgd2lkdGg6IDQ2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLTExcHg7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkICNEREQ7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICAgIGNvbG9yOiAjQ0NDO1xuICAgIH1cbiAgICAucmV2aWV3LWNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tbGVmdDogNjhweDtcbiAgICB9XG4gICAgPiBsaSAubHAtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDEwMCU7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgfVxufVxuXG4ucndtYi1jdXJyaWN1bHVtLXdyYXBwZXIgLnJ3bWItbGFiZWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5yd21iLWN1cnJpY3VsdW0td3JhcHBlciAucndtYi1pbnB1dCB7XG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbG9hdDogbm9uZTtcbn1cblxuLmNvbHVtbi1scF9jb3Vyc2UgLnJvdy1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5scC1tb2RhbC1zZWFyY2ggbGkuc2VsZWN0ZWQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5scC1zZWFyY2gtaXRlbXMgaW5wdXRbbmFtZT1cImxwLWl0ZW0tbmFtZVwiXSB7XG4gICAgd2lkdGg6IDM1MHB4O1xufVxuXG4ubHAtbW9kYWwtc2VhcmNoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuXG4ubHAtbW9kYWwtc2VhcmNoIHVsIHtcblxufVxuXG4ubHAtaGlnaGxpZ2h0LWNvbG9yIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjb2xvcjogIzAwYTBkMjtcbn1cblxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICA+IHVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4O1xuICAgICAgICA+IGxpIHtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxudHJbZGF0YS1pdGVtX2lkPVwiXCJdIC5sZWFybi1wcmVzcy1kcm9wZG93bi1pdGVtLXR5cGVzOmhvdmVyID4gdWwsXG50cltkYXRhLWl0ZW1faWQ9XCJcIl0uZm9jdXMgLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMgPiB1bCB7XG4gICAgZGlzcGxheTogaW5saW5lLXRhYmxlO1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXM6aG92ZXIgPiBzcGFuLmxlYXJuLXByZXNzLWljb24sXG50ci5mb2N1cyAubGVhcm4tcHJlc3MtZHJvcGRvd24taXRlbS10eXBlcyA+IHNwYW4ubGVhcm4tcHJlc3MtaWNvbiB7XG4gICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICBib3JkZXItY29sb3I6ICNEREQ7XG4gICAgei1pbmRleDogNTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5sZWFybi1wcmVzcy1kcm9wZG93bi1pdGVtLXR5cGVzOmhvdmVyID4gc3Bhbi5sZWFybi1wcmVzcy1pY29uOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNFRUU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XG59XG5cbi5sZWFybi1wcmVzcy1kcm9wZG93bi1pdGVtLXR5cGVzID4gc3Bhbi5sZWFybi1wcmVzcy1pY29uLFxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMgbGk6aG92ZXIgc3Bhbi5sZWFybi1wcmVzcy1pY29uLFxuLmxlYXJuLXByZXNzLWRyb3Bkb3duLWl0ZW0tdHlwZXMgbGkgc3Bhbi5sZWFybi1wcmVzcy1pY29uLml0ZW0tc2VsZWN0ZWQge1xuICAgIGNvbG9yOiAjMDA4NWJhO1xufVxuXG4ubGVhcm4tcHJlc3MtY291cnNlLWF0dHJpYnV0ZXMge1xuICAgIG1hcmdpbjogMjBweCAwO1xuICAgIC5jb3Vyc2UtYXR0cmlidXRlLXRheG9ub215IHtcbiAgICAgICAgbGkge1xuXG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5wb3N0LXR5cGUtbHBfY291cnNlIHtcbiAgICAjc3dpdGNoLWNvdXJzZS10YWJzLFxuICAgICN0b2dnbGUtbWV0YS1ib3hlcyB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxufVxuXG4vKlxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jb3Vyc2UtY3VycmljdWx1bS10b2dnbGV7XG5cdHBhZGRpbmc6IDA7XG5cdG1hcmdpbjogMDtcblx0ZmxvYXQ6IHJpZ2h0O1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1pdGVtLW5hbWV7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGNvbG9yOiAjQkJCO1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWl0ZW06aG92ZXIsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5ob3Zlcntcblx0YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtLmxwLWl0ZW0tbHBfbGVzc29uIC5oYW5kbGU6YWZ0ZXJ7XG5cdGNvbnRlbnQ6IFwiXFxmNDk3XCI7XG59XG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5scC1pdGVtLWxwX3F1aXogLmhhbmRsZTphZnRlcntcblx0Y29udGVudDogXCJcXGYxMzBcIjtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtOmhvdmVyIC5scC1pdGVtLW5hbWUsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24taXRlbS5ob3ZlciAubHAtaXRlbS1uYW1le1xuXHRib3JkZXI6IDFweCBzb2xpZCAjREREO1xuXHRjb2xvcjogIzMyMzczYztcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1lbXB0eSAubHAtc2VjdGlvbi1pdGVtc3tcblx0ZGlzcGxheTogbm9uZTtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtc2VjdGlvbi1pdGVtIC5scC1pdGVtLWFjdGlvbnN7XG5cdGZsb2F0OiByaWdodDtcblx0bWFyZ2luLWxlZnQ6IDVweDtcblx0bWFyZ2luLXRvcDogM3B4O1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1pdGVtLWVtcHR5IC5scC1pdGVtLWFjdGlvbnMsXG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLXNlY3Rpb24tZW1wdHkgLmxwLXNlY3Rpb24taGVhZCAubHAtYWN0aW9uLFxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWVtcHR5IC5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWl0ZW0tZW1wdHl7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1uZXd7XG5cdGJvcmRlci1jb2xvcjogIzAwQTBEMjtcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtaXRlbS1uZXcgLmxwLWl0ZW0tbmFtZXtcblx0Ym9yZGVyLWNvbG9yOiAjMDBBMEQyO1xufVxuI2xwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1zZWN0aW9uLWhlYWR7XG5cdHBhZGRpbmc6IDA7XG59XG4jbHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiAubHAtdG9nZ2xlIGk6YmVmb3Jle1xuXHRjb250ZW50OiAnXFxmMTMyJztcbn1cbiNscC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uLm9wZW4gLmxwLXRvZ2dsZSBpOmJlZm9yZXtcblx0Y29udGVudDogJ1xcZjQ2MCc7XG59XG4ubHAtbW9kYWwtc2VhcmNoe1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG5cdGJvcmRlci10b3A6IG5vbmU7XG5cdHotaW5kZXg6IDk5OTk7XG5cdG1hcmdpbjogLTFweCAwIDAgMXB4O1xufVxuLmxwLW1vZGFsLXNlYXJjaCB1bHtcblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuLmxwLW1vZGFsLXNlYXJjaCB1bCBsaXtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0cGFkZGluZzogNXB4O1xuXHRtYXJnaW46IDA7XG59XG4ubHAtbW9kYWwtc2VhcmNoIGxpLmhpZ2hsaWdodGluZyxcbi5scC1tb2RhbC1zZWFyY2ggbGk6aG92ZXJ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNFQUVBRUE7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cbi5scC1oaWdobGlnaHQtY29sb3J7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuLmxwLXNlYXJjaC1uby1yZXN1bHRze1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmxwLWN1cnJpY3VsdW0tc2VjdGlvbnMgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVye1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG5cdGJvcmRlcjogMnB4IGRhc2hlZCAjREREO1xufVxuLmxwLWN1cnJpY3VsdW0tc2VjdGlvbnMgLmxwLXNvcnRpbmd7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuKi9cbi8qXG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bXt9XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbnN7XG5cbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9ue1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzO1xuXHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAjREREO1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24ubHAtc2VsZWN0ZWQgLmxwLWN1cnJpY3VsdW0tc2VjdGlvbi1jb250ZW50e1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudCA+IHB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uLmxwLXNlbGVjdGVkID4gaDN7XG5cdF9ib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDN7XG5cdHBhZGRpbmc6IDEwcHggO1xuXHRtYXJnaW46IDA7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG5cdGhlaWdodDogNjJweDtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRjdXJzb3I6IG1vdmU7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scC1zZWN0aW9uLW5hbWUtd3JhcHBlcntcblx0dG9wOiA5cHg7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzID4gc3BhbiA+IGlucHV0e1xuXHRib3JkZXI6IDFweCBzb2xpZCAjREREO1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdGZvbnQtc2l6ZTogMjRweDtcblx0d2lkdGg6IDEwMCU7XG5cdGNvbG9yOiAjNzc3O1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24gPiBoMyA+IHNwYW4ubHAtc2VjdGlvbi1uYW1lLXdyYXBwZXJ7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRyaWdodDogMTM3cHg7XG5cdGxlZnQ6IDcxcHg7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scC1hY3Rpb257XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGhlaWdodDogNjJweDtcblx0d2lkdGg6IDYycHg7XG5cdGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0RERDtcblx0LXRvcDogLThweDtcblx0LXJpZ2h0OiAtMTFweDtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHRmbG9hdDogcmlnaHQ7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLmxwLWN1cnJpY3VsdW0tc2VjdGlvbiA+IGgzIC5scC1hY3Rpb24ubHAtc29ydHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbiAuZGFzaGljb25ze1xuXHRmb250LXNpemU6IDMycHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG5cdGxpbmUtaGVpZ2h0OiA2MnB4O1xuXHRjb2xvcjogIzAwNzNhYTtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbjpob3ZlciAuZGFzaGljb25ze1xuXHRjb2xvcjogIzAwOUVENztcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbi5scC10b2dnbGV7XG5cdF9yaWdodDogNjJweDtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uID4gaDMgLmxwLWFjdGlvbi5scC1yZW1vdmV7XG5cdF9yaWdodDogMTI0cHg7XG59XG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAubHAtY3VycmljdWx1bS1zZWN0aW9uLmNsb3NlZCAubHAtY3VycmljdWx1bS1zZWN0aW9uLWNvbnRlbnR7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAuc29ydGluZyAudWktc29ydGFibGUtaGVscGVyIC5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLmxwLWNvdXJzZS1jdXJyaWN1bHVtIC5zb3J0aW5nIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcixcbi5scC1zZWN0aW9uLWl0ZW1zLnNvcnRpbmcgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVye1xuXHRib3JkZXI6IDNweCBkYXNoZWQgI0RERDtcblx0dmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubHAtY291cnNlLWN1cnJpY3VsdW0gLnNvcnRpbmcgLnVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyOmFmdGVyLFxuLmxwLXNlY3Rpb24taXRlbXMuc29ydGluZyAudWktc29ydGFibGUtcGxhY2Vob2xkZXI6YWZ0ZXJ7XG5cdGNvbnRlbnQ6ICcnO1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDBweDtcblx0aGVpZ2h0OiAwcHg7XG5cdGJvcmRlcjogMjhweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLWxlZnQtY29sb3I6ICM5OTk7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAtMzNweDtcblxufVxuXG4ubHAtc2VjdGlvbi1pdGVtcy5zb3J0aW5nIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcjphZnRlcntcblx0Ym9yZGVyLXdpZHRoOiAxNXB4O1xuXHRsZWZ0OiAtMjBweDtcbn1cbi5scC1jdXJyaWN1bHVtLXNlY3Rpb24tY29udGVudHtcblx0YmFja2dyb3VuZC1jb2xvcjogI0Y1RjVGNTtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0X2JvcmRlci1ib3R0b206IDJweCBkYXNoZWQgI0RERDtcblx0cGFkZGluZzogMjBweDtcblx0bWFyZ2luLWJvdHRvbTogMHB4O1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgI0RERDtcbn1cbi5scC1keW5hbWljLWZvcm17XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0cGFkZGluZzogMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0ei1pbmRleDogMjEwO1xuXHRcdGhlaWdodDogMTVweDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5scC1jb250YWluZXItZHJvcGRvd257XG5cdGhlaWdodDogMTVweDtcblx0dmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5scC1jb250YWluZXItZHJvcGRvd24gPiBhe1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkYgIWltcG9ydGFudDtcbn1cbi5scC1jb250YWluZXItZHJvcGRvd24uc2VsZWN0Mi1kcm9wLWFib3ZlID4gYXtcblx0aGVpZ2h0OiAzcHg7XG59XG4ubHAtc2VsZWN0LWRyb3Bkb3due1xuXHRtYXJnaW4tdG9wOiAtNnB4O1xufVxuLmxwLXNlbGVjdC1kcm9wZG93bi5zZWxlY3QyLWRyb3AtYWJvdmV7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xufVxuXG4ubHAtZW1wdHkgLmxwLWN1cnJpY3VsdW0tc2VjdGlvbi1jb250ZW50e1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5scC1zZWN0aW9uLWl0ZW1ze1xuXHRtaW4taGVpZ2h0OiAyMHB4O1xuXG5cbn1cbi5scC1zZWN0aW9uLWl0ZW1zID4gbGl7XG5cdHBhZGRpbmc6IDVweDtcblx0Ym9yZGVyOjFweCBkYXNoZWQgI0RERDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0Y3Vyc29yOiBtb3ZlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubHAtc2VjdGlvbi1pdGVtcyA+IGxpIC5scC10aXRsZXtcblx0Y3Vyc29yOiBhdXRvO1xuXHRwYWRkaW5nOiAzcHggNXB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogODAlO1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblxufVxuLmxwLXNlY3Rpb24taXRlbXMgPiBsaTpob3ZlciAubHAtdGl0bGUge1xuXHRib3JkZXItY29sb3I6ICNEREQ7XG5cdGN1cnNvcjogdGV4dDtcbn1cbi5scC1zZWN0aW9uLWl0ZW1zID4gbGkgaW5wdXR7XG5cdHdpZHRoOiA3MCU7XG59XG5cbi5scC1zZWN0aW9uLWl0ZW1zID4gbGk6aG92ZXJ7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4ubHAtc2VjdGlvbi1pY29ue1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDowO1xuXHRsZWZ0OjA7XG5cdHdpZHRoOiA2MnB4O1xuXHRoZWlnaHQ6IDYycHg7XG5cdGxpbmUtaGVpZ2h0OiA1NHB4O1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjREREO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cbi5scC1zZWN0aW9uLWljb24gaXtcblx0aGVpZ2h0OiA2MHB4O1xuXHRsaW5lLWhlaWdodDogNjBweDtcbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bSAuZGFzaGljb25ze1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uc2VsZWN0Mi1kcm9wLnNlbGVjdDItZHJvcC1hY3RpdmV7XG5cdHBhZGRpbmc6IDVweCAxMHB4O1xufVxuXG4ucndtYi1jb3Vyc2VfbGVzc29uX3F1aXotd3JhcHBlciAucndtYi1sYWJlbHsgZGlzcGxheTogbm9uZTt9XG4ucndtYi1jb3Vyc2VfbGVzc29uX3F1aXotd3JhcHBlciAucndtYi1pbnB1dHsgZmxvYXQ6IG5vbmU7IHdpZHRoOiBhdXRvOyBkaXNwbGF5OiBibG9jazt9XG5cbi5scC1jb3Vyc2UtY3VycmljdWx1bS10b2dnbGV7XG5cbn1cbi5scC1jb3Vyc2UtY3VycmljdWx1bS10b2dnbGUgLmV4cGFuZHtcblx0ZGlzcGxheTogbm9uZTtcbn0qLyJdLCJmaWxlIjoiYWRtaW4vbWV0YS1ib3gtY291cnNlLmNzcyJ9 */
|
assets/css/admin/meta-box-order.css
CHANGED
@@ -1,149 +1,151 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
.column-
|
4 |
-
.column-
|
5 |
-
.column-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
.
|
13 |
-
|
14 |
-
|
15 |
-
#order_details .
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
#order_details .
|
20 |
-
|
21 |
-
margin:
|
22 |
-
}
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
text-align:
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
#order_details .order-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
}
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
#order_details .order-data {
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
}
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
#order_details .
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
}
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
width:
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
}
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
font-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
1 |
+
/* admin order details */
|
2 |
+
.column-order_date,
|
3 |
+
.column-order_total,
|
4 |
+
.column-order_status,
|
5 |
+
.post-type-lp_order .column-title {
|
6 |
+
width: 10%;
|
7 |
+
}
|
8 |
+
.post-type-lp_order .column-order_student {
|
9 |
+
width: 12%;
|
10 |
+
}
|
11 |
+
#order_details .ui-sortable-handle,
|
12 |
+
#order_details .handlediv {
|
13 |
+
display: none !important;
|
14 |
+
}
|
15 |
+
#order_details .inside {
|
16 |
+
padding: 20px;
|
17 |
+
margin: 0;
|
18 |
+
}
|
19 |
+
#order_details .order-user-avatar {
|
20 |
+
float: left;
|
21 |
+
margin-right: 20px;
|
22 |
+
}
|
23 |
+
#order_details .order-user-meta {
|
24 |
+
float: left;
|
25 |
+
}
|
26 |
+
#order_details .order-items table {
|
27 |
+
width: 100%;
|
28 |
+
border-collapse: collapse;
|
29 |
+
margin-top: 20px;
|
30 |
+
}
|
31 |
+
#order_details .order-items table tr {
|
32 |
+
border-bottom: 1px solid #EEE;
|
33 |
+
}
|
34 |
+
#order_details .order-items table thead th {
|
35 |
+
height: 30px;
|
36 |
+
text-align: left;
|
37 |
+
font-size: 16px;
|
38 |
+
padding: 15px 10px;
|
39 |
+
}
|
40 |
+
#order_details .order-items table td {
|
41 |
+
padding: 15px 10px;
|
42 |
+
font-size: 16px;
|
43 |
+
}
|
44 |
+
#order_details .order-items table .align-right {
|
45 |
+
text-align: right;
|
46 |
+
}
|
47 |
+
#order_details .order-data {
|
48 |
+
float: right;
|
49 |
+
}
|
50 |
+
#order_details .order-data {
|
51 |
+
text-align: right;
|
52 |
+
}
|
53 |
+
#order_details .order-data .order-data-number {
|
54 |
+
font-size: 24px;
|
55 |
+
font-weight: bold;
|
56 |
+
margin-bottom: 10px;
|
57 |
+
}
|
58 |
+
#order_details .order-data .order-data-date {
|
59 |
+
font-size: 14px;
|
60 |
+
font-style: italic;
|
61 |
+
margin-bottom: 5px;
|
62 |
+
}
|
63 |
+
#order_details .order-data .order-data-payment-method {
|
64 |
+
font-size: 16px;
|
65 |
+
font-weight: bold;
|
66 |
+
margin: 5px 0;
|
67 |
+
}
|
68 |
+
#order_details .order-data .order-data-status {
|
69 |
+
border-radius: 3px;
|
70 |
+
padding: 2px 5px;
|
71 |
+
display: inline-block;
|
72 |
+
color: #FFF;
|
73 |
+
font-size: 12px;
|
74 |
+
}
|
75 |
+
#order_details .order-data .order-data-status.completed {
|
76 |
+
background-color: #006400;
|
77 |
+
}
|
78 |
+
#order_details .order-data .order-data-status.pending {
|
79 |
+
background-color: #CCCCCC;
|
80 |
+
}
|
81 |
+
#order_details .total {
|
82 |
+
font-weight: bold;
|
83 |
+
font-size: 16px;
|
84 |
+
}
|
85 |
+
#order_details .avatar-multiple-users{
|
86 |
+
width: 120px;
|
87 |
+
height: 120px;
|
88 |
+
background: #F5F5F5;
|
89 |
+
position: relative;
|
90 |
+
}
|
91 |
+
#order_details .avatar-multiple-users:before,
|
92 |
+
#order_details .avatar-multiple-users:after{
|
93 |
+
content: "\f110";
|
94 |
+
width: 120px;
|
95 |
+
height:120px;
|
96 |
+
position: absolute;
|
97 |
+
top:0;
|
98 |
+
left: 0;
|
99 |
+
font-family: dashicons;
|
100 |
+
font-size: 58px;
|
101 |
+
color: #a1adbb;
|
102 |
+
text-align: center;
|
103 |
+
line-height: 120px;
|
104 |
+
}
|
105 |
+
#order_details .avatar-multiple-users:before{
|
106 |
+
font-size: 48px;
|
107 |
+
left: -27px;
|
108 |
+
color: #DEDEDE;
|
109 |
+
}
|
110 |
+
#order_details .avatar-multiple-users span:after{
|
111 |
+
font-family: dashicons;
|
112 |
+
content: "\f132";
|
113 |
+
font-size: 32px;
|
114 |
+
top: 0;
|
115 |
+
position: absolute;
|
116 |
+
width: 120px;
|
117 |
+
height: 120px;
|
118 |
+
text-align: center;
|
119 |
+
line-height: 120px;
|
120 |
+
left: 31px;
|
121 |
+
color: #a1adbb;
|
122 |
+
}
|
123 |
+
#order_details .order-users > strong{
|
124 |
+
font-weight: bold;
|
125 |
+
}
|
126 |
+
#order_details .order-users p{
|
127 |
+
font-style: italic;
|
128 |
+
margin: 5px 0 15px 0;
|
129 |
+
}
|
130 |
+
#order_details .payment-method-title{
|
131 |
+
font-weight: bold;
|
132 |
+
}
|
133 |
+
|
134 |
+
|
135 |
+
.order-status-description {
|
136 |
+
font-size: smaller;
|
137 |
+
background: #CEE8FF;
|
138 |
+
padding: 5px;
|
139 |
+
font-style: italic;
|
140 |
+
color: #848484;
|
141 |
+
position: relative;
|
142 |
+
margin-top: 10px;
|
143 |
+
border-radius: 3px;
|
144 |
+
}
|
145 |
+
.order-status-description:before {
|
146 |
+
content: '';
|
147 |
+
border: 5px solid transparent;
|
148 |
+
border-bottom-color: #CEE8FF;
|
149 |
+
position: absolute;
|
150 |
+
top: -10px;
|
151 |
+
}
|
assets/css/admin/meta-box-question.css
DELETED
@@ -1,52 +0,0 @@
|
|
1 |
-
#question_settings select.lpr-question-types{
|
2 |
-
margin-left: 20px;
|
3 |
-
font-weight: normal;
|
4 |
-
display: none;
|
5 |
-
font-size: 12px;
|
6 |
-
padding: 0;
|
7 |
-
height: auto;
|
8 |
-
}
|
9 |
-
.lpr-question-option{
|
10 |
-
border: 1px solid #DDD;
|
11 |
-
border-collapse: collapse;
|
12 |
-
width: 100%;
|
13 |
-
border-bottom: none ;
|
14 |
-
position: relative;
|
15 |
-
}
|
16 |
-
.lpr-question-option{}
|
17 |
-
.lpr-question-option th,
|
18 |
-
.lpr-question-option td{
|
19 |
-
padding: 5px;
|
20 |
-
border: 1px solid #DDD;
|
21 |
-
}
|
22 |
-
.lpr-question-option thead{
|
23 |
-
background-color: #F5F5F5;
|
24 |
-
}
|
25 |
-
.lpr-question-option thead th{
|
26 |
-
text-align: left;
|
27 |
-
padding: 8px 5px;
|
28 |
-
border: 1px solid #DDD;
|
29 |
-
}
|
30 |
-
.lpr-question-option tbody{
|
31 |
-
position: relative;
|
32 |
-
}
|
33 |
-
.lpr-question-option tbody tr{
|
34 |
-
width: 100%;
|
35 |
-
background-color: #FFF;
|
36 |
-
}
|
37 |
-
.lpr-question-option tbody th{
|
38 |
-
text-align: left;
|
39 |
-
padding: 5px;
|
40 |
-
border: 1px solid #DDD;
|
41 |
-
width: 25%;
|
42 |
-
}
|
43 |
-
.lpr-question-option tbody tr.placeholder td{
|
44 |
-
border: 1px solid #DDD;
|
45 |
-
background-color: #DDD;
|
46 |
-
}
|
47 |
-
.lpr-question-option tbody tr.ui-sortable-helper{
|
48 |
-
left: 0;
|
49 |
-
}
|
50 |
-
.lpr-question-option input[type="text"] {
|
51 |
-
width: 100%;
|
52 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/learnpress.css
CHANGED
@@ -1,3 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
@font-face {
|
2 |
font-family: 'lp-icons';
|
3 |
src: url('../fonts/lp-icons.eot?f41nl');
|
@@ -153,12 +168,20 @@
|
|
153 |
.learn-press-courses li.course .course-info > * {
|
154 |
display: block;
|
155 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
156 |
.learn-press-notice .button {
|
157 |
float: right;
|
158 |
}
|
159 |
.learn-press-form {
|
160 |
margin-bottom: 20px;
|
161 |
}
|
|
|
162 |
#learn-press-course-curriculum ul.curriculum-sections,
|
163 |
#learn-press-course-curriculum ul.section-content {
|
164 |
list-style: none;
|
@@ -210,6 +233,7 @@
|
|
210 |
border-radius: 5px;
|
211 |
vertical-align: middle;
|
212 |
margin-left: 5px;
|
|
|
213 |
}
|
214 |
#learn-press-course-curriculum .section-header .meta .collapse:before {
|
215 |
content: "\ea0b";
|
@@ -253,6 +277,55 @@
|
|
253 |
#learn-press-course-curriculum .course-item .lp-icon {
|
254 |
display: none;
|
255 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
#learn-press-course-curriculum .course-item.viewable {
|
257 |
cursor: pointer;
|
258 |
}
|
@@ -284,18 +357,6 @@
|
|
284 |
height: 100%;
|
285 |
content: '';
|
286 |
}
|
287 |
-
#learn-press-course-curriculum .course-item.item-has-status .item-status {
|
288 |
-
display: inline-block;
|
289 |
-
background: #d6d6d6;
|
290 |
-
margin-left: 5px;
|
291 |
-
}
|
292 |
-
#learn-press-course-curriculum .course-item.item-has-status .item-status:before {
|
293 |
-
content: '\ea10';
|
294 |
-
color: #FFF;
|
295 |
-
}
|
296 |
-
#learn-press-course-curriculum .course-item.item-has-status.item-completed .item-status {
|
297 |
-
background: #95e6f9;
|
298 |
-
}
|
299 |
#learn-press-course-curriculum .course-item.focus {
|
300 |
background: #ffb710;
|
301 |
}
|
@@ -315,12 +376,25 @@
|
|
315 |
#learn-press-course-curriculum .course-item-meta {
|
316 |
display: block;
|
317 |
line-height: 1;
|
318 |
-
__position: absolute;
|
319 |
top: 15px;
|
320 |
right: 15px;
|
321 |
float: right;
|
322 |
margin-top: 5px;
|
323 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
.lp-icon {
|
325 |
display: inline-block;
|
326 |
font-family: 'lp-icons';
|
@@ -442,6 +516,26 @@
|
|
442 |
.single-lp_course .learn-press-course-results-progress .percentage-sign {
|
443 |
margin-left: 5px;
|
444 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
.single-lp_course .learn-press-course-results-progress:after {
|
446 |
display: block;
|
447 |
content: '';
|
@@ -542,7 +636,24 @@
|
|
542 |
.learn-press-tabs .learn-press-tab-panel.active {
|
543 |
display: block;
|
544 |
}
|
545 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
546 |
#popup_overlay {
|
547 |
z-index: 10000000 !important;
|
548 |
}
|
@@ -790,7 +901,7 @@ body.course-has-popup {
|
|
790 |
height: 43px;
|
791 |
line-height: 43px;
|
792 |
background: #F5F5F5;
|
793 |
-
margin:
|
794 |
border: 1px solid #DDD;
|
795 |
outline: none;
|
796 |
}
|
@@ -911,6 +1022,10 @@ body.block-content #learn-press-block-content {
|
|
911 |
.quiz-intro {
|
912 |
list-style: none;
|
913 |
padding: 0;
|
|
|
|
|
|
|
|
|
914 |
}
|
915 |
.quiz-questions-list {
|
916 |
margin: 0 0 20px 0;
|
@@ -922,10 +1037,95 @@ body.block-content #learn-press-block-content {
|
|
922 |
}
|
923 |
.quiz-questions-list .question-title {
|
924 |
margin: 0 0 5px 0;
|
|
|
|
|
925 |
}
|
926 |
.quiz-questions-list .current .question-title {
|
927 |
font-weight: bold;
|
928 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
929 |
.quiz-description .learn-press-question-title,
|
930 |
.question-content .learn-press-question-title {
|
931 |
margin-bottom: 20px;
|
@@ -1796,8 +1996,9 @@ body.block-content #learn-press-block-content {
|
|
1796 |
.learn-press-message {
|
1797 |
background: #F5F5F5;
|
1798 |
border-left: 5px solid #00A0D2;
|
1799 |
-
padding: 10px 20px
|
1800 |
margin-bottom: 20px;
|
|
|
1801 |
}
|
1802 |
.learn-press-message button {
|
1803 |
float: right;
|
@@ -1885,6 +2086,20 @@ body.block-content #learn-press-block-content {
|
|
1885 |
.lp-form-field-wrap .lp-form-field .lp-field-error-message {
|
1886 |
color: #FF0000;
|
1887 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1888 |
.learn-press-user-profile .lp-edit-profile:after {
|
1889 |
display: block;
|
1890 |
content: '';
|
@@ -2213,13 +2428,47 @@ body.profile-resizing {
|
|
2213 |
#popup_container #popup_panel {
|
2214 |
text-align: center;
|
2215 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2216 |
.single-lp_course .course-summary .lp_course .entry-footer {
|
2217 |
display: none;
|
2218 |
}
|
2219 |
.single-lp_course .learn-press-message {
|
|
|
2220 |
clear: both;
|
2221 |
margin-top: 25px;
|
2222 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2223 |
/* tooltip */
|
2224 |
.learn-press-tooltip-bubble {
|
2225 |
position: absolute;
|
@@ -2282,48 +2531,37 @@ body.content-item-only #learn-press-content-item.expand {
|
|
2282 |
content: '-';
|
2283 |
}
|
2284 |
/*
|
2285 |
-
.
|
2286 |
-
|
2287 |
-
|
2288 |
-
|
2289 |
-
|
2290 |
-
|
2291 |
-
|
2292 |
-
|
2293 |
-
|
2294 |
-
|
2295 |
-
|
2296 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2297 |
}*/
|
2298 |
-
.payment-method-form.payment_method_authorizenet {
|
2299 |
-
background: #f7f7f7;
|
2300 |
-
border-radius: 5px;
|
2301 |
-
-webkit-border-radius: 5px;
|
2302 |
-
-moz-border-radius: 5px;
|
2303 |
-
padding-top: 25px;
|
2304 |
-
}
|
2305 |
-
.payment-method-form.payment_method_authorizenet .row-fluid {
|
2306 |
-
clear: both;
|
2307 |
-
padding-bottom: 25px;
|
2308 |
-
}
|
2309 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child {
|
2310 |
-
width: 50%;
|
2311 |
-
float: left;
|
2312 |
-
}
|
2313 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child label {
|
2314 |
-
margin-left: 17px;
|
2315 |
-
}
|
2316 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child select,
|
2317 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6:first-child input {
|
2318 |
-
margin-left: 10px;
|
2319 |
-
}
|
2320 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6 select,
|
2321 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6 input {
|
2322 |
-
padding: 8px 0;
|
2323 |
-
}
|
2324 |
-
.payment-method-form.payment_method_authorizenet .row-fluid .span6 select.required {
|
2325 |
-
color: #000;
|
2326 |
-
}
|
2327 |
.place-order-action {
|
2328 |
margin-top: 20px;
|
2329 |
}
|
@@ -2347,31 +2585,128 @@ body.content-item-only #learn-press-content-item.expand {
|
|
2347 |
z-index: 10;
|
2348 |
position: relative;
|
2349 |
}
|
|
|
|
|
|
|
2350 |
/* Shortcode/Widgets */
|
2351 |
-
.
|
2352 |
-
.
|
2353 |
-
.featured-courses
|
2354 |
display: inline-block;
|
2355 |
}
|
2356 |
-
.
|
2357 |
-
.
|
2358 |
-
.featured-courses
|
2359 |
content: '/';
|
2360 |
}
|
2361 |
-
.
|
2362 |
-
.
|
2363 |
-
.featured-courses
|
2364 |
content: '';
|
2365 |
}
|
2366 |
-
.
|
2367 |
-
.
|
2368 |
-
.featured-courses
|
2369 |
margin: 5px 0;
|
2370 |
}
|
2371 |
-
.
|
2372 |
-
.
|
2373 |
-
.featured-courses
|
2374 |
margin-bottom: 20px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2375 |
}
|
2376 |
@-moz-keyframes spin-12 {
|
2377 |
0% {
|
@@ -2493,11 +2828,17 @@ body.content-item-only #learn-press-content-item.expand {
|
|
2493 |
margin-left: 0;
|
2494 |
}
|
2495 |
}
|
|
|
2496 |
@media (max-width: 480px) {
|
2497 |
-
|
2498 |
-
|
2499 |
-
|
2500 |
-
|
|
|
|
|
|
|
|
|
|
|
2501 |
@media (max-width: 400px) {
|
2502 |
.learn-press-courses li.course {
|
2503 |
width: 100%;
|
@@ -2519,29 +2860,37 @@ body.content-item-only #learn-press-content-item.expand {
|
|
2519 |
display: none;
|
2520 |
}
|
2521 |
}
|
|
|
2522 |
@media screen and (max-width: 615px) {
|
2523 |
-
|
2524 |
-
|
2525 |
-
|
2526 |
-
|
2527 |
-
|
2528 |
-
|
2529 |
-
|
2530 |
-
|
2531 |
-
|
2532 |
-
|
2533 |
-
|
2534 |
-
|
2535 |
-
|
2536 |
-
|
2537 |
-
|
2538 |
-
|
2539 |
-
|
2540 |
-
|
2541 |
-
|
2542 |
-
|
2543 |
-
|
2544 |
-
|
2545 |
-
|
2546 |
-
|
2547 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
- PROGRESS CIRCLE
|
3 |
+
- Archive courses
|
4 |
+
- Course Curriculum
|
5 |
+
- BREADCRUMB
|
6 |
+
- COURSE PROGRESS
|
7 |
+
- COURSE TABS
|
8 |
+
- POPUP STYLE
|
9 |
+
- COURSE QUIZ
|
10 |
+
- Form field
|
11 |
+
- jAlerts
|
12 |
+
- tooltip
|
13 |
+
- fill in blank
|
14 |
+
- Shortcode/Widgets
|
15 |
+
*/
|
16 |
@font-face {
|
17 |
font-family: 'lp-icons';
|
18 |
src: url('../fonts/lp-icons.eot?f41nl');
|
168 |
.learn-press-courses li.course .course-info > * {
|
169 |
display: block;
|
170 |
}
|
171 |
+
.course-origin-price {
|
172 |
+
text-decoration: line-through;
|
173 |
+
padding-right: 5px;
|
174 |
+
}
|
175 |
+
.course-price {
|
176 |
+
color: #54b551;
|
177 |
+
}
|
178 |
.learn-press-notice .button {
|
179 |
float: right;
|
180 |
}
|
181 |
.learn-press-form {
|
182 |
margin-bottom: 20px;
|
183 |
}
|
184 |
+
/* Course Curriculum */
|
185 |
#learn-press-course-curriculum ul.curriculum-sections,
|
186 |
#learn-press-course-curriculum ul.section-content {
|
187 |
list-style: none;
|
233 |
border-radius: 5px;
|
234 |
vertical-align: middle;
|
235 |
margin-left: 5px;
|
236 |
+
font-size: 10px;
|
237 |
}
|
238 |
#learn-press-course-curriculum .section-header .meta .collapse:before {
|
239 |
content: "\ea0b";
|
277 |
#learn-press-course-curriculum .course-item .lp-icon {
|
278 |
display: none;
|
279 |
}
|
280 |
+
#learn-press-course-curriculum .course-item .item-status {
|
281 |
+
display: none;
|
282 |
+
font-family: dashicons;
|
283 |
+
-webkit-border-radius: 4px;
|
284 |
+
-khtml-border-radius: 4px;
|
285 |
+
-moz-border-radius: 4px;
|
286 |
+
-ms-border-radius: 4px;
|
287 |
+
-o-border-radius: 4px;
|
288 |
+
border-radius: 4px;
|
289 |
+
background: #DDD;
|
290 |
+
color: #22b4ff;
|
291 |
+
font-size: 18px;
|
292 |
+
}
|
293 |
+
#learn-press-course-curriculum .course-item .item-status:before {
|
294 |
+
content: "\f177";
|
295 |
+
}
|
296 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-started:before {
|
297 |
+
content: "\f469";
|
298 |
+
}
|
299 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-completed {
|
300 |
+
background: #22b4ff;
|
301 |
+
color: #FFF;
|
302 |
+
}
|
303 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-completed:before {
|
304 |
+
content: "\f147";
|
305 |
+
}
|
306 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-passed {
|
307 |
+
background: #22b4ff;
|
308 |
+
color: #FFF;
|
309 |
+
}
|
310 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-passed:before {
|
311 |
+
content: "\f147";
|
312 |
+
}
|
313 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-failed {
|
314 |
+
background: #cc540d;
|
315 |
+
color: #FFF;
|
316 |
+
}
|
317 |
+
#learn-press-course-curriculum .course-item .item-status.item-status-failed:before {
|
318 |
+
content: "\f335";
|
319 |
+
}
|
320 |
+
#learn-press-course-curriculum .course-item .item-result {
|
321 |
+
display: none;
|
322 |
+
}
|
323 |
+
#learn-press-course-curriculum .course-item.item-has-status .item-status {
|
324 |
+
display: inline-block;
|
325 |
+
}
|
326 |
+
#learn-press-course-curriculum .course-item.item-has-result .item-result {
|
327 |
+
display: inline-block;
|
328 |
+
}
|
329 |
#learn-press-course-curriculum .course-item.viewable {
|
330 |
cursor: pointer;
|
331 |
}
|
357 |
height: 100%;
|
358 |
content: '';
|
359 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
#learn-press-course-curriculum .course-item.focus {
|
361 |
background: #ffb710;
|
362 |
}
|
376 |
#learn-press-course-curriculum .course-item-meta {
|
377 |
display: block;
|
378 |
line-height: 1;
|
|
|
379 |
top: 15px;
|
380 |
right: 15px;
|
381 |
float: right;
|
382 |
margin-top: 5px;
|
383 |
}
|
384 |
+
#learn-press-course-curriculum .course-item-meta .item-loop-meta-text {
|
385 |
+
font-size: small;
|
386 |
+
}
|
387 |
+
#learn-press-course-curriculum .course-item-meta .item-loop-meta-text.item-final {
|
388 |
+
color: #ffffff;
|
389 |
+
background: #cc540d;
|
390 |
+
padding: 3px 8px;
|
391 |
+
-webkit-border-radius: 3px;
|
392 |
+
-khtml-border-radius: 3px;
|
393 |
+
-moz-border-radius: 3px;
|
394 |
+
-ms-border-radius: 3px;
|
395 |
+
-o-border-radius: 3px;
|
396 |
+
border-radius: 3px;
|
397 |
+
}
|
398 |
.lp-icon {
|
399 |
display: inline-block;
|
400 |
font-family: 'lp-icons';
|
516 |
.single-lp_course .learn-press-course-results-progress .percentage-sign {
|
517 |
margin-left: 5px;
|
518 |
}
|
519 |
+
.single-lp_course .learn-press-course-results-progress .grade {
|
520 |
+
font-size: 12px;
|
521 |
+
font-weight: bold;
|
522 |
+
background: #F5F5F5;
|
523 |
+
padding: 2px 7px;
|
524 |
+
-webkit-border-radius: 3px;
|
525 |
+
-khtml-border-radius: 3px;
|
526 |
+
-moz-border-radius: 3px;
|
527 |
+
-ms-border-radius: 3px;
|
528 |
+
-o-border-radius: 3px;
|
529 |
+
border-radius: 3px;
|
530 |
+
}
|
531 |
+
.single-lp_course .learn-press-course-results-progress .grade.passed {
|
532 |
+
color: #ffffff;
|
533 |
+
background: #95e6f9;
|
534 |
+
}
|
535 |
+
.single-lp_course .learn-press-course-results-progress .grade.failed {
|
536 |
+
color: #ffffff;
|
537 |
+
background: #ff5425;
|
538 |
+
}
|
539 |
.single-lp_course .learn-press-course-results-progress:after {
|
540 |
display: block;
|
541 |
content: '';
|
636 |
.learn-press-tabs .learn-press-tab-panel.active {
|
637 |
display: block;
|
638 |
}
|
639 |
+
.learn-press-course-buttons a.button {
|
640 |
+
display: inline-block;
|
641 |
+
font-size: 16px;
|
642 |
+
background: #1a1a1a;
|
643 |
+
border: 0;
|
644 |
+
border-radius: 2px;
|
645 |
+
color: #fff;
|
646 |
+
font-family: Montserrat, "Helvetica Neue", sans-serif;
|
647 |
+
font-weight: 700;
|
648 |
+
letter-spacing: 0.046875em;
|
649 |
+
line-height: 1;
|
650 |
+
padding: 0.84375em 0.875em 0.78125em;
|
651 |
+
text-transform: uppercase;
|
652 |
+
}
|
653 |
+
.learn-press-course-buttons a.button:hover {
|
654 |
+
background: #007acc;
|
655 |
+
}
|
656 |
+
/* POPUP STYLE */
|
657 |
#popup_overlay {
|
658 |
z-index: 10000000 !important;
|
659 |
}
|
901 |
height: 43px;
|
902 |
line-height: 43px;
|
903 |
background: #F5F5F5;
|
904 |
+
margin-left: 10px;
|
905 |
border: 1px solid #DDD;
|
906 |
outline: none;
|
907 |
}
|
1022 |
.quiz-intro {
|
1023 |
list-style: none;
|
1024 |
padding: 0;
|
1025 |
+
margin-left: 0;
|
1026 |
+
}
|
1027 |
+
.quiz-intro li label {
|
1028 |
+
display: inline-block;
|
1029 |
}
|
1030 |
.quiz-questions-list {
|
1031 |
margin: 0 0 20px 0;
|
1037 |
}
|
1038 |
.quiz-questions-list .question-title {
|
1039 |
margin: 0 0 5px 0;
|
1040 |
+
display: inline-block;
|
1041 |
+
font-size: 14px;
|
1042 |
}
|
1043 |
.quiz-questions-list .current .question-title {
|
1044 |
font-weight: bold;
|
1045 |
}
|
1046 |
+
.quiz-questions-list input[type="checkbox"],
|
1047 |
+
.quiz-questions-list input[type="radio"] {
|
1048 |
+
border: 1px solid #DDD;
|
1049 |
+
display: inline-block;
|
1050 |
+
-webkit-appearance: none;
|
1051 |
+
width: 18px;
|
1052 |
+
height: 18px;
|
1053 |
+
position: relative;
|
1054 |
+
}
|
1055 |
+
.quiz-questions-list input[type="checkbox"]:checked:after,
|
1056 |
+
.quiz-questions-list input[type="radio"]:checked:after {
|
1057 |
+
content: '';
|
1058 |
+
display: inline-block;
|
1059 |
+
position: absolute;
|
1060 |
+
}
|
1061 |
+
.quiz-questions-list input[type="checkbox"]:checked:after {
|
1062 |
+
border-bottom: 3px solid #00b9eb;
|
1063 |
+
border-right: 1px solid #00b9eb;
|
1064 |
+
-webkit-transform: rotate(14deg);
|
1065 |
+
-moz-transform: rotate(14deg);
|
1066 |
+
-ms-transform: rotate(14deg);
|
1067 |
+
-o-transform: rotate(14deg);
|
1068 |
+
transform: rotate(33deg);
|
1069 |
+
width: 8px;
|
1070 |
+
height: 16px;
|
1071 |
+
top: -5px;
|
1072 |
+
left: 5px;
|
1073 |
+
}
|
1074 |
+
.quiz-questions-list input[type="checkbox"]:disabled:after {
|
1075 |
+
border-color: #DDD;
|
1076 |
+
}
|
1077 |
+
.quiz-questions-list input[type="radio"] {
|
1078 |
+
-webkit-border-radius: 50%;
|
1079 |
+
-moz-border-radius: 50%;
|
1080 |
+
border-radius: 50%;
|
1081 |
+
}
|
1082 |
+
.quiz-questions-list input[type="radio"]:checked:after {
|
1083 |
+
background: #00b9eb;
|
1084 |
+
width: 8px;
|
1085 |
+
height: 8px;
|
1086 |
+
border-radius: 50%;
|
1087 |
+
top: 50%;
|
1088 |
+
left: 50%;
|
1089 |
+
margin-left: -4px;
|
1090 |
+
margin-top: -4px;
|
1091 |
+
}
|
1092 |
+
.quiz-questions-list input[type="radio"]:disabled:after {
|
1093 |
+
background: #DDD;
|
1094 |
+
}
|
1095 |
+
.question-results .question-title:after {
|
1096 |
+
font-family: dashicons;
|
1097 |
+
font-size: 24px;
|
1098 |
+
vertical-align: middle;
|
1099 |
+
display: inline-block;
|
1100 |
+
text-align: center;
|
1101 |
+
margin-left: 5px;
|
1102 |
+
}
|
1103 |
+
.question-results.correct .question-title:after {
|
1104 |
+
content: '\f147';
|
1105 |
+
color: #00adff;
|
1106 |
+
}
|
1107 |
+
.question-results.skipped .question-title:after {
|
1108 |
+
content: '\f534';
|
1109 |
+
color: #c6c6c6;
|
1110 |
+
}
|
1111 |
+
.question-results.incorrect .question-title:after {
|
1112 |
+
content: '\f335';
|
1113 |
+
color: #ff5425;
|
1114 |
+
}
|
1115 |
+
.question-results.incorrect .user-answer-false .option-title {
|
1116 |
+
text-decoration: line-through;
|
1117 |
+
}
|
1118 |
+
.question-results .answer-true {
|
1119 |
+
color: #007acc;
|
1120 |
+
}
|
1121 |
+
.question-results .answer-true .option-title {
|
1122 |
+
background: #fff9d8;
|
1123 |
+
padding: 0 5px;
|
1124 |
+
margin-left: -5px;
|
1125 |
+
}
|
1126 |
+
.question-results input {
|
1127 |
+
vertical-align: middle;
|
1128 |
+
}
|
1129 |
.quiz-description .learn-press-question-title,
|
1130 |
.question-content .learn-press-question-title {
|
1131 |
margin-bottom: 20px;
|
1996 |
.learn-press-message {
|
1997 |
background: #F5F5F5;
|
1998 |
border-left: 5px solid #00A0D2;
|
1999 |
+
padding: 10px 20px 0px 20px;
|
2000 |
margin-bottom: 20px;
|
2001 |
+
overflow: hidden;
|
2002 |
}
|
2003 |
.learn-press-message button {
|
2004 |
float: right;
|
2086 |
.lp-form-field-wrap .lp-form-field .lp-field-error-message {
|
2087 |
color: #FF0000;
|
2088 |
}
|
2089 |
+
.learn-press-user-profile #learn-press-user-info {
|
2090 |
+
overflow: hidden;
|
2091 |
+
}
|
2092 |
+
.learn-press-user-profile #learn-press-user-info .user-avatar {
|
2093 |
+
width: 150px;
|
2094 |
+
float: left;
|
2095 |
+
}
|
2096 |
+
.learn-press-user-profile #learn-press-user-info .user-avatar .avatar {
|
2097 |
+
border-radius: 0;
|
2098 |
+
width: 100%;
|
2099 |
+
}
|
2100 |
+
.learn-press-user-profile #learn-press-user-info .user-basic-info {
|
2101 |
+
margin-left: 170px;
|
2102 |
+
}
|
2103 |
.learn-press-user-profile .lp-edit-profile:after {
|
2104 |
display: block;
|
2105 |
content: '';
|
2428 |
#popup_container #popup_panel {
|
2429 |
text-align: center;
|
2430 |
}
|
2431 |
+
.learn-press-auto-redirect-next-item {
|
2432 |
+
display: none;
|
2433 |
+
}
|
2434 |
+
.learn-press-auto-redirect-next-item.active {
|
2435 |
+
display: block;
|
2436 |
+
}
|
2437 |
.single-lp_course .course-summary .lp_course .entry-footer {
|
2438 |
display: none;
|
2439 |
}
|
2440 |
.single-lp_course .learn-press-message {
|
2441 |
+
position: relative;
|
2442 |
clear: both;
|
2443 |
margin-top: 25px;
|
2444 |
}
|
2445 |
+
.single-lp_course .learn-press-message .learn-press-countdown {
|
2446 |
+
display: inline-block;
|
2447 |
+
width: 1.5em;
|
2448 |
+
height: 1.5em;
|
2449 |
+
background: #cc540d;
|
2450 |
+
text-align: center;
|
2451 |
+
border-radius: 50%;
|
2452 |
+
line-height: 1.5em;
|
2453 |
+
font-size: 0.8em;
|
2454 |
+
color: #fff;
|
2455 |
+
}
|
2456 |
+
.single-lp_course .learn-press-message .learnpress-dismiss-notice {
|
2457 |
+
display: inline-block;
|
2458 |
+
position: absolute;
|
2459 |
+
right: 1em;
|
2460 |
+
top: 50%;
|
2461 |
+
-ms-transform: translateY(-50%);
|
2462 |
+
-webkit-transform: translateY(-50%);
|
2463 |
+
transform: translateY(-50%);
|
2464 |
+
cursor: pointer;
|
2465 |
+
}
|
2466 |
+
.single-lp_course .learn-press-message .learnpress-dismiss-notice:before {
|
2467 |
+
font-size: 1.2em;
|
2468 |
+
color: red;
|
2469 |
+
content: "\f153";
|
2470 |
+
font-family: dashicons;
|
2471 |
+
}
|
2472 |
/* tooltip */
|
2473 |
.learn-press-tooltip-bubble {
|
2474 |
position: absolute;
|
2531 |
content: '-';
|
2532 |
}
|
2533 |
/*
|
2534 |
+
.payment-method-form {
|
2535 |
+
&.payment_method_authorizenet {
|
2536 |
+
background: #f7f7f7;
|
2537 |
+
border-radius: 5px;
|
2538 |
+
-webkit-border-radius: 5px;
|
2539 |
+
-moz-border-radius: 5px;
|
2540 |
+
padding-top: 25px;
|
2541 |
+
.row-fluid {
|
2542 |
+
clear: both;
|
2543 |
+
padding-bottom: 25px;
|
2544 |
+
.span6 {
|
2545 |
+
&:first-child {
|
2546 |
+
width: 50%;
|
2547 |
+
float: left;
|
2548 |
+
label {
|
2549 |
+
margin-left: 17px;
|
2550 |
+
}
|
2551 |
+
select, input {
|
2552 |
+
margin-left: 10px;
|
2553 |
+
}
|
2554 |
+
}
|
2555 |
+
select, input {
|
2556 |
+
padding: 8px 0;
|
2557 |
+
}
|
2558 |
+
select.required {
|
2559 |
+
color: #000;
|
2560 |
+
}
|
2561 |
+
}
|
2562 |
+
}
|
2563 |
+
}
|
2564 |
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2565 |
.place-order-action {
|
2566 |
margin-top: 20px;
|
2567 |
}
|
2585 |
z-index: 10;
|
2586 |
position: relative;
|
2587 |
}
|
2588 |
+
.table-orders .order-status.order-status-removed {
|
2589 |
+
color: #FF0000;
|
2590 |
+
}
|
2591 |
/* Shortcode/Widgets */
|
2592 |
+
.widget_lp-widget-popular-courses .course-meta-data > div,
|
2593 |
+
.widget_lp-widget-recent-courses .course-meta-data > div,
|
2594 |
+
.widget_lp-widget-featured-courses .course-meta-data > div {
|
2595 |
display: inline-block;
|
2596 |
}
|
2597 |
+
.widget_lp-widget-popular-courses .course-meta-data > div:after,
|
2598 |
+
.widget_lp-widget-recent-courses .course-meta-data > div:after,
|
2599 |
+
.widget_lp-widget-featured-courses .course-meta-data > div:after {
|
2600 |
content: '/';
|
2601 |
}
|
2602 |
+
.widget_lp-widget-popular-courses .course-meta-data > div:last-child:after,
|
2603 |
+
.widget_lp-widget-recent-courses .course-meta-data > div:last-child:after,
|
2604 |
+
.widget_lp-widget-featured-courses .course-meta-data > div:last-child:after {
|
2605 |
content: '';
|
2606 |
}
|
2607 |
+
.widget_lp-widget-popular-courses .course-title,
|
2608 |
+
.widget_lp-widget-recent-courses .course-title,
|
2609 |
+
.widget_lp-widget-featured-courses .course-title {
|
2610 |
margin: 5px 0;
|
2611 |
}
|
2612 |
+
.widget_lp-widget-popular-courses .course-entry,
|
2613 |
+
.widget_lp-widget-recent-courses .course-entry,
|
2614 |
+
.widget_lp-widget-featured-courses .course-entry {
|
2615 |
margin-bottom: 20px;
|
2616 |
+
border-bottom: 1px dashed #DDD;
|
2617 |
+
padding-bottom: 20px;
|
2618 |
+
}
|
2619 |
+
.edit-course-item-link a {
|
2620 |
+
font-size: 14px;
|
2621 |
+
position: relative;
|
2622 |
+
padding-left: 25px;
|
2623 |
+
}
|
2624 |
+
.edit-course-item-link a:after {
|
2625 |
+
content: "\f464";
|
2626 |
+
font-family: Dashicons;
|
2627 |
+
font-size: 26px;
|
2628 |
+
position: absolute;
|
2629 |
+
bottom: 0;
|
2630 |
+
line-height: 1;
|
2631 |
+
left: 0;
|
2632 |
+
}
|
2633 |
+
.course-item-navigation {
|
2634 |
+
border-top: 4px solid #333;
|
2635 |
+
padding-top: 10px;
|
2636 |
+
margin-top: 20px;
|
2637 |
+
}
|
2638 |
+
.course-item-navigation .nav-links .nav-link {
|
2639 |
+
opacity: 1;
|
2640 |
+
}
|
2641 |
+
.course-item-navigation .nav-links .nav-link a {
|
2642 |
+
opacity: 1;
|
2643 |
+
}
|
2644 |
+
.course-item-navigation .nav-links .nav-link a .meta-nav {
|
2645 |
+
display: block;
|
2646 |
+
text-transform: uppercase;
|
2647 |
+
font-size: small;
|
2648 |
+
color: #b9b9b9;
|
2649 |
+
}
|
2650 |
+
.course-item-navigation .nav-links .nav-link a .post-title {
|
2651 |
+
opacity: 1;
|
2652 |
+
}
|
2653 |
+
.course-item-navigation .nav-links .nav-link.nav-previous {
|
2654 |
+
float: left;
|
2655 |
+
}
|
2656 |
+
.course-item-navigation .nav-links .nav-link.nav-next {
|
2657 |
+
float: right;
|
2658 |
+
text-align: right;
|
2659 |
+
}
|
2660 |
+
.course-item-navigation .nav-links:after {
|
2661 |
+
clear: both;
|
2662 |
+
display: block;
|
2663 |
+
content: '';
|
2664 |
+
}
|
2665 |
+
/* widget attributes */
|
2666 |
+
.lp-course-attributes {
|
2667 |
+
list-style: none;
|
2668 |
+
margin-left: 0;
|
2669 |
+
}
|
2670 |
+
.lp-course-attributes li {
|
2671 |
+
list-style: none;
|
2672 |
+
margin-bottom: 10px;
|
2673 |
+
}
|
2674 |
+
.lp-course-attributes .lp-course-attribute-values {
|
2675 |
+
list-style: none;
|
2676 |
+
margin-left: 0;
|
2677 |
+
}
|
2678 |
+
.lp-course-attributes.course-attributes .lp-course-attribute-values li {
|
2679 |
+
display: inline-block;
|
2680 |
+
padding: 3px 8px;
|
2681 |
+
background: #F0F0F0;
|
2682 |
+
border-radius: 4px;
|
2683 |
+
margin: 0 5px 5px 0;
|
2684 |
+
}
|
2685 |
+
.lp-course-attributes.course-filters .lp-course-attribute-values li a:before {
|
2686 |
+
font-family: dashicons;
|
2687 |
+
border-radius: 50%;
|
2688 |
+
background: #DDD;
|
2689 |
+
display: inline-block;
|
2690 |
+
width: 16px;
|
2691 |
+
height: 16px;
|
2692 |
+
text-align: center;
|
2693 |
+
line-height: 16px;
|
2694 |
+
color: #FFF;
|
2695 |
+
font-size: 16px;
|
2696 |
+
vertical-align: middle;
|
2697 |
+
margin-right: 5px;
|
2698 |
+
content: '';
|
2699 |
+
}
|
2700 |
+
.lp-course-attributes.course-filters .lp-course-attribute-values li:hover a:before {
|
2701 |
+
background: #4acfff;
|
2702 |
+
}
|
2703 |
+
.lp-course-attributes.course-filters .lp-course-attribute-values li.active a:before {
|
2704 |
+
content: "\f147";
|
2705 |
+
background: #4acfff;
|
2706 |
+
}
|
2707 |
+
.lp-course-attributes.course-filters .lp-course-attribute-values li.active:hover a:before {
|
2708 |
+
content: "\f335";
|
2709 |
+
background: #a20000;
|
2710 |
}
|
2711 |
@-moz-keyframes spin-12 {
|
2712 |
0% {
|
2828 |
margin-left: 0;
|
2829 |
}
|
2830 |
}
|
2831 |
+
/*
|
2832 |
@media (max-width: 480px) {
|
2833 |
+
.woocommerce {
|
2834 |
+
.checkout_coupon {
|
2835 |
+
.form-row {
|
2836 |
+
width: 100%;
|
2837 |
+
}
|
2838 |
+
}
|
2839 |
+
}
|
2840 |
+
}
|
2841 |
+
*/
|
2842 |
@media (max-width: 400px) {
|
2843 |
.learn-press-courses li.course {
|
2844 |
width: 100%;
|
2860 |
display: none;
|
2861 |
}
|
2862 |
}
|
2863 |
+
/*
|
2864 |
@media screen and (max-width: 615px) {
|
2865 |
+
.payment-method-form {
|
2866 |
+
&.payment_method_authorizenet {
|
2867 |
+
.row-fluid {
|
2868 |
+
padding-bottom: 15px;
|
2869 |
+
.span6 {
|
2870 |
+
&:first-child {
|
2871 |
+
width: 100%;
|
2872 |
+
margin-bottom: 15px;
|
2873 |
+
}
|
2874 |
+
label {
|
2875 |
+
margin-left: 17px;
|
2876 |
+
}
|
2877 |
+
select, input {
|
2878 |
+
margin-left: 10px;
|
2879 |
+
}
|
2880 |
+
select, input {
|
2881 |
+
padding: 8px 0;
|
2882 |
+
}
|
2883 |
+
select.required {
|
2884 |
+
color: #000;
|
2885 |
+
}
|
2886 |
+
#learn-press-authorizenet-payment-expmonth {
|
2887 |
+
margin-bottom: 10px;
|
2888 |
+
}
|
2889 |
+
}
|
2890 |
+
}
|
2891 |
+
}
|
2892 |
+
}
|
2893 |
+
}
|
2894 |
+
*/
|
2895 |
+
|
2896 |
+
/*# sourceMappingURL=data:application/json;charset=utf8;base64,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QUNQLFdBQUE7OztBQU1oQixRQUEwQjtFQUN0QjtJQUNJLFNBQUE7OztBQUlSLFFBQTBCLHVCQUF3QjtFQUU5QyxvQkFDSSxHQUFFO0lBQ0UsYUFBQTtJQUNBLG1CQUFBOzs7RUFFQSxvQkFKSixHQUFFLE9BSUcsVUFBVTtJQUNQLFdBQUE7SUFDQSxjQUFBOzs7QUFPaEIsUUFBMEIsdUJBQXdCO0VBRTlDLG9CQUNJLEdBQUU7SUFDRSxVQUFBO0lBQ0EsbUJBQUE7OztFQUVBLG9CQUpKLEdBQUUsT0FJRyxVQUFVO0lBQ1AsV0FBQTtJQUNBLGNBQUE7Ozs7Ozs7Ozs7Ozs7O0FBa0JoQixRQUEwQjtFQUV0QixvQkFDSSxHQUFFO0lBQ0UsV0FBQTtJQUNBLGtCQUFBO0lBQ0EsV0FBQTs7O0FBTVosUUFBMEI7RUFDdEIsd0JBQXlCO0lBQ3JCLFdBQUE7Ozs7QUFLUixtQkFBeUM7RUFDckMsSUFBSSxpQkFDQSxRQUFPLFVBQ0g7SUFDSSxXQUFBOztFQUhaLElBQUksaUJBQ0EsUUFBTyxVQUlIO0lBQ0ksYUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgLSBQUk9HUkVTUyBDSVJDTEVcbiAgICAtIEFyY2hpdmUgY291cnNlc1xuICAgIC0gQ291cnNlIEN1cnJpY3VsdW1cbiAgICAtIEJSRUFEQ1JVTUJcbiAgICAtIENPVVJTRSBQUk9HUkVTU1xuICAgIC0gQ09VUlNFIFRBQlNcbiAgICAtIFBPUFVQIFNUWUxFXG4gICAgLSBDT1VSU0UgUVVJWlxuICAgIC0gRm9ybSBmaWVsZFxuICAgIC0gakFsZXJ0c1xuICAgIC0gdG9vbHRpcFxuICAgIC0gZmlsbCBpbiBibGFua1xuICAgIC0gU2hvcnRjb2RlL1dpZGdldHNcbiAqL1xuXG5AaWNvbi11cmw6ICcuLi9mb250cy9scC1pY29ucyc7XG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ2xwLWljb25zJztcbiAgICBzcmM6IHVybCgnQHtpY29uLXVybH0uZW90P2Y0MW5sJyk7XG4gICAgc3JjOiB1cmwoJ0B7aWNvbi11cmx9LmVvdD9mNDFubCNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICB1cmwoJ0B7aWNvbi11cmx9LnR0Zj9mNDFubCcpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICB1cmwoJ0B7aWNvbi11cmx9LndvZmY/ZjQxbmwnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICB1cmwoJ0B7aWNvbi11cmx9LnN2Zz9mNDFubCNscC1pY29ucycpIGZvcm1hdCgnc3ZnJyk7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbltjbGFzc149XCJscC1pY29uLVwiXSwgW2NsYXNzKj1cIiBscC1pY29uLVwiXSB7XG4gICAgLyogdXNlICFpbXBvcnRhbnQgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBicm93c2VyIGV4dGVuc2lvbnMgdGhhdCBjaGFuZ2UgZm9udHMgKi9cbiAgICBmb250LWZhbWlseTogJ2xwLWljb25zJyAhaW1wb3J0YW50O1xuICAgIHNwZWFrOiBub25lO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLmxwLWljb24tZmlsZS10ZXh0MjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTI2XCI7XG59XG5cbi5scC1pY29uLWZpbGUtcGljdHVyZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTI3XCI7XG59XG5cbi5scC1pY29uLWZpbGUtbXVzaWM6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTkyOFwiO1xufVxuXG4ubHAtaWNvbi1maWxlLXZpZGVvOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU5MmFcIjtcbn1cblxuLmxwLWljb24tZmlsZS16aXA6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZTkyYlwiO1xufVxuXG4ubHAtaWNvbi1wYXN0ZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTJkXCI7XG59XG5cbi5scC1pY29uLWFsYXJtOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcXGU5NTBcIjtcbn1cblxuLmxwLWljb24tY3Jvc3M6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZWEwZlwiO1xufVxuXG4ubHAtaWNvbi1jaGVja21hcms6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZWExMFwiO1xufVxuXG4ubHAtaWNvbi1zcGlubmVyMjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlOTdiXCI7XG59XG5cbi5scC1pY29uLXBsdXM6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlxcZWEwYVwiO1xufVxuXG4ubHAtaWNvbi1taW51czpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFxlYTBiXCI7XG59XG5cbi5jbGVhcmZpeCgpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiAnJztcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLmNsZWFyZml4OmFmdGVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiAnJztcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLmJvcmRlci1yYWRpdXMoQGFyZ3MpIHtcbiAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IEBhcmd1bWVudHM7XG4gICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IEBhcmd1bWVudHM7XG4gICAgLW1vei1ib3JkZXItcmFkaXVzOiBAYXJndW1lbnRzO1xuICAgIC1tcy1ib3JkZXItcmFkaXVzOiBAYXJndW1lbnRzO1xuICAgIC1vLWJvcmRlci1yYWRpdXM6IEBhcmd1bWVudHM7XG4gICAgYm9yZGVyLXJhZGl1czogQGFyZ3VtZW50cztcbn1cblxuLnRyYW5zZm9ybShAYXJncykge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBAYXJndW1lbnRzO1xuICAgIC1raHRtbC10cmFuc2Zvcm06IEBhcmd1bWVudHM7XG4gICAgLW1vei10cmFuc2Zvcm06IEBhcmd1bWVudHM7XG4gICAgLW1zLXRyYW5zZm9ybTogQGFyZ3VtZW50cztcbiAgICAtby10cmFuc2Zvcm06IEBhcmd1bWVudHM7XG4gICAgdHJhbnNmb3JtOiBAYXJndW1lbnRzO1xufVxuXG4udHJhbnNpdGlvbihAYXJncykge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogQGFyZ3VtZW50cztcbiAgICAta2h0bWwtdHJhbnNpdGlvbjogQGFyZ3VtZW50cztcbiAgICAtbW96LXRyYW5zaXRpb246IEBhcmd1bWVudHM7XG4gICAgLW1zLXRyYW5zaXRpb246IEBhcmd1bWVudHM7XG4gICAgLW8tdHJhbnNpdGlvbjogQGFyZ3VtZW50cztcbiAgICB0cmFuc2l0aW9uOiBAYXJndW1lbnRzO1xufVxuXG4uY3Jvc3MoQHNpemU6IDMwcHgsIEBib3JkZXI6IDNweCwgQGNvbG9yOiAjMDAwKSB7XG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICAgIHdpZHRoOiBAYm9yZGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiBAY29sb3I7XG4gICAgICAgIGhlaWdodDogQHNpemU7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAoQHNpemUgLSAgQGJvcmRlcikgLyAyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIC50cmFuc2Zvcm0ocm90YXRlKC00NWRlZykpO1xuICAgIH1cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgLnRyYW5zZm9ybShyb3RhdGUoNDVkZWcpKTtcbiAgICB9XG59XG5cbi5hbmltYXRpb24oQGFyZ3MpIHtcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogQGFyZ3VtZW50cztcbiAgICAtbW96LWFuaW1hdGlvbjogQGFyZ3VtZW50cztcbiAgICBhbmltYXRpb246IEBhcmd1bWVudHM7XG59XG5cbi5vdmVybGF5LXByb2Nlc3Npbmcge1xuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgei1pbmRleDogOTk5OTk5O1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgfVxufVxuXG4vKiBQUk9HUkVTUyBDSVJDTEUgKi9cbi5wcm9ncmVzcy1jaXJjbGUoQHNpemU6IDIwMHB4LCBAYmFja2dyb3VuZDogI0RERCwgQGZpbGw6ICM5NWU2ZjksIEBpbml0aWFsaXplOiAwLCBAaW5zaWRlLXNpemU6IDE3MHB4LCBAaW5zaWRlLWJhY2tncm91bmQ6ICNGRkYpIHtcbiAgICAucHJvZ3Jlc3MtY2lyY2xlIHtcbiAgICAgICAgd2lkdGg6IEBzaXplO1xuICAgICAgICBoZWlnaHQ6IEBzaXplO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBiYWNrZ3JvdW5kO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIC5iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICB3aWR0aDogQHNpemU7XG4gICAgICAgICAgICBoZWlnaHQ6IEBzaXplO1xuICAgICAgICAgICAgY2xpcDogcmVjdCgwLCBAc2l6ZSwgQHNpemUsIEBzaXplIC8gMik7XG4gICAgICAgICAgICAuZmlsbCB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBAc2l6ZTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IEBzaXplO1xuICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMCwgQHNpemUgLyAyLCBAc2l6ZSwgMCk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogQGZpbGw7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUodW5pdChAaW5pdGlhbGl6ZSozLjYsIGRlZykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICB3aWR0aDogQGluc2lkZS1zaXplO1xuICAgICAgICAgICAgaGVpZ2h0OiBAaW5zaWRlLXNpemU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBAaW5zaWRlLWJhY2tncm91bmQ7XG4gICAgICAgICAgICAuYm9yZGVyLXJhZGl1cyg1MCUpO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtQGluc2lkZS1zaXplIC8gMjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtQGluc2lkZS1zaXplIC8gMjtcbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5pbnNpZGUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogQHNpemU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgfVxuICAgICAgICAmLmd0LTUwIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IEBmaWxsO1xuICAgICAgICAgICAgLmJhY2tncm91bmQge1xuICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMCwgQHNpemUvMiwgQHNpemUsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmZpbGwge1xuICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMCwgQHNpemUsIEBzaXplLCBAc2l6ZS8yKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBAYmFja2dyb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNsZWFyZml4KCkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbn1cblxuLmhpZGUtaWYtanMge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogQXJjaGl2ZSBjb3Vyc2VzICovXG4ubGVhcm4tcHJlc3MtY291cnNlcyB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBjbGVhcjogYm90aDtcbiAgICBtYXJnaW46IDAgLTMwcHggMCAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICAgIGxpLmNvdXJzZSB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHdpZHRoOiAyMyU7XG4gICAgICAgIG1hcmdpbjogMCAyJSAzMHB4IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG5cbiAgICAgICAgLnZpZXctbW9yZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHg7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS10aHVtYm5haWwge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY291cnNlLWluZm8ge1xuICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4IDE1cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB9XG4gICAgICAgIC5jb3Vyc2Utc3R1ZGVudHMge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1pbnN0cnVjdG9yIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1vcmlnaW4tcHJpY2Uge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1wcmljZSB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBjb2xvcjogcmdiKDg0LCAxODEsIDgxKTtcbiAgICAgICAgfVxuICAgICAgICAuY291cnNlLWluZm8gPiAqIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY291cnNlLW9yaWdpbi1wcmljZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xufVxuXG4uY291cnNlLXByaWNlIHtcbiAgICBjb2xvcjogcmdiKDg0LCAxODEsIDgxKTtcbn1cblxuLmxlYXJuLXByZXNzLW5vdGljZSAuYnV0dG9uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5cbi5sZWFybi1wcmVzcy1mb3JtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4vKiBDb3Vyc2UgQ3VycmljdWx1bSAqL1xuXG4jbGVhcm4tcHJlc3MtY291cnNlLWN1cnJpY3VsdW0ge1xuICAgIHVsLmN1cnJpY3VsdW0tc2VjdGlvbnMsXG4gICAgdWwuc2VjdGlvbi1jb250ZW50IHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjVGNUY1O1xuICAgICAgICBsaS5zZWN0aW9uIHtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMTVweDtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICAgICAgY29sb3I6IHJnYigxNTMsIDE1MywgMTUzKTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0RERDtcbiAgICAgICAgfVxuICAgICAgICAubWV0YSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcmlnaHQ6IDE1cHg7XG4gICAgICAgICAgICB0b3A6IDIwcHg7XG4gICAgICAgICAgICAuY29sbGFwc2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdscC1pY29ucyc7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzk1ZTZmOTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGVhMGJcIjtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYucGx1cyB7XG4gICAgICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxlYTBhXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNvdXJzZS1pdGVtIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgLnRyYW5zaXRpb24oYmFja2dyb3VuZCBsaW5lYXIgMC41cyk7XG4gICAgICAgIC5scC1sYWJlbC12aWV3aW5nLFxuICAgICAgICAubHAtbGFiZWwtY29tcGxldGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ2xwLWljb25zJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubHAtaWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5pdGVtLXN0YXR1cyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IGRhc2hpY29ucztcbiAgICAgICAgICAgIC5ib3JkZXItcmFkaXVzKDRweCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjREREO1xuICAgICAgICAgICAgY29sb3I6ICMyMmI0ZmY7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxNzdcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuaXRlbS1zdGF0dXMtdmlld2VkIHtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5pdGVtLXN0YXR1cy1zdGFydGVkIHtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmNDY5XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5pdGVtLXN0YXR1cy1jb21wbGV0ZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMmI0ZmY7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjE0N1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuaXRlbS1zdGF0dXMtcGFzc2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjJiNGZmO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjRkZGO1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxNDdcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLml0ZW0tc3RhdHVzLWZhaWxlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2NjNTQwZDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjtcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMzM1XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5pdGVtLXJlc3VsdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICAgICYuaXRlbS1oYXMtc3RhdHVzIHtcbiAgICAgICAgICAgIC5pdGVtLXN0YXR1cyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuaXRlbS1oYXMtcmVzdWx0IHtcbiAgICAgICAgICAgIC5pdGVtLXJlc3VsdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYudmlld2FibGUge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2U3ZWNmYjtcbiAgICAgICAgICAgICAgICAudHJhbnNpdGlvbihiYWNrZ3JvdW5kIGxpbmVhciAwcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jb3Vyc2UtbGVzc29uIHtcbiAgICAgICAgICAgIC5jb3Vyc2UtaXRlbS10aXRsZSB7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnXFxlOTI2JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jb3Vyc2UtcXVpeiB7XG4gICAgICAgICAgICAuY291cnNlLWl0ZW0tdGl0bGUge1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJ1xcZTk1MCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYuaXRlbS1jdXJyZW50IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDNweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjOTVlNmY5O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmI3MTA7XG4gICAgICAgICAgICAmLm9mZiB7XG4gICAgICAgICAgICAgICAgLnRyYW5zaXRpb24obm9uZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY291cnNlLWl0ZW0tbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICByaWdodDogMTVweDtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIC5pdGVtLWxvb3AtbWV0YS10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogc21hbGw7XG4gICAgICAgICAgICAmLml0ZW0tZmluYWwge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjYzU0MGQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3B4IDhweDtcbiAgICAgICAgICAgICAgICAuYm9yZGVyLXJhZGl1cygzcHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubHAtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtZmFtaWx5OiAnbHAtaWNvbnMnO1xuICAgIGJhY2tncm91bmQ6ICM5NWU2Zjk7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgfVxuXG59XG5cbi5scC1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtc2l6ZTogNzglO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgcGFkZGluZzogMCAxMHB4O1xuICAgIGJhY2tncm91bmQ6ICNEREQ7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIC5ib3JkZXItcmFkaXVzKDRweCk7XG4gICAgJi5scC1sYWJlbC12aWV3aW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDU3LCAxNzUsIDI1NSk7XG4gICAgfVxuICAgICYubHAtbGFiZWwtY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzM5YzdjZTtcbiAgICB9XG4gICAgJi5scC1sYWJlbC1sZXNzb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzM3YWI3O1xuICAgIH1cbiAgICAmLmxwLWxhYmVsLXF1aXoge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTM2NThjO1xuICAgIH1cbiAgICAmLmxwLWxhYmVsLXByZXZpZXcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDJhN2NlO1xuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLWNvbnRlbnQtcHJvdGVjdGVkLW1lc3NhZ2Uge1xuICAgIGJvcmRlcjogM3B4IHNvbGlkICNmZjg0ODQ7XG4gICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGNvbG9yOiAjZmY4NDg0O1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAuaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIC5jcm9zcygzMHB4LCAzcHgsICNmZjg0ODQpO1xuICAgIH1cbn1cblxuLyoqIEJSRUFEQ1JVTUIgKi9cbi5sZWFybi1wcmVzcy1icmVhZGNydW1iIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4vKiogQ09VUlNFIFBST0dSRVNTICoqL1xuLnNpbmdsZS1scF9jb3Vyc2Uge1xuICAgIC5sZWFybi1wcmVzcy1jb3Vyc2UtcmVzdWx0cy1wcm9ncmVzcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICAgIC5pdGVtcy1wcm9ncmVzcyB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiA2OCU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWNvdXJzZS1wcm9ncmVzcy1oZWFkaW5nIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgLmNvdXJzZS1wcm9ncmVzcyB7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIHdpZHRoOiAzMCU7XG4gICAgICAgIH1cbiAgICAgICAgLm51bWJlciwgLnBlcmNlbnRhZ2Utc2lnbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICBmb250LXNpemU6IDI1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLnBlcmNlbnRhZ2Utc2lnbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5ncmFkZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY1RjU7XG4gICAgICAgICAgICBwYWRkaW5nOiAycHggN3B4O1xuICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoM3B4KTtcbiAgICAgICAgICAgICYuaW4tcHJvZ3Jlc3Mge1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLnBhc3NlZCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzk1ZTZmOTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuZmFpbGVkIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmY1NDI1O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubHAtY291cnNlLXByb2dyZXNzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgLmxwLXByb2dyZXNzLWJhciB7XG4gICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0RERDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMTVweCAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAuYm9yZGVyLXJhZGl1cygzcHgpO1xuICAgICAgICAubHAtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM5NWU2Zjk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxwLXBhc3NpbmctY29uZGl0aW9uYWwge1xuICAgICAgICBsZWZ0OiAwJTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBoZWlnaHQ6IDI1cHg7XG4gICAgICAgIHRvcDogLTVweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC01cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBib3JkZXI6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIH1cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogI0RERDtcbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICNEREQ7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNsZWFybi1wcmVzcy1jb250ZW50LWl0ZW0ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgZGlzcGxheTogbm9uZTtcblxufVxuXG4vKiogQ09VUlNFIFRBQlMgKiovXG4ubGVhcm4tcHJlc3MtdGFicyB7XG4gICAgLmxlYXJuLXByZXNzLW5hdi10YWJzIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgLmxlYXJuLXByZXNzLW5hdi10YWIge1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM2ODY4Njg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICMwMDdhY2M7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA3YWNjO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuYWN0aXZlOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNGRkY7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAtMXB4O1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6aG92ZXIge1xuXG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmxlYXJuLXByZXNzLXRhYi1wYW5lbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3MtYmxvY2stY29udGVudC1taXhpbihAdykge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgd2lkdGg6IChAdyk7XG4gICAgICAgIGhlaWdodDogKEB3KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0oQHcvMik7XG4gICAgICAgIG1hcmdpbi10b3A6IC0oQHcvMik7IC8qLTc2cHg7Ki9cbiAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oMHB4IEB3LCBAdyBAdywgQHcgQHcvMiwgQHcvMiBAdy8yLCBAdy8yIDAsIDAgMCk7XG4gICAgfVxuXG4gICAgc3BhbiB7XG4gICAgICAgIGNsaXA6IHJlY3QoMCwgQHcrNCwgQHcvMisyLCBAdy8yKzIpO1xuICAgICAgICB3aWR0aDogQHcrNDtcbiAgICAgICAgaGVpZ2h0OiBAdys0O1xuICAgICAgICBtYXJnaW4tbGVmdDogLShAdy8yKzIpO1xuICAgICAgICBtYXJnaW4tdG9wOiAtKEB3LzIrMik7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIHdpZHRoOiBAdys0O1xuICAgICAgICAgICAgaGVpZ2h0OiBAdys0O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3MtY291cnNlLWJ1dHRvbnMge1xuXG4gICAgYS5idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICBmb250LWZhbWlseTogTW9udHNlcnJhdCwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBzYW5zLXNlcmlmO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNDY4NzVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBhZGRpbmc6IDAuODQzNzVlbSAwLjg3NWVtIDAuNzgxMjVlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDdhY2M7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFBPUFVQIFNUWUxFICovXG5cbiNwb3B1cF9vdmVybGF5IHtcbiAgICB6LWluZGV4OiAxMDAwMDAwMCAhaW1wb3J0YW50O1xufVxuXG4jcG9wdXBfY29udGFpbmVyIHtcbiAgICB6LWluZGV4OiAxMDAwMDAwMSAhaW1wb3J0YW50O1xufVxuXG5ib2R5LmNvdXJzZS1oYXMtcG9wdXAge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiNjb3Vyc2UtY3VycmljdWx1bS1wb3B1cCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgIHotaW5kZXg6IDk5OTk5OTtcbiAgICAqIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgI3BvcHVwLXNpZGViYXIge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgd2lkdGg6IDM1MHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogNjBweDtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDtcbiAgICAgICAgLmNvdXJzZS1jdXJyaWN1bHVtLXRpdGxlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmN1cnJpY3VsdW0tc2VjdGlvbnMge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZm9udC1zaXplOiBzbWFsbGVyO1xuICAgICAgICB9XG4gICAgICAgIC5sZWFybi1wcmVzcy1jb3Vyc2UtcmVzdWx0cy1wcm9ncmVzcyB7XG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDIwcHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgLml0ZW1zLXByb2dyZXNzLCAuY291cnNlLXByb2dyZXNzIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAjcG9wdXAtbWFpbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAzNTBweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgI3BvcHVwLWhlYWRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAtMzUwcHg7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGhlaWdodDogNjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjYzU0MGQ7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FiNGExMDtcbiAgICAgICAgICAgIC5wb3B1cC1tZW51IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAzNTBweDtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYWI0YTEwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnBvcHVwLWNsb3NlLFxuICAgICAgICAgICAgLnNpZGViYXItaGlkZS1idG4sXG4gICAgICAgICAgICAuc2lkZWJhci1zaG93LWJ0biB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU5cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1OXB4O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMzRweDtcbiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogNjBweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNiMzRjMTA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnNpZGViYXItaGlkZS1idG4ge1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuc2lkZWJhci1zaG93LWJ0biB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMjBweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucG9wdXAtY2xvc2Uge1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgICAgICAgJjpiZWZvcmUsXG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAzcHggc29saWQgI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDI5cHg7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDE3cHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjYjM0YzEwO1xuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAucG9wdXAtdGl0bGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgMzUwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICAjcG9wdXAtY29udGVudCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDYwcHg7XG4gICAgICAgICAgICBib3R0b206IDUwcHg7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRvcCBsaW5lYXIgMC4yNXMsIGJvdHRvbSBsaW5lYXIgMC4yNXM7XG5cbiAgICAgICAgICAgICNwb3B1cC1jb250ZW50LWlubmVyIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDIwcHggNDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAjcG9wdXAtZm9vdGVyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY1RjU7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgICAgIC5mb290ZXItY29udHJvbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICAgICAgICAgICYucHJldi1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICYubmV4dC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAjcG9wdXAtaGVhZGVyLCAjcG9wdXAtZm9vdGVyIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgbGluZWFyIDAuMjVzO1xuICAgICAgICB9XG4gICAgICAgICYuZXhwYW5kIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDIwJTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICNwb3B1cC1oZWFkZXIsXG4gICAgICAgICAgICAjcG9wdXAtZm9vdGVyIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgI3BvcHVwLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWZyYW1lIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLWNvbnRlbnQtaXRlbS10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI0RERDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgICAmLmNvbnRlbnQtaXRlbS1xdWl6LXRpdGxlIHtcbiAgICAgICAgaDQge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgICAgIC5xdWl6LWNvdW50ZG93biB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICAgICY6YWZ0ZXIsICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzcHg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGJvdHRvbTogLTNweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBhZGZmO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLndhcm5pbmctdGltZS1vdmVyIHtcbiAgICAgICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGMDAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuY291bnRkb3duIHtcblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5jbGVhcmZpeCgpO1xuICAgIH1cbiAgICAubHAtZXhwYW5kIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICB3aWR0aDogNDNweDtcbiAgICAgICAgaGVpZ2h0OiA0M3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogNDNweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3MtY29udGVudC1pdGVtLXN1bW1hcnkge1xuICAgIC8qcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDsqL1xuICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgLnF1aXotcXVlc3Rpb24tdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbiAgICAubGVhcm4tcHJlc3MtcXVlc3Rpb24tZXhwbGFuYXRpb24sIC5sZWFybi1wcmVzcy1xdWVzdGlvbi1oaW50IHtcbiAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIC5oaW50LXRpdGxlLCAuZXhwbGFuYXRpb24tdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYnV0dG9uLWZpbmlzaC1xdWl6IHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5cbi5sZWFybnByZXNzIGZvcm0ucHVyY2hhc2UtY291cnNlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4jbGVhcm4tcHJlc3MtYmxvY2stY29udGVudCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogZmFkZSgjRkZGLCAyNSUpO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiA5OTk5OTk5OTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICAmOmJlZm9yZSwgJjphZnRlciwgc3BhbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgLmJvcmRlci1yYWRpdXMoNTAlKTtcbiAgICAgICAgbGVmdDogNTAlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzAwMDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIC5hbmltYXRpb24oc3Bpbi0xMyAxLjVzIGluZmluaXRlKTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBib3JkZXI6IDEwcHggc29saWQgIzAwMDAwMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC04MHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAtODBweDtcbiAgICAgICAgd2lkdGg6IDE2MHB4O1xuICAgICAgICBoZWlnaHQ6IDE2MHB4O1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICBzcGFuIHtcbiAgICAgICAgei1pbmRleDogMjA7XG4gICAgICAgIC5hbmltYXRpb24oc3Bpbi0xMiAxLjVzIGluZmluaXRlKTtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBib3JkZXI6IDZweCBzb2xpZCAjOTVlNmY5O1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoNTAlKTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGVhcm4tcHJlc3MtYmxvY2stY29udGVudC1taXhpbig4MHB4KTtcbn1cblxuYm9keS5ibG9jay1jb250ZW50IHtcbiAgICAjbGVhcm4tcHJlc3MtYmxvY2stY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLyogQ09VUlNFIFFVSVogKi9cbi5xdWl6LWJ1dHRvbnMge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgY2xlYXI6IGJvdGg7XG59XG5cbi5xdWl6LWludHJvIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbGkgbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxufVxuXG4ucXVpei1xdWVzdGlvbnMtbGlzdCB7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlO1xuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgMTBweCAwO1xuICAgIH1cbiAgICAucXVlc3Rpb24tdGl0bGUge1xuICAgICAgICBtYXJnaW46IDAgMCA1cHggMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgfVxuICAgIC5jdXJyZW50IHtcbiAgICAgICAgLnF1ZXN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSwgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMDBiOWViO1xuICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzAwYjllYjtcbiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpO1xuICAgICAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgxNGRlZyk7XG4gICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpO1xuICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGUoMTRkZWcpO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzNkZWcpO1xuICAgICAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcblxuICAgICAgICAgICAgdG9wOiAtNXB4O1xuICAgICAgICAgICAgbGVmdDogNXB4O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjREREO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwYjllYjtcbiAgICAgICAgICAgICAgICB3aWR0aDogOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmRpc2FibGVkIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEREQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5xdWVzdGlvbi1yZXN1bHRzIHtcbiAgICAucXVlc3Rpb24tdGl0bGUge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBkYXNoaWNvbnM7XG4gICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAmLmNvcnJlY3Qge1xuICAgICAgICAucXVlc3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcZjE0Nyc7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMwMGFkZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5za2lwcGVkIHtcbiAgICAgICAgLnF1ZXN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGY1MzQnO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjYzZjNmM2O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgICYuaW5jb3JyZWN0IHtcbiAgICAgICAgLnF1ZXN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYzMzUnO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmY1NDI1O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC51c2VyLWFuc3dlci1mYWxzZSB7XG4gICAgICAgICAgICAub3B0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuYW5zd2VyLXRydWUge1xuICAgICAgICBjb2xvcjogIzAwN2FjYztcbiAgICAgICAgLm9wdGlvbi10aXRsZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOWQ4O1xuICAgICAgICAgICAgcGFkZGluZzogMCA1cHg7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogLTVweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnB1dCB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxufVxuXG4ucXVpei1kZXNjcmlwdGlvbixcbi5xdWVzdGlvbi1jb250ZW50IHtcbiAgICAubGVhcm4tcHJlc3MtcXVlc3Rpb24tdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbn1cblxuLnF1aXotY291bnRkb3duIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi13aWR0aDogMTUwcHg7XG4gICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIHBhZGRpbmc6IDVweCAwO1xufVxuXG4jcXVpei1jb3VudGRvd24ge1xuICAgIC5wcm9ncmVzcy1jaXJjbGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgM3B4ICNiZGJkYmQgaW5zZXQ7XG4gICAgICAgIC5pbnNpZGUge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICAuY291bnRkb3duIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDQ4cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICMwODc5OTg7XG4gICAgICAgICAgICAgICAgX3RleHQtc2hhZG93OiAxcHggMXB4ICM4ZWU1ZmQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTEwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNEREQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBiOWViO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDZweCAjMDk3YTk4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jcXVpei1wcm9ncmVzcyB7XG4gICAgLnByb2dyZXNzLWNpcmNsZShAc2l6ZTogMjAwcHgsIEBiYWNrZ3JvdW5kOiAjRERELCBAZmlsbDogI0ZGMDAwMCwgQGluaXRpYWxpemU6IDAlLCBAaW5zaWRlLXNpemU6IDE3MHB4LCBAaW5zaWRlLWJhY2tncm91bmQ6ICNGRkYpO1xufVxuXG4ucXVpei1yZXN1bHQge1xuICAgIC5xdWl6LXJlc3VsdC1tYXJrIHtcbiAgICAgICAgLnByb2dyZXNzLWNpcmNsZSgpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cbiAgICAucXVpei1yZXN1bHQtc3VtbWFyeSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgICAgIC5xdWl6LXJlc3VsdC1maWVsZCB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCA4cHggMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoNHB4KTtcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgICAgIHNwYW4sIHNwYW46YWZ0ZXIsICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10ZXh0KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI0ZGRjtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC41cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW46YWZ0ZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogM3B4IDEwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY29ycmVjdCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzIyYjRmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYud3Jvbmcge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZjU0MjU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmLmVtcHR5IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzY1NkQ2RDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwLnF1aXotcmVzdWx0LXRpbWUge1xuICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgfVxuICAgIC5xdWl6LWdyYWRlIHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAmLnBhc3NlZCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMjJiNGZmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmLmZhaWxlZCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmY1NDI1O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmVsZW1lbnQtZGF0YS1wZXJjZW50LWxvb3AgKEBpKSB3aGVuIChAaSA8PSAxMDApIHtcbiAgICAuc2luZ2xlLXF1aXogLnF1aXotcmVzdWx0LWZpZWxkW2RhdGEtdmFsdWU9XCJAe2l9XCJdOmJlZm9yZSxcbiAgICAuc2luZ2xlLXF1aXogLnF1aXotcmVzdWx0LWZpZWxkW2RhdGEtdmFsdWU9XCJAe2l9XCJdIHNwYW4sXG4gICAgI3F1aXotY291bnRkb3duW2RhdGEtdmFsdWU9XCJAe2l9XCJdOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IH5cIkB7aX0lXCI7XG4gICAgfVxuICAgIC5lbGVtZW50LWRhdGEtcGVyY2VudC1sb29wKEBpICsgMSk7XG59XG5cbi5lbGVtZW50LWRhdGEtcGVyY2VudC1sb29wICgwKTtcblxuLyogUVVFU1RJT04gKi9cbi5sZWFybi1wcmVzcy1xdWVzdGlvbi1vcHRpb25zIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMCAwIDIwcHggMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgID4gbGkuYW5zd2VyLW9wdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAuYm9yZGVyLXJhZGl1cyg0cHgpO1xuICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLCBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGluaXRpYWw7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogMTBweDtcbiAgICAgICAgICAgICAgICBsZWZ0OiAxNXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICAmOmNoZWNrZWQ6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogNHB4IHNvbGlkICMwMGI5ZWI7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTVweDtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAzcHg7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDhweDtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0ocm90YXRlKDM2ZGVnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6Y2hlY2tlZCArIHAge1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwYjllYjtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdW2Rpc2FibGVkXSwgaW5wdXRbdHlwZT1cInJhZGlvXCJdW2Rpc2FibGVkXSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgICAgICAgICAgLmJvcmRlci1yYWRpdXMoNTAlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogNXB4IDIwcHggNXB4IDYwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgICAgICAgICAmLnNpbmdsZS1saW5lcyB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAwIDYwcHg7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4OyAvKiBtaWRkbGUgKi9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwgcCB7XG4gICAgICAgICAgICAuYm9yZGVyLXJhZGl1cyg0cHgpO1xuICAgICAgICB9XG4gICAgICAgICYuYW5zd2VyLXRydWUgbGFiZWwgcCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDBiOWViO1xuICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciBsYWJlbCBwIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNENEQ0RDQ7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgICAgJi51c2VyLWFuc3dlci1mYWxzZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgICAgICAgICAgPiBsYWJlbCB7XG4gICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdICsgcCwgaW5wdXRbdHlwZT1cInJhZGlvXCJdICsgcCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogI0ZGMDAwMDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmFuc3dlci1vcHRpb24tcmVzdWx0IHtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dFtkaXNhYmxlZF0ge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5sZWFybnByZXNzLWNvbnRlbnQge1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5jb3Vyc2UtbWV0YSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAuY291cnNlLW9yaWdpbi1wcmljZSB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgfVxuICAgIC5jb3Vyc2UtcHJpY2Uge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICB9XG5cbn1cblxuLyoqIE1FU1NBR0UgKi9cbi5sZWFybi1wcmVzcy1tZXNzYWdlIHtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzAwQTBEMjtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHggMHB4IDIwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJ1dHRvbiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICAmLm5vdGljZSB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAjYjNkMjBhO1xuICAgIH1cbiAgICAmLmVycm9yIHtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNiODFjMjM7XG4gICAgfVxuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgIH1cbn1cblxuLyoqL1xuLmxlYXJuLXByZXNzLWNoZWNrb3V0LWNvbW1lbnQsXG4ubGVhcm4tcHJlc3MtY2hlY2tvdXQtcGF5bWVudCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLmxlYXJuLXByZXNzLWNoZWNrb3V0LXBheW1lbnQge1xuICAgIC5wYXltZW50LW1ldGhvZHMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG4vKiBDT1VSU0UgUVVJWiAqL1xuLnNpbmdsZS1xdWl6IHtcbiAgICAucXVpei1xdWVzdGlvbnMtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuICAgIC5xdWl6LWludHJvIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG4gICAgfVxuICAgIGg0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLXRvb2x0aXAge1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBiYWNrZ3JvdW5kOiAjMGY0OTU2O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCI/XCI7XG4gICAgICAgIGZvbnQtc2l6ZTogN3B4O1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAycHg7XG4gICAgICAgIGxlZnQ6IDNweDtcbiAgICB9XG59XG5cbi8qIEZvcm0gZmllbGQgKi9cbi5scC1mb3JtLWZpZWxkLXdyYXAge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgIC5scC1mb3JtLWZpZWxkIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICAgICAgICAubHAtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICB9XG4gICAgICAgIC5scC1mb3JtLWZpZWxkLWlucHV0IC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7XG4gICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWZpZWxkLWVycm9yLW1lc3NhZ2Uge1xuICAgICAgICAgICAgY29sb3I6ICNGRjAwMDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5sZWFybi1wcmVzcy11c2VyLXByb2ZpbGUge1xuICAgICNsZWFybi1wcmVzcy11c2VyLWluZm97XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIC51c2VyLWF2YXRhciB7XG4gICAgICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIC5hdmF0YXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLnVzZXItYmFzaWMtaW5mb3tcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNzBweDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAubHAtZWRpdC1wcm9maWxlIHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAuY2xlYXJmaXgoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAudXNlci1iYXNpYy1pbmZvIHtcbiAgICAgICAgcCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICB9XG4gICAgLmxlYXJuLXByZXNzLXRhYnMge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBtYXJnaW46IDMwcHggMCAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgJiA+IGxpIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgICAgICYgPiBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNXB4O1xuICAgICAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzY4Njg2ODtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICMwMDdhY2M7XG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjMDA3YWNjO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtNHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAubGVhcm4tcHJlc3Mtc3VidGFicyB7XG4gICAgICAgICYgPiBsaSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5sZWFybi1wcmVzcy1zdWJ0YWItY29udGVudCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICYuY3VycmVudCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5wcm9maWxlLWNvdXJzZXMge1xuICAgICAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgICAgICAgLmxlYXJuLXByZXNzLWNvdXJzZS1yZXN1bHRzLXByb2dyZXNzIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDE1cHggMTVweCAxNXB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBidXR0b24ubGVhcm4tcHJlc3MtY291cnNlLXdpc2hsaXN0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgLnVzZXItcHJvZmlsZS1lZGl0LWZvcm0ge1xuXG4gICAgICAgIC5pbmZvLWZpZWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnVzZXItcHJvZmlsZS1waWN0dXJlIHtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICAgICAgLnBpY3R1cmUsIC5jaGFuZ2UtcGljdHVyZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNoYW5nZS1waWN0dXJlIHtcbiAgICAgICAgICAgICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMCAxMHB4IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW1nIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAuY2xlYXJmaXgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5wcm9maWxlLWZpZWxkLW5hbWUge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNoYW5nZS1wYXNzd29yZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgI3VzZXJfcHJvZmlsZV9wYXNzd29yZF9mb3JtIHtcbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTVweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuICAgIC51cGRhdGUtcHJvZmlsZSB7XG4gICAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAjREREO1xuICAgICAgICBwYWRkaW5nLXRvcDogMjBweDtcbiAgICB9XG4gICAgLmxlYXJuLXByZXNzLXN1YnRhYi1jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgICNscC11c2VyLWVkaXQtYXZhdGFyIHtcbiAgICAgICAgLm1veGllLXNoaW0ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAubHAtZm9ybS1maWVsZC1hdmF0YXIge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIH1cbiAgICAgICAgI2xwLWF2YXRhci1hY3Rpb25zIHtcbiAgICAgICAgICAgIG1hcmdpbjogMjBweCAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5scC1hdmF0YXItcHJldmlldyB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNEREQ7XG4gICAgICAgIC5wcm9maWxlLXBpY3R1cmUge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xMDAlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5wcm9maWxlLWF2YXRhci1oaWRkZW4ge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWF2YXRhci1wcmV2aWV3LWFjdGlvbnMge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xNHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5scC1hdmF0YXItdXBsb2FkLXByb2dyZXNzIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC01cHg7XG4gICAgICAgICAgICBsZWZ0OiAxMHB4O1xuICAgICAgICAgICAgcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgLmxwLWF2YXRhci11cGxvYWQtcHJvZ3Jlc3MtdmFsdWUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTBweDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNTYzZDdjO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5scC1hdmF0YXItdXBsb2FkLWVycm9yIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmxwLWF2YXRhci1wcmV2aWV3LWFjdGlvbnMge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC5scC1hdmF0YXItcHJldmlldy1hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLnVwbG9hZGluZywgJi51cGxvYWQtZXJyb3Ige1xuICAgICAgICAgICAgLmxwLWF2YXRhci1wcmV2aWV3LWFjdGlvbnMge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubHAtYXZhdGFyLXVwbG9hZC1wcm9ncmVzcyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmLnVwbG9hZC1lcnJvciB7XG4gICAgICAgICAgICAubHAtYXZhdGFyLXVwbG9hZC1lcnJvciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJi5jcm9waW5nIHtcbiAgICAgICAgICAgIC5scC1hdmF0YXItcHJldmlldy1hY3Rpb25zIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmxwLWF2YXRhci1jcm9wLWltYWdlIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvcjogbW92ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmxwLWNyb3AtY29udHJvbHMge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgICAgICAgLmxwLXpvb20ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAzMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzU2M2Q3YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC51aS1zbGlkZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudWktc2xpZGVyLWhhbmRsZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNTYzZDdhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmxwLWNhbmNlbC11cGxvYWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodDogNXB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIC5jbGVhcmZpeCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ib2R5IHtcbiAgICAmLnByb2ZpbGUtZHJhZ2dpbmcge1xuICAgICAgICBjdXJzb3I6IG1vdmUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgJi5wcm9maWxlLXJlc2l6aW5nIHtcbiAgICAgICAgY3Vyc29yOiBldy1yZXNpemUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5sZWFybi1wcmVzcy1wYWdpbmF0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdWwge1xuICAgICAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgICAgICAmID4gbGkge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEREQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxlYXJuLXByZXNzLWJlY29tZS10ZWFjaGVyLWZvcm0ge1xuICAgIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogakFsZXJ0cyAqL1xuI3BvcHVwX2NvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogI0ZGRjtcblxuICAgICNwb3B1cF90aXRsZSB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogIzE4QjZDNztcbiAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgICNwb3B1cF9jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzogMjBweDtcbiAgICAgICAgI3BvcHVwX21lc3NhZ2Uge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICNwb3B1cF9wYW5lbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG59XG5cbi5sZWFybi1wcmVzcy1hdXRvLXJlZGlyZWN0LW5leHQtaXRlbSB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc2luZ2xlLWxwX2NvdXJzZSB7XG4gICAgLmNvdXJzZS1zdW1tYXJ5IHtcbiAgICAgICAgLmxwX2NvdXJzZSB7XG4gICAgICAgICAgICAuZW50cnktZm9vdGVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5sZWFybi1wcmVzcy1tZXNzYWdlIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgbWFyZ2luLXRvcDogMjVweDtcblxuICAgICAgICAubGVhcm4tcHJlc3MtY291bnRkb3duIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHdpZHRoOiAxLjVlbTtcbiAgICAgICAgICAgIGhlaWdodDogMS41ZW07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjY2M1NDBkO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICB9XG4gICAgICAgIC5sZWFybnByZXNzLWRpc21pc3Mtbm90aWNlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHJpZ2h0OiAxZW07XG4gICAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICAgICAgICAgICAgY29sb3I6IHJlZDtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcIlxcZjE1M1wiO1xuICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBkYXNoaWNvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG4vKiB0b29sdGlwICovXG4ubGVhcm4tcHJlc3MtdG9vbHRpcC1idWJibGUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI2LCAyNiwgMjYsIDAuOSk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgcGFkZGluZzogOHB4IDEwcHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHotaW5kZXg6IDk5OTk5OTk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuXG4vKiBmaWxsIGluIGJsYW5rICovXG5pbnB1dC5ibGFuay1maWxsLWNvcnJlY3Qge1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG5ib2R5LmNvbnRlbnQtaXRlbS1vbmx5IHtcbiAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLmxlYXJuLXByZXNzLWNvbnRlbnQtaXRlbS1vbmx5IHtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICB6LWluZGV4OiA5OTk5OTk5O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgI2xlYXJuLXByZXNzLWNvbnRlbnQtaXRlbSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHRyYW5zaXRpb246IG1heC13aWR0aCBsaW5lYXIgMC4yNXM7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgICAgICAgd2lkdGg6IDkwJTtcbiAgICAgICAgJi5leHBhbmQge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5scC1ncm91cC1oZWFkaW5nLXRpdGxlIHtcbiAgICAmLnRvZ2dsZS1vZmYsICYudG9nZ2xlLW9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAudG9nZ2xlLWljb24ge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiBsYXJnZXI7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi50b2dnbGUtb24ge1xuICAgICAgICAudG9nZ2xlLWljb24ge1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLypcbi5wYXltZW50LW1ldGhvZC1mb3JtIHtcbiAgICAmLnBheW1lbnRfbWV0aG9kX2F1dGhvcml6ZW5ldCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogMjVweDtcbiAgICAgICAgLnJvdy1mbHVpZCB7XG4gICAgICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAyNXB4O1xuICAgICAgICAgICAgLnNwYW42IHtcbiAgICAgICAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxN3B4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCwgaW5wdXQge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VsZWN0LCBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxlY3QucmVxdWlyZWQge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59Ki9cblxuLnBsYWNlLW9yZGVyLWFjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLndvb2NvbW1lcmNlIHtcbiAgICBmb3JtIC5mb3JtLXJvdyB7XG4gICAgICAgICYudmFsaWRhdGUtZW1haWwsICYudmFsaWRhdGUtcGhvbmUge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jaGVja291dF9jb3Vwb24ge1xuICAgICAgICAuZm9ybS1yb3ctbGFzdCB7XG4gICAgICAgICAgICBpbnB1dC5idXR0b24ge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEzcHggMTBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubGVhcm4tcHJlc3Mtc2VhcmNoLWNvdXJzZS1mb3JtIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIGlucHV0LnNlYXJjaC1jb3Vyc2UtaW5wdXRbbmFtZT1cInNcIl0ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0yMDBweDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5zZWFyY2gtY291cnNlLWJ1dHRvbiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG59XG5cbi50YWJsZS1vcmRlcnMge1xuICAgIC5vcmRlci1zdGF0dXMge1xuICAgICAgICAmLm9yZGVyLXN0YXR1cy1yZW1vdmVkIHtcbiAgICAgICAgICAgIGNvbG9yOiAjRkYwMDAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiBTaG9ydGNvZGUvV2lkZ2V0cyAqL1xuLndpZGdldF9scC13aWRnZXQtcG9wdWxhci1jb3Vyc2VzLCAud2lkZ2V0X2xwLXdpZGdldC1yZWNlbnQtY291cnNlcywgLndpZGdldF9scC13aWRnZXQtZmVhdHVyZWQtY291cnNlcyB7XG4gICAgLmNvdXJzZS1tZXRhLWRhdGEge1xuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnLyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQ6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gICAgLmNvdXJzZS10aXRsZSB7XG4gICAgICAgIG1hcmdpbjogNXB4IDA7XG4gICAgfVxuICAgIC5jb3Vyc2UtZW50cnkge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICNEREQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgIH1cbn1cblxuLmVkaXQtY291cnNlLWl0ZW0tbGluayB7XG4gICAgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI1cHg7XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCJcXGY0NjRcIjtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBEYXNoaWNvbnM7XG4gICAgICAgICAgICBmb250LXNpemU6IDI2cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb3Vyc2UtaXRlbS1uYXZpZ2F0aW9uIHtcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzMzMztcbiAgICBwYWRkaW5nLXRvcDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIC5uYXYtbGlua3Mge1xuICAgICAgICAubmF2LWxpbmsge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgLm1ldGEtbmF2IHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjYjliOWI5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucG9zdC10aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5uYXYtcHJldmlvdXMge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5uYXYtbmV4dCB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiB3aWRnZXQgYXR0cmlidXRlcyAqL1xuLmxwLWNvdXJzZS1hdHRyaWJ1dGVzIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIGxpIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB9XG4gICAgLmxwLWNvdXJzZS1hdHRyaWJ1dGUtdmFsdWVzIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuICAgICYuY291cnNlLWF0dHJpYnV0ZXMge1xuICAgICAgICAubHAtY291cnNlLWF0dHJpYnV0ZS12YWx1ZXMge1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAzcHggOHB4O1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGMEYwRjA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCA1cHggNXB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgJi5jb3Vyc2UtZmlsdGVycyB7XG4gICAgICAgIC5scC1jb3Vyc2UtYXR0cmlidXRlLXZhbHVlcyB7XG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgYTpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogZGFzaGljb25zO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNEREQ7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNGRkY7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAmOmhvdmVyIGE6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzRhY2ZmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaS5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGE6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcXGYxNDdcIjtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzRhY2ZmZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjpob3ZlciBhOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXFxmMzM1XCI7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNhMjAwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5ALW1vei1rZXlmcmFtZXMgc3Bpbi0xMiB7XG4gICAgMCUge1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHNwaW4tMTIge1xuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc3Bpbi0xMiB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG59XG5cbkAtbW96LWtleWZyYW1lcyBzcGluLTEzIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICB9XG4gICAgMCUge1xuICAgICAgICAtbW96LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgdHJhbnNsYXRlKDBweCk7XG4gICAgfVxufVxuXG5ALXdlYmtpdC1rZXlmcmFtZXMgc3Bpbi0xMyB7XG4gICAgMCUge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBzcGluLTEzIHtcbiAgICAxMDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGUoMHB4KTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZykgdHJhbnNsYXRlKDBweCk7XG4gICAgfVxuICAgIDAlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHRyYW5zbGF0ZSgwcHgpO1xuICAgIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI1MHB4KSB7XG4gICAgLnNpbmdsZS1scF9jb3Vyc2UgLmxlYXJuLXByZXNzLWNvdXJzZS1yZXN1bHRzLXByb2dyZXNzIHtcbiAgICAgICAgLml0ZW1zLXByb2dyZXNzLCAuY291cnNlLXByb2dyZXNzIHtcbiAgICAgICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLml0ZW1zLXByb2dyZXNzIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgI2xlYXJuLXByZXNzLWJsb2NrLWNvbnRlbnQge1xuICAgICAgICAubGVhcm4tcHJlc3MtYmxvY2stY29udGVudC1taXhpbig2MHB4KTtcbiAgICB9XG5cbiAgICAubGVhcm4tcHJlc3MtY291cnNlLXJlc3VsdHMtcHJvZ3Jlc3Mge1xuICAgICAgICAuaXRlbXMtcHJvZ3Jlc3MsIC5jb3Vyc2UtcHJvZ3Jlc3Mge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gICAgLmxlYXJuLXByZXNzLWNvdXJzZXMge1xuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgJjpudGgtY2hpbGQoNG4rMSkge1xuICAgICAgICAgICAgICAgIGNsZWFyOiBsZWZ0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcbiAgICAubGVhcm4tcHJlc3MtY291cnNlcyB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkgYW5kIChtaW4td2lkdGg6IDYwMHB4ICkge1xuXG4gICAgLmxlYXJuLXByZXNzLWNvdXJzZXMge1xuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgd2lkdGg6IDMxLjMzJTtcbiAgICAgICAgICAgIG1hcmdpbjogMCAyJSAzMHB4IDA7XG4gICAgICAgICAgICAvKiBwYWRkaW5nOiAwIDIwcHg7ICovXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgzbisxKSB7XG4gICAgICAgICAgICAgICAgY2xlYXI6IGxlZnQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSBhbmQgKG1pbi13aWR0aDogNDAwcHggKSB7XG5cbiAgICAubGVhcm4tcHJlc3MtY291cnNlcyB7XG4gICAgICAgIGxpLmNvdXJzZSB7XG4gICAgICAgICAgICB3aWR0aDogNDglO1xuICAgICAgICAgICAgbWFyZ2luOiAwIDIlIDMwcHggMDtcbiAgICAgICAgICAgIC8qIHBhZGRpbmc6IDAgMjBweDsgKi9cbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICAgICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vKlxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLndvb2NvbW1lcmNlIHtcbiAgICAgICAgLmNoZWNrb3V0X2NvdXBvbiB7XG4gICAgICAgICAgICAuZm9ybS1yb3cge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA0MDBweCkge1xuXG4gICAgLmxlYXJuLXByZXNzLWNvdXJzZXMge1xuICAgICAgICBsaS5jb3Vyc2Uge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW46IDAgMCAzMHB4IDA7XG4gICAgICAgICAgICBjbGVhcjogbGVmdDtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMzUwcHgpIHtcbiAgICAjY291cnNlLWN1cnJpY3VsdW0tcG9wdXAgI3BvcHVwLXNpZGViYXIge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi8qIGZ1bGwgd2lkdGggd2l0aCB0d2VudHlzaXh0ZWVuIHRoZW1lICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MS41NjI1ZW0pIHtcbiAgICBib2R5LnNpbmdsZS1scF9jb3Vyc2Uge1xuICAgICAgICBhcnRpY2xlLmxwX2NvdXJzZSB7XG4gICAgICAgICAgICAuZW50cnktY29udGVudCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZW50cnktZm9vdGVyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKlxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjE1cHgpIHtcbiAgICAucGF5bWVudC1tZXRob2QtZm9ybSB7XG4gICAgICAgICYucGF5bWVudF9tZXRob2RfYXV0aG9yaXplbmV0IHtcbiAgICAgICAgICAgIC5yb3ctZmx1aWQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgICAgIC5zcGFuNiB7XG4gICAgICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxN3B4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdCwgaW5wdXQge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0LCBpbnB1dCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3QucmVxdWlyZWQge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICMwMDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgI2xlYXJuLXByZXNzLWF1dGhvcml6ZW5ldC1wYXltZW50LWV4cG1vbnRoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4qLyJdLCJmaWxlIjoibGVhcm5wcmVzcy5jc3MifQ== */
|
assets/css/owl.carousel.css
DELETED
@@ -1,71 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
* Core Owl Carousel CSS File
|
3 |
-
* v1.3.3
|
4 |
-
*/
|
5 |
-
|
6 |
-
/* clearfix */
|
7 |
-
.owl-carousel .owl-wrapper:after {
|
8 |
-
content: ".";
|
9 |
-
display: block;
|
10 |
-
clear: both;
|
11 |
-
visibility: hidden;
|
12 |
-
line-height: 0;
|
13 |
-
height: 0;
|
14 |
-
}
|
15 |
-
/* display none until init */
|
16 |
-
.owl-carousel{
|
17 |
-
display: none;
|
18 |
-
position: relative;
|
19 |
-
width: 100%;
|
20 |
-
-ms-touch-action: pan-y;
|
21 |
-
}
|
22 |
-
.owl-carousel .owl-wrapper{
|
23 |
-
display: none;
|
24 |
-
position: relative;
|
25 |
-
-webkit-transform: translate3d(0px, 0px, 0px);
|
26 |
-
}
|
27 |
-
.owl-carousel .owl-wrapper-outer{
|
28 |
-
overflow: hidden;
|
29 |
-
position: relative;
|
30 |
-
width: 100%;
|
31 |
-
}
|
32 |
-
.owl-carousel .owl-wrapper-outer.autoHeight{
|
33 |
-
-webkit-transition: height 500ms ease-in-out;
|
34 |
-
-moz-transition: height 500ms ease-in-out;
|
35 |
-
-ms-transition: height 500ms ease-in-out;
|
36 |
-
-o-transition: height 500ms ease-in-out;
|
37 |
-
transition: height 500ms ease-in-out;
|
38 |
-
}
|
39 |
-
|
40 |
-
.owl-carousel .owl-item{
|
41 |
-
float: left;
|
42 |
-
}
|
43 |
-
.owl-controls .owl-page,
|
44 |
-
.owl-controls .owl-buttons div{
|
45 |
-
cursor: pointer;
|
46 |
-
}
|
47 |
-
.owl-controls {
|
48 |
-
-webkit-user-select: none;
|
49 |
-
-khtml-user-select: none;
|
50 |
-
-moz-user-select: none;
|
51 |
-
-ms-user-select: none;
|
52 |
-
user-select: none;
|
53 |
-
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
54 |
-
}
|
55 |
-
|
56 |
-
/* mouse grab icon */
|
57 |
-
.grabbing {
|
58 |
-
cursor:url(grabbing.png) 8 8, move;
|
59 |
-
}
|
60 |
-
|
61 |
-
/* fix */
|
62 |
-
.owl-carousel .owl-wrapper,
|
63 |
-
.owl-carousel .owl-item{
|
64 |
-
-webkit-backface-visibility: hidden;
|
65 |
-
-moz-backface-visibility: hidden;
|
66 |
-
-ms-backface-visibility: hidden;
|
67 |
-
-webkit-transform: translate3d(0,0,0);
|
68 |
-
-moz-transform: translate3d(0,0,0);
|
69 |
-
-ms-transform: translate3d(0,0,0);
|
70 |
-
}
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/Chart.bundle.min.js
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Chart.js
|
3 |
+
* http://chartjs.org/
|
4 |
+
* Version: 2.5.0
|
5 |
+
*
|
6 |
+
* Copyright 2017 Nick Downie
|
7 |
+
* Released under the MIT license
|
8 |
+
* https://github.com/chartjs/Chart.js/blob/master/LICENSE.md
|
9 |
+
*/
|
10 |
+
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Chart=t()}}(function(){var t;return function t(e,n,i){function a(o,s){if(!n[o]){if(!e[o]){var l="function"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[o]={exports:{}};e[o][0].call(d.exports,function(t){var n=e[o][1][t];return a(n?n:t)},d,d.exports,t,e,n,i)}return n[o].exports}for(var r="function"==typeof require&&require,o=0;o<i.length;o++)a(i[o]);return a}({1:[function(t,e,n){function i(t){if(t){var e=/^#([a-fA-F0-9]{3})$/,n=/^#([a-fA-F0-9]{6})$/,i=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,a=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/,r=/(\w+)/,o=[0,0,0],s=1,l=t.match(e);if(l){l=l[1];for(var u=0;u<o.length;u++)o[u]=parseInt(l[u]+l[u],16)}else if(l=t.match(n)){l=l[1];for(var u=0;u<o.length;u++)o[u]=parseInt(l.slice(2*u,2*u+2),16)}else if(l=t.match(i)){for(var u=0;u<o.length;u++)o[u]=parseInt(l[u+1]);s=parseFloat(l[4])}else if(l=t.match(a)){for(var u=0;u<o.length;u++)o[u]=Math.round(2.55*parseFloat(l[u+1]));s=parseFloat(l[4])}else if(l=t.match(r)){if("transparent"==l[1])return[0,0,0,0];if(o=x[l[1]],!o)return}for(var u=0;u<o.length;u++)o[u]=b(o[u],0,255);return s=s||0==s?b(s,0,1):1,o[3]=s,o}}function a(t){if(t){var e=/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,n=t.match(e);if(n){var i=parseFloat(n[4]),a=b(parseInt(n[1]),0,360),r=b(parseFloat(n[2]),0,100),o=b(parseFloat(n[3]),0,100),s=b(isNaN(i)?1:i,0,1);return[a,r,o,s]}}}function r(t){if(t){var e=/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/,n=t.match(e);if(n){var i=parseFloat(n[4]),a=b(parseInt(n[1]),0,360),r=b(parseFloat(n[2]),0,100),o=b(parseFloat(n[3]),0,100),s=b(isNaN(i)?1:i,0,1);return[a,r,o,s]}}}function o(t){var e=i(t);return e&&e.slice(0,3)}function s(t){var e=a(t);return e&&e.slice(0,3)}function l(t){var e=i(t);return e?e[3]:(e=a(t))?e[3]:(e=r(t))?e[3]:void 0}function u(t){return"#"+y(t[0])+y(t[1])+y(t[2])}function d(t,e){return e<1||t[3]&&t[3]<1?c(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function c(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function h(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"}function f(t,e){var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgba("+n+"%, "+i+"%, "+a+"%, "+(e||t[3]||1)+")"}function g(t,e){return e<1||t[3]&&t[3]<1?m(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"}function m(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function p(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"}function v(t){return k[t.slice(0,3)]}function b(t,e,n){return Math.min(Math.max(e,t),n)}function y(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var x=t(5);e.exports={getRgba:i,getHsla:a,getRgb:o,getHsl:s,getHwb:r,getAlpha:l,hexString:u,rgbString:d,rgbaString:c,percentString:h,percentaString:f,hslString:g,hslaString:m,hwbString:p,keyword:v};var k={};for(var _ in x)k[x[_]]=_},{5:5}],2:[function(t,e,n){var i=t(4),a=t(1),r=function(t){if(t instanceof r)return t;if(!(this instanceof r))return new r(t);this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;if("string"==typeof t)if(e=a.getRgba(t))this.setValues("rgb",e);else if(e=a.getHsla(t))this.setValues("hsl",e);else{if(!(e=a.getHwb(t)))throw new Error('Unable to parse color from string "'+t+'"');this.setValues("hwb",e)}else if("object"==typeof t)if(e=t,void 0!==e.r||void 0!==e.red)this.setValues("rgb",e);else if(void 0!==e.l||void 0!==e.lightness)this.setValues("hsl",e);else if(void 0!==e.v||void 0!==e.value)this.setValues("hsv",e);else if(void 0!==e.w||void 0!==e.whiteness)this.setValues("hwb",e);else{if(void 0===e.c&&void 0===e.cyan)throw new Error("Unable to parse color from object "+JSON.stringify(t));this.setValues("cmyk",e)}};r.prototype={rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t%=360,t=t<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return a.hexString(this.values.rgb)},rgbString:function(){return a.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return a.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return a.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return a.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return a.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return a.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return a.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],n=0;n<t.length;n++){var i=t[n]/255;e[n]=i<=.03928?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb,e=(299*t[0]+587*t[1]+114*t[2])/1e3;return e<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=this,i=t,a=void 0===e?.5:e,r=2*a-1,o=n.alpha()-i.alpha(),s=((r*o===-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return this.rgb(s*n.red()+l*i.red(),s*n.green()+l*i.green(),s*n.blue()+l*i.blue()).alpha(n.alpha()*a+i.alpha()*(1-a))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new r,i=this.values,a=n.values;for(var o in i)i.hasOwnProperty(o)&&(t=i[o],e={}.toString.call(t),"[object Array]"===e?a[o]=t.slice(0):"[object Number]"===e?a[o]=t:console.error("unexpected color value:",t));return n}},r.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},r.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},r.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i<t.length;i++)n[t.charAt(i)]=e[t][i];return 1!==e.alpha&&(n.a=e.alpha),n},r.prototype.setValues=function(t,e){var n,a=this.values,r=this.spaces,o=this.maxes,s=1;if("alpha"===t)s=e;else if(e.length)a[t]=e.slice(0,t.length),s=e[t.length];else if(void 0!==e[t.charAt(0)]){for(n=0;n<t.length;n++)a[t][n]=e[t.charAt(n)];s=e.a}else if(void 0!==e[r[t][0]]){var l=r[t];for(n=0;n<t.length;n++)a[t][n]=e[l[n]];s=e.alpha}if(a.alpha=Math.max(0,Math.min(1,void 0===s?a.alpha:s)),"alpha"===t)return!1;var u;for(n=0;n<t.length;n++)u=Math.max(0,Math.min(o[t][n],a[t][n])),a[t][n]=Math.round(u);for(var d in r)d!==t&&(a[d]=i[t][d](a[t]));return!0},r.prototype.setSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n),this)},r.prototype.setChannel=function(t,e,n){var i=this.values[t];return void 0===n?i[e]:n===i[e]?this:(i[e]=n,this.setValues(t,i),this)},"undefined"!=typeof window&&(window.Color=r),e.exports=r},{1:1,4:4}],3:[function(t,e,n){function i(t){var e,n,i,a=t[0]/255,r=t[1]/255,o=t[2]/255,s=Math.min(a,r,o),l=Math.max(a,r,o),u=l-s;return l==s?e=0:a==l?e=(r-o)/u:r==l?e=2+(o-a)/u:o==l&&(e=4+(a-r)/u),e=Math.min(60*e,360),e<0&&(e+=360),i=(s+l)/2,n=l==s?0:i<=.5?u/(l+s):u/(2-l-s),[e,100*n,100*i]}function a(t){var e,n,i,a=t[0],r=t[1],o=t[2],s=Math.min(a,r,o),l=Math.max(a,r,o),u=l-s;return n=0==l?0:u/l*1e3/10,l==s?e=0:a==l?e=(r-o)/u:r==l?e=2+(o-a)/u:o==l&&(e=4+(a-r)/u),e=Math.min(60*e,360),e<0&&(e+=360),i=l/255*1e3/10,[e,n,i]}function o(t){var e=t[0],n=t[1],a=t[2],r=i(t)[0],o=1/255*Math.min(e,Math.min(n,a)),a=1-1/255*Math.max(e,Math.max(n,a));return[r,100*o,100*a]}function s(t){var e,n,i,a,r=t[0]/255,o=t[1]/255,s=t[2]/255;return a=Math.min(1-r,1-o,1-s),e=(1-r-a)/(1-a)||0,n=(1-o-a)/(1-a)||0,i=(1-s-a)/(1-a)||0,[100*e,100*n,100*i,100*a]}function l(t){return K[JSON.stringify(t)]}function u(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92;var a=.4124*e+.3576*n+.1805*i,r=.2126*e+.7152*n+.0722*i,o=.0193*e+.1192*n+.9505*i;return[100*a,100*r,100*o]}function d(t){var e,n,i,a=u(t),r=a[0],o=a[1],s=a[2];return r/=95.047,o/=100,s/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,s=s>.008856?Math.pow(s,1/3):7.787*s+16/116,e=116*o-16,n=500*(r-o),i=200*(o-s),[e,n,i]}function c(t){return Y(d(t))}function h(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return r=255*l,[r,r,r];n=l<.5?l*(1+s):l+s-l*s,e=2*l-n,a=[0,0,0];for(var u=0;u<3;u++)i=o+1/3*-(u-1),i<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a}function f(t){var e,n,i=t[0],a=t[1]/100,r=t[2]/100;return 0===r?[0,0,0]:(r*=2,a*=r<=1?r:2-r,n=(r+a)/2,e=2*a/(r+a),[i,100*e,100*n])}function m(t){return o(h(t))}function p(t){return s(h(t))}function v(t){return l(h(t))}function y(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r)),i=255*i;switch(a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}}function x(t){var e,n,i=t[0],a=t[1]/100,r=t[2]/100;return n=(2-a)*r,e=a*r,e/=n<=1?n:2-n,e=e||0,n/=2,[i,100*e,100*n]}function k(t){return o(y(t))}function _(t){return s(y(t))}function w(t){return l(y(t))}function S(t){var e,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),e=Math.floor(6*o),n=1-l,i=6*o-e,0!=(1&e)&&(i=1-i),a=s+i*(n-s),e){default:case 6:case 0:r=n,g=a,b=s;break;case 1:r=a,g=n,b=s;break;case 2:r=s,g=n,b=a;break;case 3:r=s,g=a,b=n;break;case 4:r=a,g=s,b=n;break;case 5:r=n,g=s,b=a}return[255*r,255*g,255*b]}function M(t){return i(S(t))}function D(t){return a(S(t))}function C(t){return s(S(t))}function T(t){return l(S(t))}function P(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100,s=t[3]/100;return e=1-Math.min(1,a*(1-s)+s),n=1-Math.min(1,r*(1-s)+s),i=1-Math.min(1,o*(1-s)+s),[255*e,255*n,255*i]}function I(t){return i(P(t))}function A(t){return a(P(t))}function F(t){return o(P(t))}function O(t){return l(P(t))}function R(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return e=3.2406*a+r*-1.5372+o*-.4986,n=a*-.9689+1.8758*r+.0415*o,i=.0557*a+r*-.204+1.057*o,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,e=Math.min(Math.max(0,e),1),n=Math.min(Math.max(0,n),1),i=Math.min(Math.max(0,i),1),[255*e,255*n,255*i]}function L(t){var e,n,i,a=t[0],r=t[1],o=t[2];return a/=95.047,r/=100,o/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,e=116*r-16,n=500*(a-r),i=200*(r-o),[e,n,i]}function V(t){return Y(L(t))}function W(t){var e,n,i,a,r=t[0],o=t[1],s=t[2];return r<=8?(n=100*r/903.3,a=7.787*(n/100)+16/116):(n=100*Math.pow((r+16)/116,3),a=Math.pow(n/100,1/3)),e=e/95.047<=.008856?e=95.047*(o/500+a-16/116)/7.787:95.047*Math.pow(o/500+a,3),i=i/108.883<=.008859?i=108.883*(a-s/200-16/116)/7.787:108.883*Math.pow(a-s/200,3),[e,n,i]}function Y(t){var e,n,i,a=t[0],r=t[1],o=t[2];return e=Math.atan2(o,r),n=360*e/2/Math.PI,n<0&&(n+=360),i=Math.sqrt(r*r+o*o),[a,i,n]}function B(t){return R(W(t))}function z(t){var e,n,i,a=t[0],r=t[1],o=t[2];return i=o/360*2*Math.PI,e=r*Math.cos(i),n=r*Math.sin(i),[a,e,n]}function N(t){return W(z(t))}function H(t){return B(z(t))}function E(t){return J[t]}function U(t){return i(E(t))}function j(t){return a(E(t))}function G(t){return o(E(t))}function q(t){return s(E(t))}function Z(t){return d(E(t))}function X(t){return u(E(t))}e.exports={rgb2hsl:i,rgb2hsv:a,rgb2hwb:o,rgb2cmyk:s,rgb2keyword:l,rgb2xyz:u,rgb2lab:d,rgb2lch:c,hsl2rgb:h,hsl2hsv:f,hsl2hwb:m,hsl2cmyk:p,hsl2keyword:v,hsv2rgb:y,hsv2hsl:x,hsv2hwb:k,hsv2cmyk:_,hsv2keyword:w,hwb2rgb:S,hwb2hsl:M,hwb2hsv:D,hwb2cmyk:C,hwb2keyword:T,cmyk2rgb:P,cmyk2hsl:I,cmyk2hsv:A,cmyk2hwb:F,cmyk2keyword:O,keyword2rgb:E,keyword2hsl:U,keyword2hsv:j,keyword2hwb:G,keyword2cmyk:q,keyword2lab:Z,keyword2xyz:X,xyz2rgb:R,xyz2lab:L,xyz2lch:V,lab2xyz:W,lab2rgb:B,lab2lch:Y,lch2lab:z,lch2xyz:N,lch2rgb:H};var J={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},K={};for(var Q in J)K[JSON.stringify(J[Q])]=Q},{}],4:[function(t,e,n){var i=t(3),a=function(){return new u};for(var r in i){a[r+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(r);var o=/(\w+)2(\w+)/.exec(r),s=o[1],l=o[2];a[s]=a[s]||{},a[s][l]=a[r]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var a=0;a<n.length;a++)n[a]=Math.round(n[a]);return n}}(r)}var u=function(){this.convs={}};u.prototype.routeSpace=function(t,e){var n=e[0];return void 0===n?this.getValues(t):("number"==typeof n&&(n=Array.prototype.slice.call(e)),this.setValues(t,n))},u.prototype.setValues=function(t,e){return this.space=t,this.convs={},this.convs[t]=e,this},u.prototype.getValues=function(t){var e=this.convs[t];if(!e){var n=this.space,i=this.convs[n];e=a[n][t](i),this.convs[t]=e}return e},["rgb","hsl","hsv","cmyk","keyword"].forEach(function(t){u.prototype[t]=function(e){return this.routeSpace(t,arguments)}}),e.exports=a},{3:3}],5:[function(t,e,n){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},{}],6:[function(e,n,i){!function(e,a){"object"==typeof i&&"undefined"!=typeof n?n.exports=a():"function"==typeof t&&t.amd?t(a):e.moment=a()}(this,function(){"use strict";function t(){return vi.apply(null,arguments)}function i(t){vi=t}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function r(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t){var e;for(e in t)return!1;return!0}function s(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function l(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function u(t,e){var n,i=[];for(n=0;n<t.length;++n)i.push(e(t[n],n));return i}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function c(t,e){for(var n in e)d(e,n)&&(t[n]=e[n]);return d(e,"toString")&&(t.toString=e.toString),d(e,"valueOf")&&(t.valueOf=e.valueOf),t}function h(t,e,n,i){return ye(t,e,n,i,!0).utc()}function f(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function g(t){return null==t._pf&&(t._pf=f()),t._pf}function m(t){if(null==t._isValid){var e=g(t),n=yi.call(e.parsedDateParts,function(t){return null!=t}),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function p(t){var e=h(NaN);return null!=t?c(g(e),t):g(e).userInvalidated=!0,e}function v(t){return void 0===t}function b(t,e){var n,i,a;if(v(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),v(e._i)||(t._i=e._i),v(e._f)||(t._f=e._f),v(e._l)||(t._l=e._l),v(e._strict)||(t._strict=e._strict),v(e._tzm)||(t._tzm=e._tzm),v(e._isUTC)||(t._isUTC=e._isUTC),v(e._offset)||(t._offset=e._offset),v(e._pf)||(t._pf=g(e)),v(e._locale)||(t._locale=e._locale),xi.length>0)for(n in xi)i=xi[n],a=e[i],v(a)||(t[i]=a);return t}function y(e){b(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),ki===!1&&(ki=!0,t.updateOffset(this),ki=!1)}function x(t){return t instanceof y||null!=t&&null!=t._isAMomentObject}function k(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function _(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=k(e)),n}function w(t,e,n){var i,a=Math.min(t.length,e.length),r=Math.abs(t.length-e.length),o=0;for(i=0;i<a;i++)(n&&t[i]!==e[i]||!n&&_(t[i])!==_(e[i]))&&o++;return o+r}function S(e){t.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function M(e,n){var i=!0;return c(function(){if(null!=t.deprecationHandler&&t.deprecationHandler(null,e),i){for(var a,r=[],o=0;o<arguments.length;o++){if(a="","object"==typeof arguments[o]){a+="\n["+o+"] ";for(var s in arguments[0])a+=s+": "+arguments[0][s]+", ";a=a.slice(0,-2)}else a=arguments[o];r.push(a)}S(e+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),i=!1}return n.apply(this,arguments)},n)}function D(e,n){null!=t.deprecationHandler&&t.deprecationHandler(e,n),_i[e]||(S(n),_i[e]=!0)}function C(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function T(t){var e,n;for(n in t)e=t[n],C(e)?this[n]=e:this["_"+n]=e;this._config=t,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function P(t,e){var n,i=c({},t);for(n in e)d(e,n)&&(r(t[n])&&r(e[n])?(i[n]={},c(i[n],t[n]),c(i[n],e[n])):null!=e[n]?i[n]=e[n]:delete i[n]);for(n in t)d(t,n)&&!d(e,n)&&r(t[n])&&(i[n]=c({},i[n]));return i}function I(t){null!=t&&this.set(t)}function A(t,e,n){var i=this._calendar[t]||this._calendar.sameElse;return C(i)?i.call(e,n):i}function F(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function O(){return this._invalidDate}function R(t){return this._ordinal.replace("%d",t)}function L(t,e,n,i){var a=this._relativeTime[n];return C(a)?a(t,e,n,i):a.replace(/%d/i,t)}function V(t,e){var n=this._relativeTime[t>0?"future":"past"];return C(n)?n(e):n.replace(/%s/i,e)}function W(t,e){var n=t.toLowerCase();Fi[n]=Fi[n+"s"]=Fi[e]=t}function Y(t){return"string"==typeof t?Fi[t]||Fi[t.toLowerCase()]:void 0}function B(t){var e,n,i={};for(n in t)d(t,n)&&(e=Y(n),e&&(i[e]=t[n]));return i}function z(t,e){Oi[t]=e}function N(t){var e=[];for(var n in t)e.push({unit:n,priority:Oi[n]});return e.sort(function(t,e){return t.priority-e.priority}),e}function H(e,n){return function(i){return null!=i?(U(this,e,i),t.updateOffset(this,n),this):E(this,e)}}function E(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function U(t,e,n){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](n)}function j(t){return t=Y(t),C(this[t])?this[t]():this}function G(t,e){if("object"==typeof t){t=B(t);for(var n=N(t),i=0;i<n.length;i++)this[n[i].unit](t[n[i].unit])}else if(t=Y(t),C(this[t]))return this[t](e);return this}function q(t,e,n){var i=""+Math.abs(t),a=e-i.length,r=t>=0;return(r?n?"+":"":"-")+Math.pow(10,Math.max(0,a)).toString().substr(1)+i}function Z(t,e,n,i){var a=i;"string"==typeof i&&(a=function(){return this[i]()}),t&&(Wi[t]=a),e&&(Wi[e[0]]=function(){return q(a.apply(this,arguments),e[1],e[2])}),n&&(Wi[n]=function(){return this.localeData().ordinal(a.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function J(t){var e,n,i=t.match(Ri);for(e=0,n=i.length;e<n;e++)Wi[i[e]]?i[e]=Wi[i[e]]:i[e]=X(i[e]);return function(e){var a,r="";for(a=0;a<n;a++)r+=i[a]instanceof Function?i[a].call(e,t):i[a];return r}}function K(t,e){return t.isValid()?(e=Q(e,t.localeData()),Vi[e]=Vi[e]||J(e),Vi[e](t)):t.localeData().invalidDate()}function Q(t,e){function n(t){return e.longDateFormat(t)||t}var i=5;for(Li.lastIndex=0;i>=0&&Li.test(t);)t=t.replace(Li,n),Li.lastIndex=0,i-=1;return t}function $(t,e,n){ea[t]=C(e)?e:function(t,i){return t&&n?n:e}}function tt(t,e){return d(ea,t)?ea[t](e._strict,e._locale):new RegExp(et(t))}function et(t){return nt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,i,a){return e||n||i||a}))}function nt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),s(e)&&(i=function(t,n){n[e]=_(t)}),n=0;n<t.length;n++)na[t[n]]=i}function at(t,e){it(t,function(t,n,i,a){i._w=i._w||{},e(t,i._w,i,a)})}function rt(t,e,n){null!=e&&d(na,t)&&na[t](e,n._a,n,t)}function ot(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function st(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||fa).test(e)?"format":"standalone"][t.month()]:this._months}function lt(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[fa.test(e)?"format":"standalone"][t.month()]:this._monthsShort}function ut(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)r=h([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===e?(a=ha.call(this._shortMonthsParse,o),a!==-1?a:null):(a=ha.call(this._longMonthsParse,o),a!==-1?a:null):"MMM"===e?(a=ha.call(this._shortMonthsParse,o),a!==-1?a:(a=ha.call(this._longMonthsParse,o),a!==-1?a:null)):(a=ha.call(this._longMonthsParse,o),a!==-1?a:(a=ha.call(this._shortMonthsParse,o),a!==-1?a:null))}function dt(t,e,n){var i,a,r;if(this._monthsParseExact)return ut.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(a=h([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(a,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(a,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(r="^"+this.months(a,"")+"|^"+this.monthsShort(a,""),this._monthsParse[i]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}}function ct(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=_(e);else if(e=t.localeData().monthsParse(e),!s(e))return t;return n=Math.min(t.date(),ot(t.year(),e)),
|
11 |
+
t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function ht(e){return null!=e?(ct(this,e),t.updateOffset(this,!0),this):E(this,"Month")}function ft(){return ot(this.year(),this.month())}function gt(t){return this._monthsParseExact?(d(this,"_monthsRegex")||pt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=pa),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)}function mt(t){return this._monthsParseExact?(d(this,"_monthsRegex")||pt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=va),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)}function pt(){function t(t,e){return e.length-t.length}var e,n,i=[],a=[],r=[];for(e=0;e<12;e++)n=h([2e3,e]),i.push(this.monthsShort(n,"")),a.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(i.sort(t),a.sort(t),r.sort(t),e=0;e<12;e++)i[e]=nt(i[e]),a[e]=nt(a[e]);for(e=0;e<24;e++)r[e]=nt(r[e]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+i.join("|")+")","i")}function vt(t){return bt(t)?366:365}function bt(t){return t%4===0&&t%100!==0||t%400===0}function yt(){return bt(this.year())}function xt(t,e,n,i,a,r,o){var s=new Date(t,e,n,i,a,r,o);return t<100&&t>=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}function kt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function _t(t,e,n){var i=7+e-n,a=(7+kt(t,0,i).getUTCDay()-e)%7;return-a+i-1}function wt(t,e,n,i,a){var r,o,s=(7+n-i)%7,l=_t(t,i,a),u=1+7*(e-1)+s+l;return u<=0?(r=t-1,o=vt(r)+u):u>vt(t)?(r=t+1,o=u-vt(t)):(r=t,o=u),{year:r,dayOfYear:o}}function St(t,e,n){var i,a,r=_t(t.year(),e,n),o=Math.floor((t.dayOfYear()-r-1)/7)+1;return o<1?(a=t.year()-1,i=o+Mt(a,e,n)):o>Mt(t.year(),e,n)?(i=o-Mt(t.year(),e,n),a=t.year()+1):(a=t.year(),i=o),{week:i,year:a}}function Mt(t,e,n){var i=_t(t,e,n),a=_t(t+1,e,n);return(vt(t)-i+a)/7}function Dt(t){return St(t,this._week.dow,this._week.doy).week}function Ct(){return this._week.dow}function Tt(){return this._week.doy}function Pt(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function It(t){var e=St(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function At(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Ft(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Ot(t,e){return t?a(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Rt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Lt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Vt(t,e,n){var i,a,r,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)r=h([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===e?(a=ha.call(this._weekdaysParse,o),a!==-1?a:null):"ddd"===e?(a=ha.call(this._shortWeekdaysParse,o),a!==-1?a:null):(a=ha.call(this._minWeekdaysParse,o),a!==-1?a:null):"dddd"===e?(a=ha.call(this._weekdaysParse,o),a!==-1?a:(a=ha.call(this._shortWeekdaysParse,o),a!==-1?a:(a=ha.call(this._minWeekdaysParse,o),a!==-1?a:null))):"ddd"===e?(a=ha.call(this._shortWeekdaysParse,o),a!==-1?a:(a=ha.call(this._weekdaysParse,o),a!==-1?a:(a=ha.call(this._minWeekdaysParse,o),a!==-1?a:null))):(a=ha.call(this._minWeekdaysParse,o),a!==-1?a:(a=ha.call(this._weekdaysParse,o),a!==-1?a:(a=ha.call(this._shortWeekdaysParse,o),a!==-1?a:null)))}function Wt(t,e,n){var i,a,r;if(this._weekdaysParseExact)return Vt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(a=h([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(a,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(a,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(a,"").replace(".",".?")+"$","i")),this._weekdaysParse[i]||(r="^"+this.weekdays(a,"")+"|^"+this.weekdaysShort(a,"")+"|^"+this.weekdaysMin(a,""),this._weekdaysParse[i]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}}function Yt(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=At(t,this.localeData()),this.add(t-e,"d")):e}function Bt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function zt(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Ft(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Nt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Ut.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=wa),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ht(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Ut.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Sa),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Et(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Ut.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ma),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ut(){function t(t,e){return e.length-t.length}var e,n,i,a,r,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=h([2e3,1]).day(e),i=this.weekdaysMin(n,""),a=this.weekdaysShort(n,""),r=this.weekdays(n,""),o.push(i),s.push(a),l.push(r),u.push(i),u.push(a),u.push(r);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=nt(s[e]),l[e]=nt(l[e]),u[e]=nt(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function jt(){return this.hours()%12||12}function Gt(){return this.hours()||24}function qt(t,e){Z(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function Zt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Jt(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function Qt(t){for(var e,n,i,a,r=0;r<t.length;){for(a=Kt(t[r]).split("-"),e=a.length,n=Kt(t[r+1]),n=n?n.split("-"):null;e>0;){if(i=$t(a.slice(0,e).join("-")))return i;if(n&&n.length>=e&&w(a,n,!0)>=e-1)break;e--}r++}return null}function $t(t){var i=null;if(!Ia[t]&&"undefined"!=typeof n&&n&&n.exports)try{i=Da._abbr,e("./locale/"+t),te(i)}catch(t){}return Ia[t]}function te(t,e){var n;return t&&(n=v(e)?ie(t):ee(t,e),n&&(Da=n)),Da._abbr}function ee(t,e){if(null!==e){var n=Pa;if(e.abbr=t,null!=Ia[t])D("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Ia[t]._config;else if(null!=e.parentLocale){if(null==Ia[e.parentLocale])return Aa[e.parentLocale]||(Aa[e.parentLocale]=[]),Aa[e.parentLocale].push({name:t,config:e}),null;n=Ia[e.parentLocale]._config}return Ia[t]=new I(P(n,e)),Aa[t]&&Aa[t].forEach(function(t){ee(t.name,t.config)}),te(t),Ia[t]}return delete Ia[t],null}function ne(t,e){if(null!=e){var n,i=Pa;null!=Ia[t]&&(i=Ia[t]._config),e=P(i,e),n=new I(e),n.parentLocale=Ia[t],Ia[t]=n,te(t)}else null!=Ia[t]&&(null!=Ia[t].parentLocale?Ia[t]=Ia[t].parentLocale:null!=Ia[t]&&delete Ia[t]);return Ia[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Da;if(!a(t)){if(e=$t(t))return e;t=[t]}return Qt(t)}function ae(){return Mi(Ia)}function re(t){var e,n=t._a;return n&&g(t).overflow===-2&&(e=n[aa]<0||n[aa]>11?aa:n[ra]<1||n[ra]>ot(n[ia],n[aa])?ra:n[oa]<0||n[oa]>24||24===n[oa]&&(0!==n[sa]||0!==n[la]||0!==n[ua])?oa:n[sa]<0||n[sa]>59?sa:n[la]<0||n[la]>59?la:n[ua]<0||n[ua]>999?ua:-1,g(t)._overflowDayOfYear&&(e<ia||e>ra)&&(e=ra),g(t)._overflowWeeks&&e===-1&&(e=da),g(t)._overflowWeekday&&e===-1&&(e=ca),g(t).overflow=e),t}function oe(t){var e,n,i,a,r,o,s=t._i,l=Fa.exec(s)||Oa.exec(s);if(l){for(g(t).iso=!0,e=0,n=La.length;e<n;e++)if(La[e][1].exec(l[1])){a=La[e][0],i=La[e][2]!==!1;break}if(null==a)return void(t._isValid=!1);if(l[3]){for(e=0,n=Va.length;e<n;e++)if(Va[e][1].exec(l[3])){r=(l[2]||" ")+Va[e][0];break}if(null==r)return void(t._isValid=!1)}if(!i&&null!=r)return void(t._isValid=!1);if(l[4]){if(!Ra.exec(l[4]))return void(t._isValid=!1);o="Z"}t._f=a+(r||"")+(o||""),he(t)}else t._isValid=!1}function se(e){var n=Wa.exec(e._i);return null!==n?void(e._d=new Date(+n[1])):(oe(e),void(e._isValid===!1&&(delete e._isValid,t.createFromInputFallback(e))))}function le(t,e,n){return null!=t?t:null!=e?e:n}function ue(e){var n=new Date(t.now());return e._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()]}function de(t){var e,n,i,a,r=[];if(!t._d){for(i=ue(t),t._w&&null==t._a[ra]&&null==t._a[aa]&&ce(t),t._dayOfYear&&(a=le(t._a[ia],i[ia]),t._dayOfYear>vt(a)&&(g(t)._overflowDayOfYear=!0),n=kt(a,0,t._dayOfYear),t._a[aa]=n.getUTCMonth(),t._a[ra]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=r[e]=i[e];for(;e<7;e++)t._a[e]=r[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[oa]&&0===t._a[sa]&&0===t._a[la]&&0===t._a[ua]&&(t._nextDay=!0,t._a[oa]=0),t._d=(t._useUTC?kt:xt).apply(null,r),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[oa]=24)}}function ce(t){var e,n,i,a,r,o,s,l;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)r=1,o=4,n=le(e.GG,t._a[ia],St(xe(),1,4).year),i=le(e.W,1),a=le(e.E,1),(a<1||a>7)&&(l=!0);else{r=t._locale._week.dow,o=t._locale._week.doy;var u=St(xe(),r,o);n=le(e.gg,t._a[ia],u.year),i=le(e.w,u.week),null!=e.d?(a=e.d,(a<0||a>6)&&(l=!0)):null!=e.e?(a=e.e+r,(e.e<0||e.e>6)&&(l=!0)):a=r}i<1||i>Mt(n,r,o)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(s=wt(n,i,a,r,o),t._a[ia]=s.year,t._dayOfYear=s.dayOfYear)}function he(e){if(e._f===t.ISO_8601)return void oe(e);e._a=[],g(e).empty=!0;var n,i,a,r,o,s=""+e._i,l=s.length,u=0;for(a=Q(e._f,e._locale).match(Ri)||[],n=0;n<a.length;n++)r=a[n],i=(s.match(tt(r,e))||[])[0],i&&(o=s.substr(0,s.indexOf(i)),o.length>0&&g(e).unusedInput.push(o),s=s.slice(s.indexOf(i)+i.length),u+=i.length),Wi[r]?(i?g(e).empty=!1:g(e).unusedTokens.push(r),rt(r,i,e)):e._strict&&!i&&g(e).unusedTokens.push(r);g(e).charsLeftOver=l-u,s.length>0&&g(e).unusedInput.push(s),e._a[oa]<=12&&g(e).bigHour===!0&&e._a[oa]>0&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[oa]=fe(e._locale,e._a[oa],e._meridiem),de(e),re(e)}function fe(t,e,n){var i;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(i=t.isPM(n),i&&e<12&&(e+=12),i||12!==e||(e=0),e):e}function ge(t){var e,n,i,a,r;if(0===t._f.length)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(a=0;a<t._f.length;a++)r=0,e=b({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[a],he(e),m(e)&&(r+=g(e).charsLeftOver,r+=10*g(e).unusedTokens.length,g(e).score=r,(null==i||r<i)&&(i=r,n=e));c(t,n||e)}function me(t){if(!t._d){var e=B(t._i);t._a=u([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),de(t)}}function pe(t){var e=new y(re(ve(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function ve(t){var e=t._i,n=t._f;return t._locale=t._locale||ie(t._l),null===e||void 0===n&&""===e?p({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),x(e)?new y(re(e)):(l(e)?t._d=e:a(n)?ge(t):n?he(t):be(t),m(t)||(t._d=null),t))}function be(e){var n=e._i;void 0===n?e._d=new Date(t.now()):l(n)?e._d=new Date(n.valueOf()):"string"==typeof n?se(e):a(n)?(e._a=u(n.slice(0),function(t){return parseInt(t,10)}),de(e)):"object"==typeof n?me(e):s(n)?e._d=new Date(n):t.createFromInputFallback(e)}function ye(t,e,n,i,s){var l={};return n!==!0&&n!==!1||(i=n,n=void 0),(r(t)&&o(t)||a(t)&&0===t.length)&&(t=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=s,l._l=n,l._i=t,l._f=e,l._strict=i,pe(l)}function xe(t,e,n,i){return ye(t,e,n,i,!1)}function ke(t,e){var n,i;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return xe();for(n=e[0],i=1;i<e.length;++i)e[i].isValid()&&!e[i][t](n)||(n=e[i]);return n}function _e(){var t=[].slice.call(arguments,0);return ke("isBefore",t)}function we(){var t=[].slice.call(arguments,0);return ke("isAfter",t)}function Se(t){var e=B(t),n=e.year||0,i=e.quarter||0,a=e.month||0,r=e.week||0,o=e.day||0,s=e.hour||0,l=e.minute||0,u=e.second||0,d=e.millisecond||0;this._milliseconds=+d+1e3*u+6e4*l+1e3*s*60*60,this._days=+o+7*r,this._months=+a+3*i+12*n,this._data={},this._locale=ie(),this._bubble()}function Me(t){return t instanceof Se}function De(t){return t<0?Math.round(-1*t)*-1:Math.round(t)}function Ce(t,e){Z(t,0,0,function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+q(~~(t/60),2)+e+q(~~t%60,2)})}function Te(t,e){var n=(e||"").match(t);if(null===n)return null;var i=n[n.length-1]||[],a=(i+"").match(Na)||["-",0,0],r=+(60*a[1])+_(a[2]);return 0===r?0:"+"===a[0]?r:-r}function Pe(e,n){var i,a;return n._isUTC?(i=n.clone(),a=(x(e)||l(e)?e.valueOf():xe(e).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+a),t.updateOffset(i,!1),i):xe(e).local()}function Ie(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ae(e,n){var i,a=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(e=Te(Qi,e),null===e)return this}else Math.abs(e)<16&&(e*=60);return!this._isUTC&&n&&(i=Ie(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),a!==e&&(!n||this._changeInProgress?qe(this,He(e-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:Ie(this)}function Fe(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Oe(t){return this.utcOffset(0,t)}function Re(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ie(this),"m")),this}function Le(){if(null!=this._tzm)this.utcOffset(this._tzm);else if("string"==typeof this._i){var t=Te(Ki,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this}function Ve(t){return!!this.isValid()&&(t=t?xe(t).utcOffset():0,(this.utcOffset()-t)%60===0)}function We(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ye(){if(!v(this._isDSTShifted))return this._isDSTShifted;var t={};if(b(t,this),t=ve(t),t._a){var e=t._isUTC?h(t._a):xe(t._a);this._isDSTShifted=this.isValid()&&w(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Be(){return!!this.isValid()&&!this._isUTC}function ze(){return!!this.isValid()&&this._isUTC}function Ne(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function He(t,e){var n,i,a,r=t,o=null;return Me(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:s(t)?(r={},e?r[e]=t:r.milliseconds=t):(o=Ha.exec(t))?(n="-"===o[1]?-1:1,r={y:0,d:_(o[ra])*n,h:_(o[oa])*n,m:_(o[sa])*n,s:_(o[la])*n,ms:_(De(1e3*o[ua]))*n}):(o=Ea.exec(t))?(n="-"===o[1]?-1:1,r={y:Ee(o[2],n),M:Ee(o[3],n),w:Ee(o[4],n),d:Ee(o[5],n),h:Ee(o[6],n),m:Ee(o[7],n),s:Ee(o[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(a=je(xe(r.from),xe(r.to)),r={},r.ms=a.milliseconds,r.M=a.months),i=new Se(r),Me(t)&&d(t,"_locale")&&(i._locale=t._locale),i}function Ee(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Ue(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function je(t,e){var n;return t.isValid()&&e.isValid()?(e=Pe(e,t),t.isBefore(e)?n=Ue(t,e):(n=Ue(e,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Ge(t,e){return function(n,i){var a,r;return null===i||isNaN(+i)||(D(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=i,i=r),n="string"==typeof n?+n:n,a=He(n,i),qe(this,a,t),this}}function qe(e,n,i,a){var r=n._milliseconds,o=De(n._days),s=De(n._months);e.isValid()&&(a=null==a||a,r&&e._d.setTime(e._d.valueOf()+r*i),o&&U(e,"Date",E(e,"Date")+o*i),s&&ct(e,E(e,"Month")+s*i),a&&t.updateOffset(e,o||s))}function Ze(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function Xe(e,n){var i=e||xe(),a=Pe(i,this).startOf("day"),r=t.calendarFormat(this,a)||"sameElse",o=n&&(C(n[r])?n[r].call(this,i):n[r]);return this.format(o||this.localeData().calendar(r,this,xe(i)))}function Je(){return new y(this)}function Ke(t,e){var n=x(t)?t:xe(t);return!(!this.isValid()||!n.isValid())&&(e=Y(v(e)?"millisecond":e),"millisecond"===e?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())}function Qe(t,e){var n=x(t)?t:xe(t);return!(!this.isValid()||!n.isValid())&&(e=Y(v(e)?"millisecond":e),"millisecond"===e?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())}function $e(t,e,n,i){return i=i||"()",("("===i[0]?this.isAfter(t,n):!this.isBefore(t,n))&&(")"===i[1]?this.isBefore(e,n):!this.isAfter(e,n))}function tn(t,e){var n,i=x(t)?t:xe(t);return!(!this.isValid()||!i.isValid())&&(e=Y(e||"millisecond"),"millisecond"===e?this.valueOf()===i.valueOf():(n=i.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))}function en(t,e){return this.isSame(t,e)||this.isAfter(t,e)}function nn(t,e){return this.isSame(t,e)||this.isBefore(t,e)}function an(t,e,n){var i,a,r,o;return this.isValid()?(i=Pe(t,this),i.isValid()?(a=6e4*(i.utcOffset()-this.utcOffset()),e=Y(e),"year"===e||"month"===e||"quarter"===e?(o=rn(this,i),"quarter"===e?o/=3:"year"===e&&(o/=12)):(r=this-i,o="second"===e?r/1e3:"minute"===e?r/6e4:"hour"===e?r/36e5:"day"===e?(r-a)/864e5:"week"===e?(r-a)/6048e5:r),n?o:k(o)):NaN):NaN}function rn(t,e){var n,i,a=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(a,"months");return e-r<0?(n=t.clone().add(a-1,"months"),i=(e-r)/(r-n)):(n=t.clone().add(a+1,"months"),i=(e-r)/(n-r)),-(a+i)||0}function on(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function sn(){var t=this.clone().utc();return 0<t.year()&&t.year()<=9999?C(Date.prototype.toISOString)?this.toDate().toISOString():K(t,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):K(t,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function ln(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',i=0<this.year()&&this.year()<=9999?"YYYY":"YYYYYY",a="-MM-DD[T]HH:mm:ss.SSS",r=e+'[")]';return this.format(n+i+a+r)}function un(e){e||(e=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var n=K(this,e);return this.localeData().postformat(n)}function dn(t,e){return this.isValid()&&(x(t)&&t.isValid()||xe(t).isValid())?He({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function cn(t){return this.from(xe(),t)}function hn(t,e){return this.isValid()&&(x(t)&&t.isValid()||xe(t).isValid())?He({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function fn(t){return this.to(xe(),t)}function gn(t){var e;return void 0===t?this._locale._abbr:(e=ie(t),null!=e&&(this._locale=e),this)}function mn(){return this._locale}function pn(t){switch(t=Y(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this}function vn(t){return t=Y(t),void 0===t||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))}function bn(){return this._d.valueOf()-6e4*(this._offset||0)}function yn(){return Math.floor(this.valueOf()/1e3)}function xn(){return new Date(this.valueOf())}function kn(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function _n(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function wn(){return this.isValid()?this.toISOString():null}function Sn(){return m(this)}function Mn(){return c({},g(this))}function Dn(){return g(this).overflow}function Cn(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Tn(t,e){Z(0,[t,t.length],0,e)}function Pn(t){return On.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function In(t){return On.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)}function An(){return Mt(this.year(),1,4)}function Fn(){var t=this.localeData()._week;return Mt(this.year(),t.dow,t.doy)}function On(t,e,n,i,a){var r;return null==t?St(this,i,a).year:(r=Mt(t,i,a),e>r&&(e=r),Rn.call(this,t,e,n,i,a))}function Rn(t,e,n,i,a){var r=wt(t,e,n,i,a),o=kt(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function Ln(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function Vn(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Wn(t,e){e[ua]=_(1e3*("0."+t))}function Yn(){return this._isUTC?"UTC":""}function Bn(){return this._isUTC?"Coordinated Universal Time":""}function zn(t){return xe(1e3*t)}function Nn(){return xe.apply(null,arguments).parseZone()}function Hn(t){return t}function En(t,e,n,i){var a=ie(),r=h().set(i,e);return a[n](r,t)}function Un(t,e,n){if(s(t)&&(e=t,t=void 0),t=t||"",null!=e)return En(t,e,n,"month");var i,a=[];for(i=0;i<12;i++)a[i]=En(t,i,n,"month");return a}function jn(t,e,n,i){"boolean"==typeof t?(s(e)&&(n=e,e=void 0),e=e||""):(e=t,n=e,t=!1,s(e)&&(n=e,e=void 0),e=e||"");var a=ie(),r=t?a._week.dow:0;if(null!=n)return En(e,(n+r)%7,i,"day");var o,l=[];for(o=0;o<7;o++)l[o]=En(e,(o+r)%7,i,"day");return l}function Gn(t,e){return Un(t,e,"months")}function qn(t,e){return Un(t,e,"monthsShort")}function Zn(t,e,n){return jn(t,e,n,"weekdays")}function Xn(t,e,n){return jn(t,e,n,"weekdaysShort")}function Jn(t,e,n){return jn(t,e,n,"weekdaysMin")}function Kn(){var t=this._data;return this._milliseconds=tr(this._milliseconds),this._days=tr(this._days),this._months=tr(this._months),t.milliseconds=tr(t.milliseconds),t.seconds=tr(t.seconds),t.minutes=tr(t.minutes),t.hours=tr(t.hours),t.months=tr(t.months),t.years=tr(t.years),this}function Qn(t,e,n,i){var a=He(e,n);return t._milliseconds+=i*a._milliseconds,t._days+=i*a._days,t._months+=i*a._months,t._bubble()}function $n(t,e){return Qn(this,t,e,1)}function ti(t,e){return Qn(this,t,e,-1)}function ei(t){return t<0?Math.floor(t):Math.ceil(t)}function ni(){var t,e,n,i,a,r=this._milliseconds,o=this._days,s=this._months,l=this._data;return r>=0&&o>=0&&s>=0||r<=0&&o<=0&&s<=0||(r+=864e5*ei(ai(s)+o),o=0,s=0),l.milliseconds=r%1e3,t=k(r/1e3),l.seconds=t%60,e=k(t/60),l.minutes=e%60,n=k(e/60),l.hours=n%24,o+=k(n/24),a=k(ii(o)),s+=a,o-=ei(ai(a)),i=k(s/12),s%=12,l.days=o,l.months=s,l.years=i,this}function ii(t){return 4800*t/146097}function ai(t){return 146097*t/4800}function ri(t){var e,n,i=this._milliseconds;if(t=Y(t),"month"===t||"year"===t)return e=this._days+i/864e5,n=this._months+ii(e),"month"===t?n:n/12;switch(e=this._days+Math.round(ai(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}}function oi(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*_(this._months/12)}function si(t){return function(){return this.as(t)}}function li(t){return t=Y(t),this[t+"s"]()}function ui(t){return function(){return this._data[t]}}function di(){return k(this.days()/7)}function ci(t,e,n,i,a){return a.relativeTime(e||1,!!n,t,i)}function hi(t,e,n){var i=He(t).abs(),a=pr(i.as("s")),r=pr(i.as("m")),o=pr(i.as("h")),s=pr(i.as("d")),l=pr(i.as("M")),u=pr(i.as("y")),d=a<vr.s&&["s",a]||r<=1&&["m"]||r<vr.m&&["mm",r]||o<=1&&["h"]||o<vr.h&&["hh",o]||s<=1&&["d"]||s<vr.d&&["dd",s]||l<=1&&["M"]||l<vr.M&&["MM",l]||u<=1&&["y"]||["yy",u];return d[2]=e,d[3]=+t>0,d[4]=n,ci.apply(null,d)}function fi(t){return void 0===t?pr:"function"==typeof t&&(pr=t,!0)}function gi(t,e){return void 0!==vr[t]&&(void 0===e?vr[t]:(vr[t]=e,!0))}function mi(t){var e=this.localeData(),n=hi(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}function pi(){var t,e,n,i=br(this._milliseconds)/1e3,a=br(this._days),r=br(this._months);t=k(i/60),e=k(t/60),i%=60,t%=60,n=k(r/12),r%=12;var o=n,s=r,l=a,u=e,d=t,c=i,h=this.asSeconds();return h?(h<0?"-":"")+"P"+(o?o+"Y":"")+(s?s+"M":"")+(l?l+"D":"")+(u||d||c?"T":"")+(u?u+"H":"")+(d?d+"M":"")+(c?c+"S":""):"P0D"}var vi,bi;bi=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,i=0;i<n;i++)if(i in e&&t.call(this,e[i],i,e))return!0;return!1};var yi=bi,xi=t.momentProperties=[],ki=!1,_i={};t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;var wi;wi=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)d(t,e)&&n.push(e);return n};var Si,Mi=wi,Di={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Ci={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ti="Invalid date",Pi="%d",Ii=/\d{1,2}/,Ai={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Fi={},Oi={},Ri=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Li=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Vi={},Wi={},Yi=/\d/,Bi=/\d\d/,zi=/\d{3}/,Ni=/\d{4}/,Hi=/[+-]?\d{6}/,Ei=/\d\d?/,Ui=/\d\d\d\d?/,ji=/\d\d\d\d\d\d?/,Gi=/\d{1,3}/,qi=/\d{1,4}/,Zi=/[+-]?\d{1,6}/,Xi=/\d+/,Ji=/[+-]?\d+/,Ki=/Z|[+-]\d\d:?\d\d/gi,Qi=/Z|[+-]\d\d(?::?\d\d)?/gi,$i=/[+-]?\d+(\.\d{1,3})?/,ta=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ea={},na={},ia=0,aa=1,ra=2,oa=3,sa=4,la=5,ua=6,da=7,ca=8;Si=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1};var ha=Si;Z("M",["MM",2],"Mo",function(){return this.month()+1}),Z("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),Z("MMMM",0,0,function(t){return this.localeData().months(this,t)}),W("month","M"),z("month",8),$("M",Ei),$("MM",Ei,Bi),$("MMM",function(t,e){return e.monthsShortRegex(t)}),$("MMMM",function(t,e){return e.monthsRegex(t)}),it(["M","MM"],function(t,e){e[aa]=_(t)-1}),it(["MMM","MMMM"],function(t,e,n,i){var a=n._locale.monthsParse(t,i,n._strict);null!=a?e[aa]=a:g(n).invalidMonth=t});var fa=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,ga="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ma="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),pa=ta,va=ta;Z("Y",0,0,function(){var t=this.year();return t<=9999?""+t:"+"+t}),Z(0,["YY",2],0,function(){return this.year()%100}),Z(0,["YYYY",4],0,"year"),Z(0,["YYYYY",5],0,"year"),Z(0,["YYYYYY",6,!0],0,"year"),W("year","y"),z("year",1),$("Y",Ji),$("YY",Ei,Bi),$("YYYY",qi,Ni),$("YYYYY",Zi,Hi),$("YYYYYY",Zi,Hi),it(["YYYYY","YYYYYY"],ia),it("YYYY",function(e,n){n[ia]=2===e.length?t.parseTwoDigitYear(e):_(e)}),it("YY",function(e,n){n[ia]=t.parseTwoDigitYear(e)}),it("Y",function(t,e){e[ia]=parseInt(t,10)}),t.parseTwoDigitYear=function(t){return _(t)+(_(t)>68?1900:2e3)};var ba=H("FullYear",!0);Z("w",["ww",2],"wo","week"),Z("W",["WW",2],"Wo","isoWeek"),W("week","w"),W("isoWeek","W"),z("week",5),z("isoWeek",5),$("w",Ei),$("ww",Ei,Bi),$("W",Ei),$("WW",Ei,Bi),at(["w","ww","W","WW"],function(t,e,n,i){e[i.substr(0,1)]=_(t)});var ya={dow:0,doy:6};Z("d",0,"do","day"),Z("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),Z("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),Z("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),Z("e",0,0,"weekday"),Z("E",0,0,"isoWeekday"),W("day","d"),W("weekday","e"),W("isoWeekday","E"),z("day",11),z("weekday",11),z("isoWeekday",11),$("d",Ei),$("e",Ei),$("E",Ei),$("dd",function(t,e){return e.weekdaysMinRegex(t)}),$("ddd",function(t,e){return e.weekdaysShortRegex(t)}),$("dddd",function(t,e){return e.weekdaysRegex(t)}),at(["dd","ddd","dddd"],function(t,e,n,i){var a=n._locale.weekdaysParse(t,i,n._strict);null!=a?e.d=a:g(n).invalidWeekday=t}),at(["d","e","E"],function(t,e,n,i){e[i]=_(t)});var xa="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ka="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),_a="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),wa=ta,Sa=ta,Ma=ta;Z("H",["HH",2],0,"hour"),Z("h",["hh",2],0,jt),Z("k",["kk",2],0,Gt),Z("hmm",0,0,function(){return""+jt.apply(this)+q(this.minutes(),2)}),Z("hmmss",0,0,function(){return""+jt.apply(this)+q(this.minutes(),2)+q(this.seconds(),2)}),Z("Hmm",0,0,function(){return""+this.hours()+q(this.minutes(),2)}),Z("Hmmss",0,0,function(){return""+this.hours()+q(this.minutes(),2)+q(this.seconds(),2)}),qt("a",!0),qt("A",!1),W("hour","h"),z("hour",13),$("a",Zt),$("A",Zt),$("H",Ei),$("h",Ei),$("HH",Ei,Bi),$("hh",Ei,Bi),$("hmm",Ui),$("hmmss",ji),$("Hmm",Ui),$("Hmmss",ji),it(["H","HH"],oa),it(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),it(["h","hh"],function(t,e,n){e[oa]=_(t),g(n).bigHour=!0}),it("hmm",function(t,e,n){var i=t.length-2;e[oa]=_(t.substr(0,i)),e[sa]=_(t.substr(i)),g(n).bigHour=!0}),it("hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[oa]=_(t.substr(0,i)),e[sa]=_(t.substr(i,2)),e[la]=_(t.substr(a)),g(n).bigHour=!0}),it("Hmm",function(t,e,n){var i=t.length-2;e[oa]=_(t.substr(0,i)),e[sa]=_(t.substr(i))}),it("Hmmss",function(t,e,n){var i=t.length-4,a=t.length-2;e[oa]=_(t.substr(0,i)),e[sa]=_(t.substr(i,2)),e[la]=_(t.substr(a))});var Da,Ca=/[ap]\.?m?\.?/i,Ta=H("Hours",!0),Pa={calendar:Di,longDateFormat:Ci,invalidDate:Ti,ordinal:Pi,ordinalParse:Ii,relativeTime:Ai,months:ga,monthsShort:ma,week:ya,weekdays:xa,weekdaysMin:_a,weekdaysShort:ka,meridiemParse:Ca},Ia={},Aa={},Fa=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Oa=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ra=/Z|[+-]\d\d(?::?\d\d)?/,La=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Va=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Wa=/^\/?Date\((\-?\d+)/i;
|
12 |
+
t.createFromInputFallback=M("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),t.ISO_8601=function(){};var Ya=M("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=xe.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:p()}),Ba=M("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=xe.apply(null,arguments);return this.isValid()&&t.isValid()?t>this?this:t:p()}),za=function(){return Date.now?Date.now():+new Date};Ce("Z",":"),Ce("ZZ",""),$("Z",Qi),$("ZZ",Qi),it(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Te(Qi,t)});var Na=/([\+\-]|\d\d)/gi;t.updateOffset=function(){};var Ha=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ea=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;He.fn=Se.prototype;var Ua=Ge(1,"add"),ja=Ge(-1,"subtract");t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Ga=M("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});Z(0,["gg",2],0,function(){return this.weekYear()%100}),Z(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Tn("gggg","weekYear"),Tn("ggggg","weekYear"),Tn("GGGG","isoWeekYear"),Tn("GGGGG","isoWeekYear"),W("weekYear","gg"),W("isoWeekYear","GG"),z("weekYear",1),z("isoWeekYear",1),$("G",Ji),$("g",Ji),$("GG",Ei,Bi),$("gg",Ei,Bi),$("GGGG",qi,Ni),$("gggg",qi,Ni),$("GGGGG",Zi,Hi),$("ggggg",Zi,Hi),at(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,i){e[i.substr(0,2)]=_(t)}),at(["gg","GG"],function(e,n,i,a){n[a]=t.parseTwoDigitYear(e)}),Z("Q",0,"Qo","quarter"),W("quarter","Q"),z("quarter",7),$("Q",Yi),it("Q",function(t,e){e[aa]=3*(_(t)-1)}),Z("D",["DD",2],"Do","date"),W("date","D"),z("date",9),$("D",Ei),$("DD",Ei,Bi),$("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],ra),it("Do",function(t,e){e[ra]=_(t.match(Ei)[0],10)});var qa=H("Date",!0);Z("DDD",["DDDD",3],"DDDo","dayOfYear"),W("dayOfYear","DDD"),z("dayOfYear",4),$("DDD",Gi),$("DDDD",zi),it(["DDD","DDDD"],function(t,e,n){n._dayOfYear=_(t)}),Z("m",["mm",2],0,"minute"),W("minute","m"),z("minute",14),$("m",Ei),$("mm",Ei,Bi),it(["m","mm"],sa);var Za=H("Minutes",!1);Z("s",["ss",2],0,"second"),W("second","s"),z("second",15),$("s",Ei),$("ss",Ei,Bi),it(["s","ss"],la);var Xa=H("Seconds",!1);Z("S",0,0,function(){return~~(this.millisecond()/100)}),Z(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),Z(0,["SSS",3],0,"millisecond"),Z(0,["SSSS",4],0,function(){return 10*this.millisecond()}),Z(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),Z(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),Z(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),Z(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),Z(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),W("millisecond","ms"),z("millisecond",16),$("S",Gi,Yi),$("SS",Gi,Bi),$("SSS",Gi,zi);var Ja;for(Ja="SSSS";Ja.length<=9;Ja+="S")$(Ja,Xi);for(Ja="S";Ja.length<=9;Ja+="S")it(Ja,Wn);var Ka=H("Milliseconds",!1);Z("z",0,0,"zoneAbbr"),Z("zz",0,0,"zoneName");var Qa=y.prototype;Qa.add=Ua,Qa.calendar=Xe,Qa.clone=Je,Qa.diff=an,Qa.endOf=vn,Qa.format=un,Qa.from=dn,Qa.fromNow=cn,Qa.to=hn,Qa.toNow=fn,Qa.get=j,Qa.invalidAt=Dn,Qa.isAfter=Ke,Qa.isBefore=Qe,Qa.isBetween=$e,Qa.isSame=tn,Qa.isSameOrAfter=en,Qa.isSameOrBefore=nn,Qa.isValid=Sn,Qa.lang=Ga,Qa.locale=gn,Qa.localeData=mn,Qa.max=Ba,Qa.min=Ya,Qa.parsingFlags=Mn,Qa.set=G,Qa.startOf=pn,Qa.subtract=ja,Qa.toArray=kn,Qa.toObject=_n,Qa.toDate=xn,Qa.toISOString=sn,Qa.inspect=ln,Qa.toJSON=wn,Qa.toString=on,Qa.unix=yn,Qa.valueOf=bn,Qa.creationData=Cn,Qa.year=ba,Qa.isLeapYear=yt,Qa.weekYear=Pn,Qa.isoWeekYear=In,Qa.quarter=Qa.quarters=Ln,Qa.month=ht,Qa.daysInMonth=ft,Qa.week=Qa.weeks=Pt,Qa.isoWeek=Qa.isoWeeks=It,Qa.weeksInYear=Fn,Qa.isoWeeksInYear=An,Qa.date=qa,Qa.day=Qa.days=Yt,Qa.weekday=Bt,Qa.isoWeekday=zt,Qa.dayOfYear=Vn,Qa.hour=Qa.hours=Ta,Qa.minute=Qa.minutes=Za,Qa.second=Qa.seconds=Xa,Qa.millisecond=Qa.milliseconds=Ka,Qa.utcOffset=Ae,Qa.utc=Oe,Qa.local=Re,Qa.parseZone=Le,Qa.hasAlignedHourOffset=Ve,Qa.isDST=We,Qa.isLocal=Be,Qa.isUtcOffset=ze,Qa.isUtc=Ne,Qa.isUTC=Ne,Qa.zoneAbbr=Yn,Qa.zoneName=Bn,Qa.dates=M("dates accessor is deprecated. Use date instead.",qa),Qa.months=M("months accessor is deprecated. Use month instead",ht),Qa.years=M("years accessor is deprecated. Use year instead",ba),Qa.zone=M("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Fe),Qa.isDSTShifted=M("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ye);var $a=I.prototype;$a.calendar=A,$a.longDateFormat=F,$a.invalidDate=O,$a.ordinal=R,$a.preparse=Hn,$a.postformat=Hn,$a.relativeTime=L,$a.pastFuture=V,$a.set=T,$a.months=st,$a.monthsShort=lt,$a.monthsParse=dt,$a.monthsRegex=mt,$a.monthsShortRegex=gt,$a.week=Dt,$a.firstDayOfYear=Tt,$a.firstDayOfWeek=Ct,$a.weekdays=Ot,$a.weekdaysMin=Lt,$a.weekdaysShort=Rt,$a.weekdaysParse=Wt,$a.weekdaysRegex=Nt,$a.weekdaysShortRegex=Ht,$a.weekdaysMinRegex=Et,$a.isPM=Xt,$a.meridiem=Jt,te("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,n=1===_(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),t.lang=M("moment.lang is deprecated. Use moment.locale instead.",te),t.langData=M("moment.langData is deprecated. Use moment.localeData instead.",ie);var tr=Math.abs,er=si("ms"),nr=si("s"),ir=si("m"),ar=si("h"),rr=si("d"),or=si("w"),sr=si("M"),lr=si("y"),ur=ui("milliseconds"),dr=ui("seconds"),cr=ui("minutes"),hr=ui("hours"),fr=ui("days"),gr=ui("months"),mr=ui("years"),pr=Math.round,vr={s:45,m:45,h:22,d:26,M:11},br=Math.abs,yr=Se.prototype;return yr.abs=Kn,yr.add=$n,yr.subtract=ti,yr.as=ri,yr.asMilliseconds=er,yr.asSeconds=nr,yr.asMinutes=ir,yr.asHours=ar,yr.asDays=rr,yr.asWeeks=or,yr.asMonths=sr,yr.asYears=lr,yr.valueOf=oi,yr._bubble=ni,yr.get=li,yr.milliseconds=ur,yr.seconds=dr,yr.minutes=cr,yr.hours=hr,yr.days=fr,yr.weeks=di,yr.months=gr,yr.years=mr,yr.humanize=mi,yr.toISOString=pi,yr.toString=pi,yr.toJSON=pi,yr.locale=gn,yr.localeData=mn,yr.toIsoString=M("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",pi),yr.lang=Ga,Z("X",0,0,"unix"),Z("x",0,0,"valueOf"),$("x",Ji),$("X",$i),it("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,n){n._d=new Date(_(t))}),t.version="2.17.1",i(xe),t.fn=Qa,t.min=_e,t.max=we,t.now=za,t.utc=h,t.unix=zn,t.months=Gn,t.isDate=l,t.locale=te,t.invalid=p,t.duration=He,t.isMoment=x,t.weekdays=Zn,t.parseZone=Nn,t.localeData=ie,t.isDuration=Me,t.monthsShort=qn,t.weekdaysMin=Jn,t.defineLocale=ee,t.updateLocale=ne,t.locales=ae,t.weekdaysShort=Xn,t.normalizeUnits=Y,t.relativeTimeRounding=fi,t.relativeTimeThreshold=gi,t.calendarFormat=Ze,t.prototype=Qa,t})},{}],7:[function(t,e,n){var i=t(28)();t(26)(i),t(42)(i),t(22)(i),t(31)(i),t(25)(i),t(21)(i),t(23)(i),t(24)(i),t(29)(i),t(33)(i),t(34)(i),t(32)(i),t(35)(i),t(30)(i),t(27)(i),t(36)(i),t(37)(i),t(38)(i),t(39)(i),t(40)(i),t(45)(i),t(43)(i),t(44)(i),t(46)(i),t(47)(i),t(48)(i),t(15)(i),t(16)(i),t(17)(i),t(18)(i),t(19)(i),t(20)(i),t(8)(i),t(9)(i),t(10)(i),t(11)(i),t(12)(i),t(13)(i),t(14)(i),window.Chart=e.exports=i},{10:10,11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19,20:20,21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29,30:30,31:31,32:32,33:33,34:34,35:35,36:36,37:37,38:38,39:39,40:40,42:42,43:43,44:44,45:45,46:46,47:47,48:48,8:8,9:9}],8:[function(t,e,n){"use strict";e.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},{}],9:[function(t,e,n){"use strict";e.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},{}],10:[function(t,e,n){"use strict";e.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t){t.Line=function(e,n){return n.type="line",new t(e,n)}}},{}],12:[function(t,e,n){"use strict";e.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},{}],13:[function(t,e,n){"use strict";e.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t){var e={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-1"}],yAxes:[{type:"linear",position:"left",id:"y-axis-1"}]},tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}};t.defaults.scatter=e,t.controllers.scatter=t.controllers.line,t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bar={hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}},t.controllers.bar=t.DatasetController.extend({dataElementType:t.elements.Rectangle,initialize:function(e,n){t.DatasetController.prototype.initialize.call(this,e,n);var i=this,a=i.getMeta(),r=i.getDataset();a.stack=r.stack,a.bar=!0},getStackCount:function(){var t=this,n=t.getMeta(),i=t.getScaleForId(n.yAxisID),a=[];return e.each(t.chart.data.datasets,function(e,n){var r=t.chart.getDatasetMeta(n);r.bar&&t.chart.isDatasetVisible(n)&&(i.options.stacked===!1||i.options.stacked===!0&&a.indexOf(r.stack)===-1||void 0===i.options.stacked&&(void 0===r.stack||a.indexOf(r.stack)===-1))&&a.push(r.stack)},t),a.length},update:function(t){var n=this;e.each(n.getMeta().data,function(e,i){n.updateElement(e,i,t)},n)},updateElement:function(t,n,i){var a=this,r=a.getMeta(),o=a.getScaleForId(r.xAxisID),s=a.getScaleForId(r.yAxisID),l=s.getBasePixel(),u=a.chart.options.elements.rectangle,d=t.custom||{},c=a.getDataset();t._xScale=o,t._yScale=s,t._datasetIndex=a.index,t._index=n;var h=a.getRuler(n);t._model={x:a.calculateBarX(n,a.index,h),y:i?l:a.calculateBarY(n,a.index),label:a.chart.data.labels[n],datasetLabel:c.label,horizontal:!1,base:i?l:a.calculateBarBase(a.index,n),width:a.calculateBarWidth(h),backgroundColor:d.backgroundColor?d.backgroundColor:e.getValueAtIndexOrDefault(c.backgroundColor,n,u.backgroundColor),borderSkipped:d.borderSkipped?d.borderSkipped:u.borderSkipped,borderColor:d.borderColor?d.borderColor:e.getValueAtIndexOrDefault(c.borderColor,n,u.borderColor),borderWidth:d.borderWidth?d.borderWidth:e.getValueAtIndexOrDefault(c.borderWidth,n,u.borderWidth)},t.pivot()},calculateBarBase:function(t,e){var n=this,i=n.getMeta(),a=n.getScaleForId(i.yAxisID),r=a.getBaseValue(),o=r;if(a.options.stacked===!0||void 0===a.options.stacked&&void 0!==i.stack){for(var s=n.chart,l=s.data.datasets,u=Number(l[t].data[e]),d=0;d<t;d++){var c=l[d],h=s.getDatasetMeta(d);if(h.bar&&h.yAxisID===a.id&&s.isDatasetVisible(d)&&i.stack===h.stack){var f=Number(c.data[e]);r+=u<0?Math.min(f,o):Math.max(f,o)}}return a.getPixelForValue(r)}return a.getBasePixel()},getRuler:function(){var t=this,e=t.getMeta(),n=t.getScaleForId(e.xAxisID),i=t.getStackCount(),a=n.width/n.ticks.length,r=a*n.options.categoryPercentage,o=(a-a*n.options.categoryPercentage)/2,s=r/i,l=s*n.options.barPercentage,u=s-s*n.options.barPercentage;return{stackCount:i,tickWidth:a,categoryWidth:r,categorySpacing:o,fullBarWidth:s,barWidth:l,barSpacing:u}},calculateBarWidth:function(t){var e=this,n=e.getMeta(),i=e.getScaleForId(n.xAxisID);return i.options.barThickness?i.options.barThickness:t.barWidth},getStackIndex:function(t){var e,n,i=this,a=i.chart.getDatasetMeta(t),r=i.getScaleForId(a.yAxisID),o=[a.stack];for(n=0;n<t;++n)e=this.chart.getDatasetMeta(n),e.bar&&this.chart.isDatasetVisible(n)&&(r.options.stacked===!1||r.options.stacked===!0&&o.indexOf(e.stack)===-1||void 0===r.options.stacked&&(void 0===e.stack||o.indexOf(e.stack)===-1))&&o.push(e.stack);return o.length-1},calculateBarX:function(t,e,n){var i=this,a=i.getMeta(),r=i.getScaleForId(a.xAxisID),o=i.getStackIndex(e),s=r.getPixelForValue(null,t,e,i.chart.isCombo);return s-=i.chart.isCombo?n.tickWidth/2:0,s+n.barWidth/2+n.categorySpacing+n.barWidth*o+n.barSpacing/2+n.barSpacing*o},calculateBarY:function(t,e){var n=this,i=n.getMeta(),a=n.getScaleForId(i.yAxisID),r=Number(n.getDataset().data[t]);if(a.options.stacked||void 0===a.options.stacked&&void 0!==i.stack){for(var o=a.getBaseValue(),s=o,l=o,u=0;u<e;u++){var d=n.chart.data.datasets[u],c=n.chart.getDatasetMeta(u);if(c.bar&&c.yAxisID===a.id&&n.chart.isDatasetVisible(u)&&i.stack===c.stack){var h=Number(d.data[t]);h<0?l+=h||0:s+=h||0}}return r<0?a.getPixelForValue(l+r):a.getPixelForValue(s+r)}return a.getPixelForValue(r)},draw:function(e){var n,i,a=this,r=e||1,o=a.getMeta().data,s=a.getDataset();for(t.canvasHelpers.clipArea(a.chart.chart.ctx,a.chart.chartArea),n=0,i=o.length;n<i;++n){var l=s.data[n];null===l||void 0===l||isNaN(l)||o[n].transition(r).draw()}t.canvasHelpers.unclipArea(a.chart.chart.ctx)},setHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=t._model;r.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:e.getValueAtIndexOrDefault(n.hoverBackgroundColor,i,e.getHoverColor(r.backgroundColor)),r.borderColor=a.hoverBorderColor?a.hoverBorderColor:e.getValueAtIndexOrDefault(n.hoverBorderColor,i,e.getHoverColor(r.borderColor)),r.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:e.getValueAtIndexOrDefault(n.hoverBorderWidth,i,r.borderWidth)},removeHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=t._model,o=this.chart.options.elements.rectangle;r.backgroundColor=a.backgroundColor?a.backgroundColor:e.getValueAtIndexOrDefault(n.backgroundColor,i,o.backgroundColor),r.borderColor=a.borderColor?a.borderColor:e.getValueAtIndexOrDefault(n.borderColor,i,o.borderColor),r.borderWidth=a.borderWidth?a.borderWidth:e.getValueAtIndexOrDefault(n.borderWidth,i,o.borderWidth)}}),t.defaults.horizontalBar={hover:{mode:"label"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index<e.labels.length&&(n=e.labels[t[0].index])),n},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n+": "+t.xLabel}}}},t.controllers.horizontalBar=t.controllers.bar.extend({getStackCount:function(){var t=this,n=t.getMeta(),i=t.getScaleForId(n.xAxisID),a=[];return e.each(t.chart.data.datasets,function(e,n){var r=t.chart.getDatasetMeta(n);r.bar&&t.chart.isDatasetVisible(n)&&(i.options.stacked===!1||i.options.stacked===!0&&a.indexOf(r.stack)===-1||void 0===i.options.stacked&&(void 0===r.stack||a.indexOf(r.stack)===-1))&&a.push(r.stack)},t),a.length},updateElement:function(t,n,i){var a=this,r=a.getMeta(),o=a.getScaleForId(r.xAxisID),s=a.getScaleForId(r.yAxisID),l=o.getBasePixel(),u=t.custom||{},d=a.getDataset(),c=a.chart.options.elements.rectangle;t._xScale=o,t._yScale=s,t._datasetIndex=a.index,t._index=n;var h=a.getRuler(n);t._model={x:i?l:a.calculateBarX(n,a.index),y:a.calculateBarY(n,a.index,h),label:a.chart.data.labels[n],datasetLabel:d.label,horizontal:!0,base:i?l:a.calculateBarBase(a.index,n),height:a.calculateBarHeight(h),backgroundColor:u.backgroundColor?u.backgroundColor:e.getValueAtIndexOrDefault(d.backgroundColor,n,c.backgroundColor),borderSkipped:u.borderSkipped?u.borderSkipped:c.borderSkipped,borderColor:u.borderColor?u.borderColor:e.getValueAtIndexOrDefault(d.borderColor,n,c.borderColor),borderWidth:u.borderWidth?u.borderWidth:e.getValueAtIndexOrDefault(d.borderWidth,n,c.borderWidth)},t.pivot()},calculateBarBase:function(t,e){var n=this,i=n.getMeta(),a=n.getScaleForId(i.xAxisID),r=a.getBaseValue(),o=r;if(a.options.stacked||void 0===a.options.stacked&&void 0!==i.stack){for(var s=n.chart,l=s.data.datasets,u=Number(l[t].data[e]),d=0;d<t;d++){var c=l[d],h=s.getDatasetMeta(d);if(h.bar&&h.xAxisID===a.id&&s.isDatasetVisible(d)&&i.stack===h.stack){var f=Number(c.data[e]);r+=u<0?Math.min(f,o):Math.max(f,o)}}return a.getPixelForValue(r)}return a.getBasePixel()},getRuler:function(){var t=this,e=t.getMeta(),n=t.getScaleForId(e.yAxisID),i=t.getStackCount(),a=n.height/n.ticks.length,r=a*n.options.categoryPercentage,o=(a-a*n.options.categoryPercentage)/2,s=r/i,l=s*n.options.barPercentage,u=s-s*n.options.barPercentage;return{stackCount:i,tickHeight:a,categoryHeight:r,categorySpacing:o,fullBarHeight:s,barHeight:l,barSpacing:u}},calculateBarHeight:function(t){var e=this,n=e.getMeta(),i=e.getScaleForId(n.yAxisID);return i.options.barThickness?i.options.barThickness:t.barHeight},getStackIndex:function(t){var e,n,i=this,a=i.chart.getDatasetMeta(t),r=i.getScaleForId(a.xAxisID),o=[a.stack];for(n=0;n<t;++n)e=this.chart.getDatasetMeta(n),e.bar&&this.chart.isDatasetVisible(n)&&(r.options.stacked===!1||r.options.stacked===!0&&o.indexOf(e.stack)===-1||void 0===r.options.stacked&&(void 0===e.stack||o.indexOf(e.stack)===-1))&&o.push(e.stack);return o.length-1},calculateBarX:function(t,e){var n=this,i=n.getMeta(),a=n.getScaleForId(i.xAxisID),r=Number(n.getDataset().data[t]);if(a.options.stacked||void 0===a.options.stacked&&void 0!==i.stack){for(var o=a.getBaseValue(),s=o,l=o,u=0;u<e;u++){var d=n.chart.data.datasets[u],c=n.chart.getDatasetMeta(u);if(c.bar&&c.xAxisID===a.id&&n.chart.isDatasetVisible(u)&&i.stack===c.stack){var h=Number(d.data[t]);h<0?l+=h||0:s+=h||0}}return r<0?a.getPixelForValue(l+r):a.getPixelForValue(s+r)}return a.getPixelForValue(r)},calculateBarY:function(t,e,n){var i=this,a=i.getMeta(),r=i.getScaleForId(a.yAxisID),o=i.getStackIndex(e),s=r.getPixelForValue(null,t,e,i.chart.isCombo);return s-=i.chart.isCombo?n.tickHeight/2:0,s+n.barHeight/2+n.categorySpacing+n.barHeight*o+n.barSpacing/2+n.barSpacing*o}})}},{}],16:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bubble={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){var n=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return n+": ("+t.xLabel+", "+t.yLabel+", "+i.r+")"}}}},t.controllers.bubble=t.DatasetController.extend({dataElementType:t.elements.Point,update:function(t){var n=this,i=n.getMeta(),a=i.data;e.each(a,function(e,i){n.updateElement(e,i,t)})},updateElement:function(n,i,a){var r=this,o=r.getMeta(),s=r.getScaleForId(o.xAxisID),l=r.getScaleForId(o.yAxisID),u=n.custom||{},d=r.getDataset(),c=d.data[i],h=r.chart.options.elements.point,f=r.index;e.extend(n,{_xScale:s,_yScale:l,_datasetIndex:f,_index:i,_model:{x:a?s.getPixelForDecimal(.5):s.getPixelForValue("object"==typeof c?c:NaN,i,f,r.chart.isCombo),y:a?l.getBasePixel():l.getPixelForValue(c,i,f),radius:a?0:u.radius?u.radius:r.getRadius(c),hitRadius:u.hitRadius?u.hitRadius:e.getValueAtIndexOrDefault(d.hitRadius,i,h.hitRadius)}}),t.DatasetController.prototype.removeHoverStyle.call(r,n,h);var g=n._model;g.skip=u.skip?u.skip:isNaN(g.x)||isNaN(g.y),n.pivot()},getRadius:function(t){return t.r||this.chart.options.elements.point.radius},setHoverStyle:function(n){var i=this;t.DatasetController.prototype.setHoverStyle.call(i,n);var a=i.chart.data.datasets[n._datasetIndex],r=n._index,o=n.custom||{},s=n._model;s.radius=o.hoverRadius?o.hoverRadius:e.getValueAtIndexOrDefault(a.hoverRadius,r,i.chart.options.elements.point.hoverRadius)+i.getRadius(a.data[r])},removeHoverStyle:function(e){var n=this;t.DatasetController.prototype.removeHoverStyle.call(n,e,n.chart.options.elements.point);var i=n.chart.data.datasets[e._datasetIndex].data[e._index],a=e.custom||{},r=e._model;r.radius=a.radius?a.radius:n.getRadius(i)}})}},{}],17:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=t.defaults;n.doughnut={animation:{animateRotate:!0,animateScale:!1},aspectRatio:1,hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),e.push("</li>");return e.push("</ul>"),e.join("")},legend:{labels:{generateLabels:function(t){var n=t.data;return n.labels.length&&n.datasets.length?n.labels.map(function(i,a){var r=t.getDatasetMeta(0),o=n.datasets[0],s=r.data[a],l=s&&s.custom||{},u=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=l.backgroundColor?l.backgroundColor:u(o.backgroundColor,a,d.backgroundColor),h=l.borderColor?l.borderColor:u(o.borderColor,a,d.borderColor),f=l.borderWidth?l.borderWidth:u(o.borderWidth,a,d.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(o.data[a])||r.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)a=o.getDatasetMeta(n),a.data[r]&&(a.data[r].hidden=!a.data[r].hidden);o.update()}},cutoutPercentage:50,rotation:Math.PI*-.5,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,n){var i=n.labels[t.index],a=": "+n.datasets[t.datasetIndex].data[t.index];return e.isArray(i)?(i=i.slice(),i[0]+=a):i+=a,i}}}},n.pie=e.clone(n.doughnut),e.extend(n.pie,{cutoutPercentage:0}),t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,getRingIndex:function(t){for(var e=0,n=0;n<t;++n)this.chart.isDatasetVisible(n)&&++e;return e},update:function(t){var n=this,i=n.chart,a=i.chartArea,r=i.options,o=r.elements.arc,s=a.right-a.left-o.borderWidth,l=a.bottom-a.top-o.borderWidth,u=Math.min(s,l),d={x:0,y:0},c=n.getMeta(),h=r.cutoutPercentage,f=r.circumference;if(f<2*Math.PI){var g=r.rotation%(2*Math.PI);g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0);var m=g+f,p={x:Math.cos(g),y:Math.sin(g)},v={x:Math.cos(m),y:Math.sin(m)},b=g<=0&&0<=m||g<=2*Math.PI&&2*Math.PI<=m,y=g<=.5*Math.PI&&.5*Math.PI<=m||g<=2.5*Math.PI&&2.5*Math.PI<=m,x=g<=-Math.PI&&-Math.PI<=m||g<=Math.PI&&Math.PI<=m,k=g<=.5*-Math.PI&&.5*-Math.PI<=m||g<=1.5*Math.PI&&1.5*Math.PI<=m,_=h/100,w={x:x?-1:Math.min(p.x*(p.x<0?1:_),v.x*(v.x<0?1:_)),y:k?-1:Math.min(p.y*(p.y<0?1:_),v.y*(v.y<0?1:_))},S={x:b?1:Math.max(p.x*(p.x>0?1:_),v.x*(v.x>0?1:_)),y:y?1:Math.max(p.y*(p.y>0?1:_),v.y*(v.y>0?1:_))},M={width:.5*(S.x-w.x),height:.5*(S.y-w.y)};u=Math.min(s/M.width,l/M.height),d={x:(S.x+w.x)*-.5,y:(S.y+w.y)*-.5}}i.borderWidth=n.getMaxBorderWidth(c.data),i.outerRadius=Math.max((u-i.borderWidth)/2,0),i.innerRadius=Math.max(h?i.outerRadius/100*h:0,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=d.x*i.outerRadius,i.offsetY=d.y*i.outerRadius,c.total=n.calculateTotal(),n.outerRadius=i.outerRadius-i.radiusLength*n.getRingIndex(n.index),n.innerRadius=Math.max(n.outerRadius-i.radiusLength,0),e.each(c.data,function(e,i){n.updateElement(e,i,t)})},updateElement:function(t,n,i){var a=this,r=a.chart,o=r.chartArea,s=r.options,l=s.animation,u=(o.left+o.right)/2,d=(o.top+o.bottom)/2,c=s.rotation,h=s.rotation,f=a.getDataset(),g=i&&l.animateRotate?0:t.hidden?0:a.calculateCircumference(f.data[n])*(s.circumference/(2*Math.PI)),m=i&&l.animateScale?0:a.innerRadius,p=i&&l.animateScale?0:a.outerRadius,v=e.getValueAtIndexOrDefault;e.extend(t,{_datasetIndex:a.index,_index:n,_model:{x:u+r.offsetX,y:d+r.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:p,innerRadius:m,label:v(f.label,n,r.data.labels[n])}});var b=t._model;this.removeHoverStyle(t),i&&l.animateRotate||(0===n?b.startAngle=s.rotation:b.startAngle=a.getMeta().data[n-1]._model.endAngle,b.endAngle=b.startAngle+b.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,n=this.getDataset(),i=this.getMeta(),a=0;return e.each(i.data,function(e,i){t=n.data[i],isNaN(t)||e.hidden||(a+=Math.abs(t))}),a},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,a=this.index,r=t.length,o=0;o<r;o++)e=t[o]._model?t[o]._model.borderWidth:0,n=t[o]._chart?t[o]._chart.config.data.datasets[a].hoverBorderWidth:0,i=e>i?e:i,i=n>i?n:i;return i}})}},{}],18:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return n.getValueOrDefault(t.showLine,e.showLines)}var n=t.helpers;t.defaults.line={showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},t.controllers.line=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,update:function(t){var i,a,r,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],d=o.chart.options,c=d.elements.line,h=o.getScaleForId(s.yAxisID),f=o.getDataset(),g=e(f,d);for(g&&(r=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=h,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:d.spanGaps,tension:r.tension?r.tension:n.getValueOrDefault(f.lineTension,c.tension),backgroundColor:r.backgroundColor?r.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:f.borderWidth||c.borderWidth,borderColor:r.borderColor?r.borderColor:f.borderColor||c.borderColor,borderCapStyle:r.borderCapStyle?r.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:r.borderDash?r.borderDash:f.borderDash||c.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:r.fill?r.fill:void 0!==f.fill?f.fill:c.fill,steppedLine:r.steppedLine?r.steppedLine:n.getValueOrDefault(f.steppedLine,c.stepped),cubicInterpolationMode:r.cubicInterpolationMode?r.cubicInterpolationMode:n.getValueOrDefault(f.cubicInterpolationMode,c.cubicInterpolationMode),scaleTop:h.top,scaleBottom:h.bottom,scaleZero:h.getBasePixel()},l.pivot()),i=0,a=u.length;i<a;++i)o.updateElement(u[i],i,t);for(g&&0!==l._model.tension&&o.updateBezierControlPoints(),i=0,a=u.length;i<a;++i)u[i].pivot()},getPointBackgroundColor:function(t,e){var i=this.chart.options.elements.point.backgroundColor,a=this.getDataset(),r=t.custom||{};return r.backgroundColor?i=r.backgroundColor:a.pointBackgroundColor?i=n.getValueAtIndexOrDefault(a.pointBackgroundColor,e,i):a.backgroundColor&&(i=a.backgroundColor),i},getPointBorderColor:function(t,e){var i=this.chart.options.elements.point.borderColor,a=this.getDataset(),r=t.custom||{};return r.borderColor?i=r.borderColor:a.pointBorderColor?i=n.getValueAtIndexOrDefault(a.pointBorderColor,e,i):a.borderColor&&(i=a.borderColor),i},getPointBorderWidth:function(t,e){var i=this.chart.options.elements.point.borderWidth,a=this.getDataset(),r=t.custom||{};return isNaN(r.borderWidth)?isNaN(a.pointBorderWidth)?isNaN(a.borderWidth)||(i=a.borderWidth):i=n.getValueAtIndexOrDefault(a.pointBorderWidth,e,i):i=r.borderWidth,i},updateElement:function(t,e,i){var a,r,o=this,s=o.getMeta(),l=t.custom||{},u=o.getDataset(),d=o.index,c=u.data[e],h=o.getScaleForId(s.yAxisID),f=o.getScaleForId(s.xAxisID),g=o.chart.options.elements.point,m=o.chart.data.labels||[],p=1===m.length||1===u.data.length||o.chart.isCombo;void 0!==u.radius&&void 0===u.pointRadius&&(u.pointRadius=u.radius),void 0!==u.hitRadius&&void 0===u.pointHitRadius&&(u.pointHitRadius=u.hitRadius),a=f.getPixelForValue("object"==typeof c?c:NaN,e,d,p),r=i?h.getBasePixel():o.calculatePointY(c,e,d),t._xScale=f,t._yScale=h,t._datasetIndex=d,t._index=e,t._model={x:a,y:r,skip:l.skip||isNaN(a)||isNaN(r),radius:l.radius||n.getValueAtIndexOrDefault(u.pointRadius,e,g.radius),pointStyle:l.pointStyle||n.getValueAtIndexOrDefault(u.pointStyle,e,g.pointStyle),backgroundColor:o.getPointBackgroundColor(t,e),borderColor:o.getPointBorderColor(t,e),borderWidth:o.getPointBorderWidth(t,e),tension:s.dataset._model?s.dataset._model.tension:0,steppedLine:!!s.dataset._model&&s.dataset._model.steppedLine,hitRadius:l.hitRadius||n.getValueAtIndexOrDefault(u.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,n){var i,a,r,o=this,s=o.chart,l=o.getMeta(),u=o.getScaleForId(l.yAxisID),d=0,c=0;if(u.options.stacked){for(i=0;i<n;i++)if(a=s.data.datasets[i],r=s.getDatasetMeta(i),"line"===r.type&&r.yAxisID===u.id&&s.isDatasetVisible(i)){var h=Number(u.getRightValue(a.data[e]));h<0?c+=h||0:d+=h||0}var f=Number(u.getRightValue(t));return f<0?u.getPixelForValue(c+f):u.getPixelForValue(d+f)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){function t(t,e,n){return Math.max(Math.min(t,n),e)}var e,i,a,r,o,s=this,l=s.getMeta(),u=s.chart.chartArea,d=l.data||[];if(l.dataset._model.spanGaps&&(d=d.filter(function(t){return!t._model.skip})),"monotone"===l.dataset._model.cubicInterpolationMode)n.splineCurveMonotone(d);else for(e=0,i=d.length;e<i;++e)a=d[e],r=a._model,o=n.splineCurve(n.previousItem(d,e)._model,r,n.nextItem(d,e)._model,l.dataset._model.tension),r.controlPointPreviousX=o.previous.x,r.controlPointPreviousY=o.previous.y,r.controlPointNextX=o.next.x,r.controlPointNextY=o.next.y;if(s.chart.options.elements.line.capBezierPoints)for(e=0,i=d.length;e<i;++e)r=d[e]._model,r.controlPointPreviousX=t(r.controlPointPreviousX,u.left,u.right),r.controlPointPreviousY=t(r.controlPointPreviousY,u.top,u.bottom),r.controlPointNextX=t(r.controlPointNextX,u.left,u.right),r.controlPointNextY=t(r.controlPointNextY,u.top,u.bottom)},draw:function(n){var i,a,r=this,o=r.getMeta(),s=o.data||[],l=n||1;for(i=0,a=s.length;i<a;++i)s[i].transition(l);for(t.canvasHelpers.clipArea(r.chart.chart.ctx,r.chart.chartArea),e(r.getDataset(),r.chart.options)&&o.dataset.transition(l).draw(),t.canvasHelpers.unclipArea(r.chart.chart.ctx),i=0,a=s.length;i<a;++i)s[i].draw(r.chart.chartArea)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,a=t.custom||{},r=t._model;r.radius=a.hoverRadius||n.getValueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),r.backgroundColor=a.hoverBackgroundColor||n.getValueAtIndexOrDefault(e.pointHoverBackgroundColor,i,n.getHoverColor(r.backgroundColor)),r.borderColor=a.hoverBorderColor||n.getValueAtIndexOrDefault(e.pointHoverBorderColor,i,n.getHoverColor(r.borderColor)),r.borderWidth=a.hoverBorderWidth||n.getValueAtIndexOrDefault(e.pointHoverBorderWidth,i,r.borderWidth)},removeHoverStyle:function(t){var e=this,i=e.chart.data.datasets[t._datasetIndex],a=t._index,r=t.custom||{},o=t._model;void 0!==i.radius&&void 0===i.pointRadius&&(i.pointRadius=i.radius),o.radius=r.radius||n.getValueAtIndexOrDefault(i.pointRadius,a,e.chart.options.elements.point.radius),o.backgroundColor=e.getPointBackgroundColor(t,a),o.borderColor=e.getPointBorderColor(t,a),o.borderWidth=e.getPointBorderWidth(t,a)}})}},{}],19:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.polarArea={scale:{type:"radialLinear",lineArc:!0,ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,aspectRatio:1,legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');var n=t.data,i=n.datasets,a=n.labels;if(i.length)for(var r=0;r<i[0].data.length;++r)e.push('<li><span style="background-color:'+i[0].backgroundColor[r]+'"></span>'),a[r]&&e.push(a[r]),e.push("</li>");return e.push("</ul>"),e.join("");
|
13 |
+
},legend:{labels:{generateLabels:function(t){var n=t.data;return n.labels.length&&n.datasets.length?n.labels.map(function(i,a){var r=t.getDatasetMeta(0),o=n.datasets[0],s=r.data[a],l=s.custom||{},u=e.getValueAtIndexOrDefault,d=t.options.elements.arc,c=l.backgroundColor?l.backgroundColor:u(o.backgroundColor,a,d.backgroundColor),h=l.borderColor?l.borderColor:u(o.borderColor,a,d.borderColor),f=l.borderWidth?l.borderWidth:u(o.borderWidth,a,d.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(o.data[a])||r.data[a].hidden,index:a}}):[]}},onClick:function(t,e){var n,i,a,r=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n<i;++n)a=o.getDatasetMeta(n),a.data[r].hidden=!a.data[r].hidden;o.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}},t.controllers.polarArea=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,update:function(t){var n=this,i=n.chart,a=i.chartArea,r=n.getMeta(),o=i.options,s=o.elements.arc,l=Math.min(a.right-a.left,a.bottom-a.top);i.outerRadius=Math.max((l-s.borderWidth/2)/2,0),i.innerRadius=Math.max(o.cutoutPercentage?i.outerRadius/100*o.cutoutPercentage:1,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),n.outerRadius=i.outerRadius-i.radiusLength*n.index,n.innerRadius=n.outerRadius-i.radiusLength,r.count=n.countVisibleElements(),e.each(r.data,function(e,i){n.updateElement(e,i,t)})},updateElement:function(t,n,i){for(var a=this,r=a.chart,o=a.getDataset(),s=r.options,l=s.animation,u=r.scale,d=e.getValueAtIndexOrDefault,c=r.data.labels,h=a.calculateCircumference(o.data[n]),f=u.xCenter,g=u.yCenter,m=0,p=a.getMeta(),v=0;v<n;++v)isNaN(o.data[v])||p.data[v].hidden||++m;var b=s.startAngle,y=t.hidden?0:u.getDistanceFromCenterForValue(o.data[n]),x=b+h*m,k=x+(t.hidden?0:h),_=l.animateScale?0:u.getDistanceFromCenterForValue(o.data[n]);e.extend(t,{_datasetIndex:a.index,_index:n,_scale:u,_model:{x:f,y:g,innerRadius:0,outerRadius:i?_:y,startAngle:i&&l.animateRotate?b:x,endAngle:i&&l.animateRotate?b:k,label:d(c,n,c[n])}}),a.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),n=this.getMeta(),i=0;return e.each(n.data,function(e,n){isNaN(t.data[n])||e.hidden||i++}),i},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{}],20:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.radar={aspectRatio:1,scale:{type:"radialLinear"},elements:{line:{tension:0}}},t.controllers.radar=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,linkScales:e.noop,update:function(t){var n=this,i=n.getMeta(),a=i.dataset,r=i.data,o=a.custom||{},s=n.getDataset(),l=n.chart.options.elements.line,u=n.chart.scale;void 0!==s.tension&&void 0===s.lineTension&&(s.lineTension=s.tension),e.extend(i.dataset,{_datasetIndex:n.index,_children:r,_loop:!0,_model:{tension:o.tension?o.tension:e.getValueOrDefault(s.lineTension,l.tension),backgroundColor:o.backgroundColor?o.backgroundColor:s.backgroundColor||l.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:s.borderWidth||l.borderWidth,borderColor:o.borderColor?o.borderColor:s.borderColor||l.borderColor,fill:o.fill?o.fill:void 0!==s.fill?s.fill:l.fill,borderCapStyle:o.borderCapStyle?o.borderCapStyle:s.borderCapStyle||l.borderCapStyle,borderDash:o.borderDash?o.borderDash:s.borderDash||l.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:s.borderDashOffset||l.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:s.borderJoinStyle||l.borderJoinStyle,scaleTop:u.top,scaleBottom:u.bottom,scaleZero:u.getBasePosition()}}),i.dataset.pivot(),e.each(r,function(e,i){n.updateElement(e,i,t)},n),n.updateBezierControlPoints()},updateElement:function(t,n,i){var a=this,r=t.custom||{},o=a.getDataset(),s=a.chart.scale,l=a.chart.options.elements.point,u=s.getPointPositionForValue(n,o.data[n]);e.extend(t,{_datasetIndex:a.index,_index:n,_scale:s,_model:{x:i?s.xCenter:u.x,y:i?s.yCenter:u.y,tension:r.tension?r.tension:e.getValueOrDefault(o.lineTension,a.chart.options.elements.line.tension),radius:r.radius?r.radius:e.getValueAtIndexOrDefault(o.pointRadius,n,l.radius),backgroundColor:r.backgroundColor?r.backgroundColor:e.getValueAtIndexOrDefault(o.pointBackgroundColor,n,l.backgroundColor),borderColor:r.borderColor?r.borderColor:e.getValueAtIndexOrDefault(o.pointBorderColor,n,l.borderColor),borderWidth:r.borderWidth?r.borderWidth:e.getValueAtIndexOrDefault(o.pointBorderWidth,n,l.borderWidth),pointStyle:r.pointStyle?r.pointStyle:e.getValueAtIndexOrDefault(o.pointStyle,n,l.pointStyle),hitRadius:r.hitRadius?r.hitRadius:e.getValueAtIndexOrDefault(o.hitRadius,n,l.hitRadius)}}),t._model.skip=r.skip?r.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,n=this.getMeta();e.each(n.data,function(i,a){var r=i._model,o=e.splineCurve(e.previousItem(n.data,a,!0)._model,r,e.nextItem(n.data,a,!0)._model,r.tension);r.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),r.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),r.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),r.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),i.pivot()})},draw:function(t){var n=this.getMeta(),i=t||1;e.each(n.data,function(t){t.transition(i)}),n.dataset.transition(i).draw(),e.each(n.data,function(t){t.draw()})},setHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},a=t._index,r=t._model;r.radius=i.hoverRadius?i.hoverRadius:e.getValueAtIndexOrDefault(n.pointHoverRadius,a,this.chart.options.elements.point.hoverRadius),r.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:e.getValueAtIndexOrDefault(n.pointHoverBackgroundColor,a,e.getHoverColor(r.backgroundColor)),r.borderColor=i.hoverBorderColor?i.hoverBorderColor:e.getValueAtIndexOrDefault(n.pointHoverBorderColor,a,e.getHoverColor(r.borderColor)),r.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:e.getValueAtIndexOrDefault(n.pointHoverBorderWidth,a,r.borderWidth)},removeHoverStyle:function(t){var n=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},a=t._index,r=t._model,o=this.chart.options.elements.point;r.radius=i.radius?i.radius:e.getValueAtIndexOrDefault(n.radius,a,o.radius),r.backgroundColor=i.backgroundColor?i.backgroundColor:e.getValueAtIndexOrDefault(n.pointBackgroundColor,a,o.backgroundColor),r.borderColor=i.borderColor?i.borderColor:e.getValueAtIndexOrDefault(n.pointBorderColor,a,o.borderColor),r.borderWidth=i.borderWidth?i.borderWidth:e.getValueAtIndexOrDefault(n.pointBorderWidth,a,o.borderWidth)}})}},{}],21:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:e.noop,onComplete:e.noop},t.Animation=t.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var a=this;i||(t.animating=!0);for(var r=0;r<a.animations.length;++r)if(a.animations[r].chartInstance===t)return void(a.animations[r].animationObject=e);a.animations.push({chartInstance:t,animationObject:e}),1===a.animations.length&&a.requestAnimationFrame()},cancelAnimation:function(t){var n=e.findIndex(this.animations,function(e){return e.chartInstance===t});n!==-1&&(this.animations.splice(n,1),t.animating=!1)},requestAnimationFrame:function(){var t=this;null===t.request&&(t.request=e.requestAnimFrame.call(window,function(){t.request=null,t.startDigest()}))},startDigest:function(){var t=this,e=Date.now(),n=0;t.dropFrames>1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1);for(var i=0;i<t.animations.length;)null===t.animations[i].animationObject.currentStep&&(t.animations[i].animationObject.currentStep=0),t.animations[i].animationObject.currentStep+=1+n,t.animations[i].animationObject.currentStep>t.animations[i].animationObject.numSteps&&(t.animations[i].animationObject.currentStep=t.animations[i].animationObject.numSteps),t.animations[i].animationObject.render(t.animations[i].chartInstance,t.animations[i].animationObject),t.animations[i].animationObject.onAnimationProgress&&t.animations[i].animationObject.onAnimationProgress.call&&t.animations[i].animationObject.onAnimationProgress.call(t.animations[i].chartInstance,t.animations[i]),t.animations[i].animationObject.currentStep===t.animations[i].animationObject.numSteps?(t.animations[i].animationObject.onAnimationComplete&&t.animations[i].animationObject.onAnimationComplete.call&&t.animations[i].animationObject.onAnimationComplete.call(t.animations[i].chartInstance,t.animations[i]),t.animations[i].chartInstance.animating=!1,t.animations.splice(i,1)):++i;var a=Date.now(),r=(a-e)/t.frameDuration;t.dropFrames+=r,t.animations.length>0&&t.requestAnimationFrame()}}}},{}],22:[function(t,e,n){"use strict";e.exports=function(t){var e=t.canvasHelpers={};e.drawPoint=function(e,n,i,a,r){var o,s,l,u,d,c;if("object"==typeof n&&(o=n.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return void e.drawImage(n,a-n.width/2,r-n.height/2);if(!(isNaN(i)||i<=0)){switch(n){default:e.beginPath(),e.arc(a,r,i,0,2*Math.PI),e.closePath(),e.fill();break;case"triangle":e.beginPath(),s=3*i/Math.sqrt(3),d=s*Math.sqrt(3)/2,e.moveTo(a-s/2,r+d/3),e.lineTo(a+s/2,r+d/3),e.lineTo(a,r-2*d/3),e.closePath(),e.fill();break;case"rect":c=1/Math.SQRT2*i,e.beginPath(),e.fillRect(a-c,r-c,2*c,2*c),e.strokeRect(a-c,r-c,2*c,2*c);break;case"rectRounded":var h=i/Math.SQRT2,f=a-h,g=r-h,m=Math.SQRT2*i;t.helpers.drawRoundedRectangle(e,f,g,m,m,i/2),e.fill();break;case"rectRot":c=1/Math.SQRT2*i,e.beginPath(),e.moveTo(a-c,r),e.lineTo(a,r+c),e.lineTo(a+c,r),e.lineTo(a,r-c),e.closePath(),e.fill();break;case"cross":e.beginPath(),e.moveTo(a,r+i),e.lineTo(a,r-i),e.moveTo(a-i,r),e.lineTo(a+i,r),e.closePath();break;case"crossRot":e.beginPath(),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,e.moveTo(a-l,r-u),e.lineTo(a+l,r+u),e.moveTo(a-l,r+u),e.lineTo(a+l,r-u),e.closePath();break;case"star":e.beginPath(),e.moveTo(a,r+i),e.lineTo(a,r-i),e.moveTo(a-i,r),e.lineTo(a+i,r),l=Math.cos(Math.PI/4)*i,u=Math.sin(Math.PI/4)*i,e.moveTo(a-l,r-u),e.lineTo(a+l,r+u),e.moveTo(a-l,r+u),e.lineTo(a+l,r-u),e.closePath();break;case"line":e.beginPath(),e.moveTo(a-i,r),e.lineTo(a+i,r),e.closePath();break;case"dash":e.beginPath(),e.moveTo(a,r),e.lineTo(a+i,r),e.closePath()}e.stroke()}},e.clipArea=function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},e.unclipArea=function(t){t.restore()}}},{}],23:[function(t,e,n){"use strict";e.exports=function(t){function e(e){e=e||{};var n=e.data=e.data||{};return n.datasets=n.datasets||[],n.labels=n.labels||[],e.options=i.configMerge(t.defaults.global,t.defaults[e.type],e.options||{}),e}function n(t){var e=t.options;e.scale?t.scale.options=e.scale:e.scales&&e.scales.xAxes.concat(e.scales.yAxes).forEach(function(e){t.scales[e.id].options=e}),t.tooltip._options=e.tooltips}var i=t.helpers,a=t.plugins,r=t.platform;t.types={},t.instances={},t.controllers={},t.Controller=function(n,a,o){var s=this;a=e(a);var l=r.acquireContext(n,a),u=l&&l.canvas,d=u&&u.height,c=u&&u.width;return o.ctx=l,o.canvas=u,o.config=a,o.width=c,o.height=d,o.aspectRatio=d?c/d:null,s.id=i.uid(),s.chart=o,s.config=a,s.options=a.options,s._bufferedRender=!1,t.instances[s.id]=s,Object.defineProperty(s,"data",{get:function(){return s.config.data}}),l&&u?(s.initialize(),s.update(),s):(console.error("Failed to create chart: can't acquire context from the given item"),s)},i.extend(t.Controller.prototype,{initialize:function(){var t=this;return a.notify(t,"beforeInit"),i.retinaScale(t.chart),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildScales(),t.initToolTip(),a.notify(t,"afterInit"),t},clear:function(){return i.clear(this.chart),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.chart,r=e.options,o=n.canvas,s=r.maintainAspectRatio&&n.aspectRatio||null,l=Math.floor(i.getMaximumWidth(o)),u=Math.floor(s?l/s:i.getMaximumHeight(o));if((n.width!==l||n.height!==u)&&(o.width=n.width=l,o.height=n.height=u,o.style.width=l+"px",o.style.height=u+"px",i.retinaScale(n),!t)){var d={width:l,height:u};a.notify(e,"resize",[d]),e.options.onResize&&e.options.onResize(e,d),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;i.each(e.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),i.each(e.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),n&&(n.id=n.id||"scale")},buildScales:function(){var e=this,n=e.options,a=e.scales={},r=[];n.scales&&(r=r.concat((n.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category"}}),(n.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear"}}))),n.scale&&r.push({options:n.scale,dtype:"radialLinear",isDefault:!0}),i.each(r,function(n){var r=n.options,o=i.getValueOrDefault(r.type,n.dtype),s=t.scaleService.getScaleConstructor(o);if(s){var l=new s({id:r.id,options:r,ctx:e.chart.ctx,chart:e});a[l.id]=l,n.isDefault&&(e.scale=l)}}),t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],a=[];if(i.each(e.data.datasets,function(i,r){var o=e.getDatasetMeta(r);o.type||(o.type=i.type||e.config.type),n.push(o.type),o.controller?o.controller.updateIndex(r):(o.controller=new t.controllers[o.type](e,r),a.push(o.controller))},e),n.length>1)for(var r=1;r<n.length;r++)if(n[r]!==n[r-1]){e.isCombo=!0;break}return a},resetElements:function(){var t=this;i.each(t.data.datasets,function(e,n){t.getDatasetMeta(n).controller.reset()},t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t,e){var r=this;if(n(r),a.notify(r,"beforeUpdate")!==!1){r.tooltip._data=r.data;var o=r.buildOrUpdateControllers();i.each(r.data.datasets,function(t,e){r.getDatasetMeta(e).controller.buildOrUpdateElements()},r),r.updateLayout(),i.each(o,function(t){t.reset()}),r.updateDatasets(),a.notify(r,"afterUpdate"),r._bufferedRender?r._bufferedRequest={lazy:e,duration:t}:r.render(t,e)}},updateLayout:function(){var e=this;a.notify(e,"beforeLayout")!==!1&&(t.layoutService.update(this,this.chart.width,this.chart.height),a.notify(e,"afterScaleUpdate"),a.notify(e,"afterLayout"))},updateDatasets:function(){var t=this;if(a.notify(t,"beforeDatasetsUpdate")!==!1){for(var e=0,n=t.data.datasets.length;e<n;++e)t.getDatasetMeta(e).controller.update();a.notify(t,"afterDatasetsUpdate")}},render:function(e,n){var r=this;if(a.notify(r,"beforeRender")!==!1){var o=r.options.animation,s=function(){a.notify(r,"afterRender");var t=o&&o.onComplete;t&&t.call&&t.call(r)};if(o&&("undefined"!=typeof e&&0!==e||"undefined"==typeof e&&0!==o.duration)){var l=new t.Animation;l.numSteps=(e||o.duration)/16.66,l.easing=o.easing,l.render=function(t,e){var n=i.easingEffects[e.easing],a=e.currentStep/e.numSteps,r=n(a);t.draw(r,a,e.currentStep)},l.onAnimationProgress=o.onProgress,l.onAnimationComplete=s,t.animationService.addAnimation(r,l,e,n)}else r.draw(),s();return r}},draw:function(t){var e=this;e.clear(),void 0!==t&&null!==t||(t=1),a.notify(e,"beforeDraw",[t])!==!1&&(i.each(e.boxes,function(t){t.draw(e.chartArea)},e),e.scale&&e.scale.draw(),e.drawDatasets(t),e.tooltip.transition(t).draw(),a.notify(e,"afterDraw",[t]))},drawDatasets:function(t){var e=this;a.notify(e,"beforeDatasetsDraw",[t])!==!1&&(i.each(e.data.datasets,function(n,i){e.isDatasetVisible(i)&&e.getDatasetMeta(i).controller.draw(t)},e,!0),a.notify(e,"afterDatasetsDraw",[t]))},getElementAtEvent:function(e){return t.Interaction.modes.single(this,e)},getElementsAtEvent:function(e){return t.Interaction.modes.label(this,e,{intersect:!0})},getElementsAtXAxis:function(e){return t.Interaction.modes["x-axis"](this,e,{intersect:!0})},getElementsAtEventForMode:function(e,n,i){var a=t.Interaction.modes[n];return"function"==typeof a?a(this,e,i):[]},getDatasetAtEvent:function(e){return t.Interaction.modes.dataset(this,e,{intersect:!0})},getDatasetMeta:function(t){var e=this,n=e.data.datasets[t];n._meta||(n._meta={});var i=n._meta[e.id];return i||(i=n._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e<n;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroy:function(){var e,n,o,s=this,l=s.chart.canvas;for(s.stop(),n=0,o=s.data.datasets.length;n<o;++n)e=s.getDatasetMeta(n),e.controller&&(e.controller.destroy(),e.controller=null);l&&(s.unbindEvents(),i.clear(s.chart),r.releaseContext(s.chart.ctx),s.chart.canvas=null,s.chart.ctx=null),a.notify(s,"destroy"),delete t.instances[s.id]},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e.chart,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e),e.tooltip.initialize()},bindEvents:function(){var t=this,e=t._listeners={},n=function(){t.eventHandler.apply(t,arguments)};i.each(t.options.events,function(i){r.addEventListener(t,i,n),e[i]=n}),t.options.responsive&&(n=function(){t.resize()},r.addEventListener(t,"resize",n),e.resize=n)},unbindEvents:function(){var t=this,e=t._listeners;e&&(delete t._listeners,i.each(e,function(e,n){r.removeEventListener(t,n,e)}))},updateHoverStyle:function(t,e,n){var i,a,r,o=n?"setHoverStyle":"removeHoverStyle";for(a=0,r=t.length;a<r;++a)i=t[a],i&&this.getDatasetMeta(i._datasetIndex).controller[o](i)},eventHandler:function(t){var e=this,n=e.tooltip;if(a.notify(e,"beforeEvent",[t])!==!1){e._bufferedRender=!0,e._bufferedRequest=null;var i=e.handleEvent(t);i|=n&&n.handleEvent(t),a.notify(e,"afterEvent",[t]);var r=e._bufferedRequest;return r?e.render(r.duration,r.lazy):i&&!e.animating&&(e.stop(),e.render(e.options.hover.animationDuration,!0)),e._bufferedRender=!1,e._bufferedRequest=null,e}},handleEvent:function(t){var e=this,n=e.options||{},a=n.hover,r=!1;return e.lastActive=e.lastActive||[],"mouseout"===t.type?e.active=[]:e.active=e.getElementsAtEventForMode(t,a.mode,a),a.onHover&&a.onHover.call(e,t.native,e.active),"mouseup"!==t.type&&"click"!==t.type||n.onClick&&n.onClick.call(e,t.native,e.active),e.lastActive.length&&e.updateHoverStyle(e.lastActive,a.mode,!1),e.active.length&&a.mode&&e.updateHoverStyle(e.active,a.mode,!0),r=!i.arrayEquals(e.active,e.lastActive),e.lastActive=e.active,r}})}},{}],24:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return t._chartjs?void t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),void a.forEach(function(e){var n="onData"+e.charAt(0).toUpperCase()+e.slice(1),a=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),r=a.apply(this,e);return i.each(t._chartjs.listeners,function(t){"function"==typeof t[n]&&t[n].apply(t,e)}),r}})}))}function n(t,e){var n=t._chartjs;if(n){var i=n.listeners,r=i.indexOf(e);r!==-1&&i.splice(r,1),i.length>0||(a.forEach(function(e){delete t[e]}),delete t._chartjs)}}var i=t.helpers,a=["push","pop","shift","splice","unshift"];t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null===e.xAxisID&&(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,n=e.dataElementType;return n&&new n({_chart:e.chart.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,n=this,i=n.getMeta(),a=n.getDataset().data||[],r=i.data;for(t=0,e=a.length;t<e;++t)r[t]=r[t]||n.createMetaData(t);i.dataset=i.dataset||n.createMetaDataset()},addElementAndReset:function(t){var e=this.createMetaData(t);this.getMeta().data.splice(t,0,e),this.updateElement(e,t,!0)},buildOrUpdateElements:function(){var t=this,i=t.getDataset(),a=i.data||(i.data=[]);t._data!==a&&(t._data&&n(t._data,t),e(a,t),t._data=a),t.resyncElements()},update:i.noop,draw:function(t){var e,n,i=t||1,a=this.getMeta().data;for(e=0,n=a.length;e<n;++e)a[e].transition(i).draw()},removeHoverStyle:function(t,e){var n=this.chart.data.datasets[t._datasetIndex],a=t._index,r=t.custom||{},o=i.getValueAtIndexOrDefault,s=t._model;s.backgroundColor=r.backgroundColor?r.backgroundColor:o(n.backgroundColor,a,e.backgroundColor),s.borderColor=r.borderColor?r.borderColor:o(n.borderColor,a,e.borderColor),s.borderWidth=r.borderWidth?r.borderWidth:o(n.borderWidth,a,e.borderWidth)},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t._index,a=t.custom||{},r=i.getValueAtIndexOrDefault,o=i.getHoverColor,s=t._model;s.backgroundColor=a.hoverBackgroundColor?a.hoverBackgroundColor:r(e.hoverBackgroundColor,n,o(s.backgroundColor)),s.borderColor=a.hoverBorderColor?a.hoverBorderColor:r(e.hoverBorderColor,n,o(s.borderColor)),s.borderWidth=a.hoverBorderWidth?a.hoverBorderWidth:r(e.hoverBorderWidth,n,s.borderWidth)},resyncElements:function(){var t=this,e=t.getMeta(),n=t.getDataset().data,i=e.data.length,a=n.length;a<i?e.data.splice(a,i-a):a>i&&t.insertElements(i,a-i)},insertElements:function(t,e){for(var n=0;n<e;++n)this.addElementAndReset(t+n)},onDataPush:function(){this.insertElements(this.getDataset().data.length-1,arguments.length)},onDataPop:function(){this.getMeta().data.pop()},onDataShift:function(){this.getMeta().data.shift()},onDataSplice:function(t,e){this.getMeta().data.splice(t,e),this.insertElements(t,arguments.length-2)},onDataUnshift:function(){this.insertElements(0,arguments.length)}}),t.DatasetController.extend=i.inherits}},{}],25:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.elements={},t.Element=function(t){e.extend(this,t),this.initialize.apply(this,arguments)},e.extend(t.Element.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=e.clone(t._model)),t._start=e.clone(t._view),t},transition:function(t){var n=this;return n._view||(n._view=e.clone(n._model)),1===t?(n._view=n._model,n._start=null,n):(n._start||n.pivot(),e.each(n._model,function(i,a){if("_"===a[0]);else if(n._view.hasOwnProperty(a))if(i===n._view[a]);else if("string"==typeof i)try{var r=e.color(n._model[a]).mix(e.color(n._start[a]),t);n._view[a]=r.rgbString()}catch(t){n._view[a]=i}else if("number"==typeof i){var o=void 0!==n._start[a]&&isNaN(n._start[a])===!1?n._start[a]:0;n._view[a]=(n._model[a]-o)*t+o}else n._view[a]=i;else"number"!=typeof i||isNaN(n._view[a])?n._view[a]=i:n._view[a]=i*t},n),n)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return e.isNumber(this._model.x)&&e.isNumber(this._model.y)}}),t.Element.extend=e.inherits}},{}],26:[function(t,e,n){"use strict";var i=t(2);e.exports=function(t){function e(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),t.indexOf("%")!==-1&&(i=i/100*e.parentNode[n])):i=t,i}function n(t){return void 0!==t&&null!==t&&"none"!==t}function a(t,i,a){var r=document.defaultView,o=t.parentNode,s=r.getComputedStyle(t)[i],l=r.getComputedStyle(o)[i],u=n(s),d=n(l),c=Number.POSITIVE_INFINITY;return u||d?Math.min(u?e(s,t,a):c,d?e(l,o,a):c):"none"}var r=t.helpers={};r.each=function(t,e,n,i){var a,o;if(r.isArray(t))if(o=t.length,i)for(a=o-1;a>=0;a--)e.call(n,t[a],a);else for(a=0;a<o;a++)e.call(n,t[a],a);else if("object"==typeof t){var s=Object.keys(t);for(o=s.length,a=0;a<o;a++)e.call(n,t[s[a]],s[a])}},r.clone=function(t){var e={};return r.each(t,function(t,n){r.isArray(t)?e[n]=t.slice(0):"object"==typeof t&&null!==t?e[n]=r.clone(t):e[n]=t}),e},r.extend=function(t){for(var e=function(e,n){t[n]=e},n=1,i=arguments.length;n<i;n++)r.each(arguments[n],e);return t},r.configMerge=function(e){var n=r.clone(e);return r.each(Array.prototype.slice.call(arguments,1),function(e){r.each(e,function(e,i){var a=n.hasOwnProperty(i),o=a?n[i]:{};"scales"===i?n[i]=r.scaleMerge(o,e):"scale"===i?n[i]=r.configMerge(o,t.scaleService.getScaleDefaults(e.type),e):!a||"object"!=typeof o||r.isArray(o)||null===o||"object"!=typeof e||r.isArray(e)?n[i]=e:n[i]=r.configMerge(o,e)})}),n},r.scaleMerge=function(e,n){var i=r.clone(e);return r.each(n,function(e,n){"xAxes"===n||"yAxes"===n?i.hasOwnProperty(n)?r.each(e,function(e,a){var o=r.getValueOrDefault(e.type,"xAxes"===n?"category":"linear"),s=t.scaleService.getScaleDefaults(o);a>=i[n].length||!i[n][a].type?i[n].push(r.configMerge(s,e)):e.type&&e.type!==i[n][a].type?i[n][a]=r.configMerge(i[n][a],s,e):i[n][a]=r.configMerge(i[n][a],e)}):(i[n]=[],r.each(e,function(e){var a=r.getValueOrDefault(e.type,"xAxes"===n?"category":"linear");i[n].push(r.configMerge(t.scaleService.getScaleDefaults(a),e))})):i.hasOwnProperty(n)&&"object"==typeof i[n]&&null!==i[n]&&"object"==typeof e?i[n]=r.configMerge(i[n],e):i[n]=e}),i},r.getValueAtIndexOrDefault=function(t,e,n){return void 0===t||null===t?n:r.isArray(t)?e<t.length?t[e]:n:t},r.getValueOrDefault=function(t,e){return void 0===t?e:t},r.indexOf=Array.prototype.indexOf?function(t,e){return t.indexOf(e)}:function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},r.where=function(t,e){if(r.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return r.each(t,function(t){e(t)&&n.push(t)}),n},r.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,a=t.length;i<a;++i)if(e.call(n,t[i],i,t))return i;return-1},r.findNextWhere=function(t,e,n){void 0!==n&&null!==n||(n=-1);for(var i=n+1;i<t.length;i++){var a=t[i];if(e(a))return a}},r.findPreviousWhere=function(t,e,n){void 0!==n&&null!==n||(n=t.length);for(var i=n-1;i>=0;i--){var a=t[i];if(e(a))return a}},r.inherits=function(t){var e=this,n=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=n};return i.prototype=e.prototype,n.prototype=new i,n.extend=r.inherits,t&&r.extend(n.prototype,t),n.__super__=e.prototype,n},r.noop=function(){},r.uid=function(){var t=0;return function(){return t++}}(),r.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},r.almostEquals=function(t,e,n){return Math.abs(t-e)<n},r.almostWhole=function(t,e){var n=Math.round(t);return n-e<t&&n+e>t},r.max=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.max(t,e)},Number.NEGATIVE_INFINITY)},r.min=function(t){return t.reduce(function(t,e){return isNaN(e)?t:Math.min(t,e)},Number.POSITIVE_INFINITY)},r.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return t=+t,0===t||isNaN(t)?t:t>0?1:-1},r.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},r.toRadians=function(t){return t*(Math.PI/180)},r.toDegrees=function(t){return t*(180/Math.PI)},r.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},r.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},r.aliasPixel=function(t){return t%2===0?0:.5},r.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l);u=isNaN(u)?0:u,d=isNaN(d)?0:d;var c=i*u,h=i*d;return{previous:{x:r.x-c*(o.x-a.x),y:r.y-c*(o.y-a.y)},next:{x:r.x+h*(o.x-a.x),y:r.y+h*(o.y-a.y)}}},r.EPSILON=Number.EPSILON||1e-14,r.splineCurveMonotone=function(t){var e,n,i,a,o=(t||[]).map(function(t){return{model:t._model,deltaK:0,mK:0}}),s=o.length;for(e=0;e<s;++e)if(i=o[e],!i.model.skip){if(n=e>0?o[e-1]:null,a=e<s-1?o[e+1]:null,a&&!a.model.skip){var l=a.model.x-i.model.x;i.deltaK=0!==l?(a.model.y-i.model.y)/l:0}!n||n.model.skip?i.mK=i.deltaK:!a||a.model.skip?i.mK=n.deltaK:this.sign(n.deltaK)!==this.sign(i.deltaK)?i.mK=0:i.mK=(n.deltaK+i.deltaK)/2}var u,d,c,h;for(e=0;e<s-1;++e)i=o[e],a=o[e+1],i.model.skip||a.model.skip||(r.almostEquals(i.deltaK,0,this.EPSILON)?i.mK=a.mK=0:(u=i.mK/i.deltaK,d=a.mK/i.deltaK,h=Math.pow(u,2)+Math.pow(d,2),h<=9||(c=3/Math.sqrt(h),i.mK=u*c*i.deltaK,a.mK=d*c*i.deltaK)));var f;for(e=0;e<s;++e)i=o[e],i.model.skip||(n=e>0?o[e-1]:null,a=e<s-1?o[e+1]:null,n&&!n.model.skip&&(f=(i.model.x-n.model.x)/3,i.model.controlPointPreviousX=i.model.x-f,i.model.controlPointPreviousY=i.model.y-f*i.mK),a&&!a.model.skip&&(f=(a.model.x-i.model.x)/3,i.model.controlPointNextX=i.model.x+f,i.model.controlPointNextY=i.model.y+f*i.mK))},r.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},r.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},r.niceNum=function(t,e){var n,i=Math.floor(r.log10(t)),a=t/Math.pow(10,i);return n=e?a<1.5?1:a<3?2:a<7?5:10:a<=1?1:a<=2?2:a<=5?5:10,n*Math.pow(10,i)};var o=r.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===(t/=1)?1:(n||(n=.3),i<Math.abs(1)?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-(i*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/n)))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===(t/=1)?1:(n||(n=.3),i<Math.abs(1)?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((1*t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2===(t/=.5)?1:(n||(n=1*(.3*1.5)),i<Math.abs(1)?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/n)):i*Math.pow(2,-10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;
|
14 |
+
return 1*(t/=1)*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return 1*((t=t/1-1)*t*((e+1)*t+e)+1)},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:function(t){return 1-o.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?1*(7.5625*t*t):t<2/2.75?1*(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return t<.5?.5*o.easeInBounce(2*t):.5*o.easeOutBounce(2*t-1)+.5}};r.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),r.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,o=t.currentTarget||t.srcElement,s=o.getBoundingClientRect(),l=a.touches;l&&l.length>0?(n=l[0].clientX,i=l[0].clientY):(n=a.clientX,i=a.clientY);var u=parseFloat(r.getStyle(o,"padding-left")),d=parseFloat(r.getStyle(o,"padding-top")),c=parseFloat(r.getStyle(o,"padding-right")),h=parseFloat(r.getStyle(o,"padding-bottom")),f=s.right-s.left-u-c,g=s.bottom-s.top-d-h;return n=Math.round((n-s.left-u)/f*o.width/e.currentDevicePixelRatio),i=Math.round((i-s.top-d)/g*o.height/e.currentDevicePixelRatio),{x:n,y:i}},r.addEvent=function(t,e,n){t.addEventListener?t.addEventListener(e,n):t.attachEvent?t.attachEvent("on"+e,n):t["on"+e]=n},r.removeEvent=function(t,e,n){t.removeEventListener?t.removeEventListener(e,n,!1):t.detachEvent?t.detachEvent("on"+e,n):t["on"+e]=r.noop},r.getConstraintWidth=function(t){return a(t,"max-width","clientWidth")},r.getConstraintHeight=function(t){return a(t,"max-height","clientHeight")},r.getMaximumWidth=function(t){var e=t.parentNode,n=parseInt(r.getStyle(e,"padding-left"),10),i=parseInt(r.getStyle(e,"padding-right"),10),a=e.clientWidth-n-i,o=r.getConstraintWidth(t);return isNaN(o)?a:Math.min(a,o)},r.getMaximumHeight=function(t){var e=t.parentNode,n=parseInt(r.getStyle(e,"padding-top"),10),i=parseInt(r.getStyle(e,"padding-bottom"),10),a=e.clientHeight-n-i,o=r.getConstraintHeight(t);return isNaN(o)?a:Math.min(a,o)},r.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},r.retinaScale=function(t){var e=t.currentDevicePixelRatio=window.devicePixelRatio||1;if(1!==e){var n=t.canvas,i=t.height,a=t.width;n.height=i*e,n.width=a*e,t.ctx.scale(e,e),n.style.height=i+"px",n.style.width=a+"px"}},r.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},r.fontString=function(t,e,n){return e+" "+t+"px "+n},r.longestText=function(t,e,n,i){i=i||{};var a=i.data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},o=i.garbageCollect=[],i.font=e),t.font=e;var s=0;r.each(n,function(e){void 0!==e&&null!==e&&r.isArray(e)!==!0?s=r.measureText(t,a,o,s,e):r.isArray(e)&&r.each(e,function(e){void 0===e||null===e||r.isArray(e)||(s=r.measureText(t,a,o,s,e))})});var l=o.length/2;if(l>n.length){for(var u=0;u<l;u++)delete a[o[u]];o.splice(0,l)}return s},r.measureText=function(t,e,n,i,a){var r=e[a];return r||(r=e[a]=t.measureText(a).width,n.push(a)),r>i&&(i=r),i},r.numberOfLabelLines=function(t){var e=1;return r.each(t,function(t){r.isArray(t)&&t.length>e&&(e=t.length)}),e},r.drawRoundedRectangle=function(t,e,n,i,a,r){t.beginPath(),t.moveTo(e+r,n),t.lineTo(e+i-r,n),t.quadraticCurveTo(e+i,n,e+i,n+r),t.lineTo(e+i,n+a-r),t.quadraticCurveTo(e+i,n+a,e+i-r,n+a),t.lineTo(e+r,n+a),t.quadraticCurveTo(e,n+a,e,n+a-r),t.lineTo(e,n+r),t.quadraticCurveTo(e,n,e+r,n),t.closePath()},r.color=function(e){return i?i(e instanceof CanvasGradient?t.defaults.global.defaultColor:e):(console.error("Color.js not found!"),e)},r.isArray=Array.isArray?function(t){return Array.isArray(t)}:function(t){return"[object Array]"===Object.prototype.toString.call(t)},r.arrayEquals=function(t,e){var n,i,a,o;if(!t||!e||t.length!==e.length)return!1;for(n=0,i=t.length;n<i;++n)if(a=t[n],o=e[n],a instanceof Array&&o instanceof Array){if(!r.arrayEquals(a,o))return!1}else if(a!==o)return!1;return!0},r.callCallback=function(t,e,n){t&&"function"==typeof t.call&&t.apply(n,e)},r.getHoverColor=function(t){return t instanceof CanvasPattern?t:r.color(t).saturate(.5).darken(.1).rgbString()}}},{2:2}],27:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return t.native?{x:t.x,y:t.y}:o.getRelativePosition(t,e)}function n(t,e){var n,i,a,r,o,s=t.data.datasets;for(i=0,r=s.length;i<r;++i)if(t.isDatasetVisible(i))for(n=t.getDatasetMeta(i),a=0,o=n.data.length;a<o;++a){var l=n.data[a];l._view.skip||e(l)}}function i(t,e){var i=[];return n(t,function(t){t.inRange(e.x,e.y)&&i.push(t)}),i}function a(t,e,i,a){var r=Number.POSITIVE_INFINITY,s=[];return a||(a=o.distanceBetweenPoints),n(t,function(t){if(!i||t.inRange(e.x,e.y)){var n=t.getCenterPoint(),o=a(e,n);o<r?(s=[t],r=o):o===r&&s.push(t)}}),s}function r(t,n,r){var o=e(n,t.chart),s=function(t,e){return Math.abs(t.x-e.x)},l=r.intersect?i(t,o):a(t,o,!1,s),u=[];return l.length?(t.data.datasets.forEach(function(e,n){if(t.isDatasetVisible(n)){var i=t.getDatasetMeta(n),a=i.data[l[0]._index];a&&!a._view.skip&&u.push(a)}}),u):[]}var o=t.helpers;t.Interaction={modes:{single:function(t,i){var a=e(i,t.chart),r=[];return n(t,function(t){if(t.inRange(a.x,a.y))return r.push(t),r}),r.slice(0,1)},label:r,index:r,dataset:function(t,n,r){var o=e(n,t.chart),s=r.intersect?i(t,o):a(t,o,!1);return s.length>0&&(s=t.getDatasetMeta(s[0]._datasetIndex).data),s},"x-axis":function(t,e){return r(t,e,!0)},point:function(t,n){var a=e(n,t.chart);return i(t,a)},nearest:function(t,n,i){var r=e(n,t.chart),o=a(t,r,i.intersect);return o.length>1&&o.sort(function(t,e){var n=t.getArea(),i=e.getArea(),a=n-i;return 0===a&&(a=t._datasetIndex-e._datasetIndex),a}),o.slice(0,1)},x:function(t,i,a){var r=e(i,t.chart),o=[],s=!1;return n(t,function(t){t.inXRange(r.x)&&o.push(t),t.inRange(r.x,r.y)&&(s=!0)}),a.intersect&&!s&&(o=[]),o},y:function(t,i,a){var r=e(i,t.chart),o=[],s=!1;return n(t,function(t){t.inYRange(r.y)&&o.push(t),t.inRange(r.x,r.y)&&(s=!0)}),a.intersect&&!s&&(o=[]),o}}}}},{}],28:[function(t,e,n){"use strict";e.exports=function(){var t=function(e,n){return this.controller=new t.Controller(e,n,this),this.controller};return t.defaults={global:{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},legendCallback:function(t){var e=[];e.push('<ul class="'+t.id+'-legend">');for(var n=0;n<t.data.datasets.length;n++)e.push('<li><span style="background-color:'+t.data.datasets[n].backgroundColor+'"></span>'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("</li>");return e.push("</ul>"),e.join("")}}},t.Chart=t,t}},{}],29:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),t.boxes.push(e)},removeBox:function(t,e){t.boxes&&t.boxes.splice(t.boxes.indexOf(e),1)},update:function(t,n,i){function a(t){var e,n=t.isHorizontal();n?(e=t.update(t.options.fullWidth?y:M,S),D-=e.height):(e=t.update(w,_),M-=e.width),C.push({horizontal:n,minSize:e,box:t})}function r(t){var n=e.findNextWhere(C,function(e){return e.box===t});if(n)if(t.isHorizontal()){var i={left:Math.max(F,T),right:Math.max(O,P),top:0,bottom:0};t.update(t.options.fullWidth?y:M,x/2,i)}else t.update(n.minSize.width,D)}function o(t){var n=e.findNextWhere(C,function(e){return e.box===t}),i={left:0,right:0,top:R,bottom:L};n&&t.update(n.minSize.width,D,i)}function s(t){t.isHorizontal()?(t.left=t.options.fullWidth?d:F,t.right=t.options.fullWidth?n-c:F+M,t.top=N,t.bottom=N+t.height,N=t.bottom):(t.left=z,t.right=z+t.width,t.top=R,t.bottom=R+D,z=t.right)}if(t){var l=t.options.layout,u=l?l.padding:null,d=0,c=0,h=0,f=0;isNaN(u)?(d=u.left||0,c=u.right||0,h=u.top||0,f=u.bottom||0):(d=u,c=u,h=u,f=u);var g=e.where(t.boxes,function(t){return"left"===t.options.position}),m=e.where(t.boxes,function(t){return"right"===t.options.position}),p=e.where(t.boxes,function(t){return"top"===t.options.position}),v=e.where(t.boxes,function(t){return"bottom"===t.options.position}),b=e.where(t.boxes,function(t){return"chartArea"===t.options.position});p.sort(function(t,e){return(e.options.fullWidth?1:0)-(t.options.fullWidth?1:0)}),v.sort(function(t,e){return(t.options.fullWidth?1:0)-(e.options.fullWidth?1:0)});var y=n-d-c,x=i-h-f,k=y/2,_=x/2,w=(n-k)/(g.length+m.length),S=(i-_)/(p.length+v.length),M=y,D=x,C=[];e.each(g.concat(m,p,v),a);var T=0,P=0,I=0,A=0;e.each(p.concat(v),function(t){if(t.getPadding){var e=t.getPadding();T=Math.max(T,e.left),P=Math.max(P,e.right)}}),e.each(g.concat(m),function(t){if(t.getPadding){var e=t.getPadding();I=Math.max(I,e.top),A=Math.max(A,e.bottom)}});var F=d,O=c,R=h,L=f;e.each(g.concat(m),r),e.each(g,function(t){F+=t.width}),e.each(m,function(t){O+=t.width}),e.each(p.concat(v),r),e.each(p,function(t){R+=t.height}),e.each(v,function(t){L+=t.height}),e.each(g.concat(m),o),F=d,O=c,R=h,L=f,e.each(g,function(t){F+=t.width}),e.each(m,function(t){O+=t.width}),e.each(p,function(t){R+=t.height}),e.each(v,function(t){L+=t.height});var V=Math.max(T-F,0);F+=V,O+=Math.max(P-O,0);var W=Math.max(I-R,0);R+=W,L+=Math.max(A-L,0);var Y=i-R-L,B=n-F-O;B===M&&Y===D||(e.each(g,function(t){t.height=Y}),e.each(m,function(t){t.height=Y}),e.each(p,function(t){t.options.fullWidth||(t.width=B)}),e.each(v,function(t){t.options.fullWidth||(t.width=B)}),D=Y,M=B);var z=d+V,N=h+W;e.each(g.concat(p),s),z+=M,N+=D,e.each(m,s),e.each(v,s),t.chartArea={left:F,top:R,right:F+M,bottom:R+D},e.each(b,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(M,D)})}}}}},{}],30:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}function n(e,n){var i=new t.Legend({ctx:e.chart.ctx,options:n,chart:e});e.legend=i,t.layoutService.addBox(e,i)}var i=t.helpers,a=i.noop;t.defaults.global.legend={display:!0,position:"top",fullWidth:!0,reverse:!1,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return i.isArray(e.datasets)?e.datasets.map(function(e,n){return{text:e.label,fillStyle:i.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}},this):[]}}},t.Legend=t.Element.extend({initialize:function(t){i.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:a,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:a,beforeSetDimensions:a,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:a,beforeBuildLabels:a,buildLabels:function(){var t=this,e=t.options.labels,n=e.generateLabels.call(t,t.chart);e.filter&&(n=n.filter(function(n){return e.filter(n,t.chart.data)})),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:a,beforeFit:a,fit:function(){var n=this,a=n.options,r=a.labels,o=a.display,s=n.ctx,l=t.defaults.global,u=i.getValueOrDefault,d=u(r.fontSize,l.defaultFontSize),c=u(r.fontStyle,l.defaultFontStyle),h=u(r.fontFamily,l.defaultFontFamily),f=i.fontString(d,c,h),g=n.legendHitBoxes=[],m=n.minSize,p=n.isHorizontal();if(p?(m.width=n.maxWidth,m.height=o?10:0):(m.width=o?10:0,m.height=n.maxHeight),o)if(s.font=f,p){var v=n.lineWidths=[0],b=n.legendItems.length?d+r.padding:0;s.textAlign="left",s.textBaseline="top",i.each(n.legendItems,function(t,i){var a=e(r,d),o=a+d/2+s.measureText(t.text).width;v[v.length-1]+o+r.padding>=n.width&&(b+=d+r.padding,v[v.length]=n.left),g[i]={left:0,top:0,width:o,height:d},v[v.length-1]+=o+r.padding}),m.height+=b}else{var y=r.padding,x=n.columnWidths=[],k=r.padding,_=0,w=0,S=d+y;i.each(n.legendItems,function(t,n){var i=e(r,d),a=i+d/2+s.measureText(t.text).width;w+S>m.height&&(k+=_+r.padding,x.push(_),_=0,w=0),_=Math.max(_,a),w+=S,g[n]={left:0,top:0,width:a,height:d}}),k+=_,x.push(_),m.width+=k}n.width=m.width,n.height=m.height},afterFit:a,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var n=this,a=n.options,r=a.labels,o=t.defaults.global,s=o.elements.line,l=n.width,u=n.lineWidths;if(a.display){var d,c=n.ctx,h=i.getValueOrDefault,f=h(r.fontColor,o.defaultFontColor),g=h(r.fontSize,o.defaultFontSize),m=h(r.fontStyle,o.defaultFontStyle),p=h(r.fontFamily,o.defaultFontFamily),v=i.fontString(g,m,p);c.textAlign="left",c.textBaseline="top",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=v;var b=e(r,g),y=n.legendHitBoxes,x=function(e,n,i){if(!(isNaN(b)||b<=0)){c.save(),c.fillStyle=h(i.fillStyle,o.defaultColor),c.lineCap=h(i.lineCap,s.borderCapStyle),c.lineDashOffset=h(i.lineDashOffset,s.borderDashOffset),c.lineJoin=h(i.lineJoin,s.borderJoinStyle),c.lineWidth=h(i.lineWidth,s.borderWidth),c.strokeStyle=h(i.strokeStyle,o.defaultColor);var r=0===h(i.lineWidth,s.borderWidth);if(c.setLineDash&&c.setLineDash(h(i.lineDash,s.borderDash)),a.labels&&a.labels.usePointStyle){var l=g*Math.SQRT2/2,u=l/Math.SQRT2,d=e+u,f=n+u;t.canvasHelpers.drawPoint(c,i.pointStyle,l,d,f)}else r||c.strokeRect(e,n,b,g),c.fillRect(e,n,b,g);c.restore()}},k=function(t,e,n,i){c.fillText(n.text,b+g/2+t,e),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(b+g/2+t,e+g/2),c.lineTo(b+g/2+t+i,e+g/2),c.stroke())},_=n.isHorizontal();d=_?{x:n.left+(l-u[0])/2,y:n.top+r.padding,line:0}:{x:n.left+r.padding,y:n.top+r.padding,line:0};var w=g+r.padding;i.each(n.legendItems,function(t,e){var i=c.measureText(t.text).width,a=b+g/2+i,o=d.x,s=d.y;_?o+a>=l&&(s=d.y+=w,d.line++,o=d.x=n.left+(l-u[d.line])/2):s+w>n.bottom&&(o=d.x=o+n.columnWidths[d.line]+r.padding,s=d.y=n.top+r.padding,d.line++),x(o,s,t),y[e].left=o,y[e].top=s,k(o,s,t,i),_?d.x+=a+r.padding:d.y+=w})}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,a=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var r=t.x,o=t.y;if(r>=e.left&&r<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l<s.length;++l){var u=s[l];if(r>=u.left&&r<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),a=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),a=!0;break}}}return a}}),t.plugins.register({beforeInit:function(t){var e=t.options.legend;e&&n(t,e)},beforeUpdate:function(e){var a=e.options.legend;a?(a=i.configMerge(t.defaults.global.legend,a),e.legend?e.legend.options=a:n(e,a)):(t.layoutService.removeBox(e,e.legend),delete e.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}})}},{}],31:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.plugins={},t.plugins={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){e.indexOf(t)===-1&&e.push(t)}),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var n=e.indexOf(t);n!==-1&&e.splice(n,1)}),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,a,r,o,s,l=this.descriptors(t),u=l.length;for(i=0;i<u;++i)if(a=l[i],r=a.plugin,s=r[e],"function"==typeof s&&(o=[t].concat(n||[]),o.push(a.options),s.apply(r,o)===!1))return!1;return!0},descriptors:function(n){var i=n._plugins||(n._plugins={});if(i.id===this._cacheId)return i.descriptors;var a=[],r=[],o=n&&n.config||{},s=t.defaults.global.plugins,l=o.options&&o.options.plugins||{};return this._plugins.concat(o.plugins||[]).forEach(function(t){var n=a.indexOf(t);if(n===-1){var i=t.id,o=l[i];o!==!1&&(o===!0&&(o=e.clone(s[i])),a.push(t),r.push({plugin:t,options:o||{}}))}}),i.descriptors=r,i.id=this._cacheId,r}},t.pluginService=t.plugins,t.PluginBase=e.inherits({})}},{}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e,n){return i.isArray(e)?i.longestText(t,n,e):t.measureText(e).width}function n(e){var n=i.getValueOrDefault,a=t.defaults.global,r=n(e.fontSize,a.defaultFontSize),o=n(e.fontStyle,a.defaultFontStyle),s=n(e.fontFamily,a.defaultFontFamily);return{size:r,style:o,family:s,font:i.fontString(r,o,s)}}var i=t.helpers;t.defaults.scale={display:!0,position:"left",gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",offsetGridLines:!1,borderDash:[],borderDashOffset:0},scaleLabel:{labelString:"",display:!1},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:0,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:t.Ticks.formatters.values}},t.Scale=t.Element.extend({getPadding:function(){var t=this;return{left:t.paddingLeft||0,top:t.paddingTop||0,right:t.paddingRight||0,bottom:t.paddingBottom||0}},beforeUpdate:function(){i.callCallback(this.options.beforeUpdate,[this])},update:function(t,e,n){var a=this;return a.beforeUpdate(),a.maxWidth=t,a.maxHeight=e,a.margins=i.extend({left:0,right:0,top:0,bottom:0},n),a.longestTextCache=a.longestTextCache||{},a.beforeSetDimensions(),a.setDimensions(),a.afterSetDimensions(),a.beforeDataLimits(),a.determineDataLimits(),a.afterDataLimits(),a.beforeBuildTicks(),a.buildTicks(),a.afterBuildTicks(),a.beforeTickToLabelConversion(),a.convertTicksToLabels(),a.afterTickToLabelConversion(),a.beforeCalculateTickRotation(),a.calculateTickRotation(),a.afterCalculateTickRotation(),a.beforeFit(),a.fit(),a.afterFit(),a.afterUpdate(),a.minSize},afterUpdate:function(){i.callCallback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){i.callCallback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){i.callCallback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){i.callCallback(this.options.beforeDataLimits,[this])},determineDataLimits:i.noop,afterDataLimits:function(){i.callCallback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){i.callCallback(this.options.beforeBuildTicks,[this])},buildTicks:i.noop,afterBuildTicks:function(){i.callCallback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){i.callCallback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this,e=t.options.ticks;t.ticks=t.ticks.map(e.userCallback||e.callback)},afterTickToLabelConversion:function(){i.callCallback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){i.callCallback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var t=this,e=t.ctx,a=t.options.ticks,r=n(a);e.font=r.font;var o=a.minRotation||0;if(t.options.display&&t.isHorizontal())for(var s,l,u=i.longestText(e,r.font,t.ticks,t.longestTextCache),d=u,c=t.getPixelForTick(1)-t.getPixelForTick(0)-6;d>c&&o<a.maxRotation;){var h=i.toRadians(o);if(s=Math.cos(h),l=Math.sin(h),l*u>t.maxHeight){o--;break}o++,d=s*u}t.labelRotation=o},afterCalculateTickRotation:function(){i.callCallback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){i.callCallback(this.options.beforeFit,[this])},fit:function(){var t=this,a=t.minSize={width:0,height:0},r=t.options,o=r.ticks,s=r.scaleLabel,l=r.gridLines,u=r.display,d=t.isHorizontal(),c=n(o),h=1.5*n(s).size,f=r.gridLines.tickMarkLength;if(d?a.width=t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:a.width=u&&l.drawTicks?f:0,d?a.height=u&&l.drawTicks?f:0:a.height=t.maxHeight,s.display&&u&&(d?a.height+=h:a.width+=h),o.display&&u){var g=i.longestText(t.ctx,c.font,t.ticks,t.longestTextCache),m=i.numberOfLabelLines(t.ticks),p=.5*c.size;if(d){t.longestLabelWidth=g;var v=i.toRadians(t.labelRotation),b=Math.cos(v),y=Math.sin(v),x=y*g+c.size*m+p*m;a.height=Math.min(t.maxHeight,a.height+x),t.ctx.font=c.font;var k=t.ticks[0],_=e(t.ctx,k,c.font),w=t.ticks[t.ticks.length-1],S=e(t.ctx,w,c.font);0!==t.labelRotation?(t.paddingLeft="bottom"===r.position?b*_+3:b*p+3,t.paddingRight="bottom"===r.position?b*p+3:b*S+3):(t.paddingLeft=_/2+3,t.paddingRight=S/2+3)}else o.mirror?g=0:g+=t.options.ticks.padding,a.width+=g,t.paddingTop=c.size/2,t.paddingBottom=c.size/2}t.handleMargins(),t.width=a.width,t.height=a.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){i.callCallback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){return null===t||"undefined"==typeof t?NaN:"number"!=typeof t||isFinite(t)?"object"==typeof t?t instanceof Date||t.isValid?t:this.getRightValue(this.isHorizontal()?t.x:t.y):t:NaN},getLabelForIndex:i.noop,getPixelForValue:i.noop,getValueForPixel:i.noop,getPixelForTick:function(t,e){var n=this;if(n.isHorizontal()){var i=n.width-(n.paddingLeft+n.paddingRight),a=i/Math.max(n.ticks.length-(n.options.gridLines.offsetGridLines?0:1),1),r=a*t+n.paddingLeft;e&&(r+=a/2);var o=n.left+Math.round(r);return o+=n.isFullWidth()?n.margins.left:0}var s=n.height-(n.paddingTop+n.paddingBottom);return n.top+t*(s/(n.ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var n=e.width-(e.paddingLeft+e.paddingRight),i=n*t+e.paddingLeft,a=e.left+Math.round(i);return a+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,n=t.max;return t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0},draw:function(e){var a=this,r=a.options;if(r.display){var o,s,l=a.ctx,u=t.defaults.global,d=r.ticks,c=r.gridLines,h=r.scaleLabel,f=0!==a.labelRotation,g=d.autoSkip,m=a.isHorizontal();d.maxTicksLimit&&(s=d.maxTicksLimit);var p=i.getValueOrDefault(d.fontColor,u.defaultFontColor),v=n(d),b=c.drawTicks?c.tickMarkLength:0,y=i.getValueOrDefault(c.borderDash,u.borderDash),x=i.getValueOrDefault(c.borderDashOffset,u.borderDashOffset),k=i.getValueOrDefault(h.fontColor,u.defaultFontColor),_=n(h),w=i.toRadians(a.labelRotation),S=Math.cos(w),M=a.longestLabelWidth*S;l.fillStyle=p;var D=[];if(m){if(o=!1,f&&(M/=2),(M+d.autoSkipPadding)*a.ticks.length>a.width-(a.paddingLeft+a.paddingRight)&&(o=1+Math.floor((M+d.autoSkipPadding)*a.ticks.length/(a.width-(a.paddingLeft+a.paddingRight)))),s&&a.ticks.length>s)for(;!o||a.ticks.length/(o||1)>s;)o||(o=1),o+=1;g||(o=!1)}var C="right"===r.position?a.left:a.right-b,T="right"===r.position?a.left+b:a.right,P="bottom"===r.position?a.top:a.bottom-b,I="bottom"===r.position?a.top+b:a.bottom;if(i.each(a.ticks,function(t,n){if(void 0!==t&&null!==t){var s=a.ticks.length===n+1,l=o>1&&n%o>0||n%o===0&&n+o>=a.ticks.length;if((!l||s)&&void 0!==t&&null!==t){var u,h;n===("undefined"!=typeof a.zeroLineIndex?a.zeroLineIndex:0)?(u=c.zeroLineWidth,h=c.zeroLineColor):(u=i.getValueAtIndexOrDefault(c.lineWidth,n),h=i.getValueAtIndexOrDefault(c.color,n));var g,p,v,k,_,S,M,A,F,O,R="middle",L="middle";if(m){"bottom"===r.position?(L=f?"middle":"top",R=f?"right":"center",O=a.top+b):(L=f?"middle":"bottom",R=f?"left":"center",O=a.bottom-b);var V=a.getPixelForTick(n)+i.aliasPixel(u);F=a.getPixelForTick(n,c.offsetGridLines)+d.labelOffset,g=v=_=M=V,p=P,k=I,S=e.top,A=e.bottom}else{var W,Y="left"===r.position,B=d.padding;d.mirror?(R=Y?"left":"right",W=B):(R=Y?"right":"left",W=b+B),F=Y?a.right-W:a.left+W;var z=a.getPixelForTick(n);z+=i.aliasPixel(u),O=a.getPixelForTick(n,c.offsetGridLines),g=C,v=T,_=e.left,M=e.right,p=k=S=A=z}D.push({tx1:g,ty1:p,tx2:v,ty2:k,x1:_,y1:S,x2:M,y2:A,labelX:F,labelY:O,glWidth:u,glColor:h,glBorderDash:y,glBorderDashOffset:x,rotation:-1*w,label:t,textBaseline:L,textAlign:R})}}}),i.each(D,function(t){if(c.display&&(l.save(),l.lineWidth=t.glWidth,l.strokeStyle=t.glColor,l.setLineDash&&(l.setLineDash(t.glBorderDash),l.lineDashOffset=t.glBorderDashOffset),l.beginPath(),c.drawTicks&&(l.moveTo(t.tx1,t.ty1),l.lineTo(t.tx2,t.ty2)),c.drawOnChartArea&&(l.moveTo(t.x1,t.y1),l.lineTo(t.x2,t.y2)),l.stroke(),l.restore()),d.display){l.save(),l.translate(t.labelX,t.labelY),l.rotate(t.rotation),l.font=v.font,l.textBaseline=t.textBaseline,l.textAlign=t.textAlign;var e=t.label;if(i.isArray(e))for(var n=0,a=0;n<e.length;++n)l.fillText(""+e[n],0,a),a+=1.5*v.size;else l.fillText(e,0,0);l.restore()}}),h.display){var A,F,O=0;if(m)A=a.left+(a.right-a.left)/2,F="bottom"===r.position?a.bottom-_.size/2:a.top+_.size/2;else{var R="left"===r.position;A=R?a.left+_.size/2:a.right-_.size/2,F=a.top+(a.bottom-a.top)/2,O=R?-.5*Math.PI:.5*Math.PI}l.save(),l.translate(A,F),l.rotate(O),l.textAlign="center",l.textBaseline="middle",l.fillStyle=k,l.font=_.font,l.fillText(h.labelString,0,0),l.restore()}if(c.drawBorder){l.lineWidth=i.getValueAtIndexOrDefault(c.lineWidth,0),l.strokeStyle=i.getValueAtIndexOrDefault(c.color,0);var L=a.left,V=a.right,W=a.top,Y=a.bottom,B=i.aliasPixel(l.lineWidth);m?(W=Y="top"===r.position?a.bottom:a.top,W+=B,Y+=B):(L=V="left"===r.position?a.right:a.left,L+=B,V+=B),l.beginPath(),l.moveTo(L,W),l.lineTo(V,Y),l.stroke()}}}})}},{}],33:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,n,i){this.constructors[t]=n,this.defaults[t]=e.clone(i)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(n){return this.defaults.hasOwnProperty(n)?e.scaleMerge(t.defaults.scale,this.defaults[n]):{}},updateScaleDefaults:function(t,n){var i=this.defaults;i.hasOwnProperty(t)&&(i[t]=e.extend(i[t],n))},addScalesToLayout:function(n){e.each(n.scales,function(e){t.layoutService.addBox(n,e)})}}}},{}],34:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers;t.Ticks={generators:{linear:function(t,n){var i,a=[];if(t.stepSize&&t.stepSize>0)i=t.stepSize;else{var r=e.niceNum(n.max-n.min,!1);i=e.niceNum(r/(t.maxTicks-1),!0)}var o=Math.floor(n.min/i)*i,s=Math.ceil(n.max/i)*i;t.min&&t.max&&t.stepSize&&e.almostWhole((t.max-t.min)/t.stepSize,i/1e3)&&(o=t.min,s=t.max);var l=(s-o)/i;l=e.almostEquals(l,Math.round(l),i/1e3)?Math.round(l):Math.ceil(l),a.push(void 0!==t.min?t.min:o);for(var u=1;u<l;++u)a.push(o+u*i);return a.push(void 0!==t.max?t.max:s),a},logarithmic:function(t,n){var i,a,r=[],o=e.getValueOrDefault,s=o(t.min,Math.pow(10,Math.floor(e.log10(n.min)))),l=Math.floor(e.log10(n.max)),u=Math.ceil(n.max/Math.pow(10,l));0===s?(i=Math.floor(e.log10(n.minNotZero)),a=Math.floor(n.minNotZero/Math.pow(10,i)),r.push(s),s=a*Math.pow(10,i)):(i=Math.floor(e.log10(s)),a=Math.floor(s/Math.pow(10,i)));do r.push(s),++a,10===a&&(a=1,++i),s=a*Math.pow(10,i);while(i<l||i===l&&a<u);var d=o(t.max,s);return r.push(d),r}},formatters:{values:function(t){return e.isArray(t)?t:""+t},linear:function(t,n,i){var a=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(a)>1&&t!==Math.floor(t)&&(a=t-Math.floor(t));var r=e.log10(Math.abs(a)),o="";if(0!==t){var s=-1*Math.floor(r);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,n,i){var a=t/Math.pow(10,Math.floor(e.log10(t)));return 0===t?"0":1===a||2===a||5===a||0===n||n===i.length-1?t.toExponential():""}}}}},{}],35:[function(t,e,n){"use strict";e.exports=function(t){function e(e,n){var i=new t.Title({ctx:e.chart.ctx,options:n,chart:e});e.titleBlock=i,t.layoutService.addBox(e,i)}var n=t.helpers;t.defaults.global.title={display:!1,position:"top",fullWidth:!0,fontStyle:"bold",padding:10,text:""};var i=n.noop;t.Title=t.Element.extend({initialize:function(t){var e=this;n.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:i,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:i,beforeSetDimensions:i,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:i,beforeBuildLabels:i,buildLabels:i,afterBuildLabels:i,beforeFit:i,fit:function(){var e=this,i=n.getValueOrDefault,a=e.options,r=t.defaults.global,o=a.display,s=i(a.fontSize,r.defaultFontSize),l=e.minSize;e.isHorizontal()?(l.width=e.maxWidth,l.height=o?s+2*a.padding:0):(l.width=o?s+2*a.padding:0,l.height=e.maxHeight),e.width=l.width,e.height=l.height},afterFit:i,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var e=this,i=e.ctx,a=n.getValueOrDefault,r=e.options,o=t.defaults.global;if(r.display){var s,l,u,d=a(r.fontSize,o.defaultFontSize),c=a(r.fontStyle,o.defaultFontStyle),h=a(r.fontFamily,o.defaultFontFamily),f=n.fontString(d,c,h),g=0,m=e.top,p=e.left,v=e.bottom,b=e.right;i.fillStyle=a(r.fontColor,o.defaultFontColor),i.font=f,e.isHorizontal()?(s=p+(b-p)/2,l=m+(v-m)/2,u=b-p):(s="left"===r.position?p+d/2:b-d/2,l=m+(v-m)/2,u=v-m,g=Math.PI*("left"===r.position?-.5:.5)),i.save(),i.translate(s,l),i.rotate(g),i.textAlign="center",i.textBaseline="middle",i.fillText(r.text,0,0,u),i.restore()}}}),t.plugins.register({beforeInit:function(t){var n=t.options.title;n&&e(t,n)},beforeUpdate:function(i){var a=i.options.title;a?(a=n.configMerge(t.defaults.global.title,a),i.titleBlock?i.titleBlock.options=a:e(i,a)):(t.layoutService.removeBox(i,i.titleBlock),delete i.titleBlock)}})}},{}],36:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){var n=l.color(t);return n.alpha(e*n.alpha()).rgbaString()}function n(t,e){return e&&(l.isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function i(t){var e=t._xScale,n=t._yScale||t._scale,i=t._index,a=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,a):"",yLabel:n?n.getLabelForIndex(i,a):"",index:i,datasetIndex:a,x:t._model.x,y:t._model.y}}function a(e){var n=t.defaults.global,i=l.getValueOrDefault;return{xPadding:e.xPadding,yPadding:e.yPadding,xAlign:e.xAlign,yAlign:e.yAlign,bodyFontColor:e.bodyFontColor,_bodyFontFamily:i(e.bodyFontFamily,n.defaultFontFamily),_bodyFontStyle:i(e.bodyFontStyle,n.defaultFontStyle),_bodyAlign:e.bodyAlign,bodyFontSize:i(e.bodyFontSize,n.defaultFontSize),bodySpacing:e.bodySpacing,titleFontColor:e.titleFontColor,_titleFontFamily:i(e.titleFontFamily,n.defaultFontFamily),_titleFontStyle:i(e.titleFontStyle,n.defaultFontStyle),titleFontSize:i(e.titleFontSize,n.defaultFontSize),_titleAlign:e.titleAlign,titleSpacing:e.titleSpacing,
|
15 |
+
titleMarginBottom:e.titleMarginBottom,footerFontColor:e.footerFontColor,_footerFontFamily:i(e.footerFontFamily,n.defaultFontFamily),_footerFontStyle:i(e.footerFontStyle,n.defaultFontStyle),footerFontSize:i(e.footerFontSize,n.defaultFontSize),_footerAlign:e.footerAlign,footerSpacing:e.footerSpacing,footerMarginTop:e.footerMarginTop,caretSize:e.caretSize,cornerRadius:e.cornerRadius,backgroundColor:e.backgroundColor,opacity:0,legendColorBackground:e.multiKeyBackground,displayColors:e.displayColors}}function r(t,e){var n=t._chart.ctx,i=2*e.yPadding,a=0,r=e.body,o=r.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);o+=e.beforeBody.length+e.afterBody.length;var s=e.title.length,u=e.footer.length,d=e.titleFontSize,c=e.bodyFontSize,h=e.footerFontSize;i+=s*d,i+=s?(s-1)*e.titleSpacing:0,i+=s?e.titleMarginBottom:0,i+=o*c,i+=o?(o-1)*e.bodySpacing:0,i+=u?e.footerMarginTop:0,i+=u*h,i+=u?(u-1)*e.footerSpacing:0;var f=0,g=function(t){a=Math.max(a,n.measureText(t).width+f)};return n.font=l.fontString(d,e._titleFontStyle,e._titleFontFamily),l.each(e.title,g),n.font=l.fontString(c,e._bodyFontStyle,e._bodyFontFamily),l.each(e.beforeBody.concat(e.afterBody),g),f=e.displayColors?c+2:0,l.each(r,function(t){l.each(t.before,g),l.each(t.lines,g),l.each(t.after,g)}),f=0,n.font=l.fontString(h,e._footerFontStyle,e._footerFontFamily),l.each(e.footer,g),a+=2*e.xPadding,{width:a,height:i}}function o(t,e){var n=t._model,i=t._chart,a=t._chartInstance.chartArea,r="center",o="center";n.y<e.height?o="top":n.y>i.height-e.height&&(o="bottom");var s,l,u,d,c,h=(a.left+a.right)/2,f=(a.top+a.bottom)/2;"center"===o?(s=function(t){return t<=h},l=function(t){return t>h}):(s=function(t){return t<=e.width/2},l=function(t){return t>=i.width-e.width/2}),u=function(t){return t+e.width>i.width},d=function(t){return t-e.width<0},c=function(t){return t<=f?"top":"bottom"},s(n.x)?(r="left",u(n.x)&&(r="center",o=c(n.y))):l(n.x)&&(r="right",d(n.x)&&(r="center",o=c(n.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:r,yAlign:g.yAlign?g.yAlign:o}}function s(t,e,n){var i=t.x,a=t.y,r=t.caretSize,o=t.caretPadding,s=t.cornerRadius,l=n.xAlign,u=n.yAlign,d=r+o,c=s+o;return"right"===l?i-=e.width:"center"===l&&(i-=e.width/2),"top"===u?a+=d:a-="bottom"===u?e.height+d:e.height/2,"center"===u?"left"===l?i+=d:"right"===l&&(i-=d):"left"===l?i-=c:"right"===l&&(i+=c),{x:i,y:a}}var l=t.helpers;t.defaults.global.tooltips={enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,callbacks:{beforeTitle:l.noop,title:function(t,e){var n="",i=e.labels,a=i?i.length:0;if(t.length>0){var r=t[0];r.xLabel?n=r.xLabel:a>0&&r.index<a&&(n=i[r.index])}return n},afterTitle:l.noop,beforeBody:l.noop,beforeLabel:l.noop,label:function(t,e){var n=e.datasets[t.datasetIndex].label||"";return n+": "+t.yLabel},labelColor:function(t,e){var n=e.getDatasetMeta(t.datasetIndex),i=n.data[t.index],a=i._view;return{borderColor:a.borderColor,backgroundColor:a.backgroundColor}},afterLabel:l.noop,afterBody:l.noop,beforeFooter:l.noop,footer:l.noop,afterFooter:l.noop}},t.Tooltip=t.Element.extend({initialize:function(){this._model=a(this._options)},getTitle:function(){var t=this,e=t._options,i=e.callbacks,a=i.beforeTitle.apply(t,arguments),r=i.title.apply(t,arguments),o=i.afterTitle.apply(t,arguments),s=[];return s=n(s,a),s=n(s,r),s=n(s,o)},getBeforeBody:function(){var t=this._options.callbacks.beforeBody.apply(this,arguments);return l.isArray(t)?t:void 0!==t?[t]:[]},getBody:function(t,e){var i=this,a=i._options.callbacks,r=[];return l.each(t,function(t){var o={before:[],lines:[],after:[]};n(o.before,a.beforeLabel.call(i,t,e)),n(o.lines,a.label.call(i,t,e)),n(o.after,a.afterLabel.call(i,t,e)),r.push(o)}),r},getAfterBody:function(){var t=this._options.callbacks.afterBody.apply(this,arguments);return l.isArray(t)?t:void 0!==t?[t]:[]},getFooter:function(){var t=this,e=t._options.callbacks,i=e.beforeFooter.apply(t,arguments),a=e.footer.apply(t,arguments),r=e.afterFooter.apply(t,arguments),o=[];return o=n(o,i),o=n(o,a),o=n(o,r)},update:function(e){var n,u,d=this,c=d._options,h=d._model,f=d._model=a(c),g=d._active,m=d._data,p=d._chartInstance,v={xAlign:h.xAlign,yAlign:h.yAlign},b={x:h.x,y:h.y},y={width:h.width,height:h.height},x={x:h.caretX,y:h.caretY};if(g.length){f.opacity=1;var k=[];x=t.Tooltip.positioners[c.position](g,d._eventPosition);var _=[];for(n=0,u=g.length;n<u;++n)_.push(i(g[n]));c.filter&&(_=_.filter(function(t){return c.filter(t,m)})),c.itemSort&&(_=_.sort(function(t,e){return c.itemSort(t,e,m)})),l.each(_,function(t){k.push(c.callbacks.labelColor.call(d,t,p))}),f.title=d.getTitle(_,m),f.beforeBody=d.getBeforeBody(_,m),f.body=d.getBody(_,m),f.afterBody=d.getAfterBody(_,m),f.footer=d.getFooter(_,m),f.x=Math.round(x.x),f.y=Math.round(x.y),f.caretPadding=l.getValueOrDefault(x.padding,2),f.labelColors=k,f.dataPoints=_,y=r(this,f),v=o(this,y),b=s(f,y,v)}else f.opacity=0;return f.xAlign=v.xAlign,f.yAlign=v.yAlign,f.x=b.x,f.y=b.y,f.width=y.width,f.height=y.height,f.caretX=x.x,f.caretY=x.y,d._model=f,e&&c.custom&&c.custom.call(d,f),d},drawCaret:function(t,n,i){var a,r,o,s,l,u,d=this._view,c=this._chart.ctx,h=d.caretSize,f=d.cornerRadius,g=d.xAlign,m=d.yAlign,p=t.x,v=t.y,b=n.width,y=n.height;"center"===m?("left"===g?(a=p,r=a-h,o=a):(a=p+b,r=a+h,o=a),l=v+y/2,s=l-h,u=l+h):("left"===g?(a=p+f,r=a+h,o=r+h):"right"===g?(a=p+b-f,r=a-h,o=r-h):(r=p+b/2,a=r-h,o=r+h),"top"===m?(s=v,l=s-h,u=s):(s=v+y,l=s+h,u=s)),c.fillStyle=e(d.backgroundColor,i),c.beginPath(),c.moveTo(a,s),c.lineTo(r,l),c.lineTo(o,u),c.closePath(),c.fill()},drawTitle:function(t,n,i,a){var r=n.title;if(r.length){i.textAlign=n._titleAlign,i.textBaseline="top";var o=n.titleFontSize,s=n.titleSpacing;i.fillStyle=e(n.titleFontColor,a),i.font=l.fontString(o,n._titleFontStyle,n._titleFontFamily);var u,d;for(u=0,d=r.length;u<d;++u)i.fillText(r[u],t.x,t.y),t.y+=o+s,u+1===r.length&&(t.y+=n.titleMarginBottom-s)}},drawBody:function(t,n,i,a){var r=n.bodyFontSize,o=n.bodySpacing,s=n.body;i.textAlign=n._bodyAlign,i.textBaseline="top";var u=e(n.bodyFontColor,a);i.fillStyle=u,i.font=l.fontString(r,n._bodyFontStyle,n._bodyFontFamily);var d=0,c=function(e){i.fillText(e,t.x+d,t.y),t.y+=r+o};l.each(n.beforeBody,c);var h=n.displayColors;d=h?r+2:0,l.each(s,function(o,s){l.each(o.before,c),l.each(o.lines,function(o){h&&(i.fillStyle=e(n.legendColorBackground,a),i.fillRect(t.x,t.y,r,r),i.strokeStyle=e(n.labelColors[s].borderColor,a),i.strokeRect(t.x,t.y,r,r),i.fillStyle=e(n.labelColors[s].backgroundColor,a),i.fillRect(t.x+1,t.y+1,r-2,r-2),i.fillStyle=u),c(o)}),l.each(o.after,c)}),d=0,l.each(n.afterBody,c),t.y-=o},drawFooter:function(t,n,i,a){var r=n.footer;r.length&&(t.y+=n.footerMarginTop,i.textAlign=n._footerAlign,i.textBaseline="top",i.fillStyle=e(n.footerFontColor,a),i.font=l.fontString(n.footerFontSize,n._footerFontStyle,n._footerFontFamily),l.each(r,function(e){i.fillText(e,t.x,t.y),t.y+=n.footerFontSize+n.footerSpacing}))},drawBackground:function(t,n,i,a,r){i.fillStyle=e(n.backgroundColor,r),l.drawRoundedRectangle(i,t.x,t.y,a.width,a.height,n.cornerRadius),i.fill()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity;this._options.enabled&&(this.drawBackground(i,e,t,n,a),this.drawCaret(i,n,a),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,a),this.drawBody(i,e,t,a),this.drawFooter(i,e,t,a))}},handleEvent:function(t){var e=this,n=e._options,i=!1;if(e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:e._active=e._chartInstance.getElementsAtEventForMode(t,n.mode,n),i=!l.arrayEquals(e._active,e._lastActive),e._lastActive=e._active,n.enabled||n.custom){e._eventPosition={x:t.x,y:t.y};var a=e._model;e.update(!0),e.pivot(),i|=a.x!==e._model.x||a.y!==e._model.y}return i}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,a=0,r=0;for(e=0,n=t.length;e<n;++e){var o=t[e];if(o&&o.hasValue()){var s=o.tooltipPosition();i+=s.x,a+=s.y,++r}}return{x:Math.round(i/r),y:Math.round(a/r)}},nearest:function(t,e){var n,i,a,r=e.x,o=e.y,s=Number.POSITIVE_INFINITY;for(i=0,a=t.length;i<a;++i){var u=t[i];if(u&&u.hasValue()){var d=u.getCenterPoint(),c=l.distanceBetweenPoints(e,d);c<s&&(s=c,n=u)}}if(n){var h=n.tooltipPosition();r=h.x,o=h.y}return{x:r,y:o}}}}},{}],37:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=t.defaults.global;n.elements.arc={backgroundColor:n.defaultColor,borderColor:"#fff",borderWidth:2},t.elements.Arc=t.Element.extend({inLabelRange:function(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hoverRadius,2)},inRange:function(t,n){var i=this._view;if(i){for(var a=e.getAngleFromPoint(i,{x:t,y:n}),r=a.angle,o=a.distance,s=i.startAngle,l=i.endAngle;l<s;)l+=2*Math.PI;for(;r>l;)r-=2*Math.PI;for(;r<s;)r+=2*Math.PI;var u=r>=s&&r<=l,d=o>=i.innerRadius&&o<=i.outerRadius;return u&&d}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})}},{}],38:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=t.defaults.global;t.defaults.global.elements.line={tension:.4,backgroundColor:n.defaultColor,borderWidth:3,borderColor:n.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0},t.elements.Line=t.Element.extend({draw:function(){function t(t,e){var n=e._view;e._view.steppedLine===!0?(l.lineTo(n.x,t._view.y),l.lineTo(n.x,n.y)):0===e._view.tension?l.lineTo(n.x,n.y):l.bezierCurveTo(t._view.controlPointNextX,t._view.controlPointNextY,n.controlPointPreviousX,n.controlPointPreviousY,n.x,n.y)}var i=this,a=i._view,r=a.spanGaps,o=a.scaleZero,s=i._loop;s||("top"===a.fill?o=a.scaleTop:"bottom"===a.fill&&(o=a.scaleBottom));var l=i._chart.ctx;l.save();var u=i._children.slice(),d=-1;s&&u.length&&u.push(u[0]);var c,h,f,g;if(u.length&&a.fill){for(l.beginPath(),c=0;c<u.length;++c)h=u[c],f=e.previousItem(u,c),g=h._view,0===c?(s?l.moveTo(o.x,o.y):l.moveTo(g.x,o),g.skip||(d=c,l.lineTo(g.x,g.y))):(f=d===-1?f:u[d],g.skip?r||d!==c-1||(s?l.lineTo(o.x,o.y):l.lineTo(f._view.x,o)):(d!==c-1?r&&d!==-1?t(f,h):s?l.lineTo(g.x,g.y):(l.lineTo(g.x,o),l.lineTo(g.x,g.y)):t(f,h),d=c));s||d===-1||l.lineTo(u[d]._view.x,o),l.fillStyle=a.backgroundColor||n.defaultColor,l.closePath(),l.fill()}var m=n.elements.line;for(l.lineCap=a.borderCapStyle||m.borderCapStyle,l.setLineDash&&l.setLineDash(a.borderDash||m.borderDash),l.lineDashOffset=a.borderDashOffset||m.borderDashOffset,l.lineJoin=a.borderJoinStyle||m.borderJoinStyle,l.lineWidth=a.borderWidth||m.borderWidth,l.strokeStyle=a.borderColor||n.defaultColor,l.beginPath(),d=-1,c=0;c<u.length;++c)h=u[c],f=e.previousItem(u,c),g=h._view,0===c?g.skip||(l.moveTo(g.x,g.y),d=c):(f=d===-1?f:u[d],g.skip||(d!==c-1&&!r||d===-1?l.moveTo(g.x,g.y):t(f,h),d=c));l.stroke(),l.restore()}})}},{}],39:[function(t,e,n){"use strict";e.exports=function(t){function e(t){var e=this._view;return!!e&&Math.pow(t-e.x,2)<Math.pow(e.radius+e.hitRadius,2)}function n(t){var e=this._view;return!!e&&Math.pow(t-e.y,2)<Math.pow(e.radius+e.hitRadius,2)}var i=t.helpers,a=t.defaults.global,r=a.defaultColor;a.elements.point={radius:3,pointStyle:"circle",backgroundColor:r,borderWidth:1,borderColor:r,hitRadius:1,hoverRadius:4,hoverBorderWidth:1},t.elements.Point=t.Element.extend({inRange:function(t,e){var n=this._view;return!!n&&Math.pow(t-n.x,2)+Math.pow(e-n.y,2)<Math.pow(n.hitRadius+n.radius,2)},inLabelRange:e,inXRange:e,inYRange:n,getCenterPoint:function(){var t=this._view;return{x:t.x,y:t.y}},getArea:function(){return Math.PI*Math.pow(this._view.radius,2)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y,padding:t.radius+t.borderWidth}},draw:function(e){var n=this._view,o=this._model,s=this._chart.ctx,l=n.pointStyle,u=n.radius,d=n.x,c=n.y,h=t.helpers.color,f=1.01,g=0;n.skip||(s.strokeStyle=n.borderColor||r,s.lineWidth=i.getValueOrDefault(n.borderWidth,a.elements.point.borderWidth),s.fillStyle=n.backgroundColor||r,void 0!==e&&(o.x<e.left||e.right*f<o.x||o.y<e.top||e.bottom*f<o.y)&&(o.x<e.left?g=(d-o.x)/(e.left-o.x):e.right*f<o.x?g=(o.x-d)/(o.x-e.right):o.y<e.top?g=(c-o.y)/(e.top-o.y):e.bottom*f<o.y&&(g=(o.y-c)/(o.y-e.bottom)),g=Math.round(100*g)/100,s.strokeStyle=h(s.strokeStyle).alpha(g).rgbString(),s.fillStyle=h(s.fillStyle).alpha(g).rgbString()),t.canvasHelpers.drawPoint(s,l,u,d,c))}})}},{}],40:[function(t,e,n){"use strict";e.exports=function(t){function e(t){return void 0!==t._view.width}function n(t){var n,i,a,r,o=t._view;if(e(t)){var s=o.width/2;n=o.x-s,i=o.x+s,a=Math.min(o.y,o.base),r=Math.max(o.y,o.base)}else{var l=o.height/2;n=Math.min(o.x,o.base),i=Math.max(o.x,o.base),a=o.y-l,r=o.y+l}return{left:n,top:a,right:i,bottom:r}}var i=t.defaults.global;i.elements.rectangle={backgroundColor:i.defaultColor,borderWidth:0,borderColor:i.defaultColor,borderSkipped:"bottom"},t.elements.Rectangle=t.Element.extend({draw:function(){function t(t){return v[(y+t)%4]}var e,n,i,a,r,o,s,l=this._chart.ctx,u=this._view,d=u.borderWidth;if(u.horizontal?(e=u.base,n=u.x,i=u.y-u.height/2,a=u.y+u.height/2,r=n>e?1:-1,o=1,s=u.borderSkipped||"left"):(e=u.x-u.width/2,n=u.x+u.width/2,i=u.y,a=u.base,r=1,o=a>i?1:-1,s=u.borderSkipped||"bottom"),d){var c=Math.min(Math.abs(e-n),Math.abs(i-a));d=d>c?c:d;var h=d/2,f=e+("left"!==s?h*r:0),g=n+("right"!==s?-h*r:0),m=i+("top"!==s?h*o:0),p=a+("bottom"!==s?-h*o:0);f!==g&&(i=m,a=p),m!==p&&(e=f,n=g)}l.beginPath(),l.fillStyle=u.backgroundColor,l.strokeStyle=u.borderColor,l.lineWidth=d;var v=[[e,a],[e,i],[n,i],[n,a]],b=["bottom","left","top","right"],y=b.indexOf(s,0);y===-1&&(y=0);var x=t(0);l.moveTo(x[0],x[1]);for(var k=1;k<4;k++)x=t(k),l.lineTo(x[0],x[1]);l.fill(),d&&l.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var i=!1;if(this._view){var a=n(this);i=t>=a.left&&t<=a.right&&e>=a.top&&e<=a.bottom}return i},inLabelRange:function(t,i){var a=this;if(!a._view)return!1;var r=!1,o=n(a);return r=e(a)?t>=o.left&&t<=o.right:i>=o.top&&i<=o.bottom},inXRange:function(t){var e=n(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=n(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,n,i=this._view;return e(this)?(t=i.x,n=(i.y+i.base)/2):(t=(i.x+i.base)/2,n=i.y),{x:t,y:n}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})}},{}],41:[function(t,e,n){"use strict";e.exports=function(t){function e(t,e){var n=l.getStyle(t,e),i=n&&n.match(/(\d+)px/);return i?Number(i[1]):void 0}function n(t,n){var i=t.style,a=t.getAttribute("height"),r=t.getAttribute("width");if(t._chartjs={initial:{height:a,width:r,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",null===r||""===r){var o=e(t,"width");void 0!==o&&(t.width=o)}if(null===a||""===a)if(""===t.style.height)t.height=t.width/(n.options.aspectRatio||2);else{var s=e(t,"height");void 0!==o&&(t.height=s)}return t}function i(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function a(t,e){var n=u[t.type]||t.type,a=l.getRelativePosition(t,e);return i(n,e,a.x,a.y,t)}function r(t){var e=document.createElement("iframe");return e.className="chartjs-hidden-iframe",e.style.cssText="display:block;overflow:hidden;border:0;margin:0;top:0;left:0;bottom:0;right:0;height:100%;width:100%;position:absolute;pointer-events:none;z-index:-1;",e.tabIndex=-1,l.addEvent(e,"load",function(){l.addEvent(e.contentWindow||e,"resize",t),t()}),e}function o(t,e,n){var a=t._chartjs={ticking:!1},o=function(){a.ticking||(a.ticking=!0,l.requestAnimFrame.call(window,function(){if(a.resizer)return a.ticking=!1,e(i("resize",n))}))};a.resizer=r(o),t.insertBefore(a.resizer,t.firstChild)}function s(t){if(t&&t._chartjs){var e=t._chartjs.resizer;e&&(e.parentNode.removeChild(e),t._chartjs.resizer=null),delete t._chartjs}}var l=t.helpers,u={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};return{acquireContext:function(t,e){if("string"==typeof t?t=document.getElementById(t):t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t instanceof HTMLCanvasElement){var i=t.getContext&&t.getContext("2d");if(i instanceof CanvasRenderingContext2D)return n(t,e),i}return null},releaseContext:function(t){var e=t.canvas;if(e._chartjs){var n=e._chartjs.initial;["height","width"].forEach(function(t){var i=n[t];void 0===i||null===i?e.removeAttribute(t):e.setAttribute(t,i)}),l.each(n.style||{},function(t,n){e.style[n]=t}),e.width=e.width,delete e._chartjs}},addEventListener:function(t,e,n){var i=t.chart.canvas;if("resize"===e)return void o(i.parentNode,n,t.chart);var r=n._chartjs||(n._chartjs={}),s=r.proxies||(r.proxies={}),u=s[t.id+"_"+e]=function(e){n(a(e,t.chart))};l.addEvent(i,e,u)},removeEventListener:function(t,e,n){var i=t.chart.canvas;if("resize"===e)return void s(i.parentNode,n);var a=n._chartjs||{},r=a.proxies||{},o=r[t.id+"_"+e];o&&l.removeEvent(i,e,o)}}}},{}],42:[function(t,e,n){"use strict";var i=t(41);e.exports=function(t){t.platform={acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},t.helpers.extend(t.platform,i(t))}},{41:41}],43:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n={position:"bottom"},i=t.Scale.extend({getLabels:function(){var t=this.chart.data;return(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t=this,n=t.getLabels();t.minIndex=0,t.maxIndex=n.length-1;var i;void 0!==t.options.ticks.min&&(i=e.indexOf(n,t.options.ticks.min),t.minIndex=i!==-1?i:t.minIndex),void 0!==t.options.ticks.max&&(i=e.indexOf(n,t.options.ticks.max),t.maxIndex=i!==-1?i:t.maxIndex),t.min=n[t.minIndex],t.max=n[t.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,a=n.isHorizontal();return i.yLabels&&!a?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e,n,i){var a=this,r=Math.max(a.maxIndex+1-a.minIndex-(a.options.gridLines.offsetGridLines?0:1),1);if(void 0!==t&&isNaN(e)){var o=a.getLabels(),s=o.indexOf(t);e=s!==-1?s:e}if(a.isHorizontal()){var l=a.width/r,u=l*(e-a.minIndex);return(a.options.gridLines.offsetGridLines&&i||a.maxIndex===a.minIndex&&i)&&(u+=l/2),a.left+Math.round(u)}var d=a.height/r,c=d*(e-a.minIndex);return a.options.gridLines.offsetGridLines&&i&&(c+=d/2),a.top+Math.round(c)},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null,e)},getValueForPixel:function(t){var e,n=this,i=Math.max(n.ticks.length-(n.options.gridLines.offsetGridLines?0:1),1),a=n.isHorizontal(),r=(a?n.width:n.height)/i;return t-=a?n.left:n.top,n.options.gridLines.offsetGridLines&&(t-=r/2),e=t<=0?0:Math.round(t/r)},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",i,n)}},{}],44:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n={position:"left",ticks:{callback:t.Ticks.formatters.linear}},i=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return s?t.xAxisID===n.id:t.yAxisID===n.id}var n=this,i=n.options,a=n.chart,r=a.data,o=r.datasets,s=n.isHorizontal();n.min=null,n.max=null;var l=i.stacked;if(void 0===l&&e.each(o,function(e,n){if(!l){var i=a.getDatasetMeta(n);a.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(l=!0)}}),i.stacked||l){var u={};e.each(o,function(r,o){var s=a.getDatasetMeta(o),l=[s.type,void 0===i.stacked&&void 0===s.stack?o:"",s.stack].join(".");void 0===u[l]&&(u[l]={positiveValues:[],negativeValues:[]});var d=u[l].positiveValues,c=u[l].negativeValues;a.isDatasetVisible(o)&&t(s)&&e.each(r.data,function(t,e){var a=+n.getRightValue(t);isNaN(a)||s.data[e].hidden||(d[e]=d[e]||0,c[e]=c[e]||0,i.relativePoints?d[e]=100:a<0?c[e]+=a:d[e]+=a)})}),e.each(u,function(t){var i=t.positiveValues.concat(t.negativeValues),a=e.min(i),r=e.max(i);n.min=null===n.min?a:Math.min(n.min,a),n.max=null===n.max?r:Math.max(n.max,r)})}else e.each(o,function(i,r){var o=a.getDatasetMeta(r);a.isDatasetVisible(r)&&t(o)&&e.each(i.data,function(t,e){var i=+n.getRightValue(t);isNaN(i)||o.data[e].hidden||(null===n.min?n.min=i:i<n.min&&(n.min=i),null===n.max?n.max=i:i>n.max&&(n.max=i))})});this.handleTickRangeOptions()},getTickLimit:function(){var n,i=this,a=i.options.ticks;if(i.isHorizontal())n=Math.min(a.maxTicksLimit?a.maxTicksLimit:11,Math.ceil(i.width/50));else{var r=e.getValueOrDefault(a.fontSize,t.defaults.global.defaultFontSize);n=Math.min(a.maxTicksLimit?a.maxTicksLimit:11,Math.ceil(i.height/(2*r)))}return n},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e,n=this,i=n.start,a=+n.getRightValue(t),r=n.end-i;return n.isHorizontal()?(e=n.left+n.width/r*(a-i),Math.round(e)):(e=n.bottom-n.height/r*(a-i),Math.round(e))},getValueForPixel:function(t){var e=this,n=e.isHorizontal(),i=n?e.width:e.height,a=(n?t-e.left:e.bottom-t)/i;return e.start+(e.end-e.start)*a},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",i,n)}},{}],45:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n=e.noop;t.LinearScaleBase=t.Scale.extend({handleTickRangeOptions:function(){var t=this,n=t.options,i=n.ticks;if(i.beginAtZero){var a=e.sign(t.min),r=e.sign(t.max);a<0&&r<0?t.max=0:a>0&&r>0&&(t.min=0)}void 0!==i.min?t.min=i.min:void 0!==i.suggestedMin&&(t.min=Math.min(t.min,i.suggestedMin)),void 0!==i.max?t.max=i.max:void 0!==i.suggestedMax&&(t.max=Math.max(t.max,i.suggestedMax)),t.min===t.max&&(t.max++,i.beginAtZero||t.min--)},getTickLimit:n,handleDirectionalChanges:n,buildTicks:function(){var n=this,i=n.options,a=i.ticks,r=n.getTickLimit();r=Math.max(2,r);var o={maxTicks:r,min:a.min,max:a.max,stepSize:e.getValueOrDefault(a.fixedStepSize,a.stepSize)},s=n.ticks=t.Ticks.generators.linear(o,n);n.handleDirectionalChanges(),n.max=e.max(s),n.min=e.min(s),a.reverse?(s.reverse(),n.start=n.max,n.end=n.min):(n.start=n.min,n.end=n.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{}],46:[function(t,e,n){"use strict";e.exports=function(t){var e=t.helpers,n={position:"left",ticks:{callback:t.Ticks.formatters.logarithmic}},i=t.Scale.extend({determineDataLimits:function(){function t(t){return u?t.xAxisID===n.id:t.yAxisID===n.id}var n=this,i=n.options,a=i.ticks,r=n.chart,o=r.data,s=o.datasets,l=e.getValueOrDefault,u=n.isHorizontal();n.min=null,n.max=null,n.minNotZero=null;var d=i.stacked;if(void 0===d&&e.each(s,function(e,n){if(!d){var i=r.getDatasetMeta(n);r.isDatasetVisible(n)&&t(i)&&void 0!==i.stack&&(d=!0)}}),i.stacked||d){var c={};e.each(s,function(a,o){var s=r.getDatasetMeta(o),l=[s.type,void 0===i.stacked&&void 0===s.stack?o:"",s.stack].join(".");r.isDatasetVisible(o)&&t(s)&&(void 0===c[l]&&(c[l]=[]),e.each(a.data,function(t,e){var a=c[l],r=+n.getRightValue(t);isNaN(r)||s.data[e].hidden||(a[e]=a[e]||0,i.relativePoints?a[e]=100:a[e]+=r)}))}),e.each(c,function(t){var i=e.min(t),a=e.max(t);n.min=null===n.min?i:Math.min(n.min,i),n.max=null===n.max?a:Math.max(n.max,a)})}else e.each(s,function(i,a){var o=r.getDatasetMeta(a);r.isDatasetVisible(a)&&t(o)&&e.each(i.data,function(t,e){var i=+n.getRightValue(t);isNaN(i)||o.data[e].hidden||(null===n.min?n.min=i:i<n.min&&(n.min=i),null===n.max?n.max=i:i>n.max&&(n.max=i),0!==i&&(null===n.minNotZero||i<n.minNotZero)&&(n.minNotZero=i))})});n.min=l(a.min,n.min),n.max=l(a.max,n.max),n.min===n.max&&(0!==n.min&&null!==n.min?(n.min=Math.pow(10,Math.floor(e.log10(n.min))-1),n.max=Math.pow(10,Math.floor(e.log10(n.max))+1)):(n.min=1,n.max=10))},buildTicks:function(){var n=this,i=n.options,a=i.ticks,r={min:a.min,max:a.max},o=n.ticks=t.Ticks.generators.logarithmic(r,n);n.isHorizontal()||o.reverse(),n.max=e.max(o),n.min=e.min(o),a.reverse?(o.reverse(),n.start=n.max,n.end=n.min):(n.start=n.min,n.end=n.max)},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),t.Scale.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){return this.getPixelForValue(this.tickValues[t])},getPixelForValue:function(t){var n,i,a,r=this,o=r.start,s=+r.getRightValue(t),l=r.options,u=l.ticks;return r.isHorizontal()?(a=e.log10(r.end)-e.log10(o),0===s?i=r.left:(n=r.width,i=r.left+n/a*(e.log10(s)-e.log10(o)))):(n=r.height,0!==o||u.reverse?0===r.end&&u.reverse?(a=e.log10(r.start)-e.log10(r.minNotZero),i=s===r.end?r.top:s===r.minNotZero?r.top+.02*n:r.top+.02*n+.98*n/a*(e.log10(s)-e.log10(r.minNotZero))):(a=e.log10(r.end)-e.log10(o),n=r.height,i=r.bottom-n/a*(e.log10(s)-e.log10(o))):(a=e.log10(r.end)-e.log10(r.minNotZero),i=s===o?r.bottom:s===r.minNotZero?r.bottom-.02*n:r.bottom-.02*n-.98*n/a*(e.log10(s)-e.log10(r.minNotZero)))),i},getValueForPixel:function(t){var n,i,a=this,r=e.log10(a.end)-e.log10(a.start);return a.isHorizontal()?(i=a.width,n=a.start*Math.pow(10,(t-a.left)*r/i)):(i=a.height,n=Math.pow(10,(a.bottom-t)*r/i)/a.start),n}});t.scaleService.registerScaleType("logarithmic",i,n)}},{}],47:[function(t,e,n){"use strict";e.exports=function(t){function e(t){return t.options.lineArc?0:t.chart.data.labels.length}function n(t){var e=t.options.pointLabels,n=f.getValueOrDefault(e.fontSize,g.defaultFontSize),i=f.getValueOrDefault(e.fontStyle,g.defaultFontStyle),a=f.getValueOrDefault(e.fontFamily,g.defaultFontFamily),r=f.fontString(n,i,a);return{size:n,style:i,family:a,font:r}}function i(t,e,n){return f.isArray(n)?{w:f.longestText(t,t.font,n),h:n.length*e+1.5*(n.length-1)*e}:{w:t.measureText(n).width,h:e}}function a(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:t<i||t>a?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function r(t){var r,o,s,l=n(t),u=Math.min(t.height/2,t.width/2),d={l:t.width,r:0,t:t.height,b:0},c={};t.ctx.font=l.font,t._pointLabelSizes=[];var h=e(t);for(r=0;r<h;r++){s=t.getPointPosition(r,u),o=i(t.ctx,l.size,t.pointLabels[r]||""),t._pointLabelSizes[r]=o;var g=t.getIndexAngle(r),m=f.toDegrees(g)%360,p=a(m,s.x,o.w,0,180),v=a(m,s.y,o.h,90,270);p.start<d.l&&(d.l=p.start,c.l=g),p.end>d.r&&(d.r=p.end,c.r=g),v.start<d.t&&(d.t=v.start,c.t=g),v.end>d.b&&(d.b=v.end,c.b=g)}t.setReductions(u,d,c)}function o(t){var e=Math.min(t.height/2,t.width/2);t.drawingArea=Math.round(e),t.setCenterPoint(0,0,0,0)}function s(t){return 0===t||180===t?"center":t<180?"left":"right"}function l(t,e,n,i){if(f.isArray(e))for(var a=n.y,r=1.5*i,o=0;o<e.length;++o)t.fillText(e[o],n.x,a),a+=r;else t.fillText(e,n.x,n.y)}function u(t,e,n){90===t||270===t?n.y-=e.h/2:(t>270||t<90)&&(n.y-=e.h)}function d(t){var i=t.ctx,a=f.getValueOrDefault,r=t.options,o=r.angleLines,d=r.pointLabels;i.lineWidth=o.lineWidth,i.strokeStyle=o.color;var c=t.getDistanceFromCenterForValue(r.reverse?t.min:t.max),h=n(t);i.textBaseline="top";for(var m=e(t)-1;m>=0;m--){if(o.display){var p=t.getPointPosition(m,c);i.beginPath(),i.moveTo(t.xCenter,t.yCenter),i.lineTo(p.x,p.y),i.stroke(),i.closePath()}var v=t.getPointPosition(m,c+5),b=a(d.fontColor,g.defaultFontColor);i.font=h.font,i.fillStyle=b;var y=t.getIndexAngle(m),x=f.toDegrees(y);i.textAlign=s(x),u(x,t._pointLabelSizes[m],v),l(i,t.pointLabels[m]||"",v,h.size)}}function c(t,n,i,a){var r=t.ctx;if(r.strokeStyle=f.getValueAtIndexOrDefault(n.color,a-1),r.lineWidth=f.getValueAtIndexOrDefault(n.lineWidth,a-1),t.options.lineArc)r.beginPath(),r.arc(t.xCenter,t.yCenter,i,0,2*Math.PI),r.closePath(),r.stroke();else{var o=e(t);if(0===o)return;r.beginPath();var s=t.getPointPosition(0,i);r.moveTo(s.x,s.y);for(var l=1;l<o;l++)s=t.getPointPosition(l,i),r.lineTo(s.x,s.y);r.closePath(),r.stroke()}}function h(t){return f.isNumber(t)?t:0}var f=t.helpers,g=t.defaults.global,m={display:!0,animate:!0,lineArc:!1,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:t.Ticks.formatters.linear},pointLabels:{fontSize:10,callback:function(t){return t}}},p=t.LinearScaleBase.extend({setDimensions:function(){var t=this,e=t.options,n=e.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var i=f.min([t.height,t.width]),a=f.getValueOrDefault(n.fontSize,g.defaultFontSize);t.drawingArea=e.display?i/2-(a/2+n.backdropPaddingY):i/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;f.each(e.data.datasets,function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);f.each(a.data,function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))})}}),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,e=f.getValueOrDefault(t.fontSize,g.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*e)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){this.options.lineArc?o(this):r(this)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-i.height,0)/Math.cos(n.b);a=h(a),r=h(r),o=h(o),s=h(s),i.drawingArea=Math.min(Math.round(t-(a+r)/2),Math.round(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-i-a.drawingArea;a.xCenter=Math.round((o+r)/2+a.left),a.yCenter=Math.round((s+l)/2+a.top)},getIndexAngle:function(t){var n=2*Math.PI/e(this),i=this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0,a=i*Math.PI*2/360;return t*n+a},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this,i=n.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(i)*e)+n.xCenter,y:Math.round(Math.sin(i)*e)+n.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this,e=t.min,n=t.max;return t.getPointPositionForValue(0,t.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},draw:function(){var t=this,e=t.options,n=e.gridLines,i=e.ticks,a=f.getValueOrDefault;
|
16 |
+
if(e.display){var r=t.ctx,o=a(i.fontSize,g.defaultFontSize),s=a(i.fontStyle,g.defaultFontStyle),l=a(i.fontFamily,g.defaultFontFamily),u=f.fontString(o,s,l);f.each(t.ticks,function(s,l){if(l>0||e.reverse){var d=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),h=t.yCenter-d;if(n.display&&0!==l&&c(t,n,d,l),i.display){var f=a(i.fontColor,g.defaultFontColor);if(r.font=u,i.showLabelBackdrop){var m=r.measureText(s).width;r.fillStyle=i.backdropColor,r.fillRect(t.xCenter-m/2-i.backdropPaddingX,h-o/2-i.backdropPaddingY,m+2*i.backdropPaddingX,o+2*i.backdropPaddingY)}r.textAlign="center",r.textBaseline="middle",r.fillStyle=f,r.fillText(s,t.xCenter,h)}}}),e.lineArc||d(t)}}});t.scaleService.registerScaleType("radialLinear",p,m)}},{}],48:[function(t,e,n){"use strict";var i=t(6);i="function"==typeof i?i:window.moment,e.exports=function(t){var e=t.helpers,n={units:[{name:"millisecond",steps:[1,2,5,10,20,50,100,250,500]},{name:"second",steps:[1,2,5,10,30]},{name:"minute",steps:[1,2,5,10,30]},{name:"hour",steps:[1,2,3,6,12]},{name:"day",steps:[1,2,5]},{name:"week",maxStep:4},{name:"month",maxStep:3},{name:"quarter",maxStep:4},{name:"year",maxStep:!1}]},a={position:"bottom",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm:ss a",hour:"MMM D, hA",day:"ll",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1}},r=t.Scale.extend({initialize:function(){if(!i)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");t.Scale.prototype.initialize.call(this)},getLabelMoment:function(t,e){return null===t||null===e?null:"undefined"!=typeof this.labelMoments[t]?this.labelMoments[t][e]:null},getLabelDiff:function(t,e){var n=this;return null===t||null===e?null:(void 0===n.labelDiffs&&n.buildLabelDiffs(),"undefined"!=typeof n.labelDiffs[t]?n.labelDiffs[t][e]:null)},getMomentStartOf:function(t){var e=this;return"week"===e.options.time.unit&&e.options.time.isoWeekday!==!1?t.clone().startOf("isoWeek").isoWeekday(e.options.time.isoWeekday):t.clone().startOf(e.tickUnit)},determineDataLimits:function(){var t=this;t.labelMoments=[];var n=[];t.chart.data.labels&&t.chart.data.labels.length>0?(e.each(t.chart.data.labels,function(e){var i=t.parseTime(e);i.isValid()&&(t.options.time.round&&i.startOf(t.options.time.round),n.push(i))},t),t.firstTick=i.min.call(t,n),t.lastTick=i.max.call(t,n)):(t.firstTick=null,t.lastTick=null),e.each(t.chart.data.datasets,function(a,r){var o=[],s=t.chart.isDatasetVisible(r);"object"==typeof a.data[0]&&null!==a.data[0]?e.each(a.data,function(e){var n=t.parseTime(t.getRightValue(e));n.isValid()&&(t.options.time.round&&n.startOf(t.options.time.round),o.push(n),s&&(t.firstTick=null!==t.firstTick?i.min(t.firstTick,n):n,t.lastTick=null!==t.lastTick?i.max(t.lastTick,n):n))},t):o=n,t.labelMoments.push(o)},t),t.options.time.min&&(t.firstTick=t.parseTime(t.options.time.min)),t.options.time.max&&(t.lastTick=t.parseTime(t.options.time.max)),t.firstTick=(t.firstTick||i()).clone(),t.lastTick=(t.lastTick||i()).clone()},buildLabelDiffs:function(){var t=this;t.labelDiffs=[];var n=[];t.chart.data.labels&&t.chart.data.labels.length>0&&e.each(t.chart.data.labels,function(e){var i=t.parseTime(e);i.isValid()&&(t.options.time.round&&i.startOf(t.options.time.round),n.push(i.diff(t.firstTick,t.tickUnit,!0)))},t),e.each(t.chart.data.datasets,function(i){var a=[];"object"==typeof i.data[0]&&null!==i.data[0]?e.each(i.data,function(e){var n=t.parseTime(t.getRightValue(e));n.isValid()&&(t.options.time.round&&n.startOf(t.options.time.round),a.push(n.diff(t.firstTick,t.tickUnit,!0)))},t):a=n,t.labelDiffs.push(a)},t)},buildTicks:function(){var i=this;i.ctx.save();var a=e.getValueOrDefault(i.options.ticks.fontSize,t.defaults.global.defaultFontSize),r=e.getValueOrDefault(i.options.ticks.fontStyle,t.defaults.global.defaultFontStyle),o=e.getValueOrDefault(i.options.ticks.fontFamily,t.defaults.global.defaultFontFamily),s=e.fontString(a,r,o);if(i.ctx.font=s,i.ticks=[],i.unitScale=1,i.scaleSizeInUnits=0,i.options.time.unit)i.tickUnit=i.options.time.unit||"day",i.displayFormat=i.options.time.displayFormats[i.tickUnit],i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0),i.unitScale=e.getValueOrDefault(i.options.time.unitStepSize,1);else{var l=i.isHorizontal()?i.width:i.height,u=i.tickFormatFunction(i.firstTick,0,[]),d=i.ctx.measureText(u).width,c=Math.cos(e.toRadians(i.options.ticks.maxRotation)),h=Math.sin(e.toRadians(i.options.ticks.maxRotation));d=d*c+a*h;var f=l/d;i.tickUnit=i.options.time.minUnit,i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0),i.displayFormat=i.options.time.displayFormats[i.tickUnit];for(var g=0,m=n.units[g];g<n.units.length;){if(i.unitScale=1,e.isArray(m.steps)&&Math.ceil(i.scaleSizeInUnits/f)<e.max(m.steps)){for(var p=0;p<m.steps.length;++p)if(m.steps[p]>=Math.ceil(i.scaleSizeInUnits/f)){i.unitScale=e.getValueOrDefault(i.options.time.unitStepSize,m.steps[p]);break}break}if(m.maxStep===!1||Math.ceil(i.scaleSizeInUnits/f)<m.maxStep){i.unitScale=e.getValueOrDefault(i.options.time.unitStepSize,Math.ceil(i.scaleSizeInUnits/f));break}++g,m=n.units[g],i.tickUnit=m.name;var v=i.firstTick.diff(i.getMomentStartOf(i.firstTick),i.tickUnit,!0),b=i.getMomentStartOf(i.lastTick.clone().add(1,i.tickUnit)).diff(i.lastTick,i.tickUnit,!0);i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0)+v+b,i.displayFormat=i.options.time.displayFormats[m.name]}}var y;if(i.options.time.min?y=i.getMomentStartOf(i.firstTick):(i.firstTick=i.getMomentStartOf(i.firstTick),y=i.firstTick),!i.options.time.max){var x=i.getMomentStartOf(i.lastTick),k=x.diff(i.lastTick,i.tickUnit,!0);k<0?i.lastTick=i.getMomentStartOf(i.lastTick.add(1,i.tickUnit)):k>=0&&(i.lastTick=x),i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0)}i.options.time.displayFormat&&(i.displayFormat=i.options.time.displayFormat),i.ticks.push(i.firstTick.clone());for(var _=i.unitScale;_<=i.scaleSizeInUnits;_+=i.unitScale){var w=y.clone().add(_,i.tickUnit);if(i.options.time.max&&w.diff(i.lastTick,i.tickUnit,!0)>=0)break;i.ticks.push(w)}var S=i.ticks[i.ticks.length-1].diff(i.lastTick,i.tickUnit);0===S&&0!==i.scaleSizeInUnits||(i.options.time.max?(i.ticks.push(i.lastTick.clone()),i.scaleSizeInUnits=i.lastTick.diff(i.ticks[0],i.tickUnit,!0)):(i.ticks.push(i.lastTick.clone()),i.scaleSizeInUnits=i.lastTick.diff(i.firstTick,i.tickUnit,!0))),i.ctx.restore(),i.labelDiffs=void 0},getLabelForIndex:function(t,e){var n=this,i=n.chart.data.labels&&t<n.chart.data.labels.length?n.chart.data.labels[t]:"",a=n.chart.data.datasets[e].data[t];return null!==a&&"object"==typeof a&&(i=n.getRightValue(a)),n.options.time.tooltipFormat&&(i=n.parseTime(i).format(n.options.time.tooltipFormat)),i},tickFormatFunction:function(t,n,i){var a=t.format(this.displayFormat),r=this.options.ticks,o=e.getValueOrDefault(r.callback,r.userCallback);return o?o(a,n,i):a},convertTicksToLabels:function(){var t=this;t.tickMoments=t.ticks,t.ticks=t.ticks.map(t.tickFormatFunction,t)},getPixelForValue:function(t,e,n){var i=this,a=null;if(void 0!==e&&void 0!==n&&(a=i.getLabelDiff(n,e)),null===a&&(t&&t.isValid||(t=i.parseTime(i.getRightValue(t))),t&&t.isValid&&t.isValid()&&(a=t.diff(i.firstTick,i.tickUnit,!0))),null!==a){var r=0!==a?a/i.scaleSizeInUnits:a;if(i.isHorizontal()){var o=i.width*r;return i.left+Math.round(o)}var s=i.height*r;return i.top+Math.round(s)}},getPixelForTick:function(t){return this.getPixelForValue(this.tickMoments[t],null,null)},getValueForPixel:function(t){var e=this,n=e.isHorizontal()?e.width:e.height,a=(t-(e.isHorizontal()?e.left:e.top))/n;return a*=e.scaleSizeInUnits,e.firstTick.clone().add(i.duration(a,e.tickUnit).asSeconds(),"seconds")},parseTime:function(t){var e=this;return"string"==typeof e.options.time.parser?i(t,e.options.time.parser):"function"==typeof e.options.time.parser?e.options.time.parser(t):"function"==typeof t.getMonth||"number"==typeof t?i(t):t.isValid&&t.isValid()?t:"string"!=typeof e.options.time.format&&e.options.time.format.call?(console.warn("options.time.format is deprecated and replaced by options.time.parser. See http://nnnick.github.io/Chart.js/docs-v2/#scales-time-scale"),e.options.time.format(t)):i(t,e.options.time.format)}});t.scaleService.registerScaleType("time",r,a)}},{6:6}]},{},[7])(7)});
|
assets/js/admin/admin.js
CHANGED
@@ -655,7 +655,7 @@ lprHook.addAction('lpr_admin_quiz_question_html', _lprAdminQuestionHTML);
|
|
655 |
parse_json : function (response) {
|
656 |
if (typeof reposnse == 'object') return response;
|
657 |
try {
|
658 |
-
var m = response.match(
|
659 |
|
660 |
if (m && m[1]) {
|
661 |
response = JSON.parse(m[1])
|
@@ -1123,8 +1123,8 @@ jQuery(document).ready(function ($) {
|
|
1123 |
id = url.getQueryVar('tab');
|
1124 |
$li.addClass('active').siblings().removeClass('active');
|
1125 |
$el.find('#meta-box-tab-' + id).addClass('active').siblings().removeClass('active');
|
|
|
1126 |
LP.setUrl(url);
|
1127 |
-
console.log(id)
|
1128 |
//$(window).scrollTop($box.offset().top - 120);
|
1129 |
});
|
1130 |
$el.data('metaBoxTabs', tabs);
|
655 |
parse_json : function (response) {
|
656 |
if (typeof reposnse == 'object') return response;
|
657 |
try {
|
658 |
+
var m = response.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/)
|
659 |
|
660 |
if (m && m[1]) {
|
661 |
response = JSON.parse(m[1])
|
1123 |
id = url.getQueryVar('tab');
|
1124 |
$li.addClass('active').siblings().removeClass('active');
|
1125 |
$el.find('#meta-box-tab-' + id).addClass('active').siblings().removeClass('active');
|
1126 |
+
$el.find('input[name="learn-press-meta-box-tab"]').val(id);
|
1127 |
LP.setUrl(url);
|
|
|
1128 |
//$(window).scrollTop($box.offset().top - 120);
|
1129 |
});
|
1130 |
$el.data('metaBoxTabs', tabs);
|
assets/js/admin/attributes.js
CHANGED
@@ -81,7 +81,12 @@
|
|
81 |
})
|
82 |
.on('click', '#save-attributes', saveAttributesEvent)
|
83 |
.on('keyup.addNewAttributeValueEvent', '.select2-input', addNewAttributeValueEvent);
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
});
|
87 |
})(jQuery);
|
81 |
})
|
82 |
.on('click', '#save-attributes', saveAttributesEvent)
|
83 |
.on('keyup.addNewAttributeValueEvent', '.select2-input', addNewAttributeValueEvent);
|
84 |
+
|
85 |
+
var $courseAttributes = $('.course-attribute-values') ;
|
86 |
+
|
87 |
+
if ($courseAttributes.length) {
|
88 |
+
$courseAttributes.select2(select2Options);
|
89 |
+
}
|
90 |
|
91 |
});
|
92 |
})(jQuery);
|
assets/js/admin/course-editor.js
CHANGED
@@ -34,7 +34,7 @@
|
|
34 |
},
|
35 |
render : function () {
|
36 |
this.$editor = this.template('course-editor');
|
37 |
-
var $curriculum = this.$editor.find('#course-curriculum');
|
38 |
this.model.sections.forEach(function (section) {
|
39 |
var $section = this._createSection(section);
|
40 |
$curriculum.append($section);
|
@@ -69,8 +69,8 @@
|
|
69 |
axis : 'y',
|
70 |
handle : '.section-item-move',
|
71 |
connectWith: '.section-items',
|
72 |
-
stop: function(e, ui){
|
73 |
-
if(!ui.item.hasClass('ui-draggable')){
|
74 |
return;
|
75 |
}
|
76 |
var temp_id = parseInt($(this).closest('.course-section').data('temp_id')),
|
@@ -88,7 +88,7 @@
|
|
88 |
$section.find('.section-content-types li').draggable({
|
89 |
revert : 'invalid',
|
90 |
connectToSortable: '.section-items',
|
91 |
-
helper : function(){
|
92 |
|
93 |
var $helper = $(this).clone();
|
94 |
$helper.get(0).className = 'ui-draggable ui-draggable-handle course-section-item';
|
@@ -99,7 +99,7 @@
|
|
99 |
accept: '.dashicons',
|
100 |
drop : function (e, ui) {
|
101 |
|
102 |
-
if(!xxx.check(10)){
|
103 |
//return;
|
104 |
}
|
105 |
|
@@ -149,7 +149,7 @@
|
|
149 |
this.model.sections.add(section);
|
150 |
|
151 |
var $section = this._createSection(section);
|
152 |
-
this.$editor.find('#course-curriculum').append($section);
|
153 |
$section.find('.section-name').focus();
|
154 |
},
|
155 |
_showContentTypes: function (e) {
|
34 |
},
|
35 |
render : function () {
|
36 |
this.$editor = this.template('course-editor');
|
37 |
+
var $curriculum = this.$editor.find('#lp-course-curriculum');
|
38 |
this.model.sections.forEach(function (section) {
|
39 |
var $section = this._createSection(section);
|
40 |
$curriculum.append($section);
|
69 |
axis : 'y',
|
70 |
handle : '.section-item-move',
|
71 |
connectWith: '.section-items',
|
72 |
+
stop : function (e, ui) {
|
73 |
+
if (!ui.item.hasClass('ui-draggable')) {
|
74 |
return;
|
75 |
}
|
76 |
var temp_id = parseInt($(this).closest('.course-section').data('temp_id')),
|
88 |
$section.find('.section-content-types li').draggable({
|
89 |
revert : 'invalid',
|
90 |
connectToSortable: '.section-items',
|
91 |
+
helper : function () {
|
92 |
|
93 |
var $helper = $(this).clone();
|
94 |
$helper.get(0).className = 'ui-draggable ui-draggable-handle course-section-item';
|
99 |
accept: '.dashicons',
|
100 |
drop : function (e, ui) {
|
101 |
|
102 |
+
if (!xxx.check(10)) {
|
103 |
//return;
|
104 |
}
|
105 |
|
149 |
this.model.sections.add(section);
|
150 |
|
151 |
var $section = this._createSection(section);
|
152 |
+
this.$editor.find('#lp-course-curriculum').append($section);
|
153 |
$section.find('.section-name').focus();
|
154 |
},
|
155 |
_showContentTypes: function (e) {
|
assets/js/admin/meta-box-course.js
CHANGED
@@ -30,7 +30,7 @@
|
|
30 |
'keyup' : 'processKeyEvents',
|
31 |
'click .lp-section-item .lp-remove' : '_removeItem',
|
32 |
'click .lp-toggle' : 'toggleSection',
|
33 |
-
'click .
|
34 |
'keyup input.no-submit' : 'onEnterInput',
|
35 |
'update input.no-submit' : 'onEnterInput',
|
36 |
'keydown' : 'preventSubmit',
|
@@ -45,7 +45,8 @@
|
|
45 |
'click .learn-press-dropdown-item-types > li a' : '_changeItemType',
|
46 |
'change .lp-item-name ' : '_updateItem',
|
47 |
'focus .lp-item-name' : '_focusItem',
|
48 |
-
'blur .lp-item-name' : '_blurItem'
|
|
|
49 |
},
|
50 |
removeSectionIds : [],
|
51 |
removeItemIds : [],
|
@@ -66,6 +67,13 @@
|
|
66 |
$('#course_curriculum.postbox').removeClass('closed');
|
67 |
|
68 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
_focusItem : function (e) {
|
70 |
$(e.target).closest('tr').removeClass('focus');
|
71 |
},
|
@@ -145,7 +153,7 @@
|
|
145 |
///////////
|
146 |
var $chkPayment = $('input[name="_lp_payment"]').on('click', function () {
|
147 |
var toggle = !($(this).is(':checked'));
|
148 |
-
$('.lp-course-price-field').toggleClass('hide-if-js', toggle)
|
149 |
$('.lp-course-required-enroll').toggleClass('hide-if-js', !toggle);
|
150 |
if (toggle) {
|
151 |
$('.lp-course-sale_start-field').addClass('hide');
|
@@ -242,7 +250,6 @@
|
|
242 |
}
|
243 |
|
244 |
|
245 |
-
|
246 |
$(document)
|
247 |
.on('keyup', '.lp-modal-search input[name="lp-item-name"]', this.searchItem)
|
248 |
.on('click change', '.lp-modal-search input[type="checkbox"]', this.toggleAddItemButtonState)
|
@@ -252,17 +259,7 @@
|
|
252 |
.on('change', 'input[name="learn-press-submit-for-review"]', this.toggleMessage);
|
253 |
|
254 |
$('input[name="learn_press_submit_course_notice_reviewer"]').trigger('change');
|
255 |
-
|
256 |
-
return;
|
257 |
-
var $holder = $('#course_tabs_placeholder'),
|
258 |
-
$tabs = $('#course_tabs'),
|
259 |
-
top = $holder.offset().top;
|
260 |
-
if ($(window).scrollTop() > top) {
|
261 |
-
$tabs.css('width', $tabs.width()).addClass('fixed');
|
262 |
-
} else {
|
263 |
-
$tabs.css('width', '').removeClass('fixed');
|
264 |
-
}
|
265 |
-
});
|
266 |
},
|
267 |
toggleMessage : function (e) {
|
268 |
if (e.target.checked) {
|
@@ -293,22 +290,22 @@
|
|
293 |
return this.checked
|
294 |
}).length )
|
295 |
? (
|
296 |
-
|
297 |
-
.find('.item-bulk-actions button')
|
298 |
-
.removeAttr('disabled')
|
299 |
-
.removeClass('hide-if-js')
|
300 |
-
.map(function () {
|
301 |
-
var $b = $(this);
|
302 |
-
$b.attr('data-action') == 'cancel' ? $b.removeClass('hide-if-js') : $b.html($b.attr('data-title') + ' (+' + len + ')').show()
|
303 |
-
})
|
304 |
-
)
|
305 |
-
: $checkbox.closest('.curriculum-section-content')
|
306 |
.find('.item-bulk-actions button')
|
307 |
-
.
|
|
|
308 |
.map(function () {
|
309 |
var $b = $(this);
|
310 |
-
$b.attr('data-action') == 'cancel' ? $b.hide
|
311 |
-
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
$checkbox.closest('.lp-section-item').toggleClass('remove', e.target.checked);
|
313 |
if (len == $all.length) {
|
314 |
$checkAll.attr('checked', 'checked')
|
@@ -575,10 +572,11 @@
|
|
575 |
e.preventDefault();
|
576 |
var $target = $(e.target);
|
577 |
if ($target.attr('data-action') == 'expand') {
|
578 |
-
this.$('.curriculum-section:not(.lp-empty-section) .
|
579 |
} else {
|
580 |
-
this.$('.curriculum-section:not(.lp-empty-section) .
|
581 |
}
|
|
|
582 |
},
|
583 |
getSelectedItems : function () {
|
584 |
return this.$('.lp-section-item[data-item_id]').map(function () {
|
@@ -1425,7 +1423,7 @@
|
|
1425 |
return false;
|
1426 |
} else {
|
1427 |
}*/
|
1428 |
-
});
|
1429 |
$('#learn-press-notice-check').change(function () {
|
1430 |
var that = this,
|
1431 |
$review = $('textarea[name="review_message"]').prop('disabled', !this.checked),
|
@@ -1444,6 +1442,22 @@
|
|
1444 |
});
|
1445 |
});
|
1446 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1447 |
|
1448 |
function canSubmit() {
|
1449 |
if ((opts.current_user_type == 'admin') || !opts.required_review || (opts.course_status == 'publish' && opts.enable_edit_published)) {
|
@@ -1461,80 +1475,10 @@
|
|
1461 |
}
|
1462 |
$('#course_curriculum-sortables').sortable('disable');
|
1463 |
|
1464 |
-
if (LP_Settings.enable_course_tabs == 'yes') {
|
1465 |
-
meta_boxes_to_tabs();
|
1466 |
-
}
|
1467 |
-
}
|
1468 |
|
1469 |
-
function meta_boxes_to_tabs() {
|
1470 |
-
var $tabWrapper = $('#course-tabs'),
|
1471 |
-
requestedTab = window.location.href.getQueryVar('tab');
|
1472 |
-
$('#normal-sortables .postbox:visible').each(function () {
|
1473 |
-
var $tabContent = $(this).removeClass('closed');
|
1474 |
-
$tabWrapper.append('<li><a data-tab="' + $tabContent.attr('id') + '" href="">' + $tabContent.find('.ui-sortable-handle').text() + '</a></li>');
|
1475 |
-
if (!requestedTab) {
|
1476 |
-
requestedTab = $tabContent.attr('id');
|
1477 |
-
}
|
1478 |
-
});
|
1479 |
-
$(document).on('click', '#course-tabs :not(#switch-course-metaboxes) a', function () {
|
1480 |
-
var $tab = $(this),
|
1481 |
-
id = $tab.data('tab'),
|
1482 |
-
url = window.location.href;
|
1483 |
-
|
1484 |
-
$('#' + id + '.postbox').addClass('active').siblings('.active').removeClass('active');
|
1485 |
-
$tab.parent().addClass('active').siblings().removeClass('active');
|
1486 |
-
url = url.removeQueryVar('tab').addQueryVar('tab', id);
|
1487 |
-
LP.setUrl(url);
|
1488 |
-
$('#course-tab').val(id);
|
1489 |
-
$(window).trigger('scroll');
|
1490 |
-
return false;
|
1491 |
-
})
|
1492 |
-
/*.on('click', '#switch-course-metaboxes', function () {
|
1493 |
-
var url = window.location.href;
|
1494 |
-
url = url.removeQueryVar('tab').addQueryVar('switch-course-tab', 'off');
|
1495 |
-
LP.reload(url);
|
1496 |
-
});*/
|
1497 |
-
$('#course-tabs [data-tab="' + requestedTab + '"]').trigger('click');
|
1498 |
}
|
1499 |
|
1500 |
$(document)
|
1501 |
-
.ready(_ready)
|
1502 |
-
.on('click', '.items-toggle a', _toggleSectionsHandler)
|
1503 |
-
.on('click', '#toggle-meta-boxes', function (e) {
|
1504 |
-
e.preventDefault();
|
1505 |
-
var $boxes = $('#normal-sortables .postbox:visible'),
|
1506 |
-
show = $boxes.first().hasClass('closed');
|
1507 |
-
// We do not want wp run ajax for each meta box
|
1508 |
-
$boxes.filter(':lt(' + ($boxes.length - 1) + ')').toggleClass('closed', !show);
|
1509 |
-
|
1510 |
-
// Tell wp api update meta box states by trigger click event in the last item
|
1511 |
-
$boxes.last().toggleClass('closed', show).find('.handlediv').trigger('click');
|
1512 |
-
}).on('click', '#reorder-course-tabs', function (e) {
|
1513 |
-
e.preventDefault();
|
1514 |
-
$(this).hide();
|
1515 |
-
$('#complete-reorder-course-tabs').show();
|
1516 |
-
$('#course-tabs').sortable({
|
1517 |
-
axis : 'x',
|
1518 |
-
items : 'li:not(#switch-course-metaboxes)',
|
1519 |
-
update: function (e, ui) {
|
1520 |
-
var tab = ui.item.find('a').data('tab'),
|
1521 |
-
$prev = ui.item.prev(),
|
1522 |
-
$next = ui.item.next();
|
1523 |
-
if ($prev.length) {
|
1524 |
-
$('#' + tab + '.postbox').insertAfter($('#' + $prev.find('a').data('tab') + '.postbox'));
|
1525 |
-
} else {
|
1526 |
-
$('#' + tab + '.postbox').insertBefore($('#' + $next.find('a').data('tab') + '.postbox'));
|
1527 |
-
|
1528 |
-
}
|
1529 |
-
}
|
1530 |
-
}).sortable('enable');
|
1531 |
-
}).on('click', '#complete-reorder-course-tabs', function (e) {
|
1532 |
-
e.preventDefault();
|
1533 |
-
$(this).hide();
|
1534 |
-
$('#reorder-course-tabs').show();
|
1535 |
-
$('#course-tabs').sortable('disable');
|
1536 |
-
})
|
1537 |
-
|
1538 |
-
|
1539 |
})
|
1540 |
(jQuery);
|
30 |
'keyup' : 'processKeyEvents',
|
31 |
'click .lp-section-item .lp-remove' : '_removeItem',
|
32 |
'click .lp-toggle' : 'toggleSection',
|
33 |
+
'click .curriculum-heading .items-toggle a' : 'toggleSections',
|
34 |
'keyup input.no-submit' : 'onEnterInput',
|
35 |
'update input.no-submit' : 'onEnterInput',
|
36 |
'keydown' : 'preventSubmit',
|
45 |
'click .learn-press-dropdown-item-types > li a' : '_changeItemType',
|
46 |
'change .lp-item-name ' : '_updateItem',
|
47 |
'focus .lp-item-name' : '_focusItem',
|
48 |
+
'blur .lp-item-name' : '_blurItem',
|
49 |
+
'click #learn-press-toggle-course-results' : '_toggleCourseResults'
|
50 |
},
|
51 |
removeSectionIds : [],
|
52 |
removeItemIds : [],
|
67 |
$('#course_curriculum.postbox').removeClass('closed');
|
68 |
|
69 |
},
|
70 |
+
_toggleCourseResults : function (e) {
|
71 |
+
e.preventDefault();
|
72 |
+
var $a = $(e.target),
|
73 |
+
click = $a.data('click');
|
74 |
+
$a.html($a.data(click));
|
75 |
+
$a.attr('data-click', click == 'advanced' ? 'basic' : 'advanced');
|
76 |
+
},
|
77 |
_focusItem : function (e) {
|
78 |
$(e.target).closest('tr').removeClass('focus');
|
79 |
},
|
153 |
///////////
|
154 |
var $chkPayment = $('input[name="_lp_payment"]').on('click', function () {
|
155 |
var toggle = !($(this).is(':checked'));
|
156 |
+
$('.lp-course-price-field').toggleClass('hide-if-js', toggle);
|
157 |
$('.lp-course-required-enroll').toggleClass('hide-if-js', !toggle);
|
158 |
if (toggle) {
|
159 |
$('.lp-course-sale_start-field').addClass('hide');
|
250 |
}
|
251 |
|
252 |
|
|
|
253 |
$(document)
|
254 |
.on('keyup', '.lp-modal-search input[name="lp-item-name"]', this.searchItem)
|
255 |
.on('click change', '.lp-modal-search input[type="checkbox"]', this.toggleAddItemButtonState)
|
259 |
.on('change', 'input[name="learn-press-submit-for-review"]', this.toggleMessage);
|
260 |
|
261 |
$('input[name="learn_press_submit_course_notice_reviewer"]').trigger('change');
|
262 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
},
|
264 |
toggleMessage : function (e) {
|
265 |
if (e.target.checked) {
|
290 |
return this.checked
|
291 |
}).length )
|
292 |
? (
|
293 |
+
$checkbox.closest('.curriculum-section-content')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
.find('.item-bulk-actions button')
|
295 |
+
.removeAttr('disabled')
|
296 |
+
.removeClass('hide-if-js')
|
297 |
.map(function () {
|
298 |
var $b = $(this);
|
299 |
+
$b.attr('data-action') == 'cancel' ? $b.removeClass('hide-if-js') : $b.html($b.attr('data-title') + ' (+' + len + ')').show()
|
300 |
+
})
|
301 |
+
)
|
302 |
+
: $checkbox.closest('.curriculum-section-content')
|
303 |
+
.find('.item-bulk-actions button')
|
304 |
+
.hide()
|
305 |
+
.map(function () {
|
306 |
+
var $b = $(this);
|
307 |
+
$b.attr('data-action') == 'cancel' ? $b.hide() : $b.html($b.attr('data-title')).hide()
|
308 |
+
});
|
309 |
$checkbox.closest('.lp-section-item').toggleClass('remove', e.target.checked);
|
310 |
if (len == $all.length) {
|
311 |
$checkAll.attr('checked', 'checked')
|
572 |
e.preventDefault();
|
573 |
var $target = $(e.target);
|
574 |
if ($target.attr('data-action') == 'expand') {
|
575 |
+
this.$('.curriculum-section:not(.lp-empty-section) .curriculum-section-content').slideDown();
|
576 |
} else {
|
577 |
+
this.$('.curriculum-section:not(.lp-empty-section) .curriculum-section-content').slideUp();
|
578 |
}
|
579 |
+
$target.addClass('hide-if-js').siblings('a').removeClass('hide-if-js');
|
580 |
},
|
581 |
getSelectedItems : function () {
|
582 |
return this.$('.lp-section-item[data-item_id]').map(function () {
|
1423 |
return false;
|
1424 |
} else {
|
1425 |
}*/
|
1426 |
+
}).attr('novalidate', 'true');
|
1427 |
$('#learn-press-notice-check').change(function () {
|
1428 |
var that = this,
|
1429 |
$review = $('textarea[name="review_message"]').prop('disabled', !this.checked),
|
1442 |
});
|
1443 |
});
|
1444 |
|
1445 |
+
function _toggleCourseResults(click) {
|
1446 |
+
|
1447 |
+
}
|
1448 |
+
|
1449 |
+
$(document).on('click.learn-press-toggle-course-results', '#learn-press-toggle-course-results a', function (e) {
|
1450 |
+
e.preventDefault();
|
1451 |
+
var $a = $(this),
|
1452 |
+
click = $a.data('click');
|
1453 |
+
$a.html($a.data(click));
|
1454 |
+
$a.data('click', click == 'advanced' ? 'basic' : 'advanced');
|
1455 |
+
$a.closest('.rwmb-input').find('li:gt(1)').toggle(click != 'advanced');
|
1456 |
+
$a.parent().remove();
|
1457 |
+
});
|
1458 |
+
if ($.inArray($('input[name="_lp_course_result"]:checked').val(), ['', 'evaluate_lesson', 'evaluate_final_quiz']) != -1) {
|
1459 |
+
$('#learn-press-toggle-course-results').closest('.rwmb-input').find('li:gt(1)').hide();
|
1460 |
+
}
|
1461 |
|
1462 |
function canSubmit() {
|
1463 |
if ((opts.current_user_type == 'admin') || !opts.required_review || (opts.course_status == 'publish' && opts.enable_edit_published)) {
|
1475 |
}
|
1476 |
$('#course_curriculum-sortables').sortable('disable');
|
1477 |
|
|
|
|
|
|
|
|
|
1478 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1479 |
}
|
1480 |
|
1481 |
$(document)
|
1482 |
+
.ready(_ready);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1483 |
})
|
1484 |
(jQuery);
|
assets/js/admin/meta-box-order.js
CHANGED
@@ -14,19 +14,69 @@
|
|
14 |
_.bindAll(this, 'resetModal', 'updateModal', '_updateDescription');
|
15 |
LP.Hook.addAction('learn_press_message_box_before_resize', this.resetModal);
|
16 |
LP.Hook.addAction('learn_press_message_box_resize', this.updateModal);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
$(document).on('learn_press_modal_search_items_response', this.addItem2);
|
18 |
this.userSuggest();
|
19 |
},
|
20 |
_updateDescription: function (e) {
|
21 |
var $sel = $(e.target),
|
22 |
$option = $sel.find('option:selected');
|
23 |
-
$sel.siblings('.description').
|
24 |
-
|
25 |
-
.
|
26 |
-
|
27 |
-
|
28 |
-
}).addClass($option.val()).fadeIn('fast');
|
29 |
-
});
|
30 |
},
|
31 |
userSuggest : function () {
|
32 |
var id = ( typeof current_site_id !== 'undefined' ) ? '&site_id=' + current_site_id : '';
|
@@ -63,7 +113,7 @@
|
|
63 |
updateModal : function ($app) {
|
64 |
this.$('#learn-press-courses-result').css('height', '').css('overflow', '');
|
65 |
},
|
66 |
-
showFormItems
|
67 |
var $form = LP.ModalSearchItems({
|
68 |
template : 'tmpl-learn-press-search-items',
|
69 |
type : 'lp_course',
|
@@ -78,22 +128,22 @@
|
|
78 |
|
79 |
},
|
80 |
_addItem : function (e) {
|
81 |
-
this.showFormItems('lp_course','add-lp_course')
|
82 |
// var $form = $('#learn-press-modal-add-order-courses');
|
83 |
// if ($form.length == 0) {
|
84 |
// $form = $(wp.template('learn-press-modal-add-order-courses')());
|
85 |
// }
|
86 |
// LP.MessageBox.show($form);
|
87 |
},
|
88 |
-
addItem2
|
89 |
-
var that
|
90 |
-
var selected
|
91 |
if (e.ctrlKey) {
|
92 |
//return true;
|
93 |
}
|
94 |
var ids = [];
|
95 |
selected.each(function () {
|
96 |
-
ids.push(
|
97 |
});
|
98 |
|
99 |
$.ajax({
|
@@ -116,17 +166,17 @@
|
|
116 |
$order_table.find('.order-subtotal').html(response.order_data.subtotal_html);
|
117 |
$order_table.find('.order-total').html(response.order_data.total_html);
|
118 |
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
$no_item.addClass('hide-if-js');
|
124 |
}
|
125 |
}
|
126 |
});
|
127 |
|
128 |
return false;
|
129 |
-
|
130 |
// _makeListSortable();
|
131 |
},
|
132 |
addItem : function (e, ids) {
|
14 |
_.bindAll(this, 'resetModal', 'updateModal', '_updateDescription');
|
15 |
LP.Hook.addAction('learn_press_message_box_before_resize', this.resetModal);
|
16 |
LP.Hook.addAction('learn_press_message_box_resize', this.updateModal);
|
17 |
+
|
18 |
+
var $selectUsers = this.$('#order-customer');
|
19 |
+
if ($selectUsers.attr('multiple') == 'multiple') {
|
20 |
+
$selectUsers.select2({
|
21 |
+
width: $('#minor-publishing .misc-pub-section').innerWidth() - 20
|
22 |
+
});
|
23 |
+
}
|
24 |
+
var $add_new_h2 = $('body.post-type-lp_order').find('.page-title-action, .add-new-h2'),
|
25 |
+
$add_h2 = $('<a href="post-new.php?post_type=lp_order&multi-users=yes" class="page-title-action add-new-h2">Add order multiple users</a>');
|
26 |
+
$add_h2
|
27 |
+
.insertAfter($add_new_h2);
|
28 |
+
|
29 |
+
$('.wp-list-table #order_status').css('width', '135px');
|
30 |
+
|
31 |
+
$('select[name="order-status"]').on('change', function () {
|
32 |
+
var $sel = $(this),
|
33 |
+
$sec = $('.order-action-section'),
|
34 |
+
status = $sel.data('status'),
|
35 |
+
order_id = +$sel.closest('tr.type-lp_order').find('td.column-title strong a.row-title').text().replace('#', '');
|
36 |
+
|
37 |
+
// console.log(order_id);
|
38 |
+
// console.log($sel.val());
|
39 |
+
|
40 |
+
$.ajax({
|
41 |
+
url : LP_Settings.ajax,
|
42 |
+
data : {
|
43 |
+
action : 'learnpress_update_order_status',
|
44 |
+
order_id: order_id,
|
45 |
+
value: $sel.val(),
|
46 |
+
},
|
47 |
+
dataType: 'text',
|
48 |
+
type : 'post',
|
49 |
+
success : function (response) {
|
50 |
+
LP.log(response);
|
51 |
+
response = LP.parseJSON(response);
|
52 |
+
if (response.result === 'success') {
|
53 |
+
var $order_table = that.$('.order-items'),
|
54 |
+
$no_item = $order_table.find('.no-order-items');
|
55 |
+
$(response.item_html).insertBefore($no_item);
|
56 |
+
$order_table.find('.order-subtotal').html(response.order_data.subtotal_html);
|
57 |
+
$order_table.find('.order-total').html(response.order_data.total_html);
|
58 |
+
|
59 |
+
$item.remove();
|
60 |
+
$no_item.addClass('hide-if-js');
|
61 |
+
}
|
62 |
+
}
|
63 |
+
});
|
64 |
+
|
65 |
+
$sec.toggleClass('hide-if-js', status != $sel.val());
|
66 |
+
}).trigger('init');
|
67 |
+
|
68 |
+
|
69 |
$(document).on('learn_press_modal_search_items_response', this.addItem2);
|
70 |
this.userSuggest();
|
71 |
},
|
72 |
_updateDescription: function (e) {
|
73 |
var $sel = $(e.target),
|
74 |
$option = $sel.find('option:selected');
|
75 |
+
$sel.siblings('.description').hide().html($option.attr('data-desc'))
|
76 |
+
.removeClass(function (c, d) {
|
77 |
+
var m = d.match(/(lp-.*)\s?/);
|
78 |
+
return m ? m[0] : '';
|
79 |
+
}).addClass($option.val()).show();
|
|
|
|
|
80 |
},
|
81 |
userSuggest : function () {
|
82 |
var id = ( typeof current_site_id !== 'undefined' ) ? '&site_id=' + current_site_id : '';
|
113 |
updateModal : function ($app) {
|
114 |
this.$('#learn-press-courses-result').css('height', '').css('overflow', '');
|
115 |
},
|
116 |
+
showFormItems : function (type) {
|
117 |
var $form = LP.ModalSearchItems({
|
118 |
template : 'tmpl-learn-press-search-items',
|
119 |
type : 'lp_course',
|
128 |
|
129 |
},
|
130 |
_addItem : function (e) {
|
131 |
+
this.showFormItems('lp_course', 'add-lp_course')
|
132 |
// var $form = $('#learn-press-modal-add-order-courses');
|
133 |
// if ($form.length == 0) {
|
134 |
// $form = $(wp.template('learn-press-modal-add-order-courses')());
|
135 |
// }
|
136 |
// LP.MessageBox.show($form);
|
137 |
},
|
138 |
+
addItem2 : function (e, $view, $items) {
|
139 |
+
var that = this;
|
140 |
+
var selected = $items; //$form.find('li:visible input:checked'),
|
141 |
if (e.ctrlKey) {
|
142 |
//return true;
|
143 |
}
|
144 |
var ids = [];
|
145 |
selected.each(function () {
|
146 |
+
ids.push($(this).data('id'));
|
147 |
});
|
148 |
|
149 |
$.ajax({
|
166 |
$order_table.find('.order-subtotal').html(response.order_data.subtotal_html);
|
167 |
$order_table.find('.order-total').html(response.order_data.total_html);
|
168 |
|
169 |
+
selected.each(function () {
|
170 |
+
console.log($(this));
|
171 |
+
$(this).remove();
|
172 |
+
});
|
173 |
$no_item.addClass('hide-if-js');
|
174 |
}
|
175 |
}
|
176 |
});
|
177 |
|
178 |
return false;
|
179 |
+
// restart sortable
|
180 |
// _makeListSortable();
|
181 |
},
|
182 |
addItem : function (e, ids) {
|
assets/js/admin/meta-box-quiz.js
CHANGED
@@ -283,6 +283,18 @@
|
|
283 |
}
|
284 |
$el.find('span').html(t);
|
285 |
}).filter(':checked').trigger('change');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286 |
});
|
287 |
|
288 |
return;
|
@@ -315,4 +327,4 @@
|
|
315 |
|
316 |
$doc.ready(_ready);
|
317 |
|
318 |
-
})(jQuery)
|
283 |
}
|
284 |
$el.find('span').html(t);
|
285 |
}).filter(':checked').trigger('change');
|
286 |
+
|
287 |
+
$('input[name="_lp_show_hide_question"]').change(function () {
|
288 |
+
var t = $('input[name="_lp_show_hide_question"]:checked').val(),
|
289 |
+
$el = $('label[for="_lp_show_result"]'),
|
290 |
+
passing_grade = $('input[name="_lp_show_result"]');
|
291 |
+
if( t === 'show' ){
|
292 |
+
$el.closest('.rwmb-field').show();
|
293 |
+
} else {
|
294 |
+
$el.closest('.rwmb-field').hide();
|
295 |
+
}
|
296 |
+
$el.find('span').html(t);
|
297 |
+
}).filter(':checked').trigger('change');
|
298 |
});
|
299 |
|
300 |
return;
|
327 |
|
328 |
$doc.ready(_ready);
|
329 |
|
330 |
+
})(jQuery)
|
assets/js/admin/modal-search-items.js
CHANGED
@@ -95,15 +95,26 @@
|
|
95 |
term : '',
|
96 |
exclude: ''
|
97 |
}, args || {});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
$.ajax({
|
99 |
url : LP_Settings.ajax,
|
100 |
data : {
|
101 |
-
action
|
102 |
-
type
|
103 |
-
term
|
104 |
-
exclude
|
105 |
-
context
|
106 |
-
context_id: this.options.context_id
|
|
|
107 |
},
|
108 |
type : 'get',
|
109 |
dataType: 'text',
|
95 |
term : '',
|
96 |
exclude: ''
|
97 |
}, args || {});
|
98 |
+
|
99 |
+
var current_items = [],
|
100 |
+
items = $('.order-items tr[data-item_id]');
|
101 |
+
|
102 |
+
items.each(function () {
|
103 |
+
current_items.push($(this).data('item_id'));
|
104 |
+
});
|
105 |
+
|
106 |
+
console.log(current_items);
|
107 |
+
|
108 |
$.ajax({
|
109 |
url : LP_Settings.ajax,
|
110 |
data : {
|
111 |
+
action : 'learnpress_modal_search_items',
|
112 |
+
type : this.options.type,
|
113 |
+
term : args.term,
|
114 |
+
exclude : args.exclude,
|
115 |
+
context : this.options.context,
|
116 |
+
context_id : this.options.context_id,
|
117 |
+
current_items : current_items,
|
118 |
},
|
119 |
type : 'get',
|
120 |
dataType: 'text',
|
assets/js/admin/settings.js
CHANGED
@@ -168,12 +168,23 @@
|
|
168 |
} else if (e.keyCode == 27 && e.type == 'keydown') {
|
169 |
$(this).siblings('a').trigger('click')
|
170 |
}
|
171 |
-
}).on('change update', '#learn_press_required_review', function(e){
|
172 |
var $depend = $('input[name="learn_press_enable_edit_published"]').closest('tr');
|
173 |
$depend.toggleClass('hide-if-js', !e.target.checked).find('input[type="checkbox"]').prop('disabled', !e.target.checked)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
});
|
175 |
|
176 |
-
$('#learn_press_required_review').trigger('update');
|
177 |
$('#learn-press-admin-settings').on('click', '.nav-tab, .subsubsub > li > a', function (e) {
|
178 |
e.preventDefault();
|
179 |
var redirect = $(this).attr('href'),
|
@@ -195,13 +206,28 @@
|
|
195 |
window.location.href = redirect;
|
196 |
}
|
197 |
});
|
198 |
-
|
199 |
if ($('#learn-press-admin-settings .subsubsub').length) {
|
200 |
$('#learn-press-admin-settings').removeClass('no-subtabs');
|
201 |
}
|
202 |
$('.learn-press-settings-wrap').addClass('ready')
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
// hold current settings to know if user changed anything
|
204 |
oldData = $('#mainform').serialize();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
}
|
206 |
|
207 |
$doc.ready(_ready);
|
168 |
} else if (e.keyCode == 27 && e.type == 'keydown') {
|
169 |
$(this).siblings('a').trigger('click')
|
170 |
}
|
171 |
+
}).on('change update', '#learn_press_required_review', function (e) {
|
172 |
var $depend = $('input[name="learn_press_enable_edit_published"]').closest('tr');
|
173 |
$depend.toggleClass('hide-if-js', !e.target.checked).find('input[type="checkbox"]').prop('disabled', !e.target.checked)
|
174 |
+
}).on('change update', '#learn_press_auto_redirect_next_lesson', function (e) {
|
175 |
+
var $depend = $('#learn_press_auto_redirect_message, #learn_press_auto_redirect_time').closest('tr');
|
176 |
+
$depend.toggleClass('hide-if-js', !e.target.checked);
|
177 |
+
}).on('change', '.learn-press-single-course-permalink input[type="radio"]', function () {
|
178 |
+
var $check = $(this),
|
179 |
+
$row = $check.closest('.learn-press-single-course-permalink');
|
180 |
+
if ($row.hasClass('custom-base')) {
|
181 |
+
$row.find('input[type="text"]').prop('readonly', false);
|
182 |
+
} else {
|
183 |
+
$row.siblings('.custom-base').find('input[type="text"]').prop('readonly', true);
|
184 |
+
}
|
185 |
});
|
186 |
|
187 |
+
$('#learn_press_required_review, #learn_press_auto_redirect_next_lesson').trigger('update');
|
188 |
$('#learn-press-admin-settings').on('click', '.nav-tab, .subsubsub > li > a', function (e) {
|
189 |
e.preventDefault();
|
190 |
var redirect = $(this).attr('href'),
|
206 |
window.location.href = redirect;
|
207 |
}
|
208 |
});
|
|
|
209 |
if ($('#learn-press-admin-settings .subsubsub').length) {
|
210 |
$('#learn-press-admin-settings').removeClass('no-subtabs');
|
211 |
}
|
212 |
$('.learn-press-settings-wrap').addClass('ready')
|
213 |
+
.on('click', '#learn-press-reset-settings', function () {
|
214 |
+
if (!confirm($(this).data('text'))) {
|
215 |
+
return false;
|
216 |
+
}
|
217 |
+
});
|
218 |
+
|
219 |
// hold current settings to know if user changed anything
|
220 |
oldData = $('#mainform').serialize();
|
221 |
+
|
222 |
+
(function () {
|
223 |
+
$('.learn-press-dropdown-pages').each(function () {
|
224 |
+
var $sel = $(this);
|
225 |
+
$sel.css('width', $sel.width() + 50).find('option').each(function () {
|
226 |
+
$(this).html($(this).html().replace(/ /g, ''));
|
227 |
+
});
|
228 |
+
$sel.select2();
|
229 |
+
});
|
230 |
+
})();
|
231 |
}
|
232 |
|
233 |
$doc.ready(_ready);
|
assets/js/frontend/add-to-cart.js
CHANGED
@@ -1,29 +1,30 @@
|
|
1 |
;(function ($) {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
|
|
27 |
|
28 |
-
|
29 |
})(jQuery);
|
1 |
;(function ($) {
|
2 |
+
"use strict";
|
3 |
+
function _ready() {
|
4 |
+
$('form.purchase-course').submit(function () {
|
5 |
+
alert();
|
6 |
+
var $button = $('button.purchase-button', this),
|
7 |
+
$view_cart = $('.view-cart-button', this);
|
8 |
+
$button.removeClass('added').addClass('loading');
|
9 |
+
$.ajax({
|
10 |
+
url: $('input[name="_wp_http_referer"]', this).val() + '?lp-ajax=add-to-cart',
|
11 |
+
data: $(this).serialize(),
|
12 |
+
error: function () {
|
13 |
+
$button.removeClass('loading');
|
14 |
+
},
|
15 |
+
dataType: 'html',
|
16 |
+
success: function (response) {
|
17 |
+
response = LP.parseJSON(response);
|
18 |
+
$button.addClass('added').removeClass('loading');
|
19 |
+
$view_cart.removeClass('hide-if-js');
|
20 |
+
if (typeof response.redirect === 'string') {
|
21 |
+
window.location.href = response.redirect;
|
22 |
+
}
|
23 |
+
}
|
24 |
+
});
|
25 |
+
return false;
|
26 |
+
});
|
27 |
+
}
|
28 |
|
29 |
+
$(document).ready(_ready);
|
30 |
})(jQuery);
|
assets/js/frontend/bak.course-lesson.js
DELETED
@@ -1,223 +0,0 @@
|
|
1 |
-
;(function ($) {
|
2 |
-
"use strict";
|
3 |
-
return;
|
4 |
-
$.LP_Course_Item = function () {
|
5 |
-
|
6 |
-
}
|
7 |
-
$.LP_Course_Item.Model = Backbone.Model.extend({
|
8 |
-
url : function () {
|
9 |
-
return this.rootUrl
|
10 |
-
},
|
11 |
-
rootUrl : '',
|
12 |
-
initialize: function (data) {
|
13 |
-
this.rootUrl = data.rootUrl;
|
14 |
-
},
|
15 |
-
load : function (callback) {
|
16 |
-
var that = this,
|
17 |
-
_completed = function (response, success) {
|
18 |
-
var $html = $(response || ''),
|
19 |
-
$lesson = $html.find('#learn-press-course-lesson');
|
20 |
-
if ($lesson.length == 0) {
|
21 |
-
$lesson = $('<div id="learn-press-course-lesson" />');
|
22 |
-
}
|
23 |
-
if (LP.Hook.applyFilters('learn_press_update_item_content', $lesson, that) !== false) {
|
24 |
-
that.set('content', $lesson);
|
25 |
-
$(document).trigger('learn_press_course_item_content_replaced', $lesson, that);
|
26 |
-
$('.course-item.item-current')
|
27 |
-
.removeClass('item-current');
|
28 |
-
$('.course-item.course-item-' + that.get('id'))
|
29 |
-
.addClass('item-current');
|
30 |
-
}
|
31 |
-
$.isFunction(callback) && callback.call(that, response);
|
32 |
-
};
|
33 |
-
$.ajax({
|
34 |
-
url : this.url(),
|
35 |
-
dataType: 'html',
|
36 |
-
success : function (response) {
|
37 |
-
_completed(response, true);
|
38 |
-
},
|
39 |
-
error : function () {
|
40 |
-
_completed('', false)
|
41 |
-
}
|
42 |
-
});
|
43 |
-
},
|
44 |
-
complete : function (args) {
|
45 |
-
var that = this;
|
46 |
-
args = $.extend({
|
47 |
-
data : null,
|
48 |
-
success: null
|
49 |
-
}, args || {});
|
50 |
-
LP.ajax({
|
51 |
-
dataType: 'html',
|
52 |
-
action : 'complete_lesson',
|
53 |
-
data : $.extend({
|
54 |
-
id: this.get('id')
|
55 |
-
}, args.data || {}),
|
56 |
-
success : function (response) {
|
57 |
-
response = LP.parseJSON(response);
|
58 |
-
$.isFunction(args.success) && args.success.call(that, $.extend(response, {id: that.get('id')}))
|
59 |
-
}
|
60 |
-
});
|
61 |
-
return;
|
62 |
-
$.ajax({
|
63 |
-
url : '',
|
64 |
-
dataType: 'html',
|
65 |
-
data : $.extend({
|
66 |
-
action: 'learnpress_complete_lesson',
|
67 |
-
id : this.get('id')
|
68 |
-
}, args.data || {}),
|
69 |
-
success : function (response) {
|
70 |
-
response = LP.parseJSON(response);
|
71 |
-
$.isFunction(args.success) && args.success.call(that, $.extend(response, {id: that.get('id')}))
|
72 |
-
}
|
73 |
-
})
|
74 |
-
}
|
75 |
-
});
|
76 |
-
|
77 |
-
$.LP_Course_Item.View = Backbone.View.extend({
|
78 |
-
el : '#learn-press-course-lesson',
|
79 |
-
events : {
|
80 |
-
'click .complete-lesson-button': '_completeLesson'
|
81 |
-
},
|
82 |
-
initialize : function () {
|
83 |
-
_.bindAll(this, 'updateItem', '_completeLesson');
|
84 |
-
this.model.on('change', this.updateItem, this);
|
85 |
-
|
86 |
-
if (LP.Hook.applyFilters('learn_press_before_load_item', this) !== false) {
|
87 |
-
if (this.model.get('id') /*&& this.$('input[name="learn-press-lesson-viewing"]').val() != this.model.get('id')*/) {
|
88 |
-
if (this.model.get('content') == 'no-cache') {
|
89 |
-
this.updateItem();
|
90 |
-
} else {
|
91 |
-
this.model.load();
|
92 |
-
}
|
93 |
-
} else if (this.model.get('content')) {
|
94 |
-
LP.Hook.doAction('learn_press_item_content_loaded', this.model.get('content'), this);
|
95 |
-
}
|
96 |
-
}
|
97 |
-
},
|
98 |
-
updateItem : function () {
|
99 |
-
var $content = this.model.get('content');
|
100 |
-
this.$el.replaceWith($content);
|
101 |
-
this.setElement($content.show());
|
102 |
-
var url = LP.Hook.applyFilters('learn_press_set_item_url', this.model.get('rootUrl'), this);
|
103 |
-
if (url) {
|
104 |
-
LP.setUrl(url);
|
105 |
-
}
|
106 |
-
$content.closest('#learn-press-content-item').show();
|
107 |
-
LP.Hook.doAction('learn_press_item_content_loaded', $content, this);
|
108 |
-
},
|
109 |
-
_autoNextItem : function (item, delay) {
|
110 |
-
var $link = this.$('.course-item-next a[data-id="' + item + '"]');
|
111 |
-
if (!$link.length) {
|
112 |
-
return;
|
113 |
-
}
|
114 |
-
var duration = 3,
|
115 |
-
$span = $('<span>Auto next in ' + duration + 's</span>').insertAfter(this.$('.complete-lesson-button'));
|
116 |
-
setInterval(function () {
|
117 |
-
duration--;
|
118 |
-
$span.html('Auto next in ' + duration + 's');
|
119 |
-
if (duration == 0) {
|
120 |
-
$link.trigger('click')
|
121 |
-
}
|
122 |
-
}, 1000);
|
123 |
-
},
|
124 |
-
_completeLesson: function (e) {
|
125 |
-
var that = this;
|
126 |
-
this.model.complete({
|
127 |
-
data : $(e.target).data(),
|
128 |
-
success: function (response) {
|
129 |
-
response = LP.Hook.applyFilters('learn_press_user_complete_lesson_response', response);
|
130 |
-
if (response.next_item) {
|
131 |
-
//that._autoNextItem(response.next_item, 3);
|
132 |
-
}
|
133 |
-
LP.Hook.doAction('learn_press_user_completed_lesson', response, that);
|
134 |
-
}
|
135 |
-
});
|
136 |
-
}
|
137 |
-
});
|
138 |
-
$.LP_Course_Item.Collection = Backbone.Collection.extend({
|
139 |
-
model : $.LP_Course_Item.Model,
|
140 |
-
current : 0,
|
141 |
-
lastLoaded: null,
|
142 |
-
|
143 |
-
initialize: function () {
|
144 |
-
var that = this;
|
145 |
-
_.bindAll(this, 'initItems', 'loadItem');
|
146 |
-
this.initItems();
|
147 |
-
},
|
148 |
-
initItems : function () {
|
149 |
-
var that = this;
|
150 |
-
$('.section-content .course-item').each(function () {
|
151 |
-
var $li = $(this),
|
152 |
-
$link = $li.find('a'),
|
153 |
-
id = parseInt($link.attr('data-id')),
|
154 |
-
args = {
|
155 |
-
id : id,
|
156 |
-
nonce : {
|
157 |
-
complete: $link.attr('data-complete-nonce')
|
158 |
-
},
|
159 |
-
rootUrl: $link.attr('href'),
|
160 |
-
type : $li.data('type')
|
161 |
-
};
|
162 |
-
if ($li.hasClass('item-current')) {
|
163 |
-
that.current = id;
|
164 |
-
//args.content = $('#learn-press-course-lesson')
|
165 |
-
}
|
166 |
-
var model = new $.LP_Course_Item.Model(args);
|
167 |
-
that.add(model);
|
168 |
-
});
|
169 |
-
|
170 |
-
},
|
171 |
-
loadItem : function (item, link) {
|
172 |
-
|
173 |
-
if ($.isNumeric(item)) {
|
174 |
-
item = this.findWhere({id: item});
|
175 |
-
} else if ($.type(item) == 'string') {
|
176 |
-
item = this.findWhere({rootUrl: item});
|
177 |
-
} else {
|
178 |
-
|
179 |
-
}
|
180 |
-
if (LP.Hook.applyFilters('learn_press_load_item_content', true, item, link) !== false) {
|
181 |
-
if (item) {
|
182 |
-
if (this.view) {
|
183 |
-
this.view.undelegateEvents();
|
184 |
-
//this.view.model.set('content', this.view.$el);
|
185 |
-
$('.course-item.item-current')
|
186 |
-
.removeClass('item-current');
|
187 |
-
$('.course-item.course-item-' + item.get('id'))
|
188 |
-
.addClass('item-current');
|
189 |
-
}
|
190 |
-
if (link) {
|
191 |
-
item.set('rootUrl', link);
|
192 |
-
item.rootUrl = link;
|
193 |
-
}
|
194 |
-
this.view = new $.LP_Course_Item.View({model: item});
|
195 |
-
}
|
196 |
-
}
|
197 |
-
}
|
198 |
-
});
|
199 |
-
|
200 |
-
$.LP_Course_Item_List_View = Backbone.View.extend({
|
201 |
-
model : $.LP_Course_Item.Collection,
|
202 |
-
el : 'body',
|
203 |
-
events : {
|
204 |
-
'click .section-content .course-item a': '_loadItem',
|
205 |
-
'click .course-item-nav a' : '_loadItem'
|
206 |
-
},
|
207 |
-
initialize: function (args) {
|
208 |
-
_.bindAll(this, '_loadItem');
|
209 |
-
},
|
210 |
-
_loadItem : function (e) {
|
211 |
-
e.preventDefault();
|
212 |
-
var $item = $(e.target).closest('a'),
|
213 |
-
id = parseInt($item.attr('data-id')),
|
214 |
-
link = $item.attr('href');
|
215 |
-
var item = id ? id : link;
|
216 |
-
if (this.lastLoaded == item) {
|
217 |
-
return;
|
218 |
-
}
|
219 |
-
this.model.loadItem(item, link);
|
220 |
-
}
|
221 |
-
});
|
222 |
-
|
223 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/frontend/bak.course-quiz.js
DELETED
@@ -1,45 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Quiz functions
|
3 |
-
*
|
4 |
-
* @author ThimPress
|
5 |
-
* @version 1.1
|
6 |
-
*/
|
7 |
-
if (typeof LP == 'undefined') {
|
8 |
-
window.LP = {};
|
9 |
-
}
|
10 |
-
;(function ($, bb, _) {
|
11 |
-
var Quiz = function (args) {
|
12 |
-
this.model = new Quiz.Model(args);
|
13 |
-
this.view = new Quiz.View({
|
14 |
-
model: this.model
|
15 |
-
});
|
16 |
-
}, Questions = bb.Collection.extend({
|
17 |
-
initialize: function () {
|
18 |
-
console.log(this.length)
|
19 |
-
}
|
20 |
-
});
|
21 |
-
Quiz.View = bb.View.extend({
|
22 |
-
initialize: function () {
|
23 |
-
LP.log('Quiz.View.initialize');
|
24 |
-
}
|
25 |
-
});
|
26 |
-
Quiz.Model = bb.Model.extend({
|
27 |
-
questions : null,
|
28 |
-
initialize: function () {
|
29 |
-
this.questions = new Questions();
|
30 |
-
this.questions.add(_.values(this.get('questions')));
|
31 |
-
}
|
32 |
-
});
|
33 |
-
$.extend(LP, {
|
34 |
-
Quiz : Quiz,
|
35 |
-
$quiz : null,
|
36 |
-
_initQuiz: function (args) {
|
37 |
-
if (!this.$quiz || this.$quiz.model.get('id') != args.id) {
|
38 |
-
delete this.$quiz;
|
39 |
-
this.$quiz = new Quiz(args);
|
40 |
-
}
|
41 |
-
return this.$quiz;
|
42 |
-
}
|
43 |
-
});
|
44 |
-
})(jQuery, Backbone, _);
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/frontend/bak.single-course.v2.js
DELETED
@@ -1,245 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Single course JS
|
3 |
-
*
|
4 |
-
* @requires jQuery, Backbone
|
5 |
-
*/
|
6 |
-
;(function ($) {
|
7 |
-
|
8 |
-
window.LP_V2 = true;
|
9 |
-
if (typeof jQuery == 'undefined' || typeof Backbone == 'undefined') {
|
10 |
-
console.log('Error');
|
11 |
-
return;
|
12 |
-
}
|
13 |
-
|
14 |
-
if (typeof LP == 'undefined') {
|
15 |
-
window.LP = {};
|
16 |
-
}
|
17 |
-
|
18 |
-
$.extend(LP, {
|
19 |
-
Views: {},
|
20 |
-
Model: {}
|
21 |
-
});
|
22 |
-
|
23 |
-
var CourseModel,
|
24 |
-
CourseView,
|
25 |
-
CourseItem,
|
26 |
-
CourseItems;
|
27 |
-
|
28 |
-
CourseItem = LP.CourseItem = Backbone.Model.extend({
|
29 |
-
$doc : false,
|
30 |
-
initialize : function () {
|
31 |
-
this.$doc = $(document);
|
32 |
-
this.on('change', this.onChange);
|
33 |
-
_.bindAll(this, 'itemLoaded');
|
34 |
-
},
|
35 |
-
onChange : function (a, b) {
|
36 |
-
var that = this,
|
37 |
-
data = {
|
38 |
-
item: this
|
39 |
-
};
|
40 |
-
if (a.changed['current'] !== undefined) {
|
41 |
-
$.extend(data, {
|
42 |
-
key : 'current',
|
43 |
-
value: a.changed['current']
|
44 |
-
});
|
45 |
-
this.get('el').find('.lp-label-viewing').toggle(a.changed['current']);
|
46 |
-
if (this.onChangeCurrent(data) !== false && a.changed['current']) {
|
47 |
-
if (that.get('content')) {
|
48 |
-
that.itemLoaded.apply(that, [that.get('content')])
|
49 |
-
} else {
|
50 |
-
if (that.get('type') == 'lp_lesson') {
|
51 |
-
$.ajax({
|
52 |
-
url : that.get('url'),
|
53 |
-
dataType: 'html',
|
54 |
-
success : that.itemLoaded
|
55 |
-
});
|
56 |
-
} else {
|
57 |
-
that.itemLoaded()
|
58 |
-
}
|
59 |
-
}
|
60 |
-
}
|
61 |
-
}
|
62 |
-
},
|
63 |
-
onChangeCurrent: function (data) {
|
64 |
-
return this.$doc.triggerHandler('learn_press_item_current_changed', data)
|
65 |
-
},
|
66 |
-
isCurrent : function () {
|
67 |
-
return this.get('current') == true;
|
68 |
-
},
|
69 |
-
itemLoaded : function (response) {
|
70 |
-
var $html = $(response);
|
71 |
-
this.set('content', response);
|
72 |
-
switch (this.get('type')) {
|
73 |
-
case 'lp_lesson':
|
74 |
-
var $content = $html.find('#learn-press-content-item').html();
|
75 |
-
$('#learn-press-content-item').html($content).show();
|
76 |
-
break;
|
77 |
-
case 'lp_quiz':
|
78 |
-
var data = this.$doc.triggerHandler('learn_press_item_redirect_url', {
|
79 |
-
url : this.get('url'),
|
80 |
-
item: this
|
81 |
-
});
|
82 |
-
if (data !== false) {
|
83 |
-
if (data == undefined || data.redirect == undefined) {
|
84 |
-
data.redirect = this.get('url');
|
85 |
-
}
|
86 |
-
LP.reload(data.redirect);
|
87 |
-
}
|
88 |
-
break;
|
89 |
-
default:
|
90 |
-
this._trigger('learn_press_item_' + this.get('type') + '_loaded', {html: $html, item: this});
|
91 |
-
}
|
92 |
-
try {
|
93 |
-
window.wp.mediaelement.initialize();
|
94 |
-
} catch (e) {
|
95 |
-
}
|
96 |
-
this.$doc.triggerHandler('learn_press_item_loaded', {html: $html, item: this});
|
97 |
-
},
|
98 |
-
_trigger : function () {
|
99 |
-
var args = [];
|
100 |
-
for (var i = 0, n = arguments.length; i < n; i++) {
|
101 |
-
args.push(arguments[i]);
|
102 |
-
}
|
103 |
-
return this.$doc.triggerHandler.apply(this.$doc[0], args);
|
104 |
-
}
|
105 |
-
});
|
106 |
-
|
107 |
-
CourseItems = LP.CourseItems = Backbone.Collection.extend({
|
108 |
-
getCurrent: function () {
|
109 |
-
var item = this.findWhere({current: true});
|
110 |
-
return item;
|
111 |
-
},
|
112 |
-
setCurrent: function (item) {
|
113 |
-
if (!item instanceof CourseItem) {
|
114 |
-
item = this.findWhere({id: item});
|
115 |
-
}
|
116 |
-
this.map(function (item) {
|
117 |
-
if (item.get('current')) {
|
118 |
-
item.set('current', false);
|
119 |
-
}
|
120 |
-
});
|
121 |
-
if (item) {
|
122 |
-
item.set('current', true);
|
123 |
-
var _r = $(document).triggerHandler('learn_press_set_course_url', {url: item.get('url')});
|
124 |
-
if (_r !== false) {
|
125 |
-
if (_r == undefined) {
|
126 |
-
_r = item.get('url')
|
127 |
-
}
|
128 |
-
try {
|
129 |
-
LP.setUrl(_r);
|
130 |
-
} catch (e) {
|
131 |
-
}
|
132 |
-
}
|
133 |
-
}
|
134 |
-
}
|
135 |
-
});
|
136 |
-
|
137 |
-
CourseModel = LP.CourseModel = Backbone.Model.extend({
|
138 |
-
items : new CourseItems(),
|
139 |
-
initialize: function (args) {
|
140 |
-
this.parseItems(args);
|
141 |
-
},
|
142 |
-
parseItems: function (args) {
|
143 |
-
var $items = $('.course-curriculum .course-item');
|
144 |
-
_.forEach(args.items, function (item, i) {
|
145 |
-
item.el = $items.filter('.course-item-' + item.id);
|
146 |
-
this.items.add(new CourseItem(item));
|
147 |
-
}, this);
|
148 |
-
}
|
149 |
-
});
|
150 |
-
|
151 |
-
CourseView = LP.CourseView = Backbone.View.extend({
|
152 |
-
el : 'body',
|
153 |
-
events : {
|
154 |
-
'click .button-load-item' : '_loadItem',
|
155 |
-
'click .course-item-nav a': '_loadItemNav',
|
156 |
-
'click .finish-course' : '_finishCourse'
|
157 |
-
},
|
158 |
-
initialize : function () {
|
159 |
-
_.bindAll(this, '_itemChanged', '_itemLoaded');
|
160 |
-
this.initEvents();
|
161 |
-
this.initCurrent();
|
162 |
-
},
|
163 |
-
initEvents : function () {
|
164 |
-
$(document)
|
165 |
-
.on('learn_press_item_current_changed', this._itemChanged)
|
166 |
-
.on('learn_press_item_loaded', this._itemLoaded)
|
167 |
-
|
168 |
-
},
|
169 |
-
initCurrent : function () {
|
170 |
-
var current = this.model.items.getCurrent();
|
171 |
-
if (!current) {
|
172 |
-
return;
|
173 |
-
}
|
174 |
-
current.itemLoaded($("html").html());
|
175 |
-
},
|
176 |
-
_itemChanged : function (e, data) {
|
177 |
-
var that = this;
|
178 |
-
switch (data.key) {
|
179 |
-
case 'current':
|
180 |
-
if (data.value == true) {
|
181 |
-
if (data.item.get('type') == 'lp_quiz') {
|
182 |
-
data.callback && data.callback();
|
183 |
-
return;
|
184 |
-
}
|
185 |
-
$('#learn-press-content-item').addClass('loading');
|
186 |
-
LP.toElement('#learn-press-content-item', {
|
187 |
-
delay : 0,
|
188 |
-
duration: 0,
|
189 |
-
callback: function () {
|
190 |
-
|
191 |
-
}
|
192 |
-
});
|
193 |
-
}
|
194 |
-
}
|
195 |
-
},
|
196 |
-
_itemLoaded : function (e, data) {
|
197 |
-
$('.course-description-heading, .course-description').hide();
|
198 |
-
$('#learn-press-content-item').removeClass('loading');
|
199 |
-
return data;
|
200 |
-
},
|
201 |
-
_loadItem : function (e) {
|
202 |
-
e.preventDefault();
|
203 |
-
var $tag = $(e.target).closest('.button-load-item');
|
204 |
-
if (!$tag.is('a')) {
|
205 |
-
return false;
|
206 |
-
}
|
207 |
-
var id = parseInt($tag.data('id')),
|
208 |
-
type = $tag.closest('.course-item').data('type'),
|
209 |
-
$item = this.model.items.findWhere({id: id});
|
210 |
-
if (!$item) {
|
211 |
-
return false;
|
212 |
-
}
|
213 |
-
if ($item.isCurrent()) {
|
214 |
-
return false;
|
215 |
-
}
|
216 |
-
this.model.items.setCurrent($item);
|
217 |
-
},
|
218 |
-
_loadItemNav : function (e) {
|
219 |
-
e.preventDefault();
|
220 |
-
|
221 |
-
var id = $(e.target).attr('data-id'),
|
222 |
-
$item = this.$('.section-content a.button-load-item[data-id="' + id + '"]');
|
223 |
-
$item.trigger('click');
|
224 |
-
},
|
225 |
-
_finishCourse: function (e) {
|
226 |
-
|
227 |
-
},
|
228 |
-
loadItem : function (item) {
|
229 |
-
},
|
230 |
-
extend : function (obj) {
|
231 |
-
for (var i in obj) {
|
232 |
-
this[i] = obj[i];
|
233 |
-
}
|
234 |
-
return this;
|
235 |
-
}
|
236 |
-
});
|
237 |
-
|
238 |
-
$(document).ready(function () {
|
239 |
-
if (typeof SingleCourse_Params != 'undefined') {
|
240 |
-
LP.Views.Course = new CourseView({
|
241 |
-
model: new CourseModel(SingleCourse_Params)
|
242 |
-
});
|
243 |
-
}
|
244 |
-
})
|
245 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/frontend/bak.single-quiz.js
DELETED
@@ -1,731 +0,0 @@
|
|
1 |
-
if (typeof LP == 'undefined') var LP = {};
|
2 |
-
(function ($) {
|
3 |
-
"use strict";
|
4 |
-
return;
|
5 |
-
var LP_Model_Quiz = window.LP_Model_Quiz = Backbone.Model.extend({
|
6 |
-
defaults : {
|
7 |
-
//question_id: 0
|
8 |
-
},
|
9 |
-
data : null,
|
10 |
-
view : false,
|
11 |
-
url : function () {
|
12 |
-
},
|
13 |
-
urlRoot : '',
|
14 |
-
questions : null,
|
15 |
-
initialize : function () {
|
16 |
-
|
17 |
-
this.createQuestionsList();
|
18 |
-
|
19 |
-
},
|
20 |
-
createQuestionsList: function () {
|
21 |
-
this.questions = new LP_Collection_Questions();
|
22 |
-
_.each(this.get('questions'), function (args, i) {
|
23 |
-
var $model = new LP_Model_Question($.extend({
|
24 |
-
quiz_id: this.get('id'),
|
25 |
-
user_id: this.get('user_id'),
|
26 |
-
}, args));
|
27 |
-
$model.urlRoot = this.get('ajaxurl');
|
28 |
-
$model.view = this.view;
|
29 |
-
this.questions.add($model);
|
30 |
-
}, this);
|
31 |
-
},
|
32 |
-
next : function (callback) {
|
33 |
-
if (!this.isLast()) {
|
34 |
-
var next_id = this.findNext(),
|
35 |
-
question = this.questions.findWhere({id: next_id}),
|
36 |
-
that = this;
|
37 |
-
question.submit({
|
38 |
-
data : {
|
39 |
-
save_id : that.get('question_id'),
|
40 |
-
question_answer: this.view.$('form').serializeJSON(),
|
41 |
-
time_remaining : that.get('time_remaining')
|
42 |
-
},
|
43 |
-
complete: function () {
|
44 |
-
that.set('question_id', next_id);
|
45 |
-
$.isFunction(callback) && callback.apply(that);
|
46 |
-
LP.Hook.doAction('learn_press_next_question', next_id, that);
|
47 |
-
}
|
48 |
-
});
|
49 |
-
}
|
50 |
-
},
|
51 |
-
prev : function (callback) {
|
52 |
-
if (!this.isFirst()) {
|
53 |
-
var prev_id = this.findPrev(),
|
54 |
-
question = this.questions.findWhere({id: prev_id}),
|
55 |
-
that = this;
|
56 |
-
//if (!question.get('content')) {
|
57 |
-
question.submit({
|
58 |
-
data : {
|
59 |
-
save_id : that.get('question_id'),
|
60 |
-
question_answer: this.view.$('form').serializeJSON(),
|
61 |
-
time_remaining : that.get('time_remaining')
|
62 |
-
},
|
63 |
-
complete: function () {
|
64 |
-
that.set('question_id', prev_id);
|
65 |
-
$.isFunction(callback) && callback.apply(that);
|
66 |
-
LP.Hook.doAction('learn_press_previous_question', prev_id, that);
|
67 |
-
}
|
68 |
-
});
|
69 |
-
|
70 |
-
}
|
71 |
-
},
|
72 |
-
select : function (id, callback) {
|
73 |
-
var question = this.questions.findWhere({id: id}),
|
74 |
-
that = this;
|
75 |
-
question && question.submit({
|
76 |
-
data : {
|
77 |
-
save_id : that.get('question_id'),
|
78 |
-
question_answer: this.view.$('form').serializeJSON(), //$('input, select, textarea', this.view.$('form')).toJSON(),
|
79 |
-
time_remaining : that.get('time_remaining')
|
80 |
-
},
|
81 |
-
complete: function (response) {
|
82 |
-
that.set('question_id', id);
|
83 |
-
$.isFunction(callback) && callback.apply(that, [response])
|
84 |
-
}
|
85 |
-
});
|
86 |
-
},
|
87 |
-
getQuestionPosition: function (question_id) {
|
88 |
-
question_id = question_id || this.get('question_id');
|
89 |
-
return _.indexOf(this.getIds(), question_id);
|
90 |
-
},
|
91 |
-
countQuestions : function () {
|
92 |
-
return this.questions.length;
|
93 |
-
},
|
94 |
-
isLast : function (question_id) {
|
95 |
-
question_id = question_id || this.get('question_id');
|
96 |
-
return this.getQuestionPosition(question_id) == (this.countQuestions() - 1);
|
97 |
-
},
|
98 |
-
isFirst : function (question_id) {
|
99 |
-
question_id = question_id || this.get('question_id');
|
100 |
-
return this.getQuestionPosition(question_id) == 0;
|
101 |
-
},
|
102 |
-
findNext : function (question_id) {
|
103 |
-
question_id = question_id || this.get('question_id');
|
104 |
-
var ids = this.getIds(),
|
105 |
-
pos = this.getQuestionPosition(question_id);
|
106 |
-
pos++;
|
107 |
-
if (typeof ids[pos] == 'undefined') return false;
|
108 |
-
return ids[pos];
|
109 |
-
},
|
110 |
-
findPrev : function (question_id) {
|
111 |
-
question_id = question_id || this.get('question_id');
|
112 |
-
var ids = this.getIds(),
|
113 |
-
pos = this.getQuestionPosition(question_id);
|
114 |
-
pos--;
|
115 |
-
if (typeof ids[pos] == 'undefined') return false;
|
116 |
-
return ids[pos];
|
117 |
-
},
|
118 |
-
current : function () {
|
119 |
-
return this.questions.findWhere({id: parseInt(this.get('question_id'))});
|
120 |
-
},
|
121 |
-
getIds : function () {
|
122 |
-
return $.map(this.get('questions'), function (i, v) {
|
123 |
-
return parseInt(i.id)
|
124 |
-
});
|
125 |
-
}
|
126 |
-
});
|
127 |
-
|
128 |
-
var LP_Model_Question = window.LP_Model_Question = Backbone.Model.extend({
|
129 |
-
defaults : {
|
130 |
-
//question_id: 0
|
131 |
-
},
|
132 |
-
data : null,
|
133 |
-
view : false,
|
134 |
-
url : function () {
|
135 |
-
return this.urlRoot;
|
136 |
-
},
|
137 |
-
urlRoot : '',
|
138 |
-
initialize: function () {
|
139 |
-
},
|
140 |
-
element : function () {
|
141 |
-
return $(this.get('content'));
|
142 |
-
},
|
143 |
-
submit : function (args) {
|
144 |
-
var that = this;
|
145 |
-
args = $.extend({
|
146 |
-
complete: null,
|
147 |
-
data : {}
|
148 |
-
}, args || {});
|
149 |
-
this.fetch({
|
150 |
-
data : $.extend({
|
151 |
-
action : 'learnpress_load_quiz_question',
|
152 |
-
user_id : this.get('user_id'),
|
153 |
-
quiz_id : this.get('quiz_id'),
|
154 |
-
question_id: this.get('id')
|
155 |
-
}, args.data || {}),
|
156 |
-
complete: (function (e) {
|
157 |
-
var response = LP.parseJSON(e.responseText);
|
158 |
-
if (response.result == 'success') {
|
159 |
-
//if (!that.get('content')) {
|
160 |
-
that.set(response.question);
|
161 |
-
if (response.permalink) {
|
162 |
-
LP.setUrl(response.permalink);
|
163 |
-
}
|
164 |
-
//}
|
165 |
-
$.isFunction(args.complete) && args.complete.call(that, response);
|
166 |
-
}
|
167 |
-
})
|
168 |
-
});
|
169 |
-
},
|
170 |
-
check : function (args) {
|
171 |
-
var that = this;
|
172 |
-
if ($.isFunction(args)) {
|
173 |
-
args = {
|
174 |
-
complete: args
|
175 |
-
}
|
176 |
-
} else {
|
177 |
-
args = $.extend({
|
178 |
-
complete: null,
|
179 |
-
data : {}
|
180 |
-
}, args || {});
|
181 |
-
}
|
182 |
-
LP.doAjax({
|
183 |
-
data : $.extend({
|
184 |
-
'lp-ajax' : 'check-question',
|
185 |
-
user_id : this.get('user_id'),
|
186 |
-
quiz_id : this.get('quiz_id'),
|
187 |
-
question_id : this.get('id'),
|
188 |
-
save_id : this.get('id'),
|
189 |
-
question_answer: $('form#learn-press-quiz-question').serializeJSON()
|
190 |
-
}, args.data || {}),
|
191 |
-
success: function (response, raw) {
|
192 |
-
that.set('checked', response.checked);
|
193 |
-
$.isFunction(args.complete) && args.complete.call(that, response)
|
194 |
-
}
|
195 |
-
})
|
196 |
-
}
|
197 |
-
});
|
198 |
-
|
199 |
-
var LP_Collection_Questions = window.LP_Collection_Questions = Backbone.Collection.extend({
|
200 |
-
url : 'admin-ajax.php',
|
201 |
-
model: LP_Model_Question
|
202 |
-
});
|
203 |
-
|
204 |
-
var LP_View_Quiz = window.LP_View_Quiz = Backbone.View.extend({
|
205 |
-
model : {},
|
206 |
-
events : {
|
207 |
-
'click .button-start-quiz' : '_startQuiz',
|
208 |
-
'click .button-finish-quiz' : '_finishQuiz',
|
209 |
-
'click .button-retake-quiz' : '_retakeQuiz',
|
210 |
-
'click .next-question' : '_nextQuestion',
|
211 |
-
'click .prev-question' : '_prevQuestion',
|
212 |
-
'click .check-question' : '_checkQuestion',
|
213 |
-
'click .quiz-questions-list li a': '_selectQuestion',
|
214 |
-
'click .hint-question' : '_hintQuestion',
|
215 |
-
'click .explain-question' : '_explainQuestion'
|
216 |
-
},
|
217 |
-
el : '.single-quiz',
|
218 |
-
isRendered : false,
|
219 |
-
$buttons : {},
|
220 |
-
initialize : function (model) {
|
221 |
-
this.model = model;
|
222 |
-
this.model.view = this;
|
223 |
-
this.listenTo(this.model, 'change:question_id', this.changeQuestion);
|
224 |
-
this.listenTo(this.model, 'change', this.render);
|
225 |
-
this.listenTo(this.model, 'change', this.updateCountdown);
|
226 |
-
|
227 |
-
LP.Hook
|
228 |
-
.addAction('learn_press_check_question', function (response, that) {
|
229 |
-
that.updateAnswer.apply(that, [response]);
|
230 |
-
})
|
231 |
-
.addAction('learn_press_update_question_content', function ($newQuestion, $oldQuestion, that) {
|
232 |
-
var $current = that.model.current();
|
233 |
-
setTimeout(function () {
|
234 |
-
if ($current.get('checked')) {
|
235 |
-
that.updateAnswer.apply(that, [{checked: $current.get('checked'), result: 'success'}]);
|
236 |
-
}
|
237 |
-
}, 100)
|
238 |
-
|
239 |
-
});
|
240 |
-
_.bindAll(this, 'render', '_timeOver', '_checkQuestion', '_hintQuestion', 'updateAnswer', 'updateCountdown');
|
241 |
-
|
242 |
-
this._create();
|
243 |
-
this.render();
|
244 |
-
this.updateCountdown(true);
|
245 |
-
},
|
246 |
-
_create : function () {
|
247 |
-
this.$buttons = {
|
248 |
-
start : this.$('.button-start-quiz'),
|
249 |
-
finish : this.$('.button-finish-quiz'),
|
250 |
-
retake : this.$('.button-retake-quiz'),
|
251 |
-
next : this.$('.next-question'),
|
252 |
-
prev : this.$('.prev-question'),
|
253 |
-
check : this.$('.check-question'),
|
254 |
-
hint : this.$('.hint-question'),
|
255 |
-
explain: this.$('.explain-question'),
|
256 |
-
};
|
257 |
-
if (this.model.get('status') == 'started') {
|
258 |
-
this.initCountdown();
|
259 |
-
|
260 |
-
var $current = this.model.current();
|
261 |
-
if ($current) {
|
262 |
-
$current.set({
|
263 |
-
content: $('#learn-press-quiz-question .question-' + $current.get('id'))
|
264 |
-
});
|
265 |
-
this._updateQuestion($current.element());
|
266 |
-
}
|
267 |
-
}
|
268 |
-
var that = this;
|
269 |
-
this.setButtonsState();
|
270 |
-
},
|
271 |
-
changeQuestion : function () {
|
272 |
-
var $current = this.model.current();
|
273 |
-
if ($current) {
|
274 |
-
this._updateQuestion($current.element());
|
275 |
-
}
|
276 |
-
},
|
277 |
-
updateCountdown : function (force) {
|
278 |
-
if (!this.model.hasChanged('status') && !force) {
|
279 |
-
return;
|
280 |
-
}
|
281 |
-
if (this.model.get('status') == 'started') {
|
282 |
-
if (!this.$countdown) {
|
283 |
-
this.initCountdown();
|
284 |
-
}
|
285 |
-
this.$countdown.backward_timer('start');
|
286 |
-
}
|
287 |
-
},
|
288 |
-
render : function () {
|
289 |
-
if (!this.model.hasChanged('question_id') && !this.model.hasChanged('status')) {
|
290 |
-
//return;
|
291 |
-
}
|
292 |
-
var $question = this.model.current();
|
293 |
-
|
294 |
-
this.setButtonsState();
|
295 |
-
switch (this.model.get('status')) {
|
296 |
-
case 'started':
|
297 |
-
this.$('.quiz-intro').remove();
|
298 |
-
this.$('.quiz-countdown').removeClass('hide-if-js');
|
299 |
-
}
|
300 |
-
if ($question && this.model.get('status') == 'started') {
|
301 |
-
this.$('form[name="learn-press-quiz-question"]').html($question.get('content'));
|
302 |
-
this.$('#learn-press-quiz-questions li[data-id="' + $question.get('id') + '"]')
|
303 |
-
.addClass('current')
|
304 |
-
.siblings('.current').removeClass('current');
|
305 |
-
}
|
306 |
-
|
307 |
-
this.isRendered = true;
|
308 |
-
this.$el.css('visibility', 'visible');
|
309 |
-
},
|
310 |
-
setButtonsState : function () {
|
311 |
-
var hidden = 'hide-if-js',
|
312 |
-
current = this.model.current();
|
313 |
-
switch (this.model.get('status').toLowerCase()) {
|
314 |
-
case 'completed':
|
315 |
-
this.$buttons.start.addClass(hidden);
|
316 |
-
this.$buttons.finish.addClass(hidden);
|
317 |
-
this.$buttons.check.addClass(hidden);
|
318 |
-
this.$buttons.retake.removeClass(hidden);
|
319 |
-
break;
|
320 |
-
case 'started':
|
321 |
-
this.$buttons.start.addClass(hidden);
|
322 |
-
this.$buttons.finish.removeClass(hidden);
|
323 |
-
this.$buttons.retake.addClass(hidden);
|
324 |
-
|
325 |
-
if (this.model.countQuestions() <= 1) {
|
326 |
-
this.$buttons.next.addClass(hidden);
|
327 |
-
this.$buttons.prev.addClass(hidden);
|
328 |
-
} else {
|
329 |
-
this.$buttons.next.removeClass(hidden);
|
330 |
-
this.$buttons.prev.removeClass(hidden);
|
331 |
-
if (this.model.isLast()) {
|
332 |
-
this.$buttons.next.addClass(hidden);
|
333 |
-
this.$buttons.finish.filter('[data-area="nav"]').removeClass(hidden);
|
334 |
-
} else {
|
335 |
-
this.$buttons.finish.filter('[data-area="nav"]').addClass(hidden);
|
336 |
-
}
|
337 |
-
if (this.model.isFirst()) {
|
338 |
-
this.$buttons.prev.addClass(hidden);
|
339 |
-
}
|
340 |
-
}
|
341 |
-
if (current && current.get('check_answer')) {
|
342 |
-
this.$buttons.check.removeClass(hidden);
|
343 |
-
} else {
|
344 |
-
this.$buttons.check.addClass(hidden);
|
345 |
-
}
|
346 |
-
if (current && current.get('hint')) {
|
347 |
-
this.$buttons.hint.removeClass(hidden);
|
348 |
-
} else {
|
349 |
-
this.$buttons.hint.addClass(hidden);
|
350 |
-
}
|
351 |
-
if (current && current.get('explanation')) {
|
352 |
-
this.$buttons.explain.removeClass(hidden);
|
353 |
-
} else {
|
354 |
-
this.$buttons.explain.addClass(hidden);
|
355 |
-
}
|
356 |
-
break;
|
357 |
-
default:
|
358 |
-
this.$buttons.next.addClass(hidden);
|
359 |
-
this.$buttons.prev.addClass(hidden);
|
360 |
-
this.$buttons.start.removeClass(hidden);
|
361 |
-
this.$buttons.finish.addClass(hidden);
|
362 |
-
this.$buttons.retake.addClass(hidden);
|
363 |
-
this.$('.quiz-questions .qq.current').removeClass('current');
|
364 |
-
}
|
365 |
-
|
366 |
-
},
|
367 |
-
startQuiz : function (args) {
|
368 |
-
this.block_page();
|
369 |
-
args = $.extend({
|
370 |
-
complete: false
|
371 |
-
}, args || {});
|
372 |
-
|
373 |
-
var that = this,
|
374 |
-
data = $.extend({
|
375 |
-
'lp-ajax': 'start-quiz',
|
376 |
-
quiz_id : this.model.get('id'),
|
377 |
-
nonce : this.model.get('nonce')
|
378 |
-
}, args.data || {});
|
379 |
-
LP.doAjax({
|
380 |
-
url : window.location.href,
|
381 |
-
data : data,
|
382 |
-
success: function (response, raw) {
|
383 |
-
LP.MessageBox.hide();
|
384 |
-
var response = LP.Hook.applyFilters('learn_press_start_quiz_results', response, that);
|
385 |
-
if (response.result == 'success') {
|
386 |
-
that.model.current().set(response.question);
|
387 |
-
that.model.set({status: response.data.status, question_id: response.question.id});
|
388 |
-
LP.setUrl(response.question.permalink);
|
389 |
-
}
|
390 |
-
$.isFunction(args.complete) && args.complete.call(that, response)
|
391 |
-
}
|
392 |
-
});
|
393 |
-
},
|
394 |
-
finishQuiz : function (args) {
|
395 |
-
this.pause();
|
396 |
-
this.block_page();
|
397 |
-
args = $.extend({
|
398 |
-
complete: false
|
399 |
-
}, args || {});
|
400 |
-
|
401 |
-
var that = this,
|
402 |
-
data = $.extend({
|
403 |
-
'lp-ajax': 'finish-quiz',
|
404 |
-
quiz_id : this.model.get('id'),
|
405 |
-
nonce : this.model.get('nonce')
|
406 |
-
}, args.data || {});
|
407 |
-
LP.doAjax({
|
408 |
-
data : data,
|
409 |
-
success: function (response) {
|
410 |
-
var callbackReturn = undefined;
|
411 |
-
$.isFunction(args.complete) && ( callbackReturn = args.complete.call(LP.Quiz, response) );
|
412 |
-
LP.Hook.doAction('learn_press_finish_quiz', that.model.get('id'), that);
|
413 |
-
LP.MessageBox.show(single_quiz_localize.finished_quiz, {
|
414 |
-
autohide: 2000,
|
415 |
-
onHide : function () {
|
416 |
-
if (callbackReturn && callbackReturn.redirect) {
|
417 |
-
LP.reload(callbackReturn.redirect);
|
418 |
-
} else if (callbackReturn == undefined && response.redirect) {
|
419 |
-
LP.reload(response.redirect);
|
420 |
-
}
|
421 |
-
}
|
422 |
-
});
|
423 |
-
}
|
424 |
-
});
|
425 |
-
},
|
426 |
-
retakeQuiz : function (args) {
|
427 |
-
this.block_page();
|
428 |
-
args = $.extend({
|
429 |
-
complete: false
|
430 |
-
}, args || {});
|
431 |
-
|
432 |
-
var that = this,
|
433 |
-
data = $.extend({
|
434 |
-
'lp-ajax': 'retake-quiz',
|
435 |
-
quiz_id : this.model.get('id'),
|
436 |
-
nonce : this.model.get('nonce')
|
437 |
-
}, args.data || {});
|
438 |
-
LP.doAjax({
|
439 |
-
data : data,
|
440 |
-
success: function (response, raw) {
|
441 |
-
LP.MessageBox.hide();
|
442 |
-
if (response.result == 'success') {
|
443 |
-
$.isFunction(args.complete) && args.complete.call(LP.Quiz, response);
|
444 |
-
LP.MessageBox.show(single_quiz_localize.retaken_quiz, {
|
445 |
-
autohide: 2000,
|
446 |
-
onHide : function () {
|
447 |
-
LP.reload(response.redirect);
|
448 |
-
}
|
449 |
-
});
|
450 |
-
} else {
|
451 |
-
LP.alert(response.message);
|
452 |
-
}
|
453 |
-
}
|
454 |
-
});
|
455 |
-
},
|
456 |
-
updateAnswer : function (response) {
|
457 |
-
if (!response || response.result != 'success') {
|
458 |
-
return;
|
459 |
-
}
|
460 |
-
var $current = this.model.current(),
|
461 |
-
$content = $($current.get('content'));
|
462 |
-
switch ($current.get('type')) {
|
463 |
-
case 'true_or_false':
|
464 |
-
case 'single_choice':
|
465 |
-
case 'multi_choice':
|
466 |
-
$.each(response.checked, function (k, v) {
|
467 |
-
var $input = $content.find('input[value="' + v.value + '"]'),
|
468 |
-
$li = $input.closest('li').removeClass('answer-true user-answer-false');
|
469 |
-
if (v.is_true == 'yes') {
|
470 |
-
$li.addClass('answer-true')
|
471 |
-
}
|
472 |
-
if (response.answered) {
|
473 |
-
if (typeof response.answered == 'string') {
|
474 |
-
if (response.answered == v.value) {
|
475 |
-
$input.prop('checked', true);
|
476 |
-
}
|
477 |
-
} else if ($.inArray(v.value, response.answered) != -1) {
|
478 |
-
$input.prop('checked', true);
|
479 |
-
}
|
480 |
-
}
|
481 |
-
if ($input.is(':checked') && v.is_true == 'yes') {
|
482 |
-
} else {
|
483 |
-
$li.addClass('user-answer-false');
|
484 |
-
}
|
485 |
-
|
486 |
-
});
|
487 |
-
$content.addClass('checked').find('input, select, textarea').prop('disabled', true);
|
488 |
-
$current.set({
|
489 |
-
content: $content
|
490 |
-
});
|
491 |
-
}
|
492 |
-
//LP.Hook.doAction('learn_press_check_question', response, $current);
|
493 |
-
this.render();
|
494 |
-
},
|
495 |
-
_checkQuestion : function () {
|
496 |
-
if (LP.Hook.applyFilters('learn_press_before_check_question', true, this) !== false) {
|
497 |
-
var that = this;
|
498 |
-
this.$buttons.next.prop('disabled', true);
|
499 |
-
this.$buttons.prev.prop('disabled', true);
|
500 |
-
this.$buttons.finish.prop('disabled', true);
|
501 |
-
this.$buttons.check.prop('disabled', true);
|
502 |
-
this.pause();
|
503 |
-
this.block_page();
|
504 |
-
this.model.current().check({
|
505 |
-
complete: function (response) {
|
506 |
-
that.$buttons.next.prop('disabled', false);
|
507 |
-
that.$buttons.prev.prop('disabled', false);
|
508 |
-
that.$buttons.finish.prop('disabled', false);
|
509 |
-
that.$buttons.check.prop('disabled', false);
|
510 |
-
LP.Hook.doAction('learn_press_check_question', response, that);
|
511 |
-
that.resume();
|
512 |
-
},
|
513 |
-
data : {nonce: this.model.get('nonce')}
|
514 |
-
});
|
515 |
-
}
|
516 |
-
},
|
517 |
-
_hintQuestion : function (e) {
|
518 |
-
e.preventDefault();
|
519 |
-
var current = this.model.current();
|
520 |
-
if (current && current.get('hint')) {
|
521 |
-
$('#learn-press-question-hint-' + current.get('id')).toggleClass('hide-if-js')
|
522 |
-
}
|
523 |
-
|
524 |
-
},
|
525 |
-
_explainQuestion: function (e) {
|
526 |
-
e.preventDefault();
|
527 |
-
var current = this.model.current();
|
528 |
-
if (current && current.get('explanation')) {
|
529 |
-
$('#learn-press-question-explanation-' + current.get('id')).toggleClass('hide-if-js')
|
530 |
-
}
|
531 |
-
|
532 |
-
},
|
533 |
-
_nextQuestion : function () {
|
534 |
-
if (LP.Hook.applyFilters('learn_press_before_next_question', true, this) !== false) {
|
535 |
-
var that = this;
|
536 |
-
this.$buttons.next.prop('disabled', true);
|
537 |
-
this.$buttons.prev.prop('disabled', true);
|
538 |
-
this.$buttons.finish.prop('disabled', true);
|
539 |
-
this.pause();
|
540 |
-
this.block_page();
|
541 |
-
this.model.next(function () {
|
542 |
-
that.$buttons.next.prop('disabled', false);
|
543 |
-
that.$buttons.prev.prop('disabled', false);
|
544 |
-
that.$buttons.finish.prop('disabled', false);
|
545 |
-
});
|
546 |
-
}
|
547 |
-
},
|
548 |
-
_prevQuestion : function () {
|
549 |
-
if (LP.Hook.applyFilters('learn_press_before_prev_question', true, this) !== false) {
|
550 |
-
var that = this;
|
551 |
-
this.$buttons.next.prop('disabled', true);
|
552 |
-
this.$buttons.prev.prop('disabled', true);
|
553 |
-
this.$buttons.finish.prop('disabled', true);
|
554 |
-
this.pause();
|
555 |
-
this.block_page();
|
556 |
-
this.model.prev(function () {
|
557 |
-
that.$buttons.next.prop('disabled', false);
|
558 |
-
that.$buttons.prev.prop('disabled', false);
|
559 |
-
that.$buttons.finish.prop('disabled', false);
|
560 |
-
});
|
561 |
-
}
|
562 |
-
},
|
563 |
-
_selectQuestion : function (e) {
|
564 |
-
e.preventDefault();
|
565 |
-
var that = this,
|
566 |
-
id = $(e.target).closest('.learn-press-question-wrap').data('id');
|
567 |
-
if (this.model.get('status') != 'started') {
|
568 |
-
return false;
|
569 |
-
}
|
570 |
-
if (LP.Hook.applyFilters('learn_press_before_select_question', true, that) !== false) {
|
571 |
-
this.pause();
|
572 |
-
this.$buttons.next.prop('disabled', true);
|
573 |
-
this.$buttons.prev.prop('disabled', true);
|
574 |
-
this.$buttons.finish.prop('disabled', true);
|
575 |
-
this.pause();
|
576 |
-
this.model.select(id, function (response) {
|
577 |
-
LP.Hook.doAction('learn_press_selected_question', id, that);
|
578 |
-
that.$buttons.next.prop('disabled', false);
|
579 |
-
that.$buttons.prev.prop('disabled', false);
|
580 |
-
that.$buttons.finish.prop('disabled', false);
|
581 |
-
});
|
582 |
-
}
|
583 |
-
},
|
584 |
-
_getNonce : function (field) {
|
585 |
-
return this.$('input#' + field + '-nonce').val();
|
586 |
-
},
|
587 |
-
_startQuiz : function () {
|
588 |
-
var that = this;
|
589 |
-
if (LP.Hook.applyFilters('learn_press_before_start_quiz', true, that) !== false) {
|
590 |
-
that.$buttons.next.prop('disabled', true);
|
591 |
-
that.$buttons.prev.prop('disabled', true);
|
592 |
-
that.$buttons.finish.prop('disabled', true);
|
593 |
-
LP.MessageBox.blockUI();
|
594 |
-
that.startQuiz({
|
595 |
-
complete: function (response) {
|
596 |
-
LP.MessageBox.hide();
|
597 |
-
if (response.message) {
|
598 |
-
LP.alert(response.message, function () {
|
599 |
-
if (response.redirect) {
|
600 |
-
LP.reload(response.redirect)
|
601 |
-
}
|
602 |
-
});
|
603 |
-
} else {
|
604 |
-
if (response.redirect) {
|
605 |
-
LP.reload(response.redirect)
|
606 |
-
}
|
607 |
-
}
|
608 |
-
that.$buttons.next.prop('disabled', false);
|
609 |
-
that.$buttons.prev.prop('disabled', false);
|
610 |
-
that.$buttons.finish.prop('disabled', false);
|
611 |
-
LP.Hook.doAction('learn_press_start_quiz', response, that);
|
612 |
-
}
|
613 |
-
});
|
614 |
-
}
|
615 |
-
},
|
616 |
-
_retakeQuiz : function () {
|
617 |
-
var that = this;
|
618 |
-
if (LP.Hook.applyFilters('learn_press_before_retake_quiz', true, that) !== false) {
|
619 |
-
LP.confirm(single_quiz_localize.confirm_retake_quiz, function (confirm) {
|
620 |
-
if (!confirm) {
|
621 |
-
return;
|
622 |
-
}
|
623 |
-
that.$buttons.retake.prop('disabled', true);
|
624 |
-
LP.MessageBox.blockUI();
|
625 |
-
that.retakeQuiz({
|
626 |
-
complete: function (response) {
|
627 |
-
LP.MessageBox.hide();
|
628 |
-
LP.Hook.doAction('learn_press_user_retaken_quiz', response, that);
|
629 |
-
}
|
630 |
-
});
|
631 |
-
})
|
632 |
-
}
|
633 |
-
},
|
634 |
-
_finishQuiz : function () {
|
635 |
-
var that = this;
|
636 |
-
if (LP.Hook.applyFilters('learn_press_before_finish_quiz', true, that) !== false) {
|
637 |
-
LP.confirm(single_quiz_localize.confirm_finish_quiz, function (confirm) {
|
638 |
-
if (!confirm) {
|
639 |
-
return;
|
640 |
-
}
|
641 |
-
that.$buttons.next.prop('disabled', true);
|
642 |
-
that.$buttons.prev.prop('disabled', true);
|
643 |
-
that.$buttons.finish.prop('disabled', true);
|
644 |
-
LP.MessageBox.blockUI();
|
645 |
-
that.finishQuiz({
|
646 |
-
data : {
|
647 |
-
save_id : that.model.get('question_id'),
|
648 |
-
question_answer: that.$('form').serializeJSON(),
|
649 |
-
time_remaining : that.model.get('time_remaining')
|
650 |
-
},
|
651 |
-
complete: function (response) {
|
652 |
-
LP.MessageBox.hide();
|
653 |
-
LP.Hook.doAction('learn_press_user_finished_quiz', response, that);
|
654 |
-
}
|
655 |
-
});
|
656 |
-
});
|
657 |
-
}
|
658 |
-
},
|
659 |
-
_updateQuestion : function ($newQuestion) {
|
660 |
-
var $container = this.$('.quiz-question-content form'),
|
661 |
-
$oldQuestion = $container.find('.learn-press-question-wrap');
|
662 |
-
if ($oldQuestion.length) {
|
663 |
-
$oldQuestion.replaceWith($newQuestion);
|
664 |
-
} else {
|
665 |
-
$container.append($newQuestion);
|
666 |
-
}
|
667 |
-
LP.Hook.doAction('learn_press_update_question_content', $newQuestion, $oldQuestion, this);
|
668 |
-
LP.setUrl($newQuestion.find('input[name="learn-press-question-permalink"]').val());
|
669 |
-
|
670 |
-
},
|
671 |
-
initCountdown : function () {
|
672 |
-
var that = this,
|
673 |
-
$countdown = this.$countdown;
|
674 |
-
if (!$countdown) {
|
675 |
-
this.$countdown = $("#quiz-countdown-value");
|
676 |
-
this.$countdown.backward_timer({
|
677 |
-
seconds : parseInt(this.model.get('time_remaining')),
|
678 |
-
format : that.model.get('time_format'),
|
679 |
-
on_exhausted: function (timer) {
|
680 |
-
that._timeOver(timer)
|
681 |
-
},
|
682 |
-
on_tick : function (timer) {
|
683 |
-
var color = (timer.seconds_left <= 5) ? "#F00" : "";
|
684 |
-
if (color) timer.target.css('color', color);
|
685 |
-
//that.model.set('time_remaining', timer.seconds_left);
|
686 |
-
}
|
687 |
-
});
|
688 |
-
}
|
689 |
-
},
|
690 |
-
pause : function () {
|
691 |
-
this.$countdown.backward_timer('cancel');
|
692 |
-
},
|
693 |
-
resume : function () {
|
694 |
-
this.$countdown.backward_timer('start');
|
695 |
-
},
|
696 |
-
loadPage : function (url) {
|
697 |
-
url = url || window.location.href;
|
698 |
-
window.location.href = url;
|
699 |
-
},
|
700 |
-
_timeOver : function (timer) {
|
701 |
-
timer.target.css('color', '#F00');
|
702 |
-
LP.MessageBox.blockUI(single_quiz_localize.quiz_time_is_over_message);
|
703 |
-
this.finishQuiz({
|
704 |
-
complete: function (response) {
|
705 |
-
LP.MessageBox.hide();
|
706 |
-
if (response.redirect) {
|
707 |
-
LP.reload(response.redirect);
|
708 |
-
}
|
709 |
-
}
|
710 |
-
});
|
711 |
-
},
|
712 |
-
block_page : function () {
|
713 |
-
//this.$el.block_ui();
|
714 |
-
},
|
715 |
-
unblock_page : function () {
|
716 |
-
//this.$el.unblock_ui();
|
717 |
-
}
|
718 |
-
});
|
719 |
-
LP.Quiz = {
|
720 |
-
init: function (data) {
|
721 |
-
var model = new LP_Model_Quiz(data);
|
722 |
-
new LP_View_Quiz(model);
|
723 |
-
}
|
724 |
-
}
|
725 |
-
|
726 |
-
|
727 |
-
$(document).ready(function () {
|
728 |
-
var json = JSON.stringify(single_quiz_params);
|
729 |
-
LP.Quiz.init(single_quiz_params);
|
730 |
-
})
|
731 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/frontend/checkout.js
CHANGED
@@ -76,7 +76,7 @@ if (typeof window.LP === 'undefined') {
|
|
76 |
},
|
77 |
doCheckout : function () {
|
78 |
var $form = $(this),
|
79 |
-
$place_order = $form.find('#learn-press-checkout'),
|
80 |
processing_text = $place_order.attr('data-processing-text'),
|
81 |
text = $place_order.attr('value');
|
82 |
if ($form.triggerHandler('learn_press_checkout_place_order') !== false && $form.triggerHandler('learn_press_checkout_place_order_' + $('#order_review').find('input[name=payment_method]:checked').val()) !== false) {
|
@@ -84,6 +84,7 @@ if (typeof window.LP === 'undefined') {
|
|
84 |
$place_order.val(processing_text);
|
85 |
}
|
86 |
$place_order.prop('disabled', true);
|
|
|
87 |
$.ajax({
|
88 |
url : LP_Settings.siteurl + '/?lp-ajax=checkout',
|
89 |
dataType: 'html',
|
@@ -112,12 +113,13 @@ if (typeof window.LP === 'undefined') {
|
|
112 |
}
|
113 |
$place_order.val(text);
|
114 |
$place_order.prop('disabled', false);
|
|
|
115 |
},
|
116 |
error : function (jqXHR, textStatus, errorThrown) {
|
117 |
LP.Checkout.showErrors('<div class="learn-press-error">' + errorThrown + '</div>');
|
118 |
$place_order.val(text);
|
119 |
$place_order.prop('disabled', false);
|
120 |
-
|
121 |
}
|
122 |
});
|
123 |
}
|
76 |
},
|
77 |
doCheckout : function () {
|
78 |
var $form = $(this),
|
79 |
+
$place_order = $form.find('#learn-press-checkout-place-order'),
|
80 |
processing_text = $place_order.attr('data-processing-text'),
|
81 |
text = $place_order.attr('value');
|
82 |
if ($form.triggerHandler('learn_press_checkout_place_order') !== false && $form.triggerHandler('learn_press_checkout_place_order_' + $('#order_review').find('input[name=payment_method]:checked').val()) !== false) {
|
84 |
$place_order.val(processing_text);
|
85 |
}
|
86 |
$place_order.prop('disabled', true);
|
87 |
+
LP.blockContent();
|
88 |
$.ajax({
|
89 |
url : LP_Settings.siteurl + '/?lp-ajax=checkout',
|
90 |
dataType: 'html',
|
113 |
}
|
114 |
$place_order.val(text);
|
115 |
$place_order.prop('disabled', false);
|
116 |
+
LP.unblockContent();
|
117 |
},
|
118 |
error : function (jqXHR, textStatus, errorThrown) {
|
119 |
LP.Checkout.showErrors('<div class="learn-press-error">' + errorThrown + '</div>');
|
120 |
$place_order.val(text);
|
121 |
$place_order.prop('disabled', false);
|
122 |
+
LP.unblockContent();
|
123 |
}
|
124 |
});
|
125 |
}
|
assets/js/frontend/course-filters.js
ADDED
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
;(function ($) {
|
2 |
+
"use strict";
|
3 |
+
$.fn.courseFilters = function (options) {
|
4 |
+
return $.each(this, function () {
|
5 |
+
var defaults = {
|
6 |
+
attribute_operator: 'and',
|
7 |
+
value_operator : 'and',
|
8 |
+
ajax_filter : 1,
|
9 |
+
button_filter : 1
|
10 |
+
},
|
11 |
+
$widget = $(this),
|
12 |
+
widgetID = $widget.attr('id'),
|
13 |
+
filterUrl = window.location.href.addQueryVar('course-filter', 'yes'),
|
14 |
+
oldFilterUrl = filterUrl,
|
15 |
+
$buttonFilter = $widget.find('.lp-button-filter'),
|
16 |
+
$buttonReset = $widget.find('.lp-button-reset-filter');
|
17 |
+
options = $.extend({}, defaults, options || {});
|
18 |
+
|
19 |
+
filterUrl = filterUrl
|
20 |
+
.addQueryVar('attribute_operator', options.attribute_operator)
|
21 |
+
.addQueryVar('value_operator', options.value_operator);
|
22 |
+
function addAttribute(attribute, value) {
|
23 |
+
var attributes = filterUrl.getQueryVar(attribute);
|
24 |
+
if (!attributes) {
|
25 |
+
attributes = value;
|
26 |
+
} else {
|
27 |
+
if (attributes.indexOf(value) == -1) {
|
28 |
+
attributes += ',' + value;
|
29 |
+
}
|
30 |
+
}
|
31 |
+
filterUrl = filterUrl.addQueryVar(attribute, attributes);
|
32 |
+
return filterUrl;
|
33 |
+
}
|
34 |
+
|
35 |
+
function removeAttribute(attribute, value) {
|
36 |
+
var attributes = filterUrl.getQueryVar(attribute);
|
37 |
+
if (attributes) {
|
38 |
+
attributes = attributes.replace(value, '').split(',').filter(function (a, b) {
|
39 |
+
return a + '' !== '';
|
40 |
+
}).join(',');
|
41 |
+
if (attributes) {
|
42 |
+
filterUrl = filterUrl.addQueryVar(attribute, attributes);
|
43 |
+
} else {
|
44 |
+
filterUrl = filterUrl.removeQueryVar(attribute);
|
45 |
+
}
|
46 |
+
}
|
47 |
+
return filterUrl;
|
48 |
+
}
|
49 |
+
|
50 |
+
function hasFiltered() {
|
51 |
+
return $('#' + widgetID + ' .lp-course-attribute-values li.active').length;
|
52 |
+
}
|
53 |
+
|
54 |
+
function validateUrl(url) {
|
55 |
+
// remove paged in query
|
56 |
+
url = url.replace(/\/page\/[0-9]+/, '').removeQueryVar('paged');
|
57 |
+
return url;
|
58 |
+
}
|
59 |
+
|
60 |
+
function doFilter() {
|
61 |
+
filterUrl = validateUrl(filterUrl);
|
62 |
+
if (oldFilterUrl == filterUrl) {
|
63 |
+
return;
|
64 |
+
}
|
65 |
+
var useAjax = $widget.find('.lp-course-attributes.course-filters').data('ajax') == 'yes';
|
66 |
+
if (useAjax) {
|
67 |
+
LP.setUrl(filterUrl);
|
68 |
+
LP.blockContent();
|
69 |
+
$.ajax({
|
70 |
+
url : filterUrl,
|
71 |
+
success: function (res) {
|
72 |
+
var $html = $(res).contents(),
|
73 |
+
$newContent = $html.find('.entry-content'),
|
74 |
+
$newWidget = $html.find('#' + widgetID);
|
75 |
+
$('.entry-content').replaceWith($newContent);
|
76 |
+
$('#' + widgetID).replaceWith($newWidget);
|
77 |
+
LP.unblockContent();
|
78 |
+
}
|
79 |
+
});
|
80 |
+
} else {
|
81 |
+
LP.reload(filterUrl);
|
82 |
+
}
|
83 |
+
oldFilterUrl = filterUrl;
|
84 |
+
$buttonFilter.prop('disabled', true);
|
85 |
+
}
|
86 |
+
|
87 |
+
function toggleControls() {
|
88 |
+
filterUrl = validateUrl(filterUrl);
|
89 |
+
var url = filterUrl;
|
90 |
+
if (!hasFiltered()) {
|
91 |
+
url = url
|
92 |
+
.removeQueryVar('attribute_operator')
|
93 |
+
.removeQueryVar('value_operator')
|
94 |
+
.removeQueryVar('course-filter');
|
95 |
+
}
|
96 |
+
if ($buttonFilter.length == 0) {
|
97 |
+
doFilter();
|
98 |
+
} else {
|
99 |
+
if (filterUrl == oldFilterUrl) {
|
100 |
+
$buttonFilter.prop('disabled', true);
|
101 |
+
} else {
|
102 |
+
$buttonFilter.prop('disabled', false);
|
103 |
+
}
|
104 |
+
$buttonReset.prop('disabled', !hasFiltered());
|
105 |
+
}
|
106 |
+
LP.setUrl(url);
|
107 |
+
}
|
108 |
+
|
109 |
+
if ($buttonFilter.length) {
|
110 |
+
$buttonFilter.off('click').on('click', function () {
|
111 |
+
doFilter()
|
112 |
+
})
|
113 |
+
}
|
114 |
+
$buttonReset.off('click').on('click', function () {
|
115 |
+
$('#' + widgetID + ' .lp-course-attribute-values li.active a').each(function () {
|
116 |
+
var $this = $(this),
|
117 |
+
$li = $this.parent(),
|
118 |
+
$attribute = $li.closest('.lp-course-attribute-values').parent(),
|
119 |
+
attribute = $attribute.data('attribute'),
|
120 |
+
value = $li.data('value');
|
121 |
+
$li.removeClass('active');
|
122 |
+
filterUrl = filterUrl.removeQueryVar(attribute);
|
123 |
+
});
|
124 |
+
$(this).prop('disabled', true);
|
125 |
+
toggleControls();
|
126 |
+
})
|
127 |
+
$(document)
|
128 |
+
.off('click', '#' + widgetID + ' .lp-course-attribute-values a')
|
129 |
+
.on('click', '#' + widgetID + ' .lp-course-attribute-values a', function (e) {
|
130 |
+
e.preventDefault();
|
131 |
+
var $this = $(this),
|
132 |
+
$li = $this.parent(),
|
133 |
+
$attribute = $li.closest('.lp-course-attribute-values').parent(),
|
134 |
+
attribute = $attribute.data('attribute'),
|
135 |
+
value = $li.data('value');
|
136 |
+
$li.toggleClass('active');
|
137 |
+
if ($li.hasClass('active')) {
|
138 |
+
filterUrl = addAttribute(attribute, value);
|
139 |
+
} else {
|
140 |
+
filterUrl = removeAttribute(attribute, value);
|
141 |
+
}
|
142 |
+
toggleControls();
|
143 |
+
});
|
144 |
+
});
|
145 |
+
}
|
146 |
+
})(jQuery);
|
assets/js/frontend/course_coming_soon.js
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
( function ( $ ) {
|
2 |
-
$.fn.lp_course_countdown = function () {
|
3 |
-
var countdowns = this;
|
4 |
-
|
5 |
-
for ( var i = 0; i < countdowns.length; i++ ) {
|
6 |
-
var _countdown = $( countdowns[i] ),
|
7 |
-
speed = _countdown.attr( 'data-speed' ),
|
8 |
-
// gmt = _countdown.attr( 'data-gmt' ),
|
9 |
-
time = _countdown.attr( 'data-time' ),
|
10 |
-
showtext = _countdown.attr( 'data-showtext' )
|
11 |
-
expiryDate = new Date( time ),
|
12 |
-
gmt = -expiryDate.getTimezoneOffset() / 60;
|
13 |
-
|
14 |
-
var options = {
|
15 |
-
expiryDate: expiryDate,
|
16 |
-
speed: speed ? speed : 500,
|
17 |
-
gmt: parseFloat( gmt ),
|
18 |
-
showText: parseInt( showtext ),
|
19 |
-
};
|
20 |
-
_countdown.mbComingsoon( options );
|
21 |
-
}
|
22 |
-
}
|
23 |
-
|
24 |
-
$( document ).ready( function () {
|
25 |
-
$( '.learnpress-course-coming-soon' ).lp_course_countdown();
|
26 |
-
} );
|
27 |
-
|
28 |
-
} )( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/frontend/course_coming_soon.min.js
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
( function ( $ ) {
|
2 |
-
$.fn.lp_course_countdown = function () {
|
3 |
-
var countdowns = this;
|
4 |
-
|
5 |
-
for ( var i = 0; i < countdowns.length; i++ ) {
|
6 |
-
var _countdown = $( countdowns[i] ),
|
7 |
-
speed = _countdown.attr( 'data-speed' ),
|
8 |
-
// gmt = _countdown.attr( 'data-gmt' ),
|
9 |
-
time = _countdown.attr( 'data-time' ),
|
10 |
-
showtext = _countdown.attr( 'data-showtext' )
|
11 |
-
expiryDate = new Date( time ),
|
12 |
-
gmt = -expiryDate.getTimezoneOffset() / 60;
|
13 |
-
|
14 |
-
var options = {
|
15 |
-
expiryDate: expiryDate,
|
16 |
-
speed: speed ? speed : 500,
|
17 |
-
gmt: parseFloat( gmt ),
|
18 |
-
showText: parseInt( showtext ),
|
19 |
-
};
|
20 |
-
_countdown.mbComingsoon( options );
|
21 |
-
}
|
22 |
-
}
|
23 |
-
|
24 |
-
$( document ).ready( function () {
|
25 |
-
$( '.learnpress-course-coming-soon' ).lp_course_countdown();
|
26 |
-
} );
|
27 |
-
|
28 |
-
} )( jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/frontend/learnpress.js
CHANGED
@@ -22,7 +22,7 @@
|
|
22 |
window.location.href = url;
|
23 |
},
|
24 |
parseJSON : function (data) {
|
25 |
-
var m = data.match(
|
26 |
try {
|
27 |
if (m) {
|
28 |
data = $.parseJSON(m[1]);
|
@@ -30,7 +30,6 @@
|
|
30 |
data = $.parseJSON(data);
|
31 |
}
|
32 |
} catch (e) {
|
33 |
-
LP.log(e);
|
34 |
data = {};
|
35 |
}
|
36 |
return data;
|
22 |
window.location.href = url;
|
23 |
},
|
24 |
parseJSON : function (data) {
|
25 |
+
var m = data.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
|
26 |
try {
|
27 |
if (m) {
|
28 |
data = $.parseJSON(m[1]);
|
30 |
data = $.parseJSON(data);
|
31 |
}
|
32 |
} catch (e) {
|
|
|
33 |
data = {};
|
34 |
}
|
35 |
return data;
|
assets/js/frontend/lesson.js
CHANGED
@@ -42,7 +42,7 @@
|
|
42 |
security = $button.data('security'),
|
43 |
$item = $button.closest('.course-item');
|
44 |
windowTarget.LP.blockContent();
|
45 |
-
return;
|
46 |
this.complete({
|
47 |
security : security,
|
48 |
course_id : this.model.get('courseId'),
|
@@ -55,10 +55,7 @@
|
|
55 |
item.$el.removeClass('focus off');
|
56 |
}, 3000, item);
|
57 |
|
58 |
-
|
59 |
-
$section.find('.section-header').replaceWith($(response.html.section_header));
|
60 |
-
that.$('.learn-press-course-buttons').replaceWith($(response.html.buttons));
|
61 |
-
that.currentItem.set('content', $(response.html.content))*/
|
62 |
windowTarget.LP.setUrl(that.model.get('permalink'));
|
63 |
var data = response.course_result;
|
64 |
data.messageType = 'update-course';
|
@@ -66,7 +63,7 @@
|
|
66 |
}
|
67 |
windowTarget.LP.unblockContent();
|
68 |
}
|
69 |
-
})
|
70 |
},
|
71 |
complete : function (args) {
|
72 |
var that = this;
|
42 |
security = $button.data('security'),
|
43 |
$item = $button.closest('.course-item');
|
44 |
windowTarget.LP.blockContent();
|
45 |
+
/*return;
|
46 |
this.complete({
|
47 |
security : security,
|
48 |
course_id : this.model.get('courseId'),
|
55 |
item.$el.removeClass('focus off');
|
56 |
}, 3000, item);
|
57 |
|
58 |
+
|
|
|
|
|
|
|
59 |
windowTarget.LP.setUrl(that.model.get('permalink'));
|
60 |
var data = response.course_result;
|
61 |
data.messageType = 'update-course';
|
63 |
}
|
64 |
windowTarget.LP.unblockContent();
|
65 |
}
|
66 |
+
});*/
|
67 |
},
|
68 |
complete : function (args) {
|
69 |
var that = this;
|
assets/js/frontend/profile.js
CHANGED
@@ -313,240 +313,4 @@
|
|
313 |
});
|
314 |
});
|
315 |
|
316 |
-
return;
|
317 |
-
$(document).on('click', '#lp-remove-upload-photo', function () {
|
318 |
-
|
319 |
-
|
320 |
-
$('#learn-press-toggle-password').click(function (e) {
|
321 |
-
e.preventDefault();
|
322 |
-
var $el = $('#user_profile_password_form');
|
323 |
-
if ($el.hasClass('hide-if-js')) {
|
324 |
-
$el.removeClass('hide-if-js').hide();
|
325 |
-
}
|
326 |
-
$el.slideToggle(function () {
|
327 |
-
$el.find('input').attr('disabled', !$el.is(':visible'));
|
328 |
-
});
|
329 |
-
});
|
330 |
-
|
331 |
-
$('#learn-press-form-login input[type="text"]').focus();
|
332 |
-
/**
|
333 |
-
* Show hide dropdown menu
|
334 |
-
*/
|
335 |
-
$('.user-profile-edit-form').on('change', 'select[name="profile_picture_type"]', function () {
|
336 |
-
var avata_type = $(this).val();
|
337 |
-
$('.profile-avatar-hidden, .profile-avatar-current').each(function () {
|
338 |
-
$(this).toggleClass('hide-if-js', $(this).hasClass('avatar-' + avata_type));
|
339 |
-
});
|
340 |
-
$('.menu-item-use-gravatar, .menu-item-use-picture').each(function () {
|
341 |
-
$(this).toggleClass('lp-menu-item-selected', $(this).hasClass('menu-item-use-' + avata_type));
|
342 |
-
});
|
343 |
-
});
|
344 |
-
|
345 |
-
$('#lp-menu-change-picture .menu-item-use-gravatar').click(function (event) {
|
346 |
-
$('#lp-profile_picture_type').val('gravatar').trigger('change');
|
347 |
-
$('#lpbox-upload-crop-profile-picture').slideUp();
|
348 |
-
});
|
349 |
-
|
350 |
-
$('#lp-menu-change-picture .menu-item-use-picture').click(function (event) {
|
351 |
-
var current_picture = $('#lp-user-profile-picture-data').attr('data-current');
|
352 |
-
if (!current_picture) {
|
353 |
-
// $('#lp-button-choose-file').trigger('click');
|
354 |
-
$('#lpbox-upload-crop-profile-picture').slideDown();
|
355 |
-
} else {
|
356 |
-
$('#lp-profile_picture_type').val('picture').trigger('change');
|
357 |
-
$('#lpbox-upload-crop-profile-picture').slideUp();
|
358 |
-
}
|
359 |
-
});
|
360 |
-
|
361 |
-
$('#lp-menu-change-picture .menu-item-upload-picture').click(function (event) {
|
362 |
-
// $('#lp-button-choose-file').trigger('click');
|
363 |
-
$('#lpbox-upload-crop-profile-picture').slideDown();
|
364 |
-
});
|
365 |
-
|
366 |
-
$('#lp-ocupload-picture').upload(
|
367 |
-
{
|
368 |
-
'name' : 'image',
|
369 |
-
params : {from: 'profile', 'action': 'update', 'sub_action': 'upload_avatar'},
|
370 |
-
'onSubmit' : function () {
|
371 |
-
LP.blockContent();
|
372 |
-
},
|
373 |
-
'onComplete': function (response) {
|
374 |
-
response = LP.parseJSON(response);
|
375 |
-
console.log(response);
|
376 |
-
if (response.return && response.avatar_tmp) {
|
377 |
-
/* Load Image in to crop */
|
378 |
-
$('.image-editor').cropit('imageSrc', response.avatar_tmp);
|
379 |
-
$('.image-editor').attr('avatar-filename', response.avatar_tmp_filename);
|
380 |
-
$('#lpbox-upload-crop-profile-picture').slideDown();
|
381 |
-
LP.unblockContent();
|
382 |
-
$('body, html').css('overflow', 'visible');
|
383 |
-
$('.user-profile-picture.info-field .learn-press-message').remove();
|
384 |
-
var message = '<div class="learn-press-message success"><p>' + response.message + '</p></div>';
|
385 |
-
$('.user-profile-picture.info-field').prepend(message);
|
386 |
-
} else if (!response.return) {
|
387 |
-
$('.image-editor').cropit('imageSrc', '');
|
388 |
-
$('.image-editor').attr('avatar-filename', '');
|
389 |
-
LP.unblockContent();
|
390 |
-
$('body, html').css('overflow', 'visible');
|
391 |
-
$('.user-profile-picture.info-field .learn-press-message').remove();
|
392 |
-
var message = '<div class="learn-press-message error"><p>' + response.message + '</p></div>';
|
393 |
-
$('.user-profile-picture.info-field').prepend(message);
|
394 |
-
|
395 |
-
}
|
396 |
-
}
|
397 |
-
}
|
398 |
-
);
|
399 |
-
|
400 |
-
$('#lp-button-choose-file').click(function (event) {
|
401 |
-
event.preventDefault();
|
402 |
-
$('#lp-ocupload-picture').parent().find('form input[name="image"]').trigger('click');
|
403 |
-
});
|
404 |
-
|
405 |
-
$('#lpbox-upload-crop-profile-picture .image-editor').cropit();
|
406 |
-
|
407 |
-
|
408 |
-
$('#lp-button-apply-changes').click(function (event) {
|
409 |
-
event.preventDefault();
|
410 |
-
var zoom = $('.image-editor').cropit('zoom');
|
411 |
-
var offset = $('.image-editor').cropit('offset');
|
412 |
-
var avatar_filename = $('.image-editor').attr('avatar-filename');
|
413 |
-
var datas = {
|
414 |
-
from : 'profile',
|
415 |
-
'action' : 'update',
|
416 |
-
'sub_action' : 'crop_avatar',
|
417 |
-
'avatar_filename': avatar_filename,
|
418 |
-
'zoom' : zoom,
|
419 |
-
'offset' : offset
|
420 |
-
};
|
421 |
-
/** Create avatar, thumbnail and update picture option **/
|
422 |
-
$.ajax({
|
423 |
-
url : LP.getUrl(),
|
424 |
-
dataType : 'html',
|
425 |
-
data : datas,
|
426 |
-
type : 'post',
|
427 |
-
beforeSend: function () {
|
428 |
-
LP.blockContent();
|
429 |
-
},
|
430 |
-
success : function (response) {
|
431 |
-
response = LP.parseJSON(response);
|
432 |
-
var avatar_url = response.avatar_url;
|
433 |
-
$('.profile-picture.avatar-gravatar img').attr('src', avatar_url);
|
434 |
-
$('#lp-profile_picture_type').val('picture').trigger('change');
|
435 |
-
$('#lpbox-upload-crop-profile-picture').slideUp();
|
436 |
-
LP.unblockContent();
|
437 |
-
$('body, html').css('overflow', 'visible');
|
438 |
-
$('.user-profile-picture.info-field .learn-press-message').remove();
|
439 |
-
$('.user-profile-picture.info-field').prepend(response.message);
|
440 |
-
}
|
441 |
-
});
|
442 |
-
return;
|
443 |
-
});
|
444 |
-
|
445 |
-
$('#lp-button-cancel-changes').click(function (event) {
|
446 |
-
event.preventDefault();
|
447 |
-
$('#lpbox-upload-crop-profile-picture').slideUp();
|
448 |
-
});
|
449 |
-
|
450 |
-
$('#learn-press-user-profile-edit-form form#your-profile input[name="submit"]').on('click', function (event) {
|
451 |
-
event.preventDefault();
|
452 |
-
var check_form = true;
|
453 |
-
var check_focus = false;
|
454 |
-
/**
|
455 |
-
* VALIDATE FORM
|
456 |
-
*/
|
457 |
-
// console.log( '' === $('#your-profile #nickname' ).val());
|
458 |
-
if ('' === $('#your-profile #nickname').val()) {
|
459 |
-
if (0 === $('#your-profile #nickname').next('span.error').length) {
|
460 |
-
$('<span class="error">' + lp_profile_translation.msg_field_is_required + '</span>').insertAfter($('#your-profile #nickname'));
|
461 |
-
}
|
462 |
-
check_form = false;
|
463 |
-
//document.getElementById('nickname').focus();
|
464 |
-
$('#your-profile #nickname').focus();
|
465 |
-
check_focus = true;
|
466 |
-
} else {
|
467 |
-
$('#your-profile #nickname').next('span.error').remove();
|
468 |
-
}
|
469 |
-
|
470 |
-
if ('' !== $('#your-profile #pass0').val()) {
|
471 |
-
if ('' === $('#your-profile #pass1').val()) {
|
472 |
-
if (0 === $('#your-profile #pass1').next('span.error').length) {
|
473 |
-
$('<span class="error">' + lp_profile_translation.msg_field_is_required + '</span>').insertAfter($('#your-profile #pass1'));
|
474 |
-
}
|
475 |
-
check_form = false;
|
476 |
-
if (!check_focus) {
|
477 |
-
$('#your-profile #pass1').focus();
|
478 |
-
check_focus = true;
|
479 |
-
}
|
480 |
-
} else {
|
481 |
-
$('#your-profile #pass1').next('span.error').remove();
|
482 |
-
}
|
483 |
-
|
484 |
-
if ('' === $('#your-profile #pass2').val()) {
|
485 |
-
if (0 === $('#your-profile #pass2').next('span.error').length) {
|
486 |
-
$('<span class="error">' + lp_profile_translation.msg_field_is_required + '</span>').insertAfter($('#your-profile #pass2'));
|
487 |
-
}
|
488 |
-
check_form = false;
|
489 |
-
if (!check_focus) {
|
490 |
-
$('#your-profile #pass2').focus();
|
491 |
-
check_focus = true;
|
492 |
-
}
|
493 |
-
} else {
|
494 |
-
$(this.pass2).next('span.error').remove();
|
495 |
-
}
|
496 |
-
}
|
497 |
-
if (check_form) {
|
498 |
-
// $('#learn-press-user-profile-edit-form form#your-profile').submit();
|
499 |
-
var datas = $('#learn-press-user-profile-edit-form form#your-profile').serializeArray();
|
500 |
-
$.ajax({
|
501 |
-
url : LP.getUrl(),
|
502 |
-
dataType : 'html',
|
503 |
-
data : datas,
|
504 |
-
type : 'post',
|
505 |
-
beforeSend: function () {
|
506 |
-
LP.blockContent();
|
507 |
-
},
|
508 |
-
success : function (response) {
|
509 |
-
response = LP.parseJSON(response);
|
510 |
-
$('#your-profile #pass0, #your-profile #pass1, #your-profile #pass2').val('');
|
511 |
-
$('#user_profile_password_form').slideUp();
|
512 |
-
LP.unblockContent();
|
513 |
-
$('body, html').css('overflow', 'visible');
|
514 |
-
$('.user-profile-picture.info-field .learn-press-message').remove();
|
515 |
-
$('.user-profile-picture.info-field').prepend(response.message);
|
516 |
-
$('html, body').animate({
|
517 |
-
scrollTop: $('.user-profile-picture.info-field .learn-press-message').offset().top - 100
|
518 |
-
}, 500);
|
519 |
-
}
|
520 |
-
});
|
521 |
-
}
|
522 |
-
});
|
523 |
-
|
524 |
-
$('#learn-press-user-profile-edit-form #your-profile input#nickname').on('change', function () {
|
525 |
-
if ('' === $(this).val()) {
|
526 |
-
if (0 === $(this).next('span.error').length) {
|
527 |
-
;
|
528 |
-
$('<span class="error">' + lp_profile_translation.msg_field_is_required + '</span>').insertAfter($(this));
|
529 |
-
}
|
530 |
-
} else {
|
531 |
-
$(this).next('span.error').remove();
|
532 |
-
}
|
533 |
-
});
|
534 |
-
|
535 |
-
$('#learn-press-user-profile-edit-form #your-profile input#pass1').on('change', function () {
|
536 |
-
|
537 |
-
});
|
538 |
-
|
539 |
-
$('#learn-press-user-profile-edit-form #your-profile input#pass2').on('keyup', function () {
|
540 |
-
var pass1 = $('#your-profile input#pass1').val();
|
541 |
-
if (pass1 !== $(this).val()) {
|
542 |
-
if (0 === $(this).next('span.error').length) {
|
543 |
-
;
|
544 |
-
$('<span class="error">' + lp_profile_translation.confim_pass_not_match + '</span>').insertAfter($(this));
|
545 |
-
}
|
546 |
-
} else {
|
547 |
-
$(this).next('span.error').remove();
|
548 |
-
}
|
549 |
-
});
|
550 |
-
|
551 |
-
});
|
552 |
})(jQuery);
|
313 |
});
|
314 |
});
|
315 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
})(jQuery);
|
assets/js/frontend/quiz.js
CHANGED
@@ -550,7 +550,7 @@
|
|
550 |
this.timeout && clearTimeout(this.timeout);
|
551 |
var timer = this.model.inc();
|
552 |
this.updateCountdown();
|
553 |
-
|
554 |
if (timer.remainingTime == 0) {
|
555 |
LP.Hook.doAction('learn_press_quiz_timeout', this);
|
556 |
this.$('.button-finish-quiz').trigger('click');
|
@@ -705,7 +705,7 @@
|
|
705 |
_submit : function (args) {
|
706 |
var data = {};
|
707 |
data = this.model.getQuizData(data);
|
708 |
-
|
709 |
args = $.extend({
|
710 |
security: '',
|
711 |
action : ''
|
@@ -713,12 +713,18 @@
|
|
713 |
windowTarget.LP.blockContent();
|
714 |
LP.Hook.doAction('learn_press_before_start_quiz', this.currentItem, this);
|
715 |
var $form = this.$('form.quiz-buttons');
|
|
|
716 |
this.model.questions.forEach(function (m) {
|
717 |
var $content = m.get('response');
|
718 |
if (!$content) {
|
719 |
return;
|
720 |
}
|
721 |
-
var $question =
|
|
|
|
|
|
|
|
|
|
|
722 |
$form.append($question);
|
723 |
});
|
724 |
$form.find('input[name="security"]').val(args.security);
|
550 |
this.timeout && clearTimeout(this.timeout);
|
551 |
var timer = this.model.inc();
|
552 |
this.updateCountdown();
|
553 |
+
$(document).triggerHandler('learn-press/quiz-tick');
|
554 |
if (timer.remainingTime == 0) {
|
555 |
LP.Hook.doAction('learn_press_quiz_timeout', this);
|
556 |
this.$('.button-finish-quiz').trigger('click');
|
705 |
_submit : function (args) {
|
706 |
var data = {};
|
707 |
data = this.model.getQuizData(data);
|
708 |
+
|
709 |
args = $.extend({
|
710 |
security: '',
|
711 |
action : ''
|
713 |
windowTarget.LP.blockContent();
|
714 |
LP.Hook.doAction('learn_press_before_start_quiz', this.currentItem, this);
|
715 |
var $form = this.$('form.quiz-buttons');
|
716 |
+
var qlenght = this.model.questions.length;
|
717 |
this.model.questions.forEach(function (m) {
|
718 |
var $content = m.get('response');
|
719 |
if (!$content) {
|
720 |
return;
|
721 |
}
|
722 |
+
var $question = '';
|
723 |
+
if( qlenght === 1 ) {
|
724 |
+
var $question = jQuery('#'+$content.attr('id')+' .quiz-question-content').clone().hide();
|
725 |
+
} else {
|
726 |
+
var $question = $content.find('.quiz-question-content').clone().hide();
|
727 |
+
}
|
728 |
$form.append($question);
|
729 |
});
|
730 |
$form.find('input[name="security"]').val(args.security);
|
assets/js/frontend/single-course.js
CHANGED
@@ -44,6 +44,13 @@ if (typeof LearnPress === 'undefined') {
|
|
44 |
},
|
45 |
_changeCurrent : function (m) {
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
},
|
48 |
request : function (args) {
|
49 |
var that = this;
|
@@ -275,9 +282,7 @@ if (typeof LearnPress === 'undefined') {
|
|
275 |
LP.Hook.addAction('learn_press_receive_message', this.receiveMessage);
|
276 |
if (typeof localStorage != 'undefined') {
|
277 |
var expanded = localStorage.getItem("lp-item-expanded");
|
278 |
-
if (expanded=='yes') {
|
279 |
-
console.log('xxx:', expanded);
|
280 |
-
|
281 |
this.expand(true);
|
282 |
}
|
283 |
}
|
@@ -296,24 +301,43 @@ if (typeof LearnPress === 'undefined') {
|
|
296 |
sections = {},
|
297 |
$progress = this.$('.course-progress').find('.number, .percentage-sign'),
|
298 |
$itemProgress = this.$('.items-progress').find('.number, .percentage-sign');
|
299 |
-
|
300 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
data.items && data.items.forEach(function (item) {
|
302 |
-
var $item = this.$('.course-item.course-item-' + item.id)
|
|
|
|
|
303 |
if (!sections[item.section_id]) {
|
304 |
sections[item.section_id] = [0, 0];
|
305 |
}
|
|
|
|
|
|
|
306 |
if (item.status === 'completed') {
|
307 |
-
itemsCompleted++;
|
308 |
$item.addClass('item-has-status item-completed');
|
309 |
-
sections[item.section_id][1]++;
|
310 |
} else if (item.status) {
|
311 |
$item.addClass('item-has-status').removeClass('item-completed');
|
312 |
} else {
|
313 |
$item.removeClass('item-has-status').removeClass('item-completed');
|
314 |
}
|
|
|
315 |
if (item.type === 'lp_quiz') {
|
316 |
-
$item.find('.item-result').html(LP.Hook.applyFilters('item_result_text', item.results
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
317 |
}
|
318 |
sections[item.section_id][0]++;
|
319 |
}, this);
|
@@ -324,11 +348,18 @@ if (typeof LearnPress === 'undefined') {
|
|
324 |
if (!data) {
|
325 |
return;
|
326 |
}
|
|
|
327 |
$section.find('.section-header span.step').html(LP.Hook.applyFilters('section_header_span_text', data[1] + '/' + data[0]));
|
328 |
});
|
329 |
$itemProgress.eq(0).html(data.completed_items_text.replace('%d', itemsCompleted).replace('%d', itemsCount));
|
330 |
var passingCondition = parseInt(this.$('.course-progress .lp-course-progress').data('passing-condition'));
|
|
|
|
|
|
|
|
|
|
|
331 |
this.$('.button-finish-course').toggleClass('hide-if-js', !(data.results >= passingCondition));
|
|
|
332 |
if (data.setUrl) {
|
333 |
LP.setUrl(data.setUrl);
|
334 |
}
|
@@ -365,7 +396,6 @@ if (typeof LearnPress === 'undefined') {
|
|
365 |
if (localStorage) {
|
366 |
localStorage.setItem("lp-item-expanded", expand ? 'yes' : 'no');
|
367 |
}
|
368 |
-
console.log(localStorage.getItem("lp-item-expanded"));
|
369 |
},
|
370 |
_initHooks : function () {
|
371 |
LP.Hook.addAction('learn_press_update_item_content', this.updateItemContent);
|
@@ -379,19 +409,26 @@ if (typeof LearnPress === 'undefined') {
|
|
379 |
that.$('.course-item.item-current .button-load-item').trigger('click', {force: true});
|
380 |
}, 500);
|
381 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
_loadItem : function (e, f) {
|
383 |
e.preventDefault();
|
384 |
var that = this,
|
385 |
$target = $(e.target),
|
386 |
-
id =
|
387 |
f = f || {force: false};
|
388 |
if (!id || this.itemLoading) {
|
389 |
-
|
390 |
}
|
391 |
if ($target.closest('.course-item').hasClass('item-current') && !f.force) {
|
392 |
return;
|
393 |
}
|
394 |
-
|
395 |
if (this.currentItem) {
|
396 |
var $iframe = this.currentItem.get('content');
|
397 |
$iframe && $iframe.detach();
|
@@ -399,7 +436,7 @@ if (typeof LearnPress === 'undefined') {
|
|
399 |
this.itemLoading = id;
|
400 |
this.currentItem = this.model.getItem(id);
|
401 |
this.showPopup();
|
402 |
-
|
403 |
isNew = !($content && $content.length);
|
404 |
if (!$content) {
|
405 |
$content = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen />');
|
@@ -669,9 +706,15 @@ if (typeof LearnPress === 'undefined') {
|
|
669 |
|
670 |
this.curriculumPlaceholder.insertAfter($curriculum);
|
671 |
$curriculum.appendTo(this.$('#popup-sidebar'));
|
672 |
-
|
673 |
-
$(
|
|
|
|
|
|
|
|
|
|
|
674 |
$(".sidebar-show-btn").hide();
|
|
|
675 |
},
|
676 |
_closePopup : function (e) {
|
677 |
e.preventDefault();
|
@@ -681,8 +724,18 @@ if (typeof LearnPress === 'undefined') {
|
|
681 |
this.progressPlaceholder.replaceWith(this.$('.learn-press-course-results-progress'));
|
682 |
this.undelegateEvents();
|
683 |
this.remove();
|
684 |
-
|
685 |
-
$(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
},
|
687 |
_closeSidebar : function (e) {
|
688 |
e.preventDefault();
|
@@ -699,12 +752,12 @@ if (typeof LearnPress === 'undefined') {
|
|
699 |
_loadItem : function (e) {
|
700 |
var $iframe = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen />').src($(e.target).attr('href') + '?content-item-only=yes');
|
701 |
this.$('#popup-content-inner').html($iframe);
|
702 |
-
return '';
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
},
|
709 |
_ajaxLoadItemSuccess: function (response) {
|
710 |
this.$('#popup-content-inner').html($(response).contents().find('.lp_course'));
|
44 |
},
|
45 |
_changeCurrent : function (m) {
|
46 |
|
47 |
+
},
|
48 |
+
get : function () {
|
49 |
+
var val = Course_Item.__super__.get.apply(this, arguments);
|
50 |
+
if (arguments[0] == 'url') {
|
51 |
+
val = LP_Course_Params.root_url + val;
|
52 |
+
}
|
53 |
+
return val;
|
54 |
},
|
55 |
request : function (args) {
|
56 |
var that = this;
|
282 |
LP.Hook.addAction('learn_press_receive_message', this.receiveMessage);
|
283 |
if (typeof localStorage != 'undefined') {
|
284 |
var expanded = localStorage.getItem("lp-item-expanded");
|
285 |
+
if (expanded == 'yes') {
|
|
|
|
|
286 |
this.expand(true);
|
287 |
}
|
288 |
}
|
301 |
sections = {},
|
302 |
$progress = this.$('.course-progress').find('.number, .percentage-sign'),
|
303 |
$itemProgress = this.$('.items-progress').find('.number, .percentage-sign');
|
304 |
+
|
305 |
+
if ($progress.length == 0) {
|
306 |
+
return;
|
307 |
+
}
|
308 |
+
|
309 |
+
$progress[0].childNodes[0].nodeValue = parseInt(data.results);
|
310 |
+
|
311 |
+
this.$('.course-progress .lp-progress-value').width(parseInt(data.results) + '%');
|
312 |
data.items && data.items.forEach(function (item) {
|
313 |
+
var $item = this.$('.course-item.course-item-' + item.id),
|
314 |
+
$status = $item.find('.item-status'),
|
315 |
+
statusClass = $status.length ? ($status[0].className + '').replace(/(item-status-[^\s]*)/g, '').trim() : '';
|
316 |
if (!sections[item.section_id]) {
|
317 |
sections[item.section_id] = [0, 0];
|
318 |
}
|
319 |
+
if (item.status) {
|
320 |
+
statusClass += ' item-status-' + item.status;
|
321 |
+
}
|
322 |
if (item.status === 'completed') {
|
|
|
323 |
$item.addClass('item-has-status item-completed');
|
|
|
324 |
} else if (item.status) {
|
325 |
$item.addClass('item-has-status').removeClass('item-completed');
|
326 |
} else {
|
327 |
$item.removeClass('item-has-status').removeClass('item-completed');
|
328 |
}
|
329 |
+
|
330 |
if (item.type === 'lp_quiz') {
|
331 |
+
$item.find('.item-result').html(LP.Hook.applyFilters('item_result_text', item.results));
|
332 |
+
}
|
333 |
+
$status[0].className = statusClass;
|
334 |
+
if ($.inArray(item.status, ['completed', 'failed', 'passed']) != -1) {
|
335 |
+
sections[item.section_id][1]++;
|
336 |
+
}
|
337 |
+
if (item.status && item.status != 'viewed') {
|
338 |
+
$item.addClass('item-has-result');
|
339 |
+
} else {
|
340 |
+
$item.removeClass('item-has-result');
|
341 |
}
|
342 |
sections[item.section_id][0]++;
|
343 |
}, this);
|
348 |
if (!data) {
|
349 |
return;
|
350 |
}
|
351 |
+
itemsCompleted += data[1];
|
352 |
$section.find('.section-header span.step').html(LP.Hook.applyFilters('section_header_span_text', data[1] + '/' + data[0]));
|
353 |
});
|
354 |
$itemProgress.eq(0).html(data.completed_items_text.replace('%d', itemsCompleted).replace('%d', itemsCount));
|
355 |
var passingCondition = parseInt(this.$('.course-progress .lp-course-progress').data('passing-condition'));
|
356 |
+
if (data.grade) {
|
357 |
+
var $grade = this.$('.grade').html(data.grade_html),
|
358 |
+
gradeClass = $grade[0].className.replace(/passed|failed|in-progress/, '') + ' ' + data.grade;
|
359 |
+
$grade[0].className = gradeClass;
|
360 |
+
}
|
361 |
this.$('.button-finish-course').toggleClass('hide-if-js', !(data.results >= passingCondition));
|
362 |
+
|
363 |
if (data.setUrl) {
|
364 |
LP.setUrl(data.setUrl);
|
365 |
}
|
396 |
if (localStorage) {
|
397 |
localStorage.setItem("lp-item-expanded", expand ? 'yes' : 'no');
|
398 |
}
|
|
|
399 |
},
|
400 |
_initHooks : function () {
|
401 |
LP.Hook.addAction('learn_press_update_item_content', this.updateItemContent);
|
409 |
that.$('.course-item.item-current .button-load-item').trigger('click', {force: true});
|
410 |
}, 500);
|
411 |
},
|
412 |
+
_getItemId : function (el) {
|
413 |
+
var id = el.hasClass('button-load-item') ? el.data('id') : el.find('.button-load-item').data('id');
|
414 |
+
if (!id) {
|
415 |
+
id = el.hasClass('lp-label-preview') ? el.closest('.course-item').find('.button-load-item').data('id') : 0;
|
416 |
+
}
|
417 |
+
return id;
|
418 |
+
},
|
419 |
_loadItem : function (e, f) {
|
420 |
e.preventDefault();
|
421 |
var that = this,
|
422 |
$target = $(e.target),
|
423 |
+
id = this._getItemId($target);
|
424 |
f = f || {force: false};
|
425 |
if (!id || this.itemLoading) {
|
426 |
+
return;
|
427 |
}
|
428 |
if ($target.closest('.course-item').hasClass('item-current') && !f.force) {
|
429 |
return;
|
430 |
}
|
431 |
+
this.blockContent();
|
432 |
if (this.currentItem) {
|
433 |
var $iframe = this.currentItem.get('content');
|
434 |
$iframe && $iframe.detach();
|
436 |
this.itemLoading = id;
|
437 |
this.currentItem = this.model.getItem(id);
|
438 |
this.showPopup();
|
439 |
+
var $content = this.currentItem.get('content'),
|
440 |
isNew = !($content && $content.length);
|
441 |
if (!$content) {
|
442 |
$content = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen />');
|
706 |
|
707 |
this.curriculumPlaceholder.insertAfter($curriculum);
|
708 |
$curriculum.appendTo(this.$('#popup-sidebar'));
|
709 |
+
//$('html, body').each(function () {
|
710 |
+
// var $root = $(this).addClass('block-content'),
|
711 |
+
// dataOverflow = $root.attr('overflow'),
|
712 |
+
// overflow = dataOverflow != undefined ? dataOverflow : $root.css('overflow');
|
713 |
+
// $root.css('overflow', 'hidden').attr('overflow', overflow);
|
714 |
+
//})
|
715 |
+
LP.blockContent();
|
716 |
$(".sidebar-show-btn").hide();
|
717 |
+
$(document).on('learn_press_unblock_content', this.hideScrollBar);
|
718 |
},
|
719 |
_closePopup : function (e) {
|
720 |
e.preventDefault();
|
724 |
this.progressPlaceholder.replaceWith(this.$('.learn-press-course-results-progress'));
|
725 |
this.undelegateEvents();
|
726 |
this.remove();
|
727 |
+
|
728 |
+
/*var $root = $(this).removeClass('block-content'),
|
729 |
+
overflow = $root.attr('overflow');
|
730 |
+
$root.css('overflow', overflow).removeAttr('overflow');*/
|
731 |
+
LP.unblockContent();
|
732 |
+
$('html, body').css('overflow', '');
|
733 |
+
$(document).off('focusin').trigger('learn_press_popup_course_remove').unbind('learn_press_unblock_content', this.hideScrollBar);
|
734 |
+
},
|
735 |
+
hideScrollBar : function () {
|
736 |
+
$('html, body').each(function () {
|
737 |
+
var $root = $(this).css('overflow', 'hidden');
|
738 |
+
})
|
739 |
},
|
740 |
_closeSidebar : function (e) {
|
741 |
e.preventDefault();
|
752 |
_loadItem : function (e) {
|
753 |
var $iframe = $('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen />').src($(e.target).attr('href') + '?content-item-only=yes');
|
754 |
this.$('#popup-content-inner').html($iframe);
|
755 |
+
/*return '';
|
756 |
+
e.preventDefault();
|
757 |
+
$.ajax({
|
758 |
+
url : $(e.target).attr('href'),
|
759 |
+
success: this._ajaxLoadItemSuccess
|
760 |
+
});*/
|
761 |
},
|
762 |
_ajaxLoadItemSuccess: function (response) {
|
763 |
this.$('#popup-content-inner').html($(response).contents().find('.lp_course'));
|
assets/js/global.js
CHANGED
@@ -4,7 +4,79 @@
|
|
4 |
if (typeof window.LP == 'undefined') {
|
5 |
window.LP = window.LearnPress = {};
|
6 |
}
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
(function ($) {
|
9 |
$.fn.serializeJSON = function () {
|
10 |
var unIndexed = $(this).serializeArray(),
|
@@ -142,7 +214,9 @@ if (typeof window.LP == 'undefined') {
|
|
142 |
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
143 |
};
|
144 |
String.prototype.addQueryVar = function (name, value) {
|
145 |
-
var url = this
|
|
|
|
|
146 |
if (name.match(/\[/)) {
|
147 |
url += url.match(/\?/) ? '&' : '?';
|
148 |
url += name + '=' + value;
|
@@ -154,14 +228,16 @@ if (typeof window.LP == 'undefined') {
|
|
154 |
url += name + '=' + value;
|
155 |
}
|
156 |
}
|
157 |
-
return url;
|
158 |
};
|
159 |
String.prototype.removeQueryVar = function (name) {
|
160 |
var url = this;
|
|
|
|
|
161 |
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
162 |
var regex = new RegExp("[\\?&]" + name + "([\[][^=]*)?=([^&#]*)", 'g');
|
163 |
url = url.replace(regex, '');
|
164 |
-
return url;
|
165 |
};
|
166 |
|
167 |
if ($.isEmptyObject("") == false) {
|
@@ -553,14 +629,14 @@ if (typeof window.LP == 'undefined') {
|
|
553 |
},
|
554 |
|
555 |
parseResponse: function (response, type) {
|
556 |
-
var m = response.match(
|
557 |
if (m) {
|
558 |
response = m[1];
|
559 |
}
|
560 |
return (type || "json") == "json" ? this.parseJSON(response) : response;
|
561 |
},
|
562 |
parseJSON : function (data) {
|
563 |
-
var m = data.match(
|
564 |
try {
|
565 |
if (m) {
|
566 |
data = $.parseJSON(m[1]);
|
@@ -568,7 +644,6 @@ if (typeof window.LP == 'undefined') {
|
|
568 |
data = $.parseJSON(data);
|
569 |
}
|
570 |
} catch (e) {
|
571 |
-
LP.log(e);
|
572 |
data = {};
|
573 |
}
|
574 |
return data;
|
@@ -617,21 +692,21 @@ if (typeof window.LP == 'undefined') {
|
|
617 |
});
|
618 |
},
|
619 |
|
620 |
-
funcArgs2Array: function (args) {
|
621 |
var arr = [];
|
622 |
for (var i = 0; i < args.length; i++) {
|
623 |
arr.push(args[i]);
|
624 |
}
|
625 |
return arr;
|
626 |
},
|
627 |
-
addFilter
|
628 |
var $doc = $(document),
|
629 |
event = 'LP.' + action;
|
630 |
$doc.on(event, callback);
|
631 |
LP.log($doc.data('events'));
|
632 |
return this;
|
633 |
},
|
634 |
-
applyFilters
|
635 |
var $doc = $(document),
|
636 |
action = arguments[0],
|
637 |
args = this.funcArgs2Array(arguments);
|
@@ -641,10 +716,10 @@ if (typeof window.LP == 'undefined') {
|
|
641 |
}
|
642 |
return args[1];
|
643 |
},
|
644 |
-
addAction
|
645 |
return this.addFilter(action, callback);
|
646 |
},
|
647 |
-
doAction
|
648 |
var $doc = $(document),
|
649 |
action = arguments[0],
|
650 |
args = this.funcArgs2Array(arguments);
|
@@ -653,7 +728,7 @@ if (typeof window.LP == 'undefined') {
|
|
653 |
$doc.trigger.apply($doc, args);
|
654 |
}
|
655 |
},
|
656 |
-
toElement
|
657 |
if ($(element).length == 0) {
|
658 |
return;
|
659 |
}
|
@@ -670,7 +745,7 @@ if (typeof window.LP == 'undefined') {
|
|
670 |
scrollTop: $(element).offset().top - args.offset
|
671 |
}, args.duration, args.callback);
|
672 |
},
|
673 |
-
uniqueId
|
674 |
if (typeof prefix === 'undefined') {
|
675 |
prefix = '';
|
676 |
}
|
@@ -712,29 +787,51 @@ if (typeof window.LP == 'undefined') {
|
|
712 |
|
713 |
return retId;
|
714 |
},
|
715 |
-
log
|
716 |
//if (typeof LEARN_PRESS_DEBUG != 'undefined' && LEARN_PRESS_DEBUG && console) {
|
717 |
for (var i = 0, n = arguments.length; i < n; i++) {
|
718 |
console.log(arguments[i]);
|
719 |
}
|
720 |
//}
|
721 |
},
|
722 |
-
blockContent
|
723 |
if ($('#learn-press-block-content').length == 0) {
|
724 |
$(LP.template('learn-press-template-block-content', {})).appendTo($('body'));
|
725 |
}
|
726 |
-
|
727 |
-
|
728 |
-
$root.css('overflow', 'hidden').attr('overflow', overflow);
|
729 |
},
|
730 |
-
unblockContent: function () {
|
731 |
setTimeout(function () {
|
732 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
733 |
overflow = $root.attr('overflow');
|
734 |
$root.css('overflow', overflow).removeAttr('overflow');
|
735 |
-
}
|
|
|
736 |
},
|
737 |
-
template
|
738 |
var compiled,
|
739 |
options = {
|
740 |
evaluate : /<#([\s\S]+?)#>/g,
|
@@ -751,7 +848,7 @@ if (typeof window.LP == 'undefined') {
|
|
751 |
}, function (a, b) {
|
752 |
return a + '-' + JSON.stringify(b);
|
753 |
}),
|
754 |
-
alert
|
755 |
var title = '',
|
756 |
message = '';
|
757 |
if (typeof localize == 'string') {
|
@@ -770,7 +867,7 @@ if (typeof window.LP == 'undefined') {
|
|
770 |
});
|
771 |
this._on_alert_show();
|
772 |
},
|
773 |
-
confirm
|
774 |
var title = '',
|
775 |
message = '';
|
776 |
|
@@ -791,7 +888,7 @@ if (typeof window.LP == 'undefined') {
|
|
791 |
this._on_alert_show();
|
792 |
|
793 |
},
|
794 |
-
_on_alert_show: function () {
|
795 |
var $container = $('#popup_container'),
|
796 |
$placeholder = $('<span id="popup_container_placeholder" />').insertAfter($container).data('xxx', $container);
|
797 |
$container.stop().css('top', '-=50').css('opacity', '0').animate({
|
@@ -799,7 +896,7 @@ if (typeof window.LP == 'undefined') {
|
|
799 |
opacity: 1
|
800 |
}, 250);
|
801 |
},
|
802 |
-
_on_alert_hide: function () {
|
803 |
var $holder = $("#popup_container_placeholder"),
|
804 |
$container = $holder.data('xxx');
|
805 |
if ($container) {
|
@@ -813,7 +910,7 @@ if (typeof window.LP == 'undefined') {
|
|
813 |
$(this).remove();
|
814 |
});
|
815 |
},
|
816 |
-
sendMessage
|
817 |
if ($.isPlainObject(data)) {
|
818 |
data = JSON.stringify(data);
|
819 |
}
|
@@ -821,7 +918,7 @@ if (typeof window.LP == 'undefined') {
|
|
821 |
targetOrigin = targetOrigin || '*';
|
822 |
object.postMessage(data, targetOrigin, transfer);
|
823 |
},
|
824 |
-
receiveMessage: function (event, b) {
|
825 |
var target = event.origin || event.originalEvent.origin,
|
826 |
data = event.data || event.originalEvent.data || '';
|
827 |
if (typeof data === 'string' || data instanceof String) {
|
4 |
if (typeof window.LP == 'undefined') {
|
5 |
window.LP = window.LearnPress = {};
|
6 |
}
|
7 |
+
// jQuery cookie plugin
|
8 |
+
(function (factory) {
|
9 |
+
if (typeof define === 'function' && define.amd) {
|
10 |
+
define(['jquery'], factory);
|
11 |
+
} else if (typeof exports === 'object') {
|
12 |
+
module.exports = factory(require('jquery'));
|
13 |
+
} else {
|
14 |
+
factory(jQuery);
|
15 |
+
}
|
16 |
+
}(function ($) {
|
17 |
+
var pluses = /\+/g;
|
18 |
+
function encode(s) {
|
19 |
+
return config.raw ? s : encodeURIComponent(s);
|
20 |
+
}
|
21 |
+
function decode(s) {
|
22 |
+
return config.raw ? s : decodeURIComponent(s);
|
23 |
+
}
|
24 |
+
function stringifyCookieValue(value) {
|
25 |
+
return encode(config.json ? JSON.stringify(value) : String(value));
|
26 |
+
}
|
27 |
+
function parseCookieValue(s) {
|
28 |
+
if (s.indexOf('"') === 0) {
|
29 |
+
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
30 |
+
}
|
31 |
+
try {
|
32 |
+
s = decodeURIComponent(s.replace(pluses, ' '));
|
33 |
+
return config.json ? JSON.parse(s) : s;
|
34 |
+
} catch (e) {
|
35 |
+
}
|
36 |
+
}
|
37 |
+
function read(s, converter) {
|
38 |
+
var value = config.raw ? s : parseCookieValue(s);
|
39 |
+
return $.isFunction(converter) ? converter(value) : value;
|
40 |
+
}
|
41 |
+
var config = $.cookie = function (key, value, options) {
|
42 |
+
if (arguments.length > 1 && !$.isFunction(value)) {
|
43 |
+
options = $.extend({}, config.defaults, options);
|
44 |
+
if (typeof options.expires === 'number') {
|
45 |
+
var days = options.expires, t = options.expires = new Date();
|
46 |
+
t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
|
47 |
+
}
|
48 |
+
return (document.cookie = [
|
49 |
+
encode(key), '=', stringifyCookieValue(value),
|
50 |
+
options.expires ? '; expires=' + options.expires.toUTCString() : '',
|
51 |
+
options.path ? '; path=' + options.path : '',
|
52 |
+
options.domain ? '; domain=' + options.domain : '',
|
53 |
+
options.secure ? '; secure' : ''
|
54 |
+
].join(''));
|
55 |
+
}
|
56 |
+
var result = key ? undefined : {},
|
57 |
+
cookies = document.cookie ? document.cookie.split('; ') : [],
|
58 |
+
i = 0,
|
59 |
+
l = cookies.length;
|
60 |
+
for (; i < l; i++) {
|
61 |
+
var parts = cookies[i].split('='),
|
62 |
+
name = decode(parts.shift()),
|
63 |
+
cookie = parts.join('=');
|
64 |
+
if (key === name) {
|
65 |
+
result = read(cookie, value);
|
66 |
+
break;
|
67 |
+
}
|
68 |
+
if (!key && (cookie = read(cookie)) !== undefined) {
|
69 |
+
result[name] = cookie;
|
70 |
+
}
|
71 |
+
}
|
72 |
+
return result;
|
73 |
+
};
|
74 |
+
config.defaults = {};
|
75 |
+
$.removeCookie = function (key, options) {
|
76 |
+
$.cookie(key, '', $.extend({}, options, {expires: -1}));
|
77 |
+
return !$.cookie(key);
|
78 |
+
};
|
79 |
+
}));
|
80 |
(function ($) {
|
81 |
$.fn.serializeJSON = function () {
|
82 |
var unIndexed = $(this).serializeArray(),
|
214 |
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
|
215 |
};
|
216 |
String.prototype.addQueryVar = function (name, value) {
|
217 |
+
var url = this,
|
218 |
+
m = url.split('#');
|
219 |
+
url = m[0];
|
220 |
if (name.match(/\[/)) {
|
221 |
url += url.match(/\?/) ? '&' : '?';
|
222 |
url += name + '=' + value;
|
228 |
url += name + '=' + value;
|
229 |
}
|
230 |
}
|
231 |
+
return url + (m[1] ? '#' + m[1] : '');
|
232 |
};
|
233 |
String.prototype.removeQueryVar = function (name) {
|
234 |
var url = this;
|
235 |
+
var m = url.split('#');
|
236 |
+
url = m[0];
|
237 |
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
|
238 |
var regex = new RegExp("[\\?&]" + name + "([\[][^=]*)?=([^&#]*)", 'g');
|
239 |
url = url.replace(regex, '');
|
240 |
+
return url + (m[1] ? '#' + m[1] : '');
|
241 |
};
|
242 |
|
243 |
if ($.isEmptyObject("") == false) {
|
629 |
},
|
630 |
|
631 |
parseResponse: function (response, type) {
|
632 |
+
var m = response.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
|
633 |
if (m) {
|
634 |
response = m[1];
|
635 |
}
|
636 |
return (type || "json") == "json" ? this.parseJSON(response) : response;
|
637 |
},
|
638 |
parseJSON : function (data) {
|
639 |
+
var m = data.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
|
640 |
try {
|
641 |
if (m) {
|
642 |
data = $.parseJSON(m[1]);
|
644 |
data = $.parseJSON(data);
|
645 |
}
|
646 |
} catch (e) {
|
|
|
647 |
data = {};
|
648 |
}
|
649 |
return data;
|
692 |
});
|
693 |
},
|
694 |
|
695 |
+
funcArgs2Array : function (args) {
|
696 |
var arr = [];
|
697 |
for (var i = 0; i < args.length; i++) {
|
698 |
arr.push(args[i]);
|
699 |
}
|
700 |
return arr;
|
701 |
},
|
702 |
+
addFilter : function (action, callback) {
|
703 |
var $doc = $(document),
|
704 |
event = 'LP.' + action;
|
705 |
$doc.on(event, callback);
|
706 |
LP.log($doc.data('events'));
|
707 |
return this;
|
708 |
},
|
709 |
+
applyFilters : function () {
|
710 |
var $doc = $(document),
|
711 |
action = arguments[0],
|
712 |
args = this.funcArgs2Array(arguments);
|
716 |
}
|
717 |
return args[1];
|
718 |
},
|
719 |
+
addAction : function (action, callback) {
|
720 |
return this.addFilter(action, callback);
|
721 |
},
|
722 |
+
doAction : function () {
|
723 |
var $doc = $(document),
|
724 |
action = arguments[0],
|
725 |
args = this.funcArgs2Array(arguments);
|
728 |
$doc.trigger.apply($doc, args);
|
729 |
}
|
730 |
},
|
731 |
+
toElement : function (element, args) {
|
732 |
if ($(element).length == 0) {
|
733 |
return;
|
734 |
}
|
745 |
scrollTop: $(element).offset().top - args.offset
|
746 |
}, args.duration, args.callback);
|
747 |
},
|
748 |
+
uniqueId : function (prefix, more_entropy) {
|
749 |
if (typeof prefix === 'undefined') {
|
750 |
prefix = '';
|
751 |
}
|
787 |
|
788 |
return retId;
|
789 |
},
|
790 |
+
log : function () {
|
791 |
//if (typeof LEARN_PRESS_DEBUG != 'undefined' && LEARN_PRESS_DEBUG && console) {
|
792 |
for (var i = 0, n = arguments.length; i < n; i++) {
|
793 |
console.log(arguments[i]);
|
794 |
}
|
795 |
//}
|
796 |
},
|
797 |
+
blockContent : function () {
|
798 |
if ($('#learn-press-block-content').length == 0) {
|
799 |
$(LP.template('learn-press-template-block-content', {})).appendTo($('body'));
|
800 |
}
|
801 |
+
LP.hideMainScrollbar().addClass('block-content');
|
802 |
+
$(document).trigger('learn_press_block_content');
|
|
|
803 |
},
|
804 |
+
unblockContent : function () {
|
805 |
setTimeout(function () {
|
806 |
+
LP.showMainScrollbar().removeClass('block-content');
|
807 |
+
$(document).trigger('learn_press_unblock_content');
|
808 |
+
}, 350);
|
809 |
+
},
|
810 |
+
hideMainScrollbar: function (el) {
|
811 |
+
if (!el) {
|
812 |
+
el = 'html, body';
|
813 |
+
}
|
814 |
+
var $el = $(el);
|
815 |
+
$el.each(function () {
|
816 |
+
var $root = $(this),
|
817 |
+
overflow = $root.css('overflow');
|
818 |
+
$root.css('overflow', 'hidden').attr('overflow', overflow);
|
819 |
+
});
|
820 |
+
return $el;
|
821 |
+
},
|
822 |
+
showMainScrollbar: function (el) {
|
823 |
+
if (!el) {
|
824 |
+
el = 'html, body';
|
825 |
+
}
|
826 |
+
var $el = $(el);
|
827 |
+
$el.each(function () {
|
828 |
+
var $root = $(this),
|
829 |
overflow = $root.attr('overflow');
|
830 |
$root.css('overflow', overflow).removeAttr('overflow');
|
831 |
+
});
|
832 |
+
return $el;
|
833 |
},
|
834 |
+
template : _.memoize(function (id, data) {
|
835 |
var compiled,
|
836 |
options = {
|
837 |
evaluate : /<#([\s\S]+?)#>/g,
|
848 |
}, function (a, b) {
|
849 |
return a + '-' + JSON.stringify(b);
|
850 |
}),
|
851 |
+
alert : function (localize, callback) {
|
852 |
var title = '',
|
853 |
message = '';
|
854 |
if (typeof localize == 'string') {
|
867 |
});
|
868 |
this._on_alert_show();
|
869 |
},
|
870 |
+
confirm : function (localize, callback) {
|
871 |
var title = '',
|
872 |
message = '';
|
873 |
|
888 |
this._on_alert_show();
|
889 |
|
890 |
},
|
891 |
+
_on_alert_show : function () {
|
892 |
var $container = $('#popup_container'),
|
893 |
$placeholder = $('<span id="popup_container_placeholder" />').insertAfter($container).data('xxx', $container);
|
894 |
$container.stop().css('top', '-=50').css('opacity', '0').animate({
|
896 |
opacity: 1
|
897 |
}, 250);
|
898 |
},
|
899 |
+
_on_alert_hide : function () {
|
900 |
var $holder = $("#popup_container_placeholder"),
|
901 |
$container = $holder.data('xxx');
|
902 |
if ($container) {
|
910 |
$(this).remove();
|
911 |
});
|
912 |
},
|
913 |
+
sendMessage : function (data, object, targetOrigin, transfer) {
|
914 |
if ($.isPlainObject(data)) {
|
915 |
data = JSON.stringify(data);
|
916 |
}
|
918 |
targetOrigin = targetOrigin || '*';
|
919 |
object.postMessage(data, targetOrigin, transfer);
|
920 |
},
|
921 |
+
receiveMessage : function (event, b) {
|
922 |
var target = event.origin || event.originalEvent.origin,
|
923 |
data = event.data || event.originalEvent.data || '';
|
924 |
if (typeof data === 'string' || data instanceof String) {
|
assets/js/global.min.js
CHANGED
@@ -395,7 +395,7 @@ if (typeof window.LP == "undefined") {
|
|
395 |
}
|
396 |
window.location.href = url
|
397 |
}, parseJSON : function (data) {
|
398 |
-
var m = data.match(
|
399 |
try {
|
400 |
if (m) {
|
401 |
data = $.parseJSON(m[1])
|
@@ -408,7 +408,7 @@ if (typeof window.LP == "undefined") {
|
|
408 |
}
|
409 |
return data
|
410 |
}, parseResponse : function (response, type) {
|
411 |
-
var m = response.match(
|
412 |
if (m) {
|
413 |
response = m[1]
|
414 |
}
|
395 |
}
|
396 |
window.location.href = url
|
397 |
}, parseJSON : function (data) {
|
398 |
+
var m = data.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
|
399 |
try {
|
400 |
if (m) {
|
401 |
data = $.parseJSON(m[1])
|
408 |
}
|
409 |
return data
|
410 |
}, parseResponse : function (response, type) {
|
411 |
+
var m = response.match(/<-- LP_AJAX_START -->(.*)<-- LP_AJAX_END -->/);
|
412 |
if (m) {
|
413 |
response = m[1]
|
414 |
}
|
assets/js/jquery.cropit.js
DELETED
@@ -1,1207 +0,0 @@
|
|
1 |
-
/*! cropit - v0.5.1 <https://github.com/scottcheng/cropit> */
|
2 |
-
(function webpackUniversalModuleDefinition(root, factory) {
|
3 |
-
if(typeof exports === 'object' && typeof module === 'object')
|
4 |
-
module.exports = factory(require("jquery"));
|
5 |
-
else if(typeof define === 'function' && define.amd)
|
6 |
-
define(["jquery"], factory);
|
7 |
-
else if(typeof exports === 'object')
|
8 |
-
exports["cropit"] = factory(require("jquery"));
|
9 |
-
else
|
10 |
-
root["cropit"] = factory(root["jQuery"]);
|
11 |
-
})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {
|
12 |
-
return /******/ (function(modules) { // webpackBootstrap
|
13 |
-
/******/ // The module cache
|
14 |
-
/******/ var installedModules = {};
|
15 |
-
|
16 |
-
/******/ // The require function
|
17 |
-
/******/ function __webpack_require__(moduleId) {
|
18 |
-
|
19 |
-
/******/ // Check if module is in cache
|
20 |
-
/******/ if(installedModules[moduleId])
|
21 |
-
/******/ return installedModules[moduleId].exports;
|
22 |
-
|
23 |
-
/******/ // Create a new module (and put it into the cache)
|
24 |
-
/******/ var module = installedModules[moduleId] = {
|
25 |
-
/******/ exports: {},
|
26 |
-
/******/ id: moduleId,
|
27 |
-
/******/ loaded: false
|
28 |
-
/******/ };
|
29 |
-
|
30 |
-
/******/ // Execute the module function
|
31 |
-
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
32 |
-
|
33 |
-
/******/ // Flag the module as loaded
|
34 |
-
/******/ module.loaded = true;
|
35 |
-
|
36 |
-
/******/ // Return the exports of the module
|
37 |
-
/******/ return module.exports;
|
38 |
-
/******/ }
|
39 |
-
|
40 |
-
|
41 |
-
/******/ // expose the modules object (__webpack_modules__)
|
42 |
-
/******/ __webpack_require__.m = modules;
|
43 |
-
|
44 |
-
/******/ // expose the module cache
|
45 |
-
/******/ __webpack_require__.c = installedModules;
|
46 |
-
|
47 |
-
/******/ // __webpack_public_path__
|
48 |
-
/******/ __webpack_require__.p = "";
|
49 |
-
|
50 |
-
/******/ // Load entry module and return exports
|
51 |
-
/******/ return __webpack_require__(0);
|
52 |
-
/******/ })
|
53 |
-
/************************************************************************/
|
54 |
-
/******/ ([
|
55 |
-
/* 0 */
|
56 |
-
/***/ function(module, exports, __webpack_require__) {
|
57 |
-
|
58 |
-
var _slice = Array.prototype.slice;
|
59 |
-
|
60 |
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
61 |
-
|
62 |
-
var _jquery = __webpack_require__(1);
|
63 |
-
|
64 |
-
var _jquery2 = _interopRequireDefault(_jquery);
|
65 |
-
|
66 |
-
var _cropit = __webpack_require__(2);
|
67 |
-
|
68 |
-
var _cropit2 = _interopRequireDefault(_cropit);
|
69 |
-
|
70 |
-
var _constants = __webpack_require__(4);
|
71 |
-
|
72 |
-
var _utils = __webpack_require__(6);
|
73 |
-
|
74 |
-
var applyOnEach = function applyOnEach($el, callback) {
|
75 |
-
return $el.each(function () {
|
76 |
-
var cropit = _jquery2['default'].data(this, _constants.PLUGIN_KEY);
|
77 |
-
|
78 |
-
if (!cropit) {
|
79 |
-
return;
|
80 |
-
}
|
81 |
-
callback(cropit);
|
82 |
-
});
|
83 |
-
};
|
84 |
-
|
85 |
-
var callOnFirst = function callOnFirst($el, method, options) {
|
86 |
-
var cropit = $el.first().data(_constants.PLUGIN_KEY);
|
87 |
-
|
88 |
-
if (!cropit || !_jquery2['default'].isFunction(cropit[method])) {
|
89 |
-
return null;
|
90 |
-
}
|
91 |
-
return cropit[method](options);
|
92 |
-
};
|
93 |
-
|
94 |
-
var methods = {
|
95 |
-
init: function init(options) {
|
96 |
-
return this.each(function () {
|
97 |
-
// Only instantiate once per element
|
98 |
-
if (_jquery2['default'].data(this, _constants.PLUGIN_KEY)) {
|
99 |
-
return;
|
100 |
-
}
|
101 |
-
|
102 |
-
var cropit = new _cropit2['default'](_jquery2['default'], this, options);
|
103 |
-
_jquery2['default'].data(this, _constants.PLUGIN_KEY, cropit);
|
104 |
-
});
|
105 |
-
},
|
106 |
-
|
107 |
-
destroy: function destroy() {
|
108 |
-
return this.each(function () {
|
109 |
-
_jquery2['default'].removeData(this, _constants.PLUGIN_KEY);
|
110 |
-
});
|
111 |
-
},
|
112 |
-
|
113 |
-
isZoomable: function isZoomable() {
|
114 |
-
return callOnFirst(this, 'isZoomable');
|
115 |
-
},
|
116 |
-
|
117 |
-
'export': function _export(options) {
|
118 |
-
return callOnFirst(this, 'getCroppedImageData', options);
|
119 |
-
}
|
120 |
-
};
|
121 |
-
|
122 |
-
var delegate = function delegate($el, fnName) {
|
123 |
-
return applyOnEach($el, function (cropit) {
|
124 |
-
cropit[fnName]();
|
125 |
-
});
|
126 |
-
};
|
127 |
-
|
128 |
-
var prop = function prop($el, name, value) {
|
129 |
-
if ((0, _utils.exists)(value)) {
|
130 |
-
return applyOnEach($el, function (cropit) {
|
131 |
-
cropit[name] = value;
|
132 |
-
});
|
133 |
-
} else {
|
134 |
-
var cropit = $el.first().data(_constants.PLUGIN_KEY);
|
135 |
-
return cropit[name];
|
136 |
-
}
|
137 |
-
};
|
138 |
-
|
139 |
-
_jquery2['default'].fn.cropit = function (method) {
|
140 |
-
if (methods[method]) {
|
141 |
-
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
142 |
-
} else if (['imageState', 'imageSrc', 'offset', 'previewSize', 'imageSize', 'zoom', 'initialZoom', 'exportZoom', 'minZoom', 'maxZoom'].indexOf(method) >= 0) {
|
143 |
-
return prop.apply(undefined, [this].concat(_slice.call(arguments)));
|
144 |
-
} else if (['rotateCW', 'rotateCCW', 'disable', 'reenable'].indexOf(method) >= 0) {
|
145 |
-
return delegate.apply(undefined, [this].concat(_slice.call(arguments)));
|
146 |
-
} else {
|
147 |
-
return methods.init.apply(this, arguments);
|
148 |
-
}
|
149 |
-
};
|
150 |
-
|
151 |
-
/***/ },
|
152 |
-
/* 1 */
|
153 |
-
/***/ function(module, exports) {
|
154 |
-
|
155 |
-
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
|
156 |
-
|
157 |
-
/***/ },
|
158 |
-
/* 2 */
|
159 |
-
/***/ function(module, exports, __webpack_require__) {
|
160 |
-
|
161 |
-
Object.defineProperty(exports, '__esModule', {
|
162 |
-
value: true
|
163 |
-
});
|
164 |
-
|
165 |
-
var _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; }; })();
|
166 |
-
|
167 |
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
168 |
-
|
169 |
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
170 |
-
|
171 |
-
var _jquery = __webpack_require__(1);
|
172 |
-
|
173 |
-
var _jquery2 = _interopRequireDefault(_jquery);
|
174 |
-
|
175 |
-
var _Zoomer = __webpack_require__(3);
|
176 |
-
|
177 |
-
var _Zoomer2 = _interopRequireDefault(_Zoomer);
|
178 |
-
|
179 |
-
var _constants = __webpack_require__(4);
|
180 |
-
|
181 |
-
var _options = __webpack_require__(5);
|
182 |
-
|
183 |
-
var _utils = __webpack_require__(6);
|
184 |
-
|
185 |
-
var Cropit = (function () {
|
186 |
-
function Cropit(jQuery, element, options) {
|
187 |
-
_classCallCheck(this, Cropit);
|
188 |
-
|
189 |
-
this.$el = (0, _jquery2['default'])(element);
|
190 |
-
|
191 |
-
var defaults = (0, _options.loadDefaults)(this.$el);
|
192 |
-
this.options = _jquery2['default'].extend({}, defaults, options);
|
193 |
-
|
194 |
-
this.init();
|
195 |
-
}
|
196 |
-
|
197 |
-
_createClass(Cropit, [{
|
198 |
-
key: 'init',
|
199 |
-
value: function init() {
|
200 |
-
var _this = this;
|
201 |
-
|
202 |
-
this.image = new Image();
|
203 |
-
this.preImage = new Image();
|
204 |
-
this.image.onload = this.onImageLoaded.bind(this);
|
205 |
-
this.preImage.onload = this.onPreImageLoaded.bind(this);
|
206 |
-
this.image.onerror = this.preImage.onerror = function () {
|
207 |
-
_this.onImageError.call(_this, _constants.ERRORS.IMAGE_FAILED_TO_LOAD);
|
208 |
-
};
|
209 |
-
|
210 |
-
this.$preview = this.options.$preview.css('position', 'relative');
|
211 |
-
this.$fileInput = this.options.$fileInput.attr({ accept: 'image/*' });
|
212 |
-
this.$zoomSlider = this.options.$zoomSlider.attr({ min: 0, max: 1, step: 0.01 });
|
213 |
-
|
214 |
-
this.previewSize = {
|
215 |
-
width: this.options.width || this.$preview.innerWidth(),
|
216 |
-
height: this.options.height || this.$preview.innerHeight()
|
217 |
-
};
|
218 |
-
|
219 |
-
this.$image = (0, _jquery2['default'])('<img />').addClass(_constants.CLASS_NAMES.PREVIEW_IMAGE).attr('alt', '').css({
|
220 |
-
transformOrigin: 'top left',
|
221 |
-
webkitTransformOrigin: 'top left',
|
222 |
-
willChange: 'transform'
|
223 |
-
});
|
224 |
-
this.$imageContainer = (0, _jquery2['default'])('<div />').addClass(_constants.CLASS_NAMES.PREVIEW_IMAGE_CONTAINER).css({
|
225 |
-
position: 'absolute',
|
226 |
-
overflow: 'hidden',
|
227 |
-
left: 0,
|
228 |
-
top: 0,
|
229 |
-
width: '100%',
|
230 |
-
height: '100%'
|
231 |
-
}).append(this.$image);
|
232 |
-
this.$preview.append(this.$imageContainer);
|
233 |
-
|
234 |
-
if (this.options.imageBackground) {
|
235 |
-
if (_jquery2['default'].isArray(this.options.imageBackgroundBorderWidth)) {
|
236 |
-
this.bgBorderWidthArray = this.options.imageBackgroundBorderWidth;
|
237 |
-
} else {
|
238 |
-
this.bgBorderWidthArray = [0, 1, 2, 3].map(function () {
|
239 |
-
return _this.options.imageBackgroundBorderWidth;
|
240 |
-
});
|
241 |
-
}
|
242 |
-
|
243 |
-
this.$bg = (0, _jquery2['default'])('<img />').addClass(_constants.CLASS_NAMES.PREVIEW_BACKGROUND).attr('alt', '').css({
|
244 |
-
position: 'relative',
|
245 |
-
left: this.bgBorderWidthArray[3],
|
246 |
-
top: this.bgBorderWidthArray[0],
|
247 |
-
transformOrigin: 'top left',
|
248 |
-
webkitTransformOrigin: 'top left',
|
249 |
-
willChange: 'transform'
|
250 |
-
});
|
251 |
-
this.$bgContainer = (0, _jquery2['default'])('<div />').addClass(_constants.CLASS_NAMES.PREVIEW_BACKGROUND_CONTAINER).css({
|
252 |
-
position: 'absolute',
|
253 |
-
zIndex: 0,
|
254 |
-
top: -this.bgBorderWidthArray[0],
|
255 |
-
right: -this.bgBorderWidthArray[1],
|
256 |
-
bottom: -this.bgBorderWidthArray[2],
|
257 |
-
left: -this.bgBorderWidthArray[3]
|
258 |
-
}).append(this.$bg);
|
259 |
-
if (this.bgBorderWidthArray[0] > 0) {
|
260 |
-
this.$bgContainer.css('overflow', 'hidden');
|
261 |
-
}
|
262 |
-
this.$preview.prepend(this.$bgContainer);
|
263 |
-
}
|
264 |
-
|
265 |
-
this.initialZoom = this.options.initialZoom;
|
266 |
-
|
267 |
-
this.imageLoaded = false;
|
268 |
-
|
269 |
-
this.moveContinue = false;
|
270 |
-
|
271 |
-
this.zoomer = new _Zoomer2['default']();
|
272 |
-
|
273 |
-
if (this.options.allowDragNDrop) {
|
274 |
-
_jquery2['default'].event.props.push('dataTransfer');
|
275 |
-
}
|
276 |
-
|
277 |
-
this.bindListeners();
|
278 |
-
|
279 |
-
if (this.options.imageState && this.options.imageState.src) {
|
280 |
-
this.loadImage(this.options.imageState.src);
|
281 |
-
}
|
282 |
-
}
|
283 |
-
}, {
|
284 |
-
key: 'bindListeners',
|
285 |
-
value: function bindListeners() {
|
286 |
-
this.$fileInput.on('change.cropit', this.onFileChange.bind(this));
|
287 |
-
this.$imageContainer.on(_constants.EVENTS.PREVIEW, this.onPreviewEvent.bind(this));
|
288 |
-
this.$zoomSlider.on(_constants.EVENTS.ZOOM_INPUT, this.onZoomSliderChange.bind(this));
|
289 |
-
|
290 |
-
if (this.options.allowDragNDrop) {
|
291 |
-
this.$imageContainer.on('dragover.cropit dragleave.cropit', this.onDragOver.bind(this));
|
292 |
-
this.$imageContainer.on('drop.cropit', this.onDrop.bind(this));
|
293 |
-
}
|
294 |
-
}
|
295 |
-
}, {
|
296 |
-
key: 'unbindListeners',
|
297 |
-
value: function unbindListeners() {
|
298 |
-
this.$fileInput.off('change.cropit');
|
299 |
-
this.$imageContainer.off(_constants.EVENTS.PREVIEW);
|
300 |
-
this.$imageContainer.off('dragover.cropit dragleave.cropit drop.cropit');
|
301 |
-
this.$zoomSlider.off(_constants.EVENTS.ZOOM_INPUT);
|
302 |
-
}
|
303 |
-
}, {
|
304 |
-
key: 'onFileChange',
|
305 |
-
value: function onFileChange(e) {
|
306 |
-
this.options.onFileChange(e);
|
307 |
-
|
308 |
-
if (this.$fileInput.get(0).files) {
|
309 |
-
this.loadFile(this.$fileInput.get(0).files[0]);
|
310 |
-
}
|
311 |
-
}
|
312 |
-
}, {
|
313 |
-
key: 'loadFile',
|
314 |
-
value: function loadFile(file) {
|
315 |
-
var fileReader = new FileReader();
|
316 |
-
if (file && file.type.match('image')) {
|
317 |
-
fileReader.readAsDataURL(file);
|
318 |
-
fileReader.onload = this.onFileReaderLoaded.bind(this);
|
319 |
-
fileReader.onerror = this.onFileReaderError.bind(this);
|
320 |
-
} else if (file) {
|
321 |
-
this.onFileReaderError();
|
322 |
-
}
|
323 |
-
}
|
324 |
-
}, {
|
325 |
-
key: 'onFileReaderLoaded',
|
326 |
-
value: function onFileReaderLoaded(e) {
|
327 |
-
this.loadImage(e.target.result);
|
328 |
-
}
|
329 |
-
}, {
|
330 |
-
key: 'onFileReaderError',
|
331 |
-
value: function onFileReaderError() {
|
332 |
-
this.options.onFileReaderError();
|
333 |
-
}
|
334 |
-
}, {
|
335 |
-
key: 'onDragOver',
|
336 |
-
value: function onDragOver(e) {
|
337 |
-
e.preventDefault();
|
338 |
-
e.dataTransfer.dropEffect = 'copy';
|
339 |
-
this.$preview.toggleClass(_constants.CLASS_NAMES.DRAG_HOVERED, e.type === 'dragover');
|
340 |
-
}
|
341 |
-
}, {
|
342 |
-
key: 'onDrop',
|
343 |
-
value: function onDrop(e) {
|
344 |
-
var _this2 = this;
|
345 |
-
|
346 |
-
e.preventDefault();
|
347 |
-
e.stopPropagation();
|
348 |
-
|
349 |
-
var files = Array.prototype.slice.call(e.dataTransfer.files, 0);
|
350 |
-
files.some(function (file) {
|
351 |
-
if (!file.type.match('image')) {
|
352 |
-
return false;
|
353 |
-
}
|
354 |
-
|
355 |
-
_this2.loadFile(file);
|
356 |
-
return true;
|
357 |
-
});
|
358 |
-
|
359 |
-
this.$preview.removeClass(_constants.CLASS_NAMES.DRAG_HOVERED);
|
360 |
-
}
|
361 |
-
}, {
|
362 |
-
key: 'loadImage',
|
363 |
-
value: function loadImage(imageSrc) {
|
364 |
-
var _this3 = this;
|
365 |
-
|
366 |
-
if (!imageSrc) {
|
367 |
-
return;
|
368 |
-
}
|
369 |
-
|
370 |
-
this.options.onImageLoading();
|
371 |
-
this.setImageLoadingClass();
|
372 |
-
|
373 |
-
if (imageSrc.indexOf('data') === 0) {
|
374 |
-
this.preImage.src = imageSrc;
|
375 |
-
} else {
|
376 |
-
var xhr = new XMLHttpRequest();
|
377 |
-
xhr.onload = function (e) {
|
378 |
-
if (e.target.status >= 300) {
|
379 |
-
_this3.onImageError.call(_this3, _constants.ERRORS.IMAGE_FAILED_TO_LOAD);
|
380 |
-
return;
|
381 |
-
}
|
382 |
-
|
383 |
-
_this3.loadFile(e.target.response);
|
384 |
-
};
|
385 |
-
xhr.open('GET', imageSrc);
|
386 |
-
xhr.responseType = 'blob';
|
387 |
-
xhr.send();
|
388 |
-
}
|
389 |
-
}
|
390 |
-
}, {
|
391 |
-
key: 'onPreImageLoaded',
|
392 |
-
value: function onPreImageLoaded() {
|
393 |
-
if (this.shouldRejectImage({
|
394 |
-
imageWidth: this.preImage.width,
|
395 |
-
imageHeight: this.preImage.height,
|
396 |
-
previewSize: this.previewSize,
|
397 |
-
maxZoom: this.options.maxZoom,
|
398 |
-
exportZoom: this.options.exportZoom,
|
399 |
-
smallImage: this.options.smallImage
|
400 |
-
})) {
|
401 |
-
this.onImageError(_constants.ERRORS.SMALL_IMAGE);
|
402 |
-
if (this.image.src) {
|
403 |
-
this.setImageLoadedClass();
|
404 |
-
}
|
405 |
-
return;
|
406 |
-
}
|
407 |
-
|
408 |
-
this.image.src = this.preImage.src;
|
409 |
-
}
|
410 |
-
}, {
|
411 |
-
key: 'onImageLoaded',
|
412 |
-
value: function onImageLoaded() {
|
413 |
-
this.rotation = 0;
|
414 |
-
this.setupZoomer(this.options.imageState && this.options.imageState.zoom || this._initialZoom);
|
415 |
-
if (this.options.imageState && this.options.imageState.offset) {
|
416 |
-
this.offset = this.options.imageState.offset;
|
417 |
-
} else {
|
418 |
-
this.centerImage();
|
419 |
-
}
|
420 |
-
|
421 |
-
this.options.imageState = {};
|
422 |
-
|
423 |
-
this.$image.attr('src', this.image.src);
|
424 |
-
if (this.options.imageBackground) {
|
425 |
-
this.$bg.attr('src', this.image.src);
|
426 |
-
}
|
427 |
-
|
428 |
-
this.setImageLoadedClass();
|
429 |
-
|
430 |
-
this.imageLoaded = true;
|
431 |
-
|
432 |
-
this.options.onImageLoaded();
|
433 |
-
}
|
434 |
-
}, {
|
435 |
-
key: 'onImageError',
|
436 |
-
value: function onImageError() {
|
437 |
-
this.options.onImageError.apply(this, arguments);
|
438 |
-
this.removeImageLoadingClass();
|
439 |
-
}
|
440 |
-
}, {
|
441 |
-
key: 'setImageLoadingClass',
|
442 |
-
value: function setImageLoadingClass() {
|
443 |
-
this.$preview.removeClass(_constants.CLASS_NAMES.IMAGE_LOADED).addClass(_constants.CLASS_NAMES.IMAGE_LOADING);
|
444 |
-
}
|
445 |
-
}, {
|
446 |
-
key: 'setImageLoadedClass',
|
447 |
-
value: function setImageLoadedClass() {
|
448 |
-
this.$preview.removeClass(_constants.CLASS_NAMES.IMAGE_LOADING).addClass(_constants.CLASS_NAMES.IMAGE_LOADED);
|
449 |
-
}
|
450 |
-
}, {
|
451 |
-
key: 'removeImageLoadingClass',
|
452 |
-
value: function removeImageLoadingClass() {
|
453 |
-
this.$preview.removeClass(_constants.CLASS_NAMES.IMAGE_LOADING);
|
454 |
-
}
|
455 |
-
}, {
|
456 |
-
key: 'getEventPosition',
|
457 |
-
value: function getEventPosition(e) {
|
458 |
-
if (e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0]) {
|
459 |
-
e = e.originalEvent.touches[0];
|
460 |
-
}
|
461 |
-
if (e.clientX && e.clientY) {
|
462 |
-
return { x: e.clientX, y: e.clientY };
|
463 |
-
}
|
464 |
-
}
|
465 |
-
}, {
|
466 |
-
key: 'onPreviewEvent',
|
467 |
-
value: function onPreviewEvent(e) {
|
468 |
-
if (!this.imageLoaded) {
|
469 |
-
return;
|
470 |
-
}
|
471 |
-
|
472 |
-
this.moveContinue = false;
|
473 |
-
this.$imageContainer.off(_constants.EVENTS.PREVIEW_MOVE);
|
474 |
-
|
475 |
-
if (e.type === 'mousedown' || e.type === 'touchstart') {
|
476 |
-
this.origin = this.getEventPosition(e);
|
477 |
-
this.moveContinue = true;
|
478 |
-
this.$imageContainer.on(_constants.EVENTS.PREVIEW_MOVE, this.onMove.bind(this));
|
479 |
-
} else {
|
480 |
-
(0, _jquery2['default'])(document.body).focus();
|
481 |
-
}
|
482 |
-
|
483 |
-
e.stopPropagation();
|
484 |
-
return false;
|
485 |
-
}
|
486 |
-
}, {
|
487 |
-
key: 'onMove',
|
488 |
-
value: function onMove(e) {
|
489 |
-
var eventPosition = this.getEventPosition(e);
|
490 |
-
|
491 |
-
if (this.moveContinue && eventPosition) {
|
492 |
-
this.offset = {
|
493 |
-
x: this.offset.x + eventPosition.x - this.origin.x,
|
494 |
-
y: this.offset.y + eventPosition.y - this.origin.y
|
495 |
-
};
|
496 |
-
}
|
497 |
-
|
498 |
-
this.origin = eventPosition;
|
499 |
-
|
500 |
-
e.stopPropagation();
|
501 |
-
return false;
|
502 |
-
}
|
503 |
-
}, {
|
504 |
-
key: 'fixOffset',
|
505 |
-
value: function fixOffset(offset) {
|
506 |
-
if (!this.imageLoaded) {
|
507 |
-
return offset;
|
508 |
-
}
|
509 |
-
|
510 |
-
var ret = { x: offset.x, y: offset.y };
|
511 |
-
|
512 |
-
if (!this.options.freeMove) {
|
513 |
-
if (this.imageWidth * this.zoom >= this.previewSize.width) {
|
514 |
-
ret.x = Math.min(0, Math.max(ret.x, this.previewSize.width - this.imageWidth * this.zoom));
|
515 |
-
} else {
|
516 |
-
ret.x = Math.max(0, Math.min(ret.x, this.previewSize.width - this.imageWidth * this.zoom));
|
517 |
-
}
|
518 |
-
|
519 |
-
if (this.imageHeight * this.zoom >= this.previewSize.height) {
|
520 |
-
ret.y = Math.min(0, Math.max(ret.y, this.previewSize.height - this.imageHeight * this.zoom));
|
521 |
-
} else {
|
522 |
-
ret.y = Math.max(0, Math.min(ret.y, this.previewSize.height - this.imageHeight * this.zoom));
|
523 |
-
}
|
524 |
-
}
|
525 |
-
|
526 |
-
ret.x = (0, _utils.round)(ret.x);
|
527 |
-
ret.y = (0, _utils.round)(ret.y);
|
528 |
-
|
529 |
-
return ret;
|
530 |
-
}
|
531 |
-
}, {
|
532 |
-
key: 'centerImage',
|
533 |
-
value: function centerImage() {
|
534 |
-
if (!this.image.width || !this.image.height || !this.zoom) {
|
535 |
-
return;
|
536 |
-
}
|
537 |
-
|
538 |
-
this.offset = {
|
539 |
-
x: (this.previewSize.width - this.imageWidth * this.zoom) / 2,
|
540 |
-
y: (this.previewSize.height - this.imageHeight * this.zoom) / 2
|
541 |
-
};
|
542 |
-
}
|
543 |
-
}, {
|
544 |
-
key: 'onZoomSliderChange',
|
545 |
-
value: function onZoomSliderChange() {
|
546 |
-
if (!this.imageLoaded) {
|
547 |
-
return;
|
548 |
-
}
|
549 |
-
|
550 |
-
this.zoomSliderPos = Number(this.$zoomSlider.val());
|
551 |
-
var newZoom = this.zoomer.getZoom(this.zoomSliderPos);
|
552 |
-
if (newZoom === this.zoom) {
|
553 |
-
return;
|
554 |
-
}
|
555 |
-
this.zoom = newZoom;
|
556 |
-
}
|
557 |
-
}, {
|
558 |
-
key: 'enableZoomSlider',
|
559 |
-
value: function enableZoomSlider() {
|
560 |
-
this.$zoomSlider.removeAttr('disabled');
|
561 |
-
this.options.onZoomEnabled();
|
562 |
-
}
|
563 |
-
}, {
|
564 |
-
key: 'disableZoomSlider',
|
565 |
-
value: function disableZoomSlider() {
|
566 |
-
this.$zoomSlider.attr('disabled', true);
|
567 |
-
this.options.onZoomDisabled();
|
568 |
-
}
|
569 |
-
}, {
|
570 |
-
key: 'setupZoomer',
|
571 |
-
value: function setupZoomer(zoom) {
|
572 |
-
this.zoomer.setup({
|
573 |
-
imageSize: this.imageSize,
|
574 |
-
previewSize: this.previewSize,
|
575 |
-
exportZoom: this.options.exportZoom,
|
576 |
-
maxZoom: this.options.maxZoom,
|
577 |
-
minZoom: this.options.minZoom,
|
578 |
-
smallImage: this.options.smallImage
|
579 |
-
});
|
580 |
-
this.zoom = (0, _utils.exists)(zoom) ? zoom : this._zoom;
|
581 |
-
|
582 |
-
if (this.isZoomable()) {
|
583 |
-
this.enableZoomSlider();
|
584 |
-
} else {
|
585 |
-
this.disableZoomSlider();
|
586 |
-
}
|
587 |
-
}
|
588 |
-
}, {
|
589 |
-
key: 'fixZoom',
|
590 |
-
value: function fixZoom(zoom) {
|
591 |
-
return this.zoomer.fixZoom(zoom);
|
592 |
-
}
|
593 |
-
}, {
|
594 |
-
key: 'isZoomable',
|
595 |
-
value: function isZoomable() {
|
596 |
-
return this.zoomer.isZoomable();
|
597 |
-
}
|
598 |
-
}, {
|
599 |
-
key: 'renderImage',
|
600 |
-
value: function renderImage() {
|
601 |
-
var transformation = '\n translate(' + this.rotatedOffset.x + 'px, ' + this.rotatedOffset.y + 'px)\n scale(' + this.zoom + ')\n rotate(' + this.rotation + 'deg)';
|
602 |
-
|
603 |
-
this.$image.css({
|
604 |
-
transform: transformation,
|
605 |
-
webkitTransform: transformation
|
606 |
-
});
|
607 |
-
if (this.options.imageBackground) {
|
608 |
-
this.$bg.css({
|
609 |
-
transform: transformation,
|
610 |
-
webkitTransform: transformation
|
611 |
-
});
|
612 |
-
}
|
613 |
-
}
|
614 |
-
}, {
|
615 |
-
key: 'rotateCW',
|
616 |
-
value: function rotateCW() {
|
617 |
-
if (this.shouldRejectImage({
|
618 |
-
imageWidth: this.image.height,
|
619 |
-
imageHeight: this.image.width,
|
620 |
-
previewSize: this.previewSize,
|
621 |
-
maxZoom: this.options.maxZoom,
|
622 |
-
exportZoom: this.options.exportZoom,
|
623 |
-
smallImage: this.options.smallImage
|
624 |
-
})) {
|
625 |
-
this.rotation = (this.rotation + 180) % 360;
|
626 |
-
} else {
|
627 |
-
this.rotation = (this.rotation + 90) % 360;
|
628 |
-
}
|
629 |
-
}
|
630 |
-
}, {
|
631 |
-
key: 'rotateCCW',
|
632 |
-
value: function rotateCCW() {
|
633 |
-
if (this.shouldRejectImage({
|
634 |
-
imageWidth: this.image.height,
|
635 |
-
imageHeight: this.image.width,
|
636 |
-
previewSize: this.previewSize,
|
637 |
-
maxZoom: this.options.maxZoom,
|
638 |
-
exportZoom: this.options.exportZoom,
|
639 |
-
smallImage: this.options.smallImage
|
640 |
-
})) {
|
641 |
-
this.rotation = (this.rotation + 180) % 360;
|
642 |
-
} else {
|
643 |
-
this.rotation = (this.rotation + 270) % 360;
|
644 |
-
}
|
645 |
-
}
|
646 |
-
}, {
|
647 |
-
key: 'shouldRejectImage',
|
648 |
-
value: function shouldRejectImage(_ref) {
|
649 |
-
var imageWidth = _ref.imageWidth;
|
650 |
-
var imageHeight = _ref.imageHeight;
|
651 |
-
var previewSize = _ref.previewSize;
|
652 |
-
var maxZoom = _ref.maxZoom;
|
653 |
-
var exportZoom = _ref.exportZoom;
|
654 |
-
var smallImage = _ref.smallImage;
|
655 |
-
|
656 |
-
if (smallImage !== 'reject') {
|
657 |
-
return false;
|
658 |
-
}
|
659 |
-
|
660 |
-
return imageWidth * maxZoom < previewSize.width * exportZoom || imageHeight * maxZoom < previewSize.height * exportZoom;
|
661 |
-
}
|
662 |
-
}, {
|
663 |
-
key: 'getCroppedImageData',
|
664 |
-
value: function getCroppedImageData(exportOptions) {
|
665 |
-
if (!this.image.src) {
|
666 |
-
return;
|
667 |
-
}
|
668 |
-
|
669 |
-
var exportDefaults = {
|
670 |
-
type: 'image/png',
|
671 |
-
quality: 0.75,
|
672 |
-
originalSize: false,
|
673 |
-
fillBg: '#fff'
|
674 |
-
};
|
675 |
-
exportOptions = _jquery2['default'].extend({}, exportDefaults, exportOptions);
|
676 |
-
|
677 |
-
var exportZoom = exportOptions.originalSize ? 1 / this.zoom : this.options.exportZoom;
|
678 |
-
|
679 |
-
var zoomedSize = {
|
680 |
-
width: this.zoom * exportZoom * this.image.width,
|
681 |
-
height: this.zoom * exportZoom * this.image.height
|
682 |
-
};
|
683 |
-
|
684 |
-
var canvas = (0, _jquery2['default'])('<canvas />').attr({
|
685 |
-
width: this.previewSize.width * exportZoom,
|
686 |
-
height: this.previewSize.height * exportZoom
|
687 |
-
}).get(0);
|
688 |
-
var canvasContext = canvas.getContext('2d');
|
689 |
-
|
690 |
-
if (exportOptions.type === 'image/jpeg') {
|
691 |
-
canvasContext.fillStyle = exportOptions.fillBg;
|
692 |
-
canvasContext.fillRect(0, 0, canvas.width, canvas.height);
|
693 |
-
}
|
694 |
-
|
695 |
-
canvasContext.translate(this.rotatedOffset.x * exportZoom, this.rotatedOffset.y * exportZoom);
|
696 |
-
canvasContext.rotate(this.rotation * Math.PI / 180);
|
697 |
-
canvasContext.drawImage(this.image, 0, 0, zoomedSize.width, zoomedSize.height);
|
698 |
-
|
699 |
-
return canvas.toDataURL(exportOptions.type, exportOptions.quality);
|
700 |
-
}
|
701 |
-
}, {
|
702 |
-
key: 'disable',
|
703 |
-
value: function disable() {
|
704 |
-
this.unbindListeners();
|
705 |
-
this.disableZoomSlider();
|
706 |
-
this.$el.addClass(_constants.CLASS_NAMES.DISABLED);
|
707 |
-
}
|
708 |
-
}, {
|
709 |
-
key: 'reenable',
|
710 |
-
value: function reenable() {
|
711 |
-
this.bindListeners();
|
712 |
-
this.enableZoomSlider();
|
713 |
-
this.$el.removeClass(_constants.CLASS_NAMES.DISABLED);
|
714 |
-
}
|
715 |
-
}, {
|
716 |
-
key: '$',
|
717 |
-
value: function $(selector) {
|
718 |
-
if (!this.$el) {
|
719 |
-
return null;
|
720 |
-
}
|
721 |
-
return this.$el.find(selector);
|
722 |
-
}
|
723 |
-
}, {
|
724 |
-
key: 'offset',
|
725 |
-
set: function (position) {
|
726 |
-
if (!position || !(0, _utils.exists)(position.x) || !(0, _utils.exists)(position.y)) {
|
727 |
-
return;
|
728 |
-
}
|
729 |
-
|
730 |
-
this._offset = this.fixOffset(position);
|
731 |
-
this.renderImage();
|
732 |
-
|
733 |
-
this.options.onOffsetChange(position);
|
734 |
-
},
|
735 |
-
get: function () {
|
736 |
-
return this._offset;
|
737 |
-
}
|
738 |
-
}, {
|
739 |
-
key: 'zoom',
|
740 |
-
set: function (newZoom) {
|
741 |
-
newZoom = this.fixZoom(newZoom);
|
742 |
-
|
743 |
-
if (this.imageLoaded) {
|
744 |
-
var oldZoom = this.zoom;
|
745 |
-
|
746 |
-
var newX = this.previewSize.width / 2 - (this.previewSize.width / 2 - this.offset.x) * newZoom / oldZoom;
|
747 |
-
var newY = this.previewSize.height / 2 - (this.previewSize.height / 2 - this.offset.y) * newZoom / oldZoom;
|
748 |
-
|
749 |
-
this._zoom = newZoom;
|
750 |
-
this.offset = { x: newX, y: newY }; // Triggers renderImage()
|
751 |
-
} else {
|
752 |
-
this._zoom = newZoom;
|
753 |
-
}
|
754 |
-
|
755 |
-
this.zoomSliderPos = this.zoomer.getSliderPos(this.zoom);
|
756 |
-
this.$zoomSlider.val(this.zoomSliderPos);
|
757 |
-
|
758 |
-
this.options.onZoomChange(newZoom);
|
759 |
-
},
|
760 |
-
get: function () {
|
761 |
-
return this._zoom;
|
762 |
-
}
|
763 |
-
}, {
|
764 |
-
key: 'rotatedOffset',
|
765 |
-
get: function () {
|
766 |
-
return {
|
767 |
-
x: this.offset.x + (this.rotation === 90 ? this.image.height * this.zoom : 0) + (this.rotation === 180 ? this.image.width * this.zoom : 0),
|
768 |
-
y: this.offset.y + (this.rotation === 180 ? this.image.height * this.zoom : 0) + (this.rotation === 270 ? this.image.width * this.zoom : 0)
|
769 |
-
};
|
770 |
-
}
|
771 |
-
}, {
|
772 |
-
key: 'rotation',
|
773 |
-
set: function (newRotation) {
|
774 |
-
this._rotation = newRotation;
|
775 |
-
|
776 |
-
if (this.imageLoaded) {
|
777 |
-
// Change in image size may lead to change in zoom range
|
778 |
-
this.setupZoomer();
|
779 |
-
}
|
780 |
-
},
|
781 |
-
get: function () {
|
782 |
-
return this._rotation;
|
783 |
-
}
|
784 |
-
}, {
|
785 |
-
key: 'imageState',
|
786 |
-
get: function () {
|
787 |
-
return {
|
788 |
-
src: this.image.src,
|
789 |
-
offset: this.offset,
|
790 |
-
zoom: this.zoom
|
791 |
-
};
|
792 |
-
}
|
793 |
-
}, {
|
794 |
-
key: 'imageSrc',
|
795 |
-
get: function () {
|
796 |
-
return this.image.src;
|
797 |
-
},
|
798 |
-
set: function (imageSrc) {
|
799 |
-
this.loadImage(imageSrc);
|
800 |
-
}
|
801 |
-
}, {
|
802 |
-
key: 'imageWidth',
|
803 |
-
get: function () {
|
804 |
-
return this.rotation % 180 === 0 ? this.image.width : this.image.height;
|
805 |
-
}
|
806 |
-
}, {
|
807 |
-
key: 'imageHeight',
|
808 |
-
get: function () {
|
809 |
-
return this.rotation % 180 === 0 ? this.image.height : this.image.width;
|
810 |
-
}
|
811 |
-
}, {
|
812 |
-
key: 'imageSize',
|
813 |
-
get: function () {
|
814 |
-
return {
|
815 |
-
width: this.imageWidth,
|
816 |
-
height: this.imageHeight
|
817 |
-
};
|
818 |
-
}
|
819 |
-
}, {
|
820 |
-
key: 'initialZoom',
|
821 |
-
get: function () {
|
822 |
-
return this.options.initialZoom;
|
823 |
-
},
|
824 |
-
set: function (initialZoomOption) {
|
825 |
-
this.options.initialZoom = initialZoomOption;
|
826 |
-
if (initialZoomOption === 'min') {
|
827 |
-
this._initialZoom = 0; // Will be fixed when image loads
|
828 |
-
} else if (initialZoomOption === 'image') {
|
829 |
-
this._initialZoom = 1;
|
830 |
-
} else {
|
831 |
-
this._initialZoom = 0;
|
832 |
-
}
|
833 |
-
}
|
834 |
-
}, {
|
835 |
-
key: 'exportZoom',
|
836 |
-
get: function () {
|
837 |
-
return this.options.exportZoom;
|
838 |
-
},
|
839 |
-
set: function (exportZoom) {
|
840 |
-
this.options.exportZoom = exportZoom;
|
841 |
-
this.setupZoomer();
|
842 |
-
}
|
843 |
-
}, {
|
844 |
-
key: 'minZoom',
|
845 |
-
get: function () {
|
846 |
-
return this.options.minZoom;
|
847 |
-
},
|
848 |
-
set: function (minZoom) {
|
849 |
-
this.options.minZoom = minZoom;
|
850 |
-
this.setupZoomer();
|
851 |
-
}
|
852 |
-
}, {
|
853 |
-
key: 'maxZoom',
|
854 |
-
get: function () {
|
855 |
-
return this.options.maxZoom;
|
856 |
-
},
|
857 |
-
set: function (maxZoom) {
|
858 |
-
this.options.maxZoom = maxZoom;
|
859 |
-
this.setupZoomer();
|
860 |
-
}
|
861 |
-
}, {
|
862 |
-
key: 'previewSize',
|
863 |
-
get: function () {
|
864 |
-
return this._previewSize;
|
865 |
-
},
|
866 |
-
set: function (size) {
|
867 |
-
if (!size || size.width <= 0 || size.height <= 0) {
|
868 |
-
return;
|
869 |
-
}
|
870 |
-
|
871 |
-
this._previewSize = {
|
872 |
-
width: size.width,
|
873 |
-
height: size.height
|
874 |
-
};
|
875 |
-
this.$preview.innerWidth(this.previewSize.width).innerHeight(this.previewSize.height);
|
876 |
-
|
877 |
-
if (this.imageLoaded) {
|
878 |
-
this.setupZoomer();
|
879 |
-
}
|
880 |
-
}
|
881 |
-
}]);
|
882 |
-
|
883 |
-
return Cropit;
|
884 |
-
})();
|
885 |
-
|
886 |
-
exports['default'] = Cropit;
|
887 |
-
module.exports = exports['default'];
|
888 |
-
|
889 |
-
/***/ },
|
890 |
-
/* 3 */
|
891 |
-
/***/ function(module, exports) {
|
892 |
-
|
893 |
-
Object.defineProperty(exports, '__esModule', {
|
894 |
-
value: true
|
895 |
-
});
|
896 |
-
|
897 |
-
var _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; }; })();
|
898 |
-
|
899 |
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
900 |
-
|
901 |
-
var Zoomer = (function () {
|
902 |
-
function Zoomer() {
|
903 |
-
_classCallCheck(this, Zoomer);
|
904 |
-
|
905 |
-
this.minZoom = this.maxZoom = 1;
|
906 |
-
}
|
907 |
-
|
908 |
-
_createClass(Zoomer, [{
|
909 |
-
key: 'setup',
|
910 |
-
value: function setup(_ref) {
|
911 |
-
var imageSize = _ref.imageSize;
|
912 |
-
var previewSize = _ref.previewSize;
|
913 |
-
var exportZoom = _ref.exportZoom;
|
914 |
-
var maxZoom = _ref.maxZoom;
|
915 |
-
var minZoom = _ref.minZoom;
|
916 |
-
var smallImage = _ref.smallImage;
|
917 |
-
|
918 |
-
var widthRatio = previewSize.width / imageSize.width;
|
919 |
-
var heightRatio = previewSize.height / imageSize.height;
|
920 |
-
|
921 |
-
if (minZoom === 'fit') {
|
922 |
-
this.minZoom = Math.min(widthRatio, heightRatio);
|
923 |
-
} else {
|
924 |
-
this.minZoom = Math.max(widthRatio, heightRatio);
|
925 |
-
}
|
926 |
-
|
927 |
-
if (smallImage === 'allow') {
|
928 |
-
this.minZoom = Math.min(this.minZoom, 1);
|
929 |
-
}
|
930 |
-
|
931 |
-
this.maxZoom = Math.max(this.minZoom, maxZoom / exportZoom);
|
932 |
-
}
|
933 |
-
}, {
|
934 |
-
key: 'getZoom',
|
935 |
-
value: function getZoom(sliderPos) {
|
936 |
-
if (!this.minZoom || !this.maxZoom) {
|
937 |
-
return null;
|
938 |
-
}
|
939 |
-
|
940 |
-
return sliderPos * (this.maxZoom - this.minZoom) + this.minZoom;
|
941 |
-
}
|
942 |
-
}, {
|
943 |
-
key: 'getSliderPos',
|
944 |
-
value: function getSliderPos(zoom) {
|
945 |
-
if (!this.minZoom || !this.maxZoom) {
|
946 |
-
return null;
|
947 |
-
}
|
948 |
-
|
949 |
-
if (this.minZoom === this.maxZoom) {
|
950 |
-
return 0;
|
951 |
-
} else {
|
952 |
-
return (zoom - this.minZoom) / (this.maxZoom - this.minZoom);
|
953 |
-
}
|
954 |
-
}
|
955 |
-
}, {
|
956 |
-
key: 'isZoomable',
|
957 |
-
value: function isZoomable() {
|
958 |
-
if (!this.minZoom || !this.maxZoom) {
|
959 |
-
return null;
|
960 |
-
}
|
961 |
-
|
962 |
-
return this.minZoom !== this.maxZoom;
|
963 |
-
}
|
964 |
-
}, {
|
965 |
-
key: 'fixZoom',
|
966 |
-
value: function fixZoom(zoom) {
|
967 |
-
return Math.max(this.minZoom, Math.min(this.maxZoom, zoom));
|
968 |
-
}
|
969 |
-
}]);
|
970 |
-
|
971 |
-
return Zoomer;
|
972 |
-
})();
|
973 |
-
|
974 |
-
exports['default'] = Zoomer;
|
975 |
-
module.exports = exports['default'];
|
976 |
-
|
977 |
-
/***/ },
|
978 |
-
/* 4 */
|
979 |
-
/***/ function(module, exports) {
|
980 |
-
|
981 |
-
Object.defineProperty(exports, '__esModule', {
|
982 |
-
value: true
|
983 |
-
});
|
984 |
-
var PLUGIN_KEY = 'cropit';
|
985 |
-
|
986 |
-
exports.PLUGIN_KEY = PLUGIN_KEY;
|
987 |
-
var CLASS_NAMES = {
|
988 |
-
PREVIEW: 'cropit-preview',
|
989 |
-
PREVIEW_IMAGE_CONTAINER: 'cropit-preview-image-container',
|
990 |
-
PREVIEW_IMAGE: 'cropit-preview-image',
|
991 |
-
PREVIEW_BACKGROUND_CONTAINER: 'cropit-preview-background-container',
|
992 |
-
PREVIEW_BACKGROUND: 'cropit-preview-background',
|
993 |
-
FILE_INPUT: 'cropit-image-input',
|
994 |
-
ZOOM_SLIDER: 'cropit-image-zoom-input',
|
995 |
-
|
996 |
-
DRAG_HOVERED: 'cropit-drag-hovered',
|
997 |
-
IMAGE_LOADING: 'cropit-image-loading',
|
998 |
-
IMAGE_LOADED: 'cropit-image-loaded',
|
999 |
-
DISABLED: 'cropit-disabled'
|
1000 |
-
};
|
1001 |
-
|
1002 |
-
exports.CLASS_NAMES = CLASS_NAMES;
|
1003 |
-
var ERRORS = {
|
1004 |
-
IMAGE_FAILED_TO_LOAD: { code: 0, message: 'Image failed to load.' },
|
1005 |
-
SMALL_IMAGE: { code: 1, message: 'Image is too small.' }
|
1006 |
-
};
|
1007 |
-
|
1008 |
-
exports.ERRORS = ERRORS;
|
1009 |
-
var eventName = function eventName(events) {
|
1010 |
-
return events.map(function (e) {
|
1011 |
-
return '' + e + '.cropit';
|
1012 |
-
}).join(' ');
|
1013 |
-
};
|
1014 |
-
var EVENTS = {
|
1015 |
-
PREVIEW: eventName(['mousedown', 'mouseup', 'mouseleave', 'touchstart', 'touchend', 'touchcancel', 'touchleave']),
|
1016 |
-
PREVIEW_MOVE: eventName(['mousemove', 'touchmove']),
|
1017 |
-
ZOOM_INPUT: eventName(['mousemove', 'touchmove', 'change'])
|
1018 |
-
};
|
1019 |
-
exports.EVENTS = EVENTS;
|
1020 |
-
|
1021 |
-
/***/ },
|
1022 |
-
/* 5 */
|
1023 |
-
/***/ function(module, exports, __webpack_require__) {
|
1024 |
-
|
1025 |
-
Object.defineProperty(exports, '__esModule', {
|
1026 |
-
value: true
|
1027 |
-
});
|
1028 |
-
|
1029 |
-
var _constants = __webpack_require__(4);
|
1030 |
-
|
1031 |
-
var options = {
|
1032 |
-
elements: [{
|
1033 |
-
name: '$preview',
|
1034 |
-
description: 'The HTML element that displays image preview.',
|
1035 |
-
defaultSelector: '.' + _constants.CLASS_NAMES.PREVIEW
|
1036 |
-
}, {
|
1037 |
-
name: '$fileInput',
|
1038 |
-
description: 'File input element.',
|
1039 |
-
defaultSelector: 'input.' + _constants.CLASS_NAMES.FILE_INPUT
|
1040 |
-
}, {
|
1041 |
-
name: '$zoomSlider',
|
1042 |
-
description: 'Range input element that controls image zoom.',
|
1043 |
-
defaultSelector: 'input.' + _constants.CLASS_NAMES.ZOOM_SLIDER
|
1044 |
-
}].map(function (o) {
|
1045 |
-
o.type = 'jQuery element';
|
1046 |
-
o['default'] = '$imageCropper.find(\'' + o.defaultSelector + '\')';
|
1047 |
-
return o;
|
1048 |
-
}),
|
1049 |
-
|
1050 |
-
values: [{
|
1051 |
-
name: 'width',
|
1052 |
-
type: 'number',
|
1053 |
-
description: 'Width of image preview in pixels. If set, it will override the CSS property.',
|
1054 |
-
'default': null
|
1055 |
-
}, {
|
1056 |
-
name: 'height',
|
1057 |
-
type: 'number',
|
1058 |
-
description: 'Height of image preview in pixels. If set, it will override the CSS property.',
|
1059 |
-
'default': null
|
1060 |
-
}, {
|
1061 |
-
name: 'imageBackground',
|
1062 |
-
type: 'boolean',
|
1063 |
-
description: 'Whether or not to display the background image beyond the preview area.',
|
1064 |
-
'default': false
|
1065 |
-
}, {
|
1066 |
-
name: 'imageBackgroundBorderWidth',
|
1067 |
-
type: 'array or number',
|
1068 |
-
description: 'Width of background image border in pixels.\n The four array elements specify the width of background image width on the top, right, bottom, left side respectively.\n The background image beyond the width will be hidden.\n If specified as a number, border with uniform width on all sides will be applied.',
|
1069 |
-
'default': [0, 0, 0, 0]
|
1070 |
-
}, {
|
1071 |
-
name: 'exportZoom',
|
1072 |
-
type: 'number',
|
1073 |
-
description: 'The ratio between the desired image size to export and the preview size.\n For example, if the preview size is `300px * 200px`, and `exportZoom = 2`, then\n the exported image size will be `600px * 400px`.\n This also affects the maximum zoom level, since the exported image cannot be zoomed to larger than its original size.',
|
1074 |
-
'default': 1
|
1075 |
-
}, {
|
1076 |
-
name: 'allowDragNDrop',
|
1077 |
-
type: 'boolean',
|
1078 |
-
description: 'When set to true, you can load an image by dragging it from local file browser onto the preview area.',
|
1079 |
-
'default': true
|
1080 |
-
}, {
|
1081 |
-
name: 'minZoom',
|
1082 |
-
type: 'string',
|
1083 |
-
description: 'This options decides the minimal zoom level of the image.\n If set to `\'fill\'`, the image has to fill the preview area, i.e. both width and height must not go smaller than the preview area.\n If set to `\'fit\'`, the image can shrink further to fit the preview area, i.e. at least one of its edges must not go smaller than the preview area.',
|
1084 |
-
'default': 'fill'
|
1085 |
-
}, {
|
1086 |
-
name: 'maxZoom',
|
1087 |
-
type: 'number',
|
1088 |
-
description: 'Determines how big the image can be zoomed. E.g. if set to 1.5, the image can be zoomed to 150% of its original size.',
|
1089 |
-
'default': 1
|
1090 |
-
}, {
|
1091 |
-
name: 'initialZoom',
|
1092 |
-
type: 'string',
|
1093 |
-
description: 'Determines the zoom when an image is loaded.\n When set to `\'min\'`, image is zoomed to the smallest when loaded.\n When set to `\'image\'`, image is zoomed to 100% when loaded.',
|
1094 |
-
'default': 'min'
|
1095 |
-
}, {
|
1096 |
-
name: 'freeMove',
|
1097 |
-
type: 'boolean',
|
1098 |
-
description: 'When set to true, you can freely move the image instead of being bound to the container borders',
|
1099 |
-
'default': false
|
1100 |
-
}, {
|
1101 |
-
name: 'smallImage',
|
1102 |
-
type: 'string',
|
1103 |
-
description: 'When set to `\'reject\'`, `onImageError` would be called when cropit loads an image that is smaller than the container.\n When set to `\'allow\'`, images smaller than the container can be zoomed down to its original size, overiding `minZoom` option.\n When set to `\'stretch\'`, the minimum zoom of small images would follow `minZoom` option.',
|
1104 |
-
'default': 'reject'
|
1105 |
-
}],
|
1106 |
-
|
1107 |
-
callbacks: [{
|
1108 |
-
name: 'onFileChange',
|
1109 |
-
description: 'Called when user selects a file in the select file input.',
|
1110 |
-
params: [{
|
1111 |
-
name: 'event',
|
1112 |
-
type: 'object',
|
1113 |
-
description: 'File change event object'
|
1114 |
-
}]
|
1115 |
-
}, {
|
1116 |
-
name: 'onFileReaderError',
|
1117 |
-
description: 'Called when `FileReader` encounters an error while loading the image file.'
|
1118 |
-
}, {
|
1119 |
-
name: 'onImageLoading',
|
1120 |
-
description: 'Called when image starts to be loaded.'
|
1121 |
-
}, {
|
1122 |
-
name: 'onImageLoaded',
|
1123 |
-
description: 'Called when image is loaded.'
|
1124 |
-
}, {
|
1125 |
-
name: 'onImageError',
|
1126 |
-
description: 'Called when image cannot be loaded.',
|
1127 |
-
params: [{
|
1128 |
-
name: 'error',
|
1129 |
-
type: 'object',
|
1130 |
-
description: 'Error object.'
|
1131 |
-
}, {
|
1132 |
-
name: 'error.code',
|
1133 |
-
type: 'number',
|
1134 |
-
description: 'Error code. `0` means generic image loading failure. `1` means image is too small.'
|
1135 |
-
}, {
|
1136 |
-
name: 'error.message',
|
1137 |
-
type: 'string',
|
1138 |
-
description: 'A message explaining the error.'
|
1139 |
-
}]
|
1140 |
-
}, {
|
1141 |
-
name: 'onZoomEnabled',
|
1142 |
-
description: 'Called when image the zoom slider is enabled.'
|
1143 |
-
}, {
|
1144 |
-
name: 'onZoomDisabled',
|
1145 |
-
description: 'Called when image the zoom slider is disabled.'
|
1146 |
-
}, {
|
1147 |
-
name: 'onZoomChange',
|
1148 |
-
description: 'Called when zoom changes.',
|
1149 |
-
params: [{
|
1150 |
-
name: 'zoom',
|
1151 |
-
type: 'number',
|
1152 |
-
description: 'New zoom.'
|
1153 |
-
}]
|
1154 |
-
}, {
|
1155 |
-
name: 'onOffsetChange',
|
1156 |
-
description: 'Called when image offset changes.',
|
1157 |
-
params: [{
|
1158 |
-
name: 'offset',
|
1159 |
-
type: 'object',
|
1160 |
-
description: 'New offset, with `x` and `y` values.'
|
1161 |
-
}]
|
1162 |
-
}].map(function (o) {
|
1163 |
-
o.type = 'function';return o;
|
1164 |
-
})
|
1165 |
-
};
|
1166 |
-
|
1167 |
-
var loadDefaults = function loadDefaults($el) {
|
1168 |
-
var defaults = {};
|
1169 |
-
if ($el) {
|
1170 |
-
options.elements.forEach(function (o) {
|
1171 |
-
defaults[o.name] = $el.find(o.defaultSelector);
|
1172 |
-
});
|
1173 |
-
}
|
1174 |
-
options.values.forEach(function (o) {
|
1175 |
-
defaults[o.name] = o['default'];
|
1176 |
-
});
|
1177 |
-
options.callbacks.forEach(function (o) {
|
1178 |
-
defaults[o.name] = function () {};
|
1179 |
-
});
|
1180 |
-
|
1181 |
-
return defaults;
|
1182 |
-
};
|
1183 |
-
|
1184 |
-
exports.loadDefaults = loadDefaults;
|
1185 |
-
exports['default'] = options;
|
1186 |
-
|
1187 |
-
/***/ },
|
1188 |
-
/* 6 */
|
1189 |
-
/***/ function(module, exports) {
|
1190 |
-
|
1191 |
-
Object.defineProperty(exports, '__esModule', {
|
1192 |
-
value: true
|
1193 |
-
});
|
1194 |
-
var exists = function exists(v) {
|
1195 |
-
return typeof v !== 'undefined';
|
1196 |
-
};
|
1197 |
-
|
1198 |
-
exports.exists = exists;
|
1199 |
-
var round = function round(x) {
|
1200 |
-
return +(Math.round(x * 100) + 'e-2');
|
1201 |
-
};
|
1202 |
-
exports.round = round;
|
1203 |
-
|
1204 |
-
/***/ }
|
1205 |
-
/******/ ])
|
1206 |
-
});
|
1207 |
-
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/jquery.mb-comingsoon.js
DELETED
@@ -1,346 +0,0 @@
|
|
1 |
-
/**************************************************************************
|
2 |
-
*------------------------ COMINGSOON COUNTER 1.1 ------------------------
|
3 |
-
* ========================================================================
|
4 |
-
* Copyright 2014 Bruno Milgiaretti http://www.sisteminterattivi.org
|
5 |
-
* Licensed under MIT http://opensource.org/licenses/MIT
|
6 |
-
* ========================================================================
|
7 |
-
Usage:
|
8 |
-
Constructor:
|
9 |
-
$(selector).mbComingsoon(expiryDate Date or String) Expiry date of counter
|
10 |
-
$(selector).mbComingsoon(options plain Object) options: {
|
11 |
-
expiryDate: Date, //Expiry Date required
|
12 |
-
interval: Number, //Update interval in milliseconds (default = 1000))
|
13 |
-
localization: {
|
14 |
-
days: "days", //Localize labels of counter
|
15 |
-
hours: "hours",
|
16 |
-
minutes: "minutes",
|
17 |
-
seconds: "seconds"
|
18 |
-
}
|
19 |
-
callBack: Function //Function executed on expiry or if espired
|
20 |
-
}
|
21 |
-
Methds:
|
22 |
-
.mbComingSoon('start') // start counter
|
23 |
-
.mbComingSoon('stop') // stop counter
|
24 |
-
.mbComingSoon(options) // change options
|
25 |
-
|
26 |
-
Note: Max time that the counter can display is 999 days 23h 59' 59". If time is greater hours, minutes and seconds will be displayed
|
27 |
-
correctly, but days will be 999 until decrease under this quota.
|
28 |
-
*/
|
29 |
-
|
30 |
-
(function ($) {
|
31 |
-
// Class Definition
|
32 |
-
var MbComingsoon;
|
33 |
-
MbComingsoon = function (date, element, localization, speed, callBack, gmt, showText) {
|
34 |
-
this.$el = $(element);
|
35 |
-
this.gmt = gmt;
|
36 |
-
this.showText = showText;
|
37 |
-
this.end = date;
|
38 |
-
this.active = false;
|
39 |
-
this.interval = 1000;
|
40 |
-
this.speed = speed;
|
41 |
-
if (jQuery.isFunction(callBack))
|
42 |
-
this.callBack = callBack;
|
43 |
-
else
|
44 |
-
this.callBack = null;
|
45 |
-
this.localization = {days: "days", hours: "hours", minutes: "minutes", seconds: "seconds"};
|
46 |
-
$.extend(this.localization, this.localization, localization);
|
47 |
-
|
48 |
-
}
|
49 |
-
|
50 |
-
MbComingsoon.prototype = {
|
51 |
-
// Returns an object containing counter data
|
52 |
-
getCounterNumbers: function () {
|
53 |
-
var result = {
|
54 |
-
days : {
|
55 |
-
tens : 0,
|
56 |
-
units : 0,
|
57 |
-
hundreds: 0
|
58 |
-
},
|
59 |
-
hours : {
|
60 |
-
tens : 0,
|
61 |
-
units: 0
|
62 |
-
},
|
63 |
-
minutes: {
|
64 |
-
tens : 0,
|
65 |
-
units: 0
|
66 |
-
},
|
67 |
-
seconds: {
|
68 |
-
tens : 0,
|
69 |
-
units: 0
|
70 |
-
}
|
71 |
-
}, millday = 1000 * 60 * 60 * 24,
|
72 |
-
millhour = 1000 * 60 * 60,
|
73 |
-
millminutes = 1000 * 60,
|
74 |
-
millseconds = 1000,
|
75 |
-
rest = 0
|
76 |
-
;
|
77 |
-
|
78 |
-
var now = new Date();
|
79 |
-
var time_gmt = now.getTimezoneOffset() / 60 + this.gmt;
|
80 |
-
var diff = this.end.getTime() - now.getTime() - (time_gmt * 60 * 60000);
|
81 |
-
// CountDown expired !!
|
82 |
-
if (diff <= 0)
|
83 |
-
return result;
|
84 |
-
|
85 |
-
// Max number of days is 99 (i will expand in future versions)
|
86 |
-
var days = Math.min(Math.floor(diff / millday), 999);
|
87 |
-
rest = diff % millday;
|
88 |
-
|
89 |
-
result.days.hundreds = Math.floor(days / 100);
|
90 |
-
var dayrest = days % 100;
|
91 |
-
result.days.tens = Math.floor(dayrest / 10);
|
92 |
-
result.days.units = dayrest % 10;
|
93 |
-
|
94 |
-
var hours = Math.floor(rest / millhour);
|
95 |
-
rest = rest % millhour;
|
96 |
-
result.hours.tens = Math.floor(hours / 10);
|
97 |
-
result.hours.units = hours % 10;
|
98 |
-
|
99 |
-
var minutes = Math.floor(rest / millminutes);
|
100 |
-
rest = rest % millminutes;
|
101 |
-
result.minutes.tens = Math.floor(minutes / 10);
|
102 |
-
result.minutes.units = minutes % 10;
|
103 |
-
|
104 |
-
var seconds = Math.floor(rest / 1000);
|
105 |
-
result.seconds.tens = Math.floor(seconds / 10);
|
106 |
-
result.seconds.units = seconds % 10;
|
107 |
-
return result;
|
108 |
-
},
|
109 |
-
// If changed update a part (day, hours, minutes, seconds) of counter
|
110 |
-
updatePart : function (part) {
|
111 |
-
var cn = this.getCounterNumbers();
|
112 |
-
var $part = $('.' + part, this.$el);
|
113 |
-
if (part == 'days') {
|
114 |
-
this.setDayHundreds(cn.days.hundreds > 0);
|
115 |
-
if ($part.find('.number.hundreds.show').html() != cn[part].hundreds) {
|
116 |
-
var $n1 = $('.n1.hundreds', $part);
|
117 |
-
var $n2 = $('.n2.hundreds', $part);
|
118 |
-
this.scrollNumber($n1, $n2, cn[part].hundreds);
|
119 |
-
}
|
120 |
-
}
|
121 |
-
if ($part.find('.number.tens.show').html() != cn[part].tens) {
|
122 |
-
var $n1 = $('.n1.tens', $part);
|
123 |
-
var $n2 = $('.n2.tens', $part);
|
124 |
-
this.scrollNumber($n1, $n2, cn[part].tens);
|
125 |
-
|
126 |
-
}
|
127 |
-
if ($part.find('.number.units.show').html() != cn[part].units) {
|
128 |
-
var $n1 = $('.n1.units', $part);
|
129 |
-
var $n2 = $('.n2.units', $part);
|
130 |
-
this.scrollNumber($n1, $n2, cn[part].units);
|
131 |
-
}
|
132 |
-
// Only forn day part update hundreds
|
133 |
-
},
|
134 |
-
// True if countdown is expired
|
135 |
-
timeOut : function () {
|
136 |
-
var now = new Date()
|
137 |
-
var time_gmt = now.getTimezoneOffset() / 60 + this.gmt;
|
138 |
-
var diff = this.end.getTime() - now.getTime() - (time_gmt * 60 * 60000);
|
139 |
-
if (diff <= 0)
|
140 |
-
return true;
|
141 |
-
return false;
|
142 |
-
},
|
143 |
-
setDayHundreds : function (action) {
|
144 |
-
if (action)
|
145 |
-
$('.counter.days', this.$el).addClass('with-hundreds');
|
146 |
-
else
|
147 |
-
$('.counter.days', this.$el).removeClass('with-hundreds');
|
148 |
-
},
|
149 |
-
// Update entire counter
|
150 |
-
updateCounter : function () {
|
151 |
-
this.updatePart('days');
|
152 |
-
this.updatePart('hours');
|
153 |
-
this.updatePart('minutes');
|
154 |
-
this.updatePart('seconds');
|
155 |
-
if (this.timeOut()) {
|
156 |
-
this.active = false;
|
157 |
-
if (this.callBack)
|
158 |
-
this.callBack(this);
|
159 |
-
}
|
160 |
-
},
|
161 |
-
localize : function (localization) {
|
162 |
-
if ($.isPlainObject(localization))
|
163 |
-
$.extend(this.localization, this.localization, localization);
|
164 |
-
$('.days', this.$el).siblings('.counter-caption').text(this.localization.days);
|
165 |
-
$('.hours', this.$el).siblings('.counter-caption').text(this.localization.hours);
|
166 |
-
$('.minutes', this.$el).siblings('.counter-caption').text(this.localization.minutes);
|
167 |
-
$('.seconds', this.$el).siblings('.counter-caption').text(this.localization.seconds);
|
168 |
-
},
|
169 |
-
// Start automatic update (interval in milliseconds)
|
170 |
-
start : function (interval) {
|
171 |
-
if (interval)
|
172 |
-
this.interval = interval;
|
173 |
-
var i = this.interval;
|
174 |
-
this.active = true;
|
175 |
-
var me = this;
|
176 |
-
setTimeout(function () {
|
177 |
-
me.updateCounter();
|
178 |
-
if (me.active)
|
179 |
-
me.start();
|
180 |
-
}, i);
|
181 |
-
},
|
182 |
-
// Stop automatic update
|
183 |
-
stop : function () {
|
184 |
-
this.active = false;
|
185 |
-
},
|
186 |
-
// Animation of a single
|
187 |
-
scrollNumber : function ($n1, $n2, value) {
|
188 |
-
if ($n1.hasClass('show')) {
|
189 |
-
$n2.removeClass('hidden-down')
|
190 |
-
.css('top', '-100%')
|
191 |
-
.text(value)
|
192 |
-
.stop()
|
193 |
-
.animate({ top: 0 }, this.speed, function () {
|
194 |
-
$n2.addClass('show');
|
195 |
-
});
|
196 |
-
$n1.stop().animate({ top: "100%" }, this.speed, function () {
|
197 |
-
$n1.removeClass('show')
|
198 |
-
.addClass('hidden-down');
|
199 |
-
});
|
200 |
-
} else {
|
201 |
-
$n1.removeClass('hidden-down')
|
202 |
-
.css('top', '-100%')
|
203 |
-
.text(value)
|
204 |
-
.stop()
|
205 |
-
.animate({ top: 0 }, this.speed, function () {
|
206 |
-
$n1.addClass('show');
|
207 |
-
});
|
208 |
-
$n2.stop().animate({ top: "100%" }, this.speed, function () {
|
209 |
-
$n2.removeClass('show')
|
210 |
-
.addClass('hidden-down');
|
211 |
-
});
|
212 |
-
}
|
213 |
-
}
|
214 |
-
}
|
215 |
-
|
216 |
-
// jQuery plugin
|
217 |
-
jQuery.fn.mbComingsoon = function (opt) {
|
218 |
-
var defaults = {
|
219 |
-
interval : 1000,
|
220 |
-
callBack : null,
|
221 |
-
localization: { days: "days", hours: "hours", minutes: "minutes", seconds: "seconds" },
|
222 |
-
speed : 500,
|
223 |
-
gmt : 0,
|
224 |
-
showText : 1
|
225 |
-
}
|
226 |
-
var options = {};
|
227 |
-
|
228 |
-
var content = ' <div class="counter-group" id="myCounter">' +
|
229 |
-
' <div class="counter-block">' +
|
230 |
-
' <div class="counter days">' +
|
231 |
-
' <div class="number show n1 hundreds">0</div>' +
|
232 |
-
' <div class="number show n1 tens">0</div>' +
|
233 |
-
' <div class="number show n1 units">0</div>' +
|
234 |
-
' <div class="number hidden-up n2 hundreds">0</div>' +
|
235 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
236 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
237 |
-
' </div>' +
|
238 |
-
' <div class="counter-caption">days</div>' +
|
239 |
-
' </div>' +
|
240 |
-
' <div class="counter-block">' +
|
241 |
-
' <div class="counter hours">' +
|
242 |
-
' <div class="number show n1 tens">0</div>' +
|
243 |
-
' <div class="number show n1 units">0</div>' +
|
244 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
245 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
246 |
-
' </div>' +
|
247 |
-
' <div class="counter-caption">hours</div>' +
|
248 |
-
' </div>' +
|
249 |
-
' <div class="counter-block">' +
|
250 |
-
' <div class="counter minutes">' +
|
251 |
-
' <div class="number show n1 tens">0</div>' +
|
252 |
-
' <div class="number show n1 units">0</div>' +
|
253 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
254 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
255 |
-
' </div>' +
|
256 |
-
' <div class="counter-caption">minutes</div>' +
|
257 |
-
' </div>' +
|
258 |
-
' <div class="counter-block">' +
|
259 |
-
' <div class="counter seconds">' +
|
260 |
-
' <div class="number show n1 tens">0</div>' +
|
261 |
-
' <div class="number show n1 units">0</div>' +
|
262 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
263 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
264 |
-
' </div>' +
|
265 |
-
' <div class="counter-caption">seconds</div>' +
|
266 |
-
' </div>' +
|
267 |
-
' </div>';
|
268 |
-
var content_notext = ' <div class="counter-group" id="myCounter">' +
|
269 |
-
' <div class="counter-block">' +
|
270 |
-
' <div class="counter days">' +
|
271 |
-
' <div class="number show n1 hundreds">0</div>' +
|
272 |
-
' <div class="number show n1 tens">0</div>' +
|
273 |
-
' <div class="number show n1 units">0</div>' +
|
274 |
-
' <div class="number hidden-up n2 hundreds">0</div>' +
|
275 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
276 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
277 |
-
' </div>' +
|
278 |
-
' </div>' +
|
279 |
-
' <div class="counter-block">' +
|
280 |
-
' <div class="counter hours">' +
|
281 |
-
' <div class="number show n1 tens">0</div>' +
|
282 |
-
' <div class="number show n1 units">0</div>' +
|
283 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
284 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
285 |
-
' </div>' +
|
286 |
-
' </div>' +
|
287 |
-
' <div class="counter-block">' +
|
288 |
-
' <div class="counter minutes">' +
|
289 |
-
' <div class="number show n1 tens">0</div>' +
|
290 |
-
' <div class="number show n1 units">0</div>' +
|
291 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
292 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
293 |
-
' </div>' +
|
294 |
-
' </div>' +
|
295 |
-
' <div class="counter-block">' +
|
296 |
-
' <div class="counter seconds">' +
|
297 |
-
' <div class="number show n1 tens">0</div>' +
|
298 |
-
' <div class="number show n1 units">0</div>' +
|
299 |
-
' <div class="number hidden-up n2 tens">0</div>' +
|
300 |
-
' <div class="number hidden-up n2 units">0</div>' +
|
301 |
-
' </div>' +
|
302 |
-
' </div>' +
|
303 |
-
' </div>';
|
304 |
-
return this.each(function () {
|
305 |
-
var $this = $(this);
|
306 |
-
var data = $this.data('mbComingsoon');
|
307 |
-
if (!data) {
|
308 |
-
if (opt instanceof Date)
|
309 |
-
options.expiryDate = opt;
|
310 |
-
else if ($.isPlainObject(opt))
|
311 |
-
$.extend(options, defaults, opt);
|
312 |
-
else if (typeof opt == "string")
|
313 |
-
options.expiryDate = new Date(opt);
|
314 |
-
if (!options.expiryDate)
|
315 |
-
throw new Error('Expiry date is required!');
|
316 |
-
|
317 |
-
data = new MbComingsoon(options.expiryDate, $this, options.localization, options.speed, options.callBack, options.gmt, options.showText);
|
318 |
-
if (options.showText) {
|
319 |
-
$this.html(content);
|
320 |
-
} else {
|
321 |
-
$this.html(content_notext);
|
322 |
-
}
|
323 |
-
data.localize();
|
324 |
-
data.start();
|
325 |
-
} else if (opt == 'start')
|
326 |
-
data.start();
|
327 |
-
else if (opt == 'stop')
|
328 |
-
data.stop();
|
329 |
-
else if ($.isPlainObject(opt)) {
|
330 |
-
if (opt.expiryDate instanceof Date)
|
331 |
-
data.end = opt.expiryDate;
|
332 |
-
if ($.isNumeric(opt.interval))
|
333 |
-
data.interval = opt.interval;
|
334 |
-
if ($.isNumeric(opt.gmt))
|
335 |
-
data.gmt = opt.gmt;
|
336 |
-
if ($.isNumeric(opt.showText))
|
337 |
-
data.showText = opt.showText;
|
338 |
-
if ($.isFunction(opt.callBack))
|
339 |
-
data.callBack = opt.callBack;
|
340 |
-
if ($.isPlainObject(opt.localization))
|
341 |
-
this.localize(opt.localization);
|
342 |
-
}
|
343 |
-
})
|
344 |
-
}
|
345 |
-
|
346 |
-
})(jQuery)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/jquery.mb-comingsoon.min.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
(function(e){var t;t=function(t,n,r,i,s,o,u){this.$el=e(n);this.gmt=o;this.showText=u;this.end=t;this.active=false;this.interval=1e3;this.speed=i;if(jQuery.isFunction(s))this.callBack=s;else this.callBack=null;this.localization={days:"days",hours:"hours",minutes:"minutes",seconds:"seconds"};e.extend(this.localization,this.localization,r)};t.prototype={getCounterNumbers:function(){var e={days:{tens:0,units:0,hundreds:0},hours:{tens:0,units:0},minutes:{tens:0,units:0},seconds:{tens:0,units:0}},t=1e3*60*60*24,n=1e3*60*60,r=1e3*60,i=1e3,s=0;var o=new Date;var u=o.getTimezoneOffset()/60+this.gmt;var a=this.end.getTime()-o.getTime()-u*60*6e4;if(a<=0)return e;var f=Math.min(Math.floor(a/t),999);s=a%t;e.days.hundreds=Math.floor(f/100);var l=f%100;e.days.tens=Math.floor(l/10);e.days.units=l%10;var c=Math.floor(s/n);s=s%n;e.hours.tens=Math.floor(c/10);e.hours.units=c%10;var h=Math.floor(s/r);s=s%r;e.minutes.tens=Math.floor(h/10);e.minutes.units=h%10;var p=Math.floor(s/1e3);e.seconds.tens=Math.floor(p/10);e.seconds.units=p%10;return e},updatePart:function(t){var n=this.getCounterNumbers();var r=e("."+t,this.$el);if(t=="days"){this.setDayHundreds(n.days.hundreds>0);if(r.find(".number.hundreds.show").html()!=n[t].hundreds){var i=e(".n1.hundreds",r);var s=e(".n2.hundreds",r);this.scrollNumber(i,s,n[t].hundreds)}}if(r.find(".number.tens.show").html()!=n[t].tens){var i=e(".n1.tens",r);var s=e(".n2.tens",r);this.scrollNumber(i,s,n[t].tens)}if(r.find(".number.units.show").html()!=n[t].units){var i=e(".n1.units",r);var s=e(".n2.units",r);this.scrollNumber(i,s,n[t].units)}},timeOut:function(){var e=new Date;var t=e.getTimezoneOffset()/60+this.gmt;var n=this.end.getTime()-e.getTime()-t*60*6e4;if(n<=0)return true;return false},setDayHundreds:function(t){if(t)e(".counter.days",this.$el).addClass("with-hundreds");else e(".counter.days",this.$el).removeClass("with-hundreds")},updateCounter:function(){this.updatePart("days");this.updatePart("hours");this.updatePart("minutes");this.updatePart("seconds");if(this.timeOut()){this.active=false;if(this.callBack)this.callBack(this)}},localize:function(t){if(e.isPlainObject(t))e.extend(this.localization,this.localization,t);e(".days",this.$el).siblings(".counter-caption").text(this.localization.days);e(".hours",this.$el).siblings(".counter-caption").text(this.localization.hours);e(".minutes",this.$el).siblings(".counter-caption").text(this.localization.minutes);e(".seconds",this.$el).siblings(".counter-caption").text(this.localization.seconds)},start:function(e){if(e)this.interval=e;var t=this.interval;this.active=true;var n=this;setTimeout(function(){n.updateCounter();if(n.active)n.start()},t)},stop:function(){this.active=false},scrollNumber:function(e,t,n){if(e.hasClass("show")){t.removeClass("hidden-down").css("top","-100%").text(n).stop().animate({top:0},this.speed,function(){t.addClass("show")});e.stop().animate({top:"100%"},this.speed,function(){e.removeClass("show").addClass("hidden-down")})}else{e.removeClass("hidden-down").css("top","-100%").text(n).stop().animate({top:0},this.speed,function(){e.addClass("show")});t.stop().animate({top:"100%"},this.speed,function(){t.removeClass("show").addClass("hidden-down")})}}};jQuery.fn.mbComingsoon=function(n){var r={interval:1e3,callBack:null,localization:{days:"days",hours:"hours",minutes:"minutes",seconds:"seconds"},speed:500,gmt:0,showText:1};var i={};var s=' <div class="counter-group" id="myCounter">'+' <div class="counter-block">'+' <div class="counter days">'+' <div class="number show n1 hundreds">0</div>'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 hundreds">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+' <div class="counter-caption">days</div>'+" </div>"+' <div class="counter-block">'+' <div class="counter hours">'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+' <div class="counter-caption">hours</div>'+" </div>"+' <div class="counter-block">'+' <div class="counter minutes">'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+' <div class="counter-caption">minutes</div>'+" </div>"+' <div class="counter-block">'+' <div class="counter seconds">'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+' <div class="counter-caption">seconds</div>'+" </div>"+" </div>";var o=' <div class="counter-group" id="myCounter">'+' <div class="counter-block">'+' <div class="counter days">'+' <div class="number show n1 hundreds">0</div>'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 hundreds">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+" </div>"+' <div class="counter-block">'+' <div class="counter hours">'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+" </div>"+' <div class="counter-block">'+' <div class="counter minutes">'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+" </div>"+' <div class="counter-block">'+' <div class="counter seconds">'+' <div class="number show n1 tens">0</div>'+' <div class="number show n1 units">0</div>'+' <div class="number hidden-up n2 tens">0</div>'+' <div class="number hidden-up n2 units">0</div>'+" </div>"+" </div>"+" </div>";return this.each(function(){var u=e(this);var a=u.data("mbComingsoon");if(!a){if(n instanceof Date)i.expiryDate=n;else if(e.isPlainObject(n))e.extend(i,r,n);else if(typeof n=="string")i.expiryDate=new Date(n);if(!i.expiryDate)throw new Error("Expiry date is required!");a=new t(i.expiryDate,u,i.localization,i.speed,i.callBack,i.gmt,i.showText);if(i.showText){u.html(s)}else{u.html(o)}a.localize();a.start()}else if(n=="start")a.start();else if(n=="stop")a.stop();else if(e.isPlainObject(n)){if(n.expiryDate instanceof Date)a.end=n.expiryDate;if(e.isNumeric(n.interval))a.interval=n.interval;if(e.isNumeric(n.gmt))a.gmt=n.gmt;if(e.isNumeric(n.showText))a.showText=n.showText;if(e.isFunction(n.callBack))a.callBack=n.callBack;if(e.isPlainObject(n.localization))this.localize(n.localization)}})}})(jQuery)
|
|
assets/js/jquery.ocupload.js
DELETED
@@ -1,277 +0,0 @@
|
|
1 |
-
/*
|
2 |
-
One Click Upload - jQuery Plugin
|
3 |
-
--------------------------------
|
4 |
-
|
5 |
-
Copyright (c) 2008 Michael Mitchell - http://www.michaelmitchell.co.nz
|
6 |
-
Copyright (c) 2011 Andrey Fedoseev <andrey.fedoseev@gmail.com> -
|
7 |
-
http://andreyfedoseev.name
|
8 |
-
|
9 |
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
10 |
-
of this software and associated documentation files (the "Software"), to deal
|
11 |
-
in the Software without restriction, including without limitation the rights
|
12 |
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
13 |
-
copies of the Software, and to permit persons to whom the Software is
|
14 |
-
furnished to do so, subject to the following conditions:
|
15 |
-
|
16 |
-
The above copyright notice and this permission notice shall be included in
|
17 |
-
all copies or substantial portions of the Software.
|
18 |
-
|
19 |
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
20 |
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
21 |
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
22 |
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
23 |
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
24 |
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
25 |
-
THE SOFTWARE.
|
26 |
-
|
27 |
-
*/
|
28 |
-
|
29 |
-
(function ($) {
|
30 |
-
$.fn.upload = function (options) {
|
31 |
-
/** Merge the user's options with our defaults */
|
32 |
-
options = $.extend({
|
33 |
-
name: 'file',
|
34 |
-
enctype: 'multipart/form-data',
|
35 |
-
action: '',
|
36 |
-
autoSubmit: true,
|
37 |
-
onSubmit: function () {},
|
38 |
-
onComplete: function () {},
|
39 |
-
onSelect: function () {},
|
40 |
-
params: {}
|
41 |
-
}, options);
|
42 |
-
|
43 |
-
return new $.ocupload(this, options);
|
44 |
-
};
|
45 |
-
|
46 |
-
$.ocupload = function (element, options) {
|
47 |
-
/** Fix scope problems */
|
48 |
-
var self = this;
|
49 |
-
|
50 |
-
/** A unique id so we can find our elements later */
|
51 |
-
var id = new Date().getTime().toString().substr(8);
|
52 |
-
|
53 |
-
/** Upload iframe */
|
54 |
-
var iframe = $("<iframe></iframe>", {
|
55 |
-
id: "iframe" + id,
|
56 |
-
name: "iframe" + id
|
57 |
-
}).css({
|
58 |
-
display: "none"
|
59 |
-
});
|
60 |
-
|
61 |
-
/** Form */
|
62 |
-
var form = $("<form></form>", {
|
63 |
-
method: "post",
|
64 |
-
enctype: options.enctype,
|
65 |
-
action: options.action,
|
66 |
-
target: "iframe" + id
|
67 |
-
}).css({
|
68 |
-
margin: 0,
|
69 |
-
padding: 0
|
70 |
-
});
|
71 |
-
|
72 |
-
/** Get cursor type from the object ocupload was assigned to */
|
73 |
-
/** TODO: Add parameter to init? cursor: auto, cursor: pointer etc */
|
74 |
-
var element_cursor = element.css('cursor');
|
75 |
-
|
76 |
-
/** File Input */
|
77 |
-
var input = $("<input>", {
|
78 |
-
name: options.name,
|
79 |
-
"type": "file"
|
80 |
-
}).css({
|
81 |
-
position: 'absolute',
|
82 |
-
display: 'block',
|
83 |
-
cursor: element_cursor,
|
84 |
-
opacity: 0
|
85 |
-
});
|
86 |
-
|
87 |
-
/** Put everything together */
|
88 |
-
|
89 |
-
element.wrap("<div></div>");
|
90 |
-
form.append(input);
|
91 |
-
element.after(form);
|
92 |
-
element.after(iframe);
|
93 |
-
|
94 |
-
/** Find the container and make it nice and snug */
|
95 |
-
var container = element.parent().css({
|
96 |
-
position: 'relative',
|
97 |
-
height: element.outerHeight() + 'px',
|
98 |
-
width: element.outerWidth() + 'px',
|
99 |
-
overflow: 'hidden',
|
100 |
-
cursor: element_cursor,
|
101 |
-
margin: 0,
|
102 |
-
padding: 0
|
103 |
-
});
|
104 |
-
|
105 |
-
/** Get input dimensions so we can put it in the right place */
|
106 |
-
var input_height = input.outerHeight(element.outerHeight());
|
107 |
-
var input_width = input.outerWidth(element.outerWidth());
|
108 |
-
input.css({
|
109 |
-
margin: "0",
|
110 |
-
padding: "0",
|
111 |
-
top: "0",
|
112 |
-
left: "0"
|
113 |
-
});
|
114 |
-
|
115 |
-
/** Move the input with the mouse to make sure it get clicked! */
|
116 |
-
container.mousemove(function (e) {
|
117 |
-
input.css({
|
118 |
-
top: e.pageY - container.offset().top - (input_height / 2) + 'px',
|
119 |
-
left: e.pageX - container.offset().left - input_width + 30 + 'px'
|
120 |
-
});
|
121 |
-
});
|
122 |
-
|
123 |
-
function onChange() {
|
124 |
-
/** Do something when a file is selected. */
|
125 |
-
self.onSelect();
|
126 |
-
|
127 |
-
/** Submit the form automaticly after selecting the file */
|
128 |
-
if (self.autoSubmit) {
|
129 |
-
self.submit();
|
130 |
-
}
|
131 |
-
}
|
132 |
-
|
133 |
-
/** Watch for file selection */
|
134 |
-
input.change(onChange);
|
135 |
-
|
136 |
-
/** Methods */
|
137 |
-
$.extend(this, {
|
138 |
-
autoSubmit: true,
|
139 |
-
onSubmit: options.onSubmit,
|
140 |
-
onComplete: options.onComplete,
|
141 |
-
onSelect: options.onSelect,
|
142 |
-
|
143 |
-
/** get filename */
|
144 |
-
filename: function () {
|
145 |
-
return input.attr('value');
|
146 |
-
},
|
147 |
-
|
148 |
-
/** get/set params */
|
149 |
-
params: function (params) {
|
150 |
-
params = params ? params : false;
|
151 |
-
if (params) {
|
152 |
-
options.params = $.extend(options.params, params);
|
153 |
-
}
|
154 |
-
else {
|
155 |
-
return options.params;
|
156 |
-
}
|
157 |
-
},
|
158 |
-
|
159 |
-
/** get/set name */
|
160 |
-
name: function (name) {
|
161 |
-
name = name ? name : false;
|
162 |
-
if (name) {
|
163 |
-
input.attr('name', value);
|
164 |
-
}
|
165 |
-
else {
|
166 |
-
return input.attr('name');
|
167 |
-
}
|
168 |
-
},
|
169 |
-
|
170 |
-
/** get/set action */
|
171 |
-
action: function (action) {
|
172 |
-
action = action ? action : false;
|
173 |
-
if (action) {
|
174 |
-
form.attr('action', action);
|
175 |
-
}
|
176 |
-
else {
|
177 |
-
return form.attr('action');
|
178 |
-
}
|
179 |
-
},
|
180 |
-
|
181 |
-
/** get/set enctype */
|
182 |
-
enctype: function (enctype) {
|
183 |
-
enctype = enctype ? enctype : false;
|
184 |
-
if (enctype) {
|
185 |
-
form.attr('enctype', enctype);
|
186 |
-
}
|
187 |
-
else {
|
188 |
-
return form.attr('enctype');
|
189 |
-
}
|
190 |
-
},
|
191 |
-
|
192 |
-
/** set options */
|
193 |
-
set: function (obj, value) {
|
194 |
-
value = value ? value : false;
|
195 |
-
function option(action, value) {
|
196 |
-
switch (action) {
|
197 |
-
case 'name':
|
198 |
-
self.name(value);
|
199 |
-
break;
|
200 |
-
case 'action':
|
201 |
-
self.action(value);
|
202 |
-
break;
|
203 |
-
case 'enctype':
|
204 |
-
self.enctype(value);
|
205 |
-
break;
|
206 |
-
case 'params':
|
207 |
-
self.params(value);
|
208 |
-
break;
|
209 |
-
case 'autoSubmit':
|
210 |
-
self.autoSubmit = value;
|
211 |
-
break;
|
212 |
-
case 'onSubmit':
|
213 |
-
self.onSubmit = value;
|
214 |
-
break;
|
215 |
-
case 'onComplete':
|
216 |
-
self.onComplete = value;
|
217 |
-
break;
|
218 |
-
case 'onSelect':
|
219 |
-
self.onSelect = value;
|
220 |
-
break;
|
221 |
-
default:
|
222 |
-
throw new Error('[jQuery.ocupload.set] \'' + action + '\' is ' +
|
223 |
-
'an invalid option.');
|
224 |
-
}
|
225 |
-
}
|
226 |
-
|
227 |
-
if (value) {
|
228 |
-
option(obj, value);
|
229 |
-
}
|
230 |
-
else {
|
231 |
-
$.each(obj,
|
232 |
-
function (key, value) {
|
233 |
-
option(key, value);
|
234 |
-
});
|
235 |
-
}
|
236 |
-
},
|
237 |
-
|
238 |
-
/** Submit the form */
|
239 |
-
submit: function () {
|
240 |
-
/** Do something before we upload */
|
241 |
-
this.onSubmit();
|
242 |
-
|
243 |
-
/** add additional parameters before sending */
|
244 |
-
$.each(options.params, function (key, value) {
|
245 |
-
field = form.find("input:hidden[name='" + key + "']");
|
246 |
-
if (!field.length) {
|
247 |
-
field = $('<input type="hidden">').attr("name",
|
248 |
-
key).appendTo(form);
|
249 |
-
}
|
250 |
-
field.val(value);
|
251 |
-
});
|
252 |
-
|
253 |
-
/** Submit the actual form */
|
254 |
-
form.submit();
|
255 |
-
|
256 |
-
/** Do something after we are finished uploading */
|
257 |
-
iframe.unbind().load(function () {
|
258 |
-
/** Get a response from the server in plain text */
|
259 |
-
var myFrame = document.getElementById(iframe.attr('name'));
|
260 |
-
var response = $(myFrame.contentWindow.document.body).text();
|
261 |
-
|
262 |
-
/** Do something on complete */
|
263 |
-
self.onComplete(response);
|
264 |
-
//done :D
|
265 |
-
|
266 |
-
// Reset file input field
|
267 |
-
input.wrap("<div></div>");
|
268 |
-
var wrapper = input.parent();
|
269 |
-
input = $(wrapper.html());
|
270 |
-
input.change(onChange);
|
271 |
-
wrapper.replaceWith(input);
|
272 |
-
|
273 |
-
});
|
274 |
-
}
|
275 |
-
});
|
276 |
-
};
|
277 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/{css → less}/_icons.less
RENAMED
File without changes
|
assets/{css → less}/admin/admin.less
RENAMED
@@ -7,12 +7,35 @@
|
|
7 |
// admin variables
|
8 |
@primary-icon-color: #666666;
|
9 |
@primary-icon-hover-color: #00a0d2;
|
10 |
-
|
11 |
-
|
|
|
12 |
}
|
13 |
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
}
|
17 |
|
18 |
.lp-nav-tab-wrapper {
|
@@ -32,29 +55,6 @@
|
|
32 |
vertical-align: top;
|
33 |
}
|
34 |
|
35 |
-
.post-type-lp_course {
|
36 |
-
& .column-price, & .column-students {
|
37 |
-
width: 10%;
|
38 |
-
}
|
39 |
-
|
40 |
-
#course_curriculum .curriculum-section-items .lp-item-empty td.section-item-input {
|
41 |
-
padding-left: 40px;
|
42 |
-
&.hover {
|
43 |
-
padding-left: 0;
|
44 |
-
}
|
45 |
-
}
|
46 |
-
|
47 |
-
.type-lp_course {
|
48 |
-
|
49 |
-
&.status-pending {
|
50 |
-
.row-actions .view {
|
51 |
-
display: none;
|
52 |
-
}
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
}
|
57 |
-
|
58 |
#learn-press-admin-settings {
|
59 |
#learn_press_email_formats {
|
60 |
margin-bottom: 10px;
|
@@ -98,6 +98,9 @@
|
|
98 |
width: 100%;
|
99 |
box-sizing: border-box;
|
100 |
opacity: 0;
|
|
|
|
|
|
|
101 |
&:before {
|
102 |
content: '';
|
103 |
position: absolute;
|
@@ -114,12 +117,21 @@
|
|
114 |
&.ready {
|
115 |
opacity: 1;
|
116 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
118 |
&.no-subtabs {
|
119 |
.learn-press-settings-wrap {
|
120 |
float: none;
|
121 |
margin-left: 0;
|
122 |
padding-left: 25px;
|
|
|
|
|
123 |
&:before {
|
124 |
display: none;
|
125 |
}
|
@@ -177,6 +189,53 @@
|
|
177 |
}
|
178 |
}
|
179 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
/* message box */
|
181 |
#learn-press-message-box-block {
|
182 |
position: fixed;
|
@@ -259,10 +318,6 @@
|
|
259 |
min-width: 250px;
|
260 |
}
|
261 |
|
262 |
-
.description {
|
263 |
-
margin-top: 5px;
|
264 |
-
}
|
265 |
-
|
266 |
.dashed-placeholder {
|
267 |
border: 2px dashed #999;
|
268 |
padding: 10px;
|
@@ -270,6 +325,33 @@
|
|
270 |
|
271 |
.learn-press-message {
|
272 |
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
.learn-press-admin-notice-dismiss {
|
274 |
position: absolute;
|
275 |
display: inline-block;
|
@@ -314,7 +396,11 @@ li.quiz, li.lesson, li.quick_lesson, li.quick_quiz {
|
|
314 |
width: 15%;
|
315 |
}
|
316 |
|
317 |
-
|
|
|
|
|
|
|
|
|
318 |
#lpr-block {
|
319 |
position: fixed;
|
320 |
top: 0;
|
@@ -374,7 +460,7 @@ li.quiz, li.lesson, li.quick_lesson, li.quick_quiz {
|
|
374 |
.lpr-question tr.lpr-disabled .dashicons-trash,
|
375 |
.lpr-question tr.lpr-disabled .dashicons-sort {
|
376 |
display: none;
|
377 |
-
}
|
378 |
|
379 |
/*
|
380 |
* Add on page
|
@@ -1755,7 +1841,8 @@ body.post-type-lp_question #question_answer_ .inside {
|
|
1755 |
|
1756 |
.post-type-lp_order #submitpost .misc-pub-section label {
|
1757 |
display: block;
|
1758 |
-
font-weight:
|
|
|
1759 |
}
|
1760 |
|
1761 |
#learn-press-order {
|
@@ -2158,7 +2245,7 @@ input.regular-text[id^="learn-press-emails"] {
|
|
2158 |
|
2159 |
.learn-press-tab-content {
|
2160 |
> li {
|
2161 |
-
padding: 0 20px
|
2162 |
float: left;
|
2163 |
width: 100%;
|
2164 |
margin-right: -100%;
|
@@ -2215,6 +2302,33 @@ input.regular-text[id^="learn-press-emails"] {
|
|
2215 |
}
|
2216 |
}
|
2217 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2218 |
@keyframes learn-press-meta-box-tabs-initialize-animation {
|
2219 |
0% {
|
2220 |
opacity: 0;
|
@@ -2273,4 +2387,4 @@ input.regular-text[id^="learn-press-emails"] {
|
|
2273 |
100% {
|
2274 |
opacity: 0;
|
2275 |
}
|
2276 |
-
}
|
7 |
// admin variables
|
8 |
@primary-icon-color: #666666;
|
9 |
@primary-icon-hover-color: #00a0d2;
|
10 |
+
|
11 |
+
input:focus::-webkit-input-placeholder {
|
12 |
+
color: transparent !important;
|
13 |
}
|
14 |
|
15 |
+
input:focus::-moz-placeholder {
|
16 |
+
color: transparent !important;
|
17 |
+
}
|
18 |
+
|
19 |
+
input:focus:-moz-placeholder {
|
20 |
+
color: transparent !important;
|
21 |
+
}
|
22 |
+
|
23 |
+
.rwmb-field {
|
24 |
+
margin: 20px 0 20px 0;
|
25 |
+
.rwmb-input {
|
26 |
+
.rwmb-label {
|
27 |
+
margin-top: 0;
|
28 |
+
}
|
29 |
+
.description {
|
30 |
+
margin-top: 5px;
|
31 |
+
&.option-desc {
|
32 |
+
font-weight: normal;
|
33 |
+
margin: 8px 0 10px 24px;
|
34 |
+
font-size: smaller;
|
35 |
+
font-style: italic;
|
36 |
+
}
|
37 |
+
}
|
38 |
+
}
|
39 |
}
|
40 |
|
41 |
.lp-nav-tab-wrapper {
|
55 |
vertical-align: top;
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
#learn-press-admin-settings {
|
59 |
#learn_press_email_formats {
|
60 |
margin-bottom: 10px;
|
98 |
width: 100%;
|
99 |
box-sizing: border-box;
|
100 |
opacity: 0;
|
101 |
+
input[name="learn_press_auto_redirect_message"] {
|
102 |
+
width: 80%;
|
103 |
+
}
|
104 |
&:before {
|
105 |
content: '';
|
106 |
position: absolute;
|
117 |
&.ready {
|
118 |
opacity: 1;
|
119 |
}
|
120 |
+
#learn-press-reset-settings {
|
121 |
+
float: right;
|
122 |
+
opacity: 0.5;
|
123 |
+
&:hover {
|
124 |
+
opacity: 1;
|
125 |
+
}
|
126 |
+
}
|
127 |
}
|
128 |
&.no-subtabs {
|
129 |
.learn-press-settings-wrap {
|
130 |
float: none;
|
131 |
margin-left: 0;
|
132 |
padding-left: 25px;
|
133 |
+
padding-right: 25px;
|
134 |
+
|
135 |
&:before {
|
136 |
display: none;
|
137 |
}
|
189 |
}
|
190 |
}
|
191 |
|
192 |
+
.learnpress_page_learn-press-settings {
|
193 |
+
.select2-result {
|
194 |
+
.select2-result-label {
|
195 |
+
position: relative;
|
196 |
+
&:before {
|
197 |
+
display: inline-block;
|
198 |
+
border-bottom: 1px solid #23282d;
|
199 |
+
width: 20px;
|
200 |
+
position: absolute;
|
201 |
+
top: 50%;
|
202 |
+
left: 8px;
|
203 |
+
}
|
204 |
+
&:hover {
|
205 |
+
&:before {
|
206 |
+
border-color: #FFF;
|
207 |
+
}
|
208 |
+
}
|
209 |
+
}
|
210 |
+
&.level-1 {
|
211 |
+
.select2-result-label {
|
212 |
+
padding-left: 35px;
|
213 |
+
&:before {
|
214 |
+
content: '';
|
215 |
+
}
|
216 |
+
}
|
217 |
+
}
|
218 |
+
&.level-2 {
|
219 |
+
.select2-result-label {
|
220 |
+
padding-left: 60px;
|
221 |
+
&:before {
|
222 |
+
left: 35px;
|
223 |
+
content: '';
|
224 |
+
}
|
225 |
+
}
|
226 |
+
}
|
227 |
+
&.level-3 {
|
228 |
+
.select2-result-label {
|
229 |
+
padding-left: 85px;
|
230 |
+
&:before {
|
231 |
+
left: 60px;
|
232 |
+
content: '';
|
233 |
+
}
|
234 |
+
}
|
235 |
+
}
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
/* message box */
|
240 |
#learn-press-message-box-block {
|
241 |
position: fixed;
|
318 |
min-width: 250px;
|
319 |
}
|
320 |
|
|
|
|
|
|
|
|
|
321 |
.dashed-placeholder {
|
322 |
border: 2px dashed #999;
|
323 |
padding: 10px;
|
325 |
|
326 |
.learn-press-message {
|
327 |
position: relative;
|
328 |
+
background: #FFF;
|
329 |
+
border-left: 5px solid #00A0D2;
|
330 |
+
padding: 10px 10px 0px 10px;
|
331 |
+
margin-bottom: 20px;
|
332 |
+
overflow: hidden;
|
333 |
+
color: #777;
|
334 |
+
button {
|
335 |
+
float: right;
|
336 |
+
}
|
337 |
+
p {
|
338 |
+
margin: 0 0 10px;
|
339 |
+
}
|
340 |
+
&:after {
|
341 |
+
clear: both;
|
342 |
+
content: '';
|
343 |
+
display: block;
|
344 |
+
}
|
345 |
+
&.notice {
|
346 |
+
border-left-color: #b3d20a;
|
347 |
+
}
|
348 |
+
&.lp-error,
|
349 |
+
&.error {
|
350 |
+
border-left-color: #b81c23;
|
351 |
+
}
|
352 |
+
ul {
|
353 |
+
list-style-type: none;
|
354 |
+
}
|
355 |
.learn-press-admin-notice-dismiss {
|
356 |
position: absolute;
|
357 |
display: inline-block;
|
396 |
width: 15%;
|
397 |
}
|
398 |
|
399 |
+
.tools-button {
|
400 |
+
text-align: right;
|
401 |
+
}
|
402 |
+
|
403 |
+
/*
|
404 |
#lpr-block {
|
405 |
position: fixed;
|
406 |
top: 0;
|
460 |
.lpr-question tr.lpr-disabled .dashicons-trash,
|
461 |
.lpr-question tr.lpr-disabled .dashicons-sort {
|
462 |
display: none;
|
463 |
+
}*/
|
464 |
|
465 |
/*
|
466 |
* Add on page
|
1841 |
|
1842 |
.post-type-lp_order #submitpost .misc-pub-section label {
|
1843 |
display: block;
|
1844 |
+
font-weight: 600;
|
1845 |
+
margin-bottom: 8px;
|
1846 |
}
|
1847 |
|
1848 |
#learn-press-order {
|
2245 |
|
2246 |
.learn-press-tab-content {
|
2247 |
> li {
|
2248 |
+
padding: 0 20px 10px 20px;
|
2249 |
float: left;
|
2250 |
width: 100%;
|
2251 |
margin-right: -100%;
|
2302 |
}
|
2303 |
}
|
2304 |
|
2305 |
+
|
2306 |
+
/* Metabox Widget */
|
2307 |
+
#widgets-right .widgets-holder-wrap {
|
2308 |
+
.rwmb-label {
|
2309 |
+
margin-bottom: 5px;
|
2310 |
+
}
|
2311 |
+
.rwmb-input{
|
2312 |
+
input[type="text"]{
|
2313 |
+
width: 100%;
|
2314 |
+
}
|
2315 |
+
}
|
2316 |
+
.description {
|
2317 |
+
padding: 0;
|
2318 |
+
margin-top: 5px;
|
2319 |
+
font-size: small;
|
2320 |
+
font-style: italic;
|
2321 |
+
}
|
2322 |
+
}
|
2323 |
+
|
2324 |
+
.outdated-readmore-link{
|
2325 |
+
font-style: italic;
|
2326 |
+
}
|
2327 |
+
|
2328 |
+
.learn-press-message.notice-warning {
|
2329 |
+
border-left-color: #ffb900;
|
2330 |
+
}
|
2331 |
+
|
2332 |
@keyframes learn-press-meta-box-tabs-initialize-animation {
|
2333 |
0% {
|
2334 |
opacity: 0;
|
2387 |
100% {
|
2388 |
opacity: 0;
|
2389 |
}
|
2390 |
+
}
|
assets/{css → less}/admin/attributes.less
RENAMED
@@ -1,4 +1,4 @@
|
|
1 |
-
.course-attributes{
|
2 |
margin: 20px 0;
|
3 |
.learn-press-attribute {
|
4 |
border: 1px solid #DDD;
|
@@ -14,4 +14,5 @@
|
|
14 |
border-top: 1px solid #DDD;
|
15 |
}
|
16 |
}
|
17 |
-
}
|
|
1 |
+
.course-attributes {
|
2 |
margin: 20px 0;
|
3 |
.learn-press-attribute {
|
4 |
border: 1px solid #DDD;
|
14 |
border-top: 1px solid #DDD;
|
15 |
}
|
16 |
}
|
17 |
+
}
|
18 |
+
|
assets/{css → less}/admin/course-editor.less
RENAMED
File without changes
|
{inc/libraries/meta-box/css → assets/less/admin}/index.php
RENAMED
File without changes
|
assets/{css → less}/admin/meta-box-course.less
RENAMED
@@ -3,7 +3,10 @@
|
|
3 |
.rwmb-duration-wrapper select {
|
4 |
vertical-align: baseline;
|
5 |
}
|
6 |
-
|
|
|
|
|
|
|
7 |
.post-type-lp_course {
|
8 |
#postdivric,
|
9 |
#submitpost {
|
@@ -30,26 +33,36 @@
|
|
30 |
}
|
31 |
}
|
32 |
|
33 |
-
#
|
34 |
-
margin: 20px 0 0;
|
35 |
-
}
|
36 |
-
|
37 |
-
#course_curriculum {
|
38 |
border: none;
|
39 |
background-color: transparent;
|
|
|
40 |
}
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
|
47 |
-
#course_curriculum .inside {
|
48 |
-
margin: 0;
|
49 |
-
padding: 0;
|
50 |
}
|
51 |
|
52 |
-
#
|
53 |
margin: 0 0 20px 0;
|
54 |
padding: 10px 20px;
|
55 |
background-color: #FFF;
|
@@ -57,7 +70,7 @@
|
|
57 |
border: 1px solid #DDD;
|
58 |
}
|
59 |
|
60 |
-
#
|
61 |
font-weight: normal;
|
62 |
color: #999;
|
63 |
display: block;
|
@@ -65,14 +78,14 @@
|
|
65 |
margin-top: 10px;;
|
66 |
}
|
67 |
|
68 |
-
#
|
69 |
float: right;
|
70 |
margin: -33px 7px 0 0;
|
71 |
line-height: 1;
|
72 |
box-shadow: none;
|
73 |
}
|
74 |
|
75 |
-
#
|
76 |
-webkit-box-shadow: none;
|
77 |
-moz-box-shadow: none;
|
78 |
box-shadow: none;
|
@@ -80,27 +93,27 @@
|
|
80 |
|
81 |
}
|
82 |
|
83 |
-
#
|
84 |
margin: 0;
|
85 |
background-color: #FFF;
|
86 |
border-bottom: 1px solid #DDD;
|
87 |
}
|
88 |
|
89 |
-
#
|
90 |
margin: -1px 0 0 0;
|
91 |
background-color: #FFF;
|
92 |
border-bottom: 1px solid #DDD;
|
93 |
position: relative;
|
94 |
}
|
95 |
|
96 |
-
#
|
97 |
background-image: url("../../images/stripe.png");
|
98 |
visibility: visible !important;
|
99 |
border: 1px solid #DDD;
|
100 |
border-bottom: none;
|
101 |
}
|
102 |
|
103 |
-
#
|
104 |
border: 1px solid #DDD;
|
105 |
background-color: #F9F9F9;
|
106 |
border-bottom: none;
|
@@ -109,22 +122,22 @@
|
|
109 |
padding: 3px 20px;
|
110 |
}
|
111 |
|
112 |
-
#
|
113 |
background-color: #F9F9F9;
|
114 |
}
|
115 |
|
116 |
-
#
|
117 |
float: right;
|
118 |
margin: 14px 0;
|
119 |
visibility: hidden;
|
120 |
position: relative;
|
121 |
}
|
122 |
|
123 |
-
#
|
124 |
visibility: visible;
|
125 |
}
|
126 |
|
127 |
-
#
|
128 |
vertical-align: middle;
|
129 |
color: #666666;
|
130 |
width: 24px;
|
@@ -132,21 +145,21 @@
|
|
132 |
box-shadow: none;
|
133 |
}
|
134 |
|
135 |
-
#
|
136 |
line-height: 28px;
|
137 |
}
|
138 |
|
139 |
-
#
|
140 |
width: 24px;
|
141 |
height: 24px;
|
142 |
font-size: 24px;
|
143 |
}
|
144 |
|
145 |
-
#
|
146 |
color: #00a0d2;
|
147 |
}
|
148 |
|
149 |
-
#
|
150 |
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
151 |
position: absolute;
|
152 |
right: -15px;
|
@@ -156,7 +169,7 @@
|
|
156 |
width: 20px;
|
157 |
}
|
158 |
|
159 |
-
#
|
160 |
border: 1px solid #DDD;
|
161 |
padding: 20px;
|
162 |
border-bottom-width: 0;
|
@@ -164,11 +177,11 @@
|
|
164 |
box-sizing: border-box;
|
165 |
}
|
166 |
|
167 |
-
#
|
168 |
border-bottom: 1px solid #DDD;
|
169 |
}
|
170 |
|
171 |
-
#
|
172 |
border: none;
|
173 |
outline: none;
|
174 |
box-shadow: none;
|
@@ -180,87 +193,87 @@
|
|
180 |
height: 50px;
|
181 |
}
|
182 |
|
183 |
-
#
|
184 |
color: #444;
|
185 |
}
|
186 |
|
187 |
-
#
|
188 |
_display: none;
|
189 |
}
|
190 |
|
191 |
-
#
|
192 |
border-collapse: collapse;
|
193 |
width: 100%;
|
194 |
}
|
195 |
|
196 |
-
#
|
197 |
border: 1px dashed #DDD;
|
198 |
margin: -1px 0 0 0;
|
199 |
padding: 5px 0;
|
200 |
background-color: #FFF;
|
201 |
}
|
202 |
|
203 |
-
#
|
204 |
-
#
|
205 |
background-color: #FCFCFC;
|
206 |
}
|
207 |
|
208 |
-
#
|
209 |
margin: 0;
|
210 |
float: right;
|
211 |
position: relative;
|
212 |
}
|
213 |
|
214 |
-
#
|
215 |
vertical-align: middle;
|
216 |
color: #666;
|
217 |
margin-top: -2px;
|
218 |
box-shadow: none;
|
219 |
}
|
220 |
|
221 |
-
#
|
222 |
color: #00a0d2;
|
223 |
}
|
224 |
|
225 |
-
#
|
226 |
display: none;
|
227 |
}
|
228 |
|
229 |
-
#
|
230 |
display: none;
|
231 |
}
|
232 |
|
233 |
-
#
|
234 |
|
235 |
}
|
236 |
|
237 |
-
#
|
238 |
visibility: visible !important;
|
239 |
}
|
240 |
|
241 |
-
#
|
242 |
background-image: url("../../../assets/images/stripe.png");
|
243 |
border-bottom: none;
|
244 |
}
|
245 |
|
246 |
-
#
|
247 |
visibility: hidden;
|
248 |
}
|
249 |
|
250 |
-
#
|
251 |
}
|
252 |
|
253 |
-
#
|
254 |
text-align: right;
|
255 |
margin-top: 0;
|
256 |
margin-bottom: 15px;
|
257 |
}
|
258 |
|
259 |
-
#
|
260 |
visibility: visible;
|
261 |
}
|
262 |
|
263 |
-
#
|
264 |
display: inline-block;
|
265 |
height: 34px;
|
266 |
border: none;
|
@@ -271,32 +284,32 @@
|
|
271 |
visibility: visible;
|
272 |
}
|
273 |
|
274 |
-
#
|
275 |
opacity: 0.4;
|
276 |
}
|
277 |
|
278 |
-
#
|
279 |
opacity: 1;
|
280 |
}
|
281 |
|
282 |
-
#
|
283 |
content: "\e900";
|
284 |
}
|
285 |
|
286 |
-
#
|
287 |
content: "\e901";
|
288 |
}
|
289 |
|
290 |
-
#
|
291 |
color: #999;
|
292 |
}
|
293 |
|
294 |
-
#
|
295 |
-
#
|
296 |
background-color: #F9F9F9;
|
297 |
}
|
298 |
|
299 |
-
#
|
300 |
width: 32px;
|
301 |
height: 32px;
|
302 |
display: inline-block;
|
@@ -307,15 +320,15 @@
|
|
307 |
color: #00A0D2;
|
308 |
}
|
309 |
|
310 |
-
#
|
311 |
color: #FF0000;
|
312 |
}
|
313 |
|
314 |
-
#
|
315 |
|
316 |
}
|
317 |
|
318 |
-
#
|
319 |
color: #777;
|
320 |
border: none;
|
321 |
box-shadow: none;
|
@@ -328,7 +341,7 @@
|
|
328 |
white-space: nowrap;
|
329 |
}
|
330 |
|
331 |
-
#
|
332 |
border: none;
|
333 |
box-shadow: none;
|
334 |
color: #999;
|
@@ -338,12 +351,12 @@
|
|
338 |
padding-left: 0;
|
339 |
}
|
340 |
|
341 |
-
#
|
342 |
-
#
|
343 |
color: #444;
|
344 |
}
|
345 |
|
346 |
-
#
|
347 |
width: 32px;
|
348 |
white-space: nowrap;
|
349 |
}
|
@@ -361,19 +374,19 @@
|
|
361 |
border: 1px solid transparent;
|
362 |
}
|
363 |
|
364 |
-
#
|
365 |
content: "\f469";
|
366 |
}
|
367 |
|
368 |
-
#
|
369 |
content: "\f330";
|
370 |
}
|
371 |
|
372 |
-
#
|
373 |
-
#
|
374 |
}
|
375 |
|
376 |
-
#
|
377 |
height: 30px;
|
378 |
}
|
379 |
|
@@ -530,26 +543,23 @@
|
|
530 |
|
531 |
.learn-press-dropdown-item-types {
|
532 |
position: relative;
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
}
|
550 |
-
|
551 |
-
.learn-press-dropdown-item-types > ul > li span {
|
552 |
-
border-width: 0 !important;
|
553 |
}
|
554 |
|
555 |
tr[data-item_id=""] .learn-press-dropdown-item-types:hover > ul,
|
@@ -583,7 +593,14 @@ tr.focus .learn-press-dropdown-item-types > span.learn-press-icon {
|
|
583 |
color: #0085ba;
|
584 |
}
|
585 |
|
|
|
|
|
|
|
|
|
586 |
|
|
|
|
|
|
|
587 |
|
588 |
.post-type-lp_course {
|
589 |
#switch-course-tabs,
|
@@ -591,91 +608,6 @@ tr.focus .learn-press-dropdown-item-types > span.learn-press-icon {
|
|
591 |
float: right;
|
592 |
margin-left: 10px;
|
593 |
}
|
594 |
-
&.enable-course-tabs {
|
595 |
-
#post-body-content {
|
596 |
-
margin-bottom: 0;
|
597 |
-
}
|
598 |
-
#normal-sortables {
|
599 |
-
.postbox {
|
600 |
-
_visibility: hidden;
|
601 |
-
float: left;
|
602 |
-
margin-right: -100%;
|
603 |
-
width: 100%;
|
604 |
-
box-sizing: border-box;
|
605 |
-
height: 0;
|
606 |
-
overflow: hidden;
|
607 |
-
border-width: 0;
|
608 |
-
&.active {
|
609 |
-
height: auto;
|
610 |
-
border-width: 1px;
|
611 |
-
}
|
612 |
-
.handlediv, .hndle {
|
613 |
-
display: none;
|
614 |
-
}
|
615 |
-
}
|
616 |
-
}
|
617 |
-
#course-tabs {
|
618 |
-
background: #FFF;
|
619 |
-
padding: 10px;
|
620 |
-
margin-bottom: 0;
|
621 |
-
border: 1px solid #DDD;
|
622 |
-
border-bottom: none;
|
623 |
-
&:after {
|
624 |
-
display: block;
|
625 |
-
clear: both;
|
626 |
-
content: '';
|
627 |
-
}
|
628 |
-
&.ui-sortable:not(.ui-sortable-disabled) {
|
629 |
-
li.ui-sortable-handle {
|
630 |
-
position: relative;
|
631 |
-
a {
|
632 |
-
border: 1px solid #ddd;
|
633 |
-
padding: 0px 5px;
|
634 |
-
margin: 0 5px;
|
635 |
-
color: #DDD;
|
636 |
-
background: #FFF;
|
637 |
-
}
|
638 |
-
&:after {
|
639 |
-
content: '';
|
640 |
-
position: absolute;
|
641 |
-
top: 0;
|
642 |
-
left: 0;
|
643 |
-
width: 100%;
|
644 |
-
height: 100%;
|
645 |
-
cursor: move;
|
646 |
-
}
|
647 |
-
}
|
648 |
-
}
|
649 |
-
li {
|
650 |
-
float: left;
|
651 |
-
margin-bottom: 0;
|
652 |
-
a {
|
653 |
-
display: block;
|
654 |
-
padding: 0 15px 0 0;
|
655 |
-
text-decoration: none;
|
656 |
-
outline: none;
|
657 |
-
box-shadow: none;
|
658 |
-
}
|
659 |
-
&.active {
|
660 |
-
a {
|
661 |
-
font-weight: bold;
|
662 |
-
}
|
663 |
-
}
|
664 |
-
}
|
665 |
-
li#switch-course-metaboxes {
|
666 |
-
float: right;
|
667 |
-
#complete-reorder-course-tabs {
|
668 |
-
display: none;
|
669 |
-
}
|
670 |
-
a {
|
671 |
-
padding-right: 0;
|
672 |
-
color: #FF0000;
|
673 |
-
display: inline-block;
|
674 |
-
margin-left: 15px;
|
675 |
-
}
|
676 |
-
}
|
677 |
-
}
|
678 |
-
}
|
679 |
}
|
680 |
|
681 |
/*
|
3 |
.rwmb-duration-wrapper select {
|
4 |
vertical-align: baseline;
|
5 |
}
|
6 |
+
#learn-press-toggle-course-results{
|
7 |
+
display: block;margin-bottom:10px;
|
8 |
+
a{box-shadow: none;}
|
9 |
+
}
|
10 |
.post-type-lp_course {
|
11 |
#postdivric,
|
12 |
#submitpost {
|
33 |
}
|
34 |
}
|
35 |
|
36 |
+
#lp-course-curriculum {
|
|
|
|
|
|
|
|
|
37 |
border: none;
|
38 |
background-color: transparent;
|
39 |
+
margin: 20px 0;
|
40 |
}
|
41 |
|
42 |
+
.post-type-lp_course {
|
43 |
+
& .column-price, & .column-students {
|
44 |
+
width: 10%;
|
45 |
+
}
|
46 |
+
|
47 |
+
#lp-course-curriculum .curriculum-section-items .lp-item-empty td.section-item-input {
|
48 |
+
padding-left: 40px;
|
49 |
+
&.hover {
|
50 |
+
padding-left: 0;
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
.type-lp_course {
|
55 |
+
|
56 |
+
&.status-pending {
|
57 |
+
.row-actions .view {
|
58 |
+
display: none;
|
59 |
+
}
|
60 |
+
}
|
61 |
+
}
|
62 |
|
|
|
|
|
|
|
63 |
}
|
64 |
|
65 |
+
#lp-course-curriculum .curriculum-heading {
|
66 |
margin: 0 0 20px 0;
|
67 |
padding: 10px 20px;
|
68 |
background-color: #FFF;
|
70 |
border: 1px solid #DDD;
|
71 |
}
|
72 |
|
73 |
+
#lp-course-curriculum .curriculum-heading .description {
|
74 |
font-weight: normal;
|
75 |
color: #999;
|
76 |
display: block;
|
78 |
margin-top: 10px;;
|
79 |
}
|
80 |
|
81 |
+
#lp-course-curriculum .curriculum-heading .items-toggle {
|
82 |
float: right;
|
83 |
margin: -33px 7px 0 0;
|
84 |
line-height: 1;
|
85 |
box-shadow: none;
|
86 |
}
|
87 |
|
88 |
+
#lp-course-curriculum .curriculum-heading .items-toggle a {
|
89 |
-webkit-box-shadow: none;
|
90 |
-moz-box-shadow: none;
|
91 |
box-shadow: none;
|
93 |
|
94 |
}
|
95 |
|
96 |
+
#lp-course-curriculum .curriculum-sections {
|
97 |
margin: 0;
|
98 |
background-color: #FFF;
|
99 |
border-bottom: 1px solid #DDD;
|
100 |
}
|
101 |
|
102 |
+
#lp-course-curriculum .curriculum-section {
|
103 |
margin: -1px 0 0 0;
|
104 |
background-color: #FFF;
|
105 |
border-bottom: 1px solid #DDD;
|
106 |
position: relative;
|
107 |
}
|
108 |
|
109 |
+
#lp-course-curriculum .curriculum-section.ui-sortable-placeholder {
|
110 |
background-image: url("../../images/stripe.png");
|
111 |
visibility: visible !important;
|
112 |
border: 1px solid #DDD;
|
113 |
border-bottom: none;
|
114 |
}
|
115 |
|
116 |
+
#lp-course-curriculum .curriculum-section-head {
|
117 |
border: 1px solid #DDD;
|
118 |
background-color: #F9F9F9;
|
119 |
border-bottom: none;
|
122 |
padding: 3px 20px;
|
123 |
}
|
124 |
|
125 |
+
#lp-course-curriculum .curriculum-section-head input {
|
126 |
background-color: #F9F9F9;
|
127 |
}
|
128 |
|
129 |
+
#lp-course-curriculum .curriculum-section-head .lp-section-actions {
|
130 |
float: right;
|
131 |
margin: 14px 0;
|
132 |
visibility: hidden;
|
133 |
position: relative;
|
134 |
}
|
135 |
|
136 |
+
#lp-course-curriculum .curriculum-section:not(.lp-empty-section) .curriculum-section-head:hover .lp-section-actions {
|
137 |
visibility: visible;
|
138 |
}
|
139 |
|
140 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a {
|
141 |
vertical-align: middle;
|
142 |
color: #666666;
|
143 |
width: 24px;
|
145 |
box-shadow: none;
|
146 |
}
|
147 |
|
148 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a[data-action="expand"] {
|
149 |
line-height: 28px;
|
150 |
}
|
151 |
|
152 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a:before {
|
153 |
width: 24px;
|
154 |
height: 24px;
|
155 |
font-size: 24px;
|
156 |
}
|
157 |
|
158 |
+
#lp-course-curriculum .curriculum-section .lp-section-actions a:hover {
|
159 |
color: #00a0d2;
|
160 |
}
|
161 |
|
162 |
+
#lp-course-curriculum .curriculum-section .curriculum-section-head .lp-section-actions .move {
|
163 |
cursor: url("../../../assets/images/openhand.cur") 7 5, default;
|
164 |
position: absolute;
|
165 |
right: -15px;
|
169 |
width: 20px;
|
170 |
}
|
171 |
|
172 |
+
#lp-course-curriculum .curriculum-section-content {
|
173 |
border: 1px solid #DDD;
|
174 |
padding: 20px;
|
175 |
border-bottom-width: 0;
|
177 |
box-sizing: border-box;
|
178 |
}
|
179 |
|
180 |
+
#lp-course-curriculum .curriculum-section.ui-sortable-helper {
|
181 |
border-bottom: 1px solid #DDD;
|
182 |
}
|
183 |
|
184 |
+
#lp-course-curriculum .curriculum-section-head .lp-section-name {
|
185 |
border: none;
|
186 |
outline: none;
|
187 |
box-shadow: none;
|
193 |
height: 50px;
|
194 |
}
|
195 |
|
196 |
+
#lp-course-curriculum .curriculum-section-head .lp-section-name:focus {
|
197 |
color: #444;
|
198 |
}
|
199 |
|
200 |
+
#lp-course-curriculum .curriculum-section.lp-empty-section .curriculum-section-content {
|
201 |
_display: none;
|
202 |
}
|
203 |
|
204 |
+
#lp-course-curriculum .curriculum-section-items {
|
205 |
border-collapse: collapse;
|
206 |
width: 100%;
|
207 |
}
|
208 |
|
209 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item {
|
210 |
border: 1px dashed #DDD;
|
211 |
margin: -1px 0 0 0;
|
212 |
padding: 5px 0;
|
213 |
background-color: #FFF;
|
214 |
}
|
215 |
|
216 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:nth-child(2n+1),
|
217 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:nth-child(2n+1) .section-item-input input {
|
218 |
background-color: #FCFCFC;
|
219 |
}
|
220 |
|
221 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .lp-item-actions {
|
222 |
margin: 0;
|
223 |
float: right;
|
224 |
position: relative;
|
225 |
}
|
226 |
|
227 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .lp-item-actions a {
|
228 |
vertical-align: middle;
|
229 |
color: #666;
|
230 |
margin-top: -2px;
|
231 |
box-shadow: none;
|
232 |
}
|
233 |
|
234 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .lp-item-actions a:hover {
|
235 |
color: #00a0d2;
|
236 |
}
|
237 |
|
238 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item[data-item_id=""] .lp-edit {
|
239 |
display: none;
|
240 |
}
|
241 |
|
242 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item.lp-item-empty .lp-item-actions {
|
243 |
display: none;
|
244 |
}
|
245 |
|
246 |
+
#lp-course-curriculum .lp-section-item.ui-sortable-helper td {
|
247 |
|
248 |
}
|
249 |
|
250 |
+
#lp-course-curriculum .lp-section-item.ui-sortable-placeholder {
|
251 |
visibility: visible !important;
|
252 |
}
|
253 |
|
254 |
+
#lp-course-curriculum .lp-section-item.ui-sortable-placeholder td {
|
255 |
background-image: url("../../../assets/images/stripe.png");
|
256 |
border-bottom: none;
|
257 |
}
|
258 |
|
259 |
+
#lp-course-curriculum .lp-item-actions > * {
|
260 |
visibility: hidden;
|
261 |
}
|
262 |
|
263 |
+
#lp-course-curriculum .lp-item-actions > a {
|
264 |
}
|
265 |
|
266 |
+
#lp-course-curriculum .item-bulk-actions {
|
267 |
text-align: right;
|
268 |
margin-top: 0;
|
269 |
margin-bottom: 15px;
|
270 |
}
|
271 |
|
272 |
+
#lp-course-curriculum .lp-section-item:not(.lp-item-empty):hover .lp-item-actions > * {
|
273 |
visibility: visible;
|
274 |
}
|
275 |
|
276 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:not(.lp-item-empty) .item-checkbox {
|
277 |
display: inline-block;
|
278 |
height: 34px;
|
279 |
border: none;
|
284 |
visibility: visible;
|
285 |
}
|
286 |
|
287 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item .item-checkbox input {
|
288 |
opacity: 0.4;
|
289 |
}
|
290 |
|
291 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:not(.lp-item-empty):hover .item-checkbox input {
|
292 |
opacity: 1;
|
293 |
}
|
294 |
|
295 |
+
#lp-course-curriculum .lp-item-lp_lesson .handle.learn-press-icon:before {
|
296 |
content: "\e900";
|
297 |
}
|
298 |
|
299 |
+
#lp-course-curriculum .lp-item-lp_quiz .handle.learn-press-icon:before {
|
300 |
content: "\e901";
|
301 |
}
|
302 |
|
303 |
+
#lp-course-curriculum .lp-section-item.lp-item-new .handle {
|
304 |
color: #999;
|
305 |
}
|
306 |
|
307 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:hover,
|
308 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item:hover input.lp-item-name {
|
309 |
background-color: #F9F9F9;
|
310 |
}
|
311 |
|
312 |
+
#lp-course-curriculum .lp-section-item .handle {
|
313 |
width: 32px;
|
314 |
height: 32px;
|
315 |
display: inline-block;
|
320 |
color: #00A0D2;
|
321 |
}
|
322 |
|
323 |
+
#lp-course-curriculum .lp-section-item.remove input.lp-item-name {
|
324 |
color: #FF0000;
|
325 |
}
|
326 |
|
327 |
+
#lp-course-curriculum .lp-section-item.ui-sortable-helper {
|
328 |
|
329 |
}
|
330 |
|
331 |
+
#lp-course-curriculum .lp-section-item input.lp-item-name {
|
332 |
color: #777;
|
333 |
border: none;
|
334 |
box-shadow: none;
|
341 |
white-space: nowrap;
|
342 |
}
|
343 |
|
344 |
+
#lp-course-curriculum .lp-section-describe {
|
345 |
border: none;
|
346 |
box-shadow: none;
|
347 |
color: #999;
|
351 |
padding-left: 0;
|
352 |
}
|
353 |
|
354 |
+
#lp-course-curriculum .curriculum-section-items .lp-section-item input.lp-item-name:focus,
|
355 |
+
#lp-course-curriculum input:focus {
|
356 |
color: #444;
|
357 |
}
|
358 |
|
359 |
+
#lp-course-curriculum .lp-section-item .section-item-icon {
|
360 |
width: 32px;
|
361 |
white-space: nowrap;
|
362 |
}
|
374 |
border: 1px solid transparent;
|
375 |
}
|
376 |
|
377 |
+
#lp-course-curriculum .lp-section-item .learn-press-icon.item-lp_quiz:before {
|
378 |
content: "\f469";
|
379 |
}
|
380 |
|
381 |
+
#lp-course-curriculum .lp-section-item .learn-press-icon.item-lp_lesson:before {
|
382 |
content: "\f330";
|
383 |
}
|
384 |
|
385 |
+
#lp-course-curriculum .lp-section-item .learn-press-icon.item-selected,
|
386 |
+
#lp-course-curriculum .lp-section-item[data-item_id=""] .learn-press-icon:hover {
|
387 |
}
|
388 |
|
389 |
+
#lp-course-curriculum .lp-section-item td {
|
390 |
height: 30px;
|
391 |
}
|
392 |
|
543 |
|
544 |
.learn-press-dropdown-item-types {
|
545 |
position: relative;
|
546 |
+
> ul {
|
547 |
+
display: none;
|
548 |
+
position: absolute;
|
549 |
+
top: 0px;
|
550 |
+
z-index: 10;
|
551 |
+
background: #FFF;
|
552 |
+
border: 1px solid #DDD;
|
553 |
+
left: 100%;
|
554 |
+
margin-left: -1px;
|
555 |
+
> li {
|
556 |
+
margin: 0;
|
557 |
+
display: table-cell;
|
558 |
+
span {
|
559 |
+
border-width: 0 !important;
|
560 |
+
}
|
561 |
+
}
|
562 |
+
}
|
|
|
|
|
|
|
563 |
}
|
564 |
|
565 |
tr[data-item_id=""] .learn-press-dropdown-item-types:hover > ul,
|
593 |
color: #0085ba;
|
594 |
}
|
595 |
|
596 |
+
.learn-press-course-attributes {
|
597 |
+
margin: 20px 0;
|
598 |
+
.course-attribute-taxonomy {
|
599 |
+
li {
|
600 |
|
601 |
+
}
|
602 |
+
}
|
603 |
+
}
|
604 |
|
605 |
.post-type-lp_course {
|
606 |
#switch-course-tabs,
|
608 |
float: right;
|
609 |
margin-left: 10px;
|
610 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
611 |
}
|
612 |
|
613 |
/*
|
{inc/libraries/meta-box/css/jqueryui → assets/less}/index.php
RENAMED
File without changes
|
assets/{css → less}/learnpress.less
RENAMED
@@ -1,3 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
@icon-url: '../fonts/lp-icons';
|
2 |
@font-face {
|
3 |
font-family: 'lp-icons';
|
@@ -304,6 +320,15 @@
|
|
304 |
}
|
305 |
}
|
306 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
.learn-press-notice .button {
|
308 |
float: right;
|
309 |
}
|
@@ -312,7 +337,7 @@
|
|
312 |
margin-bottom: 20px;
|
313 |
}
|
314 |
|
315 |
-
|
316 |
|
317 |
#learn-press-course-curriculum {
|
318 |
ul.curriculum-sections,
|
@@ -363,6 +388,7 @@
|
|
363 |
border-radius: 5px;
|
364 |
vertical-align: middle;
|
365 |
margin-left: 5px;
|
|
|
366 |
&:before {
|
367 |
content: "\ea0b";
|
368 |
margin: 0 auto;
|
@@ -404,6 +430,59 @@
|
|
404 |
.lp-icon {
|
405 |
display: none;
|
406 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
407 |
&.viewable {
|
408 |
cursor: pointer;
|
409 |
&:hover {
|
@@ -438,20 +517,7 @@
|
|
438 |
content: '';
|
439 |
}
|
440 |
}
|
441 |
-
|
442 |
-
display: inline-block;
|
443 |
-
background: #d6d6d6;
|
444 |
-
margin-left: 5px;
|
445 |
-
&:before {
|
446 |
-
content: '\ea10';
|
447 |
-
color: #FFF;
|
448 |
-
}
|
449 |
-
}
|
450 |
-
&.item-has-status.item-completed {
|
451 |
-
.item-status {
|
452 |
-
background: #95e6f9;
|
453 |
-
}
|
454 |
-
}
|
455 |
&.focus {
|
456 |
background: #ffb710;
|
457 |
&.off {
|
@@ -468,11 +534,19 @@
|
|
468 |
.course-item-meta {
|
469 |
display: block;
|
470 |
line-height: 1;
|
471 |
-
__position: absolute;
|
472 |
top: 15px;
|
473 |
right: 15px;
|
474 |
float: right;
|
475 |
margin-top: 5px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
476 |
}
|
477 |
}
|
478 |
|
@@ -570,6 +644,24 @@
|
|
570 |
.percentage-sign {
|
571 |
margin-left: 5px;
|
572 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
573 |
&:after {
|
574 |
display: block;
|
575 |
content: '';
|
@@ -699,7 +791,29 @@
|
|
699 |
}
|
700 |
}
|
701 |
|
702 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
703 |
|
704 |
#popup_overlay {
|
705 |
z-index: 10000000 !important;
|
@@ -945,7 +1059,7 @@ body.course-has-popup {
|
|
945 |
height: 43px;
|
946 |
line-height: 43px;
|
947 |
background: #F5F5F5;
|
948 |
-
margin:
|
949 |
border: 1px solid #DDD;
|
950 |
outline: none;
|
951 |
}
|
@@ -1031,7 +1145,6 @@ body.block-content {
|
|
1031 |
}
|
1032 |
|
1033 |
/* COURSE QUIZ */
|
1034 |
-
//.single-quiz {
|
1035 |
.quiz-buttons {
|
1036 |
margin-bottom: 20px;
|
1037 |
clear: both;
|
@@ -1040,6 +1153,10 @@ body.block-content {
|
|
1040 |
.quiz-intro {
|
1041 |
list-style: none;
|
1042 |
padding: 0;
|
|
|
|
|
|
|
|
|
1043 |
}
|
1044 |
|
1045 |
.quiz-questions-list {
|
@@ -1051,12 +1168,127 @@ body.block-content {
|
|
1051 |
}
|
1052 |
.question-title {
|
1053 |
margin: 0 0 5px 0;
|
|
|
|
|
1054 |
}
|
1055 |
.current {
|
1056 |
.question-title {
|
1057 |
font-weight: bold;
|
1058 |
}
|
1059 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1060 |
}
|
1061 |
|
1062 |
.quiz-description,
|
@@ -1077,7 +1309,6 @@ body.block-content {
|
|
1077 |
}
|
1078 |
|
1079 |
#quiz-countdown {
|
1080 |
-
//.progress-circle(@initialize: 100%, @size: 260px, @inside-size: 200px);
|
1081 |
.progress-circle {
|
1082 |
overflow: hidden;
|
1083 |
box-shadow: 0 0 3px #bdbdbd inset;
|
@@ -1309,8 +1540,9 @@ body.block-content {
|
|
1309 |
.learn-press-message {
|
1310 |
background: #F5F5F5;
|
1311 |
border-left: 5px solid #00A0D2;
|
1312 |
-
padding: 10px 20px
|
1313 |
margin-bottom: 20px;
|
|
|
1314 |
button {
|
1315 |
float: right;
|
1316 |
}
|
@@ -1409,7 +1641,20 @@ body.block-content {
|
|
1409 |
}
|
1410 |
|
1411 |
.learn-press-user-profile {
|
1412 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1413 |
.lp-edit-profile {
|
1414 |
&:after {
|
1415 |
.clearfix();
|
@@ -1419,6 +1664,7 @@ body.block-content {
|
|
1419 |
p {
|
1420 |
margin-top: 10px;
|
1421 |
}
|
|
|
1422 |
}
|
1423 |
.learn-press-tabs {
|
1424 |
list-style: none;
|
@@ -1524,9 +1770,8 @@ body.block-content {
|
|
1524 |
}
|
1525 |
}
|
1526 |
|
1527 |
-
|
1528 |
}
|
1529 |
-
.update-profile{
|
1530 |
border-top: 2px solid #DDD;
|
1531 |
padding-top: 20px;
|
1532 |
}
|
@@ -1537,10 +1782,10 @@ body.block-content {
|
|
1537 |
.moxie-shim {
|
1538 |
display: none;
|
1539 |
}
|
1540 |
-
.lp-form-field-avatar{
|
1541 |
float: left;
|
1542 |
}
|
1543 |
-
#lp-avatar-actions{
|
1544 |
margin: 20px 0;
|
1545 |
}
|
1546 |
}
|
@@ -1623,7 +1868,6 @@ body.block-content {
|
|
1623 |
display: block;
|
1624 |
}
|
1625 |
}
|
1626 |
-
|
1627 |
&.croping {
|
1628 |
.lp-avatar-preview-actions {
|
1629 |
display: none;
|
@@ -1760,6 +2004,14 @@ body {
|
|
1760 |
}
|
1761 |
}
|
1762 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1763 |
.single-lp_course {
|
1764 |
.course-summary {
|
1765 |
.lp_course {
|
@@ -1769,9 +2021,41 @@ body {
|
|
1769 |
}
|
1770 |
}
|
1771 |
.learn-press-message {
|
|
|
1772 |
clear: both;
|
1773 |
margin-top: 25px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1774 |
}
|
|
|
1775 |
}
|
1776 |
|
1777 |
/* tooltip */
|
@@ -1844,20 +2128,6 @@ body.content-item-only {
|
|
1844 |
}
|
1845 |
|
1846 |
/*
|
1847 |
-
.sidebar-hide-btn, .sidebar-show-btn {
|
1848 |
-
cursor: pointer;
|
1849 |
-
width: 60px;
|
1850 |
-
height: 60px;
|
1851 |
-
display: inline-block;
|
1852 |
-
font-size: 34px;
|
1853 |
-
line-height: 60px;
|
1854 |
-
text-align: center;
|
1855 |
-
color: #FFF;
|
1856 |
-
position: absolute;
|
1857 |
-
|
1858 |
-
|
1859 |
-
}*/
|
1860 |
-
|
1861 |
.payment-method-form {
|
1862 |
&.payment_method_authorizenet {
|
1863 |
background: #f7f7f7;
|
@@ -1888,7 +2158,7 @@ body.content-item-only {
|
|
1888 |
}
|
1889 |
}
|
1890 |
}
|
1891 |
-
}
|
1892 |
|
1893 |
.place-order-action {
|
1894 |
margin-top: 20px;
|
@@ -1924,8 +2194,16 @@ body.content-item-only {
|
|
1924 |
}
|
1925 |
}
|
1926 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1927 |
/* Shortcode/Widgets */
|
1928 |
-
.
|
1929 |
.course-meta-data {
|
1930 |
> div {
|
1931 |
display: inline-block;
|
@@ -1943,6 +2221,119 @@ body.content-item-only {
|
|
1943 |
}
|
1944 |
.course-entry {
|
1945 |
margin-bottom: 20px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1946 |
}
|
1947 |
}
|
1948 |
|
@@ -2078,6 +2469,7 @@ body.content-item-only {
|
|
2078 |
|
2079 |
}
|
2080 |
|
|
|
2081 |
@media (max-width: 480px) {
|
2082 |
.woocommerce {
|
2083 |
.checkout_coupon {
|
@@ -2087,7 +2479,7 @@ body.content-item-only {
|
|
2087 |
}
|
2088 |
}
|
2089 |
}
|
2090 |
-
|
2091 |
@media (max-width: 400px) {
|
2092 |
|
2093 |
.learn-press-courses {
|
@@ -2120,6 +2512,7 @@ body.content-item-only {
|
|
2120 |
}
|
2121 |
}
|
2122 |
|
|
|
2123 |
@media screen and (max-width: 615px) {
|
2124 |
.payment-method-form {
|
2125 |
&.payment_method_authorizenet {
|
@@ -2150,3 +2543,4 @@ body.content-item-only {
|
|
2150 |
}
|
2151 |
}
|
2152 |
}
|
|
1 |
+
/*
|
2 |
+
- PROGRESS CIRCLE
|
3 |
+
- Archive courses
|
4 |
+
- Course Curriculum
|
5 |
+
- BREADCRUMB
|
6 |
+
- COURSE PROGRESS
|
7 |
+
- COURSE TABS
|
8 |
+
- POPUP STYLE
|
9 |
+
- COURSE QUIZ
|
10 |
+
- Form field
|
11 |
+
- jAlerts
|
12 |
+
- tooltip
|
13 |
+
- fill in blank
|
14 |
+
- Shortcode/Widgets
|
15 |
+
*/
|
16 |
+
|
17 |
@icon-url: '../fonts/lp-icons';
|
18 |
@font-face {
|
19 |
font-family: 'lp-icons';
|
320 |
}
|
321 |
}
|
322 |
|
323 |
+
.course-origin-price {
|
324 |
+
text-decoration: line-through;
|
325 |
+
padding-right: 5px;
|
326 |
+
}
|
327 |
+
|
328 |
+
.course-price {
|
329 |
+
color: rgb(84, 181, 81);
|
330 |
+
}
|
331 |
+
|
332 |
.learn-press-notice .button {
|
333 |
float: right;
|
334 |
}
|
337 |
margin-bottom: 20px;
|
338 |
}
|
339 |
|
340 |
+
/* Course Curriculum */
|
341 |
|
342 |
#learn-press-course-curriculum {
|
343 |
ul.curriculum-sections,
|
388 |
border-radius: 5px;
|
389 |
vertical-align: middle;
|
390 |
margin-left: 5px;
|
391 |
+
font-size: 10px;
|
392 |
&:before {
|
393 |
content: "\ea0b";
|
394 |
margin: 0 auto;
|
430 |
.lp-icon {
|
431 |
display: none;
|
432 |
}
|
433 |
+
.item-status {
|
434 |
+
display: none;
|
435 |
+
font-family: dashicons;
|
436 |
+
.border-radius(4px);
|
437 |
+
background: #DDD;
|
438 |
+
color: #22b4ff;
|
439 |
+
font-size: 18px;
|
440 |
+
&:before {
|
441 |
+
content: "\f177";
|
442 |
+
}
|
443 |
+
&.item-status-viewed {
|
444 |
+
|
445 |
+
}
|
446 |
+
&.item-status-started {
|
447 |
+
&:before {
|
448 |
+
content: "\f469";
|
449 |
+
}
|
450 |
+
}
|
451 |
+
&.item-status-completed {
|
452 |
+
background: #22b4ff;
|
453 |
+
color: #FFF;
|
454 |
+
&:before {
|
455 |
+
content: "\f147";
|
456 |
+
}
|
457 |
+
}
|
458 |
+
&.item-status-passed {
|
459 |
+
background: #22b4ff;
|
460 |
+
color: #FFF;
|
461 |
+
&:before {
|
462 |
+
content: "\f147";
|
463 |
+
}
|
464 |
+
}
|
465 |
+
&.item-status-failed {
|
466 |
+
background: #cc540d;
|
467 |
+
color: #FFF;
|
468 |
+
&:before {
|
469 |
+
content: "\f335";
|
470 |
+
}
|
471 |
+
}
|
472 |
+
}
|
473 |
+
.item-result {
|
474 |
+
display: none;
|
475 |
+
}
|
476 |
+
&.item-has-status {
|
477 |
+
.item-status {
|
478 |
+
display: inline-block;
|
479 |
+
}
|
480 |
+
}
|
481 |
+
&.item-has-result {
|
482 |
+
.item-result {
|
483 |
+
display: inline-block;
|
484 |
+
}
|
485 |
+
}
|
486 |
&.viewable {
|
487 |
cursor: pointer;
|
488 |
&:hover {
|
517 |
content: '';
|
518 |
}
|
519 |
}
|
520 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
521 |
&.focus {
|
522 |
background: #ffb710;
|
523 |
&.off {
|
534 |
.course-item-meta {
|
535 |
display: block;
|
536 |
line-height: 1;
|
|
|
537 |
top: 15px;
|
538 |
right: 15px;
|
539 |
float: right;
|
540 |
margin-top: 5px;
|
541 |
+
.item-loop-meta-text {
|
542 |
+
font-size: small;
|
543 |
+
&.item-final {
|
544 |
+
color: #ffffff;
|
545 |
+
background: #cc540d;
|
546 |
+
padding: 3px 8px;
|
547 |
+
.border-radius(3px);
|
548 |
+
}
|
549 |
+
}
|
550 |
}
|
551 |
}
|
552 |
|
644 |
.percentage-sign {
|
645 |
margin-left: 5px;
|
646 |
}
|
647 |
+
.grade {
|
648 |
+
font-size: 12px;
|
649 |
+
font-weight: bold;
|
650 |
+
background: #F5F5F5;
|
651 |
+
padding: 2px 7px;
|
652 |
+
.border-radius(3px);
|
653 |
+
&.in-progress {
|
654 |
+
|
655 |
+
}
|
656 |
+
&.passed {
|
657 |
+
color: #ffffff;
|
658 |
+
background: #95e6f9;
|
659 |
+
}
|
660 |
+
&.failed {
|
661 |
+
color: #ffffff;
|
662 |
+
background: #ff5425;
|
663 |
+
}
|
664 |
+
}
|
665 |
&:after {
|
666 |
display: block;
|
667 |
content: '';
|
791 |
}
|
792 |
}
|
793 |
|
794 |
+
.learn-press-course-buttons {
|
795 |
+
|
796 |
+
a.button {
|
797 |
+
display: inline-block;
|
798 |
+
font-size: 16px;
|
799 |
+
background: #1a1a1a;
|
800 |
+
border: 0;
|
801 |
+
border-radius: 2px;
|
802 |
+
color: #fff;
|
803 |
+
font-family: Montserrat, "Helvetica Neue", sans-serif;
|
804 |
+
font-weight: 700;
|
805 |
+
letter-spacing: 0.046875em;
|
806 |
+
line-height: 1;
|
807 |
+
padding: 0.84375em 0.875em 0.78125em;
|
808 |
+
text-transform: uppercase;
|
809 |
+
|
810 |
+
&:hover {
|
811 |
+
background: #007acc;
|
812 |
+
}
|
813 |
+
}
|
814 |
+
}
|
815 |
+
|
816 |
+
/* POPUP STYLE */
|
817 |
|
818 |
#popup_overlay {
|
819 |
z-index: 10000000 !important;
|
1059 |
height: 43px;
|
1060 |
line-height: 43px;
|
1061 |
background: #F5F5F5;
|
1062 |
+
margin-left: 10px;
|
1063 |
border: 1px solid #DDD;
|
1064 |
outline: none;
|
1065 |
}
|
1145 |
}
|
1146 |
|
1147 |
/* COURSE QUIZ */
|
|
|
1148 |
.quiz-buttons {
|
1149 |
margin-bottom: 20px;
|
1150 |
clear: both;
|
1153 |
.quiz-intro {
|
1154 |
list-style: none;
|
1155 |
padding: 0;
|
1156 |
+
margin-left: 0;
|
1157 |
+
li label {
|
1158 |
+
display: inline-block;
|
1159 |
+
}
|
1160 |
}
|
1161 |
|
1162 |
.quiz-questions-list {
|
1168 |
}
|
1169 |
.question-title {
|
1170 |
margin: 0 0 5px 0;
|
1171 |
+
display: inline-block;
|
1172 |
+
font-size: 14px;
|
1173 |
}
|
1174 |
.current {
|
1175 |
.question-title {
|
1176 |
font-weight: bold;
|
1177 |
}
|
1178 |
}
|
1179 |
+
input[type="checkbox"], input[type="radio"] {
|
1180 |
+
border: 1px solid #DDD;
|
1181 |
+
display: inline-block;
|
1182 |
+
-webkit-appearance: none;
|
1183 |
+
width: 18px;
|
1184 |
+
height: 18px;
|
1185 |
+
position: relative;
|
1186 |
+
&:checked {
|
1187 |
+
&:after {
|
1188 |
+
content: '';
|
1189 |
+
display: inline-block;
|
1190 |
+
position: absolute;
|
1191 |
+
}
|
1192 |
+
}
|
1193 |
+
}
|
1194 |
+
input[type="checkbox"]:checked {
|
1195 |
+
&:after {
|
1196 |
+
border-bottom: 3px solid #00b9eb;
|
1197 |
+
border-right: 1px solid #00b9eb;
|
1198 |
+
-webkit-transform: rotate(14deg);
|
1199 |
+
-moz-transform: rotate(14deg);
|
1200 |
+
-ms-transform: rotate(14deg);
|
1201 |
+
-o-transform: rotate(14deg);
|
1202 |
+
transform: rotate(33deg);
|
1203 |
+
width: 8px;
|
1204 |
+
height: 16px;
|
1205 |
+
|
1206 |
+
top: -5px;
|
1207 |
+
left: 5px;
|
1208 |
+
}
|
1209 |
+
}
|
1210 |
+
input[type="checkbox"] {
|
1211 |
+
&:disabled {
|
1212 |
+
&:after {
|
1213 |
+
border-color: #DDD;
|
1214 |
+
}
|
1215 |
+
}
|
1216 |
+
}
|
1217 |
+
input[type="radio"] {
|
1218 |
+
-webkit-border-radius: 50%;
|
1219 |
+
-moz-border-radius: 50%;
|
1220 |
+
border-radius: 50%;
|
1221 |
+
&:checked {
|
1222 |
+
&:after {
|
1223 |
+
background: #00b9eb;
|
1224 |
+
width: 8px;
|
1225 |
+
height: 8px;
|
1226 |
+
border-radius: 50%;
|
1227 |
+
top: 50%;
|
1228 |
+
left: 50%;
|
1229 |
+
margin-left: -4px;
|
1230 |
+
margin-top: -4px;
|
1231 |
+
}
|
1232 |
+
}
|
1233 |
+
&:disabled {
|
1234 |
+
&:after {
|
1235 |
+
background: #DDD;
|
1236 |
+
}
|
1237 |
+
}
|
1238 |
+
}
|
1239 |
+
}
|
1240 |
+
|
1241 |
+
.question-results {
|
1242 |
+
.question-title {
|
1243 |
+
&:after {
|
1244 |
+
font-family: dashicons;
|
1245 |
+
font-size: 24px;
|
1246 |
+
vertical-align: middle;
|
1247 |
+
display: inline-block;
|
1248 |
+
text-align: center;
|
1249 |
+
margin-left: 5px;
|
1250 |
+
}
|
1251 |
+
}
|
1252 |
+
&.correct {
|
1253 |
+
.question-title {
|
1254 |
+
&:after {
|
1255 |
+
content: '\f147';
|
1256 |
+
color: #00adff;
|
1257 |
+
}
|
1258 |
+
}
|
1259 |
+
}
|
1260 |
+
&.skipped {
|
1261 |
+
.question-title {
|
1262 |
+
&:after {
|
1263 |
+
content: '\f534';
|
1264 |
+
color: #c6c6c6;
|
1265 |
+
}
|
1266 |
+
}
|
1267 |
+
}
|
1268 |
+
&.incorrect {
|
1269 |
+
.question-title {
|
1270 |
+
&:after {
|
1271 |
+
content: '\f335';
|
1272 |
+
color: #ff5425;
|
1273 |
+
}
|
1274 |
+
}
|
1275 |
+
.user-answer-false {
|
1276 |
+
.option-title {
|
1277 |
+
text-decoration: line-through;
|
1278 |
+
}
|
1279 |
+
}
|
1280 |
+
}
|
1281 |
+
.answer-true {
|
1282 |
+
color: #007acc;
|
1283 |
+
.option-title {
|
1284 |
+
background: #fff9d8;
|
1285 |
+
padding: 0 5px;
|
1286 |
+
margin-left: -5px;
|
1287 |
+
}
|
1288 |
+
}
|
1289 |
+
input {
|
1290 |
+
vertical-align: middle;
|
1291 |
+
}
|
1292 |
}
|
1293 |
|
1294 |
.quiz-description,
|
1309 |
}
|
1310 |
|
1311 |
#quiz-countdown {
|
|
|
1312 |
.progress-circle {
|
1313 |
overflow: hidden;
|
1314 |
box-shadow: 0 0 3px #bdbdbd inset;
|
1540 |
.learn-press-message {
|
1541 |
background: #F5F5F5;
|
1542 |
border-left: 5px solid #00A0D2;
|
1543 |
+
padding: 10px 20px 0px 20px;
|
1544 |
margin-bottom: 20px;
|
1545 |
+
overflow: hidden;
|
1546 |
button {
|
1547 |
float: right;
|
1548 |
}
|
1641 |
}
|
1642 |
|
1643 |
.learn-press-user-profile {
|
1644 |
+
#learn-press-user-info{
|
1645 |
+
overflow: hidden;
|
1646 |
+
.user-avatar {
|
1647 |
+
width: 150px;
|
1648 |
+
float: left;
|
1649 |
+
.avatar {
|
1650 |
+
border-radius: 0;
|
1651 |
+
width: 100%;
|
1652 |
+
}
|
1653 |
+
}
|
1654 |
+
.user-basic-info{
|
1655 |
+
margin-left: 170px;
|
1656 |
+
}
|
1657 |
+
}
|
1658 |
.lp-edit-profile {
|
1659 |
&:after {
|
1660 |
.clearfix();
|
1664 |
p {
|
1665 |
margin-top: 10px;
|
1666 |
}
|
1667 |
+
|
1668 |
}
|
1669 |
.learn-press-tabs {
|
1670 |
list-style: none;
|
1770 |
}
|
1771 |
}
|
1772 |
|
|
|
1773 |
}
|
1774 |
+
.update-profile {
|
1775 |
border-top: 2px solid #DDD;
|
1776 |
padding-top: 20px;
|
1777 |
}
|
1782 |
.moxie-shim {
|
1783 |
display: none;
|
1784 |
}
|
1785 |
+
.lp-form-field-avatar {
|
1786 |
float: left;
|
1787 |
}
|
1788 |
+
#lp-avatar-actions {
|
1789 |
margin: 20px 0;
|
1790 |
}
|
1791 |
}
|
1868 |
display: block;
|
1869 |
}
|
1870 |
}
|
|
|
1871 |
&.croping {
|
1872 |
.lp-avatar-preview-actions {
|
1873 |
display: none;
|
2004 |
}
|
2005 |
}
|
2006 |
|
2007 |
+
.learn-press-auto-redirect-next-item {
|
2008 |
+
display: none;
|
2009 |
+
|
2010 |
+
&.active {
|
2011 |
+
display: block;
|
2012 |
+
}
|
2013 |
+
}
|
2014 |
+
|
2015 |
.single-lp_course {
|
2016 |
.course-summary {
|
2017 |
.lp_course {
|
2021 |
}
|
2022 |
}
|
2023 |
.learn-press-message {
|
2024 |
+
position: relative;
|
2025 |
clear: both;
|
2026 |
margin-top: 25px;
|
2027 |
+
|
2028 |
+
.learn-press-countdown {
|
2029 |
+
display: inline-block;
|
2030 |
+
width: 1.5em;
|
2031 |
+
height: 1.5em;
|
2032 |
+
background: #cc540d;
|
2033 |
+
text-align: center;
|
2034 |
+
border-radius: 50%;
|
2035 |
+
line-height: 1.5em;
|
2036 |
+
font-size: 0.8em;
|
2037 |
+
color: #fff;
|
2038 |
+
}
|
2039 |
+
.learnpress-dismiss-notice {
|
2040 |
+
display: inline-block;
|
2041 |
+
position: absolute;
|
2042 |
+
right: 1em;
|
2043 |
+
top: 50%;
|
2044 |
+
-ms-transform: translateY(-50%);
|
2045 |
+
-webkit-transform: translateY(-50%);
|
2046 |
+
transform: translateY(-50%);
|
2047 |
+
cursor: pointer;
|
2048 |
+
|
2049 |
+
&:before {
|
2050 |
+
font-size: 1.2em;
|
2051 |
+
color: red;
|
2052 |
+
content: "\f153";
|
2053 |
+
font-family: dashicons;
|
2054 |
+
}
|
2055 |
+
}
|
2056 |
+
|
2057 |
}
|
2058 |
+
|
2059 |
}
|
2060 |
|
2061 |
/* tooltip */
|
2128 |
}
|
2129 |
|
2130 |
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2131 |
.payment-method-form {
|
2132 |
&.payment_method_authorizenet {
|
2133 |
background: #f7f7f7;
|
2158 |
}
|
2159 |
}
|
2160 |
}
|
2161 |
+
}*/
|
2162 |
|
2163 |
.place-order-action {
|
2164 |
margin-top: 20px;
|
2194 |
}
|
2195 |
}
|
2196 |
|
2197 |
+
.table-orders {
|
2198 |
+
.order-status {
|
2199 |
+
&.order-status-removed {
|
2200 |
+
color: #FF0000;
|
2201 |
+
}
|
2202 |
+
}
|
2203 |
+
}
|
2204 |
+
|
2205 |
/* Shortcode/Widgets */
|
2206 |
+
.widget_lp-widget-popular-courses, .widget_lp-widget-recent-courses, .widget_lp-widget-featured-courses {
|
2207 |
.course-meta-data {
|
2208 |
> div {
|
2209 |
display: inline-block;
|
2221 |
}
|
2222 |
.course-entry {
|
2223 |
margin-bottom: 20px;
|
2224 |
+
border-bottom: 1px dashed #DDD;
|
2225 |
+
padding-bottom: 20px;
|
2226 |
+
}
|
2227 |
+
}
|
2228 |
+
|
2229 |
+
.edit-course-item-link {
|
2230 |
+
a {
|
2231 |
+
font-size: 14px;
|
2232 |
+
position: relative;
|
2233 |
+
padding-left: 25px;
|
2234 |
+
&:after {
|
2235 |
+
content: "\f464";
|
2236 |
+
font-family: Dashicons;
|
2237 |
+
font-size: 26px;
|
2238 |
+
position: absolute;
|
2239 |
+
bottom: 0;
|
2240 |
+
line-height: 1;
|
2241 |
+
left: 0;
|
2242 |
+
}
|
2243 |
+
}
|
2244 |
+
}
|
2245 |
+
|
2246 |
+
.course-item-navigation {
|
2247 |
+
border-top: 4px solid #333;
|
2248 |
+
padding-top: 10px;
|
2249 |
+
margin-top: 20px;
|
2250 |
+
.nav-links {
|
2251 |
+
.nav-link {
|
2252 |
+
opacity: 1;
|
2253 |
+
a {
|
2254 |
+
opacity: 1;
|
2255 |
+
.meta-nav {
|
2256 |
+
display: block;
|
2257 |
+
text-transform: uppercase;
|
2258 |
+
font-size: small;
|
2259 |
+
color: #b9b9b9;
|
2260 |
+
}
|
2261 |
+
.post-title {
|
2262 |
+
opacity: 1;
|
2263 |
+
}
|
2264 |
+
}
|
2265 |
+
&.nav-previous {
|
2266 |
+
float: left;
|
2267 |
+
}
|
2268 |
+
&.nav-next {
|
2269 |
+
float: right;
|
2270 |
+
text-align: right;
|
2271 |
+
}
|
2272 |
+
}
|
2273 |
+
&:after {
|
2274 |
+
clear: both;
|
2275 |
+
display: block;
|
2276 |
+
content: '';
|
2277 |
+
}
|
2278 |
+
}
|
2279 |
+
}
|
2280 |
+
|
2281 |
+
/* widget attributes */
|
2282 |
+
.lp-course-attributes {
|
2283 |
+
list-style: none;
|
2284 |
+
margin-left: 0;
|
2285 |
+
li {
|
2286 |
+
list-style: none;
|
2287 |
+
margin-bottom: 10px;
|
2288 |
+
}
|
2289 |
+
.lp-course-attribute-values {
|
2290 |
+
list-style: none;
|
2291 |
+
margin-left: 0;
|
2292 |
+
}
|
2293 |
+
&.course-attributes {
|
2294 |
+
.lp-course-attribute-values {
|
2295 |
+
li {
|
2296 |
+
display: inline-block;
|
2297 |
+
padding: 3px 8px;
|
2298 |
+
background: #F0F0F0;
|
2299 |
+
border-radius: 4px;
|
2300 |
+
margin: 0 5px 5px 0;
|
2301 |
+
}
|
2302 |
+
}
|
2303 |
+
}
|
2304 |
+
&.course-filters {
|
2305 |
+
.lp-course-attribute-values {
|
2306 |
+
li {
|
2307 |
+
a:before {
|
2308 |
+
font-family: dashicons;
|
2309 |
+
border-radius: 50%;
|
2310 |
+
background: #DDD;
|
2311 |
+
display: inline-block;
|
2312 |
+
width: 16px;
|
2313 |
+
height: 16px;
|
2314 |
+
text-align: center;
|
2315 |
+
line-height: 16px;
|
2316 |
+
color: #FFF;
|
2317 |
+
font-size: 16px;
|
2318 |
+
vertical-align: middle;
|
2319 |
+
margin-right: 5px;
|
2320 |
+
content: '';
|
2321 |
+
}
|
2322 |
+
&:hover a:before {
|
2323 |
+
background: #4acfff;
|
2324 |
+
}
|
2325 |
+
}
|
2326 |
+
li.active {
|
2327 |
+
a:before {
|
2328 |
+
content: "\f147";
|
2329 |
+
background: #4acfff;
|
2330 |
+
}
|
2331 |
+
&:hover a:before {
|
2332 |
+
content: "\f335";
|
2333 |
+
background: #a20000;
|
2334 |
+
}
|
2335 |
+
}
|
2336 |
+
}
|
2337 |
}
|
2338 |
}
|
2339 |
|
2469 |
|
2470 |
}
|
2471 |
|
2472 |
+
/*
|
2473 |
@media (max-width: 480px) {
|
2474 |
.woocommerce {
|
2475 |
.checkout_coupon {
|
2479 |
}
|
2480 |
}
|
2481 |
}
|
2482 |
+
*/
|
2483 |
@media (max-width: 400px) {
|
2484 |
|
2485 |
.learn-press-courses {
|
2512 |
}
|
2513 |
}
|
2514 |
|
2515 |
+
/*
|
2516 |
@media screen and (max-width: 615px) {
|
2517 |
.payment-method-form {
|
2518 |
&.payment_method_authorizenet {
|
2543 |
}
|
2544 |
}
|
2545 |
}
|
2546 |
+
*/
|
inc/admin/class-lp-admin-ajax.php
CHANGED
@@ -54,7 +54,9 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
54 |
'duplicate_course' => false,
|
55 |
'duplicate_question' => false,
|
56 |
// Remove Notice
|
57 |
-
'remove_notice_popup' => false
|
|
|
|
|
58 |
);
|
59 |
foreach ( $ajaxEvents as $ajaxEvent => $nopriv ) {
|
60 |
add_action( 'wp_ajax_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );
|
@@ -63,8 +65,14 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
63 |
add_action( 'wp_ajax_nopriv_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );
|
64 |
}
|
65 |
}
|
66 |
-
add_filter( 'learn_press_modal_search_items_exclude', array(
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
do_action( 'learn_press_admin_ajax_load', __CLASS__ );
|
69 |
}
|
70 |
|
@@ -211,42 +219,56 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
211 |
$message .= '<a target="_blank" href="' . admin_url( 'post-new.php?post_type=lp_question' ) . '">' . esc_html__( 'Adding New Item.', 'learnpress' ) . '</a>';
|
212 |
break;
|
213 |
}
|
|
|
214 |
return $message;
|
215 |
}
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
public static function _modal_search_items_exclude( $exclude, $type, $context = '', $context_id = null ) {
|
218 |
global $wpdb;
|
219 |
-
$
|
220 |
-
$user = learn_press_get_current_user();
|
221 |
switch ( $type ) {
|
222 |
case 'lp_lesson':
|
223 |
case 'lp_quiz':
|
224 |
-
$query
|
225 |
SELECT item_id
|
226 |
-
FROM {$wpdb->prefix}learnpress_section_items
|
|
|
|
|
227 |
WHERE %d
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
$course_author = get_post_field( 'post_author', $context_id );
|
232 |
-
}
|
233 |
break;
|
234 |
case 'lp_question':
|
235 |
-
$query
|
236 |
SELECT question_id
|
237 |
-
FROM {$wpdb->prefix}learnpress_quiz_questions
|
|
|
238 |
WHERE %d
|
239 |
-
|
240 |
-
|
|
|
241 |
break;
|
242 |
|
243 |
}
|
244 |
-
if ( $
|
245 |
-
$exclude = array_merge( $exclude, $
|
246 |
-
} else if ( $
|
247 |
-
$exclude = $
|
248 |
}
|
249 |
-
|
|
|
250 |
}
|
251 |
|
252 |
public static function add_item_to_section() {
|
@@ -272,6 +294,19 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
272 |
$type = (string) ( stripslashes( learn_press_get_request( 'type' ) ) );
|
273 |
$context = (string) ( stripslashes( learn_press_get_request( 'context' ) ) );
|
274 |
$context_id = (string) ( stripslashes( learn_press_get_request( 'context_id' ) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
$exclude = array();
|
276 |
|
277 |
if ( !empty( $_GET['exclude'] ) ) {
|
@@ -298,7 +333,12 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
298 |
*/
|
299 |
case 'course-items':
|
300 |
if ( get_post_type( $context_id ) == 'lp_course' ) {
|
301 |
-
$
|
|
|
|
|
|
|
|
|
|
|
302 |
}
|
303 |
break;
|
304 |
/**
|
@@ -306,7 +346,13 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
306 |
*/
|
307 |
case 'quiz-items':
|
308 |
if ( get_post_type( $context_id ) == 'lp_quiz' ) {
|
309 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
}
|
311 |
break;
|
312 |
}
|
@@ -314,22 +360,34 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
314 |
if ( $term ) {
|
315 |
$args['s'] = $term;
|
316 |
}
|
317 |
-
|
318 |
$posts = get_posts( $args );
|
319 |
$found_items = array();
|
320 |
|
321 |
if ( !empty( $posts ) ) {
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
}
|
327 |
|
|
|
|
|
328 |
ob_start();
|
329 |
if ( $found_items ) {
|
330 |
foreach ( $found_items as $id => $item ) {
|
331 |
printf( '
|
332 |
-
|
333 |
<label>
|
334 |
<input type="checkbox" value="%1$d">
|
335 |
<span class="lp-item-text">%2$s</span>
|
@@ -767,13 +825,13 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
767 |
$post = get_post( $quiz_id );
|
768 |
setup_postdata( $post );
|
769 |
if ( !$id ) {
|
770 |
-
$
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
'post_status' => 'publish'
|
775 |
-
)
|
776 |
);
|
|
|
|
|
777 |
if ( $id ) {
|
778 |
add_post_meta( $id, '_lp_type', $type );
|
779 |
}
|
@@ -823,8 +881,8 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
823 |
$question_types[$to] = !empty( $question_types[$to] ) && $question_types[$to] ? absint( $question_types[$to] ) + 1 : 1;
|
824 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
825 |
// end trigger change user memorize question types
|
826 |
-
if('auto-draft'=== $question->post->post_status){
|
827 |
-
$question->answers = $question->get_default_answers(false);
|
828 |
}
|
829 |
learn_press_send_json(
|
830 |
array(
|
@@ -1133,7 +1191,23 @@ if ( !class_exists( 'LP_Admin_Ajax' ) ) {
|
|
1133 |
|
1134 |
}
|
1135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1136 |
}
|
1137 |
}
|
1138 |
LP_Admin_Ajax::init();
|
1139 |
-
|
54 |
'duplicate_course' => false,
|
55 |
'duplicate_question' => false,
|
56 |
// Remove Notice
|
57 |
+
'remove_notice_popup' => false,
|
58 |
+
// Update order status
|
59 |
+
'update_order_status' => false,
|
60 |
);
|
61 |
foreach ( $ajaxEvents as $ajaxEvent => $nopriv ) {
|
62 |
add_action( 'wp_ajax_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );
|
65 |
add_action( 'wp_ajax_nopriv_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );
|
66 |
}
|
67 |
}
|
68 |
+
add_filter( 'learn_press_modal_search_items_exclude', array(
|
69 |
+
__CLASS__,
|
70 |
+
'_modal_search_items_exclude'
|
71 |
+
), 10, 4 );
|
72 |
+
add_filter( 'learn_press_modal_search_items_not_found', array(
|
73 |
+
__CLASS__,
|
74 |
+
'_modal_search_items_not_found'
|
75 |
+
), 10, 2 );
|
76 |
do_action( 'learn_press_admin_ajax_load', __CLASS__ );
|
77 |
}
|
78 |
|
219 |
$message .= '<a target="_blank" href="' . admin_url( 'post-new.php?post_type=lp_question' ) . '">' . esc_html__( 'Adding New Item.', 'learnpress' ) . '</a>';
|
220 |
break;
|
221 |
}
|
222 |
+
|
223 |
return $message;
|
224 |
}
|
225 |
|
226 |
+
/**
|
227 |
+
* Filter to exclude the items has already added to it's parent.
|
228 |
+
* Each item only use one time
|
229 |
+
*
|
230 |
+
* @param $exclude
|
231 |
+
* @param $type
|
232 |
+
* @param string $context
|
233 |
+
* @param null $context_id
|
234 |
+
*
|
235 |
+
* @return array
|
236 |
+
*/
|
237 |
public static function _modal_search_items_exclude( $exclude, $type, $context = '', $context_id = null ) {
|
238 |
global $wpdb;
|
239 |
+
$used_items = array();
|
|
|
240 |
switch ( $type ) {
|
241 |
case 'lp_lesson':
|
242 |
case 'lp_quiz':
|
243 |
+
$query = $wpdb->prepare( "
|
244 |
SELECT item_id
|
245 |
+
FROM {$wpdb->prefix}learnpress_section_items si
|
246 |
+
INNER JOIN {$wpdb->prefix}learnpress_sections s ON s.section_id = si.section_id
|
247 |
+
INNER JOIN {$wpdb->posts} p ON p.ID = s.section_course_id
|
248 |
WHERE %d
|
249 |
+
AND p.post_type = %s
|
250 |
+
", 1, LP_COURSE_CPT );
|
251 |
+
$used_items = $wpdb->get_col( $query );
|
|
|
|
|
252 |
break;
|
253 |
case 'lp_question':
|
254 |
+
$query = $wpdb->prepare( "
|
255 |
SELECT question_id
|
256 |
+
FROM {$wpdb->prefix}learnpress_quiz_questions qq
|
257 |
+
INNER JOIN {$wpdb->posts} q ON q.ID = qq.quiz_id
|
258 |
WHERE %d
|
259 |
+
AND q.post_type = %s
|
260 |
+
", 1, LP_QUIZ_CPT );
|
261 |
+
$used_items = $wpdb->get_col( $query );
|
262 |
break;
|
263 |
|
264 |
}
|
265 |
+
if ( $used_items && $exclude ) {
|
266 |
+
$exclude = array_merge( $exclude, $used_items );
|
267 |
+
} else if ( $used_items ) {
|
268 |
+
$exclude = $used_items;
|
269 |
}
|
270 |
+
|
271 |
+
return array_unique( $exclude );
|
272 |
}
|
273 |
|
274 |
public static function add_item_to_section() {
|
294 |
$type = (string) ( stripslashes( learn_press_get_request( 'type' ) ) );
|
295 |
$context = (string) ( stripslashes( learn_press_get_request( 'context' ) ) );
|
296 |
$context_id = (string) ( stripslashes( learn_press_get_request( 'context_id' ) ) );
|
297 |
+
$current_items_in_order = learn_press_get_request( 'current_items' );
|
298 |
+
$current_items = array();
|
299 |
+
|
300 |
+
|
301 |
+
foreach ($current_items_in_order as $item) {
|
302 |
+
$sql = "SELECT meta_value
|
303 |
+
FROM {$wpdb->prefix}learnpress_order_itemmeta
|
304 |
+
WHERE meta_key = '_course_id'
|
305 |
+
AND learnpress_order_item_id = $item";
|
306 |
+
$id = $wpdb->get_results( $sql, OBJECT );
|
307 |
+
array_push($current_items, $id[0]->meta_value);
|
308 |
+
}
|
309 |
+
|
310 |
$exclude = array();
|
311 |
|
312 |
if ( !empty( $_GET['exclude'] ) ) {
|
333 |
*/
|
334 |
case 'course-items':
|
335 |
if ( get_post_type( $context_id ) == 'lp_course' ) {
|
336 |
+
$post_author = get_post_field( 'post_author', $context_id );
|
337 |
+
$authors = array($post_author);
|
338 |
+
if($post_author != $user->id ){
|
339 |
+
$authors[] =$user->id;
|
340 |
+
}
|
341 |
+
$args['author'] = $authors;
|
342 |
}
|
343 |
break;
|
344 |
/**
|
346 |
*/
|
347 |
case 'quiz-items':
|
348 |
if ( get_post_type( $context_id ) == 'lp_quiz' ) {
|
349 |
+
$post_author = get_post_field( 'post_author', $context_id );
|
350 |
+
$authors = array($post_author);
|
351 |
+
if($post_author != $user->id ){
|
352 |
+
$authors[] =$user->id;
|
353 |
+
}
|
354 |
+
$args['author'] = $authors;
|
355 |
+
//$args['author'] = get_post_field( 'post_author', $context_id );
|
356 |
}
|
357 |
break;
|
358 |
}
|
360 |
if ( $term ) {
|
361 |
$args['s'] = $term;
|
362 |
}
|
363 |
+
$args = apply_filters('learn_press_filter_admin_ajax_modal_search_items_args', $args, $context, $context_id );
|
364 |
$posts = get_posts( $args );
|
365 |
$found_items = array();
|
366 |
|
367 |
if ( !empty( $posts ) ) {
|
368 |
+
if ($current_items_in_order) {
|
369 |
+
foreach ( $posts as $post ) {
|
370 |
+
if (in_array($post->ID, $current_items)) {
|
371 |
+
continue;
|
372 |
+
}
|
373 |
+
$found_items[$post->ID] = $post;
|
374 |
+
$found_items[$post->ID]->post_title = !empty( $post->post_title ) ? $post->post_title : sprintf( '(%s)', __( 'Untitled', 'learnpress' ) );
|
375 |
+
}
|
376 |
+
} else {
|
377 |
+
foreach ( $posts as $post ) {
|
378 |
+
$found_items[$post->ID] = $post;
|
379 |
+
$found_items[$post->ID]->post_title = !empty( $post->post_title ) ? $post->post_title : sprintf( '(%s)', __( 'Untitled', 'learnpress' ) );
|
380 |
+
}
|
381 |
+
}
|
382 |
}
|
383 |
|
384 |
+
|
385 |
+
|
386 |
ob_start();
|
387 |
if ( $found_items ) {
|
388 |
foreach ( $found_items as $id => $item ) {
|
389 |
printf( '
|
390 |
+
<li class="" data-id="%1$d" data-type="%3$s" data-text="%2$s">
|
391 |
<label>
|
392 |
<input type="checkbox" value="%1$d">
|
393 |
<span class="lp-item-text">%2$s</span>
|
825 |
$post = get_post( $quiz_id );
|
826 |
setup_postdata( $post );
|
827 |
if ( !$id ) {
|
828 |
+
$args_item = array(
|
829 |
+
'post_title' => $name,
|
830 |
+
'post_type' => LP_QUESTION_CPT,
|
831 |
+
'post_status' => 'publish'
|
|
|
|
|
832 |
);
|
833 |
+
$args_item = apply_filters( 'learnpress_quiz_insert_item_args', $args_item, $quiz_id );
|
834 |
+
$id = wp_insert_post( $args_item );
|
835 |
if ( $id ) {
|
836 |
add_post_meta( $id, '_lp_type', $type );
|
837 |
}
|
881 |
$question_types[$to] = !empty( $question_types[$to] ) && $question_types[$to] ? absint( $question_types[$to] ) + 1 : 1;
|
882 |
update_user_meta( $user_id, '_learn_press_memorize_question_types', $question_types );
|
883 |
// end trigger change user memorize question types
|
884 |
+
if ( 'auto-draft' === $question->post->post_status ) {
|
885 |
+
$question->answers = $question->get_default_answers( false );
|
886 |
}
|
887 |
learn_press_send_json(
|
888 |
array(
|
1191 |
|
1192 |
}
|
1193 |
|
1194 |
+
public static function update_order_status () {
|
1195 |
+
global $wpdb;
|
1196 |
+
$order_id = learn_press_get_request( 'order_id' );
|
1197 |
+
$value = learn_press_get_request( 'value' );
|
1198 |
+
|
1199 |
+
$order = array(
|
1200 |
+
'ID' => $order_id,
|
1201 |
+
'post_status' => $value,
|
1202 |
+
);
|
1203 |
+
|
1204 |
+
wp_update_post( $order ) ? $response['success'] = true : $response['success'] = false;
|
1205 |
+
|
1206 |
+
learn_press_send_json( $response );
|
1207 |
+
|
1208 |
+
die();
|
1209 |
+
}
|
1210 |
+
|
1211 |
}
|
1212 |
}
|
1213 |
LP_Admin_Ajax::init();
|
|
inc/admin/class-lp-admin-menu.php
CHANGED
@@ -26,6 +26,9 @@ class LP_Admin_Menu {
|
|
26 |
add_action( 'admin_menu', array( $this, 'notify_new_course' ) );
|
27 |
add_action( 'init', array( $this, 'menu_content' ) );
|
28 |
add_action( 'init', 'learn_press_admin_update_settings', 1000 );
|
|
|
|
|
|
|
29 |
|
30 |
// auto include file for admin page
|
31 |
// example: slug = learn_press_settings -> file = inc/admin/sub-menus/settings.php
|
@@ -41,6 +44,27 @@ class LP_Admin_Menu {
|
|
41 |
}
|
42 |
}
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
/**
|
45 |
* Register for menu for admin
|
46 |
*/
|
@@ -48,7 +72,7 @@ class LP_Admin_Menu {
|
|
48 |
$capacity = 'edit_' . LP_COURSE_CPT . 's';
|
49 |
add_menu_page(
|
50 |
__( 'Learning Management System', 'learnpress' ),
|
51 |
-
|
52 |
$capacity,
|
53 |
'learn_press',
|
54 |
'',
|
@@ -97,8 +121,6 @@ class LP_Admin_Menu {
|
|
97 |
if ( $menu_items ) foreach ( $menu_items as $item ) {
|
98 |
call_user_func_array( 'add_submenu_page', $item );
|
99 |
}
|
100 |
-
|
101 |
-
//add_submenu_page( 'tools.php', __( 'Database tools', 'learnpress' ), __( 'LearnPress', 'learnpress' ), 'manage_options', 'learn_press_tools', 'learn_press_tools_page' );
|
102 |
}
|
103 |
|
104 |
/*
|
26 |
add_action( 'admin_menu', array( $this, 'notify_new_course' ) );
|
27 |
add_action( 'init', array( $this, 'menu_content' ) );
|
28 |
add_action( 'init', 'learn_press_admin_update_settings', 1000 );
|
29 |
+
if ( apply_filters( 'learn_press_show_admin_bar_courses_page', true ) ) {
|
30 |
+
add_action( 'admin_bar_menu', array( $this, 'admin_bar_menus' ), 50 );
|
31 |
+
}
|
32 |
|
33 |
// auto include file for admin page
|
34 |
// example: slug = learn_press_settings -> file = inc/admin/sub-menus/settings.php
|
44 |
}
|
45 |
}
|
46 |
|
47 |
+
public function admin_bar_menus( $wp_admin_bar ) {
|
48 |
+
if ( !is_admin() || !is_user_logged_in() ) {
|
49 |
+
return;
|
50 |
+
}
|
51 |
+
|
52 |
+
if ( !is_user_member_of_blog() && !is_super_admin() ) {
|
53 |
+
return;
|
54 |
+
}
|
55 |
+
|
56 |
+
if ( get_option( 'page_on_front' ) == learn_press_get_page_id( 'courses' ) ) {
|
57 |
+
return;
|
58 |
+
}
|
59 |
+
|
60 |
+
$wp_admin_bar->add_node( array(
|
61 |
+
'parent' => 'site-name',
|
62 |
+
'id' => 'courses-page',
|
63 |
+
'title' => __( 'View Courses', 'learnpress' ),
|
64 |
+
'href' => learn_press_get_page_link( 'courses' )
|
65 |
+
) );
|
66 |
+
}
|
67 |
+
|
68 |
/**
|
69 |
* Register for menu for admin
|
70 |
*/
|
72 |
$capacity = 'edit_' . LP_COURSE_CPT . 's';
|
73 |
add_menu_page(
|
74 |
__( 'Learning Management System', 'learnpress' ),
|
75 |
+
'LearnPress',
|
76 |
$capacity,
|
77 |
'learn_press',
|
78 |
'',
|
121 |
if ( $menu_items ) foreach ( $menu_items as $item ) {
|
122 |
call_user_func_array( 'add_submenu_page', $item );
|
123 |
}
|
|
|
|
|
124 |
}
|
125 |
|
126 |
/*
|
inc/admin/class-lp-admin.php
CHANGED
@@ -214,6 +214,7 @@ if ( !class_exists( 'LP_Admin' ) ) {
|
|
214 |
* Include all classes and functions used for admin
|
215 |
*/
|
216 |
public function includes() {
|
|
|
217 |
// Common function used in admin
|
218 |
include_once( 'lp-admin-functions.php' );
|
219 |
// Admin actions
|
214 |
* Include all classes and functions used for admin
|
215 |
*/
|
216 |
public function includes() {
|
217 |
+
//crazy tu
|
218 |
// Common function used in admin
|
219 |
include_once( 'lp-admin-functions.php' );
|
220 |
// Admin actions
|
inc/admin/class-lp-meta-box-tabs.php
CHANGED
@@ -49,7 +49,8 @@ if ( !class_exists( 'LP_Meta_Box_Tabs' ) ) {
|
|
49 |
*/
|
50 |
public function add_tab_arg( $url ) {
|
51 |
if ( array_key_exists( 'learn-press-meta-box-tab', $_REQUEST ) && !empty( $_REQUEST['learn-press-meta-box-tab'] ) ) {
|
52 |
-
$
|
|
|
53 |
}
|
54 |
return $url;
|
55 |
}
|
49 |
*/
|
50 |
public function add_tab_arg( $url ) {
|
51 |
if ( array_key_exists( 'learn-press-meta-box-tab', $_REQUEST ) && !empty( $_REQUEST['learn-press-meta-box-tab'] ) ) {
|
52 |
+
$url = remove_query_arg('tab', $url );
|
53 |
+
$url = add_query_arg( 'tab', $_REQUEST['learn-press-meta-box-tab'], $url );
|
54 |
}
|
55 |
return $url;
|
56 |
}
|
inc/admin/class-lp-profile.php
DELETED
@@ -1,139 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
3 |
-
exit; // Exit if accessed directly
|
4 |
-
}
|
5 |
-
|
6 |
-
if ( ! class_exists( 'LP_Profile' ) ) {
|
7 |
-
/**
|
8 |
-
* Class LP_Profile
|
9 |
-
*/
|
10 |
-
class LP_Profile {
|
11 |
-
/**
|
12 |
-
* Constructor
|
13 |
-
*/
|
14 |
-
public function __construct() {
|
15 |
-
add_filter( 'learn_press_profile_methods', array( $this, 'learn_press_profile_method' ) );
|
16 |
-
// add_action( 'wp_loaded', array( $this, 'learn_press_process_profile' ) );
|
17 |
-
add_action( 'learn_press_before_profile_content', array( $this, 'learn_press_add_tabs_scripts' ) );
|
18 |
-
add_action( 'learn_press_add_profile_tab', array( $this, 'learn_press_add_profile_tab' ) );
|
19 |
-
add_filter( 'learn_press_user_info_tab_content', array( $this, 'learn_press_user_info_tab_content' ), 10, 2 );
|
20 |
-
add_filter( 'learn_press_user_courses_tab_content', array( $this, 'learn_press_user_courses_tab_content' ), 10, 2 );
|
21 |
-
add_filter( 'learn_press_user_quizzes_tab_content', array( $this, 'learn_press_user_quizzes_tab_content' ), 10, 2 );
|
22 |
-
add_action( 'learn_press_enrolled_course_after_title', array( $this, 'end_title_content' ), 10, 2 );
|
23 |
-
}
|
24 |
-
|
25 |
-
/**
|
26 |
-
* Process profile
|
27 |
-
*/
|
28 |
-
public function learn_press_process_profile() {
|
29 |
-
if ( learn_press_has_profile_method() ) {
|
30 |
-
if ( learn_press_get_profile_page_id() == 0 ) {
|
31 |
-
$profile = array(
|
32 |
-
'post_title' => 'Profile',
|
33 |
-
'post_content' => '[learn_press_profile]',
|
34 |
-
'post_type' => 'page',
|
35 |
-
'post_status' => 'publish',
|
36 |
-
);
|
37 |
-
$profile_page_id = wp_insert_post( $profile );
|
38 |
-
update_post_meta( $profile_page_id, '_lpr_is_profile_page', 1 );
|
39 |
-
}
|
40 |
-
} else {
|
41 |
-
wp_delete_post( learn_press_get_profile_page_id(), true );
|
42 |
-
}
|
43 |
-
}
|
44 |
-
|
45 |
-
/*
|
46 |
-
* Profile methods
|
47 |
-
*/
|
48 |
-
public function learn_press_profile_method( $methods ) {
|
49 |
-
$methods['lpr_profile'] = __( 'LearnPress Profile', 'learnpress' );
|
50 |
-
|
51 |
-
return $methods;
|
52 |
-
}
|
53 |
-
|
54 |
-
/*
|
55 |
-
* Enqueue jquery ui scripts
|
56 |
-
*/
|
57 |
-
public function learn_press_add_tabs_scripts() {
|
58 |
-
/*wp_enqueue_style( 'lpr-jquery-ui-css', LP_CSS_URL . 'jquery-ui.css' );
|
59 |
-
wp_enqueue_script( 'lpr-jquery-ui-js', LP_JS_URL . 'jquery-ui.js', array( 'jquery' ), '', false );*/
|
60 |
-
}
|
61 |
-
|
62 |
-
/*
|
63 |
-
* Add profile tab
|
64 |
-
*/
|
65 |
-
public function learn_press_add_profile_tab( $user ) {
|
66 |
-
$content = '';
|
67 |
-
$tabs = apply_filters(
|
68 |
-
'learn_press_profile_tabs',
|
69 |
-
array(
|
70 |
-
10 => array(
|
71 |
-
'tab_id' => 'user_info',
|
72 |
-
'tab_name' => __( 'User Information', 'learnpress' ),
|
73 |
-
'tab_content' => apply_filters( 'learn_press_user_info_tab_content', $content, $user )
|
74 |
-
),
|
75 |
-
20 => array(
|
76 |
-
'tab_id' => 'user_courses',
|
77 |
-
'tab_name' => __( 'Courses', 'learnpress' ),
|
78 |
-
'tab_content' => apply_filters( 'learn_press_user_courses_tab_content', $content, $user )
|
79 |
-
)/*,
|
80 |
-
30 => array(
|
81 |
-
'tab_id' => 'user_quizzes',
|
82 |
-
'tab_name' => __( 'Quiz Results', 'learnpress' ),
|
83 |
-
'tab_content' => apply_filters( 'learn_press_user_quizzes_tab_content', $content, $user )
|
84 |
-
)*/
|
85 |
-
),
|
86 |
-
$user
|
87 |
-
);
|
88 |
-
ksort( $tabs );
|
89 |
-
echo '<ul>';
|
90 |
-
foreach ( $tabs as $tab ) {
|
91 |
-
echo '<li><a href="#' . $tab['tab_id'] . '">' . $tab['tab_name'] . '</a></li>';
|
92 |
-
}
|
93 |
-
echo '</ul>';
|
94 |
-
foreach ( $tabs as $tab ) {
|
95 |
-
echo '<div id="' . $tab['tab_id'] . '">' . $tab['tab_content'] . '</div>';
|
96 |
-
}
|
97 |
-
}
|
98 |
-
|
99 |
-
/*
|
100 |
-
* Add content for user information tab
|
101 |
-
*/
|
102 |
-
public function learn_press_user_info_tab_content( $content, $user ) {
|
103 |
-
ob_start();
|
104 |
-
learn_press_get_template( 'profile/user-info.php', array( 'user' => $user ) );
|
105 |
-
$content .= ob_get_clean();
|
106 |
-
return $content;
|
107 |
-
}
|
108 |
-
|
109 |
-
/*
|
110 |
-
* Add content for user courses tab
|
111 |
-
*/
|
112 |
-
public function learn_press_user_courses_tab_content( $content, $user ) {
|
113 |
-
ob_start();
|
114 |
-
learn_press_get_template( 'profile/user-courses.php', array( 'user' => $user ) );
|
115 |
-
$content .= ob_get_clean();
|
116 |
-
return $content;
|
117 |
-
}
|
118 |
-
|
119 |
-
|
120 |
-
/*
|
121 |
-
* Add content for user quiz results tab
|
122 |
-
*/
|
123 |
-
public function learn_press_user_quizzes_tab_content( $content, $user ) {
|
124 |
-
ob_start();
|
125 |
-
learn_press_get_template( 'profile/user-quizzes.php', array( 'content' => $content, 'user' => $user ) );
|
126 |
-
$content .= ob_get_clean();
|
127 |
-
return $content;
|
128 |
-
}
|
129 |
-
|
130 |
-
public function end_title_content( $course, $user ) {
|
131 |
-
if ( learn_press_user_has_passed_course( $course->ID, $user->ID ) ) {
|
132 |
-
_e( '<span class="course-status passed">Passed</span>', 'learnpress' );
|
133 |
-
} else {
|
134 |
-
|
135 |
-
}
|
136 |
-
}
|
137 |
-
}
|
138 |
-
new LP_Profile;
|
139 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/admin/dashboard-statistics/class-lp-statistic-status.php
CHANGED
@@ -12,15 +12,15 @@ if ( !class_exists( 'LP_Statistic_Status' ) ) :
|
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
public static function render() {
|
15 |
-
$order_statuses =
|
16 |
$eduma_data = self::get_eduma_info( 14058034 );
|
17 |
-
$xx = array_keys( $order_statuses );
|
18 |
$specific_statuses = array( 'lp-completed', 'lp-failed', 'lp-on-hold' );
|
19 |
-
foreach ( $
|
20 |
if ( !in_array( $status, $specific_statuses ) ) {
|
21 |
$specific_statuses[] = $status;
|
22 |
}
|
23 |
}
|
|
|
24 |
?>
|
25 |
<ul class="learnpress-statistic-status">
|
26 |
<li class="full-width">
|
@@ -37,7 +37,7 @@ if ( !class_exists( 'LP_Statistic_Status' ) ) :
|
|
37 |
if ( !$status_object ) {
|
38 |
continue;
|
39 |
}
|
40 |
-
$count =
|
41 |
?>
|
42 |
<li>
|
43 |
<?php if ( $count ): ?>
|
12 |
* @since 2.0
|
13 |
*/
|
14 |
public static function render() {
|
15 |
+
$order_statuses = learn_press_get_order_statuses(true, true);
|
16 |
$eduma_data = self::get_eduma_info( 14058034 );
|
|
|
17 |
$specific_statuses = array( 'lp-completed', 'lp-failed', 'lp-on-hold' );
|
18 |
+
foreach ( $order_statuses as $status ) {
|
19 |
if ( !in_array( $status, $specific_statuses ) ) {
|
20 |
$specific_statuses[] = $status;
|
21 |
}
|
22 |
}
|
23 |
+
$counts = learn_press_count_orders( array( 'status' => $specific_statuses ) );
|
24 |
?>
|
25 |
<ul class="learnpress-statistic-status">
|
26 |
<li class="full-width">
|
37 |
if ( !$status_object ) {
|
38 |
continue;
|
39 |
}
|
40 |
+
$count = $counts[$status];
|
41 |
?>
|
42 |
<li>
|
43 |
<?php if ( $count ): ?>
|
inc/admin/includes/class-markdown-parse.php
CHANGED
@@ -239,7 +239,7 @@ class Markdown_Parser {
|
|
239 |
var $predef_titles = array();
|
240 |
|
241 |
|
242 |
-
function
|
243 |
#
|
244 |
# Constructor function. Initialize appropriate member variables.
|
245 |
#
|
@@ -1691,7 +1691,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
|
|
1691 |
var $predef_abbr = array();
|
1692 |
|
1693 |
|
1694 |
-
function
|
1695 |
#
|
1696 |
# Constructor function. Initialize the parser object.
|
1697 |
#
|
@@ -1717,7 +1717,7 @@ class MarkdownExtra_Parser extends Markdown_Parser {
|
|
1717 |
"doAbbreviations" => 70,
|
1718 |
);
|
1719 |
|
1720 |
-
parent::
|
1721 |
}
|
1722 |
|
1723 |
|
@@ -2268,13 +2268,15 @@ class MarkdownExtra_Parser extends Markdown_Parser {
|
|
2268 |
if ($matches[3] == '-' && preg_match('{^- }', $matches[1]))
|
2269 |
return $matches[0];
|
2270 |
$level = $matches[3]{0} == '=' ? 1 : 2;
|
2271 |
-
$
|
|
|
2272 |
$block = "<h$level$attr>".$this->runSpanGamut($matches[1])."</h$level>";
|
2273 |
return "\n" . $this->hashBlock($block) . "\n\n";
|
2274 |
}
|
2275 |
function _doHeaders_callback_atx($matches) {
|
2276 |
$level = strlen($matches[1]);
|
2277 |
-
$
|
|
|
2278 |
$block = "<h$level$attr>".$this->runSpanGamut($matches[2])."</h$level>";
|
2279 |
return "\n" . $this->hashBlock($block) . "\n\n";
|
2280 |
}
|
239 |
var $predef_titles = array();
|
240 |
|
241 |
|
242 |
+
function __construct() {
|
243 |
#
|
244 |
# Constructor function. Initialize appropriate member variables.
|
245 |
#
|
1691 |
var $predef_abbr = array();
|
1692 |
|
1693 |
|
1694 |
+
function __construct() {
|
1695 |
#
|
1696 |
# Constructor function. Initialize the parser object.
|
1697 |
#
|
1717 |
"doAbbreviations" => 70,
|
1718 |
);
|
1719 |
|
1720 |
+
parent::__construct();
|
1721 |
}
|
1722 |
|
1723 |
|
2268 |
if ($matches[3] == '-' && preg_match('{^- }', $matches[1]))
|
2269 |
return $matches[0];
|
2270 |
$level = $matches[3]{0} == '=' ? 1 : 2;
|
2271 |
+
$id =& $matches[2];
|
2272 |
+
$attr = $this->_doHeaders_attr($id);
|
2273 |
$block = "<h$level$attr>".$this->runSpanGamut($matches[1])."</h$level>";
|
2274 |
return "\n" . $this->hashBlock($block) . "\n\n";
|
2275 |
}
|
2276 |
function _doHeaders_callback_atx($matches) {
|
2277 |
$level = strlen($matches[1]);
|
2278 |
+
$id =& $matches[3];
|
2279 |
+
$attr = $this->_doHeaders_attr($id);
|
2280 |
$block = "<h$level$attr>".$this->runSpanGamut($matches[2])."</h$level>";
|
2281 |
return "\n" . $this->hashBlock($block) . "\n\n";
|
2282 |
}
|
inc/admin/lp-admin-actions.php
CHANGED
@@ -11,10 +11,10 @@
|
|
11 |
function _learn_press_set_user_items( $query ) {
|
12 |
global $post_type, $pagenow, $wpdb;
|
13 |
|
14 |
-
if ( current_user_can( 'manage_options' ) || !current_user_can( LP_TEACHER_ROLE ) || !is_admin() || ( $pagenow != 'edit.php' ) ) {
|
15 |
return $query;
|
16 |
}
|
17 |
-
if ( !in_array( $post_type, array( 'lp_course', LP_LESSON_CPT, LP_QUIZ_CPT, LP_QUESTION_CPT ) ) ) {
|
18 |
return;
|
19 |
}
|
20 |
$items = $wpdb->get_col(
|
@@ -69,17 +69,18 @@ function _learn_press_restrict_view_items( $views ) {
|
|
69 |
}
|
70 |
$result = new WP_Query( $query );
|
71 |
if ( $result->found_posts > 0 ) {
|
72 |
-
$views[$view] = sprintf(
|
73 |
'<a href="%s"' . $class . '>' . __( $name, 'learnpress' ) . ' <span class="count">(%d)</span></a>',
|
74 |
esc_url( add_query_arg( $query, $url ) ),
|
75 |
$result->found_posts
|
76 |
);
|
77 |
} else {
|
78 |
-
unset( $views[$view] );
|
79 |
}
|
80 |
}
|
81 |
// remove view 'mine'
|
82 |
unset( $views['mine'] );
|
|
|
83 |
return $views;
|
84 |
}
|
85 |
|
@@ -95,9 +96,10 @@ function learn_press_update_permalink_structure() {
|
|
95 |
return;
|
96 |
}
|
97 |
$rewrite_prefix = '';
|
98 |
-
$permalink_structure = !empty( $_REQUEST['permalink_structure'] ) ? $_REQUEST['permalink_structure'] : '';
|
99 |
if ( $permalink_structure ) {
|
100 |
-
$
|
|
|
101 |
if ( sizeof( $segs ) ) {
|
102 |
foreach ( $segs as $seg ) {
|
103 |
if ( strpos( $seg, '%' ) !== false || $seg == 'archives' ) {
|
@@ -120,16 +122,22 @@ add_action( 'init', 'learn_press_update_permalink_structure' );
|
|
120 |
|
121 |
add_action( 'wp_dashboard_setup', 'learnpress_dashboard_widgets' );
|
122 |
|
123 |
-
if ( !function_exists( 'learnpress_dashboard_widgets' ) ) {
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
}
|
11 |
function _learn_press_set_user_items( $query ) {
|
12 |
global $post_type, $pagenow, $wpdb;
|
13 |
|
14 |
+
if ( current_user_can( 'manage_options' ) || ! current_user_can( LP_TEACHER_ROLE ) || ! is_admin() || ( $pagenow != 'edit.php' ) ) {
|
15 |
return $query;
|
16 |
}
|
17 |
+
if ( ! in_array( $post_type, array( 'lp_course', LP_LESSON_CPT, LP_QUIZ_CPT, LP_QUESTION_CPT ) ) ) {
|
18 |
return;
|
19 |
}
|
20 |
$items = $wpdb->get_col(
|
69 |
}
|
70 |
$result = new WP_Query( $query );
|
71 |
if ( $result->found_posts > 0 ) {
|
72 |
+
$views[ $view ] = sprintf(
|
73 |
'<a href="%s"' . $class . '>' . __( $name, 'learnpress' ) . ' <span class="count">(%d)</span></a>',
|
74 |
esc_url( add_query_arg( $query, $url ) ),
|
75 |
$result->found_posts
|
76 |
);
|
77 |
} else {
|
78 |
+
unset( $views[ $view ] );
|
79 |
}
|
80 |
}
|
81 |
// remove view 'mine'
|
82 |
unset( $views['mine'] );
|
83 |
+
|
84 |
return $views;
|
85 |
}
|
86 |
|
96 |
return;
|
97 |
}
|
98 |
$rewrite_prefix = '';
|
99 |
+
$permalink_structure = ! empty( $_REQUEST['permalink_structure'] ) ? $_REQUEST['permalink_structure'] : '';
|
100 |
if ( $permalink_structure ) {
|
101 |
+
$rewrite_prefix = array();
|
102 |
+
$segs = explode( '/', $permalink_structure );
|
103 |
if ( sizeof( $segs ) ) {
|
104 |
foreach ( $segs as $seg ) {
|
105 |
if ( strpos( $seg, '%' ) !== false || $seg == 'archives' ) {
|
122 |
|
123 |
add_action( 'wp_dashboard_setup', 'learnpress_dashboard_widgets' );
|
124 |
|
125 |
+
if ( ! function_exists( 'learnpress_dashboard_widgets' ) ) {
|
126 |
+
/**
|
127 |
+
* Register dashboard widgets
|
128 |
+
*
|
129 |
+
* LearnPress statistic
|
130 |
+
* Eduma statistic
|
131 |
+
* @since 2.0
|
132 |
+
*/
|
133 |
+
function learnpress_dashboard_widgets() {
|
134 |
+
wp_add_dashboard_widget( 'learn_press_dashboard_widget', __( 'LearnPress Plugin', 'learnpress' ), array(
|
135 |
+
'LP_Statistic_Plugin',
|
136 |
+
'render'
|
137 |
+
) );
|
138 |
+
wp_add_dashboard_widget( 'learn_press_dashboard_widget_status', __( 'LearnPress Status', 'learnpress' ), array(
|
139 |
+
'LP_Statistic_Status',
|
140 |
+
'render'
|
141 |
+
) );
|
142 |
+
}
|
143 |
}
|
inc/admin/lp-admin-functions.php
CHANGED
@@ -7,8 +7,8 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
-
if (
|
11 |
-
|
12 |
}
|
13 |
/**
|
14 |
* Get html view path for admin to display
|
@@ -18,48 +18,53 @@ if ( !defined( 'ABSPATH' ) ) {
|
|
18 |
*
|
19 |
* @return mixed
|
20 |
*/
|
21 |
-
function learn_press_get_admin_view(
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
31 |
}
|
32 |
|
33 |
/**
|
34 |
* Find a full path of a view and display the content in admin
|
35 |
*
|
36 |
* @param $name
|
37 |
-
* @param array
|
38 |
* @param bool|false $include_once
|
39 |
* @param bool
|
40 |
*
|
41 |
* @return bool
|
42 |
*/
|
43 |
-
function learn_press_admin_view(
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
63 |
}
|
64 |
|
65 |
/**
|
@@ -67,78 +72,82 @@ function learn_press_admin_view( $name, $args = array(), $include_once = false,
|
|
67 |
*
|
68 |
* @param $name
|
69 |
* @param bool|false $selected
|
70 |
-
* @param array
|
71 |
*
|
72 |
* @return mixed|string
|
73 |
*/
|
74 |
-
function learn_press_pages_dropdown(
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
|
|
|
|
|
|
|
|
142 |
}
|
143 |
|
144 |
/**
|
@@ -148,31 +157,33 @@ function learn_press_pages_dropdown( $name, $selected = false, $args = array() )
|
|
148 |
*
|
149 |
* @return string
|
150 |
*/
|
151 |
-
function learn_press_dropdown_question_types(
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
|
|
|
|
176 |
}
|
177 |
|
178 |
/**
|
@@ -182,46 +193,47 @@ function learn_press_dropdown_question_types( $args = array() ) {
|
|
182 |
*
|
183 |
* @return string
|
184 |
*/
|
185 |
-
function learn_press_field_question_duration(
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
|
|
225 |
}
|
226 |
|
227 |
/**
|
@@ -231,31 +243,35 @@ function learn_press_field_question_duration( $args = array(), $question ) {
|
|
231 |
*
|
232 |
* @return string
|
233 |
*/
|
234 |
-
function learn_press_email_formats_dropdown(
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
|
|
|
|
|
|
|
|
259 |
}
|
260 |
|
261 |
/**************************************************/
|
@@ -265,45 +281,50 @@ function learn_press_email_formats_dropdown( $args = array() ) {
|
|
265 |
/**
|
266 |
* Translate javascript text
|
267 |
*/
|
268 |
-
function learn_press_admin_localize_script()
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
|
|
|
|
|
|
287 |
}
|
288 |
|
289 |
-
add_action(
|
290 |
|
291 |
/**
|
292 |
* Default admin settings pages
|
293 |
*
|
294 |
* @return mixed
|
295 |
*/
|
296 |
-
function learn_press_settings_tabs_array()
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
|
|
|
|
307 |
}
|
308 |
|
309 |
/**
|
@@ -314,18 +335,19 @@ function learn_press_settings_tabs_array() {
|
|
314 |
*
|
315 |
* @return int
|
316 |
*/
|
317 |
-
function learn_press_get_order_by_time(
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
|
|
329 |
FROM $wpdb->posts AS p
|
330 |
INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id
|
331 |
WHERE p.post_author = %d
|
@@ -334,14 +356,14 @@ function learn_press_get_order_by_time( $by, $time ) {
|
|
334 |
AND m.meta_key = %s
|
335 |
AND m.meta_value = %s
|
336 |
AND YEAR(p.post_date) = %s AND MONTH(p.post_date) = %s AND DAY(p.post_date) = %s",
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
FROM $wpdb->posts AS p
|
346 |
INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id
|
347 |
WHERE p.post_author = %d
|
@@ -350,12 +372,13 @@ function learn_press_get_order_by_time( $by, $time ) {
|
|
350 |
AND m.meta_key = %s
|
351 |
AND m.meta_value = %s
|
352 |
AND YEAR(p.post_date) = %s AND MONTH(p.post_date) = %s",
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
|
|
359 |
}
|
360 |
|
361 |
/**
|
@@ -365,20 +388,22 @@ function learn_press_get_order_by_time( $by, $time ) {
|
|
365 |
*
|
366 |
* @return int
|
367 |
*/
|
368 |
-
function learn_press_get_courses_by_status(
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
|
|
374 |
FROM $wpdb->posts
|
375 |
WHERE post_author = %d
|
376 |
AND post_type = %s
|
377 |
AND post_status = %s",
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
|
|
382 |
}
|
383 |
|
384 |
/**
|
@@ -388,12 +413,13 @@ function learn_press_get_courses_by_status( $status ) {
|
|
388 |
*
|
389 |
* @return int
|
390 |
*/
|
391 |
-
function learn_press_get_courses_by_price(
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
|
|
397 |
FROM $wpdb->posts AS p
|
398 |
INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id
|
399 |
WHERE p.post_author = %d
|
@@ -401,10 +427,11 @@ function learn_press_get_courses_by_price( $fee ) {
|
|
401 |
AND p.post_status IN (%s, %s)
|
402 |
AND m.meta_key = %s
|
403 |
AND m.meta_value = %s",
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
|
|
408 |
}
|
409 |
|
410 |
/**
|
@@ -416,43 +443,45 @@ function learn_press_get_courses_by_price( $fee ) {
|
|
416 |
*
|
417 |
* @return array
|
418 |
*/
|
419 |
-
function learn_press_get_chart_students(
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
|
|
|
|
456 |
}
|
457 |
|
458 |
/**
|
@@ -464,66 +493,67 @@ function learn_press_get_chart_students( $from = null, $by = null, $time_ago ) {
|
|
464 |
*
|
465 |
* @return array
|
466 |
*/
|
467 |
-
function learn_press_get_chart_users(
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
|
|
514 |
SELECT count(u.ID) as c, DATE_FORMAT( u.user_registered, %s) as d
|
515 |
FROM {$wpdb->users} u
|
516 |
WHERE 1
|
517 |
GROUP BY d
|
518 |
HAVING d BETWEEN %s AND %s
|
519 |
ORDER BY d ASC
|
520 |
-
", $_sql_format, $_from, $_to
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
SELECT count(u.ID) as c, DATE_FORMAT( u.user_registered, %s) as d
|
528 |
FROM {$wpdb->users} u
|
529 |
INNER JOIN {$wpdb->usermeta} um ON um.user_id = u.ID AND um.meta_key = %s AND ( um.meta_value LIKE %s OR um.meta_value LIKE %s )
|
@@ -531,59 +561,59 @@ function learn_press_get_chart_users( $from = null, $by = null, $time_ago ) {
|
|
531 |
GROUP BY d
|
532 |
HAVING d BETWEEN %s AND %s
|
533 |
ORDER BY d ASC
|
534 |
-
", $_sql_format, 'wp_capabilities', '%' . $wpdb->esc_like(
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
}
|
588 |
|
589 |
|
@@ -596,63 +626,64 @@ function learn_press_get_chart_users( $from = null, $by = null, $time_ago ) {
|
|
596 |
*
|
597 |
* @return array
|
598 |
*/
|
599 |
-
function learn_press_get_chart_courses(
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
|
|
656 |
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
657 |
FROM {$wpdb->posts} c
|
658 |
WHERE 1
|
@@ -661,13 +692,13 @@ function learn_press_get_chart_courses( $from = null, $by = null, $time_ago ) {
|
|
661 |
GROUP BY d
|
662 |
HAVING d BETWEEN %s AND %s
|
663 |
ORDER BY d ASC
|
664 |
-
", $_sql_format, 'lp_course', $_from, $_to
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
672 |
FROM {$wpdb->posts} c
|
673 |
WHERE 1
|
@@ -676,14 +707,14 @@ function learn_press_get_chart_courses( $from = null, $by = null, $time_ago ) {
|
|
676 |
GROUP BY d
|
677 |
HAVING d BETWEEN %s AND %s
|
678 |
ORDER BY d ASC
|
679 |
-
", $_sql_format, 'publish', 'lp_course', $_from, $_to
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
688 |
FROM {$wpdb->posts} c
|
689 |
INNER JOIN {$wpdb->postmeta} cm ON cm.post_id = c.ID AND cm.meta_key = %s AND cm.meta_value = %s
|
@@ -693,72 +724,72 @@ function learn_press_get_chart_courses( $from = null, $by = null, $time_ago ) {
|
|
693 |
GROUP BY d
|
694 |
HAVING d BETWEEN %s AND %s
|
695 |
ORDER BY d ASC
|
696 |
-
", $_sql_format, '_lp_payment', 'yes', 'publish', 'lp_course', $_from, $_to
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
}
|
763 |
|
764 |
|
@@ -771,94 +802,95 @@ function learn_press_get_chart_courses( $from = null, $by = null, $time_ago ) {
|
|
771 |
*
|
772 |
* @return array
|
773 |
*/
|
774 |
-
function learn_press_get_chart_orders(
|
775 |
-
|
|
|
776 |
// var_dump( current_user_can(LP_TEACHER_ROLE) );
|
777 |
// exit();
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
FROM lptest.{$wpdb->prefix}learnpress_order_items oi
|
863 |
inner join {$wpdb->prefix}learnpress_order_itemmeta oim
|
864 |
on oi.order_item_id = oim.learnpress_order_item_id
|
@@ -866,10 +898,10 @@ function learn_press_get_chart_orders( $from = null, $by = null, $time_ago ) {
|
|
866 |
and cast(oim.meta_value as SIGNED) IN (
|
867 |
SELECT sp.ID FROM {$wpdb->prefix}posts sp WHERE sp.post_author=%d and sp.ID=cast(oim.meta_value as SIGNED)
|
868 |
)
|
869 |
-
) ", $user_id
|
870 |
-
|
871 |
|
872 |
-
|
873 |
SELECT count(o.ID) as c, DATE_FORMAT( o.post_date, %s) as d
|
874 |
FROM {$wpdb->posts} o {$query_join}
|
875 |
WHERE 1 {$query_where}
|
@@ -877,16 +909,16 @@ function learn_press_get_chart_orders( $from = null, $by = null, $time_ago ) {
|
|
877 |
GROUP BY d
|
878 |
HAVING d BETWEEN %s AND %s
|
879 |
ORDER BY d ASC
|
880 |
-
", $_sql_format, 'lp_order', $_from, $_to
|
881 |
// echo $query;
|
882 |
-
|
883 |
-
|
884 |
// $results['all'][$v->d] = $v;
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
|
889 |
-
|
890 |
SELECT count(o.ID) as c, DATE_FORMAT( o.post_date, %s) as d
|
891 |
FROM {$wpdb->posts} o {$query_join}
|
892 |
WHERE 1 {$query_where}
|
@@ -894,104 +926,117 @@ function learn_press_get_chart_orders( $from = null, $by = null, $time_ago ) {
|
|
894 |
GROUP BY d
|
895 |
HAVING d BETWEEN %s AND %s
|
896 |
ORDER BY d ASC
|
897 |
-
", $_sql_format, 'lp_order', $_from, $_to
|
898 |
// echo $query;
|
899 |
-
|
900 |
-
|
901 |
// $results['completed'][$v->d] = $v;
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
}
|
955 |
|
956 |
/**
|
957 |
* Get data about courses to render in the chart
|
958 |
* @return array
|
959 |
*/
|
960 |
-
function learn_press_get_chart_courses2()
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
975 |
}
|
976 |
|
977 |
/**
|
978 |
* Get colors setting up by admin user
|
979 |
* @return array
|
980 |
*/
|
981 |
-
function learn_press_get_admin_colors()
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
|
|
|
|
995 |
}
|
996 |
|
997 |
/**
|
@@ -999,58 +1044,63 @@ function learn_press_get_admin_colors() {
|
|
999 |
*
|
1000 |
* @param array $chart
|
1001 |
*/
|
1002 |
-
function learn_press_process_chart(
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
|
1009 |
-
|
|
|
1010 |
}
|
1011 |
|
1012 |
/**
|
1013 |
* Print out the configuration for admin chart
|
1014 |
*/
|
1015 |
-
function learn_press_config_chart()
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
|
|
1040 |
}
|
1041 |
|
1042 |
-
function set_post_order_in_admin(
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
|
|
|
|
|
|
1051 |
}
|
1052 |
|
1053 |
-
add_filter(
|
1054 |
/**
|
1055 |
* Add actions to the list of the course. e.g: Duplicate link
|
1056 |
*
|
@@ -1058,71 +1108,74 @@ add_filter( 'pre_get_posts', 'set_post_order_in_admin' );
|
|
1058 |
*
|
1059 |
* @return mixed
|
1060 |
*/
|
1061 |
-
function learn_press_add_row_action_link(
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
|
|
|
|
1102 |
}
|
1103 |
|
1104 |
-
add_filter(
|
1105 |
-
add_filter(
|
1106 |
-
|
1107 |
-
function learn_press_copy_post_meta(
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
|
|
1126 |
}
|
1127 |
|
1128 |
/**
|
@@ -1130,172 +1183,176 @@ function learn_press_copy_post_meta( $from_id, $to_id ) {
|
|
1130 |
*
|
1131 |
* @author TuNN
|
1132 |
*/
|
1133 |
-
function learn_press_process_duplicate_action()
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
SELECT *
|
1200 |
FROM {$wpdb->prefix}learnpress_sections s
|
1201 |
INNER JOIN {$wpdb->posts} c ON c.ID = s.section_course_id
|
1202 |
WHERE c.ID = %d
|
1203 |
-
", $post->ID
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
SELECT i.*
|
1219 |
FROM {$wpdb->posts} i
|
1220 |
INNER JOIN {$wpdb->prefix}learnpress_sections s ON i.item_id = i.ID
|
1221 |
WHERE s.section_id = %d
|
1222 |
-
", $section->section_id
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
|
|
|
|
|
|
|
|
1296 |
}
|
1297 |
|
1298 |
-
add_action(
|
1299 |
|
1300 |
/**
|
1301 |
* Install a plugin
|
@@ -1304,78 +1361,84 @@ add_action( 'load-edit.php', 'learn_press_process_duplicate_action' );
|
|
1304 |
*
|
1305 |
* @return array
|
1306 |
*/
|
1307 |
-
function learn_press_install_add_on(
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
|
1346 |
-
|
|
|
|
|
1347 |
}
|
1348 |
|
1349 |
-
function learn_press_accept_become_a_teacher()
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
|
|
|
|
|
|
1363 |
}
|
1364 |
|
1365 |
-
add_action(
|
1366 |
-
|
1367 |
-
function learn_press_user_become_a_teacher_notice()
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
|
|
1376 |
}
|
1377 |
|
1378 |
-
add_action(
|
1379 |
|
1380 |
/**
|
1381 |
* Check to see if a plugin is already installed or not
|
@@ -1384,9 +1447,11 @@ add_action( 'admin_notices', 'learn_press_user_become_a_teacher_notice' );
|
|
1384 |
*
|
1385 |
* @return bool
|
1386 |
*/
|
1387 |
-
function learn_press_is_plugin_install(
|
1388 |
-
|
1389 |
-
|
|
|
|
|
1390 |
}
|
1391 |
|
1392 |
/**
|
@@ -1396,26 +1461,29 @@ function learn_press_is_plugin_install( $plugin ) {
|
|
1396 |
*
|
1397 |
* @return mixed
|
1398 |
*/
|
1399 |
-
function learn_press_plugin_basename_from_slug(
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
|
|
|
|
1407 |
}
|
1408 |
|
1409 |
-
function learn_press_one_click_install_sample_data_notice()
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
|
|
1419 |
<div class="install-sample-data-notice">
|
1420 |
<p>%s</p>
|
1421 |
<p>%s <strong>%s</strong> %s
|
@@ -1425,485 +1493,519 @@ function learn_press_one_click_install_sample_data_notice() {
|
|
1425 |
<p>Importing...</p>
|
1426 |
</div>
|
1427 |
</div>',
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
}
|
1437 |
|
1438 |
//add_action( 'admin_notices', 'learn_press_one_click_install_sample_data_notice' );
|
1439 |
|
1440 |
-
function learn_press_request_query(
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
|
|
1446 |
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
|
1453 |
-
|
1454 |
|
1455 |
-
|
1456 |
-
|
1457 |
-
|
|
|
1458 |
}
|
1459 |
|
1460 |
-
add_filter(
|
1461 |
|
1462 |
-
function _learn_press_reset_course_data()
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
|
|
1468 |
}
|
1469 |
|
1470 |
-
add_action(
|
1471 |
|
1472 |
/***********************/
|
1473 |
-
function learn_press_admin_section_loop_item_class(
|
1474 |
-
|
1475 |
-
|
1476 |
-
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
|
|
|
|
|
|
|
|
1484 |
}
|
1485 |
|
1486 |
-
function learn_press_disable_checked_ontop(
|
|
|
1487 |
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
|
1492 |
-
|
1493 |
}
|
1494 |
|
1495 |
-
add_filter(
|
1496 |
|
1497 |
-
function learn_press_output_admin_template()
|
1498 |
-
|
|
|
1499 |
}
|
1500 |
|
1501 |
-
add_action(
|
1502 |
|
1503 |
-
function learn_press_output_screen_id()
|
1504 |
-
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
|
|
1508 |
}
|
1509 |
|
1510 |
//add_action( 'admin_head', 'learn_press_output_screen_id' );
|
1511 |
|
1512 |
-
function learn_press_get_screens()
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
|
1518 |
-
|
1519 |
-
|
1520 |
-
|
1521 |
-
|
1522 |
-
|
1523 |
-
|
1524 |
-
|
1525 |
-
|
1526 |
-
|
|
|
1527 |
}
|
1528 |
|
1529 |
-
function learn_press_get_admin_pages()
|
1530 |
-
|
1531 |
-
|
1532 |
-
|
1533 |
-
|
1534 |
-
|
1535 |
-
|
1536 |
-
|
|
|
1537 |
}
|
1538 |
|
1539 |
-
function learn_press_is_post_type_screen(
|
1540 |
-
|
1541 |
-
|
1542 |
-
|
1543 |
-
|
1544 |
-
|
1545 |
-
|
1546 |
-
|
1547 |
-
|
1548 |
-
|
1549 |
-
|
1550 |
-
|
1551 |
-
|
1552 |
-
|
1553 |
-
|
1554 |
-
|
1555 |
-
|
1556 |
-
|
1557 |
-
|
1558 |
-
|
1559 |
-
|
1560 |
-
|
1561 |
-
|
1562 |
-
|
1563 |
-
|
|
|
|
|
|
|
1564 |
}
|
1565 |
|
1566 |
-
function learn_press_get_notice_dismiss(
|
1567 |
-
|
1568 |
-
|
1569 |
-
|
1570 |
-
|
|
|
|
|
1571 |
}
|
1572 |
|
1573 |
-
if (
|
1574 |
-
|
1575 |
-
|
1576 |
-
|
1577 |
-
|
1578 |
-
|
1579 |
-
|
1580 |
-
|
1581 |
-
|
1582 |
-
|
1583 |
-
|
1584 |
-
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
1592 |
-
|
1593 |
-
|
1594 |
-
|
1595 |
-
|
1596 |
-
|
1597 |
-
|
|
|
1598 |
|
1599 |
}
|
1600 |
|
1601 |
-
if (
|
1602 |
-
|
1603 |
-
|
1604 |
-
|
1605 |
-
|
1606 |
-
|
1607 |
-
|
1608 |
-
|
1609 |
-
|
1610 |
-
|
1611 |
-
|
1612 |
-
|
1613 |
-
|
1614 |
-
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
1620 |
-
|
1621 |
-
|
|
|
|
|
1622 |
|
1623 |
}
|
1624 |
|
1625 |
-
if (
|
1626 |
-
|
1627 |
-
|
1628 |
-
|
1629 |
-
|
1630 |
-
|
1631 |
-
|
1632 |
-
|
1633 |
-
|
1634 |
-
|
1635 |
-
|
1636 |
-
|
1637 |
-
|
1638 |
-
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
1642 |
-
|
1643 |
-
|
1644 |
-
|
1645 |
-
|
1646 |
-
|
1647 |
-
|
1648 |
-
|
1649 |
-
|
1650 |
-
|
1651 |
-
|
1652 |
-
|
1653 |
-
|
1654 |
-
|
1655 |
-
|
1656 |
-
|
1657 |
-
|
|
|
|
|
|
|
1658 |
}
|
1659 |
|
1660 |
-
if (
|
1661 |
-
|
1662 |
-
|
1663 |
-
|
1664 |
-
|
1665 |
-
|
1666 |
-
|
1667 |
-
|
1668 |
-
|
1669 |
-
|
1670 |
-
|
1671 |
-
|
1672 |
-
|
1673 |
-
|
1674 |
-
|
1675 |
-
|
1676 |
-
|
1677 |
-
|
1678 |
-
|
1679 |
-
|
1680 |
-
|
1681 |
-
|
1682 |
-
|
|
|
|
|
|
|
|
|
|
|
1683 |
|
1684 |
}
|
1685 |
|
1686 |
-
add_filter(
|
1687 |
-
if (
|
1688 |
-
|
1689 |
-
|
1690 |
-
|
1691 |
-
|
1692 |
-
|
1693 |
-
|
1694 |
-
|
1695 |
-
|
1696 |
-
|
1697 |
-
|
1698 |
-
|
1699 |
-
|
1700 |
-
|
1701 |
-
|
1702 |
-
|
1703 |
-
|
1704 |
-
|
1705 |
-
|
1706 |
-
|
1707 |
-
|
1708 |
-
|
1709 |
-
|
1710 |
-
|
1711 |
-
|
1712 |
-
|
1713 |
-
|
1714 |
-
|
1715 |
-
|
1716 |
-
|
1717 |
-
|
1718 |
-
|
|
|
|
|
1719 |
}
|
1720 |
|
1721 |
-
if (
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
1729 |
-
|
1730 |
-
|
1731 |
-
|
1732 |
-
|
1733 |
-
|
1734 |
-
|
1735 |
-
|
1736 |
-
|
1737 |
-
|
1738 |
-
|
1739 |
-
|
1740 |
-
|
1741 |
-
|
1742 |
-
|
1743 |
-
|
1744 |
-
|
1745 |
-
|
1746 |
-
|
1747 |
-
|
1748 |
-
|
1749 |
-
|
1750 |
-
|
1751 |
-
|
1752 |
-
|
1753 |
-
|
1754 |
-
|
1755 |
-
|
1756 |
-
|
1757 |
-
|
1758 |
-
|
1759 |
-
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
1763 |
-
|
1764 |
-
|
1765 |
-
|
1766 |
-
|
1767 |
-
|
1768 |
-
|
1769 |
-
|
1770 |
-
|
1771 |
-
|
1772 |
-
|
1773 |
-
|
1774 |
-
|
1775 |
-
|
1776 |
-
|
1777 |
-
|
|
|
|
|
1778 |
|
1779 |
}
|
1780 |
|
1781 |
-
if (
|
1782 |
-
|
1783 |
-
|
1784 |
-
|
1785 |
-
|
1786 |
-
|
1787 |
-
|
1788 |
-
|
1789 |
-
|
1790 |
-
|
1791 |
-
|
1792 |
-
|
1793 |
-
|
1794 |
-
|
1795 |
-
|
|
|
1796 |
SELECT * FROM $wpdb->learnpress_quiz_questions WHERE quiz_id = %d AND question_id = %d
|
1797 |
-
", $quiz_id, $question_id
|
1798 |
-
|
1799 |
-
|
1800 |
-
|
1801 |
-
|
1802 |
-
|
1803 |
-
|
1804 |
-
|
1805 |
-
|
1806 |
-
|
1807 |
-
|
1808 |
-
|
1809 |
-
|
1810 |
-
|
1811 |
-
|
1812 |
-
|
1813 |
-
|
1814 |
-
|
1815 |
-
|
1816 |
-
|
1817 |
-
|
1818 |
-
|
1819 |
-
|
1820 |
-
|
1821 |
SELECT * FROM $wpdb->learnpress_question_answers WHERE question_id = %d
|
1822 |
-
", $question_id
|
1823 |
-
|
1824 |
-
|
1825 |
-
|
1826 |
-
|
1827 |
-
|
1828 |
-
|
1829 |
-
|
1830 |
-
|
1831 |
-
|
1832 |
-
|
1833 |
-
|
1834 |
-
|
1835 |
-
|
1836 |
-
|
1837 |
-
|
1838 |
-
|
1839 |
-
|
1840 |
-
|
1841 |
-
|
1842 |
-
|
1843 |
-
|
1844 |
|
1845 |
}
|
1846 |
|
1847 |
-
if (
|
1848 |
-
|
1849 |
-
|
1850 |
-
|
1851 |
-
|
1852 |
-
|
1853 |
-
|
1854 |
-
|
1855 |
-
|
1856 |
-
|
1857 |
-
|
1858 |
-
|
1859 |
-
|
|
|
1860 |
SELECT * FROM $wpdb->learnpress_quiz_questions WHERE quiz_id = %d AND question_id = %d
|
1861 |
-
", $quiz_id, $question_id
|
1862 |
-
|
1863 |
-
|
1864 |
-
|
1865 |
-
|
1866 |
-
|
1867 |
-
|
1868 |
-
|
1869 |
-
|
1870 |
-
|
1871 |
-
|
1872 |
-
|
1873 |
-
|
1874 |
-
|
1875 |
-
|
1876 |
-
|
1877 |
-
|
1878 |
-
|
1879 |
-
|
1880 |
-
|
1881 |
-
|
1882 |
SELECT * FROM $wpdb->learnpress_question_answers WHERE question_id = %d
|
1883 |
-
", $question_id
|
1884 |
-
|
1885 |
-
|
1886 |
-
|
1887 |
-
|
1888 |
-
|
1889 |
-
|
1890 |
-
|
1891 |
-
|
1892 |
-
|
1893 |
-
|
1894 |
-
|
1895 |
-
|
1896 |
-
|
1897 |
-
|
1898 |
-
|
1899 |
-
|
1900 |
-
|
1901 |
-
|
1902 |
-
|
1903 |
-
|
1904 |
-
|
1905 |
-
|
1906 |
-
|
1907 |
|
1908 |
}
|
1909 |
|
@@ -1914,18 +2016,21 @@ if ( !function_exists( 'learn_press_duplicate_quiz' ) ) {
|
|
1914 |
*
|
1915 |
* @return string
|
1916 |
*/
|
1917 |
-
function learn_press_get_file_version(
|
1918 |
-
|
1919 |
-
|
1920 |
-
|
1921 |
-
|
1922 |
-
|
1923 |
-
|
1924 |
-
|
1925 |
-
|
1926 |
-
|
1927 |
-
|
1928 |
-
|
|
|
|
|
|
|
1929 |
}
|
1930 |
|
1931 |
/**
|
@@ -1935,164 +2040,375 @@ function learn_press_get_file_version( $file ) {
|
|
1935 |
*
|
1936 |
* @return array|bool
|
1937 |
*/
|
1938 |
-
function learn_press_get_theme_templates(
|
1939 |
-
|
1940 |
-
|
1941 |
-
|
1942 |
-
|
1943 |
-
|
1944 |
-
|
1945 |
-
|
1946 |
-
|
1947 |
-
|
1948 |
-
|
1949 |
-
|
1950 |
-
|
1951 |
-
|
1952 |
-
|
1953 |
-
|
1954 |
-
|
1955 |
-
|
1956 |
-
|
1957 |
-
|
1958 |
-
|
1959 |
-
|
1960 |
-
|
1961 |
-
|
1962 |
-
|
1963 |
-
|
1964 |
-
|
1965 |
-
|
1966 |
-
|
1967 |
-
|
1968 |
-
|
1969 |
-
|
1970 |
-
|
1971 |
-
|
1972 |
-
|
1973 |
-
|
1974 |
-
|
1975 |
-
|
1976 |
-
|
1977 |
-
|
1978 |
-
|
1979 |
-
|
1980 |
-
|
1981 |
-
|
1982 |
-
|
1983 |
-
|
1984 |
-
|
1985 |
-
|
1986 |
-
|
1987 |
-
|
1988 |
-
|
1989 |
-
|
1990 |
-
|
1991 |
-
|
1992 |
-
|
1993 |
-
|
1994 |
-
|
1995 |
-
|
1996 |
-
|
1997 |
-
|
1998 |
-
|
1999 |
-
|
2000 |
-
|
2001 |
-
|
|
|
|
|
2002 |
}
|
2003 |
|
2004 |
-
function learn_press_detect_outdated_template()
|
2005 |
-
|
2006 |
-
|
2007 |
-
|
2008 |
-
|
2009 |
-
|
2010 |
-
|
2011 |
-
|
2012 |
-
|
2013 |
-
|
2014 |
-
|
2015 |
-
|
2016 |
-
|
2017 |
-
|
2018 |
-
|
2019 |
-
|
2020 |
-
|
2021 |
-
|
2022 |
-
|
2023 |
-
|
2024 |
-
|
2025 |
-
|
2026 |
-
|
2027 |
-
|
2028 |
-
|
2029 |
-
|
2030 |
-
|
2031 |
-
|
2032 |
-
|
2033 |
-
|
2034 |
-
|
2035 |
-
|
2036 |
-
|
2037 |
-
|
2038 |
-
|
2039 |
-
|
2040 |
-
|
2041 |
-
|
2042 |
-
|
2043 |
-
|
2044 |
-
|
2045 |
-
|
2046 |
-
|
2047 |
-
|
2048 |
-
|
2049 |
-
|
2050 |
-
|
2051 |
-
|
2052 |
-
|
2053 |
-
|
2054 |
-
|
2055 |
-
|
2056 |
-
|
2057 |
-
|
2058 |
-
|
2059 |
-
|
2060 |
-
|
2061 |
-
|
2062 |
-
|
2063 |
-
|
2064 |
-
'child_item' => $child_item
|
2065 |
-
);
|
2066 |
-
}
|
2067 |
-
return false;
|
2068 |
}
|
2069 |
|
2070 |
-
function learn_press_scan_template_files(
|
2071 |
-
|
2072 |
-
|
2073 |
-
|
2074 |
-
|
2075 |
-
|
2076 |
-
|
2077 |
-
|
2078 |
-
|
2079 |
-
|
2080 |
-
|
2081 |
-
|
2082 |
-
|
2083 |
-
|
2084 |
-
|
2085 |
-
|
2086 |
-
|
2087 |
-
|
2088 |
-
|
2089 |
-
|
|
|
|
|
2090 |
}
|
2091 |
|
2092 |
-
if (
|
2093 |
|
2094 |
-
|
2095 |
-
|
2096 |
-
|
|
|
2097 |
|
2098 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
+
if (!defined('ABSPATH')) {
|
11 |
+
exit;
|
12 |
}
|
13 |
/**
|
14 |
* Get html view path for admin to display
|
18 |
*
|
19 |
* @return mixed
|
20 |
*/
|
21 |
+
function learn_press_get_admin_view($name, $plugin_file = null)
|
22 |
+
{
|
23 |
+
if (!preg_match('/\.(.*)$/', $name)) {
|
24 |
+
$name .= '.php';
|
25 |
+
}
|
26 |
+
if ($plugin_file) {
|
27 |
+
$view = dirname($plugin_file) . '/inc/admin/views/' . $name;
|
28 |
+
} else {
|
29 |
+
$view = LP()->plugin_path('inc/admin/views/' . $name);
|
30 |
+
}
|
31 |
+
|
32 |
+
return apply_filters('learn_press_admin_view', $view, $name);
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
* Find a full path of a view and display the content in admin
|
37 |
*
|
38 |
* @param $name
|
39 |
+
* @param array $args
|
40 |
* @param bool|false $include_once
|
41 |
* @param bool
|
42 |
*
|
43 |
* @return bool
|
44 |
*/
|
45 |
+
function learn_press_admin_view($name, $args = array(), $include_once = false, $return = false)
|
46 |
+
{
|
47 |
+
$view = learn_press_get_admin_view($name, !empty($args['plugin_file']) ? $args['plugin_file'] : null);
|
48 |
+
if (file_exists($view)) {
|
49 |
+
ob_start();
|
50 |
+
// extract parameters as local variables if passed
|
51 |
+
is_array($args) && extract($args);
|
52 |
+
do_action('learn_press_before_display_admin_view', $name, $args);
|
53 |
+
if ($include_once) {
|
54 |
+
include_once $view;
|
55 |
+
} else {
|
56 |
+
include $view;
|
57 |
+
}
|
58 |
+
do_action('learn_press_after_display_admin_view', $name, $args);
|
59 |
+
$output = ob_get_clean();
|
60 |
+
if (!$return) {
|
61 |
+
echo $output;
|
62 |
+
}
|
63 |
+
|
64 |
+
return $return ? $output : true;
|
65 |
+
}
|
66 |
+
|
67 |
+
return false;
|
68 |
}
|
69 |
|
70 |
/**
|
72 |
*
|
73 |
* @param $name
|
74 |
* @param bool|false $selected
|
75 |
+
* @param array $args
|
76 |
*
|
77 |
* @return mixed|string
|
78 |
*/
|
79 |
+
function learn_press_pages_dropdown($name, $selected = false, $args = array())
|
80 |
+
{
|
81 |
+
$id = null;
|
82 |
+
$class = null;
|
83 |
+
$css = null;
|
84 |
+
$before = array(
|
85 |
+
'add_new_page' => __('[ Add a new page ]', 'learnpress')
|
86 |
+
);
|
87 |
+
$after = null;
|
88 |
+
$echo = true;
|
89 |
+
$allow_create = true;
|
90 |
+
is_array($args) && extract($args);
|
91 |
+
|
92 |
+
if (empty($id)) {
|
93 |
+
$id = $name;
|
94 |
+
}
|
95 |
+
$args = array(
|
96 |
+
'name' => $name,
|
97 |
+
'id' => $id,
|
98 |
+
'sort_column' => 'menu_order',
|
99 |
+
'sort_order' => 'ASC',
|
100 |
+
'show_option_none' => __('Select Page', 'learnpress'),
|
101 |
+
'class' => $class,
|
102 |
+
'echo' => false,
|
103 |
+
'selected' => $selected,
|
104 |
+
'allow_create' => true
|
105 |
+
);
|
106 |
+
$output = wp_dropdown_pages($args);
|
107 |
+
$replace = "";
|
108 |
+
|
109 |
+
$class .= 'learn-press-dropdown-pages';
|
110 |
+
|
111 |
+
if ($class) {
|
112 |
+
$replace .= ' class="' . $class . '"';
|
113 |
+
}
|
114 |
+
if ($css) {
|
115 |
+
$replace .= ' style="' . $css . '"';
|
116 |
+
}
|
117 |
+
|
118 |
+
$replace .= ' data-selected="' . $selected . '"';
|
119 |
+
$replace .= " data-placeholder='" . __('Select a page…', 'learnpress') . "' id=";
|
120 |
+
$output = str_replace(' id=', $replace, $output);
|
121 |
+
if ($before) {
|
122 |
+
$before_output = array();
|
123 |
+
foreach ($before as $v => $l) {
|
124 |
+
$before_output[] = sprintf('<option value="%s">%s</option>', $v, $l);
|
125 |
+
}
|
126 |
+
$before_output = join("\n", $before_output);
|
127 |
+
$output = preg_replace('!(<option class=".*" value="[0-9]+".*>.*</option>)!', $before_output . "\n$1", $output, 1);
|
128 |
+
}
|
129 |
+
if ($allow_create) {
|
130 |
+
ob_start(); ?>
|
131 |
+
<button class="button button-quick-add-page" data-id="<?php echo $id; ?>"
|
132 |
+
type="button"><?php _e('Create', 'learnpress'); ?></button>
|
133 |
+
<p class="learn-press-quick-add-page-inline <?php echo $id; ?> hide-if-js">
|
134 |
+
<input type="text" placeholder="<?php esc_attr_e('New page title', 'learnpress'); ?>"/>
|
135 |
+
<button class="button" type="button"><?php esc_html_e('Ok [Enter]', 'learnpress'); ?></button>
|
136 |
+
<a href=""><?php _e('Cancel [ESC]', 'learnpress'); ?></a>
|
137 |
+
</p>
|
138 |
+
<p class="learn-press-quick-add-page-actions <?php echo $id; ?><?php echo $selected ? '' : ' hide-if-js'; ?>">
|
139 |
+
<a class="edit-page" href="<?php echo get_edit_post_link($selected); ?>"
|
140 |
+
target="_blank"><?php _e('Edit Page', 'learnpress'); ?></a>
|
141 |
+
<a class="view-page" href="<?php echo get_permalink($selected); ?>"
|
142 |
+
target="_blank"><?php _e('View Page', 'learnpress'); ?></a>
|
143 |
+
</p>
|
144 |
+
<?php $output .= ob_get_clean();
|
145 |
+
}
|
146 |
+
if ($echo) {
|
147 |
+
echo $output;
|
148 |
+
}
|
149 |
+
|
150 |
+
return $output;
|
151 |
}
|
152 |
|
153 |
/**
|
157 |
*
|
158 |
* @return string
|
159 |
*/
|
160 |
+
function learn_press_dropdown_question_types($args = array())
|
161 |
+
{
|
162 |
+
$args = wp_parse_args(
|
163 |
+
$args,
|
164 |
+
array(
|
165 |
+
'name' => 'learn-press-dropdown-question-types',
|
166 |
+
'id' => '',
|
167 |
+
'class' => '',
|
168 |
+
'selected' => '',
|
169 |
+
'echo' => true
|
170 |
+
)
|
171 |
+
);
|
172 |
+
if (!$args['id']) {
|
173 |
+
$args['id'] = $args['name'];
|
174 |
+
}
|
175 |
+
$args['class'] = 'lp-dropdown-question-types' . ($args['class'] ? ' ' . $args['class'] : '');
|
176 |
+
$types = learn_press_question_types();
|
177 |
+
$output = sprintf('<select name="%s" id="%s" class="%s"%s>', $args['name'], $args['id'], $args['class'], $args['selected'] ? 'data-selected="' . $args['selected'] . '"' : '');
|
178 |
+
foreach ($types as $slug => $name) {
|
179 |
+
$output .= sprintf('<option value="%s"%s>%s</option>', $slug, selected($slug == $args['selected'], true, false), $name);
|
180 |
+
}
|
181 |
+
$output .= '</select>';
|
182 |
+
if ($args['echo']) {
|
183 |
+
echo $output;
|
184 |
+
}
|
185 |
+
|
186 |
+
return $output;
|
187 |
}
|
188 |
|
189 |
/**
|
193 |
*
|
194 |
* @return string
|
195 |
*/
|
196 |
+
function learn_press_field_question_duration($args = array(), $question)
|
197 |
+
{
|
198 |
+
global $post;
|
199 |
+
$duration_type = get_post_meta($post->ID, "_lp_duration_type", true);
|
200 |
+
$value = get_post_meta($question->id, '_question_duration', true);
|
201 |
+
|
202 |
+
$wrap_class = 'learn-press-question-duration';
|
203 |
+
if ('questions_duration' !== $duration_type) {
|
204 |
+
$wrap_class .= ' hide';
|
205 |
+
}
|
206 |
+
$args = wp_parse_args(
|
207 |
+
$args,
|
208 |
+
array(
|
209 |
+
'name' => 'learn_press_question[' . $question->id . '][duration]',
|
210 |
+
'id' => 'learn-press-question-duration-' . $question->id,
|
211 |
+
'class' => 'learn-press-question-duration',
|
212 |
+
'selected' => '',
|
213 |
+
'echo' => true,
|
214 |
+
'value' => 0,
|
215 |
+
'step' => 1,
|
216 |
+
'min' => 0,
|
217 |
+
'placeholder' => __('Minutes', 'learnpress'),
|
218 |
+
)
|
219 |
+
);
|
220 |
+
$args['value'] = $value;
|
221 |
+
|
222 |
+
if (!$args['id']) {
|
223 |
+
$args['id'] = $args['name'];
|
224 |
+
}
|
225 |
+
|
226 |
+
return '<span class="' . esc_attr($wrap_class) . '">' . sprintf(
|
227 |
+
'<input type="number" class="%s" name="%s" id="%s" value="%s" step="%s" min="%s" max="%s" placeholder="%s"/>',
|
228 |
+
$args['class'],
|
229 |
+
$args['name'],
|
230 |
+
empty($args['clone']) ? $args['id'] : '',
|
231 |
+
$args['value'],
|
232 |
+
$args['step'],
|
233 |
+
$args['min'],
|
234 |
+
!empty($args['max']) ? $args['max'] : '',
|
235 |
+
$args['placeholder']
|
236 |
+
) . $args['placeholder'] . '</span>';
|
237 |
}
|
238 |
|
239 |
/**
|
243 |
*
|
244 |
* @return string
|
245 |
*/
|
246 |
+
function learn_press_email_formats_dropdown($args = array())
|
247 |
+
{
|
248 |
+
$args = wp_parse_args(
|
249 |
+
$args,
|
250 |
+
array(
|
251 |
+
'name' => 'learn-press-dropdown-email-formats',
|
252 |
+
'id' => '',
|
253 |
+
'class' => '',
|
254 |
+
'selected' => '',
|
255 |
+
'echo' => true
|
256 |
+
)
|
257 |
+
);
|
258 |
+
$formats = array(
|
259 |
+
//'text_message' => __( 'Text message', 'learnpress' ),
|
260 |
+
'plain_text' => __('Plain text', 'learnpress'),
|
261 |
+
'html' => __('HTML', 'learnpress'),
|
262 |
+
//'multipart' => __( 'Multipart', 'learnpress' )
|
263 |
+
);
|
264 |
+
$output = sprintf('<select name="%s" id="%s" class="%s" %s>', $args['name'], $args['id'], $args['class'], '');
|
265 |
+
foreach ($formats as $name => $text) {
|
266 |
+
$output .= sprintf('<option value="%s" %s>%s</option>', $name, selected($args['selected'] == $name, true, false), $text) . "\n";
|
267 |
+
}
|
268 |
+
$output .= '</select>';
|
269 |
+
|
270 |
+
if ($args['echo']) {
|
271 |
+
echo $output;
|
272 |
+
}
|
273 |
+
|
274 |
+
return $output;
|
275 |
}
|
276 |
|
277 |
/**************************************************/
|
281 |
/**
|
282 |
* Translate javascript text
|
283 |
*/
|
284 |
+
function learn_press_admin_localize_script()
|
285 |
+
{
|
286 |
+
if (defined('LP_DOING_AJAX') || !is_admin()) {
|
287 |
+
return;
|
288 |
+
}
|
289 |
+
$translate = array(
|
290 |
+
'quizzes_is_not_available' => __('Quiz is not available', 'learnpress'),
|
291 |
+
'lessons_is_not_available' => __('Lesson is not available', 'learnpress'),
|
292 |
+
'duplicate_course' => array(
|
293 |
+
'title' => __('Duplicate course', 'learnpress'),
|
294 |
+
'message' => __('Duplicate course curriculum?', 'learnpress')
|
295 |
+
),
|
296 |
+
'duplicate_question' => array(
|
297 |
+
'title' => __('Duplicate Question', 'learnpress'),
|
298 |
+
'message' => __('Do you want to duplicate this question?', 'learnpress')
|
299 |
+
),
|
300 |
+
'remove_question' => __('Do you want to remove this question from quiz?', 'learnpress'),
|
301 |
+
'nonces' => array(
|
302 |
+
'duplicate_question' => wp_create_nonce('duplicate-question')
|
303 |
+
)
|
304 |
+
);
|
305 |
+
LP_Assets::add_localize($translate);
|
306 |
}
|
307 |
|
308 |
+
add_action('init', 'learn_press_admin_localize_script');
|
309 |
|
310 |
/**
|
311 |
* Default admin settings pages
|
312 |
*
|
313 |
* @return mixed
|
314 |
*/
|
315 |
+
function learn_press_settings_tabs_array()
|
316 |
+
{
|
317 |
+
$tabs = array(
|
318 |
+
'general' => __('General', 'learnpress'),
|
319 |
+
'courses' => __('Courses', 'learnpress'),
|
320 |
+
'pages' => __('Pages', 'learnpress'),
|
321 |
+
'payments' => __('Payments', 'learnpress'),
|
322 |
+
'checkout' => __('Checkout', 'learnpress'),
|
323 |
+
//'profile' => __( 'Profile', 'learnpress' ),
|
324 |
+
'emails' => __('Emails', 'learnpress')
|
325 |
+
);
|
326 |
+
|
327 |
+
return apply_filters('learn_press_settings_tabs_array', $tabs);
|
328 |
}
|
329 |
|
330 |
/**
|
335 |
*
|
336 |
* @return int
|
337 |
*/
|
338 |
+
function learn_press_get_order_by_time($by, $time)
|
339 |
+
{
|
340 |
+
global $wpdb;
|
341 |
+
$user_id = get_current_user_id();
|
342 |
+
|
343 |
+
$y = date('Y', $time);
|
344 |
+
$m = date('m', $time);
|
345 |
+
$d = date('d', $time);
|
346 |
+
switch ($by) {
|
347 |
+
case 'days':
|
348 |
+
$orders = $wpdb->get_var(
|
349 |
+
$wpdb->prepare(
|
350 |
+
"SELECT COUNT(*)
|
351 |
FROM $wpdb->posts AS p
|
352 |
INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id
|
353 |
WHERE p.post_author = %d
|
356 |
AND m.meta_key = %s
|
357 |
AND m.meta_value = %s
|
358 |
AND YEAR(p.post_date) = %s AND MONTH(p.post_date) = %s AND DAY(p.post_date) = %s",
|
359 |
+
$user_id, LP_ORDER_CPT, 'publish', '_learn_press_transaction_status', 'completed', $y, $m, $d
|
360 |
+
)
|
361 |
+
);
|
362 |
+
break;
|
363 |
+
case 'months':
|
364 |
+
$orders = $wpdb->get_var(
|
365 |
+
$wpdb->prepare(
|
366 |
+
"SELECT COUNT(*)
|
367 |
FROM $wpdb->posts AS p
|
368 |
INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id
|
369 |
WHERE p.post_author = %d
|
372 |
AND m.meta_key = %s
|
373 |
AND m.meta_value = %s
|
374 |
AND YEAR(p.post_date) = %s AND MONTH(p.post_date) = %s",
|
375 |
+
$user_id, LP_ORDER_CPT, 'publish', '_learn_press_transaction_status', 'completed', $y, $m
|
376 |
+
)
|
377 |
+
);
|
378 |
+
break;
|
379 |
+
}
|
380 |
+
|
381 |
+
return $orders;
|
382 |
}
|
383 |
|
384 |
/**
|
388 |
*
|
389 |
* @return int
|
390 |
*/
|
391 |
+
function learn_press_get_courses_by_status($status)
|
392 |
+
{
|
393 |
+
global $wpdb;
|
394 |
+
$user_id = get_current_user_id();
|
395 |
+
$courses = $wpdb->get_var(
|
396 |
+
$wpdb->prepare(
|
397 |
+
"SELECT COUNT(*)
|
398 |
FROM $wpdb->posts
|
399 |
WHERE post_author = %d
|
400 |
AND post_type = %s
|
401 |
AND post_status = %s",
|
402 |
+
$user_id, LP_COURSE_CPT, $status
|
403 |
+
)
|
404 |
+
);
|
405 |
+
|
406 |
+
return $courses;
|
407 |
}
|
408 |
|
409 |
/**
|
413 |
*
|
414 |
* @return int
|
415 |
*/
|
416 |
+
function learn_press_get_courses_by_price($fee)
|
417 |
+
{
|
418 |
+
global $wpdb;
|
419 |
+
$user_id = get_current_user_id();
|
420 |
+
$courses = $wpdb->get_var(
|
421 |
+
$wpdb->prepare(
|
422 |
+
"SELECT COUNT(*)
|
423 |
FROM $wpdb->posts AS p
|
424 |
INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id
|
425 |
WHERE p.post_author = %d
|
427 |
AND p.post_status IN (%s, %s)
|
428 |
AND m.meta_key = %s
|
429 |
AND m.meta_value = %s",
|
430 |
+
$user_id, LP_COURSE_CPT, 'publish', 'pending', '_lpr_course_payment', $fee
|
431 |
+
)
|
432 |
+
);
|
433 |
+
|
434 |
+
return $courses;
|
435 |
}
|
436 |
|
437 |
/**
|
443 |
*
|
444 |
* @return array
|
445 |
*/
|
446 |
+
function learn_press_get_chart_students($from = null, $by = null, $time_ago)
|
447 |
+
{
|
448 |
+
$labels = array();
|
449 |
+
$datasets = array();
|
450 |
+
if (is_null($from)) {
|
451 |
+
$from = current_time('mysql');
|
452 |
+
}
|
453 |
+
// $by: days, months or years
|
454 |
+
if (is_null($by)) {
|
455 |
+
$by = 'days';
|
456 |
+
}
|
457 |
+
switch ($by) {
|
458 |
+
case 'days':
|
459 |
+
$date_format = 'M d';
|
460 |
+
break;
|
461 |
+
case 'months':
|
462 |
+
$date_format = 'M Y';
|
463 |
+
break;
|
464 |
+
case 'years':
|
465 |
+
$date_format = 'Y';
|
466 |
+
break;
|
467 |
+
}
|
468 |
+
|
469 |
+
for ($i = -$time_ago + 1; $i <= 0; $i++) {
|
470 |
+
$labels[] = date($date_format, strtotime("$i $by", strtotime($from)));
|
471 |
+
$datasets[0]['data'][] = learn_press_get_order_by_time($by, strtotime("$i $by", strtotime($from)));
|
472 |
+
}
|
473 |
+
$colors = learn_press_get_admin_colors();
|
474 |
+
$datasets[0]['fillColor'] = 'rgba(255,255,255,0.1)';
|
475 |
+
$datasets[0]['strokeColor'] = $colors[0];
|
476 |
+
$datasets[0]['pointColor'] = $colors[0];
|
477 |
+
$datasets[0]['pointStrokeColor'] = $colors[2];
|
478 |
+
$datasets[0]['pointHighlightFill'] = $colors[2];
|
479 |
+
$datasets[0]['pointHighlightStroke'] = $colors[0];
|
480 |
+
|
481 |
+
return array(
|
482 |
+
'labels' => $labels,
|
483 |
+
'datasets' => $datasets
|
484 |
+
);
|
485 |
}
|
486 |
|
487 |
/**
|
493 |
*
|
494 |
* @return array
|
495 |
*/
|
496 |
+
function learn_press_get_chart_users($from = null, $by = null, $time_ago)
|
497 |
+
{
|
498 |
+
global $wpdb;
|
499 |
+
|
500 |
+
$labels = array();
|
501 |
+
$datasets = array();
|
502 |
+
if (is_null($from)) {
|
503 |
+
$from = current_time('mysql');
|
504 |
+
}
|
505 |
+
if (is_null($by)) {
|
506 |
+
$by = 'days';
|
507 |
+
}
|
508 |
+
$results = array(
|
509 |
+
'all' => array(),
|
510 |
+
'instructors' => array()
|
511 |
+
);
|
512 |
+
$from_time = is_numeric($from) ? $from : strtotime($from);
|
513 |
+
|
514 |
+
switch ($by) {
|
515 |
+
case 'days':
|
516 |
+
$date_format = 'M d Y';
|
517 |
+
$_from = -$time_ago + 1;
|
518 |
+
$_from = date('Y-m-d', strtotime("{$_from} {$by}", $from_time));
|
519 |
+
$_to = date('Y-m-d', $from_time);
|
520 |
+
$_sql_format = '%Y-%m-%d';
|
521 |
+
$_key_format = 'Y-m-d';
|
522 |
+
break;
|
523 |
+
case 'months':
|
524 |
+
$date_format = 'M Y';
|
525 |
+
$_from = -$time_ago + 1;
|
526 |
+
$_from = date('Y-m-01', strtotime("{$_from} {$by}", $from_time));
|
527 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
528 |
+
$_to = date('Y-m-' . $days, $from_time);
|
529 |
+
$_sql_format = '%Y-%m';
|
530 |
+
$_key_format = 'Y-m';
|
531 |
+
break;
|
532 |
+
case 'years':
|
533 |
+
$date_format = 'Y';
|
534 |
+
$_from = -$time_ago + 1;
|
535 |
+
$_from = date('Y-01-01', strtotime("{$_from} {$by}", $from_time));
|
536 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
537 |
+
$_to = date('Y-12-' . $days, $from_time);
|
538 |
+
$_sql_format = '%Y';
|
539 |
+
$_key_format = 'Y';
|
540 |
+
|
541 |
+
break;
|
542 |
+
}
|
543 |
+
$query = $wpdb->prepare("
|
544 |
SELECT count(u.ID) as c, DATE_FORMAT( u.user_registered, %s) as d
|
545 |
FROM {$wpdb->users} u
|
546 |
WHERE 1
|
547 |
GROUP BY d
|
548 |
HAVING d BETWEEN %s AND %s
|
549 |
ORDER BY d ASC
|
550 |
+
", $_sql_format, $_from, $_to);
|
551 |
+
if ($_results = $wpdb->get_results($query)) {
|
552 |
+
foreach ($_results as $k => $v) {
|
553 |
+
$results['all'][$v->d] = $v;
|
554 |
+
}
|
555 |
+
}
|
556 |
+
$query = $wpdb->prepare("
|
557 |
SELECT count(u.ID) as c, DATE_FORMAT( u.user_registered, %s) as d
|
558 |
FROM {$wpdb->users} u
|
559 |
INNER JOIN {$wpdb->usermeta} um ON um.user_id = u.ID AND um.meta_key = %s AND ( um.meta_value LIKE %s OR um.meta_value LIKE %s )
|
561 |
GROUP BY d
|
562 |
HAVING d BETWEEN %s AND %s
|
563 |
ORDER BY d ASC
|
564 |
+
", $_sql_format, 'wp_capabilities', '%' . $wpdb->esc_like('s:13:"administrator"') . '%', '%' . $wpdb->esc_like('s:10:"lp_teacher"') . '%', $_from, $_to);
|
565 |
+
|
566 |
+
if ($_results = $wpdb->get_results($query)) {
|
567 |
+
foreach ($_results as $k => $v) {
|
568 |
+
$results['instructors'][$v->d] = $v;
|
569 |
+
}
|
570 |
+
}
|
571 |
+
for ($i = -$time_ago + 1; $i <= 0; $i++) {
|
572 |
+
$date = strtotime("$i $by", $from_time);
|
573 |
+
$labels[] = date($date_format, $date);
|
574 |
+
$key = date($_key_format, $date);
|
575 |
+
|
576 |
+
$all = !empty($results['all'][$key]) ? $results['all'][$key]->c : 0;
|
577 |
+
$instructors = !empty($results['instructors'][$key]) ? $results['instructors'][$key]->c : 0;
|
578 |
+
|
579 |
+
$datasets[0]['data'][] = $all;
|
580 |
+
$datasets[1]['data'][] = $instructors;
|
581 |
+
$datasets[2]['data'][] = $all - $instructors;
|
582 |
+
}
|
583 |
+
|
584 |
+
$dataset_params = array(
|
585 |
+
array(
|
586 |
+
'color1' => 'rgba(47, 167, 255, %s)',
|
587 |
+
'color2' => '#FFF',
|
588 |
+
'label' => __('All', 'learnpress')
|
589 |
+
),
|
590 |
+
array(
|
591 |
+
'color1' => 'rgba(212, 208, 203, %s)',
|
592 |
+
'color2' => '#FFF',
|
593 |
+
'label' => __('Instructors', 'learnpress')
|
594 |
+
),
|
595 |
+
array(
|
596 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
597 |
+
'color2' => '#FFF',
|
598 |
+
'label' => __('Students', 'learnpress')
|
599 |
+
)
|
600 |
+
);
|
601 |
+
|
602 |
+
foreach ($dataset_params as $k => $v) {
|
603 |
+
$datasets[$k]['fillColor'] = sprintf($v['color1'], '0.2');
|
604 |
+
$datasets[$k]['strokeColor'] = sprintf($v['color1'], '1');
|
605 |
+
$datasets[$k]['pointColor'] = sprintf($v['color1'], '1');
|
606 |
+
$datasets[$k]['pointStrokeColor'] = $v['color2'];
|
607 |
+
$datasets[$k]['pointHighlightFill'] = $v['color2'];
|
608 |
+
$datasets[$k]['pointHighlightStroke'] = sprintf($v['color1'], '1');
|
609 |
+
$datasets[$k]['label'] = $v['label'];
|
610 |
+
}
|
611 |
+
|
612 |
+
return array(
|
613 |
+
'labels' => $labels,
|
614 |
+
'datasets' => $datasets,
|
615 |
+
'sql' => $query
|
616 |
+
);
|
617 |
}
|
618 |
|
619 |
|
626 |
*
|
627 |
* @return array
|
628 |
*/
|
629 |
+
function learn_press_get_chart_courses($from = null, $by = null, $time_ago)
|
630 |
+
{
|
631 |
+
global $wpdb;
|
632 |
+
|
633 |
+
$labels = array();
|
634 |
+
$datasets = array();
|
635 |
+
if (is_null($from)) {
|
636 |
+
$from = current_time('mysql');
|
637 |
+
}
|
638 |
+
if (is_null($by)) {
|
639 |
+
$by = 'days';
|
640 |
+
}
|
641 |
+
$results = array(
|
642 |
+
'all' => array(),
|
643 |
+
'public' => array(),
|
644 |
+
'pending' => array(),
|
645 |
+
'free' => array(),
|
646 |
+
'paid' => array()
|
647 |
+
);
|
648 |
+
$from_time = is_numeric($from) ? $from : strtotime($from);
|
649 |
+
|
650 |
+
switch ($by) {
|
651 |
+
case 'days':
|
652 |
+
$date_format = 'M d Y';
|
653 |
+
$_from = -$time_ago + 1;
|
654 |
+
$_from = date('Y-m-d', strtotime("{$_from} {$by}", $from_time));
|
655 |
+
$_to = date('Y-m-d', $from_time);
|
656 |
+
$_sql_format = '%Y-%m-%d';
|
657 |
+
$_key_format = 'Y-m-d';
|
658 |
+
break;
|
659 |
+
case 'months':
|
660 |
+
$date_format = 'M Y';
|
661 |
+
$_from = -$time_ago + 1;
|
662 |
+
$_from = date('Y-m-01', strtotime("{$_from} {$by}", $from_time));
|
663 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
664 |
+
$_to = date('Y-m-' . $days, $from_time);
|
665 |
+
$_sql_format = '%Y-%m';
|
666 |
+
$_key_format = 'Y-m';
|
667 |
+
break;
|
668 |
+
case 'years':
|
669 |
+
$date_format = 'Y';
|
670 |
+
$_from = -$time_ago + 1;
|
671 |
+
$_from = date('Y-01-01', strtotime("{$_from} {$by}", $from_time));
|
672 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
673 |
+
$_to = date('Y-12-' . $days, $from_time);
|
674 |
+
$_sql_format = '%Y';
|
675 |
+
$_key_format = 'Y';
|
676 |
+
|
677 |
+
break;
|
678 |
+
}
|
679 |
+
|
680 |
+
$query_where = '';
|
681 |
+
if (current_user_can(LP_TEACHER_ROLE)) {
|
682 |
+
$user_id = learn_press_get_current_user_id();
|
683 |
+
$query_where .= $wpdb->prepare(" AND c.post_author=%d ", $user_id);
|
684 |
+
}
|
685 |
+
|
686 |
+
$query = $wpdb->prepare("
|
687 |
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
688 |
FROM {$wpdb->posts} c
|
689 |
WHERE 1
|
692 |
GROUP BY d
|
693 |
HAVING d BETWEEN %s AND %s
|
694 |
ORDER BY d ASC
|
695 |
+
", $_sql_format, 'lp_course', $_from, $_to);
|
696 |
+
if ($_results = $wpdb->get_results($query)) {
|
697 |
+
foreach ($_results as $k => $v) {
|
698 |
+
$results['all'][$v->d] = $v;
|
699 |
+
}
|
700 |
+
}
|
701 |
+
$query = $wpdb->prepare("
|
702 |
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
703 |
FROM {$wpdb->posts} c
|
704 |
WHERE 1
|
707 |
GROUP BY d
|
708 |
HAVING d BETWEEN %s AND %s
|
709 |
ORDER BY d ASC
|
710 |
+
", $_sql_format, 'publish', 'lp_course', $_from, $_to);
|
711 |
+
if ($_results = $wpdb->get_results($query)) {
|
712 |
+
foreach ($_results as $k => $v) {
|
713 |
+
$results['publish'][$v->d] = $v;
|
714 |
+
}
|
715 |
+
}
|
716 |
+
|
717 |
+
$query = $wpdb->prepare("
|
718 |
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
719 |
FROM {$wpdb->posts} c
|
720 |
INNER JOIN {$wpdb->postmeta} cm ON cm.post_id = c.ID AND cm.meta_key = %s AND cm.meta_value = %s
|
724 |
GROUP BY d
|
725 |
HAVING d BETWEEN %s AND %s
|
726 |
ORDER BY d ASC
|
727 |
+
", $_sql_format, '_lp_payment', 'yes', 'publish', 'lp_course', $_from, $_to);
|
728 |
+
if ($_results = $wpdb->get_results($query)) {
|
729 |
+
foreach ($_results as $k => $v) {
|
730 |
+
$results['paid'][$v->d] = $v;
|
731 |
+
}
|
732 |
+
}
|
733 |
+
|
734 |
+
for ($i = -$time_ago + 1; $i <= 0; $i++) {
|
735 |
+
$date = strtotime("$i $by", $from_time);
|
736 |
+
$labels[] = date($date_format, $date);
|
737 |
+
$key = date($_key_format, $date);
|
738 |
+
|
739 |
+
$all = !empty($results['all'][$key]) ? $results['all'][$key]->c : 0;
|
740 |
+
$publish = !empty($results['publish'][$key]) ? $results['publish'][$key]->c : 0;
|
741 |
+
$paid = !empty($results['paid'][$key]) ? $results['paid'][$key]->c : 0;
|
742 |
+
|
743 |
+
$datasets[0]['data'][] = $all;
|
744 |
+
$datasets[1]['data'][] = $publish;
|
745 |
+
$datasets[2]['data'][] = $all - $publish;
|
746 |
+
$datasets[3]['data'][] = $paid;
|
747 |
+
$datasets[4]['data'][] = $all - $paid;
|
748 |
+
}
|
749 |
+
|
750 |
+
$dataset_params = array(
|
751 |
+
array(
|
752 |
+
'color1' => 'rgba(47, 167, 255, %s)',
|
753 |
+
'color2' => '#FFF',
|
754 |
+
'label' => __('All', 'learnpress')
|
755 |
+
),
|
756 |
+
array(
|
757 |
+
'color1' => 'rgba(212, 208, 203, %s)',
|
758 |
+
'color2' => '#FFF',
|
759 |
+
'label' => __('Publish', 'learnpress')
|
760 |
+
),
|
761 |
+
array(
|
762 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
763 |
+
'color2' => '#FFF',
|
764 |
+
'label' => __('Pending', 'learnpress')
|
765 |
+
),
|
766 |
+
array(
|
767 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
768 |
+
'color2' => '#FFF',
|
769 |
+
'label' => __('Paid', 'learnpress')
|
770 |
+
),
|
771 |
+
array(
|
772 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
773 |
+
'color2' => '#FFF',
|
774 |
+
'label' => __('Free', 'learnpress')
|
775 |
+
)
|
776 |
+
);
|
777 |
+
|
778 |
+
foreach ($dataset_params as $k => $v) {
|
779 |
+
$datasets[$k]['fillColor'] = sprintf($v['color1'], '0.2');
|
780 |
+
$datasets[$k]['strokeColor'] = sprintf($v['color1'], '1');
|
781 |
+
$datasets[$k]['pointColor'] = sprintf($v['color1'], '1');
|
782 |
+
$datasets[$k]['pointStrokeColor'] = $v['color2'];
|
783 |
+
$datasets[$k]['pointHighlightFill'] = $v['color2'];
|
784 |
+
$datasets[$k]['pointHighlightStroke'] = sprintf($v['color1'], '1');
|
785 |
+
$datasets[$k]['label'] = $v['label'];
|
786 |
+
}
|
787 |
+
|
788 |
+
return array(
|
789 |
+
'labels' => $labels,
|
790 |
+
'datasets' => $datasets,
|
791 |
+
'sql' => $query
|
792 |
+
);
|
793 |
}
|
794 |
|
795 |
|
802 |
*
|
803 |
* @return array
|
804 |
*/
|
805 |
+
function learn_press_get_chart_orders($from = null, $by = null, $time_ago)
|
806 |
+
{
|
807 |
+
global $wpdb;
|
808 |
// var_dump( current_user_can(LP_TEACHER_ROLE) );
|
809 |
// exit();
|
810 |
+
$report_sales_by = learn_press_get_request('report_sales_by');
|
811 |
+
$course_id = learn_press_get_request('course_id');
|
812 |
+
$cat_id = learn_press_get_request('cat_id');
|
813 |
+
|
814 |
+
$labels = array();
|
815 |
+
$datasets = array();
|
816 |
+
if (is_null($from)) {
|
817 |
+
$from = current_time('mysql');
|
818 |
+
}
|
819 |
+
if (is_null($by)) {
|
820 |
+
$by = 'days';
|
821 |
+
}
|
822 |
+
$results = array(
|
823 |
+
'all' => array(),
|
824 |
+
'completed' => array(),
|
825 |
+
'pending' => array()
|
826 |
+
);
|
827 |
+
$from_time = is_numeric($from) ? $from : strtotime($from);
|
828 |
+
|
829 |
+
switch ($by) {
|
830 |
+
case 'days':
|
831 |
+
$date_format = 'M d Y';
|
832 |
+
$_from = -$time_ago + 1;
|
833 |
+
$_from = date('Y-m-d', strtotime("{$_from} {$by}", $from_time));
|
834 |
+
$_to = date('Y-m-d', $from_time);
|
835 |
+
$_sql_format = '%Y-%m-%d';
|
836 |
+
$_key_format = 'Y-m-d';
|
837 |
+
break;
|
838 |
+
case 'months':
|
839 |
+
$date_format = 'M Y';
|
840 |
+
$_from = -$time_ago + 1;
|
841 |
+
$_from = date('Y-m-01', strtotime("{$_from} {$by}", $from_time));
|
842 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
843 |
+
$_to = date('Y-m-' . $days, $from_time);
|
844 |
+
$_sql_format = '%Y-%m';
|
845 |
+
$_key_format = 'Y-m';
|
846 |
+
break;
|
847 |
+
case 'years':
|
848 |
+
$date_format = 'Y';
|
849 |
+
$_from = -$time_ago + 1;
|
850 |
+
$_from = date('Y-01-01', strtotime("{$_from} {$by}", $from_time));
|
851 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
852 |
+
$_to = date('Y-12-' . $days, $from_time);
|
853 |
+
$_sql_format = '%Y';
|
854 |
+
$_key_format = 'Y';
|
855 |
+
|
856 |
+
break;
|
857 |
+
}
|
858 |
+
|
859 |
+
$query_join = $sql_join = $query_where = '';
|
860 |
+
|
861 |
+
if ('course' === $report_sales_by) {
|
862 |
+
$sql_join .= " INNER JOIN `{$wpdb->prefix}learnpress_order_items` `lpoi` "
|
863 |
+
. " ON o.ID=lpoi.order_id "
|
864 |
+
. " INNER JOIN {$wpdb->prefix}learnpress_order_itemmeta loim "
|
865 |
+
. " ON lpoi.order_item_id=loim.learnpress_order_item_id "
|
866 |
+
. " AND loim.meta_key='_course_id' "
|
867 |
+
. " AND CAST(loim.meta_value AS SIGNED)=%d ";
|
868 |
+
if (current_user_can(LP_TEACHER_ROLE)) {
|
869 |
+
$user_id = learn_press_get_current_user_id();
|
870 |
+
$sql_join .= $wpdb->prepare(" AND CAST(loim.meta_value AS SIGNED) IN "
|
871 |
+
. " ( "
|
872 |
+
. " SELECT ID FROM {$wpdb->posts} p WHERE p.ID = CAST(loim.meta_value AS SIGNED) AND `post_author`=" . intval($user_id)
|
873 |
+
. " ) ");
|
874 |
+
}
|
875 |
+
$query_join .= $wpdb->prepare($sql_join, $course_id);
|
876 |
+
|
877 |
+
} elseif ('category' === $report_sales_by) {
|
878 |
+
$sql_join .= " INNER JOIN `{$wpdb->prefix}learnpress_order_items` `lpoi` "
|
879 |
+
. " ON o.ID=lpoi.order_id "
|
880 |
+
. " INNER JOIN {$wpdb->prefix}learnpress_order_itemmeta loim "
|
881 |
+
. " ON lpoi.order_item_id=loim.learnpress_order_item_id "
|
882 |
+
. " AND loim.meta_key='_course_id' "
|
883 |
+
. " AND CAST(loim.meta_value AS SIGNED) IN("
|
884 |
+
//sub query
|
885 |
+
. " SELECT tr.object_id "
|
886 |
+
. " FROM wp_term_taxonomy tt INNER JOIN wp_term_relationships tr "
|
887 |
+
. " ON tt.term_taxonomy_id = tr.term_taxonomy_id AND tt.taxonomy='course_category' "
|
888 |
+
. " WHERE tt.term_id=%d)";
|
889 |
+
$query_join .= $wpdb->prepare($sql_join, $cat_id);
|
890 |
+
}
|
891 |
+
if (current_user_can(LP_TEACHER_ROLE)) {
|
892 |
+
$user_id = learn_press_get_current_user_id();
|
893 |
+
$query_where .= $wpdb->prepare(" AND o.ID IN( SELECT oi.order_id
|
894 |
FROM lptest.{$wpdb->prefix}learnpress_order_items oi
|
895 |
inner join {$wpdb->prefix}learnpress_order_itemmeta oim
|
896 |
on oi.order_item_id = oim.learnpress_order_item_id
|
898 |
and cast(oim.meta_value as SIGNED) IN (
|
899 |
SELECT sp.ID FROM {$wpdb->prefix}posts sp WHERE sp.post_author=%d and sp.ID=cast(oim.meta_value as SIGNED)
|
900 |
)
|
901 |
+
) ", $user_id);
|
902 |
+
}
|
903 |
|
904 |
+
$query = $wpdb->prepare("
|
905 |
SELECT count(o.ID) as c, DATE_FORMAT( o.post_date, %s) as d
|
906 |
FROM {$wpdb->posts} o {$query_join}
|
907 |
WHERE 1 {$query_where}
|
909 |
GROUP BY d
|
910 |
HAVING d BETWEEN %s AND %s
|
911 |
ORDER BY d ASC
|
912 |
+
", $_sql_format, 'lp_order', $_from, $_to);
|
913 |
// echo $query;
|
914 |
+
if ($_results = $wpdb->get_results($query)) {
|
915 |
+
foreach ($_results as $k => $v) {
|
916 |
// $results['all'][$v->d] = $v;
|
917 |
+
$results['completed'][$v->d] = $v;
|
918 |
+
}
|
919 |
+
}
|
920 |
|
921 |
+
$query = $wpdb->prepare("
|
922 |
SELECT count(o.ID) as c, DATE_FORMAT( o.post_date, %s) as d
|
923 |
FROM {$wpdb->posts} o {$query_join}
|
924 |
WHERE 1 {$query_where}
|
926 |
GROUP BY d
|
927 |
HAVING d BETWEEN %s AND %s
|
928 |
ORDER BY d ASC
|
929 |
+
", $_sql_format, 'lp_order', $_from, $_to);
|
930 |
// echo $query;
|
931 |
+
if ($_results = $wpdb->get_results($query)) {
|
932 |
+
foreach ($_results as $k => $v) {
|
933 |
// $results['completed'][$v->d] = $v;
|
934 |
+
$results['pending'][$v->d] = $v;
|
935 |
+
}
|
936 |
+
}
|
937 |
+
|
938 |
+
|
939 |
+
for ($i = -$time_ago + 1; $i <= 0; $i++) {
|
940 |
+
$date = strtotime("$i $by", $from_time);
|
941 |
+
$labels[] = date($date_format, $date);
|
942 |
+
$key = date($_key_format, $date);
|
943 |
+
|
944 |
+
$completed = !empty($results['completed'][$key]) ? $results['completed'][$key]->c : 0;
|
945 |
+
$pending = !empty($results['pending'][$key]) ? $results['pending'][$key]->c : 0;
|
946 |
+
$all = $completed + $pending;
|
947 |
+
|
948 |
+
$datasets[0]['data'][] = $all;
|
949 |
+
$datasets[1]['data'][] = $completed;
|
950 |
+
$datasets[2]['data'][] = $pending;
|
951 |
+
}
|
952 |
+
|
953 |
+
$dataset_params = array(
|
954 |
+
array(
|
955 |
+
'color1' => 'rgba(47, 167, 255, %s)',
|
956 |
+
'color2' => '#FFF',
|
957 |
+
'label' => __('All', 'learnpress')
|
958 |
+
),
|
959 |
+
array(
|
960 |
+
'color1' => 'rgba(212, 208, 203, %s)',
|
961 |
+
'color2' => '#FFF',
|
962 |
+
'label' => __('Completed', 'learnpress')
|
963 |
+
),
|
964 |
+
array(
|
965 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
966 |
+
'color2' => '#FFF',
|
967 |
+
'label' => __('Pending', 'learnpress')
|
968 |
+
)
|
969 |
+
);
|
970 |
+
|
971 |
+
foreach ($dataset_params as $k => $v) {
|
972 |
+
$datasets[$k]['fillColor'] = sprintf($v['color1'], '0.2');
|
973 |
+
$datasets[$k]['strokeColor'] = sprintf($v['color1'], '1');
|
974 |
+
$datasets[$k]['pointColor'] = sprintf($v['color1'], '1');
|
975 |
+
$datasets[$k]['pointStrokeColor'] = $v['color2'];
|
976 |
+
$datasets[$k]['pointHighlightFill'] = $v['color2'];
|
977 |
+
$datasets[$k]['pointHighlightStroke'] = sprintf($v['color1'], '1');
|
978 |
+
$datasets[$k]['label'] = $v['label'];
|
979 |
+
}
|
980 |
+
|
981 |
+
return array(
|
982 |
+
'labels' => $labels,
|
983 |
+
'datasets' => $datasets,
|
984 |
+
'sql' => $query
|
985 |
+
);
|
986 |
}
|
987 |
|
988 |
/**
|
989 |
* Get data about courses to render in the chart
|
990 |
* @return array
|
991 |
*/
|
992 |
+
function learn_press_get_chart_courses2()
|
993 |
+
{
|
994 |
+
$labels = array(
|
995 |
+
__('Pending Courses / Publish Courses', 'learnpress'),
|
996 |
+
__('Free Courses / Priced Courses', 'learnpress')
|
997 |
+
);
|
998 |
+
$datasets = array();
|
999 |
+
$datasets[0]['data'] = array(
|
1000 |
+
learn_press_get_courses_by_status('pending'),
|
1001 |
+
learn_press_get_courses_by_price('free')
|
1002 |
+
);
|
1003 |
+
$datasets[1]['data'] = array(
|
1004 |
+
learn_press_get_courses_by_status('publish'),
|
1005 |
+
learn_press_get_courses_by_price('not_free')
|
1006 |
+
);
|
1007 |
+
|
1008 |
+
$colors = learn_press_get_admin_colors();
|
1009 |
+
$datasets[0]['fillColor'] = $colors[1];
|
1010 |
+
$datasets[0]['strokeColor'] = $colors[1];
|
1011 |
+
$datasets[1]['fillColor'] = $colors[3];
|
1012 |
+
$datasets[1]['strokeColor'] = $colors[3];
|
1013 |
+
|
1014 |
+
return array(
|
1015 |
+
'labels' => $labels,
|
1016 |
+
'datasets' => $datasets
|
1017 |
+
);
|
1018 |
}
|
1019 |
|
1020 |
/**
|
1021 |
* Get colors setting up by admin user
|
1022 |
* @return array
|
1023 |
*/
|
1024 |
+
function learn_press_get_admin_colors()
|
1025 |
+
{
|
1026 |
+
$admin_color = get_user_meta(get_current_user_id(), 'admin_color', true);
|
1027 |
+
global $_wp_admin_css_colors;
|
1028 |
+
$colors = array();
|
1029 |
+
if (!empty($_wp_admin_css_colors[$admin_color]->colors)) {
|
1030 |
+
$colors = $_wp_admin_css_colors[$admin_color]->colors;
|
1031 |
+
}
|
1032 |
+
if (empty ($colors[0])) {
|
1033 |
+
$colors[0] = '#000000';
|
1034 |
+
}
|
1035 |
+
if (empty ($colors[2])) {
|
1036 |
+
$colors[2] = '#00FF00';
|
1037 |
+
}
|
1038 |
+
|
1039 |
+
return $colors;
|
1040 |
}
|
1041 |
|
1042 |
/**
|
1044 |
*
|
1045 |
* @param array $chart
|
1046 |
*/
|
1047 |
+
function learn_press_process_chart($chart = array())
|
1048 |
+
{
|
1049 |
+
$data = json_encode(
|
1050 |
+
array(
|
1051 |
+
'labels' => $chart['labels'],
|
1052 |
+
'datasets' => $chart['datasets']
|
1053 |
+
)
|
1054 |
+
);
|
1055 |
+
echo $data;
|
1056 |
}
|
1057 |
|
1058 |
/**
|
1059 |
* Print out the configuration for admin chart
|
1060 |
*/
|
1061 |
+
function learn_press_config_chart()
|
1062 |
+
{
|
1063 |
+
$colors = learn_press_get_admin_colors();
|
1064 |
+
$config = array(
|
1065 |
+
'scaleShowGridLines' => true,
|
1066 |
+
'scaleGridLineColor' => "#777",
|
1067 |
+
'scaleGridLineWidth' => 0.3,
|
1068 |
+
'scaleFontColor' => "#444",
|
1069 |
+
'scaleLineColor' => $colors[0],
|
1070 |
+
'bezierCurve' => true,
|
1071 |
+
'bezierCurveTension' => 0.2,
|
1072 |
+
'pointDotRadius' => 5,
|
1073 |
+
'pointDotStrokeWidth' => 5,
|
1074 |
+
'pointHitDetectionRadius' => 20,
|
1075 |
+
'datasetStroke' => true,
|
1076 |
+
'responsive' => true,
|
1077 |
+
'tooltipFillColor' => $colors[2],
|
1078 |
+
'tooltipFontColor' => "#eee",
|
1079 |
+
'tooltipCornerRadius' => 0,
|
1080 |
+
'tooltipYPadding' => 10,
|
1081 |
+
'tooltipXPadding' => 10,
|
1082 |
+
'barDatasetSpacing' => 10,
|
1083 |
+
'barValueSpacing' => 200
|
1084 |
+
|
1085 |
+
);
|
1086 |
+
echo json_encode($config);
|
1087 |
}
|
1088 |
|
1089 |
+
function set_post_order_in_admin($wp_query)
|
1090 |
+
{
|
1091 |
+
global $pagenow;
|
1092 |
+
if (isset($_GET['post_type'])) {
|
1093 |
+
$post_type = $_GET['post_type'];
|
1094 |
+
} else {
|
1095 |
+
$post_type = '';
|
1096 |
+
}
|
1097 |
+
if (is_admin() && 'edit.php' == $pagenow && $post_type == LP_COURSE_CPT && !isset($_GET['orderby'])) {
|
1098 |
+
$wp_query->set('orderby', 'date');
|
1099 |
+
$wp_query->set('order', 'DSC');
|
1100 |
+
}
|
1101 |
}
|
1102 |
|
1103 |
+
add_filter('pre_get_posts', 'set_post_order_in_admin');
|
1104 |
/**
|
1105 |
* Add actions to the list of the course. e.g: Duplicate link
|
1106 |
*
|
1108 |
*
|
1109 |
* @return mixed
|
1110 |
*/
|
1111 |
+
function learn_press_add_row_action_link($actions)
|
1112 |
+
{
|
1113 |
+
global $post;
|
1114 |
+
if (LP_COURSE_CPT == $post->post_type) {
|
1115 |
+
$duplicate_link = admin_url('edit.php?post_type=lp_course&action=lp-duplicate-course&post=' . $post->ID . '&nonce=' . wp_create_nonce('lp-duplicate-' . $post->ID));
|
1116 |
+
$duplicate_link = array(
|
1117 |
+
array(
|
1118 |
+
'link' => $duplicate_link,
|
1119 |
+
'title' => __('Duplicate this course', 'learnpress'),
|
1120 |
+
'class' => 'lp-duplicate-course'
|
1121 |
+
)
|
1122 |
+
);
|
1123 |
+
$links = apply_filters('learn_press_row_action_links', $duplicate_link);
|
1124 |
+
if (count($links) > 1) {
|
1125 |
+
$drop_down = array('<ul class="lpr-row-action-dropdown">');
|
1126 |
+
foreach ($links as $link) {
|
1127 |
+
$drop_down[] = '<li>' . sprintf('<a href="%s" class="%s">%s</a>', $link['link'], $link['class'], $link['title']) . '</li>';
|
1128 |
+
};
|
1129 |
+
$drop_down[] = '</ul>';
|
1130 |
+
$link = sprintf('<div class="lpr-row-actions"><a href="%s">%s</a>%s</div>', 'javascript: void(0);', __('Course', 'learnpress'), join("\n", $drop_down));
|
1131 |
+
} else {
|
1132 |
+
$link = array_shift($links);
|
1133 |
+
$link = sprintf('<a href="%s" class="%s">%s</a>', $link['link'], $link['class'], $link['title']);
|
1134 |
+
}
|
1135 |
+
$actions['lpr-course-row-action'] = $link;
|
1136 |
+
} else if (LP_QUIZ_CPT === $post->post_type) {
|
1137 |
+
unset($actions['view']);
|
1138 |
+
$url = admin_url('edit.php?post_type=' . LP_QUIZ_CPT . '&lp-action=lp-duplicate-quiz&post=' . $post->ID . '&nonce=' . wp_create_nonce('lp-duplicate-' . $post->ID));
|
1139 |
+
$link = sprintf('<a href="%s" class="lp-duplicate-lesson">%s</a>', $url, __('Duplicate this quiz', 'learnpress'));
|
1140 |
+
$actions['lpr-course-row-action'] = $link;
|
1141 |
+
} else if (LP_QUESTION_CPT === $post->post_type) {
|
1142 |
+
unset($actions['view']);
|
1143 |
+
$url = admin_url('edit.php?post_type=' . LP_QUESTION_CPT . '&lp-action=lp-duplicate-question&post=' . $post->ID . '&nonce=' . wp_create_nonce('lp-duplicate-' . $post->ID));
|
1144 |
+
$link = sprintf('<a href="%s" class="lp-duplicate-lesson">%s</a>', $url, __('Duplicate this question', 'learnpress'));
|
1145 |
+
$actions['lpr-course-row-action'] = $link;
|
1146 |
+
} else if (LP_LESSON_CPT === $post->post_type) {
|
1147 |
+
unset($actions['view']);
|
1148 |
+
$url = admin_url('edit.php?post_type=' . LP_LESSON_CPT . '&lp-action=lp-duplicate-lesson&post=' . $post->ID . '&nonce=' . wp_create_nonce('lp-duplicate-' . $post->ID));
|
1149 |
+
$link = sprintf('<a href="%s" class="lp-duplicate-lesson">%s</a>', $url, __('Duplicate this lesson', 'learnpress'));
|
1150 |
+
$actions['lpr-course-row-action'] = $link;
|
1151 |
+
}
|
1152 |
+
|
1153 |
+
return $actions;
|
1154 |
}
|
1155 |
|
1156 |
+
add_filter('post_row_actions', 'learn_press_add_row_action_link');
|
1157 |
+
add_filter('page_row_actions', 'learn_press_add_row_action_link');
|
1158 |
+
|
1159 |
+
function learn_press_copy_post_meta($from_id, $to_id)
|
1160 |
+
{
|
1161 |
+
global $wpdb;
|
1162 |
+
$course_meta = $wpdb->get_results(
|
1163 |
+
$wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = %d", $from_id)
|
1164 |
+
);
|
1165 |
+
if (count($course_meta) != 0) {
|
1166 |
+
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
|
1167 |
+
$sql_query_sel = array();
|
1168 |
+
|
1169 |
+
foreach ($course_meta as $meta) {
|
1170 |
+
$meta_key = $meta->meta_key;
|
1171 |
+
$meta_value = addslashes($meta->meta_value);
|
1172 |
+
|
1173 |
+
$sql_query_sel[] = "SELECT {$to_id}, '$meta_key', '$meta_value'";
|
1174 |
+
}
|
1175 |
+
|
1176 |
+
$sql_query .= implode(" UNION ALL ", $sql_query_sel);
|
1177 |
+
$wpdb->query($sql_query);
|
1178 |
+
}
|
1179 |
}
|
1180 |
|
1181 |
/**
|
1183 |
*
|
1184 |
* @author TuNN
|
1185 |
*/
|
1186 |
+
function learn_press_process_duplicate_action()
|
1187 |
+
{
|
1188 |
+
|
1189 |
+
$wp_list_table = _get_list_table('WP_Posts_List_Table');
|
1190 |
+
$action = $wp_list_table->current_action();
|
1191 |
+
|
1192 |
+
if (isset($_REQUEST['action']) && $action == 'lp-duplicate-course') {
|
1193 |
+
// current is not usefully because this feature using ajax action
|
1194 |
+
$post_id = isset($_REQUEST['post']) ? $_REQUEST['post'] : 0;
|
1195 |
+
$nonce = !empty($_REQUEST['nonce']) ? $_REQUEST['nonce'] : '';
|
1196 |
+
if (!wp_verify_nonce($nonce, 'lp-duplicate-' . $post_id)) {
|
1197 |
+
wp_die(__('Error', 'learnpress'));
|
1198 |
+
}
|
1199 |
+
if ($post_id && is_array($post_id)) {
|
1200 |
+
$post_id = array_shift($post_id);
|
1201 |
+
}
|
1202 |
+
// check for post is exists
|
1203 |
+
if (!($post_id && $post = get_post($post_id))) {
|
1204 |
+
wp_die(__('Oops! The course does not exist.', 'learnpress'));
|
1205 |
+
}
|
1206 |
+
// ensure that user can create course
|
1207 |
+
if (!current_user_can('edit_posts')) {
|
1208 |
+
wp_die(__('Sorry! You have not permission to duplicate this course.', 'learnpress'));
|
1209 |
+
}
|
1210 |
+
|
1211 |
+
// assign course to current user
|
1212 |
+
$current_user = wp_get_current_user();
|
1213 |
+
$new_course_author = $current_user->ID;
|
1214 |
+
|
1215 |
+
// setup course data
|
1216 |
+
$new_course_title = $post->post_title . ' - Copy';
|
1217 |
+
$args = array(
|
1218 |
+
'comment_status' => $post->comment_status,
|
1219 |
+
'ping_status' => $post->ping_status,
|
1220 |
+
'post_author' => $new_course_author,
|
1221 |
+
'post_content' => $post->post_content,
|
1222 |
+
'post_excerpt' => $post->post_excerpt,
|
1223 |
+
'post_name' => $post->post_name,
|
1224 |
+
'post_parent' => $post->post_parent,
|
1225 |
+
'post_password' => $post->post_password,
|
1226 |
+
'post_status' => 'draft',
|
1227 |
+
'post_title' => $new_course_title,
|
1228 |
+
'post_type' => $post->post_type,
|
1229 |
+
'to_ping' => $post->to_ping,
|
1230 |
+
'menu_order' => $post->menu_order
|
1231 |
+
);
|
1232 |
+
// insert new course and get it ID
|
1233 |
+
$new_post_id = wp_insert_post($args);
|
1234 |
+
|
1235 |
+
if (!$new_post_id) {
|
1236 |
+
LP_Admin_Notice::add_redirect(__('<p>Sorry! Duplicate course failed!</p>', 'learnpress'));
|
1237 |
+
wp_redirect(admin_url('edit.php?post_type=lp_course'));
|
1238 |
+
exit();
|
1239 |
+
}
|
1240 |
+
// assign related tags/categories to new course
|
1241 |
+
$taxonomies = get_object_taxonomies($post->post_type);
|
1242 |
+
foreach ($taxonomies as $taxonomy) {
|
1243 |
+
$post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
|
1244 |
+
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
|
1245 |
+
}
|
1246 |
+
|
1247 |
+
// duplicate course data
|
1248 |
+
global $wpdb;
|
1249 |
+
//learn_press_copy_post_meta( $post_id, $new_post_id );
|
1250 |
+
|
1251 |
+
$query = $wpdb->prepare("
|
1252 |
SELECT *
|
1253 |
FROM {$wpdb->prefix}learnpress_sections s
|
1254 |
INNER JOIN {$wpdb->posts} c ON c.ID = s.section_course_id
|
1255 |
WHERE c.ID = %d
|
1256 |
+
", $post->ID);
|
1257 |
+
if ($sections = $wpdb->get_results($query)) {
|
1258 |
+
foreach ($sections as $section) {
|
1259 |
+
$new_section_id = $wpdb->insert(
|
1260 |
+
$wpdb->prefix . 'learnpress_sections',
|
1261 |
+
array(
|
1262 |
+
'section_name' => $section->section_name,
|
1263 |
+
'section_course_id' => $new_post_id,
|
1264 |
+
'section_order' => $section->section_order,
|
1265 |
+
'section_description' => $section->section_description
|
1266 |
+
),
|
1267 |
+
array('%s', '%d', '%d', '%s')
|
1268 |
+
);
|
1269 |
+
if ($new_section_id) {
|
1270 |
+
$query = $wpdb->prepare("
|
1271 |
SELECT i.*
|
1272 |
FROM {$wpdb->posts} i
|
1273 |
INNER JOIN {$wpdb->prefix}learnpress_sections s ON i.item_id = i.ID
|
1274 |
WHERE s.section_id = %d
|
1275 |
+
", $section->section_id);
|
1276 |
+
if ($items = $wpdb->get_results($query)) {
|
1277 |
+
foreach ($items as $item) {
|
1278 |
+
$item_args = (array)$item;
|
1279 |
+
unset(
|
1280 |
+
$item_args['ID'],
|
1281 |
+
$item_args['post_author'],
|
1282 |
+
$item_args['post_date'],
|
1283 |
+
$item_args['post_date_gmt'],
|
1284 |
+
$item_args['post_modified'],
|
1285 |
+
$item_args['post_modified_gmt'],
|
1286 |
+
$item_args['comment_count']
|
1287 |
+
);
|
1288 |
+
$new_item_id = $wpdb->insert(
|
1289 |
+
$wpdb->posts,
|
1290 |
+
$item_args
|
1291 |
+
);
|
1292 |
+
}
|
1293 |
+
}
|
1294 |
+
}
|
1295 |
+
}
|
1296 |
+
}
|
1297 |
+
LP_Admin_Notice::add_redirect(__('<p>Course duplicated.</p>', 'learnpress'));
|
1298 |
+
wp_redirect(admin_url("post.php?post={$new_post_id}&action=edit"));
|
1299 |
+
die();
|
1300 |
+
}
|
1301 |
+
|
1302 |
+
// duplicate action
|
1303 |
+
$action = !empty($_REQUEST['lp-action']) ? $_REQUEST['lp-action'] : '';
|
1304 |
+
$actions = array(
|
1305 |
+
'lp-duplicate-question',
|
1306 |
+
'lp-duplicate-lesson',
|
1307 |
+
'lp-duplicate-quiz'
|
1308 |
+
);
|
1309 |
+
if (!in_array($action, $actions)) {
|
1310 |
+
return;
|
1311 |
+
}
|
1312 |
+
|
1313 |
+
$post_id = !empty ($_REQUEST['post']) ? $_REQUEST['post'] : 0;
|
1314 |
+
$nonce = !empty($_REQUEST['nonce']) ? $_REQUEST['nonce'] : '';
|
1315 |
+
if (!$post_id || !wp_verify_nonce($nonce, 'lp-duplicate-' . $post_id)) {
|
1316 |
+
return;
|
1317 |
+
}
|
1318 |
+
// only duplicate question. not assign any data
|
1319 |
+
$new_post_id = 0;
|
1320 |
+
if ($action === 'lp-duplicate-question') {
|
1321 |
+
$new_post_id = learn_press_duplicate_question($post_id);
|
1322 |
+
$post_type = LP_QUESTION_CPT;
|
1323 |
+
$error = __('Sorry! Duplicate question failed!', 'learnpress');
|
1324 |
+
$success = __('Question duplicated.', 'learnpress');
|
1325 |
+
} else if ($action === 'lp-duplicate-lesson') {
|
1326 |
+
$new_post_id = learn_press_duplicate_lesson($post_id);
|
1327 |
+
$post_type = LP_LESSON_CPT;
|
1328 |
+
$error = __('Sorry! Duplicate lesson failed!', 'learnpress');
|
1329 |
+
$success = __('Lesson duplicated.', 'learnpress');
|
1330 |
+
} else if ($action === 'lp-duplicate-quiz') {
|
1331 |
+
$new_post_id = learn_press_duplicate_quiz($post_id);
|
1332 |
+
$post_type = LP_QUIZ_CPT;
|
1333 |
+
$error = __('Sorry! Duplicate quiz failed!', 'learnpress');
|
1334 |
+
$success = __('Quiz duplicated.', 'learnpress');
|
1335 |
+
}
|
1336 |
+
|
1337 |
+
if (!$new_post_id) {
|
1338 |
+
return;
|
1339 |
+
}
|
1340 |
+
$redirect = 0;
|
1341 |
+
if (is_wp_error($new_post_id)) {
|
1342 |
+
LP_Admin_Notice::add_redirect($error, 'error');
|
1343 |
+
$redirect = admin_url('edit.php?post_type=' . $post_type);
|
1344 |
+
} else {
|
1345 |
+
LP_Admin_Notice::add_redirect($success, 'updated');
|
1346 |
+
$redirect = admin_url('post.php?post=' . $new_post_id . '&action=edit');
|
1347 |
+
}
|
1348 |
+
|
1349 |
+
if ($redirect) {
|
1350 |
+
wp_safe_redirect($redirect);
|
1351 |
+
exit();
|
1352 |
+
}
|
1353 |
}
|
1354 |
|
1355 |
+
add_action('load-edit.php', 'learn_press_process_duplicate_action');
|
1356 |
|
1357 |
/**
|
1358 |
* Install a plugin
|
1361 |
*
|
1362 |
* @return array
|
1363 |
*/
|
1364 |
+
function learn_press_install_add_on($plugin_name)
|
1365 |
+
{
|
1366 |
+
require_once(LP_PLUGIN_PATH . '/inc/admin/class-lp-upgrader.php');
|
1367 |
+
$upgrader = new LP_Upgrader();
|
1368 |
+
global $wp_filesystem;
|
1369 |
+
$response = array();
|
1370 |
+
|
1371 |
+
$package = 'http://thimpress.com/lprepo/' . $plugin_name . '.zip';
|
1372 |
+
|
1373 |
+
$package = $upgrader->download_package($package);
|
1374 |
+
if (is_wp_error($package)) {
|
1375 |
+
$response['error'] = $package;
|
1376 |
+
} else {
|
1377 |
+
$working_dir = $upgrader->unpack_package($package, true, $plugin_name);
|
1378 |
+
if (is_wp_error($working_dir)) {
|
1379 |
+
$response['error'] = $working_dir;
|
1380 |
+
} else {
|
1381 |
+
|
1382 |
+
$wp_upgrader = new WP_Upgrader();
|
1383 |
+
$options = array(
|
1384 |
+
'source' => $working_dir,
|
1385 |
+
'destination' => WP_PLUGIN_DIR,
|
1386 |
+
'clear_destination' => false, // Do not overwrite files.
|
1387 |
+
'clear_working' => true,
|
1388 |
+
'hook_extra' => array(
|
1389 |
+
'type' => 'plugin',
|
1390 |
+
'action' => 'install'
|
1391 |
+
)
|
1392 |
+
);
|
1393 |
+
//$response = array();
|
1394 |
+
$result = $wp_upgrader->install_package($options);
|
1395 |
+
|
1396 |
+
if (is_wp_error($result)) {
|
1397 |
+
$response['error'] = $result;
|
1398 |
+
} else {
|
1399 |
+
$response = $result;
|
1400 |
+
$response['text'] = __('Installed', 'learnpress');
|
1401 |
+
}
|
1402 |
+
}
|
1403 |
+
}
|
1404 |
+
|
1405 |
+
return $response;
|
1406 |
}
|
1407 |
|
1408 |
+
function learn_press_accept_become_a_teacher()
|
1409 |
+
{
|
1410 |
+
$action = !empty($_REQUEST['action']) ? $_REQUEST['action'] : '';
|
1411 |
+
$user_id = !empty($_REQUEST['user_id']) ? $_REQUEST['user_id'] : '';
|
1412 |
+
if (!$action || !$user_id || ($action != 'accept-to-be-teacher')) {
|
1413 |
+
return;
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
if (!learn_press_user_maybe_is_a_teacher($user_id)) {
|
1417 |
+
$be_teacher = new WP_User($user_id);
|
1418 |
+
$be_teacher->set_role(LP_TEACHER_ROLE);
|
1419 |
+
delete_transient('learn_press_become_teacher_sent_' . $user_id);
|
1420 |
+
do_action('learn_press_user_become_a_teacher', $user_id);
|
1421 |
+
$redirect = add_query_arg('become-a-teacher-accepted', 'yes');
|
1422 |
+
$redirect = remove_query_arg('action', $redirect);
|
1423 |
+
wp_redirect($redirect);
|
1424 |
+
}
|
1425 |
}
|
1426 |
|
1427 |
+
add_action('plugins_loaded', 'learn_press_accept_become_a_teacher');
|
1428 |
+
|
1429 |
+
function learn_press_user_become_a_teacher_notice()
|
1430 |
+
{
|
1431 |
+
if ($user_id = learn_press_get_request('user_id') && learn_press_get_request('become-a-teacher-accepted') == 'yes') {
|
1432 |
+
$user = new WP_User($user_id);
|
1433 |
+
?>
|
1434 |
+
<div class="updated">
|
1435 |
+
<p><?php printf(__('The user %s has become a teacher', 'learnpress'), $user->user_login); ?></p>
|
1436 |
+
</div>
|
1437 |
+
<?php
|
1438 |
+
}
|
1439 |
}
|
1440 |
|
1441 |
+
add_action('admin_notices', 'learn_press_user_become_a_teacher_notice');
|
1442 |
|
1443 |
/**
|
1444 |
* Check to see if a plugin is already installed or not
|
1447 |
*
|
1448 |
* @return bool
|
1449 |
*/
|
1450 |
+
function learn_press_is_plugin_install($plugin)
|
1451 |
+
{
|
1452 |
+
$installed_plugins = get_plugins();
|
1453 |
+
|
1454 |
+
return isset($installed_plugins[$plugin]);
|
1455 |
}
|
1456 |
|
1457 |
/**
|
1461 |
*
|
1462 |
* @return mixed
|
1463 |
*/
|
1464 |
+
function learn_press_plugin_basename_from_slug($slug)
|
1465 |
+
{
|
1466 |
+
$keys = array_keys(get_plugins());
|
1467 |
+
foreach ($keys as $key) {
|
1468 |
+
if (preg_match('|^' . $slug . '/|', $key)) {
|
1469 |
+
return $key;
|
1470 |
+
}
|
1471 |
+
}
|
1472 |
+
|
1473 |
+
return $slug;
|
1474 |
}
|
1475 |
|
1476 |
+
function learn_press_one_click_install_sample_data_notice()
|
1477 |
+
{
|
1478 |
+
$courses = get_posts(
|
1479 |
+
array(
|
1480 |
+
'post_type' => LP_COURSE_CPT,
|
1481 |
+
'post_status' => 'any'
|
1482 |
+
)
|
1483 |
+
);
|
1484 |
+
if ((0 == sizeof($courses)) && ('off' != get_transient('learn_press_install_sample_data'))) {
|
1485 |
+
printf(
|
1486 |
+
'<div class="updated" id="learn-press-install-sample-data-notice">
|
1487 |
<div class="install-sample-data-notice">
|
1488 |
<p>%s</p>
|
1489 |
<p>%s <strong>%s</strong> %s
|
1493 |
<p>Importing...</p>
|
1494 |
</div>
|
1495 |
</div>',
|
1496 |
+
__('You haven\'t got any courses yet! Would you like to import sample data?', 'learnpress'),
|
1497 |
+
__('If yes, it requires to install addon name', 'learnpress'),
|
1498 |
+
__('LearnPress Import/Export', 'learnpress'),
|
1499 |
+
__('but don\'t worry because it is completely automated.', 'learnpress'),
|
1500 |
+
__('Import now', 'learnpress'),
|
1501 |
+
__('No, thanks!', 'learnpress')
|
1502 |
+
);
|
1503 |
+
}
|
1504 |
}
|
1505 |
|
1506 |
//add_action( 'admin_notices', 'learn_press_one_click_install_sample_data_notice' );
|
1507 |
|
1508 |
+
function learn_press_request_query($vars = array())
|
1509 |
+
{
|
1510 |
+
global $typenow, $wp_query, $wp_post_statuses;
|
1511 |
+
if (LP_ORDER_CPT === $typenow) {
|
1512 |
+
// Status
|
1513 |
+
if (!isset($vars['post_status'])) {
|
1514 |
+
$post_statuses = learn_press_get_order_statuses();
|
1515 |
|
1516 |
+
foreach ($post_statuses as $status => $value) {
|
1517 |
+
if (isset($wp_post_statuses[$status]) && false === $wp_post_statuses[$status]->show_in_admin_all_list) {
|
1518 |
+
unset($post_statuses[$status]);
|
1519 |
+
}
|
1520 |
+
}
|
1521 |
|
1522 |
+
$vars['post_status'] = array_keys($post_statuses);
|
1523 |
|
1524 |
+
}
|
1525 |
+
}
|
1526 |
+
|
1527 |
+
return $vars;
|
1528 |
}
|
1529 |
|
1530 |
+
add_filter('request', 'learn_press_request_query', 0);
|
1531 |
|
1532 |
+
function _learn_press_reset_course_data()
|
1533 |
+
{
|
1534 |
+
if (empty($_REQUEST['reset-course-data'])) {
|
1535 |
+
return false;
|
1536 |
+
}
|
1537 |
+
learn_press_reset_course_data(intval($_REQUEST['reset-course-data']));
|
1538 |
+
wp_redirect(remove_query_arg('reset-course-data'));
|
1539 |
}
|
1540 |
|
1541 |
+
add_action('init', '_learn_press_reset_course_data');
|
1542 |
|
1543 |
/***********************/
|
1544 |
+
function learn_press_admin_section_loop_item_class($item, $section)
|
1545 |
+
{
|
1546 |
+
$classes = array(
|
1547 |
+
'lp-section-item'
|
1548 |
+
);
|
1549 |
+
$classes[] = 'lp-item-' . $item->post_type;
|
1550 |
+
if (!absint($item->ID)) {
|
1551 |
+
$classes[] = 'lp-item-empty lp-item-new focus';
|
1552 |
+
}
|
1553 |
+
$classes = apply_filters('learn_press_section_loop_item_class', $classes, $item, $section);
|
1554 |
+
if ($classes) {
|
1555 |
+
echo 'class="' . join(' ', $classes) . '"';
|
1556 |
+
}
|
1557 |
+
|
1558 |
+
return $classes;
|
1559 |
}
|
1560 |
|
1561 |
+
function learn_press_disable_checked_ontop($args)
|
1562 |
+
{
|
1563 |
|
1564 |
+
if ('course_category' == $args['taxonomy']) {
|
1565 |
+
$args['checked_ontop'] = false;
|
1566 |
+
}
|
1567 |
|
1568 |
+
return $args;
|
1569 |
}
|
1570 |
|
1571 |
+
add_filter('wp_terms_checklist_args', 'learn_press_disable_checked_ontop');
|
1572 |
|
1573 |
+
function learn_press_output_admin_template()
|
1574 |
+
{
|
1575 |
+
learn_press_admin_view('admin-template.php');
|
1576 |
}
|
1577 |
|
1578 |
+
add_action('admin_print_scripts', 'learn_press_output_admin_template');
|
1579 |
|
1580 |
+
function learn_press_output_screen_id()
|
1581 |
+
{
|
1582 |
+
$screen = get_current_screen();
|
1583 |
+
if ($screen) {
|
1584 |
+
echo "<div style=\"position:fixed;top: 0; left:0; z-index: 99999999; background-color:#FFF;padding:4px;\">" . $screen->id . "</div>";
|
1585 |
+
}
|
1586 |
}
|
1587 |
|
1588 |
//add_action( 'admin_head', 'learn_press_output_screen_id' );
|
1589 |
|
1590 |
+
function learn_press_get_screens()
|
1591 |
+
{
|
1592 |
+
$screen_id = sanitize_title('LearnPress');
|
1593 |
+
$screens = array(
|
1594 |
+
'toplevel_page_' . $screen_id,
|
1595 |
+
$screen_id . '_page_learn-press-statistics',
|
1596 |
+
$screen_id . '_page_learn-press-addons',
|
1597 |
+
$screen_id . '_page_learn-press-settings',
|
1598 |
+
$screen_id . '_page_learn-press-tools'
|
1599 |
+
);
|
1600 |
+
foreach (array(LP_COURSE_CPT, LP_LESSON_CPT, LP_QUIZ_CPT, LP_QUESTION_CPT, LP_ORDER_CPT) as $post_type) {
|
1601 |
+
$screens[] = 'edit-' . $post_type;
|
1602 |
+
$screens[] = $post_type;
|
1603 |
+
}
|
1604 |
+
|
1605 |
+
return apply_filters('learn_press_screen_ids', $screens);
|
1606 |
}
|
1607 |
|
1608 |
+
function learn_press_get_admin_pages()
|
1609 |
+
{
|
1610 |
+
return apply_filters(
|
1611 |
+
'learn_press_admin_pages',
|
1612 |
+
array(
|
1613 |
+
'learn-press-settings',
|
1614 |
+
'learn-press-settings'
|
1615 |
+
)
|
1616 |
+
);
|
1617 |
}
|
1618 |
|
1619 |
+
function learn_press_is_post_type_screen($post_type, $union = 'OR')
|
1620 |
+
{
|
1621 |
+
if (is_array($post_type)) {
|
1622 |
+
$return = null;
|
1623 |
+
foreach ($post_type as $_post_type) {
|
1624 |
+
$check = learn_press_is_post_type_screen($_post_type);
|
1625 |
+
if ($union == 'OR' && $check) {
|
1626 |
+
return true;
|
1627 |
+
}
|
1628 |
+
if ($return == null) {
|
1629 |
+
$return = $check;
|
1630 |
+
} else {
|
1631 |
+
$return = $return && $check;
|
1632 |
+
}
|
1633 |
+
if ($union !== 'OR') {
|
1634 |
+
return $return;
|
1635 |
+
}
|
1636 |
+
}
|
1637 |
+
|
1638 |
+
return $return;
|
1639 |
+
}
|
1640 |
+
$screen = get_current_screen();
|
1641 |
+
if (!$screen) {
|
1642 |
+
return;
|
1643 |
+
}
|
1644 |
+
$screen_id = $screen->id;
|
1645 |
+
|
1646 |
+
return in_array($screen_id, array($post_type, "edit-{$post_type}"));
|
1647 |
}
|
1648 |
|
1649 |
+
function learn_press_get_notice_dismiss($context, $type = 'transient')
|
1650 |
+
{
|
1651 |
+
if ($type == 'transient') {
|
1652 |
+
return get_transient('learn_press_dismiss_notice_' . $context);
|
1653 |
+
}
|
1654 |
+
|
1655 |
+
return get_option('learn_press_dismiss_notice_' . $context);
|
1656 |
}
|
1657 |
|
1658 |
+
if (!function_exists('learn_press_course_insert_section')) {
|
1659 |
+
|
1660 |
+
function learn_press_course_insert_section($section = array())
|
1661 |
+
{
|
1662 |
+
global $wpdb;
|
1663 |
+
$section = wp_parse_args(
|
1664 |
+
$section,
|
1665 |
+
array(
|
1666 |
+
'section_name' => '',
|
1667 |
+
'section_course_id' => 0,
|
1668 |
+
'section_order' => 0,
|
1669 |
+
'section_description' => ''
|
1670 |
+
)
|
1671 |
+
);
|
1672 |
+
$section = stripslashes_deep($section);
|
1673 |
+
extract($section);
|
1674 |
+
|
1675 |
+
$insert_data = compact('section_name', 'section_course_id', 'section_order', 'section_description');
|
1676 |
+
$wpdb->insert(
|
1677 |
+
$wpdb->learnpress_sections,
|
1678 |
+
$insert_data,
|
1679 |
+
array('%s', '%d', '%d')
|
1680 |
+
);
|
1681 |
+
|
1682 |
+
return $wpdb->insert_id;
|
1683 |
+
}
|
1684 |
|
1685 |
}
|
1686 |
|
1687 |
+
if (!function_exists('learn_press_course_insert_section_item')) {
|
1688 |
+
|
1689 |
+
function learn_press_course_insert_section_item($item_data = array())
|
1690 |
+
{
|
1691 |
+
global $wpdb;
|
1692 |
+
$wpdb->insert(
|
1693 |
+
$wpdb->learnpress_section_items,
|
1694 |
+
array(
|
1695 |
+
'section_id' => $item_data['section_id'],
|
1696 |
+
'item_id' => $item_data['item_id'],
|
1697 |
+
'item_order' => $item_data['item_order'],
|
1698 |
+
'item_type' => $item_data['item_type']
|
1699 |
+
),
|
1700 |
+
array(
|
1701 |
+
'%d',
|
1702 |
+
'%d',
|
1703 |
+
'%d',
|
1704 |
+
'%s',
|
1705 |
+
)
|
1706 |
+
);
|
1707 |
+
|
1708 |
+
return $wpdb->insert_id;
|
1709 |
+
}
|
1710 |
|
1711 |
}
|
1712 |
|
1713 |
+
if (!function_exists('learn_press_duplicate_post')) {
|
1714 |
+
|
1715 |
+
function learn_press_duplicate_post($post_id = null, $args = array(), $meta = true)
|
1716 |
+
{
|
1717 |
+
$post = get_post($post_id);
|
1718 |
+
if (!$post) {
|
1719 |
+
return;
|
1720 |
+
}
|
1721 |
+
$defalts = array(
|
1722 |
+
'comment_status' => $post->comment_status,
|
1723 |
+
'ping_status' => $post->ping_status,
|
1724 |
+
'post_author' => get_current_user_id(),
|
1725 |
+
'post_content' => $post->post_content,
|
1726 |
+
'post_excerpt' => $post->post_excerpt,
|
1727 |
+
'post_parent' => $post->post_parent,
|
1728 |
+
'post_password' => $post->post_password,
|
1729 |
+
'post_status' => 'draft',
|
1730 |
+
'post_title' => $post->post_title . ' - Copy',
|
1731 |
+
'post_type' => $post->post_type,
|
1732 |
+
'to_ping' => $post->to_ping,
|
1733 |
+
'menu_order' => $post->menu_order
|
1734 |
+
);
|
1735 |
+
$args = wp_parse_args($args, $defalts);
|
1736 |
+
$new_post_id = wp_insert_post($args);
|
1737 |
+
if (!is_wp_error($new_post_id) && $meta) {
|
1738 |
+
learn_press_duplicate_post_meta($post_id, $new_post_id);
|
1739 |
+
// assign related tags/categories to new course
|
1740 |
+
$taxonomies = get_object_taxonomies($post->post_type);
|
1741 |
+
foreach ($taxonomies as $taxonomy) {
|
1742 |
+
$post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
|
1743 |
+
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
|
1744 |
+
}
|
1745 |
+
}
|
1746 |
+
|
1747 |
+
return apply_filters('learn_press_duplicate_post', $new_post_id, $post_id);
|
1748 |
+
}
|
1749 |
}
|
1750 |
|
1751 |
+
if (!function_exists('learn_press_duplicate_post_meta')) {
|
1752 |
+
/**
|
1753 |
+
* duplicate all post meta just in two SQL queries
|
1754 |
+
*/
|
1755 |
+
function learn_press_duplicate_post_meta($old_post_id, $new_post_id, $excerpt = array())
|
1756 |
+
{
|
1757 |
+
global $wpdb;
|
1758 |
+
$post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$old_post_id");
|
1759 |
+
if (count($post_meta_infos) != 0) {
|
1760 |
+
$excerpt = array_merge(array('_edit_lock', '_edit_last'), $excerpt);
|
1761 |
+
$excerpt = apply_filters('learn_press_excerpt_duplicate_post_meta', $excerpt, $old_post_id, $new_post_id);
|
1762 |
+
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
|
1763 |
+
$sql_query_sel = array();
|
1764 |
+
foreach ($post_meta_infos as $meta) {
|
1765 |
+
if (in_array($meta->meta_key, $excerpt)) {
|
1766 |
+
continue;
|
1767 |
+
}
|
1768 |
+
if ($meta->meta_key === '_lp_course_author') {
|
1769 |
+
$meta->meta_value = get_current_user_id();
|
1770 |
+
}
|
1771 |
+
$meta_key = $meta->meta_key;
|
1772 |
+
$meta_value = addslashes($meta->meta_value);
|
1773 |
+
$sql_query_sel[] = "SELECT $new_post_id, '$meta_key', '$meta_value'";
|
1774 |
+
}
|
1775 |
+
$sql_query .= implode(" UNION ALL ", $sql_query_sel);
|
1776 |
+
$wpdb->query($sql_query);
|
1777 |
+
}
|
1778 |
+
}
|
1779 |
|
1780 |
}
|
1781 |
|
1782 |
+
add_filter('learn_press_question_types', 'learn_press_sort_questions', 99);
|
1783 |
+
if (!function_exists('learn_press_sort_questions')) {
|
1784 |
+
function learn_press_sort_questions($types)
|
1785 |
+
{
|
1786 |
+
$user_id = get_current_user_id();
|
1787 |
+
$question_types = get_user_meta($user_id, '_learn_press_memorize_question_types', true);
|
1788 |
+
if (!empty($question_types)) {
|
1789 |
+
$sort = array();
|
1790 |
+
// re-sort array descending
|
1791 |
+
arsort($question_types);
|
1792 |
+
$new_types = array();
|
1793 |
+
$ktypes = array_keys($types);
|
1794 |
+
|
1795 |
+
for ($i = 0; $i < count($ktypes) - 1; $i++) {
|
1796 |
+
$max = $i;
|
1797 |
+
if (!isset($question_types[$ktypes[$i]])) {
|
1798 |
+
$question_types[$ktypes[$i]] = 0;
|
1799 |
+
}
|
1800 |
+
for ($j = $i + 1; $j < count($ktypes); $j++) {
|
1801 |
+
if (isset($question_types[$ktypes[$j]], $question_types[$ktypes[$max]])
|
1802 |
+
&& $question_types[$ktypes[$j]] > $question_types[$ktypes[$max]]
|
1803 |
+
) {
|
1804 |
+
$max = $j;
|
1805 |
+
}
|
1806 |
+
}
|
1807 |
+
$tmp = $ktypes[$i];
|
1808 |
+
$ktypes[$i] = $ktypes[$max];
|
1809 |
+
$ktypes[$max] = $tmp;
|
1810 |
+
}
|
1811 |
+
$ktypes = array_flip($ktypes);
|
1812 |
+
$types = array_merge($ktypes, $types);
|
1813 |
+
}
|
1814 |
+
|
1815 |
+
return $types;
|
1816 |
+
}
|
1817 |
}
|
1818 |
|
1819 |
+
if (!function_exists('learn_press_duplicate_course')) {
|
1820 |
+
|
1821 |
+
function learn_press_duplicate_course($course_id = null, $force = true)
|
1822 |
+
{
|
1823 |
+
if (!function_exists('_learn_press_get_course_curriculum')) {
|
1824 |
+
require_once LP_PLUGIN_PATH . 'inc/lp-init.php';
|
1825 |
+
}
|
1826 |
+
global $wpdb;
|
1827 |
+
|
1828 |
+
if ($course_id && is_array($course_id)) {
|
1829 |
+
$course_id = array_shift($course_id);
|
1830 |
+
}
|
1831 |
+
// check for post is exists
|
1832 |
+
if (!$course_id || !($post = get_post($course_id))) {
|
1833 |
+
return new WP_Error(__('<p>Op! The course does not exist</p>', 'learnpress'));
|
1834 |
+
} else {
|
1835 |
+
// ensure that user can create course
|
1836 |
+
if (!current_user_can('edit_posts')) {
|
1837 |
+
return new WP_Error(__('<p>Sorry! You have not permission to duplicate this course</p>', 'learnpress'));
|
1838 |
+
} else {
|
1839 |
+
// duplicate course
|
1840 |
+
$new_course_id = learn_press_duplicate_post($course_id);
|
1841 |
+
if (!$new_course_id || is_wp_error($new_course_id)) {
|
1842 |
+
return new WP_Error(__('<p>Sorry! Duplicate course failed!</p>', 'learnpress'));
|
1843 |
+
} else {
|
1844 |
+
$curriculums = _learn_press_get_course_curriculum($course_id);
|
1845 |
+
foreach ($curriculums as $section_id => $section) {
|
1846 |
+
$new_section_id = learn_press_course_insert_section(array(
|
1847 |
+
'section_name' => $section->section_name,
|
1848 |
+
'section_course_id' => $new_course_id,
|
1849 |
+
'section_order' => $section->section_order,
|
1850 |
+
'section_description' => $section->section_description
|
1851 |
+
));
|
1852 |
+
|
1853 |
+
if ($section->items) {
|
1854 |
+
foreach ($section->items as $item) {
|
1855 |
+
// duplicate item
|
1856 |
+
if ($force && $item->post_type === LP_QUIZ_CPT) {
|
1857 |
+
$item_id = learn_press_duplicate_quiz($item->ID, array('post_status' => 'publish'));
|
1858 |
+
} else {
|
1859 |
+
$item_id = learn_press_duplicate_post($item->ID, array('post_status' => 'publish'));
|
1860 |
+
}
|
1861 |
+
if ($force) {
|
1862 |
+
$section_item_id = learn_press_course_insert_section_item(array(
|
1863 |
+
'section_id' => $new_section_id,
|
1864 |
+
'item_id' => $item_id,
|
1865 |
+
'item_order' => $item->item_order,
|
1866 |
+
'item_type' => $item->item_type
|
1867 |
+
));
|
1868 |
+
}
|
1869 |
+
}
|
1870 |
+
}
|
1871 |
+
}
|
1872 |
+
|
1873 |
+
return $new_course_id;
|
1874 |
+
}
|
1875 |
+
}
|
1876 |
+
}
|
1877 |
+
}
|
1878 |
|
1879 |
}
|
1880 |
|
1881 |
+
if (!function_exists('learn_press_duplicate_question')) {
|
1882 |
+
|
1883 |
+
function learn_press_duplicate_question($question_id = null, $quiz_id = null)
|
1884 |
+
{
|
1885 |
+
if (!$question_id || !get_post($question_id)) {
|
1886 |
+
return new WP_Error(sprintf(__('Question id %s is not exists.', 'learnpress'), $question_id));
|
1887 |
+
}
|
1888 |
+
if ($quiz_id && !get_post($quiz_id)) {
|
1889 |
+
return new WP_Error(sprintf(__('Quiz id %s is not exists.', 'learnpress'), $quiz_id));
|
1890 |
+
}
|
1891 |
+
|
1892 |
+
global $wpdb;
|
1893 |
+
$new_question_id = learn_press_duplicate_post($question_id);
|
1894 |
+
if ($quiz_id) {
|
1895 |
+
// learnpress_quiz_questions
|
1896 |
+
$sql = $wpdb->prepare("
|
1897 |
SELECT * FROM $wpdb->learnpress_quiz_questions WHERE quiz_id = %d AND question_id = %d
|
1898 |
+
", $quiz_id, $question_id);
|
1899 |
+
$quiz_question_data = $wpdb->get_row($sql);
|
1900 |
+
$max_order = $wpdb->get_var($wpdb->prepare("SELECT max(question_order) FROM {$wpdb->prefix}learnpress_quiz_questions WHERE quiz_id = %d", $quiz_id));
|
1901 |
+
|
1902 |
+
if ($quiz_question_data) {
|
1903 |
+
$wpdb->insert(
|
1904 |
+
$wpdb->learnpress_quiz_questions,
|
1905 |
+
array(
|
1906 |
+
'quiz_id' => $quiz_id,
|
1907 |
+
'question_id' => $new_question_id,
|
1908 |
+
'question_order' => $max_order + 1,
|
1909 |
+
'params' => $quiz_question_data->params
|
1910 |
+
),
|
1911 |
+
array(
|
1912 |
+
'%d',
|
1913 |
+
'%d',
|
1914 |
+
'%d',
|
1915 |
+
'%s'
|
1916 |
+
)
|
1917 |
+
);
|
1918 |
+
}
|
1919 |
+
}
|
1920 |
+
// learnpress_question_answers
|
1921 |
+
$sql = $wpdb->prepare("
|
1922 |
SELECT * FROM $wpdb->learnpress_question_answers WHERE question_id = %d
|
1923 |
+
", $question_id);
|
1924 |
+
$question_answers = $wpdb->get_results($sql);
|
1925 |
+
if ($question_answers) {
|
1926 |
+
foreach ($question_answers as $q_a) {
|
1927 |
+
$wpdb->insert(
|
1928 |
+
$wpdb->learnpress_question_answers,
|
1929 |
+
array(
|
1930 |
+
'question_id' => $new_question_id,
|
1931 |
+
'answer_data' => $q_a->answer_data,
|
1932 |
+
'answer_order' => $q_a->answer_order
|
1933 |
+
),
|
1934 |
+
array(
|
1935 |
+
'%d',
|
1936 |
+
'%s',
|
1937 |
+
'%s'
|
1938 |
+
)
|
1939 |
+
);
|
1940 |
+
}
|
1941 |
+
}
|
1942 |
+
|
1943 |
+
return $new_question_id;
|
1944 |
+
}
|
1945 |
|
1946 |
}
|
1947 |
|
1948 |
+
if (!function_exists('learn_press_duplicate_quiz')) {
|
1949 |
+
|
1950 |
+
function learn_press_duplicate_quiz($quiz_id = null, $args = array())
|
1951 |
+
{
|
1952 |
+
global $wpdb;
|
1953 |
+
$new_quiz_id = learn_press_duplicate_post($quiz_id, $args, true);
|
1954 |
+
$quiz = LP_Quiz::get_quiz($quiz_id);
|
1955 |
+
$questions = $quiz->get_questions();
|
1956 |
+
if ($questions) {
|
1957 |
+
$questions = array_keys($questions);
|
1958 |
+
foreach ($questions as $question_id) {
|
1959 |
+
$new_question_id = learn_press_duplicate_post($question_id);
|
1960 |
+
// learnpress_quiz_questions
|
1961 |
+
$sql = $wpdb->prepare("
|
1962 |
SELECT * FROM $wpdb->learnpress_quiz_questions WHERE quiz_id = %d AND question_id = %d
|
1963 |
+
", $quiz_id, $question_id);
|
1964 |
+
$quiz_question_data = $wpdb->get_row($sql);
|
1965 |
+
if ($quiz_question_data) {
|
1966 |
+
$wpdb->insert(
|
1967 |
+
$wpdb->learnpress_quiz_questions,
|
1968 |
+
array(
|
1969 |
+
'quiz_id' => $new_quiz_id,
|
1970 |
+
'question_id' => $new_question_id,
|
1971 |
+
'question_order' => $quiz_question_data->question_order,
|
1972 |
+
'params' => $quiz_question_data->params
|
1973 |
+
),
|
1974 |
+
array(
|
1975 |
+
'%d',
|
1976 |
+
'%d',
|
1977 |
+
'%d',
|
1978 |
+
'%s'
|
1979 |
+
)
|
1980 |
+
);
|
1981 |
+
}
|
1982 |
+
// learnpress_question_answers
|
1983 |
+
$sql = $wpdb->prepare("
|
1984 |
SELECT * FROM $wpdb->learnpress_question_answers WHERE question_id = %d
|
1985 |
+
", $question_id);
|
1986 |
+
$question_answers = $wpdb->get_results($sql);
|
1987 |
+
if ($question_answers) {
|
1988 |
+
foreach ($question_answers as $q_a) {
|
1989 |
+
$wpdb->insert(
|
1990 |
+
$wpdb->learnpress_question_answers,
|
1991 |
+
array(
|
1992 |
+
'question_id' => $new_question_id,
|
1993 |
+
'answer_data' => $q_a->answer_data,
|
1994 |
+
'answer_order' => $q_a->answer_order
|
1995 |
+
),
|
1996 |
+
array(
|
1997 |
+
'%d',
|
1998 |
+
'%s',
|
1999 |
+
'%s'
|
2000 |
+
)
|
2001 |
+
);
|
2002 |
+
}
|
2003 |
+
}
|
2004 |
+
}
|
2005 |
+
}
|
2006 |
+
|
2007 |
+
return $new_quiz_id;
|
2008 |
+
}
|
2009 |
|
2010 |
}
|
2011 |
|
2016 |
*
|
2017 |
* @return string
|
2018 |
*/
|
2019 |
+
function learn_press_get_file_version($file)
|
2020 |
+
{
|
2021 |
+
if (!file_exists($file)) {
|
2022 |
+
return '';
|
2023 |
+
}
|
2024 |
+
$fp = fopen($file, 'r');
|
2025 |
+
$file_data = fread($fp, 8192);
|
2026 |
+
fclose($fp);
|
2027 |
+
$file_data = str_replace("\r", "\n", $file_data);
|
2028 |
+
$version = '';
|
2029 |
+
if (preg_match('/^[ \t\/*#@]*' . preg_quote('@version', '/') . '(.*)$/mi', $file_data, $match) && $match[1]) {
|
2030 |
+
$version = _cleanup_header_comment($match[1]);
|
2031 |
+
}
|
2032 |
+
|
2033 |
+
return $version;
|
2034 |
}
|
2035 |
|
2036 |
/**
|
2040 |
*
|
2041 |
* @return array|bool
|
2042 |
*/
|
2043 |
+
function learn_press_get_theme_templates($check = false)
|
2044 |
+
{
|
2045 |
+
$template_folder = learn_press_template_path();
|
2046 |
+
$template_path = LP_PLUGIN_PATH . '/templates/';
|
2047 |
+
$template_dir = get_template_directory();
|
2048 |
+
$stylesheet_dir = get_stylesheet_directory();
|
2049 |
+
$t_folder = basename($template_dir);
|
2050 |
+
$s_folder = basename($stylesheet_dir);
|
2051 |
+
|
2052 |
+
$found_files = array($t_folder => array(), $s_folder => array());
|
2053 |
+
$outdated_templates = false;
|
2054 |
+
|
2055 |
+
$scanned_files = learn_press_scan_template_files($template_path);
|
2056 |
+
foreach ($scanned_files as $file) {
|
2057 |
+
$theme_folder = '';
|
2058 |
+
|
2059 |
+
if (file_exists($stylesheet_dir . '/' . $file)) {
|
2060 |
+
$theme_file = $stylesheet_dir . '/' . $file;
|
2061 |
+
$theme_folder = $s_folder;
|
2062 |
+
} elseif (file_exists($stylesheet_dir . '/' . $template_folder . '/' . $file)) {
|
2063 |
+
$theme_file = $stylesheet_dir . '/' . $template_folder . '/' . $file;
|
2064 |
+
$theme_folder = $s_folder;
|
2065 |
+
} elseif (file_exists($template_dir . '/' . $file)) {
|
2066 |
+
$theme_file = $template_dir . '/' . $file;
|
2067 |
+
$theme_folder = $t_folder;
|
2068 |
+
} elseif (file_exists($template_dir . '/' . $template_folder . '/' . $file)) {
|
2069 |
+
$theme_file = $template_dir . '/' . $template_folder . '/' . $file;
|
2070 |
+
$theme_folder = $t_folder;
|
2071 |
+
} else {
|
2072 |
+
$theme_file = false;
|
2073 |
+
}
|
2074 |
+
|
2075 |
+
if (!empty($theme_file)) {
|
2076 |
+
$core_version = learn_press_get_file_version($template_path . $file);
|
2077 |
+
$theme_version = learn_press_get_file_version($theme_file);
|
2078 |
+
|
2079 |
+
if ($core_version && (empty($theme_version) || version_compare($theme_version, $core_version, '<'))) {
|
2080 |
+
if (!$outdated_templates) {
|
2081 |
+
$outdated_templates = true;
|
2082 |
+
}
|
2083 |
+
$found_files[$theme_folder][] = array(
|
2084 |
+
str_replace(WP_CONTENT_DIR . '/themes/', '', $theme_file),
|
2085 |
+
$theme_version ? $theme_version : '-',
|
2086 |
+
$core_version,
|
2087 |
+
true
|
2088 |
+
);
|
2089 |
+
} else {
|
2090 |
+
$found_files[$theme_folder][] = array(
|
2091 |
+
str_replace(WP_CONTENT_DIR . '/themes/', '', $theme_file),
|
2092 |
+
$theme_version ? $theme_version : '?',
|
2093 |
+
$core_version ? $core_version : '?',
|
2094 |
+
null
|
2095 |
+
);
|
2096 |
+
}
|
2097 |
+
}
|
2098 |
+
if ($check && $outdated_templates) {
|
2099 |
+
return $outdated_templates;
|
2100 |
+
}
|
2101 |
+
}
|
2102 |
+
if (sizeof($found_files) > 1) {
|
2103 |
+
$found_files = array_merge($found_files[$t_folder], $found_files[$s_folder]);
|
2104 |
+
} else {
|
2105 |
+
$found_files = reset($found_files);
|
2106 |
+
}
|
2107 |
+
|
2108 |
+
return $check ? $outdated_templates : $found_files;
|
2109 |
}
|
2110 |
|
2111 |
+
function learn_press_detect_outdated_template()
|
2112 |
+
{
|
2113 |
+
$template_folder = learn_press_template_path();
|
2114 |
+
$template_path = LP_PLUGIN_PATH . '/templates/';
|
2115 |
+
$template_dir = get_template_directory();
|
2116 |
+
$stylesheet_dir = get_stylesheet_directory();
|
2117 |
+
$scanned_files = learn_press_scan_template_files($template_path);
|
2118 |
+
$parent_item = 0;
|
2119 |
+
$child_item = 0;
|
2120 |
+
|
2121 |
+
foreach ($scanned_files as $file) {
|
2122 |
+
$theme_file = false;
|
2123 |
+
$cradle = '';
|
2124 |
+
|
2125 |
+
if ($stylesheet_dir == $template_dir) { // Parent theme
|
2126 |
+
if (file_exists($template_dir . '/' . $file)) {
|
2127 |
+
$theme_file = $template_dir . '/' . $file;
|
2128 |
+
$cradle = 'parent';
|
2129 |
+
} elseif (file_exists($template_dir . '/' . $template_folder . '/' . $file)) {
|
2130 |
+
$theme_file = $template_dir . '/' . $template_folder . '/' . $file;
|
2131 |
+
$cradle = 'parent';
|
2132 |
+
}
|
2133 |
+
} else { // Child Theme
|
2134 |
+
if (file_exists($stylesheet_dir . '/' . $file)) {
|
2135 |
+
$theme_file = $stylesheet_dir . '/' . $file;
|
2136 |
+
$cradle = 'child';
|
2137 |
+
} elseif (file_exists($stylesheet_dir . '/' . $template_folder . '/' . $file)) {
|
2138 |
+
$theme_file = $stylesheet_dir . '/' . $template_folder . '/' . $file;
|
2139 |
+
$cradle = 'child';
|
2140 |
+
} elseif (file_exists($template_dir . '/' . $file)) {
|
2141 |
+
$theme_file = $template_dir . '/' . $file;
|
2142 |
+
$cradle = 'parent';
|
2143 |
+
} elseif (file_exists($template_dir . '/' . $template_folder . '/' . $file)) {
|
2144 |
+
$theme_file = $template_dir . '/' . $template_folder . '/' . $file;
|
2145 |
+
$cradle = 'parent';
|
2146 |
+
}
|
2147 |
+
}
|
2148 |
+
|
2149 |
+
if (!empty($theme_file)) {
|
2150 |
+
$core_version = learn_press_get_file_version($template_path . $file);
|
2151 |
+
$theme_version = learn_press_get_file_version($theme_file);
|
2152 |
+
|
2153 |
+
if ($core_version && (empty($theme_version) || version_compare($theme_version, $core_version, '<'))) {
|
2154 |
+
if ($cradle == 'parent') {
|
2155 |
+
$parent_item++;
|
2156 |
+
} else {
|
2157 |
+
$child_item++;
|
2158 |
+
}
|
2159 |
+
}
|
2160 |
+
}
|
2161 |
+
}
|
2162 |
+
if (!empty($child_item) || !empty($parent_item)) {
|
2163 |
+
|
2164 |
+
return array(
|
2165 |
+
'parent_item' => $parent_item,
|
2166 |
+
'child_item' => $child_item
|
2167 |
+
);
|
2168 |
+
}
|
2169 |
+
|
2170 |
+
return false;
|
|
|
|
|
|
|
|
|
2171 |
}
|
2172 |
|
2173 |
+
function learn_press_scan_template_files($template_path)
|
2174 |
+
{
|
2175 |
+
|
2176 |
+
$files = @scandir($template_path);
|
2177 |
+
$result = array();
|
2178 |
+
|
2179 |
+
if (!empty($files)) {
|
2180 |
+
foreach ($files as $key => $value) {
|
2181 |
+
if (!in_array($value, array(".", "..", 'index.php', 'index.html'))) {
|
2182 |
+
if (is_dir($template_path . '/' . $value)) {
|
2183 |
+
$sub_files = learn_press_scan_template_files($template_path . '/' . $value);
|
2184 |
+
foreach ($sub_files as $sub_file) {
|
2185 |
+
$result[] = $value . '/' . $sub_file;
|
2186 |
+
}
|
2187 |
+
} else {
|
2188 |
+
$result[] = $value;
|
2189 |
+
}
|
2190 |
+
}
|
2191 |
+
}
|
2192 |
+
}
|
2193 |
+
|
2194 |
+
return $result;
|
2195 |
}
|
2196 |
|
2197 |
+
if (!function_exists('learn_press_duplicate_lesson')) {
|
2198 |
|
2199 |
+
function learn_press_duplicate_lesson($lesson_id = null)
|
2200 |
+
{
|
2201 |
+
return learn_press_duplicate_post($lesson_id);
|
2202 |
+
}
|
2203 |
|
2204 |
}
|
2205 |
+
|
2206 |
+
|
2207 |
+
/**
|
2208 |
+
* Get general data to render in chart
|
2209 |
+
*
|
2210 |
+
* @param null $from
|
2211 |
+
* @param null $by
|
2212 |
+
* @param $time_ago
|
2213 |
+
*
|
2214 |
+
* @return array
|
2215 |
+
*/
|
2216 |
+
function learn_press_get_chart_general($from = null, $by = null, $time_ago)
|
2217 |
+
{
|
2218 |
+
global $wpdb;
|
2219 |
+
|
2220 |
+
$labels = array();
|
2221 |
+
$datasets = array();
|
2222 |
+
|
2223 |
+
if (is_null($from)) {
|
2224 |
+
$from = current_time('mysql');
|
2225 |
+
}
|
2226 |
+
|
2227 |
+
if (is_null($by)) {
|
2228 |
+
$by = 'days';
|
2229 |
+
}
|
2230 |
+
|
2231 |
+
$results = array(
|
2232 |
+
'all' => array(),
|
2233 |
+
'public' => array(),
|
2234 |
+
'pending' => array(),
|
2235 |
+
'free' => array(),
|
2236 |
+
'paid' => array()
|
2237 |
+
);
|
2238 |
+
|
2239 |
+
$results = array(
|
2240 |
+
'course' => array(),
|
2241 |
+
'lesson' => array(),
|
2242 |
+
'quiz' => array(),
|
2243 |
+
'student' => array(),
|
2244 |
+
'teacher' => array(),
|
2245 |
+
'revenue' => array()
|
2246 |
+
);
|
2247 |
+
|
2248 |
+
$from_time = is_numeric($from) ? $from : strtotime($from);
|
2249 |
+
|
2250 |
+
switch ($by) {
|
2251 |
+
case 'days':
|
2252 |
+
$date_format = 'M d Y';
|
2253 |
+
$_from = -$time_ago + 1;
|
2254 |
+
$_from = date('Y-m-d', strtotime("{$_from} {$by}", $from_time));
|
2255 |
+
$_to = date('Y-m-d', $from_time);
|
2256 |
+
$_sql_format = '%Y-%m-%d';
|
2257 |
+
$_key_format = 'Y-m-d';
|
2258 |
+
break;
|
2259 |
+
|
2260 |
+
case 'months':
|
2261 |
+
$date_format = 'M Y';
|
2262 |
+
$_from = -$time_ago + 1;
|
2263 |
+
$_from = date('Y-m-01', strtotime("{$_from} {$by}", $from_time));
|
2264 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
2265 |
+
$_to = date('Y-m-' . $days, $from_time);
|
2266 |
+
$_sql_format = '%Y-%m';
|
2267 |
+
$_key_format = 'Y-m';
|
2268 |
+
break;
|
2269 |
+
|
2270 |
+
case 'years':
|
2271 |
+
$date_format = 'Y';
|
2272 |
+
$_from = -$time_ago + 1;
|
2273 |
+
$_from = date('Y-01-01', strtotime("{$_from} {$by}", $from_time));
|
2274 |
+
$days = date('t', mktime(0, 0, 0, date('m', $from_time), 1, date('Y', $from_time)));
|
2275 |
+
$_to = date('Y-12-' . $days, $from_time);
|
2276 |
+
$_sql_format = '%Y';
|
2277 |
+
$_key_format = 'Y';
|
2278 |
+
break;
|
2279 |
+
|
2280 |
+
}
|
2281 |
+
|
2282 |
+
$query_where = '';
|
2283 |
+
if (current_user_can(LP_TEACHER_ROLE)) {
|
2284 |
+
$user_id = learn_press_get_current_user_id();
|
2285 |
+
$query_where .= $wpdb->prepare(" AND c.post_author=%d ", $user_id);
|
2286 |
+
}
|
2287 |
+
|
2288 |
+
$query = $wpdb->prepare("
|
2289 |
+
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
2290 |
+
FROM {$wpdb->posts} c
|
2291 |
+
WHERE 1
|
2292 |
+
{$query_where}
|
2293 |
+
AND c.post_status IN('publish', 'pending') AND c.post_type = %s
|
2294 |
+
GROUP BY d
|
2295 |
+
HAVING d BETWEEN %s AND %s
|
2296 |
+
ORDER BY d ASC
|
2297 |
+
", $_sql_format, 'lp_course', $_from, $_to);
|
2298 |
+
if ($_results = $wpdb->get_results($query)) {
|
2299 |
+
foreach ($_results as $k => $v) {
|
2300 |
+
$results['all'][$v->d] = $v;
|
2301 |
+
}
|
2302 |
+
}
|
2303 |
+
$query = $wpdb->prepare("
|
2304 |
+
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
2305 |
+
FROM {$wpdb->posts} c
|
2306 |
+
WHERE 1
|
2307 |
+
{$query_where}
|
2308 |
+
AND c.post_status = %s AND c.post_type = %s
|
2309 |
+
GROUP BY d
|
2310 |
+
HAVING d BETWEEN %s AND %s
|
2311 |
+
ORDER BY d ASC
|
2312 |
+
", $_sql_format, 'publish', 'lp_course', $_from, $_to);
|
2313 |
+
if ($_results = $wpdb->get_results($query)) {
|
2314 |
+
foreach ($_results as $k => $v) {
|
2315 |
+
$results['publish'][$v->d] = $v;
|
2316 |
+
}
|
2317 |
+
}
|
2318 |
+
|
2319 |
+
$query = $wpdb->prepare("
|
2320 |
+
SELECT count(c.ID) as c, DATE_FORMAT( c.post_date, %s) as d
|
2321 |
+
FROM {$wpdb->posts} c
|
2322 |
+
INNER JOIN {$wpdb->postmeta} cm ON cm.post_id = c.ID AND cm.meta_key = %s AND cm.meta_value = %s
|
2323 |
+
WHERE 1
|
2324 |
+
{$query_where}
|
2325 |
+
AND c.post_status = %s AND c.post_type = %s
|
2326 |
+
GROUP BY d
|
2327 |
+
HAVING d BETWEEN %s AND %s
|
2328 |
+
ORDER BY d ASC
|
2329 |
+
", $_sql_format, '_lp_payment', 'yes', 'publish', 'lp_course', $_from, $_to);
|
2330 |
+
if ($_results = $wpdb->get_results($query)) {
|
2331 |
+
foreach ($_results as $k => $v) {
|
2332 |
+
$results['paid'][$v->d] = $v;
|
2333 |
+
}
|
2334 |
+
}
|
2335 |
+
|
2336 |
+
for ($i = -$time_ago + 1; $i <= 0; $i++) {
|
2337 |
+
$date = strtotime("$i $by", $from_time);
|
2338 |
+
$labels[] = date($date_format, $date);
|
2339 |
+
$key = date($_key_format, $date);
|
2340 |
+
|
2341 |
+
$all = !empty($results['all'][$key]) ? $results['all'][$key]->c : 0;
|
2342 |
+
$publish = !empty($results['publish'][$key]) ? $results['publish'][$key]->c : 0;
|
2343 |
+
$paid = !empty($results['paid'][$key]) ? $results['paid'][$key]->c : 0;
|
2344 |
+
|
2345 |
+
$datasets[0]['data'][] = $all;
|
2346 |
+
$datasets[1]['data'][] = $publish;
|
2347 |
+
$datasets[2]['data'][] = $all - $publish;
|
2348 |
+
$datasets[3]['data'][] = $paid;
|
2349 |
+
$datasets[4]['data'][] = $all - $paid;
|
2350 |
+
}
|
2351 |
+
|
2352 |
+
$dataset_params = array(
|
2353 |
+
array(
|
2354 |
+
'color1' => 'rgba(47, 167, 255, %s)',
|
2355 |
+
'color2' => '#FFF',
|
2356 |
+
'label' => __('All', 'learnpress')
|
2357 |
+
),
|
2358 |
+
array(
|
2359 |
+
'color1' => 'rgba(212, 208, 203, %s)',
|
2360 |
+
'color2' => '#FFF',
|
2361 |
+
'label' => __('Publish', 'learnpress')
|
2362 |
+
),
|
2363 |
+
array(
|
2364 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
2365 |
+
'color2' => '#FFF',
|
2366 |
+
'label' => __('Pending', 'learnpress')
|
2367 |
+
),
|
2368 |
+
array(
|
2369 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
2370 |
+
'color2' => '#FFF',
|
2371 |
+
'label' => __('Paid', 'learnpress')
|
2372 |
+
),
|
2373 |
+
array(
|
2374 |
+
'color1' => 'rgba(234, 199, 155, %s)',
|
2375 |
+
'color2' => '#FFF',
|
2376 |
+
'label' => __('Free', 'learnpress')
|
2377 |
+
)
|
2378 |
+
);
|
2379 |
+
|
2380 |
+
foreach ($dataset_params as $k => $v) {
|
2381 |
+
$datasets[$k]['fillColor'] = sprintf($v['color1'], '0.2');
|
2382 |
+
$datasets[$k]['strokeColor'] = sprintf($v['color1'], '1');
|
2383 |
+
$datasets[$k]['pointColor'] = sprintf($v['color1'], '1');
|
2384 |
+
$datasets[$k]['pointStrokeColor'] = $v['color2'];
|
2385 |
+
$datasets[$k]['pointHighlightFill'] = $v['color2'];
|
2386 |
+
$datasets[$k]['pointHighlightStroke'] = sprintf($v['color1'], '1');
|
2387 |
+
$datasets[$k]['label'] = $v['label'];
|
2388 |
+
}
|
2389 |
+
|
2390 |
+
return array(
|
2391 |
+
'labels' => $labels,
|
2392 |
+
'datasets' => $datasets,
|
2393 |
+
'sql' => $query
|
2394 |
+
);
|
2395 |
+
}
|
2396 |
+
|
2397 |
+
function learn_press_get_default_section($section = null)
|
2398 |
+
{
|
2399 |
+
if (!$section) {
|
2400 |
+
$section = new stdClass();
|
2401 |
+
}
|
2402 |
+
foreach (array(
|
2403 |
+
'section_id' => null,
|
2404 |
+
'section_name' => '',
|
2405 |
+
'section_course_id' => null,
|
2406 |
+
'section_order' => null,
|
2407 |
+
'section_description' => ''
|
2408 |
+
) as $k => $v) {
|
2409 |
+
if (!property_exists($section, $k)) {
|
2410 |
+
$section->{$k} = $v;
|
2411 |
+
}
|
2412 |
+
}
|
2413 |
+
return $section;
|
2414 |
+
}
|
inc/admin/meta-boxes/class-course-tabs-field.php
CHANGED
@@ -11,7 +11,7 @@ if ( !class_exists( 'RWMB_Course_Tabs_Field' ) ) {
|
|
11 |
* @class RWMB_Course_lesson_Quiz_Field
|
12 |
*/
|
13 |
class RWMB_Course_Tabs_Field extends RWMB_Field {
|
14 |
-
public static function html() {
|
15 |
ob_start();
|
16 |
learn_press_admin_view( 'meta-boxes/course/tabs.php' );
|
17 |
return ob_get_clean();
|
11 |
* @class RWMB_Course_lesson_Quiz_Field
|
12 |
*/
|
13 |
class RWMB_Course_Tabs_Field extends RWMB_Field {
|
14 |
+
public static function html( $meta, $field ) {
|
15 |
ob_start();
|
16 |
learn_press_admin_view( 'meta-boxes/course/tabs.php' );
|
17 |
return ob_get_clean();
|
inc/admin/meta-boxes/class-curriculum-field.php
DELETED
@@ -1,316 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Prevent loading this file directly
|
3 |
-
defined( 'ABSPATH' ) || exit;
|
4 |
-
|
5 |
-
if ( !class_exists( 'RWMB_Curriculum_Field' ) ) {
|
6 |
-
/**
|
7 |
-
* Thim Theme
|
8 |
-
*
|
9 |
-
* Manage Course, Lesson, Quiz
|
10 |
-
*
|
11 |
-
* @class RWMB_Course_lesson_Quiz_Field
|
12 |
-
*/
|
13 |
-
class RWMB_Curriculum_Field extends RWMB_Field {
|
14 |
-
/**
|
15 |
-
* Enqueue scripts and styles
|
16 |
-
*
|
17 |
-
* @return void
|
18 |
-
*/
|
19 |
-
public static function admin_enqueue_scripts() {
|
20 |
-
|
21 |
-
LP_Assets::enqueue_script( 'learn-press-modal-search-items' );
|
22 |
-
LP_Assets::add_localize(
|
23 |
-
array(
|
24 |
-
'confirm_remove_section_lesson' => __( 'Do you want to remove this lesson permanently?', 'learnpress' ),
|
25 |
-
'confirm_remove_section_quiz' => __( 'Do you want to remove this quiz permanently?', 'learnpress' ),
|
26 |
-
'confirm_remove_section' => __( 'Do you want to remove this section permanently?', 'learnpress' ),
|
27 |
-
'add_new_quiz' => __( 'New quiz added', 'learnpress' ),
|
28 |
-
'add_new_lesson' => __( 'New lesson added', 'learnpress' ),
|
29 |
-
'add_new_section' => __( 'New section added', 'learnpress' ),
|
30 |
-
'remove_section_lesson' => __( 'The lesson removed', 'learnpress' ),
|
31 |
-
'remove_section_quiz' => __( 'The quiz removed', 'learnpress' ),
|
32 |
-
'remove_section' => __( 'The section removed', 'learnpress' ),
|
33 |
-
'section_ordered' => __( 'The ordering completed', 'learnpress' ),
|
34 |
-
'add_lesson_to_section' => __( 'Lesson added to section completed!', 'learnpress' ),
|
35 |
-
'add_quiz_to_section' => __( 'Quiz added to section completed!', 'learnpress' ),
|
36 |
-
'update_lesson_quiz' => __( '%s updated', 'learnpress' ),
|
37 |
-
'quick_edit_name' => __( 'Click to quick edit name', 'learnpress' ),
|
38 |
-
'save_course' => __( 'Save Course', 'learnpress' ),
|
39 |
-
'submit_course_review' => __( 'Submit for Review', 'learnpress' )
|
40 |
-
), null, 'learn-press-mb-course'
|
41 |
-
);
|
42 |
-
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* Get field HTML
|
46 |
-
*
|
47 |
-
* @param mixed $meta
|
48 |
-
* @param array $field
|
49 |
-
*
|
50 |
-
* @return string
|
51 |
-
*/
|
52 |
-
public static function html( $meta, $field ) {
|
53 |
-
global $post;
|
54 |
-
$course = LP_Course::get_course( $post );
|
55 |
-
$view = learn_press_get_admin_view( 'meta-boxes/course/curriculum.php' );
|
56 |
-
ob_start();
|
57 |
-
include $view;
|
58 |
-
return ob_get_clean();
|
59 |
-
}
|
60 |
-
|
61 |
-
/**
|
62 |
-
* Normalize parameters for field
|
63 |
-
*
|
64 |
-
* @param array $field
|
65 |
-
*
|
66 |
-
* @return array
|
67 |
-
*/
|
68 |
-
public static function normalize_field( $field ) {
|
69 |
-
$field = wp_parse_args( $field, array(
|
70 |
-
'size' => 30,
|
71 |
-
'datalist' => false,
|
72 |
-
'placeholder' => '',
|
73 |
-
) );
|
74 |
-
|
75 |
-
return $field;
|
76 |
-
}
|
77 |
-
|
78 |
-
/**
|
79 |
-
* Create datalist, if any
|
80 |
-
*
|
81 |
-
* @param array $field
|
82 |
-
*
|
83 |
-
* @return array
|
84 |
-
*/
|
85 |
-
public static function datalist_html( $field ) {
|
86 |
-
if ( !$field['datalist'] ) {
|
87 |
-
return '';
|
88 |
-
}
|
89 |
-
|
90 |
-
$datalist = $field['datalist'];
|
91 |
-
$html = sprintf(
|
92 |
-
'<datalist id="%s">',
|
93 |
-
$datalist['id']
|
94 |
-
);
|
95 |
-
|
96 |
-
foreach ( $datalist['options'] as $option ) {
|
97 |
-
$html .= sprintf( '<option value="%s"></option>', $option );
|
98 |
-
}
|
99 |
-
|
100 |
-
$html .= '</datalist>';
|
101 |
-
|
102 |
-
return $html;
|
103 |
-
}
|
104 |
-
|
105 |
-
/**
|
106 |
-
* Save meta value
|
107 |
-
* If field is cloneable, value is saved as a single entry in DB
|
108 |
-
* Otherwise value is saved as multiple entries (for backward compatibility)
|
109 |
-
*
|
110 |
-
* TODO: A good way to ALWAYS save values in single entry in DB, while maintaining backward compatibility
|
111 |
-
*
|
112 |
-
* @param $new
|
113 |
-
* @param $old
|
114 |
-
* @param $post_id
|
115 |
-
* @param $field
|
116 |
-
*/
|
117 |
-
public static function save( $new, $old, $post_id, $field ) {
|
118 |
-
|
119 |
-
if ( empty( $new ) ) {
|
120 |
-
delete_post_meta( $post_id, $field['id'] );
|
121 |
-
} else {
|
122 |
-
$new = array_values( $new );
|
123 |
-
for ( $n = count( $new ), $i = $n - 1; $i >= 0; $i -- ) {
|
124 |
-
if ( !$new[$i]['name'] ) unset( $new[$i] );
|
125 |
-
}
|
126 |
-
$new = array_values( $new );
|
127 |
-
update_post_meta( $post_id, $field['id'], $new );
|
128 |
-
}
|
129 |
-
}
|
130 |
-
|
131 |
-
public static function add_actions() {
|
132 |
-
// Do same actions as file field
|
133 |
-
parent::add_actions();
|
134 |
-
|
135 |
-
/*add_action( 'wp_ajax_lpr_quick_add', array( __CLASS__, 'quick_add' ) );
|
136 |
-
add_action( 'wp_ajax_lpr_update_course_curriculum', array( __CLASS__, 'update_course_curriculum' ) );
|
137 |
-
add_action( 'wp_ajax_lpr_quick_edit_lesson_quiz_name', array( __CLASS__, 'quick_edit_lesson_quiz_name' ) );
|
138 |
-
add_action( 'wp_ajax_lpr_update_section_state', array( __CLASS__, 'update_section_state' ) );
|
139 |
-
add_action( 'wp_ajax_lpr_remove_lesson_quiz', array( __CLASS__, 'remove_lesson_quiz' ) );*/
|
140 |
-
|
141 |
-
///add_action( 'save_post', array( __CLASS__, 'update_course_curriculum' ) );
|
142 |
-
add_filter( 'learn_press_loop_section_buttons', array( __CLASS__, 'add_section_buttons' ) );
|
143 |
-
//add_filter( 'learn_press_after_section_content', array( __CLASS__, 'section_options' ) );
|
144 |
-
}
|
145 |
-
|
146 |
-
public static function add_section_buttons( $buttons ) {
|
147 |
-
$buttons = array_merge(
|
148 |
-
$buttons,
|
149 |
-
array(
|
150 |
-
array(
|
151 |
-
'id' => 'add-lesson',
|
152 |
-
'text' => __( 'Add Lesson', 'learnpress' ),
|
153 |
-
'attr' => 'data-action="add-lesson" data-type="lp_lesson"'
|
154 |
-
),
|
155 |
-
array(
|
156 |
-
'id' => 'add-quiz',
|
157 |
-
'text' => __( 'Add Quiz', 'learnpress' ),
|
158 |
-
'attr' => 'data-action="add-quiz" data-type="lp_quiz"'
|
159 |
-
)
|
160 |
-
)
|
161 |
-
);
|
162 |
-
return $buttons;
|
163 |
-
}
|
164 |
-
|
165 |
-
public static function section_options() {
|
166 |
-
?>
|
167 |
-
<table class="form-table">
|
168 |
-
<tr>
|
169 |
-
<th>
|
170 |
-
<?php _e( 'Using final quiz', 'learnpress' ); ?>
|
171 |
-
</th>
|
172 |
-
<td>
|
173 |
-
<input type="checkbox" />
|
174 |
-
|
175 |
-
<p class="description"><?php _e( 'User must be complete the final quiz to finish a section.', 'learnpress' ); ?></p>
|
176 |
-
|
177 |
-
</td>
|
178 |
-
</tr>
|
179 |
-
</table>
|
180 |
-
<?php
|
181 |
-
}
|
182 |
-
|
183 |
-
public static function remove_lesson_quiz() {
|
184 |
-
$lesson_quiz_id = $_POST['lesson_quiz_id'];
|
185 |
-
delete_post_meta( $lesson_quiz_id, '_lpr_course' );
|
186 |
-
update_post_meta( $lesson_quiz_id, '_lpr_course', 0 );
|
187 |
-
}
|
188 |
-
|
189 |
-
public static function update_section_state() {
|
190 |
-
$post_id = $_POST['post_id'];
|
191 |
-
$section = $_POST['section'];
|
192 |
-
update_post_meta( $post_id, '_lpr_course_section_state', $section );
|
193 |
-
die();
|
194 |
-
}
|
195 |
-
|
196 |
-
public static function quick_add() {
|
197 |
-
//ob_end_flush();
|
198 |
-
echo '__LP_JSON__';
|
199 |
-
$name = isset( $_POST['name'] ) ? $_POST['name'] : null;
|
200 |
-
$type = isset( $_POST['type'] ) ? $_POST['type'] : null;
|
201 |
-
$course_id = isset( $_POST['course_id'] ) ? $_POST['course_id'] : null;
|
202 |
-
$post = false;
|
203 |
-
if ( $name && $type ) {
|
204 |
-
$post_id = wp_insert_post(
|
205 |
-
array(
|
206 |
-
'post_title' => $name,
|
207 |
-
'post_type' => $type == 'lesson' ? LP_LESSON_CPT : LP_QUIZ_CPT,
|
208 |
-
'post_status' => 'publish'
|
209 |
-
)
|
210 |
-
);
|
211 |
-
if ( $post_id ) {
|
212 |
-
$post = get_post( $post_id );
|
213 |
-
if ( $course_id ) {
|
214 |
-
update_post_meta( $post_id, '_lpr_course', $course_id );
|
215 |
-
}
|
216 |
-
}
|
217 |
-
}
|
218 |
-
wp_send_json( $post );
|
219 |
-
die();
|
220 |
-
}
|
221 |
-
|
222 |
-
public static function quick_edit_lesson_quiz_name() {
|
223 |
-
$id = isset( $_POST['id'] ) ? intval( $_POST['id'] ) : 0;
|
224 |
-
echo '__LP_JSON__';
|
225 |
-
if ( $id ) {
|
226 |
-
$name = $_POST['name'];
|
227 |
-
$slug = sanitize_title( $name );
|
228 |
-
$post_id = wp_update_post(
|
229 |
-
array(
|
230 |
-
'ID' => $id,
|
231 |
-
'post_title' => $name,
|
232 |
-
'post_name' => $slug
|
233 |
-
)
|
234 |
-
);
|
235 |
-
if ( $post_id ) {
|
236 |
-
wp_send_json( get_post( $post_id ) );
|
237 |
-
}
|
238 |
-
}
|
239 |
-
|
240 |
-
}
|
241 |
-
|
242 |
-
public static function update_course_curriculum() {
|
243 |
-
|
244 |
-
$is_ajax = false;
|
245 |
-
if ( !empty( $_REQUEST['action'] ) && 'lpr_update_course_curriculum' == $_REQUEST['action'] ) {
|
246 |
-
$course_id = isset( $_POST['course_id'] ) ? intval( $_POST['course_id'] ) : 0;
|
247 |
-
$is_ajax = true;
|
248 |
-
} else {
|
249 |
-
if ( LP_COURSE_CPT != get_post_type() ) return;
|
250 |
-
global $post;
|
251 |
-
$course_id = $post->ID;
|
252 |
-
}
|
253 |
-
$meta_key = isset( $_POST['meta_key'] ) ? $_POST['meta_key'] : '_lpr_course_lesson_quiz';
|
254 |
-
$metadata = isset( $_POST['_lpr_course_lesson_quiz'] ) ? $_POST['_lpr_course_lesson_quiz'] : false;
|
255 |
-
if ( !$course_id ) {
|
256 |
-
echo '__LP_JSON__';
|
257 |
-
wp_send_json(
|
258 |
-
array(
|
259 |
-
'message' => __( 'The course is empty', 'learnpress' )
|
260 |
-
)
|
261 |
-
);
|
262 |
-
}
|
263 |
-
|
264 |
-
$metadata = apply_filters( 'learn_press_course_curriculum', $metadata, $course_id );
|
265 |
-
update_post_meta( $course_id, $meta_key, $metadata );
|
266 |
-
do_action( 'learn_press_update_course_curriculum', $course_id, $metadata );
|
267 |
-
|
268 |
-
//
|
269 |
-
global $wpdb;
|
270 |
-
if ( $metadata ) foreach ( $metadata as $section ) {
|
271 |
-
if ( !empty( $section['lesson_quiz'] ) && $lesson_quiz = $section['lesson_quiz'] ) {
|
272 |
-
$query = $wpdb->prepare( "
|
273 |
-
DELETE FROM {$wpdb->postmeta}
|
274 |
-
WHERE meta_key = %s
|
275 |
-
AND ( meta_value = %d OR meta_value = %d OR meta_value = %s )
|
276 |
-
AND post_id IN(" . join( ',', $lesson_quiz ) . ")
|
277 |
-
", '_lpr_course', $course_id, 0, '' );
|
278 |
-
|
279 |
-
$wpdb->query( $query );
|
280 |
-
|
281 |
-
$query = "INSERT INTO {$wpdb->postmeta}(`post_id`, `meta_key`, `meta_value`) VALUES";
|
282 |
-
$query_values = array();
|
283 |
-
foreach ( $lesson_quiz as $id ) {
|
284 |
-
$query_values[] = $wpdb->prepare( "(%d, %s, %d)", $id, '_lpr_course', $course_id );
|
285 |
-
}
|
286 |
-
$query .= join( ",", $query_values );
|
287 |
-
$wpdb->query( $query );
|
288 |
-
}
|
289 |
-
}
|
290 |
-
if ( !$is_ajax ) return;
|
291 |
-
wp_send_json(
|
292 |
-
array(
|
293 |
-
'message' => __( 'Success', 'learnpress' )
|
294 |
-
)
|
295 |
-
);
|
296 |
-
}
|
297 |
-
|
298 |
-
public static function meta( $post_id, $saved, $field ) {
|
299 |
-
$meta = get_post_meta( $post_id, $field['id'], true );
|
300 |
-
|
301 |
-
// Use $field['std'] only when the meta box hasn't been saved (i.e. the first time we run)
|
302 |
-
$meta = ( !$saved && '' === $meta || array() === $meta ) ? $field['std'] : $meta;
|
303 |
-
|
304 |
-
// Escape attributes for non-wysiwyg fields
|
305 |
-
if ( 'wysiwyg' !== $field['type'] ) {
|
306 |
-
//$meta = is_array( $meta ) ? array_map( 'esc_attr', $meta ) : esc_attr( $meta );
|
307 |
-
}
|
308 |
-
|
309 |
-
return $meta;
|
310 |
-
}
|
311 |
-
|
312 |
-
public static function cleanHeader() {
|
313 |
-
|
314 |
-
}
|
315 |
-
}
|
316 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/admin/meta-boxes/class-meta-box-tabs.php
DELETED
@@ -1,18 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Prevent loading this file directly
|
3 |
-
defined( 'ABSPATH' ) || exit;
|
4 |
-
|
5 |
-
if ( !class_exists( 'RWMB_Meta_Box_Tabs_Field' ) ) {
|
6 |
-
/**
|
7 |
-
* Thim Theme
|
8 |
-
*
|
9 |
-
* Manage Course, Lesson, Quiz
|
10 |
-
*
|
11 |
-
* @class RWMB_Course_lesson_Quiz_Field
|
12 |
-
*/
|
13 |
-
class RWMB_Meta_Box_Tabs_Field extends RWMB_Field {
|
14 |
-
public static function html() {
|
15 |
-
echo 'xxxxxxxxxxxxxx';
|
16 |
-
}
|
17 |
-
}
|
18 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/{libraries/meta-box/inc/fields → admin/meta-boxes}/duration.php
RENAMED
@@ -1,67 +1,80 @@
|
|
1 |
-
<?php
|
2 |
-
// Prevent loading this file directly
|
3 |
-
defined( 'ABSPATH' ) || exit;
|
4 |
-
|
5 |
-
if ( !class_exists( 'RWMB_Duration_Field' ) ) {
|
6 |
-
class RWMB_Duration_Field extends RWMB_Field {
|
7 |
-
/**
|
8 |
-
* Get field HTML
|
9 |
-
*
|
10 |
-
* @param mixed $meta
|
11 |
-
* @param array $field
|
12 |
-
*
|
13 |
-
* @return string
|
14 |
-
*/
|
15 |
-
static function html( $meta, $field ) {
|
16 |
-
$duration = learn_press_get_course_duration_support();
|
17 |
-
$duration_keys = array_keys( $duration );
|
18 |
-
$default_time = !empty( $field['default_time'] ) ? $field['default_time'] : end( $duration_keys );
|
19 |
-
if ( preg_match_all( '!([0-9]+)\s*(' . join( '|', $duration_keys ) . ')?!', $meta, $matches ) ) {
|
20 |
-
$a1 = $matches[1][0];
|
21 |
-
$a2 = in_array( $matches[2][0], $duration_keys ) ? $matches[2][0] : $default_time;
|
22 |
-
} else {
|
23 |
-
$a1 = absint( $meta );
|
24 |
-
$a2 = $default_time;
|
25 |
-
}
|
26 |
-
$html_option = '';
|
27 |
-
foreach ( $duration as $k => $v ) {
|
28 |
-
$html_option .= sprintf( '<option value="%s" %s>%s</option>', $k, selected( $k, $a2, false ), $v );
|
29 |
-
}
|
30 |
-
|
31 |
-
return sprintf(
|
32 |
-
'<input type="number" class="rwmb-number" name="%s[]" id="%s" value="%s" step="%s" min="%s" placeholder="%s"/>',
|
33 |
-
$field['field_name'],
|
34 |
-
empty( $field['clone'] ) ? $field['id'] : '',
|
35 |
-
$a1,
|
36 |
-
$field['step'],
|
37 |
-
$field['min'],
|
38 |
-
$field['placeholder']
|
39 |
-
) . sprintf(
|
40 |
-
'<select name="%s[]" id="%s">%s</select>',
|
41 |
-
$field['field_name'],
|
42 |
-
empty( $field['clone'] ) ? $field['id'].'_select' : '',
|
43 |
-
$html_option
|
44 |
-
);
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* Normalize parameters for field
|
49 |
-
*
|
50 |
-
* @param array $field
|
51 |
-
*
|
52 |
-
* @return array
|
53 |
-
*/
|
54 |
-
static function normalize_field( $field ) {
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Prevent loading this file directly
|
3 |
+
defined( 'ABSPATH' ) || exit;
|
4 |
+
|
5 |
+
if ( !class_exists( 'RWMB_Duration_Field' ) ) {
|
6 |
+
class RWMB_Duration_Field extends RWMB_Field {
|
7 |
+
/**
|
8 |
+
* Get field HTML
|
9 |
+
*
|
10 |
+
* @param mixed $meta
|
11 |
+
* @param array $field
|
12 |
+
*
|
13 |
+
* @return string
|
14 |
+
*/
|
15 |
+
static function html( $meta, $field ) {
|
16 |
+
$duration = learn_press_get_course_duration_support();
|
17 |
+
$duration_keys = array_keys( $duration );
|
18 |
+
$default_time = !empty( $field['default_time'] ) ? $field['default_time'] : end( $duration_keys );
|
19 |
+
if ( preg_match_all( '!([0-9]+)\s*(' . join( '|', $duration_keys ) . ')?!', $meta, $matches ) ) {
|
20 |
+
$a1 = $matches[1][0];
|
21 |
+
$a2 = in_array( $matches[2][0], $duration_keys ) ? $matches[2][0] : $default_time;
|
22 |
+
} else {
|
23 |
+
$a1 = absint( $meta );
|
24 |
+
$a2 = $default_time;
|
25 |
+
}
|
26 |
+
$html_option = '';
|
27 |
+
foreach ( $duration as $k => $v ) {
|
28 |
+
$html_option .= sprintf( '<option value="%s" %s>%s</option>', $k, selected( $k, $a2, false ), $v );
|
29 |
+
}
|
30 |
+
|
31 |
+
return sprintf(
|
32 |
+
'<input type="number" class="rwmb-number" name="%s[]" id="%s" value="%s" step="%s" min="%s" placeholder="%s"/>',
|
33 |
+
$field['field_name'],
|
34 |
+
empty( $field['clone'] ) ? $field['id'] : '',
|
35 |
+
$a1,
|
36 |
+
$field['step'],
|
37 |
+
$field['min'],
|
38 |
+
$field['placeholder']
|
39 |
+
) . sprintf(
|
40 |
+
'<select name="%s[]" id="%s">%s</select>',
|
41 |
+
$field['field_name'],
|
42 |
+
empty( $field['clone'] ) ? $field['id'] . '_select' : '',
|
43 |
+
$html_option
|
44 |
+
);
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Normalize parameters for field
|
49 |
+
*
|
50 |
+
* @param array $field
|
51 |
+
*
|
52 |
+
* @return array
|
53 |
+
*/
|
54 |
+
static function normalize_field( $field ) {
|
55 |
+
return self::normalize( $field );
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Normalize parameters for field
|
60 |
+
*
|
61 |
+
* @param array $field
|
62 |
+
*
|
63 |
+
* @return array
|
64 |
+
*/
|
65 |
+
static function normalize( $field ) {
|
66 |
+
if ( is_callable( 'parent::normalize' ) ) {
|
67 |
+
$field = parent::normalize( $field );
|
68 |
+
}
|
69 |
+
$field = wp_parse_args( $field, array(
|
70 |
+
'step' => 1,
|
71 |
+
'min' => 0,
|
72 |
+
) );
|
73 |
+
return $field;
|
74 |
+
}
|
75 |
+
|
76 |
+
static function value( $new, $old, $post_id, $field ) {
|
77 |
+
return join( ' ', $new );
|
78 |
+
}
|
79 |
+
}
|
80 |
+
}
|
inc/admin/settings/class-lp-settings-courses.php
CHANGED
@@ -18,13 +18,13 @@ class LP_Settings_Courses extends LP_Settings_Base {
|
|
18 |
'title' => __( 'General', 'learnpress' )
|
19 |
)
|
20 |
);
|
|
|
21 |
return $sections = apply_filters( 'learn_press_settings_sections_' . $this->id, $sections );
|
22 |
}
|
23 |
|
24 |
public function save() {
|
25 |
parent::save();
|
26 |
$course_permalink = $_POST['learn_press_course_base'];
|
27 |
-
update_option( 'learn_press_course_base_type', $course_permalink );
|
28 |
if ( $course_permalink == 'custom' ) {
|
29 |
$course_permalink = trim( $_POST['course_permalink_structure'], '/' );
|
30 |
|
@@ -33,8 +33,10 @@ class LP_Settings_Courses extends LP_Settings_Base {
|
|
33 |
}
|
34 |
|
35 |
$course_permalink = '/' . $course_permalink;
|
36 |
-
|
37 |
-
|
|
|
|
|
38 |
}
|
39 |
|
40 |
$course_base = untrailingslashit( $course_permalink );
|
@@ -95,13 +97,39 @@ class LP_Settings_Courses extends LP_Settings_Base {
|
|
95 |
'default' => 'yes',
|
96 |
'type' => 'checkbox'
|
97 |
),
|
98 |
-
|
|
|
99 |
'title' => __( 'Show list of question in quiz', 'learnpress' ),
|
100 |
'desc' => __( 'Show/Hide list questions in quiz.', 'learnpress' ),
|
101 |
'id' => $this->get_field_name( 'disable_question_in_quiz' ),
|
102 |
'default' => 'yes',
|
103 |
'type' => 'checkbox'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
array(
|
106 |
'title' => __( 'Archive', 'learnpress' ),
|
107 |
'type' => 'title'
|
18 |
'title' => __( 'General', 'learnpress' )
|
19 |
)
|
20 |
);
|
21 |
+
|
22 |
return $sections = apply_filters( 'learn_press_settings_sections_' . $this->id, $sections );
|
23 |
}
|
24 |
|
25 |
public function save() {
|
26 |
parent::save();
|
27 |
$course_permalink = $_POST['learn_press_course_base'];
|
|
|
28 |
if ( $course_permalink == 'custom' ) {
|
29 |
$course_permalink = trim( $_POST['course_permalink_structure'], '/' );
|
30 |
|
33 |
}
|
34 |
|
35 |
$course_permalink = '/' . $course_permalink;
|
36 |
+
update_option( 'learn_press_course_base_type', 'custom' );
|
37 |
+
|
38 |
+
} else {
|
39 |
+
delete_option( 'learn_press_course_base_type' );
|
40 |
}
|
41 |
|
42 |
$course_base = untrailingslashit( $course_permalink );
|
97 |
'default' => 'yes',
|
98 |
'type' => 'checkbox'
|
99 |
),
|
100 |
+
// Removed from 2.1.4
|
101 |
+
/*array(
|
102 |
'title' => __( 'Show list of question in quiz', 'learnpress' ),
|
103 |
'desc' => __( 'Show/Hide list questions in quiz.', 'learnpress' ),
|
104 |
'id' => $this->get_field_name( 'disable_question_in_quiz' ),
|
105 |
'default' => 'yes',
|
106 |
'type' => 'checkbox'
|
107 |
+
),*/
|
108 |
+
/* Temporary remove from 2.1.4
|
109 |
+
array(
|
110 |
+
'title' => __( 'Auto redirect next lesson', 'learnpress' ),
|
111 |
+
'desc' => __( 'Redirect to the next lesson after completed the lesson', 'learnpress' ),
|
112 |
+
'id' => $this->get_field_name( 'auto_redirect_next_lesson' ),
|
113 |
+
'default' => 'no',
|
114 |
+
'type' => 'checkbox'
|
115 |
),
|
116 |
+
array(
|
117 |
+
'title' => __( 'Time delay redirect', 'learnpress' ),
|
118 |
+
'desc' => __( 'The item will be redirected after certain amount of time, unit: seconds (s)', 'learnpress' ),
|
119 |
+
'id' => $this->get_field_name( 'auto_redirect_time' ),
|
120 |
+
'default' => '3',
|
121 |
+
'type' => 'number',
|
122 |
+
'custom_attributes' => array(
|
123 |
+
'min' => '0'
|
124 |
+
)
|
125 |
+
),
|
126 |
+
array(
|
127 |
+
'title' => __( 'Auto redirect message ', 'learnpress' ),
|
128 |
+
'desc' => '',
|
129 |
+
'id' => $this->get_field_name( 'auto_redirect_message' ),
|
130 |
+
'default' => 'Redirecting to the next item ... ',
|
131 |
+
'type' => 'text'
|
132 |
+
),*/
|
133 |
array(
|
134 |
'title' => __( 'Archive', 'learnpress' ),
|
135 |
'type' => 'title'
|
inc/admin/settings/class-lp-settings-emails.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @package LearnPress/Classes
|
8 |
* @version 1.0
|
9 |
*/
|
10 |
-
if ( !defined( 'ABSPATH' ) ) {
|
11 |
exit; // Exit if accessed directly
|
12 |
}
|
13 |
|
@@ -20,7 +20,7 @@ class LP_Settings_Emails extends LP_Settings_Base {
|
|
20 |
/**
|
21 |
* Constructor
|
22 |
*/
|
23 |
-
public function __construct() {
|
24 |
$this->id = 'emails';
|
25 |
$this->text = __( 'Emails', 'learnpress' );
|
26 |
parent::__construct();
|
@@ -31,7 +31,7 @@ class LP_Settings_Emails extends LP_Settings_Base {
|
|
31 |
*
|
32 |
* @return mixed
|
33 |
*/
|
34 |
-
public function get_sections() {
|
35 |
|
36 |
$emails = LP_Emails::instance()->emails;
|
37 |
|
@@ -39,13 +39,14 @@ class LP_Settings_Emails extends LP_Settings_Base {
|
|
39 |
'general' => array( 'id' => 'general', 'title' => __( 'General options', 'learnpress' ) )
|
40 |
);
|
41 |
|
42 |
-
if ( $emails )
|
43 |
foreach ( $emails as $email ) {
|
44 |
-
$sections[$email->id] = array(
|
45 |
'id' => $email->id,
|
46 |
'title' => $email->title
|
47 |
);
|
48 |
}
|
|
|
49 |
|
50 |
/* $sections = array(
|
51 |
'general' => __( 'General options', 'learnpress' ),
|
@@ -55,13 +56,14 @@ class LP_Settings_Emails extends LP_Settings_Base {
|
|
55 |
'enrolled_course' => __( 'Enrolled course', 'learnpress' ),
|
56 |
'passed_course' => __( 'Passed course', 'learnpress' ),
|
57 |
); */
|
|
|
58 |
return $sections = apply_filters( 'learn_press_settings_sections_' . $this->id, $sections );
|
59 |
}
|
60 |
|
61 |
/**
|
62 |
* @param $default_message
|
63 |
*/
|
64 |
-
public function message_editor( $default_message ) {
|
65 |
$settings = LP()->settings;
|
66 |
$content = stripslashes( $settings->get( $this->section['id'] . '.message', $default_message ) );
|
67 |
$editor_id = 'email_message';
|
@@ -74,80 +76,100 @@ class LP_Settings_Emails extends LP_Settings_Base {
|
|
74 |
);
|
75 |
}
|
76 |
|
77 |
-
public function get_email_class( $id ) {
|
78 |
$emails = LP_Emails::instance()->emails;
|
79 |
-
if ( $emails )
|
80 |
foreach ( $emails as $email ) {
|
81 |
if ( $email->id == $id ) {
|
82 |
return $email;
|
83 |
}
|
84 |
}
|
|
|
|
|
85 |
return false;
|
86 |
}
|
87 |
|
88 |
/**
|
89 |
*
|
90 |
*/
|
91 |
-
public function output_section_general() {
|
92 |
$view = learn_press_get_admin_view( 'settings/emails/general.php' );
|
93 |
include_once $view;
|
94 |
}
|
95 |
|
96 |
-
public function output_section_new_course() {
|
97 |
if ( $email = $this->get_email_class( 'new_course' ) ) {
|
98 |
$email->admin_options( $this );
|
99 |
}
|
100 |
}
|
101 |
|
102 |
-
public function output_section_user_order_completed() {
|
103 |
if ( $email = $this->get_email_class( 'user_order_completed' ) ) {
|
104 |
$email->admin_options( $this );
|
105 |
}
|
106 |
}
|
107 |
|
108 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
if ( $email = $this->get_email_class( 'rejected_course' ) ) {
|
110 |
$email->admin_options( $this );
|
111 |
}
|
112 |
}
|
113 |
|
114 |
-
public function output_section_new_order() {
|
115 |
if ( $email = $this->get_email_class( 'new_order' ) ) {
|
116 |
$email->admin_options( $this );
|
117 |
}
|
118 |
}
|
119 |
|
120 |
-
public function output_section_new_order_customer() {
|
121 |
if ( $email = $this->get_email_class( 'new_order_customer' ) ) {
|
122 |
$email->admin_options( $this );
|
123 |
}
|
124 |
}
|
125 |
|
126 |
-
public function output_section_published_course() {
|
127 |
if ( $email = $this->get_email_class( 'published_course' ) ) {
|
128 |
$email->admin_options( $this );
|
129 |
}
|
130 |
}
|
131 |
|
132 |
-
public function output_section_enrolled_course() {
|
133 |
if ( $email = $this->get_email_class( 'enrolled_course' ) ) {
|
134 |
$email->admin_options( $this );
|
135 |
}
|
136 |
}
|
137 |
|
138 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
if ( $email = $this->get_email_class( 'finished_course' ) ) {
|
140 |
$email->admin_options( $this );
|
141 |
}
|
142 |
}
|
143 |
|
144 |
-
public function
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
if ( $email = $this->get_email_class( 'become_an_instructor' ) ) {
|
146 |
$email->admin_options( $this );
|
147 |
}
|
148 |
}
|
149 |
|
150 |
-
public function get_settings() {
|
151 |
return apply_filters(
|
152 |
'learn_press_email_settings', array(
|
153 |
array(
|
@@ -161,10 +183,11 @@ class LP_Settings_Emails extends LP_Settings_Base {
|
|
161 |
);
|
162 |
}
|
163 |
|
164 |
-
public static function instance() {
|
165 |
-
if ( !self::$_instance ) {
|
166 |
self::$_instance = new self();
|
167 |
}
|
|
|
168 |
return self::$_instance;
|
169 |
}
|
170 |
}
|
7 |
* @package LearnPress/Classes
|
8 |
* @version 1.0
|
9 |
*/
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
exit; // Exit if accessed directly
|
12 |
}
|
13 |
|
20 |
/**
|
21 |
* Constructor
|
22 |
*/
|
23 |
+
public function __construct () {
|
24 |
$this->id = 'emails';
|
25 |
$this->text = __( 'Emails', 'learnpress' );
|
26 |
parent::__construct();
|
31 |
*
|
32 |
* @return mixed
|
33 |
*/
|
34 |
+
public function get_sections () {
|
35 |
|
36 |
$emails = LP_Emails::instance()->emails;
|
37 |
|
39 |
'general' => array( 'id' => 'general', 'title' => __( 'General options', 'learnpress' ) )
|
40 |
);
|
41 |
|
42 |
+
if ( $emails ) {
|
43 |
foreach ( $emails as $email ) {
|
44 |
+
$sections[ $email->id ] = array(
|
45 |
'id' => $email->id,
|
46 |
'title' => $email->title
|
47 |
);
|
48 |
}
|
49 |
+
}
|
50 |
|
51 |
/* $sections = array(
|
52 |
'general' => __( 'General options', 'learnpress' ),
|
56 |
'enrolled_course' => __( 'Enrolled course', 'learnpress' ),
|
57 |
'passed_course' => __( 'Passed course', 'learnpress' ),
|
58 |
); */
|
59 |
+
|
60 |
return $sections = apply_filters( 'learn_press_settings_sections_' . $this->id, $sections );
|
61 |
}
|
62 |
|
63 |
/**
|
64 |
* @param $default_message
|
65 |
*/
|
66 |
+
public function message_editor ( $default_message ) {
|
67 |
$settings = LP()->settings;
|
68 |
$content = stripslashes( $settings->get( $this->section['id'] . '.message', $default_message ) );
|
69 |
$editor_id = 'email_message';
|
76 |
);
|
77 |
}
|
78 |
|
79 |
+
public function get_email_class ( $id ) {
|
80 |
$emails = LP_Emails::instance()->emails;
|
81 |
+
if ( $emails ) {
|
82 |
foreach ( $emails as $email ) {
|
83 |
if ( $email->id == $id ) {
|
84 |
return $email;
|
85 |
}
|
86 |
}
|
87 |
+
}
|
88 |
+
|
89 |
return false;
|
90 |
}
|
91 |
|
92 |
/**
|
93 |
*
|
94 |
*/
|
95 |
+
public function output_section_general () {
|
96 |
$view = learn_press_get_admin_view( 'settings/emails/general.php' );
|
97 |
include_once $view;
|
98 |
}
|
99 |
|
100 |
+
public function output_section_new_course () {
|
101 |
if ( $email = $this->get_email_class( 'new_course' ) ) {
|
102 |
$email->admin_options( $this );
|
103 |
}
|
104 |
}
|
105 |
|
106 |
+
public function output_section_user_order_completed () {
|
107 |
if ( $email = $this->get_email_class( 'user_order_completed' ) ) {
|
108 |
$email->admin_options( $this );
|
109 |
}
|
110 |
}
|
111 |
|
112 |
+
public function output_section_user_order_changed_status () {
|
113 |
+
if ( $email = $this->get_email_class( 'user_order_changed_status' ) ) {
|
114 |
+
$email->admin_options( $this );
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
public function output_section_rejected_course () {
|
119 |
if ( $email = $this->get_email_class( 'rejected_course' ) ) {
|
120 |
$email->admin_options( $this );
|
121 |
}
|
122 |
}
|
123 |
|
124 |
+
public function output_section_new_order () {
|
125 |
if ( $email = $this->get_email_class( 'new_order' ) ) {
|
126 |
$email->admin_options( $this );
|
127 |
}
|
128 |
}
|
129 |
|
130 |
+
public function output_section_new_order_customer () {
|
131 |
if ( $email = $this->get_email_class( 'new_order_customer' ) ) {
|
132 |
$email->admin_options( $this );
|
133 |
}
|
134 |
}
|
135 |
|
136 |
+
public function output_section_published_course () {
|
137 |
if ( $email = $this->get_email_class( 'published_course' ) ) {
|
138 |
$email->admin_options( $this );
|
139 |
}
|
140 |
}
|
141 |
|
142 |
+
public function output_section_enrolled_course () {
|
143 |
if ( $email = $this->get_email_class( 'enrolled_course' ) ) {
|
144 |
$email->admin_options( $this );
|
145 |
}
|
146 |
}
|
147 |
|
148 |
+
public function output_section_enrolled_course_admin () {
|
149 |
+
if ( $email = $this->get_email_class( 'enrolled_course_admin' ) ) {
|
150 |
+
$email->admin_options( $this );
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
public function output_section_finished_course () {
|
155 |
if ( $email = $this->get_email_class( 'finished_course' ) ) {
|
156 |
$email->admin_options( $this );
|
157 |
}
|
158 |
}
|
159 |
|
160 |
+
public function output_section_update_course () {
|
161 |
+
if ( $email = $this->get_email_class( 'update_course' ) ) {
|
162 |
+
$email->admin_options( $this );
|
163 |
+
}
|
164 |
+
}
|
165 |
+
|
166 |
+
public function output_section_become_an_instructor () {
|
167 |
if ( $email = $this->get_email_class( 'become_an_instructor' ) ) {
|
168 |
$email->admin_options( $this );
|
169 |
}
|
170 |
}
|
171 |
|
172 |
+
public function get_settings () {
|
173 |
return apply_filters(
|
174 |
'learn_press_email_settings', array(
|
175 |
array(
|
183 |
);
|
184 |
}
|
185 |
|
186 |
+
public static function instance () {
|
187 |
+
if ( ! self::$_instance ) {
|
188 |
self::$_instance = new self();
|
189 |
}
|
190 |
+
|
191 |
return self::$_instance;
|
192 |
}
|
193 |
}
|
inc/admin/settings/class-lp-settings-general.php
CHANGED
@@ -83,7 +83,17 @@ class LP_Settings_General extends LP_Settings_Base {
|
|
83 |
'default' => 'yes',
|
84 |
'type' => 'checkbox',
|
85 |
'desc' => __( 'Turn on/off debug mode for developer', 'learnpress' )
|
86 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
)
|
88 |
);
|
89 |
}
|
83 |
'default' => 'yes',
|
84 |
'type' => 'checkbox',
|
85 |
'desc' => __( 'Turn on/off debug mode for developer', 'learnpress' )
|
86 |
+
),
|
87 |
+
array(
|
88 |
+
'title' => __( 'Logout', 'learnpress' ),
|
89 |
+
'type' => 'title'
|
90 |
+
),
|
91 |
+
array(
|
92 |
+
'title' => __( 'Redirect to page', 'learnpress' ),
|
93 |
+
'id' => $this->get_field_name( 'logout_redirect_page_id' ),
|
94 |
+
'default' => '',
|
95 |
+
'type' => 'pages-dropdown'
|
96 |
+
),
|
97 |
)
|
98 |
);
|
99 |
}
|
inc/admin/settings/class-lp-settings-pages.php
CHANGED
@@ -169,7 +169,7 @@ class LP_Settings_Pages extends LP_Settings_Base {
|
|
169 |
'default' => '',
|
170 |
'type' => 'pages-dropdown'
|
171 |
)
|
172 |
-
)
|
173 |
);
|
174 |
}
|
175 |
|
169 |
'default' => '',
|
170 |
'type' => 'pages-dropdown'
|
171 |
)
|
172 |
+
), $this
|
173 |
);
|
174 |
}
|
175 |
|
inc/admin/sub-menus/settings.php
CHANGED
@@ -54,6 +54,7 @@ function learn_press_settings_page() {
|
|
54 |
<?php do_action( 'learn_press_settings_' . $current_tab ); ?>
|
55 |
<p>
|
56 |
<button class="button button-primary"><?php _e( 'Save settings', 'learnpress' ); ?></button>
|
|
|
57 |
</p>
|
58 |
<?php wp_nonce_field( 'learn_press_settings', 'learn_press_settings_nonce' ); ?>
|
59 |
</div>
|
@@ -85,6 +86,16 @@ function learn_press_admin_update_settings() {
|
|
85 |
}
|
86 |
}
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
if ( !empty( $_POST ) ) {
|
89 |
// Check if our nonce is set.
|
90 |
if ( !isset( $_POST['learn_press_settings_nonce'] ) ) {
|
54 |
<?php do_action( 'learn_press_settings_' . $current_tab ); ?>
|
55 |
<p>
|
56 |
<button class="button button-primary"><?php _e( 'Save settings', 'learnpress' ); ?></button>
|
57 |
+
<a class="button" href="<?php echo wp_nonce_url( add_query_arg( 'reset', 'yes' ), 'learn-press-reset-settings' ); ?>" id="learn-press-reset-settings" data-text="<?php esc_attr_e( 'Do you want to restore all settings to default?', 'learnpress' ); ?>"><?php _e( 'Reset', 'learnpress' ); ?></a>
|
58 |
</p>
|
59 |
<?php wp_nonce_field( 'learn_press_settings', 'learn_press_settings_nonce' ); ?>
|
60 |
</div>
|
86 |
}
|
87 |
}
|
88 |
|
89 |
+
if ( learn_press_get_request( 'reset' ) == 'yes' && wp_verify_nonce( learn_press_get_request( '_wpnonce' ), 'learn-press-reset-settings' ) ) {
|
90 |
+
global $wpdb;
|
91 |
+
$sql = "
|
92 |
+
DELETE FROM {$wpdb->options} WHERE option_name LIKE %s
|
93 |
+
";
|
94 |
+
$wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( 'learn_press_' ) . '%' ) );
|
95 |
+
wp_redirect( remove_query_arg( array( 'reset', '_wpnonce' ) ) );
|
96 |
+
exit();
|
97 |
+
}
|
98 |
+
|
99 |
if ( !empty( $_POST ) ) {
|
100 |
// Check if our nonce is set.
|
101 |
if ( !isset( $_POST['learn_press_settings_nonce'] ) ) {
|
inc/admin/sub-menus/statistics.php
CHANGED
@@ -30,6 +30,7 @@ class LP_Admin_Submenu_Statistic {
|
|
30 |
* LP_Admin_Submenu_Statistic constructor.
|
31 |
*/
|
32 |
public function __construct() {
|
|
|
33 |
add_action( 'learn_press_get_stats_users', array( $this, 'get_stats_users' ) );
|
34 |
add_action( 'learn_press_get_stats_courses', array( $this, 'get_stats_courses' ) );
|
35 |
add_action( 'learn_press_get_stats_orders', array( $this, 'get_stats_orders' ) );
|
@@ -41,7 +42,7 @@ class LP_Admin_Submenu_Statistic {
|
|
41 |
* Statistic page
|
42 |
*/
|
43 |
public function display() {
|
44 |
-
$this->tab = isset( $_GET['tab'] ) ? $_GET['tab'] : '
|
45 |
$this->section = isset( $_GET['section'] ) ? $_GET['section'] : '';
|
46 |
$tabs = array();
|
47 |
if( current_user_can(LP_TEACHER_ROLE) ) {
|
@@ -52,6 +53,7 @@ class LP_Admin_Submenu_Statistic {
|
|
52 |
) );
|
53 |
} else {
|
54 |
$tabs = apply_filters( 'learn_press_statistics_tabs', array(
|
|
|
55 |
'users' => __( 'Users', 'learnpress' ),
|
56 |
'courses' => __( 'Courses', 'learnpress' ),
|
57 |
'orders' => __( 'Orders', 'learnpress' ),
|
@@ -68,6 +70,13 @@ class LP_Admin_Submenu_Statistic {
|
|
68 |
echo '</div>';
|
69 |
}
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
/**
|
72 |
*
|
73 |
*/
|
30 |
* LP_Admin_Submenu_Statistic constructor.
|
31 |
*/
|
32 |
public function __construct() {
|
33 |
+
add_action( 'learn_press_get_stats_general', array( $this, 'get_stats_general' ) );
|
34 |
add_action( 'learn_press_get_stats_users', array( $this, 'get_stats_users' ) );
|
35 |
add_action( 'learn_press_get_stats_courses', array( $this, 'get_stats_courses' ) );
|
36 |
add_action( 'learn_press_get_stats_orders', array( $this, 'get_stats_orders' ) );
|
42 |
* Statistic page
|
43 |
*/
|
44 |
public function display() {
|
45 |
+
$this->tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'general';
|
46 |
$this->section = isset( $_GET['section'] ) ? $_GET['section'] : '';
|
47 |
$tabs = array();
|
48 |
if( current_user_can(LP_TEACHER_ROLE) ) {
|
53 |
) );
|
54 |
} else {
|
55 |
$tabs = apply_filters( 'learn_press_statistics_tabs', array(
|
56 |
+
'general' => __( 'General', 'learnpress' ),
|
57 |
'users' => __( 'Users', 'learnpress' ),
|
58 |
'courses' => __( 'Courses', 'learnpress' ),
|
59 |
'orders' => __( 'Orders', 'learnpress' ),
|
70 |
echo '</div>';
|
71 |
}
|
72 |
|
73 |
+
public function get_stats_general() {
|
74 |
+
if( current_user_can(LP_TEACHER_ROLE) ) {
|
75 |
+
return;
|
76 |
+
}
|
77 |
+
require_once learn_press_get_admin_view( 'statistics/general.php' );
|
78 |
+
}
|
79 |
+
|
80 |
/**
|
81 |
*
|
82 |
*/
|
inc/admin/sub-menus/tools.php
CHANGED
@@ -130,7 +130,7 @@ if ( !function_exists( 'learn_press_remove_data' ) ) {
|
|
130 |
delete_option( 'learnpress_version' );
|
131 |
|
132 |
LP_Admin_Notice::add( __( 'All courses, lessons, quizzes and questions have been removed', 'learnpress' ), 'updated', '', true );
|
133 |
-
wp_redirect( admin_url( 'admin.php?page=
|
134 |
exit();
|
135 |
}
|
136 |
}
|
@@ -197,8 +197,8 @@ if ( !function_exists( 'learn_press_remove_old_data' ) ) {
|
|
197 |
|
198 |
LP_Admin_Notice::add( __( 'Outdated data from version less than 1.0 have been removed', 'learnpress' ), 'updated', '', true );
|
199 |
//flush_rewrite_rules();
|
200 |
-
// header('Location: '.admin_url( 'admin.php?page=
|
201 |
-
wp_redirect( admin_url( 'admin.php?page=
|
202 |
exit();
|
203 |
}
|
204 |
}
|
@@ -213,48 +213,56 @@ function learn_press_tools_subtabs() {
|
|
213 |
|
214 |
function learn_press_tools_page_database() {
|
215 |
?>
|
|
|
216 |
<div class="card">
|
217 |
-
<h2><?php _e( '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
<p><?php _e( 'Upgrade courses, lessons, quizzes and questions from version less than 1.0.', 'learnpress' ); ?></p>
|
219 |
<div class="learn-press-message">
|
220 |
-
|
221 |
</div>
|
222 |
-
<div class="learn-press-error">
|
223 |
-
|
224 |
</div>
|
225 |
-
<p>
|
226 |
<a class="button" href="<?php echo wp_nonce_url( admin_url( 'options-general.php?page=learn_press_upgrade_from_09&force=true' ), 'learn-press-upgrade-09' ); ?>"><?php esc_html_e( 'Upgrade', 'learnpress' ); ?></a>
|
227 |
</p>
|
228 |
</div>
|
229 |
<div class="card">
|
230 |
-
<h2><?php _e( 'Remove current
|
231 |
<p><?php _e( 'Remove all courses, lessons, quizzes and questions', 'learnpress' ); ?></p>
|
232 |
<form method="post" name="learn-press-form-remove-data">
|
233 |
-
<div class="learn-press-message
|
234 |
-
|
235 |
</div>
|
236 |
<label class="hide-if-js">
|
237 |
<input type="checkbox" name="action" value="learn-press-remove-data" />
|
238 |
<?php _e( 'Check this box and click this button again to confirm.', 'learnpress' ); ?>
|
239 |
</label>
|
240 |
-
<p>
|
241 |
<button class="button button-fade"><?php esc_html_e( 'Remove', 'learnpress' ); ?></button>
|
242 |
</p>
|
243 |
<?php wp_nonce_field( 'learn-press-remove-data', 'remove-data-nonce' ); ?>
|
244 |
</form>
|
245 |
</div>
|
246 |
<div class="card">
|
247 |
-
<h2><?php _e( 'Remove outdated
|
248 |
<p><?php _e( 'Remove all courses, lessons, quizzes and questions from version less than 1.0.', 'learnpress' ); ?></p>
|
249 |
<form method="post" name="learn-press-form-remove-data">
|
250 |
-
<div class="learn-press-message
|
251 |
-
|
252 |
</div>
|
253 |
<label class="hide-if-js">
|
254 |
<input type="checkbox" name="action" value="learn-press-remove-old-data" />
|
255 |
<?php _e( 'Check this box and click this button again to confirm.', 'learnpress' ); ?>
|
256 |
</label>
|
257 |
-
<p>
|
258 |
<button class="button button-fade"><?php esc_html_e( 'Remove', 'learnpress' ); ?></button>
|
259 |
</p>
|
260 |
<?php wp_nonce_field( 'learn-press-remove-old-data', 'remove-old-data-nonce' ); ?>
|
130 |
delete_option( 'learnpress_version' );
|
131 |
|
132 |
LP_Admin_Notice::add( __( 'All courses, lessons, quizzes and questions have been removed', 'learnpress' ), 'updated', '', true );
|
133 |
+
wp_redirect( admin_url( 'admin.php?page=learn-press-tools&learn-press-remove-data=1' ) );
|
134 |
exit();
|
135 |
}
|
136 |
}
|
197 |
|
198 |
LP_Admin_Notice::add( __( 'Outdated data from version less than 1.0 have been removed', 'learnpress' ), 'updated', '', true );
|
199 |
//flush_rewrite_rules();
|
200 |
+
// header('Location: '.admin_url( 'admin.php?page=learn-press-tools' ));
|
201 |
+
wp_redirect( admin_url( 'admin.php?page=learn-press-tools' ) );
|
202 |
exit();
|
203 |
}
|
204 |
}
|
213 |
|
214 |
function learn_press_tools_page_database() {
|
215 |
?>
|
216 |
+
<!--
|
217 |
<div class="card">
|
218 |
+
<h2><?php _e( 'Repair Database', 'learnpress' ); ?></h2>
|
219 |
+
<p><?php _e( 'Remove unused rows from database tables. Be carefully backup your database before doing this action.', 'learnpress' ); ?></p>
|
220 |
+
<p class="tools-button">
|
221 |
+
<button type="button" class="button"><?php esc_html_e( 'Repair', 'learnpress' ); ?></button>
|
222 |
+
</p>
|
223 |
+
</div>-->
|
224 |
+
<div class="card">
|
225 |
+
<h2><?php _e( 'Upgrade Courses', 'learnpress' ); ?></h2>
|
226 |
<p><?php _e( 'Upgrade courses, lessons, quizzes and questions from version less than 1.0.', 'learnpress' ); ?></p>
|
227 |
<div class="learn-press-message">
|
228 |
+
<p><?php _e( 'Use this action to force system to upgrade outdated data to latest version.', 'learnpress' ); ?></p>
|
229 |
</div>
|
230 |
+
<div class="learn-press-message lp-error">
|
231 |
+
<p><?php _e( 'All courses will be upgraded whether you have done this action in the past. So please remove all courses before you upgrade to prevent duplicated courses.', 'learnpress' ); ?></p>
|
232 |
</div>
|
233 |
+
<p class="tools-button">
|
234 |
<a class="button" href="<?php echo wp_nonce_url( admin_url( 'options-general.php?page=learn_press_upgrade_from_09&force=true' ), 'learn-press-upgrade-09' ); ?>"><?php esc_html_e( 'Upgrade', 'learnpress' ); ?></a>
|
235 |
</p>
|
236 |
</div>
|
237 |
<div class="card">
|
238 |
+
<h2><?php _e( 'Remove current Data', 'learnpress' ); ?></h2>
|
239 |
<p><?php _e( 'Remove all courses, lessons, quizzes and questions', 'learnpress' ); ?></p>
|
240 |
<form method="post" name="learn-press-form-remove-data">
|
241 |
+
<div class="learn-press-message lp-error">
|
242 |
+
<p><?php _e( 'Be careful before using this action!', 'learnpress' ); ?></p>
|
243 |
</div>
|
244 |
<label class="hide-if-js">
|
245 |
<input type="checkbox" name="action" value="learn-press-remove-data" />
|
246 |
<?php _e( 'Check this box and click this button again to confirm.', 'learnpress' ); ?>
|
247 |
</label>
|
248 |
+
<p class="tools-button">
|
249 |
<button class="button button-fade"><?php esc_html_e( 'Remove', 'learnpress' ); ?></button>
|
250 |
</p>
|
251 |
<?php wp_nonce_field( 'learn-press-remove-data', 'remove-data-nonce' ); ?>
|
252 |
</form>
|
253 |
</div>
|
254 |
<div class="card">
|
255 |
+
<h2><?php _e( 'Remove outdated Data', 'learnpress' ); ?></h2>
|
256 |
<p><?php _e( 'Remove all courses, lessons, quizzes and questions from version less than 1.0.', 'learnpress' ); ?></p>
|
257 |
<form method="post" name="learn-press-form-remove-data">
|
258 |
+
<div class="learn-press-message lp-error">
|
259 |
+
<p><?php _e( 'Be careful before using this action! Only use this action in case all outdated data has been upgraded.', 'learnpress' ); ?></p>
|
260 |
</div>
|
261 |
<label class="hide-if-js">
|
262 |
<input type="checkbox" name="action" value="learn-press-remove-old-data" />
|
263 |
<?php _e( 'Check this box and click this button again to confirm.', 'learnpress' ); ?>
|
264 |
</label>
|
265 |
+
<p class="tools-button">
|
266 |
<button class="button button-fade"><?php esc_html_e( 'Remove', 'learnpress' ); ?></button>
|
267 |
</p>
|
268 |
<?php wp_nonce_field( 'learn-press-remove-old-data', 'remove-old-data-nonce' ); ?>
|
inc/admin/views/html-admin-notice-templates.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
if ( !defined( 'ABSPATH' ) ) {
|
4 |
exit;
|
5 |
}
|
6 |
|
@@ -28,12 +28,16 @@ $theme_name = implode( ' & ', $theme_name );
|
|
28 |
|
29 |
?>
|
30 |
<div id="message" class="learn-press-message notice notice-warning">
|
31 |
-
|
32 |
-
<?php printf( __( '
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
|
|
|
|
|
|
|
|
39 |
</div>
|
1 |
<?php
|
2 |
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
exit;
|
5 |
}
|
6 |
|
28 |
|
29 |
?>
|
30 |
<div id="message" class="learn-press-message notice notice-warning">
|
31 |
+
<p>
|
32 |
+
<?php printf( __( 'There is a new update of LearnPress. You may need to update your theme <strong>(%s)</strong> to avoid outdated template files.', 'learnpress' ), esc_html( $theme_name ) ); ?>
|
33 |
+
</p>
|
34 |
+
<p class="outdated-readmore-link">
|
35 |
+
<?php printf( __( 'This is not a bug, don\'t worry. Read more about Outdated template files notice <a href="%s" target="_blank">here</a>.', 'learnpress' ), 'https://thimpress.com/knowledge-base/outdated-template-fix/' ); ?>
|
36 |
+
</p>
|
37 |
+
<p>
|
38 |
+
<a class="button"
|
39 |
+
href="<?php echo esc_url( admin_url( 'admin.php?page=learn-press-tools&tab=templates' ) ); ?>"><?php _e( 'View list of outdated templates', 'learnpress' ); ?></a>
|
40 |
+
</p>
|
41 |
+
<a href="<?php echo esc_url( add_query_arg( 'lp-hide-notice', 'template-files', learn_press_get_current_url() ) ); ?>"
|
42 |
+
class="learn-press-admin-notice-dismiss"></a>
|
43 |
</div>
|
inc/admin/views/meta-boxes/course/attributes.php
CHANGED
@@ -33,13 +33,6 @@ $postId = $post ? $post->ID : 0;
|
|
33 |
</ul>
|
34 |
|
35 |
<button class="button button-primary" type="button" id="save-attributes"><?php _e( 'Save attributes', 'learnpres' ); ?></button>
|
36 |
-
<script type="text/javascript">
|
37 |
-
jQuery(function($){
|
38 |
-
$.fn.select2.locales.en.formatNoMatches = function(){
|
39 |
-
return "xya";
|
40 |
-
}
|
41 |
-
})
|
42 |
-
</script>
|
43 |
<?php
|
44 |
} else {
|
45 |
printf( '<p class="description">%s <a class="button button-primary" href="%s">%s</a></p>',
|
33 |
</ul>
|
34 |
|
35 |
<button class="button button-primary" type="button" id="save-attributes"><?php _e( 'Save attributes', 'learnpres' ); ?></button>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
<?php
|
37 |
} else {
|
38 |
printf( '<p class="description">%s <a class="button button-primary" href="%s">%s</a></p>',
|
inc/admin/views/meta-boxes/course/curriculum.php
CHANGED
@@ -4,41 +4,41 @@ $course_sections = $course->get_curriculum();
|
|
4 |
$hidden_sections = (array) get_post_meta( $post->ID, '_admin_hidden_sections', true );
|
5 |
?>
|
6 |
<div id="lp-course-curriculum" class="lp-course-curriculum">
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
|
22 |
-
|
23 |
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
</div>
|
4 |
$hidden_sections = (array) get_post_meta( $post->ID, '_admin_hidden_sections', true );
|
5 |
?>
|
6 |
<div id="lp-course-curriculum" class="lp-course-curriculum">
|
7 |
+
<h3 class="curriculum-heading">
|
8 |
+
<?php _e( 'Curriculum', 'learnpress' ); ?>
|
9 |
+
<span class="description"><?php _e( 'Outline your course and add content with sections, lessons and quizzes.', 'learnpress' ); ?></span>
|
10 |
|
11 |
+
<p align="right" class="items-toggle">
|
12 |
+
<a href="" data-action="expand" class="dashicons dashicons-arrow-down<?php echo !sizeof( $hidden_sections ) ? ' hide-if-js' : ''; ?>" title="<?php _e( 'Expand All', 'learnpress' ); ?>"></a>
|
13 |
+
<a href="" data-action="collapse" class="dashicons dashicons-arrow-up<?php echo sizeof( $hidden_sections ) ? ' hide-if-js' : ''; ?>" title="<?php _e( 'Collapse All', 'learnpress' ); ?>"></a>
|
14 |
+
</p>
|
15 |
+
</h3>
|
16 |
+
<!---->
|
17 |
+
<ul class="curriculum-sections">
|
18 |
+
<?php
|
19 |
+
if ( $course_sections ):
|
20 |
+
foreach ( $course_sections as $k => $section ):
|
21 |
|
22 |
+
$content_items = '';
|
23 |
|
24 |
+
if ( $section->items ):
|
25 |
+
foreach ( $section->items as $item ):
|
26 |
+
$loop_item_view = learn_press_get_admin_view( 'meta-boxes/course/loop-item.php' );
|
27 |
+
ob_start();
|
28 |
+
include $loop_item_view;
|
29 |
+
$content_items .= "\n" . ob_get_clean();
|
30 |
+
endforeach;
|
31 |
+
endif;
|
32 |
|
33 |
+
include learn_press_get_admin_view( 'meta-boxes/course/loop-section.php' );
|
34 |
+
endforeach;
|
35 |
+
unset( $content_items );
|
36 |
+
endif;
|
37 |
+
if ( !empty( $section ) )
|
38 |
+
foreach ( get_object_vars( $section ) as $k => $v ) {
|
39 |
+
$section->{$k} = null;
|
40 |
+
}
|
41 |
+
include learn_press_get_admin_view( 'meta-boxes/course/loop-section.php' );
|
42 |
+
?>
|
43 |
+
</ul>
|
44 |
</div>
|
inc/admin/views/meta-boxes/course/loop-item.php
CHANGED
@@ -5,54 +5,74 @@
|
|
5 |
* @package Admin/Views
|
6 |
*/
|
7 |
if ( !isset( $section ) ) {
|
8 |
-
|
9 |
}
|
10 |
$section_item_id = !empty( $item->section_item_id ) ? $item->section_item_id : null;
|
11 |
-
$item_id
|
12 |
-
$group_name
|
|
|
13 |
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
if ( !empty( $support_types[$item->post_type] ) ) {
|
16 |
-
|
17 |
} else {
|
18 |
-
|
19 |
}
|
20 |
?>
|
21 |
|
22 |
<?php do_action( 'learn_press_admin_before_section_loop_item', $item, $section ); ?>
|
23 |
|
24 |
-
<tr <?php learn_press_admin_section_loop_item_class( $item, $section ); ?>
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
<span class="item-checkbox">
|
51 |
<input type="checkbox" value="<?php echo $section_item_id; ?>" />
|
52 |
<a class="dashicons dashicons-menu"></a>
|
53 |
</span>
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
</tr>
|
5 |
* @package Admin/Views
|
6 |
*/
|
7 |
if ( !isset( $section ) ) {
|
8 |
+
$section = null;
|
9 |
}
|
10 |
$section_item_id = !empty( $item->section_item_id ) ? $item->section_item_id : null;
|
11 |
+
$item_id = !empty( $item->item_id ) ? $item->item_id : null;
|
12 |
+
$group_name = '_lp_curriculum[__SECTION__][items][' . ( $section_item_id ? $section_item_id : '__ITEM__' ) . ']';
|
13 |
+
$support_types = learn_press_course_get_support_item_types();
|
14 |
|
15 |
+
//$post_item = $item_id ? get_post( $item_id ) : learn_press_post_object( array( 'post_type' => LP_LESSON_CPT ) );
|
16 |
+
//if($post_item) {
|
17 |
+
// foreach ( get_object_vars( $post_item ) as $prop => $value ) {
|
18 |
+
// $item->{$prop} = $value;
|
19 |
+
// }
|
20 |
+
//}
|
21 |
if ( !empty( $support_types[$item->post_type] ) ) {
|
22 |
+
$item_selected = $item->post_type;
|
23 |
} else {
|
24 |
+
$item_selected = key( $support_types );
|
25 |
}
|
26 |
?>
|
27 |
|
28 |
<?php do_action( 'learn_press_admin_before_section_loop_item', $item, $section ); ?>
|
29 |
|
30 |
+
<tr <?php learn_press_admin_section_loop_item_class( $item, $section ); ?>
|
31 |
+
data-text="<?php echo esc_attr( $item->post_title ); ?>"
|
32 |
+
data-item_id="<?php echo $item_id; ?>"
|
33 |
+
data-section_item_id="<?php echo $section_item_id; ?>"
|
34 |
+
data-type="<?php echo $item->post_type; ?>">
|
35 |
+
<?php do_action( 'learn_press_admin_begin_section_item', $item, $section ); ?>
|
36 |
+
<td class="section-item-icon">
|
37 |
+
<div class="learn-press-dropdown-item-types">
|
38 |
+
<span class="learn-press-icon item-<?php echo $item->post_type; ?>" data-type="<?php echo $item->post_type; ?>"></span>
|
39 |
+
<ul>
|
40 |
+
<?php foreach ( $support_types as $_type => $text ) { ?>
|
41 |
+
<li>
|
42 |
+
<span
|
43 |
+
class="learn-press-icon<?php echo $_type == $item_selected ? ' item-selected' : ''; ?> item-<?php echo $_type; ?>"
|
44 |
+
data-content="<?php echo sprintf( __( 'Switch to %s', 'learnpress' ), $text ); ?>"
|
45 |
+
data-type="<?php echo $_type; ?>">
|
46 |
+
</span>
|
47 |
+
</li>
|
48 |
+
<?php } ?>
|
49 |
+
</ul>
|
50 |
+
</div>
|
51 |
+
</td>
|
52 |
+
<td class="section-item-input">
|
53 |
+
<input type="text"
|
54 |
+
autocomplete="off"
|
55 |
+
name="<?php echo $group_name; ?>[name]"
|
56 |
+
class="lp-item-name no-submit"
|
57 |
+
data-field="item-name"
|
58 |
+
value="<?php echo esc_attr( $item->post_title ); ?>"
|
59 |
+
placeholder="<?php _e( 'Add new item here and press Enter', 'learnpress' ); ?>" />
|
60 |
+
<input type="hidden" name="<?php echo $group_name; ?>[old_name]" value="<?php echo esc_attr( $item->post_title ); ?>" />
|
61 |
+
<input type="hidden" name="<?php echo $group_name; ?>[item_id]" value="<?php echo $item_id; ?>" />
|
62 |
+
<input type="hidden" name="<?php echo $group_name; ?>[section_item_id]" value="<?php echo $section_item_id; ?>" />
|
63 |
+
<input type="hidden" class="lp-item-type" name="<?php echo $group_name; ?>[post_type]" value="<?php echo $item->post_type; ?>" />
|
64 |
+
</td>
|
65 |
+
<td class="section-item-actions">
|
66 |
+
<p class="lp-item-actions lp-button-actions">
|
67 |
+
<?php do_action( 'learn_press_admin_begin_section_item_actions', $item, $section ); ?>
|
68 |
+
<a href="<?php echo absint( $item_id ) ? get_edit_post_link( $item_id ) : '{{data.edit_link}}'; ?>" class="lp-item-action lp-edit dashicons dashicons-edit" target="_blank"></a>
|
69 |
+
<a href="" class="lp-item-action lp-remove dashicons dashicons-trash" data-confirm-remove="<?php _e( 'Are you sure you want to remove this item?', 'learnpress' ); ?>"></a>
|
70 |
<span class="item-checkbox">
|
71 |
<input type="checkbox" value="<?php echo $section_item_id; ?>" />
|
72 |
<a class="dashicons dashicons-menu"></a>
|
73 |
</span>
|
74 |
+
<?php do_action( 'learn_press_admin_end_section_item_actions', $item, $section ); ?>
|
75 |
+
</p>
|
76 |
+
</td>
|
77 |
+
<?php do_action( 'learn_press_admin_end_section_item', $item, $section ); ?>
|
78 |
</tr>
|
inc/admin/views/meta-boxes/course/loop-section.php
CHANGED
@@ -7,15 +7,8 @@
|
|
7 |
* @param $section_name
|
8 |
* @param $content_items
|
9 |
*/
|
10 |
-
|
11 |
-
|
12 |
-
'section_id' => null,
|
13 |
-
'section_name' => '',
|
14 |
-
'section_course_id' => null,
|
15 |
-
'section_order' => null,
|
16 |
-
'section_description' => ''
|
17 |
-
);
|
18 |
-
}
|
19 |
$is_hidden = $section->section_id && is_array( $hidden_sections ) && in_array( $section->section_id, $hidden_sections );
|
20 |
|
21 |
$class = array(
|
@@ -29,68 +22,46 @@ if ( $is_hidden ) {
|
|
29 |
}
|
30 |
?>
|
31 |
<li class="<?php echo join( ' ', $class ); ?>" data-id="<?php echo $section ? $section->section_id : ''; ?>">
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
<!--
|
46 |
-
<button class="button" type="button" data-action="delete-forever" disabled="disabled" data-title="<?php _e( 'Delete Forever', 'learnpress' ); ?>"><?php _e( 'Delete Forever', 'learnpress' ); ?></button>
|
47 |
-
|
48 |
-
<button class="button hide-if-js" type="button" data-action="cancel"><?php _e( 'Cancel', 'learnpress' ); ?></button>-->
|
49 |
-
<!--<div class="button lp-check-all-items">
|
50 |
-
<input type="checkbox" class="" />
|
51 |
-
<span>▾</span>
|
52 |
-
</div>-->
|
53 |
<span class="button lp-check-items">
|
54 |
<input class="lp-check-all-items" data-action="check-all" type="checkbox" />
|
55 |
</span>
|
56 |
-
|
57 |
-
|
58 |
<?php echo isset( $content_items ) ? $content_items : ''; ?>
|
59 |
<?php
|
60 |
$item = learn_press_post_object( array( 'post_type' => LP_LESSON_CPT ) );
|
61 |
?>
|
62 |
<?php learn_press_admin_view( 'meta-boxes/course/loop-item.php', array( 'item' => $item ) ); ?>
|
63 |
|
64 |
-
|
65 |
<?php do_action( 'learn_press_after_section_items', $section ); ?>
|
66 |
<?php if ( $buttons = apply_filters( 'learn_press_loop_section_buttons', array() ) ): ?>
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
<div class="button lp-button-dropdown lp-button-add-item disabled">
|
71 |
-
<span class="lp-dropdown-label lp-add-new-item"><?php _e( 'Add New', 'learnpress' ); ?></span>
|
72 |
-
<span class="lp-dropdown-arrow">+</span>
|
73 |
-
<ul class="lp-dropdown-items">
|
74 |
-
<?php foreach ( learn_press_section_item_types() as $slug => $name ) { ?>
|
75 |
-
<li>
|
76 |
-
<a href="" data-type="<?php echo $slug; ?>"><?php echo $name; ?></a>
|
77 |
-
</li>
|
78 |
-
<?php } ?>
|
79 |
-
</ul>
|
80 |
-
</div>
|
81 |
-
<?php _e( '-OR-', 'learnpress' ); ?>-->
|
82 |
<?php foreach ( learn_press_section_item_types() as $slug => $name ) { ?>
|
83 |
<?php if ( apply_filters( 'learn_press_button_type_select_items', true, $slug ) ) { ?>
|
84 |
-
|
85 |
<?php echo sprintf( __( 'Select %s', 'learnpress' ), $name ); ?>
|
86 |
-
|
87 |
<?php } ?>
|
88 |
<?php } ?>
|
89 |
-
|
90 |
-
|
91 |
-
</button>-->
|
92 |
-
</div>
|
93 |
<?php endif; ?>
|
94 |
<?php do_action( 'learn_press_after_section_content', $section ); ?>
|
95 |
-
|
96 |
</li>
|
7 |
* @param $section_name
|
8 |
* @param $content_items
|
9 |
*/
|
10 |
+
|
11 |
+
$section = learn_press_get_default_section( isset( $section ) ? $section : null );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
$is_hidden = $section->section_id && is_array( $hidden_sections ) && in_array( $section->section_id, $hidden_sections );
|
13 |
|
14 |
$class = array(
|
22 |
}
|
23 |
?>
|
24 |
<li class="<?php echo join( ' ', $class ); ?>" data-id="<?php echo $section ? $section->section_id : ''; ?>">
|
25 |
+
<h3 class="curriculum-section-head">
|
26 |
+
<input name="_lp_curriculum[__SECTION__][name]" type="text" data-field="section-name" placeholder="<?php _e( 'Enter section name and hit enter', 'learnpress' ); ?>" class="lp-section-name no-submit" value="<?php echo esc_attr( $section->section_name ); ?>" />
|
27 |
+
<p class="lp-section-actions lp-button-actions">
|
28 |
+
<a href="" data-action="expand" class="dashicons dashicons-arrow-down<?php echo $is_hidden ? '' : ' hide-if-js'; ?>" title="<?php _e( 'Expand', 'learnpress' ); ?>"></a>
|
29 |
+
<a href="" data-action="collapse" class="dashicons dashicons-arrow-up<?php echo !$is_hidden ? '' : ' hide-if-js'; ?>" title="<?php _e( 'Collapse', 'learnpress' ); ?>"></a>
|
30 |
+
<a href="" data-action="remove" class="dashicons dashicons-trash" data-confirm-remove="<?php _e( 'Are you sure you want to remove this section?', 'learnpress' ); ?>"></a>
|
31 |
+
<a href="" class="move"></a>
|
32 |
+
</p>
|
33 |
+
</h3>
|
34 |
+
<div class="curriculum-section-content<?php echo $is_hidden ? ' hide-if-js' : ''; ?>">
|
35 |
+
<div class="item-bulk-actions">
|
36 |
+
<input name="_lp_curriculum[__SECTION__][description]" class="lp-section-describe" type="text" value="<?php echo esc_attr( $section->section_description ); ?>" placeholder="<?php _e( 'Describe about this section', 'learnpress' ); ?>" />
|
37 |
+
<button class="button hide-if-js" type="button" data-action="delete" data-title="<?php _e( 'Remove', 'learnpress' ); ?>" data-confirm-remove="<?php _e( 'Are you sure you want to remove these items from section?', 'learnpress' ); ?>"><?php _e( 'Remove', 'learnpress' ); ?></button>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
<span class="button lp-check-items">
|
39 |
<input class="lp-check-all-items" data-action="check-all" type="checkbox" />
|
40 |
</span>
|
41 |
+
</div>
|
42 |
+
<table class="curriculum-section-items">
|
43 |
<?php echo isset( $content_items ) ? $content_items : ''; ?>
|
44 |
<?php
|
45 |
$item = learn_press_post_object( array( 'post_type' => LP_LESSON_CPT ) );
|
46 |
?>
|
47 |
<?php learn_press_admin_view( 'meta-boxes/course/loop-item.php', array( 'item' => $item ) ); ?>
|
48 |
|
49 |
+
</table>
|
50 |
<?php do_action( 'learn_press_after_section_items', $section ); ?>
|
51 |
<?php if ( $buttons = apply_filters( 'learn_press_loop_section_buttons', array() ) ): ?>
|
52 |
+
<br />
|
53 |
+
<div class="lp-add-buttons">
|
54 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
<?php foreach ( learn_press_section_item_types() as $slug => $name ) { ?>
|
56 |
<?php if ( apply_filters( 'learn_press_button_type_select_items', true, $slug ) ) { ?>
|
57 |
+
<button class="button" type="button" data-action="add-<?php echo $slug; ?>" data-type="<?php echo $slug; ?>">
|
58 |
<?php echo sprintf( __( 'Select %s', 'learnpress' ), $name ); ?>
|
59 |
+
</button>
|
60 |
<?php } ?>
|
61 |
<?php } ?>
|
62 |
+
|
63 |
+
</div>
|
|
|
|
|
64 |
<?php endif; ?>
|
65 |
<?php do_action( 'learn_press_after_section_content', $section ); ?>
|
66 |
+
</div>
|
67 |
</li>
|
inc/admin/views/meta-boxes/course/review-logs.php
CHANGED
@@ -12,11 +12,11 @@ $index = $total_reviews;
|
|
12 |
<?php if ( $total_reviews ) { ?>
|
13 |
<ul class="learn-press-review-logs clearfix">
|
14 |
<?php foreach ( $reviews as $review ) { ?>
|
15 |
-
<?php $user =
|
16 |
<li>
|
17 |
<div class="review-index">#<?php echo $index --; ?></div>
|
18 |
<div class="review-user">
|
19 |
-
<span class="user-avatar"><?php echo
|
20 |
</div>
|
21 |
<div class="review-content">
|
22 |
<strong class="user-nicename"><?php echo learn_press_get_profile_display_name( $user ); ?></strong>
|
12 |
<?php if ( $total_reviews ) { ?>
|
13 |
<ul class="learn-press-review-logs clearfix">
|
14 |
<?php foreach ( $reviews as $review ) { ?>
|
15 |
+
<?php $user = LP_User_Factory::get_user( $review->user_id ); ?>
|
16 |
<li>
|
17 |
<div class="review-index">#<?php echo $index --; ?></div>
|
18 |
<div class="review-user">
|
19 |
+
<span class="user-avatar"><?php echo $user->get_profile_picture(); ?></span>
|
20 |
</div>
|
21 |
<div class="review-content">
|
22 |
<strong class="user-nicename"><?php echo learn_press_get_profile_display_name( $user ); ?></strong>
|
inc/admin/views/meta-boxes/order/actions.php
CHANGED
@@ -3,6 +3,7 @@ global $post, $action;
|
|
3 |
$post_type = $post->post_type;
|
4 |
$post_type_object = get_post_type_object( $post_type );
|
5 |
$can_publish = current_user_can( $post_type_object->cap->publish_posts );
|
|
|
6 |
|
7 |
$datef = __( 'M j, Y @ H:i' );
|
8 |
if ( 0 != $post->ID ) {
|
@@ -33,7 +34,7 @@ if ( 0 != $post->ID ) {
|
|
33 |
<label>
|
34 |
<?php _e( 'Order status', 'learnpress' ); ?>
|
35 |
</label>
|
36 |
-
<select name="order-status">
|
37 |
<?php
|
38 |
$statuses = learn_press_get_order_statuses();
|
39 |
foreach ( $statuses as $status => $status_name ) {
|
@@ -41,6 +42,7 @@ if ( 0 != $post->ID ) {
|
|
41 |
}
|
42 |
?>
|
43 |
</select>
|
|
|
44 |
<div class="description order-status-description">
|
45 |
<?php if ( $order->get_status() == 'auto-draft' ) {
|
46 |
echo _learn_press_get_order_status_description( 'lp-pending' );
|
@@ -48,6 +50,13 @@ if ( 0 != $post->ID ) {
|
|
48 |
<?php echo _learn_press_get_order_status_description( 'lp-' . $order->get_status() ); ?>
|
49 |
</div>
|
50 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
<div class="misc-pub-section">
|
53 |
<label>
|
@@ -57,15 +66,29 @@ if ( 0 != $post->ID ) {
|
|
57 |
<input name="order-customer" type="text" class="wp-suggest-user ui-autocomplete-input" id="admin-email" data-autocomplete-type="search" data-autocomplete-field="user_email" autocomplete="off">
|
58 |
-->
|
59 |
<?php
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
// }else{
|
70 |
// echo $order->get_customer_name();
|
71 |
// }
|
3 |
$post_type = $post->post_type;
|
4 |
$post_type_object = get_post_type_object( $post_type );
|
5 |
$can_publish = current_user_can( $post_type_object->cap->publish_posts );
|
6 |
+
$is_multiple =
|
7 |
|
8 |
$datef = __( 'M j, Y @ H:i' );
|
9 |
if ( 0 != $post->ID ) {
|
34 |
<label>
|
35 |
<?php _e( 'Order status', 'learnpress' ); ?>
|
36 |
</label>
|
37 |
+
<select name="order-status" data-status="<?php echo 'lp-' . $order->get_status(); ?>">
|
38 |
<?php
|
39 |
$statuses = learn_press_get_order_statuses();
|
40 |
foreach ( $statuses as $status => $status_name ) {
|
42 |
}
|
43 |
?>
|
44 |
</select>
|
45 |
+
|
46 |
<div class="description order-status-description">
|
47 |
<?php if ( $order->get_status() == 'auto-draft' ) {
|
48 |
echo _learn_press_get_order_status_description( 'lp-pending' );
|
50 |
<?php echo _learn_press_get_order_status_description( 'lp-' . $order->get_status() ); ?>
|
51 |
</div>
|
52 |
</div>
|
53 |
+
<div class="misc-pub-section hide-if-js order-action-section">
|
54 |
+
<label for="trigger-order-action">
|
55 |
+
<input type="checkbox" name="trigger-order-action" id="trigger-order-action" value="yes" />
|
56 |
+
<?php _e( 'Trigger order status action', 'learnpress' ); ?>
|
57 |
+
</label>
|
58 |
+
<p class="description"><?php esc_attr_e( 'Check this option to force an action to be triggered. Normally, an action only is triggered after changing to an another action.', 'learnpress' ); ?></p>
|
59 |
+
</div>
|
60 |
|
61 |
<div class="misc-pub-section">
|
62 |
<label>
|
66 |
<input name="order-customer" type="text" class="wp-suggest-user ui-autocomplete-input" id="admin-email" data-autocomplete-type="search" data-autocomplete-field="user_email" autocomplete="off">
|
67 |
-->
|
68 |
<?php
|
69 |
+
if ( $order->is_multi_users() ) {
|
70 |
+
$order->dropdown_users();
|
71 |
+
?>
|
72 |
+
<input type="hidden" name="multi-users" value="yes" />
|
73 |
+
<?php
|
74 |
+
wp_enqueue_style( 'select2', RWMB_CSS_URL . 'select2/select2.css' );
|
75 |
+
wp_enqueue_script( 'select2', RWMB_JS_URL . 'select2/select2.min.js' );
|
76 |
+
} else {
|
77 |
+
wp_dropdown_users(
|
78 |
+
array(
|
79 |
+
'show_option_none' => __( '[Guest]', 'learnpress' ),
|
80 |
+
'name' => 'order-customer',
|
81 |
+
'id' => null,
|
82 |
+
'selected' => $order->get_user( 'ID' )
|
83 |
+
)
|
84 |
+
);
|
85 |
+
}
|
86 |
+
if ( $order->get_status() == 'auto-draft' && !$order->is_multi_users() ) {
|
87 |
+
?>
|
88 |
+
--
|
89 |
+
<a href="<?php echo add_query_arg( 'multi-users', 'yes' ); ?>"><?php _e( 'Multiple users', 'learnpress' ); ?></a>
|
90 |
+
<?php
|
91 |
+
}
|
92 |
// }else{
|
93 |
// echo $order->get_customer_name();
|
94 |
// }
|
inc/admin/views/meta-boxes/order/details.php
CHANGED
@@ -18,19 +18,32 @@ global $post;
|
|
18 |
</div>
|
19 |
<div class="order-user-data clearfix">
|
20 |
<div class="order-user-avatar">
|
21 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
</div>
|
23 |
<div class="order-user-meta">
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
<?php if ( $title = $order->get_payment_method_title() ) { ?>
|
35 |
<div class="payment-method-title">
|
36 |
<?php echo $order->order_total == 0 ? $title : sprintf( __( 'Pay via <strong>%s</strong>', 'learnpress' ), $title ); ?>
|
@@ -90,7 +103,7 @@ global $post;
|
|
90 |
<?php if ( $note = get_the_excerpt() ) { ?>
|
91 |
<br />
|
92 |
<h3><?php _e( 'Customer Note', 'learnpress' ); ?></h3>
|
93 |
-
<p class="order-note description"><?php echo $note
|
94 |
<?php } ?>
|
95 |
</div>
|
96 |
<script type="text/html" id="tmpl-learn-press-modal-add-order-courses">
|
18 |
</div>
|
19 |
<div class="order-user-data clearfix">
|
20 |
<div class="order-user-avatar">
|
21 |
+
<?php if ( $order->is_multi_users() ) { ?>
|
22 |
+
<div class="avatar-multiple-users">
|
23 |
+
<span></span>
|
24 |
+
</div>
|
25 |
+
<?php } else { ?>
|
26 |
+
<?php echo get_avatar( $order->get_user( 'ID' ), 120 ); ?>
|
27 |
+
<?php } ?>
|
28 |
</div>
|
29 |
<div class="order-user-meta">
|
30 |
+
<?php if ( $order->is_multi_users() ) { ?>
|
31 |
+
<div class="order-users">
|
32 |
+
<strong><?php _e( 'Customers', 'learnpress' ); ?></strong>
|
33 |
+
<p><?php $order->print_users(); ?></p>
|
34 |
+
</div>
|
35 |
+
<?php } else { ?>
|
36 |
+
<div class="user-display-name">
|
37 |
+
<?php echo $order->get_customer_name(); ?>
|
38 |
+
</div>
|
39 |
+
<div class="user-email">
|
40 |
+
<?php $user_email = $order->get_user( 'user_email' );
|
41 |
+
echo empty( $user_email ) ? '' : $user_email; ?>
|
42 |
+
</div>
|
43 |
+
<div class="user-ip-address">
|
44 |
+
<?php echo $order->user_ip_address; ?>
|
45 |
+
</div>
|
46 |
+
<?php } ?>
|
47 |
<?php if ( $title = $order->get_payment_method_title() ) { ?>
|
48 |
<div class="payment-method-title">
|
49 |
<?php echo $order->order_total == 0 ? $title : sprintf( __( 'Pay via <strong>%s</strong>', 'learnpress' ), $title ); ?>
|
103 |
<?php if ( $note = get_the_excerpt() ) { ?>
|
104 |
<br />
|
105 |
<h3><?php _e( 'Customer Note', 'learnpress' ); ?></h3>
|
106 |
+
<p class="order-note description"><?php echo $note; ?></p>
|
107 |
<?php } ?>
|
108 |
</div>
|
109 |
<script type="text/html" id="tmpl-learn-press-modal-add-order-courses">
|
inc/admin/views/meta-boxes/order/order-item.php
CHANGED
@@ -5,9 +5,14 @@
|
|
5 |
?>
|
6 |
<tr data-item_id="<?php echo $item['id']; ?>" data-remove_nonce="<?php echo wp_create_nonce( 'remove_order_item' ); ?>">
|
7 |
<td>
|
|
|
|
|
8 |
<a href="" class="remove-order-item">×</a>
|
9 |
<a href="<?php echo get_the_permalink( $item['course_id'] ); ?>"><?php echo $item['name']; ?></a>
|
|
|
10 |
</td>
|
|
|
|
|
11 |
<td class="align-right">
|
12 |
<?php echo learn_press_format_price( $item['total'], $currency_symbol ); ?>
|
13 |
</td>
|
5 |
?>
|
6 |
<tr data-item_id="<?php echo $item['id']; ?>" data-remove_nonce="<?php echo wp_create_nonce( 'remove_order_item' ); ?>">
|
7 |
<td>
|
8 |
+
<?php do_action('learn_press_before_order_details_item_title', $item);?>
|
9 |
+
<?php do_action('learn_press/before_order_details_item_title', $item);?>
|
10 |
<a href="" class="remove-order-item">×</a>
|
11 |
<a href="<?php echo get_the_permalink( $item['course_id'] ); ?>"><?php echo $item['name']; ?></a>
|
12 |
+
<?php do_action('learn_press_after_order_details_item_title', $item);?>
|
13 |
</td>
|
14 |
+
<?php do_action('learn_press/after_order_details_item_title', $item);?>
|
15 |
+
</td>
|
16 |
<td class="align-right">
|
17 |
<?php echo learn_press_format_price( $item['total'], $currency_symbol ); ?>
|
18 |
</td>
|
inc/admin/views/meta-boxes/question/multi-choice-options.php
CHANGED
@@ -1,28 +1,53 @@
|
|
1 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
<p class="question-bottom-actions">
|
4 |
<?php
|
5 |
$top_buttons = apply_filters(
|
6 |
'learn_press_question_top_buttons',
|
7 |
array(
|
8 |
-
'change_type' => learn_press_dropdown_question_types(array('echo' => false, 'id' => 'learn-press-dropdown-question-types-' . $this->id, 'selected' => $this->type ))
|
9 |
),
|
10 |
$this
|
11 |
);
|
12 |
echo join( "\n", $top_buttons );
|
13 |
?>
|
14 |
</p>
|
15 |
-
<table class="lp-sortable lp-list-options" id="learn-press-list-options-<?php echo $this->id
|
16 |
<thead>
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
<th><?php _e( 'Answer Text', 'learnpress' ); ?></th>
|
19 |
<th><?php _e( 'Is Correct?', 'learnpress' ); ?></th>
|
20 |
<th width="20"></th>
|
21 |
<th width="20"></th>
|
|
|
22 |
</thead>
|
23 |
<tbody>
|
24 |
|
25 |
-
<?php $answers = $this->answers;
|
|
|
26 |
<?php foreach ( $answers as $answer ): ?>
|
27 |
<?php
|
28 |
$value = $this->_get_option_value( $answer['value'] );
|
@@ -30,8 +55,50 @@
|
|
30 |
|
31 |
<?php do_action( 'learn_press_before_question_answer_option', $this ); ?>
|
32 |
|
33 |
-
<tr class="lp-list-option lp-list-option-<?php echo $value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
<td>
|
36 |
<input class="lp-answer-text no-submit key-nav" type="text" name="learn_press_question[<?php echo $this->id; ?>][answer][text][]" value="<?php echo esc_attr( $answer['text'] ); ?>" />
|
37 |
</td>
|
@@ -45,6 +112,7 @@
|
|
45 |
<td class="lp-list-option-actions lp-move-list-option open-hand">
|
46 |
<i class="dashicons dashicons-sort"></i>
|
47 |
</td>
|
|
|
48 |
</tr>
|
49 |
|
50 |
<?php do_action( 'learn_press_after_question_answer_option', $this ); ?>
|
@@ -69,7 +137,7 @@
|
|
69 |
echo join( "\n", $bottom_buttons );
|
70 |
?>
|
71 |
</p>
|
72 |
-
|
73 |
<script type="text/javascript">
|
74 |
jQuery(function ($) {
|
75 |
LP.sortableQuestionAnswers($('#learn-press-question-<?php echo $this->id;?>'));
|
1 |
+
<?php
|
2 |
+
$option_headings = array(
|
3 |
+
'answer_text' => __( 'Answer Text', 'learnpress' ),
|
4 |
+
'answer_correct' => __( 'Is Correct?', 'learnpress' ),
|
5 |
+
'actions' => '',
|
6 |
+
'sort' => ''
|
7 |
+
);
|
8 |
+
|
9 |
+
$option_headings = apply_filters( 'learn-press/question/multi-choices/admin-option-headings', $option_headings, $this->id );
|
10 |
+
?>
|
11 |
+
|
12 |
+
<div class="learn-press-question" id="learn-press-question-<?php echo $this->id; ?>" data-type="multi-choice" data-id="<?php echo $this->id; ?>">
|
13 |
|
14 |
<p class="question-bottom-actions">
|
15 |
<?php
|
16 |
$top_buttons = apply_filters(
|
17 |
'learn_press_question_top_buttons',
|
18 |
array(
|
19 |
+
'change_type' => learn_press_dropdown_question_types( array( 'echo' => false, 'id' => 'learn-press-dropdown-question-types-' . $this->id, 'selected' => $this->type ) )
|
20 |
),
|
21 |
$this
|
22 |
);
|
23 |
echo join( "\n", $top_buttons );
|
24 |
?>
|
25 |
</p>
|
26 |
+
<table class="lp-sortable lp-list-options" id="learn-press-list-options-<?php echo $this->id; ?>">
|
27 |
<thead>
|
28 |
+
<tr>
|
29 |
+
<?php foreach ( $option_headings as $key => $text ) { ?>
|
30 |
+
<?php
|
31 |
+
$classes = apply_filters( 'learn-press/question/multi-choices/admin-option-column-heading-class', array( 'column-heading', 'column-heading-' . $key ) );
|
32 |
+
?>
|
33 |
+
<th class="<?php echo join( ' ', $classes ); ?>">
|
34 |
+
<?php do_action( 'learn-press/question/multi-choices/admin-option-column-heading-before-title', $key, $this->id ); ?>
|
35 |
+
<?php echo apply_filters( 'learn-press/question/multi-choices/admin-option-column-heading-title', $text ); ?>
|
36 |
+
<?php do_action( 'learn-press/question/multi-choices/admin-option-column-heading-after-title', $key, $this->id ); ?>
|
37 |
+
</th>
|
38 |
+
<?php } ?>
|
39 |
+
</tr>
|
40 |
+
<!--
|
41 |
<th><?php _e( 'Answer Text', 'learnpress' ); ?></th>
|
42 |
<th><?php _e( 'Is Correct?', 'learnpress' ); ?></th>
|
43 |
<th width="20"></th>
|
44 |
<th width="20"></th>
|
45 |
+
-->
|
46 |
</thead>
|
47 |
<tbody>
|
48 |
|
49 |
+
<?php $answers = $this->answers;
|
50 |
+
if ( $answers ): ?>
|
51 |
<?php foreach ( $answers as $answer ): ?>
|
52 |
<?php
|
53 |
$value = $this->_get_option_value( $answer['value'] );
|
55 |
|
56 |
<?php do_action( 'learn_press_before_question_answer_option', $this ); ?>
|
57 |
|
58 |
+
<tr class="lp-list-option lp-list-option-<?php echo $value; ?>" data-id="<?php echo $value; ?>">
|
59 |
+
<?php foreach ( $option_headings as $heading => $title ) { ?>
|
60 |
+
<?php
|
61 |
+
$classes = array( 'column-content', 'column-content-' . $heading );
|
62 |
+
ob_start();
|
63 |
+
switch ( $heading ) {
|
64 |
+
case 'answer_text':
|
65 |
+
?>
|
66 |
+
<input class="lp-answer-text no-submit key-nav" type="text" name="learn_press_question[<?php echo $this->id; ?>][answer][text][]" value="<?php echo esc_attr( $answer['text'] ); ?>" />
|
67 |
+
<?php
|
68 |
+
break;
|
69 |
+
case 'answer_correct':
|
70 |
+
$classes[] = 'lp-answer-check';
|
71 |
+
?>
|
72 |
+
<input type="hidden" name="learn_press_question[<?php echo $this->id; ?>][answer][value][]" value="<?php echo $value; ?>" />
|
73 |
+
<input type="checkbox" name="learn_press_question[<?php echo $this->id; ?>][checked][]" <?php checked( $answer['is_true'] == 'yes', true ); ?> value="<?php echo $value; ?>" />
|
74 |
+
<?php
|
75 |
+
break;
|
76 |
+
case 'actions':
|
77 |
+
$classes[] = 'lp-list-option-actions lp-remove-list-option';
|
78 |
+
?>
|
79 |
+
<i class="dashicons dashicons-trash"></i>
|
80 |
+
<?php
|
81 |
+
break;
|
82 |
+
case 'sort':
|
83 |
+
$classes[] = 'lp-list-option-actions lp-move-list-option open-hand';
|
84 |
+
?>
|
85 |
+
<i class="dashicons dashicons-sort"></i>
|
86 |
+
<?php
|
87 |
+
break;
|
88 |
|
89 |
+
}
|
90 |
+
$classes = apply_filters( 'learn-press/question/multi-choices/admin-option-column-class', $classes, $heading, $answer, $this->id );
|
91 |
+
$classes = array_filter( $classes );
|
92 |
+
$classes = array_unique( $classes );
|
93 |
+
?>
|
94 |
+
<?php do_action( 'learn-press/question/multi-choices/admin-option-column-' . $heading . '-content', $answer, $this->id ); ?>
|
95 |
+
<?php do_action( 'learn-press/question/multi-choices/admin-option-columns-content', $heading, $answer, $this->id ); ?>
|
96 |
+
<?php $html = ob_get_clean(); ?>
|
97 |
+
<th class="<?php echo join( ' ', $classes ); ?>">
|
98 |
+
<?php echo $html; ?>
|
99 |
+
</th>
|
100 |
+
<?php } ?>
|
101 |
+
<!--
|
102 |
<td>
|
103 |
<input class="lp-answer-text no-submit key-nav" type="text" name="learn_press_question[<?php echo $this->id; ?>][answer][text][]" value="<?php echo esc_attr( $answer['text'] ); ?>" />
|
104 |
</td>
|
112 |
<td class="lp-list-option-actions lp-move-list-option open-hand">
|
113 |
<i class="dashicons dashicons-sort"></i>
|
114 |
</td>
|
115 |
+
-->
|
116 |
</tr>
|
117 |
|
118 |
<?php do_action( 'learn_press_after_question_answer_option', $this ); ?>
|
137 |
echo join( "\n", $bottom_buttons );
|
138 |
?>
|
139 |
</p>
|
140 |
+
</div>
|
141 |
<script type="text/javascript">
|
142 |
jQuery(function ($) {
|
143 |
LP.sortableQuestionAnswers($('#learn-press-question-<?php echo $this->id;?>'));
|
inc/admin/views/meta-boxes/tabs.php
CHANGED
@@ -55,6 +55,9 @@ $current_tab = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : '';
|
|
55 |
);
|
56 |
$remove_meta_boxes[] = $metabox;
|
57 |
}
|
|
|
|
|
|
|
58 |
if ( empty( $tab['id'] ) ) {
|
59 |
$tab['id'] = sanitize_title( $tab['title'] );
|
60 |
}
|
@@ -73,6 +76,9 @@ $current_tab = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : '';
|
|
73 |
<ul class="learn-press-tab-content" data-text="<?php esc_attr_e( 'Initializing...', 'learnpress' ); ?>">
|
74 |
<?php
|
75 |
foreach ( $tabs as $tab ) {
|
|
|
|
|
|
|
76 |
echo '<li id="meta-box-tab-' . $tab['id'] . '" class="' . $tab['id'] . ( is_array( $current_tab ) && $current_tab['id'] == $tab['id'] ? ' active' : '' ) . '">';
|
77 |
if ( !empty( $tab['content'] ) ) {
|
78 |
echo $tab['content'];
|
@@ -84,12 +90,17 @@ $current_tab = !empty( $_REQUEST['tab'] ) ? $_REQUEST['tab'] : '';
|
|
84 |
echo '</li>';
|
85 |
}
|
86 |
if ( !empty( $remove_meta_boxes ) ) {
|
|
|
87 |
foreach ( $remove_meta_boxes as $meta_box ) {
|
88 |
if ( $meta_box instanceof RW_Meta_Box ) {
|
89 |
$mbox = $meta_box->meta_box;
|
90 |
foreach ( $mbox['post_types'] as $page ) {
|
91 |
-
|
92 |
-
|
|
|
|
|
|
|
|
|
93 |
}
|
94 |
} else {
|
95 |
|
55 |
);
|
56 |
$remove_meta_boxes[] = $metabox;
|
57 |
}
|
58 |
+
if ( empty( $tab['title'] ) ) {
|
59 |
+
continue;
|
60 |
+
}
|
61 |
if ( empty( $tab['id'] ) ) {
|
62 |
$tab['id'] = sanitize_title( $tab['title'] );
|
63 |
}
|
76 |
<ul class="learn-press-tab-content" data-text="<?php esc_attr_e( 'Initializing...', 'learnpress' ); ?>">
|
77 |
<?php
|
78 |
foreach ( $tabs as $tab ) {
|
79 |
+
if ( empty( $tab['title'] ) ) {
|
80 |
+
continue;
|
81 |
+
}
|
82 |
echo '<li id="meta-box-tab-' . $tab['id'] . '" class="' . $tab['id'] . ( is_array( $current_tab ) && $current_tab['id'] == $tab['id'] ? ' active' : '' ) . '">';
|
83 |
if ( !empty( $tab['content'] ) ) {
|
84 |
echo $tab['content'];
|
90 |
echo '</li>';
|
91 |
}
|
92 |
if ( !empty( $remove_meta_boxes ) ) {
|
93 |
+
$contexts = array( 'normal', 'side', 'advanced' );
|
94 |
foreach ( $remove_meta_boxes as $meta_box ) {
|
95 |
if ( $meta_box instanceof RW_Meta_Box ) {
|
96 |
$mbox = $meta_box->meta_box;
|
97 |
foreach ( $mbox['post_types'] as $page ) {
|
98 |
+
foreach ( $contexts as $context ) {
|
99 |
+
remove_meta_box( $mbox['id'], $page, $context );
|
100 |
+
if ( !empty( $wp_meta_boxes[$page][$context]['sorted'][$mbox['id']] ) ) {
|
101 |
+
$wp_meta_boxes[$page][$context]['sorted'][$mbox['id']] = false;
|
102 |
+
}
|
103 |
+
}
|
104 |
}
|
105 |
} else {
|
106 |
|
inc/admin/views/question/html-base-option.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Admin template for displaying multi choice option
|
4 |
+
*
|
5 |
+
* @package LearnPress/Templates/Admin
|
6 |
+
*/
|
7 |
+
defined( 'ABSPATH' ) or exit();
|
8 |
+
if ( ! isset( $question ) ) {
|
9 |
+
$question = learn_press_get_question( get_the_ID() );
|
10 |
+
}
|
11 |
+
|
12 |
+
if ( ! $question ) {
|
13 |
+
}
|
14 |
+
$default_answer = array( 'value' => '', 'text' => '', 'is_true' => false );
|
15 |
+
|
16 |
+
if ( isset( $answer ) ) {
|
17 |
+
$answer = wp_parse_args( $answer, $default_answer );
|
18 |
+
} else {
|
19 |
+
$answer = $default_answer;
|
20 |
+
}
|
21 |
+
|
22 |
+
$type = $question->get_type();
|
23 |
+
$option_headings = $question->get_admin_option_headings();
|
24 |
+
$value = $question->get_option_value( $answer['value'] );
|
25 |
+
$id = $question->get_id();
|
26 |
+
$input_type = $type == 'multi_choice' ? 'checkbox' : 'radio';
|
27 |
+
|
28 |
+
do_action( 'learn_press_before_question_answer_option', $id );
|
29 |
+
|
30 |
+
$template_data = array_merge(
|
31 |
+
array(
|
32 |
+
'id' => $question->get_id(),
|
33 |
+
'answer_option' => array(
|
34 |
+
'value' => $value,
|
35 |
+
'text' => $answer['text'],
|
36 |
+
'is_true' => $answer['is_true']
|
37 |
+
)
|
38 |
+
),
|
39 |
+
$question->get_option_template_data()
|
40 |
+
);
|
41 |
+
|
42 |
+
?>
|
43 |
+
<tr class="lp-list-option lp-row lp-list-option-<?php echo $template_data['answer_option']['value']; ?>"
|
44 |
+
data-id="<?php echo $template_data['answer_option']['value']; ?>">
|
45 |
+
<?php foreach ( $option_headings as $heading => $title ) { ?>
|
46 |
+
<?php
|
47 |
+
$classes = array( 'lp-column', 'lp-column-' . $heading );
|
48 |
+
$tooltip = '';
|
49 |
+
ob_start();
|
50 |
+
switch ( $heading ) {
|
51 |
+
case 'sort':
|
52 |
+
echo '<i class="fa fa-bars"></i>';
|
53 |
+
break;
|
54 |
+
case 'order':
|
55 |
+
echo '<span answer-option-order></span>';
|
56 |
+
break;
|
57 |
+
case 'answer_text':
|
58 |
+
?>
|
59 |
+
<input class="lp-answer-text no-submit key-nav" type="text"
|
60 |
+
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][text][]"
|
61 |
+
value="<?php echo esc_attr( $template_data['answer_option']['text'] ); ?>"
|
62 |
+
placeholder="<?php esc_attr_e( 'Type name of option', 'learnpress' ); ?>"
|
63 |
+
autocomplete="off"
|
64 |
+
ng-keypress="onOptionKeyEvent($event)"
|
65 |
+
ng-keyup="onOptionKeyEvent($event)"
|
66 |
+
ng-keydown="onOptionKeyEvent($event)"
|
67 |
+
/>
|
68 |
+
<?php
|
69 |
+
break;
|
70 |
+
case 'answer_correct':
|
71 |
+
$classes[] = 'lp-answer-check';
|
72 |
+
?>
|
73 |
+
<input type="hidden"
|
74 |
+
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][value][]"
|
75 |
+
value="<?php echo $template_data['answer_option']['value']; ?>"
|
76 |
+
class="lp-answer-value"/>
|
77 |
+
<input type="hidden"
|
78 |
+
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][checked][]"
|
79 |
+
value=""
|
80 |
+
class="<?php echo $template_data['answer_option']['is_true'] == 'yes' ? 'abc-xyz' : ''; ?>"
|
81 |
+
/>
|
82 |
+
<input type="<?php echo $input_type; ?>"
|
83 |
+
name="learn_press_question[<?php echo $template_data['id']; ?>][answer_options][checked][]"
|
84 |
+
<?php checked( $template_data['answer_option']['is_true'] == 'yes', true ); ?>
|
85 |
+
value="<?php echo $template_data['answer_option']['value']; ?>"
|
86 |
+
onchange=""
|
87 |
+
class="def-123 <?php echo $template_data['answer_option']['is_true'] == 'yes' ? '' : 'abc-xyz'; ?>"
|
88 |
+
/>
|
89 |
+
<?php
|
90 |
+
break;
|
91 |
+
case 'actions':
|
92 |
+
$classes[] = 'lp-toolbar-buttons';
|
93 |
+
?>
|
94 |
+
<div class="lp-toolbar-btn lp-btn-remove lp-toolbar-btn-dropdown">
|
95 |
+
<a data-tooltip="<?php esc_attr_e( 'Remove this option', 'learnpress' ); ?>"
|
96 |
+
class="lp-btn-icon dashicons dashicons-trash learn-press-tooltip" ng-click="removeOption($event)"></a>
|
97 |
+
<ul>
|
98 |
+
<li><a class="learn-press-tooltip"
|
99 |
+
data-tooltip="<?php esc_attr__( 'Delete permanently this option', 'learnpress' ); ?>"
|
100 |
+
ng-click="removeOption($event)" data-delete-permanently="yes">
|
101 |
+
<?php esc_html_e( 'Delete permanently', 'learnpress' ); ?>
|
102 |
+
</a>
|
103 |
+
</li>
|
104 |
+
</ul>
|
105 |
+
</div>
|
106 |
+
<!--
|
107 |
+
<span class="learn-press-tooltip lp-toolbar-btn lp-btn-remove"
|
108 |
+
data-tooltip="<?php esc_attr_e( 'Remove this option', 'learnpress' ); ?>"
|
109 |
+
ng-click="removeOption($event)">
|
110 |
+
<a class="lp-btn-icon dashicons dashicons-trash">
|
111 |
+
|
112 |
+
</a>
|
113 |
+
</span><!--
|
114 |
+
--><span class="learn-press-tooltip lp-toolbar-btn lp-btn-move"
|
115 |
+
data-tooltip="<?php esc_attr_e( 'Drag and drop to change answer\'s position', 'learnpress' ); ?>">
|
116 |
+
<a class="lp-btn-icon dashicons dashicons-sort"></a>
|
117 |
+
</span><?php
|
118 |
+
break;
|
119 |
+
}
|
120 |
+
if ( $tooltip ) {
|
121 |
+
$classes[] = 'learn-press-tooltip';
|
122 |
+
}
|
123 |
+
$classes = apply_filters( "learn-press/question/{$type}/admin-option-column-class", $classes, $heading, $answer, $template_data, $id );
|
124 |
+
$classes = array_filter( $classes );
|
125 |
+
$classes = array_unique( $classes );
|
126 |
+
?>
|
127 |
+
<?php do_action( "learn-press/question/{$type}/admin-option-column-" . $heading . '-content', $answer, $template_data, $id ); ?>
|
128 |
+
<?php do_action( "learn-press/question/{$type}/admin-option-columns-content", $heading, $answer, $template_data, $id ); ?>
|
129 |
+
<?php $html = ob_get_clean(); ?>
|
130 |
+
<td class="<?php echo join( ' ', $classes ); ?>"<?php if ( $tooltip ) {
|
131 |
+
echo ' data-tooltip="' . $tooltip . '"';
|
132 |
+
} ?>>
|
133 |
+
<?php echo $html; ?>
|
134 |
+
</td>
|
135 |
+
<?php } ?>
|
136 |
+
</tr>
|
137 |
+
<?php do_action( 'learn_press_after_question_answer_option', $id ); ?>
|
inc/admin/views/settings/emails/enrolled-course-admin.php
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Display general settings for emails
|
4 |
+
*
|
5 |
+
* @author ThimPress
|
6 |
+
* @package LearnPress/Admin/Views/Emails
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
if ( !defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly
|
11 |
+
}
|
12 |
+
|
13 |
+
$settings = LP()->settings;
|
14 |
+
?>
|
15 |
+
<h3><?php _e( 'Send mail for admins & instructors ', 'learnpress' ); ?></h3>
|
16 |
+
<p class="description">
|
17 |
+
<?php _e( 'Send this email to admins & instructor when the course is enrolled.', 'learnpress' ); ?>
|
18 |
+
</p>
|
19 |
+
<table class="form-table">
|
20 |
+
<tbody>
|
21 |
+
<?php do_action( 'learn_press_before_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings ); ?>
|
22 |
+
<tr>
|
23 |
+
<th scope="row">
|
24 |
+
<label for="learn-press-emails-enrolled-course-enable"><?php _e( 'Enable', 'learnpress' ); ?></label></th>
|
25 |
+
<td>
|
26 |
+
<input type="hidden" name="<?php echo $settings_class->get_field_name( 'emails_enrolled_course_admin[enable]' ); ?>" value="no" />
|
27 |
+
<input id="learn-press-emails-enrolled-course-enable" type="checkbox" name="<?php echo $settings_class->get_field_name( 'emails_enrolled_course_admin[enable]' ); ?>" value="yes" <?php checked( $settings->get( 'emails_enrolled_course_admin.enable' ) == 'yes' ); ?> />
|
28 |
+
</td>
|
29 |
+
</tr>
|
30 |
+
<tr>
|
31 |
+
<th scope="row">
|
32 |
+
<label for="learn-press-emails-enrolled-course-send-admins"><?php _e( 'Send Admins', 'learnpress' ); ?></label></th>
|
33 |
+
<td>
|
34 |
+
<input type="hidden" name="<?php echo $settings_class->get_field_name( 'emails_enrolled_course_admin[send_admins]' ); ?>" value="no" />
|
35 |
+
<input id="learn-press-emails-enrolled-course-send-admins" type="checkbox" name="<?php echo $settings_class->get_field_name( 'emails_enrolled_course_admin[send_admins]' ); ?>" value="yes" <?php checked( $settings->get( 'emails_enrolled_course_admin.send_admins' ) == 'yes' ); ?> />
|
36 |
+
</td>
|
37 |
+
</tr>
|
38 |
+
<?php do_action( 'learn_press_before_subject_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings, $settings_class ); ?>
|
39 |
+
<tr>
|
40 |
+
<th scope="row">
|
41 |
+
<label for="learn-press-emails-enrolled-course-subject"><?php _e( 'Subject', 'learnpress' ); ?></label></th>
|
42 |
+
<td>
|
43 |
+
<input id="learn-press-emails-enrolled-course-subject" class="regular-text" type="text" name="<?php echo $settings_class->get_field_name( 'emails_enrolled_course_admin[subject]' ); ?>" value="<?php echo $settings->get( 'emails_enrolled_course_admin.subject', $this->default_subject ); ?>" />
|
44 |
+
|
45 |
+
<p class="description">
|
46 |
+
<?php printf( __( 'Email subject , default: <code>%s</code>', 'learnpress' ), $this->default_subject ); ?>
|
47 |
+
</p>
|
48 |
+
</td>
|
49 |
+
</tr>
|
50 |
+
<tr>
|
51 |
+
<th scope="row">
|
52 |
+
<label for="learn-press-emails-enrolled-course-heading"><?php _e( 'Heading', 'learnpress' ); ?></label></th>
|
53 |
+
<td>
|
54 |
+
<input id="learn-press-emails-enrolled-course-heading" class="regular-text" type="text" name="<?php echo $settings_class->get_field_name( 'emails_enrolled_course_admin[heading]' ); ?>" value="<?php echo $settings->get( 'emails_enrolled_course_admin.heading', $this->default_heading ); ?>" />
|
55 |
+
|
56 |
+
<p class="description">
|
57 |
+
<?php printf( __( 'Email heading, default: <code>%s</code>', 'learnpress' ), $this->default_heading ); ?>
|
58 |
+
</p>
|
59 |
+
</td>
|
60 |
+
</tr>
|
61 |
+
<!--
|
62 |
+
<tr>
|
63 |
+
<th scope="row">
|
64 |
+
<label for="learn-press-emails-enrolled-course-email-format"><?php _e( 'Email format', 'learnpress' ); ?></label>
|
65 |
+
</th>
|
66 |
+
<td>
|
67 |
+
<?php learn_press_email_formats_dropdown( array( 'name' => $settings_class->get_field_name( 'emails_enrolled_course_admin[email_format]' ), 'id' => 'learn_press_email_formats', 'selected' => $settings->get( 'emails_enrolled_course_admin.email_format' ) ) ); ?>
|
68 |
+
</td>
|
69 |
+
</tr>-->
|
70 |
+
<?php
|
71 |
+
$view = learn_press_get_admin_view( 'settings/emails/email-template.php' );
|
72 |
+
include_once $view;
|
73 |
+
?>
|
74 |
+
<?php do_action( 'learn_press_after_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings ); ?>
|
75 |
+
</tbody>
|
76 |
+
</table>
|
inc/admin/views/settings/emails/update-course.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Display general settings for emails
|
4 |
+
*
|
5 |
+
* @author ThimPress
|
6 |
+
* @package LearnPress/Admin/Views/Emails
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
if ( !defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly
|
11 |
+
}
|
12 |
+
|
13 |
+
$settings = LP()->settings;
|
14 |
+
?>
|
15 |
+
<h3><?php _e( 'Update course', 'learnpress' ); ?></h3>
|
16 |
+
<p class="description">
|
17 |
+
<?php _e( 'Send this email to users have purchased when the course is updated.', 'learnpress' ); ?>
|
18 |
+
</p>
|
19 |
+
<table class="form-table">
|
20 |
+
<tbody>
|
21 |
+
<?php do_action( 'learn_press_before_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings ); ?>
|
22 |
+
<tr>
|
23 |
+
<th scope="row">
|
24 |
+
<label for="learn-press-emails-updated-course-subject"><?php _e( 'Subject', 'learnpress' ); ?></label></th>
|
25 |
+
<td>
|
26 |
+
<input id="learn-press-emails-updated-course-subject" class="regular-text" type="text" name="<?php echo $settings_class->get_field_name( 'emails_update_course[subject]' ); ?>" value="<?php echo $settings->get( 'emails_update_course.subject', $this->default_subject ); ?>" />
|
27 |
+
|
28 |
+
<p class="description">
|
29 |
+
<?php printf( __( 'Email subject , default: <code>%s</code>', 'learnpress' ), $this->default_subject ); ?>
|
30 |
+
</p>
|
31 |
+
</td>
|
32 |
+
</tr>
|
33 |
+
<tr>
|
34 |
+
<th scope="row">
|
35 |
+
<label for="learn-press-emails-updated-course-heading"><?php _e( 'Heading', 'learnpress' ); ?></label></th>
|
36 |
+
<td>
|
37 |
+
<input id="learn-press-emails-updated-course-heading" class="regular-text" type="text" name="<?php echo $settings_class->get_field_name( 'emails_update_course[heading]' ); ?>" value="<?php echo $settings->get( 'emails_update_course.heading', $this->default_heading ); ?>" />
|
38 |
+
|
39 |
+
<p class="description">
|
40 |
+
<?php printf( __( 'Email heading, default: <code>%s</code>', 'learnpress' ), $this->default_heading ); ?>
|
41 |
+
</p>
|
42 |
+
</td>
|
43 |
+
</tr>
|
44 |
+
<?php
|
45 |
+
$view = learn_press_get_admin_view( 'settings/emails/email-template.php' );
|
46 |
+
include_once $view;
|
47 |
+
?>
|
48 |
+
<?php do_action( 'learn_press_after_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings ); ?>
|
49 |
+
</tbody>
|
50 |
+
</table>
|
inc/admin/views/settings/emails/user-order-changed-status.php
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Display general settings for emails
|
4 |
+
*
|
5 |
+
* @author ThimPress
|
6 |
+
* @package LearnPress/Admin/Views/Emails
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
if ( !defined( 'ABSPATH' ) ) {
|
10 |
+
exit; // Exit if accessed directly
|
11 |
+
}
|
12 |
+
|
13 |
+
$settings = LP()->settings;
|
14 |
+
?>
|
15 |
+
<h3><?php _e( 'User order changed status', 'learnpress' ); ?></h3>
|
16 |
+
<p class="description">
|
17 |
+
<?php _e( 'Send email to user when the order is changed status.', 'learnpress' ); ?>
|
18 |
+
</p>
|
19 |
+
<table class="form-table">
|
20 |
+
<tbody>
|
21 |
+
<?php do_action( 'learn_press_before_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings ); ?>
|
22 |
+
<tr>
|
23 |
+
<th scope="row">
|
24 |
+
<label for="learn-press-emails-new-order-enable"><?php _e( 'Enable', 'learnpress' ); ?></label></th>
|
25 |
+
<td>
|
26 |
+
<input type="hidden" name="<?php echo $settings_class->get_field_name( 'emails_user_order_changed_status[enable]' ); ?>" value="no" />
|
27 |
+
<input id="learn-press-emails-new-order-enable" type="checkbox" name="<?php echo $settings_class->get_field_name( 'emails_user_order_changed_status[enable]' ); ?>" value="yes" <?php checked( $settings->get( 'emails_user_order_changed_status.enable' ) == 'yes' ); ?>" />
|
28 |
+
</td>
|
29 |
+
</tr>
|
30 |
+
<tr>
|
31 |
+
<th scope="row">
|
32 |
+
<label for="learn-press-emails-new-order-subject"><?php _e( 'Subject', 'learnpress' ); ?></label></th>
|
33 |
+
<td>
|
34 |
+
<?php $default = $this->default_subject; ?>
|
35 |
+
<input id="learn-press-emails-new-order-subject" class="regular-text" type="text" name="<?php echo $settings_class->get_field_name( 'emails_user_order_changed_status[subject]' ); ?>" value="<?php echo $settings->get( 'emails_user_order_changed_status.subject', $default ); ?>" />
|
36 |
+
|
37 |
+
<p class="description">
|
38 |
+
<?php printf( __( 'Email subject, default: <code>%s</code>', 'learnpress' ), $default ); ?>
|
39 |
+
</p>
|
40 |
+
</td>
|
41 |
+
</tr>
|
42 |
+
<tr>
|
43 |
+
<th scope="row">
|
44 |
+
<label for="learn-press-emails-new-order-heading"><?php _e( 'Heading', 'learnpress' ); ?></label></th>
|
45 |
+
<td>
|
46 |
+
<?php $default = $this->default_heading; ?>
|
47 |
+
<input id="learn-press-emails-new-order-heading" class="regular-text" type="text" name="<?php echo $settings_class->get_field_name( 'emails_user_order_changed_status[heading]' ); ?>" value="<?php echo $settings->get( 'emails_user_order_changed_status.heading', $default ); ?>" />
|
48 |
+
|
49 |
+
<p class="description">
|
50 |
+
<?php printf( __( 'Email heading, default: <code>%s</code>', 'learnpress' ), $default ); ?>
|
51 |
+
</p>
|
52 |
+
</td>
|
53 |
+
</tr>
|
54 |
+
<!--<tr>
|
55 |
+
<th scope="row">
|
56 |
+
<label for="learn-press-emails-new-order-email-format"><?php _e( 'Email format', 'learnpress' ); ?></label>
|
57 |
+
</th>
|
58 |
+
<td>
|
59 |
+
<?php learn_press_email_formats_dropdown( array( 'name' => $settings_class->get_field_name( 'emails_user_order_changed_status[email_format]' ), 'id' => 'learn_press_email_formats', 'selected' => $settings->get( 'emails_user_order_changed_status.email_format', $default ) ) ); ?>
|
60 |
+
</td>
|
61 |
+
</tr>-->
|
62 |
+
<?php
|
63 |
+
$view = learn_press_get_admin_view( 'settings/emails/email-template.php' );
|
64 |
+
include_once $view;
|
65 |
+
?>
|
66 |
+
<?php do_action( 'learn_press_after_' . $this->id . '_' . $this->section['id'] . '_settings_fields', $settings ); ?>
|
67 |
+
</tbody>
|
68 |
+
</table>
|
inc/admin/views/settings/fields/course-permalink.php
CHANGED
@@ -14,12 +14,12 @@ $courses_page_id = learn_press_get_page_id( 'courses' );
|
|
14 |
$base_slug = urldecode( ( $courses_page_id > 0 && get_post( $courses_page_id ) ) ? get_page_uri( $courses_page_id ) : _x( 'courses', 'default-slug', 'learnpress' ) );
|
15 |
$course_base = _x( 'course', 'default-slug', 'learnpress' );
|
16 |
|
17 |
-
if( !$course_permalink ){
|
18 |
global $wpdb;
|
19 |
-
if( $wpdb->get_results( $wpdb->prepare( "SELECT count(option_id) FROM {$wpdb->options} WHERE option_name = %s", 'learn_press_course_base' ) ) == 0 ){
|
20 |
//$course_permalink = '/courses';
|
21 |
}
|
22 |
-
}
|
23 |
$structures = array(
|
24 |
0 => array(
|
25 |
'value' => '',
|
@@ -43,17 +43,19 @@ $structures = array(
|
|
43 |
)
|
44 |
);
|
45 |
|
46 |
-
$is_custom = true;
|
47 |
$base_type = get_option( 'learn_press_course_base_type' );
|
|
|
|
|
48 |
?>
|
49 |
<?php foreach ( $structures as $k => $structure ): ?>
|
50 |
-
<tr<?php if ( $k == 2 || $k == 3 ) {
|
51 |
-
echo '
|
52 |
-
echo !$courses_page_id ? ' hide-if-js
|
53 |
-
}; ?>
|
54 |
<th>
|
55 |
<?php
|
56 |
-
$is_checked =
|
|
|
57 |
if ( $is_custom && $is_checked ) {
|
58 |
$is_custom = false;
|
59 |
}
|
@@ -68,16 +70,17 @@ $base_type = get_option( 'learn_press_course_base_type' );
|
|
68 |
</td>
|
69 |
</tr>
|
70 |
<?php endforeach; ?>
|
71 |
-
<tr>
|
72 |
<th>
|
73 |
<label>
|
74 |
-
<input name="<?php echo $this->get_field_name( "course_base" ); ?>" id="learn_press_custom_permalink" type="radio" value="custom" <?php checked( $is_custom
|
75 |
<?php _e( 'Custom Base', 'learnpress' ); ?>
|
76 |
</label>
|
77 |
</th>
|
78 |
<td>
|
79 |
-
<input name="course_permalink_structure" id="course_permalink_structure"
|
80 |
-
|
|
|
81 |
<p class="description"><?php _e( 'Enter a custom base to use. A base <strong>must</strong> be set or WordPress will use default values instead.', 'learnpress' ); ?></p>
|
82 |
</td>
|
83 |
</tr>
|
14 |
$base_slug = urldecode( ( $courses_page_id > 0 && get_post( $courses_page_id ) ) ? get_page_uri( $courses_page_id ) : _x( 'courses', 'default-slug', 'learnpress' ) );
|
15 |
$course_base = _x( 'course', 'default-slug', 'learnpress' );
|
16 |
|
17 |
+
/*if ( !$course_permalink ) {
|
18 |
global $wpdb;
|
19 |
+
if ( $wpdb->get_results( $wpdb->prepare( "SELECT count(option_id) FROM {$wpdb->options} WHERE option_name = %s", 'learn_press_course_base' ) ) == 0 ) {
|
20 |
//$course_permalink = '/courses';
|
21 |
}
|
22 |
+
}*/
|
23 |
$structures = array(
|
24 |
0 => array(
|
25 |
'value' => '',
|
43 |
)
|
44 |
);
|
45 |
|
|
|
46 |
$base_type = get_option( 'learn_press_course_base_type' );
|
47 |
+
$is_custom = ( $base_type == 'custom' && $course_permalink != '' );
|
48 |
+
|
49 |
?>
|
50 |
<?php foreach ( $structures as $k => $structure ): ?>
|
51 |
+
<tr class="learn-press-single-course-permalink<?php if ( $k == 2 || $k == 3 ) {
|
52 |
+
echo ' learn-press-courses-page-id';
|
53 |
+
echo !$courses_page_id ? ' hide-if-js' : '';
|
54 |
+
}; ?>">
|
55 |
<th>
|
56 |
<?php
|
57 |
+
$is_checked = ( $course_permalink == '' && $structure['value'] == '' ) || ( $structure['value'] == trailingslashit( $course_permalink ) );
|
58 |
+
$is_checked = checked( $is_checked, true, false );
|
59 |
if ( $is_custom && $is_checked ) {
|
60 |
$is_custom = false;
|
61 |
}
|
70 |
</td>
|
71 |
</tr>
|
72 |
<?php endforeach; ?>
|
73 |
+
<tr class="learn-press-single-course-permalink custom-base">
|
74 |
<th>
|
75 |
<label>
|
76 |
+
<input name="<?php echo $this->get_field_name( "course_base" ); ?>" id="learn_press_custom_permalink" type="radio" value="custom" <?php checked( $is_custom, true ); ?> />
|
77 |
<?php _e( 'Custom Base', 'learnpress' ); ?>
|
78 |
</label>
|
79 |
</th>
|
80 |
<td>
|
81 |
+
<input name="course_permalink_structure" id="course_permalink_structure" <?php if ( !$is_custom ) {
|
82 |
+
echo 'readonly="readonly"';
|
83 |
+
} ?> type="text" value="<?php if($course_permalink) echo esc_attr( trailingslashit( $course_permalink ) ); ?>" class="regular-text code" />
|
84 |
<p class="description"><?php _e( 'Enter a custom base to use. A base <strong>must</strong> be set or WordPress will use default values instead.', 'learnpress' ); ?></p>
|
85 |
</td>
|
86 |
</tr>
|
inc/admin/views/statistics/general.php
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( !defined( 'ABSPATH' ) ) {
|
4 |
+
exit; // Exit if accessed directly
|
5 |
+
}
|
6 |
+
|
7 |
+
$sections = array(
|
8 |
+
'students' => __( 'Students', 'learnpress' ),
|
9 |
+
'instructors' => __( 'Instructors', 'learnpress' ),
|
10 |
+
);
|
11 |
+
|
12 |
+
$section = $this->section ? $this->section : 'students';
|
13 |
+
$sections_count = sizeof( $sections );
|
14 |
+
$count = 0;
|
15 |
+
|
16 |
+
gmdate( 'Y-m-d H:i:s', ( time() + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ) );
|
17 |
+
$now = current_time( 'timestamp' );
|
18 |
+
$now_mysql = current_time( 'mysql' );
|
19 |
+
$last_sunday = strtotime('Last Sunday', $now );
|
20 |
+
|
21 |
+
$last_sunday_sql = gmdate( 'Y-m-d H:i:s', $last_sunday );
|
22 |
+
|
23 |
+
$pre_sunday = strtotime('-7 day',$last_sunday);
|
24 |
+
$pre_sunday_sql = gmdate( 'Y-m-d H:i:s', $pre_sunday );
|
25 |
+
|
26 |
+
learn_press_get_chart_general( null, 'days', 7 );
|
27 |
+
|
28 |
+
?>
|
29 |
+
<div id="learn-press-statistic" class="learn-press-statistic-courses">
|
30 |
+
<ul class="subsubsub chart-buttons">
|
31 |
+
<li>
|
32 |
+
<button class="button" data-type="course-last-7-days" disabled="disabled"><?php _e( 'Last 7 Days', 'learnpress' ); ?></button>
|
33 |
+
</li>
|
34 |
+
<li>
|
35 |
+
<button class="button" data-type="course-last-30-days"><?php _e( 'Last 30 Days', 'learnpress' ); ?></button>
|
36 |
+
</li>
|
37 |
+
<li>
|
38 |
+
<button class="button" data-type="course-last-12-months"><?php _e( 'Last 12 Months', 'learnpress' ); ?></button>
|
39 |
+
</li>
|
40 |
+
<li>
|
41 |
+
<button class="button" data-type="course-all"><?php _e( 'All', 'learnpress' ); ?></button>
|
42 |
+
</li>
|
43 |
+
<li>
|
44 |
+
<form id="course-custom-time">
|
45 |
+
<span><?php _e( 'From', 'learnpress' ) ?></span>
|
46 |
+
<input type="text" placeholder="Y/m/d" name="from" class="date-picker" readonly="readonly">
|
47 |
+
<span><?php _e( 'To', 'learnpress' ) ?></span>
|
48 |
+
<input type="text" placeholder="Y/m/d" name="to" class="date-picker" readonly="readonly">
|
49 |
+
<input type="hidden" name="action" value="learnpress_custom_stats">
|
50 |
+
<button class="button button-primary" data-type="course-custom-time" type="submit" disabled="disabled"><?php _e( 'Go', 'learnpress' ); ?></button>
|
51 |
+
</form>
|
52 |
+
</li>
|
53 |
+
</ul>
|
54 |
+
<div class="clear"></div>
|
55 |
+
<ul class="chart-description">
|
56 |
+
<li class="all"><span><?php _e( 'All', 'learnpress' ); ?></span></li>
|
57 |
+
<li class="free"><span><?php _e( 'Public', 'learnpress' ); ?></span></li>
|
58 |
+
<li class="paid"><span><?php _e( 'Pending', 'learnpress' ); ?></span></li>
|
59 |
+
<li class="all"><span><?php _e( 'Paid', 'learnpress' ); ?></span></li>
|
60 |
+
<li class="free"><span><?php _e( 'Free', 'learnpress' ); ?></span></li>
|
61 |
+
</ul>
|
62 |
+
<div id="learn-press-chart" class="learn-press-chart">
|
63 |
+
</div>
|
64 |
+
|
65 |
+
<script type="text/javascript">
|
66 |
+
var LP_Chart_Config = <?php learn_press_config_chart();?>;
|
67 |
+
jQuery(document).ready(function ($) {
|
68 |
+
$('#learn-press-chart').LP_Chart_Line(<?php echo json_encode( learn_press_get_chart_general( null, 'days', 7 ) );?>, LP_Chart_Config);
|
69 |
+
});
|
70 |
+
</script>
|
71 |
+
</div>
|
72 |
+
|
inc/api/class-lp-api.php
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class LP_API{
|
3 |
+
|
4 |
+
}
|
inc/attributes/lp-attributes-functions.php
CHANGED
@@ -19,10 +19,20 @@ function learn_press_get_attributes() {
|
|
19 |
* @return array|int|WP_Error
|
20 |
*/
|
21 |
function learn_press_get_attribute_terms( $attribute ) {
|
22 |
-
|
23 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
}
|
25 |
-
$terms = get_terms( sprintf( '%s-%s', LP_COURSE_ATTRIBUTE, $attribute ), array( 'hide_empty' => false ) );
|
26 |
return $terms;
|
27 |
}
|
28 |
|
@@ -45,10 +55,21 @@ function learn_press_delete_attribute_terms( $attribute ) {
|
|
45 |
return $deleted_terms;
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
48 |
function learn_press_get_course_attributes( $course_id ) {
|
49 |
return get_post_meta( $course_id, '_lp_attributes', true );
|
50 |
}
|
51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
function learn_press_add_course_attribute_value( $name, $taxonomy ) {
|
53 |
|
54 |
if ( !$name || term_exists( $name, $taxonomy ) ) {
|
@@ -62,6 +83,11 @@ function learn_press_add_course_attribute_value( $name, $taxonomy ) {
|
|
62 |
return $new_value;
|
63 |
}
|
64 |
|
|
|
|
|
|
|
|
|
|
|
65 |
function learn_press_add_course_attribute( $name ) {
|
66 |
|
67 |
if ( !$name || term_exists( $name, LP_COURSE_ATTRIBUTE ) ) {
|
@@ -72,6 +98,12 @@ function learn_press_add_course_attribute( $name ) {
|
|
72 |
return $new_value;
|
73 |
}
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
function learn_press_add_attribute_to_course( $course_id, $taxonomy ) {
|
76 |
if ( !$term = get_term_by( 'slug', $taxonomy, LP_COURSE_ATTRIBUTE ) ) {
|
77 |
return false;
|
@@ -91,8 +123,53 @@ function learn_press_add_attribute_to_course( $course_id, $taxonomy ) {
|
|
91 |
return $attribute;
|
92 |
}
|
93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
/**
|
95 |
* Register widgets
|
96 |
*/
|
97 |
-
LP_Widget::register( 'course-attributes' );
|
98 |
-
LP_Widget::register( 'course-filters' );
|
19 |
* @return array|int|WP_Error
|
20 |
*/
|
21 |
function learn_press_get_attribute_terms( $attribute ) {
|
22 |
+
$terms = array();
|
23 |
+
if ( is_array( $attribute ) ) {
|
24 |
+
foreach ( $attribute as $attr ) {
|
25 |
+
$_terms = learn_press_get_attribute_terms( $attr );
|
26 |
+
if ( is_array( $terms ) ) {
|
27 |
+
$terms = array_merge( $terms, $_terms );
|
28 |
+
}
|
29 |
+
}
|
30 |
+
} else {
|
31 |
+
if ( is_numeric( $attribute ) && !is_wp_error( $term = get_term( $attribute, LP_COURSE_ATTRIBUTE ) ) ) {
|
32 |
+
$attribute = $term->slug;
|
33 |
+
}
|
34 |
+
$terms = get_terms( sprintf( '%s-%s', LP_COURSE_ATTRIBUTE, $attribute ), array( 'hide_empty' => false ) );
|
35 |
}
|
|
|
36 |
return $terms;
|
37 |
}
|
38 |
|
55 |
return $deleted_terms;
|
56 |
}
|
57 |
|
58 |
+
/**
|
59 |
+
* @param $course_id
|
60 |
+
*
|
61 |
+
* @return mixed
|
62 |
+
*/
|
63 |
function learn_press_get_course_attributes( $course_id ) {
|
64 |
return get_post_meta( $course_id, '_lp_attributes', true );
|
65 |
}
|
66 |
|
67 |
+
/**
|
68 |
+
* @param $name
|
69 |
+
* @param $taxonomy
|
70 |
+
*
|
71 |
+
* @return array|bool|WP_Error
|
72 |
+
*/
|
73 |
function learn_press_add_course_attribute_value( $name, $taxonomy ) {
|
74 |
|
75 |
if ( !$name || term_exists( $name, $taxonomy ) ) {
|
83 |
return $new_value;
|
84 |
}
|
85 |
|
86 |
+
/**
|
87 |
+
* @param $name
|
88 |
+
*
|
89 |
+
* @return array|bool|WP_Error
|
90 |
+
*/
|
91 |
function learn_press_add_course_attribute( $name ) {
|
92 |
|
93 |
if ( !$name || term_exists( $name, LP_COURSE_ATTRIBUTE ) ) {
|
98 |
return $new_value;
|
99 |
}
|
100 |
|
101 |
+
/**
|
102 |
+
* @param $course_id
|
103 |
+
* @param $taxonomy
|
104 |
+
*
|
105 |
+
* @return bool|mixed|void
|
106 |
+
*/
|
107 |
function learn_press_add_attribute_to_course( $course_id, $taxonomy ) {
|
108 |
if ( !$term = get_term_by( 'slug', $taxonomy, LP_COURSE_ATTRIBUTE ) ) {
|
109 |
return false;
|
123 |
return $attribute;
|
124 |
}
|
125 |
|
126 |
+
/**
|
127 |
+
* @param WP_Query $q
|
128 |
+
*/
|
129 |
+
add_filter( 'pre_get_posts', function ( $q ) {
|
130 |
+
global $lp_tax_query;
|
131 |
+
if ( empty( $_REQUEST['course-filter'] ) ) {
|
132 |
+
return;
|
133 |
+
}
|
134 |
+
|
135 |
+
if ( !$q->is_main_query() ) {
|
136 |
+
return;
|
137 |
+
}
|
138 |
+
if ( LP_COURSE_CPT != $q->get( 'post_type' ) ) {
|
139 |
+
return $q;
|
140 |
+
}
|
141 |
+
|
142 |
+
if ( $attribute_taxonomies = learn_press_get_attributes() ) {
|
143 |
+
$attribute_operator = 'and' === strtolower( learn_press_get_request( 'attribute_operator' ) ) ? 'AND' : 'OR';
|
144 |
+
$value_operator = 'and' === strtolower( learn_press_get_request( 'value_operator' ) ) ? 'AND' : 'IN';
|
145 |
+
$tax_query = array(
|
146 |
+
'relation' => $attribute_operator
|
147 |
+
);
|
148 |
+
foreach ( $attribute_taxonomies as $tax ) {
|
149 |
+
$attribute = $tax->slug;
|
150 |
+
$taxonomy = LP_COURSE_ATTRIBUTE . '-' . $attribute;
|
151 |
+
$filter_terms = !empty( $_GET['filter_' . $attribute] ) ? explode( ',', $_GET['filter_' . $attribute] ) : array();
|
152 |
+
|
153 |
+
|
154 |
+
if ( empty( $filter_terms ) || !taxonomy_exists( $taxonomy ) ) {
|
155 |
+
continue;
|
156 |
+
}
|
157 |
+
|
158 |
+
$tax_query[] = array(
|
159 |
+
'taxonomy' => $taxonomy,
|
160 |
+
'field' => 'slug',
|
161 |
+
'terms' => $filter_terms,
|
162 |
+
'operator' => $value_operator,
|
163 |
+
'include_children' => false,
|
164 |
+
);
|
165 |
+
}
|
166 |
+
$lp_tax_query = $tax_query;
|
167 |
+
$q->set( 'tax_query', $tax_query );
|
168 |
+
}
|
169 |
+
return $q;
|
170 |
+
}, 1000 );
|
171 |
+
|
172 |
/**
|
173 |
* Register widgets
|
174 |
*/
|
175 |
+
LP_Widget::register( array( 'course-attributes', 'course-filters' ) );
|
|
inc/class-lp-ajax.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
if ( !defined( 'ABSPATH' ) ) {
|
4 |
exit; // Exit if accessed directly
|
5 |
}
|
6 |
|
7 |
-
if ( !class_exists( 'LP_AJAX' ) ) {
|
8 |
/**
|
9 |
* Class LP_AJAX
|
10 |
*/
|
@@ -12,7 +12,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
12 |
/**
|
13 |
* Init common ajax events
|
14 |
*/
|
15 |
-
public static function init() {
|
16 |
$ajaxEvents = array(
|
17 |
'load_quiz_question' => true,
|
18 |
'load_prev_question' => false,
|
@@ -48,8 +48,8 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
48 |
*
|
49 |
* @param $var
|
50 |
*/
|
51 |
-
public static function do_ajax( $var ) {
|
52 |
-
if ( !defined( 'LP_DOING_AJAX' ) ) {
|
53 |
define( 'LP_DOING_AJAX', true );
|
54 |
}
|
55 |
LP_Gateways::instance()->get_available_payment_gateways();
|
@@ -60,6 +60,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
60 |
$result = call_user_func( $callback );
|
61 |
} elseif ( has_action( 'learn_press_ajax_handler_' . $var ) ) {
|
62 |
do_action( 'learn_press_ajax_handler_' . $var );
|
|
|
63 |
return;
|
64 |
}
|
65 |
if ( learn_press_get_request( 'format' ) == 'html' ) {
|
@@ -68,13 +69,13 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
68 |
learn_press_send_json( $result );
|
69 |
}
|
70 |
|
71 |
-
public static function upload_user_avatar() {
|
72 |
-
$file
|
73 |
$upload_dir = learn_press_user_profile_picture_upload_dir();
|
74 |
|
75 |
add_filter( 'upload_dir', array( __CLASS__, '_user_avatar_upload_dir' ), 10000 );
|
76 |
|
77 |
-
$result
|
78 |
array(
|
79 |
'test_form' => false
|
80 |
)
|
@@ -92,15 +93,16 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
92 |
learn_press_send_json( $result );
|
93 |
}
|
94 |
|
95 |
-
public static function _user_avatar_upload_dir( $dir ) {
|
96 |
$dir = learn_press_user_profile_picture_upload_dir();
|
|
|
97 |
return $dir;
|
98 |
}
|
99 |
|
100 |
/**
|
101 |
* Become a teacher
|
102 |
*/
|
103 |
-
public static function _request_become_a_teacher() {
|
104 |
$response = learn_press_process_become_a_teacher_form(
|
105 |
array(
|
106 |
'name' => learn_press_get_request( 'bat_name' ),
|
@@ -116,7 +118,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
116 |
*
|
117 |
* @return array|mixed|void
|
118 |
*/
|
119 |
-
public static function _request_checkout() {
|
120 |
return LP()->checkout->process_checkout_handler();
|
121 |
}
|
122 |
|
@@ -126,9 +128,9 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
126 |
* @return bool
|
127 |
* @throws Exception
|
128 |
*/
|
129 |
-
public static function _request_enroll_course() {
|
130 |
$course_id = learn_press_get_request( 'enroll-course' );
|
131 |
-
if (
|
132 |
throw new Exception( __( 'Invalid course', 'learnpress' ) );
|
133 |
}
|
134 |
$insert_id = LP()->user->enroll( $course_id );
|
@@ -155,6 +157,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
155 |
wp_redirect( $response['redirect'] );
|
156 |
exit();
|
157 |
}
|
|
|
158 |
return false;
|
159 |
}
|
160 |
|
@@ -163,7 +166,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
163 |
*
|
164 |
* @return array
|
165 |
*/
|
166 |
-
public static function _request_checkout_login() {
|
167 |
$result = array(
|
168 |
'result' => 'success'
|
169 |
);
|
@@ -194,13 +197,14 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
194 |
if ( $result['result'] == 'fail' ) {
|
195 |
$result['messages'] = $messages;
|
196 |
}
|
|
|
197 |
return $result;
|
198 |
}
|
199 |
|
200 |
/**
|
201 |
* Request login in profile
|
202 |
*/
|
203 |
-
public static function _request_login() {
|
204 |
$data_str = learn_press_get_request( 'data' );
|
205 |
$data = null;
|
206 |
if ( $data_str ) {
|
@@ -219,7 +223,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
219 |
$error = is_wp_error( $user );
|
220 |
$return = array(
|
221 |
'result' => $error ? 'error' : 'success',
|
222 |
-
'redirect' => (
|
223 |
);
|
224 |
if ( $error ) {
|
225 |
$return['message'] = learn_press_get_message( $user->get_error_message() ? $user->get_error_message() : __( 'Please enter your username and/or password', 'learnpress' ) );
|
@@ -250,6 +254,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
250 |
$checkout = LP()->checkout()->process_checkout();
|
251 |
} else {
|
252 |
}
|
|
|
253 |
return;
|
254 |
}
|
255 |
$return['message'] = learn_press_get_message( sprintf( __( 'Welcome back, %s! Redirecting...', 'learnpress' ), learn_press_get_profile_display_name( $user ) ) );
|
@@ -260,7 +265,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
260 |
/**
|
261 |
* Request add-to-cart a course
|
262 |
*/
|
263 |
-
public static function _request_add_to_cart() {
|
264 |
$cart = learn_press_get_cart();
|
265 |
$course_id = learn_press_get_request( 'purchase-course' );
|
266 |
|
@@ -279,7 +284,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
279 |
/**
|
280 |
* Request finish course
|
281 |
*/
|
282 |
-
public static function _request_finish_course() {
|
283 |
$nonce = learn_press_get_request( 'security' );
|
284 |
$course_id = absint( learn_press_get_request( 'id' ) );
|
285 |
$user = learn_press_get_current_user();
|
@@ -287,7 +292,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
287 |
$course = LP_Course::get_course( $course_id );
|
288 |
|
289 |
$nonce_action = sprintf( 'learn-press-finish-course-%d-%d', $course_id, $user->id );
|
290 |
-
if (
|
291 |
wp_die( __( 'Access denied!', 'learnpress' ) );
|
292 |
}
|
293 |
|
@@ -311,24 +316,94 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
311 |
/**
|
312 |
* Request complete an item
|
313 |
*/
|
314 |
-
public static function _request_complete_item() {
|
315 |
$user = learn_press_get_current_user();
|
316 |
$id = learn_press_get_request( 'id' );
|
317 |
-
$course_id = !empty( $_REQUEST['course_id'] ) ? $_REQUEST['course_id'] : get_the_ID();
|
318 |
$type = learn_press_get_request( 'type' );
|
319 |
$security = learn_press_get_request( 'security' );
|
320 |
$response = array();
|
321 |
-
if ( !wp_verify_nonce( $security, sprintf( 'complete-item-%d-%d-%d', $user->id, $course_id, $id ) ) ) {
|
322 |
$response['result'] = 'fail';
|
323 |
$response['message'] = __( 'Bad request!', 'learnpress' );
|
324 |
} else {
|
325 |
if ( $type == 'lp_lesson' ) {
|
326 |
$results = $user->complete_lesson( $id, $course_id );
|
|
|
327 |
if ( is_wp_error( $results ) ) {
|
328 |
learn_press_add_message( __( 'Error while completing lesson.', 'learnpress' ) );
|
329 |
} elseif ( $results !== false ) {
|
330 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
}
|
|
|
332 |
} else {
|
333 |
do_action( 'learn_press_user_request_complete_item', $_REQUEST );
|
334 |
}
|
@@ -340,7 +415,7 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
340 |
/**
|
341 |
* Request load item content
|
342 |
*/
|
343 |
-
public static function _request_load_item() {
|
344 |
global $wpdb;
|
345 |
$user = learn_press_get_current_user();
|
346 |
$item_id = learn_press_get_request( 'id' );
|
@@ -349,9 +424,9 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
349 |
$can_view_item = $user->can( 'view-item', $item_id, $course_id );
|
350 |
if ( $can_view_item ) {
|
351 |
// Update user item if it's not updated
|
352 |
-
if (
|
353 |
$item_type = learn_press_get_request( 'type' );
|
354 |
-
if (
|
355 |
$item_type = get_post_type( $item_id );
|
356 |
}
|
357 |
if ( apply_filters( 'learn_press_insert_user_item_data', true, $item_id, $course_id ) && $can_view_item != 'preview' ) {
|
@@ -372,7 +447,14 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
372 |
)
|
373 |
),
|
374 |
array(
|
375 |
-
'%d',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
376 |
)
|
377 |
);
|
378 |
print_r( $wpdb );
|
@@ -393,19 +475,19 @@ if ( !class_exists( 'LP_AJAX' ) ) {
|
|
393 |
* Student take course
|
394 |
|
1 |
<?php
|
2 |
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
exit; // Exit if accessed directly
|
5 |
}
|
6 |
|
7 |
+
if ( ! class_exists( 'LP_AJAX' ) ) {
|
8 |
/**
|
9 |
* Class LP_AJAX
|
10 |
*/
|
12 |
/**
|
13 |
* Init common ajax events
|
14 |
*/
|
15 |
+
public static function init () {
|
16 |
$ajaxEvents = array(
|
17 |
'load_quiz_question' => true,
|
18 |
'load_prev_question' => false,
|
48 |
*
|
49 |
* @param $var
|
50 |
*/
|
51 |
+
public static function do_ajax ( $var ) {
|
52 |
+
if ( ! defined( 'LP_DOING_AJAX' ) ) {
|
53 |
define( 'LP_DOING_AJAX', true );
|
54 |
}
|
55 |
LP_Gateways::instance()->get_available_payment_gateways();
|
60 |
$result = call_user_func( $callback );
|
61 |
} elseif ( has_action( 'learn_press_ajax_handler_' . $var ) ) {
|
62 |
do_action( 'learn_press_ajax_handler_' . $var );
|
63 |
+
|
64 |
return;
|
65 |
}
|
66 |
if ( learn_press_get_request( 'format' ) == 'html' ) {
|
69 |
learn_press_send_json( $result );
|
70 |
}
|
71 |
|
72 |
+
public static function upload_user_avatar () {
|
73 |
+
$file = $_FILES['lp-upload-avatar'];
|
74 |
$upload_dir = learn_press_user_profile_picture_upload_dir();
|
75 |
|
76 |
add_filter( 'upload_dir', array( __CLASS__, '_user_avatar_upload_dir' ), 10000 );
|
77 |
|
78 |
+
$result = wp_handle_upload( $file,
|
79 |
array(
|
80 |
'test_form' => false
|
81 |
)
|
93 |
learn_press_send_json( $result );
|
94 |
}
|
95 |
|
96 |
+
public static function _user_avatar_upload_dir ( $dir ) {
|
97 |
$dir = learn_press_user_profile_picture_upload_dir();
|
98 |
+
|
99 |
return $dir;
|
100 |
}
|
101 |
|
102 |
/**
|
103 |
* Become a teacher
|
104 |
*/
|
105 |
+
public static function _request_become_a_teacher () {
|
106 |
$response = learn_press_process_become_a_teacher_form(
|
107 |
array(
|
108 |
'name' => learn_press_get_request( 'bat_name' ),
|
118 |
*
|
119 |
* @return array|mixed|void
|
120 |
*/
|
121 |
+
public static function _request_checkout () {
|
122 |
return LP()->checkout->process_checkout_handler();
|
123 |
}
|
124 |
|
128 |
* @return bool
|
129 |
* @throws Exception
|
130 |
*/
|
131 |
+
public static function _request_enroll_course () {
|
132 |
$course_id = learn_press_get_request( 'enroll-course' );
|
133 |
+
if ( ! $course_id ) {
|
134 |
throw new Exception( __( 'Invalid course', 'learnpress' ) );
|
135 |
}
|
136 |
$insert_id = LP()->user->enroll( $course_id );
|
157 |
wp_redirect( $response['redirect'] );
|
158 |
exit();
|
159 |
}
|
160 |
+
|
161 |
return false;
|
162 |
}
|
163 |
|
166 |
*
|
167 |
* @return array
|
168 |
*/
|
169 |
+
public static function _request_checkout_login () {
|
170 |
$result = array(
|
171 |
'result' => 'success'
|
172 |
);
|
197 |
if ( $result['result'] == 'fail' ) {
|
198 |
$result['messages'] = $messages;
|
199 |
}
|
200 |
+
|
201 |
return $result;
|
202 |
}
|
203 |
|
204 |
/**
|
205 |
* Request login in profile
|
206 |
*/
|
207 |
+
public static function _request_login () {
|
208 |
$data_str = learn_press_get_request( 'data' );
|
209 |
$data = null;
|
210 |
if ( $data_str ) {
|
223 |
$error = is_wp_error( $user );
|
224 |
$return = array(
|
225 |
'result' => $error ? 'error' : 'success',
|
226 |
+
'redirect' => ( ! $error && ! empty( $data['redirect_to'] ) ) ? $data['redirect_to'] : ''
|
227 |
);
|
228 |
if ( $error ) {
|
229 |
$return['message'] = learn_press_get_message( $user->get_error_message() ? $user->get_error_message() : __( 'Please enter your username and/or password', 'learnpress' ) );
|
254 |
$checkout = LP()->checkout()->process_checkout();
|
255 |
} else {
|
256 |
}
|
257 |
+
|
258 |
return;
|
259 |
}
|
260 |
$return['message'] = learn_press_get_message( sprintf( __( 'Welcome back, %s! Redirecting...', 'learnpress' ), learn_press_get_profile_display_name( $user ) ) );
|
265 |
/**
|
266 |
* Request add-to-cart a course
|
267 |
*/
|
268 |
+
public static function _request_add_to_cart () {
|
269 |
$cart = learn_press_get_cart();
|
270 |
$course_id = learn_press_get_request( 'purchase-course' );
|
271 |
|
284 |
/**
|
285 |
* Request finish course
|
286 |
*/
|
287 |
+
public static function _request_finish_course () {
|
288 |
$nonce = learn_press_get_request( 'security' );
|
289 |
$course_id = absint( learn_press_get_request( 'id' ) );
|
290 |
$user = learn_press_get_current_user();
|
292 |
$course = LP_Course::get_course( $course_id );
|
293 |
|
294 |
$nonce_action = sprintf( 'learn-press-finish-course-%d-%d', $course_id, $user->id );
|
295 |
+
if ( ! $user->id || ! $course || ! wp_verify_nonce( $nonce, $nonce_action ) ) {
|
296 |
wp_die( __( 'Access denied!', 'learnpress' ) );
|
297 |
}
|
298 |
|
316 |
/**
|
317 |
* Request complete an item
|
318 |
*/
|
319 |
+
public static function _request_complete_item () {
|
320 |
$user = learn_press_get_current_user();
|
321 |
$id = learn_press_get_request( 'id' );
|
322 |
+
$course_id = ! empty( $_REQUEST['course_id'] ) ? $_REQUEST['course_id'] : get_the_ID();
|
323 |
$type = learn_press_get_request( 'type' );
|
324 |
$security = learn_press_get_request( 'security' );
|
325 |
$response = array();
|
326 |
+
if ( ! wp_verify_nonce( $security, sprintf( 'complete-item-%d-%d-%d', $user->id, $course_id, $id ) ) ) {
|
327 |
$response['result'] = 'fail';
|
328 |
$response['message'] = __( 'Bad request!', 'learnpress' );
|
329 |
} else {
|
330 |
if ( $type == 'lp_lesson' ) {
|
331 |
$results = $user->complete_lesson( $id, $course_id );
|
332 |
+
|
333 |
if ( is_wp_error( $results ) ) {
|
334 |
learn_press_add_message( __( 'Error while completing lesson.', 'learnpress' ) );
|
335 |
} elseif ( $results !== false ) {
|
336 |
+
|
337 |
+
$message = __( 'You have completed lesson', 'learnpress' );
|
338 |
+
$auto_next = LP()->settings->get( 'auto_redirect_next_lesson' );
|
339 |
+
$time = LP()->settings->get( 'auto_redirect_time' );
|
340 |
+
$time = absint( $time );
|
341 |
+
|
342 |
+
if ( $auto_next === 'yes' ) {
|
343 |
+
ob_start();
|
344 |
+
?>
|
345 |
+
<script type="text/javascript">
|
346 |
+
|
347 |
+
'use strict';
|
348 |
+
|
349 |
+
(function ($) {
|
350 |
+
|
351 |
+
$(document).ready(function () {
|
352 |
+
|
353 |
+
var $nextItem = $('.button-load-item', '#lp-navigation .nav-next'),
|
354 |
+
$message = $('.learn-press-auto-redirect-next-item'),
|
355 |
+
time = <?php echo esc_js( $time ); ?>;
|
356 |
+
|
357 |
+
if ($nextItem.length) {
|
358 |
+
|
359 |
+
time = !parseInt(time) ? 0 : parseInt(time);
|
360 |
+
|
361 |
+
if (!time) {
|
362 |
+
$nextItem.trigger('click');
|
363 |
+
}
|
364 |
+
else {
|
365 |
+
if ($message.length) {
|
366 |
+
|
367 |
+
$message.addClass('active');
|
368 |
+
|
369 |
+
var $count = $('.learn-press-countdown', $message),
|
370 |
+
interval = setInterval(function () {
|
371 |
+
|
372 |
+
if (time <= 1) {
|
373 |
+
clearInterval(interval);
|
374 |
+
$nextItem.trigger('click');
|
375 |
+
}
|
376 |
+
else {
|
377 |
+
$count.text(--time);
|
378 |
+
}
|
379 |
+
|
380 |
+
}, 1000);
|
381 |
+
|
382 |
+
$('.learnpress-dismiss-notice', $message).on('click', function () {
|
383 |
+
|
384 |
+
clearInterval(interval);
|
385 |
+
|
386 |
+
$message.hide(200, function () {
|
387 |
+
$(this).remove();
|
388 |
+
});
|
389 |
+
|
390 |
+
});
|
391 |
+
}
|
392 |
+
}
|
393 |
+
|
394 |
+
}
|
395 |
+
});
|
396 |
+
|
397 |
+
})(jQuery);
|
398 |
+
</script>
|
399 |
+
<?php
|
400 |
+
$message .= ob_get_contents();
|
401 |
+
ob_get_clean();
|
402 |
+
}
|
403 |
+
learn_press_add_message( $message );
|
404 |
+
|
405 |
}
|
406 |
+
|
407 |
} else {
|
408 |
do_action( 'learn_press_user_request_complete_item', $_REQUEST );
|
409 |
}
|
415 |
/**
|
416 |
* Request load item content
|
417 |
*/
|
418 |
+
public static function _request_load_item () {
|
419 |
global $wpdb;
|
420 |
$user = learn_press_get_current_user();
|
421 |
$item_id = learn_press_get_request( 'id' );
|
424 |
$can_view_item = $user->can( 'view-item', $item_id, $course_id );
|
425 |
if ( $can_view_item ) {
|
426 |
// Update user item if it's not updated
|
427 |
+
if ( ! $user->get_item_status( $item_id, $course_id ) ) {
|
428 |
$item_type = learn_press_get_request( 'type' );
|
429 |
+
if ( ! $item_type ) {
|
430 |
$item_type = get_post_type( $item_id );
|
431 |
}
|
432 |
if ( apply_filters( 'learn_press_insert_user_item_data', true, $item_id, $course_id ) && $can_view_item != 'preview' ) {
|
447 |
)
|
448 |
),
|
449 |
array(
|
450 |
+
'%d',
|
451 |
+
'%d',
|
452 |
+
'%s',
|
453 |
+
'%s',
|
454 |
+
'%s',
|
455 |
+
'%s',
|
456 |
+
'%d',
|
457 |
+
'%s'
|
458 |
)
|
459 |
);
|
460 |
print_r( $wpdb );
|
475 |
* Student take course
|
476 |
|