package org.sakaiproject.site.tool.helper.order.rsf;
import org.sakaiproject.site.api.Site;
import org.sakaiproject.site.api.SitePage;
import org.sakaiproject.site.tool.helper.order.impl.SitePageEditHandler;
import uk.org.ponder.rsf.components.UIBranchContainer;
import uk.org.ponder.rsf.components.UIContainer;
import uk.org.ponder.rsf.components.UIMessage;
import uk.org.ponder.rsf.components.UIOutput;
import uk.org.ponder.rsf.view.ComponentChecker;
import uk.org.ponder.rsf.view.ViewComponentProducer;
import uk.org.ponder.rsf.viewstate.ViewParameters;
import uk.org.ponder.rsf.viewstate.ViewParamsReporter;
/**
*
* @author Joshua Ryan joshua.ryan@asu.edu
*
*/
public class PageEditProducer implements ViewComponentProducer, ViewParamsReporter {
public SitePageEditHandler handler;
public static final String VIEW_ID = "PageEdit";
public String getViewID() {
return VIEW_ID;
}
public void fillComponents(UIContainer tofill, ViewParameters paramso, ComponentChecker arg2) {
PageEditViewParameters params = (PageEditViewParameters) paramso;
UIBranchContainer mode = null;
if (params.pageId != null) {
if (params.newTitle != null) {
try {
if (!"".equals(params.newTitle)) {
String oldTitle = handler.setTitle(params.pageId, params.newTitle);
mode = UIBranchContainer.make(tofill, "mode-pass:");
UIOutput.make(mode, "page-title", params.newTitle);
UIMessage.make(mode, "message", "success_changed", new Object[] {oldTitle, params.newTitle});
}
else {
String newTitle = handler.resetTitle(params.pageId);
mode = UIBranchContainer.make(tofill, "mode-pass:");
UIOutput.make(mode, "page-title", newTitle);
UIMessage.make(mode, "message", "success_reset", new Object[] {newTitle});
}
}
catch (Exception e) {
ErrorUtil.renderError(tofill, e);
}
}
if (params.newConfig != null) {
try {
// TODO: Add ability to configure any arbitrary setting
handler.setConfig(params.pageId, "source", params.newConfig);
}
catch (Exception e) {
ErrorUtil.renderError(tofill, e);
}
}
if ("true".equals(params.visible) || "false".equals(params.visible) ||
"true".equals(params.enabled) || "false".equals(params.enabled) ) {
try {
if ("true".equals(params.enabled)) {
handler.enablePage(params.pageId);
}
else if ("false".equals(params.enabled)) {
handler.disablePage(params.pageId);
}
if ("true".equals(params.visible)) {
handler.showPage(params.pageId);
}
else if ("false".equals(params.visible)) {
handler.hidePage(params.pageId);
}
Site site = handler.site;
SitePage page = site.getPage(params.pageId);
String oldTitle = page.getTitle();
mode = UIBranchContainer.make(tofill, "mode-pass:");
UIOutput.make(mode, "page-title", oldTitle);
if ("false".equals(params.enabled)) {
UIMessage.make(mode, "message", "success_disabled",
new Object[] {oldTitle});
} else if ("true".equals(params.visible)) {
UIMessage.make(mode, "message", "success_visible",
new Object[] {oldTitle});
} else if ("false".equals(params.visible)) {
UIMessage.make(mode, "message", "success_hidden",
new Object[] {oldTitle});
}
else {
UIMessage.make(mode, "message", "success_enabled",
new Object[] {oldTitle});
}
}
catch (Exception e) {
ErrorUtil.renderError(tofill, e);
}
}
}
else {
mode = UIBranchContainer.make(tofill, "mode-failed:");
UIMessage.make(mode, "message", "error_pageid");
}
}
public ViewParameters getViewParameters() {
return new PageEditViewParameters();
}
}