mirror of https://github.com/apache/cloudstack.git
Merge pull request #2456 from rafaelweingartner/CLOUDSTACK-10293
[CLOUDSTACK-10293] Single view network ACL rules listing
This commit is contained in:
commit
e9da30b24e
|
|
@ -8391,7 +8391,6 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal
|
|||
border-right: 1px solid #CFC9C9;
|
||||
height: 15px;
|
||||
overflow: auto;
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.multi-edit .data .data-body .data-item > table tbody tr td span {
|
||||
|
|
@ -8426,8 +8425,44 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal
|
|||
color: #0000FF;
|
||||
}
|
||||
|
||||
.multi-edit .data .data-body .data-item table tbody tr td.multi-actions {
|
||||
border-right: none;
|
||||
div#details-tab-aclRules table.multi-edit tr th.number,
|
||||
div#details-tab-aclRules div.data-item table tr td.number {
|
||||
width: 45px !important;
|
||||
min-width: 45px !important;
|
||||
max-width: 45px !important;
|
||||
}
|
||||
|
||||
div#details-tab-aclRules div.multi-edit table tr th.action,
|
||||
div#details-tab-aclRules div.multi-edit table tr td.action {
|
||||
width: 40px !important;
|
||||
min-width: 40px !important;
|
||||
max-width: 40px !important;
|
||||
}
|
||||
|
||||
div#details-tab-aclRules div.multi-edit table tr th.protocol,
|
||||
div#details-tab-aclRules div.multi-edit table tr td.protocol {
|
||||
width: 50px !important;
|
||||
min-width: 50px !important;
|
||||
max-width: 50px !important;
|
||||
}
|
||||
|
||||
div#details-tab-aclRules div.multi-edit table tr th.protocolnumber,
|
||||
div#details-tab-aclRules div.multi-edit table tr td.protocolnumber {
|
||||
width: 60px !important;
|
||||
min-width: 60px !important;
|
||||
max-width: 60px !important;
|
||||
}
|
||||
|
||||
div#details-tab-aclRules div.multi-edit table tr th.startport, div#details-tab-aclRules div.multi-edit table tr td.startport,
|
||||
div#details-tab-aclRules div.multi-edit table tr th.endport, div#details-tab-aclRules div.multi-edit table tr td.endport {
|
||||
width: 70px !important;
|
||||
min-width: 70px !important;
|
||||
max-width: 70px !important;
|
||||
}
|
||||
|
||||
div#details-tab-aclRules td.cidrlist span {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.multi-edit .data .data-body .data-item table tbody tr td.multi-actions .action {
|
||||
|
|
@ -8548,17 +8583,18 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal
|
|||
|
||||
.detail-view .multi-edit table tr th,
|
||||
.detail-view .multi-edit table tr td {
|
||||
width: 87px !important;
|
||||
min-width: 87px !important;
|
||||
max-width: 87px !important;
|
||||
width: 84px !important;
|
||||
min-width: 84px !important;
|
||||
max-width: 84px !important;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/* special case for 'Source CIDR' column - make it wide enough to fit a CIDR without ellipsizing*/
|
||||
.detail-view .multi-edit table tr th.cidrlist,
|
||||
.detail-view .multi-edit table tr td.cidrlist {
|
||||
min-width: 112px !important;
|
||||
max-width: 112px !important;
|
||||
min-width: 118px !important;
|
||||
max-width: 118px !important;
|
||||
padding: 0 0 0 0;
|
||||
}
|
||||
.detail-view .multi-edit td.cidrlist input {
|
||||
width: 85%;
|
||||
|
|
@ -8615,9 +8651,9 @@ div.container div.panel div#details-tab-addloadBalancer.detail-group div.loadBal
|
|||
/*Sortable*/
|
||||
.multi-edit table tbody tr td.reorder,
|
||||
.multi-edit table thead tr th.reorder {
|
||||
width: 30px !important;
|
||||
min-width: 30px !important;
|
||||
max-width: 30px !important;
|
||||
width: 16px !important;
|
||||
min-width: 16px !important;
|
||||
max-width: 16px !important;
|
||||
}
|
||||
|
||||
/*Security Rules*/
|
||||
|
|
@ -13037,7 +13073,7 @@ div.ui-dialog div.autoscaler div.field-group div.form-container form div.form-it
|
|||
-khtml-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
border-radius: 10px 10px 10px 10px;
|
||||
background-position: -74px -162px;
|
||||
background-position: -82px -162px;
|
||||
}
|
||||
|
||||
.moveDrag:hover .icon {
|
||||
|
|
@ -13357,4 +13393,3 @@ div.panel.copy-template-destination-list div.list-view div.fixed-header{
|
|||
.multi-edit-add-list .ui-button.copytemplatecancel {
|
||||
left: 310px;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP Code",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP Type",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "تغير خصائص العنصر",
|
||||
"confirm.enable.s3": "فضلا قم بتعبئة البيانات القادمة لتمكين التخزين S3 للذاكرة الثانوية.",
|
||||
"confirm.enable.swift": "Please fill in the following information to enable support for Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "إضافة مسار",
|
||||
"label.add.rule": "إضافة قاعدة",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Add Secondary Storage",
|
||||
"label.add.security.group": "Add Security Group",
|
||||
"label.add.service.offering": "Add Service Offering",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "المشاريع",
|
||||
"label.protocol": "Protocol",
|
||||
"label.protocol.number": "Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Provider",
|
||||
"label.providers": "Providers",
|
||||
"label.public": "Public",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routing",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Rule Number",
|
||||
"label.rules": "Rules",
|
||||
"label.running.vms": "Running VMs",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP Code",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP Type",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Changed item properties",
|
||||
"confirm.enable.s3": "Please fill in the following information to enable support for S3-backed Secondary Storage",
|
||||
"confirm.enable.swift": "Si us plau ompliu la següent informació per habilitar el suport per a Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Add route",
|
||||
"label.add.rule": "Afegir regla",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Add Secondary Storage",
|
||||
"label.add.security.group": "Add Security Group",
|
||||
"label.add.service.offering": "Add Service Offering",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projectes",
|
||||
"label.protocol": "Protocol",
|
||||
"label.protocol.number": "Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Provider",
|
||||
"label.providers": "Proveïdors",
|
||||
"label.public": "Public",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routing",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Rule Number",
|
||||
"label.rules": "Rules",
|
||||
"label.running.vms": "Running VMs",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP-Code",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP-Typ",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Geänderte Eintragseigenschaften",
|
||||
"confirm.enable.s3": "Bitte fügen Sie die folgenden Informationen hinzu, um die Unterstützung für \"S3-backed Secondary Storage\" hinzuzufügen",
|
||||
"confirm.enable.swift": "Bitte fügen Sie die folgenden Informationen hinzu, um die Unterstützung für Swift zu ermöglichen.",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Rolle hinzufügen",
|
||||
"label.add.route": "Route hinzufügen",
|
||||
"label.add.rule": "Regel hinzufügen",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Sekundärspeicher hinzufügen",
|
||||
"label.add.security.group": "Sicherheitsgruppe hinzufügen",
|
||||
"label.add.service.offering": "Dienstangebot hinzufügen",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projekte",
|
||||
"label.protocol": "Protokoll",
|
||||
"label.protocol.number": "Protokollnummer",
|
||||
"label.protocol.number.short" : "#Protokoll",
|
||||
"label.provider": "Anbieter",
|
||||
"label.providers": "Anbieter",
|
||||
"label.public": "Öffentlich",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routing",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Regel",
|
||||
"label.rule.number.short": "#Regel",
|
||||
"label.rule.number": "Regelnummer",
|
||||
"label.rules": "Regeln",
|
||||
"label.running.vms": "Laufende VMs",
|
||||
|
|
|
|||
|
|
@ -14,8 +14,11 @@
|
|||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
var dictionary = {"ICMP.code":"ICMP Code",
|
||||
var dictionary = {
|
||||
"ICMP.code":"ICMP Code",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type":"ICMP Type",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties":"Changed item properties",
|
||||
"confirm.enable.s3":"Please fill in the following information to enable support for S3-backed Secondary Storage",
|
||||
"confirm.enable.swift":"Please fill in the following information to enable support for Swift",
|
||||
|
|
@ -370,6 +373,7 @@ var dictionary = {"ICMP.code":"ICMP Code",
|
|||
"label.add.role":"Add Role",
|
||||
"label.add.route":"Add route",
|
||||
"label.add.rule":"Add rule",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage":"Add Secondary Storage",
|
||||
"label.add.security.group":"Add Security Group",
|
||||
"label.add.service.offering":"Add Service Offering",
|
||||
|
|
@ -1316,6 +1320,7 @@ var dictionary = {"ICMP.code":"ICMP Code",
|
|||
"label.promiscuous.mode":"Promiscuous Mode",
|
||||
"label.protocol":"Protocol",
|
||||
"label.protocol.number":"Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider":"Provider",
|
||||
"label.providers":"Providers",
|
||||
"label.public":"Public",
|
||||
|
|
@ -1467,6 +1472,7 @@ var dictionary = {"ICMP.code":"ICMP Code",
|
|||
"label.routing.host":"Routing Host",
|
||||
"label.rule":"Rule",
|
||||
"label.rule.number":"Rule Number",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rules":"Rules",
|
||||
"label.running.vms":"Running VMs",
|
||||
"label.s3.access_key":"Access Key",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "Código ICMP",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "Tipo ICMP",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Cambiadas las propiedades del elemento",
|
||||
"confirm.enable.s3": "Por favor, complete la siguiente información para habilitar el soporte del Almacenamiento Secundario sobre S3",
|
||||
"confirm.enable.swift": "Por favor, complete la siguiente información para habilitar el soporte para Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Agregar Rol",
|
||||
"label.add.route": "Agregar ruta",
|
||||
"label.add.rule": "Agregar regla",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Añadir almacenamiento secundario",
|
||||
"label.add.security.group": "Agregar grupo de seguridad",
|
||||
"label.add.service.offering": "Añadir Oferta de Servicio",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Proyectos",
|
||||
"label.protocol": "Protocolo",
|
||||
"label.protocol.number": "Número de Protocolo",
|
||||
"label.protocol.number.short" : "#Protocolo",
|
||||
"label.provider": "Proveedor",
|
||||
"label.providers": "Proveedores",
|
||||
"label.public": "Pública",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Enrutamiento",
|
||||
"label.routing.host": "Servidor de Routeo",
|
||||
"label.rule": "Regla",
|
||||
"label.rule.number.short": "#Regla",
|
||||
"label.rule.number": "Número de Regla",
|
||||
"label.rules": "Reglas",
|
||||
"label.running.vms": "MVs corriendo",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "Code ICMP",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "Type ICMP",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Propriétés de l'élément modifiées",
|
||||
"confirm.enable.s3": "Remplir les informations suivantes pour activer le support de stockage secondaire S3",
|
||||
"confirm.enable.swift": "Remplir les informations suivantes pour activer Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Ajouter Rôle",
|
||||
"label.add.route": "Ajouter route",
|
||||
"label.add.rule": "Ajouter règle",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Ajouter un stockage secondaire",
|
||||
"label.add.security.group": "Ajouter un groupe de sécurité",
|
||||
"label.add.service.offering": "Ajouter Offre Service",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projets",
|
||||
"label.protocol": "Protocole",
|
||||
"label.protocol.number": "Numéro Protocole",
|
||||
"label.protocol.number.short" : "#Protocole",
|
||||
"label.provider": "Fournisseur",
|
||||
"label.providers": "Fournisseurs",
|
||||
"label.public": "Publique",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routage",
|
||||
"label.routing.host": "Hôte de routage",
|
||||
"label.rule": "Règle",
|
||||
"label.rule.number.short": "#Règle",
|
||||
"label.rule.number": "Numéro règle",
|
||||
"label.rules": "Règles",
|
||||
"label.running.vms": "VMs actives",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP kód",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP típus",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Az elem tulajdonságai megváltoztak",
|
||||
"confirm.enable.s3": "Töltsd ki a következő információkat az S3 másodlagos tár bekapcsolásához!",
|
||||
"confirm.enable.swift": "Töltsd ki a következő információkat a Swift támogatás bekapcsolásához!",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Útvonal felvétele",
|
||||
"label.add.rule": "Szabály felvétele",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Másodlagos tár felvétele",
|
||||
"label.add.security.group": "Biztonsági csoport felvétele",
|
||||
"label.add.service.offering": "Szolgáltatás ajánlat felvétele",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projektek",
|
||||
"label.protocol": "Protokol",
|
||||
"label.protocol.number": "Protokoll szám",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Szolgáltató",
|
||||
"label.providers": "Szolgáltatók",
|
||||
"label.public": "Publikus",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Útvonalválasztás",
|
||||
"label.routing.host": "Routing kiszolgáló",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Szabály szám",
|
||||
"label.rules": "Szabályok",
|
||||
"label.running.vms": "Futó VM-ek",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "Codice ICMP",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "Tipo ICMP",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Elementi delle proprietà modificati",
|
||||
"confirm.enable.s3": "Si prega di inserire i valori richiesti per abilitare il supporto per il Secondary Storage di tipo S3",
|
||||
"confirm.enable.swift": "Si prega di inserire i valori richiesti per abilitare il supporto per Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Aggiungere una rotta",
|
||||
"label.add.rule": "Aggiungere regola",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Aggiungere uno Storage Secondario",
|
||||
"label.add.security.group": "Aggiungere un Gruppo di Sicurezza",
|
||||
"label.add.service.offering": "Aggiungere un'Offerta di Servizio",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Progetti",
|
||||
"label.protocol": "Protocol",
|
||||
"label.protocol.number": "Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Provider",
|
||||
"label.providers": "Fornitori",
|
||||
"label.public": "Public",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routing",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Rule Number",
|
||||
"label.rules": "Regole",
|
||||
"label.running.vms": "Running VMs",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP コード",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP の種類",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "項目のプロパティの変更",
|
||||
"confirm.enable.s3": "S3 ベースのセカンダリ ストレージのサポートを有効にするには、次の情報を入力してください。",
|
||||
"confirm.enable.swift": "Swift のサポートを有効にするには、次の情報を入力してください。",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "ルートの追加",
|
||||
"label.add.rule": "規則の追加",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "セカンダリ ストレージの追加",
|
||||
"label.add.security.group": "セキュリティ グループの追加",
|
||||
"label.add.service.offering": "サービス オファリングの追加",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "プロジェクト",
|
||||
"label.protocol": "プロトコル",
|
||||
"label.protocol.number": "プロトコル番号",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "プロバイダー",
|
||||
"label.providers": "プロバイダー",
|
||||
"label.public": "パブリック",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "ルーティング",
|
||||
"label.routing.host": "ルーティング ホスト",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "規則番号",
|
||||
"label.rules": "規則",
|
||||
"label.running.vms": "実行中の VM",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP 코드",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP 종류",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "항목 속성 변경",
|
||||
"confirm.enable.s3": "S3 기반 2차 저장소 지원을 하려면 아래 정보를 입력해 주십시오.",
|
||||
"confirm.enable.swift": "Swift 기술 지원를 사용 하려면 다음 정보를 입력해 주십시오.",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "라우트 추가",
|
||||
"label.add.rule": "규칙 추가",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "2차 스토리지 추가",
|
||||
"label.add.security.group": "보안 그룹 추가",
|
||||
"label.add.service.offering": "서비스제공 추가",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "프로젝트",
|
||||
"label.protocol": "프로토콜",
|
||||
"label.protocol.number": "Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Provider",
|
||||
"label.providers": "제공자",
|
||||
"label.public": "공개",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "라우팅",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Rule Number",
|
||||
"label.rules": "규칙",
|
||||
"label.running.vms": "실행중 VM",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP-kode",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP-type",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Endrede egenskaper",
|
||||
"confirm.enable.s3": "Vennligst fyll inn følgende informasjon for å aktivere støtte for S3-støttet sekundærlagring",
|
||||
"confirm.enable.swift": "Vennligst fyll inn følgende informasjon for å aktivere støtte for Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Legg til rute",
|
||||
"label.add.rule": "Legg til regel",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Legg til sekundærlagring",
|
||||
"label.add.security.group": "Legg til sikkerhetsgruppe",
|
||||
"label.add.service.offering": "Legg til tjenestetilbud",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Prosjekter",
|
||||
"label.protocol": "Protokoll",
|
||||
"label.protocol.number": "Protokollnummer",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Tilbyder",
|
||||
"label.providers": "Tilbydere",
|
||||
"label.public": "Offentlig",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Ruting",
|
||||
"label.routing.host": "Ruter Vert",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Regel",
|
||||
"label.rule.number": "Regelnummer",
|
||||
"label.rules": "Regler",
|
||||
"label.running.vms": "Kjørende VMer",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP Code",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP Type",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Item eigenschappen gewijzigd",
|
||||
"confirm.enable.s3": "Vul de volgende informatie in om ondersteuning voor S3-aangestuurde Secundaire Opslag te activeren",
|
||||
"confirm.enable.swift": "Vul de volgende informatie in om ondersteuning voor Swift te activeren",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Route toevoegen",
|
||||
"label.add.rule": "Regel toevoegen",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Secundaire Opslag toevoegen",
|
||||
"label.add.security.group": "Security Group toevoegen",
|
||||
"label.add.service.offering": "Service Aanbieding toevoegen",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projecten",
|
||||
"label.protocol": "Protocol",
|
||||
"label.protocol.number": "protocol nummer",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Provider",
|
||||
"label.providers": "Providers",
|
||||
"label.public": "Publiek",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routing",
|
||||
"label.routing.host": "routeer machine",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Regel Nummer",
|
||||
"label.rules": "Regels",
|
||||
"label.running.vms": "Draaiende VMs",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP Code",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP Type",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Changed item properties",
|
||||
"confirm.enable.s3": "Please fill in the following information to enable support for S3-backed Secondary Storage",
|
||||
"confirm.enable.swift": "Please fill in the following information to enable support for Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Add route",
|
||||
"label.add.rule": "Dodaj regułę",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Add Secondary Storage",
|
||||
"label.add.security.group": "Add Security Group",
|
||||
"label.add.service.offering": "Add Service Offering",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projekty",
|
||||
"label.protocol": "Protokół",
|
||||
"label.protocol.number": "Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Provider",
|
||||
"label.providers": "Dostawcy",
|
||||
"label.public": "Pobliczny",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Routing",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Rule Number",
|
||||
"label.rules": "Zasady",
|
||||
"label.running.vms": "Running VMs",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "Código ICMP",
|
||||
"ICMP.code.desc": "Informe -1, se vocês quiser permitir todos os códigos ICMP.",
|
||||
"ICMP.type": "Tipo ICMP",
|
||||
"ICMP.type.desc": "Informe -1, se vocês quiser permitir todos os tipos ICMP.",
|
||||
"changed.item.properties": "Propriedades do item alteradas",
|
||||
"confirm.enable.s3": "Por favor, preencha as informações abaixo para habilitar suporte o Storage Secundário fornecido por S3",
|
||||
"confirm.enable.swift": "Por favor, preencha as informações abaixo para habilitar suporte ao Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Adicionar rota",
|
||||
"label.add.rule": "Adicionar regra",
|
||||
"label.add.rule.desc": "Criar nova regra ACL",
|
||||
"label.add.secondary.storage": "Adicionar Storage Secundário",
|
||||
"label.add.security.group": "Adicionar Security Group",
|
||||
"label.add.service.offering": "Adicionar Plano",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Projetos",
|
||||
"label.protocol": "Protocolo",
|
||||
"label.protocol.number": "Número do Protocolo",
|
||||
"label.protocol.number.short" : "#Protocolo",
|
||||
"label.provider": "Provedor",
|
||||
"label.providers": "Providers",
|
||||
"label.public": "Público",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Roteamento",
|
||||
"label.routing.host": "Host de Roteamento",
|
||||
"label.rule": "Regra",
|
||||
"label.rule.number.short": "#Regra",
|
||||
"label.rule.number": "Regra Número",
|
||||
"label.rules": "Regras",
|
||||
"label.running.vms": "VMs Rodando",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "Код ICMP",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "Тип ICMP",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "Параметры элемента изменены",
|
||||
"confirm.enable.s3": "Заполните информацию для включения S3-совместимого дополнительного хранилища",
|
||||
"confirm.enable.swift": "Заполните нижеследующую информацию для включения поддержи Swift",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "Добавить маршрут",
|
||||
"label.add.rule": "Добавить правило",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "Добавить дополнительное хранилище",
|
||||
"label.add.security.group": "Добавить группу безопасности",
|
||||
"label.add.service.offering": "Добавить службу",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "Проекты",
|
||||
"label.protocol": "Протокол",
|
||||
"label.protocol.number": "Protocol Number",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "Поставщики",
|
||||
"label.providers": "Поставщики",
|
||||
"label.public": "Публичный",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "Маршрутизация",
|
||||
"label.routing.host": "Routing Host",
|
||||
"label.rule": "Rule",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "Номер правила",
|
||||
"label.rules": "Правила",
|
||||
"label.running.vms": "Запущенные ВМ",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,9 @@
|
|||
// under the License.
|
||||
var dictionary = {
|
||||
"ICMP.code": "ICMP 代码",
|
||||
"ICMP.code.desc": "Please specify -1 if you want to allow all ICMP codes",
|
||||
"ICMP.type": "ICMP 类型",
|
||||
"ICMP.type.desc": "Please specify -1 if you want to allow all ICMP types.",
|
||||
"changed.item.properties": "更改项目属性",
|
||||
"confirm.enable.s3": "请填写以下信息以启用对 S3 支持的二级存储的支持",
|
||||
"confirm.enable.swift": "请填写以下信息以启用对 SWIFT 的支持",
|
||||
|
|
@ -367,6 +369,7 @@ var dictionary = {
|
|||
"label.add.role": "Add Role",
|
||||
"label.add.route": "添加路由",
|
||||
"label.add.rule": "添加规则",
|
||||
"label.add.rule.desc": "Create a new ACL rule",
|
||||
"label.add.secondary.storage": "添加二级存储",
|
||||
"label.add.security.group": "添加安全组",
|
||||
"label.add.service.offering": "添加服务方案",
|
||||
|
|
@ -1278,6 +1281,7 @@ var dictionary = {
|
|||
"label.projects": "项目",
|
||||
"label.protocol": "协议",
|
||||
"label.protocol.number": "协议编号",
|
||||
"label.protocol.number.short" : "#Protocol",
|
||||
"label.provider": "提供程序",
|
||||
"label.providers": "提供程序",
|
||||
"label.public": "公用",
|
||||
|
|
@ -1427,6 +1431,7 @@ var dictionary = {
|
|||
"label.routing": "正在路由",
|
||||
"label.routing.host": "正在路由主机",
|
||||
"label.rule": "规则",
|
||||
"label.rule.number.short": "#Rule",
|
||||
"label.rule.number": "规则编号",
|
||||
"label.rules": "规则",
|
||||
"label.running.vms": "正在运行的 VM",
|
||||
|
|
|
|||
|
|
@ -79,7 +79,10 @@
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
var $actions = undefined;
|
||||
if(options.editOptionsFirst){
|
||||
$actions = $('<td>').addClass('multi-actions').appendTo($item.find('tr'));
|
||||
}
|
||||
// Setup columns
|
||||
$.each(fields, function(fieldName, field) {
|
||||
if (!field || (options.ignoreEmptyFields && !data[fieldName])) {
|
||||
|
|
@ -160,8 +163,9 @@
|
|||
}
|
||||
|
||||
if (!field.isPassword) {
|
||||
$td.attr('title', data[fieldName]);
|
||||
if (field.edit) {
|
||||
// Edit fields append value of data
|
||||
// Edit fields append value of data
|
||||
if (field.range) {
|
||||
var start = _s(data[field.range[0]]);
|
||||
var end = _s(data[field.range[1]]);
|
||||
|
|
@ -177,7 +181,6 @@
|
|||
} else {
|
||||
$td.append($('<span>').html(_s(data[fieldName])));
|
||||
}
|
||||
$td.attr('title', data[fieldName]);
|
||||
}
|
||||
} else if (field.isBoolean) {
|
||||
var $checkbox = $('<input>');
|
||||
|
|
@ -324,9 +327,9 @@
|
|||
return true;
|
||||
});
|
||||
|
||||
// Actions column
|
||||
var $actions = $('<td>').addClass('multi-actions').appendTo($item.find('tr'));
|
||||
|
||||
if(!options.editOptionsFirst){
|
||||
var $actions = $('<td>').addClass('multi-actions').appendTo($item.find('tr'));
|
||||
}
|
||||
// Align action column width
|
||||
$actions.width($multi.find('th.multi-actions').width() + 4);
|
||||
|
||||
|
|
@ -905,16 +908,20 @@
|
|||
var $thead = $('<tr>').appendTo(
|
||||
$('<thead>').appendTo($inputTable)
|
||||
);
|
||||
var $inputForm = $('<tr>').appendTo(
|
||||
$('<tbody>').appendTo($inputTable)
|
||||
);
|
||||
if (!args.doNotShowInputTable){
|
||||
var $inputForm = $('<tr>').appendTo(
|
||||
$('<tbody>').appendTo($inputTable)
|
||||
);
|
||||
}
|
||||
var $dataBody = $('<div>').addClass('data-body').appendTo($dataTable);
|
||||
|
||||
// Setup input table headers
|
||||
|
||||
if (reorder) {
|
||||
$('<th>').addClass('reorder').appendTo($thead);
|
||||
$('<td>').addClass('reorder').appendTo($inputForm);
|
||||
if (!args.doNotShowInputTable){
|
||||
$('<td>').addClass('reorder').appendTo($inputForm);
|
||||
}
|
||||
$multi.find('.data-body').sortable({
|
||||
handle: '.action.moveDrag',
|
||||
|
||||
|
|
@ -946,6 +953,13 @@
|
|||
});
|
||||
}
|
||||
|
||||
if (args.editOptionsFirst && args.actions && !args.noHeaderActionsColumn) {
|
||||
$thead.append($('<th></th>').html(_l('label.actions')).addClass('multi-actions'));
|
||||
if (!args.doNotShowInputTable){
|
||||
$inputForm.append($('<td></td>').addClass('multi-actions'));
|
||||
}
|
||||
}
|
||||
|
||||
$.each(args.fields, function(fieldName, field) {
|
||||
if (!field) return true;
|
||||
|
||||
|
|
@ -954,7 +968,10 @@
|
|||
$th.appendTo($thead);
|
||||
var $td = $('<td>').addClass(fieldName);
|
||||
$td.attr('rel', fieldName);
|
||||
$td.appendTo($inputForm);
|
||||
|
||||
if (!args.doNotShowInputTable){
|
||||
$td.appendTo($inputForm);
|
||||
}
|
||||
|
||||
var isHidden = $.isFunction(field.isHidden) ?
|
||||
field.isHidden({ context: context }) : field.isHidden;
|
||||
|
|
@ -1071,7 +1088,10 @@
|
|||
).appendTo($td);
|
||||
}
|
||||
|
||||
if (field.desc) $input.attr('title', field.desc);
|
||||
if (field.desc){
|
||||
$input.attr('title', field.desc);
|
||||
$th.attr('title', _l(field.desc));
|
||||
}
|
||||
});
|
||||
|
||||
// Setup header fields
|
||||
|
|
@ -1093,134 +1113,137 @@
|
|||
.prependTo($multi);
|
||||
}
|
||||
|
||||
if (args.actions && !args.noHeaderActionsColumn) {
|
||||
if (!args.editOptionsFirst && args.actions && !args.noHeaderActionsColumn) {
|
||||
$thead.append($('<th></th>').html(_l('label.actions')).addClass('multi-actions'));
|
||||
$inputForm.append($('<td></td>').addClass('multi-actions'));
|
||||
if (!args.doNotShowInputTable){
|
||||
$inputForm.append($('<td></td>').addClass('multi-actions'));
|
||||
}
|
||||
}
|
||||
if($addVM){
|
||||
$addVM.bind('click', function() {
|
||||
// Validate form first
|
||||
if (!$multiForm.valid()) {
|
||||
if ($multiForm.find('input.error:visible').size()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var $dataList;
|
||||
var addItem = function(itemData) {
|
||||
var data = {};
|
||||
|
||||
$.each(getMultiData($multi), function(key, value) {
|
||||
if (value != '') {
|
||||
data[key] = value;
|
||||
}
|
||||
});
|
||||
|
||||
// Append custom data
|
||||
var $customFields = $multi.find('tbody td').filter(function() {
|
||||
return $(this).data('multi-custom-data');
|
||||
});
|
||||
|
||||
$customFields.each(function() {
|
||||
var $field = $(this);
|
||||
var fieldID = $field.attr('rel');
|
||||
var fieldData = $field.data('multi-custom-data');
|
||||
|
||||
data[fieldID] = fieldData;
|
||||
});
|
||||
|
||||
// Loading appearance
|
||||
var $loading = _medit.loadingItem($multi, _l('label.adding') + '...');
|
||||
$dataBody.prepend($loading);
|
||||
|
||||
// Clear out fields
|
||||
$multi.find('input').each(function() {
|
||||
var $input = $(this);
|
||||
|
||||
if ($input.is(":checkbox")) {
|
||||
$input.attr({
|
||||
checked: false
|
||||
});
|
||||
} else if ($input.data('multi-default-value')) {
|
||||
$input.val($input.data('multi-default-value'));
|
||||
} else {
|
||||
$input.val('');
|
||||
}
|
||||
});
|
||||
$multi.find('tbody td').each(function() {
|
||||
var $item = $(this);
|
||||
|
||||
if ($item.data('multi-custom-data')) {
|
||||
$item.data('multi-custom-data', null);
|
||||
}
|
||||
});
|
||||
|
||||
// Apply action
|
||||
args.add.action({
|
||||
context: context,
|
||||
data: data,
|
||||
itemData: itemData,
|
||||
$multi: $multi,
|
||||
response: {
|
||||
success: function(successArgs) {
|
||||
var notification = successArgs ? successArgs.notification : null;
|
||||
if (notification) {
|
||||
$('.notifications').notifications('add', {
|
||||
section: 'network',
|
||||
desc: notification.label,
|
||||
interval: 3000,
|
||||
_custom: successArgs._custom,
|
||||
poll: function(pollArgs) {
|
||||
var complete = pollArgs.complete;
|
||||
var error = pollArgs.error;
|
||||
|
||||
notification.poll({
|
||||
_custom: pollArgs._custom,
|
||||
complete: function(completeArgs) {
|
||||
complete(args);
|
||||
$loading.remove();
|
||||
getData();
|
||||
},
|
||||
|
||||
error: function(args) {
|
||||
error(args);
|
||||
$loading.remove();
|
||||
|
||||
return cloudStack.dialog.error(args);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$loading.remove();
|
||||
getData();
|
||||
}
|
||||
},
|
||||
|
||||
error: cloudStack.dialog.error(function() {
|
||||
$loading.remove();
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (args.noSelect) {
|
||||
// Don't append instance data
|
||||
addItem([]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
_medit.vmList($multi,
|
||||
args.listView,
|
||||
args.context,
|
||||
multipleAdd, _l('label.add.vms'),
|
||||
addItem);
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
$addVM.bind('click', function() {
|
||||
// Validate form first
|
||||
if (!$multiForm.valid()) {
|
||||
if ($multiForm.find('input.error:visible').size()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var $dataList;
|
||||
var addItem = function(itemData) {
|
||||
var data = {};
|
||||
|
||||
$.each(getMultiData($multi), function(key, value) {
|
||||
if (value != '') {
|
||||
data[key] = value;
|
||||
}
|
||||
});
|
||||
|
||||
// Append custom data
|
||||
var $customFields = $multi.find('tbody td').filter(function() {
|
||||
return $(this).data('multi-custom-data');
|
||||
});
|
||||
|
||||
$customFields.each(function() {
|
||||
var $field = $(this);
|
||||
var fieldID = $field.attr('rel');
|
||||
var fieldData = $field.data('multi-custom-data');
|
||||
|
||||
data[fieldID] = fieldData;
|
||||
});
|
||||
|
||||
// Loading appearance
|
||||
var $loading = _medit.loadingItem($multi, _l('label.adding') + '...');
|
||||
$dataBody.prepend($loading);
|
||||
|
||||
// Clear out fields
|
||||
$multi.find('input').each(function() {
|
||||
var $input = $(this);
|
||||
|
||||
if ($input.is(":checkbox")) {
|
||||
$input.attr({
|
||||
checked: false
|
||||
});
|
||||
} else if ($input.data('multi-default-value')) {
|
||||
$input.val($input.data('multi-default-value'));
|
||||
} else {
|
||||
$input.val('');
|
||||
}
|
||||
});
|
||||
$multi.find('tbody td').each(function() {
|
||||
var $item = $(this);
|
||||
|
||||
if ($item.data('multi-custom-data')) {
|
||||
$item.data('multi-custom-data', null);
|
||||
}
|
||||
});
|
||||
|
||||
// Apply action
|
||||
args.add.action({
|
||||
context: context,
|
||||
data: data,
|
||||
itemData: itemData,
|
||||
$multi: $multi,
|
||||
response: {
|
||||
success: function(successArgs) {
|
||||
var notification = successArgs ? successArgs.notification : null;
|
||||
if (notification) {
|
||||
$('.notifications').notifications('add', {
|
||||
section: 'network',
|
||||
desc: notification.label,
|
||||
interval: 3000,
|
||||
_custom: successArgs._custom,
|
||||
poll: function(pollArgs) {
|
||||
var complete = pollArgs.complete;
|
||||
var error = pollArgs.error;
|
||||
|
||||
notification.poll({
|
||||
_custom: pollArgs._custom,
|
||||
complete: function(completeArgs) {
|
||||
complete(args);
|
||||
$loading.remove();
|
||||
getData();
|
||||
},
|
||||
|
||||
error: function(args) {
|
||||
error(args);
|
||||
$loading.remove();
|
||||
|
||||
return cloudStack.dialog.error(args);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$loading.remove();
|
||||
getData();
|
||||
}
|
||||
},
|
||||
|
||||
error: cloudStack.dialog.error(function() {
|
||||
$loading.remove();
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (args.noSelect) {
|
||||
// Don't append instance data
|
||||
addItem([]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
_medit.vmList($multi,
|
||||
args.listView,
|
||||
args.context,
|
||||
multipleAdd, _l('label.add.vms'),
|
||||
addItem);
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
var listView = args.listView;
|
||||
var editOptionsFirst = args.editOptionsFirst;
|
||||
var getData = function() {
|
||||
dataProvider({
|
||||
context: context,
|
||||
|
|
@ -1247,7 +1270,8 @@
|
|||
listView: listView,
|
||||
tags: tags,
|
||||
reorder: reorder,
|
||||
selectPermission: selectPermission
|
||||
selectPermission: selectPermission,
|
||||
editOptionsFirst: editOptionsFirst
|
||||
}
|
||||
).appendTo($dataBody);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -190,63 +190,14 @@
|
|||
};
|
||||
};
|
||||
|
||||
var aclMultiEdit = {
|
||||
noSelect: true,
|
||||
|
||||
reorder: {
|
||||
moveDrag: {
|
||||
action: function(args) {
|
||||
var rule = args.context.multiRule[0];
|
||||
var number = 0;
|
||||
var prevItem = args.prevItem ? args.prevItem.number : null;
|
||||
var nextItem = args.nextItem ? args.nextItem.number : null;
|
||||
|
||||
if (!nextItem) { // Last item
|
||||
number = prevItem + 100;
|
||||
} else {
|
||||
if (nextItem - prevItem <= 10) {
|
||||
number = nextItem - parseInt(((nextItem - prevItem) / 2));
|
||||
} else {
|
||||
number = nextItem > 1 ? nextItem - 10 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: createURL('updateNetworkACLItem'),
|
||||
data: {
|
||||
id: rule.id,
|
||||
number: number
|
||||
},
|
||||
success: function(json) {
|
||||
var pollTimer = setInterval(function() {
|
||||
pollAsyncJobResult({
|
||||
_custom: {
|
||||
jobId: json.createnetworkaclresponse.jobid
|
||||
},
|
||||
complete: function() {
|
||||
clearInterval(pollTimer);
|
||||
args.response.success();
|
||||
},
|
||||
error: function(errorMsg) {
|
||||
clearInterval(pollTimer);
|
||||
args.response.error(errorMsg);
|
||||
}
|
||||
});
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
fields: {
|
||||
|
||||
var aclRuleFields = {
|
||||
'number': {
|
||||
label: 'label.rule.number',
|
||||
label: 'label.rule.number.short',
|
||||
desc: 'label.rule.number',
|
||||
edit: true,
|
||||
isEditable: true
|
||||
|
||||
},
|
||||
|
||||
'cidrlist': {
|
||||
edit: true,
|
||||
label: 'label.cidr',
|
||||
|
|
@ -322,6 +273,13 @@
|
|||
$portFields.hide();
|
||||
} else if ($(this).val() == 'all') {
|
||||
$portFields.hide();
|
||||
$portFields.attr('disabled', 'disabled');
|
||||
|
||||
$icmpFields.hide();
|
||||
$icmpFields.attr('disabled', 'disabled');
|
||||
|
||||
$protocolFields.attr('disabled', 'disabled');
|
||||
$protocolFields.hide();
|
||||
} else {
|
||||
$otherFields.show();
|
||||
$icmpFields.hide();
|
||||
|
|
@ -378,8 +336,14 @@
|
|||
$otherFields.hide();
|
||||
$otherFields.parent().find('label.error').hide();
|
||||
} else if ($(this).val() == 'all') {
|
||||
$portFields.attr('disabled', 'disabled');
|
||||
$portFields.hide();
|
||||
$portFields.attr('disabled', 'disabled');
|
||||
|
||||
$icmpFields.hide();
|
||||
$icmpFields.attr('disabled', 'disabled');
|
||||
|
||||
$protocolFields.hide();
|
||||
$protocolFields.attr('disabled', 'disabled');
|
||||
} else {
|
||||
$otherFields.show();
|
||||
$otherFields.parent().find('label.error').hide();
|
||||
|
|
@ -420,7 +384,8 @@
|
|||
},
|
||||
|
||||
'protocolnumber': {
|
||||
label: 'label.protocol.number',
|
||||
label: 'label.protocol.number.short',
|
||||
desc: 'label.protocol.number',
|
||||
edit: true,
|
||||
isEditable: true
|
||||
},
|
||||
|
|
@ -436,6 +401,38 @@
|
|||
isOptional: true,
|
||||
isEditable: true
|
||||
},
|
||||
'icmptype': {
|
||||
edit: true,
|
||||
label: 'ICMP.type',
|
||||
desc: 'ICMP.type.desc',
|
||||
defaultValue: '-1',
|
||||
isEditable: true
|
||||
},
|
||||
'icmpcode': {
|
||||
edit: true,
|
||||
label: 'ICMP.code',
|
||||
desc: 'ICMP.code.desc',
|
||||
defaultValue: '-1',
|
||||
isEditable: true
|
||||
},
|
||||
'traffictype': {
|
||||
label: 'label.traffic.type',
|
||||
isEditable: true,
|
||||
select: function(args) {
|
||||
args.response.success({
|
||||
data: [{
|
||||
name: 'Ingress',
|
||||
description: 'Ingress'
|
||||
}, {
|
||||
name: 'Egress',
|
||||
description: 'Egress'
|
||||
}]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var aclRuleFieldsForMultiEdit = {
|
||||
'networkid': {
|
||||
label: 'label.select.tier',
|
||||
select: function(args) {
|
||||
|
|
@ -472,43 +469,60 @@
|
|||
});
|
||||
}
|
||||
},
|
||||
'icmptype': {
|
||||
edit: true,
|
||||
label: 'ICMP.type',
|
||||
isDisabled: true,
|
||||
desc: 'Please specify -1 if you want to allow all ICMP types',
|
||||
defaultValue: '-1',
|
||||
isEditable: true
|
||||
},
|
||||
'icmpcode': {
|
||||
edit: true,
|
||||
label: 'ICMP.code',
|
||||
isDisabled: true,
|
||||
desc: 'Please specify -1 if you want to allow all ICMP codes',
|
||||
defaultValue: '-1',
|
||||
isEditable: true
|
||||
},
|
||||
'traffictype': {
|
||||
label: 'label.traffic.type',
|
||||
isEditable: true,
|
||||
select: function(args) {
|
||||
args.response.success({
|
||||
data: [{
|
||||
name: 'Ingress',
|
||||
description: 'Ingress'
|
||||
}, {
|
||||
name: 'Egress',
|
||||
description: 'Egress'
|
||||
}]
|
||||
};
|
||||
|
||||
jQuery.extend(aclRuleFieldsForMultiEdit, aclRuleFields);
|
||||
|
||||
var aclMultiEdit = {
|
||||
doNotShowInputTable: true,
|
||||
editOptionsFirst: true,
|
||||
noSelect: true,
|
||||
reorder: {
|
||||
moveDrag: {
|
||||
action: function(args) {
|
||||
var rule = args.context.multiRule[0];
|
||||
var number = 0;
|
||||
var prevItem = args.prevItem ? args.prevItem.number : null;
|
||||
var nextItem = args.nextItem ? args.nextItem.number : null;
|
||||
|
||||
if (!nextItem) { // Last item
|
||||
number = prevItem + 100;
|
||||
} else {
|
||||
if (nextItem - prevItem <= 10) {
|
||||
number = nextItem - parseInt(((nextItem - prevItem) / 2));
|
||||
} else {
|
||||
number = nextItem > 1 ? nextItem - 10 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: createURL('updateNetworkACLItem'),
|
||||
data: {
|
||||
id: rule.id,
|
||||
number: number
|
||||
},
|
||||
success: function(json) {
|
||||
var pollTimer = setInterval(function() {
|
||||
pollAsyncJobResult({
|
||||
_custom: {
|
||||
jobId: json.createnetworkaclresponse.jobid
|
||||
},
|
||||
complete: function() {
|
||||
clearInterval(pollTimer);
|
||||
args.response.success();
|
||||
},
|
||||
error: function(errorMsg) {
|
||||
clearInterval(pollTimer);
|
||||
args.response.error(errorMsg);
|
||||
}
|
||||
});
|
||||
}, 1000);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
'add-rule': {
|
||||
label: 'label.add.rule',
|
||||
addButton: true
|
||||
}
|
||||
},
|
||||
|
||||
fields: aclRuleFieldsForMultiEdit,
|
||||
tags: cloudStack.api.tags({
|
||||
resourceType: 'NetworkACL',
|
||||
contextId: 'multiRule'
|
||||
|
|
@ -983,32 +997,6 @@
|
|||
});
|
||||
}
|
||||
},
|
||||
|
||||
/*
|
||||
rules: {
|
||||
title: 'label.rules',
|
||||
multiple: true,
|
||||
fields: [
|
||||
{
|
||||
sourceport: { label: 'Source Port' },
|
||||
instanceport: { label: 'Instance Port' }
|
||||
}
|
||||
],
|
||||
dataProvider: function(args) {
|
||||
$.ajax({
|
||||
url: createURL('listLoadBalancers'),
|
||||
data: {
|
||||
id: args.context.internalLoadBalancers[0].id
|
||||
},
|
||||
success: function(json) {
|
||||
var item = json.listloadbalancersresponse.loadbalancer[0];
|
||||
args.response.success({ data: item.loadbalancerrule });
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
*/
|
||||
|
||||
assignedVms: {
|
||||
title: 'label.assigned.vms',
|
||||
listView: {
|
||||
|
|
@ -1333,35 +1321,65 @@
|
|||
$.ajax({
|
||||
url: createURL('listNetworkACLs&aclid=' + args.context.aclLists[0].id),
|
||||
success: function(json) {
|
||||
var items = json.listnetworkaclsresponse.networkacl.sort(function(a, b) {
|
||||
return a.number >= b.number;
|
||||
}).map(function(acl) {
|
||||
if (parseInt(acl.protocol)) { // protocol number
|
||||
acl.protocolnumber = acl.protocol;
|
||||
acl.protocol = "protocolnumber";
|
||||
}
|
||||
var items = json.listnetworkaclsresponse.networkacl;
|
||||
|
||||
return acl;
|
||||
});
|
||||
if(items){
|
||||
items.sort(function(a, b) {
|
||||
return a.number >= b.number;
|
||||
}).map(function(acl) {
|
||||
if (parseInt(acl.protocol)) { // protocol number
|
||||
acl.protocolnumber = acl.protocol;
|
||||
acl.protocol = "protocolnumber";
|
||||
}
|
||||
|
||||
return acl;
|
||||
});
|
||||
}
|
||||
|
||||
args.response.success({
|
||||
data: items
|
||||
/* {
|
||||
cidrlist: '10.1.1.0/24',
|
||||
protocol: 'TCP',
|
||||
startport: 22, endport: 22,
|
||||
networkid: 0,
|
||||
traffictype: 'Egress'
|
||||
},
|
||||
{
|
||||
cidrlist: '10.2.1.0/24',
|
||||
protocol: 'UDP',
|
||||
startport: 56, endport: 72,
|
||||
networkid: 0,
|
||||
trafficType: 'Ingress'
|
||||
}
|
||||
]*/
|
||||
});
|
||||
if(jQuery('#details-tab-aclRules').siblings('div.toolbar').children('div.add').size() === 0){
|
||||
var $addAclRuleDivButton = jQuery('<div>').addClass('button add');
|
||||
var $spanAddAclRuleButtonMessage = jQuery('<span>').html(_l('label.add.ACL'));
|
||||
|
||||
$addAclRuleDivButton.html($spanAddAclRuleButtonMessage);
|
||||
$addAclRuleDivButton.click(function(){
|
||||
cloudStack.dialog.createForm({
|
||||
form: {
|
||||
title: 'label.add.rule',
|
||||
desc: 'label.add.rule.desc',
|
||||
fields: aclRuleFields
|
||||
},
|
||||
after: function(argsLocal) {
|
||||
var data = argsLocal.data;
|
||||
data.aclid = argsLocal.context.aclLists[0].id;
|
||||
if(data.protocol != 'icmp'){
|
||||
data.icmpcode = undefined;
|
||||
data.icmptype = undefined;
|
||||
}
|
||||
if(data.protocol != 'protocolnumber'){
|
||||
data.protocolnumber = undefined;
|
||||
}
|
||||
if(data.protocol === 'all'){
|
||||
data.startport = undefined;
|
||||
data.endport = undefined;
|
||||
}
|
||||
$.ajax({
|
||||
url: createURL('createNetworkACL'),
|
||||
data: argsLocal.data,
|
||||
type: "POST",
|
||||
success: function(json) {
|
||||
jQuery('button.cancel:visible').click();
|
||||
jQuery('div.toolbar:visible div.refresh').click();
|
||||
}
|
||||
});
|
||||
},
|
||||
context: args.context
|
||||
});
|
||||
});
|
||||
jQuery('#details-tab-aclRules').siblings('div.toolbar').append($addAclRuleDivButton);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -4388,7 +4406,6 @@
|
|||
});
|
||||
})
|
||||
});
|
||||
|
||||
if (error) {
|
||||
cloudStack.dialog.notice({
|
||||
message: 'Error loading dashboard data.'
|
||||
|
|
|
|||
Loading…
Reference in New Issue