Exemple #1
0
    def __call__(self, field, value, **attributes):
        from gluon.sqlhtml import StringWidget
        default = dict(
            _type='text',
            value=(not value is None and str(value)) or '',
        )
        attr = StringWidget._attributes(field, default, **attributes)
        div_id = self.keyword + '_div'
        attr['_autocomplete'] = 'off'
        attr['_class'] = 'select2-chosen'
        select_script = """
        $('#{0:s}').select2({{
            placeholder: "Search for vulnerability...",
            minimumlength: {1:d},
            ajax: {{
                url: "{2:s}",
                dataType: 'json',
                data: function(term, page) {{
                    return {{
                        {3:s}: term
                    }}
                }},
                results: function (data) {{
                    return {{
                        results: $.map(data, function (item) {{
                            console.log(item);
                            return {{
                                text: item.{4:s},
                                id: item.id
                            }}
                        }})
                    }};
                }}
            }},
            initSelection: '',
            dropdownCssClass: "bigdrop",
        }});
        """.format(attr['_id'], self.min_length, self.url, self.keyword, self.fields[0].name)

        if self.is_reference:
            key2 = self.keyword + '_aux'
            attr['_class'] = 'string span8'         # XXX: ugly hardcoding of span8!
            if 'requires' in attr:
                del attr['requires']
            attr['_name'] = key2
            value = attr['value']
            record = self.db(
                self.fields[1] == value).select(self.fields[0]).first()
            attr['value'] = record and record[self.fields[0].name]
            return TAG[''](SPAN(**attr),
                           SCRIPT(select_script))
        else:
            attr['_name'] = field.name
            return TAG[''](SPAN(**attr),
                           SCRIPT(select_script))
Exemple #2
0
    def __call__(self, field, value, **attributes):
        from gluon.sqlhtml import StringWidget
        default = dict(
            _type='text',
            value=(not value is None and str(value)) or '',
        )
        attr = StringWidget._attributes(field, default, **attributes)
        div_id = self.keyword + '_div'
        attr['_autocomplete'] = 'off'
        attr['_class'] = 'select2-chosen'
        select_script = """
        $('#{0:s}').select2({{
            placeholder: "Search for vulnerability...",
            minimumlength: {1:d},
            ajax: {{
                url: "{2:s}",
                dataType: 'json',
                data: function(term, page) {{
                    return {{
                        {3:s}: term
                    }}
                }},
                results: function (data) {{
                    return {{
                        results: $.map(data, function (item) {{
                            console.log(item);
                            return {{
                                text: item.{4:s},
                                id: item.id
                            }}
                        }})
                    }};
                }}
            }},
            initSelection: '',
            dropdownCssClass: "bigdrop",
        }});
        """.format(attr['_id'], self.min_length, self.url, self.keyword,
                   self.fields[0].name)

        if self.is_reference:
            key2 = self.keyword + '_aux'
            attr['_class'] = 'string span8'  # XXX: ugly hardcoding of span8!
            if 'requires' in attr:
                del attr['requires']
            attr['_name'] = key2
            value = attr['value']
            record = self.db(self.fields[1] == value).select(
                self.fields[0]).first()
            attr['value'] = record and record[self.fields[0].name]
            return TAG[''](SPAN(**attr), SCRIPT(select_script))
        else:
            attr['_name'] = field.name
            return TAG[''](SPAN(**attr), SCRIPT(select_script))
    def widget(self, field, value):
        TagsInputWidget.widget_files()

        wgt_default = StringWidget.widget(
            field, value, **{"_data-role": "tagsinput", "_placeholder": current.T("Add Tag")}
        )
        wgt_id = wgt_default.attributes.get("_id", "no_id")
        wgt_value = wgt_default.attributes.get("_value", "")

        js = """
            jQuery(document).ready(function(){
                var tagnames = new Bloodhound({
                    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
                    queryTokenizer: Bloodhound.tokenizers.whitespace,
                    prefetch: {
                        url: '%(url_tags_json)s',
                        filter: function(list) {
                            return $.map(list, function(tagname) {
                                return { name: tagname };
                            });
                        }
                    }
                });
                tagnames.clearPrefetchCache();
                tagnames.initialize(true);

                $('#%(wgt_id)s').tagsinput({
                    typeaheadjs: {
                        name: 'tagnames',
                        displayKey: 'name',
                        valueKey: 'name',
                        source: tagnames.ttAdapter()
                    }
                });

                $('form').submit(function() {
                    var value = $('#%(wgt_id)s').val();
                    $('#%(wgt_id)s').val(value);
                    return true;
                });
            });
            """ % {
            "wgt_id": wgt_id,
            "url_tags_json": self.url,
        }
        jq_script = SCRIPT(js, _type="text/javascript")

        wrapper = DIV(_class="TagsInputWidget")
        wrapper.components.extend([wgt_default, jq_script])
        return wrapper
