Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ 8e5122dd

History | View | Annotate | Download (21.4 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 a226ff9f Christodoulos Psaltis
    <title>~okeanos</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 a226ff9f Christodoulos Psaltis
    <!--[if IE]><style type="text/css" media="all">@import url(static/ie.css);</style><![endif]-->
60 42f67a2a Dimitris Moraitis
    <script>
61 f533f224 Vangelis Koukis
        //populate available image icons array
62 f533f224 Vangelis Koukis
        var os_icons = {{image_icons|safe}};
63 f533f224 Vangelis Koukis

64 eae0a59a Dimitris Moraitis
        // timeout value from settings.py
65 d36493ce Dimitris Moraitis
        var TIMEOUT = {{timeout}};
66 7b03c69d Dimitris Moraitis
        var UPDATE_INTERVAL = {{update_interval}};
67 8e5122dd Kostas Papadimitriou
        var LOGOUT_REDIRECT = undefined;
68 3df307d7 Christodoulos Psaltis

69 3df307d7 Christodoulos Psaltis
        // server statuses and transitions
70 f533f224 Vangelis Koukis
        var STATUSES = {
71 f533f224 Vangelis Koukis
            'UNKNOWN'   : '{% trans "Unknown" %}',
72 eae0a59a Dimitris Moraitis
            'BUILD'     : '{% trans "Building" %}',
73 f533f224 Vangelis Koukis
            'REBOOT'    : '{% trans "Rebooting" %}',
74 eae0a59a Dimitris Moraitis
            'STOPPED'   : '{% trans "Stopped" %}',
75 f533f224 Vangelis Koukis
            'ACTIVE'    : '{% trans "Running" %}',
76 f533f224 Vangelis Koukis
            'ERROR'     : '{% trans "Error" %}'
77 f533f224 Vangelis Koukis
        };
78 f533f224 Vangelis Koukis

79 f533f224 Vangelis Koukis
        var TRANSITIONS = {
80 f533f224 Vangelis Koukis
            'Shutting down' : '{% trans "Shutting down" %}',
81 f533f224 Vangelis Koukis
            'Rebooting'     : '{% trans "Rebooting" %}',
82 f533f224 Vangelis Koukis
            'Starting'      : '{% trans "Starting" %}',
83 3df307d7 Christodoulos Psaltis
            'Destroying'    : '{% trans "Destroying" %}',
84 f459a610 Christodoulos Psaltis
            'Connecting'    : '{% trans "Connecting" %}',   // used only in networks
85 f459a610 Christodoulos Psaltis
            'Disconnecting' : '{% trans "Disconnecting" %}' // used only in networks
86 eae0a59a Dimitris Moraitis
        };
87 f533f224 Vangelis Koukis

88 3df307d7 Christodoulos Psaltis
        // Server statuses and transitions that should be displayed as active or inactive
89 f533f224 Vangelis Koukis
        var ACTIVE_STATES = [
90 f533f224 Vangelis Koukis
            '{% trans "Building" %}',
91 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
92 f533f224 Vangelis Koukis
            '{% trans "Running" %}',
93 f533f224 Vangelis Koukis
            '{% trans "Shutting down" %}',
94 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
95 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
96 f533f224 Vangelis Koukis
        ];
97 f533f224 Vangelis Koukis

98 f533f224 Vangelis Koukis
        var INACTIVE_STATES = [
99 f533f224 Vangelis Koukis
            '{% trans "Unknown" %}',
100 f533f224 Vangelis Koukis
            '{% trans "Stopped" %}',
101 f533f224 Vangelis Koukis
            '{% trans "Error" %}',
102 f533f224 Vangelis Koukis
            '{% trans "Starting" %}',
103 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
104 f533f224 Vangelis Koukis
        ];
105 f533f224 Vangelis Koukis

106 3df307d7 Christodoulos Psaltis
        // Network statuses and transitions
107 3df307d7 Christodoulos Psaltis
        var NET_STATES = {
108 3ad6f576 Christodoulos Psaltis
            'ACTIVE'        : '{% trans "Private network" %}',  // this comes from the API
109 3ad6f576 Christodoulos Psaltis
            'DELETED'       : '{% trans "Deleted" %}',          // this comes from the API
110 3df307d7 Christodoulos Psaltis
            'Destroying'    : '{% trans "Destroying" %}',
111 3df307d7 Christodoulos Psaltis
            'Connecting'    : '{% trans "Connecting" %}',
112 3df307d7 Christodoulos Psaltis
            'Disconnecting' : '{% trans "Disconnecting" %}'
113 3df307d7 Christodoulos Psaltis
        };
114 3df307d7 Christodoulos Psaltis

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

144 eae0a59a Dimitris Moraitis
        var SUCCESS = {
145 f533f224 Vangelis Koukis
            'HEADER' : '{% trans "Success" %}',
146 146b6003 Dimitris Moraitis
            'DEFAULT' : '{% trans "Your request has been succefully executed." %}',
147 f533f224 Vangelis Koukis
            'PASSWORD' : '{% trans "Password:" %}',
148 aa0801aa Markos Gogoulos
            'CREATE_VM_SUCCESS' : '{% trans "Success" %}',
149 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_ONE' : '{% trans "Your new machine is now buidling... (this might take a few minutes)" %}',
150 def71253 Markos Gogoulos
            'CREATE_VM_SUCCESS_TWO' : '{% trans "Write down your password now:" %}',
151 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_THREE' : '{% trans "You will need this later to connect to your machine." %}',
152 f533f224 Vangelis Koukis
            'CREATE_VM_SUCCESS_FOUR' : '{% trans "After closing this window you will NOT be able to retrieve it again." %}'
153 eae0a59a Dimitris Moraitis
        };
154 f533f224 Vangelis Koukis

155 b495fe50 Mike Muzurakis
        var VARIOUS = {
156 b495fe50 Mike Muzurakis
            'CONFIRM' : '{% trans "Confirm" %}',
157 372f6c81 Mike Muzurakis
            'CANCEL' : '{% trans "Cancel" %}',
158 d6872a51 Christodoulos Psaltis
            'APPLY' : '{% trans "Apply" %}',
159 d6872a51 Christodoulos Psaltis
            'OFF' : '{% trans "Off" %}',
160 d6872a51 Christodoulos Psaltis
            'ON' : '{% trans "On" %}'
161 b495fe50 Mike Muzurakis
        };
162 b495fe50 Mike Muzurakis

163 f533f224 Vangelis Koukis
        // ajax error checking
164 038383b1 Dimitris Moraitis
        function ajax_error(status, serverID, action, responseText) {
165 716c3ead Dimitris Moraitis
             // close existing overlays to begin with
166 a226ff9f Christodoulos Psaltis
            close_all_overlays();
167 716c3ead Dimitris Moraitis
            // clear old deferred calls (stops all auto-updates)
168 716c3ead Dimitris Moraitis
            clearTimeout(deferred);
169 a226ff9f Christodoulos Psaltis

170 def71253 Markos Gogoulos
            $('#error-success').addClass('error');
171 def71253 Markos Gogoulos
            $('#error-success').removeClass('success');
172 a226ff9f Christodoulos Psaltis

173 038383b1 Dimitris Moraitis
            var serverName = '';
174 f533f224 Vangelis Koukis

175 4ea5cc44 Mike Muzurakis
            if (serverID !== undefined) {
176 a8e592c7 Dimitris Moraitis
                // standard view
177 4ea5cc44 Mike Muzurakis
                serverName = $("#" + serverID).find("span.name").text();
178 4ea5cc44 Mike Muzurakis
                if (serverName === "") { // list view
179 4ea5cc44 Mike Muzurakis
                    serverName = $("#" + serverID).parent().parent().find("span.name").text();
180 a8e592c7 Dimitris Moraitis
                }
181 038383b1 Dimitris Moraitis
            }
182 f533f224 Vangelis Koukis

183 42f67a2a Dimitris Moraitis
            // prepare the error message
184 146b6003 Dimitris Moraitis
            $("#error-success h3").text(ERRORS['HEADER']);
185 4ea5cc44 Mike Muzurakis
            if (responseText !== undefined) {
186 f533f224 Vangelis Koukis
                var errors = parse_error(responseText, status), details = '';
187 4ea5cc44 Mike Muzurakis
                if (serverName) {
188 4ea5cc44 Mike Muzurakis
                    serverName = "<p>{% trans "Server" %}: " + serverName + "</p>";
189 038383b1 Dimitris Moraitis
                }
190 4ea5cc44 Mike Muzurakis
                if ((errors[0].details === undefined) || (errors[0].details === "")) {
191 f533f224 Vangelis Koukis
                    details = ERRORS["NO_DETAILS"];
192 f533f224 Vangelis Koukis
                } else {
193 f533f224 Vangelis Koukis
                    details = errors[0].details;
194 a8e592c7 Dimitris Moraitis
                }
195 f533f224 Vangelis Koukis

196 f533f224 Vangelis Koukis
                $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
197 f533f224 Vangelis Koukis
                $("#error-success .popup-header").addClass("popup-header-error");
198 f533f224 Vangelis Koukis
                $("#error-success").addClass("popup-border-error");
199 f533f224 Vangelis Koukis
                $("#error-success .password-container").hide();
200 f533f224 Vangelis Koukis
                $("#error-success .popup-details").addClass("popup-details-error");
201 f533f224 Vangelis Koukis
                $("#error-success .popup-separator").addClass("popup-separator-error");
202 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>");
203 4ea5cc44 Mike Muzurakis
            } else if (ERRORS[status] !== undefined) {
204 4ea5cc44 Mike Muzurakis
                if (serverID === undefined) {
205 7020cb54 Markos Gogoulos
                    //eg no_images, no_flavors cases
206 7020cb54 Markos Gogoulos
                    $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
207 7020cb54 Markos Gogoulos
                    $("#error-success .popup-header").addClass("popup-header-error");
208 7020cb54 Markos Gogoulos
                    $("#error-success").addClass("popup-border-error");
209 7020cb54 Markos Gogoulos
                    $("#error-success .password-container").hide();
210 7020cb54 Markos Gogoulos
                    $("#error-success .popup-details").addClass("popup-details-error");
211 7020cb54 Markos Gogoulos
                    $("#error-success .popup-separator").addClass("popup-separator-error");
212 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("<p>" + ERRORS[status] + "</p>");
213 e1a023a6 Markos Gogoulos
                } else {
214 1532343a Markos Gogoulos
                    $("#error-success .machine-now-building").html(ERRORS["GENERIC_POPUP_HEADER"]);
215 1532343a Markos Gogoulos
                    $("#error-success .popup-header").addClass("popup-header-error");
216 1532343a Markos Gogoulos
                    $("#error-success").addClass("popup-border-error");
217 1532343a Markos Gogoulos
                    $("#error-success .password-container").hide();
218 1532343a Markos Gogoulos
                    $("#error-success .popup-details").addClass("popup-details-error");
219 1532343a Markos Gogoulos
                    $("#error-success .popup-separator").addClass("popup-separator-error");
220 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("<p>" + ERRORS[status] + "</p><p>" + serverName + "</p>");
221 e1a023a6 Markos Gogoulos
                }
222 eae0a59a Dimitris Moraitis
            } else {
223 266597ae Markos Gogoulos
                $("#error-success .machine-now-building").html(ERRORS["DEFAULT"]);
224 4ea5cc44 Mike Muzurakis
                $("#error-success .popup-header").addClass("popup-header-error");
225 4ea5cc44 Mike Muzurakis
                $("#error-success").addClass("popup-border-error");
226 4ea5cc44 Mike Muzurakis
                $("#error-success .password-container").hide();
227 266597ae Markos Gogoulos
                $("#error-success .popup-details").hide();
228 266597ae Markos Gogoulos
                $("#error-success .popup-separator").hide();
229 f533f224 Vangelis Koukis
            }
230 4ea5cc44 Mike Muzurakis
            $("#error-success p:first").css("padding-bottom", "10px");
231 4ea5cc44 Mike Muzurakis
            $("#error-success p:first").css("color", "#800000");
232 f533f224 Vangelis Koukis
            $("#error-success div.more-details").hide();
233 4ea5cc44 Mike Muzurakis
            $("#error-success a.expand-details").live('click', function () {
234 f533f224 Vangelis Koukis
                $(this).parent().parent().find("div.more-details").slideToggle(600);
235 f533f224 Vangelis Koukis
                return false;
236 4ea5cc44 Mike Muzurakis
            });
237 f533f224 Vangelis Koukis
            //stop the progress icon and hide the wizard
238 4ea5cc44 Mike Muzurakis
            if (action !== undefined) {
239 4ea5cc44 Mike Muzurakis
                if (action === 'Create VM') {
240 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
241 f533f224 Vangelis Koukis
                    $("#wizard").hide();
242 4ea5cc44 Mike Muzurakis
                } else if (action === 'Create network') {
243 f533f224 Vangelis Koukis
                    $('#networks-wizard').hide();
244 4ea5cc44 Mike Muzurakis
                } else if (action === 'Add server to network') {
245 f533f224 Vangelis Koukis
                    $('#add-machines-wizard').hide();
246 f533f224 Vangelis Koukis
                }
247 eae0a59a Dimitris Moraitis
            }
248 f533f224 Vangelis Koukis

249 42f67a2a Dimitris Moraitis
            // bring up error notification
250 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
251 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
252 716c3ead Dimitris Moraitis
                mask: '#666',
253 42f67a2a Dimitris Moraitis
                top: 'center',
254 42f67a2a Dimitris Moraitis
                closeOnClick: false,
255 42f67a2a Dimitris Moraitis
                oneInstance: false,
256 42f67a2a Dimitris Moraitis
                load: false,
257 4ea5cc44 Mike Muzurakis
                onClose: function () {
258 716c3ead Dimitris Moraitis
                    // refresh the whole page
259 716c3ead Dimitris Moraitis
                    location.reload();
260 42f67a2a Dimitris Moraitis
                }
261 42f67a2a Dimitris Moraitis
            });
