backoffice: limit menu to main items, add more items with small blocks (#6726)

Main items are determined as having an attributed icon, it's not that good as a
reference but will do for now.
This commit is contained in:
Frédéric Péters 2015-04-22 11:08:17 +02:00
parent 259e40870a
commit 22aa4baf66
3 changed files with 55 additions and 28 deletions

View File

@ -275,27 +275,73 @@ class RootDirectory(BackofficeRootDirectory):
def get_intro_text(self):
return _('''Welcome.''')
def generate_header_menu(self, selected=None):
s = ['<ul id="menu">\n']
base_url = get_publisher().get_root_url() + 'backoffice'
for item in self.get_menu_items():
if len(item) == 2:
k, v = item
display_function = None
elif len(item) == 3:
k, v, display_function = item
if k is None: # heading
s.append('<li><strong>%s</strong></li>' % v)
continue
if k.strip('/') not in ('home', 'forms', 'workflows', 'users', 'roles',
'categories', 'settings', 'management'):
# skip items that do not have icons, they will have to be
# accessed via the backoffice main page
continue
if k == '/':
continue # skip root
if display_function and not display_function(k):
continue
if k.rstrip('/') == 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 _q_index(self):
html_top('/')
r = TemplateIO(html=True)
r += htmltext('<div class="bo-block"><p>%s</p></div>') % self.get_intro_text()
r += htmltext('<ul class="apps">')
main_items = []
more_items = []
for item in self.get_menu_items():
if len(item) == 2:
item = list(item) + [None]
k, v, display_function = item
if k.strip('/') not in ('home', 'forms', 'workflows', 'users', 'roles',
'categories', 'settings', 'management'):
# limit this space to menu entries that have icons.
if not k.strip('/'):
continue
if k.strip('/') in ('home', 'forms', 'workflows', 'users', 'roles',
'categories', 'settings', 'management'):
# menu entries that have icons.
main_items.append((k, v))
else:
more_items.append((k, v))
r += htmltext('<ul class="apps">')
for k, v in main_items:
r += htmltext('<li class="zone-%s"><a href="%s">') % (k.strip('/'), k)
if callable(v):
r += v()
else:
r += _(v)
r += htmltext('</a></li>')
for k, v in more_items:
r += htmltext('<li class="zone-no-icon"><a href="%s">') % k
if callable(v):
r += v()
else:
r += _(v)
r += htmltext('</a></li>')
r += htmltext('</ul>')
r += htmltext('<br class="clear">')
r += htmltext('<p id="for-more-info"></p>')
get_response().filter['sidebar'] = str(self.get_sidebar())

View File

@ -137,27 +137,3 @@ class BackofficeRootDirectory(AccessControlled, Directory):
def get_menu_items(self):
return self.menu_items
def generate_header_menu(self, selected=None):
s = ['<ul id="menu">\n']
base_url = get_publisher().get_root_url() + 'backoffice'
for item in self.get_menu_items():
if len(item) == 2:
k, v = item
display_function = None
elif len(item) == 3:
k, v, display_function = item
if k is None: # heading
s.append('<li><strong>%s</strong></li>' % v)
continue
if k == '/':
continue # skip root
if display_function and not display_function(k):
continue
if k.rstrip('/') == 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)

View File

@ -768,6 +768,11 @@ li.zone-management a:hover { background-image: url(icon-management-hover.png); }
li.zone-home a { background-image: url(icon-home.png); }
li.zone-home a:hover { background-image: url(icon-home-hover.png); }
ul.apps li.zone-no-icon a {
height: 29px;
padding-top: 24px;
}
.ui-dialog div.SubmitWidget input {
margin-top: 0;
border: 1px solid #ccc;