Temp.java

package sk.iway.iwcm.doc.ninja;

import sk.iway.iwcm.PageLng;
import sk.iway.iwcm.SetCharacterEncodingFilter;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.doc.TemplatesGroupBean;

import java.util.ArrayList;
import java.util.List;

public class Temp {
    private Ninja ninja;
    private TempGroup group;
    private String basePath;
    private String basePathNoSuffix;
    private String templateFolderName;

    public Temp(Ninja ninja) {
        this.ninja = ninja;
        this.group = new TempGroup(ninja);
    }

    public String getBasePath(){
        if (basePath == null) {
            basePath = getBasePathNoSuffix();

            //aby sme vedeli na koniec pridat /dist
            String basePathSuffix = ninja.getConfig("basePathSuffix", null);
            if (Tools.isNotEmpty(basePathSuffix)) {
                basePath = basePath+basePathSuffix;
            }
        }

        return basePath;
    }

    public String getBasePathNoSuffix() {
        if (basePathNoSuffix == null) {
            if (ninja.getDoc() == null) {
                basePathNoSuffix = getBasePathFromUri(ninja.getRequest().getRequestURI());
            } else {

                //39796 - Constants.getInstallName() uz nepotrebujeme, pridava ho WJ automaticky
                basePathNoSuffix = "/templates/";
                String configInstallName = ninja.getConfig("installName", "");
                if (Tools.isNotEmpty(configInstallName))
                {
                    basePathNoSuffix += configInstallName + "/";
                }

                String templateFolderName = getTemplateFolderName();
                if (Tools.isNotEmpty(templateFolderName) && !("/".equals(templateFolderName))) {
                    basePathNoSuffix += templateFolderName + "/";
                }
            }
        }

        return basePathNoSuffix;
    }

    public String getTemplateFolderName() {
        if (templateFolderName == null) {
            templateFolderName = ninja.getConfig("templateFolderName", "");

            if (Tools.isEmpty(templateFolderName) && ninja.getPage().getDoc() != null) {
                TemplatesGroupBean templatesGroupBean = group.getTemplatesGroupBean();
                templateFolderName = templatesGroupBean.getDirectory();
            }
        }

        return templateFolderName;
    }

    private String getBasePathFromUri(String uri) {
        return uri.substring(0, uri.lastIndexOf("/") + 1);
    }

    public String getBasePathAssets(){
        return getBasePath()+"assets/";
    }

    public String getBasePathCss(){
        return getBasePath()+"assets/css/";
    }

    public String getBasePathJs(){
        return getBasePath()+"assets/js/";
    }

    public String getBasePathPlugins(){
        return getBasePath()+"assets/plugins/";
    }

    public String getBasePathImg(){
        return getBasePath()+"assets/images/";
    }

    public  String getInsertTouchIconsHtml() {
        int defaultDimension = 192;
        StringBuilder sb = new StringBuilder();

        List <Integer> dimensions = new ArrayList<>();
        dimensions.add(0);
        dimensions.add(72);
        dimensions.add(76);
        dimensions.add(114);
        dimensions.add(120);
        dimensions.add(144);
        dimensions.add(152);
        dimensions.add(180);

        for (Integer dimension : dimensions) {
            String sizes = "";
            if (dimension > 0) {
                sizes = dimension + "x" + dimension;
            }
            else {
                dimension = defaultDimension;
            }
            //ak uz tam nieco je odsad nech to je krajsie v HTML kode
            if (sb.length()>0) sb.append("        ");

            sb.append("<link rel=\"apple-touch-icon-precomposed\"");
            if (Tools.isNotEmpty(sizes)) {
                sb.append(" sizes=\"").append(sizes).append("\"");
            }
            sb.append(" href=\"/thumb").append(getBasePath()).append("assets/images/touch-icon.png?w=").append(dimension).append("&h=").append(dimension).append("&ip=5\" />\n");
        }

        sb.append("        <link rel=\"icon\" sizes=\"192x192\" href=\"/thumb").append(getBasePath()).append("assets/images/touch-icon.png?w=192&h=192&ip=5\" />\n");

        return sb.toString();
    }

    public String getCharset(){
        return Tools.getStringValue(ninja.getRequest().getParameter("SetCharacterEncodingFilter.encoding"), SetCharacterEncodingFilter.getEncoding());
    }

    public String getLngIso(){
        return PageLng.getUserLngIso(ninja.getRequest());
    }

    public TempGroup getGroup() {
        return group;
    }

    public String getBaseCssLink() {
        String link = (String)ninja.getRequest().getAttribute("base_css_link_nocombine");
        if ("/css/page.css".equals(link)) link = "";
        return link;
    }

    public String getCssLink() {
        return (String)ninja.getRequest().getAttribute("css_link_nocombine");
    }
}