Alright here is all the code. Sorry for too much code, but better too
much rather then too little:
//ACTION CLASS
package org.roller.presentation.website.actions;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.actions.DispatchAction;
import org.roller.RollerException;
import org.roller.model.DomainManager;
import org.roller.model.RollerFactory;
import org.roller.pojos.DomainData;
import org.roller.pojos.DomainWebsiteData;
import org.roller.pojos.WebsiteData;
import org.roller.presentation.BasePageModel;
import org.roller.presentation.RollerRequest;
import org.roller.presentation.RollerSession;
import org.roller.presentation.forms.DomainWebsiteForm;
/**
* Administer Multiple DomainWebsites
*
* @struts.action name="domainWebsiteForm"
path="/admin/domainwebsiteAdmin" scope="request"
* parameter="method"
*
* @struts.action-forward name="domainwebsiteAdminEdit.page"
path=".domainwebsiteAdminEdit"
* @struts.action-forward name="domainAdminEdit" path=".domainAdminEdit"
* @struts.action-forward name="domainwebsiteAdminDeleteOK.page"
path=".domainwebsiteAdminDeleteOK"
*
* @author Shervin Asgari
*
*/
public class DomainWebsiteAdminAction extends DispatchAction {
protected static final String DOMAIN_ADMIN_EDIT_PAGE =
"domainAdminEdit.page";
protected static final String DOMAINWEBSITE_ADMIN_EDIT_PAGE =
"domainwebsiteAdminEdit.page";
protected static final String DOMAINWEBSITE_ADMIN_DELETE_PAGE =
"domainwebsiteAdminDeleteOK.page";
protected static final String ACCESS_DENIED_PAGE = "access-denied";
private static Log mLogger = LogFactory.getFactory().getInstance(
DomainWebsiteAdminAction.class);
protected Log getLogger() {
return mLogger;
}
public String getDomainWebsiteAdminTitle() {
return "domainwebsiteAdmin.domainwebsiteAdmin";
}
public String getDomainWebsiteAdminEditTitle() {
return "domainwebsiteAdminEdit.domainwebsiteAdminEdit";
}
public String getDomainWebsiteAdminDeleteOKTitle() {
return "domainwebsiteAdminDelete.domainwebsiteAdminDelete";
}
public ActionForward unspecified(ActionMapping mapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
try {
return view(mapping, actionForm, request, response,
DOMAIN_ADMIN_EDIT_PAGE);
} catch (Exception e) {
mLogger.error("ERROR in action", e);
throw new ServletException(e);
}
}
/**
* Edit a domainwebsite (load edit view)
*
* @param mapping
* @param form
* @param req
* @param res
* @return the edit view with the form populated with the
domainwebsiteid specified by the id in the request.
* @throws Exception
*/
public ActionForward editSelectedDomainWebsite(ActionMapping mapping,
ActionForm form, HttpServletRequest req, HttpServletResponse
res)
throws Exception {
ActionForward forward =
mapping.findForward(DOMAINWEBSITE_ADMIN_EDIT_PAGE);
RollerRequest rreq = RollerRequest.getRollerRequest(req);
try {
DomainWebsiteData domainWebsiteData = selectDomainWebsite(rreq);
((DomainWebsiteForm) form).copyFrom(domainWebsiteData,
req.getLocale());
DomainWebsiteAdminEditPageModel editModel = new
DomainWebsiteAdminEditPageModel(
getDomainWebsiteAdminEditTitle(), req, res, mapping,
domainWebsiteData.getDomain()
, domainWebsiteData.getWebsite());
req.setAttribute("domainWebsiteModel", editModel);
if (!hasRequiredRights(rreq, rreq.getWebsite())) {
return mapping.findForward(ACCESS_DENIED_PAGE);
}
return forward;
} catch (Exception e) {
getLogger().error("ERROR in editSelectedDomainWebsite" +
e.getMessage(), e);
throw new ServletException(e);
}
}
/**
* Adding new domains, forwards to the edit page
*
* @param mapping
* @param form
* @param req
* @param res
* @return the edit view
* @throws Exception
*
*/
public ActionForward addNewBlog(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws
Exception {
RollerRequest rreq = RollerRequest.getRollerRequest(req);
DomainData domainData = selectDomain(rreq);
DomainWebsiteAdminEditPageModel pageModel = new
DomainWebsiteAdminEditPageModel(getDomainWebsiteAdminEditTitle(),
req, res, mapping, domainData, new WebsiteData());
req.setAttribute("domainWebsiteModel", pageModel);
return mapping.findForward(DOMAINWEBSITE_ADMIN_EDIT_PAGE);
}
/**
* Use this method to cancel edit, or remove and return to main page.
*
* @param mapping
* @param actionForm
* @param request
* @param response
* @return the main view page
* @throws Exception
*/
public ActionForward cancel(ActionMapping mapping, ActionForm
actionForm,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward(DOMAIN_ADMIN_EDIT_PAGE);
}
/**
* Delete a domainwebsite (load delete confirmation view).
*
* @param mapping
* @param form
* @param req
* @param res
* @return the delete confirmation view with the form populated with the
* domainwebsite specified by the id in the request.
* @throws Exception
*/
public ActionForward deleteSelectedDomainWebsite(ActionMapping
mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws
Exception {
ActionForward forward =
mapping.findForward(DOMAINWEBSITE_ADMIN_DELETE_PAGE);
RollerRequest rreq = RollerRequest.getRollerRequest(req);
try {
BasePageModel pageModel = new BasePageModel(
getDomainWebsiteAdminDeleteOKTitle(), req, res,
mapping);
req.setAttribute("domainWebsiteModel", pageModel);
if (!hasRequiredRights(rreq, rreq.getWebsite())) {
return mapping.findForward(ACCESS_DENIED_PAGE);
}
DomainWebsiteData domainWebsiteData = selectDomainWebsite(rreq);
((DomainWebsiteForm) form).copyFrom(domainWebsiteData,
req.getLocale());
return forward;
} catch (Exception e) {
getLogger().error("ERROR in action", e);
throw new ServletException(e);
}
}
public ActionForward deleteConfirmedDomainWebsite(ActionMapping mapping,
ActionForm form, HttpServletRequest req, HttpServletResponse
res)
throws Exception {
RollerRequest rreq = RollerRequest.getRollerRequest(req);
DomainWebsiteForm domainWebsiteForm = (DomainWebsiteForm) form;
DomainManager domainMgr =
RollerFactory.getRoller().getDomainManager();
try {
if (!hasRequiredRights(rreq, rreq.getWebsite())) {
return mapping.findForward(ACCESS_DENIED_PAGE);
}
String domainWebsiteId = domainWebsiteForm.getId();
if (domainWebsiteId == null || domainWebsiteId.length() == 0) {
throw new RollerException("Missing domainwebsite id.");
}
domainMgr.removeDomainWebsite(domainMgr.retrieveDomainWebsite(domainWebsiteId));
RollerFactory.getRoller().commit();
return view(mapping, form, req, res, DOMAIN_ADMIN_EDIT_PAGE);
} catch (Exception e) {
getLogger().error("ERROR in action", e);
throw new ServletException(e);
}
}
/**
* Save a domain, new or existing (depending on whether the id is
* non-empty).
*
* @param mapping
* @param form
* @param req
* @param res
* @return the result of <code>view()</code> after the target is saved.
* @throws Exception
*/
public ActionForward saveDomainWebsite(ActionMapping mapping,
ActionForm form,
HttpServletRequest req, HttpServletResponse res) throws
Exception {
RollerRequest rreq = RollerRequest.getRollerRequest(req);
DomainManager domainMgr =
RollerFactory.getRoller().getDomainManager();
DomainWebsiteForm domainWebsiteForm = (DomainWebsiteForm) form;
try {
BasePageModel pageModel = new BasePageModel(
getDomainWebsiteAdminEditTitle(), req, res, mapping);
req.setAttribute("domainWebsiteModel", pageModel);
if (!hasRequiredRights(rreq, rreq.getWebsite())) {
return mapping.findForward(ACCESS_DENIED_PAGE);
}
DomainWebsiteData domainWebsiteData = null;
String domainWebsiteId = domainWebsiteForm.getId();
if (domainWebsiteId != null && domainWebsiteId.length() > 0) {
domainWebsiteData =
domainMgr.retrieveDomainWebsite(domainWebsiteId);
if (domainWebsiteData == null)
throw new RollerException("No such domainwebsite id: "
+ domainWebsiteForm.getId());
domainWebsiteForm.copyTo(domainWebsiteData,
req.getLocale());
domainWebsiteData.setWebsite(selectWebsite(rreq));
} else {
//New blog
DomainData domainData = selectDomain(rreq);
WebsiteData websiteData = selectWebsite(rreq);
domainWebsiteData = createDomainWebsite(domainWebsiteId,
domainData,
websiteData,
domainWebsiteForm.getHandle());
}
// Save it, commit and return refreshed view of target list.
domainWebsiteData.save();
RollerFactory.getRoller().commit();
ActionMessages msgs = new ActionMessages();
msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"domainWebsiteAdminEdit.saved"));
saveMessages(req, msgs);
return view(mapping, form, req, res,
DOMAINWEBSITE_ADMIN_EDIT_PAGE);
} catch (Exception e) {
getLogger().error("ERROR in action " + e.getMessage(), e);
throw new ServletException(e);
}
}
public ActionForward view(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response,
String forwardTo)
throws Exception {
ActionForward forward = mapping.findForward(forwardTo);
try {
RollerSession rollerSession =
RollerSession.getRollerSession(request);
request.setAttribute("domainWebsiteModel", new
DomainWebsiteAdminEditPageModel(
"domainWebsiteAdminEdit.title", request, response,
mapping, null, null));
if (request.getAttribute("domainWebsiteModel") == null) {
request.setAttribute("domainWebsiteModel", actionForm);
}
// Ensure user is authorized
if (rollerSession.isGlobalAdminUser()) {
return forward;
} else {
return mapping.findForward("access-denied");
}
} catch (Exception e) {
mLogger.error("Error in DomainWebsiteAdminAction.view()"+ e
+ "\n" + e.getMessage());
throw new ServletException(e);
}
}
/*
* Check if request carries admin rights.
*/
protected boolean hasRequiredRights(RollerRequest rreq, WebsiteData
website)
throws RollerException {
RollerSession rollerSession = RollerSession.getRollerSession(rreq
.getRequest());
return rollerSession.isGlobalAdminUser();
}
/**
* Helper to select the domainwebsite specified by the id in the
request.
*
* @param rreq
* @param form
* @return the domainwebsitedata specified by the id in the request
and the handle
* @throws RollerException
*/
private DomainWebsiteData selectDomainWebsite(RollerRequest rreq)
throws RollerException
{
String domainwebsiteId =
rreq.getRequest().getParameter(RollerRequest.DOMAINWEBSITEID_KEY);
DomainManager domainMgr =
RollerFactory.getRoller().getDomainManager();
if (domainwebsiteId == null || domainwebsiteId.length() == 0) {
throw new RollerException("Missing domainwebsite id: " +
domainwebsiteId);
}
DomainWebsiteData domainWebsiteData =
domainMgr.retrieveDomainWebsite(domainwebsiteId);
if (domainWebsiteData == null) {
throw new RollerException("No such domainWebsite id: "
+ domainWebsiteData);
}
return domainWebsiteData;
}
private DomainData selectDomain(RollerRequest rreq) throws
RollerException {
String domainId =
rreq.getRequest().getParameter(RollerRequest.DOMAINID_KEY);
DomainManager domainMgr =
RollerFactory.getRoller().getDomainManager();
if (domainId == null || domainId.length() == 0) {
throw new RollerException("Missing domain id: " + domainId);
}
DomainData domainData = domainMgr.retrieveDomain(domainId);
if (domainData == null) {
throw new RollerException("No such domainData id: "
+ domainData);
}
return domainData;
}
private WebsiteData selectWebsite(RollerRequest rreq) throws
RollerException {
String websiteId =
rreq.getRequest().getParameter(RollerRequest.WEBSITEID_KEY);
DomainManager domainMgr =
RollerFactory.getRoller().getDomainManager();
if (websiteId == null || websiteId.length() == 0) {
throw new RollerException("Missing website id: " + websiteId);
}
WebsiteData websiteData = domainMgr.retrieveWebsite(websiteId);
if (websiteData == null) {
throw new RollerException("No such websiteData id: "
+ websiteData);
}
return websiteData;
}
public DomainWebsiteData createDomainWebsite(String id, DomainData
domainId,
WebsiteData websiteId, String handle) {
return new DomainWebsiteData(id,domainId,websiteId, handle);
}
public class DomainWebsiteAdminEditPageModel extends BasePageModel {
private List websiteList = null;
private DomainData domainData = null;
private WebsiteData websiteData = null;
public DomainWebsiteAdminEditPageModel(String titleKey,
HttpServletRequest request, HttpServletResponse response,
ActionMapping mapping, DomainData domainData,
WebsiteData websiteData) throws RollerException {
super(titleKey, request, response, mapping);
this.domainData = domainData;
this.websiteData = websiteData;
try {
DomainManager dm =
RollerFactory.getRoller().getDomainManager();
websiteList = dm.getWebsites();
} catch (RollerException re) {
mLogger.error("Couldn't return list of DomainWebsites\n"
+ re.getMessage(), re);
}
}
public List getWebsiteList() {
return websiteList;
}
public DomainData getDomainData() {
return domainData;
}
public WebsiteData getWebsite() {
return websiteData;
}
}
}
//THIS IS A SAMPLE OF MY TILES-DEFS.XML
<!-- global admin pages (and associates) -->
<definition name=".rollerProperties" extends=".tiles-adminpage" >
<put name="content" value="/website/rollerProperties.jsp" />
</definition>
<definition name=".UserAdmin" extends=".tiles-adminpage" >
<put name="content" value="/website/UserAdmin.jsp" />
</definition>
<definition name=".CommonPingTargets" extends=".tiles-adminpage" >
<put name="content" value="/website/CommonPingTargets.jsp" />
</definition>
<definition name=".cacheInfo" extends=".tiles-adminpage" >
<put name="content" value="/website/cacheInfo.jsp" />
</definition>
<definition name=".domainAdmin" extends=".tiles-adminpage" >
<put name="content" value="/website/domainAdmin.jsp" />
</definition>
<definition name=".domainAdminDeleteOK" extends=".tiles-adminpage" >
<put name="content" value="/website/domainAdminDeleteOK.jsp" />
</definition>
<definition name=".domainAdminEdit" extends=".tiles-adminpage" >
<put name="content" value="/website/domainAdminEdit.jsp" />
</definition>
<definition name=".domainwebsiteAdminEdit" extends=".tiles-adminpage" >
<put name="content" value="/website/domainwebsiteAdminEdit.jsp" />
</definition>
<definition name=".domainwebsiteAdminDeleteOK" extends=".tiles-adminpage" >
<put name="content" value="/website/domainwebsiteAdminDeleteOK.jsp" />
</definition>
<definition name=".CommonPingTargetDeleteOK" extends=".tiles-simplepage" >
<put name="content" value="/website/CommonPingTargetDeleteOK.jsp" />
</definition>
<definition name=".CommonPingTargetEdit" extends=".tiles-simplepage" >
<put name="content" value="/website/CommonPingTargetEdit.jsp" />
</definition>
<definition name=".UserNew" extends=".tiles-simplepage" >
<put name="content" value="/website/UserNew.jsp" />
</definition>
<definition name=".PlanetSubscriptions" extends=".tiles-adminpage" >
<put name="content" value="/planet/PlanetSubscriptions.jsp" />
</definition>
<definition name=".PlanetConfig" extends=".tiles-adminpage" >
<put name="content" value="/planet/PlanetConfig.jsp" />
</definition>
<definition name=".PlanetGroups" extends=".tiles-adminpage" >
<put name="content" value="/planet/PlanetGroups.jsp" />
</definition>
//AND FINALLY MY JSP FILE WHICH I WANT TO RETURN TOO
<%@ include file="/taglibs.jsp" %>
<%@ page
import="org.roller.presentation.website.actions.DomainAdminAction" %>
<% DomainAdminAction.DomainAdminEditPageModel websiteModel =
(DomainAdminAction.DomainAdminEditPageModel)request.getAttribute("websiteModel");
%>
<p class="subtitle"><fmt:message key="domainAdmin.subtitle"/></p>
<html:form action="/admin/domainAdmin" method="post" focus="name">
<html:hidden property="method" value="save" />
<html:hidden property="id" />
<div class="formrow">
<label for="domainName" class="formrow"><fmt:message
key="domainAdmin.name" /></label>
<html:text property="domainName" size="30" maxlength="30" />
</div>
<div class="formrow">
<label for="description" class="formrow"><fmt:message
key="domainAdmin.desc" /></label>
<html:text property="description" size="100" maxlength="255" />
</div>
<p/>
<div class="formrow">
<label for="" class="formrow"> </label>
<input type="submit" value='<fmt:message key="domainAdmin.save"
/>' />
</div>
</html:form>
<%-- DOMAINWEBSITE STUFF --%>
<p><h3 style="clear: both;">The following blogs are in this domain:</h3></p>
<table class="rollertable" style="clear: both;" >
<%-- Headings --%>
<tr class="rollertable">
<th class="rollertable" width="20%%"><fmt:message
key="domainAdmin.handle" /></th>
<th class="rollertable" width="20%%"><fmt:message
key="domainAdmin.domainDesc" /></th>
<th class="rollertable" width="20%%"><fmt:message
key="domainAdmin.websiteDesc" /></th>
<th class="rollertable" width="5%%"><fmt:message
key="domainAdmin.edit" /></th>
<th class="rollertable" width="5%%"><fmt:message
key="domainAdmin.remove" /></th>
</tr>
<c:forEach var="domainwebsite" items="${websiteModel.domain.websites}">
<roller:row oddStyleClass="rollertable_odd"
evenStyleClass="rollertable_even">
<td class="rollertable">
<str:truncateNicely lower="70" upper="75" >
<c:out value="${domainwebsite.handle}" />
</str:truncateNicely>
</td>
<td class="rollertable">
<str:truncateNicely lower="70" upper="75" >
<c:out value="${domainwebsite.domain.description}" />
</str:truncateNicely>
</td>
<td class="rollertable">
<str:truncateNicely lower="70" upper="75" >
<c:out value="${domainwebsite.website.description}" />
</str:truncateNicely>
</td>
<td class="rollertable" align="center">
<roller:link page="/admin/domainwebsiteAdmin.do">
<roller:linkparam
id="<%= RollerRequest.DOMAINWEBSITEID_KEY %>"
name="domainwebsite" property="id" />
<roller:linkparam
id="method" value="editSelectedDomainWebsite" />
<img src='<c:url
value="/images/page_white_edit.png"/>' border="0"
alt="<fmt:message key="domainAdmin.edit" />" />
</roller:link>
</td>
<td class="rollertable" align="center">
<roller:link page="/admin/domainwebsiteAdmin.do">
<roller:linkparam
id="<%= RollerRequest.DOMAINWEBSITEID_KEY %>"
name="domainwebsite" property="id" />
<roller:linkparam
id="method" value="deleteSelectedDomainWebsite" />
<img src='<c:url value="/images/delete.png"/>' border="0"
alt="<fmt:message key="domainAdmin.remove" />" />
</roller:link>
</td>
</roller:row>
</c:forEach>
</table>
<p/>
<c:if test="${!empty websiteModel.domain.id}" >
<html:form action="/admin/domainwebsiteAdmin" method="post">
<div class="control">
<html:hidden property="method" value="addNewBlog" />
<input type="hidden" name="domainId" value="<c:out
value='${websiteModel.domain.id}' />" />
<input type="submit" value='<fmt:message
key="domainWebsiteAdminEdit.addNew"/>' />
</div>
</html:form>
</c:if>
<p/>
Shervin Asgari - System Consultant
M: +47 918 64 148, @: [EMAIL PROTECTED]
Linpro AS - Leading on Linux Tel: +47 21 54 41 00/02
Vitaminveien 1A Fax: +47 21 54 41 01
PB 4 Grefsen, 0409 Oslo WWW: http://www.linpro.no/
Dave Newton wrote:
Shervin Asgari wrote:
* @struts.action-forward name="domainwebsiteAdminEdit.page"
path=".domainwebsiteAdminEdit"
* @struts.action-forward name="domainAdminEdit" path=".domainAdminEdit"
return viewDomainWebsiteEdit(mapping, form, req, res,
DOMAINWEBSITE_ADMIN_EDIT_PAGE);
public ActionForward viewDomainWebsiteEdit(ActionMapping mapping,
ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionForward forward =
mapping.findForward("domainAdminEdit.page");
try {
RollerSession rollerSession =
RollerSession.getRollerSession(request);
request.setAttribute("domainWebsiteModel", new
DomainWebsiteAdminEditPageModel(
"domainWebsiteAdminEdit.title", request, response,
mapping, null, null));
if (request.getAttribute("domainWebsiteModel") == null) {
request.setAttribute("domainWebsiteModel", actionForm);
}
} catch (Exception e) {
mLogger.error("Error in DomainWebsiteAdminAction.view()"+ e
+ "\n" + e.getMessage());
throw new ServletException(e);
}
}
Still not working, eh?
I don't actually see you returning a forward here.
Repost the actual code and configuration files.
Dave
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]