Exemple #4
0
 def __call__(self, field, value, **attributes):
     default = dict(
         _type = 'text',
         value = (value!=None and str(value)) or '',
         )
     attr = StringWidget._attributes(field, default, **attributes)
     div_id = self.keyword+'_div'
     attr['_autocomplete']='off'
     if self.is_reference:
         key2 = self.keyword+'_aux'
         key3 = self.keyword+'_auto'
         attr['_class']='string'
         name = attr['_name']
         if 'requires' in attr: del attr['requires']
         attr['_name'] = key2
         value = attr['value']
         record = self.db(self.fields[1]==value).select(self.fields[0]).first()
         attr['value'] = record and record[self.fields[0].name]
         attr['_onkeyup'] = "jQuery('#%(key3)s').val('');var e=event.which?event.which:event.keyCode; function %(u)s(){jQuery('#%(id)s').val(jQuery('#%(key)s :selected').text());jQuery('#%(key3)s').val(jQuery('#%(key)s').val())}; if(e==39) %(u)s(); else if(e==40) {if(jQuery('#%(key)s option:selected').next().length)jQuery('#%(key)s option:selected').attr('selected',null).next().attr('selected','selected'); %(u)s();} else if(e==38) {if(jQuery('#%(key)s option:selected').prev().length)jQuery('#%(key)s option:selected').attr('selected',null).prev().attr('selected','selected'); %(u)s();} else if(jQuery('#%(id)s').val().length>=%(min_length)s) jQuery.get('%(url)s?%(key)s='+escape(jQuery('#%(id)s').val()),function(data){if(data=='')jQuery('#%(key3)s').val('');else{jQuery('#%(id)s').next('.error').hide();jQuery('#%(div_id)s').html(data).show().focus();jQuery(document).bind('focusin.%(div_id)s click.%(div_id)s',function(e){if(jQuery(e.target).is('#%(key)s option') || (!jQuery(e.target).closest('##%(id)s,#%(div_id)s').length)){jQuery(document).unbind('.%(div_id)s'); jQuery('#%(div_id)s').fadeOut(%(dur)s)}}); jQuery('#%(div_id)s select').css('width',jQuery('#%(id)s').css('width'));jQuery('#%(key3)s').val(jQuery('#%(key)s').val());jQuery('#%(key)s').change(%(u)s);jQuery('#%(key)s').click(%(u)s);};}); else jQuery('#%(div_id)s').fadeOut('slow');" % \
             dict(url=self.url,min_length=self.min_length,
                  key=self.keyword,id=attr['_id'],key2=key2,key3=key3,
                  name=name,div_id=div_id,u='F'+self.keyword,
                  dur=self.fadeout_duration)
         if self.min_length==0:
             attr['_onfocus'] = attr['_onkeyup']
         return TAG[''](INPUT(**attr),INPUT(_type='hidden',_id=key3,_value=value,
                                            _name=name,requires=field.requires),
                            DIV(_id=div_id,_style='position:absolute; z-index: 99'))
     else:
         attr['_name']=field.name
         filter_str = ''
         if self.filter_keyword and self.filter_input_id:
             filter_str = "+'&%(filter_key)s='+escape(jQuery('#%(filter_id)s').val())" % \
                 dict(url=self.url,min_length=self.min_length,
                      key=self.keyword,id=attr['_id'],div_id=div_id,u='F'+self.keyword,
                      filter_key=self.filter_keyword,
                      filter_id=self.filter_input_id,
                      )
         attr['_onkeyup'] = "var e=event.which?event.which:event.keyCode; function %(u)s(){jQuery('#%(id)s').val(jQuery('#%(key)s').val())}; if(e==39) %(u)s(); else if(e==40) {if(jQuery('#%(key)s option:selected').next().length)jQuery('#%(key)s option:selected').attr('selected',null).next().attr('selected','selected'); %(u)s();} else if(e==38) {if(jQuery('#%(key)s option:selected').prev().length)jQuery('#%(key)s option:selected').attr('selected',null).prev().attr('selected','selected'); %(u)s();} else if(jQuery('#%(id)s').val().length>=%(min_length)s) jQuery.get('%(url)s?%(key)s='+escape(jQuery('#%(id)s').val())%(filter_str)s,function(data){jQuery('#%(id)s').next('.error').hide();jQuery('#%(div_id)s').html(data).show().focus(); jQuery(document).bind('focusin.%(div_id)s click.%(div_id)s',function(e){if(jQuery(e.target).is('#%(key)s option') || (!jQuery(e.target).closest('##%(id)s,#%(div_id)s').length)){jQuery(document).unbind('.%(div_id)s'); jQuery('#%(div_id)s').fadeOut(%(dur)s)}}); jQuery('#%(div_id)s select').css('width',jQuery('#%(id)s').css('width'));jQuery('#%(key)s').change(%(u)s);jQuery('#%(key)s').click(%(u)s);}); else jQuery('#%(div_id)s').fadeOut('slow');" % \
             dict(url=self.url,min_length=self.min_length,
                  key=self.keyword,id=attr['_id'],div_id=div_id,u='F'+self.keyword,
                  filter_str=filter_str,
                  dur=self.fadeout_duration)
         if self.min_length==0:
             attr['_onfocus'] = attr['_onkeyup']
         return TAG[''](INPUT(**attr),DIV(_id=div_id,
             _style='position:absolute; z-index: 99'))
    def widget(self, field, value, **attributes):
        MaskWidget.widget_files()

        attributes["_class"] = "span4 string"
        attributes["_placeholder"] = self.mask
        wgt_default = StringWidget.widget(field, value, **attributes)
        wgt_id = wgt_default.attributes.get("_id", "no_id")

        js = """
            jQuery(document).ready(function(){
                jQuery('#%(field_name)s').each( function(){
                    jQuery(this).mask('%(mask)s');
                });
            });
            """ % dict(
            field_name=wgt_id, mask=self.mask
        )
        jq_script = SCRIPT(js, _type="text/javascript")

        wrapper = DIV(_class="onx-widget MaskWidget")
        wrapper.components.extend([wgt_default, jq_script])
        return wrapper
 def widget(self, field, value, **attr):
     attr["_type"] = "email"
     return StringWidget.widget(field, value, **attr)