thank you. please email it to me as an attachment. Massimo
On Jan 10, 2:03 am, "Wes James" <[email protected]> wrote: > Here is t2.login and layout.html changed in t3 so that: > > 1. when there is a failed login, it keeps the email in the email field > and puts the cursor in the password field > 2. if it is an invalid email address it puts the cursor at the end of > the email address so it can be fixed > 3. theirs IS a better way to do this - i just don't know how :) > 4. i did this cuz retyping email in username fields after login > failure bugs me ;) > > -wj > > t3/modules/t2.py: > > def login(self,next='index',onlogin=None): > """ > To use, create a controller: > > def login(): return t2.login() > """ > request,response,session,cache,T,db=self._globals() > db.t2_person.email.requires=IS_EMAIL() > form=SQLFORM(db.t2_person,fields=['email','password'],\ > hidden=dict(_destination=request.vars._destination), > _class='t2-login') > if FORM.accepts(form,request.vars,session): > rows=db(db.t2_person.email==form.vars.email)\ > (db.t2_person.password==form.vars.password)\ > (db.t2_person.registration_key=='').select() > if rows: > session.t2.person_id=rows[0].id > session.t2.person_name=rows[0].name > session.t2.person_email=rows[0].email > session.flash=self.messages.logged_in > if onlogin: onlogin(rows[0]) > if request.vars._destination: > redirect(request.vars._destination) > self.redirect(next) > else: > session.flash=self.messages.invalid_login > session.email=form.vars.email > # added this next line > session.cnt=1 > self.redirect() > # added this else section > else: > if session.email and len(session.email) and not session.cnt: > if not form.vars.email: > session.email=None > else: > if not session.cnt: > session.email=form.vars.email > > return form > > t3/views/layout.html > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> > <html xmlns="http://www.w3.org/1999/xhtml"> > <head> > <title>{{=response.title}}</title> > <meta http-equiv="content-type" content="text/html; charset=utf-8" /> > <meta name="description" content="{{=response.description}}" /> > <meta name="keywords" content="{{=response.keywords}}" /> > <meta name="description" content="{{=response.author}}" /> > <style> > {{=XML(configuration.styles.replace('APPLICATION',request.application))}} > </style> > {{include 'web2py_ajax.html'}} > <script > src="/{{=request.application}}/static/scripts/sfmenu.js"></script><script > src="/{{=request.application}}/static/scripts/fancyzoom.min.js"></script><link > charset="utf-8" > href="/{{=request.application}}/static/styles/rating.css" > rel="stylesheet" type="text/css" /><script > src="/{{=request.application}}/static/scripts/rating.js"></script> > <script>$(document).ready(function(){ > try { $('.zoom').fancyZoom({scaleImg:true, closeOnClick:true, > directory:"/{{=request.application}}/static/media"}); } catch(e) {}; > try { $('.sf-menu').superfish({ animation: {height:'show'}, delay:500 > > }); } catch(e) {}; > }); > > {{# put cursor at end of text when field is set focus}} > > $(function() { > $('input[type="text"]').bind('focus',function() { > window.o=this; > if (o.setSelectionRange) /* DOM */ > setTimeout('o.setSelectionRange(o.value.length,o.value.length)',2); > else if (o.createTextRange) /* IE */ > { > var r=o.createTextRange(); > r.moveStart('character',o.value.length); > r.select(); > } > }); > > }); > > {{ # if response.flash has invalid login, set focus to password field }} > > {{if response.flash == 'Invalid Login':}} > $(document).ready(function() { $ > ('#t2_person_password').focus(); }); > {{pass}} > > </script> > </head> > > <body> > <div class="wrapper"> > <div class="header"> > <div class="title">{{=response.title}}</div> > <div class="subtitle">{{=response.subtitle}}</div> > <div class="search"> > <form method="get" action="http://www.google.com/search"> > <input class="search-text" type="text" name="as_q" value="" > size="15"/> > <input type="hidden" name="as_sitesearch" > value="{{=request.env.http_host}}"> > <input type="submit" class="search-submit" value="Search" /> > </form> > </div><!-- search //--> > <div class="authentication"> > {{if t2.logged_in:}} > {{=A('Profile',_href=URL(r=request,c='default',f='profile'))}} | > {{=A('Logout',_href=URL(r=request,c='default',f='logout'))}} > {{else:}} > {{=A('Login',_href=URL(r=request,c='default',f='login'))}} | > {{=A('Register',_href=URL(r=request,c='default',f='register'))}} | > {{=A('Password',_href=URL(r=request,c='default',f='password'))}} > {{pass}} > </div><!-- auth //--> > </div><!-- header //--> > <div class="menu">{{=t2.menu(response.menu)}}</div> > <div class="page"> > {{if response.flash:}}<div class="flash">{{=response.flash}}</div>{{pass}} > <div class="left-column"> > {{try:}} > > {{if form[0][0][1][0]['_name'] == 'email':}} > > <form action="" class="t2-login" enctype="multipart/form-data" > method="post"><table> > > <tr id="t2_person_email__row"> > <td><label for="t2_person_email" > id="t2_person_email__label">Email: </label></td> > <td><input class="string" id="t2_person_email" name="email" > type="text" value="{{=session.email if session.email else ''}}" /> > {{if form.errors.email:}} > <div class="error">{{=form.errors.email}}</div> > <script> > $(document).ready(function() { $ > ('#t2_person_email').focus(); }); > </script> > {{pass}} > > </td> > <td></td></tr> > > <tr id="t2_person_password__row"><td><label > for="t2_person_password" id="t2_person_password__label">Password: > </label></td> > <td><input class="password" id="t2_person_password" > name="password" type="password" /> > {{if form.errors.password:}} > <div class="error">{{=form.errors.password}}</div> > {{if not form.errors.email:}} > <script> > $(document).ready(function() { $ > ('#t2_person_password').focus(); }); > </script> > {{pass}} > {{pass}} > > </td><td></td></tr> > <tr id="submit_record__row"><td></td><td><input type="submit" > value="Submit" /></td> > <td></td></tr></table> > > {{=form.hidden_fields()}} > > </form> > {{else:}} > {{include}} > {{pass}} > {{except:}} > {{include}} > {{pass}} > > </div> > <div class="right-column"> > <ul> > {{for _i in settings.sidebar or []:}} > <li> > <h2>{{=_i[0]}}</h2> > {{if isinstance(_i[1],list):}} > <ul> > {{for _j in _i[1]:}} > <li>{{=A(_j[0],_href=_j[1])}}</li> > {{pass}} > </ul> > {{else:}} > <p>{{=_i[1]}}</p> > {{pass}} > </li> > {{pass}} > </ul> > </div><!-- sidebar //--> > </div><!-- page //--> > <div class="footer"> > {{if settings.footer:}} > {{=XML(settings.footer)}} > {{else:}} > <p>Created by {{=response.author}} - Powered by <a > href="http://www.web2py.com">web2py</a></p> > {{pass}} </div><!-- footer //--> > </div><!-- wrapper //--> > </body> > </html> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py Web Framework" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---

