ConfigPage continuation
This commit is contained in:
parent
e3497c4718
commit
224372f0ad
7 changed files with 448 additions and 55 deletions
|
|
@ -2370,7 +2370,7 @@ input[type="button"].btn-block {
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Glyphicons Halflings';
|
font-family: 'Glyphicons Halflings';
|
||||||
src: url('../fonts/glyphicons-halflings-regular.eot');
|
src: url('../fonts/glyphicons-halflings-regular.eot');
|
||||||
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
|
src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('..//fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
|
||||||
}
|
}
|
||||||
.glyphicon {
|
.glyphicon {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
@ -2983,6 +2983,192 @@ input[type="button"].btn-block {
|
||||||
.glyphicon-tree-deciduous:before {
|
.glyphicon-tree-deciduous:before {
|
||||||
content: "\e200";
|
content: "\e200";
|
||||||
}
|
}
|
||||||
|
.glyphicon-cd:before {
|
||||||
|
content: "\e201";
|
||||||
|
}
|
||||||
|
.glyphicon-save-file:before {
|
||||||
|
content: "\e202";
|
||||||
|
}
|
||||||
|
.glyphicon-open-file:before {
|
||||||
|
content: "\e203";
|
||||||
|
}
|
||||||
|
.glyphicon-level-up:before {
|
||||||
|
content: "\e204";
|
||||||
|
}
|
||||||
|
.glyphicon-copy:before {
|
||||||
|
content: "\e205";
|
||||||
|
}
|
||||||
|
.glyphicon-paste:before {
|
||||||
|
content: "\e206";
|
||||||
|
}
|
||||||
|
.glyphicon-alert:before {
|
||||||
|
content: "\e209";
|
||||||
|
}
|
||||||
|
.glyphicon-equalizer:before {
|
||||||
|
content: "\e210";
|
||||||
|
}
|
||||||
|
.glyphicon-king:before {
|
||||||
|
content: "\e211";
|
||||||
|
}
|
||||||
|
.glyphicon-queen:before {
|
||||||
|
content: "\e212";
|
||||||
|
}
|
||||||
|
.glyphicon-pawn:before {
|
||||||
|
content: "\e213";
|
||||||
|
}
|
||||||
|
.glyphicon-bishop:before {
|
||||||
|
content: "\e214";
|
||||||
|
}
|
||||||
|
.glyphicon-knight:before {
|
||||||
|
content: "\e215";
|
||||||
|
}
|
||||||
|
.glyphicon-baby-formula:before {
|
||||||
|
content: "\e216";
|
||||||
|
}
|
||||||
|
.glyphicon-tent:before {
|
||||||
|
content: "\26fa";
|
||||||
|
}
|
||||||
|
.glyphicon-blackboard:before {
|
||||||
|
content: "\e218";
|
||||||
|
}
|
||||||
|
.glyphicon-bed:before {
|
||||||
|
content: "\e219";
|
||||||
|
}
|
||||||
|
.glyphicon-apple:before {
|
||||||
|
content: "\f8ff";
|
||||||
|
}
|
||||||
|
.glyphicon-erase:before {
|
||||||
|
content: "\e221";
|
||||||
|
}
|
||||||
|
.glyphicon-hourglass:before {
|
||||||
|
content: "\231b";
|
||||||
|
}
|
||||||
|
.glyphicon-lamp:before {
|
||||||
|
content: "\e223";
|
||||||
|
}
|
||||||
|
.glyphicon-duplicate:before {
|
||||||
|
content: "\e224";
|
||||||
|
}
|
||||||
|
.glyphicon-piggy-bank:before {
|
||||||
|
content: "\e225";
|
||||||
|
}
|
||||||
|
.glyphicon-scissors:before {
|
||||||
|
content: "\e226";
|
||||||
|
}
|
||||||
|
.glyphicon-bitcoin:before {
|
||||||
|
content: "\e227";
|
||||||
|
}
|
||||||
|
.glyphicon-btc:before {
|
||||||
|
content: "\e227";
|
||||||
|
}
|
||||||
|
.glyphicon-xbt:before {
|
||||||
|
content: "\e227";
|
||||||
|
}
|
||||||
|
.glyphicon-yen:before {
|
||||||
|
content: "\00a5";
|
||||||
|
}
|
||||||
|
.glyphicon-jpy:before {
|
||||||
|
content: "\00a5";
|
||||||
|
}
|
||||||
|
.glyphicon-ruble:before {
|
||||||
|
content: "\20bd";
|
||||||
|
}
|
||||||
|
.glyphicon-rub:before {
|
||||||
|
content: "\20bd";
|
||||||
|
}
|
||||||
|
.glyphicon-scale:before {
|
||||||
|
content: "\e230";
|
||||||
|
}
|
||||||
|
.glyphicon-ice-lolly:before {
|
||||||
|
content: "\e231";
|
||||||
|
}
|
||||||
|
.glyphicon-ice-lolly-tasted:before {
|
||||||
|
content: "\e232";
|
||||||
|
}
|
||||||
|
.glyphicon-education:before {
|
||||||
|
content: "\e233";
|
||||||
|
}
|
||||||
|
.glyphicon-option-horizontal:before {
|
||||||
|
content: "\e234";
|
||||||
|
}
|
||||||
|
.glyphicon-option-vertical:before {
|
||||||
|
content: "\e235";
|
||||||
|
}
|
||||||
|
.glyphicon-menu-hamburger:before {
|
||||||
|
content: "\e236";
|
||||||
|
}
|
||||||
|
.glyphicon-modal-window:before {
|
||||||
|
content: "\e237";
|
||||||
|
}
|
||||||
|
.glyphicon-oil:before {
|
||||||
|
content: "\e238";
|
||||||
|
}
|
||||||
|
.glyphicon-grain:before {
|
||||||
|
content: "\e239";
|
||||||
|
}
|
||||||
|
.glyphicon-sunglasses:before {
|
||||||
|
content: "\e240";
|
||||||
|
}
|
||||||
|
.glyphicon-text-size:before {
|
||||||
|
content: "\e241";
|
||||||
|
}
|
||||||
|
.glyphicon-text-color:before {
|
||||||
|
content: "\e242";
|
||||||
|
}
|
||||||
|
.glyphicon-text-background:before {
|
||||||
|
content: "\e243";
|
||||||
|
}
|
||||||
|
.glyphicon-object-align-top:before {
|
||||||
|
content: "\e244";
|
||||||
|
}
|
||||||
|
.glyphicon-object-align-bottom:before {
|
||||||
|
content: "\e245";
|
||||||
|
}
|
||||||
|
.glyphicon-object-align-horizontal:before {
|
||||||
|
content: "\e246";
|
||||||
|
}
|
||||||
|
.glyphicon-object-align-left:before {
|
||||||
|
content: "\e247";
|
||||||
|
}
|
||||||
|
.glyphicon-object-align-vertical:before {
|
||||||
|
content: "\e248";
|
||||||
|
}
|
||||||
|
.glyphicon-object-align-right:before {
|
||||||
|
content: "\e249";
|
||||||
|
}
|
||||||
|
.glyphicon-triangle-right:before {
|
||||||
|
content: "\e250";
|
||||||
|
}
|
||||||
|
.glyphicon-triangle-left:before {
|
||||||
|
content: "\e251";
|
||||||
|
}
|
||||||
|
.glyphicon-triangle-bottom:before {
|
||||||
|
content: "\e252";
|
||||||
|
}
|
||||||
|
.glyphicon-triangle-top:before {
|
||||||
|
content: "\e253";
|
||||||
|
}
|
||||||
|
.glyphicon-console:before {
|
||||||
|
content: "\e254";
|
||||||
|
}
|
||||||
|
.glyphicon-superscript:before {
|
||||||
|
content: "\e255";
|
||||||
|
}
|
||||||
|
.glyphicon-subscript:before {
|
||||||
|
content: "\e256";
|
||||||
|
}
|
||||||
|
.glyphicon-menu-left:before {
|
||||||
|
content: "\e257";
|
||||||
|
}
|
||||||
|
.glyphicon-menu-right:before {
|
||||||
|
content: "\e258";
|
||||||
|
}
|
||||||
|
.glyphicon-menu-down:before {
|
||||||
|
content: "\e259";
|
||||||
|
}
|
||||||
|
.glyphicon-menu-up:before {
|
||||||
|
content: "\e260";
|
||||||
|
}
|
||||||
.caret {
|
.caret {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 0;
|
width: 0;
|
||||||
|
|
@ -4110,7 +4296,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
.breadcrumb > li + li:before {
|
.breadcrumb > li + li:before {
|
||||||
content: "/\00a0";
|
content: "\00a0";
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
color: #cccccc;
|
color: #cccccc;
|
||||||
}
|
}
|
||||||
|
|
@ -4321,7 +4507,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
|
||||||
padding: 3px 7px;
|
padding: 3px 7px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #ffffff;
|
color: : #fff;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
|
||||||
|
|
@ -247,8 +247,165 @@
|
||||||
|
|
||||||
|
|
||||||
// Sprites
|
// Sprites
|
||||||
@icon-font-path: '../app/fonts/';
|
@icon-font-path: '../fonts/';
|
||||||
@icon-font-name: glyphicons-halflings-regular;
|
@icon-font-name: glyphicons-halflings-regular;
|
||||||
|
|
||||||
|
|
||||||
|
// Private
|
||||||
|
@zindex-navbar: 1000;
|
||||||
|
@zindex-dropdown: 1000;
|
||||||
|
@zindex-popover: 1010;
|
||||||
|
@zindex-tooltip: 1030;
|
||||||
|
@zindex-navbar-fixed: 1030;
|
||||||
|
@zindex-modal-background: 1040;
|
||||||
|
@zindex-modal: 1050;
|
||||||
|
@screen-xs: 480px;
|
||||||
|
@screen-xs-min: @screen-xs;
|
||||||
|
@screen-phone: @screen-xs-min;
|
||||||
|
@screen-sm: 768px;
|
||||||
|
@screen-sm-min: @screen-sm;
|
||||||
|
@screen-tablet: @screen-sm-min;
|
||||||
|
@screen-md: 992px;
|
||||||
|
@screen-desktop-min: @screen-md;
|
||||||
|
@screen-desktop: @screen-md-min;
|
||||||
|
@screen-lg: 1200px;
|
||||||
|
@screen-lg-desktop-min: @screen-lg;
|
||||||
|
@screen-lg-desktop: @screen-lg-min;
|
||||||
|
@screen-xs-max: (@screen-sm - 1);
|
||||||
|
@screen-sm-max: (@screen-md - 1);
|
||||||
|
@screen-md-max: (@screen-lg - 1);
|
||||||
|
@grid-columns: 12;
|
||||||
|
@grid-gutter-width: 30px;
|
||||||
|
@grid-float-breakpoint: @screen-tablet;
|
||||||
|
@navbar-collapse-max-height: 340px;
|
||||||
|
@navbar-inverse-color: @gray-light;
|
||||||
|
@navbar-inverse-bg: #222;
|
||||||
|
@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
|
||||||
|
@navbar-inverse-link-color: @gray-light;
|
||||||
|
@navbar-inverse-link-hover-color: #fff;
|
||||||
|
@navbar-inverse-link-hover-bg: transparent;
|
||||||
|
@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
|
||||||
|
@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
|
||||||
|
@navbar-inverse-link-disabled-color: #444;
|
||||||
|
@navbar-inverse-link-disabled-bg: transparent;
|
||||||
|
@navbar-inverse-brand-color: @navbar-inverse-link-color;
|
||||||
|
@navbar-inverse-brand-hover-color: #fff;
|
||||||
|
@navbar-inverse-brand-hover-bg: transparent;
|
||||||
|
@navbar-inverse-toggle-hover-bg: #333;
|
||||||
|
@navbar-inverse-toggle-icon-bar-bg: #fff;
|
||||||
|
@navbar-inverse-toggle-border-color: #333;
|
||||||
|
@pager-border-radius: 15px;
|
||||||
|
@pager-disabled-color: @gray-light;
|
||||||
|
@modal-inner-padding: 20px;
|
||||||
|
@modal-title-padding: 15px;
|
||||||
|
@modal-title-line-height: @line-height-base;
|
||||||
|
@modal-content-bg: #fff;
|
||||||
|
@modal-content-border-color: rgba(0,0,0,.2);
|
||||||
|
@modal-content-fallback-border-color: #999;
|
||||||
|
@modal-backdrop-bg: #000;
|
||||||
|
@modal-header-border-color: #e5e5e5;
|
||||||
|
@modal-footer-border-color: @modal-header-border-color;
|
||||||
|
@alert-padding: 15px;
|
||||||
|
@alert-border-radius: @border-radius-base;
|
||||||
|
@alert-link-font-weight: bold;
|
||||||
|
@alert-success-bg: @state-success-bg;
|
||||||
|
@alert-success-text: @state-success-text;
|
||||||
|
@alert-success-border: @state-success-border;
|
||||||
|
@alert-info-bg: @state-info-bg;
|
||||||
|
@alert-info-text: @state-info-text;
|
||||||
|
@alert-info-border: @state-info-border;
|
||||||
|
@alert-warning-bg: @state-warning-bg;
|
||||||
|
@alert-warning-text: @state-warning-text;
|
||||||
|
@alert-warning-border: @state-warning-border;
|
||||||
|
@alert-danger-bg: @state-danger-bg;
|
||||||
|
@alert-danger-text: @state-danger-text;
|
||||||
|
@alert-danger-border: @state-danger-border;
|
||||||
|
@progress-bg: #f5f5f5;
|
||||||
|
@progress-bar-color: #fff;
|
||||||
|
@progress-bar-bg: @brand-primary;
|
||||||
|
@progress-bar-success-bg: @brand-success;
|
||||||
|
@progress-bar-warning-bg: @brand-warning;
|
||||||
|
@progress-bar-danger-bg: @brand-danger;
|
||||||
|
@progress-bar-info-bg: @brand-info;
|
||||||
|
@panel-bg: #fff;
|
||||||
|
@panel-inner-border: #ddd;
|
||||||
|
@panel-border-radius: @border-radius-base;
|
||||||
|
@panel-footer-bg: #f5f5f5;
|
||||||
|
@panel-body-padding: 15px;
|
||||||
|
@panel-default-text: @gray-dark;
|
||||||
|
@panel-default-border: #ddd;
|
||||||
|
@panel-default-heading-bg: #f5f5f5;
|
||||||
|
@panel-primary-text: #fff;
|
||||||
|
@panel-primary-border: @brand-primary;
|
||||||
|
@panel-primary-heading-bg: @brand-primary;
|
||||||
|
@panel-success-text: @state-success-text;
|
||||||
|
@panel-success-border: @state-success-border;
|
||||||
|
@panel-success-heading-bg: @state-success-bg;
|
||||||
|
@panel-warning-text: @state-warning-text;
|
||||||
|
@panel-warning-border: @state-warning-border;
|
||||||
|
@panel-warning-heading-bg: @state-warning-bg;
|
||||||
|
@panel-danger-text: @state-danger-text;
|
||||||
|
@panel-danger-border: @state-danger-border;
|
||||||
|
@panel-danger-heading-bg: @state-danger-bg;
|
||||||
|
@panel-info-text: @state-info-text;
|
||||||
|
@panel-info-border: @state-info-border;
|
||||||
|
@panel-info-heading-bg: @state-info-bg;
|
||||||
|
@thumbnail-padding: 4px;
|
||||||
|
@thumbnail-bg: @body-bg;
|
||||||
|
@thumbnail-border: #ddd;
|
||||||
|
@thumbnail-border-radius: @border-radius-base;
|
||||||
|
@thumbnail-caption-color: @text-color;
|
||||||
|
@thumbnail-caption-padding: 9px;
|
||||||
|
@well-bg: #f5f5f5;
|
||||||
|
@well-border: darken(@well-bg, 7%);
|
||||||
|
@badge-color:: #fff;
|
||||||
|
@badge-link-hover-color: #fff;
|
||||||
|
@badge-bg: @gray-light;
|
||||||
|
@badge-active-color: @link-color;
|
||||||
|
@badge-active-bg: #fff;
|
||||||
|
@badge-font-weight: bold;
|
||||||
|
@badge-line-height: 1;
|
||||||
|
@badge-border-radius: 10px;
|
||||||
|
@breadcrumb-padding-vertical: 8px;
|
||||||
|
@breadcrumb-padding-horizontal: 15px;
|
||||||
|
@breadcrumb-bg: #f5f5f5;
|
||||||
|
@breadcrumb-color: #ccc;
|
||||||
|
@breadcrumb-active-color: @gray-light;
|
||||||
|
@breadcrumb-separator: ;
|
||||||
|
@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
|
||||||
|
@carousel-control-color: #fff;
|
||||||
|
@carousel-control-width: 15%;
|
||||||
|
@carousel-control-opacity: .5;
|
||||||
|
@carousel-control-font-size: 20px;
|
||||||
|
@carousel-indicator-active-bg: #fff;
|
||||||
|
@carousel-indicator-border-color: #fff;
|
||||||
|
@carousel-caption-color: #fff;
|
||||||
|
@close-color: #000;
|
||||||
|
@close-font-weight: bold;
|
||||||
|
@close-text-shadow: 0 1px 0 #fff;
|
||||||
|
@code-color: #c7254e;
|
||||||
|
@code-bg: #f9f2f4;
|
||||||
|
@kbd-color: #fff;
|
||||||
|
@kbd-bg: #333;
|
||||||
|
@pre-bg: #f5f5f5;
|
||||||
|
@pre-color: @gray-dark;
|
||||||
|
@pre-border-color: #ccc;
|
||||||
|
@pre-scrollable-max-height: 340px;
|
||||||
|
@text-muted: @gray-light;
|
||||||
|
@abbr-border-color: @gray-light;
|
||||||
|
@headings-small-color: @gray-light;
|
||||||
|
@blockquote-small-color: @gray-light;
|
||||||
|
@blockquote-border-color: @gray-lighter;
|
||||||
|
@page-header-border-color: @gray-lighter;
|
||||||
|
@hr-border: @gray-lighter;
|
||||||
|
@component-offset-horizontal: 180px;
|
||||||
|
@container-tablet: ((720px + @grid-gutter-width));
|
||||||
|
@container-desktop: ((940px + @grid-gutter-width));
|
||||||
|
@container-lg-desktop: ((1140px + @grid-gutter-width));
|
||||||
|
@container-sm: @container-tablet;
|
||||||
|
@container-md: @container-desktop;
|
||||||
|
@container-lg: @container-large-desktop;
|
||||||
|
|
||||||
|
|
||||||
// My Variables
|
// My Variables
|
||||||
|
|
||||||
|
|
@ -4,31 +4,43 @@
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover">
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
{{#headers}}<th>Service</th>{{#headers}}
|
{{#params}}<th>{{.getNiceName()}}</th>{{/params}}
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
{{#data}}
|
{{#data}}
|
||||||
<tr {{^.enabled}}class="active"{{/.enabled}}>
|
<tr {{#.disabled}}class="active"{{/.disabled}}>
|
||||||
{{#params}}
|
{{#.getConfiguration()}}
|
||||||
<td>
|
<td>
|
||||||
{{#.isTypeBoolean()}}
|
{{#.isTypeBoolean()}}
|
||||||
<input type="checkbox" {{#.getValue()}}checked{{/.getValue()}} disabled />
|
<input type="checkbox" {{#.getBoolean()}}checked{{/.getBoolean()}} disabled />
|
||||||
{{/.isTypeBoolean()}}
|
{{/.isTypeBoolean()}}
|
||||||
{{^.isTypeBoolean()}}{{.getValue()}}{{/.isTypeBoolean()}}
|
{{^.isTypeBoolean()}}{{.getString()}}{{/.isTypeBoolean()}}
|
||||||
</td>
|
</td>
|
||||||
{{/params}}
|
{{/.getConfiguration()}}
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
<button type="button" class="btn btn-primary btn-xs">Edit</button>
|
<button type="button" class="btn btn-primary btn-xs" title="Edit">
|
||||||
{{^.enabled}}<button type="button" class="btn btn-default btn-xs">Disable</button>{{/.enabled}}
|
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||||
{{#.enabled}}<button type="button" class="btn btn-success btn-xs">Activate</button>{{/.enabled}}
|
</button>
|
||||||
<button type="button" class="btn btn-danger btn-xs">Remove</button>
|
{{^.enabled}}
|
||||||
|
<button type="button" class="btn btn-default btn-xs" title="Disable">
|
||||||
|
<span class="glyphicon glyphicon-ban-circle" aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
|
{{/.enabled}}
|
||||||
|
{{#.enabled}}
|
||||||
|
<button type="button" class="btn btn-success btn-xs" title="Activate">
|
||||||
|
<span class="glyphicon glyphicon-ok-circle" aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
|
{{/.enabled}}
|
||||||
|
<button type="button" class="btn btn-danger btn-xs" title="Remove">
|
||||||
|
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
|
||||||
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/data}}
|
{{/data}}
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-footer text-right">
|
<div class="panel-footer clearfix">
|
||||||
<button type="button" class="btn btn-primary">Cancel</button>
|
<button type="button" class="btn btn-default pull-left" data-toggle="modal" data-target="#configureModal">+</button>
|
||||||
<button type="button" class="btn btn-success">Save</button>
|
<button type="button" class="btn btn-primary pull-right">Apply Configuration</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -43,38 +55,33 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form class="form-horizontal">
|
<form class="form-horizontal">
|
||||||
|
{{#params}}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="inputEmail" class="control-label col-xs-2">Email</label>
|
<label for="{{.getName()}}" class="control-label col-xs-2">{{.getNiceName()}}</label>
|
||||||
<div class="col-xs-10">
|
|
||||||
<input type="email" class="form-control" id="inputEmail" placeholder="Email">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="inputPassword" class="control-label col-xs-2">Password</label>
|
|
||||||
<div class="col-xs-10">
|
|
||||||
<input type="password" class="form-control" id="inputPassword" placeholder="Password">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="ccheckbox" class="control-label col-xs-2">ccheckbox</label>
|
|
||||||
<div class="col-xs-10">
|
|
||||||
<input type="checkbox" class="form-control" id="ccheckbox" placeholder="">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="sselect" class="control-label col-xs-2">sselect</label>
|
|
||||||
<div class="col-xs-10">
|
<div class="col-xs-10">
|
||||||
|
{{#.isTypeString()}}
|
||||||
|
<input type="text" class="form-control" id="{{.getName()}}">
|
||||||
|
{{/.isTypeString()}}
|
||||||
|
{{#.isTypeInt()}}
|
||||||
|
<input type="number" class="form-control" id="{{.getName()}}">
|
||||||
|
{{/.isTypeInt()}}
|
||||||
|
{{#.isTypeBoolean()}}
|
||||||
|
<input type="checkbox" class="form-control" id="{{.getName()}}">
|
||||||
|
{{/.isTypeBoolean()}}
|
||||||
|
<!--
|
||||||
<select class="form-control" id="sselect" placeholder="">
|
<select class="form-control" id="sselect" placeholder="">
|
||||||
<option value="volvo">-- Chose an Option --</option>
|
<option value="volvo">-- Chose an Option --</option>
|
||||||
<option value="saab">Saab</option>
|
<option value="saab">Saab</option>
|
||||||
</select>
|
</select>
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{/params}}
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
||||||
<button type="button" class="btn btn-primary">Save</button>
|
<button type="submit" class="btn btn-success">Save</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -51,23 +51,11 @@
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-info-sign"></span>
|
||||||
</a>
|
</a>
|
||||||
<ul role="menu" class="dropdown-menu" aria-labelledby="drop1">
|
<ul role="menu" class="dropdown-menu">
|
||||||
<li>
|
<li>
|
||||||
<pre class="pre-scrollable">
|
<pre class="pre-scrollable">
|
||||||
2015-09-24 16:37:54.578 [FINE] PluginManager: Searching for plugins...
|
|
||||||
2015-09-24 16:37:54.650 [FINE] PluginManager: Found plugin: C:\Users\ezivkoc\IdeaProjects\webadmin\.\src\wa\server\plugin\apache\plugin.json
|
|
||||||
2015-09-24 16:37:54.652 [FINE] PluginData : Plugin: Apache Web Server(ver: 1.0)
|
|
||||||
2015-09-24 16:37:54.665 [FINER] PluginData : Plugin interface: wa.server.plugin.WAServiceStatus --> wa.server.plugin.apache.ApacheStatus
|
|
||||||
2015-09-24 16:37:54.667 [FINER] PluginData : Plugin interface: wa.server.plugin.WAService --> wa.server.plugin.apache.ApacheService
|
|
||||||
2015-09-24 16:37:54.670 [FINE] PluginManager: Found plugin: C:\Users\ezivkoc\IdeaProjects\webadmin\.\src\wa\server\plugin\hwstatus\plugin.json
|
|
||||||
2015-09-24 16:37:54.670 [FINE] PluginData : Plugin: HW Status(ver: 1.0)
|
|
||||||
2015-09-24 16:37:54.676 [FINER] PluginData : Plugin interface: wa.server.plugin.WAStatus --> wa.server.plugin.hwstatus.HwStatus
|
|
||||||
2015-09-24 16:37:54.678 [FINER] PluginData : Plugin interface: wa.server.plugin.WAStatus --> wa.server.plugin.hwstatus.HDDStatus
|
|
||||||
2015-09-24 16:37:54.679 [FINER] PluginData : Plugin interface: wa.server.plugin.WAStatus --> wa.server.plugin.hwstatus.NetStatus
|
|
||||||
2015-09-24 16:37:54.694 [FINE] PluginManager: Found plugin: C:\Users\ezivkoc\IdeaProjects\webadmin\.\src\wa\server\plugin\tomcat\plugin.json
|
|
||||||
2015-09-24 16:37:54.695 [FINE] PluginData : Plugin: Apache Tomcat(ver: 1.0)
|
|
||||||
2015-09-24 16:37:54.696 [FINER] PluginData : Plugin interface: wa.server.plugin.WAServiceStatus --> (Not Available) wa.server.plugin.tomcat.TomcatStatus
|
2015-09-24 16:37:54.696 [FINER] PluginData : Plugin interface: wa.server.plugin.WAServiceStatus --> (Not Available) wa.server.plugin.tomcat.TomcatStatus
|
||||||
2015-09-24 16:37:54.696 [FINER] PluginData : Plugin interface: wa.server.plugin.WAService --> (Not Available) wa.server.plugin.apache.TomcatService
|
2015-09-24 16:37:54.696 [FINER] PluginData : Plugin interface: wa.server.plugin.WAService --> (Not Available) wa.server.plugin.apache.TomcatService
|
||||||
2015-09-24 16:37:54.729 [INFO] HttpServer : HTTP Server ready!
|
2015-09-24 16:37:54.729 [INFO] HttpServer : HTTP Server ready!
|
||||||
|
|
@ -76,6 +64,18 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="dropdown">
|
||||||
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||||
|
<span class="glyphicon glyphicon-console"></span>
|
||||||
|
</a>
|
||||||
|
<ul role="menu" class="dropdown-menu">
|
||||||
|
<li>
|
||||||
|
<pre class="pre-scrollable">
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
<li role="separator" class="divider"></li>
|
<li role="separator" class="divider"></li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Ziver Koc</a>
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Ziver Koc</a>
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@ package wa.server.page;
|
||||||
|
|
||||||
import wa.server.WAContext;
|
import wa.server.WAContext;
|
||||||
import wa.server.plugin.WAServiceConfig;
|
import wa.server.plugin.WAServiceConfig;
|
||||||
|
import wa.server.plugin.apache.ApacheConfigVirtualHost;
|
||||||
|
import zutil.db.bean.Configurator;
|
||||||
import zutil.io.file.FileUtil;
|
import zutil.io.file.FileUtil;
|
||||||
import zutil.log.LogUtil;
|
import zutil.log.LogUtil;
|
||||||
import zutil.net.http.HttpHeaderParser;
|
import zutil.net.http.HttpHeaderParser;
|
||||||
|
|
@ -31,6 +33,8 @@ import zutil.parser.DataNode;
|
||||||
import zutil.parser.Templator;
|
import zutil.parser.Templator;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
@ -60,9 +64,19 @@ public class ConfigPage implements WAPage{
|
||||||
Map<String, String> cookie,
|
Map<String, String> cookie,
|
||||||
Map<String, String> request) {
|
Map<String, String> request) {
|
||||||
try {
|
try {
|
||||||
|
List<?> confObjs = config.getConfigData();
|
||||||
|
ArrayList<Configurator> confList = new ArrayList<>();
|
||||||
|
for(Object obj : confObjs){
|
||||||
|
confList.add(new Configurator(obj));
|
||||||
|
}
|
||||||
|
confList.add(new Configurator(new ApacheConfigVirtualHost.ApacheVirtualHostData()));
|
||||||
|
confList.add(new Configurator(new ApacheConfigVirtualHost.ApacheVirtualHostData()));
|
||||||
|
confList.add(new Configurator(new ApacheConfigVirtualHost.ApacheVirtualHostData()));
|
||||||
|
|
||||||
Templator tmpl = new Templator(FileUtil.find(TMPL_FILE));
|
Templator tmpl = new Templator(FileUtil.find(TMPL_FILE));
|
||||||
tmpl.set("headers", null);
|
tmpl.set("params", Configurator.getConfiguration(
|
||||||
tmpl.set("data", null);
|
config.getConfigClass()));
|
||||||
|
tmpl.set("data", confList);
|
||||||
return tmpl;
|
return tmpl;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.log(Level.SEVERE, null, e);
|
log.log(Level.SEVERE, null, e);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
package wa.server.plugin;
|
package wa.server.plugin;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface WAServiceConfig {
|
public interface WAServiceConfig {
|
||||||
/**
|
/**
|
||||||
* @return the String name of this configuration type
|
* @return the String name of this configuration type
|
||||||
|
|
@ -21,4 +23,18 @@ public interface WAServiceConfig {
|
||||||
* Configure service with current configuration data
|
* Configure service with current configuration data
|
||||||
*/
|
*/
|
||||||
public void configure() throws Exception;
|
public void configure() throws Exception;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a list of configuration objects, the object
|
||||||
|
* configuration can be changed with the
|
||||||
|
* {@link zutil.db.bean.Configurator} class.
|
||||||
|
*/
|
||||||
|
public List<?> getConfigData();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the class that contains the configuration data
|
||||||
|
*/
|
||||||
|
public Class<?> getConfigClass();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import wa.server.WAConstants;
|
||||||
import wa.server.plugin.WAServiceConfig;
|
import wa.server.plugin.WAServiceConfig;
|
||||||
import wa.server.util.ConfigFileUtil;
|
import wa.server.util.ConfigFileUtil;
|
||||||
import zutil.db.DBConnection;
|
import zutil.db.DBConnection;
|
||||||
|
import zutil.db.bean.Configurator.Configurable;
|
||||||
import zutil.db.bean.DBBean;
|
import zutil.db.bean.DBBean;
|
||||||
import zutil.db.bean.DBBean.DBTable;
|
import zutil.db.bean.DBBean.DBTable;
|
||||||
import zutil.io.IOUtil;
|
import zutil.io.IOUtil;
|
||||||
|
|
@ -55,12 +56,24 @@ public class ApacheConfigVirtualHost implements WAServiceConfig{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<?> getConfigData() {
|
||||||
|
return vhosts;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Class<?> getConfigClass() {
|
||||||
|
return ApacheVirtualHostData.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@DBTable(WAConstants.DB_TABLE_PREFIX + "_apache_vhost")
|
@DBTable(WAConstants.DB_TABLE_PREFIX + "_apache_vhost")
|
||||||
public static class ApacheVirtualHostData extends DBBean{
|
public static class ApacheVirtualHostData extends DBBean{
|
||||||
|
@Configurable("Domain")
|
||||||
protected String domain;
|
protected String domain;
|
||||||
protected String domain_old;
|
protected transient String domain_old;
|
||||||
|
@Configurable("DocRoot")
|
||||||
protected String path;
|
protected String path;
|
||||||
|
@Configurable("SSL")
|
||||||
protected boolean ssl;
|
protected boolean ssl;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -96,7 +109,7 @@ public class ApacheConfigVirtualHost implements WAServiceConfig{
|
||||||
writeConfiguration(out);
|
writeConfiguration(out);
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
public void writeConfiguration(PrintStream out){
|
protected void writeConfiguration(PrintStream out){
|
||||||
if(ssl){
|
if(ssl){
|
||||||
out.println("<VirtualHost *:80>");
|
out.println("<VirtualHost *:80>");
|
||||||
out.println(" ServerName "+ domain +":80");
|
out.println(" ServerName "+ domain +":80");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue