From cd2f506a516d2556a49c07002590bfdf44de773e Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 8 Dec 2010 14:34:50 -0800 Subject: [PATCH 01/11] 16966 Remove module management permission --HG-- branch : dev --- src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs | 3 ++- .../Modules/Orchard.Modules/Controllers/AdminController.cs | 3 ++- src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs | 7 +++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs index e79b947cc..5c9e1bc48 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs @@ -1,4 +1,5 @@ using Orchard.Localization; +using Orchard.Security; using Orchard.UI.Navigation; namespace Orchard.Modules { @@ -13,7 +14,7 @@ namespace Orchard.Modules { .Add(T("Features"), "0", item => item.Action("Features", "Admin", new { area = "Orchard.Modules" }) .Permission(Permissions.ManageFeatures)) .Add(T("Modules"), "5", item => item.Action("Index", "Admin", new { area = "Orchard.Modules" }) - .Permission(Permissions.ManageModules))); + .Permission(StandardPermissions.SiteOwner))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs index fa8031bff..aff402980 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/Controllers/AdminController.cs @@ -10,6 +10,7 @@ using Orchard.Localization; using Orchard.Modules.Services; using Orchard.Modules.ViewModels; using Orchard.Reports.Services; +using Orchard.Security; using Orchard.UI.Notify; namespace Orchard.Modules.Controllers { @@ -44,7 +45,7 @@ namespace Orchard.Modules.Controllers { public IOrchardServices Services { get; set; } public ActionResult Index() { - if (!Services.Authorizer.Authorize(Permissions.ManageModules, T("Not allowed to manage modules"))) + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not allowed to manage modules"))) return new HttpUnauthorizedResult(); var modules = _extensionManager.AvailableExtensions().Where(x => DefaultExtensionTypes.IsModule(x.ExtensionType)); diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs index 2e7194bc4..856f933a4 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/Permissions.cs @@ -4,20 +4,19 @@ using Orchard.Security.Permissions; namespace Orchard.Modules { public class Permissions : IPermissionProvider { - public static readonly Permission ManageModules = new Permission { Description = "Manage Modules", Name = "ManageModules" }; - public static readonly Permission ManageFeatures = new Permission { Description = "Manage Features", Name = "ManageFeatures", ImpliedBy = new[] {ManageModules}}; + public static readonly Permission ManageFeatures = new Permission {Description = "Manage Features", Name = "ManageFeatures" }; public virtual Feature Feature { get; set; } public IEnumerable GetPermissions() { - return new[] {ManageModules, ManageFeatures}; + return new[] {ManageFeatures}; } public IEnumerable GetDefaultStereotypes() { return new[] { new PermissionStereotype { Name = "Administrator", - Permissions = new[] {ManageModules} + Permissions = new[] {ManageFeatures} } }; } From 5284fbb56709711ccbf977a9fc8a285d8fee57ac Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 8 Dec 2010 14:40:05 -0800 Subject: [PATCH 02/11] 16968 Remove manage search index permission --HG-- branch : dev --- .../Modules/Orchard.Indexing/AdminMenu.cs | 3 ++- .../Controllers/AdminController.cs | 5 ++-- .../Orchard.Indexing/Orchard.Indexing.csproj | 1 - .../Modules/Orchard.Indexing/Permissions.cs | 24 ------------------- 4 files changed, 5 insertions(+), 28 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs index 958343ff3..10fb7b618 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs @@ -1,4 +1,5 @@ using Orchard.Localization; +using Orchard.Security; using Orchard.UI.Navigation; namespace Orchard.Indexing { @@ -9,7 +10,7 @@ namespace Orchard.Indexing { public void GetNavigation(NavigationBuilder builder) { builder.Add(T("Configuration"), "50", menu => menu.Add(T("Search Index"), "15", item => item.Action("Index", "Admin", new {area = "Orchard.Indexing"}) - .Permission(Permissions.ManageSearchIndex))); + .Permission(StandardPermissions.SiteOwner))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Indexing/Controllers/AdminController.cs index 425d3b110..f593f0206 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Controllers/AdminController.cs @@ -1,6 +1,7 @@ using System.Web.Mvc; using Orchard.Indexing.Services; using Orchard.Localization; +using Orchard.Security; using Orchard.UI.Notify; using Orchard.Indexing.ViewModels; @@ -28,7 +29,7 @@ namespace Orchard.Indexing.Controllers { [HttpPost] public ActionResult Update() { - if (!Services.Authorizer.Authorize(Permissions.ManageSearchIndex, T("Not allowed to manage the search index."))) + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not allowed to manage the search index."))) return new HttpUnauthorizedResult(); _indexingService.UpdateIndex(); @@ -38,7 +39,7 @@ namespace Orchard.Indexing.Controllers { [HttpPost] public ActionResult Rebuild() { - if (!Services.Authorizer.Authorize(Permissions.ManageSearchIndex, T("Not allowed to manage the search index."))) + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not allowed to manage the search index."))) return new HttpUnauthorizedResult(); _indexingService.RebuildIndex(); diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj b/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj index 3d470b243..b0fb3de84 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj +++ b/src/Orchard.Web/Modules/Orchard.Indexing/Orchard.Indexing.csproj @@ -55,7 +55,6 @@ - diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs b/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs deleted file mode 100644 index 1d3b2c870..000000000 --- a/src/Orchard.Web/Modules/Orchard.Indexing/Permissions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using Orchard.Environment.Extensions.Models; -using Orchard.Security.Permissions; - -namespace Orchard.Indexing { - public class Permissions : IPermissionProvider { - public static readonly Permission ManageSearchIndex = new Permission { Description = "Manage Search Index", Name = "ManageSearchIndex" }; - - public virtual Feature Feature { get; set; } - - public IEnumerable GetPermissions() { - return new[] { ManageSearchIndex }; - } - - public IEnumerable GetDefaultStereotypes() { - return new[] { - new PermissionStereotype { - Name = "Administrator", - Permissions = new [] { ManageSearchIndex } - }, - }; - } - } -} \ No newline at end of file From ca78b8acef7001dcf4fc652b76f87900da202189 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 8 Dec 2010 14:47:56 -0800 Subject: [PATCH 03/11] 16976 Remove change owner of item permission --HG-- branch : dev --- .../Providers/CommonPartProviderTests.cs | 4 +-- .../Core/Common/Drivers/CommonPartDriver.cs | 4 +-- src/Orchard.Web/Core/Common/Permissions.cs | 26 ------------------- src/Orchard.Web/Core/Orchard.Core.csproj | 1 - 4 files changed, 4 insertions(+), 31 deletions(-) delete mode 100644 src/Orchard.Web/Core/Common/Permissions.cs diff --git a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs index 4986cb536..a94eb7fde 100644 --- a/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs +++ b/src/Orchard.Core.Tests/Common/Providers/CommonPartProviderTests.cs @@ -157,7 +157,7 @@ namespace Orchard.Core.Tests.Common.Providers { var user = contentManager.New("User"); _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); - _authz.Setup(x => x.TryCheckAccess(Permissions.ChangeOwner, user, item)).Returns(true); + _authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true); item.Owner = user; @@ -175,7 +175,7 @@ namespace Orchard.Core.Tests.Common.Providers { var user = contentManager.New("User"); _authn.Setup(x => x.GetAuthenticatedUser()).Returns(user); - _authz.Setup(x => x.TryCheckAccess(Permissions.ChangeOwner, user, item)).Returns(true); + _authz.Setup(x => x.TryCheckAccess(StandardPermissions.SiteOwner, user, item)).Returns(true); item.Owner = user; diff --git a/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs b/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs index 12e31be4a..f3dff69b7 100644 --- a/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs +++ b/src/Orchard.Web/Core/Common/Drivers/CommonPartDriver.cs @@ -57,7 +57,7 @@ namespace Orchard.Core.Common.Drivers { DriverResult OwnerEditor(CommonPart part, IUpdateModel updater, dynamic shapeHelper) { var currentUser = _authenticationService.GetAuthenticatedUser(); - if (!_authorizationService.TryCheckAccess(Permissions.ChangeOwner, currentUser, part)) { + if (!_authorizationService.TryCheckAccess(StandardPermissions.SiteOwner, currentUser, part)) { return null; } @@ -86,7 +86,7 @@ namespace Orchard.Core.Common.Drivers { DriverResult ContainerEditor(CommonPart part, IUpdateModel updater, dynamic shapeHelper) { var currentUser = _authenticationService.GetAuthenticatedUser(); - if (!_authorizationService.TryCheckAccess(Permissions.ChangeOwner, currentUser, part)) { + if (!_authorizationService.TryCheckAccess(StandardPermissions.SiteOwner, currentUser, part)) { return null; } diff --git a/src/Orchard.Web/Core/Common/Permissions.cs b/src/Orchard.Web/Core/Common/Permissions.cs deleted file mode 100644 index 668125cd0..000000000 --- a/src/Orchard.Web/Core/Common/Permissions.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections.Generic; -using Orchard.Environment.Extensions.Models; -using Orchard.Security.Permissions; - -namespace Orchard.Core.Common { - public class Permissions : IPermissionProvider { - public static readonly Permission ChangeOwner = new Permission { Name = "ChangeOwner", Description = "Change the owner of content items" }; - - public virtual Feature Feature { get; set; } - - public IEnumerable GetPermissions() { - return new[] { - ChangeOwner, - }; - } - - public IEnumerable GetDefaultStereotypes() { - return new[] { - new PermissionStereotype { - Name = "Administrator", - Permissions = new[] {ChangeOwner} - }, - }; - } - } -} diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index 9c545f68a..e63beeb36 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -120,7 +120,6 @@ - From ea760cfe2e9c475c2efbf18c09336941540221a5 Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 8 Dec 2010 15:10:07 -0800 Subject: [PATCH 04/11] 16979 Reports should check for site ownership --HG-- branch : dev --- .../Core/Reports/Controllers/AdminController.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs b/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs index 0191628bb..07008d078 100644 --- a/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Reports/Controllers/AdminController.cs @@ -1,24 +1,38 @@ using System.Linq; using System.Web.Mvc; using Orchard.Core.Reports.ViewModels; +using Orchard.Localization; using Orchard.Reports.Services; +using Orchard.Security; namespace Orchard.Core.Reports.Controllers { public class AdminController : Controller { private readonly IReportsManager _reportsManager; - public AdminController(IReportsManager reportsManager) { + public AdminController( + IOrchardServices services, + IReportsManager reportsManager) { + Services = services; _reportsManager = reportsManager; + T = NullLocalizer.Instance; } + public IOrchardServices Services { get; set; } + public Localizer T { get; set; } public ActionResult Index() { + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to list reports"))) + return new HttpUnauthorizedResult(); + var model = new ReportsAdminIndexViewModel { Reports = _reportsManager.GetReports().ToList() }; return View(model); } public ActionResult Display(int id) { + if (!Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to display report"))) + return new HttpUnauthorizedResult(); + var model = new DisplayReportViewModel { Report = _reportsManager.Get(id) }; return View(model); From 5e3acea767db6496e17f05d670e80c719d05d8cd Mon Sep 17 00:00:00 2001 From: Suha Can Date: Wed, 8 Dec 2010 16:00:12 -0800 Subject: [PATCH 05/11] 16977 Check publication permission is being checked in PublishLater and ArchiveLater --HG-- branch : dev --- .../Services/ArchiveLaterService.cs | 14 +++++++++++++- .../Services/PublishLaterService.cs | 14 +++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Web/Modules/Orchard.ArchiveLater/Services/ArchiveLaterService.cs b/src/Orchard.Web/Modules/Orchard.ArchiveLater/Services/ArchiveLaterService.cs index db3d9e299..3cc1a7b54 100644 --- a/src/Orchard.Web/Modules/Orchard.ArchiveLater/Services/ArchiveLaterService.cs +++ b/src/Orchard.Web/Modules/Orchard.ArchiveLater/Services/ArchiveLaterService.cs @@ -2,6 +2,8 @@ using System.Linq; using Orchard.ArchiveLater.Models; using Orchard.ContentManagement; +using Orchard.Core.Contents; +using Orchard.Localization; using Orchard.Tasks.Scheduling; namespace Orchard.ArchiveLater.Services { @@ -10,11 +12,21 @@ namespace Orchard.ArchiveLater.Services { private readonly IScheduledTaskManager _scheduledTaskManager; - public ArchiveLaterService(IScheduledTaskManager scheduledTaskManager) { + public ArchiveLaterService( + IOrchardServices services, + IScheduledTaskManager scheduledTaskManager) { + Services = services; _scheduledTaskManager = scheduledTaskManager; + T = NullLocalizer.Instance; } + public IOrchardServices Services { get; set; } + public Localizer T { get; set; } + void IArchiveLaterService.ArchiveLater(ContentItem contentItem, DateTime scheduledArchiveUtc) { + if (!Services.Authorizer.Authorize(Permissions.PublishOthersContent, contentItem, T("Couldn't archive selected content."))) + return; + RemoveArchiveLaterTasks(contentItem); _scheduledTaskManager.CreateTask(UnpublishTaskType, scheduledArchiveUtc, contentItem); } diff --git a/src/Orchard.Web/Modules/Orchard.PublishLater/Services/PublishLaterService.cs b/src/Orchard.Web/Modules/Orchard.PublishLater/Services/PublishLaterService.cs index 7e5552c0e..f0e650a74 100644 --- a/src/Orchard.Web/Modules/Orchard.PublishLater/Services/PublishLaterService.cs +++ b/src/Orchard.Web/Modules/Orchard.PublishLater/Services/PublishLaterService.cs @@ -1,5 +1,7 @@ using System; using Orchard.ContentManagement; +using Orchard.Core.Contents; +using Orchard.Localization; using Orchard.PublishLater.Models; using Orchard.Tasks.Scheduling; @@ -7,11 +9,21 @@ namespace Orchard.PublishLater.Services { public class PublishLaterService : IPublishLaterService { private readonly IPublishingTaskManager _publishingTaskManager; - public PublishLaterService(IPublishingTaskManager publishingTaskManager) { + public PublishLaterService( + IOrchardServices services, + IPublishingTaskManager publishingTaskManager) { + Services = services; _publishingTaskManager = publishingTaskManager; + T = NullLocalizer.Instance; } + public IOrchardServices Services { get; set; } + public Localizer T { get; set; } + void IPublishLaterService.Publish(ContentItem contentItem, DateTime scheduledPublishUtc) { + if (!Services.Authorizer.Authorize(Permissions.PublishOthersContent, contentItem, T("Couldn't publish selected content."))) + return; + _publishingTaskManager.Publish(contentItem, scheduledPublishUtc); } From 0a30addc4f1438869186ac9e32f9edba89ab0703 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Wed, 8 Dec 2010 16:00:28 -0800 Subject: [PATCH 06/11] Updating configuration settings for Azure --HG-- branch : dev --- .../Orchard.Azure.CloudService/ServiceConfiguration.cscfg | 2 +- .../Orchard.Azure.Web/Orchard.Azure.Web.csproj | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Orchard.Azure/Orchard.Azure.CloudService/ServiceConfiguration.cscfg b/src/Orchard.Azure/Orchard.Azure.CloudService/ServiceConfiguration.cscfg index 16eda749c..e49f9854e 100644 --- a/src/Orchard.Azure/Orchard.Azure.CloudService/ServiceConfiguration.cscfg +++ b/src/Orchard.Azure/Orchard.Azure.CloudService/ServiceConfiguration.cscfg @@ -1,5 +1,5 @@ - + diff --git a/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj b/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj index fa2d89e80..981db132f 100644 --- a/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj +++ b/src/Orchard.Azure/Orchard.Azure.Web/Orchard.Azure.Web.csproj @@ -75,7 +75,9 @@ False - + + True + False @@ -164,6 +166,10 @@ {9916839C-39FC-4CEB-A5AF-89CA7E87119F} Orchard.Core + + {D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D} + Lucene + {1C981BB3-26F7-494C-9005-CC27A5144233} Orchard.ArchiveLater From b43c5621ab1cbdcdc06ded0dc5afbc3054dc0a83 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Wed, 8 Dec 2010 16:00:58 -0800 Subject: [PATCH 07/11] Using OData feed as a Service Reference connection Work Item: 16954 --HG-- branch : dev --- .../PackagingServicesController.cs | 2 +- .../DefaultPackagingUpdater.cs | 2 +- .../Orchard.Packaging.csproj | 21 + .../GalleryServer/Reference.cs | 890 ++++++++++++++++++ .../GalleryServer/Reference.datasvcmap | 10 + .../GalleryServer/service.edmx | 63 ++ .../Services/PackageInstaller.cs | 8 +- .../Services/PackagingSourceManager.cs | 39 +- 8 files changed, 1012 insertions(+), 23 deletions(-) create mode 100644 src/Orchard.Web/Modules/Orchard.Packaging/Service References/GalleryServer/Reference.cs create mode 100644 src/Orchard.Web/Modules/Orchard.Packaging/Service References/GalleryServer/Reference.datasvcmap create mode 100644 src/Orchard.Web/Modules/Orchard.Packaging/Service References/GalleryServer/service.edmx diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/PackagingServicesController.cs b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/PackagingServicesController.cs index b38a3a331..e51d385f1 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/PackagingServicesController.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Controllers/PackagingServicesController.cs @@ -46,7 +46,7 @@ namespace Orchard.Packaging.Controllers { [HttpPost, ActionName("RemoveTheme")] public ActionResult RemoveThemePOST(string themeId, string returnUrl, string retryUrl) { - return UninstallPackage(PackagingSourceManager.ThemesFilter + themeId, returnUrl, retryUrl); + return UninstallPackage(PackagingSourceManager.ThemesPrefix + themeId, returnUrl, retryUrl); } public ActionResult AddModule(string returnUrl) { diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/DefaultPackagingUpdater.cs b/src/Orchard.Web/Modules/Orchard.Packaging/DefaultPackagingUpdater.cs index fc1c5fd55..b016919e3 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/DefaultPackagingUpdater.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/DefaultPackagingUpdater.cs @@ -20,7 +20,7 @@ namespace Orchard.Packaging { public void Installed(Feature feature) { if (feature.Descriptor.Id == "Gallery") { - _packagingSourceManager.AddSource("Orchard Extensions Gallery", "http://feed.nuget.org/ctp2/odata/v1"); + _packagingSourceManager.AddSource("Orchard Extensions Gallery", "http://orchardproject.net:777/GalleryServer/FeedService.svc"); } } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj index dcb802462..284a7bfed 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj +++ b/src/Orchard.Web/Modules/Orchard.Packaging/Orchard.Packaging.csproj @@ -40,6 +40,7 @@ ..\..\..\..\lib\nuget\NuGet.Core.dll + 3.5 @@ -66,6 +67,11 @@ + + True + True + Reference.datasvcmap + @@ -88,6 +94,10 @@ + + DataServiceClientGenerator + Reference.cs + @@ -124,6 +134,17 @@ + + + + + + datasvcmap + + + + +