[Checkins] SVN: z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/ make chat demo use special @@ajax view.

Paul Carduner paulcarduner at gmail.com
Thu Jul 19 00:11:33 EDT 2007


Log message for revision 78136:
  make chat demo use special @@ajax view.

Changed:
  U   z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/browser.py
  U   z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/chat.js
  U   z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/configure.zcml

-=-
Modified: z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/browser.py
===================================================================
--- z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/browser.py	2007-07-19 03:31:08 UTC (rev 78135)
+++ z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/browser.py	2007-07-19 04:11:33 UTC (rev 78136)
@@ -26,7 +26,7 @@
 from z3c.form import form, button, field
 from z3c.form.interfaces import IWidgets
 from z3c.formui import layout
-from z3c.formjs import jsaction, jsevent
+from z3c.formjs import jsaction, jsevent, ajax
 
 from z3c.formjsdemo.chat import chat, interfaces
 
@@ -78,7 +78,9 @@
     message = zope.schema.TextLine(title=u"Message")
     nick = zope.schema.TextLine(title=u"Nick")
 
-class ChatForm(layout.FormLayoutSupport, form.Form):
+class ChatForm(layout.FormLayoutSupport,
+               ajax.AJAXRequestHandler,
+               form.Form):
     buttons = button.Buttons(IButtons)
     fields = field.Fields(IFields)
 
@@ -88,7 +90,7 @@
     def handleConnect(self, event, selecter):
         nickId = self.widgets['nick'].id
         messageId = self.widgets['message'].id
-        return '''$.get("joinChatRoom", {nick: $("#%s").val()}, function(data){
+        return '''$.get("@@index.html/@@ajax/joinChat", {nick: $("#%s").val()}, function(data){
                                 $("#%s").attr("disabled", "true");
                                 $("#connect").addClass("translucent");
                                 $("#online").removeClass("translucent");
@@ -97,7 +99,7 @@
                              ''' % (nickId, nickId, messageId)
 
     def _send(self, messageId):
-        return '''$.get("addMessage", {message: $("#%s").val()},
+        return '''$.get("@@index.html/@@ajax/addMessage", {message: $("#%s").val()},
                         function(data){
                             $("#%s").val("");
                         }
@@ -119,37 +121,27 @@
         self.widgets.ignoreContext = True
         self.widgets.update()
 
-
-def renderMessage(nick, message):
-    return '<div class="message"><span class="nick">%s:</span>%s</div>' % (
-        nick, message)
-
-
-class AddMessageView(object):
-
-    nick = SessionProperty('nick')
-
-    def __call__(self):
-        message = self.request.get('message')
-        if message is not None:
-            self.context.addMessage(self.nick, message)
-        return renderMessage(self.nick, message)
-
-
-class GetMessagesView(object):
-
-    def __call__(self):
+    @ajax.handler
+    def getMessages(self):
         index = int(self.request.get('index'))
         result = ""
         for nick, message in self.context.messages[index:]:
-            result += renderMessage(nick, message)
+            result += self._renderMessage(nick, message)
         return result
 
+    @ajax.handler
+    def addMessage(self):
+        message = self.request.get('message')
+        if message is not None:
+            self.context.addMessage(self.nick, message)
+        return self._renderMessage(self.nick, message)
 
-class JoinChatRoomView(object):
+    @ajax.handler
+    def joinChat(self):
+        self.nick = self.request.get('nick', 'anonymous')
+        return "Connected as %s" % self.nick
 
-    nick = SessionProperty('nick')
 
-    def __call__(self):
-        self.nick = self.request.get('nick')
-        return "Connected as %s" % self.nick
+    def _renderMessage(self, nick, message):
+        return '<div class="message"><span class="nick">%s:</span>%s</div>' % (
+            nick, message)

Modified: z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/chat.js
===================================================================
--- z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/chat.js	2007-07-19 03:31:08 UTC (rev 78135)
+++ z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/chat.js	2007-07-19 04:11:33 UTC (rev 78136)
@@ -1,6 +1,6 @@
 function mainLoop() {
   var num = $("div.message").length;
-  $.get("getMessages", {index: $("div.message").length},
+  $.get("@@index.html/@@ajax/getMessages", {index: $("div.message").length},
 	function(data) {
 	  $("#chat-window").append(data);
 	  $("#chat-window").get(0).scrollTop = $("#chat-window").get(0).scrollHeight;

Modified: z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/configure.zcml
===================================================================
--- z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/configure.zcml	2007-07-19 03:31:08 UTC (rev 78135)
+++ z3c.formjsdemo/trunk/src/z3c/formjsdemo/chat/configure.zcml	2007-07-19 04:11:33 UTC (rev 78136)
@@ -36,30 +36,6 @@
       layer="z3c.formjsdemo.layer.IDemoBrowserLayer"
       />
 
-  <z3c:pagelet
-      name="addMessage"
-      for=".interfaces.IChatRoom"
-      class=".browser.AddMessageView"
-      layer="z3c.formjsdemo.layer.IDemoBrowserLayer"
-      permission="zope.Public"
-      />
-
-  <z3c:pagelet
-      name="getMessages"
-      for=".interfaces.IChatRoom"
-      class=".browser.GetMessagesView"
-      layer="z3c.formjsdemo.layer.IDemoBrowserLayer"
-      permission="zope.Public"
-      />
-
-  <z3c:pagelet
-      name="joinChatRoom"
-      for=".interfaces.IChatRoom"
-      class=".browser.JoinChatRoomView"
-      layer="z3c.formjsdemo.layer.IDemoBrowserLayer"
-      permission="zope.Public"
-      />
-
   <zrt-resource
       name="chat.css"
       file="chat.css"



More information about the Checkins mailing list