Migrating Localization

--HG--
branch : theming
This commit is contained in:
Sebastien Ros
2010-09-13 15:30:00 -07:00
parent 5e53b4dd46
commit 008155cb1f
15 changed files with 97 additions and 86 deletions

View File

@@ -71,7 +71,7 @@ namespace Orchard.Core.Localization.Controllers {
};
Services.TransactionManager.Cancel();
return View(Shape.Model(model));
return View(model);
}
[HttpPost, ActionName("Translate")]
@@ -111,7 +111,7 @@ namespace Orchard.Core.Localization.Controllers {
model.SiteCultures = _cultureManager.ListCultures().Where(s => s != _localizationService.GetContentCulture(contentItem) && s != _cultureManager.GetSiteCulture());
contentItem.As<LocalizationPart>().Culture.Culture = null;
model.Content = _contentManager.BuildEditorModel(contentItem);
return View(Shape.Model(model));
return View(model);
}
Services.Notifier.Information(T("Created content item translation."));

View File

@@ -1,12 +1,12 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<AddLocalizationViewModel>" %>
<%@ Import Namespace="Orchard.Core.Localization.ViewModels" %><%
Model.Content.Zones.AddRenderPartial("primary:before", "CultureSelection", Model); %>
<h1><%:Html.TitleForPage(T("Translate Content").ToString()) %></h1>
<% using (Html.BeginFormAntiForgeryPost()) { %>
<%:Html.ValidationSummary() %>
<%:Html.EditorForItem(m=>m.Content) %>
<%} %>
<% using (this.Capture("end-of-page-scripts")) { %>
@model AddLocalizationViewModel
@using Orchard.Core.Localization.ViewModels
Model.Content.Zones.AddRenderPartial("primary:before", "CultureSelection", Model);
<h1>@Html.TitleForPage(T("Translate Content").ToString())</h1>
@using (Html.BeginFormAntiForgeryPost()) {
@Html.ValidationSummary()
@Html.EditorForItem(m=>m.Content)
}
@using (Html.RenderFootContent() ) {
<script type="text/javascript">
(function ($) {
// grab the slug input
@@ -25,5 +25,6 @@ Model.Content.Zones.AddRenderPartial("primary:before", "CultureSelection", Model
}
});
}
})(jQuery);</script>
<% } %>
})(jQuery);
</script>
}

View File

@@ -1,9 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Localization.ViewModels.AddLocalizationViewModel>" %>
<fieldset class="localization culture-selection">
<label for="SelectedCulture"><%:T("Content Localization") %></label><%
var siteCultures = Model.SiteCultures.ToList();
siteCultures.Insert(0, ""); %>
<div><%=T("This is the <em>{0}</em> variation of {1}.",
Html.DropDownList("SelectedCulture", new SelectList(siteCultures, Model.SelectedCulture)),
Html.ItemEditLink(Model.Content.Item)) %></div>
</fieldset>

View File

@@ -0,0 +1,13 @@
@model Orchard.Core.Localization.ViewModels.AddLocalizationViewModel
<fieldset class="localization culture-selection">
<label for="SelectedCulture">@T("Content Localization")</label>
@{
var siteCultures = Model.SiteCultures.ToList();
siteCultures.Insert(0, "");
}
<div>
@T("This is the <em>{0}</em> variation of {1}.",
Html.DropDownList("SelectedCulture", new SelectList(siteCultures, Model.SelectedCulture)),
Html.ItemEditLink(Model.Content.Item))
</div>
</fieldset>

View File

@@ -1 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Localization.ViewModels.ContentLocalizationsViewModel>" %>

View File

@@ -0,0 +1 @@
@model Orchard.Core.Localization.ViewModels.ContentLocalizationsViewModel

View File

@@ -1,10 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Localization.ViewModels.ContentLocalizationsViewModel>" %>
<%
Html.RegisterStyle("admin.css"); %>
<div class="content-localization"><%
if (Model.Localizations.Count() > 0) { %>
<%--//todo: need this info in the view model--%>
<div class="content-localizations"><h4><%:T("Translations:") %></h4><%:Html.UnorderedList(Model.Localizations, (c, i) => Html.ItemEditLink(c.Culture.Culture, c), "localizations") %></div><%
} %>
<div class="add-localization"><%:Html.ActionLink(T("+ New translation").Text, "translate", "admin", new { area = "Localization", id = Model.MasterId }, null)%></div>
</div>

View File

