diff --git a/core/assets/plugins/bootstrap-datepicker/LICENSE.txt b/core/assets/plugins/bootstrap-datepicker/LICENSE.txt new file mode 100644 index 0000000000..7a4a3ea242 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css b/core/assets/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css new file mode 100644 index 0000000000..f1776d652c --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css @@ -0,0 +1,8 @@ +/*! + * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ +.datepicker-dropdown:after,.datepicker-dropdown:before{content:'';display:inline-block;border-top:0;position:absolute}.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0;padding:4px}.datepicker-dropdown:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.15);border-bottom-color:rgba(0,0,0,.2)}.datepicker-dropdown:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-bottom:before{top:-7px}.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid rgba(0,0,0,.15)}.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:none}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.day:hover,.datepicker table tr td.focused{background:#eee;cursor:pointer}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.highlighted{color:#000;background-color:#d9edf7;border-color:#85c5e5;border-radius:0}.datepicker table tr td.highlighted.focus,.datepicker table tr td.highlighted:focus{color:#000;background-color:#afd9ee;border-color:#298fc2}.datepicker table tr td.highlighted.active,.datepicker table tr td.highlighted:active,.datepicker table tr td.highlighted:hover,.open>.dropdown-toggle.datepicker table tr td.highlighted{color:#000;background-color:#afd9ee;border-color:#52addb}.datepicker table tr td.highlighted.active.focus,.datepicker table tr td.highlighted.active:focus,.datepicker table tr td.highlighted.active:hover,.datepicker table tr td.highlighted:active.focus,.datepicker table tr td.highlighted:active:focus,.datepicker table tr td.highlighted:active:hover,.open>.dropdown-toggle.datepicker table tr td.highlighted.focus,.open>.dropdown-toggle.datepicker table tr td.highlighted:focus,.open>.dropdown-toggle.datepicker table tr td.highlighted:hover{color:#000;background-color:#91cbe8;border-color:#298fc2}.datepicker table tr td.highlighted.active,.datepicker table tr td.highlighted:active,.open>.dropdown-toggle.datepicker table tr td.highlighted{background-image:none}.datepicker table tr td.highlighted.disabled.focus,.datepicker table tr td.highlighted.disabled:focus,.datepicker table tr td.highlighted.disabled:hover,.datepicker table tr td.highlighted[disabled].focus,.datepicker table tr td.highlighted[disabled]:focus,.datepicker table tr td.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.highlighted.focus,fieldset[disabled] .datepicker table tr td.highlighted:focus,fieldset[disabled] .datepicker table tr td.highlighted:hover{background-color:#d9edf7;border-color:#85c5e5}.datepicker table tr td.highlighted.focused{background:#afd9ee}.datepicker table tr td.highlighted.disabled,.datepicker table tr td.highlighted.disabled:active{background:#d9edf7;color:#999}.datepicker table tr td.today{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focus,.datepicker table tr td.today:focus{color:#000;background-color:#ffc966;border-color:#b37400}.datepicker table tr td.today.active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover,.open>.dropdown-toggle.datepicker table tr td.today{color:#000;background-color:#ffc966;border-color:#f59e00}.datepicker table tr td.today.active.focus,.datepicker table tr td.today.active:focus,.datepicker table tr td.today.active:hover,.datepicker table tr td.today:active.focus,.datepicker table tr td.today:active:focus,.datepicker table tr td.today:active:hover,.open>.dropdown-toggle.datepicker table tr td.today.focus,.open>.dropdown-toggle.datepicker table tr td.today:focus,.open>.dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffbc42;border-color:#b37400}.datepicker table tr td.today.active,.datepicker table tr td.today:active,.open>.dropdown-toggle.datepicker table tr td.today{background-image:none}.datepicker table tr td.today.disabled.focus,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today[disabled].focus,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today.focus,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.focused{background:#ffc966}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:active{background:#ffdb99;color:#999}.datepicker table tr td.range{color:#000;background-color:#eee;border-color:#bbb;border-radius:0}.datepicker table tr td.range.focus,.datepicker table tr td.range:focus{color:#000;background-color:#d5d5d5;border-color:#7c7c7c}.datepicker table tr td.range.active,.datepicker table tr td.range:active,.datepicker table tr td.range:hover,.open>.dropdown-toggle.datepicker table tr td.range{color:#000;background-color:#d5d5d5;border-color:#9d9d9d}.datepicker table tr td.range.active.focus,.datepicker table tr td.range.active:focus,.datepicker table tr td.range.active:hover,.datepicker table tr td.range:active.focus,.datepicker table tr td.range:active:focus,.datepicker table tr td.range:active:hover,.open>.dropdown-toggle.datepicker table tr td.range.focus,.open>.dropdown-toggle.datepicker table tr td.range:focus,.open>.dropdown-toggle.datepicker table tr td.range:hover{color:#000;background-color:#c3c3c3;border-color:#7c7c7c}.datepicker table tr td.range.active,.datepicker table tr td.range:active,.open>.dropdown-toggle.datepicker table tr td.range{background-image:none}.datepicker table tr td.range.disabled.focus,.datepicker table tr td.range.disabled:focus,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range[disabled].focus,.datepicker table tr td.range[disabled]:focus,.datepicker table tr td.range[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.focus,fieldset[disabled] .datepicker table tr td.range:focus,fieldset[disabled] .datepicker table tr td.range:hover{background-color:#eee;border-color:#bbb}.datepicker table tr td.range.focused{background:#d5d5d5}.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:active{background:#eee;color:#999}.datepicker table tr td.range.highlighted{color:#000;background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focus,.datepicker table tr td.range.highlighted:focus{color:#000;background-color:#c1d7e3;border-color:#4b88a6}.datepicker table tr td.range.highlighted.active,.datepicker table tr td.range.highlighted:active,.datepicker table tr td.range.highlighted:hover,.open>.dropdown-toggle.datepicker table tr td.range.highlighted{color:#000;background-color:#c1d7e3;border-color:#73a6c0}.datepicker table tr td.range.highlighted.active.focus,.datepicker table tr td.range.highlighted.active:focus,.datepicker table tr td.range.highlighted.active:hover,.datepicker table tr td.range.highlighted:active.focus,.datepicker table tr td.range.highlighted:active:focus,.datepicker table tr td.range.highlighted:active:hover,.open>.dropdown-toggle.datepicker table tr td.range.highlighted.focus,.open>.dropdown-toggle.datepicker table tr td.range.highlighted:focus,.open>.dropdown-toggle.datepicker table tr td.range.highlighted:hover{color:#000;background-color:#a8c8d8;border-color:#4b88a6}.datepicker table tr td.range.highlighted.active,.datepicker table tr td.range.highlighted:active,.open>.dropdown-toggle.datepicker table tr td.range.highlighted{background-image:none}.datepicker table tr td.range.highlighted.disabled.focus,.datepicker table tr td.range.highlighted.disabled:focus,.datepicker table tr td.range.highlighted.disabled:hover,.datepicker table tr td.range.highlighted[disabled].focus,.datepicker table tr td.range.highlighted[disabled]:focus,.datepicker table tr td.range.highlighted[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.highlighted.focus,fieldset[disabled] .datepicker table tr td.range.highlighted:focus,fieldset[disabled] .datepicker table tr td.range.highlighted:hover{background-color:#e4eef3;border-color:#9dc1d3}.datepicker table tr td.range.highlighted.focused{background:#c1d7e3}.datepicker table tr td.range.highlighted.disabled,.datepicker table tr td.range.highlighted.disabled:active{background:#e4eef3;color:#999}.datepicker table tr td.range.today{color:#000;background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.focus,.datepicker table tr td.range.today:focus{color:#000;background-color:#f4b747;border-color:#815608}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover,.open>.dropdown-toggle.datepicker table tr td.range.today{color:#000;background-color:#f4b747;border-color:#bf800c}.datepicker table tr td.range.today.active.focus,.datepicker table tr td.range.today.active:focus,.datepicker table tr td.range.today.active:hover,.datepicker table tr td.range.today:active.focus,.datepicker table tr td.range.today:active:focus,.datepicker table tr td.range.today:active:hover,.open>.dropdown-toggle.datepicker table tr td.range.today.focus,.open>.dropdown-toggle.datepicker table tr td.range.today:focus,.open>.dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f2aa25;border-color:#815608}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today:active,.open>.dropdown-toggle.datepicker table tr td.range.today{background-image:none}.datepicker table tr td.range.today.disabled.focus,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today[disabled].focus,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today.focus,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:active{background:#f7ca77;color:#999}.datepicker table tr td.active.active,.datepicker table tr td.active.highlighted.active,.datepicker table tr td.active.highlighted:active,.datepicker table tr td.active:active,.datepicker table tr td.selected.active,.datepicker table tr td.selected.highlighted.active,.datepicker table tr td.selected.highlighted:active,.datepicker table tr td.selected:active,.open>.dropdown-toggle.datepicker table tr td.active,.open>.dropdown-toggle.datepicker table tr td.active.highlighted,.open>.dropdown-toggle.datepicker table tr td.selected,.open>.dropdown-toggle.datepicker table tr td.selected.highlighted{background-image:none}.datepicker table tr td.selected,.datepicker table tr td.selected.highlighted{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.focus,.datepicker table tr td.selected.highlighted.focus,.datepicker table tr td.selected.highlighted:focus,.datepicker table tr td.selected:focus{color:#fff;background-color:grey;border-color:#161616}.datepicker table tr td.selected.active,.datepicker table tr td.selected.highlighted.active,.datepicker table tr td.selected.highlighted:active,.datepicker table tr td.selected.highlighted:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover,.open>.dropdown-toggle.datepicker table tr td.selected,.open>.dropdown-toggle.datepicker table tr td.selected.highlighted{color:#fff;background-color:grey;border-color:#373737}.datepicker table tr td.selected.active.focus,.datepicker table tr td.selected.active:focus,.datepicker table tr td.selected.active:hover,.datepicker table tr td.selected.highlighted.active.focus,.datepicker table tr td.selected.highlighted.active:focus,.datepicker table tr td.selected.highlighted.active:hover,.datepicker table tr td.selected.highlighted:active.focus,.datepicker table tr td.selected.highlighted:active:focus,.datepicker table tr td.selected.highlighted:active:hover,.datepicker table tr td.selected:active.focus,.datepicker table tr td.selected:active:focus,.datepicker table tr td.selected:active:hover,.open>.dropdown-toggle.datepicker table tr td.selected.focus,.open>.dropdown-toggle.datepicker table tr td.selected.highlighted.focus,.open>.dropdown-toggle.datepicker table tr td.selected.highlighted:focus,.open>.dropdown-toggle.datepicker table tr td.selected.highlighted:hover,.open>.dropdown-toggle.datepicker table tr td.selected:focus,.open>.dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#6e6e6e;border-color:#161616}.datepicker table tr td.selected.disabled.focus,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.highlighted.disabled.focus,.datepicker table tr td.selected.highlighted.disabled:focus,.datepicker table tr td.selected.highlighted.disabled:hover,.datepicker table tr td.selected.highlighted[disabled].focus,.datepicker table tr td.selected.highlighted[disabled]:focus,.datepicker table tr td.selected.highlighted[disabled]:hover,.datepicker table tr td.selected[disabled].focus,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted.focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.highlighted{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.focus,.datepicker table tr td.active.highlighted.focus,.datepicker table tr td.active.highlighted:focus,.datepicker table tr td.active:focus{color:#fff;background-color:#3071a9;border-color:#193c5a}.datepicker table tr td.active.active,.datepicker table tr td.active.highlighted.active,.datepicker table tr td.active.highlighted:active,.datepicker table tr td.active.highlighted:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:hover,.open>.dropdown-toggle.datepicker table tr td.active,.open>.dropdown-toggle.datepicker table tr td.active.highlighted{color:#fff;background-color:#3071a9;border-color:#285e8e}.datepicker table tr td.active.active.focus,.datepicker table tr td.active.active:focus,.datepicker table tr td.active.active:hover,.datepicker table tr td.active.highlighted.active.focus,.datepicker table tr td.active.highlighted.active:focus,.datepicker table tr td.active.highlighted.active:hover,.datepicker table tr td.active.highlighted:active.focus,.datepicker table tr td.active.highlighted:active:focus,.datepicker table tr td.active.highlighted:active:hover,.datepicker table tr td.active:active.focus,.datepicker table tr td.active:active:focus,.datepicker table tr td.active:active:hover,.open>.dropdown-toggle.datepicker table tr td.active.focus,.open>.dropdown-toggle.datepicker table tr td.active.highlighted.focus,.open>.dropdown-toggle.datepicker table tr td.active.highlighted:focus,.open>.dropdown-toggle.datepicker table tr td.active.highlighted:hover,.open>.dropdown-toggle.datepicker table tr td.active:focus,.open>.dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#285e8e;border-color:#193c5a}.datepicker table tr td.active.disabled.focus,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.highlighted.disabled.focus,.datepicker table tr td.active.highlighted.disabled:focus,.datepicker table tr td.active.highlighted.disabled:hover,.datepicker table tr td.active.highlighted[disabled].focus,.datepicker table tr td.active.highlighted[disabled]:focus,.datepicker table tr td.active.highlighted[disabled]:hover,.datepicker table tr td.active[disabled].focus,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active.focus,fieldset[disabled] .datepicker table tr td.active.highlighted.focus,fieldset[disabled] .datepicker table tr td.active.highlighted:focus,fieldset[disabled] .datepicker table tr td.active.highlighted:hover,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker .datepicker-switch,.datepicker .next,.datepicker .prev,.datepicker tfoot tr th,.input-group.date .input-group-addon{cursor:pointer}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover.focus,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.focus,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover.focus,.datepicker table tr td span.active:hover:focus{color:#fff;background-color:#3071a9;border-color:#193c5a}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:hover,.open>.dropdown-toggle.datepicker table tr td span.active,.open>.dropdown-toggle.datepicker table tr td span.active.disabled,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3071a9;border-color:#285e8e}.datepicker table tr td span.active.active.focus,.datepicker table tr td span.active.active:focus,.datepicker table tr td span.active.active:hover,.datepicker table tr td span.active.disabled.active.focus,.datepicker table tr td span.active.disabled.active:focus,.datepicker table tr td span.active.disabled.active:hover,.datepicker table tr td span.active.disabled:active.focus,.datepicker table tr td span.active.disabled:active:focus,.datepicker table tr td span.active.disabled:active:hover,.datepicker table tr td span.active.disabled:hover.active.focus,.datepicker table tr td span.active.disabled:hover.active:focus,.datepicker table tr td span.active.disabled:hover.active:hover,.datepicker table tr td span.active.disabled:hover:active.focus,.datepicker table tr td span.active.disabled:hover:active:focus,.datepicker table tr td span.active.disabled:hover:active:hover,.datepicker table tr td span.active:active.focus,.datepicker table tr td span.active:active:focus,.datepicker table tr td span.active:active:hover,.datepicker table tr td span.active:hover.active.focus,.datepicker table tr td span.active:hover.active:focus,.datepicker table tr td span.active:hover.active:hover,.datepicker table tr td span.active:hover:active.focus,.datepicker table tr td span.active:hover:active:focus,.datepicker table tr td span.active:hover:active:hover,.open>.dropdown-toggle.datepicker table tr td span.active.disabled.focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover.focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover:focus,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover:hover,.open>.dropdown-toggle.datepicker table tr td span.active.focus,.open>.dropdown-toggle.datepicker table tr td span.active:focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover.focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover:focus,.open>.dropdown-toggle.datepicker table tr td span.active:hover:hover{color:#fff;background-color:#285e8e;border-color:#193c5a}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open>.dropdown-toggle.datepicker table tr td span.active,.open>.dropdown-toggle.datepicker table tr td span.active.disabled,.open>.dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open>.dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled.disabled.focus,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled.focus,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled.focus,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled].focus,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled].focus,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled.focus,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled].focus,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled].focus,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active.disabled.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active.focus,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.focus,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker .datepicker-switch:hover,.datepicker .next:hover,.datepicker .prev:hover,.datepicker tfoot tr th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px} \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js b/core/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js new file mode 100644 index 0000000000..28158d12ff --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js @@ -0,0 +1,8 @@ +/*! + * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker) + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a,b){function c(){return new Date(Date.UTC.apply(Date,arguments))}function d(){var a=new Date;return c(a.getFullYear(),a.getMonth(),a.getDate())}function e(a,b){return a.getUTCFullYear()===b.getUTCFullYear()&&a.getUTCMonth()===b.getUTCMonth()&&a.getUTCDate()===b.getUTCDate()}function f(a){return function(){return this[a].apply(this,arguments)}}function g(a){return a&&!isNaN(a.getTime())}function h(b,c){function d(a,b){return b.toLowerCase()}var e,f=a(b).data(),g={},h=new RegExp("^"+c.toLowerCase()+"([A-Z])");c=new RegExp("^"+c.toLowerCase());for(var i in f)c.test(i)&&(e=i.replace(h,d),g[e]=f[i]);return g}function i(b){var c={};if(q[b]||(b=b.split("-")[0],q[b])){var d=q[b];return a.each(p,function(a,b){b in d&&(c[b]=d[b])}),c}}var j=function(){var b={get:function(a){return this.slice(a)[0]},contains:function(a){for(var b=a&&a.valueOf(),c=0,d=this.length;d>c;c++)if(this[c].valueOf()===b)return c;return-1},remove:function(a){this.splice(a,1)},replace:function(b){b&&(a.isArray(b)||(b=[b]),this.clear(),this.push.apply(this,b))},clear:function(){this.length=0},copy:function(){var a=new j;return a.replace(this),a}};return function(){var c=[];return c.push.apply(c,arguments),a.extend(c,b),c}}(),k=function(b,c){a(b).data("datepicker",this),this._process_options(c),this.dates=new j,this.viewDate=this.o.defaultViewDate,this.focusDate=null,this.element=a(b),this.isInline=!1,this.isInput=this.element.is("input"),this.component=this.element.hasClass("date")?this.element.find(".add-on, .input-group-addon, .btn"):!1,this.hasInput=this.component&&this.element.find("input").length,this.component&&0===this.component.length&&(this.component=!1),this.picker=a(r.template),this._buildEvents(),this._attachEvents(),this.isInline?this.picker.addClass("datepicker-inline").appendTo(this.element):this.picker.addClass("datepicker-dropdown dropdown-menu"),this.o.rtl&&this.picker.addClass("datepicker-rtl"),this.viewMode=this.o.startView,this.o.calendarWeeks&&this.picker.find("thead .datepicker-title, tfoot .today, tfoot .clear").attr("colspan",function(a,b){return parseInt(b)+1}),this._allow_update=!1,this.setStartDate(this._o.startDate),this.setEndDate(this._o.endDate),this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled),this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted),this.setDatesDisabled(this.o.datesDisabled),this.fillDow(),this.fillMonths(),this._allow_update=!0,this.update(),this.showMode(),this.isInline&&this.show()};k.prototype={constructor:k,_process_options:function(b){this._o=a.extend({},this._o,b);var e=this.o=a.extend({},this._o),f=e.language;switch(q[f]||(f=f.split("-")[0],q[f]||(f=o.language)),e.language=f,e.startView){case 2:case"decade":e.startView=2;break;case 1:case"year":e.startView=1;break;default:e.startView=0}switch(e.minViewMode){case 1:case"months":e.minViewMode=1;break;case 2:case"years":e.minViewMode=2;break;default:e.minViewMode=0}switch(e.maxViewMode){case 0:case"days":e.maxViewMode=0;break;case 1:case"months":e.maxViewMode=1;break;default:e.maxViewMode=2}e.startView=Math.min(e.startView,e.maxViewMode),e.startView=Math.max(e.startView,e.minViewMode),e.multidate!==!0&&(e.multidate=Number(e.multidate)||!1,e.multidate!==!1&&(e.multidate=Math.max(0,e.multidate))),e.multidateSeparator=String(e.multidateSeparator),e.weekStart%=7,e.weekEnd=(e.weekStart+6)%7;var g=r.parseFormat(e.format);if(e.startDate!==-(1/0)&&(e.startDate?e.startDate instanceof Date?e.startDate=this._local_to_utc(this._zero_time(e.startDate)):e.startDate=r.parseDate(e.startDate,g,e.language):e.startDate=-(1/0)),e.endDate!==1/0&&(e.endDate?e.endDate instanceof Date?e.endDate=this._local_to_utc(this._zero_time(e.endDate)):e.endDate=r.parseDate(e.endDate,g,e.language):e.endDate=1/0),e.daysOfWeekDisabled=e.daysOfWeekDisabled||[],a.isArray(e.daysOfWeekDisabled)||(e.daysOfWeekDisabled=e.daysOfWeekDisabled.split(/[,\s]*/)),e.daysOfWeekDisabled=a.map(e.daysOfWeekDisabled,function(a){return parseInt(a,10)}),e.daysOfWeekHighlighted=e.daysOfWeekHighlighted||[],a.isArray(e.daysOfWeekHighlighted)||(e.daysOfWeekHighlighted=e.daysOfWeekHighlighted.split(/[,\s]*/)),e.daysOfWeekHighlighted=a.map(e.daysOfWeekHighlighted,function(a){return parseInt(a,10)}),e.datesDisabled=e.datesDisabled||[],!a.isArray(e.datesDisabled)){var h=[];h.push(r.parseDate(e.datesDisabled,g,e.language)),e.datesDisabled=h}e.datesDisabled=a.map(e.datesDisabled,function(a){return r.parseDate(a,g,e.language)});var i=String(e.orientation).toLowerCase().split(/\s+/g),j=e.orientation.toLowerCase();if(i=a.grep(i,function(a){return/^auto|left|right|top|bottom$/.test(a)}),e.orientation={x:"auto",y:"auto"},j&&"auto"!==j)if(1===i.length)switch(i[0]){case"top":case"bottom":e.orientation.y=i[0];break;case"left":case"right":e.orientation.x=i[0]}else j=a.grep(i,function(a){return/^left|right$/.test(a)}),e.orientation.x=j[0]||"auto",j=a.grep(i,function(a){return/^top|bottom$/.test(a)}),e.orientation.y=j[0]||"auto";else;if(e.defaultViewDate){var k=e.defaultViewDate.year||(new Date).getFullYear(),l=e.defaultViewDate.month||0,m=e.defaultViewDate.day||1;e.defaultViewDate=c(k,l,m)}else e.defaultViewDate=d()},_events:[],_secondaryEvents:[],_applyEvents:function(a){for(var c,d,e,f=0;ff?(this.picker.addClass("datepicker-orient-right"),n+=m-b):this.picker.addClass("datepicker-orient-left");var p,q=this.o.orientation.y;if("auto"===q&&(p=-g+o-c,q=0>p?"bottom":"top"),this.picker.addClass("datepicker-orient-"+q),"top"===q?o-=c+parseInt(this.picker.css("padding-top")):o+=l,this.o.rtl){var r=f-(n+m);this.picker.css({top:o,right:r,zIndex:j})}else this.picker.css({top:o,left:n,zIndex:j});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var b=this.dates.copy(),c=[],d=!1;return arguments.length?(a.each(arguments,a.proxy(function(a,b){b instanceof Date&&(b=this._local_to_utc(b)),c.push(b)},this)),d=!0):(c=this.isInput?this.element.val():this.element.data("date")||this.element.find("input").val(),c=c&&this.o.multidate?c.split(this.o.multidateSeparator):[c],delete this.element.data().date),c=a.map(c,a.proxy(function(a){return r.parseDate(a,this.o.format,this.o.language)},this)),c=a.grep(c,a.proxy(function(a){return!this.dateWithinRange(a)||!a},this),!0),this.dates.replace(c),this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate,d?this.setValue():c.length&&String(b)!==String(this.dates)&&this._trigger("changeDate"),!this.dates.length&&b.length&&this._trigger("clearDate"),this.fill(),this.element.change(),this},fillDow:function(){var a=this.o.weekStart,b="";for(this.o.calendarWeeks&&(this.picker.find(".datepicker-days .datepicker-switch").attr("colspan",function(a,b){return parseInt(b)+1}),b+=' ');a'+q[this.o.language].daysMin[a++%7]+"";b+="",this.picker.find(".datepicker-days thead").append(b)},fillMonths:function(){for(var a="",b=0;12>b;)a+=''+q[this.o.language].monthsShort[b++]+"";this.picker.find(".datepicker-months td").html(a)},setRange:function(b){b&&b.length?this.range=a.map(b,function(a){return a.valueOf()}):delete this.range,this.fill()},getClassNames:function(b){var c=[],d=this.viewDate.getUTCFullYear(),e=this.viewDate.getUTCMonth(),f=new Date;return b.getUTCFullYear()d||b.getUTCFullYear()===d&&b.getUTCMonth()>e)&&c.push("new"),this.focusDate&&b.valueOf()===this.focusDate.valueOf()&&c.push("focused"),this.o.todayHighlight&&b.getUTCFullYear()===f.getFullYear()&&b.getUTCMonth()===f.getMonth()&&b.getUTCDate()===f.getDate()&&c.push("today"),-1!==this.dates.contains(b)&&c.push("active"),(!this.dateWithinRange(b)||this.dateIsDisabled(b))&&c.push("disabled"),-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekHighlighted)&&c.push("highlighted"),this.range&&(b>this.range[0]&&b"),this.o.calendarWeeks)){var v=new Date(+o+(this.o.weekStart-o.getUTCDay()-7)%7*864e5),w=new Date(Number(v)+(11-v.getUTCDay())%7*864e5),x=new Date(Number(x=c(w.getUTCFullYear(),0,1))+(11-x.getUTCDay())%7*864e5),y=(w-x)/864e5/7+1;u.push(''+y+"")}if(t=this.getClassNames(o),t.push("day"),this.o.beforeShowDay!==a.noop){var z=this.o.beforeShowDay(this._utc_to_local(o));z===b?z={}:"boolean"==typeof z?z={enabled:z}:"string"==typeof z&&(z={classes:z}),z.enabled===!1&&t.push("disabled"),z.classes&&(t=t.concat(z.classes.split(/\s+/))),z.tooltip&&(d=z.tooltip)}t=a.unique(t),u.push('"+o.getUTCDate()+""),d=null,o.getUTCDay()===this.o.weekEnd&&u.push(""),o.setUTCDate(o.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").empty().append(u.join(""));var A=q[this.o.language].monthsTitle||q.en.monthsTitle||"Months",B=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?A:f).end().find("span").removeClass("active");if(a.each(this.dates,function(a,b){b.getUTCFullYear()===f&&B.eq(b.getUTCMonth()).addClass("active")}),(h>f||f>j)&&B.addClass("disabled"),f===h&&B.slice(0,i).addClass("disabled"),f===j&&B.slice(k+1).addClass("disabled"),this.o.beforeShowMonth!==a.noop){var C=this;a.each(B,function(b,c){if(!a(c).hasClass("disabled")){var d=new Date(f,b,1),e=C.o.beforeShowMonth(d);e===!1&&a(c).addClass("disabled")}})}u="",f=10*parseInt(f/10,10);var D=this.picker.find(".datepicker-years").find(".datepicker-switch").text(f+"-"+(f+9)).end().find("td");f-=1;for(var E,F=a.map(this.dates,function(a){return a.getUTCFullYear()}),G=-1;11>G;G++){if(E=["year"],d=null,-1===G?E.push("old"):10===G&&E.push("new"),-1!==a.inArray(f,F)&&E.push("active"),(h>f||f>j)&&E.push("disabled"),this.o.beforeShowYear!==a.noop){var H=this.o.beforeShowYear(new Date(f,0,1));H===b?H={}:"boolean"==typeof H?H={enabled:H}:"string"==typeof H&&(H={classes:H}),H.enabled===!1&&E.push("disabled"),H.classes&&(E=E.concat(H.classes.split(/\s+/))),H.tooltip&&(d=H.tooltip)}u+='"+f+"",f+=1}D.html(u)}},updateNavArrows:function(){if(this._allow_update){var a=new Date(this.viewDate),b=a.getUTCFullYear(),c=a.getUTCMonth();switch(this.viewMode){case 0:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()&&c<=this.o.startDate.getUTCMonth()?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()&&c>=this.o.endDate.getUTCMonth()?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"});break;case 1:case 2:this.o.startDate!==-(1/0)&&b<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".prev").css({visibility:"hidden"}):this.picker.find(".prev").css({visibility:"visible"}),this.o.endDate!==1/0&&b>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2?this.picker.find(".next").css({visibility:"hidden"}):this.picker.find(".next").css({visibility:"visible"})}}},click:function(b){b.preventDefault(),b.stopPropagation();var e,f,g,h=a(b.target).closest("span, td, th");if(1===h.length)switch(h[0].nodeName.toLowerCase()){case"th":switch(h[0].className){case"datepicker-switch":this.showMode(1);break;case"prev":case"next":var i=r.modes[this.viewMode].navStep*("prev"===h[0].className?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveMonth(this.viewDate,i),this._trigger("changeMonth",this.viewDate);break;case 1:case 2:this.viewDate=this.moveYear(this.viewDate,i),1===this.viewMode&&this._trigger("changeYear",this.viewDate)}this.fill();break;case"today":this.showMode(-2);var j="linked"===this.o.todayBtn?null:"view";this._setDate(d(),j);break;case"clear":this.clearDates()}break;case"span":h.hasClass("disabled")||(this.viewDate.setUTCDate(1),h.hasClass("month")?(g=1,f=h.parent().find("span").index(h),e=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(f),this._trigger("changeMonth",this.viewDate),1===this.o.minViewMode?(this._setDate(c(e,f,g)),this.showMode()):this.showMode(-1)):(g=1,f=0,e=parseInt(h.text(),10)||0,this.viewDate.setUTCFullYear(e),this._trigger("changeYear",this.viewDate),2===this.o.minViewMode&&this._setDate(c(e,f,g)),this.showMode(-1)),this.fill());break;case"td":h.hasClass("day")&&!h.hasClass("disabled")&&(g=parseInt(h.text(),10)||1,e=this.viewDate.getUTCFullYear(),f=this.viewDate.getUTCMonth(),h.hasClass("old")?0===f?(f=11,e-=1):f-=1:h.hasClass("new")&&(11===f?(f=0,e+=1):f+=1),this._setDate(c(e,f,g)))}this.picker.is(":visible")&&this._focused_from&&a(this._focused_from).focus(),delete this._focused_from},_toggle_multidate:function(a){var b=this.dates.contains(a);if(a||this.dates.clear(),-1!==b?(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(b):this.o.multidate===!1?(this.dates.clear(),this.dates.push(a)):this.dates.push(a),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(a,b){b&&"date"!==b||this._toggle_multidate(a&&new Date(a)),b&&"view"!==b||(this.viewDate=a&&new Date(a)),this.fill(),this.setValue(),b&&"view"===b||this._trigger("changeDate");var c;this.isInput?c=this.element:this.component&&(c=this.element.find("input")),c&&c.change(),!this.o.autoclose||b&&"date"!==b||this.hide()},moveDay:function(a,b){var c=new Date(a);return c.setUTCDate(a.getUTCDate()+b),c},moveWeek:function(a,b){return this.moveDay(a,7*b)},moveMonth:function(a,b){if(!g(a))return this.o.defaultViewDate;if(!b)return a;var c,d,e=new Date(a.valueOf()),f=e.getUTCDate(),h=e.getUTCMonth(),i=Math.abs(b);if(b=b>0?1:-1,1===i)d=-1===b?function(){return e.getUTCMonth()===h}:function(){return e.getUTCMonth()!==c},c=h+b,e.setUTCMonth(c),(0>c||c>11)&&(c=(c+12)%12);else{for(var j=0;i>j;j++)e=this.moveMonth(e,b);c=e.getUTCMonth(),e.setUTCDate(f),d=function(){return c!==e.getUTCMonth()}}for(;d();)e.setUTCDate(--f),e.setUTCMonth(c);return e},moveYear:function(a,b){return this.moveMonth(a,12*b)},moveAvailableDate:function(a,b,c){do{if(a=this[c](a,b),!this.dateWithinRange(a))return!1;c="moveDay"}while(this.dateIsDisabled(a));return a},weekOfDateIsDisabled:function(b){return-1!==a.inArray(b.getUTCDay(),this.o.daysOfWeekDisabled)},dateIsDisabled:function(b){return this.weekOfDateIsDisabled(b)||a.grep(this.o.datesDisabled,function(a){return e(b,a)}).length>0},dateWithinRange:function(a){return a>=this.o.startDate&&a<=this.o.endDate},keydown:function(a){if(!this.picker.is(":visible"))return void((40===a.keyCode||27===a.keyCode)&&(this.show(),a.stopPropagation()));var b,c,d=!1,e=this.focusDate||this.viewDate;switch(a.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),a.preventDefault(),a.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;b=37===a.keyCode||38===a.keyCode?-1:1,a.ctrlKey?(c=this.moveAvailableDate(e,b,"moveYear"),c&&this._trigger("changeYear",this.viewDate)):a.shiftKey?(c=this.moveAvailableDate(e,b,"moveMonth"),c&&this._trigger("changeMonth",this.viewDate)):37===a.keyCode||39===a.keyCode?c=this.moveAvailableDate(e,b,"moveDay"):this.weekOfDateIsDisabled(e)||(c=this.moveAvailableDate(e,b,"moveWeek")),c&&(this.focusDate=this.viewDate=c,this.setValue(),this.fill(),a.preventDefault());break;case 13:if(!this.o.forceParse)break;e=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(e),d=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(a.preventDefault(),a.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}if(d){this.dates.length?this._trigger("changeDate"):this._trigger("clearDate");var f;this.isInput?f=this.element:this.component&&(f=this.element.find("input")),f&&f.change()}},showMode:function(a){a&&(this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+a))),this.picker.children("div").hide().filter(".datepicker-"+r.modes[this.viewMode].clsName).show(),this.updateNavArrows()}};var l=function(b,c){a(b).data("datepicker",this),this.element=a(b),this.inputs=a.map(c.inputs,function(a){return a.jquery?a[0]:a}),delete c.inputs,n.call(a(this.inputs),c).on("changeDate",a.proxy(this.dateUpdated,this)),this.pickers=a.map(this.inputs,function(b){return a(b).data("datepicker")}),this.updateDates()};l.prototype={updateDates:function(){this.dates=a.map(this.pickers,function(a){return a.getUTCDate()}),this.updateRanges()},updateRanges:function(){var b=a.map(this.dates,function(a){return a.valueOf()});a.each(this.pickers,function(a,c){c.setRange(b)})},dateUpdated:function(b){if(!this.updating){this.updating=!0;var c=a(b.target).data("datepicker");if("undefined"!=typeof c){var d=c.getUTCDate(),e=a.inArray(b.target,this.inputs),f=e-1,g=e+1,h=this.inputs.length;if(-1!==e){if(a.each(this.pickers,function(a,b){b.getUTCDate()||b.setUTCDate(d)}),d=0&&dthis.dates[g])for(;h>g&&d>this.dates[g];)this.pickers[g++].setUTCDate(d);this.updateDates(),delete this.updating}}}},remove:function(){a.map(this.pickers,function(a){a.remove()}),delete this.element.data().datepicker}};var m=a.fn.datepicker,n=function(c){var d=Array.apply(null,arguments);d.shift();var e;if(this.each(function(){var b=a(this),f=b.data("datepicker"),g="object"==typeof c&&c;if(!f){var j=h(this,"date"),m=a.extend({},o,j,g),n=i(m.language),p=a.extend({},o,n,j,g);b.hasClass("input-daterange")||p.inputs?(a.extend(p,{inputs:p.inputs||b.find("input").toArray()}),f=new l(this,p)):f=new k(this,p),b.data("datepicker",f)}"string"==typeof c&&"function"==typeof f[c]&&(e=f[c].apply(f,d))}),e===b||e instanceof k||e instanceof l)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+c+" function)");return e};a.fn.datepicker=n;var o=a.fn.datepicker.defaults={autoclose:!1,beforeShowDay:a.noop,beforeShowMonth:a.noop,beforeShowYear:a.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:2,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-(1/0),startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:""},p=a.fn.datepicker.locale_opts=["format","rtl","weekStart"];a.fn.datepicker.Constructor=k;var q=a.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},r={modes:[{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(a){return a%4===0&&a%100!==0||a%400===0},getDaysInMonth:function(a,b){return[31,r.isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\[\u3400-\u9fff-`{-~\t\n\r]+/g,parseFormat:function(a){if("function"==typeof a.toValue&&"function"==typeof a.toDisplay)return a;var b=a.replace(this.validParts,"\x00").split("\x00"),c=a.match(this.validParts);if(!b||!b.length||!c||0===c.length)throw new Error("Invalid date format.");return{separators:b,parts:c}},parseDate:function(e,f,g){function h(){var a=this.slice(0,o[l].length),b=o[l].slice(0,a.length);return a.toLowerCase()===b.toLowerCase()}if(!e)return b;if(e instanceof Date)return e;if("string"==typeof f&&(f=r.parseFormat(f)),f.toValue)return f.toValue(e,f,g);var i,j,l,m,n=/([\-+]\d+)([dmwy])/,o=e.match(/([\-+]\d+)([dmwy])/g),p={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"};if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(e)){for(e=new Date,l=0;lb;)b+=12;for(b%=12,a.setUTCMonth(b);a.getUTCMonth()!==b;)a.setUTCDate(a.getUTCDate()-1);return a},d:function(a,b){return a.setUTCDate(b)}};w.M=w.MM=w.mm=w.m,w.dd=w.d,e=d();var x=f.parts.slice();if(o.length!==x.length&&(x=a(x).filter(function(b,c){return-1!==a.inArray(c,v)}).toArray()),o.length===x.length){var y;for(l=0,y=x.length;y>l;l++){if(s=parseInt(o[l],10),i=x[l],isNaN(s))switch(i){case"MM":t=a(q[g].months).filter(h),s=a.inArray(t[0],q[g].months)+1;break;case"M":t=a(q[g].monthsShort).filter(h),s=a.inArray(t[0],q[g].monthsShort)+1}u[i]=s}var z,A;for(l=0;l=g;g++)f.length&&b.push(f.shift()),b.push(e[c.parts[g]]);return b.join("")},headTemplate:'«»',contTemplate:'',footTemplate:''};r.template='
'+r.headTemplate+""+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+'
'+r.headTemplate+r.contTemplate+r.footTemplate+"
",a.fn.datepicker.DPGlobal=r,a.fn.datepicker.noConflict=function(){return a.fn.datepicker=m,this},a.fn.datepicker.version="1.5.1",a(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(b){var c=a(this);c.data("datepicker")||(b.preventDefault(),n.call(c,"show"))}),a(function(){n.call(a('[data-provide="datepicker-inline"]'))})}); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js new file mode 100644 index 0000000000..ece41af725 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js new file mode 100644 index 0000000000..56bedf8416 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js new file mode 100644 index 0000000000..28e8b22dcf --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js new file mode 100644 index 0000000000..cfb06fde79 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js new file mode 100644 index 0000000000..ac107894c4 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js new file mode 100644 index 0000000000..8b711e1bec --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",weekStart:1,format:"dd.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js new file mode 100644 index 0000000000..f85ea031dd --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js new file mode 100644 index 0000000000..53935bcda6 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.da={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"I Dag",clear:"Nulstil"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js new file mode 100644 index 0000000000..1b5d6a2474 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js new file mode 100644 index 0000000000..046e9eb5ef --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js new file mode 100644 index 0000000000..2966f5414e --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js new file mode 100644 index 0000000000..736db021ae --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js new file mode 100644 index 0000000000..f3cef5d2b9 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js new file mode 100644 index 0000000000..34cd9c60e9 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js new file mode 100644 index 0000000000..af278540b7 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js new file mode 100644 index 0000000000..8575237a07 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fa={days:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js new file mode 100644 index 0000000000..239dfb796c --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js new file mode 100644 index 0000000000..fa24e3a127 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js new file mode 100644 index 0000000000..1c6bcdcbfc --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js new file mode 100644 index 0000000000..244cfba800 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js new file mode 100644 index 0000000000..3d92606b3b --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js new file mode 100644 index 0000000000..191cb453a0 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js new file mode 100644 index 0000000000..8b34bce0fd --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js new file mode 100644 index 0000000000..f9decf9a2c --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js new file mode 100644 index 0000000000..819fb9e5ea --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կրկ","Երկ","Երք","Չրք","Հնգ","Ուր","Շբթ"],daysMin:["Կրկ","Երկ","Երք","Չրք","Հնգ","Ուր","Շբթ"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հուն","Փետ","Մար","Ապր","Մայ","Հնս","Հլս","Օգս","Սեպ","Հոկ","Նմբ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js new file mode 100644 index 0000000000..7c3220a643 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js new file mode 100644 index 0000000000..f49bd18cc2 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js new file mode 100644 index 0000000000..7e1adbb95d --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js new file mode 100644 index 0000000000..cc30766ffa --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js new file mode 100644 index 0000000000..e321f04ffe --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js new file mode 100644 index 0000000000..db247aada0 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომები","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js new file mode 100644 index 0000000000..cc41e1ac50 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍","អាទិត្យ"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js new file mode 100644 index 0000000000..0b1c123a9f --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мамыр","Мау","Шлд","Тмз","Қыр","Қзн","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js new file mode 100644 index 0000000000..282470c9c2 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"YYYY-MM-DD",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js new file mode 100644 index 0000000000..fbc3ddf9e7 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js new file mode 100644 index 0000000000..da78ea85f3 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js new file mode 100644 index 0000000000..5383880cce --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],today:"Šodien",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js new file mode 100644 index 0000000000..c65a891646 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js new file mode 100644 index 0000000000..46423f7581 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js new file mode 100644 index 0000000000..6ebaec9d86 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js new file mode 100644 index 0000000000..47efafdc2f --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nb.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nb.min.js new file mode 100644 index 0000000000..3903b0564b --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nb.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.nb={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I Dag",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js new file mode 100644 index 0000000000..85d3146df1 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js new file mode 100644 index 0000000000..af977b71ea --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js new file mode 100644 index 0000000000..a606e7ef09 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.no={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I dag",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js new file mode 100644 index 0000000000..7cea53a33c --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pl={days:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],daysShort:["niedz.","pon.","wt.","śr.","czw.","piąt.","sob."],daysMin:["ndz.","pn.","wt.","śr.","czw.","pt.","sob."],months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],monthsShort:["sty.","lut.","mar.","kwi.","maj","cze.","lip.","sie.","wrz.","paź.","lis.","gru."],today:"dzisiaj",weekStart:1,clear:"wyczyść",format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js new file mode 100644 index 0000000000..2d3f8afdac --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js new file mode 100644 index 0000000000..e2b4e64d77 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js new file mode 100644 index 0000000000..731b21b85a --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js new file mode 100644 index 0000000000..b0285f4bb4 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js new file mode 100644 index 0000000000..050f1ca44c --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js new file mode 100644 index 0000000000..1bcbcb7883 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js new file mode 100644 index 0000000000..79a9267fd5 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js new file mode 100644 index 0000000000..d54d20b139 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js new file mode 100644 index 0000000000..40f3e1f576 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],today:"Sot"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js new file mode 100644 index 0000000000..c6b7001ace --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js new file mode 100644 index 0000000000..4e46dbf64b --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js new file mode 100644 index 0000000000..f088f82fe4 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sv={days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],daysShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],daysMin:["Sö","Må","Ti","On","To","Fr","Lö"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js new file mode 100644 index 0000000000..454d3053cb --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js new file mode 100644 index 0000000000..1e398ba8bc --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js new file mode 100644 index 0000000000..7889b1135d --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js new file mode 100644 index 0000000000..41b02e6b28 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js new file mode 100644 index 0000000000..3311d23f86 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js new file mode 100644 index 0000000000..1279176404 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",clear:"清除",format:"yyyy年mm月dd日",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); \ No newline at end of file diff --git a/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js new file mode 100644 index 0000000000..e309c1d7d6 --- /dev/null +++ b/core/assets/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js @@ -0,0 +1 @@ +!function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery); \ No newline at end of file diff --git a/core/classes/Queries.php b/core/classes/Queries.php index f41c8d8078..48ea8e7081 100644 --- a/core/classes/Queries.php +++ b/core/classes/Queries.php @@ -123,11 +123,14 @@ public function dbInitialise(){ $data = $this->_db->createTable("templates", " `id` int(11) NOT NULL AUTO_INCREMENT, `enabled` tinyint(1) NOT NULL DEFAULT '0', `name` varchar(64) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); $data = $this->_db->createTable("themes", " `id` int(11) NOT NULL AUTO_INCREMENT, `enabled` tinyint(1) NOT NULL DEFAULT '0', `name` varchar(64) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); $data = $this->_db->createTable("topics", " `id` int(11) NOT NULL AUTO_INCREMENT, `forum_id` int(11) NOT NULL, `topic_title` varchar(150) NOT NULL, `topic_creator` int(11) NOT NULL, `topic_last_user` int(11) NOT NULL, `topic_date` int(11) NOT NULL, `topic_reply_date` int(11) NOT NULL, `topic_views` int(11) NOT NULL DEFAULT '0', `locked` tinyint(1) NOT NULL DEFAULT '0', `sticky` tinyint(1) NOT NULL DEFAULT '0', `label` int(11) DEFAULT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); - $data = $this->_db->createTable("users", " `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(255) NOT NULL, `pass_method` varchar(12) NOT NULL DEFAULT 'default', `mcname` varchar(20) NOT NULL, `uuid` varchar(32) NOT NULL, `joined` int(11) NOT NULL, `group_id` int(11) NOT NULL, `email` varchar(64) NOT NULL, `isbanned` tinyint(4) NOT NULL DEFAULT '0', `lastip` varchar(45) NOT NULL, `active` tinyint(4) NOT NULL DEFAULT '0', `signature` varchar(1024) DEFAULT NULL, `reputation` int(11) NOT NULL DEFAULT '0', `reset_code` varchar(60) DEFAULT NULL, `has_avatar` tinyint(4) NOT NULL DEFAULT '0', `gravatar` tinyint(1) NOT NULL DEFAULT '0', `last_online` int(11) DEFAULT NULL, `last_username_update` int(11) DEFAULT '0', PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); + $data = $this->_db->createTable("users", " `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(20) NOT NULL, `password` varchar(255) NOT NULL, `pass_method` varchar(12) NOT NULL DEFAULT 'default', `mcname` varchar(20) NOT NULL, `uuid` varchar(32) NOT NULL, `joined` int(11) NOT NULL, `group_id` int(11) NOT NULL, `email` varchar(64) NOT NULL, `isbanned` tinyint(4) NOT NULL DEFAULT '0', `lastip` varchar(45) NOT NULL, `active` tinyint(4) NOT NULL DEFAULT '0', `signature` varchar(1024) DEFAULT NULL, `reputation` int(11) NOT NULL DEFAULT '0', `reset_code` varchar(60) DEFAULT NULL, `has_avatar` tinyint(4) NOT NULL DEFAULT '0', `gravatar` tinyint(1) NOT NULL DEFAULT '0', `last_online` int(11) DEFAULT NULL, `last_username_update` int(11) DEFAULT '0', `user_title` varchar(64) DEFAULT NULL, `birthday` date DEFAULT NULL, `location` varchar(128) DEFAULT NULL, `display_age` tinyint(1) NOT NULL DEFAULT '1', PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); $data = $this->_db->createTable("users_admin_session", " `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `hash` varchar(64) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); $data = $this->_db->createTable("users_session", " `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `hash` varchar(64) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); + $data = $this->_db->createTable("user_profile_wall_posts", " `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `author_id` int(11) NOT NULL, `time` int(11) NOT NULL, `content` mediumtext NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); + $data = $this->_db->createTable("user_profile_wall_posts_likes", " `id` int(11) NOT NULL AUTO_INCREMENT, `post_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); + $data = $this->_db->createTable("user_profile_wall_posts_replies", " `id` int(11) NOT NULL AUTO_INCREMENT, `post_id` int(11) NOT NULL, `author_id` int(11) NOT NULL, `time` int(11) NOT NULL, `content` mediumtext NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); $data = $this->_db->createTable("uuid_cache", " `id` int(11) NOT NULL AUTO_INCREMENT, `mcname` varchar(20) NOT NULL, `uuid` varchar(64) NOT NULL, PRIMARY KEY (`id`)", "ENGINE=InnoDB DEFAULT CHARSET=latin1"); - return true; + return true; } } } \ No newline at end of file diff --git a/core/classes/User.php b/core/classes/User.php index cf5ab62d4e..e697ba9fcd 100644 --- a/core/classes/User.php +++ b/core/classes/User.php @@ -110,13 +110,23 @@ public function isfriend($user1, $user2) { return $returnbool; } - // List a user's friends + // List a user's friends/following public function listFriends($user_id) { $data = $this->_db->get('friends', array('user_id', '=', $user_id)); if($data->count()) { return $data->results(); } else { - return false; + return false; + } + } + + // List who followers the user + public function listFollowers($user_id) { + $data = $this->_db->get('friends', array('friend_id', '=', $user_id)); + if($data->count()) { + return $data->results(); + } else { + return false; } } diff --git a/core/includes/validate_date.php b/core/includes/validate_date.php new file mode 100644 index 0000000000..77ec163699 --- /dev/null +++ b/core/includes/validate_date.php @@ -0,0 +1,13 @@ +format($format) == $date; +} \ No newline at end of file diff --git a/index.php b/index.php index 392f01e217..348b446141 100644 --- a/index.php +++ b/index.php @@ -82,7 +82,7 @@ } else { // Profile page? if($directories[1] == 'profile'){ - $profile = htmlspecialchars($directories[2]); + if(isset($directories[2])) $profile = htmlspecialchars($directories[2]); require('pages/profile.php'); // Kill the script die(); diff --git a/pages/admin/core.php b/pages/admin/core.php index c5a29dca06..640e972dd0 100644 --- a/pages/admin/core.php +++ b/pages/admin/core.php @@ -115,6 +115,19 @@ $c->setCache('languagecache'); $c->store('language', htmlspecialchars(Input::get('language'))); + if(Input::get('followers') == 'on'){ + $followers = 1; + } else { + $followers = 0; + } + + $followers_id = $queries->getWhere('settings', array('name', '=', 'followers')); + $followers_id = $followers_id[0]->id; + + $queries->update('settings', $followers_id, array( + 'value' => $followers + )); + Session::flash('general_settings', '
' . $admin_language['successfully_updated'] . '
'); echo ''; die(); @@ -156,6 +169,14 @@ ?> + getWhere('settings', array('name', '=', 'followers')); + $followers = $followers[0]->value; + ?> +
+ + checked /> +
diff --git a/pages/install.php b/pages/install.php index c3c83e290f..ad11c589b3 100644 --- a/pages/install.php +++ b/pages/install.php @@ -614,6 +614,11 @@ 'name' => 'play_page_enabled', 'value' => '1' )); + + $queries->create('settings', array( + 'name' => 'followers', + 'value' => '0' + )); // Version update $version_id = $queries->getWhere('settings', array('name', '=', 'version')); @@ -1016,6 +1021,10 @@ 35 => array( 'name' => 'play_page_enabled', 'value' => '1' + ), + 36 => array( + 'name' => 'followers', + 'value' => '0' ) ); diff --git a/pages/profile.php b/pages/profile.php index ecbd74bb90..c31d5929e5 100644 --- a/pages/profile.php +++ b/pages/profile.php @@ -5,251 +5,720 @@ * * License: MIT */ - -require_once('core/integration/uuid.php'); // For UUID stuff -require('core/includes/htmlpurifier/HTMLPurifier.standalone.php'); // HTMLPurifier -// Is UUID linking enabled? -$uuid_linking = $queries->getWhere('settings', array('name', '=', 'uuid_linking')); -$uuid_linking = $uuid_linking[0]->value; +if(isset($profile)){ + require_once('core/integration/uuid.php'); // For UUID stuff + require('core/includes/htmlpurifier/HTMLPurifier.standalone.php'); // HTMLPurifier -$profile_user = $queries->getWhere("users", array("username", "=", $profile)); // Is it their username? -if(!count($profile_user)){ // No.. - $profile_user = $queries->getWhere("users", array("mcname", "=", $profile)); // Is it their Minecraft username? + // Is UUID linking enabled? + $uuid_linking = $queries->getWhere('settings', array('name', '=', 'uuid_linking')); + $uuid_linking = $uuid_linking[0]->value; + + $profile_user = $queries->getWhere("users", array("username", "=", $profile)); // Is it their username? if(!count($profile_user)){ // No.. - $exists = false; - $uuid = $queries->getWhere("uuid_cache", array("mcname", "=", $profile)); // Get the UUID, maybe they haven't registered yet - if(!count($uuid)){ - if($uuid_linking == '1'){ // is UUID linking enabled? - $profile_utils = ProfileUtils::getProfile($profile); - - if($profile_utils == null){ // Not a Minecraft user, end the page - Redirect::to('/404'); - die(); - } - - // Get results as array - $result = $profile_utils->getProfileAsArray(); - - if(empty($result['uuid'])){ // Not a Minecraft user, end the page - Redirect::to('/404'); - die(); + $profile_user = $queries->getWhere("users", array("mcname", "=", $profile)); // Is it their Minecraft username? + if(!count($profile_user)){ // No.. + $exists = false; + $uuid = $queries->getWhere("uuid_cache", array("mcname", "=", $profile)); // Get the UUID, maybe they haven't registered yet + if(!count($uuid)){ + if($uuid_linking == '1'){ // is UUID linking enabled? + $profile_utils = ProfileUtils::getProfile($profile); - } - - $uuid = $result["uuid"]; - $mcname = htmlspecialchars($profile); - // Cache the UUID so we don't have to keep looking it up via Mojang's servers - try { - $queries->create("uuid_cache", array( - 'mcname' => $mcname, - 'uuid' => $uuid - )); - } catch(Exception $e){ - die($e->getMessage()); + if($profile_utils == null){ // Not a Minecraft user, end the page + Redirect::to('/404'); + die(); + } + + // Get results as array + $result = $profile_utils->getProfileAsArray(); + + if(empty($result['uuid'])){ // Not a Minecraft user, end the page + Redirect::to('/404'); + die(); + + } + + $uuid = $result["uuid"]; + $mcname = htmlspecialchars($profile); + // Cache the UUID so we don't have to keep looking it up via Mojang's servers + try { + $queries->create("uuid_cache", array( + 'mcname' => $mcname, + 'uuid' => $uuid + )); + } catch(Exception $e){ + die($e->getMessage()); + } + } else { + $mcname = htmlspecialchars($profile); } } else { + $uuid = $uuid[0]->uuid; $mcname = htmlspecialchars($profile); } } else { - $uuid = $uuid[0]->uuid; - $mcname = htmlspecialchars($profile); + $exists = true; + $uuid = htmlspecialchars($profile_user[0]->uuid); + $mcname = htmlspecialchars($profile_user[0]->mcname); } } else { $exists = true; $uuid = htmlspecialchars($profile_user[0]->uuid); $mcname = htmlspecialchars($profile_user[0]->mcname); } -} else { - $exists = true; - $uuid = htmlspecialchars($profile_user[0]->uuid); - $mcname = htmlspecialchars($profile_user[0]->mcname); -} -if($user->isLoggedIn()){ - if(isset($_POST['AddFriend'])) { - if(Token::check(Input::get('token'))){ - $user->addfriend($user->data()->id, $profile_user[0]->id); + if($user->isLoggedIn()){ + if(!isset($_POST['action'])){ + if(isset($_POST['AddFriend'])) { + if(Token::check(Input::get('token'))){ + $user->addfriend($user->data()->id, $profile_user[0]->id); + } + } + if(isset($_POST['RemoveFriend'])){ + if(Token::check(Input::get('token'))){ + $user->removefriend($user->data()->id, $profile_user[0]->id); + } + } + } else { + if($_POST['action'] == 'reply'){ + // Reply to profile post + if(Token::check(Input::get('token'))){ + // Validate input + $validate = new Validate(); + + $validation = $validate->check($_POST, array( + 'post_reply' => array( + 'required' => true, + 'min' => 2, + 'max' => 2048 + ) + )); + + if($validation->passed()) { + // Validation successful + // Input into database + $queries->create('user_profile_wall_posts_replies', array( + 'post_id' => Input::get('pid'), + 'author_id' => $user->data()->id, + 'time' => date('U'), + 'content' => htmlspecialchars(Input::get('post_reply')) + )); + + // Redirect to clear input + echo ''; + die(); + + } else { + // Validation failed + Session::flash('user_wall', '
' . $user_language['invalid_wall_post'] . '
'); + } + + } else { + // Invalid token + Session::flash('user_wall', '
' . $admin_language['invalid_token'] . '
'); + + } + } else { + // Profile post + if(Token::check(Input::get('token'))){ + // Validate input + $validate = new Validate(); + + $validation = $validate->check($_POST, array( + 'wall_post' => array( + 'required' => true, + 'min' => 2, + 'max' => 2048 + ) + )); + + if($validation->passed()) { + // Validation successful + // Input into database + $queries->create('user_profile_wall_posts', array( + 'user_id' => $profile_user[0]->id, + 'author_id' => $user->data()->id, + 'time' => date('U'), + 'content' => htmlspecialchars(Input::get('wall_post')) + )); + + // Redirect to clear input + echo ''; + die(); + + } else { + // Validation failed + Session::flash('user_wall', '
' . $user_language['invalid_wall_post'] . '
'); + } + + } else { + // Invalid token + Session::flash('user_wall', '
' . $admin_language['invalid_token'] . '
'); + } + } } - } - if(isset($_POST['RemoveFriend'])){ - if(Token::check(Input::get('token'))){ - $user->removefriend($user->data()->id, $profile_user[0]->id); + + if(isset($_GET['action'])){ + if($_GET['action'] == 'like' && isset($_GET['post']) && is_numeric($_GET['post'])){ + // Liking or unliking? + $post_likes = $queries->getWhere('user_profile_wall_posts_likes', array('post_id', '=', $_GET['post'])); + + foreach($post_likes as $post_like){ + if($post_like->user_id == $user->data()->id){ + $post_like_id = $post_like->id; + $liked = true; + break; + } + } + + if(isset($liked)){ + // Unliking + $queries->delete('user_profile_wall_posts_likes', array('id', '=', $post_like_id)); + + Session::flash('user_wall', '
' . $user_language['post_unliked'] . '
'); + echo ''; + die(); + } else { + // Liking + $queries->create('user_profile_wall_posts_likes', array( + 'post_id' => $_GET['post'], + 'user_id' => $user->data()->id + )); + + Session::flash('user_wall', '
' . $user_language['post_liked'] . '
'); + echo ''; + die(); + } + } else if($_GET['action'] == 'delete'){ + // Ensure user is moderator + if($user->canViewMCP($user->data()->id)){ + if(isset($_GET['pid']) && is_numeric($_GET['pid'])){ + // Delete post + $queries->delete('user_profile_wall_posts_likes', array('post_id', '=', $_GET['pid'])); + $queries->delete('user_profile_wall_posts_replies', array('post_id', '=', $_GET['pid'])); + $queries->delete('user_profile_wall_posts', array('id', '=', $_GET['pid'])); + + echo ''; + die(); + + } else if(isset($_GET['r']) && is_numeric($_GET['r'])){ + // Delete post reply + $queries->delete('user_profile_wall_posts_replies', array('id', '=', $_GET['r'])); + + echo ''; + die(); + + } + } + } } + + $token = Token::generate(); } - $token = Token::generate(); -} - -// Is the user online? -if(strtotime("-10 minutes") < $profile_user[0]->last_online) $is_online = true; -?> - - - - - - - - - - - <?php echo $sitename; ?> • <?php echo $user_language['profile']; ?> - <?php echo $profile; ?> + // Is the user online? + if($exists == true && strtotime("-10 minutes") < $profile_user[0]->last_online) $is_online = true; - + // Pagination + require('core/includes/paginate.php'); + $pagination = new Pagination(); - - - - - display('styles/templates/' . $template . '/navbar.tpl'); - ?> -
-
- -
-
-
-

