Mercurial Hosting > nabble
annotate src/global/web/Index.java @ 47:72765b66e2c3
remove mailing list code
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 18 Jun 2021 17:44:24 -0600 |
parents | 5ea557eece1f |
children | 56accc959f8c |
rev | line source |
---|---|
0 | 1 |
2 package global.web; | |
3 | |
4 import fschmidt.util.servlet.JtpContext; | |
5 import fschmidt.util.servlet.ServletUtils; | |
6 import global.HtmlGlobalUtils; | |
7 import global.Site; | |
8 import nabble.view.web.more.ForumStart; | |
9 import org.apache.lucene.index.Term; | |
10 import org.apache.lucene.search.IndexSearcher; | |
11 import org.apache.lucene.search.TermQuery; | |
12 import org.apache.lucene.search.Query; | |
13 import org.apache.lucene.search.ScoreDoc; | |
14 import org.apache.lucene.search.TopDocs; | |
15 import org.slf4j.Logger; | |
16 import org.slf4j.LoggerFactory; | |
17 | |
18 import javax.servlet.ServletException; | |
19 import javax.servlet.http.HttpServlet; | |
20 import javax.servlet.http.HttpServletRequest; | |
21 import javax.servlet.http.HttpServletResponse; | |
22 import java.io.IOException; | |
23 import java.io.PrintWriter; | |
24 | |
25 | |
26 public final class Index extends HttpServlet { | |
27 | |
28 private static final Logger logger = LoggerFactory.getLogger(Index.class); | |
29 | |
30 // private static boolean hasJobsAtNabble = Init.get("hasJobsAtNabble",false); | |
31 | |
32 public static String path() { | |
33 return "/"; | |
34 } | |
35 | |
36 protected void service(HttpServletRequest request,HttpServletResponse response) | |
37 throws ServletException, IOException | |
38 { | |
39 JtpContext jtpContext = (JtpContext)getServletContext().getAttribute(JtpContext.attrName); | |
40 jtpContext.setEtag(request,response,"x"); | |
41 PrintWriter out = response.getWriter(); | |
42 | |
43 out.print( "\r\n<!DOCTYPE html>\r\n<html lang=\"en\">\r\n <head>\r\n " ); | |
44 HtmlGlobalUtils.head(request, response, "Free Forum • Embeddable Web Apps"); | |
47
72765b66e2c3
remove mailing list code
Franklin Schmidt <fschmidt@gmail.com>
parents:
35
diff
changeset
|
45 out.print( "\r\n <link rel=\"canonical\" href=\"https://www.nabble.com/\">\r\n <meta name=\"description\" content=\"Create a free forum online in less than one minute. All forums are embeddable and fully customizable with scripting language. Choose a unique style and build a discussion board for your community.\" />\r\n <meta name=\"keywords\" content=\"free forum, free photo gallery, free newspaper, free blog, best forum, free message board, message board hosting, bulletin board, customizable, private forum, phpBB, vBulletin, hosted, communities\">\r\n <meta name=\"google-site-verification\" content=\"SUurO4gVJ46SZyzANkH4pJBGH8q-6Bv5P-ZgRBH8Cck\" />\r\n <style>\r\n div[actions] i.fa.fa-chevron-right {\r\n color: #DDD;\r\n float: right;\r\n }\r\n a[fixed] {\r\n margin-top: -3em;\r\n position: absolute;\r\n right: 1em;\r\n text-decoration: none;\r\n background-color: #555;\r\n border-radius: .5em;\r\n padding: .5em;\r\n color: #D0D0D0;\r\n text-shadow: 0px 1px 1px black;\r\n border-bottom: 1px dotted #757474;\r\n }\r\n @media (max-width: 950px) {\r\n div[footer] {\r\n padding-bottom: 5em;\r\n }\r\n }\r\n div[note] {\r\n margin-top: 1em;\r\n text-align: right;\r\n }\r\n </style>\r\n <script async=\"true\" src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>\r\n <script>\r\n (adsbygoogle = window.adsbygoogle || []).push({\r\n google_ad_client: \"ca-pub-6750305871516672\",\r\n enable_page_level_ads: true\r\n });\r\n </script>\r\n </head>\r\n <body lato>\r\n " ); |
0 | 46 HtmlGlobalUtils.header(request,response); |
21 | 47 out.print( "\r\n <div full>\r\n <div content center>\r\n <span style=\"display:inline-block\">\r\n <div col1 center>\r\n <h1 oswald>Free Forum Hosting & Online Web Apps!</h1>\r\n <h2 lato gray>Clean Look <span light>•</span> Embeddable <span light>•</span> Customizable</h2>\r\n <img src=\"/assets/images/home.png\" alt=\"Free forum hosting and online embeddable apps\"/>\r\n </div>\r\n <div col2 actions>\r\n <ul>\r\n <li><a href=\"" ); |
0 | 48 out.print( (HtmlGlobalUtils.nabbleContextUrl) ); |
49 out.print( (ForumStart.path("forum")) ); | |
50 out.print( "\" title=\"Click to create a free forum\">Create Free Forum</a> <i class=\"fa fa-chevron-right\"></i></li>\r\n <li><a href=\"" ); | |
51 out.print( (HtmlGlobalUtils.nabbleContextUrl) ); | |
52 out.print( (ForumStart.path("gallery")) ); | |
53 out.print( "\" title=\"Click to create a free photo gallery\">Create Photo Gallery</a> <i class=\"fa fa-chevron-right\"></i></li>\r\n <li><a href=\"" ); | |
54 out.print( (HtmlGlobalUtils.nabbleContextUrl) ); | |
55 out.print( (ForumStart.path("newspaper")) ); | |
56 out.print( "\" title=\"Click to create a free newspaper\">Create News Site</a> <i class=\"fa fa-chevron-right\"></i></li>\r\n <li><a href=\"" ); | |
57 out.print( (HtmlGlobalUtils.nabbleContextUrl) ); | |
58 out.print( (ForumStart.path("blog")) ); | |
35 | 59 out.print( "\" title=\"Click to create a free blog\">Create Blog</a> <i class=\"fa fa-chevron-right\"></i></li>\r\n </ul>\r\n </div>\r\n </span>\r\n </div>\r\n <div content paddingTop>\r\n <div col33 center>\r\n <h2 oswald>Multi Language</h2>\r\n <ul floating>\r\n <li>English</li>\r\n <li>Čeština (Czech Republic)</li>\r\n <li>Español</li>\r\n <li>Français</li>\r\n <li>Polski</li>\r\n <li>Português (Brasil)</li>\r\n <li>Svenska</li>\r\n <li>Türkçe</li>\r\n <li>Русский</li>\r\n <li>Ελληνικά</li>\r\n <li>中文 (简体)</li>\r\n <li><a href=\"http://support.nabble.com/Nabble-Translations-f6669344.html\">Translate to other languages</a> »</li>\r\n </ul>\r\n </div>\r\n <div col33 center>\r\n <h2 oswald>Embed into any Website</h2>\r\n <p lineHeight marginHorizontal>All Nabble apps are naturally embeddable, which means that they can be easily displayed inside any web page.\r\n </p>\r\n </div>\r\n <div col33 center>\r\n <h2 oswald>Fully Customizable</h2>\r\n <p lineHeight marginHorizontal>All Nabble apps are built with NAML, a scripting language that gives you full control over the app pages.</p>\r\n </div>\r\n </div>\r\n <div content center paddingTop>\r\n <h2 oswald>Browse Active Nabble Apps</h2>\r\n " ); |
0 | 60 topSites(out); |
61 out.print( "\r\n </div>\r\n </div>\r\n " ); | |
62 HtmlGlobalUtils.footer(request,response); | |
63 out.print( "\r\n" ); | |
64 /* | |
65 out.print( "\r\n <a fixed href=\"http://www.blasma.com\">Help design a new forum <i class=\"fa fa-chevron-right\"></i></a>\r\n" ); | |
66 */ | |
67 out.print( "\r\n </body>\r\n</html>\r\n" ); | |
68 | |
69 } | |
70 | |
71 static Query query = new TermQuery(new Term(Site.EMBARRASSING_FLD,"false")); | |
72 | |
73 private static void topSites(PrintWriter out) | |
74 throws ServletException, IOException | |
75 { | |
76 IndexSearcher searcher; | |
77 TopDocs hits; | |
78 try { | |
79 searcher = new IndexSearcher(Site.dir()); | |
80 hits = searcher.search( query, 60, Site.SORT_BY_VALUE ); | |
81 } catch(IOException e) { | |
82 logger.error("Index error", e); | |
83 | |
84 out.print( "[Rebuilding Index]" ); | |
85 | |
86 return; | |
87 } | |
88 try { | |
89 | |
90 out.print( "\r\n<ul floating center>\r\n" ); | |
91 | |
92 for( ScoreDoc sd : hits.scoreDocs ) { | |
93 Site site = new Site( searcher.doc(sd.doc) ); | |
94 | |
95 out.print( "\r\n<li>" ); | |
96 out.print( (site.link()) ); | |
97 out.print( "</li>\r\n" ); | |
98 | |
99 } | |
100 | |
101 out.print( "\r\n</ul>\r\n<div style=\"padding-top:.5em;clear:both\">\r\n<a bold href=\"" ); | |
102 out.print( (RootForums.path()) ); | |
103 out.print( "\" title=\"View more active forums and apps\">View More</a></b> <i class=\"fa fa-chevron-right\"></i>\r\n</div>\r\n" ); | |
104 | |
105 } finally { | |
106 searcher.close(); | |
107 } | |
108 } | |
109 | |
110 } | |
111 |