Updating the content type/part management UI with some expand/collapse bits and a little UI cleanup

--HG--
branch : dev
This commit is contained in:
Nathan Heskew
2010-07-25 01:12:07 -07:00
parent 0d4b1e6c42
commit 625b1fb678
14 changed files with 143 additions and 57 deletions

View File

@@ -20,10 +20,10 @@ namespace Orchard.Core.ContentsLocation.Settings {
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 = "Detail", DisplayName = T("Location in a \"Detail\" screen") };
yield return new LocationDefinition { Name = "Editor", DisplayName = T("Location in a \"Editor\" screen") };
yield return new LocationDefinition { Name = "Summary", DisplayName = T("Location in a \"Summary\" screen (Front-end)") };
yield return new LocationDefinition { Name = "SummaryAdmin", DisplayName = T("Location in a \"Summary\" screen (Admin)") };
yield return new LocationDefinition { Name = "Detail", DisplayName = T("\"Detail\" display location") };
yield return new LocationDefinition { Name = "Editor", DisplayName = T("\"Editor\" display location") };
yield return new LocationDefinition { Name = "Summary", DisplayName = T("\"Summary\" (front-end) display location") };
yield return new LocationDefinition { Name = "SummaryAdmin", DisplayName = T("\"Summary\" (admin) display location") };
}
private LocationSettings MergeSettings(LocationSettings partSettings, LocationSettings partDefinitionSettings) {

View File

@@ -0,0 +1,23 @@
fieldset.location-setting {
overflow:auto;
}
fieldset.location-setting legend {
font-weight:normal;
}
fieldset.location-setting label {
display:inline;
}
fieldset.location-setting input {
display:block;
width:20em;
}
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;
}

View File

@@ -1,14 +1,18 @@
<%@ 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>
<label for="<%:Html.FieldIdFor(m => m.Location.Zone) %>"><%:T("Zone name (e.g. body, primary)") %></label>
<%:Html.EditorFor(m => m.Location.Zone)%>
<%: string.IsNullOrEmpty(Model.DefaultLocation.Zone) ? T("") : T("({0})", Model.DefaultLocation.Zone) %>
<%:Html.ValidationMessageFor(m => m.Location.Zone)%>
<label for="<%:Html.FieldIdFor(m => m.Location.Position) %>"><%:T("Position in zone (e.g. 1, 1.0, 2.5.1)") %></label>
<%:Html.EditorFor(m => m.Location.Position)%>
<%: string.IsNullOrEmpty(Model.DefaultLocation.Position) ? T("") : T("({0})", Model.DefaultLocation.Position) %>
<%:Html.ValidationMessageFor(m => m.Location.Position)%>
<fieldset>
<label for="<%:Html.FieldIdFor(m => m.Location.Zone) %>"><%:T("Zone name (e.g. body, primary)") %></label><%
if (!string.IsNullOrWhiteSpace(Model.DefaultLocation.Zone)) {
%><span class="default"><%:T(" - default: {0}", Model.DefaultLocation.Zone) %></span><%
} %><%:Html.EditorFor(m => m.Location.Zone) %><%:Html.ValidationMessageFor(m => m.Location.Zone)%>
</fieldset>
<fieldset>
<label for="<%:Html.FieldIdFor(m => m.Location.Position) %>"><%:T("Position in zone (e.g. 1, 1.0, 2.5.1)") %></label><%
if (!string.IsNullOrWhiteSpace(Model.DefaultLocation.Zone)) {
%><span class="default"><%:T(" - default: {0}", Model.DefaultLocation.Position) %></span><%
} %><%:Html.EditorFor(m => m.Location.Position) %>
</fieldset><%:Html.ValidationMessageFor(m => m.Location.Position)%>
</fieldset>

View File

@@ -241,6 +241,7 @@
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.ascx" />
<Content Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.SummaryAdmin.ascx" />
<Content Include="ContentsLocation\Module.txt" />
<Content Include="ContentsLocation\Styles\admin.css" />
<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.ascx" />

View File

