[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