1 16 package org.outerj.daisy.frontend.admin; 17 18 import org.outerj.daisy.frontend.util.*; 19 import org.outerj.daisy.frontend.PageContext; 20 import org.outerj.daisy.frontend.SkinConfHelper; 21 import org.outerj.daisy.frontend.WikiHelper; 22 import org.outerj.daisy.repository.Repository; 23 import org.outerj.daisy.repository.acl.AccessManager; 24 import org.outerj.daisy.repository.acl.AclResultInfo; 25 import org.apache.avalon.framework.service.Serviceable; 26 import org.apache.avalon.framework.service.ServiceManager; 27 import org.apache.avalon.framework.service.ServiceException; 28 import org.apache.cocoon.components.flow.apples.AppleRequest; 29 import org.apache.cocoon.components.flow.apples.AppleResponse; 30 import org.apache.cocoon.ResourceNotFoundException; 31 import org.apache.cocoon.forms.formmodel.Form; 32 import org.apache.cocoon.forms.FormContext; 33 34 import java.util.HashMap ; 35 import java.util.Map ; 36 import java.util.Locale ; 37 38 public class TestAclApple extends AbstractDaisyApple implements Serviceable { 39 private ServiceManager serviceManager; 40 private AccessManager accessManager; 41 private Repository repository; 42 private Form form; 43 private boolean init = false; 44 private Locale locale; 45 private Map viewData; 46 private String aclName; 47 private String path; 48 49 public void service(ServiceManager serviceManager) throws ServiceException { 50 this.serviceManager = serviceManager; 51 } 52 53 protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception { 54 if (!init) { 55 aclName = appleRequest.getSitemapParameter("name"); 56 57 if (!"live".equals(aclName) && !"staging".equals(aclName)) 58 throw new ResourceNotFoundException("ACL does not exist: " + aclName); 59 60 repository = WikiHelper.getRepository(appleRequest.getCocoonRequest(), serviceManager); 61 accessManager = repository.getAccessManager(); 62 63 form = FormHelper.createForm(serviceManager, "resources/form/testacl_definition.xml"); 64 locale = WikiHelper.getLocale(appleRequest.getCocoonRequest()); 65 66 path = getMountPoint() + "/admin/testacl/" + aclName + "/" + getContinuationId(); 67 68 form.getChild("branchId").setValue(new Long (1)); 69 form.getChild("languageId").setValue(new Long (1)); 70 71 viewData = new HashMap (); 72 viewData.put("submitPath", path); 73 viewData.put("locale", locale); 74 viewData.put("pageContext", new PageContext(getMountPoint(), repository, getLayoutType(), getSkin(), SkinConfHelper.getGlobalSkinConf(serviceManager), getContext())); 75 viewData.put("CocoonFormsInstance", form); 76 viewData.put("branchesArray", repository.getVariantManager().getAllBranches(false).getArray()); 77 viewData.put("languagesArray", repository.getVariantManager().getAllLanguages(false).getArray()); 78 79 init = true; 80 81 appleResponse.redirectTo(path); 82 } else { 83 String resource = appleRequest.getSitemapParameter("resource", null); 84 85 if ("result".equals(resource)) { 86 if (!form.isValid()) { 87 appleResponse.redirectTo(path); 88 } else { 89 long userId = ((Long )form.getChild("userId").getValue()).longValue(); 90 long roleId = ((Long )form.getChild("roleId").getValue()).longValue(); 91 long documentId = ((Long )form.getChild("documentId").getValue()).longValue(); 92 long branchId = ((Long )form.getChild("branchId").getValue()).longValue(); 93 long languageId = ((Long )form.getChild("languageId").getValue()).longValue(); 94 95 AclResultInfo result; 96 if (aclName.equals("live")) 97 result = accessManager.getAclInfoOnLive(userId, new long[] {roleId}, documentId, branchId, languageId); 98 else 99 result = accessManager.getAclInfoOnStaging(userId, new long[] {roleId}, documentId, branchId, languageId); 100 101 Map viewData = new HashMap (); 102 viewData.put("pageXml", new XmlObjectXMLizable(result.getXml())); 103 viewData.put("pageContext", new PageContext(getMountPoint(), repository, getLayoutType(), getSkin(), SkinConfHelper.getGlobalSkinConf(serviceManager), getContext())); 104 105 appleResponse.sendPage("TestAclResultPipe", viewData); 106 } 107 } else if (resource == null) { 108 String methodName = appleRequest.getCocoonRequest().getMethod(); 109 if (methodName.equals("GET")) { 110 appleResponse.sendPage("TestAclPipe", viewData); 112 } else if (methodName.equals("POST")) { 113 boolean endProcessing = form.process(new FormContext(appleRequest.getCocoonRequest(), locale)); 115 116 if (!endProcessing) { 117 appleResponse.sendPage("TestAclPipe", viewData); 118 } else { 119 appleResponse.redirectTo(path + "/result"); 120 } 121 } 122 } else { 123 throw new ResourceNotFoundException("Unexisting resource: " + resource); 124 } 125 } 126 } 127 } 128 | Popular Tags |