Author: hhubner Date: 2007-04-14 12:15:34 -0400 (Sat, 14 Apr 2007) New Revision: 2147
Added: trunk/projects/bos/payment-website/static/enable_tinymce.js Modified: trunk/projects/bos/m2/packages.lisp trunk/projects/bos/m2/poi.lisp trunk/projects/bos/payment-website/infosystem/da/satellitenkarte.htm trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm trunk/projects/bos/payment-website/infosystem/javascript.js trunk/projects/bos/payment-website/static/cms.js trunk/projects/bos/worldpay-test/poi-handlers.lisp trunk/projects/bos/worldpay-test/web-utils.lisp Log: Support YouTube movies as additional information elements for POIs.
Modified: trunk/projects/bos/m2/packages.lisp =================================================================== --- trunk/projects/bos/m2/packages.lisp 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/m2/packages.lisp 2007-04-14 16:15:34 UTC (rev 2147) @@ -151,6 +151,8 @@ #:airals #:poi-panoramas #:panoramas + #:poi-movies + #:movies #:make-poi-image #:update-poi-image #:poi
Modified: trunk/projects/bos/m2/poi.lisp =================================================================== --- trunk/projects/bos/m2/poi.lisp 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/m2/poi.lisp 2007-04-14 16:15:34 UTC (rev 2147) @@ -79,6 +79,7 @@ (images :update :initform nil) (airals :update :initform nil) (panoramas :update :initform nil) + (movies :update :initform nil) (published :update :initform nil)))
(deftransaction make-poi (language name &key title description area) @@ -96,7 +97,7 @@ (poi-images poi) t))
-(defun update-poi (poi language &key title subtitle description area icon published (images :not-set)) +(defun update-poi (poi language &key title subtitle description area icon published (images :not-set) (movies :not-set)) (with-transaction () (setf (slot-value poi 'published) published) (when title @@ -110,7 +111,9 @@ (when icon (setf (poi-icon poi) icon)) (when (listp images) - (setf (poi-images poi) images)))) + (setf (poi-images poi) images)) + (when (listp movies) + (setf (poi-movies poi) movies))))
(defmethod poi-center-x ((poi poi)) (first (poi-area poi))) @@ -150,17 +153,19 @@ (length (poi-images poi))) (format t "poi.thumbnail = ~D;~%" (length (poi-images poi))) (when (poi-airals poi) + (format t "poi.luftbild = ~D;~%" (store-object-id (first (poi-airals poi))))) (when (poi-panoramas poi) - (let ((panorama-ids (mapcar #'store-object-id (poi-panoramas poi)))) - (format t "poi.panoramas = [ ~D~{, ~D~} ];~%" (first panorama-ids) (rest panorama-ids)))) + (format t "poi.panoramas = [ ~{~D~^, ~} ];~%" (mapcar #'store-object-id (poi-panoramas poi)))) + (when (poi-movies poi) + (format t "poi.movies = [ ~{~S~^, ~} ];~%" (poi-movies poi))) (loop for slot-name in '(title subtitle description) - for javascript-name in '("imageueberschrift" "imageuntertitel" "imagetext") - for slot-values = (mapcar #'(lambda (image) - (escape-nl (slot-string image slot-name language))) - (poi-images poi)) - when slot-values - do (format t "poi.~A = [ ~S~{, ~S~} ];~%" javascript-name (car slot-values) (cdr slot-values))) + for javascript-name in '("imageueberschrift" "imageuntertitel" "imagetext") + for slot-values = (mapcar (lambda (image) + (escape-nl (slot-string image slot-name language))) + (poi-images poi)) + when slot-values + do (format t "poi.~A = [ ~{~S~^, ~} ];~%" javascript-name slot-values)) (format t "pois.push(poi);~%")) (dolist (allocation-area (remove-if (complement #'allocation-area-active-p) (class-instances 'allocation-area))) (destructuring-bind (x y) (allocation-area-center allocation-area)
Modified: trunk/projects/bos/payment-website/infosystem/da/satellitenkarte.htm =================================================================== --- trunk/projects/bos/payment-website/infosystem/da/satellitenkarte.htm 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/payment-website/infosystem/da/satellitenkarte.htm 2007-04-14 16:15:34 UTC (rev 2147) @@ -223,6 +223,12 @@ <div id="PanoramaFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right"> </div> </div> + <div id="Movie" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; border: 0px; visibility: hidden;"> + <div id="MovieApplet" style="position: absolute; top: 0px; left: 0px; width:360px; height:340px;"> + </div> + <div id="MovieFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right"> + </div> + </div> <div align="right"> <table width="360" height="360" border="0" cellpadding="0" cellspacing="0"> <tr>
Modified: trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm =================================================================== --- trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/payment-website/infosystem/de/satellitenkarte.htm 2007-04-14 16:15:34 UTC (rev 2147) @@ -222,13 +222,13 @@ </div> <div id="PanoramaFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right"> </div> -<!-- - <iframe src="about:blank" height="360" width="320" name="panorama" scrolling="no" - hspace="0" vspace="0" marginwidth="0" marginheight="0" frameborder="0"> - Panaramas können nur bei eingeschalteten IFRAMES angezeigt werden. - </iframe> ---> </div> + <div id="Movie" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; border: 0px; visibility: hidden;"> + <div id="MovieApplet" style="position: absolute; top: 0px; left: 0px; width:360px; height:340px;"> + </div> + <div id="MovieFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right"> + </div> + </div> <div align="right"> <table width="360" height="360" border="0" cellpadding="0" cellspacing="0"> <tr>
Modified: trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm =================================================================== --- trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/payment-website/infosystem/en/satellitenkarte.htm 2007-04-14 16:15:34 UTC (rev 2147) @@ -223,6 +223,12 @@ <div id="PanoramaFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right"> </div> </div> + <div id="Movie" style="position:absolute; width:360px; height:360px; z-index:9; left: 0px; top: 0px; border: 0px; visibility: hidden;"> + <div id="MovieApplet" style="position: absolute; top: 0px; left: 0px; width:360px; height:340px;"> + </div> + <div id="MovieFooter" style="position: absolute; top: 0px; left: 0px; width:360px; height:360px; color: white; background-color: black; " align="right"> + </div> + </div> <div align="right"> <table width="360" height="360" border="0" cellpadding="0" cellspacing="0"> <tr>
Modified: trunk/projects/bos/payment-website/infosystem/javascript.js =================================================================== --- trunk/projects/bos/payment-website/infosystem/javascript.js 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/payment-website/infosystem/javascript.js 2007-04-14 16:15:34 UTC (rev 2147) @@ -825,6 +825,7 @@ // Ebenen entsprechen ein- oder ausblenden hide_poi_panorama(); hide_poi_luftbild(); + hide_poi_movie();
n_profil = {}; display_selected_contract(); @@ -843,6 +844,7 @@ function show_poi_luftbild() { help_page = 'luftbild'; hide_poi_panorama(); + hide_poi_movie(); if (poi[aktuelles_objekt]['luftbild']) { document.getElementById("Luftbild").style.visibility = "visible"; } @@ -856,6 +858,7 @@ var the_poi = poi[aktuelles_objekt]; help_page = 'panorama'; hide_poi_luftbild(); + hide_poi_movie(); if (the_poi.panoramas) { var panorama_id = the_poi.panoramas[0]; document.getElementById("Panorama").style.visibility = "visible"; @@ -871,13 +874,37 @@
function hide_poi_panorama() { document.getElementById("Panorama").style.visibility = "hidden"; + document.getElementById("PanoramaApplet").innerHTML = ''; }
function show_poi_satbild() { hide_poi_luftbild(); // for now hide_poi_panorama(); + hide_poi_movie(); }
+function show_poi_movie() { + var the_poi = poi[aktuelles_objekt]; + help_page = 'movie'; + hide_poi_luftbild(); + hide_poi_panorama(); + if (the_poi.movies) { + var movie_url = the_poi.movies[0]; + document.getElementById("Movie").style.visibility = "visible"; + document.getElementById("PoiInfoText").innerHTML + = msg('Das Laden des Videos dauert einen Moment und benötigt Flash in Ihrem Browser.'); + document.getElementById("MovieApplet").innerHTML + = '<object width="360" height="340"> <param name="movie" value=" ' + + movie_url + '"> </param> <embed src=" ' + + movie_url + '" type="application/x-shockwave-flash" width="360" height="340"> </embed> </object>'; + } +} + +function hide_poi_movie() { + document.getElementById("Movie").style.visibility = "hidden"; + document.getElementById("MovieApplet").innerHTML = ''; +} + var poi_menu_items; var poi_active_menu_item;
@@ -913,6 +940,9 @@ if (the_poi.panoramas) { poi_menu_items.push([ msg('Panorama'), show_poi_panorama ]); } + if (the_poi.movies) { + poi_menu_items.push([ msg('Film'), show_poi_movie ]); + }
poi_active_menu_item = msg('Sat-Karte');
@@ -924,6 +954,7 @@
hide_poi_luftbild(); hide_poi_panorama(); + hide_poi_movie();
if (the_poi['luftbild']) { document.poiluftbild.src = "/image/" + the_poi['luftbild'];
Modified: trunk/projects/bos/payment-website/static/cms.js =================================================================== --- trunk/projects/bos/payment-website/static/cms.js 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/payment-website/static/cms.js 2007-04-14 16:15:34 UTC (rev 2147) @@ -1,5 +1,11 @@ // This may look like -*- Java -*-, but it really is ECMAScript
+// Allgemeine Initialisierungsfunktion fuer alle CMS-Seiten + +function init() { + update_movie_preview(); +} + // Formularcheck für Sponsoren-Erzeugung
function check_complete_sale() { @@ -56,3 +62,33 @@
return true; } + +function $(id) { return document.getElementById(id); } + +function update_movie_preview() +{ + if ($('movie') && $('movie_preview')) { + var url = $('movie').value; + if (url == "") { + $('movie_preview').innerHTML = ''; + } else { + $('movie_preview').innerHTML = '<object width="360" height="340"> <param name="movie" value=" ' + url + '"> </param> <embed src=" ' + url + '" type="application/x-shockwave-flash" width="360" height="340"> </embed> </object>'; + } + } +} + +function parse_youtube_link (input) +{ + var text = input.value; + + text = text.replace(/.*src=" (http://www.youtube.com[^"]+).*/, "$1") + input.value = text; + if ((input.value != "") && !input.value.match(/^http://www.youtube.com/v/\S+/)) { + alert("Invalid YouTube URL: " + input.value); + input.value = ""; + return false; + } else { + update_movie_preview(); + return true; + } +}
Added: trunk/projects/bos/payment-website/static/enable_tinymce.js =================================================================== --- trunk/projects/bos/payment-website/static/enable_tinymce.js 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/payment-website/static/enable_tinymce.js 2007-04-14 16:15:34 UTC (rev 2147) @@ -0,0 +1,4 @@ +tinyMCE.init({ + mode : "textareas", + theme : "simple" +});
Modified: trunk/projects/bos/worldpay-test/poi-handlers.lisp =================================================================== --- trunk/projects/bos/worldpay-test/poi-handlers.lisp 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/worldpay-test/poi-handlers.lisp 2007-04-14 16:15:34 UTC (rev 2147) @@ -150,11 +150,25 @@ ((:input :type "file" :name "image-file")) :br (submit-button "upload-panorama" "upload-panorama")))) - (:tr (:td (submit-button "save" "save") (submit-button "delete" "delete" :confirm "Really delete the POI?")))))))) + (:tr (:td "movie") + (:td (html "URL or 'embed' string: " + ((:input :type "text" + :size "50" + :name "movie" + :id "movie" + :value (or (first (poi-movies poi)) "") + :onchange "parse_youtube_link(this)")) + " " + (when (poi-movies poi) + (html :br (submit-button "delete-movie" "delete-movie" :confirm "Really delete the movie?"))) + :br + ((:div :id "movie_preview" :style "height: 340px; width: 360px;") "")))) + (:tr (:td (submit-button "save" "save") + (submit-button "delete" "delete" :confirm "Really delete the POI?"))))))))
(defmethod handle-object-form ((handler edit-poi-handler) (action (eql :save)) (poi poi) req) - (with-query-params (req published title subtitle description language x y icon) + (with-query-params (req published title subtitle description language x y icon movie) (unless language (setq language (session-variable :language))) (let ((args (list :title title :published published @@ -163,6 +177,8 @@ :icon icon))) (when (and x y) (setq args (append args (list :area (list (parse-integer x) (parse-integer y)))))) + (when movie + (setq args (append args (list :movies (list movie))))) (apply #'update-poi poi language args)) (with-bos-cms-page (req :title "POI has been updated") (html (:h2 "Your changes have been saved") @@ -204,6 +220,13 @@ (store-object-id poi)) req))
(defmethod handle-object-form ((handler edit-poi-handler) + (action (eql :delete-movie)) + (poi poi) + req) + (change-slot-values poi 'movies nil) + (redirect (format nil "/edit-poi/~D" (store-object-id poi)) req)) + +(defmethod handle-object-form ((handler edit-poi-handler) (action (eql :upload-panorama)) (poi poi) req)
Modified: trunk/projects/bos/worldpay-test/web-utils.lisp =================================================================== --- trunk/projects/bos/worldpay-test/web-utils.lisp 2007-04-14 16:14:58 UTC (rev 2146) +++ trunk/projects/bos/worldpay-test/web-utils.lisp 2007-04-14 16:15:34 UTC (rev 2147) @@ -6,6 +6,22 @@ (defclass bos-website (website) ())
+(defmethod website-show-page ((website bos-website) fn title) + (html + (princ "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" *html-stream*) + (princ #\Newline *html-stream*) + (:html + (:head + (bknr.web::header :title title)) + ((:body :class "cms" :onload "init();") + ((:div :class "navigation") + (bknr.web::logo) + (:h1 (:princ-safe (website-name website))) + (bknr.web::navigation)) + (:h1 (:princ-safe title)) + (funcall fn) + (website-session-info website))))) + (defmethod website-session-info ((website bos-website)) (html :br :hr ((:p :class "footer")