This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
larpe/larpe/branches/idwsf/larpe/admin/menu.ptl

108 lines
3.3 KiB
Plaintext

from quixote import get_request, get_response, get_session, get_publisher
from larpe import storage
from larpe import misc
from larpe.users import User
from larpe.hosts import Host
items = [
('hosts', N_('Hosts')),
('users', N_('Users')),
('settings', N_('Settings')),
('logger', N_('Logs')),
# FIXME : use get_request().environ['SCRIPT_NAME']) ?
('/', N_('Liberty Alliance Reverse Proxy'))]
def generate_header_menu [html] (selected = None):
s = ["""<ul id="menu">\n"""]
base_url = get_request().environ['SCRIPT_NAME'] + '/admin'
features = get_publisher().cfg.get('misc', {}).get('features', 'both')
show_logger = get_publisher().cfg.get('debug', {}).get('logger', False)
for k, v in items:
if k == '/':
continue # skip root
if k == 'logger' and not show_logger:
continue
if k == selected:
s.append('<li class="active">')
else:
s.append('<li>')
s.append('<a href="%s/%s/">%s</a></li>\n' % (base_url, k, _(v)))
s.append('</ul>\n')
return ''.join(s)
def generate_user_info [html] ():
hosts = Host.select(lambda x: x.name == 'larpe')
if not hosts:
return
host = hosts[0]
user = get_session().get_user(host.provider_id)
if user and user.name:
logout_url = '%s/liberty/%s/logout' % (get_request().environ['SCRIPT_NAME'], host.name)
"""<ul class="user-info">
<li class="ui-name">%s</li>
<li class="ui-logout"><a href="%s">%s</a></li>
</ul>""" % (user.name, logout_url, _('logout'))
def html_top [html] (section, title = None, scripts = None):
header_menu = generate_header_menu(section)
user_info = generate_user_info()
subtitle = ''
for s in items:
if s[0] == section:
subtitle = _(s[1])
if not title:
title = ''
else:
title = ' - ' + title
if not scripts:
scripts = ''
else:
scripts = '\n'.join(['<script src="%s" type="text/javascript"></script>' % x for x in scripts])
sitetitle = _('Larpe Administration')
# if title:
# sitetitle += ' - '
admin_ezt = True
get_response().filter.update(locals())
def error_page [html] (section, error):
html_top(section, title = _('Error'))
'<div id="error-page">'
'<h2>%s</h2>' % _('Error')
'<p>%s</p>' % error
'</div>'
def command_icon [html] (url, type, label = None, icon = None):
script_name = get_request().environ['SCRIPT_NAME']
icons = {
'edit': 'stock_edit_16.png',
'add': 'stock_add_16.png',
'remove': 'stock_remove_16.png',
'duplicate': 'stock_copy_16.png',
'view': 'view_16.png',
}
labels = {
'add': N_('Add'),
'edit': N_('Edit'),
'remove': N_('Remove'),
'duplicate': N_('Duplicate'),
'view': N_('View'),
}
if not label:
label = _(labels[str(type)])
if not icon:
icon = icons[str(type)]
if url:
'''<span class="%(type)s">
<a href="%(url)s"><img src="%(script_name)s/larpe/images/%(icon)s" alt="%(label)s" title="%(label)s" /></a>
</span>''' % locals()
else:
# no url -> image button
'''<span class="%(type)s">
<input type="image" src="%(script_name)s/larpe/images/%(icon)s" alt="%(label)s" title="%(label)s" />
</span>''' % locals()