diff --git a/rudder-web/src/main/resources/demo-rudder-users.xml b/rudder-web/src/main/resources/demo-rudder-users.xml
index e436492ec01..f0ed85b7b5c 100644
--- a/rudder-web/src/main/resources/demo-rudder-users.xml
+++ b/rudder-web/src/main/resources/demo-rudder-users.xml
@@ -74,5 +74,6 @@
+
diff --git a/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala b/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala
index 4d6b5453981..fd3f8f61a36 100644
--- a/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala
+++ b/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala
@@ -655,21 +655,34 @@ object DisplayNode extends Loggable {
}
private def displayTabVariable(jsId:JsNodeId,sm:FullInventory) : NodeSeq = {
- val title = sm.node.inventoryDate.map(date => "Environment variable status on %s".format(DateFormaterService.getFormatedDate(date)))
- displayTabGrid(jsId)("var", Full(sm.node.environmentVariables),title){
+ val title = sm.node.inventoryDate.map(date => "Environment variable status on %s".format(DateFormaterService.getFormatedDate(date)))
+ displayTabGrid(jsId)("var", Full(sm.node.environmentVariables),title){
("Name", {x:EnvironmentVariable => Text(x.name)}) ::
("Value", {x:EnvironmentVariable => Text(x.value.getOrElse("Unspecified"))}) ::
Nil
- }
+ }
}
private def displayTabProperties(jsId:JsNodeId, node: NodeInfo) : NodeSeq = {
+ import com.normation.rudder.domain.nodes.JsonSerialisation._
+ import com.normation.rudder.authorization._
import net.liftweb.json._
- displayTabGrid(jsId)("props", Full(node.properties)){
- ("Name", {x:NodeProperty => Text(x.name)}) ::
- ("Value", {x:NodeProperty =>
diff --git a/rudder-web/src/main/webapp/style/rudder/rudder-menu.css b/rudder-web/src/main/webapp/style/rudder/rudder-menu.css
index 6436f52c3cc..be87089557f 100644
--- a/rudder-web/src/main/webapp/style/rudder/rudder-menu.css
+++ b/rudder-web/src/main/webapp/style/rudder/rudder-menu.css
@@ -84,23 +84,26 @@ tbody.toggle-color > tr > td{
tbody.toggle-color > tr.color1 > td,tbody.toggle-color > tr.color2 > td{
padding-bottom:4px;
}
-pre.json-beautify{
- cursor:pointer;
- height:40px;
- transition-duration:.2s;
- overflow:hidden;
- -moz-box-shadow: inset 0 -10px 10px -10px #bdbdbd;
- -webkit-box-shadow: inset 0 -10px 10px -10px #bdbdbd;
- box-shadow: inset 0 -10px 10px -10px #bdbdbd;
- position:relative;
+pre.json-beautify, .tw-bs pre.json-beautify{
+ border: none;
+ background-color: transparent;
+ border-radius: 0;
+ cursor: pointer;
+ height: 37px;
+ transition-duration: .2s;
+ overflow: hidden;
+ position: relative;
+ margin-bottom: 0;
+ white-space: initial;
+ padding-right: 25px;
}
-pre.json-beautify.toggle{
+pre.json-beautify.toggle, .tw-bs pre.json-beautify.toggle{
height:auto;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
-pre.json-beautify:after{
+pre.json-beautify:after,.tw-bs pre.json-beautify:after{
position:absolute;
right:10px;
top : 10px;
@@ -113,7 +116,7 @@ pre.json-beautify:after{
-webkit-font-smoothing: antialiased;
transition-duration:.2s;
}
-pre.json-beautify.toggle:after{
+pre.json-beautify.toggle:after, .tw-bs pre.json-beautify.toggle:after{
transform:rotate(90deg);
}
/* - MODAL 4.0 - */
@@ -122,8 +125,7 @@ pre.json-beautify.toggle:after{
border: none;
}
.tw-bs .modal .modal-header {
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
+ border-radius: 0;
border-bottom: 1px solid #f08004;
background: #f08004;
}
@@ -637,7 +639,7 @@ a.sidebar-toggle{
@media (max-width: 767px){
.tw-bs .navbar-nav .open .dropdown-menu {
position: absolute;
- right: 42px;
+ right: 42px;td
float: none;
width: 280px;
background-color: rgb(255, 255, 255);
@@ -1028,6 +1030,71 @@ label.rule-info + div{
}
/* --- NODE PAGE --- */
+.errorSaving.alert-danger{
+ margin-top:10px;
+}
+.errorSaving > .fa{
+ margin-right:8px;
+}
+#addPropTable{
+ width:100%;
+}
+#addPropTable tbody > tr{
+ padding:0;
+}
+#addPropTable tbody > tr > td{
+ border-collapse: collapse;
+ padding:0;
+ vertical-align:top;
+}
+#addPropTable tbody > tr > td > .form-control{
+ min-height:33px;
+}
+#addPropTable tbody > tr > td:first-child{
+ width:235px;
+}
+#addPropTable tbody > tr > td:first-child > input.form-control{
+ border-top-right-radius:0;
+ border-bottom-right-radius:0;
+}
+#addPropTable tbody > tr > td:nth-child(2),#addPropTable tbody > tr > td:last-child{
+ width: 33px;
+}
+#addPropTable tbody > tr > td:nth-child(2) > span{
+ border-left:none;
+ border-right:none;
+ border-radius:0;
+ height: 32px;
+}
+#addPropTable tbody > tr > td:nth-child(3) > .form-control{
+ border-left-width:1px;
+ border-radius:0;
+}
+#addPropTable tbody > tr > td:nth-child(2),#addPropTable tbody > tr > td:last-child > .btn{
+ height: 33px;
+ border-top-left-radius:0;
+ border-bottom-left-radius:0;
+}
+#nodePropertiesTab_info {
+ position: relative;
+ top: 3px;
+ padding-left: 3px;
+}
+#nodeProp .btn-success.new-icon{
+ margin: 5px 0 7px 0;
+}
+#nodeProp .addon-json + textarea{
+ min-height:initial;
+}
+#nodePropertiesTab tbody > tr > td:nth-child(2){
+ padding:0;
+}
+#nodePropertiesTab thead > tr > th:last-child{
+ border-left:none;
+}
+#nodeProp table .dataTables_empty{
+ display:none;
+}
tbody.toggle-color > tr:nth-child(odd){
background-color: #eee;
}
@@ -1044,7 +1111,35 @@ table.tablewidth{
padding:0;
border:none;
}
-
+table > tbody > tr > td.action{
+ width:80px;
+}
+.tw-bs #nodePropertiesTab_wrapper label {
+ margin-bottom: 0;
+ font-weight: normal;
+ font-size: 13.2px;
+}
+.tw-bs .dataTables_length label.text-fit{
+ font-size:13.2px;
+ margin-bottom:0;
+}
+.tw-bs .dataTables_filter label{
+ margin-bottom:0;
+}
+.tw-bs .dataTables_filter label input{
+ font-size:13.2px;
+ margin-bottom:0;
+ line-height:normal;
+ font-weight:normal;
+}
+#nodePropertiesTab > tbody > tr > td.delete-action > .fa{
+ display:none;
+ cursor:pointer;
+ font-size:18px;
+}
+#nodePropertiesTab > tbody > tr:hover > td.delete-action > .fa{
+ display:inline-block;
+}
/* --- DIRECTIVE PAGE --- */
.editTech{
margin-top:4px;
@@ -1556,6 +1651,15 @@ form .tooltip-content p {
/*
*-----------------------------------------
*/
+.form-group.has-error label {
+ color: #A94442;
+}
+.form-group.has-error .form-control {
+ border-color: #A94442;
+}
+.no-margin-bottom{
+ margin-bottom:0 !important;
+}
.no-padding{
padding: 0 !important;
}
@@ -2364,7 +2468,7 @@ ul > li.rudder-form > .input-group.disabled *{
.box-tools > .btn > .fa,.box-tools > .btn > .glyphicon,.box-tools > .btn > .ion{
margin-left: 6px;
}
-.box-tools > .btn.new-icon:after{
+.btn.new-icon:after{
content: "\f055";
font: normal normal normal 14px/1 FontAwesome;
font-size: 1.2em;
diff --git a/rudder-web/src/main/webapp/style/rudder/rudder.css b/rudder-web/src/main/webapp/style/rudder/rudder.css
index 8d17e430724..f841956a41d 100644
--- a/rudder-web/src/main/webapp/style/rudder/rudder.css
+++ b/rudder-web/src/main/webapp/style/rudder/rudder.css
@@ -2672,6 +2672,7 @@ label span.text-fit{
}
#serverDetails .sInventory, #nodeInventory, #node_inventory{
border : none !important;
+ overflow-x: hidden;
}
#nodeInventory .ui-tabs-nav{
margin-top: 5px;
diff --git a/rudder-web/src/main/webapp/templates-hidden/components/ComponentNodeProperties.html b/rudder-web/src/main/webapp/templates-hidden/components/ComponentNodeProperties.html
new file mode 100644
index 00000000000..3f2c9fe1950
--- /dev/null
+++ b/rudder-web/src/main/webapp/templates-hidden/components/ComponentNodeProperties.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+ An error occured while deleting property '{{selectedProperty.name}}': {{errorDeleting}}
+
+
+
+
+
+
+
+
Add node property
+
+
Name is required
+
This name is already used by another property
+
+
+ An error occured while saving this new property : {{errorSaving}}
+
+
Value is required
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rudder-web/src/main/webapp/templates-hidden/components/ComponentRuleEditForm.html b/rudder-web/src/main/webapp/templates-hidden/components/ComponentRuleEditForm.html
index 1be93051666..9f55bcb250e 100644
--- a/rudder-web/src/main/webapp/templates-hidden/components/ComponentRuleEditForm.html
+++ b/rudder-web/src/main/webapp/templates-hidden/components/ComponentRuleEditForm.html
@@ -151,13 +151,13 @@
Here comes the tag field
-
- Here comes the shortDescription field
-
-
- Here comes the longDescription field
-
-
+
+ Here comes the shortDescription field
+
+
+ Here comes the longDescription field
+
+