[Gd-chatter] r10771 - in trunk/libraries: koala/sources/examples/wiki koala/www/wiki web-framework

hannes at gwydiondylan.org hannes at gwydiondylan.org
Fri Jun 2 03:50:19 CEST 2006


Author: hannes
Date: Fri Jun  2 03:50:16 2006
New Revision: 10771

Modified:
   trunk/libraries/koala/sources/examples/wiki/classes.dylan
   trunk/libraries/koala/sources/examples/wiki/wiki.dylan
   trunk/libraries/koala/www/wiki/edit.dsp
   trunk/libraries/koala/www/wiki/footer.dsp
   trunk/libraries/koala/www/wiki/index.dsp
   trunk/libraries/koala/www/wiki/login.dsp
   trunk/libraries/koala/www/wiki/logout.dsp
   trunk/libraries/koala/www/wiki/recent.dsp
   trunk/libraries/web-framework/library.dylan
   trunk/libraries/web-framework/users.dylan
Log:
Bug: 7219
*convert completely to users module from web-framework
*some code cleanup
*on edit, don't allow title changes via ui

Modified: trunk/libraries/koala/sources/examples/wiki/classes.dylan
==============================================================================
--- trunk/libraries/koala/sources/examples/wiki/classes.dylan	(original)
+++ trunk/libraries/koala/sources/examples/wiki/classes.dylan	Fri Jun  2 03:50:16 2006
@@ -75,15 +75,3 @@
   end;
 end;
 
-define responder worker-responder ("/worker")
- (request, response)
-  if (logged-in(request) & current-user().access <= 23)
-    let action = as(<symbol>, get-query-value("action"));
-    select (action)
-      #"undo" => undo(get-query-value("title"));
-      #"rename" => rename-page(get-query-value("oldtitle"), get-query-value("title"));
-      #"remove" => remove-page(get-query-value("title"))
-    end;
-  end;
-end;
-

Modified: trunk/libraries/koala/sources/examples/wiki/wiki.dylan
==============================================================================
--- trunk/libraries/koala/sources/examples/wiki/wiki.dylan	(original)
+++ trunk/libraries/koala/sources/examples/wiki/wiki.dylan	Fri Jun  2 03:50:16 2006
@@ -8,23 +8,15 @@
   <string-table>;
 end;
 
-//XXX: TODO:
-//"__" and "=" markup
-//renaming of wiki pages?
-//delete wiki pages
-//tags
-
 define thread variable *title* = #f;
 define thread variable *version* = #f;
+
 define variable *default-title* = "Home";
 
 // This is only used to save the page content across requests when
 // the page title is invalid.
 define thread variable *content* = #f;
 
-define constant sformat = format-to-string;
-
-
 define taglib wiki ()
 end;
 
@@ -88,7 +80,7 @@
 
 define method respond-to-get
     (page :: <edit-page>, request :: <request>, response :: <response>)
