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