Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / static / im / cloudbar / README.rst @ 0f4a8a68

History | View | Annotate | Download (2.7 kB)

1 8afc06d1 Kostas Papadimitriou
Cloudbar
2 8afc06d1 Kostas Papadimitriou
========
3 8afc06d1 Kostas Papadimitriou
4 8afc06d1 Kostas Papadimitriou
Cloudbar is a project to provide common navigation user experience
5 8afc06d1 Kostas Papadimitriou
between services that share common authentication mechanism and user
6 8afc06d1 Kostas Papadimitriou
entries but get deployed on different domains and may not share
7 8afc06d1 Kostas Papadimitriou
common frontend themes/templates.
8 8afc06d1 Kostas Papadimitriou
9 8afc06d1 Kostas Papadimitriou
The project consists of a javascript file which once imported in a
10 8afc06d1 Kostas Papadimitriou
html page handles the automatic creation and styling of a bar that
11 8afc06d1 Kostas Papadimitriou
is placed on top of the page (first body element absolutely
12 8afc06d1 Kostas Papadimitriou
positioned on top). Since the addition of the bar may break the
13 8afc06d1 Kostas Papadimitriou
current layout of the site once imported the script tries to load an
14 8afc06d1 Kostas Papadimitriou
additional css located in the same url as the script itself named by
15 8afc06d1 Kostas Papadimitriou
the ``CLOUDBAR_ACTIVE_SERVICE`` configuration and prefixed by *service_* so 
16 8afc06d1 Kostas Papadimitriou
that css changes can be applied without touching the page native styles.
17 8afc06d1 Kostas Papadimitriou
18 8afc06d1 Kostas Papadimitriou
The bar contains links to the refered services application urls, and
19 8afc06d1 Kostas Papadimitriou
depending on if the user is authenticated links to account pages
20 8afc06d1 Kostas Papadimitriou
(login, change profile, logout etc.).
21 8afc06d1 Kostas Papadimitriou
22 8afc06d1 Kostas Papadimitriou
To identify if a user is authenticated the script checks of a
23 8afc06d1 Kostas Papadimitriou
specific cookie which can be configured using ``CLOUDBAR_COOKIE_NAME`` setting
24 8afc06d1 Kostas Papadimitriou
contains valid data which should match the following format::
25 8afc06d1 Kostas Papadimitriou
    
26 8afc06d1 Kostas Papadimitriou
    <username or email>|<authentication token>
27 8afc06d1 Kostas Papadimitriou
28 8afc06d1 Kostas Papadimitriou
29 8afc06d1 Kostas Papadimitriou
Usage
30 8afc06d1 Kostas Papadimitriou
-----
31 8afc06d1 Kostas Papadimitriou
32 8afc06d1 Kostas Papadimitriou
Each page that wants to display the navigation bar should:
33 8afc06d1 Kostas Papadimitriou
34 8afc06d1 Kostas Papadimitriou
    - Include one of the latest jquery builds.
35 8afc06d1 Kostas Papadimitriou
    - Set the ``CLOUDBAR_COOKIE_NAME`` variable containing info about the username
36 8afc06d1 Kostas Papadimitriou
      and the authentication status of the current visitor of the page.
37 8afc06d1 Kostas Papadimitriou
    - Set the ``CLOUDBAR_ACTIVE_SERVICE`` to the id of the service the current
38 8afc06d1 Kostas Papadimitriou
      page refers to so that script cat set the appropriate active styles to
39 ebd369d0 Sofia Papagiannaki
      the services menu for services ids see ``SERVICES_LINK`` object in 
40 ebd369d0 Sofia Papagiannaki
      cloudbar.js. Use special **accounts** value to set account menu as the
41 ebd369d0 Sofia Papagiannaki
      active link.
42 8afc06d1 Kostas Papadimitriou
    - Set the ``CLOUDBAR_LOCATION`` to the url where bar files are served from.
43 8afc06d1 Kostas Papadimitriou
    - Include the servicesbar.js script.
44 8afc06d1 Kostas Papadimitriou
45 8afc06d1 Kostas Papadimitriou
46 8afc06d1 Kostas Papadimitriou
Example
47 8afc06d1 Kostas Papadimitriou
*******
48 8afc06d1 Kostas Papadimitriou
49 8afc06d1 Kostas Papadimitriou
.. codeblock:: javascript
50 8afc06d1 Kostas Papadimitriou
    
51 8afc06d1 Kostas Papadimitriou
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
52 8afc06d1 Kostas Papadimitriou
    <script>
53 8afc06d1 Kostas Papadimitriou
        var CLOUDBAR_COOKIE_NAME = '_pithos2_a';
54 8afc06d1 Kostas Papadimitriou
        var CLOUDBAR_ACTIVE_SERVICE = 'cloud';
55 8afc06d1 Kostas Papadimitriou
        var CLOUDBAR_LOCATION = "http://accounts.cloud.grnet.gr/cloudbar/";
56 8afc06d1 Kostas Papadimitriou
57 8afc06d1 Kostas Papadimitriou
        $(document).ready(function(){
58 8afc06d1 Kostas Papadimitriou
            $.getScript(CLOUDBAR_LOC + 'cloudbar.js');
59 8afc06d1 Kostas Papadimitriou
        })
60 8afc06d1 Kostas Papadimitriou
    </script>
61 8afc06d1 Kostas Papadimitriou
62 8afc06d1 Kostas Papadimitriou
63 8afc06d1 Kostas Papadimitriou
Build styles
64 8afc06d1 Kostas Papadimitriou
------------
65 8afc06d1 Kostas Papadimitriou
66 8afc06d1 Kostas Papadimitriou
Cloudbar uses `less-css <http://www.lesscss.org>`_ for css styles
67 8afc06d1 Kostas Papadimitriou
definitions. To build the less file you need the bootstrap less files
68 8afc06d1 Kostas Papadimitriou
available on 
69 8afc06d1 Kostas Papadimitriou
`bootstrap github repository <https://github.com/twitter/bootstrap/>`.
70 8afc06d1 Kostas Papadimitriou
71 8afc06d1 Kostas Papadimitriou
You can build the styles using the following command::
72 8afc06d1 Kostas Papadimitriou
73 8afc06d1 Kostas Papadimitriou
    $ lessc --include-path=<path/to/bootstrap> cloudbar.less > cloudbar.css