Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ d2f03cb3

History | View | Annotate | Download (19 kB)

1 a5bc3755 Vangelis Koukis
<!--
2 a5bc3755 Vangelis Koukis
Copyright 2011 GRNET S.A. All rights reserved.
3 a5bc3755 Vangelis Koukis

4 a5bc3755 Vangelis Koukis
Redistribution and use in source and binary forms, with or
5 a5bc3755 Vangelis Koukis
without modification, are permitted provided that the following
6 a5bc3755 Vangelis Koukis
conditions are met:
7 a5bc3755 Vangelis Koukis

8 a5bc3755 Vangelis Koukis
  1. Redistributions of source code must retain the above
9 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
10 a5bc3755 Vangelis Koukis
     disclaimer.
11 a5bc3755 Vangelis Koukis

12 a5bc3755 Vangelis Koukis
  2. Redistributions in binary form must reproduce the above
13 a5bc3755 Vangelis Koukis
     copyright notice, this list of conditions and the following
14 a5bc3755 Vangelis Koukis
     disclaimer in the documentation and/or other materials
15 a5bc3755 Vangelis Koukis
     provided with the distribution.
16 a5bc3755 Vangelis Koukis

17 a5bc3755 Vangelis Koukis
THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 a5bc3755 Vangelis Koukis
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 a5bc3755 Vangelis Koukis
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 a5bc3755 Vangelis Koukis
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 a5bc3755 Vangelis Koukis
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 a5bc3755 Vangelis Koukis
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 a5bc3755 Vangelis Koukis
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 a5bc3755 Vangelis Koukis
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 a5bc3755 Vangelis Koukis
AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 a5bc3755 Vangelis Koukis
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 a5bc3755 Vangelis Koukis
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 a5bc3755 Vangelis Koukis
POSSIBILITY OF SUCH DAMAGE.
29 a5bc3755 Vangelis Koukis

30 a5bc3755 Vangelis Koukis
The views and conclusions contained in the software and
31 a5bc3755 Vangelis Koukis
documentation are those of the authors and should not be
32 a5bc3755 Vangelis Koukis
interpreted as representing official policies, either expressed
33 a5bc3755 Vangelis Koukis
or implied, of GRNET S.A.
34 a5bc3755 Vangelis Koukis
-->
35 a5bc3755 Vangelis Koukis
36 4ea5cc44 Mike Muzurakis
<html>
37 4ea5cc44 Mike Muzurakis
38 d7f0ad6e provetza
{% load i18n %}
39 cc7c5902 Dimitris Moraitis
<!DOCTYPE html>
40 cc7c5902 Dimitris Moraitis
<head>
41 f533f224 Vangelis Koukis
    <title>{{ project }}</title>
42 f533f224 Vangelis Koukis
    <!-- include the Tools -->
43 146b6003 Dimitris Moraitis
    <!-- jquery tools minified for deployment-->
44 01864f44 Dimitris Moraitis
    <script src="static/jquery.tools.min.js"></script>
45 f533f224 Vangelis Koukis
    <!-- jquery tools source for JS debugging -->
46 01864f44 Dimitris Moraitis
    <!--
47 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/jquery-1.4.2.js"></script>
48 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/tabs/tabs.js"></script>
49 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/scrollable/scrollable.js"></script>
50 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/overlay/overlay.js"></script>
51 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/rangeinput/rangeinput.js"></script>
52 f533f224 Vangelis Koukis
    <script src="http://flowplayer.org/tools/download/1.2.5/toolbox/toolbox.expose.js"></script>
53 01864f44 Dimitris Moraitis
    -->
54 fb66080c Dimitris Moraitis
    <script src="static/jquery.cookie.js"></script>
55 d2f03cb3 Mike Muzurakis
    <script src="static/json2.js"></script>
56 a4531705 Christodoulos Psaltis
    <script src="static/jquery.dataTables.min.js"></script>
57 7b7e768e Christodoulos Psaltis
    <script src="static/synnefo.js"></script>
