Statistics
| Branch: | Tag: | Revision:

root / ui / templates / home.html @ bcb81dc8

History | View | Annotate | Download (20 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 f533f224 Vangelis Koukis
    <title>{{ project }}</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 63bdb96d Dimitris Moraitis
    <!--[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 b495fe50 Mike Muzurakis
            'CANCEL' : '{% trans "Cancel" %}'
157 b495fe50 Mike Muzurakis
        };
158 b495fe50 Mike Muzurakis

159 f533f224 Vangelis Koukis
        // ajax error checking
160 038383b1 Dimitris Moraitis
        function ajax_error(status, serverID, action, responseText) {
161 716c3ead Dimitris Moraitis
             // close existing overlays to begin with
162 716c3ead Dimitris Moraitis
            close_all_overlays();       
163 716c3ead Dimitris Moraitis
            // clear old deferred calls (stops all auto-updates)
164 716c3ead Dimitris Moraitis
            clearTimeout(deferred);
165 716c3ead Dimitris Moraitis
            
166 def71253 Markos Gogoulos
            $('#error-success').addClass('error');
167 def71253 Markos Gogoulos
            $('#error-success').removeClass('success');
168 716c3ead Dimitris Moraitis
            
169 038383b1 Dimitris Moraitis
            var serverName = '';
170 f533f224 Vangelis Koukis

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

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

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

245 42f67a2a Dimitris Moraitis
            // bring up error notification
246 42f67a2a Dimitris Moraitis
            var triggers = $("a#notification").overlay({
247 42f67a2a Dimitris Moraitis
                // some mask tweaks suitable for modal dialogs
248 716c3ead Dimitris Moraitis
                mask: '#666',
249 42f67a2a Dimitris Moraitis
                top: 'center',
250 42f67a2a Dimitris Moraitis
                closeOnClick: false,
251 42f67a2a Dimitris Moraitis
                oneInstance: false,
252 42f67a2a Dimitris Moraitis
                load: false,
253 4ea5cc44 Mike Muzurakis
                onClose: function () {
254 716c3ead Dimitris Moraitis
                    // refresh the whole page
255 716c3ead Dimitris Moraitis
                    location.reload();
256 42f67a2a Dimitris Moraitis
                }
257 42f67a2a Dimitris Moraitis
            });
258 716c3ead Dimitris Moraitis
            
259 716c3ead Dimitris Moraitis
            // we need to give the browser some time to close the old overlays before opening the new one
260 716c3ead Dimitris Moraitis
            setTimeout("$('a#notification').data('overlay').load()",400);
261 42f67a2a Dimitris Moraitis
            return false;
262 42f67a2a Dimitris Moraitis
        }
263 f533f224 Vangelis Koukis

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

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

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

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

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

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

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

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

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