Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ af324176

History | View | Annotate | Download (22.6 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 aff0be51 Kostas Papadimitriou
    <script src="static/jquery.client.js"></script>
56 d2f03cb3 Mike Muzurakis
    <script src="static/json2.js"></script>
57 a4531705 Christodoulos Psaltis
    <script src="static/jquery.dataTables.min.js"></script>
58 19e01943 Kostas Papadimitriou
    <script src="static/invitations.js"></script>
59 7b7e768e Christodoulos Psaltis
    <script src="static/synnefo.js"></script>
60 19e01943 Kostas Papadimitriou
61 f533f224 Vangelis Koukis
    <link rel="stylesheet" type="text/css" href="static/main.css"/>
62 a226ff9f Christodoulos Psaltis
    <!--[if IE]><style type="text/css" media="all">@import url(static/ie.css);</style><![endif]-->
63 42f67a2a Dimitris Moraitis
    <script>
64 a657c49e Kostas Papadimitriou
        // empty object for console to avoid errors in browsers that don't support it
65 2b837adf Kostas Papadimitriou
        if (!window.console) {window.console = {}; window.console.log = window.console.info = window.console.debug =
66 2b837adf Kostas Papadimitriou
            window.console.error = function() {}};
67 a657c49e Kostas Papadimitriou

68 f533f224 Vangelis Koukis
        //populate available image icons array
69 f533f224 Vangelis Koukis
        var os_icons = {{image_icons|safe}};
70 f533f224 Vangelis Koukis

71 eae0a59a Dimitris Moraitis
        // timeout value from settings.py
72 d36493ce Dimitris Moraitis
        var TIMEOUT = {{timeout}};
73 7b03c69d Dimitris Moraitis
        var UPDATE_INTERVAL = {{update_interval}};
74 8e5122dd Kostas Papadimitriou
        var LOGOUT_REDIRECT = undefined;
75 19e01943 Kostas Papadimitriou
        var INVITATIONS_URL = "{% url invitations %}"
76 19e01943 Kostas Papadimitriou
        var INVITATIONS_TITLE = "{% trans "Invitations" %}"
77 3df307d7 Christodoulos Psaltis

78 3df307d7 Christodoulos Psaltis
        // server statuses and transitions
79 f533f224 Vangelis Koukis
        var STATUSES = {
80 f533f224 Vangelis Koukis
            'UNKNOWN'   : '{% trans "Unknown" %}',
81 eae0a59a Dimitris Moraitis
            'BUILD'     : '{% trans "Building" %}',
82 f533f224 Vangelis Koukis
            'REBOOT'    : '{% trans "Rebooting" %}',
83 eae0a59a Dimitris Moraitis
            'STOPPED'   : '{% trans "Stopped" %}',
84 f533f224 Vangelis Koukis
            'ACTIVE'    : '{% trans "Running" %}',
85 f533f224 Vangelis Koukis
            'ERROR'     : '{% trans "Error" %}'
86 f533f224 Vangelis Koukis
        };
87 f533f224 Vangelis Koukis

88 f533f224 Vangelis Koukis
        var TRANSITIONS = {
89 f533f224 Vangelis Koukis
            'Shutting down' : '{% trans "Shutting down" %}',
90 f533f224 Vangelis Koukis
            'Rebooting'     : '{% trans "Rebooting" %}',
91 f533f224 Vangelis Koukis
            'Starting'      : '{% trans "Starting" %}',
92 3df307d7 Christodoulos Psaltis
            'Destroying'    : '{% trans "Destroying" %}',
93 f459a610 Christodoulos Psaltis
            'Connecting'    : '{% trans "Connecting" %}',   // used only in networks
94 f459a610 Christodoulos Psaltis
            'Disconnecting' : '{% trans "Disconnecting" %}' // used only in networks
95 eae0a59a Dimitris Moraitis
        };
96 f533f224 Vangelis Koukis

97 3df307d7 Christodoulos Psaltis
        // Server statuses and transitions that should be displayed as active or inactive
98 f533f224 Vangelis Koukis
        var ACTIVE_STATES = [
99 f533f224 Vangelis Koukis
            '{% trans "Building" %}',
100 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
101 f533f224 Vangelis Koukis
            '{% trans "Running" %}',
102 f533f224 Vangelis Koukis
            '{% trans "Shutting down" %}',
103 f533f224 Vangelis Koukis
            '{% trans "Rebooting" %}',
104 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
105 f533f224 Vangelis Koukis
        ];
106 f533f224 Vangelis Koukis

107 f533f224 Vangelis Koukis
        var INACTIVE_STATES = [
108 f533f224 Vangelis Koukis
            '{% trans "Unknown" %}',
109 f533f224 Vangelis Koukis
            '{% trans "Stopped" %}',
110 f533f224 Vangelis Koukis
            '{% trans "Error" %}',
111 f533f224 Vangelis Koukis
            '{% trans "Starting" %}',
112 f533f224 Vangelis Koukis
        ];
113 f533f224 Vangelis Koukis

114 3df307d7 Christodoulos Psaltis
        // Network statuses and transitions
115 3df307d7 Christodoulos Psaltis
        var NET_STATES = {
116 3ad6f576 Christodoulos Psaltis
            'ACTIVE'        : '{% trans "Private network" %}',  // this comes from the API
117 3ad6f576 Christodoulos Psaltis
            'DELETED'       : '{% trans "Deleted" %}',          // this comes from the API
118 3df307d7 Christodoulos Psaltis
            'Destroying'    : '{% trans "Destroying" %}',
119 3df307d7 Christodoulos Psaltis
            'Connecting'    : '{% trans "Connecting" %}',
120 3df307d7 Christodoulos Psaltis
            'Disconnecting' : '{% trans "Disconnecting" %}'
121 3df307d7 Christodoulos Psaltis
        };
122 3df307d7 Christodoulos Psaltis

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

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

163 b495fe50 Mike Muzurakis
        var VARIOUS = {
164 b495fe50 Mike Muzurakis
            'CONFIRM' : '{% trans "Confirm" %}',
165 372f6c81 Mike Muzurakis
            'CANCEL' : '{% trans "Cancel" %}',
166 d6872a51 Christodoulos Psaltis
            'APPLY' : '{% trans "Apply" %}',
167 d6872a51 Christodoulos Psaltis
            'OFF' : '{% trans "Off" %}',
168 d6872a51 Christodoulos Psaltis
            'ON' : '{% trans "On" %}'
169 b495fe50 Mike Muzurakis
        };
170 b495fe50 Mike Muzurakis

171 f533f224 Vangelis Koukis
        // ajax error checking
172 038383b1 Dimitris Moraitis
        function ajax_error(status, serverID, action, responseText) {
173 716c3ead Dimitris Moraitis
             // close existing overlays to begin with
174 a226ff9f Christodoulos Psaltis
            close_all_overlays();
175 716c3ead Dimitris Moraitis
            // clear old deferred calls (stops all auto-updates)
176 716c3ead Dimitris Moraitis
            clearTimeout(deferred);
177 a226ff9f Christodoulos Psaltis

178 def71253 Markos Gogoulos
            $('#error-success').addClass('error');
179 def71253 Markos Gogoulos
            $('#error-success').removeClass('success');
180 a226ff9f Christodoulos Psaltis

181 038383b1 Dimitris Moraitis
            var serverName = '';
182 f533f224 Vangelis Koukis

183 4ea5cc44 Mike Muzurakis
            if (serverID !== undefined) {
184 a8e592c7 Dimitris Moraitis
                // standard view
185 4ea5cc44 Mike Muzurakis
                serverName = $("#" + serverID).find("span.name").text();
186 4ea5cc44 Mike Muzurakis
                if (serverName === "") { // list view
187 4ea5cc44 Mike Muzurakis
                    serverName = $("#" + serverID).parent().parent().find("span.name").text();
188 a8e592c7 Dimitris Moraitis
                }
189 038383b1 Dimitris Moraitis
            }
190 f533f224 Vangelis Koukis

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

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

257 42f67a2a Dimitris Moraitis
            // bring up error notification
258 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
259 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
260 716c3ead Dimitris Moraitis
                mask: '#666',
261 42f67a2a Dimitris Moraitis
                top: 'center',
262 42f67a2a Dimitris Moraitis
                closeOnClick: false,
263 42f67a2a Dimitris Moraitis
                oneInstance: false,
264 42f67a2a Dimitris Moraitis
                load: false,
265 4ea5cc44 Mike Muzurakis
                onClose: function () {
266 716c3ead Dimitris Moraitis
                    // refresh the whole page
267 716c3ead Dimitris Moraitis
                    location.reload();
268 42f67a2a Dimitris Moraitis
                }
269 42f67a2a Dimitris Moraitis
            });
