Projet

Général

Profil

0001-add-portal-agent-first-level-page-on-sidebar-11039.patch

Thomas Noël, 30 novembre 2017 09:04

Télécharger (4,79 ko)

Voir les différences:

Subject: [PATCH] add portal agent first level page on sidebar (#11039)

 combo/apps/publik/views.py                  | 13 +++++++++++++
 data/themes/gadjo/static/js/agent-portal.js |  4 ----
 data/themes/gadjo/static/js/publik.js       | 24 ++++++++++++++++++++++--
 3 files changed, 35 insertions(+), 6 deletions(-)
combo/apps/publik/views.py
19 19
from django.conf import settings
20 20
from django.http import Http404, HttpResponse
21 21

  
22
from combo.data.models import Page
23

  
22 24
def services_js(request, *args, **kwargs):
23 25
    if not getattr(settings, 'KNOWN_SERVICES', None):
24 26
        raise Http404()
25 27
    services = []
26 28
    portal_agent_url = None
27 29
    portal_agent_title = None
30
    portal_agent_subpages = []
28 31
    for service_id, services_dict in settings.KNOWN_SERVICES.items():
29 32
        for service_slug, service in services_dict.items():
30 33
            if service.get('secondary') and service_id != 'authentic':
......
32 35
            if service.get('is-portal-agent'):
33 36
                portal_agent_url = service['url']
34 37
                portal_agent_title = service['title']
38
                portal_agent_subpages = [{ # subpages = first level pages
39
                        'label': page.title,
40
                        'slug': page.slug,
41
                        'url': request.build_absolute_uri(page.get_online_url())
42
                    } for page in Page.objects.filter(
43
                            parent=None,
44
                            exclude_from_navigation=False).exclude(slug='index')
45
                    if page.is_visible(request.user)
46
                ]
35 47
            services.append({
36 48
                'title': service['title'],
37 49
                'slug': service_slug,
......
44 56
            'PUBLIK_ENVIRONMENT_LABEL': settings.TEMPLATE_VARS.get('environment_label'),
45 57
            'PUBLIK_PORTAL_AGENT_URL': portal_agent_url,
46 58
            'PUBLIK_PORTAL_AGENT_TITLE': portal_agent_title,
59
            'PUBLIK_PORTAL_AGENT_SUBPAGES': portal_agent_subpages,
47 60
            'PUBLIK_PORTAL_AGENT_EXTRA_CSS': settings.TEMPLATE_VARS.get(
48 61
                'portal_agent_extra_css'),
49 62
            'COMBO_KNOWN_SERVICES': services,
data/themes/gadjo/static/js/agent-portal.js
26 26
      });
27 27
    });
28 28
  });
29
  $(document).on('publik:menu-loaded', function(event, services) {
30
    /* mark our location in publik menu */
31
    $('#portal-agent-home').addClass('active');
32
  });
33 29
});
data/themes/gadjo/static/js/publik.js
23 23
    $('#sidepage-menu').remove();
24 24
    var menu_links = $('<ul id="sidepage-menu">');
25 25
    if (PUBLIK_PORTAL_AGENT_URL && PUBLIK_PORTAL_AGENT_TITLE) {
26
      var li = $('<li id="portal-agent-home"><a>' + PUBLIK_PORTAL_AGENT_TITLE + '</a></li>').appendTo(menu_links);
27
      $(li).find('a').attr('href', PUBLIK_PORTAL_AGENT_URL).addClass('icon-home');
26
      var home = $('<li id="portal-agent-home"><a>' + PUBLIK_PORTAL_AGENT_TITLE + '</a></li>').appendTo(menu_links);
27
      $(home).find('a').attr('href', PUBLIK_PORTAL_AGENT_URL).addClass('icon-home');
28
      if (window.location.href.indexOf(PUBLIK_PORTAL_AGENT_URL) == 0) {
29
        $(home).addClass('active');
30
      }
31
      if (PUBLIK_PORTAL_AGENT_SUBPAGES) {
32
        $(PUBLIK_PORTAL_AGENT_SUBPAGES).each(function(index, page) {
33
          var li = $('<li><a href="#">' + page.label + '</a></li>').appendTo(menu_links);
34
          $(li).find('a').attr('href', page.url);
35
          $(li).find('a').attr('title', page.label);
36
          $(li).find('a').addClass('icon-corner');
37
          if (page.icon !== undefined) {
38
            $(li).find('a').addClass('icon-portal-agent-' + page.icon);
39
          } else if (page.slug !== undefined) {
40
            $(li).find('a').addClass('icon-portal-agent-' + page.slug);
41
          }
42
          if (window.location.href.indexOf(page.url) == 0) {
43
            $(li).addClass('active');
44
            $(home).removeClass('active');
45
          }
46
        });
47
      }
28 48
    }
29 49
    var more_entries = Array();
30 50
    var service_order = Array('authentic', 'welco', 'wcs', 'bijoe', 'chrono', 'corbo', 'combo', 'passerelle', 'hobo');
31
-