'Stub, to be implemented in subclass. This method is used
by other method handlers to embed this method as widget.
@note:
For "html" format, the widget method must return an XML
component that can be embedded in a DIV. If a dict is
returned, it will be rendered against the view template
of the calling method - the view template selected by
the widget method will be ignored.
For other formats, the data returned by the widget method
will be rendered against the view template selected by
the widget method. If no view template is set, the data
will be returned as-is.
The widget must use the widget_id as HTML id for the element
providing the Ajax-update hook and this element must be
visible together with the widget.
The widget must include the widget_id as ?w=<widget_id> in
the URL query of the Ajax-update call, and Ajax-calls should
not use "html" format.
If visible==False, then the widget will initially be hidden,
so it can be rendered empty and Ajax-load its data layer
upon a separate refresh call. Otherwise, the widget should
receive its data layer immediately. Widgets can ignore this
parameter if delayed loading of the data layer is not
all([possible, useful, supported]).
@param r: the S3Request
@param method: the URL method
@param widget_id: the widget ID
@param visible: whether the widget is initially visible
@param attr: dictionary of parameters for the method handler
@return: output'

def widget(self, r, method=None, widget_id=None, visible=True, **attr):

    return None
