Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ 1508a5ab

History | View | Annotate | Download (10.6 kB)

1 d7f0ad6e provetza
{% load i18n %}
2 cc7c5902 Dimitris Moraitis
<!DOCTYPE html>
3 cc7c5902 Dimitris Moraitis
<head>
4 b303ba05 Christodoulos Psaltis
        <title>{{ project }}</title>
5 cc7c5902 Dimitris Moraitis
        <!-- include the Tools -->
6 146b6003 Dimitris Moraitis
    <!-- jquery tools minified for deployment-->
7 01864f44 Dimitris Moraitis
    <script src="static/jquery.tools.min.js"></script>
8 146b6003 Dimitris Moraitis
    
9 01864f44 Dimitris Moraitis
        <!-- jquery tools source for JS debugging -->
10 01864f44 Dimitris Moraitis
    <!--
11 146b6003 Dimitris Moraitis
    <script src="http://flowplayer.org/tools/download/1.2.5/jquery-1.4.2.js"></script>   
12 146b6003 Dimitris Moraitis
        <script src="http://flowplayer.org/tools/download/1.2.5/tabs/tabs.js"></script>
13 146b6003 Dimitris Moraitis
        <script src="http://flowplayer.org/tools/download/1.2.5/scrollable/scrollable.js"></script>
14 146b6003 Dimitris Moraitis
        <script src="http://flowplayer.org/tools/download/1.2.5/overlay/overlay.js"></script>
15 146b6003 Dimitris Moraitis
        <script src="http://flowplayer.org/tools/download/1.2.5/rangeinput/rangeinput.js"></script>
16 146b6003 Dimitris Moraitis
        <script src="http://flowplayer.org/tools/download/1.2.5/toolbox/toolbox.expose.js"></script>
17 01864f44 Dimitris Moraitis
    -->
18 146b6003 Dimitris Moraitis
    
19 fb66080c Dimitris Moraitis
    <script src="static/jquery.cookie.js"></script>
20 a4531705 Christodoulos Psaltis
    <script src="static/jQueryRotate.js"></script>
21 a4531705 Christodoulos Psaltis
    <script src="static/jquery.dataTables.min.js"></script>
22 7b7e768e Christodoulos Psaltis
    <script src="static/synnefo.js"></script>
23 7b7e768e Christodoulos Psaltis
        <link rel="stylesheet" type="text/css" href="static/main.css"/>        
24 42f67a2a Dimitris Moraitis
    <script>
25 eae0a59a Dimitris Moraitis
        // timeout value from settings.py
26 d36493ce Dimitris Moraitis
        var TIMEOUT = {{timeout}};
27 e5b0ba20 Vangelis Koukis
        var UPDATE_INTERVAL = {{5000}};
28 eae0a59a Dimitris Moraitis
        var STATUS_MESSAGES = {
29 eae0a59a Dimitris Moraitis
            'BUILD'     : '{% trans "Building" %}',
30 eae0a59a Dimitris Moraitis
            'REBOOT'     : '{% trans "Rebooting" %}',            
31 eae0a59a Dimitris Moraitis
            'STOPPED'   : '{% trans "Stopped" %}',
32 eae0a59a Dimitris Moraitis
            'ACTIVE'   : '{% trans "Running" %}',
33 eae0a59a Dimitris Moraitis
            'ERROR'   : '{% trans "Error" %}'
34 eae0a59a Dimitris Moraitis
        };
35 eae0a59a Dimitris Moraitis
        
