mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
#20089 : Content picker does not persist unpublished items.
Work Item: 20089
This commit is contained in:
@@ -30,8 +30,12 @@ namespace Orchard.ContentPicker.Drivers {
|
||||
protected override DriverResult Display(ContentPart part, Fields.ContentPickerField field, string displayType, dynamic shapeHelper) {
|
||||
return Combined(
|
||||
ContentShape("Fields_ContentPicker", GetDifferentiator(field, part), () => shapeHelper.Fields_ContentPicker()),
|
||||
ContentShape("Fields_ContentPicker_SummaryAdmin", GetDifferentiator(field, part), () => shapeHelper.Fields_ContentPicker_SummaryAdmin())
|
||||
);
|
||||
ContentShape("Fields_ContentPicker_SummaryAdmin", GetDifferentiator(field, part), () => {
|
||||
var unpublishedIds = field.Ids.Except(field.ContentItems.Select(x => x.Id));
|
||||
var unpublishedContentItems = _contentManager.GetMany<ContentItem>(unpublishedIds, VersionOptions.Latest, QueryHints.Empty).ToList();
|
||||
|
||||
return shapeHelper.Fields_ContentPicker_SummaryAdmin(UnpublishedContentItems: unpublishedContentItems);
|
||||
}));
|
||||
}
|
||||
|
||||
protected override DriverResult Editor(ContentPart part, Fields.ContentPickerField field, dynamic shapeHelper) {
|
||||
@@ -40,10 +44,10 @@ namespace Orchard.ContentPicker.Drivers {
|
||||
var model = new ContentPickerFieldViewModel {
|
||||
Field = field,
|
||||
Part = part,
|
||||
ContentItems = _contentManager.GetMany<ContentItem>(field.Ids, VersionOptions.Published, QueryHints.Empty).ToList(),
|
||||
ContentItems = _contentManager.GetMany<ContentItem>(field.Ids, VersionOptions.Latest, QueryHints.Empty).ToList()
|
||||
};
|
||||
|
||||
model.SelectedIds = string.Concat(",", field.Ids);
|
||||
model.SelectedIds = string.Join(",", field.Ids);
|
||||
|
||||
return shapeHelper.EditorTemplate(TemplateName: "Fields/ContentPicker.Edit", Model: model, Prefix: GetPrefix(field, part));
|
||||
});
|
||||
|
@@ -48,7 +48,8 @@
|
||||
var multiple = $(self).data("multiple");
|
||||
var addButton = $(self).find(".button.add");
|
||||
var removeText = $(self).data("remove-text");
|
||||
var template = '<tr><td> </td><td><span data-id="{contentItemId}" data-fieldid="@idsFieldId" class="content-picker-item">{edit-link}</span></td><td><span data-id="{contentItemId}" class="content-picker-remove button grey">' + removeText + '</span></td></tr>';
|
||||
var notPublishedText = $(self).data("not-published-text");
|
||||
var template = '<tr><td> </td><td><span data-id="{contentItemId}" data-fieldid="@idsFieldId" class="content-picker-item">{edit-link}{status-text}</span></td><td><span data-id="{contentItemId}" class="content-picker-remove button grey">' + removeText + '</span></td></tr>';
|
||||
var selectedItemsFieldname = $(self).data("selected-items-fieldname");
|
||||
var baseUrl = $(self).data("base-url");
|
||||
var partName = $(self).data("part-name");
|
||||
@@ -78,7 +79,9 @@
|
||||
addButton.click(function() {
|
||||
addButton.trigger("orchard-admin-contentpicker-open", {
|
||||
callback: function(data) {
|
||||
var tmpl = template.replace( /\{contentItemId\}/g , data.id).replace( /\{edit-link\}/g , data.editLink);
|
||||
var tmpl = template.replace( /\{contentItemId\}/g , data.id)
|
||||
.replace( /\{edit-link\}/g , data.editLink)
|
||||
.replace( /\{status-text}/g , data.published? "" : " - " + notPublishedText);
|
||||
var content = $(tmpl);
|
||||
$(self).find('table.content-picker tbody').append(content);
|
||||
|
||||
|
@@ -24,7 +24,8 @@
|
||||
data-base-url="@baseUrl"
|
||||
data-part-name="@HttpUtility.JavaScriptStringEncode(partName)"
|
||||
data-field-name="@HttpUtility.JavaScriptStringEncode(fieldName)"
|
||||
data-remove-text="@T("Remove")">
|
||||
data-remove-text="@T("Remove")"
|
||||
data-not-published-text="@T("Not Published")">
|
||||
@if (!String.IsNullOrWhiteSpace(displayName)) {
|
||||
<label @if(required) { <text>class="required"</text> }>@displayName</label>
|
||||
}
|
||||
@@ -47,7 +48,7 @@
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
<span data-id="@contentItem.Id" data-fieldid="@idsFieldId" class="content-picker-item">@Html.ItemEditLink(contentItem)</span>
|
||||
<span data-id="@contentItem.Id" data-fieldid="@idsFieldId" class="content-picker-item">@Html.ItemEditLink(contentItem) @if(!contentItem.HasPublished()) {<text> - </text>@T("Not Published")}</span>
|
||||
</td>
|
||||
<td>
|
||||
<span data-id="@contentItem.Id" class="content-picker-remove button grey">@T("Remove")</span>
|
||||
|
@@ -1,10 +1,12 @@
|
||||
@using Orchard.ContentPicker.Fields
|
||||
@using Orchard.ContentManagement
|
||||
@using Orchard.ContentPicker.Fields
|
||||
@using Orchard.Utility.Extensions;
|
||||
|
||||
@{
|
||||
var field = (ContentPickerField) Model.ContentField;
|
||||
string name = field.DisplayName;
|
||||
var contentItems = field.ContentItems;
|
||||
var unpublishedContentItems = (IEnumerable<ContentItem>)Model.UnpublishedContentItems;
|
||||
}
|
||||
<p class="content-picker-field content-picker-field-@name.HtmlClassify()">
|
||||
<span class="name">@name:</span>
|
||||
@@ -17,7 +19,17 @@
|
||||
}
|
||||
}
|
||||
else {
|
||||
<span class="value">@T("No content items.")</span>
|
||||
<span class="value">@T("No published content items.")</span>
|
||||
}
|
||||
|
||||
@if (unpublishedContentItems.Any()) {
|
||||
<span>@T(" | ") @T("Not Published"):</span>
|
||||
foreach (var contentItem in unpublishedContentItems) {
|
||||
<span class="value">@Html.ItemEditLink(contentItem)</span>
|
||||
if (contentItem != unpublishedContentItems.Last()) {
|
||||
<span>,</span>
|
||||
}
|
||||
}
|
||||
}
|
||||
</p>
|
||||
|
||||
|
Reference in New Issue
Block a user