-  dynamic-bind (*title* = get-query-value("title"),
+  dynamic-bind (*title* = *title* | get-query-value("title"),
                 *content* = if (*title* & find-page(*title*))
                               latest-text(find-page(*title*));
                             else
@@ -99,11 +91,16 @@
   end;
 end;
 
+define named-method new-page? in wiki
+  (page :: <wiki-page>, request :: <request>)
+  *title* = ""
+end;
+
 define method respond-to-post
     (page :: <edit-page>, request :: <request>, response :: <response>)
   let title = trim(get-query-value("title") | "");
   let content = get-query-value("page-content") | "";
-  if (~ logged-in(request))
+  if (~ logged-in?(request))
     note-form-error("You must be logged in to edit a page.");
     // redisplay edit page.
     dynamic-bind (*title* = title,
@@ -213,25 +210,23 @@
 
 define named-method editable? in wiki
     (page :: <wiki-page>, request :: <request>)
-  let session = get-session(request);
-  session & get-attribute(session, #"username") & page-editable?(page)
+  logged-in?(request) & page-editable?(page)
 end;
 
-define named-method logged-in? in wiki
-    (page, request)
-  logged-in(request)
+define named-method login? in wiki
+    (page :: <wiki-page>, request :: <request>)
+  logged-in?(request)
 end;
 
 define named-method admin? in wiki
-    (page, request)
-  logged-in(request) & current-user().access <= 23;
+    (page :: <wiki-page>, request :: <request>)
+  logged-in?(request) & current-user().access <= 23;
 end;
 
 define method respond-to-get
     (page :: <search-page>, request :: <request>, response :: <response>)
   let search-string = trim(get-query-value("search-terms") | "");
-  dynamic-bind (*title* = sformat("Search Results for &quot;%s&quot;",
-                                  search-string))
+  dynamic-bind (*title* = concatenate("Search Results for &quot;", search-string, "&quot;"))
     if (search-string = "")
       note-form-error("You must supply some search terms.",
                       field: "search-terms");
@@ -403,16 +398,23 @@
 define body tag show-revisions in wiki
     (page :: <wiki-page>, response :: <response>, do-body :: <function>)
     (count :: <string>)
-    let content = find-page(*title* | "(no title)");
-    if (content)
-      let count = min(as(<integer>, count), storage(<wiki-page-content>)[*title*].revisions.size);
-      let revs = copy-sequence(reverse(storage(<wiki-page-content>)[*title*].revisions), end: count);
-      for(rev in revs)
-        dynamic-bind (*version* = rev.page-version)
-          do-body();
-        end;
+  show-revisions-aux(page, do-body, string-to-integer(count));
+end;
+
+define method show-revisions-aux (page :: <wiki-page>, do-body :: <function>, count :: <integer>)
+end;
+
+define method show-revisions-aux (page :: <view-page>, do-body :: <function>, count :: <integer>)
+  let page = find-page(*title*);
+  if (page)
+    let revs = page.revisions.size;
+    let upper-bound = min(count, revs);
+    for(i from 0 below upper-bound)
+      dynamic-bind (*version* = revs - i)
+        do-body();
       end;
     end;
+  end;
 end;
 
 define method respond-to-get
@@ -431,6 +433,7 @@
     end;
   end;
 end;
+
 define tag version in wiki
     (page :: <wiki-page>, response :: <response>)
     ()
@@ -581,6 +584,18 @@
   write(output-stream(response), *change*.comment);
 end;
 
+define responder worker-responder ("/worker")
+ (request, response)
+  if (logged-in?(request) & current-user().access <= 23)
+    let action = as(<symbol>, get-query-value("action"));
+    select (action)
+      #"undo" => undo(get-query-value("title"));
+      #"rename" => rename-page(get-query-value("oldtitle"), get-query-value("title"));
+      #"remove" => remove-page(get-query-value("title"));
+    end;
+  end;
+end;
+
 define function main
     () => ()
   let config-file =

Modified: trunk/libraries/koala/www/wiki/edit.dsp
==============================================================================
--- trunk/libraries/koala/www/wiki/edit.dsp	(original)
+++ trunk/libraries/koala/www/wiki/edit.dsp	Fri Jun  2 03:50:16 2006
@@ -2,7 +2,12 @@
 <%dsp:taglib name="wiki"/>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-  <title>Dylan Wiki: <wiki:show-title/></title>
+  <title>Dylan Wiki: 
+     <dsp:if test="new-page?">
+       <dsp:then>Adding Page</dsp:then>
+       <dsp:else>Editing <wiki:show-title/></dsp:else>
+     </dsp:if>
+  </title>
   <link  rel="stylesheet" href="/wiki/wiki.css"/>
 </head>
 
@@ -14,12 +19,22 @@
   <dsp:show-form-notes/>
   </div>
 
-  <dsp:if test="logged-in?">
+  <dsp:if test="login?">
     <dsp:then>
+      <dsp:if test="new-page?">
+        <dsp:then>
+          <h1>Adding new Page</h1>
+        </dsp:then>
+        <dsp:else>    
+          <h1>Editing "<wiki:show-title v="false" for-url="false"/>"</h1>
+        </dsp:else>
+      </dsp:if>
       <form action="/wiki/edit.dsp" method="post">
         <div id="edit">
-          Title: <input type="text" name="title" value="<wiki:show-title/>"/>
-          <br/>
+          <dsp:if test="new-page?">
+            <dsp:then>Title: <input type="text" name="title"/><br/></dsp:then>
+            <dsp:else><input type="hidden" name="title" value="<wiki:show-title/>"/></dsp:else>
+          </dsp:if>
           <textarea name="page-content" cols="80" rows="20"><wiki:show-content format="raw"/></textarea>
           <br/>
           Comment: <input type="text" name="comment"/>

Modified: trunk/libraries/koala/www/wiki/footer.dsp
==============================================================================
--- trunk/libraries/koala/www/wiki/footer.dsp	(original)
+++ trunk/libraries/koala/www/wiki/footer.dsp	Fri Jun  2 03:50:16 2006
@@ -7,7 +7,7 @@
     <a href="/wiki/edit.dsp?title=<wiki:show-title v="true" for-url="true"/>">Edit This Page</a>
   </dsp:when>
 
-  <dsp:if test="logged-in?">
+  <dsp:if test="login?">
     <dsp:then>
       Logged in as <wiki:username/>.
       <a href="/wiki/logout.dsp">Logout</a>
@@ -18,13 +18,11 @@
   </dsp:if>
   <a href="/wiki/recent.dsp">Recent&nbsp;Changes</a>
   <a href="/wiki/index.dsp">Index</a>
-  <dsp:when test="editable?">
-    <span class="lastrevisions">
-      <wiki:show-revisions count="10">
-        <a class="revisionlink" href="/wiki/view.dsp?title=<wiki:show-title v="false"/>&amp;v=<wiki:version/>">[<wiki:version/>]</a>
-      </wiki:show-revisions>
-    </span>
-  </dsp:when>
+  <span class="lastrevisions">
+    <wiki:show-revisions count="10">
+      <a class="revisionlink" href="/wiki/view.dsp?title=<wiki:show-title v="false"/>&amp;v=<wiki:version/>">[<wiki:version/>]</a>
+    </wiki:show-revisions>
+  </span>
 </div>
   <p id="valid_xhtml"><a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" /></a></p>
 </div>

Modified: trunk/libraries/koala/www/wiki/index.dsp
==============================================================================
--- trunk/libraries/koala/www/wiki/index.dsp	(original)
+++ trunk/libraries/koala/www/wiki/index.dsp	Fri Jun  2 03:50:16 2006
@@ -13,20 +13,15 @@
     <h1>Index</h1>
     <wiki:show-index>
 	<a href="/wiki/view.dsp?title=<wiki:show-title/>"><wiki:show-title/></a>
-      <dsp:if test="admin?">
-        <dsp:then>
-          <a href="/wiki/worker?title=<wiki:show-title/>&action=remove">remove</a>
-          <form action="/wiki/worker" method="post">
-            <input type="hidden" name="oldtitle" value="<wiki:show-title/>">
-            <input type="hidden" name="action" value="rename">
-            rename to <input type="text" name="title"><input type="submit" value="Save"/>
-          </form>
-          <br>
-        </dsp:then>
-        <dsp:else>
-          <br>
-        </dsp:else>
-      </dsp:if>
+      <dsp:when test="admin?">
+        <a href="/worker?title=<wiki:show-title/>&action=remove">remove</a>
+        <form action="/worker" method="get">
+          <input type="hidden" name="oldtitle" value="<wiki:show-title/>">
+          <input type="hidden" name="action" value="rename">
+          rename to <input type="text" name="title"><input type="submit" value="Save"/>
+        </form>
+      </dsp:when>
+      <br/>
     </wiki:show-index>
   </div>
   <%dsp:include url="footer.dsp"/>

Modified: trunk/libraries/koala/www/wiki/login.dsp
==============================================================================
--- trunk/libraries/koala/www/wiki/login.dsp	(original)
+++ trunk/libraries/koala/www/wiki/login.dsp	Fri Jun  2 03:50:16 2006
@@ -1,34 +1,34 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<%dsp:taglib name="wiki"/>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Dylan Wiki: <wiki:show-title/></title>
-  <link  rel="stylesheet" href="/wiki/wiki.css"/>
-</head>
-
-<body>
-  <%dsp:include url="header.dsp"/>
-  <div id="content">
-    <dsp:if test="logged-in?">
-      <dsp:then>
-        Logged in as <wiki:username/>. <a href="/wiki/logout.dsp">Logout</a>
-      </dsp:then>
-      <dsp:else>
-        You need to have Cookies enabled to continue.<br>
-        <dsp:show-form-notes/>
-        <form action="/wiki/login.dsp" method="post">
-          <div class="login">
-            Username: <input type="text" name="username" size="20"/> <br/>
-            Password: <input type="password" name="password" size="20"/> <br/>
-            <input type="hidden" name="referer" value="<dsp:show-referer/>">
-            <input type="submit" name="login" value="login"/> <br/><br/>
-            eMail-Address: <input type="text" name="email" size="60" /> (only required for creating new user)<br/>
-            <input type="submit" name="adduser" value="create user"/>
-          </div>
-        </form>
-      </dsp:else>
-    </dsp:if>
-  </div>
-  <%dsp:include url="footer.dsp"/>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<%dsp:taglib name="wiki"/>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>Dylan Wiki: <wiki:show-title/></title>
+  <link  rel="stylesheet" href="/wiki/wiki.css"/>
+</head>
+
+<body>
+  <%dsp:include url="header.dsp"/>
+  <div id="content">
+    <dsp:if test="login?">
+      <dsp:then>
+        Logged in as <wiki:username/>. <a href="/wiki/logout.dsp">Logout</a>
+      </dsp:then>
+      <dsp:else>
+        You need to have Cookies enabled to continue.<br>
+        <dsp:show-form-notes/>
+        <form action="/wiki/login.dsp" method="post">
+          <div class="login">
+            Username: <input type="text" name="username" size="20"/> <br/>
+            Password: <input type="password" name="password" size="20"/> <br/>
+            <input type="hidden" name="referer" value="<dsp:show-referer/>">
+            <input type="submit" name="login" value="login"/> <br/><br/>
+            eMail-Address: <input type="text" name="email" size="60" /> (only required for creating new user)<br/>
+            <input type="submit" name="adduser" value="create user"/>
+          </div>
+        </form>
+      </dsp:else>
+    </dsp:if>
+  </div>
+  <%dsp:include url="footer.dsp"/>
+</body>
+</html>

Modified: trunk/libraries/koala/www/wiki/logout.dsp
==============================================================================
--- trunk/libraries/koala/www/wiki/logout.dsp	(original)
+++ trunk/libraries/koala/www/wiki/logout.dsp	Fri Jun  2 03:50:16 2006
@@ -1,23 +1,23 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<%dsp:taglib name="wiki"/>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Dylan Wiki: <wiki:show-title/></title>
-  <link  rel="stylesheet" href="/wiki/wiki.css"/>
-</head>
-
-<body>
-  <%dsp:include url="header.dsp"/>
-  <div id="content">
-    <dsp:if test="logged-in?">
-      <dsp:then>
-        Error logging out user!
-      </dsp:then>
-      <dsp:else>
-        User logged out! <a href="<dsp:show-referer/>">back</a>
-      </dsp:else>
-    </dsp:if>
-  </div>
-  <%dsp:include url="footer.dsp"/>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<%dsp:taglib name="wiki"/>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+  <title>Dylan Wiki: <wiki:show-title/></title>
+  <link  rel="stylesheet" href="/wiki/wiki.css"/>
+</head>
+
+<body>
+  <%dsp:include url="header.dsp"/>
+  <div id="content">
+    <dsp:if test="login?">
+      <dsp:then>
+        Error logging out user!
+      </dsp:then>
+      <dsp:else>
+        User logged out! <a href="<dsp:show-referer/>">back</a>
+      </dsp:else>
+    </dsp:if>
+  </div>
+  <%dsp:include url="footer.dsp"/>
+</body>
+</html>

Modified: trunk/libraries/koala/www/wiki/recent.dsp
==============================================================================
--- trunk/libraries/koala/www/wiki/recent.dsp	(original)
+++ trunk/libraries/koala/www/wiki/recent.dsp	Fri Jun  2 03:50:16 2006
@@ -15,9 +15,9 @@
     <ul>
     <wiki:gen-recent-changes count="50">
       <li><wiki:show-change-timestamp/> <a href="/wiki/view.dsp?title=<wiki:show-change-title/>&v=<wiki:show-change-version/>"><wiki:show-change-title/></a> version <wiki:show-change-version/> <a href="/wiki/diff.dsp?title=<wiki:show-change-title/>&version=<wiki:show-change-version/>">diff</a> by <wiki:show-change-author/> Comment <wiki:show-change-comment/>
-      <dsp:if test="admin?">
-        <a href="/wiki/worker?title=<wiki:show-change-title/>&action=undo">undo</a>
-      </dsp:if>
+      <dsp:when test="admin?">
+        <a href="/worker?title=<wiki:show-change-title/>&action=undo">revert</a>
+      </dsp:when>
       </li>
     </wiki:gen-recent-changes>
     </ul>

Modified: trunk/libraries/web-framework/library.dylan
==============================================================================
--- trunk/libraries/web-framework/library.dylan	(original)
+++ trunk/libraries/web-framework/library.dylan	Fri Jun  2 03:50:16 2006
@@ -96,11 +96,10 @@
     username,
     password,
     email,
+    access,
     current-user,
-    valid-user?,
     login,
-    logged-in,
-    access;
+    logged-in?;
 end;
 
 define module changes

Modified: trunk/libraries/web-framework/users.dylan
==============================================================================
--- trunk/libraries/web-framework/users.dylan	(original)
+++ trunk/libraries/web-framework/users.dylan	Fri Jun  2 03:50:16 2006
@@ -54,18 +54,20 @@
 end;
 
 define method login (request :: <request>)
+ => (username :: false-or(<string>))
   let user-name = get-query-value("username");
   let password = get-query-value("password");
-  if (username & password)
+  if (user-name & password)
     if (valid-user?(user-name, password))
       let session = ensure-session(request);
       *user* := storage(<user>)[user-name];
       set-attribute(session, #"username", user-name);
+      user-name;
     end;
   end;
 end;
 
-define method logged-in (request :: <request>)
+define method logged-in? (request :: <request>)
  => (username :: false-or(<string>))
   let session = get-session(request);
   if (session)



More information about the chatter mailing list