{{extend 'layout.html'}}
{{
import os
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"))), _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/'+app)),
              INPUT(_type="submit",_value=T("submit")),_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/'+app)),
              INPUT(_type="submit",_value=T("submit")),_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("submit")))
    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}}plugin{{end}}

<h2>
  {{=T('Plugin "%s" in application', request.args(1))}} "{{=app}}"
</h2>
<div class="right-full controls">
  <a class="button special" href="#" onclick="jQuery('h3').click();return false"><span>{{=T("collapse/expand all")}}</span></a>
  <span class="buttongroup">
  {{=button("#models", T("models"))}}
  {{=button("#controllers", T("controllers"))}}
  {{=button("#views", T("views"))}}
  {{=button("#static", T("static"))}}
  {{=button("#modules", T("modules"))}}
  </span>
  <span class="buttongroup">
  {{=sp_button(URL('design',args=app), T("back"))}}
  {{=sp_button(URL('delete_plugin',args=request.args), T("delete plugin"))}}
  {{=sp_button(URL('pack_plugin',args=request.args), T("pack plugin"))}}
  </span>
</div>

<!-- MODELS -->

<h3 id="models" onclick="collapse('models_inner');" class="component">
  {{=T("Models")}}
</h3>
<div id="models_inner" class="component_contents">
  {{if not models:}}
  <p><strong>{{=T("There are no models")}}</strong></p>
  {{pass}}
  <div class="controls comptools">
  </div>
  <ul>
    {{for m in models:}}
    <li>
    <span class="filetools controls">
      {{=editfile('models',m)}}
      {{=deletefile([app, 'models', m])}}
    </span>
    <span class="file">
      {{=peekfile('models',m)}}
    </span>
    <span class="extras">
      {{if len(defines[m]):}}{{=T("defines tables")}} {{pass}}{{=XML(', '.join([B(table).xml() for table in defines[m]]))}}
    </span>
    </li>
    {{pass}}
  </ul>
</div>

<!-- FIND CONTROLLER FUNCTIONS -->
{{
controller_functions=[]
for c in controllers: controller_functions+=[c[:-3]+'/%s.html'%x for x in functions[c]]
}}

<!-- CONTROLLERS -->

<h3 id="controllers" onclick="collapse('controllers_inner');" class="component">
  {{=T("Controllers")}}
</h3>
<div id="controllers_inner" class="component_contents">
  {{if not controllers:}}
  <p><strong>{{=T("There are no controllers")}}</strong></p>
  {{pass}}
  <div class="controls comptools">
  </div>
  <ul>
    {{for c in controllers:}}
    <li>
    <span class="filetools controls">
      {{=editfile('controllers',c)}}
      {{=deletefile([app,'controllers',c])}}
      {{=testfile('controllers',c)}}
    </span>
    <span class="file">
      {{=peekfile('controllers',c)}}
    </span>
    <span class="extras">
      {{if functions[c]:}}{{=T("exposes")}} {{pass}}{{=XML(', '.join([A(f,_href=URL(a=app,c=c[:-3],f=f)).xml() for f in functions[c]]))}}
    </span>
    </li>
    {{pass}}
  </ul>
</div>

<!-- VIEWS -->

<h3 id="views" onclick="collapse('views_inner');" class="component">
  {{=T("Views")}}
</h3>
<div id="views_inner" class="component_contents">
  {{if not views:}}
  <p><strong>{{=T("There are no views")}}</strong></p>
  {{pass}}
  <div class="controls comptools">
  </div>
  <ul>
    {{for c in views:}}
    <li>
      <span class="filetools controls">
      {{=editfile('views',c)}}
      {{=deletefile([app,'views',c])}}
      </span>
      <span class="file">
      {{=peekfile('views',c)}}
      </span>
      <span class="extras">
      {{if extend.has_key(c):}}{{=T("extends")}} <b>{{=extend[c]}}</b> {{pass}}
      {{if include[c]:}}{{=T("includes")}} {{pass}}{{=XML(', '.join([B(f).xml() for f in include[c]]))}}
      </span>
    </li>
    {{pass}}
  </ul>
</div>

<!-- STATIC -->

<h3 id="static" onclick="collapse('static_inner');" class="component">
  {{=T("Static files")}}
</h3>
<div id="static_inner" class="component_contents">
  {{if not statics:}}<p><strong>{{=T("There are no static files")}}</strong></p>{{pass}}
  <ul>
    {{
    path=[]
    for file in statics+['']:
      items=file.split('/')
      file_path=items[:-1]
      filename=items[-1]
      while path!=file_path:
          if len(file_path)>=len(path) and all([v==file_path[k] for k,v in enumerate(path)]):
              path.append(file_path[len(path)])
              thispath='static__'+'__'.join(path)
    }}
    <li class="folder">
    <a href="javascript:collapse('{{=thispath}}');" class="file">{{=path[-1]}}/</a>
    <ul id="{{=thispath}}" style="display: none;" class="sublist">{{
          else:
              path = path[:-1]
      }}
    </ul></li>
    {{
              pass
          pass
      if filename:
      }}<li>
      <span class="filetools controls">
	{{=editfile('static',file)}} {{=deletefile([app,'static',file])}}
      </span>
      <span class="file">
	<a href="{{=URL(a=app,c='static',f=file)}}">{{=filename}}</a>
      </span>
    </li>{{
          pass
      pass
    }}
    {{pass}}
  </ul>
</div>

<!-- MODULES -->

<h3 id="modules" onclick="collapse('modules_inner');" class="component">
  {{=T("Modules")}}
</h3>
<div id="modules_inner" class="component_contents">
  {{if not modules:}}
  <p><strong>{{=T("There are no modules")}}</strong></p>
  {{pass}}
  <div class="controls comptools">
  </div>
  <ul>
    {{for m in modules:}}
    <li>
    {{=editfile('modules',m)}}
    {{if m!='__init__.py':}}<a class="button" href="{{=URL('delete',args=[app,'modules',m],vars=dict(sender=request.function+'/'+app))}}">{{=T("delete")}}</a>{{pass}}
    {{=peekfile('modules',m)}}
    </li>
    {{pass}}
  </ul>
</div>


