Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ 2b837adf

History | View | Annotate | Download (21.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 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 a657c49e Kostas Papadimitriou
        // empty object for console to avoid errors in browsers that don't support it
62 2b837adf Kostas Papadimitriou
        if (!window.console) {window.console = {}; window.console.log = window.console.info = window.console.debug =
63 2b837adf Kostas Papadimitriou
            window.console.error = function() {}};
64 a657c49e Kostas Papadimitriou

65 f533f224 Vangelis Koukis
        //populate available image icons array
66 f533f224 Vangelis Koukis
        var os_icons = {{image_icons|safe}};
67 f533f224 Vangelis Koukis

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

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

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

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

102 f533f224 Vangelis Koukis
        var INACTIVE_STATES = [
103 f533f224 Vangelis Koukis
            '{% trans "Unknown" %}',
104 f533f224 Vangelis Koukis
            '{% trans "Stopped" %}',
105 f533f224 Vangelis Koukis
            '{% trans "Error" %}',
106 f533f224 Vangelis Koukis
            '{% trans "Starting" %}',
107 f533f224 Vangelis Koukis
            '{% trans "Destroying" %}'
108 f533f224 Vangelis Koukis
        ];
109 f533f224 Vangelis Koukis

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

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

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

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

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

174 def71253 Markos Gogoulos
            $('#error-success').addClass('error');
175 def71253 Markos Gogoulos
            $('#error-success').removeClass('success');
176 a226ff9f Christodoulos Psaltis

177 038383b1 Dimitris Moraitis
            var serverName = '';
178 f533f224 Vangelis Koukis

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

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

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

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

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

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

281 f533f224 Vangelis Koukis
                    //stop the progress icon and hide the wizard
282 f533f224 Vangelis Koukis
                    $('#wizard #start').text('{% trans "Create VM" %}');
283 f533f224 Vangelis Koukis
                    $("#wizard").hide();
284 f533f224 Vangelis Koukis

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

295 4ea5cc44 Mike Muzurakis
                    $("#error-success .popup-details").html("</div><div class=\"write-password-details\">" + CREATE_VM_SUCCESS_MSG + "</div>");
296 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>");
297 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password").html(SUCCESS["CREATE_VM_SUCCESS_TWO"]);
298 f533f224 Vangelis Koukis
                    //$("#error-success div.write-password-details").html(CREATE_VM_SUCCESS_MSG);
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").text("<p>" + SUCCESS[status] + "</p>");
302 8550e831 Markos Gogoulos
                }
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").html("<p>" + SUCCESS['DEFAULT'] + "</p>");
306 8550e831 Markos Gogoulos
            }
307 8550e831 Markos Gogoulos

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

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

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

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

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

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

436 0e03566f Kostas Papadimitriou
            $(".usermenu li").mouseenter(function(){$(this).addClass("hovered")})
437 0e03566f Kostas Papadimitriou
            $(".usermenu li").mouseleave(function(){$(this).removeClass("hovered")});
438 0e03566f Kostas Papadimitriou

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