[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 "%s"",
- search-string))
+ dynamic-bind (*title* = concatenate("Search Results for "", search-string, """))
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 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"/>&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"/>&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