More updates to the CMSPages admin UI. A little work left on the edit page (page) and have to rip through the smaller confirmation type pages. Also need to clean up the CSS a bit to reorg selectors I haven't touched yet to one location so the little stuff isn't lost in the (re)shuffle...

--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4041983
This commit is contained in:
skewed
2009-11-24 01:51:26 +00:00
parent 4bffb6412d
commit 00acb5ca32
5 changed files with 165 additions and 192 deletions

View File

@@ -31,6 +31,9 @@ q:before, q:after {
:focus { :focus {
outline:0; outline:0;
} }
button::-moz-focus-inner, input.button::-moz-focus-inner {
border:0;
}
ins { ins {
text-decoration:none; text-decoration:none;
} }
@@ -148,15 +151,8 @@ h4 { font-size:1.8em; } /* 18px */
h5 { font-size:1.6em; } /* 16px */ h5 { font-size:1.6em; } /* 16px */
h6, p, label, input, select, th, td { font-size:1.5em; } /* 15px */ h6, p, label, input, select, th, td { font-size:1.5em; } /* 15px */
p {
margin:4px;
}
strong {
font-weight:700;
}
/* ---------- Links ---------- */ /* ---------- Links ---------- */
a, a:link, a:visited { a, a:link {
color:#1e5d7d; color:#1e5d7d;
text-decoration:none; text-decoration:none;
} }
@@ -266,7 +262,7 @@ a.linkButton, a.linkButton:visited {
/* Content /* Content
----------------------------------------------------------*/ ----------------------------------------------------------*/
#main h2, #main h3, #main h4 { #main h2, #main h3, #main h4, #main p, #main form {
margin:.23em 0 1em; margin:.23em 0 1em;
} }
#main h2, #main h3 { #main h2, #main h3 {
@@ -302,44 +298,45 @@ div.confirmation, div.warning, div.critical {
/* Forms /* Forms
----------------------------------------------------------*/ ----------------------------------------------------------*/
.formList li { fieldset.bulk.actions {
line-height:24px; display:inline;
margin:.4em 1.4em -.8em 0;
} }
label { label {
display: block; display: block;
font-weight:700; font-weight:700;
margin:8px 4px -2px 0px;
} }
fieldset.bulk.actions label, label.sub {
display:inline;
}
label span { label span {
font-weight:normal; font-weight:normal;
} }
legend {
font-size:150%;
color:#525e50;
}
select, textarea, input.text, #PublishLaterDate { select, textarea, input.text, #PublishLaterDate {
margin:4px; margin:3px 4px 4px;
padding:2px; padding:2px;
border:1px solid #d2d6c6; border:1px solid #d2d6c6;
color:#5a5b32; color:#5a5b32;
} }
textarea { input.large.text, textarea, fieldset {
height:8em; clear:both;
width:80%;
} }
/* todo: (heskew) move editor specific style elsewhere and make to not suck :| */ fieldset {
.primary input.large.text, margin:.7em 0 .2em;
.primary textarea, }
.primary fieldset { textarea {
min-height:8em;
}
.primary input.large.text, .primary textarea {
margin:.613% 0 .613% .613%; margin:.613% 0 .613% .613%;
padding:4px; padding:4px;
width:98.161%; width:98.161%;
} }
/* todo: (heskew) move editor specific style elsewhere */
.primary .mceEditor { .primary .mceEditor {
display:block; display:block;
margin:.613% 0 .613% .613%; margin:.613% 0 .613% .613%;
@@ -354,18 +351,34 @@ textarea {
margin:0 6px 0 0; margin:0 6px 0 0;
} }
input[button], button, .button { button, .button {
background:#dddfcb url(images/tableHeaderBackground.gif) repeat-x top left; background:#dddfcb url(images/tableHeaderBackground.gif) repeat-x top left;
border:1px solid #d2d6c6; border:1px solid #d2d6c6;
color:#5a5b32; color:#5a5b32;
cursor:pointer; cursor:pointer;
height:26px; height:26px;
margin:20px 4px 0 4px;
padding:0 8px; padding:0 8px;
text-align:center; text-align:center;
} }
button:hover, .button:hover,
button:focus, .button:focus {
background:#8a8f7a;
border:1px solid #666d51;
color:#f6faea;
text-decoration:none;
}
.button {
line-height:26px;
}
#main .manage {
float:right;
overflow:hidden;
margin:4px 0 4px 4px;
}
.manage a.button {
float:right;
}
.buttonFocus {color:#f6faea; border:1px solid #666d51; background:#8a8f7a;}
#permalink{ #permalink{

View File

@@ -1,49 +1,43 @@
<%@ Page Language="C#" Inherits="Orchard.Mvc.ViewPage<Orchard.CmsPages.ViewModels.PageEditViewModel>" %> <%@ Page Language="C#" Inherits="Orchard.Mvc.ViewPage<Orchard.CmsPages.ViewModels.PageEditViewModel>" %>
<%@ Import Namespace="Orchard.CmsPages.Models"%> <%@ Import Namespace="Orchard.CmsPages.Models" %>
<%@ Import Namespace="Orchard.Mvc.Html" %> <%@ Import Namespace="Orchard.Mvc.Html" %>
<% Html.Include("Head"); %> <% Html.Include("Head"); %>
<h2><%=_Encoded("Edit Page")%></h2> <h2><%=_Encoded("Edit Page") %></h2>
<p class="bottomSpacer"><%=_Encoded("about setting up a page")%></p> <p class="bottomSpacer"><%=_Encoded("about setting up a page") %></p>
<%=Html.ValidationSummary() %> <%=Html.ValidationSummary() %>
<div class="sections"> <div class="sections">
<%using (Html.BeginForm()) {%> <%using (Html.BeginForm()) { %>
<div class="primary"> <div class="primary">
<h3><%=_Encoded("Page Content") %></h3> <h3><%=_Encoded("Page Content") %></h3>
<%-- todo: (heskew) change the editors to be self-contained (fieldset > editor) --%> <%-- todo: (heskew) change the editors to be self-contained (fieldset > editor) --%>
<ol> <%=Html.EditorFor(m => m.Revision.Title, "inputTextLarge") %>
<%=Html.EditorFor(m => m.Revision.Title, "inputTextLarge")%> <%=Html.EditorFor(m => m.Revision.Slug, "inputTextPermalink") %>
<%=Html.EditorFor(m => m.Revision.Slug, "inputTextPermalink")%> <% foreach (ContentItem content in Model.Revision.Contents) {
%><fieldset>
<%foreach (ContentItem content in Model.Revision.Contents) {%> <label for="<%="Revision.Contents[" + content.ZoneName + "].Content" %>"><%=_Encoded("Zone Name") %>: <%= content.ZoneName %></label>
<label for="<%="Revision.Contents[" + content.ZoneName + "].Content" %>"> <% if (Model.Template != null && Model.Template.Zones.Contains(content.ZoneName) == false) {
<%=_Encoded("Zone Name")%>: <%= content.ZoneName %></label> %><span class="warning">These contents are assigned to a zone that does not exist in the current template. Please delete it or copy it to another zone.</span><%
<%if (Model.Template != null && Model.Template.Zones.Contains(content.ZoneName) == false) {%> } %>
<div class="warning">These contents are assigned to a zone that does not exist in the current template. Please delete it or copy it to another zone.</div>
<%}%>
<%= Html.TextArea("Revision.Contents[" + content.ZoneName + "].Content", content.Content) %> <%= Html.TextArea("Revision.Contents[" + content.ZoneName + "].Content", content.Content) %>
</li> </fieldset><%
<%}%> } %>
<li> <fieldset>
<%--<%=Html.LabelFor(m=>m.Revision.TemplateName) %> <p><strong>Current layout:</strong>
<%=Html.DisplayFor(m=>m.Revision.TemplateName)%>--%> <%=Html.Encode(Model.Revision.TemplateName) %>
<p> <%=Html.ActionLink("Change Template", "ChooseTemplate", new { Model.Revision.Page.Id }, new { @class = "linkButton" }) %>
<strong>Current layout:</strong>
<%=Html.Encode(Model.Revision.TemplateName)%>
<%=Html.ActionLink("Change Template", "ChooseTemplate", new { Model.Revision.Page.Id }, new { @class = "linkButton" })%>
</p> </p>
</li> </fieldset>
</ol>
</div> </div>
<div class="secondary"> <div class="secondary">
<h3><%=_Encoded("Publish Settings")%></h3> <h3><%=_Encoded("Publish Settings") %></h3>
<fieldset> <fieldset>
<ol class="formList"> <ol class="formList">
<li><label for="Command_PublishNow"><%=Html.RadioButton("Command", "PublishNow", new { id = "Command_PublishNow" })%> Publish Now</label></li> <li><label for="Command_PublishNow"><%=Html.RadioButton("Command", "PublishNow", new { id = "Command_PublishNow" }) %> Publish Now</label></li>
<li> <li>
<label for="Command_PublishLater"><%=Html.RadioButton("Command", "PublishLater", new { id = "Command_PublishLater" })%> Publish Later</label> <label for="Command_PublishLater"><%=Html.RadioButton("Command", "PublishLater", new { id = "Command_PublishLater" }) %> Publish Later</label>
<%=Html.EditorFor(m => m.PublishLaterDate)%> <%=Html.EditorFor(m => m.PublishLaterDate) %>
</li> </li>
<li><label for="Command_SaveDraft"><%=Html.RadioButton("Command", "SaveDraft", new { id = "Command_SaveDraft" })%> Save Draft</label></li> <li><label for="Command_SaveDraft"><%=Html.RadioButton("Command", "SaveDraft", new { id = "Command_SaveDraft" }) %> Save Draft</label></li>
<li> <li>
<input class="button" type="submit" name="submit.Save" value="Save"/> <input class="button" type="submit" name="submit.Save" value="Save"/>
<input class="button" type="submit" name="submit.DeleteDraft" value="Delete Draft" <%=Model.CanDeleteDraft ? "" : "disabled" %>/> <input class="button" type="submit" name="submit.DeleteDraft" value="Delete Draft" <%=Model.CanDeleteDraft ? "" : "disabled" %>/>

View File

@@ -1,6 +1,6 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %> <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<li> <fieldset>
<%=Html.LabelForModel() %> <%=Html.LabelForModel() %>
<%=Html.TextBox("",Model,new{@class="text large"}) %> <%=Html.TextBox("", Model, new { @class = "text large" } ) %>
<%=Html.ValidationMessage("","*")%> <%=Html.ValidationMessage("", "*") %>
</li> </fieldset>

View File

@@ -1,13 +1,5 @@
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<fieldset>
<li> <label class="sub" for="permalink">Permalink: <span>http://localhost/</span></label>
<label class="floatLeft" for="permalink"> <span><%=Html.TextBox("", Model, new { id = "permalink", @class = "text" })%> <span class="helperText smallText clearLayout"> &laquo; How to write a permalink. &raquo; </span></span>
Permalink: </fieldset>
<span>http://localhost/</span>
</label>
<span class="floatLeft">
<%--<input id="permalink" class="inputText floatLeft roundCorners" type="text" name="permalink"/>--%>
<%=Html.TextBox("", Model, new { @class = "text" })%> <span class="helperText smallText clearLayout"> &laquo; How to write a permalink. &raquo; </span>
</span>
</li>
<div class="clearLayout" />

View File

@@ -2,125 +2,99 @@
<%@ Import Namespace="Orchard.Utility"%> <%@ Import Namespace="Orchard.Utility"%>
<%@ Import Namespace="Orchard.CmsPages.ViewModels"%> <%@ Import Namespace="Orchard.CmsPages.ViewModels"%>
<%@ Import Namespace="Orchard.Mvc.Html" %> <%@ Import Namespace="Orchard.Mvc.Html" %>
<%-- todo: (heskew) not this --%> <%-- todo: (heskew) localize --%>
<script runat="server">
public string DefaultText(string valueText, string defaultText)
{
if (string.IsNullOrEmpty(valueText))
return defaultText;
return valueText;
}
string SplitDateTime(DateTime dt)
{
return string.Format("{0:d}", dt) + "<br />" +
string.Format("{0:t}", dt);
}
</script>
<% Html.Include("Head"); %> <% Html.Include("Head"); %>
<% Html.BeginForm(); %> <h2>Manage Pages</h2>
<div class="yui-g"> <p>Possible text about setting up a page goes here. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla erat turpis, blandit eget feugiat nec, tempus vel quam. Mauris et neque eget justo suscipit blandit.</p>
<h2>Manage Pages</h2> <% using (Html.BeginForm()) { %>
<p class="bottomSpacer">
Possible text about setting up a page goes here. Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nulla erat turpis, blandit eget feugiat nec, tempus vel quam. Mauris
et neque eget justo suscipit blandit.</p>
<%=Html.ValidationSummary() %> <%=Html.ValidationSummary() %>
<ol class="horizontal actions floatLeft"> <fieldset class="actions bulk">
<li> <label for="publishActions">Actions: </label>
<label class="floatLeft" for="publishActions"> <select id="publishActions" name="<%=Html.NameOf(m => m.Options.BulkAction) %>">
Actions: </label> <%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.None, "Choose action...") %>
<select id="publishActions" name="<%=Html.NameOf(m => m.Options.BulkAction)%>"> <%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.PublishNow, "Publish Now") %>
<%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.None, "Choose action...")%> <%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.PublishLater, "Publish Later") %>
<%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.PublishNow, "Publish Now")%> <%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.Unpublish, "Unpublish") %>
<%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.PublishLater, "Publish Later")%> <%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.Delete, "Delete") %>
<%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.Unpublish, "Unpublish")%> </select>
<%=Html.SelectOption(Model.Options.BulkAction, PageIndexBulkAction.Delete, "Delete")%> <input class="button" type="submit" name="submit.BulkEdit" value="Apply" />
</select> </fieldset>
</li> <fieldset class="actions bulk">
<li> <label for="filterResults">Filter: </label>
<input class="button roundCorners" type="submit" name="submit.BulkEdit" value="Apply" /> <select id="filterResults" name="<%=Html.NameOf(m => m.Options.Filter) %>">
</li> <%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.All, "All Pages") %>
</ol> <%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.Published, "Published Pages") %>
<ol class="horizontal actions"> <%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.Offline, "Offline Pages") %>
<li> <%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.Scheduled, "Publish Pending") %>
<label class="floatLeft" for="filterResults"> </select>
</label> <input class="button" type="submit" name="submit.Filter" value="Apply"/>
<select id="filterResults" name="<%=Html.NameOf(m => m.Options.Filter)%>"> </fieldset>
<%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.All, "All Pages")%> <p class="manage"><%=Html.ActionLink("Add a page", "Create", new {}, new { @class = "button" }) %></p>
<%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.Published, "Published Pages")%> <fieldset>
<%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.Offline, "Offline Pages")%> <table summary="This is a table of the PageEntries currently available for use in your application.">
<%=Html.SelectOption(Model.Options.Filter, PageIndexFilter.Scheduled, "Publish Pending")%> <colgroup>
</select> <col id="Actions" />
</li> <col id="Status" />
<li> <col id="Title" />
<input class="button roundCorners" type="submit" name="submit.Filter" value="Filter"/> <col id="Author" />
</li> <col id="LastUpdated" />
</ol> <col id="Draft" />
<p><%=Html.ActionLink("Add a page", "Create", new {}, new {@class="floatRight topSpacer"}) %></p> <col id="Timer" />
<table id="pluginListTable" cellspacing="0" class="clearLayout" summary="This is a table of the PageEntries currently available for use in your application."> <col id="Edit" />
<colgroup> </colgroup>
<col id="Actions" /> <thead>
<col id="Status" /> <tr>
<col id="Title" /> <th scope="col">&nbsp;&darr;<%-- todo: (heskew) something more appropriate for "this applies to the bulk actions --%></th>
<col id="Author" /> <th scope="col">Status</th>
<col id="LastUpdated" /> <th scope="col">Title</th>
<col id="Draft" /> <th scope="col">Slug</th>
<col id="Timer" /> <th scope="col">Author</th>
<col id="Edit" /> <th scope="col">Last Updated</th>
</colgroup> <th scope="col">Draft</th>
<thead> <th scope="col">Scheduled</th>
<tr> <th scope="col"></th>
<th scope="col"><%--<input type="checkbox" value="1" name="<%=Html.NameOf(m => m.Options.BulkChecked)%>"/>--%></th> </tr>
<th scope="col">Status</th> </thead>
<th scope="col">Title</th> <%
<th scope="col">Slug</th> int pageIndex = 0;
<th scope="col">Author</th> foreach (var pageEntry in Model.PageEntries)
<th scope="col">Last Updated</th> {
<th scope="col">Draft</th> var revision = pageEntry.Page.Revisions.LastOrDefault();
<th scope="col">Scheduled</th>
<th scope="col"></th> if (revision == null) continue;
%><tr>
<td>
<input type="hidden" value="<%=Model.PageEntries[pageIndex].PageId %>" name="<%=Html.NameOf(m => m.PageEntries[pageIndex].PageId) %>"/>
<input type="checkbox" value="true" name="<%=Html.NameOf(m => m.PageEntries[pageIndex].IsChecked) %>"/>
</td>
<td>
<% if (pageEntry.IsPublished) {
%><img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/online.gif") %>" alt="Online" title="The page is currently online" />
<% } else {
%><img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/offline.gif") %>" alt="Offline" title="The page is currently offline" />
<% } %>
</td>
<td><%=Html.ActionLink(revision.Title ?? "(no title)", "Show", new { Controller = "Templates", revision.Slug }) %></td>
<td><%=Html.ActionLink(revision.Slug ?? "(no slug)", "Show", new { Controller = "Templates", revision.Slug }) %></td>
<td>By Unk</td>
<td><%=string.Format("{0:d}<br />{0:t}", revision.ModifiedDate) %></td>
<td>
<% if (pageEntry.HasDraft) {
%><img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/draft.gif") %>" alt="Draft" title="The page has a draft" />
<% }
if (revision.Page.Scheduled.Any()) {
%><img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/scheduled.gif") %>" alt="Scheduled" title="The draft is scheduled for publishing" />
<% } %>
</td>
<td><%=revision.Page.Scheduled.Any() ? string.Format("{0:d}<br />{0:t}", revision.Page.Scheduled.First().ScheduledDate.Value) : "" %></td>
<td><%=Html.ActionLink("Edit", "Edit", new { revision.Page.Id }) %></td>
</tr> </tr>
</thead> <%
<% pageIndex++;
int pageIndex = 0;
foreach (var pageEntry in Model.PageEntries) {
var revision = pageEntry.Page.Revisions.LastOrDefault();
if (revision == null)
continue;
%>
<tr>
<td>
<input type="hidden" value="<%=Model.PageEntries[pageIndex].PageId %>" name="<%=Html.NameOf(m => m.PageEntries[pageIndex].PageId)%>"/>
<input type="checkbox" value="true" name="<%=Html.NameOf(m => m.PageEntries[pageIndex].IsChecked)%>"/>
</td>
<td>
<% if (pageEntry.IsPublished) { %>
<img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/online.gif")%>" alt="Online" title="The page is currently online" />
<% } else { %>
<img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/offline.gif")%>" alt="Offline" title="The page is currently offline" />
<% } %>
</td>
<td><%=Html.ActionLink(DefaultText(revision.Title, "(no title)"), "Show", new { Controller = "Templates", revision.Slug })%></td>
<td><%=Html.ActionLink(DefaultText(revision.Slug, "(no slug)"), "Show", new { Controller = "Templates", revision.Slug })%></td>
<td>By Unk</td>
<td><%=string.Format("{0:d}", revision.ModifiedDate) %><br /><%=string.Format("{0:t}", revision.ModifiedDate) %></td>
<td>
<% if (pageEntry.HasDraft) { %>
<img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/draft.gif")%>" alt="Draft" title="The page has a draft" />
<% } %>
<% if (revision.Page.Scheduled.Any()) { %>
<img src="<%=ResolveUrl("~/Packages/Orchard.CmsPages/Content/Admin/images/scheduled.gif")%>" alt="Scheduled" title="The draft is scheduled for publishing" />
<% } %>
</td>
<td>
<%=revision.Page.Scheduled.Any() ? SplitDateTime(revision.Page.Scheduled.First().ScheduledDate.Value) : ""%>
</td>
<td><%=Html.ActionLink("Edit", "Edit", new { revision.Page.Id })%></td>
</tr>
<% pageIndex++;
}%> }%>
</table> </table>
<p><%=Html.ActionLink("Add a page", "Create", new {}, new {@class="floatRight bottomSpacer"}) %></p> </fieldset>
</div> <p class="manage"><%=Html.ActionLink("Add a page", "Create", new {}, new { @class = "button"}) %></p>
<% Html.EndForm(); %> <% } %>
<% Html.Include("Foot"); %> <% Html.Include("Foot"); %>