blob: 4b3d2e9371af740f638d46494dce61044ec5c7fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
(declaim (optimize (speed 0) (safety 3) (debug 3)))
(in-package :woodriverlessons)
(defclass generic-form (base-service)
((name :initarg :name
:initform nil
:accessor name)
(http-method :initarg :http-method
:initform "POST"
:accessor http-method)
(action :initarg :action
:initform nil
:accessor action)
(required-p :initarg :required-p
:initform nil
:accessor required-p)
(form-fields :initarg :form-fields
:initform nil
:accessor form-fields))
(:documentation ""))
(defclass form-field (base-service)
((name :initarg :name
:initform nil
:accessor name)
(label :initarg :label
:initform nil
:accessor label)
(value :initarg :value
:initform nil
:accessor value)
(checked :initarg :checked
:initform nil
:accessor checked)
(field-type :initarg :field-type
:initform nil
:accessor field-type)
(required :initarg :required
:initform nil
:accessor required)
(dismiss :initarg :dismiss
:initform nil
:accessor dismiss)
(options :initarg :options
:initform nil
:accessor options)
(onclick :initarg :onclick
:initform nil
:accessor onclick)
(onchange :initarg :onchange
:initform nil
:accessor onchange))
(:documentation ""))
(defclass option (base-service)
((label :initarg :label
:initform nil
:accessor label)
(value :initarg :value
:initform nil
:accessor value))
(:documentation ""))
(defun make-form (name action required-p fields)
(make-instance 'generic-form
:name name
:action action
:required-p required-p
:form-fields (mapcar (lambda (field)
(make-instance 'form-field
:name (getf field :name)
:label (getf field :label)
:value (getf field :value)
:checked (getf field :checked)
:field-type (getf field :field-type)
:required (getf field :required)
:dismiss (getf field :dismiss)
:options (mapcar (lambda (option)
(make-instance 'option
:label (getf option :label)
:value (getf option :value)))
(getf field :options))
:onclick (getf field :onclick)
:onchange (getf field :onchange)))
fields)))
|