1 16 package org.outerj.daisy.frontend; 17 18 import org.outerj.daisy.frontend.util.AbstractDaisyApple; 19 import org.outerj.daisy.repository.Repository; 20 import org.apache.cocoon.components.flow.apples.StatelessAppleController; 21 import org.apache.cocoon.components.flow.apples.AppleRequest; 22 import org.apache.cocoon.components.flow.apples.AppleResponse; 23 import org.apache.cocoon.environment.Request; 24 import org.apache.cocoon.environment.Response; 25 import org.apache.cocoon.environment.Session; 26 import org.apache.cocoon.i18n.I18nUtils; 27 import org.apache.avalon.framework.service.Serviceable; 28 import org.apache.avalon.framework.service.ServiceManager; 29 import org.apache.avalon.framework.service.ServiceException; 30 import org.apache.avalon.framework.logger.Logger; 31 import org.apache.avalon.framework.logger.LogEnabled; 32 33 import java.util.*; 34 import java.net.URLEncoder ; 35 36 public class LocaleApple extends AbstractDaisyApple implements StatelessAppleController, Serviceable, LogEnabled { 37 private ServiceManager serviceManager; 38 private Logger logger; 39 40 public void service(ServiceManager serviceManager) throws ServiceException { 41 this.serviceManager = serviceManager; 42 } 43 44 public void enableLogging(Logger logger) { 45 this.logger = logger; 46 } 47 48 protected void processInternal(AppleRequest appleRequest, AppleResponse appleResponse) throws Exception { 49 Request request = appleRequest.getCocoonRequest(); 50 String returnTo = request.getParameter("returnTo"); 51 String localeParam = request.getParameter("locale"); 52 53 if (localeParam == null) { 54 String submitPath = getMountPoint() + "/locale?"; 56 if (returnTo != null) 57 submitPath += "returnTo=" + URLEncoder.encode(returnTo, "UTF-8"); 58 59 Repository repository = WikiHelper.getRepository(request, serviceManager); 60 61 Map viewData = new HashMap(); 62 viewData.put("submitPath", submitPath); 63 viewData.put("pageContext", new PageContext(getMountPoint(), repository, getLayoutType(), getSkin(), SkinConfHelper.getGlobalSkinConf(serviceManager), getContext())); 64 viewData.put("locales", new AvailableLocales(serviceManager, logger).getLocales()); 65 viewData.put("locale", WikiHelper.getLocale(request)); 66 appleResponse.sendPage("SelectLocalePipe", viewData); 67 } else { 68 Locale locale = I18nUtils.parseLocale(localeParam); 69 Response response = appleResponse.getCocoonResponse(); 70 WikiHelper.setLocaleCookie(localeParam, response); 71 72 Session session = request.getSession(false); 74 if (session != null) 75 session.setAttribute("locale", locale); 76 77 WikiHelper.changeLocale(locale, request); 78 79 if (returnTo == null || returnTo.equals("")) 80 appleResponse.redirectTo(getMountPoint() + "/"); 81 else 82 appleResponse.redirectTo(returnTo); 83 } 84 } 85 } 86 | Popular Tags |