mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Compare commits
4 Commits
issue/8816
...
issue/8808
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc5ac08bd1 | ||
|
|
df34496aa2 | ||
|
|
79ade4b6f8 | ||
|
|
8f46425555 |
24
.github/workflows/compile.yml
vendored
24
.github/workflows/compile.yml
vendored
@@ -26,33 +26,11 @@ jobs:
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Compile
|
||||
run: msbuild Orchard.proj /m /v:minimal /t:Compile /p:TreatWarningsAsErrors=true -WarnAsError /p:MvcBuildViews=true
|
||||
run: msbuild Orchard.proj /m /v:minimal /t:Compile /p:MvcBuildViews=true /p:TreatWarningsAsErrors=true -WarnAsError
|
||||
|
||||
- name: Test
|
||||
run: msbuild Orchard.proj /m /v:minimal /t:Test
|
||||
|
||||
- name: Run Orchard setup
|
||||
run: |
|
||||
$commandFile = 'src/Orchard.Web/bin/setup-commands.txt'
|
||||
New-Item -Path $commandFile -ItemType File -Force
|
||||
Set-Content -Path $commandFile -Value 'setup /SiteName:Orchard /AdminUsername:admin /AdminPassword:Password1! /DatabaseProvider:SqlCe /Recipe:Default'
|
||||
& 'src/Orchard.Web/bin/Orchard.exe' @$commandFile
|
||||
|
||||
- name: Run code generation
|
||||
run: |
|
||||
$commandFile = 'src/Orchard.Web/bin/codegen-commands.txt'
|
||||
New-Item -Path $commandFile -ItemType File -Force
|
||||
Set-Content -Path $commandFile -Value @'
|
||||
feature enable Orchard.CodeGeneration
|
||||
codegen module Orchard.CodeGeneration.TestModule
|
||||
codegen theme Orchard.CodeGeneration.TestTheme /CreateProject:true
|
||||
codegen moduletests Orchard.CodeGeneration.TestModule
|
||||
'@
|
||||
& 'src/Orchard.Web/bin/Orchard.exe' @$commandFile
|
||||
|
||||
- name: Compile with generated projects
|
||||
run: msbuild Orchard.proj /m /v:minimal /t:Compile /p:TreatWarningsAsErrors=true -WarnAsError /NoWarn:CS2008
|
||||
|
||||
compile-node:
|
||||
name: Compile client-side assets
|
||||
defaults:
|
||||
|
||||
26
README.md
26
README.md
@@ -1,14 +1,16 @@
|
||||
# Orchard
|
||||
|
||||
Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform. You are looking at Orchard 1, the older, .NET Framework-based version that has been in development since 2009.
|
||||
Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform.
|
||||
|
||||
If you're starting a new project (or maintaining a project built on Orchard 1), you should check out [Orchard Core](https://github.com/OrchardCMS/OrchardCore), the new generation of Orchard built on ASP.NET Core. You can also try it for free on [DotNest.com](https://dotnest.com)!
|
||||
[](https://gitter.im/OrchardCMS/Orchard?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
Join the community discussion on [Discord](https://orchardcore.net/discord), where we also have a [channel dedicated to Orchard 1](https://discord.com/channels/551136772243980291/551137194689953848).
|
||||
You can try it for free on [DotNest.com](https://dotnest.com) or on Microsoft Azure by clicking on this button.
|
||||
|
||||
[](https://portal.azure.com/#create/OutercurveFoundation.OrchardCMS)
|
||||
|
||||
## About The Orchard Project
|
||||
|
||||
#### Please visit our website at https://orchardcore.net for the most current information about this project.
|
||||
#### Please visit our website at https://orchardproject.net for the most current information about this project.
|
||||
|
||||
Orchard is a free, open source, community-focused **Content Management System** built on the ASP.NET MVC platform.
|
||||
|
||||
@@ -22,12 +24,12 @@ Our mission is to empower our users and foster a dedicated and diverse community
|
||||
|
||||
Orchard is currently in version **[1.10.3](https://github.com/OrchardCMS/Orchard/releases/tag/1.10.3)**: It contains bugfixes and the more impactful changes and new features added in the latest major version (*1.10*).
|
||||
|
||||
We invite participation by the developer community in shaping the project's direction, so that we can publicly validate our designs and development approach.
|
||||
We invite participation by the developer community in shaping the project’s direction, so that we can publicly validate our designs and development approach.
|
||||
All our releases are available on our [Releases](https://github.com/OrchardCMS/Orchard/releases) page, and we encourage interested developers to check out the source code on the Orchard GitHub site and get involved with the project.
|
||||
|
||||
* [Download the latest release](https://github.com/OrchardCMS/Orchard/releases)
|
||||
* [Feature roadmap](https://docs.orchardcore.net/projects/O1/en/latest/Documentation/Feature-roadmap/)
|
||||
* [Docs and designs/specs](https://docs.orchardcore.net/projects/O1/en/latest/)
|
||||
* [Feature roadmap](https://docs.orchardproject.net/en/latest/Documentation/Feature-roadmap/)
|
||||
* [Docs and designs/specs](https://docs.orchardproject.net)
|
||||
|
||||
## How To Get Involved
|
||||
|
||||
@@ -40,7 +42,11 @@ There are many ways you can contribute to Orchard:
|
||||
* [Find and file a bug](https://github.com/OrchardCMS/Orchard/issues)
|
||||
* [Propose a feature idea](https://github.com/OrchardCMS/Orchard/issues/new)
|
||||
* [Ask and answer questions on Stack Overflow](https://stackoverflow.com/questions/tagged/orchardcms)
|
||||
* [Join us on Discord](https://orchardcore.net/discord)
|
||||
* [Submit a pull request](https://docs.orchardcore.net/projects/O1/en/latest/Documentation/Contributing-patches/)
|
||||
* [Participate in our gitter.im chatroom](https://gitter.im/OrchardCMS/Orchard)
|
||||
* [Submit a pull request](https://docs.orchardproject.net/en/latest/Documentation/Contributing-patches/)
|
||||
* [Translate Orchard](https://crowdin.com/project/orchard-cms)
|
||||
* [Contribute modules and themes to our gallery](https://gallery.orchardproject.net)
|
||||
* [Contribute modules and themes to our gallery](https://gallery.orchardproject.net/)
|
||||
|
||||
## The Future Of Orchard CMS: Orchard Core
|
||||
|
||||
As the underlying frameworks (.NET, ASP.NET and ASP.NET MVC) are constantly evolving, Orchard of course keeps track of the changes and improvements of these: Orchard Core is the next generation of Orchard releases that is based on [ASP.NET Core](https://www.asp.net/core). Just like the current Orchard project, it's fully [open-source and is publicly available on GitHub](https://github.com/OrchardCMS/OrchardCore). Orchard Core (as a framework) is being built from scratch: it's still in development and does not share any of its code base (at least directly) with the current versions (1.x) of Orchard.
|
||||
|
||||
93
src/Orchard.Web/Core/Containers/AdminMenu.cs
Normal file
93
src/Orchard.Web/Core/Containers/AdminMenu.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System.Linq;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Core.Containers.Services;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Security;
|
||||
using Orchard.UI.Navigation;
|
||||
using Orchard.Utility.Extensions;
|
||||
|
||||
namespace Orchard.Core.Containers {
|
||||
public class AdminMenu : INavigationProvider {
|
||||
private readonly IContainerService _containerService;
|
||||
private readonly IContentManager _contentManager;
|
||||
private readonly IAuthorizationService _authorizationService;
|
||||
private readonly IWorkContextAccessor _workContextAccessor;
|
||||
|
||||
public AdminMenu(
|
||||
IContainerService containerService,
|
||||
IContentManager contentManager,
|
||||
IAuthorizationService authorizationService,
|
||||
IWorkContextAccessor workContextAccessor) {
|
||||
_containerService = containerService;
|
||||
_contentManager = contentManager;
|
||||
_authorizationService = authorizationService;
|
||||
_workContextAccessor = workContextAccessor;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
public string MenuName { get { return "admin"; } }
|
||||
|
||||
public void GetNavigation(NavigationBuilder builder) {
|
||||
builder.AddImageSet("container");
|
||||
|
||||
var containers = _containerService
|
||||
.GetContainersQuery(VersionOptions.Latest)
|
||||
.Where<ContainerPartRecord>(x => x.ShowOnAdminMenu)
|
||||
.List()
|
||||
.Where(content => _authorizationService.TryCheckAccess(
|
||||
Contents.Permissions.EditContent,
|
||||
_workContextAccessor.GetContext().CurrentUser,
|
||||
content))
|
||||
.ToList();
|
||||
|
||||
foreach (var container in containers) {
|
||||
var closureContainer = container;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(container.AdminMenuImageSet)) {
|
||||
builder.AddImageSet(container.AdminMenuImageSet.Trim());
|
||||
}
|
||||
|
||||
builder.Add(T(container.AdminMenuText), container.AdminMenuPosition, item => {
|
||||
var containedItems = _containerService.GetContentItems(closureContainer.Id, VersionOptions.Latest).ToList();
|
||||
var actualContainer = closureContainer;
|
||||
var position = 0;
|
||||
|
||||
// If the list has just a single item that happens to be a container itself,
|
||||
// we will treat that one as the actual container to provide a nice & quick way to manage that list.
|
||||
if (containedItems.Count == 1) {
|
||||
var containedItem = containedItems.First().As<ContainerPart>();
|
||||
|
||||
if (containedItem != null) {
|
||||
actualContainer = containedItem;
|
||||
foreach (var itemContentType in containedItem.ItemContentTypes) {
|
||||
var closureItemContentType = itemContentType;
|
||||
item.Add(T("New {0}", itemContentType.DisplayName), string.Format("1.{0}", position++), subItem => subItem
|
||||
.Action("Create", "Admin", new {
|
||||
id = closureItemContentType.Name,
|
||||
containerid = containedItem.Id,
|
||||
area = "Contents"
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
item.Action(_contentManager.GetItemMetadata(actualContainer).AdminRouteValues)
|
||||
.AddClass("section-container")
|
||||
.AddClass(closureContainer.AdminMenuText.HtmlClassify())
|
||||
.LinkToFirstChild(false);
|
||||
|
||||
foreach (var itemContentType in closureContainer.ItemContentTypes) {
|
||||
var closureItemContentType = itemContentType;
|
||||
item.Add(T("New {0}", itemContentType.DisplayName), string.Format("1.{0}", position++), subItem => subItem
|
||||
.Action("Create", "Admin", new {
|
||||
id = closureItemContentType.Name,
|
||||
containerid = container.Id,
|
||||
area = "Contents"
|
||||
}));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
12
src/Orchard.Web/Core/Containers/Styles/Web.config
Normal file
12
src/Orchard.Web/Core/Containers/Styles/Web.config
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<system.webServer>
|
||||
<staticContent>
|
||||
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
|
||||
</staticContent>
|
||||
<handlers accessPolicy="Script,Read">
|
||||
<!-- For any request to a file exists on disk, return it via native http module. AccessPolicy="Script" above is to allow for a managed 404 page. -->
|
||||
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
|
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 998 B |
@@ -0,0 +1,7 @@
|
||||
.menu-admin > .section-container > h3 > a {
|
||||
background-image: url(images/menu.container.png) !important;
|
||||
}
|
||||
|
||||
.menu-admin > .section-container > h3 > a:hover {
|
||||
background-position: 0 -30px !important;
|
||||
}
|
||||
@@ -119,6 +119,7 @@
|
||||
<Compile Include="Common\ViewModels\DateTimeEditor.cs" />
|
||||
<Compile Include="Common\ViewModels\TextFieldDriverViewModel.cs" />
|
||||
<Compile Include="Common\ViewModels\TextFieldSettingsEventsViewModel.cs" />
|
||||
<Compile Include="Containers\AdminMenu.cs" />
|
||||
<Compile Include="Containers\Controllers\ItemController.cs" />
|
||||
<Compile Include="Containers\Drivers\ContainablePartDriver.cs" />
|
||||
<Compile Include="Containers\Drivers\ContainerPartDriver.cs" />
|
||||
@@ -318,6 +319,8 @@
|
||||
<Content Include="Common\Views\Parts.Common.Metadata.cshtml" />
|
||||
<Content Include="Common\Views\CommonMetadataLastModified.cshtml" />
|
||||
<Content Include="Containers\Module.txt" />
|
||||
<Content Include="Containers\Styles\images\menu.container.png" />
|
||||
<Content Include="Containers\Styles\menu.container-admin.css" />
|
||||
<Content Include="Shapes\Scripts\admin-localnavigation.js" />
|
||||
<Content Include="Contents\Styles\images\menu.content.png" />
|
||||
<Content Include="Contents\Styles\menu.content-admin.css" />
|
||||
@@ -610,6 +613,9 @@
|
||||
<Content Include="Navigation\Views\Admin\Edit.cshtml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Containers\Styles\Web.config">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<None Include="packages.config" />
|
||||
<Content Include="Title\Views\DefinitionTemplates\TitlePartSettings.cshtml" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>..\..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSet>..\..\..\OrchardBasicCorrectness.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
@@ -35,16 +35,16 @@
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Autofac, Version=3.5.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
||||
<Reference Include="Autofac">
|
||||
<HintPath>..\..\..\..\packages\Autofac.3.5.2\lib\net40\Autofac.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Moq, Version=4.2.1510.2205, Culture=neutral, PublicKeyToken=69f491c39445e920, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=4.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\..\..\packages\NHibernate.4.1.2.4000\lib\net40\NHibernate.dll</HintPath>
|
||||
<Reference Include="NHibernate">
|
||||
<HintPath>..\..\..\..\packages\NHibernate.4.0.1.4000\lib\net40\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework, Version=2.5.10.11092, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
|
||||
<Reference Include="nunit.framework">
|
||||
<HintPath>..\..\..\..\packages\NUnit.2.5.10.11092\lib\nunit.framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Autofac" version="3.5.2" targetFramework="net48" />
|
||||
<package id="Moq" version="4.2.1510.2205" targetFramework="net48" />
|
||||
<package id="NHibernate" version="4.1.2.4000" targetFramework="net48" />
|
||||
<package id="NUnit" version="2.5.10.11092" targetFramework="net48" />
|
||||
</packages>
|
||||
@@ -161,8 +161,6 @@ namespace Orchard.CodeGeneration.Commands {
|
||||
templateText = templateText.Replace("$$ModuleTypeLibGuid$$", Guid.NewGuid().ToString());
|
||||
File.WriteAllText(propertiesPath + "\\AssemblyInfo.cs", templateText);
|
||||
content.Add(propertiesPath + "\\AssemblyInfo.cs");
|
||||
File.WriteAllText(testsPath + "packages.config", File.ReadAllText(_codeGenTemplatePath + "ModuleTestsPackagesConfig.txt"));
|
||||
content.Add(testsPath + "packages.config");
|
||||
|
||||
var itemGroup = CreateProjectItemGroup(testsPath, content, folders);
|
||||
|
||||
@@ -170,7 +168,7 @@ namespace Orchard.CodeGeneration.Commands {
|
||||
csprojText = csprojText.Replace("$$ProjectName$$", projectName);
|
||||
csprojText = csprojText.Replace("$$TestsProjectGuid$$", projectGuid);
|
||||
csprojText = csprojText.Replace("$$FileIncludes$$", itemGroup ?? "");
|
||||
csprojText = csprojText.Replace("$$OrchardReferences$$", GetOrchardReferences(modulesFolderRelativeDepth: 3));
|
||||
csprojText = csprojText.Replace("$$OrchardReferences$$", GetOrchardReferences());
|
||||
|
||||
File.WriteAllText(testsPath + projectName + ".csproj", csprojText);
|
||||
|
||||
@@ -329,17 +327,15 @@ namespace Orchard.CodeGeneration.Commands {
|
||||
return text;
|
||||
}
|
||||
|
||||
private static string GetOrchardReferences(int modulesFolderRelativeDepth = 2) {
|
||||
var frameworkRelativeDepth = string.Join("\\", Enumerable.Repeat("..", modulesFolderRelativeDepth + 1));
|
||||
var coreRelativeDepth = string.Join("\\", Enumerable.Repeat("..", modulesFolderRelativeDepth));
|
||||
private static string GetOrchardReferences() {
|
||||
return IsSourceEnlistment() ?
|
||||
$@"<ProjectReference Include=""{frameworkRelativeDepth}\Orchard\Orchard.Framework.csproj"">
|
||||
<Project>{{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}}</Project>
|
||||
@"<ProjectReference Include=""..\..\..\Orchard\Orchard.Framework.csproj"">
|
||||
<Project>{2D1D92BB-4555-4CBE-8D0E-63563D6CE4C6}</Project>
|
||||
<Name>Orchard.Framework</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include=""{coreRelativeDepth}\Core\Orchard.Core.csproj"">
|
||||
<Project>{{9916839C-39FC-4CEB-A5AF-89CA7E87119F}}</Project>
|
||||
<ProjectReference Include=""..\..\Core\Orchard.Core.csproj"">
|
||||
<Project>{9916839C-39FC-4CEB-A5AF-89CA7E87119F}</Project>
|
||||
<Name>Orchard.Core</Name>
|
||||
<Private>$(MvcBuildViews)</Private>
|
||||
</ProjectReference>" :
|
||||
|
||||
@@ -88,7 +88,6 @@
|
||||
<Compile Include="Services\CodeGenerationCommandInterpreter.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="CodeGenerationTemplates\ModuleTestsPackagesConfig.txt" />
|
||||
<Content Include="CodeGenerationTemplates\ModuleStylesMinCss.txt" />
|
||||
<Content Include="CodeGenerationTemplates\ModuleStylesCss.txt" />
|
||||
<Content Include="CodeGenerationTemplates\ModuleStylesLess.txt" />
|
||||
@@ -159,4 +158,4 @@
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
@@ -1,98 +1,15 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Core.Containers.Models;
|
||||
using Orchard.Core.Containers.Services;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Security;
|
||||
using Orchard.Localization;
|
||||
using Orchard.UI.Navigation;
|
||||
using Orchard.Utility.Extensions;
|
||||
|
||||
namespace Orchard.Lists {
|
||||
public class AdminMenu : INavigationProvider {
|
||||
private readonly IContainerService _containerService;
|
||||
private readonly IContentManager _contentManager;
|
||||
private readonly IAuthorizationService _authorizationService;
|
||||
private readonly IWorkContextAccessor _workContextAccessor;
|
||||
|
||||
public AdminMenu(
|
||||
IContainerService containerService,
|
||||
IContentManager contentManager,
|
||||
IAuthorizationService authorizationService,
|
||||
IWorkContextAccessor workContextAccessor
|
||||
) {
|
||||
_containerService = containerService;
|
||||
_contentManager = contentManager;
|
||||
_authorizationService = authorizationService;
|
||||
_workContextAccessor = workContextAccessor;
|
||||
}
|
||||
|
||||
public Localizer T { get; set; }
|
||||
public string MenuName { get { return "admin"; } }
|
||||
|
||||
public void GetNavigation(NavigationBuilder builder) {
|
||||
builder.AddImageSet("list");
|
||||
|
||||
CreateListManagementMenuItem(builder);
|
||||
CreateListMenuItems(builder);
|
||||
}
|
||||
|
||||
private void CreateListManagementMenuItem(NavigationBuilder builder) {
|
||||
builder.Add(T("Lists"), "11", item => item
|
||||
.Action("Index", "Admin", new {area = "Orchard.Lists"}).Permission(Permissions.ManageLists)
|
||||
);
|
||||
}
|
||||
|
||||
private void CreateListMenuItems(NavigationBuilder builder) {
|
||||
var containers = _containerService
|
||||
.GetContainersQuery(VersionOptions.Latest)
|
||||
.Where<ContainerPartRecord>(x => x.ShowOnAdminMenu)
|
||||
.List()
|
||||
.Where(x => _authorizationService.TryCheckAccess(Orchard.Core.Contents.Permissions.EditContent, _workContextAccessor.GetContext().CurrentUser, x))
|
||||
.ToList();
|
||||
|
||||
foreach (var container in containers) {
|
||||
var closureContainer = container;
|
||||
|
||||
if (!String.IsNullOrWhiteSpace(container.AdminMenuImageSet)) {
|
||||
builder.AddImageSet(container.AdminMenuImageSet.Trim());
|
||||
}
|
||||
|
||||
builder.Add(T(container.AdminMenuText), container.AdminMenuPosition, item => {
|
||||
var containedItems = _containerService.GetContentItems(closureContainer.Id, VersionOptions.Latest).ToList();
|
||||
var actualContainer = closureContainer;
|
||||
var position = 0;
|
||||
|
||||
// If the list has just a single item that happens to be a container itself,
|
||||
// we will treat that one as the actual container to provide a nice & quick way to manage that list.
|
||||
if (containedItems.Count == 1) {
|
||||
var containedItem = containedItems.First().As<ContainerPart>();
|
||||
|
||||
if (containedItem != null) {
|
||||
actualContainer = containedItem;
|
||||
foreach (var itemContentType in containedItem.ItemContentTypes) {
|
||||
var closureItemContentType = itemContentType;
|
||||
item.Add(T("New {0}", itemContentType.DisplayName), String.Format("1.{0}", position++), subItem => subItem
|
||||
.Action("Create", "Admin", new { id = closureItemContentType.Name, containerid = containedItem.Id, area = "Contents" }));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var containerMetadata = _contentManager.GetItemMetadata(actualContainer);
|
||||
item.Action(containerMetadata.AdminRouteValues);
|
||||
|
||||
item.Action(containerMetadata.AdminRouteValues);
|
||||
item.AddClass("nav-list");
|
||||
item.AddClass(closureContainer.AdminMenuText.HtmlClassify());
|
||||
item.LinkToFirstChild(false);
|
||||
|
||||
foreach (var itemContentType in closureContainer.ItemContentTypes) {
|
||||
var closureItemContentType = itemContentType;
|
||||
item.Add(T("New {0}", itemContentType.DisplayName), String.Format("1.{0}", position++), subItem => subItem
|
||||
.Action("Create", "Admin", new { id = closureItemContentType.Name, containerid = container.Id, area = "Contents" }));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
public void GetNavigation(NavigationBuilder builder) =>
|
||||
builder
|
||||
.AddImageSet("lists")
|
||||
.Add(T("Lists"), "11", item => item
|
||||
.Action("Index", "Admin", new { area = "Orchard.Lists" }).Permission(Permissions.ManageLists));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
<Content Include="Styles\images\icons.png" />
|
||||
<Content Include="Styles\images\view.default.png" />
|
||||
<Content Include="Styles\images\view.condensed.png" />
|
||||
<Content Include="Styles\menu.lists-admin.css" />
|
||||
<Content Include="Styles\nprogress.css" />
|
||||
<Content Include="Scripts\nprogress.js" />
|
||||
<Content Include="Scripts\orchard-lists-admin.js" />
|
||||
@@ -143,16 +144,14 @@
|
||||
<Content Include="Scripts\orchard-lists-admin.min.js">
|
||||
<DependentUpon>orchard-lists-admin.js</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Styles\images\menu.list-definition.png" />
|
||||
<Content Include="Styles\images\menu.lists.png" />
|
||||
<Content Include="Styles\images\move.gif" />
|
||||
<Content Include="Styles\images\offline.gif" />
|
||||
<Content Include="Styles\images\online.gif" />
|
||||
<Content Include="Styles\list-admin.css" />
|
||||
<Content Include="Styles\images\menu.list.png" />
|
||||
<Content Include="Styles\list-admin.min.css">
|
||||
<DependentUpon>list-admin.css</DependentUpon>
|
||||
</Content>
|
||||
<Content Include="Styles\menu.list-admin.css" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Web.config">
|
||||
@@ -272,4 +271,4 @@
|
||||
</FlavorProperties>
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
</Project>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -1,22 +0,0 @@
|
||||
.navicon-list,
|
||||
.navicon-lists,
|
||||
.section-new .subnavicon-list,
|
||||
.nav-list > h3 > a,
|
||||
.nav-list-definition > h3 > a {
|
||||
background-image:url(images/menu.list.png) !important;
|
||||
}
|
||||
|
||||
.navicon-list:hover,
|
||||
.navicon-lists:hover,
|
||||
.nav-list > h3 > a:hover,
|
||||
.nav-list-definition > h3 > a:hover {
|
||||
background-position:0 -30px !important;
|
||||
}
|
||||
|
||||
.navicon-lists {
|
||||
background-image:url(images/menu.list.png) !important;
|
||||
}
|
||||
|
||||
.navicon-lists:hover {
|
||||
background-position:0 -30px !important;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
.navicon-lists {
|
||||
background-image: url(images/menu.lists.png) !important;
|
||||
}
|
||||
|
||||
.navicon-lists:hover {
|
||||
background-position: 0 -30px !important;
|
||||
}
|
||||
Reference in New Issue
Block a user