diff --git a/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.Designer.cs b/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.Designer.cs new file mode 100644 index 0000000..37a3ea3 --- /dev/null +++ b/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.Designer.cs @@ -0,0 +1,29 @@ +// +namespace YoYo.Cms.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.1.3-40302")] + public sealed partial class Add_Upgrade_ABP2_3 : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(Add_Upgrade_ABP2_3)); + + string IMigrationMetadata.Id + { + get { return "201708291553133_Add_Upgrade_ABP2_3"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.cs b/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.cs new file mode 100644 index 0000000..0df0ef4 --- /dev/null +++ b/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.cs @@ -0,0 +1,62 @@ +namespace YoYo.Cms.Migrations +{ + using System; + using System.Collections.Generic; + using System.Data.Entity.Infrastructure.Annotations; + using System.Data.Entity.Migrations; + + public partial class Add_Upgrade_ABP2_3 : DbMigration + { + public override void Up() + { + AlterTableAnnotations( + "ABP.UserOrganizationUnits", + c => new + { + Id = c.Long(nullable: false, identity: true), + TenantId = c.Int(), + UserId = c.Long(nullable: false), + OrganizationUnitId = c.Long(nullable: false), + IsDeleted = c.Boolean(nullable: false), + CreationTime = c.DateTime(nullable: false), + CreatorUserId = c.Long(), + }, + annotations: new Dictionary + { + { + "DynamicFilter_UserOrganizationUnit_SoftDelete", + new AnnotationValues(oldValue: null, newValue: "EntityFramework.DynamicFilters.DynamicFilterDefinition") + }, + }); + + AddColumn("ABP.Languages", "IsDisabled", c => c.Boolean(nullable: false)); + AddColumn("ABP.UserOrganizationUnits", "IsDeleted", c => c.Boolean(nullable: false)); + } + + public override void Down() + { + DropColumn("ABP.UserOrganizationUnits", "IsDeleted"); + DropColumn("ABP.Languages", "IsDisabled"); + AlterTableAnnotations( + "ABP.UserOrganizationUnits", + c => new + { + Id = c.Long(nullable: false, identity: true), + TenantId = c.Int(), + UserId = c.Long(nullable: false), + OrganizationUnitId = c.Long(nullable: false), + IsDeleted = c.Boolean(nullable: false), + CreationTime = c.DateTime(nullable: false), + CreatorUserId = c.Long(), + }, + annotations: new Dictionary + { + { + "DynamicFilter_UserOrganizationUnit_SoftDelete", + new AnnotationValues(oldValue: "EntityFramework.DynamicFilters.DynamicFilterDefinition", newValue: null) + }, + }); + + } + } +} diff --git a/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.resx b/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.resx new file mode 100644 index 0000000..24083a5 --- /dev/null +++ b/src/YoYo.Cms.EntityFramework/Migrations/201708291553133_Add_Upgrade_ABP2_3.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/src/YoYo.Cms.EntityFramework/YoYo.Cms.EntityFramework.csproj b/src/YoYo.Cms.EntityFramework/YoYo.Cms.EntityFramework.csproj index 3c3c91b..24e093a 100644 --- a/src/YoYo.Cms.EntityFramework/YoYo.Cms.EntityFramework.csproj +++ b/src/YoYo.Cms.EntityFramework/YoYo.Cms.EntityFramework.csproj @@ -139,6 +139,10 @@ 201704281345333_YoYoCms_Initial.cs + + + 201708291553133_Add_Upgrade_ABP2_3.cs + @@ -167,6 +171,9 @@ 201704281345333_YoYoCms_Initial.cs + + 201708291553133_Add_Upgrade_ABP2_3.cs + diff --git a/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.js b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.js new file mode 100644 index 0000000..d9dc5f6 --- /dev/null +++ b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.js @@ -0,0 +1,879 @@ +'use strict'; + +var abp = abp || {}; +(function ($) { + + /* Application paths *****************************************/ + + //Current application root path (including virtual directory if exists). + abp.appPath = abp.appPath || '/'; + + abp.pageLoadTime = new Date(); + + //Converts given path to absolute path using abp.appPath variable. + abp.toAbsAppPath = function (path) { + if (path.indexOf('/') == 0) { + path = path.substring(1); + } + + return abp.appPath + path; + }; + + /* MULTITENANCY */ + + abp.multiTenancy = abp.multiTenancy || {}; + + abp.multiTenancy.isEnabled = false; + + abp.multiTenancy.sides = { + TENANT: 1, + HOST: 2 + }; + + abp.multiTenancy.tenantIdCookieName = 'Abp.TenantId'; + + abp.multiTenancy.setTenantIdCookie = function (tenantId) { + if (tenantId) { + abp.utils.setCookieValue(abp.multiTenancy.tenantIdCookieName, tenantId.toString(), new Date(new Date().getTime() + 5 * 365 * 86400000), //5 years + abp.appPath); + } else { + abp.utils.deleteCookie(abp.multiTenancy.tenantIdCookieName, abp.appPath); + } + }; + + abp.multiTenancy.getTenantIdCookie = function () { + var value = abp.utils.getCookieValue(abp.multiTenancy.tenantIdCookieName); + if (!value) { + return null; + } + + return parseInt(value); + }; + + /* SESSION */ + + abp.session = abp.session || { + multiTenancySide: abp.multiTenancy.sides.HOST + }; + + /* LOCALIZATION ***********************************************/ + //Implements Localization API that simplifies usage of localization scripts generated by Abp. + + abp.localization = abp.localization || {}; + + abp.localization.languages = []; + + abp.localization.currentLanguage = {}; + + abp.localization.sources = []; + + abp.localization.values = {}; + + abp.localization.localize = function (key, sourceName) { + sourceName = sourceName || abp.localization.defaultSourceName; + + var source = abp.localization.values[sourceName]; + + if (!source) { + abp.log.warn('Could not find localization source: ' + sourceName); + return key; + } + + var value = source[key]; + if (value == undefined) { + return key; + } + + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 1); + copiedArguments[0] = value; + + return abp.utils.formatString.apply(this, copiedArguments); + }; + + abp.localization.getSource = function (sourceName) { + return function (key) { + var copiedArguments = Array.prototype.slice.call(arguments, 0); + copiedArguments.splice(1, 0, sourceName); + return abp.localization.localize.apply(this, copiedArguments); + }; + }; + + abp.localization.isCurrentCulture = function (name) { + return abp.localization.currentCulture && abp.localization.currentCulture.name && abp.localization.currentCulture.name.indexOf(name) == 0; + }; + + abp.localization.defaultSourceName = undefined; + abp.localization.abpWeb = abp.localization.getSource('AbpWeb'); + + /* AUTHORIZATION **********************************************/ + //Implements Authorization API that simplifies usage of authorization scripts generated by Abp. + + abp.auth = abp.auth || {}; + + abp.auth.allPermissions = abp.auth.allPermissions || {}; + + abp.auth.grantedPermissions = abp.auth.grantedPermissions || {}; + + //Deprecated. Use abp.auth.isGranted instead. + abp.auth.hasPermission = function (permissionName) { + return abp.auth.isGranted.apply(this, arguments); + }; + + //Deprecated. Use abp.auth.isAnyGranted instead. + abp.auth.hasAnyOfPermissions = function () { + return abp.auth.isAnyGranted.apply(this, arguments); + }; + + //Deprecated. Use abp.auth.areAllGranted instead. + abp.auth.hasAllOfPermissions = function () { + return abp.auth.areAllGranted.apply(this, arguments); + }; + + abp.auth.isGranted = function (permissionName) { + return abp.auth.allPermissions[permissionName] != undefined && abp.auth.grantedPermissions[permissionName] != undefined; + }; + + abp.auth.isAnyGranted = function () { + if (!arguments || arguments.length <= 0) { + return true; + } + + for (var i = 0; i < arguments.length; i++) { + if (abp.auth.isGranted(arguments[i])) { + return true; + } + } + + return false; + }; + + abp.auth.areAllGranted = function () { + if (!arguments || arguments.length <= 0) { + return true; + } + + for (var i = 0; i < arguments.length; i++) { + if (!abp.auth.isGranted(arguments[i])) { + return false; + } + } + + return true; + }; + + abp.auth.tokenCookieName = 'Abp.AuthToken'; + + abp.auth.setToken = function (authToken, expireDate) { + abp.utils.setCookieValue(abp.auth.tokenCookieName, authToken, expireDate, abp.appPath); + }; + + abp.auth.getToken = function () { + return abp.utils.getCookieValue(abp.auth.tokenCookieName); + }; + + abp.auth.clearToken = function () { + abp.auth.setToken(); + }; + + /* FEATURE SYSTEM *********************************************/ + //Implements Features API that simplifies usage of feature scripts generated by Abp. + + abp.features = abp.features || {}; + + abp.features.allFeatures = abp.features.allFeatures || {}; + + abp.features.get = function (name) { + return abp.features.allFeatures[name]; + }; + + abp.features.getValue = function (name) { + var feature = abp.features.get(name); + if (feature == undefined) { + return undefined; + } + + return feature.value; + }; + + abp.features.isEnabled = function (name) { + var value = abp.features.getValue(name); + return value == 'true' || value == 'True'; + }; + + /* SETTINGS **************************************************/ + //Implements Settings API that simplifies usage of setting scripts generated by Abp. + + abp.setting = abp.setting || {}; + + abp.setting.values = abp.setting.values || {}; + + abp.setting.get = function (name) { + return abp.setting.values[name]; + }; + + abp.setting.getBoolean = function (name) { + var value = abp.setting.get(name); + return value == 'true' || value == 'True'; + }; + + abp.setting.getInt = function (name) { + return parseInt(abp.setting.values[name]); + }; + + /* REALTIME NOTIFICATIONS ************************************/ + + abp.notifications = abp.notifications || {}; + + abp.notifications.severity = { + INFO: 0, + SUCCESS: 1, + WARN: 2, + ERROR: 3, + FATAL: 4 + }; + + abp.notifications.userNotificationState = { + UNREAD: 0, + READ: 1 + }; + + abp.notifications.getUserNotificationStateAsString = function (userNotificationState) { + switch (userNotificationState) { + case abp.notifications.userNotificationState.READ: + return 'READ'; + case abp.notifications.userNotificationState.UNREAD: + return 'UNREAD'; + default: + abp.log.warn('Unknown user notification state value: ' + userNotificationState); + return '?'; + } + }; + + abp.notifications.getUiNotifyFuncBySeverity = function (severity) { + switch (severity) { + case abp.notifications.severity.SUCCESS: + return abp.notify.success; + case abp.notifications.severity.WARN: + return abp.notify.warn; + case abp.notifications.severity.ERROR: + return abp.notify.error; + case abp.notifications.severity.FATAL: + return abp.notify.error; + case abp.notifications.severity.INFO: + default: + return abp.notify.info; + } + }; + + abp.notifications.messageFormatters = {}; + + abp.notifications.messageFormatters['Abp.Notifications.MessageNotificationData'] = function (userNotification) { + return userNotification.notification.data.message || userNotification.notification.data.properties.Message; + }; + + abp.notifications.messageFormatters['Abp.Notifications.LocalizableMessageNotificationData'] = function (userNotification) { + var message = userNotification.notification.data.message || userNotification.notification.data.properties.Message; + var localizedMessage = abp.localization.localize(message.name, message.sourceName); + + if (userNotification.notification.data.properties) { + if ($) { + //Prefer to use jQuery if possible + $.each(userNotification.notification.data.properties, function (key, value) { + localizedMessage = localizedMessage.replace('{' + key + '}', value); + }); + } else { + //alternative for $.each + var properties = Object.keys(userNotification.notification.data.properties); + for (var i = 0; i < properties.length; i++) { + localizedMessage = localizedMessage.replace('{' + properties[i] + '}', userNotification.notification.data.properties[properties[i]]); + } + } + } + + return localizedMessage; + }; + + abp.notifications.getFormattedMessageFromUserNotification = function (userNotification) { + var formatter = abp.notifications.messageFormatters[userNotification.notification.data.type]; + if (!formatter) { + abp.log.warn('No message formatter defined for given data type: ' + userNotification.notification.data.type); + return '?'; + } + + if (!abp.utils.isFunction(formatter)) { + abp.log.warn('Message formatter should be a function! It is invalid for data type: ' + userNotification.notification.data.type); + return '?'; + } + + return formatter(userNotification); + }; + + abp.notifications.showUiNotifyForUserNotification = function (userNotification, options) { + var message = abp.notifications.getFormattedMessageFromUserNotification(userNotification); + var uiNotifyFunc = abp.notifications.getUiNotifyFuncBySeverity(userNotification.notification.severity); + uiNotifyFunc(message, undefined, options); + }; + + /* LOGGING ***************************************************/ + //Implements Logging API that provides secure & controlled usage of console.log + + abp.log = abp.log || {}; + + abp.log.levels = { + DEBUG: 1, + INFO: 2, + WARN: 3, + ERROR: 4, + FATAL: 5 + }; + + abp.log.level = abp.log.levels.DEBUG; + + abp.log.log = function (logObject, logLevel) { + if (!window.console || !window.console.log) { + return; + } + + if (logLevel != undefined && logLevel < abp.log.level) { + return; + } + + console.log(logObject); + }; + + abp.log.debug = function (logObject) { + abp.log.log("DEBUG: ", abp.log.levels.DEBUG); + abp.log.log(logObject, abp.log.levels.DEBUG); + }; + + abp.log.info = function (logObject) { + abp.log.log("INFO: ", abp.log.levels.INFO); + abp.log.log(logObject, abp.log.levels.INFO); + }; + + abp.log.warn = function (logObject) { + abp.log.log("WARN: ", abp.log.levels.WARN); + abp.log.log(logObject, abp.log.levels.WARN); + }; + + abp.log.error = function (logObject) { + abp.log.log("ERROR: ", abp.log.levels.ERROR); + abp.log.log(logObject, abp.log.levels.ERROR); + }; + + abp.log.fatal = function (logObject) { + abp.log.log("FATAL: ", abp.log.levels.FATAL); + abp.log.log(logObject, abp.log.levels.FATAL); + }; + + /* NOTIFICATION *********************************************/ + //Defines Notification API, not implements it + + abp.notify = abp.notify || {}; + + abp.notify.success = function (message, title, options) { + abp.log.warn('abp.notify.success is not implemented!'); + }; + + abp.notify.info = function (message, title, options) { + abp.log.warn('abp.notify.info is not implemented!'); + }; + + abp.notify.warn = function (message, title, options) { + abp.log.warn('abp.notify.warn is not implemented!'); + }; + + abp.notify.error = function (message, title, options) { + abp.log.warn('abp.notify.error is not implemented!'); + }; + + /* MESSAGE **************************************************/ + //Defines Message API, not implements it + + abp.message = abp.message || {}; + + var showMessage = function showMessage(message, title) { + alert((title || '') + ' ' + message); + + if (!$) { + abp.log.warn('abp.message can not return promise since jQuery is not defined!'); + return null; + } + + return $.Deferred(function ($dfd) { + $dfd.resolve(); + }); + }; + + abp.message.info = function (message, title) { + abp.log.warn('abp.message.info is not implemented!'); + return showMessage(message, title); + }; + + abp.message.success = function (message, title) { + abp.log.warn('abp.message.success is not implemented!'); + return showMessage(message, title); + }; + + abp.message.warn = function (message, title) { + abp.log.warn('abp.message.warn is not implemented!'); + return showMessage(message, title); + }; + + abp.message.error = function (message, title) { + abp.log.warn('abp.message.error is not implemented!'); + return showMessage(message, title); + }; + + abp.message.confirm = function (message, titleOrCallback, callback) { + abp.log.warn('abp.message.confirm is not implemented!'); + + if (titleOrCallback && !(typeof titleOrCallback == 'string')) { + callback = titleOrCallback; + } + + var result = confirm(message); + callback && callback(result); + + if (!$) { + abp.log.warn('abp.message can not return promise since jQuery is not defined!'); + return null; + } + + return $.Deferred(function ($dfd) { + $dfd.resolve(); + }); + }; + + /* UI *******************************************************/ + + abp.ui = abp.ui || {}; + + /* UI BLOCK */ + //Defines UI Block API, not implements it + + abp.ui.block = function (elm) { + abp.log.warn('abp.ui.block is not implemented!'); + }; + + abp.ui.unblock = function (elm) { + abp.log.warn('abp.ui.unblock is not implemented!'); + }; + + /* UI BUSY */ + //Defines UI Busy API, not implements it + + abp.ui.setBusy = function (elm, optionsOrPromise) { + abp.log.warn('abp.ui.setBusy is not implemented!'); + }; + + abp.ui.clearBusy = function (elm) { + abp.log.warn('abp.ui.clearBusy is not implemented!'); + }; + + /* SIMPLE EVENT BUS *****************************************/ + + abp.event = (function () { + + var _callbacks = {}; + + var on = function on(eventName, callback) { + if (!_callbacks[eventName]) { + _callbacks[eventName] = []; + } + + _callbacks[eventName].push(callback); + }; + + var off = function off(eventName, callback) { + var callbacks = _callbacks[eventName]; + if (!callbacks) { + return; + } + + var index = -1; + for (var i = 0; i < callbacks.length; i++) { + if (callbacks[i] === callback) { + index = i; + break; + } + } + + if (index < 0) { + return; + } + + _callbacks[eventName].splice(index, 1); + }; + + var trigger = function trigger(eventName) { + var callbacks = _callbacks[eventName]; + if (!callbacks || !callbacks.length) { + return; + } + + var args = Array.prototype.slice.call(arguments, 1); + for (var i = 0; i < callbacks.length; i++) { + callbacks[i].apply(this, args); + } + }; + + // Public interface /////////////////////////////////////////////////// + + return { + on: on, + off: off, + trigger: trigger + }; + })(); + + /* UTILS ***************************************************/ + + abp.utils = abp.utils || {}; + + /* Creates a name namespace. + * Example: + * var taskService = abp.utils.createNamespace(abp, 'services.task'); + * taskService will be equal to abp.services.task + * first argument (root) must be defined first + ************************************************************/ + abp.utils.createNamespace = function (root, ns) { + var parts = ns.split('.'); + for (var i = 0; i < parts.length; i++) { + if (typeof root[parts[i]] == 'undefined') { + root[parts[i]] = {}; + } + + root = root[parts[i]]; + } + + return root; + }; + + /* Find and replaces a string (search) to another string (replacement) in + * given string (str). + * Example: + * abp.utils.replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string' + ************************************************************/ + abp.utils.replaceAll = function (str, search, replacement) { + var fix = search.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + return str.replace(new RegExp(fix, 'g'), replacement); + }; + + /* Formats a string just like string.format in C#. + * Example: + * abp.utils.formatString('Hello {0}','Tuana') = 'Hello Tuana' + ************************************************************/ + abp.utils.formatString = function () { + if (arguments.length < 1) { + return null; + } + + var str = arguments[0]; + + for (var i = 1; i < arguments.length; i++) { + var placeHolder = '{' + (i - 1) + '}'; + str = abp.utils.replaceAll(str, placeHolder, arguments[i]); + } + + return str; + }; + + abp.utils.toPascalCase = function (str) { + if (!str || !str.length) { + return str; + } + + if (str.length === 1) { + return str.charAt(0).toUpperCase(); + } + + return str.charAt(0).toUpperCase() + str.substr(1); + }; + + abp.utils.toCamelCase = function (str) { + if (!str || !str.length) { + return str; + } + + if (str.length === 1) { + return str.charAt(0).toLowerCase(); + } + + return str.charAt(0).toLowerCase() + str.substr(1); + }; + + abp.utils.truncateString = function (str, maxLength) { + if (!str || !str.length || str.length <= maxLength) { + return str; + } + + return str.substr(0, maxLength); + }; + + abp.utils.truncateStringWithPostfix = function (str, maxLength, postfix) { + postfix = postfix || '...'; + + if (!str || !str.length || str.length <= maxLength) { + return str; + } + + if (maxLength <= postfix.length) { + return postfix.substr(0, maxLength); + } + + return str.substr(0, maxLength - postfix.length) + postfix; + }; + + abp.utils.isFunction = function (obj) { + if ($) { + //Prefer to use jQuery if possible + return $.isFunction(obj); + } + + //alternative for $.isFunction + return !!(obj && obj.constructor && obj.call && obj.apply); + }; + + /** + * parameterInfos should be an array of { name, value } objects + * where name is query string parameter name and value is it's value. + * includeQuestionMark is true by default. + */ + abp.utils.buildQueryString = function (parameterInfos, includeQuestionMark) { + if (includeQuestionMark === undefined) { + includeQuestionMark = true; + } + + var qs = ''; + + function addSeperator() { + if (!qs.length) { + if (includeQuestionMark) { + qs = qs + '?'; + } + } else { + qs = qs + '&'; + } + } + + for (var i = 0; i < parameterInfos.length; ++i) { + var parameterInfo = parameterInfos[i]; + if (parameterInfo.value === undefined) { + continue; + } + + if (parameterInfo.value === null) { + parameterInfo.value = ''; + } + + addSeperator(); + + if (parameterInfo.value.toJSON && typeof parameterInfo.value.toJSON === "function") { + qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value.toJSON()); + } else if (Array.isArray(parameterInfo.value) && parameterInfo.value.length) { + for (var j = 0; j < parameterInfo.value.length; j++) { + if (j > 0) { + addSeperator(); + } + + qs = qs + parameterInfo.name + '[' + j + ']=' + encodeURIComponent(parameterInfo.value[j]); + } + } else { + qs = qs + parameterInfo.name + '=' + encodeURIComponent(parameterInfo.value); + } + } + + return qs; + }; + + /** + * Sets a cookie value for given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @param {string} value + * @param {Date} expireDate (optional). If not specified the cookie will expire at the end of session. + * @param {string} path (optional) + */ + abp.utils.setCookieValue = function (key, value, expireDate, path) { + var cookieValue = encodeURIComponent(key) + '='; + + if (value) { + cookieValue = cookieValue + encodeURIComponent(value); + } + + if (expireDate) { + cookieValue = cookieValue + "; expires=" + expireDate.toUTCString(); + } + + if (path) { + cookieValue = cookieValue + "; path=" + path; + } + + document.cookie = cookieValue; + }; + + /** + * Gets a cookie with given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @returns {string} Cookie value or null + */ + abp.utils.getCookieValue = function (key) { + var equalities = document.cookie.split('; '); + for (var i = 0; i < equalities.length; i++) { + if (!equalities[i]) { + continue; + } + + var splitted = equalities[i].split('='); + if (splitted.length != 2) { + continue; + } + + if (decodeURIComponent(splitted[0]) === key) { + return decodeURIComponent(splitted[1] || ''); + } + } + + return null; + }; + + /** + * Deletes cookie for given key. + * This is a simple implementation created to be used by ABP. + * Please use a complete cookie library if you need. + * @param {string} key + * @param {string} path (optional) + */ + abp.utils.deleteCookie = function (key, path) { + var cookieValue = encodeURIComponent(key) + '='; + + cookieValue = cookieValue + "; expires=" + new Date(new Date().getTime() - 86400000).toUTCString(); + + if (path) { + cookieValue = cookieValue + "; path=" + path; + } + + document.cookie = cookieValue; + }; + + /* TIMING *****************************************/ + abp.timing = abp.timing || {}; + + abp.timing.utcClockProvider = (function () { + + var toUtc = function toUtc(date) { + return Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()); + }; + + var now = function now() { + return new Date(); + }; + + var normalize = function normalize(date) { + if (!date) { + return date; + } + + return new Date(toUtc(date)); + }; + + // Public interface /////////////////////////////////////////////////// + + return { + now: now, + normalize: normalize, + supportsMultipleTimezone: true + }; + })(); + + abp.timing.localClockProvider = (function () { + + var toLocal = function toLocal(date) { + return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()); + }; + + var now = function now() { + return toLocal(new Date()); + }; + + var normalize = function normalize(date) { + if (!date) { + return date; + } + + return toLocal(date); + }; + + // Public interface /////////////////////////////////////////////////// + + return { + now: now, + normalize: normalize, + supportsMultipleTimezone: false + }; + })(); + + abp.timing.unspecifiedClockProvider = (function () { + + var now = function now() { + return new Date(); + }; + + var normalize = function normalize(date) { + return date; + }; + + // Public interface /////////////////////////////////////////////////// + + return { + now: now, + normalize: normalize, + supportsMultipleTimezone: false + }; + })(); + + abp.timing.convertToUserTimezone = function (date) { + var localTime = date.getTime(); + var utcTime = localTime + date.getTimezoneOffset() * 60000; + var targetTime = parseInt(utcTime) + parseInt(abp.timing.timeZoneInfo.windows.currentUtcOffsetInMilliseconds); + return new Date(targetTime); + }; + + /* CLOCK *****************************************/ + abp.clock = abp.clock || {}; + + abp.clock.now = function () { + if (abp.clock.provider) { + return abp.clock.provider.now(); + } + + return new Date(); + }; + + abp.clock.normalize = function (date) { + if (abp.clock.provider) { + return abp.clock.provider.normalize(date); + } + + return date; + }; + + abp.clock.provider = abp.timing.unspecifiedClockProvider; + + /* SECURITY ***************************************/ + abp.security = abp.security || {}; + abp.security.antiForgery = abp.security.antiForgery || {}; + + abp.security.antiForgery.tokenCookieName = 'XSRF-TOKEN'; + abp.security.antiForgery.tokenHeaderName = 'X-XSRF-TOKEN'; + + abp.security.antiForgery.getToken = function () { + return abp.utils.getCookieValue(abp.security.antiForgery.tokenCookieName); + }; +})(jQuery); + diff --git a/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.min.js b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.min.js new file mode 100644 index 0000000..98e318a --- /dev/null +++ b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.min.js @@ -0,0 +1 @@ +"use strict";var abp=abp||{};(function(n){abp.appPath=abp.appPath||"/";abp.pageLoadTime=new Date;abp.toAbsAppPath=function(n){return n.indexOf("/")==0&&(n=n.substring(1)),abp.appPath+n};abp.multiTenancy=abp.multiTenancy||{};abp.multiTenancy.isEnabled=!1;abp.multiTenancy.sides={TENANT:1,HOST:2};abp.multiTenancy.tenantIdCookieName="Abp.TenantId";abp.multiTenancy.setTenantIdCookie=function(n){n?abp.utils.setCookieValue(abp.multiTenancy.tenantIdCookieName,n.toString(),new Date((new Date).getTime()+15768e7),abp.appPath):abp.utils.deleteCookie(abp.multiTenancy.tenantIdCookieName,abp.appPath)};abp.multiTenancy.getTenantIdCookie=function(){var n=abp.utils.getCookieValue(abp.multiTenancy.tenantIdCookieName);return n?parseInt(n):null};abp.session=abp.session||{multiTenancySide:abp.multiTenancy.sides.HOST};abp.localization=abp.localization||{};abp.localization.languages=[];abp.localization.currentLanguage={};abp.localization.sources=[];abp.localization.values={};abp.localization.localize=function(n,t){var r,u,i;return(t=t||abp.localization.defaultSourceName,r=abp.localization.values[t],!r)?(abp.log.warn("Could not find localization source: "+t),n):(u=r[n],u==undefined)?n:(i=Array.prototype.slice.call(arguments,0),i.splice(1,1),i[0]=u,abp.utils.formatString.apply(this,i))};abp.localization.getSource=function(n){return function(){var t=Array.prototype.slice.call(arguments,0);return t.splice(1,0,n),abp.localization.localize.apply(this,t)}};abp.localization.isCurrentCulture=function(n){return abp.localization.currentCulture&&abp.localization.currentCulture.name&&abp.localization.currentCulture.name.indexOf(n)==0};abp.localization.defaultSourceName=undefined;abp.localization.abpWeb=abp.localization.getSource("AbpWeb");abp.auth=abp.auth||{};abp.auth.allPermissions=abp.auth.allPermissions||{};abp.auth.grantedPermissions=abp.auth.grantedPermissions||{};abp.auth.hasPermission=function(){return abp.auth.isGranted.apply(this,arguments)};abp.auth.hasAnyOfPermissions=function(){return abp.auth.isAnyGranted.apply(this,arguments)};abp.auth.hasAllOfPermissions=function(){return abp.auth.areAllGranted.apply(this,arguments)};abp.auth.isGranted=function(n){return abp.auth.allPermissions[n]!=undefined&&abp.auth.grantedPermissions[n]!=undefined};abp.auth.isAnyGranted=function(){if(!arguments||arguments.length<=0)return!0;for(var n=0;n0&&e(),r=r+i.name+"["+u+"]="+encodeURIComponent(i.value[u]);else r=r+i.name+"="+encodeURIComponent(i.value);return r};abp.utils.setCookieValue=function(n,t,i,r){var u=encodeURIComponent(n)+"=";t&&(u=u+encodeURIComponent(t));i&&(u=u+"; expires="+i.toUTCString());r&&(u=u+"; path="+r);document.cookie=u};abp.utils.getCookieValue=function(n){for(var i,r=document.cookie.split("; "),t=0;t str.length) { + return false; + } + + return str.indexOf(suffix, str.length - suffix.length) !== -1; + } + + abp.event.on('abp.dynamicScriptsInitialized', function () { + abp.ng.http.defaultError.message = abp.localization.abpWeb('DefaultError'); + abp.ng.http.defaultError.details = abp.localization.abpWeb('DefaultErrorDetail'); + abp.ng.http.defaultError401.message = abp.localization.abpWeb('DefaultError401'); + abp.ng.http.defaultError401.details = abp.localization.abpWeb('DefaultErrorDetail401'); + abp.ng.http.defaultError403.message = abp.localization.abpWeb('DefaultError403'); + abp.ng.http.defaultError403.details = abp.localization.abpWeb('DefaultErrorDetail403'); + abp.ng.http.defaultError404.message = abp.localization.abpWeb('DefaultError404'); + abp.ng.http.defaultError404.details = abp.localization.abpWeb('DefaultErrorDetail404'); + }); +})(abp || (abp = {}), angular || undefined); + diff --git a/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/angularjs/abp.ng.es5.min.js b/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/angularjs/abp.ng.es5.min.js new file mode 100644 index 0000000..c0a6002 --- /dev/null +++ b/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/angularjs/abp.ng.es5.min.js @@ -0,0 +1 @@ +"use strict";(function(n,t){function r(n,t){return t.length>n.length?!1:n.indexOf(t,n.length-t.length)!==-1}if(t){n.ng=n.ng||{};n.ng.http={defaultError:{message:"An error has occurred!",details:"Error detail not sent by server."},defaultError401:{message:"You are not authenticated!",details:"You should be authenticated (sign in) in order to perform this operation."},defaultError403:{message:"You are not authorized!",details:"You are not allowed to perform this operation."},defaultError404:{message:"Resource not found!",details:"The resource requested could not found on the server."},logError:function(t){n.log.error(t)},showError:function(t){return t.details?n.message.error(t.details,t.message||n.ng.http.defaultError.message):n.message.error(t.message||n.ng.http.defaultError.message)},handleTargetUrl:function(t){location.href=t?t:n.appPath},handleNonAbpErrorResponse:function(t,i){if(t.config.abpHandleError!==!1)switch(t.status){case 401:n.ng.http.handleUnAuthorizedRequest(n.ng.http.showError(n.ng.http.defaultError401),n.appPath);break;case 403:n.ng.http.showError(n.ajax.defaultError403);break;case 404:n.ng.http.showError(n.ajax.defaultError404);break;default:n.ng.http.showError(n.ng.http.defaultError)}i.reject(t)},handleUnAuthorizedRequest:function(t,i){t?t.done(function(){n.ng.http.handleTargetUrl(i||n.appPath)}):n.ng.http.handleTargetUrl(i||n.appPath)},handleResponse:function(t,i){var r=t.data,u;r.success===!0?(t.data=r.result,i.resolve(t),r.targetUrl&&n.ng.http.handleTargetUrl(r.targetUrl)):r.success===!1?(u=null,r.error?t.config.abpHandleError!==!1&&(u=n.ng.http.showError(r.error)):r.error=defaultError,n.ng.http.logError(r.error),t.data=r.error,i.reject(t),t.status==401&&t.config.abpHandleError!==!1&&n.ng.http.handleUnAuthorizedRequest(u,r.targetUrl)):i.resolve(t)}};var i=t.module("abp",[]);i.config(["$httpProvider",function(t){t.interceptors.push(["$q",function(t){return{request:function(t){return r(t.url,".cshtml")&&(t.url=n.appPath+"AbpAppView/Load?viewUrl="+t.url+"&_t="+n.pageLoadTime.getTime()),t},response:function(i){if(!i.data||!i.data.__abp)return i;var r=t.defer();return n.ng.http.handleResponse(i,r),r.promise},responseError:function(i){var r=t.defer();return i.data&&i.data.__abp?n.ng.http.handleResponse(i,r):n.ng.http.handleNonAbpErrorResponse(i,r),r.promise}}}])}]);n.event.on("abp.dynamicScriptsInitialized",function(){n.ng.http.defaultError.message=n.localization.abpWeb("DefaultError");n.ng.http.defaultError.details=n.localization.abpWeb("DefaultErrorDetail");n.ng.http.defaultError401.message=n.localization.abpWeb("DefaultError401");n.ng.http.defaultError401.details=n.localization.abpWeb("DefaultErrorDetail401");n.ng.http.defaultError403.message=n.localization.abpWeb("DefaultError403");n.ng.http.defaultError403.details=n.localization.abpWeb("DefaultErrorDetail403");n.ng.http.defaultError404.message=n.localization.abpWeb("DefaultError404");n.ng.http.defaultError404.details=n.localization.abpWeb("DefaultErrorDetail404")})}})(abp||(abp={}),angular||undefined); \ No newline at end of file diff --git a/src/YoYo.Cms.Web/App/Admin/app.es5.js b/src/YoYo.Cms.Web/App/Admin/app.es5.js new file mode 100644 index 0000000..efa3e3a --- /dev/null +++ b/src/YoYo.Cms.Web/App/Admin/app.es5.js @@ -0,0 +1,102 @@ +'use strict'; + +var yoyocmsModule = angular.module('YoYoCms', ['ui.router', 'ui.bootstrap', 'ui.utils', 'ui.jq', 'ngAnimate', 'ngSanitize', 'angularMoment', 'ui.slimscroll', 'ngJsTree', 'angular-progress-button-styles', 'daterangepicker', 'ui.grid', 'ui.grid.pagination', 'ui.grid.selection', 'abp']); + +//Configuration for Angular UI routing. +yoyocmsModule.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', '$qProvider', function ($stateProvider, $urlRouterProvider, $locationProvider, $qProvider) { + $locationProvider.hashPrefix(''); + + $urlRouterProvider.otherwise('/dashboard'); + + $qProvider.errorOnUnhandledRejections(false); + + if (abp.auth.hasPermission('Pages.Users')) { + $stateProvider.state('users', { + url: '/users', + templateUrl: '/App/Admin/views/users/index.cshtml', + menu: 'Users', + displayName: app.localize('Users') + }); + } + + if (abp.auth.hasPermission('Pages.Tenants')) { + $stateProvider.state('tenants', { + url: '/tenants', + templateUrl: '/App/Admin/views/tenants/index.cshtml', + menu: 'Tenants', //Matches to name of 'Tenants' menu in CmsNavigationProvider + displayName: app.localize('Tenants') + }); + } + + //无,权限判断的路由设置,name需要两个进行对应 + $stateProvider.state('home', { + url: '/home', + templateUrl: '/App/Admin/views/home/home.cshtml', + menu: 'Home', //Matches to name of 'Home' menu in CmsNavigationProvider + displayName: app.localize('Home') + }).state('dashboard', { + url: '/dashboard', + templateUrl: '/App/Admin/views/dashboard/index.cshtml', + menu: 'Dashboard', + displayName: app.localize('Dashboard') + }).state('about', { + url: '/about', + templateUrl: '/App/Admin/views/about/about.cshtml', + menu: 'About', //Matches to name of 'About' menu in CmsNavigationProvider, + displayName: app.localize('About') + }).state('notifications', //对应浏览器地址栏的地址信息 + { + url: '/notifications', + templateUrl: '/App/Admin/views/notifications/index.cshtml', + menu: 'Notifications', //此处对应CmsNavigationProvider中的name + displayName: app.localize('Notifications') + }).state('smsmanage', //对应浏览器地址栏的地址信息 + { + url: '/smsmanage', + templateUrl: '/App/Admin/views/smsmanage/index.cshtml', + menu: 'SmsManage', //此处对应CmsNavigationProvider中的name + displayName: app.localize('SmsManage') + }).state('orgmanage', //对应浏览器地址栏的地址信息 + { + url: '/orgmanage', + templateUrl: '/App/Admin/views/organizationUnits/index.cshtml', + menu: 'OrgManage', //此处对应CmsNavigationProvider中的name + displayName: app.localize('OrgManage') + }).state('roles', //对应浏览器地址栏的地址信息 + { + url: '/roles', + templateUrl: '/App/Admin/views/roles/index.cshtml', + menu: 'roles', //此处对应CmsNavigationProvider中的name + displayName: app.localize('RoleManage') + }).state('auditlog', //对应浏览器地址栏的地址信息 + { + url: '/auditlog', + templateUrl: '/App/Admin/views/auditlog/index.cshtml', + menu: 'AuditLog', //此处对应CmsNavigationProvider中的name + displayName: app.localize('AuditLog') + }); +}]); + +yoyocmsModule.run(["$rootScope", "$state", 'i18nService', '$uibModalStack', function ($rootScope, $state, i18nService, $uibModalStack) { + $rootScope.$state = $state; + $rootScope.$state.current.title = "sdfsdfsd"; + + //Set Ui-Grid language + if (i18nService.get(abp.localization.currentCulture.name)) { + i18nService.setCurrentLang(abp.localization.currentCulture.name); + } else { + i18nService.setCurrentLang("en"); + } + + $rootScope.safeApply = function (fn) { + var phase = this.$root.$$phase; + if (phase == '$apply' || phase == '$digest') { + if (fn && typeof fn === 'function') { + fn(); + } + } else { + this.$apply(fn); + } + }; +}]); + diff --git a/src/YoYo.Cms.Web/App/Admin/app.es5.min.js b/src/YoYo.Cms.Web/App/Admin/app.es5.min.js new file mode 100644 index 0000000..1a2f2fc --- /dev/null +++ b/src/YoYo.Cms.Web/App/Admin/app.es5.min.js @@ -0,0 +1 @@ +"use strict";var yoyocmsModule=angular.module("YoYoCms",["ui.router","ui.bootstrap","ui.utils","ui.jq","ngAnimate","ngSanitize","angularMoment","ui.slimscroll","ngJsTree","angular-progress-button-styles","daterangepicker","ui.grid","ui.grid.pagination","ui.grid.selection","abp"]);yoyocmsModule.config(["$stateProvider","$urlRouterProvider","$locationProvider","$qProvider",function(n,t,i,r){i.hashPrefix("");t.otherwise("/dashboard");r.errorOnUnhandledRejections(!1);abp.auth.hasPermission("Pages.Users")&&n.state("users",{url:"/users",templateUrl:"/App/Admin/views/users/index.cshtml",menu:"Users",displayName:app.localize("Users")});abp.auth.hasPermission("Pages.Tenants")&&n.state("tenants",{url:"/tenants",templateUrl:"/App/Admin/views/tenants/index.cshtml",menu:"Tenants",displayName:app.localize("Tenants")});n.state("home",{url:"/home",templateUrl:"/App/Admin/views/home/home.cshtml",menu:"Home",displayName:app.localize("Home")}).state("dashboard",{url:"/dashboard",templateUrl:"/App/Admin/views/dashboard/index.cshtml",menu:"Dashboard",displayName:app.localize("Dashboard")}).state("about",{url:"/about",templateUrl:"/App/Admin/views/about/about.cshtml",menu:"About",displayName:app.localize("About")}).state("notifications",{url:"/notifications",templateUrl:"/App/Admin/views/notifications/index.cshtml",menu:"Notifications",displayName:app.localize("Notifications")}).state("smsmanage",{url:"/smsmanage",templateUrl:"/App/Admin/views/smsmanage/index.cshtml",menu:"SmsManage",displayName:app.localize("SmsManage")}).state("orgmanage",{url:"/orgmanage",templateUrl:"/App/Admin/views/organizationUnits/index.cshtml",menu:"OrgManage",displayName:app.localize("OrgManage")}).state("roles",{url:"/roles",templateUrl:"/App/Admin/views/roles/index.cshtml",menu:"roles",displayName:app.localize("RoleManage")}).state("auditlog",{url:"/auditlog",templateUrl:"/App/Admin/views/auditlog/index.cshtml",menu:"AuditLog",displayName:app.localize("AuditLog")})}]);yoyocmsModule.run(["$rootScope","$state","i18nService","$uibModalStack",function(n,t,i){n.$state=t;n.$state.current.title="sdfsdfsd";i.get(abp.localization.currentCulture.name)?i.setCurrentLang(abp.localization.currentCulture.name):i.setCurrentLang("en");n.safeApply=function(n){var t=this.$root.$$phase;t=="$apply"||t=="$digest"?n&&typeof n=="function"&&n():this.$apply(n)}}]); \ No newline at end of file diff --git a/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj b/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj index 6e380e6..6a9b36e 100644 --- a/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj +++ b/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj @@ -308,6 +308,12 @@ + + abp.js + + + abp.es5.js + @@ -321,6 +327,12 @@ + + abp.ng.js + + + abp.ng.es5.js + @@ -333,6 +345,12 @@ + + app.js + + + app.es5.js + diff --git a/src/YoYo.Cms.Web/compilerconfig.json b/src/YoYo.Cms.Web/compilerconfig.json index 79d4df3..27ff41f 100644 --- a/src/YoYo.Cms.Web/compilerconfig.json +++ b/src/YoYo.Cms.Web/compilerconfig.json @@ -10,5 +10,9 @@ { "outputFile": "Abp/Framework/scripts/libs/angularjs/abp.ng.es5.js", "inputFile": "Abp/Framework/scripts/libs/angularjs/abp.ng.js" + }, + { + "outputFile": "App/Admin/app.es5.js", + "inputFile": "App/Admin/app.js" } ] \ No newline at end of file