Author: hhubner Date: 2006-03-08 01:49:37 -0500 (Wed, 08 Mar 2006) New Revision: 1908
Added: branches/xml-class-rework/projects/lisp-ecoop/website/templates/create-submission.xml Modified: branches/xml-class-rework/projects/lisp-ecoop/src/handlers.lisp branches/xml-class-rework/projects/lisp-ecoop/src/webserver.lisp branches/xml-class-rework/projects/lisp-ecoop/website/static/javascript.js branches/xml-class-rework/projects/lisp-ecoop/website/templates/upload.xml branches/xml-class-rework/projects/lisp-ecoop/website/templates/user-error.xml Log: First version for Pascal to test.
Modified: branches/xml-class-rework/projects/lisp-ecoop/src/handlers.lisp =================================================================== --- branches/xml-class-rework/projects/lisp-ecoop/src/handlers.lisp 2006-03-07 20:03:26 UTC (rev 1907) +++ branches/xml-class-rework/projects/lisp-ecoop/src/handlers.lisp 2006-03-08 06:49:37 UTC (rev 1908) @@ -14,14 +14,21 @@
(defmethod handle-form ((handler add-participant-handler) (action (eql nil)) req) (with-lisp-ecoop-page (req "Create new participant") - ((:form :method "post" :enctype "multipart/form-data") + ((:form :method "post" :enctype "multipart/form-data" :onsubmit "return check_participant_form(this);") ((:table :border "1") (:tr (:th "Login") (:td (text-field "login" :size 15))) (:tr (:th "Full Name") (:td (text-field "full-name" :size 25))) (:tr (:th "Email") - (:td (text-field "email" :size 25)))) + (:td (text-field "email" :size 25))) + (:tr (:th "Submission") + (:td ((:select :name "submission" :id "submission-selector" :size "1") + (dolist (submission (sort (copy-list (class-instances 'submission)) + #'string-lessp :key #'submission-title)) + (html ((:option :value (store-object-id submission)) + (:princ-safe (submission-title submission)))))) + ((:input :type "submit" :onclick "return create_submission_window();" :value "new"))))) (submit-button "create" "create"))))
(defmethod handle-form ((handler add-participant-handler) (action (eql :create)) req) @@ -37,7 +44,7 @@ (:default-initargs :class 'participant :query-function #'find-user))
(defmethod handle-object-form ((handler edit-participant-handler) (action (eql nil)) (participant participant) req) - (with-lisp-ecoop-page (req #?"Edit participant ((user-login participant))") + (with-lisp-ecoop-page (req #?"Edit participant $((user-login participant))") ((:form :method "post" :enctype "multipart/form-data") ((:table :border "1") (:tr (:th "Login") @@ -66,7 +73,22 @@ (with-http-body (req *ent* :external-format '(unsigned-byte 8)) (write-sequence pdf net.aserve::*html-stream*)))))
+(defclass make-submission-handler (admin-only-handler page-handler) + ())
+(defmethod handle ((handler make-submission-handler) req) + (with-query-params (req title abstract) + (let ((submission (make-object 'submission :title title :abstract abstract))) + (with-lisp-ecoop-page (req #?"Submission created") + (html ((:script :type "text/javascript") + (:princ-safe #?" +if (window.opener) { + opener.add_submission($((store-object-id submission)), '$(title)'); + window.close(); +} else { + window.location.href = 'edit-submission/$((store-object-id submission))'; +}"))))))) + (defclass upload-document-handler (object-handler) () (:default-initargs :class 'submission)) @@ -111,6 +133,7 @@ (define-bknr-webserver-module participants ("/add-participant" add-participant-handler) ("/edit-participant" edit-participant-handler) + ("/make-submission" make-submission-handler) ("/pdf" pdf-handler) ("/upload-document" upload-document-handler) ("/delete-document" delete-document-handler)
Modified: branches/xml-class-rework/projects/lisp-ecoop/src/webserver.lisp =================================================================== --- branches/xml-class-rework/projects/lisp-ecoop/src/webserver.lisp 2006-03-07 20:03:26 UTC (rev 1907) +++ branches/xml-class-rework/projects/lisp-ecoop/src/webserver.lisp 2006-03-08 06:49:37 UTC (rev 1908) @@ -17,13 +17,12 @@ (make-instance 'website :name "LISP ECOOP CMS" :base-href base-href + :template-base-directory (namestring (merge-pathnames #p"templates/" *website-directory*)) + :template-command-packages '((:lisp-ecoop . :lisp-ecoop.tags) + (:bknr . :bknr.web) + (:menu . :bknr.site-menu)) :handler-definitions `(("/" redirect-handler :to "home") - ("/" template-handler - :destination ,(namestring (merge-pathnames #p"templates/" *website-directory*)) - :command-packages ((:lisp-ecoop . :lisp-ecoop.tags) - (:bknr . :bknr.web) - (:menu . :bknr.site-menu))) ("/static" directory-handler :destination ,(unix-namestring (merge-pathnames #p"static/" *website-directory*)))) :modules '(user images stats mailinglist mailinglist-registration participants schedule)
Modified: branches/xml-class-rework/projects/lisp-ecoop/website/static/javascript.js =================================================================== --- branches/xml-class-rework/projects/lisp-ecoop/website/static/javascript.js 2006-03-07 20:03:26 UTC (rev 1907) +++ branches/xml-class-rework/projects/lisp-ecoop/website/static/javascript.js 2006-03-08 06:49:37 UTC (rev 1908) @@ -1,6 +1,6 @@ // -*- Java -*-
-var POPUP_WINDOW_PARAMS = 'width=500,height=300,status=no,toolbar=no,menubar=no,resizable=yes,scrollbars=yes'; +var POPUP_WINDOW_PARAMS = 'width=700,height=450,status=no,toolbar=no,menubar=no,resizable=yes,scrollbars=yes';
function http_request(url) { @@ -93,3 +93,50 @@ return true; }
+// Create Participant form check + +function check_form_fields(form) +{ + var input_complete = true; + var first_missing; + for (var i = 1; i < arguments.length; i++) { + var field = form[arguments[i]]; + if (field.value.match(/^\S+$/)) { + field.style.background = '#fff'; + } else { + input_complete = false; + field.style.background = '#faa'; + if (!first_missing) { + first_missing = field; + } + } + } + + if (!input_complete) { + first_missing.focus(); + } + + return input_complete; +} + +function check_participant_form(form) { + return check_form_fields(form, 'login', 'full-name', 'email'); +} + +// Make a new submission + +function create_submission_window() { + window.add_submission = function(id, title) { + var submission_selector = document.getElementById('submission-selector'); + submission_selector.innerHTML = '<option selected="selected" value="' + id + '">' + title + '</option>' + submission_selector.innerHTML; + submission_selector.selectedIndex = 0; + } + + open('/create-submission', 'createsubmission', POPUP_WINDOW_PARAMS); + + return false; +} + +function check_create_submission_form(form) { + return check_form_fields(form, 'title'); +}
Added: branches/xml-class-rework/projects/lisp-ecoop/website/templates/create-submission.xml =================================================================== --- branches/xml-class-rework/projects/lisp-ecoop/website/templates/create-submission.xml 2006-03-07 20:03:26 UTC (rev 1907) +++ branches/xml-class-rework/projects/lisp-ecoop/website/templates/create-submission.xml 2006-03-08 06:49:37 UTC (rev 1908) @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html + xmlns:lisp-ecoop="http://lisp-ecoop06.bknr.net%22%3E + <head> + <title>Create submission</title> + <link rel="stylesheet" type="text/css" href="/static/document-utils.css" /> + <script src="/static/document-utils.js" language="javascript" type="text/javascript"> </script> + <script src="/static/javascript.js" language="javascript" type="text/javascript"> </script> + </head> + <body class="utility-window" onload="init()"> + <div id="form" class="page"> + <h1>Create a Submission</h1> + <p> + Using this form, a new submission may be created. + </p> + <form method="post" name="create_submission_form" id="create_submission_form" enctype="multipart/form-data" + action="/make-submission" onsubmit="return check_create_submission_form(this);"> + <label for="title">Title</label><br/> + <input type="text" size="40" maxlength="40" name="title" id="title_input"/><br/> + <label for="abstract">Abstract</label><br/> + <textarea name="abstract" cols="72" rows="10"> </textarea><br/> + <button type="submit" name="submit">Create</button> + </form> + <p> + <a href="#" onclick="window.close();">Cancel</a> + </p> + </div> + <div id="progress" class="page"> + Creating submission... + </div> + <div id="success" class="page"> + Submission created. + </div> + <div id="failed" class="page"> + <p> + Cannot create submission: <span id="error-message"> </span> + </p> + <a href="#" onclick="window.close();">Dang!</a> + </div> + </body> +</html>
Modified: branches/xml-class-rework/projects/lisp-ecoop/website/templates/upload.xml =================================================================== --- branches/xml-class-rework/projects/lisp-ecoop/website/templates/upload.xml 2006-03-07 20:03:26 UTC (rev 1907) +++ branches/xml-class-rework/projects/lisp-ecoop/website/templates/upload.xml 2006-03-08 06:49:37 UTC (rev 1908) @@ -28,10 +28,10 @@ </p> </div> <div id="progress" class="page"> - Upload in progress, please wait + Upload in progress, please wait.... </div> <div id="success" class="page"> - Done uploading + Done uploading. </div> <div id="failed" class="page"> <p>
Modified: branches/xml-class-rework/projects/lisp-ecoop/website/templates/user-error.xml =================================================================== --- branches/xml-class-rework/projects/lisp-ecoop/website/templates/user-error.xml 2006-03-07 20:03:26 UTC (rev 1907) +++ branches/xml-class-rework/projects/lisp-ecoop/website/templates/user-error.xml 2006-03-08 06:49:37 UTC (rev 1908) @@ -7,8 +7,16 @@ xmlns:lisp-ecoop="http://lisp-ecoop06.bknr.net" xmlns:menu="http://bknr.net/menu"
-Your request could not be processed because an error occured: + <head> + <title>Error</title> + <link rel="stylesheet" type="text/css" href="$(base)static/styles.css" /> + </head> + <body> + <h2> + Your request could not be processed because an error occured: + </h2> <pre> $(error-message) </pre> + </body> </html> \ No newline at end of file