ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akuznet...@apache.org
Subject incubator-ignite git commit: IGNITE-843: WIP Web config.
Date Thu, 04 Jun 2015 18:57:16 GMT
Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-843 c6747cf19 -> 6a9b8823d


IGNITE-843: WIP Web config.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/6a9b8823
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/6a9b8823
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/6a9b8823

Branch: refs/heads/ignite-843
Commit: 6a9b8823d0250cc85b5b223ae0b927cc564c0a3e
Parents: c6747cf
Author: AKuznetsov <akuznetsov@gridgain.com>
Authored: Fri Jun 5 01:57:12 2015 +0700
Committer: AKuznetsov <akuznetsov@gridgain.com>
Committed: Fri Jun 5 01:57:12 2015 +0700

----------------------------------------------------------------------
 .../nodejs/public/javascripts/controllers/common.js   |  2 +-
 modules/webconfig/nodejs/public/stylesheets/style.css |  2 +-
 modules/webconfig/nodejs/views/caches.jade            |  6 +++---
 modules/webconfig/nodejs/views/clients.jade           |  4 ++--
 modules/webconfig/nodejs/views/discovery.jade         |  6 +++---
 modules/webconfig/nodejs/views/includes/footer.jade   |  2 +-
 modules/webconfig/nodejs/views/includes/header.jade   |  4 ++--
 modules/webconfig/nodejs/views/index.jade             | 14 +++++++-------
 modules/webconfig/nodejs/views/layout-sidebar.jade    | 10 +++++-----
 modules/webconfig/nodejs/views/layout.jade            |  9 +++++----
 modules/webconfig/nodejs/views/login.jade             |  8 ++++----
 modules/webconfig/nodejs/views/persistence.jade       |  4 ++--
 modules/webconfig/nodejs/views/sql.jade               |  4 ++--
 13 files changed, 38 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/public/javascripts/controllers/common.js
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/javascripts/controllers/common.js b/modules/webconfig/nodejs/public/javascripts/controllers/common.js
index b1fa0af..cead98f 100644
--- a/modules/webconfig/nodejs/public/javascripts/controllers/common.js
+++ b/modules/webconfig/nodejs/public/javascripts/controllers/common.js
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-var configuratorModule =  angular.module('ignite-web-configurator', ['smart-table', 'mgcrea.ngStrap']);
+var configuratorModule =  angular.module('ignite-web-configurator', ['smart-table', 'mgcrea.ngStrap',
'ngSanitize']);
 
 configuratorModule.config(function($selectProvider) {
     angular.extend($selectProvider.defaults, {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/public/stylesheets/style.css
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/public/stylesheets/style.css b/modules/webconfig/nodejs/public/stylesheets/style.css
index 261f76d..613f8ac 100644
--- a/modules/webconfig/nodejs/public/stylesheets/style.css
+++ b/modules/webconfig/nodejs/public/stylesheets/style.css
@@ -1 +1 @@
-.main-header .logo{height:auto}.main-sidebar{padding-top:60px}.navbar-default .navbar-brand,.navbar-default
.navbar-brand:hover{position:absolute;width:100%;left:0;text-align:center}.modal-backdrop.am-fade{opacity:.5;transition:opacity
.15s linear}.modal-backdrop.am-fade.ng-enter{opacity:0}.modal-backdrop.am-fade.ng-enter.ng-enter-active{opacity:.5}.modal-backdrop.am-fade.ng-leave{opacity:.5}.modal-backdrop.am-fade.ng-leave.ng-leave-active{opacity:0}.modal.center
.modal-dialog{position:fixed;top:40%;left:50%;min-width:320px;max-width:630px;width:50%;-webkit-transform:translateX(-50%)
translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ng-table th.text-right{text-align:right}.ng-table
th.text-left{text-align:left}.ng-table th.text-center{text-align:center}.fa.fa-remove{color:red}.border-left{-webkit-box-shadow:1px
0 0 0 #eee inset;box-shadow:1px 0 0 0 #eee inset}.border-right{-webkit-box-shadow:1px 0 0
0 #eee;box-shadow:1px 0 0 0 #eee}.theme-line{background-color:#f9f9f9}.t
 heme-line header{background-color:#fff}.theme-line header .search-bar{width:90%;margin:30px
auto 0;-webkit-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.1),0
0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);position:relative}.theme-line
header .search-bar.focus{-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0
0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1)}.theme-line header .search-bar .fa{position:absolute;top:10px;left:14px;font-size:21px;color:#ccc;z-index:10}.theme-line
header .search-bar .twitter-typeahead{width:100%}.theme-line header .search-bar input{-webkit-border-radius:5px;border-radius:5px;height:100%;border:0
none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;box-shadow:0 2px 2px rgba(0,0,0,0.1)
inset;color:#444;width:100%;padding:13px 13px 13px 50px;font-size:14px}.theme-line header
.search-bar input.tt-hint{color:#bbb}.theme-line header .search-bar input:ac
 tive .theme-line header .search-bar input:focus{outline:0 none;-webkit-box-shadow:0 2px 2px
rgba(0,0,0,0.2) inset;box-shadow:0 2px 2px rgba(0,0,0,0.2) inset}.theme-line header .search-bar
.tt-dropdown-menu,.theme-solid header .search-bar .tt-dropdown-menu{width:100%;text-align:left}.theme-line
header .search-bar .tt-dropdown-menu h3{padding:0 45px;color:#ccc;font-weight:bold;font-size:12px;margin:10px
0 4px;text-transform:uppercase}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions{display:block}.theme-line
header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion{cursor:pointer;font-size:14px;padding:4px
45px}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion p{color:#333;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line
header .search-bar .tt-cursor{background-color:#eee}.theme-line header .search-bar .tt-cursor
p{color:#fff}.theme-line header a.btn{border:0 none;padding:10px 25px;ba
 ckground-color:rgba(0,0,0,0.15)}.theme-line header a.btn:hover{background-color:rgba(0,0,0,0.25)}.theme-line
header a.btn.btn-link{background:transparent;color:rgba(255,255,255,0.8)}.theme-line header
a.btn.btn-link:hover{color:#fff;text-decoration:none}.theme-line .navbar-nav a{background-color:transparent}.theme-line
.navbar-nav a:hover,.theme-line .navbar-nav a:active,.theme-line .navbar-nav a:focus{background-color:transparent}.theme-line
.main-links{padding-top:50px}.theme-line .main-links h3{margin-top:0;font-size:17px}.theme-line
.main-links .links a{color:#888}.theme-line .main-links .links a:hover{text-decoration:none}.theme-line
#category-columns,.theme-solid #category-columns{margin:50px 30px 0}.theme-line #category-columns
h4{text-transform:uppercase;font-weight:300;color:#999;font-size:14px}.theme-line #category-columns
ul{list-style:none;padding:0;margin-bottom:15px}.theme-line #category-columns ul li a{padding:4px
0;display:block;font-size:16px}.theme-line #category-c
 olumns ul .view-all{font-size:0.85em}.theme-line .docs-header{color:#999;overflow:hidden}.theme-line
.docs-header h1{color:#444;margin-top:0;font-size:25px}.theme-line .btn-primary{border:0 none}.theme-line
.main-content .nav-horizontal a{-webkit-box-shadow:0 0;box-shadow:0 0;border:0 none;background-color:#fff;-webkit-border-radius:0;border-radius:0;color:#aaa;padding:6px;margin:0
14px}.theme-line .main-content .nav-horizontal a:hover{color:#999;border-bottom:4px solid
#ddd}.theme-line .main-content .nav-horizontal a.active{border-bottom:4px solid #888}.theme-line
.sidebar-nav{color:#474a54;padding-bottom:30px}.theme-line .sidebar-nav ul{padding:0;list-style:none;font-size:13px;margin:3px
0 0}.theme-line .sidebar-nav ul li a{padding:3px 0;display:block;color:#666;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line
.sidebar-nav ul li a:before{top:0;content:" ";display:block;width:6px;height:100%;position:absolute;left:-30
 px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.theme-line .sidebar-nav ul
li .subcategory{padding-left:15px}.theme-line .sidebar-nav h4{margin-top:2em;font-weight:normal;text-transform:uppercase;font-size:11px;margin-bottom:10px;color:#bbb}.theme-line
.sidebar-nav h4:first-child{margin-top:0}.theme-line .sidebar-nav .ask{width:100%;text-align:center;padding:10px}.theme-line
.border-left .sidebar-nav{padding-left:15px}.theme-line .suggest{padding:4px;display:inline-block;font-size:12px}.header{padding:15px}.header
.has-github{padding-right:136px}.header h1.navbar-brand{height:40px;width:200px;padding:0;margin:0;margin-top:5px;margin-right:15px}.header
h1.navbar-brand a{text-indent:-99999px;background-position:center center;display:block;width:100%;height:100%;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;background-repeat:no-repeat}.header
.nav.navbar-nav.pull-right{position:relative;right:-30px}.header .nav.navbar-nav .not-link
 {padding:15px;display:inline-block}.header .nav.navbar-nav .stable,.header .nav.navbar-nav
.beta,.header .nav.navbar-nav .private{font-size:9px;padding:3px 5px;display:inline-block;line-height:8px;-webkit-border-radius:3px;border-radius:3px;margin-left:6px;color:#fff;top:-2px;position:relative;opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";filter:alpha(opacity=60)}.header
.nav.navbar-nav a:hover>.stable,.header .nav.navbar-nav a:hover>.beta,.header .nav.navbar-nav
a:hover>.private{opacity:1;-ms-filter:none;filter:none}.header .nav.navbar-nav .beta{background-color:#59c3d1}.header
.nav.navbar-nav .stable{background-color:#41b841}.header .nav.navbar-nav .private{background-color:#333}.header
#jumbotron{margin:55px 70px 50px;text-align:center}.header #jumbotron h2{margin-top:0;margin-bottom:20px}.header
#jumbotron p{margin-bottom:0;line-height:1.6em;font-size:16px}.header #jumbotron .btn{margin-top:20px}.header
.searchbox{position:relative;margin-right:15p
 x;top:9px}.header .searchbox .fa-search{position:absolute;top:8px;right:10px;color:#777;pointer-events:none}.header
.searchbox .typeahead{line-height:1.25em;-webkit-transition:.3s ease-out;-moz-transition:.3s
ease-out;-o-transition:.3s ease-out;-ms-transition:.3s ease-out;transition:.3s ease-out;background-color:rgba(0,0,0,0.05);-webkit-border-radius:5px;border-radius:5px;width:95px}.header
.searchbox .typeahead:focus,.header .searchbox .typeahead:active{outline:0 none}.header .searchbox
.tt-dropdown-menu{max-width:350px;margin-left:-100px}.header .searchbox .tt-dropdown-menu
h3{width:100px;float:left;margin:0;padding:8px 0 6px 15px;font-size:13px;color:#bbb}.header
.searchbox .tt-dropdown-menu .tt-suggestions{display:block;float:left;width:250px}.header
.searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion{font-size:14px}.header .searchbox
.tt-dropdown-menu .tt-suggestions .tt-suggestion p{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.he
 ader .searchbox .tt-cursor{background-color:#eee}.header .searchbox .tt-cursor p{color:#fff}.header
.searchbox input{border:0 none;display:inline-block;font-size:14px;padding:6px 32px 6px 12px;margin:0}.header
.searchbox input.tt-hint{height:auto}.header .searchbox.focus input{width:250px}.theme-line
header{border-bottom:8px solid}.theme-line header h2{color:#aaa}.theme-line header p{color:#666}.theme-line
header{border-bottom-color:#ec1c24}.theme-line .navbar-nav{color:#888}.theme-line .navbar-nav
a{color:#bbb}.theme-line header a.btn{background-color:#ec1c24}.theme-line header a.btn:hover{background-color:#950d12}.theme-line
header .navbar-nav .tt-cursor{background-color:#ec1c24}.theme-line header .navbar-nav a:hover,.theme-line
header .navbar-nav .open>a{color:#ec1c24}.theme-line .navbar-nav .active a{color:#ec1c24}.theme-line
.navbar-nav .active a:hover{color:#950d12}.theme-line .main-links .links a:hover{color:#ec1c24}.theme-line
.main-content a{color:#ec1c24}.theme-line .main-
 content a:hover{color:#950d12}.theme-line .sidebar-nav ul li a.active:before{background-color:#ec1c24}.theme-line
.sidebar-nav ul li a.active{color:#ec1c24}.theme-line .sidebar-nav ul li a:hover,.theme-line
.sidebar-nav ul li a.active:hover{color:#950d12}.theme-line .btn-primary{background-color:#ec1c24}.theme-line
.btn-primary:hover{background-color:#950d12}.theme-line .main-content .nav-horizontal a.active{border-color:#ec1c24;color:#ec1c24}.theme-line
.main-content .nav-horizontal a:hover{color:#950d12}.theme-line .main-content .nav-horizontal
a.active:hover{border-color:#950d12}.theme-line header .navbar-nav a.active,.theme-line #versions-list
li a:hover strong,.theme-line #versions-list li a.active .current,.theme-line #versions-list
li a:active .current{color:#ec1c24}.theme-line.body-threes .section-right .threes-nav .btn-default:hover,.theme-line.page-docs.body-threes
.section-right .threes-nav .pull-right a:hover{color:#ec1c24;border-color:#ec1c24}.body-overlap
.main-content
 {margin-top:30px}.body-box .main-content,.body-overlap .main-content{padding:30px;-webkit-box-shadow:0
0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 1px rgba(0,0,0,0.1);background-color:#fff}body{font-weight:400;font-family:Roboto
Slab, serif}h1,h2,h3,h4,h5,h6{font-weight:700;font-family:Roboto Slab, serif}.submit-vote.submit-vote-parent.voted
a.submit-vote-button,.submit-vote.submit-vote-parent a.submit-vote-button:hover{background-color:#ec1c24}div.submit-vote.submit-vote-parent.voted
a.submit-vote-button:hover{background-color:#950d12}a,.link .title{color:#ec1c24}a:hover,.link:hover
.title{color:#950d12}.header h1.navbar-brand a{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.header
h1.navbar-brand{width:96px}.block-edit-parameters{text-align:right;padding-bottom:5px}.ng-table-pager{display:none}.container-footer{margin-top:20px}.vcenter{display:inline-block;vertical-align:middle;float:none}.modal{display:block;overflow:hidden}.modal
.close{position:ab
 solute;top:24px;right:24px;float:none}.modal .modal-dialog{width:610px}.modal .modal-content{-webkit-border-radius:0;border-radius:0;background-color:#f7f7f7}.modal
.modal-content .modal-header{background-color:#fff;text-align:center;color:#555;padding:24px;font-family:"myriad-pro",sans-serif}.modal
.modal-content .modal-header h4{font-family:"myriad-pro",sans-serif;font-size:22px}.modal
.modal-content .modal-header h4 .fa{display:block;font-size:41px;color:#ddd;margin-bottom:5px}.modal
.modal-content .modal-header p{margin:0;color:#aaa;font-size:1em;margin-top:3px}.modal .modal-content
.modal-spacer{padding:10px 10px 0 10px}.modal .modal-content .modal-footer{margin-top:0}.modal-body{padding-top:30px}h1.ignite-logo{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.st-sort-ascent:after{font-family:FontAwesome,
serif;content:'\f077'}.st-sort-descent:after{font-family:FontAwesome, serif;content:'\f078'}.block-display-image
img{max-width:100%;max-height:4
 50px;margin:auto;display:block}.greedy{min-height:200px;height:calc(100vh - 230px)}@media
(min-width:768px){.navbar-nav>li>a{padding-top:20px;padding-bottom:10px}}.settings-row{display:block;margin:0.65em
0;padding-left:18px}.settings-row [class*="col-"]{display:inline-block;vertical-align:middle;float:none;padding-left:0
!important;padding-right:0 !important}.settings-row input[type="checkbox"]{margin-right:4px}button{margin-right:4px}h1,h2,h3{-webkit-user-select:none;font-weight:normal;line-height:1}h3{color:black;font-size:1.2em;margin-top:1.2em;margin-bottom:1.2em}table
tr:hover{cursor:pointer}.input-group{display:inline-block}.input-group .form-control{width:auto;margin-left:0;margin-right:0}.form-control{display:inline-block;text-align:left;padding:3px
6px;height:28px}.form-control button{text-align:left}button .caret{float:right;margin-left:0;margin-top:7px}.panel-heading
.panel-title{margin-left:-18px}.theme-line .links table{table-layout:fixed;margin:0}.theme-line
.links ta
 ble td{padding-left:18px}.theme-line .links table a{color:#666}.theme-line .links table a:hover{color:#ec1c24}.theme-line
.links table .active a{color:#ec1c24}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-heading{margin:-0.65em
0}.panel{margin-top:-0.65em}.tooltip.right .tooltip-arrow{border-right-color:#ec1c24}.tooltip>.tooltip-inner{max-width:400px;text-align:left;background-color:#ec1c24}label{font-weight:normal;margin-bottom:0px}.tip{margin-left:5px}
\ No newline at end of file
+.main-header .logo{height:auto}.main-sidebar{padding-top:60px}.navbar-default .navbar-brand,.navbar-default
.navbar-brand:hover{position:absolute;width:100%;left:0;text-align:center}.modal-backdrop.am-fade{opacity:.5;transition:opacity
.15s linear}.modal-backdrop.am-fade.ng-enter{opacity:0}.modal-backdrop.am-fade.ng-enter.ng-enter-active{opacity:.5}.modal-backdrop.am-fade.ng-leave{opacity:.5}.modal-backdrop.am-fade.ng-leave.ng-leave-active{opacity:0}.modal.center
.modal-dialog{position:fixed;top:40%;left:50%;min-width:320px;max-width:630px;width:50%;-webkit-transform:translateX(-50%)
translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ng-table th.text-right{text-align:right}.ng-table
th.text-left{text-align:left}.ng-table th.text-center{text-align:center}.fa.fa-remove{color:red}.border-left{-webkit-box-shadow:1px
0 0 0 #eee inset;box-shadow:1px 0 0 0 #eee inset}.border-right{-webkit-box-shadow:1px 0 0
0 #eee;box-shadow:1px 0 0 0 #eee}.theme-line{background-color:#f9f9f9}.t
 heme-line header{background-color:#fff}.theme-line header .search-bar{width:90%;margin:30px
auto 0;-webkit-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.1),0
0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 5px rgba(0,0,0,0.1),0 0 0 1px rgba(0,0,0,0.1);position:relative}.theme-line
header .search-bar.focus{-webkit-box-shadow:0 0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1);box-shadow:0
0 0 5px rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.1)}.theme-line header .search-bar .fa{position:absolute;top:10px;left:14px;font-size:21px;color:#ccc;z-index:10}.theme-line
header .search-bar .twitter-typeahead{width:100%}.theme-line header .search-bar input{-webkit-border-radius:5px;border-radius:5px;height:100%;border:0
none;-webkit-box-shadow:0 2px 2px rgba(0,0,0,0.1) inset;box-shadow:0 2px 2px rgba(0,0,0,0.1)
inset;color:#444;width:100%;padding:13px 13px 13px 50px;font-size:14px}.theme-line header
.search-bar input.tt-hint{color:#bbb}.theme-line header .search-bar input:ac
 tive .theme-line header .search-bar input:focus{outline:0 none;-webkit-box-shadow:0 2px 2px
rgba(0,0,0,0.2) inset;box-shadow:0 2px 2px rgba(0,0,0,0.2) inset}.theme-line header .search-bar
.tt-dropdown-menu,.theme-solid header .search-bar .tt-dropdown-menu{width:100%;text-align:left}.theme-line
header .search-bar .tt-dropdown-menu h3{padding:0 45px;color:#ccc;font-weight:bold;font-size:12px;margin:10px
0 4px;text-transform:uppercase}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions{display:block}.theme-line
header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion{cursor:pointer;font-size:14px;padding:4px
45px}.theme-line header .search-bar .tt-dropdown-menu .tt-suggestions .tt-suggestion p{color:#333;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line
header .search-bar .tt-cursor{background-color:#eee}.theme-line header .search-bar .tt-cursor
p{color:#fff}.theme-line header a.btn{border:0 none;padding:10px 25px;ba
 ckground-color:rgba(0,0,0,0.15)}.theme-line header a.btn:hover{background-color:rgba(0,0,0,0.25)}.theme-line
header a.btn.btn-link{background:transparent;color:rgba(255,255,255,0.8)}.theme-line header
a.btn.btn-link:hover{color:#fff;text-decoration:none}.theme-line .navbar-nav a{background-color:transparent}.theme-line
.navbar-nav a:hover,.theme-line .navbar-nav a:active,.theme-line .navbar-nav a:focus{background-color:transparent}.theme-line
.main-links{padding-top:50px}.theme-line .main-links h3{margin-top:0;font-size:17px}.theme-line
.main-links .links a{color:#888}.theme-line .main-links .links a:hover{text-decoration:none}.theme-line
#category-columns,.theme-solid #category-columns{margin:50px 30px 0}.theme-line #category-columns
h4{text-transform:uppercase;font-weight:300;color:#999;font-size:14px}.theme-line #category-columns
ul{list-style:none;padding:0;margin-bottom:15px}.theme-line #category-columns ul li a{padding:4px
0;display:block;font-size:16px}.theme-line #category-c
 olumns ul .view-all{font-size:0.85em}.theme-line .docs-header{color:#999;overflow:hidden}.theme-line
.docs-header h1{color:#444;margin-top:0;font-size:25px}.theme-line .btn-primary{border:0 none}.theme-line
.main-content .nav-horizontal a{-webkit-box-shadow:0 0;box-shadow:0 0;border:0 none;background-color:#fff;-webkit-border-radius:0;border-radius:0;color:#aaa;padding:6px;margin:0
14px}.theme-line .main-content .nav-horizontal a:hover{color:#999;border-bottom:4px solid
#ddd}.theme-line .main-content .nav-horizontal a.active{border-bottom:4px solid #888}.theme-line
.sidebar-nav{color:#474a54;padding-bottom:30px}.theme-line .sidebar-nav ul{padding:0;list-style:none;font-size:13px;margin:3px
0 0}.theme-line .sidebar-nav ul li a{padding:3px 0;display:block;color:#666;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.theme-line
.sidebar-nav ul li a:before{top:0;content:" ";display:block;width:6px;height:100%;position:absolute;left:-30
 px}.theme-line .sidebar-nav ul li a:hover{text-decoration:none}.theme-line .sidebar-nav ul
li .subcategory{padding-left:15px}.theme-line .sidebar-nav h4{margin-top:2em;font-weight:normal;text-transform:uppercase;font-size:11px;margin-bottom:10px;color:#bbb}.theme-line
.sidebar-nav h4:first-child{margin-top:0}.theme-line .sidebar-nav .ask{width:100%;text-align:center;padding:10px}.theme-line
.border-left .sidebar-nav{padding-left:15px}.theme-line .suggest{padding:4px;display:inline-block;font-size:12px}.header{padding:15px}.header
.has-github{padding-right:136px}.header h1.navbar-brand{height:40px;width:200px;padding:0;margin:0;margin-top:5px;margin-right:15px}.header
h1.navbar-brand a{text-indent:-99999px;background-position:center center;display:block;width:100%;height:100%;-webkit-background-size:contain;-moz-background-size:contain;background-size:contain;background-repeat:no-repeat}.header
.nav.navbar-nav.pull-right{position:relative;right:-30px}.header .nav.navbar-nav .not-link
 {padding:15px;display:inline-block}.header .nav.navbar-nav .stable,.header .nav.navbar-nav
.beta,.header .nav.navbar-nav .private{font-size:9px;padding:3px 5px;display:inline-block;line-height:8px;-webkit-border-radius:3px;border-radius:3px;margin-left:6px;color:#fff;top:-2px;position:relative;opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";filter:alpha(opacity=60)}.header
.nav.navbar-nav a:hover>.stable,.header .nav.navbar-nav a:hover>.beta,.header .nav.navbar-nav
a:hover>.private{opacity:1;-ms-filter:none;filter:none}.header .nav.navbar-nav .beta{background-color:#59c3d1}.header
.nav.navbar-nav .stable{background-color:#41b841}.header .nav.navbar-nav .private{background-color:#333}.header
#jumbotron{margin:55px 70px 50px;text-align:center}.header #jumbotron h2{margin-top:0;margin-bottom:20px}.header
#jumbotron p{margin-bottom:0;line-height:1.6em;font-size:16px}.header #jumbotron .btn{margin-top:20px}.header
.searchbox{position:relative;margin-right:15p
 x;top:9px}.header .searchbox .fa-search{position:absolute;top:8px;right:10px;color:#777;pointer-events:none}.header
.searchbox .typeahead{line-height:1.25em;-webkit-transition:.3s ease-out;-moz-transition:.3s
ease-out;-o-transition:.3s ease-out;-ms-transition:.3s ease-out;transition:.3s ease-out;background-color:rgba(0,0,0,0.05);-webkit-border-radius:5px;border-radius:5px;width:95px}.header
.searchbox .typeahead:focus,.header .searchbox .typeahead:active{outline:0 none}.header .searchbox
.tt-dropdown-menu{max-width:350px;margin-left:-100px}.header .searchbox .tt-dropdown-menu
h3{width:100px;float:left;margin:0;padding:8px 0 6px 15px;font-size:13px;color:#bbb}.header
.searchbox .tt-dropdown-menu .tt-suggestions{display:block;float:left;width:250px}.header
.searchbox .tt-dropdown-menu .tt-suggestions .tt-suggestion{font-size:14px}.header .searchbox
.tt-dropdown-menu .tt-suggestions .tt-suggestion p{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.he
 ader .searchbox .tt-cursor{background-color:#eee}.header .searchbox .tt-cursor p{color:#fff}.header
.searchbox input{border:0 none;display:inline-block;font-size:14px;padding:6px 32px 6px 12px;margin:0}.header
.searchbox input.tt-hint{height:auto}.header .searchbox.focus input{width:250px}.theme-line
header{border-bottom:8px solid}.theme-line header h2{color:#aaa}.theme-line header p{color:#666}.theme-line
header{border-bottom-color:#ec1c24}.theme-line .navbar-nav{color:#888}.theme-line .navbar-nav
a{color:#bbb}.theme-line header a.btn{background-color:#ec1c24}.theme-line header a.btn:hover{background-color:#950d12}.theme-line
header .navbar-nav .tt-cursor{background-color:#ec1c24}.theme-line header .navbar-nav a:hover,.theme-line
header .navbar-nav .open>a{color:#ec1c24}.theme-line .navbar-nav .active a{color:#ec1c24}.theme-line
.navbar-nav .active a:hover{color:#950d12}.theme-line .main-links .links a:hover{color:#ec1c24}.theme-line
.main-content a{color:#ec1c24}.theme-line .main-
 content a:hover{color:#950d12}.theme-line .sidebar-nav ul li a.active:before{background-color:#ec1c24}.theme-line
.sidebar-nav ul li a.active{color:#ec1c24}.theme-line .sidebar-nav ul li a:hover,.theme-line
.sidebar-nav ul li a.active:hover{color:#950d12}.theme-line .btn-primary{background-color:#ec1c24}.theme-line
.btn-primary:hover{background-color:#950d12}.theme-line .main-content .nav-horizontal a.active{border-color:#ec1c24;color:#ec1c24}.theme-line
.main-content .nav-horizontal a:hover{color:#950d12}.theme-line .main-content .nav-horizontal
a.active:hover{border-color:#950d12}.theme-line header .navbar-nav a.active,.theme-line #versions-list
li a:hover strong,.theme-line #versions-list li a.active .current,.theme-line #versions-list
li a:active .current{color:#ec1c24}.theme-line.body-threes .section-right .threes-nav .btn-default:hover,.theme-line.page-docs.body-threes
.section-right .threes-nav .pull-right a:hover{color:#ec1c24;border-color:#ec1c24}.body-overlap
.main-content
 {margin-top:30px}.body-box .main-content,.body-overlap .main-content{padding:30px;-webkit-box-shadow:0
0 0 1px rgba(0,0,0,0.1);box-shadow:0 0 0 1px rgba(0,0,0,0.1);background-color:#fff}body{font-weight:400;font-family:Roboto
Slab, serif}h1,h2,h3,h4,h5,h6{font-weight:700;font-family:Roboto Slab, serif}.submit-vote.submit-vote-parent.voted
a.submit-vote-button,.submit-vote.submit-vote-parent a.submit-vote-button:hover{background-color:#ec1c24}div.submit-vote.submit-vote-parent.voted
a.submit-vote-button:hover{background-color:#950d12}a,.link .title{color:#ec1c24}a:hover,.link:hover
.title{color:#950d12}.header h1.navbar-brand a{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.header
h1.navbar-brand{width:96px}.block-edit-parameters{text-align:right;padding-bottom:5px}.ng-table-pager{display:none}.container-footer{margin-top:20px}.vcenter{display:inline-block;vertical-align:middle;float:none}.modal{display:block;overflow:hidden}.modal
.close{position:ab
 solute;top:24px;right:24px;float:none}.modal .modal-dialog{width:610px}.modal .modal-content{-webkit-border-radius:0;border-radius:0;background-color:#f7f7f7}.modal
.modal-content .modal-header{background-color:#fff;text-align:center;color:#555;padding:24px;font-family:"myriad-pro",sans-serif}.modal
.modal-content .modal-header h4{font-family:"myriad-pro",sans-serif;font-size:22px}.modal
.modal-content .modal-header h4 .fa{display:block;font-size:41px;color:#ddd;margin-bottom:5px}.modal
.modal-content .modal-header p{margin:0;color:#aaa;font-size:1em;margin-top:3px}.modal .modal-content
.modal-spacer{padding:10px 10px 0 10px}.modal .modal-content .modal-footer{margin-top:0}.modal-body{padding-top:30px}h1.ignite-logo{background-image:url("https://www.filepicker.io/api/file/QagunjDGRFul2JgNCAli")}.st-sort-ascent:after{font-family:FontAwesome,
serif;content:'\f077'}.st-sort-descent:after{font-family:FontAwesome, serif;content:'\f078'}.block-display-image
img{max-width:100%;max-height:4
 50px;margin:auto;display:block}.greedy{min-height:200px;height:calc(100vh - 230px)}@media
(min-width:768px){.navbar-nav>li>a{padding-top:20px;padding-bottom:10px}}.settings-row{display:block;margin:0.65em
0;padding-left:18px}.settings-row [class*="col-"]{display:inline-block;vertical-align:middle;float:none;padding-left:0
!important;padding-right:0 !important}.settings-row input[type="checkbox"]{margin-right:4px}button{margin-right:4px}h1,h2,h3{-webkit-user-select:none;font-weight:normal;line-height:1}h3{color:black;font-size:1.2em;margin-top:1.2em;margin-bottom:1.2em}table
tr:hover{cursor:pointer}.input-group{display:inline-block}.input-group .form-control{width:auto;margin-left:0;margin-right:0}.form-control{display:inline-block;text-align:left;padding:3px
6px;height:28px}.form-control button{text-align:left}button .caret{float:right;margin-left:0;margin-top:7px}.panel-heading
.panel-title{margin-left:-18px}.theme-line .links table{table-layout:fixed;margin:0}.theme-line
.links ta
 ble td{padding-left:18px}.theme-line .links table a{color:#666}.theme-line .links table a:hover{color:#ec1c24}.theme-line
.links table .active a{color:#ec1c24}.btn{padding:3px 6px}.panel-title a{font-size:14px}.panel-heading{margin:-0.65em
0}.panel{margin-top:-0.65em}.tooltip.right .tooltip-arrow{border-right-color:#ec1c24}.tooltip>.tooltip-inner{max-width:400px;text-align:left;background-color:#ec1c24}label{font-weight:normal;margin-bottom:0}.tip{margin-left:5px}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/caches.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/caches.jade b/modules/webconfig/nodejs/views/caches.jade
index b18eeca..132dd1a 100644
--- a/modules/webconfig/nodejs/views/caches.jade
+++ b/modules/webconfig/nodejs/views/caches.jade
@@ -19,8 +19,8 @@ extends layout-sidebar
 append scripts
     script(src='/javascripts/controllers/caches.js')
 
-mixin tip
-    i.tip.fa.fa-question-circle(bs-tooltip ng-if='field.tip' type='button' data-placement='right'
data-trigger='hover' data-title='$sce.trustAsHtml({{field.tip.join("")}})' data-html='true')
+mixin tip(title)
+    i.tip.fa.fa-question-circle(bs-tooltip ng-if='field.tip' type='button' data-placement='right'
data-trigger='click' data-title='{{field.tip.join("")}}' data-html='true')
 
 block content
     .docs-header
@@ -49,7 +49,7 @@ block content
                         input.form-control(type='text' ng-model='backupItem[field.model]'
placeholder='{{field.placeholder}}')
                     div(ng-switch-when='dropdown')
                         button.form-control(bs-select ng-model='backupItem[field.model]'
data-template='/select' data-placeholder='{{field.placeholder}}' bs-options='item.value as
item.label for item in {{field.items}}')
-                +tip
+                i.tip.fa.fa-question-circle(bs-tooltip ng-if='field.tip' type='button' data-placement='right'
data-trigger='hover' data-title='{{field.tip.join("")}}' data-html='true')
             .panel(bs-collapse data-start-collapsed='true')
                 .panel-collapse(bs-collapse-target)
                     div(ng-repeat='group in advanced')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/clients.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/clients.jade b/modules/webconfig/nodejs/views/clients.jade
index f321936..6b55449 100644
--- a/modules/webconfig/nodejs/views/clients.jade
+++ b/modules/webconfig/nodejs/views/clients.jade
@@ -17,10 +17,10 @@
 extends layout-sidebar
 block head
 block content
-    div.docs-header
+    .docs-header
         h1 Clients
         p Create and configure Ignite clients.
         hr
-    div.docs-body(ng-controller='clientsRouter')
+    .docs-body(ng-controller='clientsRouter')
 block body
     script(src='/javascripts/controllers/clients.js')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/discovery.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/discovery.jade b/modules/webconfig/nodejs/views/discovery.jade
index 21e1869..5a12a05 100644
--- a/modules/webconfig/nodejs/views/discovery.jade
+++ b/modules/webconfig/nodejs/views/discovery.jade
@@ -21,8 +21,8 @@ div(class=['modal', 'center'] tabindex='-1' role='dialog')
                 button.close(type='button', ng-click='$hide()', aria-hidden='true') &times;
                 h4.modal-title Configure Static IPs
             .modal-body
-                div.block-edit-parameters
-                    div.btn-group
+                .block-edit-parameters
+                    .btn-group
                         button(ng-click='add()' class=['btn', 'btn-default', 'fa', 'fa-plus']
) &nbspAdd
                 table(ng-table='tcpDiscoveryVmIpFinderTable' class=['table', 'table-bordered',
'table-hover'])
                     tr(ng-repeat='address in $data')
@@ -32,7 +32,7 @@ div(class=['modal', 'center'] tabindex='-1' role='dialog')
                                 span(ng-if='cluster.name') {{'127.0.0.1:47500..47509'}}
                                 span.pull-right(type='button' ng-click='beginEditStaticIps(cluster);')
                                     i(class=['fa', 'fa-pencil'])
-                            div.input-group(ng-if='editColumn == "name" && currentRow
== cluster')
+                            .input-group(ng-if='editColumn == "name" && currentRow
== cluster')
                                 input.form-control(type='text' ng-model='cluster.name')
                                 span.input-group-addon
                                     i(class=['fa', 'fa-repeat'] ng-click='revert();')

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/includes/footer.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/includes/footer.jade b/modules/webconfig/nodejs/views/includes/footer.jade
index 8e98681..3cc0f86 100644
--- a/modules/webconfig/nodejs/views/includes/footer.jade
+++ b/modules/webconfig/nodejs/views/includes/footer.jade
@@ -14,7 +14,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div.container.container-footer
+.container.container-footer
     footer
         center
             p

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/includes/header.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/includes/header.jade b/modules/webconfig/nodejs/views/includes/header.jade
index b2ac480..5f6627b 100644
--- a/modules/webconfig/nodejs/views/includes/header.jade
+++ b/modules/webconfig/nodejs/views/includes/header.jade
@@ -15,10 +15,10 @@
     limitations under the License.
 
 header.header(id='header')
-    div.container
+    .container
         h1.navbar-brand
             a(href='/') Apache Ignite Web Configurator
-        div.navbar-collapse.collapse(ng-controller='auth')
+        .navbar-collapse.collapse(ng-controller='auth')
             ul.nav.navbar-nav
                 li
                     a.active(href='/') Home

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/index.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/index.jade b/modules/webconfig/nodejs/views/index.jade
index 06bc560..cd4fb30 100644
--- a/modules/webconfig/nodejs/views/index.jade
+++ b/modules/webconfig/nodejs/views/index.jade
@@ -16,9 +16,9 @@
 
 extends layout
 block container
-    div.row
-        div(class=['col-sm-2', 'border-right', 'section-left'])
-            div.sidebar-nav
+    .row
+        .col-sm-2.border-right.section-left
+            .sidebar-nav
                 ul.menu(ng-controller='activeLink')
                     li
                         a(ng-class='{active: isActive("/clusters")}' href='/clusters') Clusters
@@ -30,14 +30,14 @@ block container
                         a(ng-class='{active: isActive("/sql")}' href='/sql') SQL
                     li
                         a(ng-class='{active: isActive("/clients")}' href='/clients') Clients
-        div(class=['col-sm-10', 'border-left', 'section-right'])
-            div.docs-content
+        .col-sm-10.border-left.section-right
+            .docs-content
                 div
                     p
                         | Apache Ignite<sup>tm</sup> In-Memory Data Fabric is
a high-performance,
                         | integrated and distributed in-memory platform for computing and
transacting on large-scale data
                         | sets in real-time, orders of magnitude faster than possible with
traditional disk-based or flash technologies.
-            div.block-image.block-display-image
+            .block-image.block-display-image
                     img(ng-src='https://www.filepicker.io/api/file/lydEeGB6Rs9hwbpcQxiw'
alt='Apache Ignite stack')
-            div.text-center(ng-controller='auth')
+            .text-center(ng-controller='auth')
                 a.btn.btn-default(ng-click='login()' href='#') Configure Now

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/layout-sidebar.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/layout-sidebar.jade b/modules/webconfig/nodejs/views/layout-sidebar.jade
index 252815e..4c36105 100644
--- a/modules/webconfig/nodejs/views/layout-sidebar.jade
+++ b/modules/webconfig/nodejs/views/layout-sidebar.jade
@@ -19,9 +19,9 @@ extends layout
 append scripts
 
 block container
-    div.row
-        div(class=['col-sm-2', 'border-right', 'section-left', 'greedy'])
-            div.sidebar-nav
+    .row
+        .col-sm-2.border-right.section-left.greedy
+            .sidebar-nav
                 ul.menu(ng-controller='activeLink')
                     li
                         a(ng-class="{active: isActive('/clusters')}" href='/clusters') Clusters
@@ -36,6 +36,6 @@ block container
                     li
                         p
                         a(ng-class="{active: isActive('/overview')}" href='/overview') Summary
-        div(class=['col-sm-10', 'border-left', 'section-right'])
-            div.docs-content
+        .col-sm-10.border-left.section-right
+            .docs-content
                 block content
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/layout.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/layout.jade b/modules/webconfig/nodejs/views/layout.jade
index 422130b..b281408 100644
--- a/modules/webconfig/nodejs/views/layout.jade
+++ b/modules/webconfig/nodejs/views/layout.jade
@@ -37,6 +37,7 @@ html(ng-app='ignite-web-configurator')
             script(src='//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.3/lodash.min.js')
 
             script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.js')
+            script(src='//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular-sanitize.js')
             script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.2.2/angular-strap.js')
             script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.2.2/angular-strap.tpl.min.js')
 
@@ -46,12 +47,12 @@ html(ng-app='ignite-web-configurator')
 
             script(src='/javascripts/bundle.js')
     body.theme-line.body-overlap
-        div.wrapper
+        .wrapper
             include includes/header
 
-            div.container.body-container
-                div.main-content
-                    div.main-head
+            .container.body-container
+                .main-content
+                    .main-head
                         block container
 
             include includes/footer

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/login.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/login.jade b/modules/webconfig/nodejs/views/login.jade
index c0e4e6d..7806e6f 100644
--- a/modules/webconfig/nodejs/views/login.jade
+++ b/modules/webconfig/nodejs/views/login.jade
@@ -14,7 +14,7 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 
-div.modal.center(tabindex='-1' role='dialog')
+.modal.center(tabindex='-1' role='dialog')
     .modal-dialog
         .modal-content
             .modal-header.header
@@ -28,15 +28,15 @@ div.modal.center(tabindex='-1' role='dialog')
                     div(ng-show='errorMessage')
                         p.text-center.error-message {{errorMessage}}
                     .col-xs-9.login.col-xs-offset-1
-                        div.form-group(ng-show='action == "register"')
+                        .form-group(ng-show='action == "register"')
                             label.col-sm-3.control-label Full Name
                             .controls.col-sm-9
                                 input.form-control(type='text', ng-model='user_info.username',
placeholder='John Smith', focus-me='action=="register"', ng-required='action=="register"')
-                        div.form-group
+                        .form-group
                             label.col-sm-3.control-label Email
                             .controls.col-sm-9
                                 input.form-control(type='email', ng-model='user_info.email',
placeholder='you@domain.com', focus-me='action=="login"', required)
-                        div.form-group
+                        .form-group
                             label.col-sm-3.control-label Password
                             .controls.col-sm-9
                                 input.form-control(type='password', ng-model='user_info.password',
placeholder='Password', required)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/persistence.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/persistence.jade b/modules/webconfig/nodejs/views/persistence.jade
index 87caebf..845065f 100644
--- a/modules/webconfig/nodejs/views/persistence.jade
+++ b/modules/webconfig/nodejs/views/persistence.jade
@@ -17,10 +17,10 @@
 extends layout-sidebar
 block head
 block content
-    div.docs-header
+    .docs-header
         h1 Persistence
         p Create and configure Ignite persistence.
         hr
-    div.docs-body(ng-controller='persistentRouter')
+    .docs-body(ng-controller='persistentRouter')
 block body
     script(src='/javascripts/controllers/persistent.js')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6a9b8823/modules/webconfig/nodejs/views/sql.jade
----------------------------------------------------------------------
diff --git a/modules/webconfig/nodejs/views/sql.jade b/modules/webconfig/nodejs/views/sql.jade
index 0fb6eed..8e4ce75 100644
--- a/modules/webconfig/nodejs/views/sql.jade
+++ b/modules/webconfig/nodejs/views/sql.jade
@@ -17,10 +17,10 @@
 extends layout-sidebar
 block head
 block content
-    div.docs-header
+    .docs-header
         h1 SQL
         p Create and configure Ignite SQL settings.
         hr
-    div.docs-body(ng-controller='sqlRouter')
+    .docs-body(ng-controller='sqlRouter')
 block body
     script(src='/javascripts/controllers/sql.js')
\ No newline at end of file



Mime
View raw message