Projet

Général

Profil

0004-backoffice-limit-menu-to-main-items-add-more-items-w.patch

Frédéric Péters, 22 avril 2015 12:31

Télécharger (5,65 ko)

Voir les différences:

Subject: [PATCH 04/11] 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.
 wcs/backoffice/root.py              | 54 ++++++++++++++++++++++++++++++++++---
 wcs/qommon/backoffice/root.py       | 24 -----------------
 wcs/qommon/static/css/dc2/admin.css |  5 ++++
 3 files changed, 55 insertions(+), 28 deletions(-)
wcs/backoffice/root.py
270 270
    def get_intro_text(self):
271 271
        return _('''Welcome.''')
272 272

  
273
    def generate_header_menu(self, selected=None):
274
        s = ['<ul id="menu">\n']
275
        base_url = get_publisher().get_root_url() + 'backoffice'
276
        for item in self.get_menu_items():
277
            if len(item) == 2:
278
                k, v = item
279
                display_function = None
280
            elif len(item) == 3:
281
                k, v, display_function = item
282
            if k is None: # heading
283
                s.append('<li><strong>%s</strong></li>' % v)
284
                continue
285
            if k.strip('/') not in ('home', 'forms', 'workflows', 'users', 'roles',
286
                    'categories', 'settings', 'management'):
287
                # skip items that do not have icons, they will have to be
288
                # accessed via the backoffice main page
289
                continue
290
            if k == '/':
291
                continue # skip root
292
            if display_function and not display_function(k):
293
                continue
294
            if k.rstrip('/') == selected:
295
                s.append('<li class="active">')
296
            else:
297
                s.append('<li>')
298
            s.append('<a href="%s/%s">%s</a></li>\n' % (base_url, k, _(v)))
299
        s.append('</ul>\n')
300
        return ''.join(s)
301

  
273 302
    def _q_index(self):
274 303
        html_top('/')
275 304
        r = TemplateIO(html=True)
276 305
        r += htmltext('<div class="bo-block"><p>%s</p></div>') % self.get_intro_text()
277
        r += htmltext('<ul class="apps">')
306

  
307
        main_items = []
308
        more_items = []
278 309
        for item in self.get_menu_items():
279 310
            if len(item) == 2:
280 311
                item = list(item) + [None]
281 312
            k, v, display_function = item
282
            if k.strip('/') not in ('home', 'forms', 'workflows', 'users', 'roles',
283
                    'categories', 'settings', 'management'):
284
                # limit this space to menu entries that have icons.
313
            if not k.strip('/'):
285 314
                continue
315
            if k.strip('/') in ('home', 'forms', 'workflows', 'users', 'roles',
316
                    'categories', 'settings', 'management'):
317
                # menu entries that have icons.
318
                main_items.append((k, v))
319
            else:
320
                more_items.append((k, v))
321

  
322
        r += htmltext('<ul class="apps">')
323
        for k, v in main_items:
286 324
            r += htmltext('<li class="zone-%s"><a href="%s">') % (k.strip('/'), k)
287 325
            if callable(v):
288 326
                r += v()
289 327
            else:
290 328
                r += _(v)
291 329
            r += htmltext('</a></li>')
330
        for k, v in more_items:
331
            r += htmltext('<li class="zone-no-icon"><a href="%s">') % k
332
            if callable(v):
333
                r += v()
334
            else:
335
                r += _(v)
336
            r += htmltext('</a></li>')
292 337
        r += htmltext('</ul>')
293 338
        r += htmltext('<br class="clear">')
339

  
294 340
        r += htmltext('<p id="for-more-info"></p>')
295 341

  
296 342
        get_response().filter['sidebar'] = str(self.get_sidebar())
wcs/qommon/backoffice/root.py
137 137

  
138 138
    def get_menu_items(self):
139 139
        return self.menu_items
140

  
141
    def generate_header_menu(self, selected=None):
142
        s = ['<ul id="menu">\n']
143
        base_url = get_publisher().get_root_url() + 'backoffice'
144
        for item in self.get_menu_items():
145
            if len(item) == 2:
146
                k, v = item
147
                display_function = None
148
            elif len(item) == 3:
149
                k, v, display_function = item
150
            if k is None: # heading
151
                s.append('<li><strong>%s</strong></li>' % v)
152
                continue
153
            if k == '/':
154
                continue # skip root
155
            if display_function and not display_function(k):
156
                continue
157
            if k.rstrip('/') == selected:
158
                s.append('<li class="active">')
159
            else:
160
                s.append('<li>')
161
            s.append('<a href="%s/%s">%s</a></li>\n' % (base_url, k, _(v)))
162
        s.append('</ul>\n')
163
        return ''.join(s)
wcs/qommon/static/css/dc2/admin.css
768 768
li.zone-home a { background-image: url(icon-home.png); }
769 769
li.zone-home a:hover { background-image: url(icon-home-hover.png); }
770 770

  
771
ul.apps li.zone-no-icon a {
772
	height: 29px;
773
	padding-top: 24px;
774
}
775

  
771 776
.ui-dialog div.SubmitWidget input {
772 777
  margin-top: 0;
773 778
  border: 1px solid #ccc;
774
-