예제 #1
0
    def cmd_edit(self, ri):
        if not config.EDITABLE or self.wikifile.path in page.locked_pages:
            return self.renderer_wrapper(views.locked_body())

        paraedit = self._get_paraedit(ri.args)

        wikif = ""
        if self.wikifile.exist:
            if paraedit:
                wikif = self.wikifile.get_paraedit_section(paraedit[0], paraedit[1])
            else:
                wikif = self.wikifile.text

        # if wikif:
        #    wikif = wiki2html.pre_convert_wiki(wikif)

        return self.renderer_wrapper(views.edit_body("", wikif, "", "", paraedit, not ri.is_valid_host))
예제 #2
0
    def cmd_commit(self, ri):
        form = ri.form

        if ri.is_spam:
            return self.text_wrapper(text_access_denied)
        if not config.EDITABLE or self.wikifile.path in page.locked_pages:
            return self.renderer_wrapper(views.locked_body())

        base_rev = form.get("base_rev", type=int)
        if not (base_rev <= self.head.revno) and base_rev > 0:
            raise exceptions.BadRequest()

        paraedit = self._get_paraedit(ri.form)

        wiki_text = unescape(form.get("text", "")).replace("\r\n", "\n")
        commitmsg_text = unescape(form.get("commitmsg", ""))
        ispreview = form.has_key("preview")

        wiki_src_full = wiki_text
        if paraedit:
            wiki_src_full = self.wikifile.get_paraedit_applied_data(paraedit[0], paraedit[1], wiki_text)
        # wiki_src_full = wiki2html.pre_convert_wiki(wiki_src_full)

        base_page = self.wikifile.switch_rev(base_rev)
        full_merged, merged, message = models.merge_with_latest(self.wikifile, base_page, wiki_src_full)

        if merged or ispreview or (not ri.is_valid_host):
            if paraedit and not merged:
                edit_src = wiki_text
            else:
                edit_src = full_merged
                paraedit = None

            preview_text = self.wikifile.get_preview_xhtml(edit_src)

            return self.renderer_wrapper(
                views.edit_body(preview_text, edit_src, commitmsg_text, message, paraedit, not ri.is_valid_host)
            )
        else:
            r = self.wikifile.write_text(full_merged, ri.user, commitmsg_text)
            return self.renderer_wrapper(views.commited_body(not not r, base_rev=self.head.revno, commited_rev=r))