58 f533f224 Vangelis Koukis
    <link rel="stylesheet" type="text/css" href="static/main.css"/>
59 42f67a2a Dimitris Moraitis
    <script>
60 f533f224 Vangelis Koukis
        //populate available image icons array
61 f533f224 Vangelis Koukis
        var os_icons = {{image_icons|safe}};
62 f533f224 Vangelis Koukis

63 eae0a59a Dimitris Moraitis
        // timeout value from settings.py
64 d36493ce Dimitris Moraitis
        var TIMEOUT = {{timeout}};
65 7b03c69d Dimitris Moraitis
        var UPDATE_INTERVAL = {{update_interval}};
66 f533f224 Vangelis Koukis
        var STATUSES = {
67 f533f224 Vangelis Koukis
            'UNKNOWN'   : '{% trans "Unknown" %}',
68 eae0a59a Dimitris Moraitis
            'BUILD'     : '{% trans "Building" %}',
69 f533f224 Vangelis Koukis
            'REBOOT'    : '{% trans "Rebooting" %}',
70 eae0a59a Dimitris Moraitis
            'STOPPED'   : '{% trans "Stopped" %}',
71 f533f224 Vangelis Koukis
            'ACTIVE'    : '{% trans "Running" %}',
72 f533f224 Vangelis Koukis
            'ERROR'     : '{% trans "Error" %}'
73 f533f224 Vangelis Koukis
        };
74 f533f224 Vangelis Koukis

75 f533f224 Vangelis Koukis
        var TRANSITIONS = {
76 f533f224 Vangelis Koukis
            'Shutting down' : '{% trans "Shutting down" %}',
77 f533f224 Vangelis Koukis
            'Rebooting'     : '{% trans "Rebooting" %}',
78 f533f224 Vangelis Koukis
            'Starting'      : '{% trans "Starting" %}',
79 f533f224 Vangelis Koukis
            'Destroying'    : '{% trans "Destroying" %}'
80 eae0a59a Dimitris Moraitis
        };
81 f533f224 Vangelis Koukis

82 f533f224 Vangelis Koukis
        // Statuses and transitions that should be displayed as active or inactive
83 f533f224 Vangelis Koukis
        var ACTIVE_STATES = [
84 f533f224 Vangelis Koukis
            '{% trans "Building" %}',
85 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
86 f533f224 Vangelis Koukis
            '{% trans "Running" %}',
87 f533f224 Vangelis Koukis
            '{% trans "Shutting down" %}',
88 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
89 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
90 f533f224 Vangelis Koukis
        ];
91 f533f224 Vangelis Koukis

92 f533f224 Vangelis Koukis
        var INACTIVE_STATES = [
93 f533f224 Vangelis Koukis
            '{% trans "Unknown" %}',
94 f533f224 Vangelis Koukis
            '{% trans "Stopped" %}',
95 f533f224 Vangelis Koukis
            '{% trans "Error" %}',
96 f533f224 Vangelis Koukis
            '{% trans "Starting" %}',
97 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
98 f533f224 Vangelis Koukis
        ];
99 f533f224 Vangelis Koukis