262 a226ff9f Christodoulos Psaltis

263 716c3ead Dimitris Moraitis
            // we need to give the browser some time to close the old overlays before opening the new one
264 716c3ead Dimitris Moraitis
            setTimeout("$('a#notification').data('overlay').load()",400);
265 42f67a2a Dimitris Moraitis
            return false;
266 42f67a2a Dimitris Moraitis
        }
267 f533f224 Vangelis Koukis

268 42f67a2a Dimitris Moraitis
        // ajax success checking
269 146b6003 Dimitris Moraitis
        function ajax_success(status, password) {
270 42f67a2a Dimitris Moraitis
            // prepare the error message
271 42f67a2a Dimitris Moraitis
            // bring up success notification
272 def71253 Markos Gogoulos
            $('#error-success').addClass('success');
273 def71253 Markos Gogoulos
            $('#error-success').removeClass('error');
274 4ea5cc44 Mike Muzurakis
            if (status !== undefined && SUCCESS[status]) {
275 4ea5cc44 Mike Muzurakis
                if (password !== undefined && status === "CREATE_VM_SUCCESS") {
276 f533f224 Vangelis Koukis

277 f533f224 Vangelis Koukis
                    //stop the progress icon and hide the wizard
278 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
279 f533f224 Vangelis Koukis
                    $("#wizard").hide();
280 f533f224 Vangelis Koukis

281 97b6ee61 Markos Gogoulos
                    $("#error-success h3 span.header-box").text(SUCCESS[status]);
282 f533f224 Vangelis Koukis
                    var CREATE_VM_SUCCESS_MSG = SUCCESS["CREATE_VM_SUCCESS_THREE"] + '<br / >'
283 f533f224 Vangelis Koukis
                        + SUCCESS["CREATE_VM_SUCCESS_FOUR"];
284 f533f224 Vangelis Koukis
                    $("#error-success div.machine-now-building").html(SUCCESS["CREATE_VM_SUCCESS_ONE"]);
285 f533f224 Vangelis Koukis
                    $("#error-success .popup-header").removeClass("popup-header-error");
286 f533f224 Vangelis Koukis
                    $("#error-success").removeClass("popup-border-error");
287 f533f224 Vangelis Koukis
                    $("#error-success .popup-details").removeClass("popup-details-error");
288 f533f224 Vangelis Koukis
                    $("#error-success .popup-separator").removeClass("popup-separator-error");
289 f533f224 Vangelis Koukis
                    $("#error-success .password-container").show();
290 def71253 Markos Gogoulos

291 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("</div><div class=\"write-password-details\">" + CREATE_VM_SUCCESS_MSG + "</div>");
292 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>");
293 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password").html(SUCCESS["CREATE_VM_SUCCESS_TWO"]);
294 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password-details").html(CREATE_VM_SUCCESS_MSG);
295 8550e831 Markos Gogoulos
                } else {
296 8550e831 Markos Gogoulos
                    $("#error-success h3").text(SUCCESS['HEADER']);
297 f533f224 Vangelis Koukis
                    $("#error-success div.popup-body-inner").text("<p>" + SUCCESS[status] + "</p>");
298 8550e831 Markos Gogoulos
                }
299 8550e831 Markos Gogoulos
            } else {
300 8550e831 Markos Gogoulos
                $("#error-success h3").text(SUCCESS['HEADER']);
301 f533f224 Vangelis Koukis
                $("#error-success div.popup-body-inner").html("<p>" + SUCCESS['DEFAULT'] + "</p>");
302 8550e831 Markos Gogoulos
            }
303 8550e831 Markos Gogoulos

304 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
305 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
306 716c3ead Dimitris Moraitis
                mask: '#666',
307 42f67a2a Dimitris Moraitis
                top: 'center',
308 42f67a2a Dimitris Moraitis
                closeOnClick: false,
309 42f67a2a Dimitris Moraitis
                oneInstance: false,
310 42f67a2a Dimitris Moraitis
                load: false,
311 4ea5cc44 Mike Muzurakis
                onClose: function () {
312 e5b0ba20 Vangelis Koukis
                    // With partial refresh working properly,
313 e5b0ba20 Vangelis Koukis
                    // it is no longer necessary to refresh the whole page
314 e5b0ba20 Vangelis Koukis
                    // choose_view();
315 42f67a2a Dimitris Moraitis
                }
316 42f67a2a Dimitris Moraitis
            });
