Mercurial > moin-mfact
changeset 34:be6fd654ac8e
Add required PageActions plugin
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Fri, 06 Jun 2008 21:47:01 +0200 |
| parents | e42a39879c0b |
| children | f9af9c2dfd59 |
| files | PageActions.py |
| diffstat | 1 files changed, 68 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PageActions.py Fri Jun 06 21:47:01 2008 +0200 @@ -0,0 +1,68 @@ +# -*- coding: iso-8859-1 -*- + +import re +from MoinMoin import config, wikiutil +from MoinMoin.Page import Page + +# Ripped from the LikePages action +def execute(pagename, request): + _ = request.getText + from MoinMoin.formatter.text_html import Formatter + request.formatter = Formatter(request) + + request.http_headers() + + # This action generate data using the user language + request.setContentLanguage(request.lang) + request.theme.send_title(_('Actions for %s') % pagename, page_name=pagename) + + # Start content - IMPORTANT - without content div, there is no + # direction support! + request.write(request.formatter.startContent("content")) + + # Just list the actions + request.write(availableactions(request)) + + # End content and send footer + request.write(request.formatter.endContent()) + request.theme.send_footer(pagename) + +# Make a link to action +def actionlink(request, action, title, comment=''): + page = request.page + _ = request.getText + # Always add spaces: AttachFile -> Attach File + # XXX TODO do not make a page object just for split_title + title = Page(request, title).split_title(request) #, force=1) + # Use translated version if available + title = _(title, formatted=False) + params = '%s?action=%s' % (page.page_name, action) + link = wikiutil.link_tag(request, params, _(title)) + return u''.join([ u'<li>', link, comment, u'</li>' ]) + + +# Rippped from the theme code +def availableactions(request): + page = request.page + _ = request.getText + html = '' + links = [] + available = request.getAvailableActions(page) +# try: +# available = available.keys() +# except AttributeError: +# pass + for action in available: + links.append(actionlink(request, action, action)) + if page.isWritable() and request.user.may.write(page.page_name): + links.append(actionlink(request, 'edit', 'EditText')) + if request.user.valid and request.user.email: + action = ("Subscribe", "Unsubscribe")[request.user.isSubscribedTo([page.page_name])] + links.append(actionlink(request, 'subscribe', action)) + if request.user.valid: + links.append(actionlink(request, 'userform&logout=logout', 'Logout')) + links.append(actionlink(request, 'print', 'PrintView')) + links.append(actionlink(request, 'raw', 'ViewRawText')) + links.append(actionlink(request, 'refresh', 'DeleteCache')) + html = u'<ul>%s</ul>' % u''.join(links) + return html
