;;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: CL-USER; Base: 10 -*- ;;; $Header: src/frontend/components/djconfirmation-submit.lisp $ ;;; Copyright (c) 2008, Andrea Chiumenti. All rights reserved. ;;; Redistribution and use in source and binary forms, with or without ;;; modification, are permitted provided that the following conditions ;;; are met: ;;; * Redistributions of source code must retain the above copyright ;;; notice, this list of conditions and the following disclaimer. ;;; * Redistributions in binary form must reproduce the above ;;; copyright notice, this list of conditions and the following ;;; disclaimer in the documentation and/or other materials ;;; provided with the distribution. ;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED ;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (in-package :claw-demo-frontend) (defclass djconfirmation-submit (wcomponent) ((value :initarg :value :accessor djconfirmation-submit-value) (action :initarg :action :accessor djconfirmation-submit-action) (confirmation-message :initarg :confirmation-message :accessor djconfirmation-submit-confirmation-message) (yes-label :initarg :yes :accessor djconfirmation-submit-yes) (no-label :initarg :no :accessor djconfirmation-submit-no)) (:default-initargs :yes "Yes" :no "No") (:metaclass metacomponent)) (defmethod wcomponent-template ((obj djconfirmation-submit)) (let* ((dialog-id (generate-id "confirmationDiaolg")) (yes-id (generate-id "yes")) (value (djconfirmation-submit-value obj)) (informal-parameters (wcomponent-informal-parameters obj)) (on-click (or (getf (wcomponent-informal-parameters obj) :on-click) (getf (wcomponent-informal-parameters obj) :onclick)))) (remf informal-parameters :on-click) (remf informal-parameters :onclick) (div> :class "dijit dijitReset dijitLeft dijitInline" (djbutton> :static-id (htcomponent-client-id obj) informal-parameters (script> :type "dojo/connect" :event "onClick" :args "evt" (format nil "if ((function (evt) {~a}).call(this, evt) !== false) {" on-click) (ps:ps* `(.show (dijit.by-id ,dialog-id))) "}") (or (htcomponent-body obj) value)) (djdialog> :static-id dialog-id :title "Confirm" (div> (djconfirmation-submit-confirmation-message obj) (div> :class "buttonContainer" (djsubmit-button> :static-id yes-id :value (djconfirmation-submit-value obj) :action (djconfirmation-submit-action obj) :on-click (ps:ps* `(.hide (dijit.by-id ,dialog-id))) (djconfirmation-submit-yes obj)) (djbutton> :id dialog-id :on-click (ps:ps* `(.hide (dijit.by-id ,dialog-id))) (djconfirmation-submit-no obj))))))))