Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ cb748f1f

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
            '{% trans "Destroying" %}'
113 f533f224 Vangelis Koukis
        ];
114 f533f224 Vangelis Koukis

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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