comparison lisp/w3/w3-forms.el @ 116:9f59509498e1 r20-1b10

Import from CVS: tag r20-1b10
author cvs
date Mon, 13 Aug 2007 09:23:06 +0200
parents 8619ce7e4c50
children 7d55a9ba150c
comparison
equal deleted inserted replaced
115:f109f7dabbe2 116:9f59509498e1
1 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine 1 ;;; w3-forms.el --- Emacs-w3 forms parsing code for new display engine
2 ;; Author: wmperry 2 ;; Author: wmperry
3 ;; Created: 1997/03/18 23:20:04 3 ;; Created: 1997/03/25 23:33:51
4 ;; Version: 1.79 4 ;; Version: 1.81
5 ;; Keywords: faces, help, comm, data, languages 5 ;; Keywords: faces, help, comm, data, languages
6 6
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 ;;; Copyright (c) 1996 by William M. Perry (wmperry@cs.indiana.edu) 8 ;;; Copyright (c) 1996 by William M. Perry (wmperry@cs.indiana.edu)
9 ;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc. 9 ;;; Copyright (c) 1996, 1997 Free Software Foundation, Inc.
47 47
48 (define-widget-keywords :emacspeak-help :w3-form-data) 48 (define-widget-keywords :emacspeak-help :w3-form-data)
49 49
50 (defvar w3-form-keymap 50 (defvar w3-form-keymap
51 (let ((map (copy-keymap global-map)) 51 (let ((map (copy-keymap global-map))
52 (eol-loc (where-is-internal 'end-of-line nil t))) 52 (eol-loc (where-is-internal 'end-of-line global-map t)))
53 (if widget-keymap 53 (if widget-keymap
54 (cl-map-keymap (function 54 (cl-map-keymap (function
55 (lambda (key binding) 55 (lambda (key binding)
56 (define-key map 56 (define-key map
57 (if (vectorp key) key (vector key)) 57 (if (vectorp key) key (vector key))
98 (defsubst w3-form-element-set-options (obj val) (aset obj 6 val)) 98 (defsubst w3-form-element-set-options (obj val) (aset obj 6 val))
99 (defsubst w3-form-element-set-action (obj val) (aset obj 7 val)) 99 (defsubst w3-form-element-set-action (obj val) (aset obj 7 val))
100 (defsubst w3-form-element-set-widget (obj val) (aset obj 8 val)) 100 (defsubst w3-form-element-set-widget (obj val) (aset obj 8 val))
101 (defsubst w3-form-element-set-plist (obj val) (aset obj 9 val)) 101 (defsubst w3-form-element-set-plist (obj val) (aset obj 9 val))
102 102
103 (defvar w3-form-valid-key-sizes
104 '(
105 ("1024 (Premium)" . 1024)
106 ("896 (Regular)" . 896)
107 ("768 (Unleaded)" . 768)
108 ("512 (Low Grade)" . 512)
109 ("508 (Woos)" . 508)
110 ("256 (Test Grade)" . 256)
111 )
112 "An assoc list of available key sizes and meaningful descriptions.")
113
103 (defun w3-form-determine-size (el size) 114 (defun w3-form-determine-size (el size)
104 (case (w3-form-element-type el) 115 (case (w3-form-element-type el)
105 (checkbox 3) 116 (checkbox 3)
106 (radio 4) 117 (radio 4)
107 ((reset submit) (+ 2 (length (or (w3-form-element-value el) 118 ((reset submit) (+ 2 (length (or (w3-form-element-value el)
123 (length (caar (sort options 134 (length (caar (sort options
124 (function 135 (function
125 (lambda (x y) 136 (lambda (x y)
126 (>= (length (car x)) 137 (>= (length (car x))
127 (length (car y))))))))))) 138 (length (car y)))))))))))
139 (keygen
140 (+ (length "Key Length: ")
141 (apply 'max
142 (mapcar (function (lambda (pair)
143 (length (car pair))))
144 w3-form-valid-key-sizes))))
128 (otherwise (or size 22)))) 145 (otherwise (or size 22))))
129 146
130 ;;###autoload 147 ;;###autoload
131 (defun w3-form-add-element (plist face) 148 (defun w3-form-add-element (plist face)
132 (let* ((action (plist-get plist 'action)) 149 (let* ((action (plist-get plist 'action))
346 :value-face face 363 :value-face face
347 :size (w3-form-element-size el) 364 :size (w3-form-element-size el)
348 :must-match t 365 :must-match t
349 :value (w3-form-element-value el))) 366 :value (w3-form-element-value el)))
350 367
351 (defvar w3-form-valid-key-sizes
352 '(
353 ("1024 (Premium)" . 1024)
354 ("896 (Regular)" . 896)
355 ("768 (Unleaded)" . 768)
356 ("512 (Low Grade)" . 512)
357 ("508 (Woos)" . 508)
358 ("256 (Test Grade)" . 256)
359 )
360 "An assoc list of available key sizes and meaningful descriptions.")
361
362 (defun w3-form-create-keygen-list (el face) 368 (defun w3-form-create-keygen-list (el face)
363 (let ((tmp w3-form-valid-key-sizes) 369 (let* ((size (apply 'max (mapcar (function (lambda (pair) (length (car pair))))
364 (longest 0) 370 w3-form-valid-key-sizes)))
365 (options nil)) 371 (options (mapcar (function (lambda (pair)
366 (while tmp 372 (list 'choice-item
367 (if (> (length (caar tmp)) longest) 373 :format "%[%t%]"
368 (setq longest (length (caar tmp)))) 374 :menu-tag-get `(lambda (zed) ,(car pair))
369 (setq options (cons (list 'choice-item :tag (caar tmp) 375 :tag (mule-truncate-string (car pair) size ? )
370 :value (cdar tmp)) options) 376 :value (cdr pair))))
371 tmp (cdr tmp))) 377 w3-form-valid-key-sizes)))
372 (apply 'widget-create 'menu-choice 378 (apply 'widget-create 'menu-choice
373 :value 1024 379 :value 1024
374 :ignore-case t 380 :ignore-case t
375 :tag "Key Length" 381 :tag "Key Length"
376 :size (1+ longest) 382 :size size
377 :button-face face 383 :button-face face
378 :value-face face 384 :value-face face
379 options))) 385 options)))
380 386
381 (defun w3-form-create-option-list (el face) 387 (defun w3-form-create-option-list (el face)
793 (cons (w3-form-element-name formobj) 799 (cons (w3-form-element-name formobj)
794 (cdr-safe 800 (cdr-safe
795 (assoc (widget-value widget) 801 (assoc (widget-value widget)
796 (w3-form-element-options formobj))))) 802 (w3-form-element-options formobj)))))
797 (keygen 803 (keygen
798 (cons (w3-form-element-name formobj) 804 (condition-case ()
799 (format "Should create a %d bit RSA key" 805 (require 'ssl)
800 (widget-value widget)))) 806 (error (error "Not configured for SSL, please read the info pages.")))
807 (if (fboundp 'ssl-req-user-cert) nil
808 (error "This version of SSL isn't capable of requesting certificates."))
809 (let ((challenge (plist-get (w3-form-element-plist formobj) 'challenge))
810 (size (widget-value widget)))
811 (cons (w3-form-element-name formobj)
812 (ssl-req-user-cert size challenge))))
801 ((multiline hidden) 813 ((multiline hidden)
802 (cons (w3-form-element-name formobj) 814 (cons (w3-form-element-name formobj)
803 (w3-form-element-value formobj))) 815 (w3-form-element-value formobj)))
804 (otherwise 816 (otherwise
805 (cons (w3-form-element-name formobj) 817 (cons (w3-form-element-name formobj)