示例#1
0
    def Render(self):
        # Watermark
        js = ''

        if self._props.get('optional'):
            optional_string = self._props.get('optional_string', _("Optional"))
            js += "$('#%s').DefaultValue('optional-grey','%s');" % (
                self.id, optional_string)

            if not self._props.get('class'):
                self._props['class'] = 'optional'
            else:
                self._props['class'] += ' optional'

        # Render the text field
        html = '<input type="%s"%s />' % (self.type, self.__get_input_props())

        # Render the error reporting field
        html += '<div class="error"%s></div>' % (self.__get_error_div_props())

        render = Widget.Render(self)
        render.html += html
        render.js += js
        render.headers += HEADER

        return render
示例#2
0
    def Render(self):
        render = Widget.Render(self)

        for e in self.entries:
            title, widget, comment, use_submitter = e

            id = self.id
            props = ''

            if use_submitter:
                submit = Submitter(self._url)
                submit += widget
            else:
                submit = widget

            widget_r = submit.Render()
            widget_html = widget_r.html

            html = HTML_ENTRY % (locals())

            render.html += html
            render.js += widget_r.js
            render.headers += widget_r.headers
            render.helps += widget_r.helps

        render.html = HTML_TABLE % (render.html)
        render.headers += HEADERS
        return render
示例#3
0
    def Render(self):
        # Set the header rows/cols
        for num in self.header_rows:
            for field in self.rows[num - 1]:
                if field:
                    field._tag = 'th'

        for num in self.header_cols:
            for row in self.rows:
                row[num]._tag = 'th'

        # Render content
        render = Widget.Render(self)

        # XXX: This is an ugly hack to set thead/tbody when only one row is a header
        if len(self.header_rows) == 1:
            render.html += '<thead>'
            render += self.rows[0].Render()
            render.html += '</thead><tbody>'
            for row in self.rows[1:]:
                render += row.Render()
            render.html += '</tbody>'
        else:
            for row in self.rows:
                render += row.Render()

        # Wrap the table
        props = " ".join(['%s="%s"' % (k, self.props[k]) for k in self.props])
        if props:
            render.html = '<table id="%s" %s>%s</table>' % (self.id, props,
                                                            render.html)
        else:
            render.html = '<table id="%s">%s</table>' % (self.id, render.html)

        return render
示例#4
0
    def Render(self):
        render = Widget.Render(self)

        # Total pages
        tmp = len(self.items) / float(self.items_per_page)
        if int(tmp) < tmp:
            total_pags = int(tmp) + 1
        else:
            total_pags = int(tmp) or 1

        if total_pags > 1 or self.show_footer_1pag:
            title = Box({'class': 'paginator-counter'},
                        RawHTML("Page %d of %d" %
                                (self.page_num + 1, total_pags)))
            render += title.Render()

        # Content
        range_start = self.items_per_page * self.page_num
        range_end = self.items_per_page * (self.page_num + 1)

        for item in self.items[range_start:range_end]:
            render += item.Render()

        # Add footer
        if total_pags > 1 or self.show_footer_1pag:
            footer = Paginator_Footer(len(self.items), self.page_num,
                                      self.items_per_page, total_pags,
                                      self.refreshable)
            render += footer.Render()

        return render
示例#5
0
    def Render(self):
        id = self.id
        props = props_to_str(self.props)
        on_id = self.widget_on.id
        off_id = self.widget_off.id
        value = "01"[int(self.active)]

        # Render embedded widgets
        render_on = self.widget_on.Render()
        render_off = self.widget_off.Render()
        on_html = render_on.html
        off_html = render_off.html

        # Render
        render = Widget.Render(self)
        render.html += HTML % (locals())
        render.js += JS % (locals())

        # Merge the image renders, just in case
        render_on.html = ''
        render_off.html = ''
        render += render_on
        render += render_off

        return render
示例#6
0
    def Render(self):
        render = Widget.Render(self)

        render.html += HTML % ({'id': self.id, 'props': self.__get_props()})
        render.js += JS % ({'id': self.id})
        render.headers += HEADERS

        return render
