From 6fcfb7c04d32e1c8b26a312295bf7ac3ec2d2ad7 Mon Sep 17 00:00:00 2001
From: Marvin Borner
Date: Fri, 13 Jul 2018 19:06:45 +0200
Subject: Fixed many permissions and began admin interface
---
.../bootstrap-timepicker/.bower.json | 45 +
.../bootstrap-timepicker/CHANGELOG.md | 56 +
.../bower_components/bootstrap-timepicker/LICENSE | 20 +
.../bootstrap-timepicker/README.md | 73 ++
.../bootstrap-timepicker/bower.json | 35 +
.../bootstrap-timepicker/css/timepicker.less | 172 +++
.../js/bootstrap-timepicker.js | 1177 ++++++++++++++++++++
7 files changed, 1578 insertions(+)
create mode 100644 public/bower_components/bootstrap-timepicker/.bower.json
create mode 100644 public/bower_components/bootstrap-timepicker/CHANGELOG.md
create mode 100644 public/bower_components/bootstrap-timepicker/LICENSE
create mode 100644 public/bower_components/bootstrap-timepicker/README.md
create mode 100644 public/bower_components/bootstrap-timepicker/bower.json
create mode 100644 public/bower_components/bootstrap-timepicker/css/timepicker.less
create mode 100644 public/bower_components/bootstrap-timepicker/js/bootstrap-timepicker.js
(limited to 'public/bower_components/bootstrap-timepicker')
diff --git a/public/bower_components/bootstrap-timepicker/.bower.json b/public/bower_components/bootstrap-timepicker/.bower.json
new file mode 100644
index 0000000..dfe8dd6
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/.bower.json
@@ -0,0 +1,45 @@
+{
+ "name": "bootstrap-timepicker",
+ "description": "A timepicker component for Twitter Bootstrap",
+ "version": "0.5.2",
+ "main": "js/bootstrap-timepicker.js",
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "_layouts",
+ "node_modules",
+ "_config.yml",
+ "assets",
+ "spec",
+ "index.html",
+ "Gruntfile.js",
+ "package.json",
+ "composer.json"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jdewit/bootstrap-timepicker"
+ },
+ "dependencies": {
+ "bootstrap": "^3.0",
+ "jquery": "^2.0"
+ },
+ "devDependencies": {
+ "autotype": "https://raw.github.com/mmonteleone/jquery.autotype/master/jquery.autotype.js"
+ },
+ "keywords": [
+ "widget",
+ "timepicker",
+ "time"
+ ],
+ "homepage": "https://github.com/jdewit/bootstrap-timepicker",
+ "_release": "0.5.2",
+ "_resolution": {
+ "type": "version",
+ "tag": "v0.5.2",
+ "commit": "5ac75ccbe2f53a7357fd97ca9afdebe014b4c027"
+ },
+ "_source": "https://github.com/jdewit/bootstrap-timepicker.git",
+ "_target": "^0.5.2",
+ "_originalSource": "bootstrap-timepicker"
+}
\ No newline at end of file
diff --git a/public/bower_components/bootstrap-timepicker/CHANGELOG.md b/public/bower_components/bootstrap-timepicker/CHANGELOG.md
new file mode 100644
index 0000000..809b619
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/CHANGELOG.md
@@ -0,0 +1,56 @@
+# Changelog
+
+All notable changes will be documented in this file. This project
+sort of conforms to Semantic Versioning. Since we're still pre-1.0,
+it's like the Wild West up in here!
+
+## Unreleased
+### Added (not started)
+- Still planning out how to include i18n data and functionality.
+
+### Deprecated (not started)
+- Incorrect usage of the word "meridian" will be deprecated. It should
+ be "meridiem".
+- `showWidgetOnAddonClick`'s current behavior is not intuitive. Clicking
+ the input addon should _toggle_ the widget instead of showing it.
+
+## 0.5.2 - 2016-01-02
+### Added
+- Tabbing out of the timepicker widget will now close it.
+- You can specify your own icon classes. See docs for the option.
+
+### Changed
+- Cleaned up `package.json` and `bower.json` files. The npm/bower package
+ should be cleaner now.
+- `timepicker.less` now lives in the `css/` directory of the package.
+- bootstrap-timepicker now uses the latest minor releases for jQuery 2 and
+ Bootstrap 3
+
+### Fixed
+- Fixed bad interaction between `setTime("12:00 AM")` and `showMeridian`
+- Various documentation issues were fixed.
+
+## 0.5.1 - 2015-08-06
+### Changed
+- Critical fix (#279) for bootstrap initialization. If you happened to
+ list your timepicker's classes in an order other than "input-group
+ bootstrap-timepicker", you'd be out of luck. Now we use jQuery's
+ `hasClass` method correctly. Yay!
+
+## 0.5 - 2015-07-31
+### Changed
+- Bootstrap 3 support. No more Bootstrap 2 support.
+- setTime sets time better
+- more tests, and they exercise Bootstrap 3 support!
+- snapToStep is a new option, off by default, which snaps times to the
+ nearest step or overflows to 0 if it would otherwise snap to 60 or
+ more.
+- explicitMode is a new option, off by default, which lets you leave
+ out colons when typing times.
+- shift+tab now correctly moves the cursor to the previously
+ highlighted unit, and blurs the timepicker when expected.
+- We have cut out significant amounts of old cruft from the
+ repository.
+- Minified/Uglified code is no longer kept in the repo. Please
+ download a release tarball or zip file to get the compiled and
+ minified CSS and Javascript files.
diff --git a/public/bower_components/bootstrap-timepicker/LICENSE b/public/bower_components/bootstrap-timepicker/LICENSE
new file mode 100644
index 0000000..a43ecdc
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/LICENSE
@@ -0,0 +1,20 @@
+The MIT license
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/public/bower_components/bootstrap-timepicker/README.md b/public/bower_components/bootstrap-timepicker/README.md
new file mode 100644
index 0000000..28ee121
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/README.md
@@ -0,0 +1,73 @@
+Timepicker for Twitter Bootstrap
+=======
+[](https://travis-ci.org/jdewit/bootstrap-timepicker)
+
+A simple timepicker component for Twitter Bootstrap.
+
+Status
+======
+Please take a look at the `CHANGELOG.md` and the issues tab for issues we're
+working on and their relative priorities.
+
+Installation
+============
+
+This project is registered as a Bower package,
+and can be installed with the following command:
+
+```bash
+bower install bootstrap-timepicker
+```
+
+You can also download our latest release (and any previous release)
+here.
+
+Demos & Documentation
+=====================
+
+View demos & documentation.
+
+Support
+=======
+
+If you make money using this timepicker, please consider
+supporting its development.
+
+
+
+Contributing
+============
+
+1. Install NodeJS and Node Package Manager.
+
+2. Install packages
+
+```bash
+npm install
+```
+
+3. Use Bower to get the dev dependencies.
+
+```bash
+bower install
+```
+
+4. Use Grunt to run tests, compress assets, etc.
+
+```bash
+grunt test // run jshint and jasmine tests
+grunt watch // run jsHint and Jasmine tests whenever a file is changed
+grunt compile // minify the js and css files
+```
+
+- Please make it easy on me by covering any new features or issues
+ with Jasmine tests.
+- If your changes need documentation, please take the time to update the docs.
+
+Acknowledgements
+================
+
+Thanks to everyone who have given feedback and submitted pull requests. A
+list of all the contributors can be found here.
+
+Special thanks to @eternicode and his Twitter Datepicker for inspiration.
diff --git a/public/bower_components/bootstrap-timepicker/bower.json b/public/bower_components/bootstrap-timepicker/bower.json
new file mode 100644
index 0000000..abb6afe
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/bower.json
@@ -0,0 +1,35 @@
+{
+ "name": "bootstrap-timepicker",
+ "description": "A timepicker component for Twitter Bootstrap",
+ "version": "0.5.2",
+ "main": "js/bootstrap-timepicker.js",
+ "license": "MIT",
+ "ignore": [
+ "**/.*",
+ "_layouts",
+ "node_modules",
+ "_config.yml",
+ "assets",
+ "spec",
+ "index.html",
+ "Gruntfile.js",
+ "package.json",
+ "composer.json"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/jdewit/bootstrap-timepicker"
+ },
+ "dependencies": {
+ "bootstrap": "^3.0",
+ "jquery": "^2.0"
+ },
+ "devDependencies": {
+ "autotype": "https://raw.github.com/mmonteleone/jquery.autotype/master/jquery.autotype.js"
+ },
+ "keywords": [
+ "widget",
+ "timepicker",
+ "time"
+ ]
+}
diff --git a/public/bower_components/bootstrap-timepicker/css/timepicker.less b/public/bower_components/bootstrap-timepicker/css/timepicker.less
new file mode 100644
index 0000000..a2e813f
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/css/timepicker.less
@@ -0,0 +1,172 @@
+/*!
+ * Timepicker Component for Twitter Bootstrap
+ *
+ * Copyright 2013 Joris de Wit
+ *
+ * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+.bootstrap-timepicker {
+ position: relative;
+
+ &.pull-right {
+ .bootstrap-timepicker-widget {
+ &.dropdown-menu {
+ left: auto;
+ right: 0;
+
+ &:before {
+ left: auto;
+ right: 12px;
+ }
+ &:after {
+ left: auto;
+ right: 13px;
+ }
+ }
+ }
+ }
+
+ .input-group-addon {
+ cursor: pointer;
+ i {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ }
+ }
+}
+.bootstrap-timepicker-widget {
+ &.dropdown-menu {
+ padding: 4px;
+ &.open {
+ display: inline-block;
+ }
+ &:before {
+ border-bottom: 7px solid rgba(0, 0, 0, 0.2);
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ content: "";
+ display: inline-block;
+ position: absolute;
+ }
+ &:after {
+ border-bottom: 6px solid #FFFFFF;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ content: "";
+ display: inline-block;
+ position: absolute;
+ }
+ }
+ &.timepicker-orient-left {
+ &:before {
+ left: 6px;
+ }
+ &:after {
+ left: 7px;
+ }
+ }
+ &.timepicker-orient-right {
+ &:before {
+ right: 6px;
+ }
+ &:after {
+ right: 7px;
+ }
+ }
+ &.timepicker-orient-top {
+ &:before {
+ top: -7px;
+ }
+ &:after {
+ top: -6px;
+ }
+ }
+ &.timepicker-orient-bottom {
+ &:before {
+ bottom: -7px;
+ border-bottom: 0;
+ border-top: 7px solid #999;
+ }
+ &:after {
+ bottom: -6px;
+ border-bottom: 0;
+ border-top: 6px solid #ffffff;
+ }
+ }
+ a.btn, input {
+ border-radius: 4px;
+ }
+
+ table {
+ width: 100%;
+ margin: 0;
+
+ td {
+ text-align: center;
+ height: 30px;
+ margin: 0;
+ padding: 2px;
+
+ &:not(.separator) {
+ min-width: 30px;
+ }
+
+ span {
+ width: 100%;
+ }
+ a {
+ border: 1px transparent solid;
+ width: 100%;
+ display: inline-block;
+ margin: 0;
+ padding: 8px 0;
+ outline: 0;
+ color: #333;
+
+ &:hover {
+ text-decoration: none;
+ background-color: #eee;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ border-color: #ddd;
+ }
+
+ i {
+ margin-top: 2px;
+ font-size: 18px;
+ }
+ }
+ input {
+ width: 25px;
+ margin: 0;
+ text-align: center;
+ }
+ }
+ }
+}
+
+.bootstrap-timepicker-widget .modal-content {
+ padding: 4px;
+}
+
+@media (min-width: 767px) {
+ .bootstrap-timepicker-widget.modal {
+ width: 200px;
+ margin-left: -100px;
+ }
+}
+
+@media (max-width: 767px) {
+ .bootstrap-timepicker {
+ width: 100%;
+
+ .dropdown-menu {
+ width: 100%;
+ }
+ }
+}
diff --git a/public/bower_components/bootstrap-timepicker/js/bootstrap-timepicker.js b/public/bower_components/bootstrap-timepicker/js/bootstrap-timepicker.js
new file mode 100644
index 0000000..bbb923c
--- /dev/null
+++ b/public/bower_components/bootstrap-timepicker/js/bootstrap-timepicker.js
@@ -0,0 +1,1177 @@
+/*!
+ * Timepicker Component for Twitter Bootstrap
+ *
+ * Copyright 2013 Joris de Wit and bootstrap-timepicker contributors
+ *
+ * Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+(function($, window, document) {
+ 'use strict';
+
+ // TIMEPICKER PUBLIC CLASS DEFINITION
+ var Timepicker = function(element, options) {
+ this.widget = '';
+ this.$element = $(element);
+ this.defaultTime = options.defaultTime;
+ this.disableFocus = options.disableFocus;
+ this.disableMousewheel = options.disableMousewheel;
+ this.isOpen = options.isOpen;
+ this.minuteStep = options.minuteStep;
+ this.modalBackdrop = options.modalBackdrop;
+ this.orientation = options.orientation;
+ this.secondStep = options.secondStep;
+ this.snapToStep = options.snapToStep;
+ this.showInputs = options.showInputs;
+ this.showMeridian = options.showMeridian;
+ this.showSeconds = options.showSeconds;
+ this.template = options.template;
+ this.appendWidgetTo = options.appendWidgetTo;
+ this.showWidgetOnAddonClick = options.showWidgetOnAddonClick;
+ this.icons = options.icons;
+ this.maxHours = options.maxHours;
+ this.explicitMode = options.explicitMode; // If true 123 = 1:23, 12345 = 1:23:45, else invalid.
+
+ this.handleDocumentClick = function (e) {
+ var self = e.data.scope;
+ // This condition was inspired by bootstrap-datepicker.
+ // The element the timepicker is invoked on is the input but it has a sibling for addon/button.
+ if (!(self.$element.parent().find(e.target).length ||
+ self.$widget.is(e.target) ||
+ self.$widget.find(e.target).length)) {
+ self.hideWidget();
+ }
+ };
+
+ this._init();
+ };
+
+ Timepicker.prototype = {
+
+ constructor: Timepicker,
+ _init: function() {
+ var self = this;
+
+ if (this.showWidgetOnAddonClick && (this.$element.parent().hasClass('input-group') && this.$element.parent().hasClass('bootstrap-timepicker'))) {
+ this.$element.parent('.input-group.bootstrap-timepicker').find('.input-group-addon').on({
+ 'click.timepicker': $.proxy(this.showWidget, this)
+ });
+ this.$element.on({
+ 'focus.timepicker': $.proxy(this.highlightUnit, this),
+ 'click.timepicker': $.proxy(this.highlightUnit, this),
+ 'keydown.timepicker': $.proxy(this.elementKeydown, this),
+ 'blur.timepicker': $.proxy(this.blurElement, this),
+ 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this)
+ });
+ } else {
+ if (this.template) {
+ this.$element.on({
+ 'focus.timepicker': $.proxy(this.showWidget, this),
+ 'click.timepicker': $.proxy(this.showWidget, this),
+ 'blur.timepicker': $.proxy(this.blurElement, this),
+ 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this)
+ });
+ } else {
+ this.$element.on({
+ 'focus.timepicker': $.proxy(this.highlightUnit, this),
+ 'click.timepicker': $.proxy(this.highlightUnit, this),
+ 'keydown.timepicker': $.proxy(this.elementKeydown, this),
+ 'blur.timepicker': $.proxy(this.blurElement, this),
+ 'mousewheel.timepicker DOMMouseScroll.timepicker': $.proxy(this.mousewheel, this)
+ });
+ }
+ }
+
+ if (this.template !== false) {
+ this.$widget = $(this.getTemplate()).on('click', $.proxy(this.widgetClick, this));
+ } else {
+ this.$widget = false;
+ }
+
+ if (this.showInputs && this.$widget !== false) {
+ this.$widget.find('input').each(function() {
+ $(this).on({
+ 'click.timepicker': function() { $(this).select(); },
+ 'keydown.timepicker': $.proxy(self.widgetKeydown, self),
+ 'keyup.timepicker': $.proxy(self.widgetKeyup, self)
+ });
+ });
+ }
+
+ this.setDefaultTime(this.defaultTime);
+ },
+
+ blurElement: function() {
+ this.highlightedUnit = null;
+ this.updateFromElementVal();
+ },
+
+ clear: function() {
+ this.hour = '';
+ this.minute = '';
+ this.second = '';
+ this.meridian = '';
+
+ this.$element.val('');
+ },
+
+ decrementHour: function() {
+ if (this.showMeridian) {
+ if (this.hour === 1) {
+ this.hour = 12;
+ } else if (this.hour === 12) {
+ this.hour--;
+
+ return this.toggleMeridian();
+ } else if (this.hour === 0) {
+ this.hour = 11;
+
+ return this.toggleMeridian();
+ } else {
+ this.hour--;
+ }
+ } else {
+ if (this.hour <= 0) {
+ this.hour = this.maxHours - 1;
+ } else {
+ this.hour--;
+ }
+ }
+ },
+
+ decrementMinute: function(step) {
+ var newVal;
+
+ if (step) {
+ newVal = this.minute - step;
+ } else {
+ newVal = this.minute - this.minuteStep;
+ }
+
+ if (newVal < 0) {
+ this.decrementHour();
+ this.minute = newVal + 60;
+ } else {
+ this.minute = newVal;
+ }
+ },
+
+ decrementSecond: function() {
+ var newVal = this.second - this.secondStep;
+
+ if (newVal < 0) {
+ this.decrementMinute(true);
+ this.second = newVal + 60;
+ } else {
+ this.second = newVal;
+ }
+ },
+
+ elementKeydown: function(e) {
+ switch (e.which) {
+ case 9: //tab
+ if (e.shiftKey) {
+ if (this.highlightedUnit === 'hour') {
+ this.hideWidget();
+ break;
+ }
+ this.highlightPrevUnit();
+ } else if ((this.showMeridian && this.highlightedUnit === 'meridian') || (this.showSeconds && this.highlightedUnit === 'second') || (!this.showMeridian && !this.showSeconds && this.highlightedUnit ==='minute')) {
+ this.hideWidget();
+ break;
+ } else {
+ this.highlightNextUnit();
+ }
+ e.preventDefault();
+ this.updateFromElementVal();
+ break;
+ case 27: // escape
+ this.updateFromElementVal();
+ break;
+ case 37: // left arrow
+ e.preventDefault();
+ this.highlightPrevUnit();
+ this.updateFromElementVal();
+ break;
+ case 38: // up arrow
+ e.preventDefault();
+ switch (this.highlightedUnit) {
+ case 'hour':
+ this.incrementHour();
+ this.highlightHour();
+ break;
+ case 'minute':
+ this.incrementMinute();
+ this.highlightMinute();
+ break;
+ case 'second':
+ this.incrementSecond();
+ this.highlightSecond();
+ break;
+ case 'meridian':
+ this.toggleMeridian();
+ this.highlightMeridian();
+ break;
+ }
+ this.update();
+ break;
+ case 39: // right arrow
+ e.preventDefault();
+ this.highlightNextUnit();
+ this.updateFromElementVal();
+ break;
+ case 40: // down arrow
+ e.preventDefault();
+ switch (this.highlightedUnit) {
+ case 'hour':
+ this.decrementHour();
+ this.highlightHour();
+ break;
+ case 'minute':
+ this.decrementMinute();
+ this.highlightMinute();
+ break;
+ case 'second':
+ this.decrementSecond();
+ this.highlightSecond();
+ break;
+ case 'meridian':
+ this.toggleMeridian();
+ this.highlightMeridian();
+ break;
+ }
+
+ this.update();
+ break;
+ }
+ },
+
+ getCursorPosition: function() {
+ var input = this.$element.get(0);
+
+ if ('selectionStart' in input) {// Standard-compliant browsers
+
+ return input.selectionStart;
+ } else if (document.selection) {// IE fix
+ input.focus();
+ var sel = document.selection.createRange(),
+ selLen = document.selection.createRange().text.length;
+
+ sel.moveStart('character', - input.value.length);
+
+ return sel.text.length - selLen;
+ }
+ },
+
+ getTemplate: function() {
+ var template,
+ hourTemplate,
+ minuteTemplate,
+ secondTemplate,
+ meridianTemplate,
+ templateContent;
+
+ if (this.showInputs) {
+ hourTemplate = '';
+ minuteTemplate = '';
+ secondTemplate = '';
+ meridianTemplate = '';
+ } else {
+ hourTemplate = '';
+ minuteTemplate = '';
+ secondTemplate = '';
+ meridianTemplate = '';
+ }
+
+ templateContent = '