317 42f67a2a Dimitris Moraitis
            $("a#notification").data('overlay').load();
318 42f67a2a Dimitris Moraitis
            return false;
319 42f67a2a Dimitris Moraitis
        }
320 42f67a2a Dimitris Moraitis
    </script>
321 cc7c5902 Dimitris Moraitis
</head>
322 cc7c5902 Dimitris Moraitis
<body>
323 f533f224 Vangelis Koukis
    <div id="container">
324 3b363b8e Christodoulos Psaltis
        <div id='header'>
325 3f545a3e Kostas Papadimitriou
            <div id='user'>
326 ce88aad7 Kostas Papadimitriou
                <div class="usermenu">
327 3f545a3e Kostas Papadimitriou
                    <div class="username">{{ request.user.uniq }}</div>
328 ce88aad7 Kostas Papadimitriou
                    <ul class="useractions">
329 ce88aad7 Kostas Papadimitriou
                        <li class="logout last"><a class="action" href="#">{% trans "logout" %}</a></li>
330 ce88aad7 Kostas Papadimitriou
                    </ul>
331 ce88aad7 Kostas Papadimitriou
                </div>
332 ce88aad7 Kostas Papadimitriou
                <div class="langmenu">
333 f533f224 Vangelis Koukis
                {% get_available_languages as LANGUAGES %}
