package org.brixcms.plugin.content.blog.post.admin;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.datetime.markup.html.basic.DateLabel;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.brixcms.auth.Action.Context;
import org.brixcms.jcr.wrapper.BrixNode;
import org.brixcms.plugin.content.ContentPlugin;
import org.brixcms.plugin.content.blog.post.PostNode;
import org.brixcms.web.generic.BrixGenericPanel;
import org.brixcms.web.tab.BrixCardPanel;
import org.brixcms.web.tab.CachingAbstractTab;
import org.brixcms.web.tab.IBrixTab;
/**
* @author dan.simko@gmail.com
*/
@SuppressWarnings("serial")
public class PostViewTab extends BrixGenericPanel<PostNode> {
public PostViewTab(String id, final IModel<PostNode> model) {
super(id, new CompoundPropertyModel<>(model));
add(new Label("title"));
add(DateLabel.forDateStyle("created", "SM"));
add(DateLabel.forDateStyle("lastModified", "SM"));
add(DateLabel.forDateStyle("publish", "SM"));
add(new Label("createdBy"));
add(new Label("lastModifiedBy"));
add(new Label("visibility"));
add(new Label("state"));
add(new Label("featuredImageReference.nodeModel.object.name"));
List<IBrixTab> tabs = new ArrayList<IBrixTab>();
tabs.add(new CachingAbstractTab(new ResourceModel("content-plugin.htmlPreview")) {
@Override
public Panel newPanel(String panelId) {
return new HtmlPreviewPanel(panelId, model);
}
});
tabs.add(new CachingAbstractTab(new ResourceModel("content-plugin.visualPreview")) {
@Override
public Panel newPanel(String panelId) {
return new VisualPreviewPanel(panelId, model);
}
});
add(new BrixCardPanel("previewTabbedPanel", tabs));
add(new Link<Void>("edit") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
PostEditTab edit = new PostEditTab(PostViewTab.this.getId(), PostViewTab.this.getModel()) {
private static final long serialVersionUID = 1L;
@Override
void goBack() {
replaceWith(PostViewTab.this);
}
};
PostViewTab.this.replaceWith(edit);
}
@Override
public boolean isVisible() {
BrixNode node = PostViewTab.this.getModelObject();
return ContentPlugin.get().canEditNode(node, Context.ADMINISTRATION);
}
});
}
private class HtmlPreviewPanel extends Panel {
public HtmlPreviewPanel(String id, IModel<PostNode> model) {
super(id, new CompoundPropertyModel<PostNode>(model));
add(new Label("dataAsString"));
}
}
private class VisualPreviewPanel extends Panel {
public VisualPreviewPanel(String id, IModel<PostNode> model) {
super(id, new CompoundPropertyModel<PostNode>(model));
add(new Label("dataAsString").setEscapeModelStrings(false));
}
}
}