Changeset 15439 in project for release/4/qwiki/trunk/qwiki.scm


Ignore:
Timestamp:
08/13/09 18:49:44 (11 years ago)
Author:
sjamaan
Message:

Implement handling of conflicts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/qwiki/trunk/qwiki.scm

    r15437 r15439  
    143143         ;; it can be extended by plugins.  The names of the buttons are
    144144         ;; pretty much tied to the code though
    145          (content (qwiki-sxml-page-template
    146                    `(
    147                      ,(if (alist-ref 'preview postdata)
    148                           `(div (@ (class "preview"))
    149                                 (h2 "Preview")
    150                                 ,(wiki-parse source))
    151                           "")
    152                      (p "username: " ,username " password: " ,password " auth: " ,auth)
    153                      (form (@ (method "post"))
    154                            (label "Article contents:"
    155                                   (textarea (@ (name "source"))
    156                                             ,source))
    157                            (label "Description of your changes:"
    158                                   (textarea (@ (name "comment"))
    159                                             ,comment))
    160                            (label "I would like to authenticate"
    161                                   (input (@ (type "checkbox")
    162                                             (name "auth")
    163                                             ,@(if auth
    164                                                   '((checked "checked"))
    165                                                   '()))))
    166                            (label "Username:"
    167                                   (input (@ (type "text")
    168                                             (name "username")
    169                                             (value ,username))))
    170                            (label "Password:"
    171                                   (input (@ (type "password")
    172                                             (name "password")
    173                                             (value ,password))))
    174                            (input (@ (type "submit")
    175                                      (name "save")
    176                                      (value "Save")))
    177                            (input (@ (type "submit")
    178                                      (name "preview")
    179                                      (value "Preview"))))))))
     145         (make-form
     146          (lambda (#!optional message)
     147            (qwiki-sxml-page-template
     148             `(,(if (alist-ref 'preview postdata)
     149                    `(div (@ (class "preview"))
     150                          (h2 "Preview")
     151                          ,(wiki-parse source))
     152                    "")
     153               ,(if message
     154                    `(div (@ class "message") ,message)
     155                    "")
     156               (p "username: " ,username " password: " ,password " auth: " ,auth)
     157               (form (@ (method "post"))
     158                     (label "Article contents:"
     159                            (textarea (@ (name "source"))
     160                                      ,source))
     161                     (label "Description of your changes:"
     162                            (textarea (@ (name "comment"))
     163                                      ,comment))
     164                     (label "I would like to authenticate"
     165                            (input (@ (type "checkbox")
     166                                      (name "auth")
     167                                      ,@(if auth
     168                                            '((checked "checked"))
     169                                            '()))))
     170                     (label "Username:"
     171                            (input (@ (type "text")
     172                                      (name "username")
     173                                      (value ,username))))
     174                     (label "Password:"
     175                            (input (@ (type "password")
     176                                      (name "password")
     177                                      (value ,password))))
     178                     (input (@ (type "submit")
     179                               (name "save")
     180                               (value "Save")))
     181                     (input (@ (type "submit")
     182                               (name "preview")
     183                               (value "Preview")))))))))
    180184    (if (alist-ref 'save postdata)
    181185        (begin
    182186          (with-output-to-path source-file (lambda () (display source)))
    183           (store-changes! source-file comment
    184                           (and auth username) (and auth password))
    185           (redirect-to-qwiki-page req action: "show"))
    186         (send-content content))))
     187          (handle-exceptions exn
     188            (begin
     189              (undo-changes! source-file)
     190              (update-sources! source-file)
     191              (send-content (make-form (conc "Warning! Someone has edited this page while you were editing it. You can click save again to overwrite those changes with yours if this is the case."
     192                                             (if auth
     193                                                 " It is also possible your username/password are incorrect."
     194                                                 "")))))
     195            (store-changes! source-file comment
     196                            (and auth username) (and auth password))
     197            (redirect-to-qwiki-page req action: "show")))
     198        (send-content (make-form)))))
    187199
    188200(define (redirect-to-qwiki-page req
Note: See TracChangeset for help on using the changeset viewer.