WelcomeServlet.java
11.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
* 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");
}
}