diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 644851db3c..578a32e4ff 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -369,7 +369,6 @@ - @@ -526,7 +525,6 @@ - diff --git a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx index f982e09185..ac59074de3 100644 --- a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx +++ b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx @@ -13,7 +13,6 @@ - diff --git a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs index 40228decaf..5bfa6983d1 100644 --- a/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs +++ b/src/Umbraco.Web.UI/Umbraco/dashboard/UserControlProxy.aspx.designer.cs @@ -48,15 +48,6 @@ namespace Umbraco.Web.UI.Umbraco.Dashboard { /// protected global::ClientDependency.Core.Controls.JsInclude JsInclude4; - /// - /// JsInclude6 control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::ClientDependency.Core.Controls.JsInclude JsInclude6; - /// /// form1 control. /// diff --git a/src/Umbraco.Web.UI/umbraco_client/ui/base2.js b/src/Umbraco.Web.UI/umbraco_client/ui/base2.js deleted file mode 100644 index 80ae31de03..0000000000 --- a/src/Umbraco.Web.UI/umbraco_client/ui/base2.js +++ /dev/null @@ -1,1675 +0,0 @@ -/* - base2 - copyright 2007-2011, Dean Edwards - http://code.google.com/p/base2/ - http://www.opensource.org/licenses/mit-license.php - - Contributors: - Doeke Zanstra -*/ - -var base2 = { - name: "base2", - version: "1.0.2", - exports: - "Base,Package,Abstract,Module,Enumerable,Map,Collection,RegGrp," + - "Undefined,Null,This,True,False,assignID,detect,global", - namespace: "" -}; - -new function(_no_shrink_) { /////////////// BEGIN: CLOSURE /////////////// - -// ========================================================================= -// base2/header.js -// ========================================================================= - -var Undefined = K(), Null = K(null), True = K(true), False = K(false), This = function(){return this}; - -var global = This(); -var base2 = global.base2; - -// private -var _FORMAT = /%([1-9])/g; -var _LTRIM = /^\s\s*/; -var _RTRIM = /\s\s*$/; -var _RESCAPE = /([\/()[\]{}|*+-.,^$?\\])/g; // safe regular expressions -var _BASE = /try/.test(detect) ? /\bbase\b/ : /.*/; // some platforms don't allow decompilation -var _HIDDEN = ["constructor", "toString", "valueOf"]; // only override these when prototyping -var _MSIE_NATIVE_FUNCTION = detect("(jscript)") ? - new RegExp("^" + rescape(isNaN).replace(/isNaN/, "\\w+") + "$") : {test: False}; - -var _counter = 1; -var _slice = Array.prototype.slice; - -_Function_forEach(); // make sure this is initialised - -function assignID(object) { - // Assign a unique ID to an object. - if (!object.base2ID) object.base2ID = "b2_" + _counter++; - return object.base2ID; -}; - -// ========================================================================= -// base2/Base.js -// ========================================================================= - -// http://dean.edwards.name/weblog/2006/03/base/ - -var _subclass = function(_instance, _static) { - // Build the prototype. - base2.__prototyping = this.prototype; - var _prototype = new this; - if (_instance) extend(_prototype, _instance); - delete base2.__prototyping; - - // Create the wrapper for the constructor function. - var _constructor = _prototype.constructor; - function _class() { - // Don't call the constructor function when prototyping. - if (!base2.__prototyping) { - if (this.constructor == arguments.callee || this.__constructing) { - // Instantiation. - this.__constructing = true; - _constructor.apply(this, arguments); - delete this.__constructing; - } else { - // Casting. - return extend(arguments[0], _prototype); - } - } - return this; - }; - _prototype.constructor = _class; - - // Build the static interface. - for (var i in Base) _class[i] = this[i]; - _class.ancestor = this; - _class.base = Undefined; - //_class.init = Undefined; - if (_static) extend(_class, _static); - _class.prototype = _prototype; - if (_class.init) _class.init(); - - // introspection (removed when packed) - ;;; _class["#implements"] = []; - ;;; _class["#implemented_by"] = []; - - return _class; -}; - -var Base = _subclass.call(Object, { - constructor: function() { - if (arguments.length > 0) { - this.extend(arguments[0]); - } - }, - - base: function() { - // Call this method from any other method to invoke the current method's ancestor (super). - }, - - extend: delegate(extend) -}, Base = { - ancestorOf: function(klass) { - return _ancestorOf(this, klass); - }, - - extend: _subclass, - - forEach: function(object, block, context) { - _Function_forEach(this, object, block, context); - }, - - implement: function(source) { - if (typeof source == "function") { - ;;; if (_ancestorOf(Base, source)) { - // introspection (removed when packed) - ;;; this["#implements"].push(source); - ;;; source["#implemented_by"].push(this); - ;;; } - source = source.prototype; - } - // Add the interface using the extend() function. - extend(this.prototype, source); - return this; - } -}); - -// ========================================================================= -// base2/Package.js -// ========================================================================= - -var Package = Base.extend({ - constructor: function(_private, _public) { - this.extend(_public); - if (this.init) this.init(); - - if (this.name && this.name != "base2") { - if (!this.parent) this.parent = base2; - this.parent.addName(this.name, this); - this.namespace = format("var %1=%2;", this.name, String2.slice(this, 1, -1)); - } - - if (_private) { - // This next line gets round a bug in old Mozilla browsers - var JSNamespace = base2.JavaScript ? base2.JavaScript.namespace : ""; - // This string should be evaluated immediately after creating a Package object. - _private.imports = Array2.reduce(csv(this.imports), function(namespace, name) { - var ns = lookup(name) || lookup("JavaScript." + name); - ;;; assert(ns, format("Object not found: '%1'.", name), ReferenceError); - return namespace += ns.namespace; - }, "var base2=(function(){return this.base2})();" + base2.namespace + JSNamespace) + lang.namespace; - - // This string should be evaluated after you have created all of the objects - // that are being exported. - _private.exports = Array2.reduce(csv(this.exports), function(namespace, name) { - var fullName = this.name + "." + name; - this.namespace += "var " + name + "=" + fullName + ";"; - return namespace += "if(!" + fullName + ")" + fullName + "=" + name + ";"; - }, "", this) + "this._label_" + this.name + "();"; - - var pkg = this; - var packageName = String2.slice(this, 1, -1); - _private["_label_" + this.name] = function() { - Package.forEach (pkg, function(object, name) { - if (object && object.ancestorOf == Base.ancestorOf) { - object.toString = K(format("[%1.%2]", packageName, name)); - if (object.prototype.toString == Base.prototype.toString) { - object.prototype.toString = K(format("[object %1.%2]", packageName, name)); - } - } - }); - }; - } - - function lookup(names) { - names = names.split("."); - var value = base2, i = 0; - while (value && names[i] != null) { - value = value[names[i++]]; - } - return value; - }; - }, - - exports: "", - imports: "", - name: "", - namespace: "", - parent: null, - - addName: function(name, value) { - if (!this[name]) { - this[name] = value; - this.exports += "," + name; - this.namespace += format("var %1=%2.%1;", name, this.name); - } - }, - - addPackage: function(name) { - this.addName(name, new Package(null, {name: name, parent: this})); - }, - - toString: function() { - return format("[%1]", this.parent ? String2.slice(this.parent, 1, -1) + "." + this.name : this.name); - } -}); - -// ========================================================================= -// base2/Abstract.js -// ========================================================================= - -var Abstract = Base.extend({ - constructor: function() { - throw new TypeError("Abstract class cannot be instantiated."); - } -}); - -// ========================================================================= -// base2/Module.js -// ========================================================================= - -var _moduleCount = 0; - -var Module = Abstract.extend(null, { - namespace: "", - - extend: function(_interface, _static) { - // Extend a module to create a new module. - var module = this.base(); - var index = _moduleCount++; - module.namespace = ""; - module.partial = this.partial; - module.toString = K("[base2.Module[" + index + "]]"); - Module[index] = module; - // Inherit class methods. - module.implement(this); - // Implement module (instance AND static) methods. - if (_interface) module.implement(_interface); - // Implement static properties and methods. - if (_static) { - extend(module, _static); - if (module.init) module.init(); - } - return module; - }, - - forEach: function(block, context) { - _Function_forEach (Module, this.prototype, function(method, name) { - if (typeOf(method) == "function") { - block.call(context, this[name], name, this); - } - }, this); - }, - - implement: function(_interface) { - var module = this; - var id = module.toString().slice(1, -1); - if (typeof _interface == "function") { - if (!_ancestorOf(_interface, module)) { - this.base(_interface); - } - if (_ancestorOf(Module, _interface)) { - // Implement static methods. - for (var name in _interface) { - if (module[name] === undefined) { - var property = _interface[name]; - if (typeof property == "function" && property.call && _interface.prototype[name]) { - property = _staticModuleMethod(_interface, name); - } - module[name] = property; - } - } - module.namespace += _interface.namespace.replace(/base2\.Module\[\d+\]/g, id); - } - } else { - // Add static interface. - extend(module, _interface); - // Add instance interface. - _extendModule(module, _interface); - } - return module; - }, - - partial: function() { - var module = Module.extend(); - var id = module.toString().slice(1, -1); - // partial methods are already bound so remove the binding to speed things up - module.namespace = this.namespace.replace(/(\w+)=b[^\)]+\)/g, "$1=" + id + ".$1"); - this.forEach(function(method, name) { - module[name] = partial(bind(method, module)); - }); - return module; - } -}); - -function _extendModule(module, _interface) { - var proto = module.prototype; - var id = module.toString().slice(1, -1); - for (var name in _interface) { - var property = _interface[name], namespace = ""; - if (name.charAt(0) == "@") { // object detection - if (detect(name.slice(1))) _extendModule(module, property); - } else if (!proto[name]) { - if (name == name.toUpperCase()) { - namespace = "var " + name + "=" + id + "." + name + ";"; - } else if (typeof property == "function" && property.call) { - namespace = "var " + name + "=base2.lang.bind('" + name + "'," + id + ");"; - proto[name] = _moduleMethod(module, name); - ;;; proto[name]._module = module; // introspection - } - if (module.namespace.indexOf(namespace) == -1) { - module.namespace += namespace; - } - } - } -}; - -function _staticModuleMethod(module, name) { - return function() { - return module[name].apply(module, arguments); - }; -}; - -function _moduleMethod(module, name) { - return function() { - var args = _slice.call(arguments); - args.unshift(this); - return module[name].apply(module, args); - }; -}; - -// ========================================================================= -// base2/Enumerable.js -// ========================================================================= - -var Enumerable = Module.extend({ - every: function(object, test, context) { - var result = true; - try { - forEach (object, function(value, key) { - result = test.call(context, value, key, object); - if (!result) throw StopIteration; - }); - } catch (error) { - if (error != StopIteration) throw error; - } - return !!result; // cast to boolean - }, - - filter: function(object, test, context) { - var i = 0; - return this.reduce(object, function(result, value, key) { - if (test.call(context, value, key, object)) { - result[i++] = value; - } - return result; - }, []); - }, - - invoke: function(object, method) { - // Apply a method to each item in the enumerated object. - var args = _slice.call(arguments, 2); - return this.map(object, (typeof method == "function") ? function(item) { - return item == null ? undefined : method.apply(item, args); - } : function(item) { - return item == null ? undefined : item[method].apply(item, args); - }); - }, - - map: function(object, block, context) { - var result = [], i = 0; - forEach (object, function(value, key) { - result[i++] = block.call(context, value, key, object); - }); - return result; - }, - - pluck: function(object, key) { - return this.map(object, function(item) { - return item == null ? undefined : item[key]; - }); - }, - - reduce: function(object, block, result, context) { - var initialised = arguments.length > 2; - forEach (object, function(value, key) { - if (initialised) { - result = block.call(context, result, value, key, object); - } else { - result = value; - initialised = true; - } - }); - return result; - }, - - some: function(object, test, context) { - return !this.every(object, not(test), context); - } -}); - -// ========================================================================= -// base2/Map.js -// ========================================================================= - -// http://wiki.ecmascript.org/doku.php?id=proposals:dictionary - -var _HASH = "#"; - -var Map = Base.extend({ - constructor: function(values) { - if (values) this.merge(values); - }, - - clear: function() { - for (var key in this) if (key.indexOf(_HASH) == 0) { - delete this[key]; - } - }, - - copy: function() { - base2.__prototyping = true; // not really prototyping but it stops [[construct]] being called - var copy = new this.constructor; - delete base2.__prototyping; - for (var i in this) if (this[i] !== copy[i]) { - copy[i] = this[i]; - } - return copy; - }, - - forEach: function(block, context) { - for (var key in this) if (key.indexOf(_HASH) == 0) { - block.call(context, this[key], key.slice(1), this); - } - }, - - get: function(key) { - return this[_HASH + key]; - }, - - getKeys: function() { - return this.map(II); - }, - - getValues: function() { - return this.map(I); - }, - - // Ancient browsers throw an error if we use "in" as an operator. - has: function(key) { - /*@cc_on @*/ - /*@if (@_jscript_version < 5.5) - return $Legacy.has(this, _HASH + key); - @else @*/ - return _HASH + key in this; - /*@end @*/ - }, - - merge: function(values) { - var put = flip(this.put); - forEach (arguments, function(values) { - forEach (values, put, this); - }, this); - return this; - }, - - put: function(key, value) { - // create the new entry (or overwrite the old entry). - this[_HASH + key] = value; - }, - - remove: function(key) { - delete this[_HASH + key]; - }, - - size: function() { - // this is expensive because we are not storing the keys - var size = 0; - for (var key in this) if (key.indexOf(_HASH) == 0) size++; - return size; - }, - - union: function(values) { - return this.merge.apply(this.copy(), arguments); - } -}); - -Map.implement(Enumerable); - -Map.prototype.filter = function(test, context) { - return this.reduce(function(result, value, key) { - if (!test.call(context, value, key, this)) { - result.remove(key); - } - return result; - }, this.copy(), this); -}; - -// ========================================================================= -// base2/Collection.js -// ========================================================================= - -// A Map that is more array-like (accessible by index). - -// Collection classes have a special (optional) property: Item -// The Item property points to a constructor function. -// Members of the collection must be an instance of Item. - -// The static create() method is responsible for all construction of collection items. -// Instance methods that add new items (add, put, insertAt, putAt) pass *all* of their arguments -// to the static create() method. If you want to modify the way collection items are -// created then you only need to override this method for custom collections. - -var _KEYS = "~"; - -var Collection = Map.extend({ - constructor: function(values) { - this[_KEYS] = new Array2; - this.base(values); - }, - - add: function(key, item) { - // Duplicates not allowed using add(). - // But you can still overwrite entries using put(). - assert(!this.has(key), "Duplicate key '" + key + "'."); - this.put.apply(this, arguments); - }, - - clear: function() { - this.base(); - this[_KEYS].length = 0; - }, - - copy: function() { - var copy = this.base(); - copy[_KEYS] = this[_KEYS].copy(); - return copy; - }, - - forEach: function(block, context) { - var keys = this[_KEYS]; - var length = keys.length; - for (var i = 0; i < length; i++) { - block.call(context, this[_HASH + keys[i]], keys[i], this); - } - }, - - getAt: function(index) { - var key = this[_KEYS].item(index); - return (key === undefined) ? undefined : this[_HASH + key]; - }, - - getKeys: function() { - return this[_KEYS].copy(); - }, - - indexOf: function(key) { - return this[_KEYS].indexOf(String(key)); - }, - - insertAt: function(index, key, item) { - assert(this[_KEYS].item(index) !== undefined, "Index out of bounds."); - assert(!this.has(key), "Duplicate key '" + key + "'."); - this[_KEYS].insertAt(index, String(key)); - this[_HASH + key] = null; // placeholder - this.put.apply(this, _slice.call(arguments, 1)); - }, - - item: function(keyOrIndex) { - return this[typeof keyOrIndex == "number" ? "getAt" : "get"](keyOrIndex); - }, - - put: function(key, item) { - if (!this.has(key)) { - this[_KEYS].push(String(key)); - } - var klass = this.constructor; - if (klass.Item && !instanceOf(item, klass.Item)) { - item = klass.create.apply(klass, arguments); - } - this[_HASH + key] = item; - }, - - putAt: function(index, item) { - arguments[0] = this[_KEYS].item(index); - assert(arguments[0] !== undefined, "Index out of bounds."); - this.put.apply(this, arguments); - }, - - remove: function(key) { - // The remove() method of the Array object can be slow so check if the key exists first. - if (this.has(key)) { - this[_KEYS].remove(String(key)); - delete this[_HASH + key]; - } - }, - - removeAt: function(index) { - var key = this[_KEYS].item(index); - if (key !== undefined) { - this[_KEYS].removeAt(index); - delete this[_HASH + key]; - } - }, - - reverse: function() { - this[_KEYS].reverse(); - return this; - }, - - size: function() { - return this[_KEYS].length; - }, - - slice: function(start, end) { - var sliced = this.copy(); - if (arguments.length > 0) { - var keys = this[_KEYS], removed = keys; - sliced[_KEYS] = Array2(_slice.apply(keys, arguments)); - if (sliced[_KEYS].length) { - removed = removed.slice(0, start); - if (arguments.length > 1) { - removed = removed.concat(keys.slice(end)); - } - } - for (var i = 0; i < removed.length; i++) { - delete sliced[_HASH + removed[i]]; - } - } - return sliced; - }, - - sort: function(compare) { // optimised (refers to _HASH) - if (compare) { - this[_KEYS].sort(bind(function(key1, key2) { - return compare(this[_HASH + key1], this[_HASH + key2], key1, key2); - }, this)); - } else this[_KEYS].sort(); - return this; - }, - - toString: function() { - return "(" + (this[_KEYS] || "") + ")"; - } -}, { - Item: null, // If specified, all members of the collection must be instances of Item. - - create: function(key, item) { - return this.Item ? new this.Item(key, item) : item; - }, - - extend: function(_instance, _static) { - var klass = this.base(_instance); - klass.create = this.create; - if (_static) extend(klass, _static); - if (!klass.Item) { - klass.Item = this.Item; - } else if (typeof klass.Item != "function") { - klass.Item = (this.Item || Base).extend(klass.Item); - } - if (klass.init) klass.init(); - return klass; - } -}); - -// ========================================================================= -// base2/RegGrp.js -// ========================================================================= - -// A collection of regular expressions and their associated replacement values. -// A Base class for creating parsers. - -var _RG_BACK_REF = /\\(\d+)/g, - _RG_ESCAPE_CHARS = /\\./g, - _RG_ESCAPE_BRACKETS = /\(\?[:=!]|\[[^\]]+\]/g, - _RG_BRACKETS = /\(/g, - _RG_LOOKUP = /\$(\d+)/, - _RG_LOOKUP_SIMPLE = /^\$\d+$/; - -var RegGrp = Collection.extend({ - constructor: function(values, ignoreCase) { - this.base(values); - this.ignoreCase = !!ignoreCase; - }, - - ignoreCase: false, - - exec: function(string, override) { // optimised (refers to _HASH/_KEYS) - string += ""; // type-safe - var items = this, keys = this[_KEYS]; - if (!keys.length) return string; - if (override == RegGrp.IGNORE) override = 0; - return string.replace(new RegExp(this, this.ignoreCase ? "gi" : "g"), function(match) { - var item, offset = 1, i = 0; - // Loop through the RegGrp items. - while ((item = items[_HASH + keys[i++]])) { - var next = offset + item.length + 1; - if (arguments[offset]) { // do we have a result? - var replacement = override == null ? item.replacement : override; - switch (typeof replacement) { - case "function": - return replacement.apply(items, _slice.call(arguments, offset, next)); - case "number": - return arguments[offset + replacement]; - default: - return replacement; - } - } - offset = next; - } - return match; - }); - }, - - insertAt: function(index, expression, replacement) { - if (instanceOf(expression, RegExp)) { - arguments[1] = expression.source; - } - return base(this, arguments); - }, - - test: function(string) { - // The slow way to do it. Hopefully, this isn't called too often. :-) - return this.exec(string) != string; - }, - - toString: function() { - var offset = 1; - return "(" + this.map(function(item) { - // Fix back references. - var expression = (item + "").replace(_RG_BACK_REF, function(match, index) { - return "\\" + (offset + Number(index)); - }); - offset += item.length + 1; - return expression; - }).join(")|(") + ")"; - } -}, { - IGNORE: "$0", - - init: function() { - forEach ("add,get,has,put,remove".split(","), function(name) { - _override(this, name, function(expression) { - if (instanceOf(expression, RegExp)) { - arguments[0] = expression.source; - } - return base(this, arguments); - }); - }, this.prototype); - }, - - Item: { - constructor: function(expression, replacement) { - if (replacement == null) replacement = RegGrp.IGNORE; - else if (replacement.replacement != null) replacement = replacement.replacement; - else if (typeof replacement != "function") replacement = String(replacement); - - // does the pattern use sub-expressions? - if (typeof replacement == "string" && _RG_LOOKUP.test(replacement)) { - // a simple lookup? (e.g. "$2") - if (_RG_LOOKUP_SIMPLE.test(replacement)) { - // store the index (used for fast retrieval of matched strings) - replacement = parseInt(replacement.slice(1)); - } else { // a complicated lookup (e.g. "Hello $2 $1") - // build a function to do the lookup - // Improved version by Alexei Gorkov: - var Q = '"'; - replacement = replacement - .replace(/\\/g, "\\\\") - .replace(/"/g, "\\x22") - .replace(/\n/g, "\\n") - .replace(/\r/g, "\\r") - .replace(/\$(\d+)/g, Q + "+(arguments[$1]||" + Q+Q + ")+" + Q) - .replace(/(['"])\1\+(.*)\+\1\1$/, "$1"); - replacement = new Function("return " + Q + replacement + Q); - } - } - - this.length = RegGrp.count(expression); - this.replacement = replacement; - this.toString = K(expression + ""); - }, - - length: 0, - replacement: "" - }, - - count: function(expression) { - // Count the number of sub-expressions in a RegExp/RegGrp.Item. - expression = (expression + "").replace(_RG_ESCAPE_CHARS, "").replace(_RG_ESCAPE_BRACKETS, ""); - return match(expression, _RG_BRACKETS).length; - } -}); - -// ========================================================================= -// lang/package.js -// ========================================================================= - -var lang = { - name: "lang", - version: base2.version, - exports: "assert,assertArity,assertType,base,bind,copy,extend,forEach,format,instanceOf,match,pcopy,rescape,trim,typeOf", - namespace: "" // fixed later -}; - -// ========================================================================= -// lang/assert.js -// ========================================================================= - -function assert(condition, message, ErrorClass) { - if (!condition) { - throw new (ErrorClass || Error)(message || "Assertion failed."); - } -}; - -function assertArity(args, arity, message) { - if (arity == null) arity = args.callee.length; - if (args.length < arity) { - throw new SyntaxError(message || "Not enough arguments."); - } -}; - -function assertType(object, type, message) { - if (type && (typeof type == "function" ? !instanceOf(object, type) : typeOf(object) != type)) { - throw new TypeError(message || "Invalid type."); - } -}; - -// ========================================================================= -// lang/copy.js -// ========================================================================= - -function copy(object) { - // a quick copy - var copy = {}; - for (var i in object) { - copy[i] = object[i]; - } - return copy; -}; - -function pcopy(object) { - // Doug Crockford / Richard Cornford - _dummy.prototype = object; - return new _dummy; -}; - -function _dummy(){}; - -// ========================================================================= -// lang/extend.js -// ========================================================================= - -function base(object, args) { - return object.base.apply(object, args); -}; - -function extend(object, source) { // or extend(object, key, value) - if (object && source) { - if (arguments.length > 2) { // Extending with a key/value pair. - var key = source; - source = {}; - source[key] = arguments[2]; - } - var proto = global[(typeof source == "function" ? "Function" : "Object")].prototype; - // Add constructor, toString etc - if (base2.__prototyping) { - var i = _HIDDEN.length, key; - while ((key = _HIDDEN[--i])) { - var value = source[key]; - if (value != proto[key]) { - if (_BASE.test(value)) { - _override(object, key, value) - } else { - object[key] = value; - } - } - } - } - // Copy each of the source object's properties to the target object. - for (key in source) { - if (proto[key] === undefined) { - var value = source[key]; - // Object detection. - if (key.charAt(0) == "@") { - if (detect(key.slice(1))) extend(object, value); - } else { - // Check for method overriding. - var ancestor = object[key]; - if (ancestor && typeof value == "function") { - if (value != ancestor) { - if (_BASE.test(value)) { - _override(object, key, value); - } else { - value.ancestor = ancestor; - object[key] = value; - } - } - } else { - object[key] = value; - } - } - } - } - } - return object; -}; - -function _ancestorOf(ancestor, fn) { - // Check if a function is in another function's inheritance chain. - while (fn) { - if (!fn.ancestor) return false; - fn = fn.ancestor; - if (fn == ancestor) return true; - } - return false; -}; - -function _override(object, name, method) { - // Override an existing method. - var ancestor = object[name]; - var superObject = base2.__prototyping; // late binding for prototypes - if (superObject && ancestor != superObject[name]) superObject = null; - function _base() { - var previous = this.base; - this.base = superObject ? superObject[name] : ancestor; - var returnValue = method.apply(this, arguments); - this.base = previous; - return returnValue; - }; - _base.method = method; - _base.ancestor = ancestor; - object[name] = _base; - // introspection (removed when packed) - ;;; _base.toString = K(method + ""); -}; - -// ========================================================================= -// lang/forEach.js -// ========================================================================= - -// http://dean.edwards.name/weblog/2006/07/enum/ - -if (typeof StopIteration == "undefined") { - StopIteration = new Error("StopIteration"); -} - -function forEach(object, block, context, fn) { - if (object == null) return; - if (!fn) { - if (typeof object == "function" && object.call) { - // Functions are a special case. - fn = Function; - } else if (typeof object.forEach == "function" && object.forEach != arguments.callee) { - // The object implements a custom forEach method. - object.forEach(block, context); - return; - } else if (typeof object.length == "number") { - // The object is array-like. - _Array_forEach(object, block, context); - return; - } - } - _Function_forEach(fn || Object, object, block, context); -}; - -forEach.csv = function(string, block, context) { - forEach (csv(string), block, context); -}; - -forEach.detect = function(object, block, context) { - forEach (object, function(value, key) { - if (key.charAt(0) == "@") { // object detection - if (detect(key.slice(1))) forEach (value, arguments.callee); - } else block.call(context, value, key, object); - }); -}; - -// These are the two core enumeration methods. All other forEach methods -// eventually call one of these two. - -function _Array_forEach(array, block, context) { - if (array == null) array = global; - var length = array.length || 0, i; // preserve length - if (typeof array == "string") { - for (i = 0; i < length; i++) { - block.call(context, array.charAt(i), i, array); - } - } else { // Cater for sparse arrays. - for (i = 0; i < length; i++) { - /*@cc_on @*/ - /*@if (@_jscript_version < 5.2) - if ($Legacy.has(array, i)) - @else @*/ - if (i in array) - /*@end @*/ - block.call(context, array[i], i, array); - } - } -}; - -function _Function_forEach(fn, object, block, context) { - // http://code.google.com/p/base2/issues/detail?id=10 - - // Run the test for Safari's buggy enumeration. - var Temp = function(){this.i=1}; - Temp.prototype = {i:1}; - var count = 0; - for (var i in new Temp) count++; - - // Overwrite the main function the first time it is called. - _Function_forEach = (count > 1) ? function(fn, object, block, context) { - // Safari fix (pre version 3) - var processed = {}; - for (var key in object) { - if (!processed[key] && fn.prototype[key] === undefined) { - processed[key] = true; - block.call(context, object[key], key, object); - } - } - } : function(fn, object, block, context) { - // Enumerate an object and compare its keys with fn's prototype. - for (var key in object) { - if (fn.prototype[key] === undefined) { - block.call(context, object[key], key, object); - } - } - }; - - _Function_forEach(fn, object, block, context); -}; - -// ========================================================================= -// lang/instanceOf.js -// ========================================================================= - -function instanceOf(object, klass) { - // Handle exceptions where the target object originates from another frame. - // This is handy for JSON parsing (amongst other things). - - if (typeof klass != "function") { - throw new TypeError("Invalid 'instanceOf' operand."); - } - - if (object == null) return false; - - /*@cc_on - // COM objects don't have a constructor - if (typeof object.constructor != "function") { - return typeOf(object) == typeof klass.prototype.valueOf(); - } - @*/ - if (object.constructor == klass) return true; - if (klass.ancestorOf) return klass.ancestorOf(object.constructor); - /*@if (@_jscript_version < 5.1) - // do nothing - @else @*/ - if (object instanceof klass) return true; - /*@end @*/ - - // If the class is a base2 class then it would have passed the test above. - if (Base.ancestorOf == klass.ancestorOf) return false; - - // base2 objects can only be instances of Object. - if (Base.ancestorOf == object.constructor.ancestorOf) return klass == Object; - - switch (klass) { - case Array: // This is the only troublesome one. - return !!(typeof object == "object" && object.join && object.splice); - case Function: - return typeOf(object) == "function"; - case RegExp: - return typeof object.constructor.$1 == "string"; - case Date: - return !!object.getTimezoneOffset; - case String: - case Number: - case Boolean: - return typeOf(object) == typeof klass.prototype.valueOf(); - case Object: - return true; - } - - return false; -}; - -// ========================================================================= -// lang/typeOf.js -// ========================================================================= - -// http://wiki.ecmascript.org/doku.php?id=proposals:typeof - -function typeOf(object) { - var type = typeof object; - switch (type) { - case "object": - return object == null - ? "null" - : typeof object.constructor == "undefined" // COM object - ? _MSIE_NATIVE_FUNCTION.test(object) - ? "function" - : type - : typeof object.constructor.prototype.valueOf(); // underlying type - case "function": - return typeof object.call == "function" ? type : "object"; - default: - return type; - } -}; - -// ========================================================================= -// JavaScript/package.js -// ========================================================================= - -var JavaScript = { - name: "JavaScript", - version: base2.version, - exports: "Array2,Date2,Function2,String2", - namespace: "", // fixed later - - bind: function(host) { - var top = global; - global = host; - forEach.csv(this.exports, function(name2) { - var name = name2.slice(0, -1); - extend(host[name], this[name2]); - this[name2](host[name].prototype); // cast - }, this); - global = top; - return host; - } -}; - -function _createObject2(Native, constructor, generics, extensions) { - // Clone native objects and extend them. - - // Create a Module that will contain all the new methods. - var INative = Module.extend(); - var id = INative.toString().slice(1, -1); - // http://developer.mozilla.org/en/docs/New_in_JavaScript_1.6#Array_and_String_generics - forEach.csv(generics, function(name) { - INative[name] = unbind(Native.prototype[name]); - INative.namespace += format("var %1=%2.%1;", name, id); - }); - forEach (_slice.call(arguments, 3), INative.implement, INative); - - // create a faux constructor that augments the native object - var Native2 = function() { - return INative(this.constructor == INative ? constructor.apply(null, arguments) : arguments[0]); - }; - Native2.prototype = INative.prototype; - - // Remove methods that are already implemented. - for (var name in INative) { - if (name != "prototype" && Native[name]) { - delete INative.prototype[name]; - } - Native2[name] = INative[name]; - } - Native2.ancestor = Object; - delete Native2.extend; - - // remove "lang.bind.." - Native2.namespace = Native2.namespace.replace(/(var (\w+)=)[^,;]+,([^\)]+)\)/g, "$1$3.$2"); - - return Native2; -}; - -// ========================================================================= -// JavaScript/~/Date.js -// ========================================================================= - -// Fix Date.get/setYear() (IE5-7) - -if ((new Date).getYear() > 1900) { - Date.prototype.getYear = function() { - return this.getFullYear() - 1900; - }; - Date.prototype.setYear = function(year) { - return this.setFullYear(year + 1900); - }; -} - -// https://bugs.webkit.org/show_bug.cgi?id=9532 - -var _testDate = new Date(Date.UTC(2006, 1, 20)); -_testDate.setUTCDate(15); -if (_testDate.getUTCHours() != 0) { - forEach.csv("FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds", function(type) { - extend(Date.prototype, "setUTC" + type, function() { - var value = base(this, arguments); - if (value >= 57722401000) { - value -= 3600000; - this.setTime(value); - } - return value; - }); - }); -} - -// ========================================================================= -// JavaScript/~/Function.js -// ========================================================================= - -// Some browsers don't define this. - -Function.prototype.prototype = {}; - -// ========================================================================= -// JavaScript/~/String.js -// ========================================================================= - -// A KHTML bug. - -if ("".replace(/^/, K("$$")) == "$") { - extend(String.prototype, "replace", function(expression, replacement) { - if (typeof replacement == "function") { - var fn = replacement; - replacement = function() { - return String(fn.apply(null, arguments)).split("$").join("$$"); - }; - } - return this.base(expression, replacement); - }); -} - -// ========================================================================= -// JavaScript/Array2.js -// ========================================================================= - -var Array2 = _createObject2( - Array, - Array, - "concat,join,pop,push,reverse,shift,slice,sort,splice,unshift", // generics - Enumerable, { - combine: function(keys, values) { - // Combine two arrays to make a hash. - if (!values) values = keys; - return Array2.reduce(keys, function(hash, key, index) { - hash[key] = values[index]; - return hash; - }, {}); - }, - - contains: function(array, item) { - return Array2.indexOf(array, item) != -1; - }, - - copy: function(array) { - var copy = _slice.call(array); - if (!copy.swap) Array2(copy); // cast to Array2 - return copy; - }, - - flatten: function(array) { - var i = 0; - return Array2.reduce(array, function(result, item) { - if (Array2.like(item)) { - Array2.reduce(item, arguments.callee, result); - } else { - result[i++] = item; - } - return result; - }, []); - }, - - forEach: _Array_forEach, - - indexOf: function(array, item, fromIndex) { - var length = array.length; - if (fromIndex == null) { - fromIndex = 0; - } else if (fromIndex < 0) { - fromIndex = Math.max(0, length + fromIndex); - } - for (var i = fromIndex; i < length; i++) { - if (array[i] === item) return i; - } - return -1; - }, - - insertAt: function(array, index, item) { - Array2.splice(array, index, 0, item); - return item; - }, - - item: function(array, index) { - if (index < 0) index += array.length; // starting from the end - return array[index]; - }, - - lastIndexOf: function(array, item, fromIndex) { - var length = array.length; - if (fromIndex == null) { - fromIndex = length - 1; - } else if (fromIndex < 0) { - fromIndex = Math.max(0, length + fromIndex); - } - for (var i = fromIndex; i >= 0; i--) { - if (array[i] === item) return i; - } - return -1; - }, - - map: function(array, block, context) { - var result = []; - Array2.forEach (array, function(item, index) { - result[index] = block.call(context, item, index, array); - }); - return result; - }, - - remove: function(array, item) { - var index = Array2.indexOf(array, item); - if (index != -1) Array2.removeAt(array, index); - }, - - removeAt: function(array, index) { - Array2.splice(array, index, 1); - }, - - swap: function(array, index1, index2) { - if (index1 < 0) index1 += array.length; // starting from the end - if (index2 < 0) index2 += array.length; - var temp = array[index1]; - array[index1] = array[index2]; - array[index2] = temp; - return array; - } - } -); - -Array2.reduce = Enumerable.reduce; // Mozilla does not implement the thisObj argument - -Array2.like = function(object) { - // is the object like an array? - return typeOf(object) == "object" && typeof object.length == "number"; -}; - -// introspection (removed when packed) -;;; Enumerable["#implemented_by"].pop(); -;;; Enumerable["#implemented_by"].push(Array2); - -// ========================================================================= -// JavaScript/Date2.js -// ========================================================================= - -// http://developer.mozilla.org/es4/proposals/date_and_time.html - -// big, ugly, regular expression -var _DATE_PATTERN = /^((-\d+|\d{4,})(-(\d{2})(-(\d{2}))?)?)?T((\d{2})(:(\d{2})(:(\d{2})(\.(\d{1,3})(\d)?\d*)?)?)?)?(([+-])(\d{2})(:(\d{2}))?|Z)?$/; -var _DATE_PARTS = { // indexes to the sub-expressions of the RegExp above - FullYear: 2, - Month: 4, - Date: 6, - Hours: 8, - Minutes: 10, - Seconds: 12, - Milliseconds: 14 -}; -var _TIMEZONE_PARTS = { // idem, but without the getter/setter usage on Date object - Hectomicroseconds: 15, // :-P - UTC: 16, - Sign: 17, - Hours: 18, - Minutes: 20 -}; - -var _TRIM_ZEROES = /(((00)?:0+)?:0+)?\.0+$/; -var _TRIM_TIMEZONE = /(T[0-9:.]+)$/; - -var Date2 = _createObject2( - Date, - function(yy, mm, dd, h, m, s, ms) { - switch (arguments.length) { - case 0: return new Date; - case 1: return typeof yy == "number" ? new Date(yy) : Date2.parse(yy); - default: return new Date(yy, mm, arguments.length == 2 ? 1 : dd, h || 0, m || 0, s || 0, ms || 0); - } - }, "", { - toISOString: function(date) { - var string = "####-##-##T##:##:##.###"; - for (var part in _DATE_PARTS) { - string = string.replace(/#+/, function(digits) { - var value = date["getUTC" + part](); - if (part == "Month") value++; // js month starts at zero - return ("000" + value).slice(-digits.length); // pad - }); - } - // remove trailing zeroes, and remove UTC timezone, when time's absent - return string.replace(_TRIM_ZEROES, "").replace(_TRIM_TIMEZONE, "$1Z"); - } - } -); - -delete Date2.forEach; - -Date2.now = function() { - return (new Date).valueOf(); // milliseconds since the epoch -}; - -Date2.parse = function(string, defaultDate) { - if (arguments.length > 1) { - assertType(defaultDate, "number", "default date should be of type 'number'.") - } - // parse ISO date - var parts = match(string, _DATE_PATTERN); - if (parts.length) { - if (parts[_DATE_PARTS.Month]) parts[_DATE_PARTS.Month]--; // js months start at zero - // round milliseconds on 3 digits - if (parts[_TIMEZONE_PARTS.Hectomicroseconds] >= 5) parts[_DATE_PARTS.Milliseconds]++; - var date = new Date(defaultDate || 0); - var prefix = parts[_TIMEZONE_PARTS.UTC] || parts[_TIMEZONE_PARTS.Hours] ? "UTC" : ""; - for (var part in _DATE_PARTS) { - var value = parts[_DATE_PARTS[part]]; - if (!value) continue; // empty value - // set a date part - date["set" + prefix + part](value); - // make sure that this setting does not overflow - if (date["get" + prefix + part]() != parts[_DATE_PARTS[part]]) { - return NaN; - } - } - // timezone can be set, without time being available - // without a timezone, local timezone is respected - if (parts[_TIMEZONE_PARTS.Hours]) { - var hours = Number(parts[_TIMEZONE_PARTS.Sign] + parts[_TIMEZONE_PARTS.Hours]); - var minutes = Number(parts[_TIMEZONE_PARTS.Sign] + (parts[_TIMEZONE_PARTS.Minutes] || 0)); - date.setUTCMinutes(date.getUTCMinutes() + (hours * 60) + minutes); - } - return date.valueOf(); - } else { - return Date.parse(string); - } -}; - -// ========================================================================= -// JavaScript/String2.js -// ========================================================================= - -var String2 = _createObject2( - String, - function(string) { - return new String(arguments.length == 0 ? "" : string); - }, - "charAt,charCodeAt,concat,indexOf,lastIndexOf,match,replace,search,slice,split,substr,substring,toLowerCase,toUpperCase", - { - csv: csv, - format: format, - rescape: rescape, - trim: trim - } -); - -delete String2.forEach; - -// http://blog.stevenlevithan.com/archives/faster-trim-javascript -function trim(string) { - return String(string).replace(_LTRIM, "").replace(_RTRIM, ""); -}; - -function csv(string) { - return string ? (string + "").split(/\s*,\s*/) : []; -}; - -function format(string) { - // Replace %n with arguments[n]. - // e.g. format("%1 %2%3 %2a %1%3", "she", "se", "lls"); - // ==> "she sells sea shells" - // Only %1 - %9 supported. - var args = arguments; - var pattern = new RegExp("%([1-" + (arguments.length - 1) + "])", "g"); - return (string + "").replace(pattern, function(match, index) { - return args[index]; - }); -}; - -function match(string, expression) { - // Same as String.match() except that this function will return an empty - // array if there is no match. - return (string + "").match(expression) || []; -}; - -function rescape(string) { - // Make a string safe for creating a RegExp. - return (string + "").replace(_RESCAPE, "\\$1"); -}; - -// ========================================================================= -// JavaScript/Function2.js -// ========================================================================= - -var Function2 = _createObject2( - Function, - Function, - "", { - I: I, - II: II, - K: K, - bind: bind, - compose: compose, - delegate: delegate, - flip: flip, - not: not, - partial: partial, - unbind: unbind - } -); - -function I(i) { // return first argument - return i; -}; - -function II(i, ii) { // return second argument - return ii; -}; - -function K(k) { - return function() { - return k; - }; -}; - -function bind(fn, context) { - var lateBound = typeof fn != "function"; - if (arguments.length > 2) { - var args = _slice.call(arguments, 2); - return function() { - return (lateBound ? context[fn] : fn).apply(context, args.concat.apply(args, arguments)); - }; - } else { // faster if there are no additional arguments - return function() { - return (lateBound ? context[fn] : fn).apply(context, arguments); - }; - } -}; - -function compose() { - var fns = _slice.call(arguments); - return function() { - var i = fns.length, result = fns[--i].apply(this, arguments); - while (i--) result = fns[i].call(this, result); - return result; - }; -}; - -function delegate(fn, context) { - return function() { - var args = _slice.call(arguments); - args.unshift(this); - return fn.apply(context, args); - }; -}; - -function flip(fn) { - return function() { - return fn.apply(this, Array2.swap(arguments, 0, 1)); - }; -}; - -function not(fn) { - return function() { - return !fn.apply(this, arguments); - }; -}; - -function partial(fn) { - var args = _slice.call(arguments, 1); - // based on Oliver Steele's version - return function() { - var specialised = args.concat(), i = 0, j = 0; - while (i < args.length && j < arguments.length) { - if (specialised[i] === undefined) specialised[i] = arguments[j++]; - i++; - } - while (j < arguments.length) { - specialised[i++] = arguments[j++]; - } - if (Array2.contains(specialised, undefined)) { - specialised.unshift(fn); - return partial.apply(null, specialised); - } - return fn.apply(this, specialised); - }; -}; - -function unbind(fn) { - return function(context) { - return fn.apply(context, _slice.call(arguments, 1)); - }; -}; - -// ========================================================================= -// base2/detect.js -// ========================================================================= - -function detect() { - // Two types of detection: - // 1. Object detection - // e.g. detect("(java)"); - // e.g. detect("!(document.addEventListener)"); - // 2. Platform detection (browser sniffing) - // e.g. detect("MSIE"); - // e.g. detect("MSIE|opera"); - - var jscript = NaN/*@cc_on||@_jscript_version@*/; // http://dean.edwards.name/weblog/2007/03/sniff/#comment85164 - var javaEnabled = global.java ? true : false; - if (global.navigator) { // browser - var MSIE = /MSIE[\d.]+/g; - var element = document.createElement("span"); - // Close up the space between name and version number. - // e.g. MSIE 6 -> MSIE6 - var userAgent = navigator.userAgent.replace(/([a-z])[\s\/](\d)/gi, "$1$2"); - // Fix opera's (and others) user agent string. - if (!jscript) userAgent = userAgent.replace(MSIE, ""); - if (MSIE.test(userAgent)) userAgent = userAgent.match(MSIE)[0] + " " + userAgent.replace(MSIE, ""); - base2.userAgent = navigator.platform + " " + userAgent.replace(/like \w+/gi, ""); - javaEnabled &= navigator.javaEnabled(); -//} else if (java) { // rhino -// var System = java.lang.System; -// base2.userAgent = "Rhino " + System.getProperty("os.arch") + " " + System.getProperty("os.name") + " " + System.getProperty("os.version"); -//} else if (jscript) { // Windows Scripting Host -// base2.userAgent = "WSH"; - } - - var _cache = {}; - detect = function(expression) { - if (_cache[expression] == null) { - var returnValue = false, test = expression; - var not = test.charAt(0) == "!"; - if (not) test = test.slice(1); - if (test.charAt(0) == "(") { - try { - returnValue = new Function("element,jscript,java,global", "return !!" + test)(element, jscript, javaEnabled, global); - } catch (ex) { - // the test failed - } - } else { - // Browser sniffing. - returnValue = new RegExp("(" + test + ")", "i").test(base2.userAgent); - } - _cache[expression] = !!(not ^ returnValue); - } - return _cache[expression]; - }; - - return detect(arguments[0]); -}; - -// ========================================================================= -// base2/init.js -// ========================================================================= - -base2 = global.base2 = new Package(this, base2); -var exports = this.exports; - -lang = new Package(this, lang); -exports += this.exports; - -JavaScript = new Package(this, JavaScript); -eval(exports + this.exports); - -lang.base = base; -lang.extend = extend; - -}; //////////////////// END: CLOSURE ///////////////////////////////////// diff --git a/src/Umbraco.Web/UI/Bundles/JsApplicationLib.cs b/src/Umbraco.Web/UI/Bundles/JsApplicationLib.cs index c38bb1fac5..7ba6e14567 100644 --- a/src/Umbraco.Web/UI/Bundles/JsApplicationLib.cs +++ b/src/Umbraco.Web/UI/Bundles/JsApplicationLib.cs @@ -12,7 +12,6 @@ namespace Umbraco.Web.UI.Bundles /// [ClientDependency(ClientDependencyType.Javascript, "Application/NamespaceManager.js", "UmbracoClient", Priority = 0, Group = 0)] [ClientDependency(ClientDependencyType.Javascript, "Application/UmbracoUtils.js", "UmbracoClient", Priority = 1, Group = 0)] - [ClientDependency(ClientDependencyType.Javascript, "ui/base2.js", "UmbracoClient", Priority = 3, Group = 0)] public class JsApplicationLib : Control { }