100 eae0a59a Dimitris Moraitis
        var ERRORS = {
101 eae0a59a Dimitris Moraitis
            // error message header
102 f533f224 Vangelis Koukis
            'HEADER' : '{% trans "Error" %}',
103 eae0a59a Dimitris Moraitis
            // default
104 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Could not contact the service. Please check your network connectivity and try again." %}',
105 eae0a59a Dimitris Moraitis
            // bad request
106 eae0a59a Dimitris Moraitis
            '400' : '{% trans "Malformed request." %}',
107 eae0a59a Dimitris Moraitis
            // not found
108 eae0a59a Dimitris Moraitis
            '404' : '{% trans "Your request has failed. Resource not found." %}',
109 eae0a59a Dimitris Moraitis
            // internal server error
110 ccd40764 Markos Gogoulos
            '500' : '{% trans "There has been an Internal Error. Our administrators have been notified." %}',
111 ccd40764 Markos Gogoulos
            // service unavailable
112 ccd40764 Markos Gogoulos
            '501' : '{% trans "This server has not been implemented yet." %}',
113 eae0a59a Dimitris Moraitis
            // service unavailable
114 f533f224 Vangelis Koukis
            '502' : '{% trans "Bad Gateway error." %}',
115 f533f224 Vangelis Koukis
            // service unavailable
116 a5093da5 Markos Gogoulos
            '503' : '{% trans "This service is unavailable right now, please try again later." %}',
117 80a8f602 Christodoulos Psaltis
            // no server handshake
118 80a8f602 Christodoulos Psaltis
            '0' : '{% trans "Could not contact the server." %}',
119 e2ccad35 Dimitris Moraitis
            // no images found
120 146b6003 Dimitris Moraitis
            'NO_IMAGES' : '{% trans "Cannot show the Create machine wizard: No images found." %}',
121 e2ccad35 Dimitris Moraitis
            // no flavors found
122 f533f224 Vangelis Koukis
            'NO_FLAVORS' : '{% trans "Cannot show the Create machine wizard: No machine configurations found." %}',
123 f533f224 Vangelis Koukis
            // error box title
124 f533f224 Vangelis Koukis
            'GENERIC_POPUP_HEADER' : '{% trans "Something seems to have gone wrong :( Here is what happened:" %}',
125 f533f224 Vangelis Koukis
            // no advanced details
126 f533f224 Vangelis Koukis
            'NO_DETAILS' : '{% trans "Νο advanced details provided" %}'
127 eae0a59a Dimitris Moraitis
        };
128 f533f224 Vangelis Koukis

129 eae0a59a Dimitris Moraitis
        var SUCCESS = {
130 f533f224 Vangelis Koukis
            'HEADER' : '{% trans "Success" %}',
131 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Your request has been succefully executed." %}',
132 f533f224 Vangelis Koukis
            'PASSWORD' : '{% trans "Password:" %}',
133 aa0801aa Markos Gogoulos
            'CREATE_VM_SUCCESS' : '{% trans "Success" %}',
134 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_ONE' : '{% trans "Your new machine is now buidling... (this might take a few minutes)" %}',
135 def71253 Markos Gogoulos
            'CREATE_VM_SUCCESS_TWO' : '{% trans "Write down your password now:" %}',
136 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_THREE' : '{% trans "You will need this later to connect to your machine." %}',
137 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_FOUR' : '{% trans "After closing this window you will NOT be able to retrieve it again." %}'
138 eae0a59a Dimitris Moraitis
        };
139 f533f224 Vangelis Koukis

140 b495fe50 Mike Muzurakis
        var VARIOUS = {
141 b495fe50 Mike Muzurakis
            'CONFIRM' : '{% trans "Confirm" %}',
142 b495fe50 Mike Muzurakis
            'CANCEL' : '{% trans "Cancel" %}'
143 b495fe50 Mike Muzurakis
        };
144 b495fe50 Mike Muzurakis

145 f533f224 Vangelis Koukis
        // ajax error checking