36 eae0a59a Dimitris Moraitis
        var ERRORS = {
37 eae0a59a Dimitris Moraitis
            // error message header
38 146b6003 Dimitris Moraitis
            'HEADER' : '{% trans "Error!" %}',
39 eae0a59a Dimitris Moraitis
            // default
40 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Could not contact the service. Please check your network connectivity and try again." %}',
41 eae0a59a Dimitris Moraitis
            // bad request
42 eae0a59a Dimitris Moraitis
            '400' : '{% trans "Malformed request." %}',
43 eae0a59a Dimitris Moraitis
            // not found
44 eae0a59a Dimitris Moraitis
            '404' : '{% trans "Your request has failed. Resource not found." %}',
45 eae0a59a Dimitris Moraitis
            // internal server error
46 ccd40764 Markos Gogoulos
            '500' : '{% trans "There has been an Internal Error. Our administrators have been notified." %}',
47 ccd40764 Markos Gogoulos
            // service unavailable
48 ccd40764 Markos Gogoulos
            '501' : '{% trans "This server has not been implemented yet." %}',
49 eae0a59a Dimitris Moraitis
            // service unavailable
50 a5093da5 Markos Gogoulos
            '503' : '{% trans "This service is unavailable right now, please try again later." %}',
51 e2ccad35 Dimitris Moraitis
            // no images found
52 146b6003 Dimitris Moraitis
            'NO_IMAGES' : '{% trans "Cannot show the Create machine wizard: No images found." %}',
53 e2ccad35 Dimitris Moraitis
            // no flavors found
54 146b6003 Dimitris Moraitis
            'NO_FLAVORS' : '{% trans "Cannot show the Create machine wizard: No machine configurations found." %}'
55 eae0a59a Dimitris Moraitis
        };
56 eae0a59a Dimitris Moraitis
        
57 eae0a59a Dimitris Moraitis
        var SUCCESS = {
58 146b6003 Dimitris Moraitis
            'HEADER' : '{% trans "Success!" %}',
59 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Your request has been succefully executed." %}',
60 8550e831 Markos Gogoulos
            'CREATE_VM_SUCCESS' : '{% trans "Success!" %}',
61 8550e831 Markos Gogoulos
            'CREATE_VM_SUCCESS_ONE' : '{% trans "Your machine is now being built." %}',
62 8550e831 Markos Gogoulos
            'CREATE_VM_SUCCESS_TWO' : '{% trans "Please write down the following password:" %}',
63 8550e831 Markos Gogoulos
            'CREATE_VM_SUCCESS_THREE' : '{% trans "Do not lose this! You will need it to connect to your machine, once it is ready." %}'
64 eae0a59a Dimitris Moraitis
        };
65 eae0a59a Dimitris Moraitis
        
66 42f67a2a Dimitris Moraitis
        // ajax error checking  
