Hello,

I modify SELECT_OR_ADD_OPTION in order to combine autocomplete widget and 
the SELECT_OR_ADD_OPTION widget, but only thing I get from autocomplete in 
form is it instance id :

<gluon.sqlhtml.AutocompleteWidget object at 0x44f0390>

Here what I change in SELECT_OR_ADD_OPTION :

class SELECT_OR_ADD_OPTION(object):

    def __init__(self, controller=None, function=None, form_title=None, 
button_text = None, dialog_width=1000):
        if form_title == None:
            self.form_title = T('Add New')
        else:
            self.form_title = T(form_title)
        if button_text == None:
            self.button_text = T('Add')
        else:
            self.button_text = T(button_text)
        self.dialog_width = dialog_width

        self.controller = controller
        self.function = function
    def widget(self, field, value):
        #from gluon.sqlhtml import *
        #generate the standard widget for this field
        select_widget =* AutocompleteWidget(request, 
db.ref_eregistry.exp_num,*
*            id_field=db.ref_eregistry.eregistry_id, limitby=(0,10), 
min_length=2)*
        #get the widget's id (need to know later on so can tell receiving 
controller what to update)
        my_select_id =* 
'table1_eregistry_id'*#select_widget.attributes.get('_id', None)
        add_args = [my_select_id]
        #create a div that will load the specified controller via ajax
        form_loader_div = DIV(LOAD(c=self.controller, f=self.function, 
args=add_args,ajax=True), _id=my_select_id+"_dialog-form", 
_title=self.form_title)
        #generate the "add" button that will appear next the options widget 
and open our dialog
        activator_button = A(T(self.button_text), 
_id=my_select_id+"_option_add_trigger")
        #create javascript for creating and opening the dialog
        js = '$( "#%s_dialog-form" ).dialog({autoOpen: false, show: "fade", 
hide: "fade", width: %s});' % (my_select_id, self.dialog_width)
        js += '$( "#%s_option_add_trigger" ).click(function() { $( 
"#%s_dialog-form" ).dialog( "open" );return false;}); ' % (my_select_id, 
my_select_id)
        #decorate our activator button for good measure
        js += '$(function() { $( "#%s_option_add_trigger" ).button({text: 
true, icons: { primary: "ui-icon-circle-plus"} }); });' % (my_select_id)
        jq_script=SCRIPT(js, _type="text/javascript")

        wrapper = DIV(_id=my_select_id+"_adder_wrapper")
        wrapper.components.extend([ select_widget, form_loader_div, 
activator_button, jq_script])
        return wrapper

Help will be really appreciate.

Richard

Reply via email to