Skip to content
Browse files

admin based on bootstrap, thanks Paolo

  • Loading branch information...
1 parent 9981ae4 commit ebda5cb2bcc831f1ae16855ef184e839209945fb @mdipierro mdipierro committed Dec 24, 2012
Showing with 6,841 additions and 1,373 deletions.
  1. +6 −0 ABOUT
  2. 0 Introduction
  3. +1 −1 VERSION
  4. +85 −0 app.yaml
  5. +34 −24 applications/admin/controllers/default.py
  6. +20 −18 applications/admin/controllers/wizard.py
  7. +7 −9 applications/admin/models/buttons.py
  8. 0 applications/admin/private/hosts.deny
  9. +9 −0 applications/admin/static/css/bootstrap-responsive.min.css
  10. +9 −0 applications/admin/static/css/bootstrap.min.css
  11. +579 −0 applications/admin/static/css/bootstrap_adapters.css
  12. +822 −0 applications/admin/static/css/bootstrap_essentials.css
  13. +58 −2 applications/admin/static/css/styles.css
  14. +231 −0 applications/admin/static/css/web2py_bootstrap.css
  15. +122 −0 applications/admin/static/css/web2py_bootstrap_nojs.css
  16. BIN applications/admin/static/images/glyphicons-halflings-white.png
  17. BIN applications/admin/static/images/glyphicons-halflings.png
  18. BIN applications/admin/static/images/menu_responsive.png
  19. +5 −1 applications/admin/static/js/ajax_editor.js
  20. +4 −0 applications/admin/static/js/analytics.min.js
  21. +6 −0 applications/admin/static/js/bootstrap.min.js
  22. +2 −2 applications/admin/static/js/calendar.js
  23. +13 −0 applications/admin/static/js/dd_belatedpng.js
  24. +60 −0 applications/admin/static/js/jquery.flot.resize.js
  25. +44 −0 applications/admin/static/js/share.js
  26. +28 −0 applications/admin/static/js/web2py_bootstrap.js
  27. +2 −0 applications/admin/static/plugin_jqmobile/jquery.mobile-1.0.min.css
  28. +173 −0 applications/admin/static/plugin_jqmobile/jquery.mobile-1.0.min.js
  29. +114 −0 applications/admin/views/debug/breakpoints.html
  30. +16 −14 applications/admin/views/default/about.html
  31. +19 −4 applications/admin/views/default/bulk_register.html
  32. +18 −6 applications/admin/views/default/change_password.html
  33. +10 −3 applications/admin/views/default/delete.html
  34. +10 −3 applications/admin/views/default/delete_plugin.html
  35. +382 −318 applications/admin/views/default/design.html
  36. +78 −60 applications/admin/views/default/edit.html
  37. +6 −5 applications/admin/views/default/edit_language.html
  38. +2 −3 applications/admin/views/default/edit_plurals.html
  39. +115 −133 applications/admin/views/default/errors.html
  40. +11 −1 applications/admin/views/default/git_pull.html
  41. +10 −1 applications/admin/views/default/git_push.html
  42. +16 −19 applications/admin/views/default/index.html
  43. +161 −3 applications/admin/views/default/manage_students.html
  44. +4 −5 applications/admin/views/default/peek.html
  45. +157 −153 applications/admin/views/default/plugin.html
  46. +6 −10 applications/admin/views/default/resolve.html
  47. +142 −155 applications/admin/views/default/site.html
  48. +12 −6 applications/admin/views/default/test.html
  49. +142 −127 applications/admin/views/default/ticket.html
  50. +2 −2 applications/admin/views/default/uninstall.html
  51. +12 −8 applications/admin/views/default/upgrade_web2py.html
  52. +57 −10 applications/admin/views/default/user.html
  53. +74 −33 applications/admin/views/layout.html
  54. +37 −87 applications/admin/views/shell/index.html
  55. +11 −10 applications/admin/views/wizard/generated.html
  56. +179 −137 applications/admin/views/wizard/step.html
  57. +1 −0 applications/welcome/cron/crontab
  58. +1 −0 applications/welcome/static/403.html
  59. +1 −0 applications/welcome/static/404.html
  60. +1 −0 applications/welcome/static/500.html
  61. +18 −0 certificates/web2py.com/new-digitss.csr
  62. +27 −0 certificates/web2py.com/new-digitss.key
  63. BIN dist/web2py-2.1.1.tar.gz
  64. +27 −0 mkweb2pyenv
  65. +24 −0 runweb2py
  66. 0 storage.sqlite
  67. +640 −0 temps/asynwsgi.py
  68. +630 −0 temps/asynwsgi2.py
  69. +4 −0 temps/benchmark.py
  70. +22 −0 temps/bm_split.py
  71. +15 −0 temps/bm_urandom.py
  72. +19 −0 temps/case.py
  73. +16 −0 temps/check.py
  74. +11 −0 temps/compile_rotator.py
  75. +78 −0 temps/cookies.py
  76. +165 −0 temps/daemon.py
  77. +14 −0 temps/db.py
  78. +76 −0 temps/fofo.py
  79. +73 −0 temps/fofo.py.old
  80. +4 −0 temps/looping.py
  81. +5 −0 temps/mmpy
  82. +27 −0 temps/out_fifo
  83. +3 −0 temps/p.py
  84. +37 −0 temps/path.py
  85. +6 −0 temps/pg.py
  86. +24 −0 temps/pi.py
  87. +32 −0 temps/process.py
  88. +12 −0 temps/read.py
  89. +34 −0 temps/runcmd.log
  90. +109 −0 temps/server.py
  91. +31 −0 temps/singleton.py
  92. +42 −0 temps/static.py
  93. +11 −0 temps/test1.py
  94. +12 −0 temps/test2.py
  95. +54 −0 temps/test3.py
  96. +17 −0 temps/test7.py
  97. +9 −0 temps/test8.py
  98. +17 −0 temps/test9.py
  99. +5 −0 temps/test_1.py
  100. +21 −0 temps/test_bruno.py
  101. +16 −0 temps/test_cache.py
  102. +8 −0 temps/test_dominc.py
  103. +71 −0 temps/test_jim.py
  104. +16 −0 temps/test_session.py
  105. +11 −0 temps/types.py
  106. +18 −0 temps/zombie.py
  107. +29 −0 web2py.egg-info/PKG-INFO
  108. +160 −0 web2py.egg-info/SOURCES.txt
  109. +1 −0 web2py.egg-info/dependency_links.txt
  110. +13 −0 web2py.egg-info/top_level.txt
  111. BIN web2py_src.zip
  112. BIN web2py_src_old.zip