@@ -0,0 +1,9 @@
@model Orchard.Core.Localization.ViewModels.ContentLocalizationsViewModel
@Html.RegisterStyle("admin.css");
<div class="content-localization">
@if (Model.Localizations.Count() > 0) {
//todo: need this info in the view model
<div class="content-localizations"><h4>@T("Translations:")</h4>@Html.UnorderedList(Model.Localizations, (c, i) => Html.ItemEditLink(c.Culture.Culture, c), "localizations")</div>
}
<div class="add-localization">@Html.ActionLink(T("+ New translation").Text, "translate", "admin", new { area = "Localization", id = Model.MasterId }, null)</div>
</div>

View File

@@ -1,11 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Localization.ViewModels.ContentLocalizationsViewModel>" %>
<%
Html.RegisterStyle("base.css");
if (Model.Localizations.Count() > 0) { %>
<div class="content-localization">
<div class="content-localizations">
<h4><%:T("Translations:") %></h4>
<%:Html.UnorderedList(Model.Localizations, (c, i) => Html.ItemDisplayLink(c.Culture.Culture, c), "localizations") %>
</div>
</div><%
} %>

View File

@@ -0,0 +1,10 @@
@model Orchard.Core.Localization.ViewModels.ContentLocalizationsViewModel
@Html.RegisterStyle("base.css");
@if (Model.Localizations.Count() > 0) {
<div class="content-localization">
<div class="content-localizations">
<h4>@T("Translations:")</h4>
@Html.UnorderedList(Model.Localizations, (c, i) => Html.ItemDisplayLink(c.Culture.Culture, c), "localizations")
</div>
</div>
}

View File

@@ -1,23 +0,0 @@
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<Orchard.Core.Localization.ViewModels.EditLocalizationViewModel>" %>
<%
Html.RegisterStyle("admin.css");
if (Model.ContentItem.ContentItem.Id > 0 && Model.SelectedCulture != null && Model.ContentLocalizations.Localizations.Count() > 0) {
Html.RegisterStyle("base.css");%>
<fieldset class="localization culture-selection">
<fieldset class="culture-selected">
<label for="SelectedCulture"><%:T("Content Localization")%></label>
<div><%=T("This is the <em>{0}</em> variation of {1}.",
Html.Encode(Model.SelectedCulture),
Html.ItemEditLink(Model.MasterContentItem ?? Model.ContentItem))%></div>
<%:Html.Hidden("SelectedCulture", Model.SelectedCulture)%>
</fieldset><%
if (Model.ContentLocalizations.Localizations.Count() > 0) {%>
<dl class="content-localization">
<dt><%:T("Other translations:")%></dt>
<dd class="content-localizations">
<%:Html.UnorderedList(Model.ContentLocalizations.Localizations, (c, i) => Html.ItemEditLink(c.Culture.Culture, c), "localizations")%>
</dd>
</dl><%
}%>
</fieldset><%
} %>

View File

@@ -0,0 +1,21 @@
@model Orchard.Core.Localization.ViewModels.EditLocalizationViewModel
@Html.RegisterStyle("admin.css");
@if (Model.ContentItem.ContentItem.Id > 0 && Model.SelectedCulture != null && Model.ContentLocalizations.Localizations.Count() > 0) {
Html.RegisterStyle("base.css");
<fieldset class="localization culture-selection">
<fieldset class="culture-selected">
<label for="SelectedCulture">@T("Content Localization")</label>
<div>@T("This is the <em>{0}</em> variation of {1}.",
Html.Encode(Model.SelectedCulture),
Html.ItemEditLink(Model.MasterContentItem ?? Model.ContentItem))</div>
@Html.Hidden("SelectedCulture", Model.SelectedCulture)
</fieldset>
@if (Model.ContentLocalizations.Localizations.Count() > 0) {
<dl class="content-localization">
<dt>@T("Other translations:")</dt>
<dd class="content-localizations">
@Html.UnorderedList(Model.ContentLocalizations.Localizations, (c, i) => Html.ItemEditLink(c.Culture.Culture, c), "localizations")
</dd>
</dl>
}
</fieldset>}

View File

