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

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.


CategoryUsabilityObservation

MoinMoin: UsabilityObservation/UserCannotReturnToWikiPageAfterPerformedAction (last edited 2007-10-29 19:14:34 by localhost)