View
6 ABOUT
@@ -0,0 +1,6 @@
+web2py is an open source full-stack framework for agile development
+of secure database-driven web-based applications, written and programmable in
+Python.
+
+Created by Massimo Di Pierro <mdipierro@cs.depaul.edu>
+
View
0 Introduction
No changes.
View
2 VERSION
@@ -1 +1 @@
-Version 2.4.1-alpha.1+timestamp.2012.12.24.12.13.23
+Version 2.4.1-alpha.1+timestamp.2012.12.24.13.48.18
View
85 app.yaml
@@ -0,0 +1,85 @@
+# For Google App Engine deployment, copy this file to app.yaml
+# and edit as required
+# See http://code.google.com/appengine/docs/python/config/appconfig.html
+# and http://web2py.com/book/default/chapter/11?search=app.yaml
+
+application: web2py
+version: 1
+api_version: 1
+
+# use this line for Python 2.5
+#
+runtime: python
+
+# use these lines for Python 2.7
+# upload app with: appcfg.py update web2py (where 'web2py' is web2py's root directory)
+#
+# runtime: python27
+# threadsafe: true # true for WSGI & concurrent requests (Python 2.7 only)
+
+default_expiration: "24h" # for static files
+
+handlers:
+
+- url: /(?P<a>.+?)/static/(?P<b>.+)
+ static_files: applications/\1/static/\2
+ upload: applications/(.+?)/static/(.+)
+ secure: optional
+
+- url: /favicon.ico
+ static_files: applications/welcome/static/favicon.ico
+ upload: applications/welcome/static/favicon.ico
+
+- url: /robots.txt
+ static_files: applications/welcome/static/robots.txt
+ upload: applications/welcome/static/robots.txt
+
+- url: .*
+ script: gaehandler.py # CGI
+# script: gaehandler.wsgiapp # WSGI (Python 2.7 only)
+ secure: optional
+
+admin_console:
+ pages:
+ - name: Appstats
+ url: /_ah/stats
+
+skip_files: |
+ ^(.*/)?(
+ (app\.yaml)|
+ (app\.yml)|
+ (index\.yaml)|
+ (index\.yml)|
+ (#.*#)|
+ (.*~)|
+ (.*\.py[co])|
+ (.*/RCS/.*)|
+ (\..*)|
+ (applications/(admin|examples)/.*)|
+ ((admin|examples|welcome)\.(w2p|tar))|
+ (applications/.*?/(cron|databases|errors|cache|sessions)/.*)|
+ ((logs|scripts)/.*)|
+ (anyserver\.py)|
+ (web2py\.py)|
+ ((cgi|fcgi|modpython|wsgi)handler\.py)|
+ (epydoc\.(conf|css))|
+ (httpserver\.log)|
+ (logging\.example\.conf)|
+ (route[rs]\.example\.py)|
+ (setup_(app|exe)\.py)|
+ (splashlogo\.gif)|
+ (parameters_\d+\.py)|
+ (options_std.py)|
+ (gluon/tests/.*)|
+ (gluon/(rocket|winservice)\.py)|
+ (contrib/(gateways|markdown|memcache|pymysql)/.*)|
+ (contrib/(populate|taskbar_widget)\.py)|
+ (google_appengine/.*)|
+ (.*\.(bak|orig))|
+ )$
+
+builtins:
+- remote_api: on
+- appstats: on
+- admin_redirect: on
+- deferred: on
View
58 applications/admin/controllers/default.py
@@ -168,7 +168,8 @@ def change_password():
form = SQLFORM.factory(Field('current_admin_password', 'password'),
Field('new_admin_password',
'password', requires=IS_STRONG()),
- Field('new_admin_password_again', 'password'))
+ Field('new_admin_password_again', 'password'),
+ _class="span4 well")
if form.accepts(request.vars):
if not verify_password(request.vars.current_admin_password):
form.errors.current_admin_password = T('invalid password')
@@ -202,12 +203,14 @@ def __call__(self, value):
is_appname = IS_VALID_APPNAME()
form_create = SQLFORM.factory(Field('name', requires=is_appname),
- table_name='appcreate')
+ table_name='appcreate',
+ _class='well well-small')
form_update = SQLFORM.factory(Field('name', requires=is_appname),
Field('file', 'upload', uploadfield=False),
Field('url'),
Field('overwrite', 'boolean'),
- table_name='appupdate')
+ table_name='appupdate',
+ _class='well well-small')
form_create.process()
form_update.process()
@@ -374,6 +377,10 @@ def uninstall():
dialog = FORM.confirm(T('Uninstall'),
{T('Cancel'): URL('site')})
+ dialog['_id'] = 'confirm_form'
+ dialog['_class'] = 'well'
+ for component in dialog.components:
+ component['_class'] = 'btn'
if dialog.accepted:
if MULTI_USER_MODE:
@@ -791,7 +798,8 @@ def getclass(item):
diff = TABLE(*[TR(TD(gen_data(i, item)),
TD(item[0]),
TD(leading(item[2:]),
- TT(item[2:].rstrip())), _class=getclass(item))
+ TT(item[2:].rstrip())),
+ _class=getclass(item))
for (i, item) in enumerate(d) if item[0] != '?'])
return dict(diff=diff, filename=filename)
@@ -834,10 +842,14 @@ def edit_language():
# Making the short circuit compatible with <= python2.4
k = (s != k) and k or B(k)
- rows.append(P(prefix, k, BR(), elem, TAG.BUTTON(T('delete'),
- _onclick='return delkey("%s")' % name), _id=name))
+ new_row = DIV(LABEL(prefix, k, _style="font-weight:normal;"),
+ CAT(elem, '\n', TAG.BUTTON(
+ T('delete'),
+ _onclick='return delkey("%s")' % name,
+ _class='btn')), _id=name, _class='span6 well well-small')
- rows.append(INPUT(_type='submit', _value=T('update')))
+ rows.append(DIV(new_row,_class="row-fluid"))
+ rows.append(DIV(INPUT(_type='submit', _value=T('update'), _class="btn btn-primary"), _class='controls'))
form = FORM(*rows)
if form.accepts(request.vars, keepvalues=True):
strs = dict()
@@ -868,29 +880,27 @@ def edit_plurals():
keys = sorted(plurals.keys(), lambda x, y: cmp(
unicode(x, 'utf-8').lower(), unicode(y, 'utf-8').lower()))
- rows = []
-
- row = [T("Singular Form")]
- row.extend([T("Plural Form #%s", n + 1) for n in xnplurals])
- table = TABLE(THEAD(TR(row)))
-
+ tab_rows = []
for key in keys:
name = md5_hash(key)
forms = plurals[key]
if len(forms) < nplurals:
forms.extend(None for i in xrange(nplurals - len(forms)))
-
- row = [B(key)]
- row.extend([INPUT(_type='text', _name=name + '_' + str(n),
- value=forms[n], _size=20) for n in xnplurals])
- row.append(TD(
- TAG.BUTTON(T('delete'), _onclick='return delkey("%s")' % name)))
- rows.append(TR(row, _id=name))
- if rows:
- table.append(TBODY(rows))
- rows = [table, INPUT(_type='submit', _value=T('update'))]
- form = FORM(*rows)
+ tab_col1 = DIV(CAT(LABEL(T("Singular Form")), B(key,
+ _class='fake-input')))
+ tab_inputs = [SPAN(LABEL(T("Plural Form #%s", n + 1)), INPUT(_type='text', _name=name + '_' + str(n), value=forms[n], _size=20), _class='span6') for n in xnplurals]
+ tab_col2 = DIV(CAT(*tab_inputs))
+ tab_col3 = DIV(CAT(LABEL(XML('&nbsp;')), TAG.BUTTON(T('delete'), _onclick='return delkey("%s")' % name, _class='btn'), _class='span6'))
+ tab_row = DIV(DIV(tab_col1, '\n', tab_col2, '\n', tab_col3, _class='well well-small'), _id=name, _class='row-fluid tab_row')
+ tab_rows.append(tab_row)
+
+ tab_rows.append(DIV(TAG['button'](T('update'), _type='submit',
+ _class='btn btn-primary'),
+ _class='controls'))
+ tab_container = DIV(*tab_rows, **dict(_class="row-fluid"))
+
+ form = FORM(tab_container)
if form.accepts(request.vars, keepvalues=True):
new_plurals = dict()
for key in keys:
View
38 applications/admin/controllers/wizard.py
@@ -55,7 +55,7 @@ def index():
reset(session)
apps = os.listdir(os.path.join(request.folder, '..'))
form = SQLFORM.factory(Field('name', requires=[IS_NOT_EMPTY(),
- IS_ALPHANUMERIC()]))
+ IS_ALPHANUMERIC()]), _class='span5 well well-small')
if form.accepts(request.vars):
app = form.vars.name
session.app['name'] = app
@@ -125,19 +125,20 @@ def step1():
default=params.get('login_method', 'local')),
Field(
'login_config', default=params.get('login_config', None)),
- Field('plugins', 'list:string', requires=IS_IN_SET(plugins, multiple=True)))
+ Field('plugins', 'list:string', requires=IS_IN_SET(plugins, multiple=True)),
+ _class='span7 well well-small')
if form.accepts(request.vars):
session.app['params'] = [(key, form.vars.get(key, None))
for key, value in session.app['params']]
- redirect(URL('step2'))
+ redirect(URL('step2') + '/#xwizard_form')
return dict(step='1: Setting Parameters', form=form)
def step2():
response.view = 'wizard/step.html'
form = SQLFORM.factory(Field('table_names', 'list:string',
- default=session.app['tables']))
+ default=session.app['tables']), _class="span7 well well-small")
if form.accepts(request.vars):
table_names = [clean(t) for t in listify(form.vars.table_names)
if t.strip()]
@@ -157,21 +158,21 @@ def step2():
session.app['page_' + name] = \
'## Manage %s\n\n{{=form}}' % (table)
if session.app['tables']:
- redirect(URL('step3', args=0))
+ redirect(URL('step3', args=0) + '/#xwizard_form')
else:
- redirect(URL('step4'))
+ redirect(URL('step4') + '/#xwizard_form')
return dict(step='2: Tables', form=form)
def step3():
response.view = 'wizard/step.html'
- n = int(request.args(0) or 0)
+ n = int(request.args(-1) or 0)
m = len(session.app['tables'])
if n >= m:
redirect(URL('step2'))
table = session.app['tables'][n]
form = SQLFORM.factory(Field('field_names', 'list:string',
- default=session.app.get('table_' + table, [])))
+ default=session.app.get('table_' + table, [])), _class="span7 well well-small")
if form.accepts(request.vars) and form.vars.field_names:
fields = listify(form.vars.field_names)
if table == 'auth_user':
@@ -187,31 +188,31 @@ def step3():
response.flash = T('invalid circular reference')
else:
if n < m - 1:
- redirect(URL('step3', args=n + 1))
+ redirect(URL('step3', args=n + 1) + '/#xwizard_form')
else:
- redirect(URL('step4'))
+ redirect(URL('step4') + '/#xwizard_form')
return dict(step='3: Fields for table "%s" (%s of %s)'
% (table, n + 1, m), table=table, form=form)
def step4():
response.view = 'wizard/step.html'
form = SQLFORM.factory(Field('pages', 'list:string',
- default=session.app['pages']))
+ default=session.app['pages']), _class="span7 well well-small")
if form.accepts(request.vars):
session.app['pages'] = [clean(t)
for t in listify(form.vars.pages)
if t.strip()]
if session.app['pages']:
- redirect(URL('step5', args=0))
+ redirect(URL('step5', args=0) + '/#xwizard_form')
else:
- redirect(URL('step6'))
+ redirect(URL('step6') + '/#xwizard_form')
return dict(step='4: Pages', form=form)
def step5():
response.view = 'wizard/step.html'
- n = int(request.args(0) or 0)
+ n = int(request.args(-1) or 0)
m = len(session.app['pages'])
if n >= m:
redirect(URL('step4'))
@@ -221,13 +222,13 @@ def step5():
default=session.app.get('page_' + page, []),
comment=A('use markmin',
_href=markmin_url, _target='_blank')),
- formstyle='table2cols')
+ formstyle='table2cols', _class="span7 well well-small")
if form.accepts(request.vars):
session.app['page_' + page] = form.vars.content
if n < m - 1:
- redirect(URL('step5', args=n + 1))
+ redirect(URL('step5', args=n + 1) + '/#xwizard_form')
else:
- redirect(URL('step6'))
+ redirect(URL('step6') + '/#xwizard_form')
return dict(step='5: View for page "%s" (%s of %s)' % (page, n + 1, m), form=form)
@@ -242,7 +243,8 @@ def step6():
Field('generate_menu', 'boolean', default=True),
Field('apply_layout', 'boolean', default=True),
Field('erase_database', 'boolean', default=True),
- Field('populate_database', 'boolean', default=True))
+ Field('populate_database', 'boolean', default=True),
+ _id="generate_form", _class="form-horizontal span7 well well-small")
if form.accepts(request.vars):
if DEMO_MODE:
session.flash = T('Application cannot be generated in demo mode')
View
16 applications/admin/models/buttons.py
@@ -8,35 +8,33 @@ def A_button(*a, **b):
b['_data-inline'] = 'true'
return A(*a, **b)
-
def button(href, label):
if is_mobile:
ret = A_button(SPAN(label), _href=href)
else:
- ret = A(SPAN(label), _class='button', _href=href)
+ ret = A(SPAN(label), _class='button btn', _href=href)
return ret
-
def button_enable(href, app):
if os.path.exists(os.path.join(apath(app, r=request), 'DISABLED')):
label = SPAN(T('Enable'), _style='color:red')
else:
label = SPAN(T('Disable'), _style='color:green')
id = 'enable_' + app
- return A(label, _class='button', _id=id, callback=href, target=id)
-
+ return A(label, _class='button btn', _id=id, callback=href, target=id)
def sp_button(href, label):
if request.user_agent().is_mobile:
ret = A_button(SPAN(label), _href=href)
else:
- ret = A(SPAN(label), _class='button special', _href=href)
+ ret = A(SPAN(label), _class='button special btn btn-inverse', _href=href)
return ret
-
def helpicon():
return IMG(_src=URL('static', 'images/help.png'), _alt='help')
-
def searchbox(elementid):
- return TAG[''](LABEL(IMG(_id="search_start", _src=URL('static', 'images/search.png'), _alt=T('filter')), _class='icon', _for=elementid), ' ', INPUT(_id=elementid, _type='text', _size=12))
+ return SPAN(LABEL(IMG(_id="search_start", _src=URL('static', 'images/search.png'), _alt=T('filter')),
+ _class='icon', _for=elementid), ' ',
+ INPUT(_id=elementid, _type='text', _size=12, _class="input-medium"),
+ _class="searchbox")
View
0 applications/admin/private/hosts.deny
No changes.
View
9 applications/admin/static/css/bootstrap-responsive.min.css
@@ -0,0 +1,9 @@
+/*!
+ * Bootstrap Responsive v2.2.2
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */@-ms-viewport{width:device-width}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}
View
9 applications/admin/static/css/bootstrap.min.css
9 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
579 applications/admin/static/css/bootstrap_adapters.css
@@ -0,0 +1,579 @@
+/*=============================================================
+ GENERAL
+==============================================================*/
+html,body{height:auto;background:transparent;}
+/*=============================================================
+ CONTROLS
+==============================================================*/
+label,
+input,
+button,
+select,
+textarea,
+button.btn
+{
+font-size:13px;
+font-weight:normal;
+line-height:18px;
+}
+textarea,
+select
+{
+margin-bottom:9px;
+}
+select,
+/*textarea,*/
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input,
+a.btn-lnk
+{
+height:18px;
+padding:4px;
+font-size:13px;
+line-height:18px;
+}
+.design h3,
+.plugin h3
+{
+background-position:0 2px;
+}
+
+select,
+input[type="file"]
+{
+height:28px;
+line-height:28px;
+}
+input[type="submit"],
+input[type="button"]
+{
+font-size:13px;
+height:28px;
+line-height:18px;
+padding:4px 10px;
+}
+input[type="radio"],
+input[type="checkbox"]
+{
+margin-top:2px;
+}
+.button.btn
+{
+line-height:1.25em;
+font-size:inherit;
+border:none;
+text-shadow:none;
+margin-bottom:0px;
+-webkit-border-radius:0px;
+ -moz-border-radius:0px;
+ border-radius:0px;
+-webkit-box-shadow:none;
+ -moz-box-shadow:none;
+ box-shadow:none);
+}
+.button.btn:hover
+{
+background-color:transparent;
+-webkit-transition: background-position 0s linear;
+ -moz-transition: background-position 0s linear;
+ -o-transition: background-position 0s linear;
+ transition: background-position 0s linear;
+}
+form label
+{
+font-weight:bold;
+}
+.help
+{
+border-color:transparent;
+}
+/* tree menu */
+.folder
+{
+border:none;
+}
+.folder>i
+{
+display:none;
+}
+.celled
+{
+padding-top: 2px;
+}
+.celled-one
+{
+padding-top: 1px;
+}
+
+.test h3
+{
+border:0;
+padding-left:18px;
+}
+/*=============================================================
+ FLASH MESSAGEBOX
+==============================================================*/
+.flash
+{
+position:fixed;
+width:50%;
+top:49px;
+left:25%;
+right:25%;
+cursor:default;
+text-align:center;
+padding:8px 35px 8px 14px;
+z-index:5620;
+}
+.flash>.close
+{
+color:inherit;
+opacity:0.7;
+}
+.flash>.close:hover
+{
+opacity:0.9;
+}
+/*=============================================================
+ NAVBAR
+==============================================================*/
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner
+{
+/* in place of shadow image */
+-webkit-box-shadow:0px 10px 20px rgba(195,195,195,1.0);
+-moz-box-shadow: 0px 10px 20px rgba(195,195,195,1.0);
+box-shadow: 0px 10px 20px rgba(195,195,195,1.0);
+//zoom:1; /* IE6-9 */
+filter:progid:DXImageTransform.Microsoft.DropShadow(OffX=0, OffY=10, Color=#000000); /* IE6-9 */
+padding:0;
+}
+.navbar-inverse .navbar-inner
+{
+min-height:33px; /* required - override */
+height:33px;
+filter:progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
+background:#292929 url(../images/header_bg.png) repeat-x;
+border:none;
+}
+#header
+{
+background:transparent;
+}
+#header.navbar
+{
+overflow:visible;
+}
+.navbar-inverse .nav > li > a
+{
+padding:0;
+line-height:1.25;
+text-shadow:none;
+}
+.navbar .btn-navbar
+{
+padding:4px;
+margin:5px 5px 0 5px;
+}
+#menu{margin-right:-7px;}
+/*=============================================================
+ FOOTER
+==============================================================*/
+#footer
+{
+padding-bottom:0;
+}
+/*=============================================================
+ MAIN
+==============================================================*/
+#main
+{
+position:static;
+padding-top:0;
+padding-bottom:0;
+}
+/*=============================================================
+ SIDEBAR
+==============================================================*/
+.sidebar_inner
+{
+background:transparent;
+padding:0;
+min-width:auto;
+}
+.sidebar .box {
+border-top:1px solid #EEE;
+}
+/*=============================================================
+ WIZARD
+==============================================================*/
+.step div.help li
+{
+line-height:inherit;
+}
+.ms-container .ms-selectable li.ms-elem-selectable,
+.ms-container .ms-selection li.ms-elem-selected
+{
+font-size:13px;
+}
+.input-append a.btn
+{
+padding:4px;
+height:18px;
+font-size:13px;
+line-height:18px;
+}
+/*=============================================================
+ ERRORS TABLE
+==============================================================*/
+.errors .table th
+{
+filter:progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
+}
+
+.tablebar span.help
+{
+font-weight:normal;
+line-height:1.25em;
+text-shadow:none;
+width:auto;
+}
+/*=============================================================
+ TOOLTIP
+==============================================================*/
+.tooltip.in
+{
+opacity:1;
+filter:alpha(opacity=100);
+}
+.tooltip-inner
+{
+opacity:1;
+text-align:left;
+background:#9fb364;
+color:#eef1d9;
+border:1px solid #eef1d9;
+font-style:italic;
+padding:0.3em;
+-moz-border-radius:0.5em;
+border-radius:0.5em;
+font-size:13px;
+text-transform:none;
+}
+.tooltip.right .tooltip-arrow,
+.tooltip.left .tooltip-arrow
+{
+border-color:transparent;
+}
+
+/*=============================================================
+ THE GRID
+==============================================================*/
+.w2p_grid_bottom_bar .w2p_export_menu
+{
+line-height:18px;
+margin-left:0;
+}
+.w2p_export_menu .dropdown-toggle
+{
+cursor:pointer;
+margin:0;
+padding:0;
+background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#E6E6E6));
+background-image: -webkit-linear-gradient(top, white, #E6E6E6);
+background-image: -o-linear-gradient(top, white, #E6E6E6);
+background-image: linear-gradient(to bottom, white, #E6E6E6);
+background-image: -moz-linear-gradient(top, white, #E6E6E6);
+}
+.w2p_export_menu ul
+{
+margin-top:2px;
+display:none;
+}
+.w2p_export_menu li
+{
+display:list-item;
+margin:0;
+}
+div.web2py_grid
+{
+font-size:13px;
+line-height:18px;
+}
+.web2py_grid a.btn
+{
+font-size:13px;
+line-height:18px;
+padding:4px 10px;
+margin-left:0;
+margin-right:4px;
+
+background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+}
+.web2py_grid .input-append .btn
+{
+padding:4px 10px;
+margin-right:0;
+font-family:inherit;
+color:#333;
+text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);
+border:1px solid #c5c5c5;
+}
+.web2py_grid select:focus
+{
+border-color:rgba(232,149,60,0.8);
+outline:0;
+-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(232, 149, 60, 0.6);
+-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(232,149,60,0.6);
+box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(232, 149, 60, 0.6);
+}
+.web2py_console input[type="button"],
+.web2py_grid .row_buttons a.btn
+{
+color:#333;
+line-height:18px;
+padding:4px 10px;
+text-shadow:rgba(255, 255, 255, 0.74902) 0px 1px 1px;
+border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+-webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.web2py_console input[type="button"]:hover,
+.web2py_grid .row_buttons a.btn:hover
+{
+color:#333;
+border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+background:#E6E6E6;
+background-position: 0 -15px !important;
+-webkit-transition: background-position .1s linear;
+-moz-transition: background-position .1s linear;
+-o-transition: background-position .1s linear;
+transition: background-position .1s linear;
+}
+.web2py_table
+{
+border:none;
+}
+.web2py_table table
+{
+/*table-layout:fixed;*/
+margin-bottom:4px;
+}
+.web2py_table table td
+{
+/*word-wrap:break-word;*/ /*uncomment when "table-layout:fixed" is applied */
+}
+
+.web2py_grid thead th
+{
+background-color:transparent;
+padding:4px 5px;
+line-height:18px;
+vertical-align:bottom;
+border-right:0;
+border-bottom:0;
+word-wrap:break-word;
+}
+.web2py_grid .btn-group > .dropdown-menu
+{
+font-size:13px;
+}
+.web2py_grid .dropdown-menu li > a:hover,
+.web2py_grid .dropdown-menu li > a:focus
+{
+filter:progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
+background-image:none;
+background-color:#E8953C;
+}
+.pagination
+{
+margin:0;
+height:30px;
+}
+.pagination ul > li > a
+{
+line-height:28px;
+}
+
+#w2p_grid_addbtn:focus,
+#w2p_search-form :focus,
+.btn:focus
+{
+outline:none;
+}
+.web2py_console input[type="button"]:focus,
+.web2py_grid .row_buttons a.btn:focus
+ {
+box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) inset, 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+div.web2py_counter.span6
+{
+min-height:20px;
+}
+.web2py_paginator
+{
+border:0;
+margin:0;
+padding:0;
+background-color:transparent;
+}
+.web2py_paginator ul li a
+{
+margin-right:0;
+padding:0 14px;
+border:1px solid #DDD;
+border-left-width:0;
+color:#E8953C;
+}
+.web2py_paginator ul li a:hover
+{
+background: whiteSmoke;
+border: 1px solid #DDD;
+border-left-width:0;
+color:#e2821b;
+}
+.web2py_paginator ul li:first-child a,
+.web2py_paginator ul li:first-child a:hover
+{
+border-left-width:1px;
+}
+.web2py_paginator .current
+{
+font-weight:normal;
+}
+.web2py_paginator ul li.current a:hover
+{
+color:#999;
+}
+
+
+
+
+
+.editor-bar-column a[name="save"]
+{
+background-color: whiteSmoke;
+background-image: -webkit-gradient(linear,0 0,0 100%,from(white),to(#E6E6E6));
+background-image: -webkit-linear-gradient(top,white,#E6E6E6);
+background-image: -o-linear-gradient(top,white,#E6E6E6);
+background-image: linear-gradient(to bottom,white,#E6E6E6);
+background-image: -moz-linear-gradient(top,white,#E6E6E6);
+background-repeat: repeat-x;
+padding:2px 6px;
+font-size:11px;
+line-height:17px;
+margin:0;
+}
+.editor-bar-column a[name="save"]:hover
+{
+background-color: #E6E6E6;
+background-position: 0 -15px;
+-webkit-transition: background-position .1s linear;
+-moz-transition: background-position .1s linear;
+-o-transition: background-position .1s linear;
+transition: background-position .1s linear;
+}
+.keybindings
+{
+padding:0 18px 10px;
+}
+.keybindings li
+{
+margin-bottom:0;
+}
+
+/*----- translate page ---*/
+
+.languageform input
+{
+margin-bottom:0;
+}
+.languageform div
+{
+margin-bottom:9px;
+}
+.languageform input.untranslated
+{
+background-color:#FC0;
+}
+
+.step #wizard_nav .first-box
+{
+padding-top:0;
+}
+
+/*=============================================================
+ MEDIA QUERIES
+==============================================================*/
+@media (max-width: 979px)
+{
+/*-----------------------------------
+ Navbar
+-------------------------------------*/
+ #header .navbar-inner
+ {
+ padding:0;
+ }
+ /*collapsed menu*/
+ .navbar .nav-collapse .nav
+ {
+ background:#222;
+ padding:8px 2px 8px 8px;
+ -webkit-border-bottom-right-radius:8px;
+ -webkit-border-bottom-left-radius:8px;
+ -moz-border-radius-bottomright:8px;
+ -moz-border-radius-bottomleft:8px;
+ border-bottom-right-radius:8px;
+ border-bottom-left-radius:8px;
+ }
+ #menu
+ {
+ margin-right:0;
+ }
+ #menu li
+ {
+ float:none;
+ }
+ #menu a.button,
+ #menu a.button span
+ {
+ background-image:url(../images/menu_responsive.png);
+ }
+ #menu a.button
+ {
+ padding:0 1em 0 0;
+ }
+}
+@media(max-width:632px)
+{
+/*-----------------------------------
+ footer
+-------------------------------------*/
+ #footer
+ {
+ height:auto;
+ }
+
+ #footer select
+ {
+ margin-top:8px;
+ }
+}
View
822 applications/admin/static/css/bootstrap_essentials.css
@@ -0,0 +1,822 @@
+/*=============================================================
+ GENERAL
+==============================================================*/
+body
+{
+/*remember to account for the hidden area underneath
+fixed navbar by adding at least 40px padding to the <body>.
+Be sure to add this after the core Bootstrap CSS
+and before the optional responsive CSS.
+An alternative solution is to set top-margin to div#main*/
+/*padding-top:60px;*/ /*comment this for alternative solution*/
+height:auto; /*uncomment this for alternative solution */
+}
+/*=============================================================
+ BOOTSTRAP ICONS FOLDER FIX
+==============================================================*/
+[class^="icon-"],[class*=" icon-"]
+{
+/* right folder for bootstrap black images/icons */
+background-image:url("../images/glyphicons-halflings.png")
+}
+
+.icon-white,
+.nav-tabs>.active >a>[class^="icon-"],
+.nav-tabs>.active>a>[class*=" icon-"],
+.nav-pills>.active>a>[class^="icon-"],
+.nav-pills>.active>a>[class*=" icon-"],
+.nav-list>.active>a>[class^="icon-"],
+.nav-list>.active>a>[class*=" icon-"],
+.navbar-inverse .nav>.active>a>[class^="icon-"],
+.navbar-inverse .nav>.active>a>[class*=" icon-"],
+.dropdown-menu>li>a:hover>[class^="icon-"],
+.dropdown-menu>li>a:hover>[class*=" icon-"],
+.dropdown-menu>.active>a>[class^="icon-"],
+.dropdown-menu>.active>a>[class*=" icon-"]
+{
+/* right folder for bootstrap white images/icons */
+background-image:url("../images/glyphicons-halflings-white.png");
+}
+/*=============================================================
+ INPUT BORDER HIGHLIGHT WHEN INPUT IS FOCUSED
+==============================================================*/
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+input[type="file"]:focus,
+select:focus,
+.uneditable-input:focus
+{
+/* outline color */
+border-color:rgba(232,149,60,0.8);
+outline:0;
+/*outline:thin dotted \9;*/
+-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(232, 149, 60, 0.6);
+-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(232,149,60,0.6);
+box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(232, 149, 60, 0.6);
+}
+.web2py_grid .dropdown-menu li > a:hover,
+.web2py_grid .dropdown-menu li > a:focus
+{
+filter:progid:DXImageTransform.Microsoft.gradient(enabled=false); /* IE6-9 */
+background-image:none;
+background-color:#E8953C;
+}
+
+/*=============================================================
+ COLOR OF LINKS
+==============================================================*/
+a,
+a:hover
+{
+color:#E8953C;
+text-decoration:none;
+}
+a:hover
+{
+color:#e2821b;
+}
+/*=============================================================
+ CONTROLS and CONTAINERS
+==============================================================*/
+.row-buttons .btn
+{
+margin-bottom:7px;
+}
+.sidebar .box
+{
+clear:right;
+margin-top:2em;
+border-top:1px dotted;
+padding:0 1em;
+}
+.pwdchange>.button{margin-bottom:10px;}
+input[type="file"] {
+margin-bottom:9px;
+}
+.form-inline input[type="file"] {
+margin-bottom:0px;
+}
+input + .help-block
+{
+margin-top:-5px;
+margin-bottom:4px;
+}
+#confirm_form input.btn,
+.generatedbyw2p input
+{
+margin-right:4px;
+}
+a[rel='tooltip'] span,
+div[rel='tooltip'] span
+{
+display:none;
+margin-left:-9999px;
+}
+/*in-page browsing*/
+[rel="pagebookmark"]
+{
+position:relative;
+}
+[rel="pagebookmark"]>.component
+{
+cursor:pointer;
+}
+[rel="pagebookmark"]>.hashstick
+{
+position:absolute;
+top:-54px;
+left:-9999px;
+visibility:visible;
+}
+/* following 2 rules set the style of a small button for going to top of page */
+.tophashlink.btn
+{
+padding:2px 3px;
+visibility:hidden;
+}
+.hashstick:target+.tophashlink.btn
+{
+visibility:visible;
+}
+ul.act_edit
+{
+margin-top:4px;
+margin-left:20px;
+}
+ul.act_edit .btn
+{
+margin-top:4px;
+margin-bottom:4px;
+}
+ul.act_edit .file>a
+{
+white-space:pre;
+}
+.right-full
+{
+text-align:right;
+}
+.searchbox,
+.searchbox label,
+.searchbox input
+{
+display:inline-block;
+}
+.buttons-row .btn
+{
+margin-bottom:9px;
+}
+.li-controls
+{
+display:inline-block;
+width:180px;
+vertical-align:middle;
+}
+.celled
+{
+display:inline-block;
+padding: 4px 0 0 0;
+vertical-align:top;
+margin-top:4px;
+width:700px;
+}
+.folder
+{
+border-left: 1px dotted #AAA;
+}
+.folder li
+{
+list-style-type:none;
+}
+.folder>i
+{
+display:inline-block;
+width:5px;
+height:5px;
+border:1px solid;
+background-color:#FAA732;
+margin-left:-4px;
+margin-top:-2px;
+border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+border-radius:1px;
+}
+.folder>i+a
+{
+padding-left:0.5em;
+}
+.folder ul
+{
+margin-top:0.5em;
+margin-bottom:0.5em;
+}
+.controls-inline .btn
+{
+margin-right:5px;
+}
+div.web2py_counter.span6
+{
+min-height:24px;
+text-align:right;
+}
+.pagination
+{
+margin:0;
+}
+.table
+{
+margin-bottom:10px;
+}
+.row_buttons .btn
+{
+margin-right:4px;
+}
+
+.editor-bar-column
+{
+display:inline-block;
+vertical-align:top;
+margin-right:4px;
+}
+
+.editor-bar-column .input-long
+{
+width:270px;
+}
+
+.editor-bar-column .input-normal
+{
+width:206px;
+}
+
+.keybindings li
+{
+margin-bottom:0.5em;
+}
+.keybindings span
+{
+padding:0.3em;
+border:1px solid transparent;
+vertical-align:middle;
+}
+.teletype-text
+{
+font-family:monospace;
+font-weight:bold;
+font-style:normal;
+border-color:#999;
+background:#333;
+color:#DDD;
+-moz-border-radius:0.3em;
+border-radius:0.3em;
+}
+
+.edit_language .tab_row div
+{
+display:inline-block;
+vertical-align:top;
+margin-right:4px;
+}
+.edit_language .fake-input
+{
+height:18px;
+padding:4px;
+font-size:13px;
+line-height:18px;
+overflow:hidden;
+white-space:nowrap;
+display:inline-block;
+margin-bottom:9px;
+}
+
+.test h3
+{
+padding-left:9px;
+margin:0;
+font-size:16px;
+line-height:1;
+border-left:9px solid transparent;
+}
+.test h3.passed
+{
+border-color:#009900;
+}
+.test h3.failed
+{
+border-color:#CC0000;
+}
+.test h3.nodoctests
+{
+border-color:#CCCC99;
+}
+.test .test_report
+{
+width:100%;
+overflow:auto;
+}
+.test_report pre
+{
+white-space:pre;
+}
+.test div[id^="output_"]>h2
+{
+font-size:18px;
+line-height:1;
+color:grey;
+}
+div.center
+{
+text-align:center;
+}
+.delete h2
+{
+word-wrap:break-word;
+}
+/*=============================================================
+ SHELL
+==============================================================*/
+.shell .output-wrapper
+{
+width:100%;
+height:30em;
+border:1px solid #333;
+}
+.shell .prompt-wrapper
+{
+float:left;
+width:100%;
+overflow:hidden;
+height:auto;
+border:1px solid #333;
+}
+.shell .prompt-container
+{
+margin-left:2.5em;
+}
+.shell #caret
+{
+width:2.5em;
+float:left;
+margin-left:-100%;
+}
+.shell #shellwrapper
+{
+background:white;
+color:#E8953C;
+width:100%;
+margin:1em 0;
+border:0;
+}
+.shell #output,
+.shell .prompt
+{
+color:#E8953C;
+background:white;
+resize:none;
+border:none;
+width:100%;
+height:100%;
+cursor:default;
+-webkit-box-sizing: border-box;
+-moz-box-sizing: border-box;
+box-sizing: border-box;
+}
+.shell #output:focus,
+.shell .prompt:focus
+{
+border-color:transparent;
+outline:0;
+-webkit-box-shadow: none;
+-moz-box-shadow: none;
+box-shadow: none;
+}
+.shell #output pre
+{
+color: #E8953C;
+}
+.shell #autoscroll
+{
+cursor:pointer;
+float:right;
+}
+.shell .prompt,
+.shell #output,
+.shell #caret
+{
+font-size: 11pt;
+padding: 6px;
+padding-right: 0em;
+}
+.shell #caret
+{
+padding-top:9px;
+}
+.shell .prompt,
+.shell #output,
+.shell pre,
+.shell #caret
+{
+font-family: monospace;
+}
+.shell a[rel="tooltip"]
+{
+margin-left:8px;
+}
+/*=============================================================
+ PEEK
+==============================================================*/
+.peek .code-wrapper
+{
+width:100%;
+overflow:auto;
+white-space:pre;
+}
+
+.peek table td pre
+{
+word-break:normal;
+white-space:pre;
+}
+
+
+/*=============================================================
+ FOOTER
+==============================================================*/
+#footer
+{
+border-top:1px solid;
+text-align:center;
+padding:1em 0;
+}
+#footer span,
+#footer select
+{
+display:inline-block;
+margin-bottom:0;
+vertical-align:middle;
+}
+#footer select
+{
+width:auto;
+}
+/*=============================================================
+ MAIN
+==============================================================*/
+#main
+{
+margin-top:60px; /*uncomment this for alternative solution to hidden area underneath fixed navbar issue*/
+margin-bottom:60px;
+}
+/*=============================================================
+ WIZARD
+==============================================================*/
+#wizard_nav .box
+{
+border-bottom:1px dotted;
+}
+#wizard_nav li
+{
+margin-left:1em;
+margin-top:0.5em;
+}
+.step textarea
+{
+width:auto;
+}
+select[name='layout_theme']
+{
+vertical-align:top;
+}
+img#preview
+{
+margin-bottom:9px;
+}
+/* multiselect customization */
+.ms-container
+{
+margin-bottom:5px;
+}
+.ms-selectable,
+.step .ms-selection
+{
+text-align:center;
+}
+.ms-list
+{
+text-align:left;
+background:white;
+}
+.ms-container li.ms-elem-selectable:not(.disabled).ms-hover,
+.ms-container .ms-selection li:not(.disabled).ms-hover
+{
+background-color:#E8953C;
+}
+.ms-container .ms-selectable
+{
+margin-right:25px;
+}
+.ms-container .ms-selectable,
+.ms-container .ms-selection
+{
+background:transparent;
+}
+.ms-container .ms-list.ms-focus
+{
+border-color:rgba(232,149,60,0.8);
+-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(232, 149, 60, 0.6);
+-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(232,149,60,0.6);
+box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(232, 149, 60, 0.6);
+}
+/* grow_input */
+ul[id$="_grow_input"]
+{
+margin-left:0;
+}
+/* generate_form*/
+#generate_form .control-group
+{
+margin-bottom:0;
+}
+#generate_form .control-label
+{
+text-align:left;
+}
+#generate_form .controls
+{
+padding-left:18px;
+margin-left:0;
+}
+#generate_form .control-label.empty
+{
+width:142px;
+}
+.step [rel="pagebookmark"]>.hashstick
+{
+display:none;
+}
+/*generated page*/
+.generated iframe
+{
+border:1px inset #e3e3e3;
+}
+/*=============================================================
+ ERRORS TABLE / TICKET PAGE
+==============================================================*/
+.tablebar
+{
+margin:7px 0 7px 0;
+}
+.tablebar input
+{
+margin-right:27px;
+}
+.tablebar span
+{
+vertical-align:bottom;
+}
+.table th
+{
+background: #e9e9e9;
+background: -moz-linear-gradient(top, #FAFAFA 0%, #E9E9E9 100%);
+background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FAFAFA), color-stop(100%,#E9E9E9));
+background: -webkit-linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%);
+background: -o-linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%);
+background: -ms-linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%);
+background: linear-gradient(top, #FAFAFA 0%,#E9E9E9 100%);
+filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FAFAFA', endColorstr='#E9E9E9');
+-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FAFAFA', endColorstr='#E9E9E9')";
+/*font-size:10px;
+color:#444;
+text-transform:uppercase;*/
+}
+td.cbcentered,
+th.cbcentered
+{
+text-align:center;
+}
+td.cbcentered>input,
+th.cbcentered>input
+{
+margin-top:-1px;
+}
+.traceback div
+{
+}
+.ticket_code>table td:first-child
+{
+border-left:0;
+}
+#trck_errors table td pre
+{
+word-break:normal;
+white-space:pre;
+}
+.inspect pre,
+.errorsource pre
+{
+word-break:normal;
+white-space:pre;
+}
+.ticket_code
+{
+background-color:lightyellow;
+}
+.ticket_code table,
+.ticket_code td
+{
+border-width:0px;
+border-collapse:collapse;
+width:100%;
+}
+.ticket_code tbody tr:hover td
+{
+background-color:transparent;
+}
+/*=============================================================
+ FLOT GRAPHS
+==============================================================*/
+.about #placeholder
+{
+width:auto;
+max-width:600px;
+height:300px;
+position:relative;
+margin:0 auto; /* for centering */
+}
+/*=============================================================
+ THE GRID
+==============================================================*/
+#w2p_query_panel
+{
+min-width:20px;
+min-height:20px;
+padding:10px;
+margin-top:1em;
+background-color:#f5f5f5;
+border: 1px solid #e3e3e3;
+-webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+#w2p_query_panel select,
+#w2p_query_panel input
+{
+margin-bottom:0;
+margin-right:4px;
+}
+.web2py_grid .hidden
+{
+visibility:visible;
+}
+.qry_pnl_btns
+{
+display:inline-block;
+}
+#w2p_grid_addbtn,
+#w2p_search-form
+{
+margin-top:9px;
+margin-bottom:9px;
+}
+#w2p_search-form
+{
+margin-bottom:0;
+}
+#w2p_search-form form
+{
+margin-bottom:0;
+}
+
+
+
+/*----- translate page ---*/
+
+.languageform input
+{
+margin-bottom:0;
+}
+.languageform input.untranslated
+{
+background-color:#FC0;
+}
+
+
+/*=============================================================
+ MEDIA QUERIES
+==============================================================*/
+@media (max-width: 800px)
+{
+ .step [rel="pagebookmark"]>.hashstick
+ {
+ /*top:-54px;*/
+ display:block;
+ }
+}
+@media (max-width: 767px)
+{
+ [rel="pagebookmark"]>.hashstick{top:0;}
+/*-----------------------------------
+ main
+-------------------------------------*/
+ #main
+ {
+ margin-top:0;
+ }
+/*-----------------------------------
+ footer
+-------------------------------------*/
+ #footer
+ {
+ margin-left: -20px;
+ margin-right: -20px;
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+/*-----------------------------------
+ errors page
+-------------------------------------*/
+ #trck_errors
+ {
+ table-layout:fixed;
+ }
+ #trck_errors .column1
+ {
+ width:20px;
+ }
+ #trck_errors .column2
+ {
+ width:45px;
+ }
+ #trck_errors .column3
+ {
+ width:150px;
+ }
+ #trck_errors .columnN
+ {
+ width:55px;
+ }
+ #trck_errors .columnN1
+ {
+ width:138px;
+ }
+ .ticket_code,
+ .inspect.resp1,
+ .inspect.controls pre,
+ .errorsource
+ {
+ width:100%;
+ overflow:auto;
+ }
+ .ticket_code>table
+ {
+ width:100%;
+ }
+ .celled
+ {
+ width:320px;
+ }
+}
+@media (max-width: 480px)
+{
+ .qry_pnl_btns
+ {
+ display:block;
+ margin-top:4px;
+ }
+/*-----------------------------------
+ wizard
+-------------------------------------*/
+ #generate_form .control-label
+ {
+ float:left;
+ width:160px;
+ padding-top:5px;
+ }
+ .inspect>code
+ {
+ display:block;
+ white-space:normal;
+ }
+ .li-controls
+ {
+ }
+ .celled
+ {
+ width:165px;
+ }
+}
View
60 applications/admin/static/css/styles.css
@@ -1166,7 +1166,7 @@ ul#snapshot > li {
font-size: 1em;
color: #3C3C3D;
text-shadow: 1px 1px 0 #FFFFFF;
- background:#ECECEC;
+ //background:#ECECEC;
white-space: nowrap; overflow: visible;
cursor: pointer; text-decoration: none;
border: 1px solid #CACACA;
@@ -1244,8 +1244,64 @@ color: #222;
border-radius:2px;
}
.ie9 #query_panel {padding-bottom:2px;}
-
.error, .error a {color:red}
.pluralsform thead td {font-weight:bold; font-size:1.2em; padding-bottom:5px}
.pluralsform td {padding-left:5px}
.tm_ftag {color:blue}
+
+/*-----------------------------------*/
+/* due to bootstrap layout
+/*-----------------------------------*/
+.navbar .btn-navbar{display:none;}
+label{display:block;}
+input{margin-bottom:5px;}
+.login input{width:210px;}
+.change_password input{width:210px;}
+div.flash .close{color:inherit;float:right;}
+label.checkbox{margin-bottom:5px;}
+.control-group{margin-bottom:5px;}
+.step #menu li{margin-left:0;margin-top:0;}
+.step #wizard_nav{padding-top:0.5em;}
+.hashstick{visibility:hidden;}
+#generate_form .control-label{float:left;width:160px;padding-top:5px;text-align:left;}
+#generate_form .controls > .checkbox:first-child{padding-top:7px;}
+/* from default/errors.html */
+table.sortable{border-spacing:0px;}
+table.sortable td, table.sortable th{padding:2px 5px 2px 5px;}
+table.sortable thead{background-color:#eee;color:#666666;font-weight:bold;cursor:default;}
+tr.error_ticket:hover{background-color:#eee;}
+.controls a.button.unavailable{color:#ff0000;}
+/* end from default/errors.html */
+/* new errors table */
+.tablebar{margin:7px 0 7px 0;}
+.cbcentered{text-align:center;}
+/* new tooltip */
+a[rel='tooltip']:hover{background:transparent;text-decoration:none;}
+a[rel='tooltip'] span{display:none;padding:5px;margin-left:10px;width:150px;}
+a[rel='tooltip']:hover span{cursor:default;display:inline;position:absolute;}
+a[rel='tooltip'] span{background:#9fb364;color:#eef1d9;border:1px solid #eef1d9;font-style:italic;width:20%;padding:0.3em;-moz-border-radius:0.5em;border-radius:0.5em;font-size:13px;text-transform:none;}
+/* flot graph */
+.about #placeholder{width:600px;height:300px;margin:0 auto;}
+.tophashlink.btn{visibility:hidden;}
+.help-block{display:block;}
+.w2p_grid_bottom_bar .w2p_export_menu{float:left;line-height:39px;margin-left:10px;}
+.w2p_export_menu .dropdown-toggle{cursor:default;color:#333;margin:0;padding:0;background-image:none;}
+.w2p_export_menu ul{display:inline-block;margin:0;vertical-align:middle;}
+.w2p_export_menu li{list-style:none;display:inline-block;margin-right:4px;margin-left:2px;}
+.edit_language .tab_row div{display:inline-block;vertical-align:top;margin-right:4px;}
+.edit_language .tab_row>div{border:1px solid #e3e3e3;margin-bottom:20px;background-color:#f5f5f5;}
+/* shell*/
+.shell .output-wrapper{width:75%;height:30em;border:1px solid #333;}
+.shell .prompt-wrapper{float:left;width:100%;overflow:hidden;height:auto;border:1px solid #333;}
+.shell .prompt-container{margin-left:2.5em;}
+.shell #caret{width:2.5em;float:left;margin-left:-100%;}
+.shell #shellwrapper{background:white;color:#E8953C;width:75%;margin:1em 0;border:0;}
+.shell #output,.shell .prompt{color:#E8953C;background:white;resize:none;border:none;width:100%;height:100%;cursor:default;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
+.shell #output:focus,.shell .prompt:focus{border-color:transparent;outline:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+.shell #output pre{color:#E8953C;}
+.shell #autoscroll{cursor:pointer;float:right;}
+.shell .prompt,.shell #output,.shell #caret{font-size:11pt;padding:6px;padding-right:0em;}
+.shell .prompt,.shell #output,.shell pre,.shell #caret{font-family:monospace;}
+.shell a[rel="tooltip"]{margin-left:8px;}
+.shell .clearfix{clear:both;}
+.shell #caret{padding-top:9px;}
View
231 applications/admin/static/css/web2py_bootstrap.css
@@ -0,0 +1,231 @@
+/*=============================================================
+ CUSTOM RULES
+==============================================================*/
+
+body{height:auto;} /* to avoid vertical scroll bar */
+div.flash.flash-center{left:25%;right:25%;}
+div.flash.flash-top,div.flash.flash-top:hover{
+ position:relative;
+ display:block;
+ margin:0;
+ padding:1em;
+ top:0;
+ left:0;
+ width:100%;
+ text-align:center;
+ text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);
+ color:#865100;
+ background:#feea9a;
+ border:1px solid;
+ border-top:0px;
+ border-left:0px;
+ border-right:0px;
+ border-radius:0;
+ opacity:1;
+}
+#header{margin-top:60px;}
+.mastheader h1 {
+ margin-bottom:9px;
+ font-size:81px;
+ font-weight:bold;
+ letter-spacing:-1px;
+ line-height:1;
+ font-size:54px;
+}
+.mastheader small {
+ font-size:20px;
+ font-weight:300;
+}
+/* auth navbar - primitive style */
+.auth_navbar,.auth_navbar a{color:inherit;}
+.ie-lte7 .auth_navbar,.auth_navbar a{color:expression(this.parentNode.currentStyle['color']); /* ie7 doesn't support inherit */}
+.auth_navbar a{white-space:nowrap;} /* to avoid the nav split on more lines */
+.auth_navbar a:hover{color:white;text-decoration:none;}
+ul#navbar>.auth_navbar{
+ display:inline-block;
+ padding:5px;
+}
+/* form errors message box customization */
+div.error_wrapper{margin-bottom:9px;}
+div.error_wrapper .error{
+ border-radius: 4px;
+ -o-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+}
+/* below rules are only for formstyle = bootstrap
+trying to make errors look like bootstrap ones */
+div.controls .error_wrapper{
+ display:inline-block;
+ margin-bottom:0;
+ vertical-align:middle;
+}
+div.controls .error{
+ min-width:5px;
+ background:inherit;
+ color:#B94A48;
+ border:none;
+ padding:0;
+ margin:0;
+ /*display:inline;*/ /* uncommenting this, the animation effect is lost */
+}
+div.controls .help-inline{color:#3A87AD;}
+div.controls .error_wrapper +.help-inline {margin-left:-99999px;}
+div.controls select +.error_wrapper {margin-left:5px;}
+.ie-lte7 div.error{color:#fff;}
+
+/* beautify brand */
+.navbar-inverse .brand{color:#c6cecc;}
+.navbar-inverse .brand b{display:inline-block;margin-top:-1px;}
+.navbar-inverse .brand b>span{font-size:22px;color:white}
+.navbar-inverse .brand:hover b>span{color:white}
+/* beautify web2py link in navbar */
+span.highlighted{color:#d8d800;}
+.open span.highlighted{color:#ffff00;}
+
+/*=============================================================
+ OVERRIDING WEB2PY.CSS RULES
+==============================================================*/
+
+/* reset to default */
+a{white-space:normal;}
+li{margin-bottom:0;}
+textarea,button{display:block;}
+/*reset ul padding */
+ul#navbar{padding:0;}
+/* label aligned to related input */
+td.w2p_fl,td.w2p_fc {padding:0;}
+#web2py_user_form td{vertical-align:middle;}
+
+/*=============================================================
+ OVERRIDING BOOTSTRAP.CSS RULES
+==============================================================*/
+
+/* because web2py handles this via js */
+.hidden{visibility:visible;}
+/* right folder for bootstrap black images/icons */
+[class^="icon-"],[class*=" icon-"]{
+ background-image:url("../images/glyphicons-halflings.png")
+}
+/* right folder for bootstrap white images/icons */
+.icon-white,
+.nav-tabs > .active > a > [class^="icon-"],
+.nav-tabs > .active > a > [class*=" icon-"],
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"] {
+ background-image:url("../images/glyphicons-halflings-white.png");
+}
+/* bootstrap has a label as input's wrapper while web2py has a div */
+div>input[type="radio"],div>input[type="checkbox"]{margin:0;}
+/* bootstrap has button instead of input */
+input[type="button"], input[type="submit"]{margin-right:8px;}
+
+/*=============================================================
+RULES FOR SOLVING CONFLICTS BETWEEN WEB2PY.CSS AND BOOTSTRAP.CSS
+==============================================================*/
+
+/*when formstyle=table3cols*/
+tr#auth_user_remember__row>td.w2p_fw>div{padding-bottom:8px;}
+td.w2p_fw div>label{vertical-align:middle;}
+td.w2p_fc {padding-bottom:5px;}
+/*when formstyle=divs*/
+div#auth_user_remember__row{margin-top:4