@@ -249,11 +249,11 @@
<None Include="Common\Views\DisplayTemplates\Parts\Common.Metadata.SummaryAdmin.cshtml" />
<Content Include="ContentsLocation\Module.txt" />
<Content Include="ContentsLocation\Styles\admin.css" />
<Content Include="ContentsLocation\Views\DefinitionTemplates\LocationSettings.ascx" />
<None Include="ContentsLocation\Views\DefinitionTemplates\LocationSettings.cshtml" />
<None Include="Contents\Views\Admin\Create.cshtml" />
<None Include="Contents\Views\Admin\Edit.cshtml" />
<None Include="Contents\Views\Admin\List.cshtml" />
<Content Include="Localization\Views\EditorTemplates\Parts\Localization.Translation.ascx" />
<None Include="Localization\Views\EditorTemplates\Parts\Localization.Translation.cshtml" />
<Content Include="Messaging\Module.txt" />
<Content Include="Messaging\Views\EditorTemplates\Parts\Messaging.MessageSettings.ascx" />
<Content Include="PublishLater\Content\Admin\images\draft.gif" />
@@ -270,8 +270,8 @@
<Content Include="Contents\Views\Admin\CreatableTypeList.ascx" />
<Content Include="Localization\Styles\admin.css" />
<Content Include="Localization\Styles\base.css" />
<Content Include="Localization\Views\DisplayTemplates\Parts\Localization.ContentTranslations.Summary.ascx" />
<Content Include="Localization\Views\DisplayTemplates\Parts\Localization.ContentTranslations.ascx" />
<None Include="Localization\Views\DisplayTemplates\Parts\Localization.ContentTranslations.Summary.cshtml" />
<None Include="Localization\Views\DisplayTemplates\Parts\Localization.ContentTranslations.cshtml" />
<Content Include="PublishLater\Module.txt" />
<Content Include="PublishLater\Scripts\jquery.ui.core.js" />
<Content Include="PublishLater\Scripts\jquery.ui.datepicker.js" />
@@ -301,9 +301,9 @@
<None Include="Reports\Views\Admin\Display.cshtml" />
<None Include="Reports\Views\Admin\Index.cshtml" />
<Content Include="Localization\Module.txt" />
<Content Include="Localization\Views\Admin\Translate.ascx" />
<Content Include="Localization\Views\DisplayTemplates\Parts\Localization.ContentTranslations.SummaryAdmin.ascx" />
<Content Include="Localization\Views\CultureSelection.ascx" />
<None Include="Localization\Views\Admin\Translate.cshtml" />
<None Include="Localization\Views\DisplayTemplates\Parts\Localization.ContentTranslations.SummaryAdmin.cshtml" />
<None Include="Localization\Views\CultureSelection.cshtml" />
<Content Include="Routable\Module.txt" />
<Content Include="Routable\Scripts\jquery.slugify.js" />
<None Include="Routable\Views\EditorTemplates\Parts\Routable.RoutePart.cshtml" />

View File

@@ -1,6 +1,5 @@
@model Orchard.Core.Routable.ViewModels.RoutableEditorViewModel
@using Orchard.Utility.Extensions
@using Orchard.Mvc.Spooling
<fieldset>
@Html.LabelFor(m => m.Title)
@@ -13,11 +12,8 @@
<label for="@ViewData.TemplateInfo.GetFullHtmlFieldId("PromoteToHomePage")" class="forcheckbox">@T("Set as home page")</label>
</fieldset>
@{
Html.RegisterFootScript("jquery.slugify.js");
OutputStack.Push(new HtmlStringWriter());
try {
@Html.RegisterFootScript("jquery.slugify.js");
@using(Html.RenderFootContent()){
<script type="text/javascript">
$(function(){
//pull slug input from tab order
@@ -35,9 +31,4 @@
})
})
</script>
}
finally {
var script = OutputStack.Pop();
WorkContext.Page.Tail.Add(script);
}
}
}

View File

@@ -8,6 +8,7 @@ using System.Web.Mvc.Html;
using System.Web.Routing;
using Orchard.Collections;
using Orchard.Localization;
using Orchard.Mvc.Spooling;
using Orchard.Services;
using Orchard.Settings;
using Orchard.Utility;
@@ -16,6 +17,24 @@ using System.Web;
namespace Orchard.Mvc.Html {
public static class HtmlHelperExtensions {
private class FootContentRenderer : IDisposable {
readonly dynamic _model;
public FootContentRenderer(HtmlHelper html) {
_model = html.ViewDataContainer;
_model.OutputStack.Push(new HtmlStringWriter());
}
public void Dispose() {
var script = _model.OutputStack.Pop();
_model.WorkContext.Page.Tail.Add(script);
}
}
public static IDisposable RenderFootContent(this HtmlHelper html) {
return new FootContentRenderer(html);
}
public static string NameOf<T>(this HtmlHelper<T> html, Expression<Action<T>> expression) {
return Reflect.NameOf(html.ViewData.Model, expression);
}