From ad405c7045c6e242080ec9d3ce4c9e586b517c4f Mon Sep 17 00:00:00 2001 From: Daniel Schmitzer Date: Thu, 14 Jan 2016 14:55:36 +0000 Subject: - Testweise 4 git-svn-id: https://[internal]/wordpress/plugins/wpsg4@5261 0d5edaf7-2b12-4e95-93f4-047927463d4b --- views/js/admin.js | 193 ++ views/js/ajax.js | 0 views/js/ajaxupload.js | 672 +++++++ views/js/editable.js | 576 ++++++ views/js/frontend.js | 121 ++ views/js/jquery-cluetip-master/.gitignore | 2 + .../js/jquery-cluetip-master/images/darrowdown.gif | Bin 0 -> 69 bytes .../js/jquery-cluetip-master/images/darrowleft.gif | Bin 0 -> 76 bytes .../jquery-cluetip-master/images/darrowright.gif | Bin 0 -> 77 bytes views/js/jquery-cluetip-master/images/darrowup.gif | Bin 0 -> 69 bytes views/js/jquery-cluetip-master/jquery.cluetip.css | 241 +++ views/js/jquery-cluetip-master/jquery.cluetip.js | 880 +++++++++ .../js/jquery-cluetip-master/jquery.cluetip.min.js | 7 + .../dist/additional-methods.js | 617 ++++++ .../dist/additional-methods.min.js | 2 + .../dist/jquery.validate.js | 1235 ++++++++++++ .../dist/jquery.validate.min.js | 1237 ++++++++++++ views/js/jquery.cookie.js | 117 ++ views/js/jquery.validationEngine-de.js | 131 ++ views/js/jquery.validationEngine.js | 2077 ++++++++++++++++++++ views/js/mce_plugin.js | 45 + views/js/wpsg_staffel.js | 117 ++ 22 files changed, 8270 insertions(+) create mode 100644 views/js/admin.js create mode 100644 views/js/ajax.js create mode 100644 views/js/ajaxupload.js create mode 100644 views/js/editable.js create mode 100644 views/js/frontend.js create mode 100644 views/js/jquery-cluetip-master/.gitignore create mode 100644 views/js/jquery-cluetip-master/images/darrowdown.gif create mode 100644 views/js/jquery-cluetip-master/images/darrowleft.gif create mode 100644 views/js/jquery-cluetip-master/images/darrowright.gif create mode 100644 views/js/jquery-cluetip-master/images/darrowup.gif create mode 100644 views/js/jquery-cluetip-master/jquery.cluetip.css create mode 100644 views/js/jquery-cluetip-master/jquery.cluetip.js create mode 100644 views/js/jquery-cluetip-master/jquery.cluetip.min.js create mode 100644 views/js/jquery-validation-1.11.1/dist/additional-methods.js create mode 100644 views/js/jquery-validation-1.11.1/dist/additional-methods.min.js create mode 100644 views/js/jquery-validation-1.11.1/dist/jquery.validate.js create mode 100644 views/js/jquery-validation-1.11.1/dist/jquery.validate.min.js create mode 100644 views/js/jquery.cookie.js create mode 100644 views/js/jquery.validationEngine-de.js create mode 100644 views/js/jquery.validationEngine.js create mode 100644 views/js/mce_plugin.js create mode 100644 views/js/wpsg_staffel.js (limited to 'views/js') diff --git a/views/js/admin.js b/views/js/admin.js new file mode 100644 index 0000000..4c0f7b6 --- /dev/null +++ b/views/js/admin.js @@ -0,0 +1,193 @@ +wpsg_number_format = function (number, decimals, dec_point, thousands_sep) { + + var n = !isFinite(+number) ? 0 : + number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), + sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' : dec_point, + s = '', + toFixedFix = function (n, prec) { + var k = Math.pow(10, prec); + return '' + Math.round(n * k) / k; }; + s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); + if (s[0].length > 3) { + s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep); } + if ((s[1] || '').length < prec) { + s[1] = s[1] || ''; + s[1] += new Array(prec - s[1].length + 1).join('0'); + } return s.join(dec); + }; + + var wpsg_Tablefix = function(e, ui) { + + ui.children().each(function() { + + jQuery(this).width(jQuery(this).width()); + + } ); + + return ui; + + }; + +jQuery.fn.tipTip = function() { + + if (jQuery(this).hasClass('tipTip')) return; + jQuery(this).addClass('tipTip'); + + jQuery(this).cluetip( { + width: '400px', + height: '400px', + activation: 'click', + sticky: true, + /*mouseOutClose: 'both',*/ + closePosition: 'title', + arrows: true, + closeText: 'Schließen', + onActivate: function() { + + jQuery('#cluetip').hide(); + + }, + onShow: function() { + + jQuery('.cluetip-title').prepend(jQuery('.cluetip-inner h1').first().text()); + jQuery('.cluetip-inner h1').first().remove(); + + jQuery('.cluetip-inner').css('overflow-y', 'show'); + jQuery('.cluetip-inner').css('height', 'auto'); + + var height_content = jQuery('.cluetip-inner').outerHeight(); + var height_title = jQuery('.cluetip-title').outerHeight(); + + if (height_content < 400) + { + + jQuery('.cluetip-outer').height((height_content + height_title) + "px"); + + } + else + { + + jQuery('.cluetip-outer').height("400px"); + + jQuery('.cluetip-inner').css('overflow-y', 'scroll'); + jQuery('.cluetip-inner').css('height', '332px'); + + } + + } + } ); + +}; + +jQuery.fn.wpsg_adminbox = function(options) { + + return this.each(function() { + + var adminbox_id = jQuery(this).attr("id"); + + jQuery(this).find('.title').bind('click', function() { + + var content = jQuery(this).next(); + + if (content.is(':visible')) + { + + content.hide(); + jQuery(this).css('border-bottom', '1px solid #AAAAAA'); + jQuery.cookie(adminbox_id, '0', { expires: 14000 } ); + + } + else + { + + content.show(); + jQuery(this).css('border-bottom', '0px'); + jQuery.cookie(adminbox_id, '1', { expires: 14000 } ); + + } + + } ); + + if (jQuery.cookie(adminbox_id) == null || jQuery.cookie(adminbox_id) == 0) + { + + jQuery(this).find('.title').click(); + + } + + } ); + +} + +jQuery.fn.wpsg_tab = function(options) { + + return this.each(function() { + + var tab_obj = jQuery(this); + + // Init + tab_obj.find('.tabcontent').hide(); + tab_obj.find('.tab').removeClass('akttab'); + + var aktTab = 1; + + if (jQuery.cookie(options['cookiename']) != null && jQuery.cookie(options['cookiename']) > 0) + { + aktTab = jQuery.cookie(options['cookiename']); + } + + jQuery('#tab' + aktTab).addClass('akttab'); + jQuery('#tabcontent' + aktTab).show(); + + if (typeof options['tab' + aktTab] == 'function') + { + options['tab' + aktTab](); + } + + tab_obj.find('.tab').bind('click', function() { + + tab_obj.find('.tab').removeClass('akttab'); + tab_obj.find('.tabcontent').hide(); + + jQuery(this).addClass('akttab'); + + var strID = jQuery(this).attr("id").replace(/tab/, ''); + jQuery.cookie(options['cookiename'], strID, { expires: 14000 } ); + + jQuery('#tabcontent' + strID).show(); + + if (typeof options['tab' + strID] == 'function') + { + options['tab' + strID](); + } + + } ); + + } ); + +}; + +/** + * jPlot - Custom Formatter functions + */ +wpsg_statistics_number_format = function (formatString, value) { + return wpsg_number_format(value, 2, ',', '.'); +} + +wpsg_statistics_integer_format = function (formatString, value) { + return wpsg_number_format(value, 0, ',', '.'); +} + +function wpsg_in_array(needle, haystack) +{ + + var length = haystack.length; + + for(var i = 0; i < length; i++) { + + if (haystack[i] == needle) return true; + + } + + return false; + +} diff --git a/views/js/ajax.js b/views/js/ajax.js new file mode 100644 index 0000000..e69de29 diff --git a/views/js/ajaxupload.js b/views/js/ajaxupload.js new file mode 100644 index 0000000..a704008 --- /dev/null +++ b/views/js/ajaxupload.js @@ -0,0 +1,672 @@ +/** + * AJAX Upload ( http://valums.com/ajax-upload/ ) + * Copyright (c) Andris Valums + * Licensed under the MIT license ( http://valums.com/mit-license/ ) + * Thanks to Gary Haran, David Mark, Corey Burns and others for contributions + */ +(function () { + /* global window */ + /* jslint browser: true, devel: true, undef: true, nomen: true, bitwise: true, regexp: true, newcap: true, immed: true */ + + /** + * Wrapper for FireBug's console.log + */ + function log(){ + if (typeof(console) != 'undefined' && typeof(console.log) == 'function'){ + Array.prototype.unshift.call(arguments, '[Ajax Upload]'); + console.log( Array.prototype.join.call(arguments, ' ')); + } + } + + /** + * Attaches event to a dom element. + * @param {Element} el + * @param type event name + * @param fn callback This refers to the passed element + */ + function addEvent(el, type, fn){ + if (el.addEventListener) { + el.addEventListener(type, fn, false); + } else if (el.attachEvent) { + el.attachEvent('on' + type, function(){ + fn.call(el); + }); + } else { + throw new Error('not supported or DOM not loaded'); + } + } + + /** + * Attaches resize event to a window, limiting + * number of event fired. Fires only when encounteres + * delay of 100 after series of events. + * + * Some browsers fire event multiple times when resizing + * http://www.quirksmode.org/dom/events/resize.html + * + * @param fn callback This refers to the passed element + */ + function addResizeEvent(fn){ + var timeout; + + addEvent(window, 'resize', function(){ + if (timeout){ + clearTimeout(timeout); + } + timeout = setTimeout(fn, 100); + }); + } + + // Needs more testing, will be rewriten for next version + // getOffset function copied from jQuery lib (http://jquery.com/) + if (document.documentElement.getBoundingClientRect){ + // Get Offset using getBoundingClientRect + // http://ejohn.org/blog/getboundingclientrect-is-awesome/ + var getOffset = function(el){ + var box = el.getBoundingClientRect(); + var doc = el.ownerDocument; + var body = doc.body; + var docElem = doc.documentElement; // for ie + var clientTop = docElem.clientTop || body.clientTop || 0; + var clientLeft = docElem.clientLeft || body.clientLeft || 0; + + // In Internet Explorer 7 getBoundingClientRect property is treated as physical, + // while others are logical. Make all logical, like in IE8. + var zoom = 1; + if (body.getBoundingClientRect) { + var bound = body.getBoundingClientRect(); + zoom = (bound.right - bound.left) / body.clientWidth; + } + + if (zoom > 1) { + clientTop = 0; + clientLeft = 0; + } + + var top = box.top / zoom + (window.pageYOffset || docElem && docElem.scrollTop / zoom || body.scrollTop / zoom) - clientTop, left = box.left / zoom + (window.pageXOffset || docElem && docElem.scrollLeft / zoom || body.scrollLeft / zoom) - clientLeft; + + return { + top: top, + left: left + }; + }; + } else { + // Get offset adding all offsets + var getOffset = function(el){ + var top = 0, left = 0; + do { + top += el.offsetTop || 0; + left += el.offsetLeft || 0; + el = el.offsetParent; + } while (el); + + return { + left: left, + top: top + }; + }; + } + + /** + * Returns left, top, right and bottom properties describing the border-box, + * in pixels, with the top-left relative to the body + * @param {Element} el + * @return {Object} Contains left, top, right,bottom + */ + function getBox(el){ + var left, right, top, bottom; + var offset = getOffset(el); + left = offset.left; + top = offset.top; + + right = left + el.offsetWidth; + bottom = top + el.offsetHeight; + + return { + left: left, + right: right, + top: top, + bottom: bottom + }; + } + + /** + * Helper that takes object literal + * and add all properties to element.style + * @param {Element} el + * @param {Object} styles + */ + function addStyles(el, styles){ + for (var name in styles) { + if (styles.hasOwnProperty(name)) { + el.style[name] = styles[name]; + } + } + } + + /** + * Function places an absolutely positioned + * element on top of the specified element + * copying position and dimentions. + * @param {Element} from + * @param {Element} to + */ + function copyLayout(from, to){ + var box = getBox(from); + + addStyles(to, { + position: 'absolute', + left : box.left + 'px', + top : box.top + 'px', + width : from.offsetWidth + 'px', + height : from.offsetHeight + 'px' + }); + } + + /** + * Creates and returns element from html chunk + * Uses innerHTML to create an element + */ + var toElement = (function(){ + var div = document.createElement('div'); + return function(html){ + div.innerHTML = html; + var el = div.firstChild; + return div.removeChild(el); + }; + })(); + + /** + * Function generates unique id + * @return unique id + */ + var getUID = (function(){ + var id = 0; + return function(){ + return 'ValumsAjaxUpload' + id++; + }; + })(); + + /** + * Get file name from path + * @param {String} file path to file + * @return filename + */ + function fileFromPath(file){ + return file.replace(/.*(\/|\\)/, ""); + } + + /** + * Get file extension lowercase + * @param {String} file name + * @return file extenstion + */ + function getExt(file){ + return (-1 !== file.indexOf('.')) ? file.replace(/.*[.]/, '') : ''; + } + + function hasClass(el, name){ + var re = new RegExp('\\b' + name + '\\b'); + return re.test(el.className); + } + function addClass(el, name){ + if ( ! hasClass(el, name)){ + el.className += ' ' + name; + } + } + function removeClass(el, name){ + var re = new RegExp('\\b' + name + '\\b'); + el.className = el.className.replace(re, ''); + } + + function removeNode(el){ + el.parentNode.removeChild(el); + } + + /** + * Easy styling and uploading + * @constructor + * @param button An element you want convert to + * upload button. Tested dimentions up to 500x500px + * @param {Object} options See defaults below. + */ + window.AjaxUpload = function(button, options){ + this._settings = { + // Location of the server-side upload script + action: 'upload.php', + // File upload name + name: 'userfile', + // Additional data to send + data: {}, + // Submit file as soon as it's selected + autoSubmit: true, + // The type of data that you're expecting back from the server. + // html and xml are detected automatically. + // Only useful when you are using json data as a response. + // Set to "json" in that case. + responseType: false, + // Class applied to button when mouse is hovered + hoverClass: 'hover', + // Class applied to button when AU is disabled + disabledClass: 'disabled', + // When user selects a file, useful with autoSubmit disabled + // You can return false to cancel upload + onChange: function(file, extension){ + }, + // Callback to fire before file is uploaded + // You can return false to cancel upload + onSubmit: function(file, extension){ + }, + // Fired when file upload is completed + // WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE! + onComplete: function(file, response){ + } + }; + + // Merge the users options with our defaults + for (var i in options) { + if (options.hasOwnProperty(i)){ + this._settings[i] = options[i]; + } + } + + // button isn't necessary a dom element + if (button.jquery){ + // jQuery object was passed + button = button[0]; + } else if (typeof button == "string") { + if (/^#.*/.test(button)){ + // If jQuery user passes #elementId don't break it + button = button.slice(1); + } + + button = document.getElementById(button); + } + + if ( ! button || button.nodeType !== 1){ + throw new Error("Please make sure that you're passing a valid element"); + } + + if ( button.nodeName.toUpperCase() == 'A'){ + // disable link + addEvent(button, 'click', function(e){ + if (e && e.preventDefault){ + e.preventDefault(); + } else if (window.event){ + window.event.returnValue = false; + } + }); + } + + // DOM element + this._button = button; + // DOM element + this._input = null; + // If disabled clicking on button won't do anything + this._disabled = false; + + // if the button was disabled before refresh if will remain + // disabled in FireFox, let's fix it + this.enable(); + + this._rerouteClicks(); + }; + + // assigning methods to our class + AjaxUpload.prototype = { + setData: function(data){ + this._settings.data = data; + }, + disable: function(){ + addClass(this._button, this._settings.disabledClass); + this._disabled = true; + + var nodeName = this._button.nodeName.toUpperCase(); + if (nodeName == 'INPUT' || nodeName == 'BUTTON'){ + this._button.setAttribute('disabled', 'disabled'); + } + + // hide input + if (this._input){ + // We use visibility instead of display to fix problem with Safari 4 + // The problem is that the value of input doesn't change if it + // has display none when user selects a file + this._input.parentNode.style.visibility = 'hidden'; + } + }, + enable: function(){ + removeClass(this._button, this._settings.disabledClass); + this._button.removeAttribute('disabled'); + this._disabled = false; + + }, + /** + * Creates invisible file input + * that will hover above the button + *
+ */ + _createInput: function(){ + var self = this; + + var input = document.createElement("input"); + input.setAttribute('type', 'file'); + input.setAttribute('name', this._settings.name); + + addStyles(input, { + 'position' : 'absolute', + // in Opera only 'browse' button + // is clickable and it is located at + // the right side of the input + 'right' : 0, + 'margin' : 0, + 'padding' : 0, + 'fontSize' : '480px', + 'cursor' : 'pointer' + }); + + var div = document.createElement("div"); + addStyles(div, { + 'display' : 'block', + 'position' : 'absolute', + 'overflow' : 'hidden', + 'margin' : 0, + 'padding' : 0, + 'opacity' : 0, + // Make sure browse button is in the right side + // in Internet Explorer + 'direction' : 'ltr', + //Max zIndex supported by Opera 9.0-9.2 + 'zIndex': 2147483583 + }); + + // Make sure that element opacity exists. + // Otherwise use IE filter + if ( div.style.opacity !== "0") { + if (typeof(div.filters) == 'undefined'){ + throw new Error('Opacity not supported by the browser'); + } + div.style.filter = "alpha(opacity=0)"; + } + + addEvent(input, 'change', function(){ + + if ( ! input || input.value === ''){ + return; + } + + // Get filename from input, required + // as some browsers have path instead of it + var file = fileFromPath(input.value); + + if (false === self._settings.onChange.call(self, file, getExt(file))){ + self._clearInput(); + return; + } + + // Submit form when value is changed + if (self._settings.autoSubmit) { + self.submit(); + } + }); + + addEvent(input, 'mouseover', function(){ + addClass(self._button, self._settings.hoverClass); + }); + + addEvent(input, 'mouseout', function(){ + removeClass(self._button, self._settings.hoverClass); + + // We use visibility instead of display to fix problem with Safari 4 + // The problem is that the value of input doesn't change if it + // has display none when user selects a file + input.parentNode.style.visibility = 'hidden'; + + }); + + div.appendChild(input); + document.body.appendChild(div); + + this._input = input; + }, + _clearInput : function(){ + if (!this._input){ + return; + } + + removeNode(this._input.parentNode); + this._input = null; + this._createInput(); + + removeClass(this._button, this._settings.hoverClass); + }, + /** + * Function makes sure that when user clicks upload button, + * the this._input is clicked instead + */ + _rerouteClicks: function(){ + var self = this; + + // IE will later display 'access denied' error + // if you use using self._input.click() + // other browsers just ignore click() + + addEvent(self._button, 'mouseover', function(){ + if (self._disabled){ + return; + } + + if ( ! self._input){ + self._createInput(); + } + + var div = self._input.parentNode; + copyLayout(self._button, div); + div.style.visibility = 'visible'; + + }); + + + // commented because we now hide input on mouseleave + /** + * When the window is resized the elements + * can be misaligned if button position depends + * on window size + */ + //addResizeEvent(function(){ + // if (self._input){ + // copyLayout(self._button, self._input.parentNode); + // } + //}); + + }, + /** + * Creates iframe with unique name + * @return {Element} iframe + */ + _createIframe: function(){ + // We can't use getTime, because it sometimes return + // same value in safari :( + var id = getUID(); + + // We can't use following code as the name attribute + // won't be properly registered in IE6, and new window + // on form submit will open + // var iframe = document.createElement('iframe'); + // iframe.setAttribute('name', id); + + var iframe = toElement('