Package com.psddev.cms.tool.page

Source Code of com.psddev.cms.tool.page.LookingGlassView$EditView

package com.psddev.cms.tool.page;

import java.io.IOException;

import com.psddev.cms.db.Preview;
import com.psddev.cms.db.ToolUser;
import com.psddev.cms.db.ToolUserAction;
import com.psddev.cms.tool.ToolPageContext;
import com.psddev.dari.db.Query;
import com.psddev.dari.db.State;
import com.psddev.dari.util.JspUtils;
import com.psddev.dari.util.ObjectUtils;
import com.psddev.dari.util.StringUtils;

public abstract class LookingGlassView {

    protected void doRenderAction(ToolPageContext page, Object content, String mirrorUrl) throws IOException {
    }

    public void renderAction(ToolPageContext page, ToolUser user, ToolUserAction action) throws IOException {
        Object content = Query.
                from(Object.class).
                where("_id = ?", action.getContentId()).
                first();

        Preview preview = Query.
                from(Preview.class).
                where("_id = ?", user.getCurrentPreviewId()).
                first();

        String mirrorUrl = StringUtils.addQueryParameters(preview != null && ObjectUtils.equals(action.getContentId(), preview.getObjectId()) ?
                JspUtils.getAbsolutePath(page.getRequest(), "/_preview", "_cms.db.previewId", preview.getId()) :
                action.getUrl(), "_mirror", true);

        doRenderAction(page, content, mirrorUrl);
    }

    private abstract static class QueryParametersView extends LookingGlassView {

        protected abstract String changeMirrorUrl(String mirrorUrl);

        @Override
        protected void doRenderAction(ToolPageContext page, Object content, String mirrorUrl) throws IOException {
            page.writeStart("div", "style", page.cssString("margin", "0 -20px"));
                page.writeStart("iframe",
                        "src", changeMirrorUrl(mirrorUrl),
                        "style", page.cssString(
                                "border-style", "none",
                                "height", "10000px",
                                "width", "100%"));
                page.writeEnd();
            page.writeEnd();
        }
    }

    public static class PreviewView extends QueryParametersView {

        @Override
        protected String changeMirrorUrl(String mirrorUrl) {
            return mirrorUrl;
        }
    }

    public static class DebugView extends QueryParametersView {

        @Override
        protected String changeMirrorUrl(String mirrorUrl) {
            return StringUtils.addQueryParameters(mirrorUrl, "_debug", true);
        }
    }

    public static class GridView extends QueryParametersView {

        @Override
        protected String changeMirrorUrl(String mirrorUrl) {
            return StringUtils.addQueryParameters(mirrorUrl, "_grid", true);
        }
    }

    public static class HtmlApiView extends QueryParametersView {

        @Override
        protected String changeMirrorUrl(String mirrorUrl) {
            return StringUtils.addQueryParameters(mirrorUrl, "_format", "json");
        }
    }

    public static class EditView extends LookingGlassView {

        @Override
        protected void doRenderAction(ToolPageContext page, Object content, String mirrorUrl) throws IOException {
            page.writeStart("div", "style", page.cssString(
                    "margin", "0 -20px",
                    "overflow", "hidden"));
                page.writeStart("iframe",
                        "src", page.cmsUrl("/content/edit.jsp",
                                "_mirror", true,
                                "id", State.getInstance(content).getId()),
                        "style", page.cssString(
                                "border-style", "none",
                                "height", "10000px",
                                "margin-top", "-70px",
                                "width", "100%"));
                page.writeEnd();
            page.writeEnd();
        }
    }
}
TOP

Related Classes of com.psddev.cms.tool.page.LookingGlassView$EditView

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.