001/*
002 *  Copyright 2016 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.web.workspace;
017
018import org.apache.avalon.framework.service.ServiceException;
019import org.apache.avalon.framework.service.ServiceManager;
020import org.apache.cocoon.environment.ObjectModelHelper;
021import org.apache.cocoon.environment.Request;
022import org.apache.commons.lang3.StringUtils;
023
024import org.ametys.plugins.core.ui.minimize.MinimizeTransformer;
025import org.ametys.web.URIPrefixHandler;
026
027/**
028 * The front office minimizer use a different url to avoid front application url conflict 
029 */
030public class FrontMinimizeTransformer extends MinimizeTransformer
031{
032    private URIPrefixHandler _prefixHandler;
033
034    @Override
035    public void service(ServiceManager smanager) throws ServiceException
036    {
037        super.service(smanager);
038        
039        _prefixHandler = (URIPrefixHandler) manager.lookup(URIPrefixHandler.ROLE);
040    }
041    
042    private String getURIPrefix()
043    {
044        return _prefixHandler.getUriPrefix(_getSiteName());
045    }
046    
047    @Override
048    protected String _removeContextPath(String uri)
049    {
050        return StringUtils.prependIfMissing(StringUtils.removeStart(super._removeContextPath(uri), getURIPrefix() + "/"), "/");
051    }
052    
053    @Override
054    protected String _getMinimizeUrl()
055    {
056        return getURIPrefix() + "/_plugins/web/resources-minimized/";
057    }
058    
059    @Override
060    protected String getHashSalt()
061    {
062        String salt = super.getHashSalt();
063        
064        String siteName = _getSiteName();
065        if (siteName != null)
066        {
067            salt += "#" + siteName;
068        }
069        
070        return salt;
071    }
072
073    private String _getSiteName()
074    {
075        Request request = ObjectModelHelper.getRequest(objectModel);
076        
077        String siteName = request.getParameter("siteName");
078        if (siteName == null)
079        {
080            siteName = (String) request.getAttribute("siteName");
081        }
082        if (siteName == null)
083        {
084            siteName = (String) request.getAttribute("site");
085        }
086        return siteName;
087    }
088}