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
@@ -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) {
@@ -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;
}
@@ -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><%
</fieldset> } %><%:Html.EditorFor(m => m.Location.Position) %>
</fieldset><%:Html.ValidationMessageFor(m => m.Location.Position)%>
</fieldset>
+1
View File
@@ -241,6 +241,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" />
@@ -15,20 +15,40 @@
.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-part .manage-field,
.manage-part .settings { .manage-type .manage-field fieldset,
.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-part .details {
overflow:auto;
}
.manage-part .manage.minor { .manage-part .manage.minor {
margin:0 0 -1.2em; margin:0 0 -1.2em;
} }
@@ -37,13 +57,16 @@
font-weight:normal; font-weight:normal;
} }
.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 +83,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:":";
@@ -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); %>
<h2><%:T("Fields") %></h2> <div class="manage-type">
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div><%: <h2><%:T("Fields") %></h2>
Html.EditorFor(m => m.Fields, "Fields", "") %> <div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div><%:
<h2><%:T("Parts") %></h2> Html.EditorFor(m => m.Fields, "Fields", "") %>
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddPartsTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" })%></div><%: <h2><%:T("Parts") %></h2>
Html.EditorFor(m => m.Parts, "TypeParts", "") %> <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"> <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-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>
<% Html.RenderTemplates(Model.Templates); %> <div class="manage-part">
<h2><%:T("Fields") %></h2> <div class="settings">
<div class="manage add-to-type"><%: Html.ActionLink(T("Add").Text, "AddFieldTo", new { area = "Orchard.ContentTypes", id = Model.Name }, new { @class = "button" }) %></div> <% Html.RenderTemplates(Model.Templates); %>
<%:Html.EditorFor(m => m.Fields, "Fields", "") %> </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"> <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>
@@ -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>
@@ -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;
+19 -11
View File
@@ -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;
+3 -1
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) { 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) {