[Gd-chatter] r11092 - in trunk/libraries/network: koala/www/wiki web-framework wiki
hannes at gwydiondylan.org
hannes at gwydiondylan.org
Thu Dec 21 01:52:04 CET 2006
Author: hannes
Date: Thu Dec 21 01:52:02 2006
New Revision: 11092
Modified:
trunk/libraries/network/koala/www/wiki/admin.dsp
trunk/libraries/network/web-framework/users.dylan
trunk/libraries/network/wiki/admin.dylan
trunk/libraries/network/wiki/classes.dylan
trunk/libraries/network/wiki/wiki.dylan
Log:
Bug: 7219
*added interface to remove users in the wiki
*revert <user> to the version it is used in the wiki
*don't accept usernames with @ or ' '
Modified: trunk/libraries/network/koala/www/wiki/admin.dsp
==============================================================================
--- trunk/libraries/network/koala/www/wiki/admin.dsp (original)
+++ trunk/libraries/network/koala/www/wiki/admin.dsp Thu Dec 21 01:52:02 2006
@@ -78,6 +78,19 @@
</div>
</form>
</wiki:privilege>
+ <wiki:privilege value="remove-user">
+ <form action="/wiki/admin.dsp" method="post">
+ <div id="edit">
+ <select name="username" size="10">
+ <wiki:show-users>
+ <option><wiki:show-user/></option>
+ </wiki:show-users>
+ </select>
+ <input type="hidden" name="action" value="remove-user">
+ <input type="submit" value="remove">
+ </div>
+ </form>
+ </wiki:privilege>
</div>
<%dsp:include url="footer.dsp"/>
Modified: trunk/libraries/network/web-framework/users.dylan
==============================================================================
--- trunk/libraries/network/web-framework/users.dylan (original)
+++ trunk/libraries/network/web-framework/users.dylan Thu Dec 21 01:52:02 2006
@@ -9,15 +9,15 @@
data password :: <string>;
data email :: <string>;
slot access :: <list> = make(<list>);
- has-a access-level;
+ //slot access-level :: false-or(<access-level>) = #f;
end;
-/*
+
+
define method initialize (user :: <user>, #rest rest, #key, #all-keys)
next-method();
check(user);
save(user);
end;
-*/
define inline-only method key (user :: <user>)
=> (res :: <string>)
user.username;
Modified: trunk/libraries/network/wiki/admin.dylan
==============================================================================
--- trunk/libraries/network/wiki/admin.dylan (original)
+++ trunk/libraries/network/wiki/admin.dylan Thu Dec 21 01:52:02 2006
@@ -10,12 +10,16 @@
#"rename" => rename-page(get-query-value("oldtitle"), get-query-value("title"));
#"remove" => remove-page(get-query-value("title"));
#"change-privileges" => change-privileges();
+ #"remove-user" => remove-user(get-query-value("username"));
end;
end;
end;
respond-to-get(page, request, response);
end;
+define method remove-user (username)
+ remove-key!(storage(<user>), username);
+end;
define method change-privileges ()
//this is evil and should be done better!
for (user in storage(<user>))
@@ -88,7 +92,7 @@
*user* & *privilege* & any?(method(x) x = *privilege* end, *user*.access)
end;
-define constant $privileges = #(#"remove", #"rename", #"undo", #"change-privileges");
+define constant $privileges = #(#"remove", #"rename", #"undo", #"change-privileges", #"remove-user");
define thread variable *privilege* = #f;
@@ -114,8 +118,8 @@
define body tag show-users in wiki
(page :: <wiki-page>, response :: <response>, do-body :: <function>)
()
- for (user in storage(<user>))
- dynamic-bind(*user* = user)
+ for (user in sort(key-sequence(storage(<user>))))
+ dynamic-bind(*user* = storage(<user>)[user])
do-body()
end;
end;
Modified: trunk/libraries/network/wiki/classes.dylan
==============================================================================
--- trunk/libraries/network/wiki/classes.dylan (original)
+++ trunk/libraries/network/wiki/classes.dylan Thu Dec 21 01:52:02 2006
@@ -42,24 +42,31 @@
res;
end;
+define function xmpp-worker ()
+ block()
+ *xmpp-bot* := make(<xmpp-bot>, jid: "dylanbot at jabber.berlin.ccc.de/serva", password: "fnord");
+ sleep(3); //this is for safety reasons, xml-parser is not thread-safe!
+ exception (e :: <condition>)
+ *xmpp-bot* := #f
+ end;
+end;
define method save (diff :: <wiki-page-diff>) => ()
next-method();
- if (*xmpp-bot*)
- block()
- let com = if (diff.comment = "")
- "empty"
- else
- diff.comment
- end;
- let text = concatenate(diff.wiki-page-content.page-title,
- " (\"http://wiki.opendylan.org/wiki/view.dsp?title=",
- diff.wiki-page-content.page-title, "\")",
- " [version ", integer-to-string(diff.page-version),
- "] was changed by ", diff.author,
- " comment was ", com);
- broadcast-message(*xmpp-bot*, text);
- exception (e :: <condition>)
- end;
+ block()
+ let com = if (diff.comment = "")
+ "empty"
+ else
+ diff.comment
+ end;
+ let text = concatenate(diff.wiki-page-content.page-title,
+ " (\"http://wiki.opendylan.org/wiki/view.dsp?title=",
+ diff.wiki-page-content.page-title, "\")",
+ " [version ", integer-to-string(diff.page-version),
+ "] was changed by ", diff.author,
+ " comment was ", com);
+ broadcast-message(*xmpp-bot*, text);
+ exception (e :: <condition>)
+ xmpp-worker();
end;
end;
@@ -82,6 +89,7 @@
save(revision);
//need to store dependency (page, because page.revisions was updated)
save(page);
+ dump-data();
end;
end;
Modified: trunk/libraries/network/wiki/wiki.dylan
==============================================================================
--- trunk/libraries/network/wiki/wiki.dylan (original)
+++ trunk/libraries/network/wiki/wiki.dylan Thu Dec 21 01:52:02 2006
@@ -170,7 +170,11 @@
//try to add user
let email = get-query-value("email");
let email-supplied? = email & email ~= "";
- if (email-supplied?)
+ if (member?(' ', username))
+ note-form-error("Invalid username");
+ elseif (member?('@', username))
+ note-form-error("Invalid username");
+ elseif (email-supplied?)
make(<user>, username: username, password: password, email: email);
else
note-form-error("You must supply an eMail-address to add a new user.");
@@ -637,10 +641,8 @@
if(application-arguments().size > 0)
application-arguments()[0]
end;
- //register-url("/wiki/wiki.css", maybe-serve-static-file);
- //dumper();
- //*xmpp-bot* := make(<xmpp-bot>, jid: "dylanbot at jabber.berlin.ccc.de/here", password: "fnord");
- //sleep(5);
+ register-url("/wiki/wiki.css", maybe-serve-static-file);
+ xmpp-worker();
start-server(config-file: config-file);
end;
More information about the chatter
mailing list