Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ dae23b8f

History | View | Annotate | Download (20.2 kB)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

389 f533f224 Vangelis Koukis
        //change menu title on hover
390 f533f224 Vangelis Koukis
        $("ul.css-tabs li").hover(
391 f533f224 Vangelis Koukis
            function () {
392 f533f224 Vangelis Koukis
                if ($(this).find("a.current").length == 0) {
393 f533f224 Vangelis Koukis
                    $(this).parent().parent().find(".tab-name").text($(this).find("a").attr("href"));
394 f533f224 Vangelis Koukis
                }
395 f533f224 Vangelis Koukis
            },
396 f533f224 Vangelis Koukis
            function () {
397 f533f224 Vangelis Koukis
                $(this).parent().parent().find(".tab-name").text($(this).parent().find("a.current").attr("href"));
398 f533f224 Vangelis Koukis
            }
399 f533f224 Vangelis Koukis
        );
400 1293d3ed Mike Muzurakis

401 d681d3a6 Mike Muzurakis
        //load opera css fixes
402 d681d3a6 Mike Muzurakis
        if ($.browser.opera) {
403 d681d3a6 Mike Muzurakis
            $("<link/>", {
404 d681d3a6 Mike Muzurakis
               rel: "stylesheet",
405 d681d3a6 Mike Muzurakis
               type: "text/css",
406 d681d3a6 Mike Muzurakis
               href: "static/opera.css"
407 d681d3a6 Mike Muzurakis
            }).appendTo("head");
408 d681d3a6 Mike Muzurakis
        }
409 cc7c5902 Dimitris Moraitis
    </script>
410 b495fe50 Mike Muzurakis
    <!-- base notification for error/success reporting -->
411 b495fe50 Mike Muzurakis
    <a id="notification" rel="#error-success" href="#"></a>
412 b495fe50 Mike Muzurakis
413 b495fe50 Mike Muzurakis
    <div class="modal" id="error-success">
414 b495fe50 Mike Muzurakis
        <h3 class="popup-header">
415 b495fe50 Mike Muzurakis
            <span class="header-box"></span>
416 b495fe50 Mike Muzurakis
        </h3>
417 b495fe50 Mike Muzurakis
        <div class="popup-body">
418 b495fe50 Mike Muzurakis
            <div class="popup-body-inner">
419 b495fe50 Mike Muzurakis
                <div class="machine-now-building"></div>
420 b495fe50 Mike Muzurakis
                <div class="popup-separator"></div>
421 b495fe50 Mike Muzurakis
                <div class="password-container">
422 b495fe50 Mike Muzurakis
                    <div class="password-header"></div>
423 b495fe50 Mike Muzurakis
                    <div class="password"></div>
424 b495fe50 Mike Muzurakis
                </div>
425 b495fe50 Mike Muzurakis
                <div class="popup-details">
426 b495fe50 Mike Muzurakis
                    <div class="write-password"></div>
427 b495fe50 Mike Muzurakis
                    <div class="write-password-details">{% trans "More details about the result"%}</div>
428 b495fe50 Mike Muzurakis
                </div>
429 b495fe50 Mike Muzurakis
            </div>
430 b495fe50 Mike Muzurakis
        </div>
431 b495fe50 Mike Muzurakis
    </div>
432 cc7c5902 Dimitris Moraitis
</body>
433 cc7c5902 Dimitris Moraitis
</html>