Changeset 3338

Show
Ignore:
Timestamp:
03/11/08 00:15:33 (10 months ago)
Author:
rharkins
Message:

Now have a simple working version without AJAX. Yeah!

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • checklistplugin/0.11/trac_checklist/macros.py

    r3337 r3338  
    5454 
    5555        href = formatter.req.href('checklist/update') 
    56         action = ''.join(('javascript:', 
    57             'var formdata={};', 
    58             'var form=document.getElementById(%r);' % str(id(self)), 
    59             'for (var idx = 0; idx < form.elements.length; ++idx)', 
    60             '{ formdata[form.elements[idx].name] = form.elements[idx].value }', 
    61             'jQuery.ajax({url:%r,data:formdata,complete:' % href, 
    62             'function(r, s) { alert(r.responseText) },dataType:\'text\'});' 
    63             )) 
    64  
    6556        return ''.join(( 
    66             '<IFRAME id="if_%s" name="if_%s"' % (id(self), id(self)), 
    67                 ' onload="', 
    68                     'var t=this.contentDocument.body.textContent;', 
    69                     'if (t) { alert(t) }"', 
    70                 ' style="display:none"></IFRAME>', 
    71             '<FORM action="%s" target="if_%s"' % (href, id(self)), 
     57            '<FORM method="GET" action="%s"' % href, 
    7258                '>', 
     59            '<INPUT type="hidden" name="__backpath__" value=%r>'  
     60                % formatter.req.href(formatter.req.path_info), 
    7361            '<INPUT type="hidden" name="__context__" value=%r>' % str(context), 
    7462            html, 
  • checklistplugin/0.11/trac_checklist/updater.py

    r3337 r3338  
    5454            self.log.debug('UPDATE ARGS: ' + str(req.args)) 
    5555            args = dict(req.args) 
     56            backpath = args.pop('__backpath__', None) 
    5657            context = args.pop('__context__', None) 
    5758            if context is None: 
    5859                raise BadRequest('__context__ is required') 
    59             who = 'whoknows' 
    60             fields = set(args.pop('__fields__', ())) 
    61             for name in fields: 
     60            who = str(req.session.sid) 
     61            fields = args.pop('__fields__', ()) 
     62            if isinstance(fields, basestring): 
     63                fields = (fields,) 
     64            for name in set(fields): 
    6265                value = bool(args.get(name)) and 'on' or '' 
    6366                self.updateField(context, name, value, who) 
     
    7376            req.write(msg) 
    7477        else: 
    75             req.send_response(200) 
    76             req.send_header('Content-Type', 'text/plain') 
     78            if backpath: 
     79                req.send_response(302) 
     80                req.send_header('Content-Type', 'text/plain') 
     81                req.send_header('Location', backpath) 
     82            else: 
     83                req.send_response(200) 
     84                req.send_header('Content-Type', 'text/plain') 
    7785            req.end_headers() 
    7886            req.write('OK')