146 038383b1 Dimitris Moraitis
        function ajax_error(status, serverID, action, responseText) {
147 def71253 Markos Gogoulos
            $('#error-success').addClass('error');
148 def71253 Markos Gogoulos
            $('#error-success').removeClass('success');
149 def71253 Markos Gogoulos

150 038383b1 Dimitris Moraitis
            var serverName = '';
151 f533f224 Vangelis Koukis

152 4ea5cc44 Mike Muzurakis
            if (serverID !== undefined) {
153 a8e592c7 Dimitris Moraitis
                // standard view
154 4ea5cc44 Mike Muzurakis
                serverName = $("#" + serverID).find("span.name").text();
155 4ea5cc44 Mike Muzurakis
                if (serverName === "") { // list view
156 4ea5cc44 Mike Muzurakis
                    serverName = $("#" + serverID).parent().parent().find("span.name").text();
157 a8e592c7 Dimitris Moraitis
                }
158 038383b1 Dimitris Moraitis
            }
159 f533f224 Vangelis Koukis

160 42f67a2a Dimitris Moraitis
            // prepare the error message
161 146b6003 Dimitris Moraitis
            $("#error-success h3").text(ERRORS['HEADER']);
162 4ea5cc44 Mike Muzurakis
            if (responseText !== undefined) {
163 f533f224 Vangelis Koukis
                var errors = parse_error(responseText, status), details = '';
164 4ea5cc44 Mike Muzurakis
                if (serverName) {
165 4ea5cc44 Mike Muzurakis
                    serverName = "<p>{% trans "Server" %}: " + serverName + "</p>";
166 038383b1 Dimitris Moraitis
                }
167 4ea5cc44 Mike Muzurakis
                if ((errors[0].details === undefined) || (errors[0].details === "")) {
168 f533f224 Vangelis Koukis
                    details = ERRORS["NO_DETAILS"];
169 f533f224 Vangelis Koukis
                } else {
170 f533f224 Vangelis Koukis
                    details = errors[0].details;
171 a8e592c7 Dimitris Moraitis
                }
172 f533f224 Vangelis Koukis

173 f533f224 Vangelis Koukis
                $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
174 f533f224 Vangelis Koukis
                $("#error-success .popup-header").addClass("popup-header-error");
175 f533f224 Vangelis Koukis
                $("#error-success").addClass("popup-border-error");
176 f533f224 Vangelis Koukis
                $("#error-success .password-container").hide();
177 f533f224 Vangelis Koukis
                $("#error-success .popup-details").addClass("popup-details-error");
178 f533f224 Vangelis Koukis
                $("#error-success .popup-separator").addClass("popup-separator-error");
179 4ea5cc44 Mike Muzurakis
                $("#error-success .popup-details").html("<p>" + (errors[0].message || ERRORS[errors[0].code]) + "</p>" + serverName + "<p>{% trans "Action" %}: " + action + "</p><p>{% trans "Code" %}: " + errors[0].code + "<p><a class='expand-details' href='#'>{% trans 'Details' %}</a><div class='more-details'>" + details + "</div></p>");
180 4ea5cc44 Mike Muzurakis
            } else if (ERRORS[status] !== undefined) {
181 4ea5cc44 Mike Muzurakis
                if (serverID === undefined) {
182 7020cb54 Markos Gogoulos
                    //eg no_images, no_flavors cases
183 7020cb54 Markos Gogoulos
                    $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
184 7020cb54 Markos Gogoulos
                    $("#error-success .popup-header").addClass("popup-header-error");
185 7020cb54 Markos Gogoulos
                    $("#error-success").addClass("popup-border-error");
186 7020cb54 Markos Gogoulos
                    $("#error-success .password-container").hide();
187 7020cb54 Markos Gogoulos
                    $("#error-success .popup-details").addClass("popup-details-error");
188 7020cb54 Markos Gogoulos
                    $("#error-success .popup-separator").addClass("popup-separator-error");
189 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("<p>" + ERRORS[status] + "</p>");
190 e1a023a6 Markos Gogoulos
                } else {
191 1532343a Markos Gogoulos
                    $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
192 1532343a Markos Gogoulos
                    $("#error-success .popup-header").addClass("popup-header-error");
193 1532343a Markos Gogoulos
                    $("#error-success").addClass("popup-border-error");
194 1532343a Markos Gogoulos
                    $("#error-success .password-container").hide();
195 1532343a Markos Gogoulos
                    $("#error-success .popup-details").addClass("popup-details-error");
196 1532343a Markos Gogoulos
                    $("#error-success .popup-separator").addClass("popup-separator-error");
197 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("<p>" + ERRORS[status] + "</p><p>" + serverName + "</p>");
198 e1a023a6 Markos Gogoulos
                }
199 eae0a59a Dimitris Moraitis
            } else {
200 266597ae Markos Gogoulos
                $("#error-success .machine-now-building").html(ERRORS["DEFAULT"]);
201 4ea5cc44 Mike Muzurakis
                $("#error-success .popup-header").addClass("popup-header-error");
202 4ea5cc44 Mike Muzurakis
                $("#error-success").addClass("popup-border-error");
203 4ea5cc44 Mike Muzurakis
                $("#error-success .password-container").hide();
204 266597ae Markos Gogoulos
                $("#error-success .popup-details").hide();
205 266597ae Markos Gogoulos
                $("#error-success .popup-separator").hide();
206 f533f224 Vangelis Koukis
            }
207 4ea5cc44 Mike Muzurakis
            $("#error-success p:first").css("padding-bottom", "10px");
208 4ea5cc44 Mike Muzurakis
            $("#error-success p:first").css("color", "#800000");
209 f533f224 Vangelis Koukis
            $("#error-success div.more-details").hide();
210 4ea5cc44 Mike Muzurakis
            $("#error-success a.expand-details").live('click', function () {
211 f533f224 Vangelis Koukis
                $(this).parent().parent().find("div.more-details").slideToggle(600);
212 f533f224 Vangelis Koukis
                return false;
213 4ea5cc44 Mike Muzurakis
            });
214 f533f224 Vangelis Koukis
            //stop the progress icon and hide the wizard
215 4ea5cc44 Mike Muzurakis
            if (action !== undefined) {
216 4ea5cc44 Mike Muzurakis
                if (action === 'Create VM') {
217 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
218 f533f224 Vangelis Koukis
                    $("#wizard").hide();
219 4ea5cc44 Mike Muzurakis
                } else if (action === 'Create network') {
220 f533f224 Vangelis Koukis
                    $('#networks-wizard').hide();
221 4ea5cc44 Mike Muzurakis
                } else if (action === 'Add server to network') {
222 f533f224 Vangelis Koukis
                    $('#add-machines-wizard').hide();
223 f533f224 Vangelis Koukis
                }
224 eae0a59a Dimitris Moraitis
            }
225 f533f224 Vangelis Koukis

226 42f67a2a Dimitris Moraitis
            // bring up error notification
227 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
228 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
229 42f67a2a Dimitris Moraitis
                mask: {
230 42f67a2a Dimitris Moraitis
                    color: '#ebecff',
231 42f67a2a Dimitris Moraitis
                    opacity: '0.9'
232 42f67a2a Dimitris Moraitis
                },
233 42f67a2a Dimitris Moraitis
                top: 'center',
234 42f67a2a Dimitris Moraitis
                closeOnClick: false,
235 42f67a2a Dimitris Moraitis
                oneInstance: false,
236 42f67a2a Dimitris Moraitis
                load: false,
237 4ea5cc44 Mike Muzurakis
                onClose: function () {
238 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
239 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
240 e5b0ba20 Vangelis Koukis
                    // choose_view();
241 42f67a2a Dimitris Moraitis
                }
242 42f67a2a Dimitris Moraitis
            });
