Changeset 2241
- Timestamp:
- 10/20/07 11:40:58 (1 year ago)
- Files:
-
- branches/bos/projects/bos/m2/m2.lisp (modified) (3 diffs)
- branches/bos/projects/bos/m2/mail-generator.lisp (modified) (7 diffs)
- branches/bos/projects/bos/m2/packages.lisp (modified) (1 diff)
- branches/bos/projects/bos/payment-website/Manual-Regnskov (forside).doc (added)
- branches/bos/projects/bos/payment-website/Manual_Regnskov.doc (added)
- branches/bos/projects/bos/payment-website/templates/da/contact.xml (modified) (1 diff)
- branches/bos/projects/bos/payment-website/templates/da/info-request.xml (modified) (1 diff)
- branches/bos/projects/bos/payment-website/templates/da/ueberweisung.xml (modified) (1 diff)
- branches/bos/projects/bos/payment-website/templates/da/welcome-email.template (added)
- branches/bos/projects/bos/payment-website/templates/de/ueberweisung.xml (modified) (1 diff)
- branches/bos/projects/bos/payment-website/templates/de/welcome-email.template (added)
- branches/bos/projects/bos/payment-website/templates/en/welcome-email.template (added)
- branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp (modified) (1 diff)
- branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp (modified) (8 diffs)
- branches/bos/projects/bos/worldpay-test/tags.lisp (modified) (3 diffs)
- branches/bos/projects/bos/worldpay-test/worldpay-test.lisp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/bos/projects/bos/m2/m2.lisp
r2175 r2241 113 113 ;;; SPONSOR-INFO-TEXT (sponsor) => string 114 114 ;;; SPONSOR-COUNTRY (sponsor) => string 115 ;;; SPONSOR-LANGUAGE (sponsor) => string (preferred language) 115 116 ;;; SPONSOR-CONTRACTS (sponsor) => list of contract 116 117 ;;; … … 118 119 119 120 (define-persistent-class sponsor (user) 120 ((master-code :read :initform nil) 121 (info-text :update :initform nil) 122 (country :update :initform nil) 123 (contracts :update :initform nil)) 121 ((master-code :read :initform nil) 122 (info-text :update :initform nil) 123 (country :update :initform nil) 124 (contracts :update :initform nil) 125 (language :update :initform nil)) 124 126 (:default-initargs :full-name nil :email nil)) 125 127 … … 135 137 (deftransaction sponsor-set-country (sponsor newval) 136 138 (setf (sponsor-country sponsor) newval)) 139 140 (deftransaction sponsor-set-language (sponsor newval) 141 (setf (sponsor-language sponsor) newval)) 142 143 (defmethod sponsor-language :around ((sponsor sponsor)) 144 (or (call-next-method) 145 "en")) 137 146 138 147 (defvar *sponsor-counter* 0) branches/bos/projects/bos/m2/mail-generator.lisp
r2173 r2241 3 3 (enable-interpol-syntax) 4 4 5 (defvar *country->office-email* '(("DK" . "service@bosdanmark.dk"))) 5 (defvar *country->office-email* '(("DK" . "bosdanmark.regnskov@gmail.com") 6 ("SE" . "bosdanmark.regnskov@gmail.com"))) 7 8 (defun country->office-email (country) 9 (or (cdr (assoc country *country->office-email* :test #'string-equal)) 10 *office-mail-address*)) 6 11 7 12 (defun contract-office-email (contract) 8 13 "Return the email address of the MXM office responsible for handling a contract" 9 (or (cdr (assoc (sponsor-country (contract-sponsor contract)) *country->office-email* :test #'string-equal)) 10 *office-mail-address*)) 14 (country->office-email (sponsor-country (contract-sponsor contract)))) 11 15 12 16 (defun send-system-mail (&key (to *office-mail-address*) (subject "(no subject") (text "(no text)") (content-type "text/plain; charset=UTF-8") more-headers) … … 27 31 text))) 28 32 29 (defun mail-info-request (email )33 (defun mail-info-request (email country) 30 34 (send-system-mail :subject "Mailing list request" 35 :to (country->office-email country) 31 36 :text #?"Please enter into the mailing list: 32 37 … … 38 43 (format t "mail-fiscal-certificate-to-office: ~a name: ~a address: ~a country: ~a~%" contract name address country)) 39 44 45 (defun mail-template-directory (language) 46 "Return the directory where the mail templates are stored" 47 (merge-pathnames (make-pathname :directory `(:relative "templates" ,(string-downcase language))) 48 (symbol-value (find-symbol "*WEBSITE-DIRECTORY*" "WORLDPAY-TEST")))) 49 50 (defun rest-of-file (file) 51 (let ((result (make-array (- (file-length file) 52 (file-position file)) 53 :element-type 'character))) 54 (read-sequence result file) 55 result)) 56 57 (defun make-welcome-mail (sponsor) 58 "Return a plist containing the :subject and :text options to generate an email with send-system-mail" 59 (let ((vars (list :sponsor-id (sponsor-id sponsor) 60 :master-code (sponsor-master-code sponsor)))) 61 (labels 62 ((get-var (var-name) (getf vars var-name))) 63 (with-open-file (template (merge-pathnames #p"welcome-email.template" 64 (mail-template-directory (sponsor-language sponsor)))) 65 (let ((subject (expand-variables (read-line template) #'get-var)) 66 (text (expand-variables (rest-of-file template) #'get-var))) 67 (list :subject subject :text text)))))) 68 40 69 (defun mail-instructions-to-sponsor (contract email) 41 (let* ((sponsor (contract-sponsor contract)) 42 (sponsor-id (sponsor-id sponsor)) 43 (master-code (sponsor-master-code sponsor))) 44 (send-system-mail :to email 45 :subject "Willkommen zur Samboja Lestari Informations-Website" 46 :text #?"Sehr geehrte(r) Sponsor(in), 47 48 wir haben Ihr Sponsoren-Profil fuer Sie eingerichtet. 49 50 Ihre Sponsoren-ID lautet: $(sponsor-id) 51 Ihr Master-Code lautet: $(master-code) 52 53 Besuchen Sie unsere Website http://create-rainforest.org/ regelmaessig, 54 um sich ein Bild darueber zu verschaffen, was auf \"Ihren\" Quadratmetern 55 passiert. 56 57 Bedienungsanleitung: 58 59 Mit Hilfe Ihrer Sponsoren-ID und Ihrem Kennwort oder auch Mastercode 60 koennen Sie sich auf der Webseite in Ihr persoenliches Profil einloggen 61 und \"Ihre\" Quadratmeter lokalisieren. 62 Die Zugangsdaten können in der linken unteren Ecke der Satellitenkarte unter 63 Sponsoren ID und Kennwort (oder Mastercode) eingegeben werden. 64 Sie gelangen in ihr Profil indem sie nach dem Eingeben der Daten das an 65 gleicher Stelle erscheinende \"Profil-Feld\" anklicken. 66 Es besteht zusaetzlich die Moeglichkeit fÃŒr Sie, einen Grusstext zu 67 hinterlegen, 68 welcher fuer jeden Besucher dieser Webseite sichtbar wird, sofern dieser 69 Besucher auf Ihre Quadratmeter in dem Vergroesserungsfenster klickt. 70 Waehlen Sie in Ihrem Profil, ob Sie anonym bleiben wollen oder nicht. 71 72 Wir wuenschen Ihnen viel Spass beim Lesen der Texte und betrachten der 73 Bilder vom immer groesser werdenden Regenwald in Samboja Lestari - Borneo! 74 75 Nochmals danken wir Ihnen im Namen der Orang-Utans und Malaienbaeren, sowie 76 aller Waldbewohner und natuerlich der lokalen Bevoelkerung Indonesiens. 77 78 Das Team von BOS Deutschland e.V."))) 70 (apply #'send-system-mail 71 :to email 72 (make-welcome-mail (contract-sponsor contract)))) 79 73 80 74 (defun format-vcard (field-list) … … 160 154 161 155 (defparameter *common-element-names* 162 '(("MC_donationcert-yearly" "donationcert-yearly")163 ("MC_sponsorid" "sponsor-id")164 ("countryString" "country")165 ("postcode" "plz")166 ("MC_gift" "gift")167 ("cartId" "contract-id")))156 '(("MC_donationcert-yearly" . "donationcert-yearly") 157 ("MC_sponsorid" . "sponsor-id") 158 ("countryString" . "country") 159 ("postcode" . "plz") 160 ("MC_gift" . "gift") 161 ("cartId" . "contract-id"))) 168 162 169 163 (defun lookup-element-name (element-name) … … 181 175 :content (format nil " 182 176 <sponsor> 177 <date>~A</date> 183 178 ~{<~A>~A</~A>~} 184 179 </sponsor> 185 180 " 181 (format-date-time (get-universal-time) :xml-style t) 186 182 (apply #'append 187 183 (mapcar #'(lambda (cons) … … 239 235 <tr><td>Adress</td><td>~@[~A~]</td></tr> 240 236 <tr><td>Email</td><td>~@[~A~]</td></tr> 237 <tr><td>Country</td><td>~@[~A~]</td></tr> 238 <tr><td>Language</td><td>~@[~A~]</td></tr> 241 239 </table> 242 240 </body> … … 246 244 name 247 245 address 248 email)) 246 email 247 country 248 language)) 249 249 (make-contract-xml-part (store-object-id contract) (all-request-params req)) 250 250 (make-vcard-part (store-object-id contract) branches/bos/projects/bos/m2/packages.lisp
r2175 r2241 86 86 #:sponsor-country 87 87 #:sponsor-contracts 88 #:sponsor-id 89 #:sponsor-language 88 90 #:sponsor-set-info-text 89 91 #:sponsor-set-country 90 #:sponsor- id92 #:sponsor-set-language 91 93 #:country 92 94 #:info-text 95 #:language 93 96 94 97 #:editor-only-handler branches/bos/projects/bos/payment-website/templates/da/contact.xml
r2115 r2241 28 28 E-Mail: 29 29 <img src="/images/pfeil_link_on.gif" width="10" height="9" alt=""></img> 30 <a href="mailto: bos@orangutang.dk" class="more">31 bos@orangutang.dk30 <a href="mailto:regnskov@bosdanmark.dk" class="more"> 31 regnskov@bosdanmark.dk 32 32 </a> 33 33 <br></br><br></br><br></br><br></br><br></br><br></br> branches/bos/projects/bos/payment-website/templates/da/info-request.xml
r2065 r2241 2 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > 3 3 <bknr:toplevel template="toplevel_extra" title="Regnskov i SAMBOJA LESTARI - Nyheder" xmlns="http://www.w3.org/1999/xhtml" xmlns:bknr="http://bknr.net" xmlns:bos="http://headcraft.de/bos"> 4 <bos:send-info-request email="$(email)" >4 <bos:send-info-request email="$(email)" country="DK"> 5 5 <p> 6 6 <span class="headline"> branches/bos/projects/bos/payment-website/templates/da/ueberweisung.xml
r2172 r2241 44 44 <input type="hidden" name="country" value="DK" /> 45 45 <input type="hidden" name="contract-id" value="$(contract-id)" /> 46 <input type="hidden" name="sponsor-id" value="$(sponsor-id)" /> 46 47 <input type="hidden" name="amount" value="$(amount)" /> 47 48 <input type="hidden" name="numsqm" value="$(numsqm)" /> branches/bos/projects/bos/payment-website/templates/de/ueberweisung.xml
r2172 r2241 43 43 onsubmit="YY_checkform('mailtransfer','vorname','#q','0','Bitte das Feld \'Vorname\' ausfuellen.','name','#q','0','Bitte das Feld \'Name\' ausfuellen.','strasse','#q','0','Bitte das Feld \'Strasse\' ausfuellen.','plz','#q','0','Bitte das Feld \'PLZ\' ausfuellen.','ort','#q','0','Bitte das Feld \'Ort\' ausfuellen.');return document.MM_returnValue"> 44 44 <input type="hidden" name="contract-id" value="$(contract-id)" /> 45 <input type="hidden" name="sponsor-id" value="$(sponsor-id)" /> 45 46 <input type="hidden" name="amount" value="$(amount)" /> 46 47 <input type="hidden" name="numsqm" value="$(numsqm)" /> branches/bos/projects/bos/worldpay-test/allocation-area-handlers.lisp
r2175 r2241 231 231 (destructuring-bind (x y) (read-from-string (format nil "(~A)" line)) 232 232 (cons (scale-coordinate 'x +nw-utm-x+ x) 233 (scale-coordinate 'y +nw-utm-y+ y))))233 (scale-coordinate 'y +nw-utm-y+ (- y +width+))))) 234 234 235 235 (defun polygon-from-text-file (filename) branches/bos/projects/bos/worldpay-test/sponsor-handlers.lisp
r2175 r2241 19 19 (contract (contract-sponsor object)) 20 20 (otherwise nil)))) 21 22 (defmethod language-selector ((language string)) 23 (html 24 ((:select :name "language") 25 (loop 26 for (language-symbol language-name) in (website-languages) 27 do (if (string-equal language-symbol language) 28 (html ((:option :value language-symbol :selected "selected") 29 (:princ-safe language-name))) 30 (html ((:option :value language-symbol) 31 (:princ-safe language-name)))))))) 32 33 (defmethod language-selector ((sponsor sponsor)) 34 (language-selector (sponsor-language sponsor))) 35 36 (defmethod language-selector ((contract contract)) 37 (language-selector (contract-sponsor contract))) 21 38 22 39 (defmethod handle-object-form ((handler edit-sponsor-handler) action (sponsor (eql nil)) req) … … 77 94 (:tr (:td "Email-Address") 78 95 (:td (text-field "email" :size 40))) 79 (:tr (:td "Language for certificate") 80 (:td ((:select :name "language") 81 (loop 82 for (language-symbol language-name) in (website-languages) 83 do (html ((:option :value language-symbol) (:princ-safe language-name))))))) 96 (:tr (:td "Language for communication and certificate") 97 (:td (language-selector "en"))) 84 98 (:tr (:td "Name for certificate") 85 99 (:td (text-field "name" :size 20))) … … 95 109 (defmethod handle-object-form ((handler edit-sponsor-handler) (action (eql :create)) (sponsor (eql nil)) req) 96 110 (with-query-params (req numsqm country email name address date language) 97 (let* ((sponsor (make-sponsor :email email :country country ))111 (let* ((sponsor (make-sponsor :email email :country country :language language)) 98 112 (contract (make-contract sponsor (parse-integer numsqm) 99 113 :paidp (format nil "~A: manually created by ~A" … … 129 143 :value (sponsor-country sponsor) 130 144 :size 2))) 145 (:tr (:td "language") 146 (:td (language-selector sponsor))) 131 147 (:tr (:td "info-text") 132 148 (:td (textarea-field "info-text" … … 160 176 (let (changed) 161 177 (with-bos-cms-page (req :title "Saving sponsor data") 162 (dolist (field-name '(full-name email password country info-text))178 (dolist (field-name '(full-name email password country language info-text)) 163 179 (let ((field-value (query-param req (string-downcase (symbol-name field-name))))) 164 180 (when (and field-value … … 209 225 (:td (text-field "country" :size 2 :value "DE"))) 210 226 (:tr (:td "Language") 211 (:td ((:select :name "language") 212 (loop 213 for (language-symbol language-name) in (website-languages) 214 do (html ((:option :value language-symbol) (:princ-safe language-name))))))) 227 (:td (:princ-safe (sponsor-language (contract-sponsor contract))))) 215 228 (:tr (:td "Email-Address") 216 229 (:td (text-field "email" :size 20 :value email))) … … 218 231 219 232 (defmethod handle-object-form ((handler complete-transfer-handler) (action (eql :process)) contract req) 220 (with-query-params (req email country language)233 (with-query-params (req email country) 221 234 (with-bos-cms-page (req :title "Square meter sale completion") 222 235 (if (contract-paidp contract) … … 299 312 (:td (text-field "name" :size 40))) 300 313 (:tr (:td "Language") 301 (:td ((:select :name "language") 302 (loop 303 for (language-symbol language-name) in (website-languages) 304 do (html ((:option :value language-symbol) (:princ-safe language-name))))))) 314 (:td (language-selector contract))) 305 315 (unless (contract-download-only-p contract) 306 316 (html branches/bos/projects/bos/worldpay-test/tags.lisp
r2175 r2241 72 72 (scan #?r"rweisung" action) 73 73 (scan #?r"verf" action))) 74 (sponsor (make-sponsor)) 74 (language (session-variable :language)) 75 (sponsor (make-sponsor :language language)) 75 76 (contract (make-contract sponsor numsqm 76 77 :download-only download-only … … 78 79 bos.m2::*manual-contract-expiry-time* 79 80 bos.m2::*online-contract-expiry-time*) 80 (get-universal-time)))) 81 (language (session-variable :language))) 81 (get-universal-time))))) 82 82 (destructuring-bind (price currency) 83 83 (case (make-keyword-from-string language) … … 136 136 (mapc #'emit-template-node children)))) 137 137 138 (define-bknr-tag send-info-request (&key children email )139 (mail-info-request email )138 (define-bknr-tag send-info-request (&key children email country) 139 (mail-info-request email (or country "DE")) 140 140 (mapc #'emit-template-node children)) 141 141 branches/bos/projects/bos/worldpay-test/worldpay-test.lisp
r2175 r2241 30 30 (bos.m2::remember-worldpay-params cartId (all-request-params request)) 31 31 (let ((contract (get-contract (parse-integer cartId)))) 32 (sponsor-set-language (contract-sponsor contract) lang) 32 33 (cond 33 34 ((not (typep contract 'contract))
