+ + def _addTextElem(self, target, elemName, text): + newElement = self.doc.createElement(elemName) + newElement.appendChild(self.doc.createTextNode(text)) + target.appendChild(newElement) + + + def _addRevisionHistory(self, targetNode): + from MoinMoin.logfile import editlog + from MoinMoin import user + log = editlog.EditLog(self.request, rootpagename=self.title) + user_cache={} + + history = self.doc.createElement("revhistory") + + # read in the complete log of this page + for line in log.reverse(): + if not line.action in ('SAVE', 'SAVENEW', 'SAVE/REVERT', 'SAVE/RENAME', ): + #Let's ignore adding of attachments + continue + revision = self.doc.createElement("revision") + + #Revision number (without preceeding zeros) + self._addTextElem(revision, "revnumber", line.rev.lstrip('0')) + + #Date of revision + date_text = self.request.user.getFormattedDateTime( + wikiutil.version2timestamp(line.ed_time_usecs)) + self._addTextElem(revision, "date", date_text) + + #Author or revision + if not (line.userid in user_cache): + user_cache[line.userid] = user.User(self.request, line.userid, auth_method="text_docbook:740") + author = user_cache[line.userid] + if author and author.name: + self._addTextElem(revision, "authorinitials", author.name) + else: + self._addTextElem(revision, "authorinitials", line.hostname) + + #Comment from author of revision + comment = line.comment + if not comment: + if '/REVERT' in line.action: + comment = _("Revert to revision %(rev)d.") % {'rev': int(line.extra)} + elif '/RENAME' in line.action: + comment = _("Renamed from '%(oldpagename)s'.") % {'oldpagename': line.extra} + if comment: + self._addTextElem(revision, "revremark", comment) + + history.appendChild(revision) + + targetNode.appendChild(history)