示例#7
0
    def Render(self):
        render = Widget.Render(self)

        for c in self.child:
            tmp = c.Render()
            render += tmp

        return render
示例#8
0
    def Render(self):
        render = Widget.Render(self)
        for entry in self.entries:
            render += entry.Render()

        render.html = '<div class="help_group" id="help_group_%s">%s</div>' % (
            self.name, render.html)
        return render
示例#9
0
    def Render(self):
        if not 'id' in self.props:
            self.props['id'] = self.id

        props = " ".join(['%s="%s"' % (k, self.props[k]) for k in self.props])

        render = Widget.Render(self)
        render.html = '<img %s />' % (props)
        return render
示例#10
0
    def Render(self):
        # Render the text field
        html = '<input type="hidden" id="%s" %s/>' % (self.id,
                                                      props_to_str(self.props))

        render = Widget.Render(self)
        render.html += html

        return render
示例#11
0
    def Render(self):
        selected = self.props.get('selected')

        def render_str(o):
            if len(o) == 2:
                name, label = o
                props = {}
            elif len(o) == 3:
                name, label, props = o

            props_str = props_to_str(props)
            if selected and str(selected) == str(name):
                return '<option value="%s" selected="true" %s>%s</option>' % (
                    name, props_str, label)
            else:
                return '<option value="%s" %s>%s</option>' % (name, props_str,
                                                              label)

        def render_list(o):
            if len(o) == 2:
                name, options = o
                props = {}
            elif len(o) == 3:
                name, options, props = o

            props_str = props_to_str(props)
            txt = '<optgroup label="%s" %s>' % (name, props_str)
            for o in options:
                txt += render_str(o)
            txt += '</optgroup>'
            return txt

        # Render entries
        content = ''
        for o in self._options:
            if type(o[1]) == str:
                content += render_str(o)
            elif type(o[1]) == list:
                content += render_list(o)
            else:
                raise ValueError

        # Render the container
        header = ''
        for p in filter(lambda x: x != 'selected', self.props):
            if self.props[p]:
                header += ' %s="%s"' % (p, self.props[p])
            else:
                header += ' %s' % (p)

        html = '<select%s>%s</select>' % (header, content)

        render = Widget.Render(self)
        render.html += html

        return render
示例#12
0
    def Render(self):
        if '://' in self.ref:
            url = self.ref
        else:
            url = "/help/%s.html" % (self.ref)

        render = Widget.Render(self)
        render.html = '<div class="help_entry"><a href="%s" target="cherokee_help">%s</a></div>' % (
            url, self.title)
        return render
示例#13
0
    def Render(self):
        render = Widget.Render(self)

        props = {'id': self.id, 'props': props_to_str(self.props)}

        render.html += HTML % (props)
        render.js += JS % (props)
        render.headers += HEADERS

        return render
示例#14
0
    def Render(self):
        # Empty response
        render = Widget.Render(self)

        # Render the help entries
        for entry in self.helps:
            render.html += entry.Render().html

        # Wrap the list of entries
        render.html = '<div class="help">%s</div>' % (render.html)
        return render
示例#15
0
    def Render(self):
        render = Widget.Render(self)

        props = props_to_str(self.props)
        render.html += HTML % ({
            'id': self.id,
            'content': self.content,
            'props': props
        })

        return render
示例#16
0
    def Render(self):
        render = Widget.Render(self)

        props = {
            'id_widget': self.id,
            'proxy_url': self._url_local,
            'extra_props': util.props_to_str(self.props)
        }

        render.html += HTML % (props)
        render.js += JAVASCRIPT % (props)
        return render
示例#17
0
    def Render (self):
        render = Widget.Render (self)

        props = {'id':    self.id,
                 'value': self.value,
                 'props': props_to_str (self.props)}

        render.html    += HTML %(props)
        render.js      += PERCENT_INIT_JS %(props)
        render.headers += HEADERS

        return render
示例#18
0
    def Render(self):
        props = {'id': self.id, 'upload_url': self._url_local}

        raw_html = Uniq_Block(CSS)
        raw_html += HTML

        render = Widget.Render(self)
        render.html += raw_html % (props)
        render.js += JS % (props)
        render.headers += HEADERS

        return render
