1 ##################################################
\r
2 ### Notice Update: 8/14/2007
\r
3 ### Copyright 2007 Berlin Brown
\r
4 ### Copyright 2006-2007 Newspiritcompany.com
\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
10 ### See LICENSE.BOTLIST for more information.
\r
12 ### The SOFTWARE PRODUCT and CODE are protected by copyright and
\r
13 ### other intellectual property laws and treaties.
\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
19 ##################################################
\r
21 ### Created: 11/4/2006
\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
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
54 def getPageOffset(request)
\r
55 page = request.getParameter("offsetpage")
\r
62 def getModel(request)
\r
64 mostrecent_mode = false
\r
65 filterset = request.getParameter("filterset")
\r
66 nextPage = getPageOffset(request)
\r
71 if filterset == "mostrecent"
\r
72 mostrecent_mode = true
\r
76 @controller.auditLogPage(request, "botverse.html")
\r
78 # Safe session create, botverse is a core application,
\r
79 # Create the session if not available
\r
80 BotListSessionManager.safeCreateSession(request)
\r
82 curCal = JCalendar::getInstance()
\r
83 curCal.add(JCalendar::DATE, -7)
\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
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
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
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
111 pagingForm.end = pagingForm.begin + 4
\r
116 # Extract the banner headline to display
\r
117 banner = @dao_banner.readBanner('botverse')
\r
119 # Set the default generic validator
\r
120 @controller.setValidator(BotListGenericValidator.new)
\r
122 # Determine if media is enabled, also collect list
\r
123 mediaEnabled = @dao_settings.mediaEnabled
\r
125 mediaList = @dao_active_feeds.readActiveMediaList('B', 3) if mediaEnabled
\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
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
150 @daohelper.createLink(link)
\r
155 BotverseController.new($controller)
\r
157 ## End of Script ##
\r