adding all of botlist, initial add
[botlist.git] / openbotlist / WEB-INF / jsps / botverse / botverse.rb
blob5dd56a45a74f360a7a31fb1930e7e5122d8ffa41
1 ##################################################\r
2 ### Notice Update: 8/14/2007\r
3 ### Copyright 2007 Berlin Brown\r
4 ### Copyright 2006-2007 Newspiritcompany.com\r
5 ### \r
6 ### This SOURCE FILE is licensed to NEWSPIRITCOMPANY.COM.  Unless\r
7 ### otherwise stated, use or distribution of this program \r
8 ### for commercial purpose is prohibited.\r
9 ### \r
10 ### See LICENSE.BOTLIST for more information.\r
11 ###\r
12 ### The SOFTWARE PRODUCT and CODE are protected by copyright and \r
13 ### other intellectual property laws and treaties. \r
14 ###  \r
15 ### Unless required by applicable law or agreed to in writing, software\r
16 ### distributed  under the  License is distributed on an "AS IS" BASIS,\r
17 ### WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or\r
18 ### implied.\r
19 ##################################################\r
21 ### Created: 11/4/2006\r
22 ### botverse.rb\r
23 ### botverse - view link listings\r
25 include_class 'org.spirit.form.BotListPostListingForm' unless defined? BotListPostListingForm\r
26 include_class 'org.spirit.form.BotListGenericPagingForm' unless defined? BotListGenericPagingForm\r
27 include_class 'org.spirit.bean.impl.BotListPostListing' unless defined? BotListPostListing\r
28 include_class 'org.spirit.bean.impl.BotListCityListing' unless defined? BotListCityListing\r
30 include_class 'org.spirit.contract.BotListContractManager' unless defined? BotListContractManager\r
31 include_class 'org.spirit.util.BotListSessionManager' unless defined? BotListSessionManager\r
32 include_class 'org.spirit.util.BotListCookieManager' unless defined? BotListCookieManager\r
33 include_class 'org.spirit.util.BotListConsts' unless defined? BotListConsts\r
34 include_class 'org.spirit.util.text.KeywordProcessor' unless defined? KeywordProcessor\r
35 include_class 'org.spirit.spring.validate.BotListGenericValidator' unless defined? BotListGenericValidator\r
37 include_class 'org.spirit.form.ext.BotListMapEntityLink' unless defined? BotListMapEntityLink\r
39 include_class 'org.apache.commons.logging.Log' unless defined? Log\r
40 include_class 'org.apache.commons.logging.LogFactory' unless defined? LogFactory\r
41 include_class('java.util.Calendar') { 'JCalendar' } unless defined? JCalendar\r
43 class BotverseController\r
44                 \r
45   def initialize(controller)\r
46     @controller = controller\r
47     @daohelper = @controller.entityLinksDao\r
48     @dao_banner = @controller.adminMainBannerDao\r
49     @dao_settings = @controller.coreSettings\r
50     @dao_active_feeds = @controller.activeMediaFeedsDao\r
51   end    \r
53   # get page offset\r
54   def getPageOffset(request)\r
55     page = request.getParameter("offsetpage")\r
56     if !page.nil?\r
57       return page.to_i()\r
58     end\r
59   end\r
60   \r
61   # Generate the view\r
62   def getModel(request)\r
64     mostrecent_mode = false\r
65     filterset = request.getParameter("filterset") \r
66     nextPage = getPageOffset(request)\r
67     if not nextPage\r
68       nextPage = 0\r
69     end\r
70     \r
71     if filterset == "mostrecent"\r
72       mostrecent_mode = true\r
73     end\r
75     # Audit the request\r
76     @controller.auditLogPage(request, "botverse.html")\r
77     \r
78     # Safe session create, botverse is a core application,\r
79     # Create the session if not available\r
80     BotListSessionManager.safeCreateSession(request)\r
81     \r
82     curCal = JCalendar::getInstance()\r
83     curCal.add(JCalendar::DATE, -7)\r
84     \r
85     if mostrecent_mode\r
86           # For MySQL specific date filter: where (links.createdOn > DATE_SUB(CURRENT_DATE, INTERVAL 100 DAY))\r
87           # Or hybernate specific approach: from ApplData data where (day(current_date()) - day(links.createdOn)) > 200)\r
88       query = "from org.spirit.bean.impl.BotListEntityLinks as links order by links.id desc"\r
89     else\r
90       query = "from org.spirit.bean.impl.BotListEntityLinks as links where (links.createdOn > (current_date() - 120)) order by links.rating desc, links.id desc, links.views desc"\r
91     end\r
92     \r
93     # Override any existing query for keytag search\r
94     if filterset == "defkeytag"\r
95        defkeytagid = request.getParameter("defkeytagid")\r
96        defkeyfilter = KeywordProcessor.filterAlphaText(defkeytagid);\r
97        query = "from org.spirit.bean.impl.BotListEntityLinks as links where links.keywords like '%#{defkeyfilter}%' order by links.createdOn desc"\r
98     end\r
99     postListings = @daohelper.pageEntityLinks(query, nextPage, BotListConsts::MAX_RESULTS_PAGE)    \r
101     # Total count of links\r
102     totalLinks = @daohelper.linkCount    \r
103     totalPages = totalLinks / BotListConsts::MAX_RESULTS_PAGE\r
104     pagingForm = BotListGenericPagingForm.new\r
105     pagingForm.curPage = nextPage\r
106     pagingForm.pageOffset = (nextPage * BotListConsts::MAX_RESULTS_PAGE)\r
107     pagingForm.begin = nextPage - 1\r
108     if pagingForm.begin < 0\r
109       pagingForm.begin = 0\r
110     end\r
111     pagingForm.end = pagingForm.begin + 4\r
112     if not filterset\r
113       filterset = ""\r
114     end\r
115     \r
116     # Extract the banner headline to display\r
117     banner = @dao_banner.readBanner('botverse')\r
118     \r
119     # Set the default generic validator    \r
120     @controller.setValidator(BotListGenericValidator.new)\r
121     \r
122     # Determine if media is enabled, also collect list\r
123     mediaEnabled = @dao_settings.mediaEnabled\r
124     mediaList = nil\r
125     mediaList = @dao_active_feeds.readActiveMediaList('B', 3) if mediaEnabled\r
126     \r
127     userInfo = BotListContractManager::getUserInfo(request)\r
128     map = BotListMapEntityLink.new    \r
129     map['headline'] = banner.headline if !banner.nil?\r
130     map['listings'] = postListings\r
131     map['userInfo'] = userInfo\r
132     map['pagingform'] = pagingForm\r
133     map['filterset'] = filterset\r
134     map['mediaListEnabled'] = mediaEnabled\r
135     map['mediaList'] = mediaList\r
136     return map\r
137   end\r
138   \r
139   # Processed when the form is submitted, \r
140   # see the controller 'processFormSubmission()' method\r
141   def onSubmit(request, response, form, errors)\r
142     ratingId = form.ratingId\r
143     ratingId = ratingId.to_i\r
144     link = @daohelper.readLinkListing(ratingId)    \r
145     if form.operation == 'upvote'\r
146         link.rating = link.rating + 1\r
147     elsif form.operation == 'downvote'\r
148         link.rating = link.rating - 1\r
149     end    \r
150     @daohelper.createLink(link)\r
151     return form\r
152   end\r
153 end\r
155 BotverseController.new($controller)\r
157 ## End of Script ##\r