67 038383b1 Dimitris Moraitis
        function ajax_error(status, serverID, action, responseText) {
68 038383b1 Dimitris Moraitis
            var serverName = '';
69 038383b1 Dimitris Moraitis
            
70 038383b1 Dimitris Moraitis
            if (serverID != undefined) {
71 a8e592c7 Dimitris Moraitis
                // standard view
72 a8e592c7 Dimitris Moraitis
                serverName = $("#"+serverID).find("span.name").text();
73 a8e592c7 Dimitris Moraitis
                if (serverName == "") { // list view
74 a8e592c7 Dimitris Moraitis
                    serverName = $("#"+serverID).parent().parent().find("span.name").text();                    
75 a8e592c7 Dimitris Moraitis
                }
76 038383b1 Dimitris Moraitis
            }
77 038383b1 Dimitris Moraitis
            
78 42f67a2a Dimitris Moraitis
            // prepare the error message
79 146b6003 Dimitris Moraitis
            $("#error-success h3").text(ERRORS['HEADER']);
80 038383b1 Dimitris Moraitis
            if (responseText != undefined){
81 a8e592c7 Dimitris Moraitis
                var errors = parse_error(responseText), details = '';
82 038383b1 Dimitris Moraitis
                if (serverName){
83 038383b1 Dimitris Moraitis
                    serverName="<p><strong>Server:</strong> " + serverName + "</p>";
84 038383b1 Dimitris Moraitis
                }
85 a8e592c7 Dimitris Moraitis
                if (errors[0].details != undefined) {
86 a8e592c7 Dimitris Moraitis
                    details = "<p><strong>Details:</strong> " + errors[0].details +"</p>";
87 a8e592c7 Dimitris Moraitis
                }
88 a8e592c7 Dimitris Moraitis
                $("#error-success div").html("<p>"+(errors[0].message || ERRORS[errors[0].code]) +"</p>"+serverName +"<p><strong>Action:</strong> " + action + "</p><p><strong>Code</strong>: " + errors[0].code + "</p>" + details);
89 038383b1 Dimitris Moraitis
            } else if (ERRORS[status] != undefined) {
90 e1a023a6 Markos Gogoulos
                if (serverID == undefined){
91 e1a023a6 Markos Gogoulos
                    $("#error-success p").text(ERRORS[status]);
92 e1a023a6 Markos Gogoulos
                } else {
93 e1a023a6 Markos Gogoulos
                    $("#error-success p").html("<b>" + serverName + "</b>" + ": " + ERRORS[status]);
94 e1a023a6 Markos Gogoulos
                }
95 eae0a59a Dimitris Moraitis
            } else {
96 146b6003 Dimitris Moraitis
                $("#error-success p").text(ERRORS['DEFAULT']);   
97 eae0a59a Dimitris Moraitis
            }
98 eae0a59a Dimitris Moraitis
            
99 42f67a2a Dimitris Moraitis
            // bring up error notification
100 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
101 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
102 42f67a2a Dimitris Moraitis
                mask: {
103 42f67a2a Dimitris Moraitis
                    color: '#ebecff',
104 42f67a2a Dimitris Moraitis
                    opacity: '0.9'
105 42f67a2a Dimitris Moraitis
                },
106 42f67a2a Dimitris Moraitis
                top: 'center',
107 42f67a2a Dimitris Moraitis
                closeOnClick: false,
108 42f67a2a Dimitris Moraitis
                oneInstance: false,
109 42f67a2a Dimitris Moraitis
                load: false,
110 42f67a2a Dimitris Moraitis
                onClose: function(){
111 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
112 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
113 e5b0ba20 Vangelis Koukis
                    // choose_view();
114 42f67a2a Dimitris Moraitis
                }
115 42f67a2a Dimitris Moraitis
            });
116 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
117 42f67a2a Dimitris Moraitis
            return false;
118 42f67a2a Dimitris Moraitis
        }
119 42f67a2a Dimitris Moraitis
        
120 42f67a2a Dimitris Moraitis
        // ajax success checking
121 146b6003 Dimitris Moraitis
        function ajax_success(status, password) {
122 42f67a2a Dimitris Moraitis
            // prepare the error message
123 42f67a2a Dimitris Moraitis
            // bring up success notification
124 8550e831 Markos Gogoulos
            if (status != undefined && SUCCESS[status]) {
125 8550e831 Markos Gogoulos
                if (password != undefined && status == "CREATE_VM_SUCCESS") {
126 8550e831 Markos Gogoulos
                    $("#error-success h3").text(SUCCESS[status]);
127 8550e831 Markos Gogoulos
                    var CREATE_VM_SUCCESS_MSG = SUCCESS["CREATE_VM_SUCCESS_ONE"] + '<br />'
128 8550e831 Markos Gogoulos
                        + SUCCESS["CREATE_VM_SUCCESS_TWO"] + '<br /><br />' + '<b>' + password + '</b>'
129 8550e831 Markos Gogoulos
                        + '<br /><br />' + SUCCESS["CREATE_VM_SUCCESS_THREE"] ;
130 038383b1 Dimitris Moraitis
                    $("#error-success div").html("<p>" + CREATE_VM_SUCCESS_MSG + "</p>");             
131 8550e831 Markos Gogoulos
                } else {
132 8550e831 Markos Gogoulos
                    $("#error-success h3").text(SUCCESS['HEADER']);
133 038383b1 Dimitris Moraitis
                    $("#error-success div").text("<p>" + SUCCESS[status] + "</p>");             
134 8550e831 Markos Gogoulos
                }
135 8550e831 Markos Gogoulos
            } else {
136 8550e831 Markos Gogoulos
                $("#error-success h3").text(SUCCESS['HEADER']);
137 038383b1 Dimitris Moraitis
                $("#error-success div").html("<p>" + SUCCESS['DEFAULT'] + "</p>");             
138 8550e831 Markos Gogoulos

139 8550e831 Markos Gogoulos
            }
140 8550e831 Markos Gogoulos

141 8550e831 Markos Gogoulos

142 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
143 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
144 42f67a2a Dimitris Moraitis
                mask: {
145 42f67a2a Dimitris Moraitis
                    color: '#ebecff',
146 42f67a2a Dimitris Moraitis
                    opacity: '0.9'
147 42f67a2a Dimitris Moraitis
                },
148 42f67a2a Dimitris Moraitis
                top: 'center',
149 42f67a2a Dimitris Moraitis
                closeOnClick: false,
150 42f67a2a Dimitris Moraitis
                oneInstance: false,
151 42f67a2a Dimitris Moraitis
                load: false,
152 42f67a2a Dimitris Moraitis
                onClose: function(){
153 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
154 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
155 e5b0ba20 Vangelis Koukis
                    // choose_view();
156 42f67a2a Dimitris Moraitis
                }
157 42f67a2a Dimitris Moraitis
            });
