diff --git a/themes/bootstrap/public/bower.json b/themes/bootstrap/public/bower.json index b7ab1e9..3339ae9 100644 --- a/themes/bootstrap/public/bower.json +++ b/themes/bootstrap/public/bower.json @@ -22,6 +22,8 @@ "jquery": "2", "jquery-color": "^2.1.2", "jquery-sparkline": "^2.1.3", - "clipboard": "^1.5.9" + "clipboard": "^1.5.9", + "jquery-load-template": "^1.5.6", + "moment": "^2.11.2" } } diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/.bower.json b/themes/bootstrap/public/bower_components/jquery-load-template/.bower.json new file mode 100644 index 0000000..eb9fbd7 --- /dev/null +++ b/themes/bootstrap/public/bower_components/jquery-load-template/.bower.json @@ -0,0 +1,43 @@ +{ + "name": "jquery-load-template", + "homepage": "http://codepb.github.io/jquery-template/", + "authors": [ + "Paul Burgess " + ], + "description": "jQuery plugin for loading and using templates. The plugin is designed to be simple yet powerful, and supports loading templates from within the page, or using AJAX to load html files.", + "repository": { + "type": "git", + "url": "https://github.com/codepb/jquery-template.git" + }, + "main": "dist/jquery.loadTemplate-1.5.6.js", + "keywords": [ + "templates", + "templating", + "jquery-plugin" + ], + "ignore": [ + "Examples", + "tests", + ".gitattributes", + ".gitignore", + ".travis.yml", + "loadTemplate.jquery.json", + "MIT-LICENSE.txt", + "package.json", + "readme.md" + ], + "dependencies": { + "jquery": ">=1.8" + }, + "version": "1.5.6", + "_release": "1.5.6", + "_resolution": { + "type": "version", + "tag": "1.5.6", + "commit": "54c882c2aefa361e6faa7cdfc6abcf8c68bd505b" + }, + "_source": "git://github.com/codepb/jquery-template.git", + "_target": "^1.5.6", + "_originalSource": "jquery-load-template", + "_direct": true +} \ No newline at end of file diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/bower.json b/themes/bootstrap/public/bower_components/jquery-load-template/bower.json new file mode 100644 index 0000000..1c946fa --- /dev/null +++ b/themes/bootstrap/public/bower_components/jquery-load-template/bower.json @@ -0,0 +1,32 @@ +{ + "name": "jquery-load-template", + "homepage": "http://codepb.github.io/jquery-template/", + "authors": [ + "Paul Burgess " + ], + "description": "jQuery plugin for loading and using templates. The plugin is designed to be simple yet powerful, and supports loading templates from within the page, or using AJAX to load html files.", + "repository": { + "type": "git", + "url": "https://github.com/codepb/jquery-template.git" + }, + "main": "dist/jquery.loadTemplate-1.5.6.js", + "keywords": [ + "templates", + "templating", + "jquery-plugin" + ], + "ignore": [ + "Examples", + "tests", + ".gitattributes", + ".gitignore", + ".travis.yml", + "loadTemplate.jquery.json", + "MIT-LICENSE.txt", + "package.json", + "readme.md" + ], + "dependencies": { + "jquery": ">=1.8" + } +} diff --git a/themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate-1.5.6.js b/themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate-1.5.6.js new file mode 100644 index 0000000..d0f8954 --- /dev/null +++ b/themes/bootstrap/public/bower_components/jquery-load-template/dist/jquery.loadTemplate-1.5.6.js @@ -0,0 +1,542 @@ +(function ($) { + "use strict"; + var templates = {}, + queue = {}, + formatters = {}, + isArray; + + function loadTemplate(template, data, options) { + var $that = this, + $template, + isFile, + settings; + + data = data || {}; + + settings = $.extend(true, { + // These are the defaults. + async: true, + overwriteCache: false, + complete: null, + success: null, + error: function () { + $(this).each(function () { + $(this).html(settings.errorMessage); + }); + }, + errorMessage: "There was an error loading the template.", + paged: false, + pageNo: 1, + elemPerPage: 10, + append: false, + prepend: false, + beforeInsert: null, + afterInsert: null, + bindingOptions: { + ignoreUndefined: false, + ignoreNull: false, + ignoreEmptyString: false + } + }, options); + + if ($.type(data) === "array") { + isArray = true; + return processArray.call(this, template, data, settings); + } + + if (!containsSlashes(template)) { + $template = $(template); + if (typeof template === 'string' && template.indexOf('#') === 0) { + settings.isFile = false; + } + } + + isFile = settings.isFile || (typeof settings.isFile === "undefined" && (typeof $template === "undefined" || $template.length === 0)); + + if (isFile && !settings.overwriteCache && templates[template]) { + prepareTemplateFromCache(template, $that, data, settings); + } else if (isFile && !settings.overwriteCache && templates.hasOwnProperty(template)) { + addToQueue(template, $that, data, settings); + } else if (isFile) { + loadAndPrepareTemplate(template, $that, data, settings); + } else { + loadTemplateFromDocument($template, $that, data, settings); + } + return this; + } + + function addTemplateFormatter(key, formatter) { + if (formatter) { + formatters[key] = formatter; + } else { + formatters = $.extend(formatters, key); + } + } + + function containsSlashes(str) { + return typeof str === "string" && str.indexOf("/") > -1; + } + + function processArray(template, data, settings) { + settings = settings || {}; + var $that = this, + todo = data.length, + doPrepend = settings.prepend && !settings.append, + done = 0, + success = 0, + errored = false, + errorObjects = [], + newOptions; + + if (settings.paged) { + var startNo = (settings.pageNo - 1) * settings.elemPerPage; + data = data.slice(startNo, startNo + settings.elemPerPage); + todo = data.length; + } + + newOptions = $.extend( + {}, + settings, + { + async: false, + complete: function (data) { + if (this.html) { + var insertedElement; + if (doPrepend) { + insertedElement = $(this.html()).prependTo($that); + } else { + insertedElement = $(this.html()).appendTo($that); + } + if (settings.afterInsert && data) { + settings.afterInsert(insertedElement, data); + } + } + done++; + if (done === todo || errored) { + if (errored && settings && typeof settings.error === "function") { + settings.error.call($that, errorObjects); + } + if (settings && typeof settings.complete === "function") { + settings.complete(); + } + } + }, + success: function () { + success++; + if (success === todo) { + if (settings && typeof settings.success === "function") { + settings.success(); + } + } + }, + error: function (e) { + errored = true; + errorObjects.push(e); + } + } + ); + + if (!settings.append && !settings.prepend) { + $that.html(""); + } + + if (doPrepend) data.reverse(); + $(data).each(function () { + var $div = $("
"); + loadTemplate.call($div, template, this, newOptions); + if (errored) { + return false; + } + }); + + return this; + } + + function addToQueue(template, selection, data, settings) { + if (queue[template]) { + queue[template].push({ data: data, selection: selection, settings: settings }); + } else { + queue[template] = [{ data: data, selection: selection, settings: settings}]; + } + } + + function prepareTemplateFromCache(template, selection, data, settings) { + var $templateContainer = templates[template].clone(); + + prepareTemplate.call(selection, $templateContainer, data, settings); + if (typeof settings.success === "function") { + settings.success(); + } + } + + function uniqueId() { + return new Date().getTime(); + } + + function urlAvoidCache(url) { + if (url.indexOf('?') !== -1) { + return url + "&_=" + uniqueId(); + } + else { + return url + "?_=" + uniqueId(); + } + } + + function loadAndPrepareTemplate(template, selection, data, settings) { + var $templateContainer = $("
"); + + templates[template] = null; + var templateUrl = template; + if (settings.overwriteCache) { + templateUrl = urlAvoidCache(templateUrl); + } + $.ajax({ + url: templateUrl, + async: settings.async, + success: function (templateContent) { + $templateContainer.html(templateContent); + handleTemplateLoadingSuccess($templateContainer, template, selection, data, settings); + }, + error: function (e) { + handleTemplateLoadingError(template, selection, data, settings, e); + } + }); + } + + function loadTemplateFromDocument($template, selection, data, settings) { + var $templateContainer = $("
"); + + if ($template.is("script") || $template.is("template")) { + $template = $.parseHTML($.trim($template.html())); + } + + $templateContainer.html($template); + prepareTemplate.call(selection, $templateContainer, data, settings); + + if (typeof settings.success === "function") { + settings.success(); + } + } + + function prepareTemplate(template, data, settings) { + bindData(template, data, settings); + + $(this).each(function () { + var $templateHtml = $(template.html()); + if (settings.beforeInsert) { + settings.beforeInsert($templateHtml, data); + } + if (settings.append) { + + $(this).append($templateHtml); + } else if (settings.prepend) { + $(this).prepend($templateHtml); + } else { + $(this).html($templateHtml); + } + if (settings.afterInsert && !isArray) { + settings.afterInsert($templateHtml, data); + } + }); + + if (typeof settings.complete === "function") { + settings.complete.call($(this), data); + } + } + + function handleTemplateLoadingError(template, selection, data, settings, error) { + var value; + + if (typeof settings.error === "function") { + settings.error.call(selection, error); + } + + $(queue[template]).each(function (key, value) { + if (typeof value.settings.error === "function") { + value.settings.error.call(value.selection, error); + } + }); + + if (typeof settings.complete === "function") { + settings.complete.call(selection); + } + + while (queue[template] && (value = queue[template].shift())) { + if (typeof value.settings.complete === "function") { + value.settings.complete.call(value.selection); + } + } + + if (typeof queue[template] !== 'undefined' && queue[template].length > 0) { + queue[template] = []; + } + } + + function handleTemplateLoadingSuccess($templateContainer, template, selection, data, settings) { + var value; + + templates[template] = $templateContainer.clone(); + prepareTemplate.call(selection, $templateContainer, data, settings); + + if (typeof settings.success === "function") { + settings.success.call(selection); + } + + while (queue[template] && (value = queue[template].shift())) { + prepareTemplate.call(value.selection, templates[template].clone(), value.data, value.settings); + if (typeof value.settings.success === "function") { + value.settings.success.call(value.selection); + } + } + } + + function bindData(template, data, settings) { + data = data || {}; + + processElements("data-content", template, data, settings, function ($elem, value) { + $elem.html(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-content-append", template, data, settings, function ($elem, value) { + $elem.append(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-content-prepend", template, data, settings, function ($elem, value) { + $elem.prepend(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-content-text", template, data, settings, function ($elem, value) { + $elem.text(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-innerHTML", template, data, settings, function ($elem, value) { + $elem.html(applyFormatters($elem, value, "content", settings)); + }); + + processElements("data-src", template, data, settings, function ($elem, value) { + $elem.attr("src", applyFormatters($elem, value, "src", settings)); + }, function ($elem) { + $elem.remove(); + }); + + processElements("data-href", template, data, settings, function ($elem, value) { + $elem.attr("href", applyFormatters($elem, value, "href", settings)); + }, function ($elem) { + $elem.remove(); + }); + + processElements("data-alt", template, data, settings, function ($elem, value) { + $elem.attr("alt", applyFormatters($elem, value, "alt", settings)); + }); + + processElements("data-id", template, data, settings, function ($elem, value) { + $elem.attr("id", applyFormatters($elem, value, "id", settings)); + }); + + processElements("data-value", template, data, settings, function ($elem, value) { + $elem.attr("value", applyFormatters($elem, value, "value", settings)); + }); + + processElements("data-class", template, data, settings, function ($elem, value) { + $elem.addClass(applyFormatters($elem, value, "class", settings)); + }); + + processElements("data-link", template, data, settings, function ($elem, value) { + var $linkElem = $(""); + $linkElem.attr("href", applyFormatters($elem, value, "link", settings)); + $linkElem.html($elem.html()); + $elem.html($linkElem); + }); + + processElements("data-link-wrap", template, data, settings, function ($elem, value) { + var $linkElem = $(""); + $linkElem.attr("href", applyFormatters($elem, value, "link-wrap", settings)); + $elem.wrap($linkElem); + }); + + processElements("data-options", template, data, settings, function ($elem, value) { + $(value).each(function () { + var $option = $("
");o.call(M,K,this,G);if(E){return false}});return this}function c(D,B,A,C){if(v[D]){v[D].push({data:A,selection:B,settings:C})}else{v[D]=[{data:A,selection:B,settings:C}]}}function r(E,C,B,D){var A=w[E].clone();q.call(C,A,B,D);if(typeof D.success==="function"){D.success()}}function x(){return new Date().getTime()}function y(A){if(A.indexOf("?")!==-1){return A+"&_="+x()}else{return A+"?_="+x()}}function n(E,C,B,D){var A=a("
");w[E]=null;var F=E;if(D.overwriteCache){F=y(F)}a.ajax({url:F,async:D.async,success:function(G){A.html(G);l(A,E,C,B,D)},error:function(G){k(E,C,B,D,G)}})}function p(A,D,C,E){var B=a("
");if(A.is("script")||A.is("template")){A=a.parseHTML(a.trim(A.html()))}B.html(A);q.call(D,B,C,E);if(typeof E.success==="function"){E.success()}}function q(C,A,B){f(C,A,B);a(this).each(function(){var D=a(C.html());if(B.beforeInsert){B.beforeInsert(D,A)}if(B.append){a(this).append(D)}else{if(B.prepend){a(this).prepend(D)}else{a(this).html(D)}}if(B.afterInsert&&!m){B.afterInsert(D,A)}});if(typeof B.complete==="function"){B.complete.call(a(this),A)}}function k(E,C,A,D,B){var F;if(typeof D.error==="function"){D.error.call(C,B)}a(v[E]).each(function(G,H){if(typeof H.settings.error==="function"){H.settings.error.call(H.selection,B)}});if(typeof D.complete==="function"){D.complete.call(C)}while(v[E]&&(F=v[E].shift())){if(typeof F.settings.complete==="function"){F.settings.complete.call(F.selection)}}if(typeof v[E]!=="undefined"&&v[E].length>0){v[E]=[]}}function l(A,E,C,B,D){var F;w[E]=A.clone();q.call(C,A,B,D);if(typeof D.success==="function"){D.success.call(C)}while(v[E]&&(F=v[E].shift())){q.call(F.selection,w[E].clone(),F.data,F.settings);if(typeof F.settings.success==="function"){F.settings.success.call(F.selection)}}}function f(C,A,B){A=A||{};u("data-content",C,A,B,function(D,E){D.html(e(D,E,"content",B))});u("data-content-append",C,A,B,function(D,E){D.append(e(D,E,"content",B))});u("data-content-prepend",C,A,B,function(D,E){D.prepend(e(D,E,"content",B))});u("data-content-text",C,A,B,function(D,E){D.text(e(D,E,"content",B))});u("data-innerHTML",C,A,B,function(D,E){D.html(e(D,E,"content",B))});u("data-src",C,A,B,function(D,E){D.attr("src",e(D,E,"src",B))},function(D){D.remove()});u("data-href",C,A,B,function(D,E){D.attr("href",e(D,E,"href",B))},function(D){D.remove()});u("data-alt",C,A,B,function(D,E){D.attr("alt",e(D,E,"alt",B))});u("data-id",C,A,B,function(D,E){D.attr("id",e(D,E,"id",B))});u("data-value",C,A,B,function(D,E){D.attr("value",e(D,E,"value",B))});u("data-class",C,A,B,function(D,E){D.addClass(e(D,E,"class",B))});u("data-link",C,A,B,function(D,F){var E=a("");E.attr("href",e(D,F,"link",B));E.html(D.html());D.html(E)});u("data-link-wrap",C,A,B,function(D,F){var E=a("");E.attr("href",e(D,F,"link-wrap",B));D.wrap(E)});u("data-options",C,A,B,function(D,E){a(E).each(function(){var F=a("