- - - getGroup($profile_user[0]->id, null, "true"); - } else { - echo '' . $user_language['player'] . ''; - } - ?> - ' . $user_language['offline']; - } else { - echo 'success">' . $user_language['online']; - } - ?> - -

-
-
-
- - - -
-
-
- - joined); ?>
- last_online){ echo date("d M Y, G:i", $profile_user[0]->last_online); } else { echo 'n/a'; } ?>
- getWhere("posts", array("post_creator", "=", $profile_user[0]->id))); ?>
- getWhere("reputation", array("user_received", "=", $profile_user[0]->id))); ?>
- -
+ // HTMLPurifier + $config = HTMLPurifier_Config::createDefault(); + $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); + $config->set('URI.DisableExternalResources', false); + $config->set('URI.DisableResources', false); + $config->set('HTML.Allowed', 'u,p,b,i,a,small,blockquote,span[style],span[class],p,strong,em,li,ul,ol,div[align],br,img'); + $config->set('CSS.AllowedProperties', array('text-align', 'float', 'color','background-color', 'background', 'font-size', 'font-family', 'text-decoration', 'font-weight', 'font-style', 'font-size')); + $config->set('HTML.AllowedAttributes', 'target, href, src, height, width, alt, class, *.style'); + $config->set('Attr.AllowedFrameTargets', array('_blank', '_self', '_parent', '_top')); + $config->set('HTML.SafeIframe', true); + $config->set('URI.SafeIframeRegexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%'); + $config->set('Core.EscapeInvalidTags', true); + $purifier = new HTMLPurifier($config); +} +?> + + + + + + + + + + <?php echo $sitename; ?> • <?php echo $user_language['profile']; if(isset($profile)) echo ' - ' . $profile; ?> + + + + + + display('styles/templates/' . $template . '/navbar.tpl'); + ?> +
+
+ +
+
+
+ has_avatar == '0'){ + echo ''; + } else { + echo ''; + } + ?>
-
-
-
-
-