示例#19
0
    def Render(self):
        id = self.id
        caption = self.caption
        props = props_to_str(self.props)

        html = '<button id="%(id)s" %(props)s>%(caption)s</button>' % (
            locals())

        render = Widget.Render(self)
        render.html += html

        return render
示例#20
0
    def Render(self):
        id = self.id
        caption = self.caption
        props = props_to_str(self.props)

        html = '<a id="%(id)s" %(props)s><span>%(caption)s</span></a>' % (
            locals())

        render = Widget.Render(self)
        render.html += html

        return render
示例#21
0
    def Render(self):
        props = {
            'id': self.id,
            'url': self.url,
            'props': props_to_str(self.props),
            'content': ''
        }

        render = Widget.Render(self)
        render.html += HTML % (props)
        render.js += JS_URL_LOAD % (props)
        render.js += JS_URL_INIT % (props)
        return render
示例#22
0
    def Render(self):
        render = Widget.Render(self)

        props = {
            'id_widget': self._id,
            'proxy_url': self._url_local,
            'async_bool': ['false', 'true'][self._async]
        }

        render.html += HTML % (props)
        render.js += JAVASCRIPT % (props)

        return render
示例#23
0
    def Render (self):
        render = Widget.Render(self)
        id     = self._props['id']

        ul_html  = ''
        tab_html = ''

        num  = 1
        for title, widget in self._tabs:
            r = widget.Render()

            # Keep record of dependencies
            render.js      += r.js
            render.headers += r.headers
            render.helps   += r.helps

            tab_ref = ''
            for c in title:
                if c in string.letters + string.digits:
                    tab_ref += c
                else:
                    tab_ref += '_'
            tab_ref += '-%d' %(num)

            # Render <ul>
            props = {'id':      id,
                     'tab_ref': tab_ref,
                     'widget':  r.html,
                     'title':   title}

            ul_html  += HTML_LI  %(props)
            tab_html += HTML_TAB %(props)

            num  += 1

        # Render the whole thing
        tmp  = HTML_UL %({'li_tabs': ul_html})
        tmp += tab_html

        html = HTML %({'id':   id,
                       'html': tmp})

        props = {'id':   id,
                 'tabs': html}

        render.html     = html
        render.js      += JS_INIT %(props)
        render.headers += HEADER

        return render
示例#24
0
    def Render (self):
        # Deal with a couple of exceptions
        new_props = self._props.copy()

        if new_props.has_key('checked') and int(new_props.pop('checked')):
            new_props['checked'] = "checked"

        if new_props.has_key('disabled') and int(new_props.pop('disabled')):
            new_props['disabled'] = "disabled"

        # Render the widget
        render = Widget.Render (self)
        render.html += HTML %({'id':    self.id,
                               'props': props_to_str (new_props)})
        return render
示例#25
0
    def Render(self):
        # Render content
        render = Widget.Render(self)

        for field in self.entries:
            if field:
                render += field.Render()
            else:
                render.html += "<td></td>"

        # Wrap the table row
        props = " ".join(['%s="%s"' % (k, self.props[k]) for k in self.props])

        if props:
            render.html = '<%s %s>%s</%s>' % (self.tag, props, render.html,
                                              self.tag)
        else:
            render.html = '<%s>%s</%s>' % (self.tag, render.html, self.tag)

        return render
示例#26
0
    def Render(self):
        # Render child
        if self.widget:
            w_rend = self.widget.Render()
        else:
            w_rend = Container().Render()

        w_html = w_rend.html
        w_rend.html = ''

        # Mix both
        render = Widget.Render(self)
        render += w_rend

        props = {
            'id': self.id,
            'props': props_to_str(self.props),
            'title': self.title,
            'widget_html': w_html,
            'comment': self.comment
        }

        render.html += HTML_ENTRY % (props)
        return render
示例#27
0
 def Render(self):
     render = Widget.Render(self)
     render.html += self.html
     render.js += self.js
     return render