From dd3490a2ab26b753610d07ca5fffcdc645ef2b58 Mon Sep 17 00:00:00 2001 From: Shannon Deminick Date: Sun, 2 Jun 2013 20:34:06 -1000 Subject: [PATCH] added extension.js, trying to add legacy sprites for tree icons, updates tree icon filters (still not working) --- .../Serialization/JsonToStringConverter.cs | 33 +++ .../lib/umbraco/Extensions.js | 263 ++++++++++++++++++ src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 1 + .../umbraco/Views/Default.cshtml | 1 + .../umbraco/Views/common/tree.html | 2 +- .../umbraco/assets/css/umbraco.css | 81 ++++-- .../umbraco/assets/img/legacytreesprites.png | Bin 0 -> 12301 bytes .../umbraco/js/umbraco.filters.js | 7 +- .../umbraco/lib/Umbraco/Extensions.js | 263 ++++++++++++++++++ src/Umbraco.Web/UI/JavaScript/Main.js | 2 +- .../UI/JavaScript/RequireJsConfig.js | 2 + .../UI/JavaScript/RequireJsInitialize.js | 5 +- src/Umbraco.Web/Umbraco.Web.csproj | 1 - 13 files changed, 636 insertions(+), 25 deletions(-) create mode 100644 src/Umbraco.Core/Serialization/JsonToStringConverter.cs create mode 100644 src/Umbraco.Web.UI.Client/lib/umbraco/Extensions.js create mode 100644 src/Umbraco.Web.UI/umbraco/assets/img/legacytreesprites.png create mode 100644 src/Umbraco.Web.UI/umbraco/lib/Umbraco/Extensions.js diff --git a/src/Umbraco.Core/Serialization/JsonToStringConverter.cs b/src/Umbraco.Core/Serialization/JsonToStringConverter.cs new file mode 100644 index 0000000000..eeda4345c0 --- /dev/null +++ b/src/Umbraco.Core/Serialization/JsonToStringConverter.cs @@ -0,0 +1,33 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Umbraco.Core.Serialization +{ + /// + /// This is used in order to deserialize a json object on a property into a json string since the property's type is 'string' + /// + internal class JsonToStringConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.ValueType == typeof(string)) + { + return reader.Value; + } + // Load JObject from stream + JObject jObject = JObject.Load(reader); + return jObject.ToString(); + } + + public override bool CanConvert(Type objectType) + { + return typeof(string).IsAssignableFrom(objectType); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/lib/umbraco/Extensions.js b/src/Umbraco.Web.UI.Client/lib/umbraco/Extensions.js new file mode 100644 index 0000000000..72e1685339 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/lib/umbraco/Extensions.js @@ -0,0 +1,263 @@ +(function () { + + //extensions to base classes such as String and extension methods for jquery. + //NOTE: jquery must be loaded before this file. + + //create guid object on the window (which makes it global) + if (window.Guid == null) { + window.Guid = { + generate: function () { + ///generates a new Guid + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + } + }; + } + + if (!window.__debug__) { + window.__debug__ = function (msg, category, isErr) { + ///global method to send debug statements to console that is cross browser (or at least checks if its possible) + + if (((typeof console) != "undefined") && console.log && console.error) { + if (isErr) console.error(category + ": " + msg); + else console.log(category + ": " + msg); + } + }; + } + + if (!String.prototype.startsWith) { + String.prototype.startsWith = function (str) { + ///startsWith extension method for string + + return this.substr(0, str.length) === str; + }; + } + + if (!String.prototype.endsWith) { + String.prototype.endsWith = function (str) { + ///endsWith extension method for string + + return this.substr(this.length - str.length) === str; + }; + } + + if (!String.prototype.trimStart) { + String.prototype.trimStart = function (str) { + ///trims the start of the string + if (this.startsWith(str)) { + return this.substring(str.length, this.length - 1); + } + return this; + }; + } + + if (!String.prototype.utf8Encode) { + String.prototype.utf8Encode = function () { + ///UTF8 encoder for string + + var str = this.replace(/\r\n/g, "\n"); + var utftext = ""; + for (var n = 0; n < str.length; n++) { + var c = str.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } + else if ((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } + else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + return utftext; + }; + } + + if (!String.prototype.utf8Decode) { + String.prototype.utf8Decode = function () { + var utftext = this; + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while (i < utftext.length) { + + c = utftext.charCodeAt(i); + + if (c < 128) { + string += String.fromCharCode(c); + i++; + } + else if ((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i + 1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } + else { + c2 = utftext.charCodeAt(i + 1); + c3 = utftext.charCodeAt(i + 2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + + } + + return string; + }; + } + + if (!String.prototype.base64Encode) { + String.prototype.base64Encode = function () { + ///Base64 encoder for string + + var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + + var input = this.utf8Encode(); + + while (i < input.length) { + + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + + keyStr.charAt(enc1) + keyStr.charAt(enc2) + + keyStr.charAt(enc3) + keyStr.charAt(enc4); + + } + + return output; + }; + } + + if (!String.prototype.base64Decode) { + String.prototype.base64Decode = function () { + ///Base64 decoder for string + + var input = this; + var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + while (i < input.length) { + + enc1 = keyStr.indexOf(input.charAt(i++)); + enc2 = keyStr.indexOf(input.charAt(i++)); + enc3 = keyStr.indexOf(input.charAt(i++)); + enc4 = keyStr.indexOf(input.charAt(i++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output = output + String.fromCharCode(chr1); + + if (enc3 != 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3); + } + + } + + return output.utf8Decode(); + + }; + } + + + if (!Math.randomRange) { + Math.randomRange = function (from, to) { + ///randomRange extension for math + + return Math.floor(Math.random() * (to - from + 1) + from); + }; + } + + if (!String.prototype.toCamelCase) { + String.prototype.toCamelCase = function () { + ///toCamelCase extension method for string + + var s = this.toPascalCase(); + if ($.trim(s) == "") + return ""; + if (s.length > 1) { + var regex = /^([A-Z]*)([A-Z].*)/g; + if (s.match(regex)) { + var match = regex.exec(s); + s = match[1].toLowerCase() + match[2]; + s = s.substr(0, 1).toLowerCase() + s.substr(1); + } + } else { + s = s.toLowerCase(); + } + return s; + }; + } + + if (!String.prototype.toPascalCase) { + String.prototype.toPascalCase = function () { + ///toPascalCase extension method for string + + var s = ""; + $.each($.trim(this).split(/[\s\.-]+/g), function (idx, val) { + if ($.trim(val) == "") + return; + if (val.length > 1) + s += val.substr(0, 1).toUpperCase() + val.substr(1); + else + s += val.toUpperCase(); + }); + return s; + }; + } + + if (!String.prototype.toUmbracoAlias) { + String.prototype.toUmbracoAlias = function () { + //////toUmbracoAlias extension method for string + + var s = this.replace(/[^a-zA-Z0-9\s\.-]+/g, ''); // Strip none alphanumeric chars + return s.toCamelCase(); // Convert to camelCase + }; + } + + if (!String.prototype.toFunction) { + String.prototype.toFunction = function () { + var arr = this.split("."); + var fn = (window || this); + for (var i = 0, len = arr.length; i < len; i++) { + fn = fn[arr[i]]; + } + if (typeof fn !== "function") { + throw new Error("function not found"); + } + return fn; + }; + } + + +})(); \ No newline at end of file diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index a4c593a7af..90a1e23c81 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -565,6 +565,7 @@ + diff --git a/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml b/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml index 7d66ac7d65..4870a352f8 100644 --- a/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml +++ b/src/Umbraco.Web.UI/umbraco/Views/Default.cshtml @@ -14,6 +14,7 @@ Umbraco + @*Currently this needs to be loaded before anything*@ diff --git a/src/Umbraco.Web.UI/umbraco/Views/common/tree.html b/src/Umbraco.Web.UI/umbraco/Views/common/tree.html index b56462afc0..913a987010 100644 --- a/src/Umbraco.Web.UI/umbraco/Views/common/tree.html +++ b/src/Umbraco.Web.UI/umbraco/Views/common/tree.html @@ -14,7 +14,7 @@ ng-class="{'icon-caret-right': !node.expanded, 'icon-caret-down': node.expanded}" ng-click="getTreeChildren(node)"> - + {{node.name}} diff --git a/src/Umbraco.Web.UI/umbraco/assets/css/umbraco.css b/src/Umbraco.Web.UI/umbraco/assets/css/umbraco.css index 1608265dde..60a7cf635f 100644 --- a/src/Umbraco.Web.UI/umbraco/assets/css/umbraco.css +++ b/src/Umbraco.Web.UI/umbraco/assets/css/umbraco.css @@ -7,6 +7,52 @@ * */ + +.sprTree { + background-image: url(../img/legacytreesprites.png); + display:inline-block; +} +.sprTreeDeveloperCacheItem {background-position: -6px -8px ! important;} +.sprTreeDeveloperCacheTypes {background-position: -6px -40px ! important;} +.sprTreeDeveloperMacro {background-position: -6px -72px ! important;} +.sprTreeDeveloperPython {background-position: -6px -104px ! important; width: 15px; height: 15px} +.sprTreeDeveloperRegistry {background-position: -6px -135px ! important;} +.sprTreeDoc {background-position: -6px -199px ! important;} +.sprTreeDoc2 {background-position: -6px -231px ! important;} +.sprTreeDoc3 {background-position: -6px -263px ! important;} +.sprTreeDoc4 {background-position: -6px -295px ! important;} +.sprTreeDoc5 {background-position: -6px -327px ! important;} +.sprTreeDocPic {background-position: -6px -359px ! important;} +.sprTreeFolder {background-position: -6px -391px ! important;} +.sprTreeFolder_o {background-position: -6px -423px ! important;} +.sprTreeMediaFile {background-position: -6px -455px ! important;} +.sprTreeMediaMovie {background-position: -6px -487px ! important;} +.sprTreemediaFile {background-position: -6px -519px ! important;} +.sprTreeMediaPhoto {background-position: -6px -551px ! important;} +.sprTreeMember {background-position: -6px -583px ! important;} +.sprTreeMemberGroup {background-position: -6px -615px ! important;} +.sprTreeMemberType {background-position: -6px -647px ! important;} +.sprTreeNewsletter {background-position: -6px -679px ! important;} +.sprTreePackage {background-position: -6px -711px ! important;} +.sprTreeRepository {background-position: -6px -743px ! important;} +.sprTreeSettingAgent {background-position: -6px -775px ! important;} +.sprTreeSettingCss {background-position: -6px -807px ! important;} +.sprTreeSettingCssItem {background-position: -6px -839px ! important;} +.sprTreeSettingDataType {background-position: -6px -871px ! important;} +.sprTreeSettingDataTypeChild {background-position: -6px -903px ! important;} +.sprTreeSettingDomain {background-position: -6px -935px ! important;} +.sprTreeSettingLanguage {background-position: -6px -967px ! important;} +.sprTreeSettingScript {background-position: -6px -999px ! important;} +.sprTreeSettingTemplate {background-position: -6px -1031px ! important;} +.sprTreeSettingXml {background-position: -6px -1063px ! important;} +.sprTreeStatistik {background-position: -6px -1095px ! important;} +.sprTreeUser {background-position: -6px -1127px ! important;} +.sprTreeUserGroup {background-position: -6px -1159px ! important;} +.sprTreeUserType {background-position: -6px -1191px ! important;} +.sprNew{background-position: -6px -339px;} + + + .clearfix { *zoom: 1; } @@ -6364,32 +6410,33 @@ legend + .control-group { } .umb-tree { - /*width: auto; - min-width: 100%;*/ + width: auto; + min-width: 100%; margin: 0; - display:block; } .umb-tree li { display: block; - /*width: auto; - min-width: 100%;*/ + width: auto; + min-width: 100%; } -.umb-tree li.current > div { - /*background: #2e8aea;*/ +.umb-tree li.current > div, +.umb-tree div.selected { + background: #2e8aea; } -.umb-tree li.current > div i.umb-options i { - /*background: #fff; - border-color: #2e8aea;*/ +.umb-tree li.current > div i.umb-options i, +.umb-tree div.selected i { + background: #fff; + border-color: #2e8aea; } .umb-tree li.current > div a, .umb-tree li.current > div i.icon { - /*color: white !important; + color: white !important; background: #2e8aea; - border-color: #2e8aea;*/ + border-color: #2e8aea; } .umb-tree li.root div { @@ -6401,9 +6448,9 @@ legend + .control-group { } .umb-tree ul { - display: block; - /*width: 100%; - min-width: 100%;*/ + display: table; + width: 100%; + min-width: 100%; padding: 0; margin: 0; } @@ -6569,8 +6616,8 @@ i.umb-options i { .umb-actions a:hover, .umb-actions li.selected { - /*color: #fff; - background: #2e8aea;*/ + color: #fff; + background: #2e8aea; } .umb-actions a:hover i { diff --git a/src/Umbraco.Web.UI/umbraco/assets/img/legacytreesprites.png b/src/Umbraco.Web.UI/umbraco/assets/img/legacytreesprites.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3ed9b934e88ab3a1ac7c6b75629a865f32c233 GIT binary patch literal 12301 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 literal 0 HcmV?d00001 diff --git a/src/Umbraco.Web.UI/umbraco/js/umbraco.filters.js b/src/Umbraco.Web.UI/umbraco/js/umbraco.filters.js index f1fe4a6df4..129b96292d 100644 --- a/src/Umbraco.Web.UI/umbraco/js/umbraco.filters.js +++ b/src/Umbraco.Web.UI/umbraco/js/umbraco.filters.js @@ -28,7 +28,7 @@ define(['app', 'angular'], function (app, angular) { if (treeNode.iconIsClass) { return ""; } - return ""; + return "background-image: url('" + treeNode.iconFilePath + "');"; }; }; angular.module('umbraco.filters').filter("umbTreeIconImage", treeIconImageFilter); @@ -41,10 +41,11 @@ define(['app', 'angular'], function (app, angular) { **/ function treeIconClassFilter() { return function (treeNode, standardClasses) { + if (treeNode.iconIsClass) { - return standardClasses + " " + treeNode.icon; + return standardClasses + " " + (treeNode.icon.startsWith('.') ? treeNode.icon.trimStart('.') : treeNode.icon); } - return standardClasses; + return standardClasses + " icon-custom-file"; }; }; angular.module('umbraco.filters').filter("umbTreeIconClass", treeIconClassFilter); diff --git a/src/Umbraco.Web.UI/umbraco/lib/Umbraco/Extensions.js b/src/Umbraco.Web.UI/umbraco/lib/Umbraco/Extensions.js new file mode 100644 index 0000000000..4f2494d3a7 --- /dev/null +++ b/src/Umbraco.Web.UI/umbraco/lib/Umbraco/Extensions.js @@ -0,0 +1,263 @@ +(function () { + + //extensions to base classes such as String and extension methods for jquery. + //NOTE: jquery must be loaded before this file. + + //create guid object on the window (which makes it global) + if (window.Guid == null) { + window.Guid = { + generate: function () { + ///generates a new Guid + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + } + }; + } + + if (!window.__debug__) { + window.__debug__ = function (msg, category, isErr) { + ///global method to send debug statements to console that is cross browser (or at least checks if its possible) + + if (((typeof console) != "undefined") && console.log && console.error) { + if (isErr) console.error(category + ": " + msg); + else console.log(category + ": " + msg); + } + }; + } + + if (!String.prototype.startsWith) { + String.prototype.startsWith = function (str) { + ///startsWith extension method for string + + return this.substr(0, str.length) === str; + }; + } + + if (!String.prototype.endsWith) { + String.prototype.endsWith = function (str) { + ///endsWith extension method for string + + return this.substr(this.length - str.length) === str; + }; + } + + if (!String.prototype.trimStart) { + String.prototype.trimStart = function (str) { + ///trims the start of the string + if (this.startsWith(str)) { + return this.substring(str.length); + } + return this; + }; + } + + if (!String.prototype.utf8Encode) { + String.prototype.utf8Encode = function () { + ///UTF8 encoder for string + + var str = this.replace(/\r\n/g, "\n"); + var utftext = ""; + for (var n = 0; n < str.length; n++) { + var c = str.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } + else if ((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } + else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + return utftext; + }; + } + + if (!String.prototype.utf8Decode) { + String.prototype.utf8Decode = function () { + var utftext = this; + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while (i < utftext.length) { + + c = utftext.charCodeAt(i); + + if (c < 128) { + string += String.fromCharCode(c); + i++; + } + else if ((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i + 1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } + else { + c2 = utftext.charCodeAt(i + 1); + c3 = utftext.charCodeAt(i + 2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + + } + + return string; + }; + } + + if (!String.prototype.base64Encode) { + String.prototype.base64Encode = function () { + ///Base64 encoder for string + + var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + + var input = this.utf8Encode(); + + while (i < input.length) { + + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + + enc1 = chr1 >> 2; + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); + enc4 = chr3 & 63; + + if (isNaN(chr2)) { + enc3 = enc4 = 64; + } else if (isNaN(chr3)) { + enc4 = 64; + } + + output = output + + keyStr.charAt(enc1) + keyStr.charAt(enc2) + + keyStr.charAt(enc3) + keyStr.charAt(enc4); + + } + + return output; + }; + } + + if (!String.prototype.base64Decode) { + String.prototype.base64Decode = function () { + ///Base64 decoder for string + + var input = this; + var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + while (i < input.length) { + + enc1 = keyStr.indexOf(input.charAt(i++)); + enc2 = keyStr.indexOf(input.charAt(i++)); + enc3 = keyStr.indexOf(input.charAt(i++)); + enc4 = keyStr.indexOf(input.charAt(i++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + output = output + String.fromCharCode(chr1); + + if (enc3 != 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3); + } + + } + + return output.utf8Decode(); + + }; + } + + + if (!Math.randomRange) { + Math.randomRange = function (from, to) { + ///randomRange extension for math + + return Math.floor(Math.random() * (to - from + 1) + from); + }; + } + + if (!String.prototype.toCamelCase) { + String.prototype.toCamelCase = function () { + ///toCamelCase extension method for string + + var s = this.toPascalCase(); + if ($.trim(s) == "") + return ""; + if (s.length > 1) { + var regex = /^([A-Z]*)([A-Z].*)/g; + if (s.match(regex)) { + var match = regex.exec(s); + s = match[1].toLowerCase() + match[2]; + s = s.substr(0, 1).toLowerCase() + s.substr(1); + } + } else { + s = s.toLowerCase(); + } + return s; + }; + } + + if (!String.prototype.toPascalCase) { + String.prototype.toPascalCase = function () { + ///toPascalCase extension method for string + + var s = ""; + $.each($.trim(this).split(/[\s\.-]+/g), function (idx, val) { + if ($.trim(val) == "") + return; + if (val.length > 1) + s += val.substr(0, 1).toUpperCase() + val.substr(1); + else + s += val.toUpperCase(); + }); + return s; + }; + } + + if (!String.prototype.toUmbracoAlias) { + String.prototype.toUmbracoAlias = function () { + //////toUmbracoAlias extension method for string + + var s = this.replace(/[^a-zA-Z0-9\s\.-]+/g, ''); // Strip none alphanumeric chars + return s.toCamelCase(); // Convert to camelCase + }; + } + + if (!String.prototype.toFunction) { + String.prototype.toFunction = function () { + var arr = this.split("."); + var fn = (window || this); + for (var i = 0, len = arr.length; i < len; i++) { + fn = fn[arr[i]]; + } + if (typeof fn !== "function") { + throw new Error("function not found"); + } + return fn; + }; + } + + +})(); \ No newline at end of file diff --git a/src/Umbraco.Web/UI/JavaScript/Main.js b/src/Umbraco.Web/UI/JavaScript/Main.js index 0dcf2c80a8..d5340cd8d5 100644 --- a/src/Umbraco.Web/UI/JavaScript/Main.js +++ b/src/Umbraco.Web/UI/JavaScript/Main.js @@ -1,6 +1,6 @@ require.config("##RequireJsConfig##"); -require("##RequireJsInitialize##", function (angular, app) { +require("##RequireJsInitialize##", function (angular, app, jQuery) { //This function will be called when all the dependencies //listed above are loaded. Note that this function could diff --git a/src/Umbraco.Web/UI/JavaScript/RequireJsConfig.js b/src/Umbraco.Web/UI/JavaScript/RequireJsConfig.js index 26d13c4418..4e6fbf6214 100644 --- a/src/Umbraco.Web/UI/JavaScript/RequireJsConfig.js +++ b/src/Umbraco.Web/UI/JavaScript/RequireJsConfig.js @@ -4,6 +4,7 @@ paths: { jquery: '../lib/jquery/jquery-1.8.2.min', jqueryCookie: '../lib/jquery/jquery.cookie', + umbracoExtensions: '../lib/umbraco/extensions', bootstrap: '../lib/bootstrap/js/bootstrap', underscore: '../lib/underscore/underscore', angular: '../lib/angular/angular.min', @@ -21,6 +22,7 @@ css: '../lib/require/css' }, shim: { + 'umbracoExtensions' : {'exports' : 'umbracoExtensions'}, 'angular' : {'exports' : 'angular'}, 'angular-resource': { deps: ['angular'] }, 'bootstrap': { deps: ['jquery'] }, diff --git a/src/Umbraco.Web/UI/JavaScript/RequireJsInitialize.js b/src/Umbraco.Web/UI/JavaScript/RequireJsInitialize.js index 8af8916377..235cb7de9c 100644 --- a/src/Umbraco.Web/UI/JavaScript/RequireJsInitialize.js +++ b/src/Umbraco.Web/UI/JavaScript/RequireJsInitialize.js @@ -1,8 +1,9 @@ -[ +[ 'angular', - 'app', + 'app', 'jquery', 'jqueryCookie', + 'umbracoExtensions', 'bootstrap', 'umbraco.resources', 'umbraco.directives', diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index d1cd2891b9..e41f527696 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -303,7 +303,6 @@ -