1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-20 10:50:08 +03:00

Merge remote-tracking branch 'hector/sunstone-minifixes'

This commit is contained in:
Ruben S. Montero 2012-04-21 01:54:49 +02:00
commit 65fe844ec2
28 changed files with 1527 additions and 55 deletions

@ -1178,7 +1178,10 @@ SUNSTONE_PUBLIC_CSS_FILES="src/sunstone/public/css/application.css \
SUNSTONE_PUBLIC_VENDOR_DATATABLES="\
src/sunstone/public/vendor/dataTables/jquery.dataTables.min.js \
src/sunstone/public/vendor/dataTables/ColVis.min.js \
src/sunstone/public/vendor/dataTables/ColReorderWithResize.js \
src/sunstone/public/vendor/dataTables/demo_table_jui.css \
src/sunstone/public/vendor/dataTables/ColVis.css \
src/sunstone/public/vendor/dataTables/BSD-LICENSE.txt \
src/sunstone/public/vendor/dataTables/NOTICE"
@ -1188,7 +1191,7 @@ SUNSTONE_PUBLIC_VENDOR_JGROWL="\
src/sunstone/public/vendor/jGrowl/NOTICE"
SUNSTONE_PUBLIC_VENDOR_JQUERY="\
src/sunstone/public/vendor/jQuery/jquery-1.7.1.min.js \
src/sunstone/public/vendor/jQuery/jquery-1.7.2.min.js \
src/sunstone/public/vendor/jQuery/MIT-LICENSE.txt \
src/sunstone/public/vendor/jQuery/NOTICE"
@ -1253,10 +1256,15 @@ SUNSTONE_PUBLIC_IMAGES_FILES="src/sunstone/public/images/ajax-loader.gif \
src/sunstone/public/images/yellow_bullet.png \
src/sunstone/public/images/green_bullet.png \
src/sunstone/public/images/vnc_off.png \
src/sunstone/public/images/vnc_on.png"
src/sunstone/public/images/vnc_on.png \
src/sunstone/public/images/network_icon.png \
src/sunstone/public/images/system_icon.png \
src/sunstone/public/images/server_icon.png \
"
SUNSTONE_PUBLIC_LOCALE_EN_US="\
src/sunstone/public/locale/en_US/en_US.js \
src/sunstone/public/locale/en_US/en_datatable.txt \
"
SUNSTONE_PUBLIC_LOCALE_RU="

@ -29,6 +29,8 @@ require 'OZones/AggregatedUsers'
require 'OZones/AggregatedClusters'
require 'OZones/AggregatedDatastores'
require 'OZones/AggregatedTemplates'
require 'OZones/AggregatedClusters'
require 'OZones/AggregatedDatastores'
require 'openssl'
require 'digest/sha1'

