WelcomeServlet.java 11.5 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.day.cq.i18n.I18n
 *  javax.jcr.Repository
 *  javax.jcr.Session
 *  javax.servlet.ServletException
 *  javax.servlet.http.HttpServletRequest
 *  javax.servlet.http.HttpServletResponse
 *  org.apache.commons.lang3.StringEscapeUtils
 *  org.osgi.framework.BundleContext
 */
package com.day.crx.delite.impl.servlets;

import com.day.cq.i18n.I18n;
import com.day.crx.delite.impl.AbstractServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringEscapeUtils;
import org.osgi.framework.BundleContext;

public class WelcomeServlet
extends AbstractServlet {
    public WelcomeServlet(BundleContext bc) {
        super(bc);
    }

    protected void doService(HttpServletRequest req, HttpServletResponse res, Session session) throws ServletException, IOException {
        res.setContentType("text/html");
        res.setCharacterEncoding("UTF-8");
        PrintWriter pw = res.getWriter();
        Repository repository = session.getRepository();
        String name = repository.getDescriptor("jcr.repository.name");
        String version = repository.getDescriptor("jcr.repository.version.display");
        if (version == null) {
            version = repository.getDescriptor("jcr.repository.version");
        }
        String vendor = repository.getDescriptor("jcr.repository.vendor");
        String url = repository.getDescriptor("jcr.repository.vendor.url");
        pw.print("<div id=\"welcome\">\n<div class=\"welcomepage\">\n<div class=\"res\">\n<div class=\"resources-block-wrapper\">\n<div class=\"resources-block\">\n<h3>" + I18n.get((HttpServletRequest)req, (String)"Repository Information", (String)"Title") + "</h3>\n" + "<ul>\n" + "<li>\n" + StringEscapeUtils.escapeXml((String)name) + "\n" + StringEscapeUtils.escapeXml((String)version) + "\n" + " by \n" + "<a href=\"" + StringEscapeUtils.escapeXml((String)url) + "\">" + StringEscapeUtils.escapeXml((String)vendor) + "</a>" + "</li>\n" + "<li></li>\n" + "</ul>\n" + "</div>\n" + "</div>\n" + "<div class=\"resources-block-wrapper\">\n" + "<div class=\"resources-block\">\n" + "<h3>" + I18n.get((HttpServletRequest)req, (String)"Developer Resources", (String)"Title") + "</h3>\n" + "<ul>\n" + "<li><a href=\"" + I18n.get((HttpServletRequest)req, (String)"https://www.adobe.com/go/aem6_2_docs") + "\" target=\"_blank\">" + I18n.get((HttpServletRequest)req, (String)"Documentation", (String)"List item") + "</a></li>\n" + "<li><a href=\"" + I18n.get((HttpServletRequest)req, (String)"https://www.adobe.com/go/aem6_2_dev") + "\" target=\"_blank\">" + I18n.get((HttpServletRequest)req, (String)"Developer Blog", (String)"List item") + "</a></li>\n" + "<li><a href=\"" + I18n.get((HttpServletRequest)req, (String)"https://www.adobe.com/go/aem6_2_kb") + "\" target=\"_blank\">" + I18n.get((HttpServletRequest)req, (String)"Knowledge Base", (String)"List item") + "</a></li>\n" + "</ul>\n" + "</div>\n" + "</div>\n" + "<div class=\"resources-block-wrapper\">\n" + "<div class=\"resources-block\">\n" + "<h3>" + I18n.get((HttpServletRequest)req, (String)"Support", (String)"Title") + "</h3>\n" + "<ul>\n" + "<li><a href=\"" + I18n.get((HttpServletRequest)req, (String)"http://www.adobe.com/") + "\" target=\"_blank\">" + I18n.get((HttpServletRequest)req, (String)"Homepage", (String)"List item") + "</a></li>\n" + "<li><a href=\"" + I18n.get((HttpServletRequest)req, (String)"https://www.adobe.com/go/aem6_2_support_en") + "\" target=\"_blank\">" + I18n.get((HttpServletRequest)req, (String)"Support Center", (String)"List item") + "</a></li>\n" + "</ul>\n" + "</div>\n" + "</div>\n" + "</div>\n" + "<div class=\"content\">\n" + "<div id=\"searchbox\"></div>\n" + "<div id=\"searchresults\">\n" + "<div id=\"resultslist\"></div>\n" + "</div>\n" + "</div>\n" + "</div>\n" + "</div>\n" + "<script type=\"text/javascript\">\n" + "var limit = 10;\n" + "var summaryEl;\n" + "var pagingEl;\n" + "CRX.ide.SearchField = Ext.extend(Ext.form.TwinTriggerField, {\n" + "emptyText:\"" + I18n.get((HttpServletRequest)req, (String)"Enter search term to search the repository") + "\",\n" + "width:400,\n" + "validationEvent:false,\n" + "validateOnBlur:false,\n" + "trigger1Class:\"x-form-clear-trigger\",\n" + "trigger2Class:\"x-form-search-trigger\",\n" + "hideTrigger1:true,\n" + "hasSearch:false,\n" + "paramName:\"query\",\n" + "initComponent: function() {\n" + "    if(!this.store.baseParams) {\n" + "        this.store.baseParams = {};\n" + "    }\n" + "    CRX.ide.SearchField.superclass.initComponent.call(this);\n" + "    this.on(\"specialkey\", function(f, e) {\n" + "        if (e.getKey() == e.ENTER) {\n" + "            this.onTrigger2Click();\n" + "        }\n" + "    }, this);\n" + "},\n" + "onTrigger1Click: function() {\n" + "    if (this.hasSearch) {\n" + "        this.store.baseParams[this.paramName] = \"\";\n" + "        this.store.removeAll();\n" + "        this.el.dom.value = \"\";\n" + "        this.triggers[0].hide();\n" + "        this.hasSearch = false;\n" + "        this.focus();\n" + "        summaryEl.remove();\n" + "        pagingEl.remove();\n" + "    }\n" + "}\n," + "onTrigger2Click: function() {\n" + "    var v = this.getRawValue();\n" + "    if (v.length < 1) {\n" + "        this.onTrigger1Click();\n" + "        return;\n" + "    }\n" + "    this.store.baseParams[this.paramName] = v;\n" + "    this.store.startTime = new Date();\n" + "    this.store.reload({\n" + "        params:{\n" + "            start:1, \n" + "            limit:limit,\n" + "            \"_charset_\": \"utf-8\"\n" + "        }\n" + "    });\n" + "    this.hasSearch = true;\n" + "    this.triggers[0].show();\n" + "    this.focus();\n" + "}\n" + "});\n" + "var resultTpl = new Ext.XTemplate(\n" + "    '<tpl for=\".\">',\n" + "        '<div class=\"sresult\">',\n" + "            '<h6>',\n" + "                '<a href=\"javascript:selectSearchResult(\\'{path}\\')\" ext:qtip=\"{path}\">',\n" + "                    '{shortPath}',\n" + "                '</a>',\n" + "            '</h6>',\n" + "            '<div class=\"abstract\">{excerpt}</div>',\n" + "        '</div>',\n" + "    '</tpl>'\n" + ");\n" + "var summaryTpl = new Ext.XTemplate(\n" + "    '<div class=\"sstats\">{msg}</div>'\n" + ");\n" + "var pagingTpl = new Ext.XTemplate(\n" + "    '<div class=\"sstats\">',\n" + "        '" + I18n.get((HttpServletRequest)req, (String)"Result Page:") + " ',\n" + "        '<tpl if=\"previousPage != null\">',\n" + "            '<a href=\"javascript:loadSearchResults({previousPage})\">" + I18n.get((HttpServletRequest)req, (String)"Previous", (String)"Previous button") + "</a> ',\n" + "        '</tpl>',\n" + "        '<tpl for=\"pages\">',\n" + "            '<tpl if=\"currentPage == number\">',\n" + "                '{number} ',\n" + "            '</tpl>',\n" + "            '<tpl if=\"currentPage != number\">',\n" + "                '<a href=\"javascript:loadSearchResults({number})\">{number}</a> ',\n" + "            '</tpl>',\n" + "        '</tpl>',\n" + "        '<tpl if=\"nextPage != null\">',\n" + "            '<a href=\"javascript:loadSearchResults({nextPage})\">" + I18n.get((HttpServletRequest)req, (String)"Next", (String)"Next button") + "</a>',\n" + "        '</tpl>',\n" + "    '</div>'\n" + ");\n" + "var searchStore = new Ext.data.Store({\n" + "    proxy: new Ext.data.HttpProxy({\n" + "        url:\"search.jsp\",\n" + "        method:\"GET\"\n" + "    }),\n" + "    reader: new Ext.data.JsonReader({\n" + "        root:\"results\",\n" + "        totalProperty:\"total\"\n" + "    }, [ \"type\", \"path\", \"shortPath\", \"excerpt\" ]),\n" + "    listeners:{\n" + "        beforeload:function(store, options) {\n" + "            if (summaryEl) {\n" + "                summaryEl.remove();\n" + "            }\n" + "            if (pagingEl) {\n" + "                pagingEl.remove();\n" + "            }\n" + "        },\n" + "        load:function(store, records, options) {\n" + "            if (records.length > 0) {\n" + "                var total = store.reader.jsonData[\"total\"];\n" + "                var from = options.params.start;\n" + "                var to = (options.params.start + limit) - 1;\n" + "                to = to > total && total != -1? total : to;\n" + "                var query = Ext.util.Format.htmlEncode(store.baseParams[\"query\"]);\n" + "                var summaryMsg = CQ.I18n.getMessage(\"Results <b>{0}</b> - <b>{1}</b> of about <b>{2}</b> for <b>{3}</b>. (<b>{4}</b> seconds)\", [from, to, total, query, new Date().getElapsed(store.startTime) / 1000]);\n" + "                if(total == -1){\n" + "                   summaryMsg = CQ.I18n.getMessage(\"Results <b>{0}</b> - <b>{1}</b> for <b>{2}</b>. (<b>{3}</b> seconds)\", [from, to, query, new Date().getElapsed(store.startTime) / 1000]);\n" + "                }\n" + "                summaryEl = summaryTpl.insertBefore(\"resultslist\", {\n" + "                   msg:summaryMsg\n" + "                }, true);\n" + "                if (total > limit || total == -1) {\n" + "                    var currentPage = Math.floor((from / 10) + 1);\n" + "                    var pages = [];\n" + "                    if(total != -1){\n" + "                        var pageCount = total / limit;\n" + "                        for (var i=0; i<pageCount; i++) {\n" + "                            pages.push({ \n" + "                                number:i + 1,\n" + "                                currentPage:currentPage\n" + "                            });\n" + "                        }\n" + "                    }else{\n" + "                        pages.push({ \n" + "                            number:currentPage,\n" + "                            currentPage:currentPage\n" + "                        });\n" + "                    }\n" + "                    pagingEl = pagingTpl.insertAfter(\"resultslist\", {\n" + "                        previousPage:currentPage == 1 ? null : currentPage - 1,\n" + "                        nextPage:(currentPage == pages.length && total != -1) || (total == -1 && limit > records.length) ? null : currentPage + 1,\n" + "                        pages:pages\n" + "                    }, true);\n" + "                }\n" + "            }\n" + "        }\n" + "    }\n" + "});\n" + "var view = new Ext.DataView({\n" + "    applyTo:\"resultslist\",\n" + "    tpl:resultTpl,\n" + "    loadingText:\"" + I18n.get((HttpServletRequest)req, (String)"Searching...", (String)"Progress bar") + "\",\n" + "    store:searchStore,\n" + "    itemSelector:\"div.search-item\",\n" + "    deferEmptyText:true,\n" + "    emptyText:\"" + I18n.get((HttpServletRequest)req, (String)"Current search has no results") + "\",\n" + "    prepareData: function(data, index, record) {\n" + "        data.shortPath = Ext.util.Format.ellipsis(data.path, 100, true);\n" + "        return data;\n" + "    }\n" + "});\n" + "var searchBox = new CRX.ide.SearchField({\n" + "    renderTo:\"searchbox\",\n" + "    store:searchStore\n" + "});\n" + "var selectSearchResult = function(path) {\n" + "    var pathToOpen = CRX.Util.convertToTreePath(path);\n" + "    var mainPanel = Ext.getCmp(CRX.ide.MAIN_ID);\n" + "    mainPanel.loadPath(pathToOpen, true, true);\n" + "};\n" + "var loadSearchResults = function(page) {\n" + "    searchStore.reload({\n" + "        params:{\n" + "            start:((page - 1) * limit) + 1,\n" + "            limit:limit,\n" + "            \"_charset_\": \"utf-8\"\n" + "        }\n" + "    });\n" + "};\n" + "</script>\n");
    }
}