[Products.SilvaForum][Emiliano D'Alterio] Added the possibility ...

[email protected] Fri, 01 Nov 2013 19:25:57 +0100
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Emiliano D'Alterio
date:      Fri Nov 01 19:25:48 2013 +0100
revision:  649:eade4bd31737 in Products.SilvaForum
branch:    2.5
details:   https://hg.infrae.com/Products.SilvaForum?cmd=changeset;node=eade4bd31737
modified:  Products/SilvaForum/templates/forumview.pt Products/SilvaForum/templates/topicview.pt Products/SilvaForum/views.py
added:     
removed:   
log:       Added the possibility to create a new topic and to post a first
	message simultaneously.


diffstat:

 Products/SilvaForum/templates/forumview.pt |  36 ++++++++++++++++++-----------
 Products/SilvaForum/templates/topicview.pt |   2 +
 Products/SilvaForum/views.py               |  17 ++++++++++----
 3 files changed, 36 insertions(+), 19 deletions(-)

diffs (172 lines):

diff -r 20a19170e63f -r eade4bd31737 Products/SilvaForum/templates/forumview.pt
--- a/Products/SilvaForum/templates/forumview.pt	Wed Oct 09 15:06:18 2013 +0200
+++ b/Products/SilvaForum/templates/forumview.pt	Fri Nov 01 19:25:48 2013 +0100
@@ -4,19 +4,20 @@
        tal:define="show_form python:view.preview or view.messages or view.topic_missing">
     <script type="text/javascript">
       // <![CDATA[
+      window.focussed_form_field = null;
       function add_smiley(text_to_add) {
-      /* add a smiley to the topic field
-      */
-      var topic = document.getElementById('topic');
-      var content = topic.value;
-      var lastchar = content.charAt(content.length - 1);
-      if (lastchar && lastchar != ' ' && lastchar != '\t' && lastchar != '\n'
-          && lastchar != '\r') {
-         content += ' ';
-      };
-      content += text_to_add + ' ';
-      topic.value = content;
-      topic.focus();
+          var input = window.focussed_form_field;
+          if (!input) {
+              return;
+          };
+          var content = input.value;
+          var lastchar = content.charAt(content.length - 1);
+          if (lastchar && lastchar != ' ' && lastchar != '\t' && lastchar != '\n' && lastchar != '\r') {
+              content += ' ';
+          };
+          content += text_to_add + ' ';
+          input.value = content;
+          input.focus();
       };
       // ]]>
     </script>
@@ -41,6 +42,7 @@
         <input id="forum-post-closer" class="dialog-closer" type="image"
                str="#" width="16" height="16" title="hide form"
                tal:attributes="src static/close_window.png"
+               alt="Close"
                i18n:attributes="title" />
         <form class="forum-form" method="post" name="post" action="#"
               tal:attributes="action context/@@absolute_url">
@@ -53,7 +55,7 @@
           <div class="forum-field">
             <div class="feedback warning"
                  tal:condition="view/topic_missing">
-              <span i18n:translate="">
+              <span class="feedback warning" i18n:translate="">
                 Please provide a subject for the new topic.
               </span>
             </div>
@@ -68,9 +70,15 @@
             <label for="topic" i18n:translate="">Subject</label>
             <input class="store" type="text"
                    id="topic" name="topic" size="70"
+                   onfocus="window.focussed_form_field = this"
                    tal:attributes="value view/topic" />
           </div>
-
+          <div class="forum-field">
+            <label for="text" i18n:translate="">Message</label>
+            <textarea name="text" id="text" rows="5" cols="68" class="store"
+                      onfocus="window.focussed_form_field = this" tal:content="view/text">
+            </textarea>
+          </div>
           <div class="forum-field"
                tal:condition="view/inline_subscription">
             <input type="checkbox" name="subscribe" id="subscribe"
diff -r 20a19170e63f -r eade4bd31737 Products/SilvaForum/templates/topicview.pt
--- a/Products/SilvaForum/templates/topicview.pt	Wed Oct 09 15:06:18 2013 +0200
+++ b/Products/SilvaForum/templates/topicview.pt	Fri Nov 01 19:25:48 2013 +0100
@@ -66,6 +66,7 @@
         <input id="forum-subscribe-closer" class="dialog-closer" type="image"
                title="hide subscribe form"
                tal:attributes="src static/close_window.png"
+               alt="Close"
                i18n:attributes="title" />
         <tal:provider tal:replace="structure provider:subscriptions" />
       </div>
@@ -130,6 +131,7 @@
         <input id="forum-post-closer" class="dialog-closer" type="image"
                title="hide post form"
                tal:attributes="src static/close_window.png"
+               alt="Close"
                i18n:attributes="title" />
         <form method="post" name="post" action="#"
               tal:attributes="action view/action_url">
diff -r 20a19170e63f -r eade4bd31737 Products/SilvaForum/views.py
--- a/Products/SilvaForum/views.py	Wed Oct 09 15:06:18 2013 +0200
+++ b/Products/SilvaForum/views.py	Fri Nov 01 19:25:48 2013 +0100
@@ -36,6 +36,7 @@
     r'\/\/www\.|www\.|mailto\:)\S+[^).\s])')
 ABSOLUTE_LINK_RE = re.compile(r'(<a\shref="www)')
 
+
 def replace_links(text):
     # do regex for links and replace at occurrence
     text = LINK_RE.sub('<a href="\g<1>">\g<1></a>', text)
@@ -105,7 +106,7 @@
             email = self.get_user_email()
             if email:
                 if not ISubscriptionManager(
-                    self.context).is_subscribed(email):
+                        self.context).is_subscribed(email):
                     self.inline_subscription = True
 
         self.messages = []
@@ -194,6 +195,7 @@
     grok.context(IForum)
 
     topic = ''
+    text = ''
     topic_missing = False
     username = ''
     anonymous = False
@@ -201,8 +203,9 @@
     preview_validated = False
     subscribe = True
 
-    def action_preview(self, topic, anonymous):
+    def action_preview(self, topic, text, anonymous):
         self.topic = topic
+        self.text = text
         self.anonymous = anonymous
         self.username = self.get_preview_username(anonymous)
         self.preview = True
@@ -210,7 +213,7 @@
         self.topic_missing = not topic
         self.subscribe = 'subscribe' in self.request.form
 
-    def action_post(self, topic, anonymous):
+    def action_post(self, topic, text, anonymous):
         success = False
         if self.authorized_to_post():
             if not topic:
@@ -219,6 +222,8 @@
                 try:
                     content = self.context.add_topic(
                         topic, self.need_captcha or anonymous)
+                    content.add_comment(
+                        topic, text, self.need_captcha or anonymous)
                 except ValueError, e:
                     self.messages = [str(e)]
                 else:
@@ -230,6 +235,7 @@
                     success = True
         if not success:
             self.topic = topic
+            self.text = text
             self.anonymous = anonymous
             self.subscribe = 'subscribe' in self.request.form
 
@@ -238,14 +244,15 @@
         ('action.post', action_post),
         ]
 
-    def update(self, topic=None, anonymous=False):
+    def update(self, topic=None, text=None, anonymous=False):
         super(ForumView, self).update()
 
         topic = unicode(topic or '', 'UTF-8').strip()
+        text = unicode(text or '', 'UTF-8').strip()
 
         for name, action in self.ACTIONS:
             if name in self.request.form:
-                action(self, topic, anonymous)
+                action(self, topic, text, anonymous)
                 break
 
         self.topics = Batch(