{{extend 'layout.html'}} {{ def all(items): return reduce(lambda a,b:a and b,items,True) def peekfile(path,file): return A(file.replace('\\\\','/'),_href=URL('peek', args=(app, path, file))) def editfile(path,file): return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit', args=(app, path, file))) def testfile(path,file): return A(TAG[''](IMG(_src=URL('static', 'images/test_icon.png'), _alt=T('test')), SPAN(T("Run tests in this file (to run all files, you may also use the button labelled 'test')"))), _class='icon test tooltip',_href=URL('test', args=(app, file))) def editlanguagefile(path,file): return A(SPAN(T('Edit')),_class='button editbutton',_href=URL('edit_language', args=(app, path, file))) def file_upload_form(location): form=FORM(T("upload file:")," ", INPUT(_type="file",_name="file")," ",T("and rename it:")," ", INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY), INPUT(_type="hidden",_name="location",_value=location), INPUT(_type="hidden",_name="sender",_value=URL('design',args=app)), INPUT(_type="submit",_value=T("upload")),_action=URL('upload_file')) return form def file_create_form(location): form=FORM(T("create file with filename:")," ", INPUT(_type="text",_name="filename",requires=IS_NOT_EMPTY), INPUT(_type="hidden",_name="location",_value=location), INPUT(_type="hidden",_name="sender",_value=URL('design',args=app)), INPUT(_type="submit",_value=T("Create")),_action=URL('create_file')) return form def upload_plugin_form(app): form=FORM(T("upload plugin file:")," ", INPUT(_type="file",_name="pluginfile"), INPUT(_type="submit",_value=T("upload"))) return form def deletefile(arglist): return A(TAG[''](IMG(_src=URL('static', 'images/delete_icon.png')), SPAN(T('Delete this file (you will be asked to confirm deletion)'))), _class='icon delete tooltip', _href=URL('delete',args=arglist,vars=dict(sender=request.function+'/'+app))) }} {{block sectionclass}}design{{end}}

{{=T("Edit application")}} "{{=A(app,_href=URL(app,'default','index'),_target="_blank")}}"

{{=searchbox('search')}} {{=T("collapse/expand all")}} {{=button('#models', T("models"))}} {{=button('#controllers', T("controllers"))}} {{=button('#views', T("views"))}} {{=button('#languages', T("languages"))}} {{=button('#static', T("static"))}} {{=button('#modules', T("modules"))}} {{=button('#plugins', T("plugins"))}}

{{=T("Models")}} {{=helpicon()}} {{=T("The data representation, define database tables and sets")}}

{{if not models:}}

{{=T("There are no models")}}

{{else:}}
{{=button(URL(a=app,c='appadmin',f='index'), T('database administration'))}} {{if os.access(os.path.join(request.folder,'..',app,'databases','sql.log'),os.R_OK):}} {{=button(URL('peek/%s/databases/sql.log'%app), 'sql.log')}} {{pass}}
{{pass}}
{{=file_create_form('%s/models/' % app)}}
{{ controller_functions=[] for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functions[c]] }}

{{=T("Controllers")}} {{=helpicon()}} {{=T("The application logic, each URL path is mapped in one exposed function in the controller")}}

{{if not controllers:}}

{{=T("There are no controllers")}}

{{else:}}
{{=button(URL(r=request,c='shell',f='index',args=app), T("shell"))}} {{=button(URL('test',args=app), T("test"))}} {{=button(URL('edit',args=[app,'cron','crontab']), T("crontab"))}}
{{pass}}
{{=file_create_form('%s/controllers/' % app)}}

{{=T("Views")}} {{=helpicon()}} {{=T("The presentations layer, views are also known as templates")}}

{{=button(LAYOUTS_APP, T("download layouts"))}}
{{if not views:}}

{{=T("There are no views")}}

{{pass}}
{{=file_create_form('%s/views/' % app)}}

{{=T("Languages")}} {{=helpicon()}} {{=T("Translation strings for the application")}}

{{=button(URL('update_languages/'+app), T('update all languages'))}}
{{if not languages:}}

{{=T("There are no translators, only default language is supported")}}

{{pass}}
{{=file_create_form('%s/languages/' % app)}}{{=T('(something like "it-it")')}}

{{=T("Static files")}} {{=helpicon()}} {{=T("These files are served without processing, your images go here")}}

{{if not statics:}}

{{=T("There are no static files")}}

{{pass}}
{{=file_create_form('%s/static/' % app)}} {{=file_upload_form('%s/static/' % app)}}

{{=T("Modules")}} {{=helpicon()}} {{=T("Additional code for your application")}}

{{if not modules:}}

{{=T("There are no modules")}}

{{pass}}
{{=file_create_form('%s/modules/' % app)}} {{=file_upload_form('%s/modules/' % app)}}

{{=T("Plugins")}} {{=helpicon()}} {{=T("To create a plugin, name a file/folder plugin_[name]")}}

{{=button(PLUGINS_APP, T('download plugins'))}}
{{if plugins:}} {{else:}}

{{=T('There are no plugins')}}

{{pass}}
{{=upload_plugin_form(app)}}