+
+ getWhere('settings', array('name', '=', 'followers')); + if($followers == '1'){ + // Followers + if($exists == true) $followers = $user->listFollowers($profile_user[0]->id); + ?> +
+
+

+

()

+
+
+ IdToName($follower->friend_id)) . '"> '; + } + } else { + echo $user_language['user_not_following']; + } + } else { + echo $user_language['user_not_following']; + } + ?> +
+
+
+
+

+

(1)

+
+
+ listFriends($profile_user[0]->id); + if($friends !== false){ + foreach($friends as $friend){ + echo ' '; + } + } else { + echo $user_language['user_no_followers']; + } + } else { + echo $user_language['user_no_followers']; + } + ?> +
+
listFriends($profile_user[0]->id); - if($friends !== false){ - foreach($friends as $friend){ - echo ' '; + } else { + // Friends + if($exists == true) $friends = $user->listFriends($profile_user[0]->id); else $friends = false; + ?> +
+
+

+

()

+
+
+ listFriends($profile_user[0]->id); + if($friends !== false){ + foreach($friends as $friend){ + echo ' '; + } + } else { + echo $user_language['user_no_friends']; } } else { echo $user_language['user_no_friends']; } - echo '

'; - if($user->isLoggedIn()){ - if($user->isfriend($user->data()->id, $profile_user[0]->id) === 0){ - if($user->data()->id === $profile_user[0]->id){ - // echo "Can't add yourself as a friend!"; + ?> +
+
+ +
+
+
+

+ + getGroup($profile_user[0]->id, null, "true"); + } else { + echo '' . $user_language['player'] . ''; + } + ?> +

