mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
More work on Localization and RTL
This commit is contained in:
@@ -40,8 +40,8 @@ namespace Orchard.Localization.Services {
|
||||
if (!IsActivable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (context.ShapeMetadata.Type != "Zone")
|
||||
|
||||
if (context.ShapeMetadata.Type != "EditorTemplate")
|
||||
return;
|
||||
|
||||
ContentItem contentItem = context.Shape.ContentItem;
|
||||
@@ -62,5 +62,7 @@ namespace Orchard.Localization.Services {
|
||||
_workContext.Layout.Content.Classes.Add(className);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -46,7 +46,7 @@
|
||||
contentZone.removeClass("content-" + oldClass);
|
||||
contentZone.addClass("content-" + optionDirectionality);
|
||||
|
||||
$(this).trigger("localization.ui.directionalitychanged");
|
||||
$(document).trigger("localization.ui.directionalitychanged", optionDirectionality);
|
||||
});
|
||||
})(jQuery);
|
||||
//]]>
|
||||
|
@@ -12,25 +12,60 @@
|
||||
<label for="SelectedCulture">@T("Content Localization")</label>
|
||||
<div>
|
||||
@T("This is the <em>{0}</em> variation of the content",
|
||||
BuildSelectedCultureList(Html.FieldIdFor(m => m.SelectedCulture), siteCultures, Model.SelectedCulture))
|
||||
BuildSelectedCultureList(
|
||||
Html.FieldIdFor(m => m.SelectedCulture),
|
||||
Html.FieldNameFor(m => m.SelectedCulture),
|
||||
siteCultures,
|
||||
Model.SelectedCulture))
|
||||
</div>
|
||||
</fieldset>
|
||||
}
|
||||
|
||||
@if (Model.ContentItem.ContentItem.Id > 0 && Model.SelectedCulture != null && Model.ContentLocalizations.Localizations.Count() == 0) {
|
||||
<fieldset class="culture-selected">
|
||||
<label for="SelectedCulture">@T("Content Localization")</label>
|
||||
<div>
|
||||
@T("This is the <em>{0}</em> variation of content.",
|
||||
Html.Encode(Model.SelectedCulture))
|
||||
</div>
|
||||
@Html.Hidden("SelectedCulture", Model.SelectedCulture)
|
||||
</fieldset>
|
||||
}
|
||||
|
||||
@if (Model.ContentItem.ContentItem.Id > 0 && Model.SelectedCulture != null && Model.ContentLocalizations.Localizations.Count() > 0) {
|
||||
<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>
|
||||
}
|
||||
}
|
||||
|
||||
@if (Model.SelectedCulture != null && !siteCultures.All(c => c == Model.SelectedCulture || Model.ContentLocalizations.Localizations.Any(l => c == l.Culture.Culture))) {
|
||||
<div class="add-localization">@Html.ActionLink(T("+ New translation").Text, "Translate", "Admin", new { area = "Orchard.Localization", id = Model.ContentItem.Id }, null)</div>
|
||||
}
|
||||
</fieldset>
|
||||
@functions{
|
||||
private string BuildSelectedCultureList(string name, IEnumerable<string> siteCultures, string culture) {
|
||||
private string BuildSelectedCultureList(string id, string name, IEnumerable<string> siteCultures, string culture) {
|
||||
TagBuilder selectTag = new TagBuilder("select");
|
||||
selectTag.Attributes["id"] = name;
|
||||
selectTag.Attributes["id"] = id;
|
||||
selectTag.Attributes["name"] = name;
|
||||
|
||||
foreach (var siteCulture in siteCultures) {
|
||||
TagBuilder optionTag = new TagBuilder("option");
|
||||
optionTag.Attributes["data-content-dir"] = CultureInfo.GetCultureInfo(siteCulture).TextInfo.IsRightToLeft ? "rtl" : "ltr";
|
||||
optionTag.Attributes["value"] = siteCulture;
|
||||
//optionTag.Attributes["value"] = siteCulture;
|
||||
optionTag.SetInnerText(siteCulture);
|
||||
selectTag.InnerHtml += optionTag.ToString();
|
||||
}
|
||||
@@ -56,7 +91,7 @@
|
||||
contentZone.removeClass("content-" + oldClass);
|
||||
contentZone.addClass("content-" + optionDirectionality);
|
||||
|
||||
$(this).trigger("localization.ui.directionalitychanged");
|
||||
$(document).trigger("localization.ui.directionalitychanged", optionDirectionality);
|
||||
});
|
||||
})(jQuery);
|
||||
//]]>
|
||||
|
@@ -22,5 +22,11 @@ tinyMCE.init({
|
||||
statusbar: false,
|
||||
skin: 'orchardlightgray',
|
||||
language: language,
|
||||
directionality: directionality
|
||||
directionality: directionality,
|
||||
|
||||
setup: function (ed) {
|
||||
$(document).bind("localization.ui.directionalitychanged", function(event, directionality) {
|
||||
ed.getBody().dir = directionality;
|
||||
});
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user