334 f533f224 Vangelis Koukis
                {% for lang in LANGUAGES %}
335 f533f224 Vangelis Koukis
                    <a {% if  == lang.0 %}class="current_lang" {% else %}  href="/lang/?l={{lang.0}}" {% endif %}>{{lang.0}}</a>
336 ce88aad7 Kostas Papadimitriou
                    {% if not forloop.last %}<span class="sep">~</span>{% endif %}
337 ce88aad7 Kostas Papadimitriou
                    {% endfor %}
338 ce88aad7 Kostas Papadimitriou
                </div>
339 f533f224 Vangelis Koukis
            </div>
340 f533f224 Vangelis Koukis
            <div class="header-logo">
341 f533f224 Vangelis Koukis
                <a href="/">
342 f533f224 Vangelis Koukis
                    <img src="static/okeanos.png" alt="okeanos"/>
343 f533f224 Vangelis Koukis
                </a>
344 f533f224 Vangelis Koukis
            </div>
345 cc7c5902 Dimitris Moraitis
        </div>
346 f533f224 Vangelis Koukis
        <div id="content">
347 f533f224 Vangelis Koukis
            <div id="wrapper">
348 f533f224 Vangelis Koukis
                <!-- tabs -->
349 f533f224 Vangelis Koukis
                <div class="tab-name">{% trans "machines" %}</div>
