can anyone help. I have copied all the files. But still not working. When i clicked on the + button it is not showing popup window to choose files.
On Fri, Jun 26, 2015 at 11:43 AM, Chaitu P <chaitanya.pochampa...@gmail.com> wrote: > Hi Paolo, > > I have installed your application and it is working perfectly. > I want have same multiimage upload functionality in my application. So I > changed one of the table names. > But unfortunately it is not working. Iam not sure what Iam missing I have > copied the css and js files as well. Is there a way that you can help me. > > my controller: > def new(): > # only SQLFORM.factory tested > form=SQLFORM.factory(db.submission,db.t_photos) > > if form.accepts(request, session, onvalidation=lambda form:check(form)): # > Is it possible to use onvalidation with form.process() syntax ? > submission_id = > db.submission.insert(**db.submission._filter_fields(form.vars)) > nfiles = 0 > for var in request.vars: > if var.startswith('f_photo') and request.vars[var] != '': > uploaded = request.vars[var] > if isinstance(uploaded,list): > # files uploaded through input with "multiple" attribute set on true > counter=0 > for element in uploaded: > counter += 1 > nfiles += 1 > file_title = element.name.split(":")[-1] # TODO: could this be made > better? > # I mean, the title must be appended to element's name > # or is there another way? > db.t_photos.insert( > f_trip_ref=trip_id, > f_title=file_title+" ("+str(counter)+")" if file_title!="" else file_title, > f_photo=db.t_photos.f_photo.store(element.file,element.filename)) > else: > # only one file uploaded > element = request.vars[var] > nfiles += 1 > db.t_photos.insert( > f_trip_ref=trip_id, > f_title=element.name.split(":")[-1], > f_photo=db.t_photos.f_photo.store(element.file,element.filename)) > > session.flash = T('%s photo%s uploaded'%(nfiles, 's' if nfiles>1 else '')) > redirect(URL('teacher')) > > if isinstance(form,FORM): > # hide f_title form's row. Is there a better way to accomplish it? > del form[0][3] > > return dict(form=form) > > view: > > {{response.files.extend([URL('static','css/multiupload.css'),URL('static','js/jquery.multiupload.js')])}} > {{left_sidebar_enabled=right_sidebar_enabled=False}} > {{extend 'layout.html'}} > <div> > {{=form}} > <script type="text/javascript" charset="utf-8"> > //<!-- > jQuery('input[name="f_photo"]:not(.processed)').multiUpload({ > mw_placeholder:"{{=T('insert a title')}}", > mw_text_addBtn:"+", > mw_tooltip_addBtn:"{{=T('add a file')}}", > mw_text_clearBtn:"x", > mw_tooltip_clearBtn:"{{=T('remove all')}}", > mw_tooltip_removeFileBtn:"{{=T('remove this file')}}", > mw_tooltip_removeGroupBtn:"{{=T('remove this file group')}}", > mw_group_title:"{{=T('FILE GROUP')}}", > mw_fileNumber:false, > mw_maxElementAllowed:5 > }); > //--> > </script> > </div> > > model: > > db.define_table('submission', > Field('name', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()]), > Field('email', requires=[IS_NOT_EMPTY(), IS_EMAIL()]), > #Field('file','upload', requires=IS_NOT_EMPTY()), > Field('status', readable=False,writable=False), > Field('posted_on', 'date', default=request.now, readable=False, > writable=False), > Field('problem_id','reference problem',readable=False, writable=False)) > > db.define_table('t_photos', > Field('f_trip_ref', type='reference submission', notnull=True, > writable=False, readable=False), > Field('f_title', type='string', label=T('Title'), notnull=False), # > notnull=False is required > Field('f_photo', type='upload', > uploadfolder=request.folder+'static/pictures', notnull=False, # > notnull=False is required > label=T('Photos'), > represent=lambda x, row:x and A('%s'%(db.t_photos.f_photo.retrieve(x)[0]), > _href=URL('default','viewer.html',args=x), > _target="_blank", > _title=T("open photo"), > _class='file-reference') > or '' > ), > ) > > > > > On Friday, June 22, 2012 at 1:46:51 PM UTC-5, Paolo Caruccio wrote: >> >> Richard, >> >> I'm sorry for late answer. I spent a bit of time playing with bootstrap >> 2.0.4 and rewriting the code to follow frequent web2py changes. >> >> In attached app, you'll find a rewieved version of multiuploads control >> and some bootstrap features (carousel, web2py flash messages replaced with >> bootstrap alert, form and form errors). >> >> I don't know if the approach - that you'll see in app - is enough to >> satisfy your request, but It represents the way I would use. >> >> The app is a toy. I mean, you could find many bugs, not optimized code, >> and so on. Its scope is only to demonstrate multiuploads control usage in >> an web2py application. >> >> >> >> Il giorno venerdì 1 giugno 2012 22:08:06 UTC+2, Richard ha scritto: >>> >>> No problem, I don't have time neither maybe for a couples of days too :) >>> >>> Richard >>> >>> On Fri, Jun 1, 2012 at 3:24 PM, Paolo Caruccio <paolo.ca...@gmail.com> >>> wrote: >>> >>>> Richard, >>>> >>>> I made some reflections on what you want to do and it's not easy, since >>>> the use of control for simultaneous upload of multiple files was aimed to >>>> replace the standard control. As an example of use, you can see >>>> http://ochiba77.blogspot.it/2012/01/web2py-slices-sending-email-from-form.html >>>> However, we can use a different approach to getting what you want >>>> through the use of a smartgrid. I'll post soon a demo application (in this >>>> days I'm very busy in personal matters). >>>> >>>> Il giorno giovedì 31 maggio 2012 19:35:02 UTC+2, Richard ha scritto: >>>> >>>>> Here where I get as now : >>>>> >>>>> Controler : >>>>> def trip_update(): >>>>> # only SQLFORM.factory tested >>>>> form=SQLFORM.factory(db.t_trip, db.t_photos) >>>>> for row in db(db.t_trip.id == request.args(0)).select(db.t_ >>>>> trip.ALL): >>>>> for f in db.t_trip.fields: >>>>> form.vars[f]=row[f] >>>>> photos_files = [] >>>>> for row in db(db.t_photos.f_trip_ref == >>>>> request.args(0)).select(db.t_photos.ALL): >>>>> #for f in db.t_photos.fields: >>>>> #f_photo_0:CONTENT_OF_f_title >>>>> #form.vars['f_photo_'+str(i)+':'+row.f_title]=row >>>>> #LI(_title='couleurs (1).png', A('x', >>>>> _href='javascript:void(0);', _class='mw_delItem', _title='remove this >>>>> file'), I(B(EM(_class='mw_file-ext-png'))), SPAN('test1')) >>>>> photos_files.append(XML(LI(A('x', >>>>> _href='javascript:void(0);', _class='mw_delItem', _title='remove this >>>>> file'), EM(_class='mw_file-ext-png'), SPAN(row.f_title), >>>>> _title=row.f_photo)).xml()) >>>>> # response.js="""var photos_files_list = "{{=photos_files}}" >>>>> # $(document).ready( function () { >>>>> # if(photos_files_list != 'None') { >>>>> # $.each(photos_files_list, function(i, val) { >>>>> # $('ul.mw_list').append(photos_files_list[i]); >>>>> # }); >>>>> # }; >>>>> # });""" >>>>> #response.js="""var photos_files_list = "{{=photos_files}}" >>>>> $(document).ready( function () {if(photos_files_list != 'None') >>>>> {$.each(photos_files_list, function(i, val) {$('ul.mw_list').append( >>>>> photos_files_list[i]);});};});""" >>>>> #A(T('Access'),_href=URL(r=request,f='read',args=( >>>>> request.args(0),str(id)))) >>>>> >>>>> #<li title="couleurs (1).png"><a class="mw_delItem" >>>>> href="javascript:void(0);" title="remove this file">x</a><i><b><em >>>>> class="mw_file-ext-png"></em></b></i><span>test1</span></li> >>>>> if form.accepts(request, session, onvalidation=lambda >>>>> form:check(form)): # Is it possible to use onvalidation with >>>>> form.process() >>>>> syntax ? >>>>> trip_id = request.args(0) >>>>> db(db.t_trip.id == trip_id).update(**db.t_trip._ >>>>> filter_fields(form.vars)) >>>>> nfiles = 0 >>>>> for var in request.vars: >>>>> if var.startswith('f_photo') and request.vars[var] != '': >>>>> uploaded = request.vars[var] >>>>> if isinstance(uploaded,list): >>>>> # files uploaded through input with "multiple" >>>>> attribute set on true >>>>> counter=0 >>>>> for element in uploaded: >>>>> counter += 1 >>>>> nfiles += 1 >>>>> file_title = element.name.split(":")[-1] # >>>>> TODO: could this be made better? >>>>> # I >>>>> mean, the title must be appended to element's name >>>>> # or >>>>> is there another way? >>>>> db.t_photos.insert( >>>>> f_trip_ref=trip_id, >>>>> f_title=file_title+" ("+str(counter)+")" >>>>> if file_title!="" else file_title, >>>>> f_photo=db.t_photos.f_photo. >>>>> store(element.file,element.filename)) >>>>> else: >>>>> # only one file uploaded >>>>> element = request.vars[var] >>>>> nfiles += 1 >>>>> db.t_photos.insert( >>>>> f_trip_ref=trip_id, >>>>> f_title=element.name.split(":")[-1], >>>>> f_photo=db.t_photos.f_photo. >>>>> store(element.file,element.filename)) >>>>> >>>>> session.flash = T('%s photo%s uploaded'%(nfiles, 's' if >>>>> nfiles>1 else '')) >>>>> redirect(URL('trip_read')) >>>>> >>>>> if isinstance(form,FORM): >>>>> # hide f_title form's row. Is there a better way to accomplish >>>>> it? >>>>> del form[0][3] >>>>> >>>>> return dict(form=form, photos_files=photos_files) >>>>> >>>>> View : >>>>> >>>>> {{response.files.extend([URL('static','css/multiupload.css') >>>>> ,URL('static','js/jquery.multiupload.js')])}} >>>>> {{left_sidebar_enabled=right_sidebar_enabled=False}} >>>>> {{extend 'layout.html'}} >>>>> <div> >>>>> {{=form}} >>>>> <ul>{{=photos_files[0]}}</ul> >>>>> <script type="text/javascript" charset="utf-8"> >>>>> //<!-- >>>>> jQuery('input[name="f_photo"]:not(.processed)').multiUpload({ >>>>> mw_placeholder:"{{=T('insert a title')}}", >>>>> mw_text_addBtn:"+", >>>>> mw_tooltip_addBtn:"{{=T('add a file')}}", >>>>> mw_text_clearBtn:"x", >>>>> mw_tooltip_clearBtn:"{{=T('remove all')}}", >>>>> mw_tooltip_removeFileBtn:"{{=T('remove this file')}}", >>>>> mw_tooltip_removeGroupBtn:"{{=T('remove this file group')}}", >>>>> mw_group_title:"{{=T('FILE GROUP')}}", >>>>> mw_fileNumber:false, >>>>> mw_maxElementAllowed:5 >>>>> }); >>>>> //--> >>>>> </script> >>>>> </div> >>>>> >>>>> <script type="text/javascript" charset="utf-8"> >>>>> var photos_files_list = {{=photos_files}} >>>>> $(document).ready( function () { >>>>> if(photos_files_list != 'None') { >>>>> $.each(photos_files_list, function(i, val) { >>>>> $('ul.mw_list').append(val); //photos_files_list[i] >>>>> }); >>>>> }; >>>>> }); >>>>> </script> >>>>> >>>>> {{if request.is_local:}} >>>>> {{=response.toolbar()}} >>>>> {{pass}} >>>>> >>>>> >>>>> Problem : the items are not showing up in the UL box, because a >>>>> conversion between python and javascript text format I think (I know the >>>>> get into the box as plain text), Second thing, the destruction of the >>>>> items >>>>> is not working not sure why. Also there is code refactoring to do since >>>>> the >>>>> rest of the function only manage adding stuff I change a bit for updating >>>>> stuff, for the first table (maybe for nothing), but it needs to destruct >>>>> records in the referenced table so I need to code that. >>>>> >>>>> Richard >>>>> >>>>> On Thu, May 31, 2012 at 12:25 PM, Richard Vézina < >>>>> ml.richa...@gmail.com> wrote: >>>>> >>>>>> response.js will not works, it only works on response and for >>>>>> component as says the book. >>>>>> >>>>>> Putting the js code into the view seems to work if I pass the >>>>>> photos_files var to the view... >>>>>> >>>>>> Now I think I just have to find the way to expose the HTML, XML() not >>>>>> seems to work. >>>>>> >>>>>> Richard >>>>>> >>>>>> >>>>>> On Thu, May 31, 2012 at 12:09 PM, Richard Vézina < >>>>>> ml.richa...@gmail.com> wrote: >>>>>> >>>>>>> Hello Paolo, >>>>>>> >>>>>>> Here some fresher code : >>>>>>> >>>>>>> def trip_update(): >>>>>>> # only SQLFORM.factory tested >>>>>>> form=SQLFORM.factory(db.t_trip, db.t_photos) >>>>>>> for row in db(db.t_trip.id == request.args(0)).select(db.t_ >>>>>>> trip.ALL): >>>>>>> for f in db.t_trip.fields: >>>>>>> form.vars[f]=row[f] >>>>>>> photos_files = [] >>>>>>> for row in db(db.t_photos.f_trip_ref == >>>>>>> request.args(0)).select(db.t_photos.ALL): >>>>>>> #for f in db.t_photos.fields: >>>>>>> #f_photo_0:CONTENT_OF_f_title >>>>>>> #form.vars['f_photo_'+str(i)+':'+row.f_title]=row >>>>>>> #LI(_title='couleurs (1).png', A('x', >>>>>>> _href='javascript:void(0);', _class='mw_delItem', _title='remove this >>>>>>> file'), I(B(EM(_class='mw_file-ext-png'))), SPAN('test1')) >>>>>>> photos_files.append(XML(LI(A('x', >>>>>>> _href='javascript:void(0);', _class='mw_delItem', _title='remove this >>>>>>> file'), EM(_class='mw_file-ext-png'), SPAN(row.f_title), >>>>>>> _title=row.f_photo))) >>>>>>> response.js="""var photos_files_list = "{{=photos_files}}" >>>>>>> $(document).ready( function () { >>>>>>> if(photos_files_list != 'None') { >>>>>>> $.each(photos_files_list, function(i, val) { >>>>>>> $('ul.mw_list').append(photos_files_list[i]); >>>>>>> }); >>>>>>> }; >>>>>>> });""" >>>>>>> #A(T('Access'),_href=URL(r=request,f='read',args=( >>>>>>> request.args(0),str(id)))) >>>>>>> >>>>>>> #<li title="couleurs (1).png"><a class="mw_delItem" >>>>>>> href="javascript:void(0);" title="remove this file">x</a><i><b><em >>>>>>> class="mw_file-ext-png"></em></b></i><span>test1</span></li> >>>>>>> if form.accepts(request, session, onvalidation=lambda >>>>>>> form:check(form)): # Is it possible to use onvalidation with >>>>>>> form.process() >>>>>>> syntax ? >>>>>>> trip_id = db.t_trip.update_record(**db. >>>>>>> t_trip._filter_fields(form.vars)) >>>>>>> nfiles = 0 >>>>>>> for var in request.vars: >>>>>>> if var.startswith('f_photo') and request.vars[var] != '': >>>>>>> uploaded = request.vars[var] >>>>>>> if isinstance(uploaded,list): >>>>>>> # files uploaded through input with "multiple" >>>>>>> attribute set on true >>>>>>> counter=0 >>>>>>> for element in uploaded: >>>>>>> counter += 1 >>>>>>> nfiles += 1 >>>>>>> file_title = element.name.split(":")[-1] # >>>>>>> TODO: could this be made better? >>>>>>> # I >>>>>>> mean, the title must be appended to element's name >>>>>>> # >>>>>>> or is there another way? >>>>>>> db.t_photos.insert( >>>>>>> f_trip_ref=trip_id, >>>>>>> f_title=file_title+" ("+str(counter)+")" >>>>>>> if file_title!="" else file_title, >>>>>>> f_photo=db.t_photos.f_photo. >>>>>>> store(element.file,element.filename)) >>>>>>> else: >>>>>>> # only one file uploaded >>>>>>> element = request.vars[var] >>>>>>> nfiles += 1 >>>>>>> db.t_photos.insert( >>>>>>> f_trip_ref=trip_id, >>>>>>> f_title=element.name.split(":")[-1], >>>>>>> f_photo=db.t_photos.f_photo. >>>>>>> store(element.file,element.filename)) >>>>>>> >>>>>>> session.flash = T('%s photo%s uploaded'%(nfiles, 's' if >>>>>>> nfiles>1 else '')) >>>>>>> redirect(URL('trip_read')) >>>>>>> >>>>>>> if isinstance(form,FORM): >>>>>>> # hide f_title form's row. Is there a better way to >>>>>>> accomplish it? >>>>>>> del form[0][3] >>>>>>> >>>>>>> return dict(form=form) >>>>>>> >>>>>>> On Wed, May 30, 2012 at 6:23 PM, Paolo Caruccio < >>>>>>> paolo.ca...@gmail.com> wrote: >>>>>>> >>>>>>>> Richard, >>>>>>>> >>>>>>>> I saw your email in the discussion regarding bootswatch, but I want >>>>>>>> to answer here for competence. >>>>>>>> >>>>>>>> Multiupload is a my old project. The object of the toy app was >>>>>>>> demonstrate the usage of multiupload control. It wasn't a complete >>>>>>>> application. >>>>>>>> >>>>>>>> Your intentions, however, are interesting. I will take a look at >>>>>>>> your code and I will try to find a solution. >>>>>>>> >>>>>>>> >>>>>>>> Il giorno mercoledì 30 maggio 2012 16:15:09 UTC+2, Richard ha >>>>>>>> scritto: >>>>>>>> >>>>>>>>> Hello Paolo, >>>>>>>>> >>>>>>>>> Pretty nice! >>>>>>>>> >>>>>>>>> Did you implement the update of the records also? >>>>>>>>> >>>>>>>>> Is it a straight and easy task or it becomes trickier to implement >>>>>>>>> than the rest of the app?? >>>>>>>>> >>>>>>>>> Richard >>>>>>>>> >>>>>>>>> On Sat, Oct 29, 2011 at 6:21 PM, Paolo Caruccio < >>>>>>>>> paolo.ca...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Bruno, >>>>>>>>>> >>>>>>>>>> thanks. >>>>>>>>>> >>>>>>>>>> What do you think about the upload mechanism? Can it be translate >>>>>>>>>> in a web2py widget? or is it better to use a different >>>>>>>>>> javascript/jquery >>>>>>>>>> library? >>>>>>>>>> >>>>>>>>>> Regards. >>>>>>>>>> >>>>>>>>>> Paolo >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>>> >>> -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- Chaitanya Pochampally -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.