243 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
244 42f67a2a Dimitris Moraitis
            return false;
245 42f67a2a Dimitris Moraitis
        }
246 f533f224 Vangelis Koukis

247 42f67a2a Dimitris Moraitis
        // ajax success checking
248 146b6003 Dimitris Moraitis
        function ajax_success(status, password) {
249 42f67a2a Dimitris Moraitis
            // prepare the error message
250 42f67a2a Dimitris Moraitis
            // bring up success notification
251 def71253 Markos Gogoulos
            $('#error-success').addClass('success');
252 def71253 Markos Gogoulos
            $('#error-success').removeClass('error');
253 4ea5cc44 Mike Muzurakis
            if (status !== undefined && SUCCESS[status]) {
254 4ea5cc44 Mike Muzurakis
                if (password !== undefined && status === "CREATE_VM_SUCCESS") {
255 f533f224 Vangelis Koukis

256 f533f224 Vangelis Koukis
                    //stop the progress icon and hide the wizard
257 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
258 f533f224 Vangelis Koukis
                    $("#wizard").hide();
259 f533f224 Vangelis Koukis

260 97b6ee61 Markos Gogoulos
                    $("#error-success h3 span.header-box").text(SUCCESS[status]);
261 f533f224 Vangelis Koukis
                    var CREATE_VM_SUCCESS_MSG = SUCCESS["CREATE_VM_SUCCESS_THREE"] + '<br / >'
262 f533f224 Vangelis Koukis
                        + SUCCESS["CREATE_VM_SUCCESS_FOUR"];
263 f533f224 Vangelis Koukis
                    $("#error-success div.machine-now-building").html(SUCCESS["CREATE_VM_SUCCESS_ONE"]);
264 f533f224 Vangelis Koukis
                    $("#error-success .popup-header").removeClass("popup-header-error");
265 f533f224 Vangelis Koukis
                    $("#error-success").removeClass("popup-border-error");
266 f533f224 Vangelis Koukis
                    $("#error-success .popup-details").removeClass("popup-details-error");
267 f533f224 Vangelis Koukis
                    $("#error-success .popup-separator").removeClass("popup-separator-error");
268 f533f224 Vangelis Koukis
                    $("#error-success .password-container").show();
269 def71253 Markos Gogoulos

270 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("</div><div class=\"write-password-details\">" + CREATE_VM_SUCCESS_MSG + "</div>");
271 4ea5cc44 Mike Muzurakis
                    $("#error-success div.password").html("<div class=\"write-password\">" + SUCCESS["CREATE_VM_SUCCESS_TWO"] + "<div class=\"write-password-password\">" + password + "</div></div>");
272 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password").html(SUCCESS["CREATE_VM_SUCCESS_TWO"]);
273 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password-details").html(CREATE_VM_SUCCESS_MSG);
274 8550e831 Markos Gogoulos
                } else {
275 8550e831 Markos Gogoulos
                    $("#error-success h3").text(SUCCESS['HEADER']);
276 f533f224 Vangelis Koukis
                    $("#error-success div.popup-body-inner").text("<p>" + SUCCESS[status] + "</p>");
277 8550e831 Markos Gogoulos
                }
278 8550e831 Markos Gogoulos
            } else {
279 8550e831 Markos Gogoulos
                $("#error-success h3").text(SUCCESS['HEADER']);
280 f533f224 Vangelis Koukis
                $("#error-success div.popup-body-inner").html("<p>" + SUCCESS['DEFAULT'] + "</p>");
281 8550e831 Markos Gogoulos
            }
282 8550e831 Markos Gogoulos

283 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
284 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
285 42f67a2a Dimitris Moraitis
                mask: {
286 42f67a2a Dimitris Moraitis
                    color: '#ebecff',
287 42f67a2a Dimitris Moraitis
                    opacity: '0.9'
288 42f67a2a Dimitris Moraitis
                },
289 42f67a2a Dimitris Moraitis
                top: 'center',
290 42f67a2a Dimitris Moraitis
                closeOnClick: false,
291 42f67a2a Dimitris Moraitis
                oneInstance: false,
292 42f67a2a Dimitris Moraitis
                load: false,
293 4ea5cc44 Mike Muzurakis
                onClose: function () {
294 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
295 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
296 e5b0ba20 Vangelis Koukis
                    // choose_view();
297 42f67a2a Dimitris Moraitis
                }
298 42f67a2a Dimitris Moraitis
            });