350 f533f224 Vangelis Koukis
                <div class="tab-separator"></div>
351 f533f224 Vangelis Koukis
                <ul class="css-tabs">
352 f533f224 Vangelis Koukis
                    <li><a href="machines" title="{% trans "manage  virtual " %}" class="primary" id="machines">
353 f533f224 Vangelis Koukis
                        <img src="static/machines-icon.png" /></a></li><div class="tab-separator"></div>
354 f533f224 Vangelis Koukis
                    <li><a href="networks" title="{% trans "configure " %}" class="primary" id="networks">
355 f533f224 Vangelis Koukis
                        <img src="static/networks-icon.png" /></a></li><div class="tab-separator"></div>
356 f533f224 Vangelis Koukis
                    <li><a href="disks" title="{% trans "manage  storage " %}" class="primary" id="disks">
357 f533f224 Vangelis Koukis
                        <img src="static/disks-icon.png" /></a></li>
358 f533f224 Vangelis Koukis
                </ul>
359 f533f224 Vangelis Koukis
                <div class="css-panes">
360 e4f32f27 Mike Muzurakis
                    <div id="machines-pane" class="pane" style="display:block;"></div>
361 e4f32f27 Mike Muzurakis
                    <div id="networks-pane" class="pane"></div>
362 f533f224 Vangelis Koukis
                    <div id="disks-pane" class="pane"></div>
