Updated 2009-07-15 12:01:38 by LVwikignoming

This page describes a modification to Wikit to add a "Preview" button to the editing page in the web interface. I (sm) have not tried it with caching of pages, but it works great without the caching.

Below is a context diff of the change. It is to the file web.tcl, version dated 2004-01-10.
 *** web.tcl.old        Fri Jan 23 13:08:45 2004
 --- web.tcl        Fri Jan 23 13:16:14 2004
 ***************
 *** 280,285 ****
 --- 280,290 ----
             SavePage $N $C $host $name
           }
           # end of change, 03-09-2003
 +         # If a preview of the saved page is requested, generate
 +         # that page instead.
 +         if {$editAction == "Preview"} {
 +            set cmd Preview
 +         }

           mk::file commit wdb
           # a general improvement: redirect through a fetch again
 ***************
 *** 387,393 ****
             }

             cgi_body bgcolor=#ffffff {
 !             cgi_h2 [Wiki - $N]

               cgi_form $::script_name/$N {
                 cgi_export O=$origtag
 --- 392,398 ----
             }

             cgi_body bgcolor=#ffffff {
 !             cgi_h2 "Edit $name"

               cgi_form $::script_name/$N {
                 cgi_export O=$origtag
 ***************
 *** 401,408 ****
                 p
                 # thx Alistair Grant, see http://wiki.tcl.tk/9747
                 #submit_button "=  Save  "
 -               # Create Save and Cancel buttons

                 submit_button "Action=Save"
                 cgi_puts " [nbspace] "
                 submit_button "Action=Cancel"
 --- 406,415 ----
                 p
                 # thx Alistair Grant, see http://wiki.tcl.tk/9747
                 #submit_button "=  Save  "

 +               # Create Preview, Save, and Cancel buttons
 +               submit_button "Action=Preview"
 +               cgi_puts " [nbspace] "
                 submit_button "Action=Save"
                 cgi_puts " [nbspace] "
                 submit_button "Action=Cancel"
 ***************
 *** 418,423 ****
 --- 425,485 ----
             }
           }

 +         Preview { # called to generate a preview page
 +           cgi_head {
 +             cgi_http_equiv Content-type "text/html; charset=utf-8"
 +             cgi_title "Preview of $name"
 +             cgi_meta name=robots content=noindex,nofollow
 +             cgi_http_equiv Pragma no-cache
 +             cgi_http_equiv Expire "Mon, 04 Dec 1999 21:29:02 GMT"
 +             stylesheet
 +             if {$N != "2" && [info exists ::env(WIKIT_BASE)]} {
 +               cgi_base href=$::env(WIKIT_BASE)
 +             }
 +           }
 +
 +           cgi_body bgcolor=#ffffff {
 +             cgi_h2 "Preview of $name"
 +
 +             set U ""
 +             foreach {Content U} [Expand_HTML $C] break
 +             p $Content
 +
 +             hr noshade
 +
 +             cgi_h2 "Re-edit $name"
 +             p
 +
 +             cgi_form $::script_name/$N {
 +               cgi_export O=$origtag
 +               catch {
 +                 set z "http://$::env(HTTP_HOST)$::env(REDIRECT_URL)"
 +                 regsub {@$} $z {} z
 +                 cgi_export Z=$z
 +               }
 +               textarea C=$C rows=30 cols=72 wrap=virtual \
 +                 style=width:100%
 +               p
 +               # thx Alistair Grant, see http://wiki.tcl.tk/9747
 +               #submit_button "=  Save  "
 +               # Create Preview, Save, and Cancel buttons
 +               submit_button "Action=Preview"
 +               cgi_puts " [nbspace] "
 +               submit_button "Action=Save"
 +               cgi_puts " [nbspace] "
 +               submit_button "Action=Cancel"
 +               # end of change, 03-09-2003
 +               if {$date != 0} {
 +                 cgi_puts " [nbspace] [nbspace] [nbspace] "
 +                 cgi_puts [italic "Last saved on [bold $date]"]
 +               }
 +               p
 +               cgi_puts $::EditInstructions
 +             }
 +
 +           }
 +         }
 +
           ! { # called to generate a page with references

             cgi_head {

MHo: Wouldn't it be nice to add this function as a standard feature?

rpremuz: Yes, it would be really nice. With this feature you could check appearance of changes while editing a page without the need to save it. I guess that this way a page would have a smaller number of revisions.

DKF: It is part of this wiki.