| 1 16 package org.outerj.daisy.frontend; 17 18 import org.outerj.daisy.frontend.util.AbstractDaisyApple; 19 import org.outerj.daisy.frontend.util.HttpMethodNotAllowedException; 20 import org.outerj.daisy.repository.Repository; 21 import org.apache.cocoon.components.flow.apples.StatelessAppleController; 22 import org.apache.cocoon.components.flow.apples.AppleRequest; 23 import org.apache.cocoon.components.flow.apples.AppleResponse; 24 import org.apache.cocoon.environment.Request; 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 29 public class SwitchVersionModeApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable { 30 private ServiceManager serviceManager; 31 32 public void service(ServiceManager serviceManager) throws ServiceException { 33 this.serviceManager = serviceManager; 34 } 35 36 protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception { 37 Request request = appleRequest.getCocoonRequest(); 38 39 Repository repository = WikiHelper.getRepository(request, serviceManager); 40 if (repository.getUserLogin().equals("guest")) 41 throw new Exception ("Live/staging switch is not available for the guest user."); 42 43 if (request.getMethod().equals("POST")) { 44 String versionModeParam = RequestUtil.getStringParameter(request, "versionMode"); 45 WikiVersionMode versionMode = WikiVersionMode.fromString(versionModeParam); 46 47 WikiHelper.setVersionMode(request, versionMode); 48 49 String returnTo = request.getParameter("returnTo"); 50 if (returnTo != null) 51 appleResponse.redirectTo(returnTo); 52 else 53 appleResponse.redirectTo(getMountPoint() + "/"); 54 } else { 55 throw new HttpMethodNotAllowedException(request.getMethod()); 56 } 57 } 58 } 59 | Popular Tags |