diff --git a/weboob/applications/qwebcontentedit/main_window.py b/weboob/applications/qwebcontentedit/main_window.py index 233c1ab9..1edd67b7 100644 --- a/weboob/applications/qwebcontentedit/main_window.py +++ b/weboob/applications/qwebcontentedit/main_window.py @@ -30,7 +30,8 @@ class MainWindow(QtMainWindow): self.config = config self.weboob = weboob - + self.backend = None + self.connect(self.ui.idEdit, SIGNAL("returnPressed()"), self.loadPage) self.connect(self.ui.loadButton, SIGNAL("clicked()"), self.loadPage) self.connect(self.ui.tabWidget, SIGNAL("currentChanged(int)"), @@ -39,24 +40,25 @@ self._currentTabChanged) def _currentTabChanged(self): if self.ui.tabWidget.currentIndex() == 1: - self.showPreview() + if self.backend is not None: + self.showPreview() return - + def loadPage(self): - id = unicode(self.ui.idEdit.text()) - if not id: + _id = unicode(self.ui.idEdit.text()) + if not _id: return for backend in self.weboob.iter_backends(): - self.content = backend.get_content(id) + self.content = backend.get_content(_id) if self.content: self.ui.contentEdit.setPlainText(self.content.content) self.backend = backend return - - + + def savePage(self): - if not hasattr(self, "backend"): + if self.backend is None: return new_content = unicode(self.ui.contentEdit.toPlainText()) if new_content != self.content.content: @@ -75,5 +77,5 @@ self._currentTabChanged) print backtrace def showPreview(self): - self.ui.previewEdit.setHtml(self.backend.preview_content(self.content)) - return + self.ui.previewEdit.setHtml(self.backend.get_content_preview(self.content)) + return \ No newline at end of file diff --git a/weboob/applications/qwebcontentedit/ui/main_window.ui b/weboob/applications/qwebcontentedit/ui/main_window.ui index da420a47..be6b983e 100644 --- a/weboob/applications/qwebcontentedit/ui/main_window.ui +++ b/weboob/applications/qwebcontentedit/ui/main_window.ui @@ -32,7 +32,7 @@ - 1 + 0 diff --git a/weboob/backends/redmine/backend.py b/weboob/backends/redmine/backend.py index 608e4c03..7387f547 100644 --- a/weboob/backends/redmine/backend.py +++ b/weboob/backends/redmine/backend.py @@ -73,13 +73,11 @@ class RedmineBackend(BaseBackend, ICapContent): with self.browser: return self.browser.set_wiki_source(project, page, content.content, message) - def preview_content(self, content): + def get_content_preview(self, content): try: _type, project, page = self.id2path(content.id) except ValueError: return with self.browser: - return self.browser.get_wiki_preview(project, page, content.content) - - + return self.browser.get_wiki_preview(project, page, content.content) \ No newline at end of file diff --git a/weboob/backends/redmine/browser.py b/weboob/backends/redmine/browser.py index 2654ede4..699f2e31 100644 --- a/weboob/backends/redmine/browser.py +++ b/weboob/backends/redmine/browser.py @@ -18,6 +18,7 @@ from urlparse import urlsplit import urllib +import lxml.html from weboob.tools.browser import BaseBrowser, BrowserIncorrectPassword @@ -77,12 +78,18 @@ class RedmineBrowser(BaseBrowser): self.page.set_source(data, message) def get_wiki_preview(self, project, page, data): - if not self.is_on_page(WikiEditPage) or self.page.groups[0] != project \ - or self.page.groups[1] != page: + if (not self.is_on_page(WikiEditPage) or self.page.groups[0] != project + or self.page.groups[1] != page): self.location('%s/projects/%s/wiki/%s/edit' % (self.BASEPATH, project, page)) url = '%s/projects/%s/wiki/%s/preview' % (self.BASEPATH, project, page) params = {} params['content[text]'] = data.encode('utf-8') params['authenticity_token'] = "%s" % self.page.get_authenticity_token() - return self.readurl(url, urllib.urlencode(params)) + preview_html = lxml.html.fragment_fromstring(self.readurl(url, + urllib.urlencode(params)), + create_parent='div') + preview_html.find("fieldset").drop_tag() + preview_html.find("legend").drop_tree() + return lxml.html.tostring(preview_html) + diff --git a/weboob/capabilities/content.py b/weboob/capabilities/content.py index d7bb1c82..beaa9554 100644 --- a/weboob/capabilities/content.py +++ b/weboob/capabilities/content.py @@ -36,5 +36,5 @@ class ICapContent(IBaseCap): def push_content(self, content, message=None): raise NotImplementedError() - def preview_content(self, content): + def get_content_preview(self, content): raise NotImplementedError()