363 f533f224 Vangelis Koukis
                </div>
364 f533f224 Vangelis Koukis
            </div>
365 cc7c5902 Dimitris Moraitis
        </div>
366 f533f224 Vangelis Koukis
        {% include "footer.html" %}
367 cc7c5902 Dimitris Moraitis
    </div>
368 f533f224 Vangelis Koukis
369 cc7c5902 Dimitris Moraitis
    <!-- activate tabs with JavaScript -->
370 cc7c5902 Dimitris Moraitis
    <script>
371 f533f224 Vangelis Koukis

372 cc7c5902 Dimitris Moraitis
        $(function() {
373 87a29449 Dimitris Moraitis
            // check pane cookie to select the initial pane
374 87a29449 Dimitris Moraitis
            var initial = 0, pane = $.cookie("pane");
375 87a29449 Dimitris Moraitis
            if (pane > 0)
376 87a29449 Dimitris Moraitis
                initial = pane;
377 87a29449 Dimitris Moraitis
            //alert(initial);
378 f533f224 Vangelis Koukis
            $("ul.css-tabs").tabs("div.css-panes div.pane", {
379 87a29449 Dimitris Moraitis
                initialIndex: initial,
380 f533f224 Vangelis Koukis
                onBeforeClick: function(event, i) {
381 d60645d2 Mike Muzurakis
                    this.getPanes().children().remove();
382 f533f224 Vangelis Koukis
                    // get the pane to be opened
383 f533f224 Vangelis Koukis
                    var pane = this.getPanes().eq(i);
384 f533f224 Vangelis Koukis
                    //change the displaying title
385 f533f224 Vangelis Koukis
                    $(".tab-name").text(this.getTabs().eq(i).attr("href"));
386 f533f224 Vangelis Koukis
                    // load it with a page specified in the tab's href attribute
387 4ea5cc44 Mike Muzurakis
                    pane.load(this.getTabs().eq(i).attr("href"),function() {if (!i) {choose_view()}});
388 f533f224 Vangelis Koukis
                }
389 f533f224 Vangelis Koukis
            });
390 cc7c5902 Dimitris Moraitis
        });
391 f459a610 Christodoulos Psaltis

392 87a29449 Dimitris Moraitis
        // set pane cookie whenever the user clicks on a different pane
393 4ea5cc44 Mike Muzurakis
        $("ul.css-tabs a").click(function(i) {
394 87a29449 Dimitris Moraitis
            $.cookie("pane", $("ul.css-tabs a").index(this));
395 87a29449 Dimitris Moraitis
        });
396 f459a610 Christodoulos Psaltis

397 f533f224 Vangelis Koukis
        //change menu title on hover
398 f533f224 Vangelis Koukis
        $("ul.css-tabs li").hover(
399 f533f224 Vangelis Koukis
            function () {
400 f533f224 Vangelis Koukis
                if ($(this).find("a.current").length == 0) {
401 f533f224 Vangelis Koukis
                    $(this).parent().parent().find(".tab-name").text($(this).find("a").attr("href"));
402 f533f224 Vangelis Koukis
                }
403 f533f224 Vangelis Koukis
            },
404 f533f224 Vangelis Koukis
            function () {
405 f533f224 Vangelis Koukis
                $(this).parent().parent().find(".tab-name").text($(this).parent().find("a.current").attr("href"));
406 f533f224 Vangelis Koukis
            }
407 f533f224 Vangelis Koukis
        );