158 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
159 42f67a2a Dimitris Moraitis
            return false;
160 42f67a2a Dimitris Moraitis
        }
161 42f67a2a Dimitris Moraitis
    </script>
162 cc7c5902 Dimitris Moraitis
</head>
163 cc7c5902 Dimitris Moraitis
<body>
164 cc7c5902 Dimitris Moraitis
    <div id="wrapper">
165 ec06b07c Dimitris Moraitis
        <div id='user'>
166 ec06b07c Dimitris Moraitis
            <a href="#">{% trans "username" %}</a> &nbsp;|&nbsp; <a href="#">{% trans "settings" %}</a>
167 ec06b07c Dimitris Moraitis
            {% get_available_languages as LANGUAGES %}
168 421369dc user
            {% for lang in LANGUAGES %}
169 ec06b07c Dimitris Moraitis
                &nbsp;|&nbsp;
170 ec06b07c Dimitris Moraitis
                <a {% if  == lang.0 %}class="current_lang" {% else %}  href="/lang/?l={{lang.0}}" {% endif %}>{{lang.0}}</a> 
171 421369dc user
            {% endfor %}
172 421369dc user
        </div>
173 3b363b8e Christodoulos Psaltis
        <div id='header'>
174 cc7c5902 Dimitris Moraitis
            <a href="/" class="logo">
175 3b363b8e Christodoulos Psaltis
                <img src="static/nefo.png" alt="+nefo"/>
176 cc7c5902 Dimitris Moraitis
            </a>
177 03b3fa7e Christodoulos Psaltis
            <div class='fatborder'></div>
178 cc7c5902 Dimitris Moraitis
        </div>
179 cc7c5902 Dimitris Moraitis
        <!-- tabs -->
180 cc7c5902 Dimitris Moraitis
        <ul class="css-tabs">
181 0dedf601 Christodoulos Psaltis
                <li><a href="machines" title="{% trans "manage  virtual " %}" class="primary" id="machines">
182 0dedf601 Christodoulos Psaltis
                {% trans "machines" %}</a></li>
183 0dedf601 Christodoulos Psaltis
                <li><a href="disks" title="{% trans "manage  storage " %}" class="primary" id="disks">
184 0dedf601 Christodoulos Psaltis
                {% trans "disks" %}</a></li>
185 0dedf601 Christodoulos Psaltis
                <li><a href="images" title="{% trans "manage  images" %}" class="primary" id="images">
186 0dedf601 Christodoulos Psaltis
                {% trans "images" %}</a></li>
187 0dedf601 Christodoulos Psaltis
                <li><a href="networks" title="{% trans "configure " %}" class="primary" id="networks">
188 0dedf601 Christodoulos Psaltis
                {% trans "networks" %}</a></li>
189 0dedf601 Christodoulos Psaltis
            <li><a href="files" title="{% trans "your " %}" class="secondary" id="files">
190 0dedf601 Christodoulos Psaltis
                {% trans "files" %}</a></li>
191 0dedf601 Christodoulos Psaltis
                <li><a href="desktops" title="{% trans "your " %}" class="secondary" id="desktops">