299 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
300 42f67a2a Dimitris Moraitis
            return false;
301 42f67a2a Dimitris Moraitis
        }
302 42f67a2a Dimitris Moraitis
    </script>
303 cc7c5902 Dimitris Moraitis
</head>
304 cc7c5902 Dimitris Moraitis
<body>
305 f533f224 Vangelis Koukis
    <div id="container">
306 3b363b8e Christodoulos Psaltis
        <div id='header'>
307 f533f224 Vangelis Koukis
            <div id='user'>
308 f533f224 Vangelis Koukis
                <a href="#">{% trans "username" %}</a>
309 f533f224 Vangelis Koukis
                {% get_available_languages as LANGUAGES %}
310 f533f224 Vangelis Koukis
                {% for lang in LANGUAGES %}
311 f533f224 Vangelis Koukis
                    &nbsp;|&nbsp;
312 f533f224 Vangelis Koukis
                    <a {% if  == lang.0 %}class="current_lang" {% else %}  href="/lang/?l={{lang.0}}" {% endif %}>{{lang.0}}</a>
313 f533f224 Vangelis Koukis
                {% endfor %}
314 f533f224 Vangelis Koukis
            </div>
315 f533f224 Vangelis Koukis
            <div class="header-logo">
316 f533f224 Vangelis Koukis
                <a href="/">
