Package $

Source Code of $.DefaultPageStage$Conditional

package ${groupId};

import com.psddev.cms.db.*;
import com.psddev.dari.db.Application;
import com.psddev.dari.db.State;
import com.psddev.dari.util.HtmlElement;
import com.psddev.dari.util.HtmlNode;
import com.psddev.dari.util.HtmlWriter;
import com.psddev.dari.util.StringUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
* The default page stage updater that should be used for main content types.
* Provides a default way to set up the page with seo information, css, javascript
*/
public class DefaultPageStage implements PageStage.SharedUpdatable {

    public void updateStageBefore(Object object, PageStage stage) {

        ${classPrefix}Application app = ${classPrefix}Application.getInstance();

        State state = State.getInstance(object);
        String title = state.as(Seo.ObjectModification.class).findTitle();
        String description = state.as(Seo.ObjectModification.class).findDescription();
        String permalink = null;

        if (object instanceof Content) {
            Content content = (Content) object;
            permalink = content.getPermalink();
        }

        stage.findOrCreateHeadElement("meta", "charset", "UTF-8");
        stage.setHttpEquiv("X-UA-Compatible", "IE=edge,chrome=1");

        // SEO Tags
        if (!StringUtils.isBlank(title)) {
            stage.setTitle(title);
        }

        if (!StringUtils.isBlank(description)) {
            stage.setMetaName("description", description);
        }

        if (!StringUtils.isBlank(permalink)){
            stage.findOrCreateHeadElement("link",
                    "rel", "canonical",
                    "href", permalink);
        }

        stage.setMetaProperty("og:site_name","${artifactId}");
        stage.setMetaProperty("og:url",permalink);

        if (app.isUseNonMinifiedCss()) {
            stage.addStyleSheet("/assets/style/${artifactId}.less");
            stage.addScript("/assets/script/less.js");
        } else {
            stage.addStyleSheet("/assets/style/${artifactId}.min.css");
        }

        String scriptDir = null;

        if (app.isUseNonMinifiedJs()) {
            scriptDir = "script";
        } else {
            scriptDir = "script.min";
        }

        stage.findOrCreateHeadElement("script",
                    "type", "text/javascript",
                    "data-main", "/assets/" + scriptDir + "/${artifactId}",
                    "src", ElFunctionUtils.resource("/assets/" + scriptDir + "/require.js"));
    }

    public void updateStageAfter(Object object, PageStage stage) {

    }

    public void addConditionalJavascript(PageStage stage, String condition, String src) {
        Conditional conditional = new Conditional();
        conditional.setCondition(condition);

        List<HtmlNode> nodes = new ArrayList<HtmlNode>();

        HtmlElement script = new HtmlElement();
        script.setName("script");
        script.addAttributes("type", "text/javascript",
                "src", ElFunctionUtils.resource(src));

        nodes.add(script);

        conditional.setNodes(nodes);

        stage.getHeadNodes().add(conditional);
    }

    public static class Conditional extends HtmlNode {

        private String condition;
        private List<HtmlNode> nodes;

        public String getCondition() {
            return condition;
        }

        public void setCondition(String condition) {
            this.condition = condition;
        }

        public List<HtmlNode> getNodes() {
            if (nodes == null) {
                nodes = new ArrayList<HtmlNode>();
            }
            return nodes;
        }

        public void setNodes(List<HtmlNode> nodes) {
            this.nodes = nodes;
        }

        @Override
        public void writeHtml(HtmlWriter writer) throws IOException {
            if (getCondition() != null) {
                writer.write("<!--[if " + getCondition() + "]>");
                for (HtmlNode node : getNodes()) {
                    node.writeHtml(writer);
                }
                writer.write("<![endif]-->");
            }
        }
    }
}
TOP

Related Classes of $.DefaultPageStage$Conditional

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.