270 a226ff9f Christodoulos Psaltis

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

276 42f67a2a Dimitris Moraitis
        // ajax success checking
277 146b6003 Dimitris Moraitis
        function ajax_success(status, password) {
278 42f67a2a Dimitris Moraitis
            // prepare the error message
279 42f67a2a Dimitris Moraitis
            // bring up success notification
280 def71253 Markos Gogoulos
            $('#error-success').addClass('success');
281 def71253 Markos Gogoulos
            $('#error-success').removeClass('error');
282 4ea5cc44 Mike Muzurakis
            if (status !== undefined && SUCCESS[status]) {
283 4ea5cc44 Mike Muzurakis
                if (password !== undefined && status === "CREATE_VM_SUCCESS") {
284 f533f224 Vangelis Koukis

285 f533f224 Vangelis Koukis
                    //stop the progress icon and hide the wizard
286 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
287 f533f224 Vangelis Koukis
                    $("#wizard").hide();
288 f533f224 Vangelis Koukis

289 97b6ee61 Markos Gogoulos
                    $("#error-success h3 span.header-box").text(SUCCESS[status]);
290 f533f224 Vangelis Koukis
                    var CREATE_VM_SUCCESS_MSG = SUCCESS["CREATE_VM_SUCCESS_THREE"] + '<br / >'
291 f533f224 Vangelis Koukis
                        + SUCCESS["CREATE_VM_SUCCESS_FOUR"];
292 f533f224 Vangelis Koukis
                    $("#error-success div.machine-now-building").html(SUCCESS["CREATE_VM_SUCCESS_ONE"]);
293 f533f224 Vangelis Koukis
                    $("#error-success .popup-header").removeClass("popup-header-error");
294 f533f224 Vangelis Koukis
                    $("#error-success").removeClass("popup-border-error");
295 f533f224 Vangelis Koukis
                    $("#error-success .popup-details").removeClass("popup-details-error");
296 f533f224 Vangelis Koukis
                    $("#error-success .popup-separator").removeClass("popup-separator-error");
297 f533f224 Vangelis Koukis
                    $("#error-success .password-container").show();
298 def71253 Markos Gogoulos

299 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("</div><div class=\"write-password-details\">" + CREATE_VM_SUCCESS_MSG + "</div>");
300 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>");
301 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password").html(SUCCESS["CREATE_VM_SUCCESS_TWO"]);
302 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password-details").html(CREATE_VM_SUCCESS_MSG);
303 8550e831 Markos Gogoulos
                } else {
304 8550e831 Markos Gogoulos
                    $("#error-success h3").text(SUCCESS['HEADER']);
305 f533f224 Vangelis Koukis
                    $("#error-success div.popup-body-inner").text("<p>" + SUCCESS[status] + "</p>");
306 8550e831 Markos Gogoulos
                }
307 8550e831 Markos Gogoulos
            } else {
308 8550e831 Markos Gogoulos
                $("#error-success h3").text(SUCCESS['HEADER']);
309 f533f224 Vangelis Koukis
                $("#error-success div.popup-body-inner").html("<p>" + SUCCESS['DEFAULT'] + "</p>");
310 8550e831 Markos Gogoulos
            }
311 8550e831 Markos Gogoulos

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

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

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

406 f533f224 Vangelis Koukis
        //change menu title on hover
407 f533f224 Vangelis Koukis
        $("ul.css-tabs li").hover(
408 f533f224 Vangelis Koukis
            function () {
409 f533f224 Vangelis Koukis
                if ($(this).find("a.current").length == 0) {
410 f533f224 Vangelis Koukis
                    $(this).parent().parent().find(".tab-name").text($(this).find("a").attr("href"));
411 f533f224 Vangelis Koukis
                }
412 f533f224 Vangelis Koukis
            },
413 f533f224 Vangelis Koukis
            function () {
414 f533f224 Vangelis Koukis
                $(this).parent().parent().find(".tab-name").text($(this).parent().find("a.current").attr("href"));
415 f533f224 Vangelis Koukis
            }
416 f533f224 Vangelis Koukis
        );
417 1293d3ed Mike Muzurakis

418 d681d3a6 Mike Muzurakis
        //load opera css fixes
419 d681d3a6 Mike Muzurakis
        if ($.browser.opera) {
420 d681d3a6 Mike Muzurakis
            $("<link/>", {
421 d681d3a6 Mike Muzurakis
               rel: "stylesheet",
422 d681d3a6 Mike Muzurakis
               type: "text/css",
423 d681d3a6 Mike Muzurakis
               href: "static/opera.css"
424 d681d3a6 Mike Muzurakis
            }).appendTo("head");
425 d681d3a6 Mike Muzurakis
        }
426 ce88aad7 Kostas Papadimitriou

427 ce88aad7 Kostas Papadimitriou
        $(document).ready(function(){
428 19e01943 Kostas Papadimitriou
            // user menu interaction
429 ce88aad7 Kostas Papadimitriou
            var resetUserMenu = function() {
430 ce88aad7 Kostas Papadimitriou
                $(this).removeClass("hovered");
431 ce88aad7 Kostas Papadimitriou
                $(this).removeClass("active");
432 ce88aad7 Kostas Papadimitriou
            }
433 ce88aad7 Kostas Papadimitriou
            $(".usermenu").live("click", function(){
434 ce88aad7 Kostas Papadimitriou
                $(this).addClass("active");
435 ce88aad7 Kostas Papadimitriou
            });
436 ce88aad7 Kostas Papadimitriou
            $(".usermenu").bind('mouseleave', resetUserMenu);
437 ce88aad7 Kostas Papadimitriou
            $(".usermenu").live("mouseover", function(){
438 ce88aad7 Kostas Papadimitriou
                $(this).addClass("hovered");
439 ce88aad7 Kostas Papadimitriou
            });
440 af6fc929 Kostas Papadimitriou

441 0e03566f Kostas Papadimitriou
            $(".usermenu li").mouseenter(function(){$(this).addClass("hovered")})
442 0e03566f Kostas Papadimitriou
            $(".usermenu li").mouseleave(function(){$(this).removeClass("hovered")});
443 0e03566f Kostas Papadimitriou

444 af6fc929 Kostas Papadimitriou
            // bind menu actions
445 af6fc929 Kostas Papadimitriou
            $(".usermenu .logout").click(function() {
446 af6fc929 Kostas Papadimitriou
                user_session_logout();
447 af6fc929 Kostas Papadimitriou
            });
448 29772683 Kostas Papadimitriou

449 19e01943 Kostas Papadimitriou
            $(".usermenu .invitations").click(show_invitations);
450 19e01943 Kostas Papadimitriou
            
451 ce88aad7 Kostas Papadimitriou
        });
452 cc7c5902 Dimitris Moraitis
    </script>
453 b495fe50 Mike Muzurakis
    <!-- base notification for error/success reporting -->
454 b495fe50 Mike Muzurakis
    <a id="notification" rel="#error-success" href="#"></a>
455 29772683 Kostas Papadimitriou
    <a id="msgbox" rel="#notification-box" href="#"></a>
456 b495fe50 Mike Muzurakis
457 b495fe50 Mike Muzurakis
    <div class="modal" id="error-success">
458 b495fe50 Mike Muzurakis
        <h3 class="popup-header">
459 b495fe50 Mike Muzurakis
            <span class="header-box"></span>
460 b495fe50 Mike Muzurakis
        </h3>
461 b495fe50 Mike Muzurakis
        <div class="popup-body">
462 b495fe50 Mike Muzurakis
            <div class="popup-body-inner">
463 b495fe50 Mike Muzurakis
                <div class="machine-now-building"></div>
464 b495fe50 Mike Muzurakis
                <div class="popup-separator"></div>
465 b495fe50 Mike Muzurakis
                <div class="password-container">
466 b495fe50 Mike Muzurakis
                    <div class="password-header"></div>
467 b495fe50 Mike Muzurakis
                    <div class="password"></div>
468 b495fe50 Mike Muzurakis
                </div>
469 b495fe50 Mike Muzurakis
                <div class="popup-details">
470 b495fe50 Mike Muzurakis
                    <div class="write-password"></div>
471 b495fe50 Mike Muzurakis
                    <div class="write-password-details">{% trans "More details about the result"%}</div>
472 b495fe50 Mike Muzurakis
                </div>
473 b495fe50 Mike Muzurakis
            </div>
474 b495fe50 Mike Muzurakis
        </div>
475 b495fe50 Mike Muzurakis
    </div>
476 29772683 Kostas Papadimitriou
477 29772683 Kostas Papadimitriou
    <div class="modal" id="notification-box">
478 29772683 Kostas Papadimitriou
        <h3 class="popup-header">
479 29772683 Kostas Papadimitriou
            <span class="header-box"></span>
480 29772683 Kostas Papadimitriou
        </h3>
481 29772683 Kostas Papadimitriou
        <div class="popup-body">
482 29772683 Kostas Papadimitriou
            <div class="popup-body-inner">
483 29772683 Kostas Papadimitriou
                <div class="machine-now-building"></div>
484 29772683 Kostas Papadimitriou
                <div class="popup-separator"></div>
485 29772683 Kostas Papadimitriou
                <div class="password-container">
486 29772683 Kostas Papadimitriou
                    <div class="password-header"></div>
487 29772683 Kostas Papadimitriou
                    <div class="password"></div>
488 29772683 Kostas Papadimitriou
                </div>
489 29772683 Kostas Papadimitriou
            </div>
490 29772683 Kostas Papadimitriou
        </div>
491 29772683 Kostas Papadimitriou
    </div>
492 cc7c5902 Dimitris Moraitis
</body>
493 cc7c5902 Dimitris Moraitis
</html>