[web2py] Advanced Live Search

2011-12-27 Thread smirghor
In the example in chapter 3 of the book, mywiki application we have:

def search():
 an ajax wiki search page
 return dict(form=FORM(INPUT(_id='keyword',_name='keyword',
  _onkeyup=ajax('callback', ['keyword'], 'target');)),
  target_div=DIV(_id='target'))

def callback():
 an ajax callback that returns a ul of links to wiki pages
 query = db.page.title.contains(request.vars.keyword)
 pages = db(query).select(orderby=db.page.title)
 links = [A(p.title, _href=URL('show',args=p.id)) for p in pages]
 return UL(*links)


Assume that we would like to search a keyword both in the title and
the body of the wiki in the following manner:
1. The default search searches in the title and body both.
2. We have two check boxes with the attribute name set to title and
body respectively. Initially both are checked. But the user can
uncheck one of them to request the application to search only in the
other field. What is the best way to achieve this?

Specifically, if I add two checkboxes to the search function return
expression, i.e.:
INPUT(_type=checkbox, _name=title ), Title,
INPUT(_type=checkbox, _name=body), Body,
how I can check whether they are checked or not from within the
callback function? I'd like to use these two checkboxes to express
which fields of the database should be searched.






[web2py] Re: Advanced Live Search

2011-12-27 Thread smirghor
Hi Anthony.
Thanks for your answer. I seem to be unable to replicate what you
said. How do you test if the checkboxes are checked?


On Dec 27, 2:16 pm, Anthony abasta...@gmail.com wrote:
 You can submit multiple inputs (via id) with the ajax() function, so if you
 give your checkbox inputs id's (e.g., id='title' and id='body'), you should
 be able to do:

 ajax('callback', ['keyword', 'title', 'body'], 'target')

 and in the controller, access request.vars.keyword, request.vars.title, and
 request.vars.body (I think title and body will be None if they are not
 checked).

 Anthony







 On Tuesday, December 27, 2011 2:29:56 PM UTC-5, smirghor wrote:

  In the example in chapter 3 of the book, mywiki application we have:

  def search():
       an ajax wiki search page
       return dict(form=FORM(INPUT(_id='keyword',_name='keyword',
                _onkeyup=ajax('callback', ['keyword'], 'target');)),
                target_div=DIV(_id='target'))

  def callback():
       an ajax callback that returns a ul of links to wiki pages
       query = db.page.title.contains(request.vars.keyword)
       pages = db(query).select(orderby=db.page.title)
       links = [A(p.title, _href=URL('show',args=p.id)) for p in pages]
       return UL(*links)

  Assume that we would like to search a keyword both in the title and
  the body of the wiki in the following manner:
  1. The default search searches in the title and body both.
  2. We have two check boxes with the attribute name set to title and
  body respectively. Initially both are checked. But the user can
  uncheck one of them to request the application to search only in the
  other field. What is the best way to achieve this?

  Specifically, if I add two checkboxes to the search function return
  expression, i.e.:
  INPUT(_type=checkbox, _name=title ), Title,
  INPUT(_type=checkbox, _name=body), Body,
  how I can check whether they are checked or not from within the
  callback function? I'd like to use these two checkboxes to express
  which fields of the database should be searched.


[web2py] Re: Advanced Live Search

2011-12-27 Thread smirghor
I figured this work if I have the name attributes for the checkboxes
(and in my case the name attributes are the same as the id
attributes). Thanks again!


On Dec 27, 5:19 pm, smirghor m.mirghorb...@gmail.com wrote:
 Hi Anthony.
 Thanks for your answer. I seem to be unable to replicate what you
 said. How do you test if the checkboxes are checked?

 On Dec 27, 2:16 pm, Anthony abasta...@gmail.com wrote:







  You can submit multiple inputs (via id) with the ajax() function, so if you
  give your checkbox inputs id's (e.g., id='title' and id='body'), you should
  be able to do:

  ajax('callback', ['keyword', 'title', 'body'], 'target')

  and in the controller, access request.vars.keyword, request.vars.title, and
  request.vars.body (I think title and body will be None if they are not
  checked).

  Anthony

  On Tuesday, December 27, 2011 2:29:56 PM UTC-5, smirghor wrote:

   In the example in chapter 3 of the book, mywiki application we have:

   def search():
        an ajax wiki search page
        return dict(form=FORM(INPUT(_id='keyword',_name='keyword',
                 _onkeyup=ajax('callback', ['keyword'], 'target');)),
                 target_div=DIV(_id='target'))

   def callback():
        an ajax callback that returns a ul of links to wiki pages
        query = db.page.title.contains(request.vars.keyword)
        pages = db(query).select(orderby=db.page.title)
        links = [A(p.title, _href=URL('show',args=p.id)) for p in pages]
        return UL(*links)

   Assume that we would like to search a keyword both in the title and
   the body of the wiki in the following manner:
   1. The default search searches in the title and body both.
   2. We have two check boxes with the attribute name set to title and
   body respectively. Initially both are checked. But the user can
   uncheck one of them to request the application to search only in the
   other field. What is the best way to achieve this?

   Specifically, if I add two checkboxes to the search function return
   expression, i.e.:
   INPUT(_type=checkbox, _name=title ), Title,
   INPUT(_type=checkbox, _name=body), Body,
   how I can check whether they are checked or not from within the
   callback function? I'd like to use these two checkboxes to express
   which fields of the database should be searched.