db.define_table('tag',dbField('name'))

db.define_table('taggable,db.Field('description'),db.Field
('tags','text'))

db.taggable.tags.requires=IS_IN_DB(db,'tag.id','%(name)
s',multiple=True)

Optional:

def tag_widget(self,value,tags=[]):
        script=SCRIPT
("""
        function web2py_tag(self,other,tag)
{
           var o=document.getElementById
(other)
           if(self.className=='tag_on')
{
             self.setAttribute
('class','tag_off');
             o.value=o.value.replace('|'+tag
+'|','|');
           } else if(self.className=='tag_off')
{
             self.setAttribute
('class','tag_on');
             o.value=o.value+'|'+tag
+'|';
           }
        }""")
        id=self._tablename+'_'+self.name
        def onclick(x): return "web2py_tag(this,'%s','%s');"%(id,x)
        if tags and not isinstance(tags[0],(list,tuple)): tags=[tags]
        buttons=[DIV(_class='tag_row',
                 *[SPAN(A(x,_class='tag_on' if value and '|%s|'%x \
                 in value else 'tag_off',_onclick=onclick(x)),\
                 _class="tag_col") for x in tag_line]) for tag_line in
tags]
        return DIV(script,INPUT(_type='hidden',_id=id,_name=self.name,
                                _value=value),*buttons)

db.tagging.tags.widget=tag_widget

Massimo

On Feb 7, 4:44 am, mickgardner <mickgard...@gmail.com> wrote:
> Hi,
>
> i've been trying all day to work out how to do this and cannot get it
> working completely the way I want it to.
>
> I'm building a blog and want to implement tagging.
> The tagging would work as such:
>
> There would be a text, tagging field that would accept multiple comma
> or space separated 'tags'.
>
> each word or tag would then be listed with each post,
> each word would be a hyperlinked so that when its clicked on it would
> list all articles that have that tag on it.
>
> Now I can get this working, if I have one word only. When I use spaces
> and or multiple words / tags the system rightfully treats it as one
> tag.
>
> I'm trying to work out how to accept multiple tags in one field and
> have them treated as multiple tags not one giant tag with spaces.
> I was thinking that perhaps I could use some sort of custom validator
> or something behind the form that split the words up so that they were
> treated separately but cannot figure it.
>
> Any assistance / advice would be welcome!
>
> thanks
> Michael Gardner
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to