317 f533f224 Vangelis Koukis
                    <img src="static/okeanos.png" alt="okeanos"/>
318 f533f224 Vangelis Koukis
                </a>
319 f533f224 Vangelis Koukis
            </div>
320 cc7c5902 Dimitris Moraitis
        </div>
321 f533f224 Vangelis Koukis
        <div id="content">
322 f533f224 Vangelis Koukis
            <div id="wrapper">
323 f533f224 Vangelis Koukis
                <!-- tabs -->
324 f533f224 Vangelis Koukis
                <div class="tab-name">{% trans "machines" %}</div>
325 f533f224 Vangelis Koukis
                <div class="tab-separator"></div>
326 f533f224 Vangelis Koukis
                <ul class="css-tabs">
327 f533f224 Vangelis Koukis
                    <li><a href="machines" title="{% trans "manage  virtual " %}" class="primary" id="machines">
328 f533f224 Vangelis Koukis
                        <img src="static/machines-icon.png" /></a></li><div class="tab-separator"></div>
329 f533f224 Vangelis Koukis
                    <li><a href="networks" title="{% trans "configure " %}" class="primary" id="networks">
330 f533f224 Vangelis Koukis
                        <img src="static/networks-icon.png" /></a></li><div class="tab-separator"></div>
331 f533f224 Vangelis Koukis
                    <li><a href="disks" title="{% trans "manage  storage " %}" class="primary" id="disks">
332 f533f224 Vangelis Koukis
                        <img src="static/disks-icon.png" /></a></li>
333 f533f224 Vangelis Koukis
                </ul>
334 f533f224 Vangelis Koukis
                <div class="css-panes">
335 e4f32f27 Mike Muzurakis
                    <div id="machines-pane" class="pane" style="display:block;"></div>
336 e4f32f27 Mike Muzurakis
                    <div id="networks-pane" class="pane"></div>
337 f533f224 Vangelis Koukis
                    <div id="disks-pane" class="pane"></div>
338 f533f224 Vangelis Koukis
                </div>
339 f533f224 Vangelis Koukis
            </div>
340 cc7c5902 Dimitris Moraitis
        </div>
341 f533f224 Vangelis Koukis
        {% include "footer.html" %}
342 cc7c5902 Dimitris Moraitis
    </div>
343 f533f224 Vangelis Koukis
344 cc7c5902 Dimitris Moraitis
    <!-- activate tabs with JavaScript -->
345 cc7c5902 Dimitris Moraitis
    <script>
346 f533f224 Vangelis Koukis