+

+ ' . $user_language['offline']; + } else { + echo 'success">' . $user_language['online']; + } + ?> + +

+ user_title)) echo '
' . htmlspecialchars($profile_user[0]->user_title) . '
'; ?> +
+ +
+ display_age == 1 && ($profile_user[0]->birthday) && ($profile_user[0]->location)){ + echo str_replace(array('{x}', '{y}'), array((date_diff(date_create($profile_user[0]->birthday), date_create('today'))->y), htmlspecialchars($profile_user[0]->location)), $user_language['display_age_and_location']); + } else if(($profile_user[0]->location)){ + echo str_replace('{x}', htmlspecialchars($profile_user[0]->location), $user_language['display_location']); + } + ?> +
+
isLoggedIn() && $exists == true){ + if($user->isfriend($user->data()->id, $profile_user[0]->id) === 0){ + if($user->data()->id === $profile_user[0]->id){ + + } else { + echo ' +
+ + +
+ ' . $user_language['send_message'] . ' + '; + } + } else { + if($user->data()->id === $profile_user[0]->id){ + + } else { + echo ' +
+ + +
+ ' . $user_language['send_message'] . ' + '; + } + } + } ?> +
+
+
+
+ +
+ + + +
+
+
+ isLoggedIn()){ + ?> +
+
+   + + + + +
+
+
+ orderWhere('user_profile_wall_posts', 'user_id = ' . $profile_user[0]->id, 'time', 'DESC'); + if(count($profile_posts)){ + // Pagination stuff + $pagination->setCurrent($p); + $pagination->setTotal(count($profile_posts)); + $pagination->alwaysShowPagination(); + + // Get number of users we should display on the page + $paginate = PaginateArray($p); + + $n = $paginate[0]; + $f = $paginate[1]; + + // Get the number we need to finish on ($d) + if(count($profile_posts) > $f){ + $d = $p * 10; } else { - echo '
-
- - + $d = count($profile_posts) - $n; + $d = $d + $n; + } + + while($n < $d){ + // Get info about the user who's posted + $post_user = $queries->getWhere('users', array('id', '=', $profile_posts[$n]->author_id)); + + // Any replies? + + + // How many likes? + $likes = $queries->getWhere('user_profile_wall_posts_likes', array('post_id', '=', $profile_posts[$n]->id)); + $likes_count = count($likes); + ?> +
+   +

+ idToName($profile_posts[$n]->author_id)); ?> | time); ?> +

+ purify($profile_posts[$n]->content); ?> +

+

+ isLoggedIn()){ ?> | isLoggedIn() && $user->canViewMCP($user->data()->id)){ ?> | +

+ getWhere('user_profile_wall_posts_replies', array('post_id', '=', $profile_posts[$n]->id)); + if(count($replies)){ + foreach($replies as $reply){ + $reply_user = $queries->getWhere('users', array('id', '=', $reply->author_id)); + ?> +

+

+
+ has_avatar == '0'){ + echo ''; + } else { + echo ''; + } + ?> +
+
+ idToName($reply->author_id)); ?> | time); ?> +

+ purify($reply->content); ?> + isLoggedIn() && $user->canViewMCP($user->data()->id)){ ?>

+
+
+

+ +
+
+ isLoggedIn()){ + ?> + +
'; +
+ +
+
+
+ parse(); // Print pagination } else { - if($user->data()->id === $profile_user[0]->id){ - // echo "Can't remove yourself as a friend!"; - } else { - echo '
-
- - -
- ' . $user_language['send_message'] . ' -
'; + echo $user_language['no_profile_posts']; + } + ?> +
+
+
+ + joined); ?>
+ last_online){ echo date("d M Y, G:i", $profile_user[0]->last_online); } else { echo 'n/a'; } ?>
+ getWhere("posts", array("post_creator", "=", $profile_user[0]->id))); ?>
+ getWhere("reputation", array("user_received", "=", $profile_user[0]->id))); ?>
+ +
+
+ orderWhere('posts', 'post_creator = ' . $profile_user[0]->id, 'post_date', 'DESC LIMIT 5'); + + if(!count($latest_posts)) echo '

