[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(