diff --git a/src/Tests/YoYo.Cms.Tests/App.config b/src/Tests/YoYo.Cms.Tests/App.config
index c2ca7bf..75084d0 100644
--- a/src/Tests/YoYo.Cms.Tests/App.config
+++ b/src/Tests/YoYo.Cms.Tests/App.config
@@ -4,29 +4,37 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src/Tests/YoYo.Cms.Tests/YoYo.Cms.Tests.csproj b/src/Tests/YoYo.Cms.Tests/YoYo.Cms.Tests.csproj
index 804b179..eee5d5a 100644
--- a/src/Tests/YoYo.Cms.Tests/YoYo.Cms.Tests.csproj
+++ b/src/Tests/YoYo.Cms.Tests/YoYo.Cms.Tests.csproj
@@ -36,49 +36,41 @@
4
-
- ..\..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\..\packages\Abp.AutoMapper.1.5.1\lib\net452\Abp.AutoMapper.dll
- True
+
+ ..\..\packages\Abp.AutoMapper.2.3.0\lib\net46\Abp.AutoMapper.dll
-
- ..\..\packages\Abp.EntityFramework.1.5.1\lib\net452\Abp.EntityFramework.dll
- True
+
+ ..\..\packages\Abp.EntityFramework.2.3.0\lib\net46\Abp.EntityFramework.dll
-
- ..\..\packages\Abp.EntityFramework.Common.1.5.1\lib\net452\Abp.EntityFramework.Common.dll
- True
+
+ ..\..\packages\Abp.EntityFramework.Common.2.3.0\lib\net46\Abp.EntityFramework.Common.dll
-
- ..\..\packages\Abp.TestBase.1.5.1\lib\net452\Abp.TestBase.dll
- True
+
+ ..\..\packages\Abp.TestBase.2.3.0\lib\net46\Abp.TestBase.dll
-
- ..\..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- ..\..\packages\Abp.Zero.EntityFramework.1.5.1\lib\net452\Abp.Zero.EntityFramework.dll
- True
+
+ ..\..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
-
- ..\..\packages\AutoMapper.5.2.0\lib\net45\AutoMapper.dll
- True
+
+ ..\..\packages\Abp.Zero.EntityFramework.2.3.0\lib\net46\Abp.Zero.EntityFramework.dll
-
- ..\..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
- True
+
+ ..\..\packages\AutoMapper.6.1.1\lib\net45\AutoMapper.dll
-
- ..\..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
+
+
+ ..\..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
..\..\packages\Effort.EF6.1.3.0\lib\net45\Effort.dll
@@ -88,17 +80,15 @@
..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
True
-
- ..\..\packages\EntityFramework.DynamicFilters.1.4.11\lib\net40\EntityFramework.DynamicFilters.dll
- True
+
+ ..\..\packages\EntityFramework.DynamicFilters.2.10.0\lib\net40\EntityFramework.DynamicFilters.dll
..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll
True
-
- ..\..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll
@@ -116,9 +106,8 @@
..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -156,6 +145,9 @@
..\..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
diff --git a/src/Tests/YoYo.Cms.Tests/packages.config b/src/Tests/YoYo.Cms.Tests/packages.config
index 3dfb313..d57d33b 100644
--- a/src/Tests/YoYo.Cms.Tests/packages.config
+++ b/src/Tests/YoYo.Cms.Tests/packages.config
@@ -1,31 +1,33 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
+
diff --git a/src/Tools/YoYo.Cms.Migrator/App.config b/src/Tools/YoYo.Cms.Migrator/App.config
index 4a72bfb..cf8ac1b 100644
--- a/src/Tools/YoYo.Cms.Migrator/App.config
+++ b/src/Tools/YoYo.Cms.Migrator/App.config
@@ -2,29 +2,37 @@
-
+
-
+
-
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Tools/YoYo.Cms.Migrator/YoYo.Cms.Migrator.csproj b/src/Tools/YoYo.Cms.Migrator/YoYo.Cms.Migrator.csproj
index d073ba9..2562d33 100644
--- a/src/Tools/YoYo.Cms.Migrator/YoYo.Cms.Migrator.csproj
+++ b/src/Tools/YoYo.Cms.Migrator/YoYo.Cms.Migrator.csproj
@@ -36,57 +36,49 @@
4
-
- ..\..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\..\packages\Abp.Castle.Log4Net.1.5.1\lib\net452\Abp.Castle.Log4Net.dll
- True
+
+ ..\..\packages\Abp.Castle.Log4Net.2.3.0\lib\net46\Abp.Castle.Log4Net.dll
-
- ..\..\packages\Abp.EntityFramework.1.5.1\lib\net452\Abp.EntityFramework.dll
- True
+
+ ..\..\packages\Abp.EntityFramework.2.3.0\lib\net46\Abp.EntityFramework.dll
-
- ..\..\packages\Abp.EntityFramework.Common.1.5.1\lib\net452\Abp.EntityFramework.Common.dll
- True
+
+ ..\..\packages\Abp.EntityFramework.Common.2.3.0\lib\net46\Abp.EntityFramework.Common.dll
-
- ..\..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- ..\..\packages\Abp.Zero.EntityFramework.1.5.1\lib\net452\Abp.Zero.EntityFramework.dll
- True
+
+ ..\..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
-
- ..\..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
- True
+
+ ..\..\packages\Abp.Zero.EntityFramework.2.3.0\lib\net46\Abp.Zero.EntityFramework.dll
-
- ..\..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
+
+
+ ..\..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
True
-
- ..\..\packages\EntityFramework.DynamicFilters.1.4.11\lib\net40\EntityFramework.DynamicFilters.dll
- True
+
+ ..\..\packages\EntityFramework.DynamicFilters.2.10.0\lib\net40\EntityFramework.DynamicFilters.dll
..\..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll
True
-
- ..\..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\..\packages\log4net.2.0.8\lib\net45-full\log4net.dll
@@ -108,9 +100,8 @@
..\..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -136,6 +127,9 @@
..\..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
diff --git a/src/Tools/YoYo.Cms.Migrator/packages.config b/src/Tools/YoYo.Cms.Migrator/packages.config
index 41fd73d..154a551 100644
--- a/src/Tools/YoYo.Cms.Migrator/packages.config
+++ b/src/Tools/YoYo.Cms.Migrator/packages.config
@@ -1,24 +1,26 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/src/YoYo.Cms.Application/MultiTenancy/TenantAppService.cs b/src/YoYo.Cms.Application/MultiTenancy/TenantAppService.cs
index 8dfb04e..4f711f8 100644
--- a/src/YoYo.Cms.Application/MultiTenancy/TenantAppService.cs
+++ b/src/YoYo.Cms.Application/MultiTenancy/TenantAppService.cs
@@ -59,7 +59,7 @@ public async Task CreateTenant(CreateTenantInput input)
tenant.EditionId = defaultEdition.Id;
}
- CheckErrors(await TenantManager.CreateAsync(tenant));
+ await TenantManager.CreateAsync(tenant);
await CurrentUnitOfWork.SaveChangesAsync(); //To get new tenant's id.
//Create tenant database
diff --git a/src/YoYo.Cms.Application/YoYo.Cms.Application.csproj b/src/YoYo.Cms.Application/YoYo.Cms.Application.csproj
index eb14297..e9f4e00 100644
--- a/src/YoYo.Cms.Application/YoYo.Cms.Application.csproj
+++ b/src/YoYo.Cms.Application/YoYo.Cms.Application.csproj
@@ -37,33 +37,29 @@
4
-
- ..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\packages\Abp.AutoMapper.1.5.1\lib\net452\Abp.AutoMapper.dll
- True
+
+ ..\packages\Abp.AutoMapper.2.3.0\lib\net46\Abp.AutoMapper.dll
-
- ..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- ..\packages\AutoMapper.5.2.0\lib\net45\AutoMapper.dll
- True
+
+ ..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
-
- False
- ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
+
+ ..\packages\AutoMapper.6.1.1\lib\net45\AutoMapper.dll
-
- ..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
+
+
+ ..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
@@ -77,9 +73,8 @@
..\packages\EPPlus.4.1.0\lib\net40\EPPlus.dll
True
-
- ..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll
@@ -97,9 +92,8 @@
..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -125,6 +119,9 @@
..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
diff --git a/src/YoYo.Cms.Application/app.config b/src/YoYo.Cms.Application/app.config
index f1da99d..c4a128f 100644
--- a/src/YoYo.Cms.Application/app.config
+++ b/src/YoYo.Cms.Application/app.config
@@ -12,7 +12,7 @@
-
+
@@ -22,6 +22,10 @@
+
+
+
+
diff --git a/src/YoYo.Cms.Application/packages.config b/src/YoYo.Cms.Application/packages.config
index a0b5e86..8c6a24c 100644
--- a/src/YoYo.Cms.Application/packages.config
+++ b/src/YoYo.Cms.Application/packages.config
@@ -1,21 +1,23 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
+
+
\ No newline at end of file
diff --git a/src/YoYo.Cms.Core/Authorization/PermissionChecker.cs b/src/YoYo.Cms.Core/Authorization/PermissionChecker.cs
index 64d1805..902b89e 100644
--- a/src/YoYo.Cms.Core/Authorization/PermissionChecker.cs
+++ b/src/YoYo.Cms.Core/Authorization/PermissionChecker.cs
@@ -5,7 +5,7 @@
namespace YoYo.Cms.Authorization
{
- public class PermissionChecker : PermissionChecker
+ public class PermissionChecker : PermissionChecker< Role, User>
{
public PermissionChecker(UserManager userManager)
: base(userManager)
diff --git a/src/YoYo.Cms.Core/YoYo.Cms.Core.csproj b/src/YoYo.Cms.Core/YoYo.Cms.Core.csproj
index 897635f..917b055 100644
--- a/src/YoYo.Cms.Core/YoYo.Cms.Core.csproj
+++ b/src/YoYo.Cms.Core/YoYo.Cms.Core.csproj
@@ -36,29 +36,26 @@
4
-
- ..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- False
- ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
+
+ ..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
-
- ..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
-
- ..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
+
+
+ ..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll
@@ -76,9 +73,8 @@
..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -104,6 +100,9 @@
..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
diff --git a/src/YoYo.Cms.Core/packages.config b/src/YoYo.Cms.Core/packages.config
index 8e59230..87a68da 100644
--- a/src/YoYo.Cms.Core/packages.config
+++ b/src/YoYo.Cms.Core/packages.config
@@ -1,17 +1,19 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
+
\ 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 bea4a0d..3c3c91b 100644
--- a/src/YoYo.Cms.EntityFramework/YoYo.Cms.EntityFramework.csproj
+++ b/src/YoYo.Cms.EntityFramework/YoYo.Cms.EntityFramework.csproj
@@ -35,53 +35,46 @@
4
-
- ..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\packages\Abp.EntityFramework.1.5.1\lib\net452\Abp.EntityFramework.dll
- True
+
+ ..\packages\Abp.EntityFramework.2.3.0\lib\net46\Abp.EntityFramework.dll
-
- ..\packages\Abp.EntityFramework.Common.1.5.1\lib\net452\Abp.EntityFramework.Common.dll
- True
+
+ ..\packages\Abp.EntityFramework.Common.2.3.0\lib\net46\Abp.EntityFramework.Common.dll
-
- ..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- ..\packages\Abp.Zero.EntityFramework.1.5.1\lib\net452\Abp.Zero.EntityFramework.dll
- True
+
+ ..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
-
- False
- ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
+
+ ..\packages\Abp.Zero.EntityFramework.2.3.0\lib\net46\Abp.Zero.EntityFramework.dll
-
- ..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
+
+
+ ..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
False
..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
-
- ..\packages\EntityFramework.DynamicFilters.1.4.11\lib\net40\EntityFramework.DynamicFilters.dll
- True
+
+ ..\packages\EntityFramework.DynamicFilters.2.10.0\lib\net40\EntityFramework.DynamicFilters.dll
False
..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll
-
- ..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll
@@ -99,9 +92,8 @@
..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -127,6 +119,9 @@
..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
diff --git a/src/YoYo.Cms.EntityFramework/packages.config b/src/YoYo.Cms.EntityFramework/packages.config
index 5f2b7ce..c7cc26b 100644
--- a/src/YoYo.Cms.EntityFramework/packages.config
+++ b/src/YoYo.Cms.EntityFramework/packages.config
@@ -1,22 +1,24 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.d.ts b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.d.ts
new file mode 100644
index 0000000..25d5396
--- /dev/null
+++ b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.d.ts
@@ -0,0 +1,455 @@
+declare namespace abp {
+
+ let appPath: string;
+
+ let pageLoadTime: Date;
+
+ function toAbsAppPath(path: string): string;
+
+ namespace multiTenancy {
+
+ enum sides {
+
+ TENANT = 1,
+
+ HOST = 2
+
+ }
+
+ let isEnabled: boolean;
+
+ let tenantIdCookieName: string;
+
+ function setTenantIdCookie(tenantId?: number): void;
+
+ function getTenantIdCookie(): number;
+
+ }
+
+ interface IAbpSession {
+
+ readonly userId?: number;
+
+ readonly tenantId?: number;
+
+ readonly impersonatorUserId?: number;
+
+ readonly impersonatorTenantId?: number;
+
+ readonly multiTenancySide: multiTenancy.sides;
+
+ }
+
+ let session: IAbpSession;
+
+ namespace localization {
+
+ interface ILanguageInfo {
+
+ name: string;
+
+ displayName: string;
+
+ icon: string;
+
+ isDefault: boolean;
+
+ isDisabled: boolean;
+
+ }
+
+ interface ILocalizationSource {
+
+ name: string;
+
+ type: string;
+
+ }
+
+ let languages: ILanguageInfo[];
+
+ let currentLanguage: ILanguageInfo;
+
+ let sources: ILocalizationSource[];
+
+ let defaultSourceName: string;
+
+ let values: { [key: string]: string };
+
+ let abpWeb: (key: string) => string;
+
+ function localize(key: string, sourceName: string): string;
+
+ function getSource(sourceName: string): (key: string) => string;
+
+ function isCurrentCulture(name: string): boolean;
+ }
+
+ namespace auth {
+
+ let allPermissions: { [name: string]: boolean };
+
+ let grantedPermissions: { [name: string]: boolean };
+
+ function isGranted(permissionName: string): boolean;
+
+ function isAnyGranted(...args: string[]): boolean;
+
+ function areAllGranted(...args: string[]): boolean;
+
+ let tokenCookieName: string;
+
+ /**
+ * Saves auth token.
+ * @param authToken The token to be saved.
+ * @param expireDate Optional expire date. If not specified, token will be deleted at end of the session.
+ */
+ function setToken(authToken: string, expireDate?: Date): void;
+
+ function getToken(): string;
+
+ function clearToken(): void;
+ }
+
+ namespace features {
+
+ interface IFeature {
+
+ value: string;
+
+ }
+
+ let allFeatures: { [name: string]: IFeature };
+
+ function get(name: string): IFeature;
+
+ function getValue(name: string): string;
+
+ function isEnabled(name: string): boolean;
+
+ }
+
+ namespace setting {
+
+ let values: { [name: string]: string };
+
+ function get(name: string): string;
+
+ function getBoolean(name: string): boolean;
+
+ function getInt(name: string): number;
+
+ enum settingScopes {
+
+ Application = 1,
+
+ Tenant = 2,
+
+ User = 4
+ }
+ }
+
+ namespace nav {
+
+ interface IMenu {
+
+ name: string;
+
+ displayName?: string;
+
+ customData?: any;
+
+ items: IMenuItem[];
+
+ }
+
+ interface IMenuItem {
+
+ name: string;
+
+ order: number;
+
+ displayName?: string;
+
+ icon?: string;
+
+ url?: string;
+
+ customData?: any;
+
+ items: IMenuItem[];
+
+ }
+
+ let menus: { [name: string]: IMenu };
+
+ }
+
+ namespace notifications {
+
+ enum severity {
+ INFO,
+ SUCCESS,
+ WARN,
+ ERROR,
+ FATAL
+ }
+
+ enum userNotificationState {
+ UNREAD,
+ READ
+ }
+
+ //TODO: We can extend this interface to define built-in notification types, like ILocalizableMessageNotificationData
+ interface INotificationData {
+
+ type: string;
+
+ properties: any;
+ }
+
+ interface INotification {
+
+ id: string;
+
+ notificationName: string;
+
+ severity: severity;
+
+ entityType?: any;
+
+ entityTypeName?: string;
+
+ entityId?: any;
+
+ data: INotificationData;
+
+ creationTime: Date;
+
+ }
+
+ interface IUserNotification {
+
+ id: string;
+
+ userId: number;
+
+ state: userNotificationState;
+
+ notification: INotification;
+ }
+
+ let messageFormatters: any;
+
+ function getUserNotificationStateAsString(userNotificationState: userNotificationState): string;
+
+ function getUiNotifyFuncBySeverity(severity: severity): (message: string, title?: string, options?: any) => void;
+
+ function getFormattedMessageFromUserNotification(userNotification: IUserNotification): string;
+
+ function showUiNotifyForUserNotification(userNotification: IUserNotification, options?: any): void;
+
+ }
+
+ namespace log {
+
+ enum levels {
+ DEBUG,
+ INFO,
+ WARN,
+ ERROR,
+ FATAL
+ }
+
+ let level: levels;
+
+ function log(logObject?: any, logLevel?: levels): void;
+
+ function debug(logObject?: any): void;
+
+ function info(logObject?: any): void;
+
+ function warn(logObject?: any): void;
+
+ function error(logObject?: any): void;
+
+ function fatal(logObject?: any): void;
+
+ }
+
+ namespace notify {
+
+ function info(message: string, title?: string, options?: any): void;
+
+ function success(message: string, title?: string, options?: any): void;
+
+ function warn(message: string, title?: string, options?: any): void;
+
+ function error(message: string, title?: string, options?: any): void;
+
+ }
+
+ namespace message {
+
+ //TODO: these methods return jQuery.Promise instead of any. fix it.
+
+ function info(message: string, title?: string): any;
+
+ function success(message: string, title?: string): any;
+
+ function warn(message: string, title?: string): any;
+
+ function error(message: string, title?: string): any;
+
+ function confirm(message: string, callback?: (result: boolean) => void): any;
+
+ function confirm(message: string, title?: string, callback?: (result: boolean) => void): any;
+
+ }
+
+ namespace ui {
+
+ function block(elm?: any): void;
+
+ function unblock(elm?: any): void;
+
+ function setBusy(elm?: any, optionsOrPromise?: any): void;
+
+ function clearBusy(elm?: any): void;
+
+ }
+
+ namespace event {
+
+ function on(eventName: string, callback: (...args: any[]) => void): void;
+
+ function off(eventName: string, callback: (...args: any[]) => void): void;
+
+ function trigger(eventName: string, ...args: any[]): void;
+
+ }
+
+ interface INameValue {
+ name: string;
+ value?: any;
+ }
+
+ namespace utils {
+
+ function createNamespace(root: any, ns: string): any;
+
+ function replaceAll(str: string, search: string, replacement: any): string;
+
+ function formatString(str: string, ...args: any[]): string;
+
+ function toPascalCase(str: string): string;
+
+ function toCamelCase(str: string): string;
+
+ function truncateString(str: string, maxLength: number): string;
+
+ function truncateStringWithPostfix(str: string, maxLength: number, postfix?: string): string;
+
+ function isFunction(obj: any): boolean;
+
+ function buildQueryString(parameterInfos: INameValue[], includeQuestionMark?: boolean): string;
+
+ /**
+ * 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)
+ */
+ function setCookieValue(key: string, value: string, expireDate?: Date, path?: string): void;
+
+ /**
+ * 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
+ */
+ function getCookieValue(key: string): string;
+
+ /**
+ * 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)
+ */
+ function deleteCookie(key: string, path?: string): void;
+ }
+
+ namespace timing {
+
+ interface IClockProvider {
+
+ supportsMultipleTimezone: boolean;
+
+ now(): Date;
+
+ normalize(date: Date): Date;
+
+ }
+
+ interface ITimeZoneInfo {
+
+ windows: {
+
+ timeZoneId: string;
+
+ baseUtcOffsetInMilliseconds: number;
+
+ currentUtcOffsetInMilliseconds: number;
+
+ isDaylightSavingTimeNow: boolean;
+
+ },
+
+ iana: {
+
+ timeZoneId: string;
+
+ }
+
+ }
+
+ const utcClockProvider: IClockProvider;
+
+ const localClockProvider: IClockProvider;
+
+ const unspecifiedClockProvider: IClockProvider;
+
+ function convertToUserTimezone(date: Date): Date;
+
+ let timeZoneInfo: ITimeZoneInfo;
+ }
+
+ namespace clock {
+
+ let provider: timing.IClockProvider;
+
+ function now(): Date;
+
+ function normalize(date: Date): Date;
+
+ }
+
+ namespace security {
+
+ namespace antiForgery {
+
+ let tokenCookieName: string;
+
+ let tokenHeaderName: string;
+
+ function getToken(): string;
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.js b/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.js
deleted file mode 100644
index d9dc5f6..0000000
--- a/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.js
+++ /dev/null
@@ -1,879 +0,0 @@
-'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
deleted file mode 100644
index 98e318a..0000000
--- a/src/YoYo.Cms.Web/Abp/Framework/scripts/abp.es5.min.js
+++ /dev/null
@@ -1 +0,0 @@
-"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
deleted file mode 100644
index c0a6002..0000000
--- a/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/angularjs/abp.ng.es5.min.js
+++ /dev/null
@@ -1 +0,0 @@
-"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/Abp/Framework/scripts/libs/bundle.js b/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.js
index 0c9440f..130947c 100644
--- a/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.js
+++ b/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.js
@@ -46,7 +46,7 @@ var abp = abp || {};
abp.ajax = function (userOptions) {
userOptions = userOptions || {};
- var options = $.extend({}, abp.ajax.defaultOpts, userOptions);
+ var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions);
options.success = undefined;
options.error = undefined;
@@ -73,7 +73,10 @@ var abp = abp || {};
defaultOpts: {
dataType: 'json',
type: 'POST',
- contentType: 'application/json'
+ contentType: 'application/json',
+ headers: {
+ 'X-Requested-With': 'XMLHttpRequest'
+ }
},
defaultError: {
@@ -326,33 +329,19 @@ var abp = abp || {};
maxResultCount: jtParams.jtPageSize,
sorting: jtParams.jtSorting
});
- if (!$.isFunction(originalListAction.method)) {
- originalListAction.method.done(function (result) {
+ originalListAction.method(input)
+ .done(function (result) {
$dfd.resolve({
"Result": "OK",
"Records": result.items || result[originalListAction.recordsField],
"TotalRecordCount": result.totalCount,
originalResult: result
});
-
+ })
+ .fail(function (error) {
+ self._handlerForFailOnAbpRequest($dfd, error);
});
-
- } else {
- originalListAction.method(input)
- .done(function (result) {
- $dfd.resolve({
- "Result": "OK",
- "Records": result.items || result[originalListAction.recordsField],
- "TotalRecordCount": result.totalCount,
- originalResult: result
- });
- })
- .fail(function (error) {
- self._handlerForFailOnAbpRequest($dfd, error);
- });
- }
-
});
};
},
@@ -680,7 +669,7 @@ var abp = abp || {};
var opts = $.extend(
{},
- abp.libs.sweetAlert.config.default,
+ abp.libs.sweetAlert.config['default'],
abp.libs.sweetAlert.config[type],
{
title: title,
@@ -724,7 +713,7 @@ var abp = abp || {};
var opts = $.extend(
{},
- abp.libs.sweetAlert.config.default,
+ abp.libs.sweetAlert.config['default'],
abp.libs.sweetAlert.config.confirm,
userOpts
);
@@ -744,6 +733,7 @@ var abp = abp || {};
});
})(jQuery);
+
var abp = abp || {};
(function () {
diff --git a/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.min.js b/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.min.js
index 1cf2799..bdb343d 100644
--- a/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.min.js
+++ b/src/YoYo.Cms.Web/Abp/Framework/scripts/libs/bundle.min.js
@@ -1 +1 @@
-var abp=abp||{};(function(){$.blockUI&&($.extend($.blockUI.defaults,{message:" ",css:{},overlayCSS:{backgroundColor:"#AAA",opacity:.3,cursor:"wait"}}),abp.ui.block=function(n){n?$(n).block():$.blockUI()},abp.ui.unblock=function(n){n?$(n).unblock():$.unblockUI()})})();abp=abp||{},function(n){if(n){abp.ajax=function(t){t=t||{};var i=n.extend({},abp.ajax.defaultOpts,t);return i.success=undefined,i.error=undefined,n.Deferred(function(r){n.ajax(i).done(function(n,i,u){n.__abp?abp.ajax.handleResponse(n,t,r,u):(r.resolve(n),t.success&&t.success(n))}).fail(function(n){n.responseJSON&&n.responseJSON.__abp?abp.ajax.handleResponse(n.responseJSON,t,r,n):abp.ajax.handleNonAbpErrorResponse(n,t,r)})})};n.extend(abp.ajax,{defaultOpts:{dataType:"json",type:"POST",contentType:"application/json"},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(n){abp.log.error(n)},showError:function(n){return n.details?abp.message.error(n.details,n.message):abp.message.error(n.message||abp.ajax.defaultError.message)},handleTargetUrl:function(n){location.href=n?n:abp.appPath},handleNonAbpErrorResponse:function(n,t,i){if(t.abpHandleError!==!1)switch(n.status){case 401:abp.ajax.handleUnAuthorizedRequest(abp.ajax.showError(abp.ajax.defaultError401),abp.appPath);break;case 403:abp.ajax.showError(abp.ajax.defaultError403);break;case 404:abp.ajax.showError(abp.ajax.defaultError404);break;default:abp.ajax.showError(abp.ajax.defaultError)}i.reject.apply(this,arguments);t.error&&t.error.apply(this,arguments)},handleUnAuthorizedRequest:function(n,t){n?n.done(function(){abp.ajax.handleTargetUrl(t)}):abp.ajax.handleTargetUrl(t)},handleResponse:function(n,t,i,r){if(n)if(n.success===!0)i&&i.resolve(n.result,n,r),t.success&&t.success(n.result,n,r),n.targetUrl&&abp.ajax.handleTargetUrl(n.targetUrl);else if(n.success===!1){var u=null;n.error?t.abpHandleError!==!1&&(u=abp.ajax.showError(n.error)):n.error=abp.ajax.defaultError;abp.ajax.logError(n.error);i&&i.reject(n.error,r);t.error&&t.error(n.error,r);r.status===401&&t.abpHandleError!==!1&&abp.ajax.handleUnAuthorizedRequest(u,n.targetUrl)}else i&&i.resolve(n,null,r),t.success&&t.success(n,null,r);else i&&i.resolve(r),t.success&&t.success(r)},blockUI:function(n){n.blockUI&&(n.blockUI===!0?abp.ui.setBusy():abp.ui.setBusy(n.blockUI))},unblockUI:function(n){n.blockUI&&(n.blockUI===!0?abp.ui.clearBusy():abp.ui.clearBusy(n.blockUI))},ajaxSendHandler:function(n,t,i){var r=abp.security.antiForgery.getToken();r&&(i.headers&&i.headers[abp.security.antiForgery.tokenHeaderName]!==undefined||t.setRequestHeader(abp.security.antiForgery.tokenHeaderName,r))}});n(document).ajaxSend(function(n,t,i){return abp.ajax.ajaxSendHandler(n,t,i)});n.fn.ajaxForm&&(n.fn.abpAjaxForm=function(t){t=t||{};var i=n.extend({},n.fn.abpAjaxForm.defaults,t);return i.beforeSubmit=function(){abp.ajax.blockUI(i);t.beforeSubmit&&t.beforeSubmit.apply(this,arguments)},i.success=function(n){abp.ajax.handleResponse(n,t)},i.complete=function(){abp.ajax.unblockUI(i);t.complete&&t.complete.apply(this,arguments)},this.ajaxForm(i)},n.fn.abpAjaxForm.defaults={method:"POST"});abp.event.on("abp.dynamicScriptsInitialized",function(){abp.ajax.defaultError.message=abp.localization.abpWeb("DefaultError");abp.ajax.defaultError.details=abp.localization.abpWeb("DefaultErrorDetail");abp.ajax.defaultError401.message=abp.localization.abpWeb("DefaultError401");abp.ajax.defaultError401.details=abp.localization.abpWeb("DefaultErrorDetail401");abp.ajax.defaultError403.message=abp.localization.abpWeb("DefaultError403");abp.ajax.defaultError403.details=abp.localization.abpWeb("DefaultErrorDetail403");abp.ajax.defaultError404.message=abp.localization.abpWeb("DefaultError404");abp.ajax.defaultError404.details=abp.localization.abpWeb("DefaultErrorDetail404")})}}(jQuery),function(n){if(n&&n.hik&&n.hik.jtable){var t={_create:n.hik.jtable.prototype._create};n.extend(!0,n.hik.jtable.prototype,{_create:function(){var n=this;t._create.apply(n,arguments);n.options.actions.listAction&&n._adaptListActionforAbp();n.options.actions.createAction&&n._adaptCreateActionforAbp();n.options.actions.updateAction&&n._adaptUpdateActionforAbp();n.options.actions.deleteAction&&n._adaptDeleteActionforAbp()},_adaptListActionforAbp:function(){var i=this,t=i.options.actions.listAction;i.options.actions.listAction=function(r,u){return n.Deferred(function(f){var e=n.extend({},r,{skipCount:u.jtStartIndex,maxResultCount:u.jtPageSize,sorting:u.jtSorting});n.isFunction(t.method)?t.method(e).done(function(n){f.resolve({Result:"OK",Records:n.items||n[t.recordsField],TotalRecordCount:n.totalCount,originalResult:n})}).fail(function(n){i._handlerForFailOnAbpRequest(f,n)}):t.method.done(function(n){f.resolve({Result:"OK",Records:n.items||n[t.recordsField],TotalRecordCount:n.totalCount,originalResult:n})})})}},_adaptCreateActionforAbp:function(){var t=this,i=t.options.actions.createAction;t.options.actions.createAction=function(r){return n.Deferred(function(u){var f=n.extend({},r);i.method(f).done(function(n){u.resolve({Result:"OK",Record:i.recordField?n[i.recordField]:n,originalResult:n})}).fail(function(n){t._handlerForFailOnAbpRequest(u,n)})})}},_adaptUpdateActionforAbp:function(){var i=this,t=i.options.actions.updateAction;i.options.actions.updateAction=function(r){return n.Deferred(function(u){var f=n.extend({},r);t.method(f).done(function(n){var i={Result:"OK",originalResult:n};t.returnsRecord&&(i.Record=t.recordField?n[t.recordField]:n);u.resolve(i)}).fail(function(n){i._handlerForFailOnAbpRequest(u,n)})})}},_adaptDeleteActionforAbp:function(){var t=this,i=t.options.actions.deleteAction;t.options.actions.deleteAction=function(r){return n.Deferred(function(u){var f=n.extend({},r);i.method(f).done(function(n){u.resolve({Result:"OK",originalResult:n})}).fail(function(n){t._handlerForFailOnAbpRequest(u,n)})})}},_handlerForFailOnAbpRequest:function(n,t){t&&t.message?n.resolve({Result:"ERROR",Message:t.message}):n.reject(t)},_showError:function(){}});n.extend(!0,n.hik.jtable.prototype.options,{pageList:"minimal"})}}(jQuery);abp=abp||{},function(){moment&&moment.tz&&(abp.timing=abp.timing||{},abp.timing.convertToUserTimezone=function(n){var t=moment(n);return t.clone().tz(abp.timing.timeZoneInfo.iana.timeZoneId)})}();abp=abp||{},function(n){if(n&&n.connection){abp.signalr=abp.signalr||{};abp.signalr.hubs=abp.signalr.hubs||{};abp.signalr.hubs.common=n.connection.abpCommonHub;var t=abp.signalr.hubs.common;t&&(t.client.getNotification=function(n){abp.event.trigger("abp.notifications.received",n)},abp.signalr.connect=function(){n.connection.hub.start().done(function(){abp.log.debug("Connected to SignalR server!");abp.event.trigger("abp.signalr.connected");t.server.register().done(function(){abp.log.debug("Registered to the SignalR server!")})})},abp.signalr.autoConnect===undefined&&(abp.signalr.autoConnect=!0),abp.signalr.autoConnect&&abp.signalr.connect(),n.connection.hub.disconnected(function(){abp.signalr.autoConnect&&setTimeout(function(){n.connection.hub.state===n.signalR.connectionState.disconnected&&n.connection.hub.start()},5e3)}))}}(jQuery);abp=abp||{},function(){$.fn.spin&&(abp.libs=abp.libs||{},abp.libs.spinjs={spinner_config:{lines:11,length:0,width:10,radius:20,corners:1,trail:60,speed:1.2},spinner_config_inner_busy_indicator:{lines:11,length:0,width:4,radius:7,corners:1,trail:60,speed:1.2}},abp.ui.setBusy=function(n,t){var i,r,u;t=t||{};(t.always||t["finally"])&&(t={promise:t});i=$.extend({},t);n?(r=$(n),u=r.find(".abp-busy-indicator"),u.length?u.spin(abp.libs.spinjs.spinner_config_inner_busy_indicator):(i.blockUI!=!1&&abp.ui.block(n),r.spin(abp.libs.spinjs.spinner_config))):(i.blockUI!=!1&&abp.ui.block(),$("body").spin(abp.libs.spinjs.spinner_config));i.promise&&(i.promise.always?i.promise.always(function(){abp.ui.clearBusy(n)}):i.promise["finally"]&&i.promise["finally"](function(){abp.ui.clearBusy(n)}))},abp.ui.clearBusy=function(n){if(n){var t=$(n),i=t.find(".abp-busy-indicator");i.length?i.spin(!1):(abp.ui.unblock(n),t.spin(!1))}else abp.ui.unblock(),$("body").spin(!1)})}();abp=abp||{},function(n){if(sweetAlert&&n){abp.libs=abp.libs||{};abp.libs.sweetAlert={config:{"default":{},info:{type:"info"},success:{type:"success"},warn:{type:"warning"},error:{type:"error"},confirm:{type:"warning",title:"Are you sure?",showCancelButton:!0,cancelButtonText:"Cancel",confirmButtonColor:"#DD6B55",confirmButtonText:"Yes"}}};var t=function(t,i,r){r||(r=i,i=undefined);var u=n.extend({},abp.libs.sweetAlert.config.default,abp.libs.sweetAlert.config[t],{title:r,text:i});return n.Deferred(function(n){sweetAlert(u,function(){n.resolve()})})};abp.message.info=function(n,i){return t("info",n,i)};abp.message.success=function(n,i){return t("success",n,i)};abp.message.warn=function(n,i){return t("warn",n,i)};abp.message.error=function(n,i){return t("error",n,i)};abp.message.confirm=function(t,i,r){var u={text:t},f;return n.isFunction(i)?r=i:i&&(u.title=i),f=n.extend({},abp.libs.sweetAlert.config.default,abp.libs.sweetAlert.config.confirm,u),n.Deferred(function(n){sweetAlert(f,function(t){r&&r(t);n.resolve(t)})})};abp.event.on("abp.dynamicScriptsInitialized",function(){abp.libs.sweetAlert.config.confirm.title=abp.localization.abpWeb("AreYouSure");abp.libs.sweetAlert.config.confirm.cancelButtonText=abp.localization.abpWeb("Cancel");abp.libs.sweetAlert.config.confirm.confirmButtonText=abp.localization.abpWeb("Yes")})}}(jQuery);abp=abp||{},function(){if(toastr){toastr.options.positionClass="toast-bottom-right";var n=function(n,t,i,r){toastr[n](t,i,r)};abp.notify.success=function(t,i,r){n("success",t,i,r)};abp.notify.info=function(t,i,r){n("info",t,i,r)};abp.notify.warn=function(t,i,r){n("warning",t,i,r)};abp.notify.error=function(t,i,r){n("error",t,i,r)}}}();
\ No newline at end of file
+var abp=abp||{};(function(){$.blockUI&&($.extend($.blockUI.defaults,{message:" ",css:{},overlayCSS:{backgroundColor:"#AAA",opacity:.3,cursor:"wait"}}),abp.ui.block=function(n){n?$(n).block():$.blockUI()},abp.ui.unblock=function(n){n?$(n).unblock():$.unblockUI()})})();abp=abp||{},function(n){if(n){abp.ajax=function(t){t=t||{};var i=n.extend(!0,{},abp.ajax.defaultOpts,t);return i.success=undefined,i.error=undefined,n.Deferred(function(r){n.ajax(i).done(function(n,i,u){n.__abp?abp.ajax.handleResponse(n,t,r,u):(r.resolve(n),t.success&&t.success(n))}).fail(function(n){n.responseJSON&&n.responseJSON.__abp?abp.ajax.handleResponse(n.responseJSON,t,r,n):abp.ajax.handleNonAbpErrorResponse(n,t,r)})})};n.extend(abp.ajax,{defaultOpts:{dataType:"json",type:"POST",contentType:"application/json",headers:{"X-Requested-With":"XMLHttpRequest"}},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(n){abp.log.error(n)},showError:function(n){return n.details?abp.message.error(n.details,n.message):abp.message.error(n.message||abp.ajax.defaultError.message)},handleTargetUrl:function(n){location.href=n?n:abp.appPath},handleNonAbpErrorResponse:function(n,t,i){if(t.abpHandleError!==!1)switch(n.status){case 401:abp.ajax.handleUnAuthorizedRequest(abp.ajax.showError(abp.ajax.defaultError401),abp.appPath);break;case 403:abp.ajax.showError(abp.ajax.defaultError403);break;case 404:abp.ajax.showError(abp.ajax.defaultError404);break;default:abp.ajax.showError(abp.ajax.defaultError)}i.reject.apply(this,arguments);t.error&&t.error.apply(this,arguments)},handleUnAuthorizedRequest:function(n,t){n?n.done(function(){abp.ajax.handleTargetUrl(t)}):abp.ajax.handleTargetUrl(t)},handleResponse:function(n,t,i,r){if(n)if(n.success===!0)i&&i.resolve(n.result,n,r),t.success&&t.success(n.result,n,r),n.targetUrl&&abp.ajax.handleTargetUrl(n.targetUrl);else if(n.success===!1){var u=null;n.error?t.abpHandleError!==!1&&(u=abp.ajax.showError(n.error)):n.error=abp.ajax.defaultError;abp.ajax.logError(n.error);i&&i.reject(n.error,r);t.error&&t.error(n.error,r);r.status===401&&t.abpHandleError!==!1&&abp.ajax.handleUnAuthorizedRequest(u,n.targetUrl)}else i&&i.resolve(n,null,r),t.success&&t.success(n,null,r);else i&&i.resolve(r),t.success&&t.success(r)},blockUI:function(n){n.blockUI&&(n.blockUI===!0?abp.ui.setBusy():abp.ui.setBusy(n.blockUI))},unblockUI:function(n){n.blockUI&&(n.blockUI===!0?abp.ui.clearBusy():abp.ui.clearBusy(n.blockUI))},ajaxSendHandler:function(n,t,i){var r=abp.security.antiForgery.getToken();r&&(i.headers&&i.headers[abp.security.antiForgery.tokenHeaderName]!==undefined||t.setRequestHeader(abp.security.antiForgery.tokenHeaderName,r))}});n(document).ajaxSend(function(n,t,i){return abp.ajax.ajaxSendHandler(n,t,i)});n.fn.ajaxForm&&(n.fn.abpAjaxForm=function(t){t=t||{};var i=n.extend({},n.fn.abpAjaxForm.defaults,t);return i.beforeSubmit=function(){abp.ajax.blockUI(i);t.beforeSubmit&&t.beforeSubmit.apply(this,arguments)},i.success=function(n){abp.ajax.handleResponse(n,t)},i.complete=function(){abp.ajax.unblockUI(i);t.complete&&t.complete.apply(this,arguments)},this.ajaxForm(i)},n.fn.abpAjaxForm.defaults={method:"POST"});abp.event.on("abp.dynamicScriptsInitialized",function(){abp.ajax.defaultError.message=abp.localization.abpWeb("DefaultError");abp.ajax.defaultError.details=abp.localization.abpWeb("DefaultErrorDetail");abp.ajax.defaultError401.message=abp.localization.abpWeb("DefaultError401");abp.ajax.defaultError401.details=abp.localization.abpWeb("DefaultErrorDetail401");abp.ajax.defaultError403.message=abp.localization.abpWeb("DefaultError403");abp.ajax.defaultError403.details=abp.localization.abpWeb("DefaultErrorDetail403");abp.ajax.defaultError404.message=abp.localization.abpWeb("DefaultError404");abp.ajax.defaultError404.details=abp.localization.abpWeb("DefaultErrorDetail404")})}}(jQuery),function(n){if(n&&n.hik&&n.hik.jtable){var t={_create:n.hik.jtable.prototype._create};n.extend(!0,n.hik.jtable.prototype,{_create:function(){var n=this;t._create.apply(n,arguments);n.options.actions.listAction&&n._adaptListActionforAbp();n.options.actions.createAction&&n._adaptCreateActionforAbp();n.options.actions.updateAction&&n._adaptUpdateActionforAbp();n.options.actions.deleteAction&&n._adaptDeleteActionforAbp()},_adaptListActionforAbp:function(){var t=this,i=t.options.actions.listAction;t.options.actions.listAction=function(r,u){return n.Deferred(function(f){var e=n.extend({},r,{skipCount:u.jtStartIndex,maxResultCount:u.jtPageSize,sorting:u.jtSorting});i.method(e).done(function(n){f.resolve({Result:"OK",Records:n.items||n[i.recordsField],TotalRecordCount:n.totalCount,originalResult:n})}).fail(function(n){t._handlerForFailOnAbpRequest(f,n)})})}},_adaptCreateActionforAbp:function(){var t=this,i=t.options.actions.createAction;t.options.actions.createAction=function(r){return n.Deferred(function(u){var f=n.extend({},r);i.method(f).done(function(n){u.resolve({Result:"OK",Record:i.recordField?n[i.recordField]:n,originalResult:n})}).fail(function(n){t._handlerForFailOnAbpRequest(u,n)})})}},_adaptUpdateActionforAbp:function(){var i=this,t=i.options.actions.updateAction;i.options.actions.updateAction=function(r){return n.Deferred(function(u){var f=n.extend({},r);t.method(f).done(function(n){var i={Result:"OK",originalResult:n};t.returnsRecord&&(i.Record=t.recordField?n[t.recordField]:n);u.resolve(i)}).fail(function(n){i._handlerForFailOnAbpRequest(u,n)})})}},_adaptDeleteActionforAbp:function(){var t=this,i=t.options.actions.deleteAction;t.options.actions.deleteAction=function(r){return n.Deferred(function(u){var f=n.extend({},r);i.method(f).done(function(n){u.resolve({Result:"OK",originalResult:n})}).fail(function(n){t._handlerForFailOnAbpRequest(u,n)})})}},_handlerForFailOnAbpRequest:function(n,t){t&&t.message?n.resolve({Result:"ERROR",Message:t.message}):n.reject(t)},_showError:function(){}});n.extend(!0,n.hik.jtable.prototype.options,{pageList:"minimal"})}}(jQuery);abp=abp||{},function(){moment&&moment.tz&&(abp.timing=abp.timing||{},abp.timing.convertToUserTimezone=function(n){var t=moment(n);return t.clone().tz(abp.timing.timeZoneInfo.iana.timeZoneId)})}();abp=abp||{},function(n){if(n&&n.connection){abp.signalr=abp.signalr||{};abp.signalr.hubs=abp.signalr.hubs||{};abp.signalr.hubs.common=n.connection.abpCommonHub;var t=abp.signalr.hubs.common;t&&(t.client.getNotification=function(n){abp.event.trigger("abp.notifications.received",n)},abp.signalr.connect=function(){n.connection.hub.start().done(function(){abp.log.debug("Connected to SignalR server!");abp.event.trigger("abp.signalr.connected");t.server.register().done(function(){abp.log.debug("Registered to the SignalR server!")})})},abp.signalr.autoConnect===undefined&&(abp.signalr.autoConnect=!0),abp.signalr.autoConnect&&abp.signalr.connect(),n.connection.hub.disconnected(function(){abp.signalr.autoConnect&&setTimeout(function(){n.connection.hub.state===n.signalR.connectionState.disconnected&&n.connection.hub.start()},5e3)}))}}(jQuery);abp=abp||{},function(){$.fn.spin&&(abp.libs=abp.libs||{},abp.libs.spinjs={spinner_config:{lines:11,length:0,width:10,radius:20,corners:1,trail:60,speed:1.2},spinner_config_inner_busy_indicator:{lines:11,length:0,width:4,radius:7,corners:1,trail:60,speed:1.2}},abp.ui.setBusy=function(n,t){var i,r,u;t=t||{};(t.always||t["finally"])&&(t={promise:t});i=$.extend({},t);n?(r=$(n),u=r.find(".abp-busy-indicator"),u.length?u.spin(abp.libs.spinjs.spinner_config_inner_busy_indicator):(i.blockUI!=!1&&abp.ui.block(n),r.spin(abp.libs.spinjs.spinner_config))):(i.blockUI!=!1&&abp.ui.block(),$("body").spin(abp.libs.spinjs.spinner_config));i.promise&&(i.promise.always?i.promise.always(function(){abp.ui.clearBusy(n)}):i.promise["finally"]&&i.promise["finally"](function(){abp.ui.clearBusy(n)}))},abp.ui.clearBusy=function(n){if(n){var t=$(n),i=t.find(".abp-busy-indicator");i.length?i.spin(!1):(abp.ui.unblock(n),t.spin(!1))}else abp.ui.unblock(),$("body").spin(!1)})}();abp=abp||{},function(n){if(sweetAlert&&n){abp.libs=abp.libs||{};abp.libs.sweetAlert={config:{"default":{},info:{type:"info"},success:{type:"success"},warn:{type:"warning"},error:{type:"error"},confirm:{type:"warning",title:"Are you sure?",showCancelButton:!0,cancelButtonText:"Cancel",confirmButtonColor:"#DD6B55",confirmButtonText:"Yes"}}};var t=function(t,i,r){r||(r=i,i=undefined);var u=n.extend({},abp.libs.sweetAlert.config["default"],abp.libs.sweetAlert.config[t],{title:r,text:i});return n.Deferred(function(n){sweetAlert(u,function(){n.resolve()})})};abp.message.info=function(n,i){return t("info",n,i)};abp.message.success=function(n,i){return t("success",n,i)};abp.message.warn=function(n,i){return t("warn",n,i)};abp.message.error=function(n,i){return t("error",n,i)};abp.message.confirm=function(t,i,r){var u={text:t},f;return n.isFunction(i)?r=i:i&&(u.title=i),f=n.extend({},abp.libs.sweetAlert.config["default"],abp.libs.sweetAlert.config.confirm,u),n.Deferred(function(n){sweetAlert(f,function(t){r&&r(t);n.resolve(t)})})};abp.event.on("abp.dynamicScriptsInitialized",function(){abp.libs.sweetAlert.config.confirm.title=abp.localization.abpWeb("AreYouSure");abp.libs.sweetAlert.config.confirm.cancelButtonText=abp.localization.abpWeb("Cancel");abp.libs.sweetAlert.config.confirm.confirmButtonText=abp.localization.abpWeb("Yes")})}}(jQuery);abp=abp||{},function(){if(toastr){toastr.options.positionClass="toast-bottom-right";var n=function(n,t,i,r){toastr[n](t,i,r)};abp.notify.success=function(t,i,r){n("success",t,i,r)};abp.notify.info=function(t,i,r){n("info",t,i,r)};abp.notify.warn=function(t,i,r){n("warning",t,i,r)};abp.notify.error=function(t,i,r){n("error",t,i,r)}}}();
\ No newline at end of file
diff --git a/src/YoYo.Cms.Web/Controllers/AccountController.cs b/src/YoYo.Cms.Web/Controllers/AccountController.cs
index 6946b3e..02f0a10 100644
--- a/src/YoYo.Cms.Web/Controllers/AccountController.cs
+++ b/src/YoYo.Cms.Web/Controllers/AccountController.cs
@@ -30,6 +30,7 @@
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
+using Abp.Authorization;
using YoYo.Cms.Notifications;
using YoYo.Cms.UserManagerment.Users;
diff --git a/src/YoYo.Cms.Web/Web.config b/src/YoYo.Cms.Web/Web.config
index f1744c7..41050bf 100644
--- a/src/YoYo.Cms.Web/Web.config
+++ b/src/YoYo.Cms.Web/Web.config
@@ -64,7 +64,7 @@
-
+
@@ -104,11 +104,11 @@
-
+
-
+
@@ -116,7 +116,7 @@
-
+
@@ -128,7 +128,19 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj b/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj
index 7268d6b..6e380e6 100644
--- a/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj
+++ b/src/YoYo.Cms.Web/YoYo.Cms.Web.csproj
@@ -27,6 +27,7 @@
2.2
+
true
@@ -61,104 +62,85 @@
4
-
- ..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\packages\Abp.AutoMapper.1.5.1\lib\net452\Abp.AutoMapper.dll
- True
+
+ ..\packages\Abp.AutoMapper.2.3.0\lib\net46\Abp.AutoMapper.dll
-
- ..\packages\Abp.Castle.Log4Net.1.5.1\lib\net452\Abp.Castle.Log4Net.dll
- True
+
+ ..\packages\Abp.Castle.Log4Net.2.3.0\lib\net46\Abp.Castle.Log4Net.dll
-
- ..\packages\Abp.EntityFramework.1.5.1\lib\net452\Abp.EntityFramework.dll
- True
+
+ ..\packages\Abp.EntityFramework.2.3.0\lib\net46\Abp.EntityFramework.dll
-
- ..\packages\Abp.EntityFramework.Common.1.5.1\lib\net452\Abp.EntityFramework.Common.dll
- True
+
+ ..\packages\Abp.EntityFramework.Common.2.3.0\lib\net46\Abp.EntityFramework.Common.dll
-
- ..\packages\Abp.HangFire.1.5.1\lib\net452\Abp.HangFire.dll
- True
+
+ ..\packages\Abp.HangFire.2.3.0\lib\net46\Abp.HangFire.dll
-
- ..\packages\Abp.Owin.1.5.1\lib\net452\Abp.Owin.dll
- True
+
+ ..\packages\Abp.Owin.2.3.0\lib\net46\Abp.Owin.dll
-
- ..\packages\Abp.Web.1.5.1\lib\net452\Abp.Web.dll
- True
+
+ ..\packages\Abp.Web.2.3.0\lib\net46\Abp.Web.dll
-
- ..\packages\Abp.Web.Api.1.5.1\lib\net452\Abp.Web.Api.dll
- True
+
+ ..\packages\Abp.Web.Api.2.3.0\lib\net46\Abp.Web.Api.dll
-
- ..\packages\Abp.Web.Common.1.5.1\lib\net452\Abp.Web.Common.dll
- True
+
+ ..\packages\Abp.Web.Common.2.3.0\lib\net46\Abp.Web.Common.dll
-
- ..\packages\Abp.Web.Mvc.1.5.1\lib\net452\Abp.Web.Mvc.dll
- True
+
+ ..\packages\Abp.Web.Mvc.2.3.0\lib\net46\Abp.Web.Mvc.dll
-
- ..\packages\Abp.Web.SignalR.1.5.1\lib\net452\Abp.Web.SignalR.dll
- True
+
+ ..\packages\Abp.Web.SignalR.2.3.0\lib\net46\Abp.Web.SignalR.dll
-
- ..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- ..\packages\Abp.Zero.EntityFramework.1.5.1\lib\net452\Abp.Zero.EntityFramework.dll
- True
+
+ ..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
+
+
+ ..\packages\Abp.Zero.EntityFramework.2.3.0\lib\net46\Abp.Zero.EntityFramework.dll
..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll
-
- ..\packages\AutoMapper.5.2.0\lib\net45\AutoMapper.dll
- True
+
+ ..\packages\AutoMapper.6.1.1\lib\net45\AutoMapper.dll
-
- False
- ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
+
+ ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
-
- ..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
False
..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
-
- ..\packages\EntityFramework.DynamicFilters.1.4.11\lib\net40\EntityFramework.DynamicFilters.dll
- True
+
+ ..\packages\EntityFramework.DynamicFilters.2.10.0\lib\net40\EntityFramework.DynamicFilters.dll
False
..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll
-
- ..\packages\Hangfire.Core.1.6.10\lib\net45\Hangfire.Core.dll
- True
+
+ ..\packages\Hangfire.Core.1.6.14\lib\net45\Hangfire.Core.dll
-
- ..\packages\Hangfire.SqlServer.1.6.10\lib\net45\Hangfire.SqlServer.dll
- True
+
+ ..\packages\Hangfire.SqlServer.1.6.14\lib\net45\Hangfire.SqlServer.dll
-
- ..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\packages\log4net.2.0.8\lib\net45-full\log4net.dll
@@ -172,54 +154,44 @@
..\packages\Microsoft.AspNet.Identity.Owin.2.2.1\lib\net45\Microsoft.AspNet.Identity.Owin.dll
True
-
- ..\packages\Microsoft.AspNet.SignalR.Core.2.2.1\lib\net45\Microsoft.AspNet.SignalR.Core.dll
- True
+
+ ..\packages\Microsoft.AspNet.SignalR.Core.2.2.2\lib\net45\Microsoft.AspNet.SignalR.Core.dll
..\packages\Microsoft.AspNet.SignalR.SystemWeb.2.2.1\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll
True
-
- ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll
- True
+
+ ..\packages\Microsoft.Owin.3.1.0\lib\net45\Microsoft.Owin.dll
-
- ..\packages\Microsoft.Owin.FileSystems.3.0.1\lib\net45\Microsoft.Owin.FileSystems.dll
- True
+
+ ..\packages\Microsoft.Owin.FileSystems.3.1.0\lib\net45\Microsoft.Owin.FileSystems.dll
-
- ..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
- True
+
+ ..\packages\Microsoft.Owin.Host.SystemWeb.3.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
-
- ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll
- True
+
+ ..\packages\Microsoft.Owin.Security.3.1.0\lib\net45\Microsoft.Owin.Security.dll
-
- ..\packages\Microsoft.Owin.Security.Cookies.3.0.1\lib\net45\Microsoft.Owin.Security.Cookies.dll
- True
+
+ ..\packages\Microsoft.Owin.Security.Cookies.3.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll
-
- ..\packages\Microsoft.Owin.Security.Facebook.3.0.1\lib\net45\Microsoft.Owin.Security.Facebook.dll
- True
+
+ ..\packages\Microsoft.Owin.Security.Facebook.3.1.0\lib\net45\Microsoft.Owin.Security.Facebook.dll
-
- ..\packages\Microsoft.Owin.Security.Google.3.0.1\lib\net45\Microsoft.Owin.Security.Google.dll
- True
+
+ ..\packages\Microsoft.Owin.Security.Google.3.1.0\lib\net45\Microsoft.Owin.Security.Google.dll
..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
True
-
- ..\packages\Microsoft.Owin.Security.Twitter.3.0.1\lib\net45\Microsoft.Owin.Security.Twitter.dll
- True
+
+ ..\packages\Microsoft.Owin.Security.Twitter.3.1.0\lib\net45\Microsoft.Owin.Security.Twitter.dll
-
- ..\packages\Microsoft.Owin.StaticFiles.3.0.1\lib\net45\Microsoft.Owin.StaticFiles.dll
- True
+
+ ..\packages\Microsoft.Owin.StaticFiles.3.1.0\lib\net45\Microsoft.Owin.StaticFiles.dll
..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll
@@ -233,9 +205,8 @@
..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -262,6 +233,9 @@
..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
@@ -334,12 +308,6 @@
-
- abp.js
-
-
- abp.es5.js
-
@@ -353,12 +321,6 @@
-
- abp.ng.js
-
-
- abp.ng.es5.js
-
@@ -1807,10 +1769,6 @@
-
-
-
-
@@ -1915,6 +1873,10 @@
+
+
+
+
@@ -2134,6 +2096,11 @@
+
+
+
+
+
10.0
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
diff --git a/src/YoYo.Cms.Web/packages.config b/src/YoYo.Cms.Web/packages.config
index ccef72e..62e894d 100644
--- a/src/YoYo.Cms.Web/packages.config
+++ b/src/YoYo.Cms.Web/packages.config
@@ -1,36 +1,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
@@ -44,7 +45,7 @@
-
+
@@ -58,24 +59,25 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/src/YoYo.Cms.WebApi/Api/Controllers/AccountController.cs b/src/YoYo.Cms.WebApi/Api/Controllers/AccountController.cs
index b7e86a0..71060f3 100644
--- a/src/YoYo.Cms.WebApi/Api/Controllers/AccountController.cs
+++ b/src/YoYo.Cms.WebApi/Api/Controllers/AccountController.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using System.Web.Http;
+using Abp.Authorization;
using Abp.Authorization.Users;
using Abp.UI;
using Abp.Web.Models;
diff --git a/src/YoYo.Cms.WebApi/YoYo.Cms.WebApi.csproj b/src/YoYo.Cms.WebApi/YoYo.Cms.WebApi.csproj
index 3a4b7c0..26fcc71 100644
--- a/src/YoYo.Cms.WebApi/YoYo.Cms.WebApi.csproj
+++ b/src/YoYo.Cms.WebApi/YoYo.Cms.WebApi.csproj
@@ -36,61 +36,51 @@
4
-
- ..\packages\Abp.1.5.1\lib\net452\Abp.dll
- True
+
+ ..\packages\Abp.2.3.0\lib\net46\Abp.dll
-
- ..\packages\Abp.AutoMapper.1.5.1\lib\net452\Abp.AutoMapper.dll
- True
+
+ ..\packages\Abp.AutoMapper.2.3.0\lib\net46\Abp.AutoMapper.dll
-
- ..\packages\Abp.Web.1.5.1\lib\net452\Abp.Web.dll
- True
+
+ ..\packages\Abp.Web.2.3.0\lib\net46\Abp.Web.dll
-
- ..\packages\Abp.Web.Api.1.5.1\lib\net452\Abp.Web.Api.dll
- True
+
+ ..\packages\Abp.Web.Api.2.3.0\lib\net46\Abp.Web.Api.dll
-
- ..\packages\Abp.Web.Common.1.5.1\lib\net452\Abp.Web.Common.dll
- True
+
+ ..\packages\Abp.Web.Common.2.3.0\lib\net46\Abp.Web.Common.dll
-
- ..\packages\Abp.Zero.1.5.1\lib\net452\Abp.Zero.dll
- True
+
+ ..\packages\Abp.Zero.2.3.0\lib\net46\Abp.Zero.dll
-
- ..\packages\AutoMapper.5.2.0\lib\net45\AutoMapper.dll
- True
+
+ ..\packages\Abp.Zero.Common.2.3.0\lib\net46\Abp.Zero.Common.dll
-
- False
- ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll
+
+ ..\packages\AutoMapper.6.1.1\lib\net45\AutoMapper.dll
-
- ..\packages\Castle.LoggingFacility.3.4.0\lib\net45\Castle.Facilities.Logging.dll
- True
+
+ ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll
-
- ..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll
- True
+
+ ..\packages\Castle.LoggingFacility.4.0.0\lib\net45\Castle.Facilities.Logging.dll
-
- ..\packages\JetBrains.Annotations.10.4.0\lib\net\JetBrains.Annotations.dll
- True
+
+ ..\packages\Castle.Windsor.4.0.0\lib\net45\Castle.Windsor.dll
+
+
+ ..\packages\JetBrains.Annotations.11.0.0\lib\net20\JetBrains.Annotations.dll
..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll
True
-
- ..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll
- True
+
+ ..\packages\Microsoft.Owin.3.1.0\lib\net45\Microsoft.Owin.dll
-
- ..\packages\Microsoft.Owin.Security.3.0.1\lib\net45\Microsoft.Owin.Security.dll
- True
+
+ ..\packages\Microsoft.Owin.Security.3.1.0\lib\net45\Microsoft.Owin.Security.dll
..\packages\Microsoft.Owin.Security.OAuth.3.0.1\lib\net45\Microsoft.Owin.Security.OAuth.dll
@@ -108,9 +98,8 @@
..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll
True
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.dll
@@ -143,6 +132,9 @@
..\packages\System.Linq.Dynamic.1.0.7\lib\net40\System.Linq.Dynamic.dll
True
+
+ ..\packages\System.Linq.Dynamic.Core.1.0.7.6\lib\net46\System.Linq.Dynamic.Core.dll
+
diff --git a/src/YoYo.Cms.WebApi/app.config b/src/YoYo.Cms.WebApi/app.config
index 7d6a215..ac2a3f0 100644
--- a/src/YoYo.Cms.WebApi/app.config
+++ b/src/YoYo.Cms.WebApi/app.config
@@ -4,7 +4,7 @@
-
+
@@ -24,7 +24,7 @@
-
+
@@ -32,7 +32,15 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/src/YoYo.Cms.WebApi/packages.config b/src/YoYo.Cms.WebApi/packages.config
index c033d62..0f2c3ec 100644
--- a/src/YoYo.Cms.WebApi/packages.config
+++ b/src/YoYo.Cms.WebApi/packages.config
@@ -1,16 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20,13 +21,14 @@
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/src/YoYo.Common/YoYo.Common.csproj b/src/YoYo.Common/YoYo.Common.csproj
index 4f3f6e7..ba7783a 100644
--- a/src/YoYo.Common/YoYo.Common.csproj
+++ b/src/YoYo.Common/YoYo.Common.csproj
@@ -39,9 +39,8 @@
..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
True
-
- ..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
- True
+
+ ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\NPOI.2.2.1\lib\net40\NPOI.dll
diff --git a/src/YoYo.Common/packages.config b/src/YoYo.Common/packages.config
index 525e6d6..0a4e4bf 100644
--- a/src/YoYo.Common/packages.config
+++ b/src/YoYo.Common/packages.config
@@ -1,8 +1,7 @@
-
-
+