347 cc7c5902 Dimitris Moraitis
        $(function() {
348 87a29449 Dimitris Moraitis
            // check pane cookie to select the initial pane
349 87a29449 Dimitris Moraitis
            var initial = 0, pane = $.cookie("pane");
350 87a29449 Dimitris Moraitis
            if (pane > 0)
351 87a29449 Dimitris Moraitis
                initial = pane;
352 87a29449 Dimitris Moraitis
            //alert(initial);
353 f533f224 Vangelis Koukis
            $("ul.css-tabs").tabs("div.css-panes div.pane", {
354 87a29449 Dimitris Moraitis
                initialIndex: initial,
355 f533f224 Vangelis Koukis
                onBeforeClick: function(event, i) {
356 f533f224 Vangelis Koukis
                    // get the pane to be opened
357 f533f224 Vangelis Koukis
                    var pane = this.getPanes().eq(i);
358 f533f224 Vangelis Koukis
                    //change the displaying title
359 f533f224 Vangelis Koukis
                    $(".tab-name").text(this.getTabs().eq(i).attr("href"));
360 f533f224 Vangelis Koukis
                    // load it with a page specified in the tab's href attribute
361 4ea5cc44 Mike Muzurakis
                    pane.load(this.getTabs().eq(i).attr("href"),function() {if (!i) {choose_view()}});
362 f533f224 Vangelis Koukis
                }
363 f533f224 Vangelis Koukis
            });
364 cc7c5902 Dimitris Moraitis
        });
365 87a29449 Dimitris Moraitis
        
366 87a29449 Dimitris Moraitis
        // set pane cookie whenever the user clicks on a different pane
367 4ea5cc44 Mike Muzurakis
        $("ul.css-tabs a").click(function(i) {
368 87a29449 Dimitris Moraitis
            $.cookie("pane", $("ul.css-tabs a").index(this));
369 87a29449 Dimitris Moraitis
        });
370 87a29449 Dimitris Moraitis
        
371 f533f224 Vangelis Koukis
        //change menu title on hover
372 f533f224 Vangelis Koukis
        $("ul.css-tabs li").hover(
373 f533f224 Vangelis Koukis
            function () {
374 f533f224 Vangelis Koukis
                if ($(this).find("a.current").length == 0) {
375 f533f224 Vangelis Koukis
                    $(this).parent().parent().find(".tab-name").text($(this).find("a").attr("href"));
376 f533f224 Vangelis Koukis
                }
377 f533f224 Vangelis Koukis
            },
378 f533f224 Vangelis Koukis
            function () {
379 f533f224 Vangelis Koukis
                $(this).parent().parent().find(".tab-name").text($(this).parent().find("a.current").attr("href"));
380 f533f224 Vangelis Koukis
            }
381 f533f224 Vangelis Koukis
        );
382 87a29449 Dimitris Moraitis
        
383 cc7c5902 Dimitris Moraitis
    </script>
384 b495fe50 Mike Muzurakis
    <!-- base notification for error/success reporting -->
385 b495fe50 Mike Muzurakis
    <a id="notification" rel="#error-success" href="#"></a>
386 b495fe50 Mike Muzurakis
387 b495fe50 Mike Muzurakis
    <div class="modal" id="error-success">
388 b495fe50 Mike Muzurakis
        <h3 class="popup-header">
389 b495fe50 Mike Muzurakis
            <span class="header-box"></span>
390 b495fe50 Mike Muzurakis
        </h3>
391 b495fe50 Mike Muzurakis
        <div class="popup-body">
392 b495fe50 Mike Muzurakis
            <div class="popup-body-inner">
393 b495fe50 Mike Muzurakis
                <div class="machine-now-building"></div>
394 b495fe50 Mike Muzurakis
                <div class="popup-separator"></div>
395 b495fe50 Mike Muzurakis
                <div class="password-container">
396 b495fe50 Mike Muzurakis
                    <div class="password-header"></div>
397 b495fe50 Mike Muzurakis
                    <div class="password"></div>
398 b495fe50 Mike Muzurakis
                </div>
399 b495fe50 Mike Muzurakis
                <div class="popup-details">
400 b495fe50 Mike Muzurakis
                    <div class="write-password"></div>
401 b495fe50 Mike Muzurakis
                    <div class="write-password-details">{% trans "More details about the result"%}</div>
402 b495fe50 Mike Muzurakis
                </div>
403 b495fe50 Mike Muzurakis
            </div>
404 b495fe50 Mike Muzurakis
        </div>
405 b495fe50 Mike Muzurakis
    </div>
406 cc7c5902 Dimitris Moraitis
</body>
407 cc7c5902 Dimitris Moraitis
</html>