@@ -15,20 +15,40 @@
.manage-part h3,
.manage-field h3 {
border-bottom:1px solid #EAEAEA;
display:relative;
line-height:1.4em;
padding-bottom:0;
padding-top:0;
}
.manage-part h3,
.manage-field h3,
.manage-part .manage-field,
.manage-field fieldset,
.manage-part .settings {
.manage-part h4,
.manage-type .manage-part .manage-field,
.manage-type .manage-field fieldset,
.manage-type .manage-part .settings {
padding-left:20px;
}
.manage-part .manage,
.manage-field .manage {
.manage-type .manage-field .settings {
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;
margin-top:-2.4em;
}
.manage-part .details {
overflow:auto;
}
.manage-part .manage.minor {
margin:0 0 -1.2em;
}
@@ -37,13 +57,16 @@
font-weight:normal;
}
.manage-part fieldset {
margin:1.5em 0 0;
margin:.5em 0 1em;
padding:0;
}
.manage-field .settings {
margin:-1.5em 0 0 1em;
margin:0 0 0 15px;
padding-left:0;
}
.manage-part .settings {
overflow:auto;
}
.manage-part .settings fieldset {
padding-left:0;
}
@@ -60,7 +83,10 @@ fieldset.action {
}
.manage-part dt,
.manage-part dd {
display:inline;
float:left;
}
.manage-part dt {
clear:left;
}
.manage-part dt::after {
content:":";

View File

@@ -15,14 +15,24 @@ using (Html.BeginFormAntiForgeryPost()) { %>
<%:Html.HiddenFor(m => m.Name) %>
</fieldset><%
Html.RenderTemplates(Model.Templates); %>
<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><%:
Html.EditorFor(m => m.Fields, "Fields", "") %>
<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><%:
Html.EditorFor(m => m.Parts, "TypeParts", "") %>
<div class="manage-type">
<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><%:
Html.EditorFor(m => m.Fields, "Fields", "") %>
<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><%:
Html.EditorFor(m => m.Parts, "TypeParts", "") %>
</div>
<fieldset class="action">
<button class="primaryAction" type="submit"><%:T("Save") %></button>
</fieldset>
</div><%
}
using (this.Capture("end-of-page-scripts")) { %>
<script type="text/javascript">
(function ($) {
$(".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><%
} %>

View File

@@ -10,10 +10,14 @@ using (Html.BeginFormAntiForgeryPost()) { %>
<%:Html.TextBoxFor(m => m.Name, new {@class = "textMedium", disabled = "disabled"}) %>
<%:Html.HiddenFor(m => m.Name) %>
</fieldset>
<% Html.RenderTemplates(Model.Templates); %>
<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>
<%:Html.EditorFor(m => m.Fields, "Fields", "") %>
<div class="manage-part">
<div class="settings">
<% Html.RenderTemplates(Model.Templates); %>
</div>
<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>
<%:Html.EditorFor(m => m.Fields, "Fields", "") %>
</div>
<fieldset class="action">
<button class="primaryAction" type="submit"><%:T("Save") %></button>
</fieldset><%

View File

@@ -2,6 +2,7 @@
<%@ import Namespace="Orchard.ContentManagement.MetaData.Models" %>
<%
if (Model.Any()) { %>
<%--<h4><%:T("Global Settings") %></h4>--%>
<dl class="settings"><%
foreach (var setting in Model) { %>
<dt><%:setting.Key %></dt>

View File

@@ -13,4 +13,4 @@ if (Model.Any()) { %>
<%:Html.TextBox(htmlFieldName + ".Value", s.Value)%><%
} %>
</fieldset><%
} %>
} %>asdf

View File

@@ -3,14 +3,17 @@
<h3 itemprop="Name"><%:Model.PartDefinition.DisplayName %></h3>
<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--%>
</div><%
</div>
<div class="details"><%:Html.EditorFor(m => m.PartDefinition.Fields, "TypePartFields", "PartDefinition")
%><%
if (Model.Templates.Any()) { %>
<div class="settings"><%
<div class="settings">
<h4><%:T("{0} Settings:", Model.PartDefinition.DisplayName) %></h4><%
Html.RenderTemplates(Model.Templates); %>
</div><%
} %>
<%:Html.DisplayFor(m => m.PartDefinition.Settings, "Settings", "PartDefinition")
%><%:Html.EditorFor(m => m.PartDefinition.Fields, "TypePartFields", "PartDefinition")
%><%:Html.HiddenFor(m => m.PartDefinition.Name)
<%-- don't show global part settings for now - <%:Html.DisplayFor(m => m.PartDefinition.Settings, "Settings", "PartDefinition")
%>--%><%:Html.HiddenFor(m => m.PartDefinition.Name)
%><%:Html.HiddenFor(m => m.Index) %>
</div>
</fieldset>

View File

@@ -14,9 +14,14 @@
}, options);
_this.each(function (index, 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));
if (glyph.data("controllees").length === 0) {
return;
}
if ((settings.remember && "closed" === $.orchard.setting(__cookieName, { key: settings.key + "-" + controller.text(), path: settings.path }))
|| settings.collapse) {
glyph.addClass("closed").data("controllees").hide();
@@ -45,7 +50,7 @@
return false;
});
controller.before(glyph);
controller.prepend(glyph);
});
return this;

View File

@@ -246,11 +246,10 @@ form.link button:hover {
margin:0;
}
#navigation li h3 {
padding:0 0 0 8px;
padding:0 0 2px 8px;
}
#navigation li h3 a, #navigation li h3 span {
display:block;
padding:6px 4px 8px 0;
padding:6px 4px px 0;
}
#navigation ul a, #navigation ul a:link, #navigation ul a:visited {
color:#2d2f25;
@@ -268,31 +267,40 @@ form.link button:hover {
}
/* 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-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")*/
bottom:0;
cursor:pointer;
display:block;
height:17px;
margin:0 0 -2.5em -11px;
left:-20px;
padding:0 !important;
position:absolute;
width:17px;
position:relative;
-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);
/*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);
/*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);
/*url("images/menuClosedHover.gif");*/
}
.expandoGlyph.closing {
.expando-glyph-container.closing .expando-glyph {
-webkit-transition:all .2s ease-in-out;
-moz-transition:all .2s ease-in-out;
transition:all .2s ease-in-out;
@@ -300,7 +308,7 @@ form.link button:hover {
-moz-transform:rotate(-90deg);
transform:rotate(-90deg);
}
.expandoGlyph.opening {
.expando-glyph-container.opening .expando-glyph {
-webkit-transition:all .2s ease-in-out;
-moz-transition:all .2s ease-in-out;
transition:all .2s ease-in-out;

View File

@@ -79,13 +79,12 @@ namespace Orchard.Mvc.Html {
if (ReferenceEquals(this, other)) {
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() {
unchecked {
var result = (Container != null ? Container.GetHashCode() : 0);
result = (result*397) ^ (ContainerVirtualPath != null ? ContainerVirtualPath.GetHashCode() : 0);
var result = (ContainerVirtualPath != null ? ContainerVirtualPath.GetHashCode() : 0);
result = (result*397) ^ (FileName != null ? FileName.GetHashCode() : 0);
result = (result*397) ^ (Condition != null ? Condition.GetHashCode() : 0);
return result;

View File

@@ -30,7 +30,9 @@ namespace Orchard.Mvc.Html {
}
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) {