192 0dedf601 Christodoulos Psaltis
                {% trans "desktops" %}</a></li>
193 0dedf601 Christodoulos Psaltis
                <li><a href="apps" title="{% trans "your " %}" class="secondary" id="apps">
194 0dedf601 Christodoulos Psaltis
                {% trans "apps" %}</a></li>
195 cc7c5902 Dimitris Moraitis
        </ul>
196 24d0c6a9 Christodoulos Psaltis
        <div class="more-tabs"><img src="static/arrow.png" id="arrow"></img></div>
197 cc7c5902 Dimitris Moraitis
        <div class="css-panes">
198 43df43aa Markos Gogoulos
                <div id="machines-pane" class="pane" style="display:block">{% include "machines.html" %}</div>
199 ec06b07c Dimitris Moraitis
                <div id="disks-pane" class="pane"></div>
200 ec06b07c Dimitris Moraitis
                <div id="images-pane" class="pane"></div>
201 ec06b07c Dimitris Moraitis
                <div id="networks-pane" class="pane"></div>
202 50b398f6 Christodoulos Psaltis
            <div id="files-pane" class="pane"></div>
203 50b398f6 Christodoulos Psaltis
                <div id="desktops-pane" class="pane"></div>
204 50b398f6 Christodoulos Psaltis
                <div id="apps-pane" class="pane"></div>
205 cc7c5902 Dimitris Moraitis
        </div>
206 cc7c5902 Dimitris Moraitis
    </div>
207 cc7c5902 Dimitris Moraitis
    <!-- activate tabs with JavaScript -->
208 cc7c5902 Dimitris Moraitis
    <script>
209 cc7c5902 Dimitris Moraitis
                $(function() {
210 e55b8703 Christodoulos Psaltis
                    $('ul.css-tabs li').hover(function(){
211 fd76a30f Dimitris Moraitis
                            $(this).find('a:not(.current)').animate({top:'0px'},{queue:false,duration:150});
212 e55b8703 Christodoulos Psaltis
            }, function(){
213 195e8f48 Dimitris Moraitis
                $('ul.css-tabs li a:not(.current)').animate({top:'9px'},{queue:false,duration:150});
214 e55b8703 Christodoulos Psaltis
                    });
215 cc7c5902 Dimitris Moraitis
                });
216 c3b3043d Dimitris Moraitis
                
217 cc7c5902 Dimitris Moraitis
        $(function() {
218 cc7c5902 Dimitris Moraitis
                $("ul.css-tabs").tabs("div.css-panes div.pane", {        
219 cc7c5902 Dimitris Moraitis
                        onBeforeClick: function(event, i) {
220 195e8f48 Dimitris Moraitis
                    $('ul.css-tabs li a').animate({top:'9px'},{queue:false,duration:150});
221 cc7c5902 Dimitris Moraitis
                                // get the pane to be opened
222 cc7c5902 Dimitris Moraitis
                                var pane = this.getPanes().eq(i);
223 ec06b07c Dimitris Moraitis
                    pane.text('');
224 cc7c5902 Dimitris Moraitis
                                // load it with a page specified in the tab's href attribute
225 42f67a2a Dimitris Moraitis
                                pane.load(this.getTabs().eq(i).attr("href"),function(){if (!i) {choose_view()}});
226 cc7c5902 Dimitris Moraitis
                        }
227 cc7c5902 Dimitris Moraitis
                });
228 cc7c5902 Dimitris Moraitis
        });
229 d932286d Christodoulos Psaltis

230 37554ef1 Dimitris Moraitis
        // toggle main menu
231 24d0c6a9 Christodoulos Psaltis
        $("#arrow").click(function(event){
232 37554ef1 Dimitris Moraitis
                toggleMenu();
233 42f67a2a Dimitris Moraitis
        });    
234 42f67a2a Dimitris Moraitis
        
235 cc7c5902 Dimitris Moraitis
    </script>
236 cc7c5902 Dimitris Moraitis
</body>
237 cc7c5902 Dimitris Moraitis
</html>