408 1293d3ed Mike Muzurakis

409 d681d3a6 Mike Muzurakis
        //load opera css fixes
410 d681d3a6 Mike Muzurakis
        if ($.browser.opera) {
411 d681d3a6 Mike Muzurakis
            $("<link/>", {
412 d681d3a6 Mike Muzurakis
               rel: "stylesheet",
413 d681d3a6 Mike Muzurakis
               type: "text/css",
414 d681d3a6 Mike Muzurakis
               href: "static/opera.css"
415 d681d3a6 Mike Muzurakis
            }).appendTo("head");
416 d681d3a6 Mike Muzurakis
        }
417 ce88aad7 Kostas Papadimitriou

418 ce88aad7 Kostas Papadimitriou
        // user menu interaction
419 ce88aad7 Kostas Papadimitriou
        $(document).ready(function(){
420 ce88aad7 Kostas Papadimitriou
            var resetUserMenu = function() {
421 ce88aad7 Kostas Papadimitriou
                $(this).removeClass("hovered");
422 ce88aad7 Kostas Papadimitriou
                $(this).removeClass("active");
423 ce88aad7 Kostas Papadimitriou
            }
424 ce88aad7 Kostas Papadimitriou
            $(".usermenu").live("click", function(){
425 ce88aad7 Kostas Papadimitriou
                $(this).addClass("active");
426 ce88aad7 Kostas Papadimitriou
            });
427 ce88aad7 Kostas Papadimitriou
            $(".usermenu").bind('mouseleave', resetUserMenu);
428 ce88aad7 Kostas Papadimitriou
            $(".usermenu").live("mouseover", function(){
429 ce88aad7 Kostas Papadimitriou
                $(this).addClass("hovered");
430 ce88aad7 Kostas Papadimitriou
            });
431 af6fc929 Kostas Papadimitriou

432 0e03566f Kostas Papadimitriou
            $(".usermenu li").mouseenter(function(){$(this).addClass("hovered")})
433 0e03566f Kostas Papadimitriou
            $(".usermenu li").mouseleave(function(){$(this).removeClass("hovered")});
434 0e03566f Kostas Papadimitriou

435 af6fc929 Kostas Papadimitriou
            // bind menu actions
436 af6fc929 Kostas Papadimitriou
            $(".usermenu .logout").click(function() {
437 af6fc929 Kostas Papadimitriou
                user_session_logout();
438 af6fc929 Kostas Papadimitriou
            });
439 ce88aad7 Kostas Papadimitriou
        });
440 cc7c5902 Dimitris Moraitis
    </script>
441 b495fe50 Mike Muzurakis
    <!-- base notification for error/success reporting -->
442 b495fe50 Mike Muzurakis
    <a id="notification" rel="#error-success" href="#"></a>
443 b495fe50 Mike Muzurakis
444 b495fe50 Mike Muzurakis
    <div class="modal" id="error-success">
445 b495fe50 Mike Muzurakis
        <h3 class="popup-header">
446 b495fe50 Mike Muzurakis
            <span class="header-box"></span>
447 b495fe50 Mike Muzurakis
        </h3>
448 b495fe50 Mike Muzurakis
        <div class="popup-body">
449 b495fe50 Mike Muzurakis
            <div class="popup-body-inner">
450 b495fe50 Mike Muzurakis
                <div class="machine-now-building"></div>
451 b495fe50 Mike Muzurakis
                <div class="popup-separator"></div>
452 b495fe50 Mike Muzurakis
                <div class="password-container">
453 b495fe50 Mike Muzurakis
                    <div class="password-header"></div>
454 b495fe50 Mike Muzurakis
                    <div class="password"></div>
455 b495fe50 Mike Muzurakis
                </div>
456 b495fe50 Mike Muzurakis
                <div class="popup-details">
457 b495fe50 Mike Muzurakis
                    <div class="write-password"></div>
458 b495fe50 Mike Muzurakis
                    <div class="write-password-details">{% trans "More details about the result"%}</div>
459 b495fe50 Mike Muzurakis
                </div>
460 b495fe50 Mike Muzurakis
            </div>
461 b495fe50 Mike Muzurakis
        </div>
462 b495fe50 Mike Muzurakis
    </div>
463 cc7c5902 Dimitris Moraitis
</body>
464 cc7c5902 Dimitris Moraitis
</html>