Revision: 4092 Author: hans URL: http://bknr.net/trac/changeset/4092
Checkpoint new POI microsite work.
A trunk/projects/bos/payment-website/static/movie-icon.gif A trunk/projects/bos/payment-website/static/panorama-icon.gif U trunk/projects/bos/payment-website/static/poi-ms.css U trunk/projects/bos/payment-website/static/poi-ms.html U trunk/projects/bos/payment-website/static/poi-ms.js U trunk/projects/bos/web/poi-handlers.lisp
Added: trunk/projects/bos/payment-website/static/movie-icon.gif =================================================================== (Binary files differ)
Property changes on: trunk/projects/bos/payment-website/static/movie-icon.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream
Added: trunk/projects/bos/payment-website/static/panorama-icon.gif =================================================================== (Binary files differ)
Property changes on: trunk/projects/bos/payment-website/static/panorama-icon.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream
Modified: trunk/projects/bos/payment-website/static/poi-ms.css =================================================================== --- trunk/projects/bos/payment-website/static/poi-ms.css 2008-11-27 14:15:14 UTC (rev 4091) +++ trunk/projects/bos/payment-website/static/poi-ms.css 2008-11-28 01:07:18 UTC (rev 4092) @@ -2,13 +2,13 @@ h2 { font-size: 160% } h3 { font-size: 120% }
-ul.media-list li { +ul#media-list li { position: relative; height: 44px; margin-left: 42px; }
-ul.media-list li img { +ul#media-list li img { position: absolute; left: -42px; top: 2px;
Modified: trunk/projects/bos/payment-website/static/poi-ms.html =================================================================== --- trunk/projects/bos/payment-website/static/poi-ms.html 2008-11-27 14:15:14 UTC (rev 4091) +++ trunk/projects/bos/payment-website/static/poi-ms.html 2008-11-28 01:07:18 UTC (rev 4092) @@ -45,7 +45,7 @@ </div> </div> <div class="yui-b"> - <ul class="media-list"> + <ul id="media-list"> <li> <img src="/poi-image/sunbear-sanctuary/1" width="40" height="40"/> 20.03.2004<br/> @@ -80,13 +80,6 @@ </div> </div> <div id="ft"> - <p> - Footer - Lorem ipsum dolor sit amet, consectetuer adipiscing - elit. Maecenas sit amet metus. Nunc quam elit, posuere nec, - auctor in, rhoncus quis, dui. Aliquam erat volutpat. Ut - dignissim, massa sit amet dignissim cursus, quam lacus - feugiat. - </p> </div> </div> </body>
Modified: trunk/projects/bos/payment-website/static/poi-ms.js =================================================================== --- trunk/projects/bos/payment-website/static/poi-ms.js 2008-11-27 14:15:14 UTC (rev 4091) +++ trunk/projects/bos/payment-website/static/poi-ms.js 2008-11-28 01:07:18 UTC (rev 4092) @@ -2,7 +2,69 @@
$(document).ready(init);
+var poi_id; + +Date.prototype.renderDate = function() { + return this.getDate() + '.' + this.getMonth() + '.' + (1900 + this.getYear()); +} + +var makeMediumMenuEntry = { + image: function (medium) { + return LI(null, + IMG({ src: '/image/' + medium.id, width: 40, height: 40 }), + (new Date(medium.timestamp)).renderDate(), + BR(), + A({ href: '#' }, medium.title || medium.name)); + }, + panorama: function (medium) { + return LI(null, + IMG({ src: '/static/panorama-icon.gif', width: 40, height: 40 }), + (new Date(medium.timestamp)).renderDate(), + BR(), + A({ href: '#' }, medium.title || medium.name)); + }, + movie: function (medium) { + return LI(null, + IMG({ src: '/static/movie-icon.gif', width: 40, height: 40 }), + (new Date(medium.timestamp)).renderDate(), + BR(), + A({ href: '#' }, medium.title || medium.name)); + } + +}; + +function loadPoi(poi) { + document.title = poi.title; + $('#hd h1').html(poi.title); + $('#hd h2').html(poi.subtitle); + $('#content').empty().html(poi.description); + $('#media-list').empty(); + map(function (medium) { + if (makeMediumMenuEntry[medium.mediumType]) { + $('#media-list').append(makeMediumMenuEntry[medium.mediumType](medium)); + } + }, poi.media); +} + +function loadData(data) { + var pois = data.pois; + + for (var i in pois) { + if (pois[i].id == poi_id) { + loadPoi(pois[i]); + return; + } + } + + alert('invalid poi id (not found)'); +} + function init() { + poi_id = document.location.hash.replace(/#/, "");
- alert('hey ho!'); + if (poi_id.match(/^[0-9]+$/)) { + loadJSONDoc('/poi-json').addCallback(loadData); + } else { + alert('invalid poi id'); + } } \ No newline at end of file
Modified: trunk/projects/bos/web/poi-handlers.lisp =================================================================== --- trunk/projects/bos/web/poi-handlers.lisp 2008-11-27 14:15:14 UTC (rev 4091) +++ trunk/projects/bos/web/poi-handlers.lisp 2008-11-28 01:07:18 UTC (rev 4092) @@ -388,15 +388,20 @@ (or (sponsor-country (contract-sponsor contract)) "de") (length (contract-m2s contract))))
+(defun poi-handle-if-modified-since (&optional (pois (class-instances 'poi))) + (let ((pois-last-change (reduce #'max pois + :key (lambda (poi) (store-object-last-change poi 1)) + :initial-value 0))) + (hunchentoot:handle-if-modified-since pois-last-change) + (setf (hunchentoot:header-out :last-modified) + (hunchentoot:rfc-1123-date pois-last-change)))) + (defmethod handle ((handler poi-javascript-handler)) + (poi-handle-if-modified-since) (let* ((last-paid-contracts (last-paid-contracts)) - (timestamp (max (reduce #'max (class-instances 'poi) - :key (lambda (poi) (store-object-last-change poi 1))) - (reduce #'max last-paid-contracts - :key (lambda (contract) (store-object-last-change contract 0)))))) + (timestamp (reduce #'max last-paid-contracts + :key (lambda (contract) (store-object-last-change contract 0))))) (hunchentoot:handle-if-modified-since timestamp) - (setf (hunchentoot:header-out :last-modified) - (hunchentoot:rfc-1123-date timestamp)) (with-http-response (:content-type "text/html; charset=UTF-8") (with-http-body () (html @@ -617,13 +622,10 @@ ())
(defmethod handle ((handler poi-kml-all-handler)) + (let* ((relevant-pois (remove-if-not #'(lambda (poi) (and (poi-area poi) (poi-published-earth poi))) - (class-instances 'poi))) - (pois-last-change (reduce #'max relevant-pois :key (lambda (poi) (store-object-last-change poi 1)) - :initial-value 0))) - (hunchentoot:handle-if-modified-since pois-last-change) - (setf (hunchentoot:header-out :last-modified) - (hunchentoot:rfc-1123-date pois-last-change)) + (class-instances 'poi)))) + (poi-handle-if-modified-since relevant-pois) (with-query-params ((lang "en")) (with-xml-response () ;; (sax:processing-instruction cxml::*sink* "xml-stylesheet" "href="/static/tri.xsl" type="text/xsl"") @@ -689,6 +691,7 @@ ())
(defmethod handle ((handler poi-json-handler)) + (poi-handle-if-modified-since) (with-json-response () (json:with-object-element ("pois") (bos.m2:pois-as-json (request-language))))) \ No newline at end of file