@ -39,8 +39,13 @@ select, button {
h2 {
float:left;
font-size:20px;
margin-bottom: 5px;
padding-bottom: 0}
margin-bottom: 2px;
margin-top: 8px;
padding-bottom: 2px;
width:400px;
color: #636663;
border-bottom: 3px solid;
}
h3 {
border-bottom: 1px solid #CCCCCC;
@ -236,6 +241,10 @@ label{
text-align:left;
}
.dataTables_wrapper {
min-height: 0;
}
.dataTables_wrapper label {
float: none;
width: auto;
@ -340,10 +349,12 @@ tr.odd td, tr.even td{
tr.odd:hover{
background-color: #E69138 !important;
cursor: pointer;
}
tr.even:hover{
background-color: #E69138 !important;
cursor: pointer;
}
.show_hide label{
@ -587,4 +598,25 @@ ul.action_list li a:hover{
.ui-layout-resizer-open-hover, /* hover-color to 'resize' */
.ui-layout-resizer-dragging {
background: #EEE;
}
.dataTables_length {
width: auto;
}
.ColVis {
margin: 0 10px 0 10px;
float: left;
}
.ColVis_Button {
padding: 5px;
font-size: 1em;
}
.legend {
color: #636663;
margin-left: 10px;
margin-top: 5px;
font-style: italic;
}

Binary file not shown.

After

(image error) Size: 16 KiB

Binary file not shown.

After

(image error) Size: 9.7 KiB

Binary file not shown.

After

(image error) Size: 14 KiB

@ -18,8 +18,9 @@
var dataTable_acls;
var $create_acl_dialog;
var acls_tab_content =
'<form id="acl_form" action="" action="javascript:alert(\'js error!\');">\
var acls_tab_content = '\
<h2>'+tr("Access Control Lists")+'</h2>\
<form id="acl_form" action="" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_acls" class="display">\
@ -31,11 +32,15 @@ var acls_tab_content =
<th>'+tr("Affected resources")+'</th>\
<th>'+tr("Resource ID / Owned by")+'</th>\
<th>'+tr("Allowed operations")+'</th>\
<th>'+tr("ACL String")+'</th>\
</tr>\
</thead>\
<tbody id="tbodyaclss">\
</tbody>\
</table>\
<p class="legend">\
'+tr("This table shows the ACLs rules broken down to easier the reading and meaning of each one. You can show the ACL original string by clicking on Show/Hide columns.")+'\
</p>\
</form>';
var create_acl_tmpl =
@ -287,7 +292,8 @@ function aclElementArray(acl_json){
acl_array[0],
acl_array[1],
acl_array[2],
acl_array[3]
acl_array[3],
acl.STRING
]
}
@ -480,12 +486,17 @@ $(document).ready(function(){
dataTable_acls = $("#datatable_acls",main_tabs_context).dataTable({
"bJQueryUI": true,
"bSortClasses": false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"sPaginationType": "full_numbers",
"bAutoWidth":false,
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0] },
{ "sWidth": "35px", "aTargets": [1] }
{ "sWidth": "35px", "aTargets": [1] },
{ "bVisible": false, "aTargets": [6]}
],
"oLanguage": (datatable_lang != "") ?
{
@ -495,7 +506,7 @@ $(document).ready(function(){
dataTable_acls.fnClearTable();
addElement([
spinner,
'','','','',''],dataTable_acls);
'','','','','',''],dataTable_acls);
Sunstone.runAction("Acl.list");

@ -17,15 +17,16 @@
/*Cluster tab plugin*/
var clusters_tab_content =
'<form id="form_cluters" action="javascript:alert(\'js errors?!\')">\
var clusters_tab_content = '\
<h2>'+tr("Clusters")+'</h2>\
<form id="form_cluters" action="javascript:alert(\'js errors?!\')">\
<div class="action_blocks">\
</div>\
<table id="datatable_clusters" class="display">\
<thead>\
<tr>\
<th class="check"><input type="checkbox" class="check_all" value="">' + tr("All") + '</input></th>\
<th>' + tr("id") + '</th>\
<th>' + tr("ID") + '</th>\
<th>' + tr("Name") + '</th>\
</tr>\
</thead>\
@ -771,7 +772,7 @@ function setupCreateClusterDialog(){
dialog.dialog({
autoOpen: false,
modal: true,
width: 500
width: 400
});
$('button',dialog).button();
@ -831,6 +832,10 @@ $(document).ready(function(){
dataTable_clusters = $("#datatable_clusters",main_tabs_context).dataTable({
"bJQueryUI": true,
"bSortClasses": false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"bAutoWidth":false,
"sPaginationType": "full_numbers",
"aoColumnDefs": [

@ -45,9 +45,13 @@ var config_tab_content =
\
</div>\
</div>\
<p class="legend">\
'+tr("These options are stored in your OpenNebula user template.")+'\
</p>\
</td>\
</tr>\
</table></form>';
</table>\
</form>';
var config_actions = {
"Config.list" : {

@ -17,8 +17,9 @@
/*Datastore tab plugin*/
var datastores_tab_content =
'<form id="form_datastores" action="javascript:alert(\'js errors?!\')">\
var datastores_tab_content = '\
<h2>'+tr("Datastores")+'</h2>\
<form id="form_datastores" action="javascript:alert(\'js errors?!\')">\
<div class="action_blocks">\
</div>\
<table id="datatable_datastores" class="display">\
@ -30,6 +31,9 @@ var datastores_tab_content =
<th>'+tr("Group")+'</th>\
<th>'+tr("Name")+'</th>\
<th>'+tr("Cluster")+'</th>\
<th>'+tr("Basepath")+'</th>\
<th>'+tr("TM MAD")+'</th>\
<th>'+tr("DS MAD")+'</th>\
</tr>\
</thead>\
<tbody id="tbodydatastores">\
@ -345,7 +349,10 @@ function datastoreElementArray(element_json){
element.UNAME,
element.GNAME,
element.NAME,
element.CLUSTER.length ? element.CLUSTER : "-"
element.CLUSTER.length ? element.CLUSTER : "-",
element.BASE_PATH,
element.TEMPLATE.TM_MAD,
element.TEMPLATE.DS_MAD
];
}
@ -665,13 +672,18 @@ $(document).ready(function(){
dataTable_datastores = $("#datatable_datastores",main_tabs_context).dataTable({
"bJQueryUI": true,
"bSortClasses": false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"sPaginationType": "full_numbers",
"bAutoWidth":false,
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0] },
{ "sWidth": "35px", "aTargets": [1] },
{ "sWidth": "100px", "aTargets": [2,3,5] }
{ "sWidth": "100px", "aTargets": [2,3,5,7,8] },
{ "bVisible": false, "aTargets": [6,7,8] }
],
"oLanguage": (datatable_lang != "") ?
{
@ -682,7 +694,7 @@ $(document).ready(function(){
dataTable_datastores.fnClearTable();
addElement([
spinner,
'','','','',''],dataTable_datastores);
'','','','','','','',''],dataTable_datastores);
Sunstone.runAction("Datastore.list");
setupCreateDatastoreDialog();

@ -18,8 +18,9 @@ var groups_select="";
var dataTable_groups;
var $create_group_dialog;
var groups_tab_content =
'<form id="group_form" action="" action="javascript:alert(\'js error!\');">\
var groups_tab_content = '\
<h2>'+tr("Groups")+'</h2>\
<form id="group_form" action="" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_groups" class="display">\
@ -34,6 +35,9 @@ var groups_tab_content =
<tbody id="tbodygroups">\
</tbody>\
</table>\
<p class="legend">\
'+tr("Tip: Refresh the list if it only shows user ids in the user column.")+'\
</p>\
</form>';
var create_group_tmpl =
@ -273,6 +277,7 @@ $(document).ready(function(){
dataTable_groups = $("#datatable_groups",main_tabs_context).dataTable({
"bJQueryUI": true,
"bSortClasses": false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"sPaginationType": "full_numbers",
"bAutoWidth":false,
"aoColumnDefs": [

@ -33,26 +33,39 @@ var host_graphs = [
]
var hosts_tab_content =
'<form id="form_hosts" action="javascript:alert(\'js errors?!\')">\
var hosts_tab_content = '\
<h2>'+tr("Hosts")+'</h2>\
<form id="form_hosts" action="javascript:alert(\'js errors?!\')">\
<div class="action_blocks">\
</div>\
<table id="datatable_hosts" class="display">\
<thead>\
<tr>\
<th class="check"><input type="checkbox" class="check_all" value="">' + tr("All") + '</input></th>\
<th>' + tr("id") + '</th>\
<th>' + tr("ID") + '</th>\
<th>' + tr("Name") + '</th>\
<th>' + tr("Cluster") + '</th>\
<th>' + tr("Running VMs") + '</th>\
<th>' + tr("CPU Use") + '</th>\
<th>' + tr("Memory use") + '</th>\
<th>' + tr("Status") + '</th>\
<th>' + tr("IM MAD") + '</th>\
<th>' + tr("VM MAD") + '</th>\
<th>' + tr("Last monitored on") + '</th>\
</tr>\
</thead>\
<tbody id="tbodyhosts">\
</tbody>\
</table>\
<p class="legend">\
'+tr("CPU Use is calculated as the maximum between (total CPU - real CPU usage) and (allocated CPU). Real CPU usage is provided by the hosts monitoring driver. Available CPU is calculated using the information from the CPU setting of the VMs running on that host (allocated CPU)")+'\
</p>\
<p class="legend">\
'+tr("Memory use is calculated according to the information provided by the host monitoring driver.")+'\
</p>\
<p class="legend">\
'+tr("You can get monitoring graphs by clicking in the desired host and visiting the monitoring information tab. Note that oneacctd must be running for this information to be updated/available.")+'\
</p>\
</form>';
var create_host_tmpl =
@ -391,7 +404,11 @@ function hostElementArray(host_json){
host.HOST_SHARE.RUNNING_VMS, //rvm
pb_cpu,
pb_mem,
OpenNebula.Helper.resource_state("host_simple",host.STATE) ];
OpenNebula.Helper.resource_state("host_simple",host.STATE),
host.IM_MAD,
host.VM_MAD,
pretty_time(host.LAST_MON_TIME)
];
}
//Listen to clicks on the tds of the tables and shows the info dialogs.
@ -642,14 +659,19 @@ $(document).ready(function(){
dataTable_hosts = $("#datatable_hosts",main_tabs_context).dataTable({
"bJQueryUI": true,
"bSortClasses": false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"bAutoWidth":false,
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,4] },
{ "sWidth": "35px", "aTargets": [1] },
{ "sWidth": "100px", "aTargets": [7,3] },
{ "sWidth": "200px", "aTargets": [5,6] }
{ "sWidth": "100px", "aTargets": [7,3,8,9,10] },
{ "sWidth": "200px", "aTargets": [5,6] },
{ "bVisible": false, "aTargets": [8,9,10]}
],
"oLanguage": (datatable_lang != "") ?
{
@ -661,7 +683,7 @@ $(document).ready(function(){
dataTable_hosts.fnClearTable();
addElement([
spinner,
'','','','','','',''],dataTable_hosts);
'','','','','','','','','',''],dataTable_hosts);
Sunstone.runAction("Host.list");
setupCreateHostDialog();

@ -16,8 +16,9 @@
/*Images tab plugin*/
var images_tab_content =
'<form id="image_form" action="" action="javascript:alert(\'js error!\');">\
var images_tab_content = '\
<h2>'+tr("Images")+'</h2>\
<form id="image_form" action="" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_images" class="display">\
@ -40,6 +41,9 @@ var images_tab_content =
<tbody id="tbodyimages">\
</tbody>\
</table>\
<p class="legend">\
'+tr("Size and registration time are hidden colums. Note that persistent images can only be used by 1 VM. To change image datastore, please re-register the image.")+'\
</p>\
</form>';
var create_image_tmpl =
@ -1132,13 +1136,18 @@ $(document).ready(function(){
"bJQueryUI": true,
"bSortClasses": false,
"bAutoWidth":false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,2,3,9,10] },
{ "sWidth": "35px", "aTargets": [1,6,11] },
{ "sWidth": "100px", "aTargets": [5,7] },
{ "sWidth": "150px", "aTargets": [8] }
{ "sWidth": "150px", "aTargets": [8] },
{ "bVisible": false, "aTargets": [6,8]}
],
"oLanguage": (datatable_lang != "") ?
{

@ -72,12 +72,13 @@ var infra_tab_content =
<div class="panel">\
<h3>' + tr("Infrastructure resources") + '</h3>\
<div class="panel_info">\
<p>'+tr("The Infrastructure menu allows management of Hosts, Datastores, Virtual Networks. Users in the oneadmin group can manage clusters as well.")+'</p>\
<p><img src="images/network_icon.png" style="float:right;" alt="network icon"/>'+tr("The Infrastructure menu allows management of Hosts, Datastores, Virtual Networks. Users in the oneadmin group can manage clusters as well.")+'</p>\
<p>'+tr("You can find further information on the following links:")+'</p>\
<ul>\
<li><a href="http://opennebula.org/documentation:rel3.4:hostsubsystem" target="_blank">Host subsystem</a></li>\
<li><a href="http://opennebula.org/documentation:rel3.4:host_guide" target="_blank">Managing Hosts</a></li>\
<li><a href="http://opennebula.org/documentation:rel3.4:nm" target="_blank">Networking subsystem</a></li>\
<li><a href="http://opennebula.org/documentation:rel3.4:cluster_guide" target="_blank">Managing Clusters</a></li>\
</ul>\
</div>\
</div>\

@ -67,7 +67,7 @@ var system_tab_content =
<div class="panel">\
<h3>' + tr("System Resources") + '</h3>\
<div class="panel_info">\
<p>'+tr("System resources management is only accesible to users of the oneadmin group. It comprises the operations regarding OpenNebula groups, users and ACLs.")+'</p>\
<p><img src="images/system_icon.png" style="float:right;" alt="user" width="128" height="128" />'+tr("System resources management is only accesible to users of the oneadmin group. It comprises the operations regarding OpenNebula groups, users and ACLs.")+'</p>\
<p>'+tr("You can find further information on the following links:")+'</p>\
<ul>\
<li><a href="http://opennebula.org/documentation:rel3.4:auth_overview" target="_blank">Users & Groups subsystem</a></li>\

@ -16,8 +16,9 @@
/*Templates tab plugin*/
var templates_tab_content =
'<form id="template_form" action="" action="javascript:alert(\'js error!\');">\
var templates_tab_content = '\
<h2>'+tr("Templates")+'</h2>\
<form id="template_form" action="" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_templates" class="display">\
@ -2149,6 +2150,7 @@ $(document).ready(function(){
"bJQueryUI": true,
"bSortClasses": false,
"bAutoWidth":false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },

@ -20,8 +20,9 @@ var users_select="";
var $create_user_dialog;
var $update_pw_dialog;
var users_tab_content =
'<form id="user_form" action="" action="javascript:alert(\'js error!\');">\
var users_tab_content = '\
<h2>'+tr("Users")+'</h2>\
<form id="user_form" action="" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_users" class="display">\
@ -32,11 +33,17 @@ var users_tab_content =
<th>'+tr("Name")+'</th>\
<th>'+tr("Group")+'</th>\
<th>'+tr("Authentication driver")+'</th>\
<th>'+tr("Group ID")+'</th>\
</tr>\
</thead>\
<tbody id="tbodyusers">\
</tbody>\
</table>\
<p class="legend">\
<!--'+
tr("Tip: select Core authentication for new Sunstone/Self-Service regular users.")+
'-->\
</p>\
</form>';
var create_user_tmpl =
@ -52,8 +59,6 @@ var create_user_tmpl =
<option value="core" selected="selected">'+tr("Core")+'</option>\
<option value="ssh">'+tr("SSH")+'</option>\
<option value="x509">'+tr("x509")+'</option>\
<option value="server_cipher">'+tr("Server (Cipher)")+'</option>\
<option value="server_x509">'+tr("Server (x509)")+'</option>\
<option value="public">'+tr("Public")+'</option>\
</select>\
</div>\
@ -270,8 +275,6 @@ var user_buttons = {
return '<option value="core" selected="selected">'+tr("Core")+'</option>\
<option value="ssh">'+tr("SSH")+'</option>\
<option value="x509">'+tr("x509")+'</option>\
<option value="server_cipher">'+tr("Server (Cipher)")+'</option>\
<option value="server_x509">'+tr("Server (x509)")+'</option>\
<option value="public">'+tr("Public")+'</option>'
},
tip: tr("Please choose the new type of authentication for the selected users")+":"
@ -329,7 +332,8 @@ function userElementArray(user_json){
user.ID,
user.NAME,
user.GNAME,
user.AUTH_DRIVER
user.AUTH_DRIVER,
user.GID
]
};
@ -521,12 +525,17 @@ $(document).ready(function(){
"bJQueryUI": true,
"bSortClasses": false,
"sPaginationType": "full_numbers",
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"bAutoWidth":false,
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0] },
{ "sWidth": "35px", "aTargets": [1] },
{ "sWidth": "150px", "aTargets": [4] }
{ "sWidth": "35px", "aTargets": [1,5] },
{ "sWidth": "150px", "aTargets": [4] },
{ "bVisible": false, "aTargets": [5]}
],
"oLanguage": (datatable_lang != "") ?
{
@ -536,7 +545,7 @@ $(document).ready(function(){
dataTable_users.fnClearTable();
addElement([
spinner,
'','','',''],dataTable_users);
'','','','',''],dataTable_users);
Sunstone.runAction("User.list");

@ -47,8 +47,9 @@ var vm_graphs = [
}
];
var vms_tab_content =
'<form id="virtualMachine_list" action="javascript:alert(\'js error!\');">\
var vms_tab_content = '\
<h2>'+tr("Virtual Machines")+'</h2>\
<form id="virtualMachine_list" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_vmachines" class="display">\
@ -71,6 +72,12 @@ var vms_tab_content =
<tbody id="tbodyvmachines">\
</tbody>\
</table>\
<p class="legend">\
'+tr("CPU, Memory and Start time are hidden columns by default. You can get monitoring graphs by clicking on the desired VM and visiting the monitoring information tab (oneacctd needs to be running for this information to be up to date)")+'\
</p>\
<p class="legend">\
'+tr("VNC console requires previous install of the noVNC addon. Check Sunstone documentation for more information.")+'\
</p>\
</form>';
var create_vm_tmpl ='<form id="create_vm_form" action="">\
@ -1306,7 +1313,7 @@ function setupVNC(){
Sunstone.runAction("VM.stopvnc",id);
});
$('.vnc',main_tabs_context).live("click",function(){
$('.vnc').live("click",function(){
//Which VM is it?
var id = $(this).attr('vm_id');
//Set attribute to dialog
@ -1367,6 +1374,10 @@ $(document).ready(function(){
dataTable_vMachines = $("#datatable_vmachines",main_tabs_context).dataTable({
"bJQueryUI": true,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"bSortClasses": false,
"sPaginationType": "full_numbers",
"bAutoWidth":false,
@ -1375,7 +1386,8 @@ $(document).ready(function(){
{ "sWidth": "60px", "aTargets": [0,6,7] },
{ "sWidth": "35px", "aTargets": [1,11] },
{ "sWidth": "150px", "aTargets": [5,10] },
{ "sWidth": "100px", "aTargets": [2,3,9] }
{ "sWidth": "100px", "aTargets": [2,3,9] },
{ "bVisible": false, "aTargets": [6,7,10]}
],
"oLanguage": (datatable_lang != "") ?
{

@ -16,8 +16,9 @@
/*Virtual networks tab plugin*/
var vnets_tab_content =
'<form id="virtualNetworks_form" action="javascript:alert(\'js error!\');">\
var vnets_tab_content = '\
<h2>'+tr("Virtual Networks")+'</h2>\
<form id="virtualNetworks_form" action="javascript:alert(\'js error!\');">\
<div class="action_blocks">\
</div>\
<table id="datatable_vnetworks" class="display">\
@ -37,6 +38,9 @@ var vnets_tab_content =
<tbody id="tbodyvnetworks">\
</tbody>\
</table>\
<p class="legend">\
'+tr("Tip: edit the leases of a network by clicking on one and going to the lease management tab.")+'\
</p>\
</form>';
var create_vn_tmpl =
@ -1174,12 +1178,17 @@ $(document).ready(function(){
"bJQueryUI": true,
"bSortClasses": false,
"bAutoWidth":false,
"sDom" : '<"H"lfrC>t<"F"ip>',
"oColVis": {
"aiExclude": [ 0 ]
},
"sPaginationType": "full_numbers",
"aoColumnDefs": [
{ "bSortable": false, "aTargets": ["check"] },
{ "sWidth": "60px", "aTargets": [0,6,7,8] },
{ "sWidth": "35px", "aTargets": [1] },
{ "sWidth": "100px", "aTargets": [2,3,5] }
{ "sWidth": "100px", "aTargets": [2,3,5] },
{ "bVisible": false, "aTargets": [7]}
],
"oLanguage": (datatable_lang != "") ?
{

@ -76,7 +76,8 @@ var vres_tab_content =
<div class="panel">\
<h3>' + tr("Virtual Resources") + '</h3>\
<div class="panel_info">\
<p>'+tr("The Virtual Resources menu allows management of Virtual Machine Templates, Instances and Images.")+'</p>\
<p><img src="images/server_icon.png" alt="server" width="128" height="128" style="float:right;" />'+tr("The Virtual Resources menu allows management of Virtual Machine Templates, Instances and storage (Images).")+'</p>\
<p>'+tr("Virtual Machine templates can be instantiated as many times as you want. You can do it from the Templates tab or by creating a new VM in the VM tab. The second method allows you to customize the name and the number of VMs you want to launch.")+'</p>\
<p>'+tr("You can find further information on the following links:")+'</p>\
<ul>\
<li><a href="http://opennebula.org/documentation:rel3.4:vm_guide" target="_blank">Creating Virtual Machines</a></li>\

@ -1,6 +1,6 @@
//Translated by
lang="en_US"
datatable_lang=""
datatable_lang="en_datatable.txt"
locale={
"802.1Q":"",
"Accept (default)":"",

@ -0,0 +1,17 @@
{
"sProcessing": "Processing...",
"sLengthMenu": "Show _MENU_ entries",
"sZeroRecords": "No matching records found",
"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
"sInfoEmpty": "Showing 0 to 0 of 0 entries",
"sInfoFiltered": "(filtered from _MAX_ total entries)",
"sInfoPostFix": "",
"sSearch": "Search:",
"sUrl": "",
"oPaginate": {
"sFirst": "First",
"sPrevious": "Previous",
"sNext": "Next",
"sLast": "Last"
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,76 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* ColVis styles
*/
.ColVis {
float: right;
margin-bottom: 1em;
}
.ColVis_Button {
position: relative;
float: left;
margin-right: 3px;
padding: 3px 5px;
height: 30px;
background-color: #fff;
border: 1px solid #d0d0d0;
cursor: pointer;
*cursor: hand;
}
button.ColVis_Button::-moz-focus-inner {
border: none !important;
padding: 0;
}
.ColVis_text_hover {
border: 1px solid #999;
background-color: #f0f0f0;
}
div.ColVis_collectionBackground {
background-color: black;
z-index: 1100;
}
div.ColVis_collection {
position: relative;
width: 150px;
background-color: #f3f3f3;
padding: 3px;
border: 1px solid #ccc;
z-index: 1102;
}
div.ColVis_collection button.ColVis_Button {
background-color: white;
width: 100%;
float: none;
margin-bottom: 2px;
}
div.ColVis_catcher {
position: absolute;
z-index: 1101;
}
.disabled {
color: #999;
}
button.ColVis_Button {
text-align: left;
}
div.ColVis_collection button.ColVis_Button:hover {
border: 1px solid #999;
background-color: #f0f0f0;
}
span.ColVis_radio {
display: inline-block;
width: 20px;
}

@ -0,0 +1,33 @@
/*
* File: ColVis.min.js
* Version: 1.0.7
* Author: Allan Jardine (www.sprymedia.co.uk)
*
* Copyright 2010-2011 Allan Jardine, all rights reserved.
*
* This source file is free software, under either the GPL v2 license or a
* BSD (3 point) style license, as supplied with this software.
*
* This source file is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
*/
(function(d){ColVis=function(a,b){(!this.CLASS||"ColVis"!=this.CLASS)&&alert("Warning: ColVis must be initialised with the keyword 'new'");"undefined"==typeof b&&(b={});this.s={dt:null,oInit:b,fnStateChange:null,activate:"click",sAlign:"left",buttonText:"Show / hide columns",hidden:!0,aiExclude:[],abOriginal:[],bShowAll:!1,sShowAll:"Show All",bRestore:!1,sRestore:"Restore original",iOverlayFade:500,fnLabel:null,sSize:"auto",bCssPosition:!1};this.dom={wrapper:null,button:null,collection:null,background:null,
catcher:null,buttons:[],restore:null};ColVis.aInstances.push(this);this.s.dt=a;this._fnConstruct();return this};ColVis.prototype={fnRebuild:function(){for(var a=this.dom.buttons.length-1;0<=a;a--)null!==this.dom.buttons[a]&&this.dom.collection.removeChild(this.dom.buttons[a]);this.dom.buttons.splice(0,this.dom.buttons.length);this.dom.restore&&this.dom.restore.parentNode(this.dom.restore);this._fnAddButtons();this._fnDrawCallback()},_fnConstruct:function(){this._fnApplyCustomisation();var a=this;
this.dom.wrapper=document.createElement("div");this.dom.wrapper.className="ColVis TableTools";this.dom.button=this._fnDomBaseButton(this.s.buttonText);this.dom.button.className+=" ColVis_MasterButton";this.dom.wrapper.appendChild(this.dom.button);this.dom.catcher=this._fnDomCatcher();this.dom.collection=this._fnDomCollection();this.dom.background=this._fnDomBackground();this._fnAddButtons();for(var b=0,c=this.s.dt.aoColumns.length;b<c;b++)this.s.abOriginal.push(this.s.dt.aoColumns[b].bVisible);this.s.dt.aoDrawCallback.push({fn:function(){a._fnDrawCallback.call(a)},
sName:"ColVis"})},_fnApplyCustomisation:function(){var a=this.s.oInit;if("undefined"!=typeof a.activate)this.s.activate=a.activate;if("undefined"!=typeof a.buttonText)this.s.buttonText=a.buttonText;if("undefined"!=typeof a.aiExclude)this.s.aiExclude=a.aiExclude;if("undefined"!=typeof a.bRestore)this.s.bRestore=a.bRestore;if("undefined"!=typeof a.sRestore)this.s.sRestore=a.sRestore;if("undefined"!=typeof a.bShowAll)this.s.bShowAll=a.bShowAll;if("undefined"!=typeof a.sShowAll)this.s.sShowAll=a.sShowAll;
if("undefined"!=typeof a.sAlign)this.s.sAlign=a.sAlign;if("undefined"!=typeof a.fnStateChange)this.s.fnStateChange=a.fnStateChange;if("undefined"!=typeof a.iOverlayFade)this.s.iOverlayFade=a.iOverlayFade;if("undefined"!=typeof a.fnLabel)this.s.fnLabel=a.fnLabel;if("undefined"!=typeof a.sSize)this.s.sSize=a.sSize;if("undefined"!=typeof a.bCssPosition)this.s.bCssPosition=a.bCssPosition},_fnDrawCallback:function(){for(var a=this.s.dt.aoColumns,b=0,c=a.length;b<c;b++)null!==this.dom.buttons[b]&&(a[b].bVisible?
d("input",this.dom.buttons[b]).attr("checked","checked"):d("input",this.dom.buttons[b]).removeAttr("checked"))},_fnAddButtons:function(){for(var a,b=","+this.s.aiExclude.join(",")+",",c=0,d=this.s.dt.aoColumns.length;c<d;c++)-1==b.indexOf(","+c+",")?(a=this._fnDomColumnButton(c),this.dom.buttons.push(a),this.dom.collection.appendChild(a)):this.dom.buttons.push(null);this.s.bRestore&&(a=this._fnDomRestoreButton(),a.className+=" ColVis_Restore",this.dom.buttons.push(a),this.dom.collection.appendChild(a));
this.s.bShowAll&&(a=this._fnDomShowAllButton(),a.className+=" ColVis_ShowAll",this.dom.buttons.push(a),this.dom.collection.appendChild(a))},_fnDomRestoreButton:function(){var a=this,b=document.createElement("button"),c=document.createElement("span");b.className=!this.s.dt.bJUI?"ColVis_Button TableTools_Button":"ColVis_Button TableTools_Button ui-button ui-state-default";b.appendChild(c);d(c).html('<span class="ColVis_title">'+this.s.sRestore+"</span>");d(b).click(function(){for(var b=0,c=a.s.abOriginal.length;b<
c;b++)a.s.dt.oInstance.fnSetColumnVis(b,a.s.abOriginal[b],!1);a._fnAdjustOpenRows();a.s.dt.oInstance.fnDraw(!1)});return b},_fnDomShowAllButton:function(){var a=this,b=document.createElement("button"),c=document.createElement("span");b.className=!this.s.dt.bJUI?"ColVis_Button TableTools_Button":"ColVis_Button TableTools_Button ui-button ui-state-default";b.appendChild(c);d(c).html('<span class="ColVis_title">'+this.s.sShowAll+"</span>");d(b).click(function(){for(var b=0,c=a.s.abOriginal.length;b<
c;b++)-1===a.s.aiExclude.indexOf(b)&&a.s.dt.oInstance.fnSetColumnVis(b,!0,!1);a._fnAdjustOpenRows();a.s.dt.oInstance.fnDraw(!1)});return b},_fnDomColumnButton:function(a){var b=this,c=this.s.dt.aoColumns[a],e=document.createElement("button"),g=document.createElement("span"),f=this.s.dt;e.className=!f.bJUI?"ColVis_Button TableTools_Button":"ColVis_Button TableTools_Button ui-button ui-state-default";e.appendChild(g);c=null===this.s.fnLabel?c.sTitle:this.s.fnLabel(a,c.sTitle,c.nTh);d(g).html('<span class="ColVis_radio"><input type="checkbox"/></span><span class="ColVis_title">'+
c+"</span>");d(e).click(function(c){var e=!d("input",this).is(":checked");"input"==c.target.nodeName.toLowerCase()&&(e=d("input",this).is(":checked"));c=d.fn.dataTableExt.iApiIndex;d.fn.dataTableExt.iApiIndex=b._fnDataTablesApiIndex.call(b);f.oFeatures.bServerSide&&(""!==f.oScroll.sX||""!==f.oScroll.sY)?(b.s.dt.oInstance.fnSetColumnVis(a,e,!1),b.s.dt.oInstance.oApi._fnScrollDraw(b.s.dt),b._fnDrawCallback()):b.s.dt.oInstance.fnSetColumnVis(a,e);d.fn.dataTableExt.iApiIndex=c;null!==b.s.fnStateChange&&
b.s.fnStateChange.call(b,a,e)});return e},_fnDataTablesApiIndex:function(){for(var a=0,b=this.s.dt.oInstance.length;a<b;a++)if(this.s.dt.oInstance[a]==this.s.dt.nTable)return a;return 0},_fnDomBaseButton:function(a){var b=this,c=document.createElement("button"),e=document.createElement("span"),g="mouseover"==this.s.activate?"mouseover":"click";c.className=!this.s.dt.bJUI?"ColVis_Button TableTools_Button":"ColVis_Button TableTools_Button ui-button ui-state-default";c.appendChild(e);e.innerHTML=a;d(c).bind(g,
function(a){b._fnCollectionShow();a.preventDefault()});return c},_fnDomCollection:function(){var a=document.createElement("div");a.style.display="none";a.className=!this.s.dt.bJUI?"ColVis_collection TableTools_collection":"ColVis_collection TableTools_collection ui-buttonset ui-buttonset-multi";if(!this.s.bCssPosition)a.style.position="absolute";d(a).css("opacity",0);return a},_fnDomCatcher:function(){var a=this,b=document.createElement("div");b.className="ColVis_catcher TableTools_catcher";d(b).click(function(){a._fnCollectionHide.call(a,
null,null)});return b},_fnDomBackground:function(){var a=this,b=document.createElement("div");b.style.position="absolute";b.style.left="0px";b.style.top="0px";b.className="ColVis_collectionBackground TableTools_collectionBackground";d(b).css("opacity",0);d(b).click(function(){a._fnCollectionHide.call(a,null,null)});"mouseover"==this.s.activate&&d(b).mouseover(function(){a.s.overcollection=!1;a._fnCollectionHide.call(a,null,null)});return b},_fnCollectionShow:function(){var a=this,b,c;b=d(this.dom.button).offset();
var e=this.dom.collection,g=this.dom.background,f=parseInt(b.left,10),h=parseInt(b.top+d(this.dom.button).outerHeight(),10);if(!this.s.bCssPosition)e.style.top=h+"px",e.style.left=f+"px";e.style.display="block";d(e).css("opacity",0);c=d(window).height();var i=d(document).height(),j=d(window).width(),h=d(document).width();g.style.height=(c>i?c:i)+"px";g.style.width=(j<h?j:h)+"px";c=this.dom.catcher.style;c.height=d(this.dom.button).outerHeight()+"px";c.width=d(this.dom.button).outerWidth()+"px";c.top=
b.top+"px";c.left=f+"px";document.body.appendChild(g);document.body.appendChild(e);document.body.appendChild(this.dom.catcher);if("auto"==this.s.sSize){i=[];this.dom.collection.style.width="auto";for(b=0,c=this.dom.buttons.length;b<c;b++)if(null!==this.dom.buttons[b])this.dom.buttons[b].style.width="auto",i.push(d(this.dom.buttons[b]).outerWidth());iMax=Math.max.apply(window,i);for(b=0,c=this.dom.buttons.length;b<c;b++)if(null!==this.dom.buttons[b])this.dom.buttons[b].style.width=iMax+"px";this.dom.collection.style.width=
iMax+"px"}if(!this.s.bCssPosition&&(e.style.left="left"==this.s.sAlign?f+"px":f-d(e).outerWidth()+d(this.dom.button).outerWidth()+"px",b=d(e).outerWidth(),d(e).outerHeight(),f+b>h))e.style.left=h-b+"px";setTimeout(function(){d(e).animate({opacity:1},a.s.iOverlayFade);d(g).animate({opacity:0.1},a.s.iOverlayFade,"linear",function(){jQuery.browser.msie&&"6.0"==jQuery.browser.version&&a._fnDrawCallback()})},10);this.s.hidden=!1},_fnCollectionHide:function(){var a=this;if(!this.s.hidden&&null!==this.dom.collection)this.s.hidden=
!0,d(this.dom.collection).animate({opacity:0},a.s.iOverlayFade,function(){this.style.display="none"}),d(this.dom.background).animate({opacity:0},a.s.iOverlayFade,function(){document.body.removeChild(a.dom.background);document.body.removeChild(a.dom.catcher)})},_fnAdjustOpenRows:function(){for(var a=this.s.dt.aoOpenRows,b=this.s.dt.oApi._fnVisbleColumns(this.s.dt),c=0,d=a.length;c<d;c++)a[c].nTr.getElementsByTagName("td")[0].colSpan=b}};ColVis.fnRebuild=function(a){var b=null;if("undefined"!=typeof a)b=
a.fnSettings().nTable;for(var c=0,d=ColVis.aInstances.length;c<d;c++)("undefined"==typeof a||b==ColVis.aInstances[c].s.dt.nTable)&&ColVis.aInstances[c].fnRebuild()};ColVis.aInstances=[];ColVis.prototype.CLASS="ColVis";ColVis.VERSION="1.0.7";ColVis.prototype.VERSION=ColVis.VERSION;"function"==typeof d.fn.dataTable&&"function"==typeof d.fn.dataTableExt.fnVersionCheck&&d.fn.dataTableExt.fnVersionCheck("1.7.0")?d.fn.dataTableExt.aoFeatures.push({fnInit:function(a){return(new ColVis(a,"undefined"==typeof a.oInit.oColVis?
{}:a.oInit.oColVis)).dom.wrapper},cFeature:"C",sFeature:"ColVis"}):alert("Warning: ColVis requires DataTables 1.7 or greater - www.datatables.net/download")})(jQuery);

File diff suppressed because one or more lines are too long

@ -171,6 +171,7 @@ helpers do
end
before do
cache_control :private, :must_revalidate
unless request.path=='/login' || request.path=='/'
halt 401 unless authorized?

@ -6,16 +6,19 @@
<!-- Vendor Libraries -->
<link rel="stylesheet" type="text/css" href="vendor/dataTables/demo_table_jui.css" />
<link rel="stylesheet" type="text/css" href="vendor/dataTables/ColVis.css" />
<link rel="stylesheet" type="text/css" href="vendor/jQueryUI/jquery-ui-1.8.16.custom.css" />
<link rel="stylesheet" type="text/css" href="vendor/jGrowl/jquery.jgrowl.css" />
<link rel="stylesheet" type="text/css" href="vendor/jQueryLayout/layout-default-latest.css" />
<link rel="stylesheet" href="vendor/noVNC/include/plain.css">
<script type="text/javascript" src="vendor/jQuery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="vendor/jQuery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="vendor/jGrowl/jquery.jgrowl_minimized.js"></script>
<script type="text/javascript" src="vendor/jQueryUI/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="vendor/jQueryLayout/jquery.layout-latest.min.js"></script>
<script type="text/javascript" src="vendor/dataTables/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="vendor/dataTables/ColVis.min.js"></script>
<!-- <script type="text/javascript" src="vendor/dataTables/ColReorderWithResize.js"></script>-->
<script language="javascript" type="text/javascript" src="vendor/flot/jquery.flot.min.js"></script>
<script type="text/javascript" src="vendor/fileuploader/fileuploader.js"></script>