' . $user_language['no_posts'] . '

'; + + else { + echo '

' . $user_language['last_5_posts'] . '

'; + foreach($latest_posts as $latest_post){ + // Get topic title + $topic_title = $queries->getWhere('topics', array('id', '=', $latest_post->topic_id)); + $topic_title = htmlspecialchars($topic_title[0]->topic_title); + ?> +
+
+ +
+
+
+ purify(htmlspecialchars_decode($latest_post->post_content)); ?> +
+ + post_date)); ?> + +
+
+ +
+
+
+ +
+
+ window.location.replace("/profile/' . htmlspecialchars(Input::get('username')) . '");'; + die(); } else { - echo $user_language['user_no_friends'] . '

'; + $error = true; } - ?> -
-
- - -

Find a user

- -
Can't find that user
- -
- - -
- -
- - - display('styles/templates/' . $template . '/footer.tpl'); - - // Scripts - require('core/includes/template/scripts.php'); - ?> - + } + ?> +

+ ' . $admin_language['invalid_token'] . ''; ?> +
+ + +
+ +
+ + + display('styles/templates/' . $template . '/footer.tpl'); + + // Scripts + require('core/includes/template/scripts.php'); + ?> + + + \ No newline at end of file diff --git a/pages/register.php b/pages/register.php index 07826fb26d..6cb37073bb 100644 --- a/pages/register.php +++ b/pages/register.php @@ -16,6 +16,7 @@ require('core/integration/uuid.php'); // For UUID stuff require('core/includes/password.php'); // For password hashing +require('core/includes/validate_date.php'); // For date validation // Are custom usernames enabled? $custom_usernames = $queries->getWhere("settings", array("name", "=", "displaynames")); @@ -86,6 +87,14 @@ 't_and_c' => array( 'required' => true, 'agree' => true + ), + 'birthday' => array( + 'required' => true + ), + 'location' => array( + 'required' => true, + 'min' => 2, + 'max' => 128 ) ); @@ -95,286 +104,301 @@ ); } - if($uuid_linking == '1'){ - if($custom_usernames == "true"){ // validate username and Minecraft name - $to_validation['mcname'] = array( - 'required' => true, - //'isvalid' => true, - 'min' => 3, - 'max' => 20, - 'unique' => 'users' - ); - $to_validation['username'] = array( - 'required' => true, - 'min' => 3, - 'max' => 20, - 'unique' => 'users' - ); - $mcname = htmlspecialchars(Input::get('mcname')); - - // Perform validation on Minecraft name - $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); - $mcname_result = $profile->getProfileAsArray(); - - if(isset($mcname_result['username']) && !empty($mcname_result['username'])){ - // Valid - } else { - // Invalid - $invalid_mcname = true; - } - - } else { // only validate Minecraft name - $to_validation['username'] = array( - 'required' => true, - //'isvalid' => true, - 'min' => 3, - 'max' => 20, - 'unique' => 'users' - ); - $mcname = htmlspecialchars(Input::get('username')); - - // Perform validation on Minecraft name - $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); - $mcname_result = $profile->getProfileAsArray(); - - if(isset($mcname_result['username']) && !empty($mcname_result['username'])){ - // Valid - } else { - // Invalid - $invalid_mcname = true; - } - - } + // Validate date of birth + if(!validateDate(Input::get('birthday')) || strtotime(Input::get('birthday')) > strtotime('now')){ + // Invalid + $error = '
' . $user_language['invalid_date_of_birth'] . '
'; } else { - if($custom_usernames == "true"){ // validate username and Minecraft name - $to_validation['mcname'] = array( - 'required' => true, - 'min' => 3, - 'max' => 20, - 'unique' => 'users' - ); - $to_validation['username'] = array( - 'required' => true, - 'min' => 3, - 'max' => 20, - 'unique' => 'users' - ); - $mcname = htmlspecialchars(Input::get('mcname')); - } else { // only validate Minecraft name - $to_validation['username'] = array( - 'required' => true, - 'min' => 3, - 'max' => 20, - 'unique' => 'users' - ); - $mcname = htmlspecialchars(Input::get('username')); - } - } - - // Check to see if the Minecraft username was valid - if(!isset($invalid_mcname)){ - // Valid, continue with validation - $validation = $validate->check($_POST, $to_validation); // Execute validation - - if($validation->passed()){ - if($uuid_linking == '1'){ - if(!isset($mcname_result)){ - $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); - $mcname_result = $profile->getProfileAsArray(); + // Valid date of birth + if($uuid_linking == '1'){ + if($custom_usernames == "true"){ // validate username and Minecraft name + $to_validation['mcname'] = array( + 'required' => true, + //'isvalid' => true, + 'min' => 3, + 'max' => 20, + 'unique' => 'users' + ); + $to_validation['username'] = array( + 'required' => true, + 'min' => 3, + 'max' => 20, + 'unique' => 'users' + ); + $mcname = htmlspecialchars(Input::get('mcname')); + + // Perform validation on Minecraft name + $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); + $mcname_result = $profile->getProfileAsArray(); + + if(isset($mcname_result['username']) && !empty($mcname_result['username'])){ + // Valid + } else { + // Invalid + $invalid_mcname = true; } - if(isset($mcname_result["uuid"]) && !empty($mcname_result['uuid'])){ - $uuid = $mcname_result['uuid']; + + } else { // only validate Minecraft name + $to_validation['username'] = array( + 'required' => true, + 'min' => 3, + 'max' => 20, + 'unique' => 'users' + ); + $mcname = htmlspecialchars(Input::get('username')); + + // Perform validation on Minecraft name + $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); + $mcname_result = $profile->getProfileAsArray(); + + if(isset($mcname_result['username']) && !empty($mcname_result['username'])){ + // Valid } else { - $uuid = ''; + // Invalid + $invalid_mcname = true; } - } else { - $uuid = ''; + } - - $user = new User(); - - $ip = $user->getIP(); - if(filter_var($ip, FILTER_VALIDATE_IP)){ - // Valid IP - } else { - // TODO: Invalid IP, do something else + } else { + if($custom_usernames == "true"){ // validate username and Minecraft name + $to_validation['mcname'] = array( + 'required' => true, + 'min' => 3, + 'max' => 20, + 'unique' => 'users' + ); + $to_validation['username'] = array( + 'required' => true, + 'min' => 3, + 'max' => 20, + 'unique' => 'users' + ); + $mcname = htmlspecialchars(Input::get('mcname')); + } else { // only validate Minecraft name + $to_validation['username'] = array( + 'required' => true, + 'min' => 3, + 'max' => 20, + 'unique' => 'users' + ); + $mcname = htmlspecialchars(Input::get('username')); } + } + + // Check to see if the Minecraft username was valid + if(!isset($invalid_mcname)){ + // Valid, continue with validation + $validation = $validate->check($_POST, $to_validation); // Execute validation - $password = password_hash(Input::get('password'), PASSWORD_BCRYPT, array("cost" => 13)); - // Get current unix time - $date = new DateTime(); - $date = $date->getTimestamp(); + if($validation->passed()){ + if($uuid_linking == '1'){ + if(!isset($mcname_result)){ + $profile = ProfileUtils::getProfile(str_replace(' ', '%20', $mcname)); + $mcname_result = $profile->getProfileAsArray(); + } + if(isset($mcname_result["uuid"]) && !empty($mcname_result['uuid'])){ + $uuid = $mcname_result['uuid']; + } else { + $uuid = ''; + } + } else { + $uuid = ''; + } - try { - $code = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 60); - $user->create(array( - 'username' => htmlspecialchars(Input::get('username')), - 'mcname' => $mcname, - 'uuid' => $uuid, - 'password' => $password, - 'pass_method' => 'default', - 'joined' => $date, - 'group_id' => 1, - 'email' => htmlspecialchars(Input::get('email')), - 'reset_code' => $code, - 'lastip' => htmlspecialchars($ip), - 'last_online' => $date - )); + $user = new User(); - if($email_verification == '1'){ - $php_mailer = $queries->getWhere('settings', array('name', '=', 'phpmailer')); - $php_mailer = $php_mailer[0]->value; + $ip = $user->getIP(); + if(filter_var($ip, FILTER_VALIDATE_IP)){ + // Valid IP + } else { + // TODO: Invalid IP, do something else + } + + $password = password_hash(Input::get('password'), PASSWORD_BCRYPT, array("cost" => 13)); + // Get current unix time + $date = new DateTime(); + $date = $date->getTimestamp(); + + try { + $code = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 60); + $user->create(array( + 'username' => htmlspecialchars(Input::get('username')), + 'mcname' => $mcname, + 'uuid' => $uuid, + 'password' => $password, + 'pass_method' => 'default', + 'joined' => $date, + 'group_id' => 1, + 'email' => htmlspecialchars(Input::get('email')), + 'reset_code' => $code, + 'lastip' => htmlspecialchars($ip), + 'last_online' => $date, + 'birthday' => date('Y-m-d', strtotime(str_replace('-', '/', htmlspecialchars(Input::get('birthday'))))), + 'location' => htmlspecialchars(Input::get('location')) + )); - if($php_mailer == '1'){ - // PHP Mailer - require('core/includes/phpmailer/PHPMailerAutoload.php'); - require('core/email.php'); - - $mail = new PHPMailer; - $mail->IsSMTP(); - $mail->SMTPDebug = 0; - $mail->Debugoutput = 'html'; - $mail->Host = $GLOBALS['email']['host']; - $mail->Port = $GLOBALS['email']['port']; - $mail->SMTPSecure = $GLOBALS['email']['secure']; - $mail->SMTPAuth = true; - $mail->Username = $GLOBALS['email']['username']; - $mail->Password = $GLOBALS['email']['password']; - $mail->setFrom($GLOBALS['email']['username'], $GLOBALS['email']['name']); - $mail->From = $GLOBALS['email']['username']; - $mail->FromName = $GLOBALS['email']['name']; - $mail->addAddress(htmlspecialchars(Input::get('email')), htmlspecialchars(Input::get('username'))); - $mail->Subject = $sitename . ' - ' . $user_language['register']; - - // HTML to display in message - $path = join(DIRECTORY_SEPARATOR, array(ROOT_PATH, 'styles', 'templates', $template, 'email', 'register.html')); - $html = file_get_contents($path); + if($email_verification == '1'){ + $php_mailer = $queries->getWhere('settings', array('name', '=', 'phpmailer')); + $php_mailer = $php_mailer[0]->value; - $link = 'http://' . $_SERVER['SERVER_NAME'] . '/validate/?c=' . $code; - - $html = str_replace(array('[Sitename]', '[Register]', '[Greeting]', '[Message]', '[Link]', '[Thanks]'), array($sitename, $user_language['register'], $email_language['greeting'], $email_language['message'], $link, $email_language['thanks']), $html); - - $mail->msgHTML($html); - $mail->IsHTML(true); - $mail->Body = $html; - - if(!$mail->send()) { - echo "Mailer Error: " . $mail->ErrorInfo; - die(); + if($php_mailer == '1'){ + // PHP Mailer + require('core/includes/phpmailer/PHPMailerAutoload.php'); + require('core/email.php'); + + $mail = new PHPMailer; + $mail->IsSMTP(); + $mail->SMTPDebug = 0; + $mail->Debugoutput = 'html'; + $mail->Host = $GLOBALS['email']['host']; + $mail->Port = $GLOBALS['email']['port']; + $mail->SMTPSecure = $GLOBALS['email']['secure']; + $mail->SMTPAuth = true; + $mail->Username = $GLOBALS['email']['username']; + $mail->Password = $GLOBALS['email']['password']; + $mail->setFrom($GLOBALS['email']['username'], $GLOBALS['email']['name']); + $mail->From = $GLOBALS['email']['username']; + $mail->FromName = $GLOBALS['email']['name']; + $mail->addAddress(htmlspecialchars(Input::get('email')), htmlspecialchars(Input::get('username'))); + $mail->Subject = $sitename . ' - ' . $user_language['register']; + + // HTML to display in message + $path = join(DIRECTORY_SEPARATOR, array(ROOT_PATH, 'styles', 'templates', $template, 'email', 'register.html')); + $html = file_get_contents($path); + + $link = 'http://' . $_SERVER['SERVER_NAME'] . '/validate/?c=' . $code; + + $html = str_replace(array('[Sitename]', '[Register]', '[Greeting]', '[Message]', '[Link]', '[Thanks]'), array($sitename, $user_language['register'], $email_language['greeting'], $email_language['message'], $link, $email_language['thanks']), $html); + + $mail->msgHTML($html); + $mail->IsHTML(true); + $mail->Body = $html; + + if(!$mail->send()) { + echo "Mailer Error: " . $mail->ErrorInfo; + die(); + } else { + echo "Message sent!"; + } } else { - echo "Message sent!"; + // PHP mail function + $siteemail = $queries->getWhere('settings', array('name', '=', 'outgoing_email')); + $siteemail = $siteemail[0]->value; + + $to = Input::get('email'); + $subject = $sitename . ' - ' . $user_language['register']; + + $message = $email_language['greeting'] . PHP_EOL . + $email_language['message'] . PHP_EOL . PHP_EOL . + 'http://' . $_SERVER['SERVER_NAME'] . '/validate/?c=' . $code . PHP_EOL . PHP_EOL . + $email_language['thanks'] . PHP_EOL . + $sitename; + + $headers = 'From: ' . $siteemail . "\r\n" . + 'Reply-To: ' . $siteemail . "\r\n" . + 'X-Mailer: PHP/' . phpversion(); + mail($to, $subject, $message, $headers); } } else { - // PHP mail function - $siteemail = $queries->getWhere('settings', array('name', '=', 'outgoing_email')); - $siteemail = $siteemail[0]->value; - - $to = Input::get('email'); - $subject = $sitename . ' - ' . $user_language['register']; - - $message = $email_language['greeting'] . PHP_EOL . - $email_language['message'] . PHP_EOL . PHP_EOL . - 'http://' . $_SERVER['SERVER_NAME'] . '/validate/?c=' . $code . PHP_EOL . PHP_EOL . - $email_language['thanks'] . PHP_EOL . - $sitename; - - $headers = 'From: ' . $siteemail . "\r\n" . - 'Reply-To: ' . $siteemail . "\r\n" . - 'X-Mailer: PHP/' . phpversion() . "\r\n" . - 'MIME-Version: 1.0' . "\r\n" . - 'Content-type: text/plain; charset=UTF-8' . "\r\n"; - mail($to, $subject, $message, $headers); + // Email verification disabled + // Redirect straight to verification link + echo ''; + die(); } - } else { - // Email verification disabled - // Redirect straight to verification link - echo ''; + + Session::flash('home', '
' . $user_language['registration_check_email'] . '
'); + Redirect::to('/'); die(); - } - Session::flash('home', '
' . $user_language['registration_check_email'] . '
'); - Redirect::to('/'); - die(); - - } catch(Exception $e){ - die($e->getMessage()); - } - } else { - // Errors - $error = '
'; - foreach($validation->errors() as $validation_error){ - - if(strpos($validation_error, 'is required') !== false){ - // x is required - switch($validation_error){ - case (strpos($validation_error, 'username') !== false): - $error .= $user_language['username_required'] . '
'; - break; - case (strpos($validation_error, 'email') !== false): - $error .= $user_language['email_required'] . '
'; - break; - case (strpos($validation_error, 'password') !== false): - $error .= $user_language['password_required'] . '
'; - break; - case (strpos($validation_error, 'mcname') !== false): - $error .= $user_language['mcname_required'] . '
'; - break; - case (strpos($validation_error, 't_and_c') !== false): - $error .= $user_language['accept_terms'] . '
'; - break; - } - - } else if(strpos($validation_error, 'minimum') !== false){ - // x must be a minimum of y characters long - switch($validation_error){ - case (strpos($validation_error, 'username') !== false): - $error .= $user_language['username_minimum_3'] . '
'; - break; - case (strpos($validation_error, 'mcname') !== false): - $error .= $user_language['mcname_minimum_3'] . '
'; - break; - case (strpos($validation_error, 'password') !== false): - $error .= $user_language['password_minimum_6'] . '
'; - break; - } + } catch(Exception $e){ + die($e->getMessage()); + } + } else { + // Errors + $error = '
'; + foreach($validation->errors() as $validation_error){ - } else if(strpos($validation_error, 'maximum') !== false){ - // x must be a maximum of y characters long - switch($validation_error){ - case (strpos($validation_error, 'username') !== false): - $error .= $user_language['username_maximum_20'] . '
'; - break; - case (strpos($validation_error, 'mcname') !== false): - $error .= $user_language['mcname_maximum_20'] . '
'; - break; - case (strpos($validation_error, 'password') !== false): - $error .= $user_language['password_maximum_30'] . '
'; - break; + if(strpos($validation_error, 'is required') !== false){ + // x is required + switch($validation_error){ + case (strpos($validation_error, 'username') !== false): + $error .= $user_language['username_required'] . '
'; + break; + case (strpos($validation_error, 'email') !== false): + $error .= $user_language['email_required'] . '
'; + break; + case (strpos($validation_error, 'password') !== false): + $error .= $user_language['password_required'] . '
'; + break; + case (strpos($validation_error, 'mcname') !== false): + $error .= $user_language['mcname_required'] . '
'; + break; + case (strpos($validation_error, 't_and_c') !== false): + $error .= $user_language['accept_terms'] . '
'; + break; + case (strpos($validation_error, 'location') !== false): + $error .= $user_language['location_required'] . '
'; + break; + } + + } else if(strpos($validation_error, 'minimum') !== false){ + // x must be a minimum of y characters long + switch($validation_error){ + case (strpos($validation_error, 'username') !== false): + $error .= $user_language['username_minimum_3'] . '
'; + break; + case (strpos($validation_error, 'mcname') !== false): + $error .= $user_language['mcname_minimum_3'] . '
'; + break; + case (strpos($validation_error, 'password') !== false): + $error .= $user_language['password_minimum_6'] . '
'; + break; + case (strpos($validation_error, 'location') !== false): + $error .= $user_language['location_minimum_2'] . '
'; + break; + } + + } else if(strpos($validation_error, 'maximum') !== false){ + // x must be a maximum of y characters long + switch($validation_error){ + case (strpos($validation_error, 'username') !== false): + $error .= $user_language['username_maximum_20'] . '
'; + break; + case (strpos($validation_error, 'mcname') !== false): + $error .= $user_language['mcname_maximum_20'] . '
'; + break; + case (strpos($validation_error, 'password') !== false): + $error .= $user_language['password_maximum_30'] . '
'; + break; + case (strpos($validation_error, 'location') !== false): + $error .= $user_language['location_maximum_128'] . '
'; + break; + } + + } else if(strpos($validation_error, 'must match') !== false){ + // password must match password again + $error .= $user_language['passwords_dont_match'] . '
'; + + } else if(strpos($validation_error, 'already exists') !== false){ + // already exists + $error .= $user_language['username_mcname_email_exists'] . '
'; + } else if(strpos($validation_error, 'not a valid Minecraft account') !== false){ + // Invalid Minecraft username + $error .= $user_language['invalid_mcname'] . '
'; + + } else if(strpos($validation_error, 'Mojang communication error') !== false){ + // Mojang server error + $error .= $user_language['mcname_lookup_error'] . '
'; + } - - } else if(strpos($validation_error, 'must match') !== false){ - // password must match password again - $error .= $user_language['passwords_dont_match'] . '
'; - - } else if(strpos($validation_error, 'already exists') !== false){ - // already exists - $error .= $user_language['username_mcname_email_exists'] . '
'; - } else if(strpos($validation_error, 'not a valid Minecraft account') !== false){ - // Invalid Minecraft username - $error .= $user_language['invalid_mcname'] . '
'; - - } else if(strpos($validation_error, 'Mojang communication error') !== false){ - // Mojang server error - $error .= $user_language['mcname_lookup_error'] . '
'; - } + $error .= '
'; + //$error = '
' . $user_language['registration_error'] . '
'; } - $error .= '
'; - //$error = '
' . $user_language['registration_error'] . '
'; + } else { + // Invalid Minecraft name + $error = '
' . $user_language['invalid_mcname'] . '
'; } - } else { - // Invalid Minecraft name - $error = '
' . $user_language['invalid_mcname'] . '
'; } } else { @@ -417,12 +441,24 @@
- + +
+
+
+
+ +
+
+
+
+
+
+
- +
@@ -491,6 +527,7 @@ require('core/includes/template/generate.php'); ?> +