1 # -*- coding: iso-8859-1 -*- 2 """ 3 MoinMoin - formdata (MoinForms) 4 5 @copyright: 2013 by Paul Boddie <paul@boddie.org.uk> 6 @license: GNU GPL (v2 or later), see COPYING.txt for details. 7 """ 8 9 from MoinMoin.Page import Page 10 from MoinForms import loadFieldsFromString 11 from MoinSupport import * 12 13 Dependencies = ["pages"] 14 15 # Parser support. 16 17 class Parser: 18 19 "Manipulate and display forms." 20 21 Dependencies = Dependencies 22 extensions = [] 23 24 def __init__(self, raw, request, **kw): 25 26 """ 27 Initialise the parser with the given 'raw' data, 'request' and any 28 keyword arguments that may have been supplied. 29 """ 30 31 self.raw = raw 32 self.request = request 33 self.attrs = parseAttributes(kw.get("format_args", ""), False) 34 35 def format(self, fmt, write=None): 36 37 """ 38 Format the form data using the given formatter 'fmt'. If the 'write' 39 parameter is specified, use it to write output; otherwise, write output 40 using the request. 41 42 Currently, this just writes a link to the form. 43 """ 44 45 request = self.request 46 page = request.page 47 _ = fmt._ 48 49 number = page.page_name.rsplit("/", 1)[1] 50 51 # Obtain the details of the form data. 52 53 headers, data = loadFieldsFromString(self.raw) 54 headers = dict(headers) 55 56 form_pagename = headers.get("Form-Page") 57 fragment = headers.get("Form-Fragment") 58 59 write = write or request.write 60 61 if form_pagename and number.isdigit(): 62 form_page = Page(request, form_pagename) 63 query = {"fragment" : fragment, "load" : number, "action" : "MoinFormHandler"} 64 write(linkToPage(request, form_page, _("Follow this link to view the form."), query, fragment)) 65 else: 66 write(fmt.text(_("The form data does not specify the original form."))) 67 68 # vim: tabstop=4 expandtab shiftwidth=4