Statistics
| Branch: | Tag: | Revision:

root / snf-webproject / synnefo / webproject / context_processors.py @ 49044e69

History | View | Annotate | Download (2.3 kB)

1 9af7206b Kostas Papadimitriou
from django.utils.safestring import mark_safe
2 9af7206b Kostas Papadimitriou
from django.conf import settings
3 9af7206b Kostas Papadimitriou
4 762b93d7 Christos Stavrakakis
5 9af7206b Kostas Papadimitriou
def cloudbar(request):
6 9af7206b Kostas Papadimitriou
    """
7 9af7206b Kostas Papadimitriou
    Django context processor that applies all cloudbar settings in response
8 9af7206b Kostas Papadimitriou
    context plus a ready to use pre rendered script html tag containing valid
9 9af7206b Kostas Papadimitriou
    javascript code for cloudbar to display.
10 9af7206b Kostas Papadimitriou

11 49044e69 Christos Stavrakakis
    To use it add ``synnefo.webproject.context_processors.cloudbar`` in your
12 49044e69 Christos Stavrakakis
    project's ``TEMPLATE_CONTEXT_PROCESSORS setting`` (snf-webproject already
13 49044e69 Christos Stavrakakis
    does).
14 9af7206b Kostas Papadimitriou

15 9af7206b Kostas Papadimitriou
    Then in your base html template::
16 9af7206b Kostas Papadimitriou

17 9af7206b Kostas Papadimitriou
        <html>
18 9af7206b Kostas Papadimitriou
        ....
19 9af7206b Kostas Papadimitriou
        <head>
20 9af7206b Kostas Papadimitriou
        ...
21 9af7206b Kostas Papadimitriou
        {% if CLOUDBAR_ACTIVE %}
22 9af7206b Kostas Papadimitriou
            {{ CLOUDBAR_CODE }}
23 9af7206b Kostas Papadimitriou
        {% endif %}
24 9af7206b Kostas Papadimitriou
        </head>
25 9af7206b Kostas Papadimitriou
        <body>
26 9af7206b Kostas Papadimitriou
        ....
27 9af7206b Kostas Papadimitriou
        </body>
28 9af7206b Kostas Papadimitriou
        </html>
29 9af7206b Kostas Papadimitriou

30 9af7206b Kostas Papadimitriou

31 9af7206b Kostas Papadimitriou
    """
32 9af7206b Kostas Papadimitriou
33 9af7206b Kostas Papadimitriou
    CB_ACTIVE = getattr(settings, 'CLOUDBAR_ACTIVE', True)
34 fb814235 Kostas Papadimitriou
    CB_LOCATION = getattr(settings, 'CLOUDBAR_LOCATION')
35 9af7206b Kostas Papadimitriou
    CB_COOKIE_NAME = getattr(settings, 'CLOUDBAR_COOKIE_NAME',
36 9af7206b Kostas Papadimitriou
            'okeanos_account')
37 fb814235 Kostas Papadimitriou
    CB_SERVICES_URL = getattr(settings, 'CLOUDBAR_SERVICES_URL')
38 fb814235 Kostas Papadimitriou
    CB_MENU_URL = getattr(settings, 'CLOUDBAR_MENU_URL')
39 7f7863bb Kostas Papadimitriou
    CB_HEIGHT = getattr(settings, 'CLOUDBAR_HEIGHT',
40 7f7863bb Kostas Papadimitriou
            '35')
41 7f7863bb Kostas Papadimitriou
    CB_BGCOLOR = getattr(settings, 'CLOUDBAR_BACKGROUND_COLOR',
42 7f7863bb Kostas Papadimitriou
            '#000000')
43 9af7206b Kostas Papadimitriou
44 9af7206b Kostas Papadimitriou
    CB_CODE = """
45 9af7206b Kostas Papadimitriou
    <script type="text/javascript">
46 9af7206b Kostas Papadimitriou
        var CLOUDBAR_LOCATION = "%(location)s";
47 9af7206b Kostas Papadimitriou
        var CLOUDBAR_COOKIE_NAME = "%(cookie_name)s";
48 9af7206b Kostas Papadimitriou
        var GET_SERVICES_URL = "%(services_url)s";
49 9af7206b Kostas Papadimitriou
        var GET_MENU_URL = "%(menu_url)s";
50 7f7863bb Kostas Papadimitriou
        var CLOUDBAR_HEIGHT = '%(height)s';
51 9af7206b Kostas Papadimitriou

52 9af7206b Kostas Papadimitriou
        $(document).ready(function(){
53 9af7206b Kostas Papadimitriou
            $.getScript(CLOUDBAR_LOCATION + 'cloudbar.js');
54 7f7863bb Kostas Papadimitriou
        });
55 7f7863bb Kostas Papadimitriou

56 9af7206b Kostas Papadimitriou
    </script>
57 7f7863bb Kostas Papadimitriou
    <style>
58 7f7863bb Kostas Papadimitriou
        body {
59 7f7863bb Kostas Papadimitriou
            border-top: %(height)spx solid %(bg_color)s;
60 7f7863bb Kostas Papadimitriou
        }
61 7f7863bb Kostas Papadimitriou
        body .cloudbar {
62 7f7863bb Kostas Papadimitriou
            height: %(height)spx;
63 7f7863bb Kostas Papadimitriou
        }
64 7f7863bb Kostas Papadimitriou
    </style>
65 9af7206b Kostas Papadimitriou
""" % {'location': CB_LOCATION,
66 9af7206b Kostas Papadimitriou
       'cookie_name': CB_COOKIE_NAME,
67 9af7206b Kostas Papadimitriou
       'services_url': CB_SERVICES_URL,
68 7f7863bb Kostas Papadimitriou
       'menu_url': CB_MENU_URL,
69 7f7863bb Kostas Papadimitriou
       'height': str(CB_HEIGHT),
70 7f7863bb Kostas Papadimitriou
       'bg_color': CB_BGCOLOR}
71 9af7206b Kostas Papadimitriou
72 9af7206b Kostas Papadimitriou
    CB_CODE = mark_safe(CB_CODE)
73 9af7206b Kostas Papadimitriou
74 9af7206b Kostas Papadimitriou
    return {
75 9af7206b Kostas Papadimitriou
        'CLOUDBAR_ACTIVE': CB_ACTIVE,
76 9af7206b Kostas Papadimitriou
        'CLOUDBAR_LOCATION': CB_LOCATION,
77 9af7206b Kostas Papadimitriou
        'CLOUDBAR_COOKIE_NAME': CB_COOKIE_NAME,
78 9af7206b Kostas Papadimitriou
        'CLOUDBAR_SERVICES_URL': CB_SERVICES_URL,
79 9af7206b Kostas Papadimitriou
        'CLOUDBAR_MENU_URL': CB_MENU_URL,
80 9af7206b Kostas Papadimitriou
        'CLOUDBAR_CODE': CB_CODE
81 9af7206b Kostas Papadimitriou
    }