mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Merge
--HG-- branch : dev
This commit is contained in:
@@ -20,10 +20,10 @@ namespace Orchard.Core.ContentsLocation.Settings {
|
|||||||
|
|
||||||
private IEnumerable<LocationDefinition> GetPredefinedLocations() {
|
private IEnumerable<LocationDefinition> GetPredefinedLocations() {
|
||||||
yield return new LocationDefinition { Name = "Default", DisplayName = T("Default location (i.e. fallback if no specific override)") };
|
yield return new LocationDefinition { Name = "Default", DisplayName = T("Default location (i.e. fallback if no specific override)") };
|
||||||
yield return new LocationDefinition { Name = "Detail", DisplayName = T("Location in a \"Detail\" screen") };
|
yield return new LocationDefinition { Name = "Detail", DisplayName = T("\"Detail\" display location") };
|
||||||
yield return new LocationDefinition { Name = "Editor", DisplayName = T("Location in a \"Editor\" screen") };
|
yield return new LocationDefinition { Name = "Editor", DisplayName = T("\"Editor\" display location") };
|
||||||
yield return new LocationDefinition { Name = "Summary", DisplayName = T("Location in a \"Summary\" screen (Front-end)") };
|
yield return new LocationDefinition { Name = "Summary", DisplayName = T("\"Summary\" (front-end) display location") };
|
||||||
yield return new LocationDefinition { Name = "SummaryAdmin", DisplayName = T("Location in a \"Summary\" screen (Admin)") };
|
yield return new LocationDefinition { Name = "SummaryAdmin", DisplayName = T("\"Summary\" (admin) display location") };
|
||||||
}
|
}
|
||||||
|
|
||||||
private LocationSettings MergeSettings(LocationSettings partSettings, LocationSettings partDefinitionSettings) {
|
private LocationSettings MergeSettings(LocationSettings partSettings, LocationSettings partDefinitionSettings) {
|
||||||
|
|||||||
25
src/Orchard.Web/Core/ContentsLocation/Styles/admin.css
Normal file
25
src/Orchard.Web/Core/ContentsLocation/Styles/admin.css
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
fieldset.location-setting {
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
|
fieldset.location-setting legend {
|
||||||
|
font-weight:normal;
|
||||||
|
margin:0;
|
||||||
|
padding-bottom:0;
|
||||||
|
}
|
||||||
|
fieldset.location-setting label {
|
||||||
|
display:inline;
|
||||||
|
}
|
||||||
|
fieldset.location-setting input.text-box {
|
||||||
|
display:block;
|
||||||
|
width:24em;
|
||||||
|
}
|
||||||
|
fieldset.location-setting fieldset {
|
||||||
|
clear:none;
|
||||||
|
float:left;
|
||||||
|
margin-right:1em;
|
||||||
|
margin-top:.5em;
|
||||||
|
}
|
||||||
|
fieldset.location-setting .default {
|
||||||
|
font-size:1.2em;
|
||||||
|
font-style:italic;
|
||||||
|
}
|
||||||
@@ -1,14 +1,18 @@
|
|||||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.ContentsLocation.ViewModels.LocationSettingsViewModel>" %>
|
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.ContentsLocation.ViewModels.LocationSettingsViewModel>" %>
|
||||||
<fieldset >
|
<%
|
||||||
|
Html.RegisterStyle("admin.css"); %>
|
||||||
|
<fieldset class="location-setting">
|
||||||
<legend><%:T("{0}", Model.Definition.DisplayName) %></legend>
|
<legend><%:T("{0}", Model.Definition.DisplayName) %></legend>
|
||||||
|
<fieldset>
|
||||||
<label for="<%:Html.FieldIdFor(m => m.Location.Zone) %>"><%:T("Zone name (e.g. body, primary)") %></label>
|
<label for="<%:Html.FieldIdFor(m => m.Location.Zone) %>"><%:T("Zone name (e.g. body, primary)") %></label><%
|
||||||
<%:Html.EditorFor(m => m.Location.Zone)%>
|
if (!string.IsNullOrWhiteSpace(Model.DefaultLocation.Zone)) {
|
||||||
<%: string.IsNullOrEmpty(Model.DefaultLocation.Zone) ? T("") : T("({0})", Model.DefaultLocation.Zone) %>
|
%><span class="default"><%:T(" - default: {0}", Model.DefaultLocation.Zone) %></span><%
|
||||||
<%:Html.ValidationMessageFor(m => m.Location.Zone)%>
|
} %><%:Html.EditorFor(m => m.Location.Zone) %><%:Html.ValidationMessageFor(m => m.Location.Zone)%>
|
||||||
|
</fieldset>
|
||||||
<label for="<%:Html.FieldIdFor(m => m.Location.Position) %>"><%:T("Position in zone (e.g. 1, 1.0, 2.5.1)") %></label>
|
<fieldset>
|
||||||
<%:Html.EditorFor(m => m.Location.Position)%>
|
<label for="<%:Html.FieldIdFor(m => m.Location.Position) %>"><%:T("Position in zone (e.g. 1, 1.0, 2.5.1)") %></label><%
|
||||||
<%: string.IsNullOrEmpty(Model.DefaultLocation.Position) ? T("") : T("({0})", Model.DefaultLocation.Position) %>
|
if (!string.IsNullOrWhiteSpace(Model.DefaultLocation.Zone)) {
|
||||||
<%:Html.ValidationMessageFor(m => m.Location.Position)%>
|
%><span class="default"><%:T(" - default: {0}", Model.DefaultLocation.Position) %></span><%
|
||||||
|
} %><%:Html.EditorFor(m => m.Location.Position) %>
|
||||||
|
</fieldset><%:Html.ValidationMessageFor(m => m.Location.Position)%>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -242,6 +242,7 @@
|
|||||||
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.ascx" />
|
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.ascx" />
|
||||||
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.SummaryAdmin.ascx" />
|
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.SummaryAdmin.ascx" />
|
||||||
<Content Include="ContentsLocation\Module.txt" />
|
<Content Include="ContentsLocation\Module.txt" />
|
||||||
|
<Content Include="ContentsLocation\Styles\admin.css" />
|
||||||
<Content Include="ContentsLocation\Views\DefinitionTemplates\LocationSettings.ascx" />
|
<Content Include="ContentsLocation\Views\DefinitionTemplates\LocationSettings.ascx" />
|
||||||
<Content Include="Contents\Views\DisplayTemplates\Parts\Contents.Publish.SummaryAdmin.ascx" />
|
<Content Include="Contents\Views\DisplayTemplates\Parts\Contents.Publish.SummaryAdmin.ascx" />
|
||||||
<Content Include="Contents\Views\DisplayTemplates\Parts\Contents.Publish.ascx" />
|
<Content Include="Contents\Views\DisplayTemplates\Parts\Contents.Publish.ascx" />
|
||||||
|
|||||||
@@ -10,25 +10,46 @@
|
|||||||
margin-top:-3.1em;
|
margin-top:-3.1em;
|
||||||
}
|
}
|
||||||
.manage-part {
|
.manage-part {
|
||||||
margin-bottom:2em;
|
margin-bottom:1em;
|
||||||
}
|
}
|
||||||
.manage-part h3,
|
.manage-part h3,
|
||||||
.manage-field h3 {
|
.manage-field h3 {
|
||||||
border-bottom:1px solid #EAEAEA;
|
border-bottom:1px solid #EAEAEA;
|
||||||
|
display:relative;
|
||||||
|
line-height:1.4em;
|
||||||
|
padding-bottom:0;
|
||||||
padding-top:0;
|
padding-top:0;
|
||||||
}
|
}
|
||||||
.manage-part h3,
|
.manage-part h3,
|
||||||
.manage-field h3,
|
.manage-field h3,
|
||||||
.manage-part .manage-field,
|
.manage-part h4,
|
||||||
.manage-field fieldset,
|
.manage-type .manage-field .details,
|
||||||
.manage-part .settings {
|
.manage-type .manage-part .manage-field,
|
||||||
|
.manage-type .manage-part .settings {
|
||||||
padding-left:20px;
|
padding-left:20px;
|
||||||
}
|
}
|
||||||
.manage-part .manage,
|
.manage-type .manage-field .settings {
|
||||||
.manage-field .manage {
|
padding-bottom:10px;
|
||||||
|
padding-left:0;
|
||||||
|
}
|
||||||
|
.manage-part h4 {
|
||||||
|
padding-left:0;
|
||||||
|
}
|
||||||
|
.manage-part .manage-field h4 {
|
||||||
|
line-height:1.8em;
|
||||||
|
padding-bottom:0;
|
||||||
|
padding-left:15px;
|
||||||
|
}
|
||||||
|
.manage-type .manage-part .manage,
|
||||||
|
.manage-type .manage-field .manage,
|
||||||
|
.manage-part .manage-field .manage {
|
||||||
font-size:1.4em;
|
font-size:1.4em;
|
||||||
margin-top:-2.4em;
|
margin-top:-2.4em;
|
||||||
}
|
}
|
||||||
|
.manage-field .details,
|
||||||
|
.manage-part .details {
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
.manage-part .manage.minor {
|
.manage-part .manage.minor {
|
||||||
margin:0 0 -1.2em;
|
margin:0 0 -1.2em;
|
||||||
}
|
}
|
||||||
@@ -36,14 +57,18 @@
|
|||||||
.manage-field label {
|
.manage-field label {
|
||||||
font-weight:normal;
|
font-weight:normal;
|
||||||
}
|
}
|
||||||
|
.manage-field fieldset,
|
||||||
.manage-part fieldset {
|
.manage-part fieldset {
|
||||||
margin:1.5em 0 0;
|
margin:.5em 0 1em;
|
||||||
padding:0;
|
padding:0;
|
||||||
}
|
}
|
||||||
.manage-field .settings {
|
.manage-field .settings {
|
||||||
margin:-1.5em 0 0 1em;
|
margin:0 0 0 15px;
|
||||||
padding-left:0;
|
padding-left:0;
|
||||||
}
|
}
|
||||||
|
.manage-part .settings {
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
.manage-part .settings fieldset {
|
.manage-part .settings fieldset {
|
||||||
padding-left:0;
|
padding-left:0;
|
||||||
}
|
}
|
||||||
@@ -60,7 +85,10 @@ fieldset.action {
|
|||||||
}
|
}
|
||||||
.manage-part dt,
|
.manage-part dt,
|
||||||
.manage-part dd {
|
.manage-part dd {
|
||||||
display:inline;
|
float:left;
|
||||||
|
}
|
||||||
|
.manage-part dt {
|
||||||
|
clear:left;
|
||||||
}
|
}
|
||||||
.manage-part dt::after {
|
.manage-part dt::after {
|
||||||
content:":";
|
content:":";
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Orchard.ContentManagement.MetaData.Models;
|
using Orchard.ContentManagement.MetaData.Models;
|
||||||
using Orchard.ContentManagement.ViewModels;
|
using Orchard.ContentManagement.ViewModels;
|
||||||
@@ -31,7 +32,7 @@ namespace Orchard.ContentTypes.ViewModels {
|
|||||||
public ContentTypeDefinition _Definition { get; private set; }
|
public ContentTypeDefinition _Definition { get; private set; }
|
||||||
|
|
||||||
private IEnumerable<EditPartFieldViewModel> GetTypeFields(ContentTypeDefinition contentTypeDefinition) {
|
private IEnumerable<EditPartFieldViewModel> GetTypeFields(ContentTypeDefinition contentTypeDefinition) {
|
||||||
var implicitTypePart = contentTypeDefinition.Parts.SingleOrDefault(p => p.PartDefinition.Name == Name);
|
var implicitTypePart = contentTypeDefinition.Parts.SingleOrDefault(p => string.Equals(p.PartDefinition.Name, Name, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
return implicitTypePart == null
|
return implicitTypePart == null
|
||||||
? Enumerable.Empty<EditPartFieldViewModel>()
|
? Enumerable.Empty<EditPartFieldViewModel>()
|
||||||
@@ -40,7 +41,7 @@ namespace Orchard.ContentTypes.ViewModels {
|
|||||||
|
|
||||||
private IEnumerable<EditTypePartViewModel> GetTypeParts(ContentTypeDefinition contentTypeDefinition) {
|
private IEnumerable<EditTypePartViewModel> GetTypeParts(ContentTypeDefinition contentTypeDefinition) {
|
||||||
return contentTypeDefinition.Parts
|
return contentTypeDefinition.Parts
|
||||||
.Where(p => p.PartDefinition.Name != Name)
|
.Where(p => !string.Equals(p.PartDefinition.Name, Name, StringComparison.OrdinalIgnoreCase))
|
||||||
.Select((p, i) => new EditTypePartViewModel(i, p) { Type = this });
|
.Select((p, i) => new EditTypePartViewModel(i, p) { Type = this });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,14 +15,24 @@ using (Html.BeginFormAntiForgeryPost()) { %>
|
|||||||
<%:Html.HiddenFor(m => m.Name) %>
|
<%:Html.HiddenFor(m => m.Name) %>
|
||||||
</fieldset><%
|
</fieldset><%
|
||||||
Html.RenderTemplates(Model.Templates); %>
|
Html.RenderTemplates(Model.Templates); %>
|
||||||
|
<div class="manage-type">
|
||||||
<h2><%:T("Fields") %></h2>
|
<h2><%:T("Fields") %></h2>
|
||||||
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div><%:
|
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div><%:
|
||||||
Html.EditorFor(m => m.Fields, "Fields", "") %>
|
Html.EditorFor(m => m.Fields, "Fields", "") %>
|
||||||
<h2><%:T("Parts") %></h2>
|
<h2><%:T("Parts") %></h2>
|
||||||
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddPartsTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" })%></div><%:
|
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddPartsTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" })%></div><%:
|
||||||
Html.EditorFor(m => m.Parts, "TypeParts", "") %>
|
Html.EditorFor(m => m.Parts, "TypeParts", "") %>
|
||||||
|
</div>
|
||||||
<fieldset class="action">
|
<fieldset class="action">
|
||||||
<button class="primaryAction" type="submit"><%:T("Save") %></button>
|
<button class="primaryAction" type="submit"><%:T("Save") %></button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div><%
|
</div><%
|
||||||
|
}
|
||||||
|
using (this.Capture("end-of-page-scripts")) { %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
(function ($) {
|
||||||
|
$(".manage-field h3,.manage-part h3").expandoControl(function (controller) { return controller.nextAll(".details"); }, { collapse: true, remember: false });
|
||||||
|
$(".manage-field h4").expandoControl(function (controller) { return controller.nextAll(".settings"); }, { collapse: true, remember: false });
|
||||||
|
})(jQuery);
|
||||||
|
</script><%
|
||||||
} %>
|
} %>
|
||||||
@@ -10,10 +10,14 @@ using (Html.BeginFormAntiForgeryPost()) { %>
|
|||||||
<%:Html.TextBoxFor(m => m.Name, new {@class = "textMedium", disabled = "disabled"}) %>
|
<%:Html.TextBoxFor(m => m.Name, new {@class = "textMedium", disabled = "disabled"}) %>
|
||||||
<%:Html.HiddenFor(m => m.Name) %>
|
<%:Html.HiddenFor(m => m.Name) %>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
<div class="manage-part">
|
||||||
|
<div class="settings">
|
||||||
<% Html.RenderTemplates(Model.Templates); %>
|
<% Html.RenderTemplates(Model.Templates); %>
|
||||||
|
</div>
|
||||||
<h2><%:T("Fields") %></h2>
|
<h2><%:T("Fields") %></h2>
|
||||||
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div>
|
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div>
|
||||||
<%:Html.EditorFor(m => m.Fields, "Fields", "") %>
|
<%:Html.EditorFor(m => m.Fields, "Fields", "") %>
|
||||||
|
</div>
|
||||||
<fieldset class="action">
|
<fieldset class="action">
|
||||||
<button class="primaryAction" type="submit"><%:T("Save") %></button>
|
<button class="primaryAction" type="submit"><%:T("Save") %></button>
|
||||||
</fieldset><%
|
</fieldset><%
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<%@ import Namespace="Orchard.ContentManagement.MetaData.Models" %>
|
<%@ import Namespace="Orchard.ContentManagement.MetaData.Models" %>
|
||||||
<%
|
<%
|
||||||
if (Model.Any()) { %>
|
if (Model.Any()) { %>
|
||||||
|
<%--<h4><%:T("Global Settings") %></h4>--%>
|
||||||
<dl class="settings"><%
|
<dl class="settings"><%
|
||||||
foreach (var setting in Model) { %>
|
foreach (var setting in Model) { %>
|
||||||
<dt><%:setting.Key %></dt>
|
<dt><%:setting.Key %></dt>
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
<h3><%:Model.Name %> <span>(<%:Model.FieldDefinition.Name %>)</span></h3>
|
<h3><%:Model.Name %> <span>(<%:Model.FieldDefinition.Name %>)</span></h3>
|
||||||
<div class="manage">
|
<div class="manage">
|
||||||
<%:Html.ActionLink(T("Remove").Text, "RemoveFieldFrom", new { area = "Orchard.ContentTypes", id = Model.Part.Name, Model.Name }, new { itemprop = "RemoveUrl UnsafeUrl" })%><%--// <- some experimentation--%>
|
<%:Html.ActionLink(T("Remove").Text, "RemoveFieldFrom", new { area = "Orchard.ContentTypes", id = Model.Part.Name, Model.Name }, new { itemprop = "RemoveUrl UnsafeUrl" })%><%--// <- some experimentation--%>
|
||||||
</div><%
|
</div>
|
||||||
|
<div class="details"><%
|
||||||
Html.RenderTemplates(Model.Templates);
|
Html.RenderTemplates(Model.Templates);
|
||||||
%><%:Html.HiddenFor(m => m.Name)
|
%><%:Html.HiddenFor(m => m.Name)
|
||||||
%><%:Html.HiddenFor(m => m.FieldDefinition.Name)
|
%><%:Html.HiddenFor(m => m.FieldDefinition.Name)
|
||||||
%><%:Html.HiddenFor(m => m.Index) %>
|
%><%:Html.HiddenFor(m => m.Index) %>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -13,4 +13,4 @@ if (Model.Any()) { %>
|
|||||||
<%:Html.TextBox(htmlFieldName + ".Value", s.Value)%><%
|
<%:Html.TextBox(htmlFieldName + ".Value", s.Value)%><%
|
||||||
} %>
|
} %>
|
||||||
</fieldset><%
|
</fieldset><%
|
||||||
} %>
|
} %>asdf
|
||||||
@@ -3,14 +3,17 @@
|
|||||||
<h3 itemprop="Name"><%:Model.PartDefinition.DisplayName %></h3>
|
<h3 itemprop="Name"><%:Model.PartDefinition.DisplayName %></h3>
|
||||||
<div class="manage">
|
<div class="manage">
|
||||||
<%:Html.ActionLink(T("Remove").Text, "RemovePartFrom", new { area = "Orchard.ContentTypes", id = Model.Type.Name, Model.PartDefinition.Name }, new { itemprop = "RemoveUrl UnsafeUrl" })%><%--// <- some experimentation--%>
|
<%:Html.ActionLink(T("Remove").Text, "RemovePartFrom", new { area = "Orchard.ContentTypes", id = Model.Type.Name, Model.PartDefinition.Name }, new { itemprop = "RemoveUrl UnsafeUrl" })%><%--// <- some experimentation--%>
|
||||||
</div><%
|
</div>
|
||||||
|
<div class="details"><%:Html.EditorFor(m => m.PartDefinition.Fields, "TypePartFields", "PartDefinition")
|
||||||
|
%><%
|
||||||
if (Model.Templates.Any()) { %>
|
if (Model.Templates.Any()) { %>
|
||||||
<div class="settings"><%
|
<div class="settings">
|
||||||
|
<h4><%:T("{0} Settings:", Model.PartDefinition.DisplayName) %></h4><%
|
||||||
Html.RenderTemplates(Model.Templates); %>
|
Html.RenderTemplates(Model.Templates); %>
|
||||||
</div><%
|
</div><%
|
||||||
} %>
|
} %>
|
||||||
<%:Html.DisplayFor(m => m.PartDefinition.Settings, "Settings", "PartDefinition")
|
<%-- don't show global part settings for now - <%:Html.DisplayFor(m => m.PartDefinition.Settings, "Settings", "PartDefinition")
|
||||||
%><%:Html.EditorFor(m => m.PartDefinition.Fields, "TypePartFields", "PartDefinition")
|
%>--%><%:Html.HiddenFor(m => m.PartDefinition.Name)
|
||||||
%><%:Html.HiddenFor(m => m.PartDefinition.Name)
|
|
||||||
%><%:Html.HiddenFor(m => m.Index) %>
|
%><%:Html.HiddenFor(m => m.Index) %>
|
||||||
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Orchard.Modules.Models {
|
||||||
|
public class DoghouseComparer : IComparer<string> {
|
||||||
|
private readonly string _theDog;
|
||||||
|
|
||||||
|
public DoghouseComparer(string theDog) {
|
||||||
|
_theDog = theDog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Compare(string x, string y) {
|
||||||
|
if (x == null || y == null)
|
||||||
|
return x == null && y == null ? 0 : (x == null ? -1 : 1);
|
||||||
|
|
||||||
|
if (string.Equals(x, y, StringComparison.OrdinalIgnoreCase))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (string.Equals(x, _theDog, StringComparison.OrdinalIgnoreCase))
|
||||||
|
return 1;
|
||||||
|
if (string.Equals(y, _theDog, StringComparison.OrdinalIgnoreCase))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -69,6 +69,7 @@
|
|||||||
<Compile Include="Commands\FeatureCommands.cs" />
|
<Compile Include="Commands\FeatureCommands.cs" />
|
||||||
<Compile Include="Controllers\AdminController.cs" />
|
<Compile Include="Controllers\AdminController.cs" />
|
||||||
<Compile Include="Extensions\StringExtensions.cs" />
|
<Compile Include="Extensions\StringExtensions.cs" />
|
||||||
|
<Compile Include="Models\DoghouseComparer.cs" />
|
||||||
<Compile Include="Models\ModuleFeature.cs" />
|
<Compile Include="Models\ModuleFeature.cs" />
|
||||||
<Compile Include="ViewModels\FeaturesViewModel.cs" />
|
<Compile Include="ViewModels\FeaturesViewModel.cs" />
|
||||||
<Compile Include="Models\Module.cs" />
|
<Compile Include="Models\Module.cs" />
|
||||||
|
|||||||
@@ -2,12 +2,13 @@
|
|||||||
<%@ Import Namespace="Orchard.Localization" %>
|
<%@ Import Namespace="Orchard.Localization" %>
|
||||||
<%@ Import Namespace="Orchard.Modules.Extensions" %>
|
<%@ Import Namespace="Orchard.Modules.Extensions" %>
|
||||||
<%@ Import Namespace="Orchard.Modules.ViewModels"%>
|
<%@ Import Namespace="Orchard.Modules.ViewModels"%>
|
||||||
<%@ Import Namespace="Orchard.Utility.Extensions" %><%
|
<%@ Import Namespace="Orchard.Utility.Extensions" %>
|
||||||
|
<%@ Import Namespace="Orchard.Modules.Models" %><%
|
||||||
Html.RegisterStyle("admin.css"); %>
|
Html.RegisterStyle("admin.css"); %>
|
||||||
<h1><%: Html.TitleForPage(T("Manage Features").ToString()) %></h1>
|
<h1><%: Html.TitleForPage(T("Manage Features").ToString()) %></h1>
|
||||||
<% if (Model.Features.Count() > 0) { %>
|
<% if (Model.Features.Count() > 0) { %>
|
||||||
<ul class="<% Html.RenderPartial("UI/Switchable", "features summary-view"); %>"><%
|
<ul class="<% Html.RenderPartial("UI/Switchable", "features summary-view"); %>"><%
|
||||||
var featureGroups = Model.Features.OrderBy(f => f.Descriptor.Category).GroupBy(f => f.Descriptor.Category);
|
var featureGroups = Model.Features.OrderBy(f => f.Descriptor.Category, new DoghouseComparer("Core")).GroupBy(f => f.Descriptor.Category);
|
||||||
foreach (var featureGroup in featureGroups) {
|
foreach (var featureGroup in featureGroups) {
|
||||||
var categoryName = LocalizedString.TextOrDefault(featureGroup.First().Descriptor.Category, T("Uncategorized"));
|
var categoryName = LocalizedString.TextOrDefault(featureGroup.First().Descriptor.Category, T("Uncategorized"));
|
||||||
var categoryClassName = string.Format("category {0}", Html.Encode(categoryName.ToString().HtmlClassify()));
|
var categoryClassName = string.Format("category {0}", Html.Encode(categoryName.ToString().HtmlClassify()));
|
||||||
|
|||||||
@@ -280,10 +280,10 @@ body { background: #f3f4f4 url('../Content/Images/bkg.jpg') repeat-x; }
|
|||||||
.admin li a {}
|
.admin li a {}
|
||||||
|
|
||||||
/*- Search -*/
|
/*- Search -*/
|
||||||
#nav .search { display: inline; float: right; height: 40px; margin: -40px 8px 0 0; }
|
#nav .search { display: inline; float: right; height: 40px; margin: -40px 8px 0 0; overflow: auto; }
|
||||||
#nav .search input { border-color: #87B7CB; }
|
#nav .search input { border-color: #87B7CB; }
|
||||||
#nav .search input, #nav .search button { font-size: 1.2em; height:17px; padding: 3px; }
|
#nav .search input, #nav .search button { float: left; font-size: 1.2em; height:17px; padding: 3px; }
|
||||||
#nav .search button { background: #87B7CB; border: none; color: #FFF; float: right; height:25px; line-height: 1.5em; margin:7px 0; padding: 2px 6px 5px; text-shadow: 0px -1px 0px #A6A6A6; }
|
#nav .search button { background: #87B7CB; border: none; color: #FFF; height:25px; line-height: 1.5em; margin:7px 0; padding: 2px 6px 5px; text-shadow: 0px -1px 0px #A6A6A6; }
|
||||||
|
|
||||||
/*========= Footer =========*/
|
/*========= Footer =========*/
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,14 @@
|
|||||||
}, options);
|
}, options);
|
||||||
_this.each(function (index, element) {
|
_this.each(function (index, element) {
|
||||||
var controller = $(element);
|
var controller = $(element);
|
||||||
var glyph = $("<span class=\"expandoGlyph\"></span>");
|
var glyph = $("<span class=\"expando-glyph-container\"><span class=\"expando-glyph\"></span></span>");
|
||||||
|
|
||||||
glyph.data("controllees", getControllees(controller));
|
glyph.data("controllees", getControllees(controller));
|
||||||
|
|
||||||
|
if (glyph.data("controllees").length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ((settings.remember && "closed" === $.orchard.setting(__cookieName, { key: settings.key + "-" + controller.text(), path: settings.path }))
|
if ((settings.remember && "closed" === $.orchard.setting(__cookieName, { key: settings.key + "-" + controller.text(), path: settings.path }))
|
||||||
|| settings.collapse) {
|
|| settings.collapse) {
|
||||||
glyph.addClass("closed").data("controllees").hide();
|
glyph.addClass("closed").data("controllees").hide();
|
||||||
@@ -45,7 +50,7 @@
|
|||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
controller.before(glyph);
|
controller.prepend(glyph);
|
||||||
});
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -246,11 +246,10 @@ form.link button:hover {
|
|||||||
margin:0;
|
margin:0;
|
||||||
}
|
}
|
||||||
#navigation li h3 {
|
#navigation li h3 {
|
||||||
padding:0 0 0 8px;
|
padding:0 0 2px 8px;
|
||||||
}
|
}
|
||||||
#navigation li h3 a, #navigation li h3 span {
|
#navigation li h3 a, #navigation li h3 span {
|
||||||
display:block;
|
padding:6px 4px px 0;
|
||||||
padding:6px 4px 8px 0;
|
|
||||||
}
|
}
|
||||||
#navigation ul a, #navigation ul a:link, #navigation ul a:visited {
|
#navigation ul a, #navigation ul a:link, #navigation ul a:visited {
|
||||||
color:#2d2f25;
|
color:#2d2f25;
|
||||||
@@ -268,31 +267,40 @@ form.link button:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* todo: make generic so all toggles can use this and clean up jQuery */
|
/* todo: make generic so all toggles can use this and clean up jQuery */
|
||||||
.expandoGlyph {
|
.expando-glyph-container {
|
||||||
|
display:inline !important;
|
||||||
|
line-height:1em;
|
||||||
|
padding:0 !important;
|
||||||
|
position:relative;
|
||||||
|
text-align:sub;
|
||||||
|
}
|
||||||
|
.expando-glyph {
|
||||||
background:#fcfcfc no-repeat center center;
|
background:#fcfcfc no-repeat center center;
|
||||||
background-image:url(data:image/gif;base64,R0lGODlhCwALAKIFAPDz2/b70mhpREJEPjI0Lf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQzQjUyNTNFOTQyODExREY5MDkxQ0U0MzJGRTdGNEExIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQzQjUyNTNEOTQyODExREY5MDkxQ0U0MzJGRTdGNEExIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAABQAsAAAAAAsACwAAAx1YutxeIbYIghBgWVwA4daQKZ4QjkspPsD6dG8sJwA7);
|
background-image:url(data:image/gif;base64,R0lGODlhCwALAKIFAPDz2/b70mhpREJEPjI0Lf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkQzQjUyNTNFOTQyODExREY5MDkxQ0U0MzJGRTdGNEExIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQzQjUyNTNEOTQyODExREY5MDkxQ0U0MzJGRTdGNEExIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAABQAsAAAAAAsACwAAAx1YutxeIbYIghBgWVwA4daQKZ4QjkspPsD6dG8sJwA7);
|
||||||
/*url("images/menuOpen.gif")*/
|
/*url("images/menuOpen.gif")*/
|
||||||
|
bottom:0;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
display:block;
|
display:block;
|
||||||
height:17px;
|
height:17px;
|
||||||
margin:0 0 -2.5em -11px;
|
left:-20px;
|
||||||
|
padding:0 !important;
|
||||||
|
position:absolute;
|
||||||
width:17px;
|
width:17px;
|
||||||
position:relative;
|
|
||||||
-webkit-transform:rotate(0deg);
|
-webkit-transform:rotate(0deg);
|
||||||
}
|
}
|
||||||
.expandoGlyph:hover {
|
.expando-glyph:hover {
|
||||||
background-image:url(data:image/gif;base64,R0lGODlhCwALAJEDAB5dfcbVyMvbwf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUxMUUzODE2OTQyODExREZBN0ZBOURGNEI3NDVDRkMxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUxMUUzODE1OTQyODExREZBN0ZBOURGNEI3NDVDRkMxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAwAsAAAAAAsACwAAAhqcj6kjnR0EAOFIOsKstxoNdAmIKZq3oMvKFgA7);
|
background-image:url(data:image/gif;base64,R0lGODlhCwALAJEDAB5dfcbVyMvbwf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUxMUUzODE2OTQyODExREZBN0ZBOURGNEI3NDVDRkMxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUxMUUzODE1OTQyODExREZBN0ZBOURGNEI3NDVDRkMxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAwAsAAAAAAsACwAAAhqcj6kjnR0EAOFIOsKstxoNdAmIKZq3oMvKFgA7);
|
||||||
/*url("images/menuOpenHover.gif");*/
|
/*url("images/menuOpenHover.gif");*/
|
||||||
}
|
}
|
||||||
.expandoGlyph.closed {
|
.expando-glyph-container.closed .expando-glyph {
|
||||||
background-image:url(data:image/gif;base64,R0lGODlhCwALAKIFAPDz2/b70mhpREJEPjI0Lf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY2OEJCRkEyOTQyODExREY5ODMwQkQwQjI2MEMzREUwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY2OEJCRkExOTQyODExREY5ODMwQkQwQjI2MEMzREUwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAABQAsAAAAAAsACwAAAx1YBaD+QbTn4pi0WEx3Vh4FCASnjGUWpar0acGXAAA7);
|
background-image:url(data:image/gif;base64,R0lGODlhCwALAKIFAPDz2/b70mhpREJEPjI0Lf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY2OEJCRkEyOTQyODExREY5ODMwQkQwQjI2MEMzREUwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY2OEJCRkExOTQyODExREY5ODMwQkQwQjI2MEMzREUwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAABQAsAAAAAAsACwAAAx1YBaD+QbTn4pi0WEx3Vh4FCASnjGUWpar0acGXAAA7);
|
||||||
/*url("images/menuClosed.gif");*/
|
/*url("images/menuClosed.gif");*/
|
||||||
}
|
}
|
||||||
.expandoGlyph.closed:hover {
|
.expando-glyph-container.closed .expando-glyph:hover {
|
||||||
background-image:url(data:image/gif;base64,R0lGODlhCwALAJEDAB5dfcbVyMvbwf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA1NTdBNkZFOTQyOTExREY4QjNERjI1RjMzMUYxRjk1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA1NTdBNkZEOTQyOTExREY4QjNERjI1RjMzMUYxRjk1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAwAsAAAAAAsACwAAAhrcEqYrkKuagxFMOuSjmga7Kd/FgFgTMgJWAAA7);
|
background-image:url(data:image/gif;base64,R0lGODlhCwALAJEDAB5dfcbVyMvbwf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA1NTdBNkZFOTQyOTExREY4QjNERjI1RjMzMUYxRjk1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA1NTdBNkZEOTQyOTExREY4QjNERjI1RjMzMUYxRjk1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJENDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJDNDlGNjgyMjg5NERGMTE4RUZGQkY0Q0JCRDA3OTc2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAwAsAAAAAAsACwAAAhrcEqYrkKuagxFMOuSjmga7Kd/FgFgTMgJWAAA7);
|
||||||
/*url("images/menuClosedHover.gif");*/
|
/*url("images/menuClosedHover.gif");*/
|
||||||
}
|
}
|
||||||
.expandoGlyph.closing {
|
.expando-glyph-container.closing .expando-glyph {
|
||||||
-webkit-transition:all .2s ease-in-out;
|
-webkit-transition:all .2s ease-in-out;
|
||||||
-moz-transition:all .2s ease-in-out;
|
-moz-transition:all .2s ease-in-out;
|
||||||
transition:all .2s ease-in-out;
|
transition:all .2s ease-in-out;
|
||||||
@@ -300,7 +308,7 @@ form.link button:hover {
|
|||||||
-moz-transform:rotate(-90deg);
|
-moz-transform:rotate(-90deg);
|
||||||
transform:rotate(-90deg);
|
transform:rotate(-90deg);
|
||||||
}
|
}
|
||||||
.expandoGlyph.opening {
|
.expando-glyph-container.opening .expando-glyph {
|
||||||
-webkit-transition:all .2s ease-in-out;
|
-webkit-transition:all .2s ease-in-out;
|
||||||
-moz-transition:all .2s ease-in-out;
|
-moz-transition:all .2s ease-in-out;
|
||||||
transition:all .2s ease-in-out;
|
transition:all .2s ease-in-out;
|
||||||
|
|||||||
@@ -79,13 +79,12 @@ namespace Orchard.Mvc.Html {
|
|||||||
if (ReferenceEquals(this, other)) {
|
if (ReferenceEquals(this, other)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return Equals(other.Container, Container) && Equals(other.ContainerVirtualPath, ContainerVirtualPath) && Equals(other.FileName, FileName) && Equals(other.Condition, Condition);
|
return Equals(other.ContainerVirtualPath, ContainerVirtualPath) && Equals(other.FileName, FileName) && Equals(other.Condition, Condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override int GetHashCode() {
|
public override int GetHashCode() {
|
||||||
unchecked {
|
unchecked {
|
||||||
var result = (Container != null ? Container.GetHashCode() : 0);
|
var result = (ContainerVirtualPath != null ? ContainerVirtualPath.GetHashCode() : 0);
|
||||||
result = (result*397) ^ (ContainerVirtualPath != null ? ContainerVirtualPath.GetHashCode() : 0);
|
|
||||||
result = (result*397) ^ (FileName != null ? FileName.GetHashCode() : 0);
|
result = (result*397) ^ (FileName != null ? FileName.GetHashCode() : 0);
|
||||||
result = (result*397) ^ (Condition != null ? Condition.GetHashCode() : 0);
|
result = (result*397) ^ (Condition != null ? Condition.GetHashCode() : 0);
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -30,7 +30,9 @@ namespace Orchard.Mvc.Html {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static string FieldIdFor<T, TResult>(this HtmlHelper<T> html, Expression<Func<T, TResult>> expression) {
|
public static string FieldIdFor<T, TResult>(this HtmlHelper<T> html, Expression<Func<T, TResult>> expression) {
|
||||||
return html.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));
|
var id = html.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));
|
||||||
|
// because "[" and "]" aren't replaced with "_" in GetFullHtmlFieldId
|
||||||
|
return id.Replace('[', '_').Replace(']', '_');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MvcHtmlString SelectOption<T>(this HtmlHelper html, T currentValue, T optionValue, string text) {
|
public static MvcHtmlString SelectOption<T>(this HtmlHelper html, T currentValue, T optionValue, string text) {
|
||||||
|
|||||||
Reference in New Issue
Block a user