Exemplo n.º 1
0
 def __init__(self, parent, idevice):
     """
     Initialize a new Block object
     """
     Block.__init__(self, parent, idevice)
     self.forumElement = ForumElement(idevice)
     self.discussionElement = DiscussionElement(idevice)
     self.message = self.idevice.message
Exemplo n.º 2
0
class ForumBlock(Block):
    """
    ForumBlock can render and process ForumIdevices as XHTML
    """
    def __init__(self, parent, idevice):
        """
        Initialize a new Block object
        """
        Block.__init__(self, parent, idevice)
        self.forumElement = ForumElement(idevice)
        self.discussionElement = DiscussionElement(idevice)
        self.message = self.idevice.message
    def process(self, request):
        """
        Process the request arguments from the web server
        """
        Block.process(self, request)
        self._message = ''
        self.forumElement.process(request)
        if (("action" in request.args and 
             request.args["action"][0] == "changeForum") and ("forumSelect" + \
             self.id in request.args)):
            self.idevice.edit = True
            self.idevice.noForum = False
            self.idevice.isNewForum = False
            value = request.args["object"][0]
            if value == "":
                self.idevice.noForum = True
                self.idevice.forum = Forum()
            elif value == "newForum":
                forum = Forum()
                self.idevice.forum = forum
                self.idevice.isNewForum = True
            else:
                for forum in self.idevice.forumsCache.getForums():
                    if forum.forumName == value:
                        self.idevice.forum = forum
                        break
        if ("action" in request.args and 
            request.args["action"][0] == "changeTopic" and "topicSelect" +
            self.id in request.args and not self.idevice.noForum):
            self.idevice.edit = True
            self.idevice.isNewTopic = False
            value = request.args["object"][0]
            if value == "none":
                pass
            elif value == "newTopic":
                newTopic = Discussion()
                self.idevice.discussion = newTopic
                self.idevice.discussion.isNone = False
                self.idevice.isNewTopic = True
            else:
                for topic in self.idevice.forum.discussions:
                    if topic.topic == value:
                        break
                self.idevice.discussion = topic
                self.idevice.discussion.isAdded = False
        if ("action" in request.args and 
            request.args["action"][0] == "changeLms" 
            and not self.idevice.noForum and "lmsSelect" + \
            self.id in request.args):
            self.idevice.edit = True
            self.idevice.forum.lms.lms = request.args["object"][0]    
        if (("action" in request.args and request.args["action"][0] == "done" \
            or not self.idevice.edit) and "forumSelect" + \
            self.id in request.args):
            if self.idevice.noForum: 
                self._message = x_("Please select a forum.\n")
                self.idevice.edit = True
            else:
                if self.idevice.forum.forumName == "":
                    self._message = \
                        x_("Please enter a name for the forum\n")
                    self.idevice.edit = True
                elif self.idevice.isNewForum:
                    for forum in self.idevice.forumsCache.getForums():
                        if forum.forumName == self.idevice.forum.forumName:
                            self._message = x_("duplicate forum name.\n")
                            self.idevice.edit = True
                            break
                    if self.idevice.forum.lms.lms == "":
                        self._message = x_("Please select LMS.\n")
                        self.idevice.edit = True
                if self.idevice.isNewTopic:                    
                    if self.idevice.discussion.topic == "":
                        self._message = \
                            x_("Please enter a discussion topic name.\n")
                        self.idevice.edit = True
                    for topic in self.idevice.forum.discussions:
                        if topic.topic == self.idevice.discussion.topic:
                            self._message = x_("duplicate topic name.")
                            self.idevice.edit = True
                            break
                if (not self.idevice.edit and not self.idevice.discussion.isNone
                    and not self.idevice.discussion.isAdded):
                    discussion = self.idevice.discussion
                    self.idevice.forum.addDiscussion(discussion)
                    discussion.isAdded = True
                    self.idevice.isNewTopic = False
                if not self.idevice.edit and not self.idevice.isAdded:
                    self.idevice.forumsCache.addForum(self.idevice.forum)
                    self.idevice.isNewForum = False
                    self.idevice.isAdded = True
                self.idevice.message = self.message
    message = lateTranslate('message')    
    def renderEdit(self, style):
        """
        Returns an XHTML string with the form element for editing this block
        """
        html  = "<div class=\"iDevice\">\n"
        html += self.forumElement.renderEdit()
        html += u"<p>" + self.renderEditButtons() + "</p>"
        html += "</div>\n"
        return html
    def renderPreview(self, style):
        """
        Returns an XHTML string for previewing this block
        """
        html  = u'<div class="iDevice '
        html += u'emphasis'+unicode(self.idevice.emphasis)+'"\n'
        html += u"ondblclick=\"submitLink('edit',"+self.id+", 0);\">\n"
        html += u'<img alt="" class="iDevice_icon" '
        html += u'src="/style/'+style+'/icon_'+self.idevice.icon+'.gif" />\n'
        html += u'<span class="iDeviceTitle">'
        html += self.idevice.title+'</span>\n'
        html += u'<div class="iDevice_inner">\n'
        html += self.forumElement.renderPreview()
        html += self.renderViewButtons()
        html += u"</div></div>"
        return html
    def renderView(self, style):
        """
        Returns an XHTML string for viewing this block
        """
        html  = u'<div class="iDevice '
        html += u'emphasis'+unicode(self.idevice.emphasis)+'">\n'
        html += u'<img alt="" class="iDevice_icon" '
        html += u'src="icon_'+self.idevice.icon+'.gif" />\n'
        html += u'<span class="iDeviceTitle">'
        html += self.idevice.title+'</span>\n'
        html += u'<div class="iDevice_inner">\n'
        html += self.forumElement.renderView()
        html += u"</div></div>"
        return html