#20089 : Content picker does not persist unpublished items.

Work Item: 20089
This commit is contained in:
Jason Burgard
2015-02-14 16:35:02 +00:00
committed by agriffard
parent 952caca41f
commit 970d0274a6
4 changed files with 30 additions and 10 deletions

View File

@@ -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));
});

View File

@@ -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>&nbsp;</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>&nbsp;</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);

View File

@@ -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>&nbsp;</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>

View File

@@ -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>