Most users don't know, after having called an action showing some metainformation on a page, how to return to the original wiki page.
Observation
Users with technical and non-technical background do call an action like
- info
info&general=1
info&hitcounts=1
- diff
- attachment
on a wiki page. After having e.g. looked at the diff, info or file attachments or having uploaded an new file, they don't know how to return to the original wikipage.
Task
When viewing some metainformation on a page, it is often unclear, how to return to the underlying wikipage. After having uploaded a file, "return" in the browser seems not be a good solution, especially after file uploads. Users are puzzeld then. Often they return to the mainpage by clicking the wikilogo and click through the pages to view to page in question again. Deleting the "action=..." string in the url-line of the browser is too complicated since it cannot be achieved by simple mouse clicking. This possibility is often also unknow to inexperienced users. Some users having activated "show recently visited pages" in the users preferences menue use this to return to the wikipage, but do complain, that this is not a good implementation but rather a trick to get Moin to do what they want.
Users
Technical as non-technical users which are new to wikis.
Context
Moin used as an editable intranet with mostly elderly engineers.
Discussion
To avoid these problems, I have added a new menue item "Return to wikipage", that appears a first item on the menulist e.g. like "Show parentpage". When clicking on the link, actually the show-action is performed. When building the menue in my mytheme.py file, I do check the url with "pageurl.find" as follows:
def pagepanel(self, d): """ Create page panel """ _ = self.request.getText if self.shouldShowEditbar(d['page']): page = d['page'] _get = self.request.getText pageurl = self.request.query_string # start building list of links and actions builder = BuildLinks(self.request, page) # if metainfos on the current page are shown add link if (pageurl.find("action=info") != -1) or (pageurl.find("action=diff") != -1) or (pageurl.find("action=AttachFile") != -1): builder.add('show', u'Return to wikipage') # if parent page get parent and add link parent = page.getParentPage() if parent: builder.addplain(parent.link_to(self.request, _get(u'Show parentpage', formatted=False))) # add actions #builder.add(pageurl, pageurl) builder.add('edit', 'Edit') if self.request.cfg.mail_enabled: if self.request.user.isSubscribedTo(page) == 0: builder.add('subscribe', 'Subscribe') else: builder.add('subscribe', 'Unsubscribe') builder.add('diff', u'Show changes') builder.add('print', 'Printpreview') builder.add('RenamePage', 'Rename') builder.add('DeletePage', u'Delete') builder.add('info', 'Page properties') builder.add('AttachFile', u'File attachments') ... class BuildLinks(object): """ Build a link list """ def __init__(self, request, page): self.request = request self.url = quoteURL(page.page_name) self.links = [] def addplain(self, text): self.links += [text] def add(self, action, label): url = '%s?action=%s' % (self.url, action) txt = self.request.getText(label, formatted=False) self.links += [link(self.request, url, txt)] def __call__(self): html = u'<ul class="editbar">\n%s\n</ul>\n' %\ '\n'.join(['<li>%s</li>' % item for item in self.links if item != '']) return html
This mostly works well and the users are now happy again. Alas, the above solution has also some problems due to a "bug" in Moin. See for that MoinMoinBugs/NoActionInQueryStringAfterFileUpload. I would suggest to implement that menue item in the default moin themes to improve usability.