package org.brixcms.plugin.content.blog.post.admin;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.SubmitLink;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.brixcms.jcr.api.JcrNode;
import org.brixcms.jcr.wrapper.BrixNode;
import org.brixcms.plugin.content.ContentPlugin;
import org.brixcms.plugin.content.blog.post.PostNode;
import org.brixcms.plugin.content.blog.post.PostNode.State;
import org.brixcms.plugin.content.blog.post.PostNode.Visibility;
import org.brixcms.plugin.site.SimpleCallback;
import org.brixcms.web.ContainerFeedbackPanel;
import org.brixcms.web.generic.BrixGenericPanel;
import org.brixcms.web.util.validators.NodeNameValidator;
/**
* @author dan.simko@gmail.com
*/
@SuppressWarnings("serial")
public class CreatePostPanel extends BrixGenericPanel<BrixNode> {
private String name;
public CreatePostPanel(String id, IModel<BrixNode> containerNodeModel, final SimpleCallback goBack) {
super(id, containerNodeModel);
Form<?> form = new Form<CreatePostPanel>("form", new CompoundPropertyModel<CreatePostPanel>(this));
add(form);
form.add(new ContainerFeedbackPanel("feedback", this));
form.add(new SubmitLink("create") {
@Override
public void onSubmit() {
createPost();
}
});
form.add(new Link<Void>("cancel") {
@Override
public void onClick() {
goBack.execute();
}
});
final TextField<String> tf;
form.add(tf = new TextField<String>("name"));
tf.setRequired(true);
tf.add(NodeNameValidator.getInstance());
}
private void createPost() {
final JcrNode parent = getModelObject();
String permalink = ContentPlugin.normalizeValue(name, PostNode.MAX_PERMALINK_LENGTH);
if (parent.hasNode(permalink)) {
String error = getString("content-plugin.postExists", new Model<CreatePostPanel>(CreatePostPanel.this));
error(error);
} else {
JcrNode post = parent.addNode(permalink, "nt:file");
PostNode node = PostNode.initialize(post);
node.setTitle(name);
node.setState(State.Draft);
node.setVisibility(Visibility.Private);
node.setData("");
name = null;
parent.save();
ContentPlugin.get().selectNode(this, node, true);
}
}
}