From 230c93fbe11410ccd9d4755127fca61bc2b790a1 Mon Sep 17 00:00:00 2001 From: naumov-socolov Date: Mon, 16 Jan 2012 00:00:04 +0300 Subject: [PATCH 1/2] [php][js][css] fixing all little issues and making forms work. Removed all unnecessary elements for Firsta Release --- web/css/main.css | 6299 +++++++++++++------------- web/js/actions.js | 15 +- web/js/html.js | 25 +- web/js/templates.js | 30 +- web/vesta/api/CRON.class.php | 24 +- web/vesta/api/DB.class.php | 30 +- web/vesta/api/DNS.class.php | 59 +- web/vesta/api/IP.class.php | 8 +- web/vesta/api/MAIN.class.php | 47 +- web/vesta/api/USER.class.php | 47 +- web/vesta/api/WEB_DOMAIN.class.php | 200 +- web/vesta/core/Vesta.class.php | 3 +- web/vesta/core/utils/Utils.class.php | 2 +- 13 files changed, 3466 insertions(+), 3323 deletions(-) diff --git a/web/css/main.css b/web/css/main.css index 3a25d37cb..6f4f59435 100644 --- a/web/css/main.css +++ b/web/css/main.css @@ -1,3140 +1,3159 @@ -/*- - - - - - - - - - - - - - - - - - - -Title : Vesta -Author : Eugen Lobicov, eugen.lobicov@gmail.com - -created : November 27, 2009 -last updated : January 12, 2012 -- - - - - - - - - - - - - - - - - - */ - -html{ - font-size:100.01%; /* prevent IE's extreme font-resizing bug*/ -} - -body{ - position:relative; - font:normal 62.5%/1.5 Helvetica, Arial, sans-serif; - background:#B2AD9C url(../images/thin-grey-line-4.gif) repeat-x; - color:#333; -} -#page{ - width:965px; - width:955px; - margin:3px auto 0; - border:1px solid red; - border:solid #807D70; - border-width:0 1px; -} -.outer{ - padding-bottom:58px; - background:#fff url(../images/footer-bg.gif) repeat-x 0 100%; -} -#header{ - padding:0 1px 0 10px; - height:26px; - border-bottom:2px solid #333527; - background-color:#484439; -} -.logo-box{ - float:left; -} -.logo, -.logo a, -.logo a span{ - display:block; - width:80px; - height:26px; -} -.logo a{ - position:relative; - overflow:hidden; - font-size:1.2em; /*12px */ - text-decoration:none; - color:#fff; - display:block; - text-indent:-9999px; -} -.logo a span{ - position:absolute; - top:1px; - left:0; - z-index:1; - width:72px; - height:24px; - background:url(../images/vesta-logo-2011-12-14.png) no-repeat; -} -.settings{ - float:right; -} -.settings .settings-item, -.extra-services .service-item{ - float:left; - display:block; - padding:0 10px; - font-size:9px; - line-height:26px; - - text-transform:uppercase; - letter-spacing:1px; -} -.settings .item-title, -.extra-services .item-title{ - font-family:Arial, Helvetica, san-serif; - font-size:9px; - color:#C0BD00; - text-decoration:none; - border-bottom:1px dotted #68684B; -} -.settings a.item-title:hover{ - color:#fefda0; - text-decoration:none; -} -.settings a.item-title:active{ - color:#E16734; - text-decoration:none; -} -.settings .logged-as{ - margin:0; -} -.settings .logged-as{ - position:relative; - top:1px; - padding-right:5px; - font-size:16px; - line-height:20px; - font-family:Georgia, Cambria, "Times New Roman", Times, serif; - font-weight:bold; - font-style:italic; - color:#fff; - text-transform:none; - border:none; - letter-spacing:normal; -} -.settings .logout{ - float:left; - display:block; - text-transform:uppercase; - letter-spacing:1px; - line-height:26px; - } - .settings .logout .item-title{ - display:block; - padding:0 10px; - font-size:9px; - line-height:26px; - border:none; - } - .settings .logout .item-title-inner{ - border-bottom:1px dotted #68684B; - } - .logout a.item-title:hover{ - background-color:#a3b82d; - color:#ffffc5; - } - .logout a.item-title:hover .item-title-inner{ - border:none; - } - - .logout a.item-title:active{ - background-color:#ffff66; - color:#272700; - } -#logged-in-as{ - background-color: #FFCC00; - border: 2px solid #EE7250; - color: #FFFFFF; - font-family: arial; - font-size: 12px; - font-weight: bold; - height: 26px; - margin: 2px auto -3px; - padding: 7px 0 0; - text-align: center; - width: 955px; -} -.extra-services{ - float:right; - margin-right:59px; -} -.extra-services .service-item{ - position:relative; - padding:0 13px; - line-height:26px; - letter-spacing:normal; -} -.extra-services .item-devider{ - position:absolute; - top:-3px; - left:0; - width:100%; - height:3px; -} -.extra-services .item-title{ - font-family:Arial, Helvetica, san-serif; - font-size:10px; - font-weight:bold; - color:#C0E1F3; - border-bottom:1px dotted #7D939F; -} -.extra-services .active{ - cursor:default; - background:#333; - font-weight:bold; - } - .extra-services .service-item:hover{ - cursor:pointer; - } - .extra-services .service-item:hover .item-title{ - color:#fffa96; - border-bottom-color:#fffa96; - } - .extra-services .service-item:active{ - background:#333; - } - .extra-services .service-item:active .item-title{ - color:#fff; - border:none; - } - .extra-services .active .item-title{ - color:#fff997; - border:none; - } - .extra-services .active .item-devider{ - background:#ff6766; - } - -/*Remove button padding in FF*/ -input::-moz-focus-inner{ - border: 0; - padding: 0; -} -.cc:after{ - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -.hidden{ - display:none !important; -} - -/* Navigation -- - - - - - - - - - - - - - - - - - - - */ -#primary-nav-box{ - clear:both; - height:115px; - background-color:#ecf3d2; -} -.primary-nav{} - -.primary-nav .section{ - position:relative; - float:left; - display:block; - padding-right:1px; - background:url(../images/nav-devider-2.png) no-repeat 100% 50%; -} -.primary-nav .last-section{ - background:none; - padding:0; -} -.section .section-inner{ - width:130px; - min-height:100px; - height:auto !important; - height:100px; - padding:15px 0 3px 6px; - padding:15px 0 0 6px; - } -.primary-nav .last-section .section-inner{ - width:133px; - width:127px; -} -.section .section-title{ - position:absolute; - left:7px; - bottom:9px; - font-family:Arial, Helvetica, sans-serif; - font-size:15px; - line-height:1.2; - font-weight:bold; - text-transform:uppercase; - color:#393939; - color:#33342e; - } - .section .section-title .to-section{ - float:left; - margin-right:4px; - } - .section .section-title .add-entry{ - position:relative; - top:2px; - float:left; - display:block; - width:14px; - height:14px; - background:url(../images/plus-sprite1.png) no-repeat; - font-size:0; - line-height:0; - visibility:hidden; - } - .section .section-title .add-entry:hover{ - background-position:-14px 0; - cursor:pointer; - } - -.section .section-devider{ - position:absolute; - left:0; - bottom:0; - z-index:10; - /*background:url(../images/section-status-sprite-5.gif) no-repeat -420px 115px; */ - display:block; - width:100%; - height:3px; - background:url(../images/section-status-sprite-6.png) no-repeat -420px 100%; -} - -.dnstpl-nav-item .section-title{ - background-position:100% 85%; -} -.section .def{ - display:block; - font-family:Arial, Helvetica, sans-serif; - font-size:12px; - color:#8c9c91; -} -.section:hover .section-inner{ - background-color:#F1F7D6; - color:#000; - cursor:pointer; - } - .section:hover .section-devider{ - background-position:0 100%; - } - .section:hover .section-title{ - color:#000; - } -.primary-nav .active .section-inner{ - cursor:pointer; - } - .primary-nav .active .section-devider{ - background-position:-283px 100%; - height:6px; - bottom:-3px; - } - .primary-nav .active .def{ - color:#8c9c91; - } - .primary-nav .active .section-title{ - color:#393939; - } - -#console{ - position:relative; - clear:both; - height:70px; - background-color:#a09d98; - background:#535049 url(../images/console-box-bg.png) repeat-x; - border-bottom:1px solid #7a7967; - z-index:1; -} - -.b-console{ - position:absolute; - left:50%; -} - -.b-console-wrap{ - position:relative; - right:50%; - width:655px; - padding:10px 15px 16px 25px; - background:url(../images/console-bg.png) repeat; - - border-radius: 0 0 5px 5px; - -moz-border-radius: 0 0 5px 5px; - -webkit-border-top-right-radius: 0; - -webkit-border-top-left-radius: 0; - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; -} - .b-console-form{} - - .b-console-field{ - float:left; - width:548px; - margin-right:15px; - padding:5px 10px; - border:2px solid #42647f; - font-family:Arial, Helvetica, sans-serif; - font-size:18px; - font-style:italic; - font-weight:bold; - color:#aaa; - } - .b-console-field:focus{ - -moz-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); - -webkit-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); - border-color:rgba(82, 168, 236, 0.75) !important; - color:#333; - } - .b-console-btn{ - float:left; - overflow:visible; - height:30px; - margin:4px 0 0; - padding:0 20px; - -webkit-border-radius:4px; - -moz-border-radius:4px; - border-radius:4px; - border:0 none; - background-color:#fdcd00; - color:#4b3600; - - font-size:13px; - font-family:Arial, Helvetica, sans-serif; - font-weight:bold; - line-height:30px; - text-transform:uppercase; - cursor:pointer; - - /* a little animation effect on hover for -webkit- */ - -webkit-transition-property: background; - -webkit-transition-duration: 150ms; - -webkit-transition-timing-function: ease-in-out; - } - .b-console-btn:focus{ - position:relative; - top:1px; - } - .b-console-btn:hover{ - background-color:#ffe84c; - color:#39351c; - } - .b-console-btn:active{ - background-color:#333; - color:#fff; - } - -.b-console-statuses{ - margin-top:15px; -} - - .b-console-status{ - position:relative; - padding:5px 80px 5px 10px; - border:2px dashed #999; - background-color:#feff99; - color:#666; - font-size:12px; - } - .b-console-status-message{ - float:left; - color:#666; - } - .b-console-status-action{ - float:right; - margin-right:-36px; - text-decoration:underline; - } - .b-console-status-message b{ - font-weight:bold; - color:#333; - } - .b-console-status-arrow{ - position:absolute; - top:10px; - right:12px; - display:block; - width:14px; - height:8px; - background:url(../images/status-arrow.png) no-repeat; - } - - - -#actions-toolbar{ - clear:both; - position:relative; - /*padding:15px 20px 15px 280px;*/ - padding:15px 20px 15px 250px; - background-color:#f3f3d9; - border-bottom:1px solid #c9cbc8; -} -.add-domain, -.add-btn{ - position:relative; - top:2px; - float:left; - /*margin:0 0 0 -260px;*/ - margin:0 0 0 -230px; - border-bottom:1px solid #b5c968; - font-family:Georgia, "Times New Roman", Times, serif; - font-size:16px; - line-height:1; - text-transform:uppercase; - color:#66685d; - text-decoration:none; -} -.add-domain .icon, -.add-btn-icon{ - float:left; - display:block; - width:11px; - height:11px; - margin:4px 5px 0 0; - background:url(../images/add-entry-plus.gif) no-repeat; - font-size:0; - line-height:0; - } - .add-btn:hover{ - color:#000; - border-bottom-color:#b85152; - } - .add-btn:active{ - color:#b85152; - border-bottom-color:#000; - } - -.select-all{ - padding:0 40px 0 0; - font-size:13px; - color:#7f7e6c; - text-decoration:underline; - cursor:pointer; - } - .select-all:hover{ - text-decoration:none; - } -.clear-selected{ - font-size:11px; - line-height:10px; - text-transform:uppercase; - color:#bcb6a6; - cursor:pointer; - letter-spacing:0.2px; - border-bottom:1px solid #bcb6a6; - } - .clear-selected:hover{ - color:#000; - border-bottom-color:#b85152; - } - .clear-selected:active{ - color:#b85152; - border-bottom-color:#000; - } - -.db-manager{ - float:right; - margin:5px 0 0 25px; - font-size:11px; - line-height:1.273; /*14px*/ - text-transform:uppercase; - letter-spacing:0.2px; - border-bottom:1px solid #bcb6a6; - text-decoration:none; - color:#9b9b8f; - } - .db-manager .highlighted{ - font-style:normal; - font-weight:bold; - color:#4097b3; - } - .db-manager:hover{ - color:#4097b3; - border-bottom-color:#b85152; - } - .db-manager:active{ - color:#b85152; - border-bottom-color:#4097b3; - } - .db-manager:active .highlighted{ - color:#b85152; - } - -/* Row filters */ - -.row-filters{} - - .b-row-selector{ - float:left; - width:240px; - } - - .b-row-selector .checkbox-selector{ - position:relative; - top:4px; - margin-right:20px; - } - .b-row-selector .b-cust-sel{ - width:100px; - } - -.checkbox-selector, -.context-actions{ - display:-moz-inline-stack; - display: inline-block; - zoom: 1; - *display: inline; - vertical-align:top; - } - .checkbox-selector .checkbox{ - display:block; - float:left; - width:11px; - height:11px; - margin:2px 5px 0 0; - background:url(../images/checkbox-selector.png) no-repeat; - cursor:pointer; - } - .checkbox-selector .selector-title{ - float:left; - font-size:11px; - line-height:15px; - text-transform:uppercase; - color:#5d5d5d; - cursor:pointer; - white-space:nowrap; - } - .checkbox-selector .selector-title:hover{ - color:#2ea8bd; - } - .checkbox-selector .selector-title:active{ - color:#fc0; - } - -/* Custom select */ -.b-cust-sel{ - position: relative; - font-size: 12px; - - background-color: #fff; - - box-shadow: inset 1px 1px 4px 0px rgba(0, 0, 0, 0.10); - -moz-box-shadow: inset 1px 1px 4px 0px rgba(0, 0, 0, 0.10); - -webkit-box-shadow: inset 1px 1px 4px 0px rgba(0, 0, 0, 0.10); - - border: 1px solid #c5c4bf; - display: block; - white-space: nowrap; - position: relative; - height: 20px; - line-height: 20px; - padding: 0 0 0 8px; - color: #616161; - -} -.b-cust-sel .title{ - margin-right: 26px; - display: block; - overflow: hidden; - white-space: nowrap; - -o-text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - text-overflow: ellipsis; -} -.cust-sel-arrow{ - -moz-background-clip : padding; - -webkit-background-clip: padding-box; - background-clip : padding-box; - background: #ccc; - - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.6, #f5f4ef)); - background-image: -webkit-linear-gradient(center bottom, #fff 0%, #f5f4ef 60%); - background-image: -moz-linear-gradient(center bottom, #fff 0%, #f5f4ef 60%); - background-image: -o-linear-gradient(bottom, #fff 0%, #f5f4ef 60%); - background-image: -ms-linear-gradient(top, #cccccc 0%,#f5f4ef 60%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#f5f4ef',GradientType=0 ); - background-image: linear-gradient(top, #cccccc 0%,#f5f4ef 60%); - - border-left: 1px solid #c5c4bf; - position: absolute; - right: 0; - top: 0; - display: block; - height: 100%; - width: 21px; -} -.cust-sel-arrow i{ - display: block; - width: 100%; - height: 100%; - background:url(../images/custom-arrow.png) no-repeat 50% 50%; -} -.b-cust-sel .cust-sel-options{ - position:absolute; - top:21px; - left:-1px; - width:100%; - padding:5px 0 2px; - border:solid #C5C4BF; - border-width:0 1px 1px; - background:#fff; - z-index:100; - } - .b-cust-sel .cust-sel-option{ - padding:0 0 4px 18px; - background:url(../images/cust-option-bullets.png) no-repeat 5px 7px; - color:#828282; - cursor:pointer; - } - .b-cust-sel .cust-sel-option:hover{ - color:#333; - } - .b-cust-sel .ico_gray{ - background-position:5px 7px; - } - .b-cust-sel .ico_green{ - background-position:5px -35px; - } - .b-cust-sel .ico_red{ - background-position:5px -79px; - } - -.b-cust-sel_inactive{ - background:#f3f3d9; - box-shadow: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - } - .b-cust-sel_inactive .cust-sel-arrow{ - background:#f3f3d9; - } - .b-cust-sel_inactive .cust-sel-options{ - display:none; - } - -.domain-groups-selector{ - float:left; - width:270px; - padding-top:2px; - font-size:11px; - line-height:15px; - } - .domain-groups-selector .selector-wrap{ - display:-moz-inline-stack; - display: inline-block; - zoom: 1; - *display: inline; - vertical-align:top; - padding-right:15px; - border-bottom:1px solid #d5d6c4; - background:url(../images/custom-arrow.png) no-repeat 100% 6px; - } - .domain-groups-selector .selector-title{ - padding-right:5px; - font-weight:normal; - text-transform:uppercase; - color:#8b8b8b; - } - .domain-groups-selector .selected-groups{ - color:#5d5d5d; - } - -#content{ - padding:8px 0 50px; - background:#fff url(../images/content-separator.png) repeat-x; -} -.b-ext-info-wrap{ - position:relative; - min-height:40px; - } - .b-ext-info{ - margin:0 0 6px; - padding:10px 25px 15px; - background:#ddd; - font-size:12px; - color:#000; - text-shadow: 0px 1px 1px #fff; - } - .b-ext-info-btn{ - position:relative; - left:-1px; - width:102px; - height:15px; - margin-left:-50px; - margin:-6px auto 0; - background-color:#fff; - cursor:pointer; - } - .b-ext-info-wrap_collapsed .b-ext-info-btn{ - background:url(../images/more-info-btn.png) no-repeat; - } -.content-inner{ - background-color:#fff; - padding:0 15px 15px; -} -/* -.domains{ - border-bottom:1px solid #333; - background-color:#fff; -} -.domains .item{ - position:relative; - padding:0 20px; - background:url(../images/long-dotted-bg.gif) repeat-x; -} -.domains .first{ - margin:0; - background:none; -} -.item .view{ - padding:15px 0 10px; -} -.item .ip-box{ - float:left; - width:150px; - padding-top:12px; -} -.ip-box .ip{ - font-size:1.1em; /*11px* - line-height:21px; - font-weight:normal; - letter-spacing:.175em; -} -.ip-box .owner{ - display:block; - font-size:1.2em; - color:#999; -} -.details .names .primary{ - font-size:20px; - font-family:Georgia, "Times New Roman", Times, serif; - font-weight:normal; - font-style:normal; - color:#000; /* radikal'no cherniy, da! * -} -.names .divider{ - font-size:12px; - line-height:2; - text-transform:uppercase; - color:#999; -} -.names .domain-name{ - padding:0 10px; - font-size:12px; - line-height:2; - font-style:italic; - color:#999; - white-space:nowrap; -} -.item .details{ - margin-left:150px; -} -.item .details .status{ - float:right; - width:60%; - margin:5px 20px 0 0; - color:#999; -} -.details .status .logging{ - float:left; -} -.logging .err-log, -.logging .log, -.logging .stats{ - float:left; - display:inline; - margin:0 20px 0 0; - padding-right:25px; - background:url(../images/logging-status-sprite.png) no-repeat -100% -100%; -} -.logging .off{ - background-position:100% 0; -} -.logging .on{ - background-position:100% 100%; -} -.logging .stats{ - margin-right:10px; -} -.logging .stat-auth{ - float:left; - display:inline; - margin:0 10px 0 0; - border-bottom:1px solid #9bcad0; - color:#999; - cursor:pointer; -} -.details .status .params{ - float:right; -} -.params .memory, -.params .t, -.params .max-weight, -.params .upload-weight{ - float:left; - display:inline; - margin-right:25px; -} -.memory{} - -.memory dl{ - overflow:hidden; - margin-bottom:2px; -} - -.memory dt{ - float:left; - width:15px; -} -.memory dd{ - float:left; -} -.memory .usage{} - -.memory .usage .value{ - float:left; - width:30px; -} -.memory .usage .divider{ - padding-right:2px; -} -.memory .usage .max{ - font-weight:bold; - border-bottom:1px solid #9bcad0; - cursor:pointer; -} -.memory .graph{ - clear:both; - position:relative; - border:1px solid #ccc; - font-size:0; - line-height:0; -} -.memory .graph .bar{ - position:relative; - display:block; - height:2px; -} -.critical .bar{ - background-color:#f00; -} -.middle .bar{ - background-color:#ff9934; -} -.low .bar{ - background-color:#acd45a; -} -.params .upload-weight{ - margin:0; -} -.t .value, -.max-weight .value, -.upload-weight .value{ - border-bottom:1px solid #9bcad0; - cursor:pointer; -} -.item .close{ - position:absolute; - top:30px; - right:20px; - display:block; - width:16px; - height:16px; - background:url(../images/sprite.png) no-repeat; - cursor:pointer; -} -.item .close:hover{ - background-position:-16px 0; -} -*/ -/* row hover effect -- - - - - - - - - - - - - - - - - - - */ -/* -.domains .item:hover{ - background-color:#ffffcb; -} -.item:hover .names .primary{ - cursor:pointer; - border-bottom:1px dotted #ccc; -} -.item:hover .logging .err-log, -.item:hover .logging .log, -.item:hover .logging .stats, -.item:hover .memory dt, -.item:hover .memory .divider, -.item:hover .params .title{ - color:#98bc65; -} -.item:hover .logging .stat-auth, -.item:hover .memory .max, -.item:hover .t .value, -.item:hover .max-weight .value, -.item:hover .upload-weight .value{ - color:#333; -} -*/ -/* Edit -- - - - - - - - - - - - - - - - - - - */ -/* -.edit{ - position:relative; - clear:both; - margin:0 -20px; - padding:15px 20px 10px; - border-top:2px solid #999; - background-color:#ffffcb; -} -.change-ip-box{ - margin:0 0 20px; -} -.edit .ip-details{ - float:left; - margin-right:20px; -} -.change-ip{ - width:140px; - padding:3px 5px; - border:2px solid #9bcad0; - font-size:16px; -} -.ip-details .created{ - display:block; - margin:5px 0 0; - font-size:12px; -} -.change-domain-name{ - width:360px; - padding:3px 5px; - border:2px solid #9bcad0; - font-size:16px; - font-weight:bold; -} -.edit .domain-name{ - font-size:20px; - font-family:Georgia, "Times New Roman", Times, serif; - font-weight:normal; - font-style:normal; - color:#000; /* radikal'no cherniy, da! * - white-space:nowrap; - line-height:2; -} -.change-logs-box{ - float:left; - width:170px; - margin-right:50px; - padding-left:180px; -} -.ownership{ - display:inline; - float:left; - width:160px; - margin:0 0 0 -180px; - font-size:12px; -} -.ownership .owner{ - display:block; - font-size:16px; - font-weight:bold; - font-style:italic; -} -.change-logs{ - padding-top:5px; -} -.change-logs label{ - display:block; - margin:0 0 9px; -} -.change-logs .last{ - margin:0; -} -.change-logs .title{ - display:block; - float:left; - width:70px; - font-size:14px; -} -.change-logs .title b{ - font-weight:bold; -} -.change-logs .checkbox{ - margin:3px 0 0; - border:2px solid #9bcad0; -} -.change-logs .stat-auth{ - position:relative; - top:-3px; - left:10px; - border-bottom:1px solid #9BCAD0; - cursor:pointer; -} -.change-memory{ - float:left; - width:150px; - padding-top:5px; - font-size:14px; -} -.change-memory dl{ - margin-bottom:13px; -} -.change-memory .value{ - padding:0 5px; - font-style:italic; - font-weight:bold; - color:#6b930f; -} -.change-memory .amount{ - margin-top:7px; -} -.change-memory .amount .max{ - width:50px; - margin-left:10px; - padding:2px 5px; - border:2px solid #9bcad0; - text-align:right; -} -.change-memory .graph{ - clear:both; - position:relative; - border:1px solid #9c9c82; - font-size:0; - line-height:0; -} -.change-memory .graph .bar{ - position:relative; - display:block; - height:2px; -} -.change-params{ - float:right; - font-size:14px; -} -.change-params li{ - margin-top:5px; - overflow:hidden; -} -.change-params .title{ - float:left; - width:165px; -} -.change-params .param-value{ - width:30px; - margin-right:5px; - padding:1px 5px; - border:2px solid #9bcad0; - text-align:right; - -} -.aliases{ - position:relative; - padding-top:20px; - margin-bottom:20px; -} -.aliases .title{ - float:left; - display:block; - margin-right:20px; - padding-top:3px; - font-size:17px; -} -.aliases .hint{ - position:absolute; - top:-15px; - left:78px; - font-style:italic; - color:#999; -} -.aliases-list{ - width:90%; - padding:3px 5px; - border:2px solid #9bcad0; - font-size:16px; -} -.buttons{} - -.buttons .apply{ - width:auto; - overflow:visible; - padding:4px 20px 3px 17px; - background-color:#feff99; - border:1px solid #728b25; - - font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; - font-size:120%; - font-weight:bold; - text-transform:uppercase; - - line-height:130%; - color:#6b9e05; - cursor:pointer; - - float:right; -} -.buttons .devider{ - text-transform:uppercase; - float:right; - display:block; - line-height:24px; - margin:0 10px; -} -.buttons .cancel{ - float:right; - width:auto; - height:20px; - padding:0; - border:0 none; - background:none; - color:#e09462; - text-decoration:underline; - cursor:pointer; -} -.hidden{ - display:none; -} -.edit .iSelected{ /* descendant selector for more specific style context * - border-color:#59B4FF; /* blue border on focused input * - font-weight:bold; -} -.edit .not-valid{ /* descendant selector for more specific style context * - border-color:#f00; /* RED border on error field * -} - -.edit .edit-help{ - padding-bottom:1px; - font-family:Arial, Helvetica, sans-serif; - font-size:14px; - color:#a0a094; - text-decoration:none; - text-transform:uppercase; - border-bottom:1px solid #b5b59b; -} -.edit .delete{ - position:absolute; - top:15px; - right:25px; - padding:3px 25px 3px 2px; - font-family:Arial, Helvetica, sans-serif; - font-size:14px; - color:#a0a094; - text-transform:uppercase; - background:url(../images/delete.gif) no-repeat 100% 50%; - cursor:pointer; -} -.edit .delete .title{ - padding-bottom:1px; - border-bottom:1px solid #b5b59b; -} -*/ - -/* IP list -- - - - - - - - - - - - - - - - - - - - */ -#content{ - padding-bottom:0; -} -.ip-list{} - - .row{ - padding-top:10px; - padding:10px 10px 15px 10px; -/* min-height:125px; - min-height:110px;*/ - background:url(../images/long-dotted-bg.gif) repeat-x; - } - .first-row{ - background-image:none; - } - .row-meta{ - float:left; - width:150px; - } - .row-details{ - margin-left:150px; -/* background:#e0e0e0;*/ - } - .row-actions-box{ -/* margin:0 0 5px;*/ - } - - .row-actions-box .check-this, - .row-actions-box .check-control{ - float:left; - width:10px; - height:10px; - margin-top:4px; -/* background:url(../images/logging-status-sprite.png) no-repeat;*/ - background:url(../images/check-row-sprite.png) no-repeat; - background:url(../images/check-row-sprite_.png) no-repeat; - } - .row-actions-box .check-control:hover{ - cursor:pointer; - background-position:0 -89px; - } - .row-actions-box .row-operations{ - float:right; - } - .ip-status-info{ - position:relative; - display:block; - float:left; - /*margin-right:25px;*/ - padding-right:15px; - font-size:12px; - } - .ip-status-info .ip-status-text{ - visibility:hidden; - } - .row .ip-suspended-status{ - margin:0; - background:url(../images/suspended-ico.png) no-repeat 100% 65%; - } - .row .ip-suspended-status .ip-status-text{ - text-transform:uppercase; - color:#333; - font-size:10px; - visibility:visible; - } - .delete-entry{ - position:relative; - top:2px; - display:block; - float:left; - padding-right:15px; - font-size:11px; - text-transform:uppercase; - } - .delete-entry .delete-entry-text{ - visibility:hidden; - } - .entry-created{ - padding-top:7px; - font-size:11px; - color:#6f6f6f; - } - .props-main{ - float:left; - width:425px; -/* background:#eee;*/ - } - .props-main .prop-box{ - margin-bottom:15px; - } - - .props-additional{ - float:left; - width:200px; - padding:5px 10px 0 0; -/* background:#ccc;*/ - } - .props-ext{ - float:right; - width:120px; - padding-top:5px; -/* background:#d5d5d5;*/ - } - .ip-adr-box, - .user-wrap{ - margin:0 0 5px; - } - .ip-adr{ - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - font-size:22px; - line-height:1; - font-weight:normal; - letter-spacing:0.5px; - } - .ip-adr:active, - .ip-adr:focus{ - color:#9fb749; - } - .ip-adr .dot{ - padding:0 3px; - } - .ip-list .ip-adr{ - border-bottom:1px solid #fff; - } - .username-box .user{ - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - margin-right:10px; - } - .username-box .nickname{ - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - margin-right:5px; - - font-size:20px; - line-height:25px; - font-family:Arial, Helvetica, sans-serif; - color:#000; - - } - .username-box .role{ - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - position:relative; - top:2px; - - font-size:12px; - line-height:25px; - color:#777; - } - - .prop-box{ - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - min-width:40%; -/* width:auto !important; - width:40%;*/ - margin:0 0 3px; - font-size:10px; - } - .prop-title{ - text-transform:uppercase; - color:#9c9c9c; - font-size:9px; - line-height:15px; - } - .prop-value{ - padding-left:3px; - font-size:12px; - color:#777; - } - .prop-value-collapsed-childs{ - padding-right:15px; - background:url(../images/group-values-collapsed.png) no-repeat 100% 5px; - cursor:pointer; - } - .show-records{ - display:inline-block; - padding-right:15px; - border-bottom:1px solid #c9cabc; - background:url(../images/show-records-ico.png) no-repeat 100% 50%; - text-transform:uppercase; - line-height:13px; - cursor:pointer; - } - .hide-records{ - display:inline-block; - padding-right:15px; - border-bottom:1px solid #c9cabc; - background:url(../images/hide-records-ico.png) no-repeat 100% 50%; - text-transform:uppercase; - line-height:13px; - cursor:pointer; - } - - .prop-box_group-values{ - display:block; - } - .prop-box_group-values .prop-title{ - float: left; - margin:2px 0 0; - } - .prop-box_group-values .group-values{ - float:left; - margin-left:3px; - } - .group-values .prop-value{ - display:block; - } - .group-values__bullet .prop-value{ - padding-left:15px; - background:url(../images/group-value-bullet.png) no-repeat 5px 8px; - } - .group-values .group-switcher{ - padding-right:15px; - background:url(../images/group-values-collapsed.png) no-repeat 100% 4px; - } - .group-values .group-values-count{ - font-size:12px; - font-style:italic; - color:#cdcdcd; - border-bottom:1px solid #c9cac4; - cursor:pointer; - } - - .props-additional .owner-box{ - padding-left:45px; - } - .props-additional .owner-box .prop-title{ - float:left; - display:inline; - margin:2px 0 0 -45px; - } - .props-additional .owner-box .prop-value{ - padding:0; - } - - .ip-list .ip-name-box{ - margin:0 0 3px; - } - - -/* Entry adding form -- - - - - - - - - - - - - - - - - - - */ -.b-new-entry{ - margin-top:25px; - border-style:solid; - border-width:2px 1px 1px; - border-color:#999 #ccc #ccc #ccc; - - background-color:#ffffcb; - } - .b-new-entry .entry-header{ - margin:0 0 10px; - padding:8px 15px 9px; - border-bottom:1px solid #dcdbab; - font-size:16px; - font-family:Georgia, "Times New Roman", Times, serif; - text-transform:uppercase; - color:#747668; - } - .b-new-entry .form-row{ - position:relative; - padding:10px 15px; - } - .b-new-entry .field-label, - .b-new-entry .row-header{ - float:left; - width:180px; - font-size:15px; - line-height:2; - color:#3d504a; - } - .b-new-entry .text-field{ - float:left; - width:265px; - margin:0 15px 0 0; - padding:6px 7px; - border:2px solid #b8c2c3; - color:#555; - font-family:Arial, Helvetica, sans-serif; - font-size:14px; - font-weight:bold; - } - .b-new-entry .field-label .remark{ - position:relative; - top:-14px; - display:block; - font-style:italic; - font-size:14px; - color:#a3a590; - } - - .b-new-entry .custom-select{} - - .b-new-entry .textarea{ - width:685px; - height:100px; - padding:6px 7px; - border:2px solid #b8c2c3; - color:#555; - font-family:Arial, Helvetica, sans-serif; - font-size:14px; - font-weight:bold; - } - .b-new-entry .text-field:focus, - .b-new-entry .textarea:focus{ - -moz-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); - -webkit-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); - border-color:rgba(82, 168, 236, 0.75) !important; - color:#333; - } - - .b-new-entry .ssl-crtfct-box .textarea{ - margin:10px 0 0; - } - .b-new-entry .select{ - position: absolute; - top:auto; - left:195px; - width: 195px; - height: 28px; - padding: 0 24px 0 8px; - color: #555; - font:bold 14px/28px arial,sans-serif; - background:#fff url(../images/select-arrow.png) no-repeat 100% 50%; - overflow: hidden; - border:2px solid #b8c2c3; - } - .b-new-entry .select.disabled{ - border: 0; - background-color: #FFFFCB; - opacity: 1; - background: 0; - } - - .b-new-entry .checkbox.disabled{ - background-position: -331px -126px; - margin-right:5px; - } - .b-new-entry .text-field:disabled{ - border:0; - background-color:#FFFFCB; - } - .b-new-entry select.styled{ - top:10px; - } - .b-new-entry option{ - font:14px arial,sans-serif; - } - .b-new-entry .form-options-group{} - - .b-new-entry .group-header{ - margin:12px 25px 12px 15px; - text-transform:uppercase; - color:#9c9c9c; - font-size:11px; - line-height:15px; - height:16px; - background:url(../images/dotted.gif) repeat-x 0 50%; - } - .b-new-entry .group-title-outer{ - display:inline-block; - width:165px; - padding:0 15px 0 0; - line-height:16px; - text-align:right; - background:#ffffcb; - } - .b-new-entry .group-title-inner{ - padding:2px 13px 2px 0; - } - .b-new-entry .group-title{ - border-bottom:1px solid #FFFFCB; - } - .b-new-entry .expanded .group-title-inner{ - background:#ffffcb url(../images/form-group-expanded.png) no-repeat 100% 50%; - } - .b-new-entry .collapsed .group-title-inner{ - background:#ffffcb url(../images/form-group-collapsed.png) no-repeat 100% 50%; - } - .b-new-entry .group-header:hover{ - cursor:pointer; - } - .b-new-entry .group-header:hover .group-title, - .b-new-entry .group-header .group-title:hover{ - color:#000; - border-bottom-color:#9fb35a; - } - .b-new-entry .group-header .group-title:active{ - color:#4B9427; - } - - .b-new-entry .mail-options-group{ - margin-bottom:27px; - } - .b-new-entry .mail-options-group .form-row{ - padding-bottom:0; - } - - .b-new-entry .delete-record{ - display: block; - position:relative; - top:11px; - float: left; - width: 11px; - height: 11px; - background: url(../images/delete-ico-off.png) no-repeat; - } - .b-new-entry .delete-record:hover{ - cursor:pointer; - background-image:url(../images/delete-ico.png); - } - .b-new-entry .delete-record:active{ - cursor:pointer; - background-image:url(../images/delete-ico-active.png); - } - - - .b-new-entry .checkbox{ - display:block; - float:left; - width:18px; - height:18px; - margin:6px 0 0; - background:url(/images/form-checkboxes.png) no-repeat; - } - .b-new-entry .checkbox:hover{ - background-position:0 -100px; - } - .b-new-entry .stats-settings{ - padding-left:40px; - } - .b-new-entry .db-credentials .field-label{ - text-indent:40px; - } - .b-new-entry_user .lastname-box{ - margin-bottom:30px; - } - .b-new-entry_dns .dns-template-box .styled{ - float:left; - margin:0 40px 0 0; - margin:0 20px 0 0; - width:230px; - cursor:pointer; - } - .b-new-entry_dns .ttl-field{ - width:75px; - } - .generate-pwd, - .context-settings{ - position:relative; - top:10px; - float:left; - display:block; - color:#5ea2a1; - border-bottom:1px solid #cdcea6; - text-transform:uppercase; - cursor:pointer; - - font-size:11px; - line-height:1; - letter-spacing:0.5px; - } - .generate-pwd:hover, - .context-settings:hover{ - color:#575757; - border-bottom-color:#b4c775; - } - .generate-pwd:active, - .context-settings:active{ - color:#b4c775; - } - - .b-new-entry .add-ns{ - display:-moz-inline-stack; - display: inline-block; - zoom: 1; - *display: inline; - - margin:0 0 7px 180px; - font-family:Georgia, "Times New Roman", Times, serif; - font-size:14px; - line-height:1; - text-transform:uppercase; - color:#66685d; - text-decoration:none; - } - .add-ns .icon{ - float:left; - display:block; - width:11px; - height:11px; - margin:2px 5px 0 0; - background:url(../images/add-entry-plus.gif) no-repeat; - font-size:0; - line-height:0; - } - .add-ns .btn-title{ - display:inline-block; - border-bottom:1px solid #b5c968; - } - .add-ns .btn-title:hover{ - color:#000; - border-bottom-color:#b85152; - } - .add-ns .btn-title:active{ - color:#b85152; - border-bottom-color:#000; - } - - - .b-new-entry .buttons-row{ - position:relative; - margin-top:13px; - padding:8px 15px 8px 195px; - border-top:1px solid #dcdbad; - background:url(../images/form-bottom-bg.png) repeat-x; - } - - .b-new-entry .cancel-btn{ - - display:-moz-inline-stack; - display: inline-block; - zoom: 1; - *display: inline; - - margin-left:30px; - font-size:11px; - line-height:1; - font-weight:bold; - - text-transform:uppercase; - color:#2ca9bd; - cursor:pointer; - border-bottom:1px solid #2ca9bd; - } - .b-new-entry .cancel-btn:hover{ - color:#999; - border-bottom-color:#999; - } - .b-new-entry .cancel-btn:active{ - color:#fc0; - border-bottom-color:#fc0; - } - - .b-new-entry .delete-btn{ - position:absolute; - top:18px; - right:16px; - - font-size:9px; - line-height:11px; - text-transform:uppercase; - color:#333; - letter-spacing:3px; - cursor:pointer; - border-bottom:1px solid #ff6766; - } - .b-new-entry .delete-btn:hover{ - color:#ff6766; - } - .b-new-entry .delete-btn:active{ - color:#fc0; - border-bottom-color:#fc0; - } - - - .b-new-entry .add-entry-btn{ - overflow:visible; - height:28px; - padding:0 50px; - -webkit-border-radius:9px; - -moz-border-radius:9px; - border-radius:9px; - border:2px solid #c8c09c; - background-color:#feff99; - color:#444428; - font-size:14px; - font-family:Arial, Helvetica, sans-serif; - font-weight:bold; - line-height:25px; - text-transform:uppercase; - cursor:pointer; - } - .b-new-entry .add-entry-btn:focus{ - position:relative; - top:1px; - } - .b-new-entry .add-entry-btn:hover{ - background-color:#feff77; - color:#464322; - border-color:#9e977b; - } - .b-new-entry .add-entry-btn:active{ - background-color:#928d7a; - color:#fefe9e; - border-color:#87826e; - } - .b-new-entry .autocomplete-box{ - position:relative; - float:left; - padding-right:35px; - background:#fff; - } - .b-new-entry .autocomplete-box .text-field{ - width:213px; - margin:0; - } - .b-new-entry .autocomplete-box .arrow{ - position:absolute; - top:0; - right:0; - display:block; - width:32px; - height:32px; - font-size:0; - line-height:0; - background:#fff url(../images/autocomplete-field-arrows-sprite.png) no-repeat; - cursor:pointer; - } - .b-new-entry .autocomplete-box .arrow:hover, - .b-new-entry .autocomplete-box .arrow:active, - .b-new-entry .autocomplete-box .arrow:focus{ - background-position:0 -32px; - } - - .b-new-entry .form-error{ - position:relative; - margin:-5px 5px 5px; - padding:8px 15px; - border:1px solid #dcdbad; - background:url(../images/form-bottom-bg.png) repeat-x; - } - .form-error .error-box{ - padding-left:18px; - background:url(../images/error-bullet.png) no-repeat 0 50%; - } - .form-error .error-box .error-message{ - color:#9a32ff; - font-size:16px; - line-height:22px; - } - .form-error .error-box .help-tip-url{ - position:relative; - top:-1px; - font-size:12px; - line-height:15px; - color:#b4b39f; - text-transform:uppercase; - text-decoration:none; - cursor:pointer; - border-bottom:1px solid #b4b39f; - } - .b-new-entry .help-tip-url:hover{ - color:#000; - border-bottom-color:#9fb35a; - } - - .b-new-entry_cron{} - - .b-new-entry_cron .form-row{ - padding-top:7px; - padding-bottom:5px; - } - .b-new-entry_cron .run-at-box{ - padding-bottom:7px; - } - .b-new-entry_cron .run-at-box .row-header{ - margin-top:35px; - } - .b-new-entry_cron .form-row-line .field-box{ - margin-right:14px; - } - .b-new-entry_cron .form-row-line .cron-week-box{ - margin:0; - } - .b-new-entry_cron .form-row-line .field-label{ - display:block; - float:none; - width:auto; - line-height:1; - padding:0 0 8px; - color:#7d7d7d; - - font-size:13px; - } - .b-new-entry_cron .form-row-line .text-field{ - width:112px; - margin:0; - } - .b-new-entry_cron .form-row-line .cron-week-box .text-field{ - width:109px; - margin:0; - } - .b-new-entry_cron .textarea{ - height:60px; - } - - - .b-new-detailed-restore{} - - .b-new-detailed-restore .add-entry-btn{ - padding:0 30px; - } - -/* Show/edit dns records form -- - - - - - - - - - - - - - - - - - - */ -.b-records-list{ - margin-left:160px; - } - .b-records-list .entry-header{ - padding-top:6px; - padding-bottom:11px; - } - .b-records-list .hide-records{ - font-size:10px; - font-family:Arial, Helvetica, sans-serif; - line-height:13px; - } - .b-records-list .add-btn{ - margin:0; - float:none; - } - .b-records-list .form-row{ - padding-top:5px; - padding-bottom:5px; - } - .b-records-list .add-box{ - padding-bottom:15px; - } - .b-records-list .buttons-row{ - margin-top:20px; - } - .form-row-line{ - position:relative; - } - .form-row-line .field-box{ - float:left; - } - .form-row-line .field-devider{ - float:left; - display:block; - min-height:30px; - margin:0 15px; - font-size:15px; - line-height:2; - } - .b-records-list .form-row-line .field-label{ - float:none; - display:block; - width:auto; - line-height:20px; - } - .b-records-list .dns-record-box .text-field{ - width:147px; - float:left; - margin:0; - } - .b-records-list .dns-type-box{ - margin-right:15px; - } - .b-records-list .dns-type-box .select{ - width:51px; - left:221px; - } - .b-records-list .dns-type-box select.styled{ - width:87px; - cursor:pointer; - } - .b-records-list .dns-value-box .text-field{ - float:none; - width:390px; - margin:0; - } - .b-records-list .delete-record{ - position:absolute; - top: auto; - bottom:15px; - right:11px; - display:block; - float:left; - width:11px; - height:11px; - background:url(../images/delete-ico-off.png) no-repeat; - } - - -/* Web-domains list -- - - - - - - - - - - - - - - - - - - */ -.domains-list{} - - .domains-list .entry-created{ - padding-top:9px; - } - .names{ - margin:0 0 6px; - color:#acacac; - } - .names .alias-title{ - position:relative; - top:-1px; - padding-right:3px; - padding:0 3px 0 25px; - font-size:10px; - line-height:1.8; - text-transform:uppercase; - } - .names .domain-name{ - position:relative; - top:-1px; - padding:0 3px 0 0; - font-size:12px; - line-height:1.5; - color:#acacac; - white-space:nowrap; - } - .row-details .names .primary{ - top:0; -/* padding:0 25px 0 0;*/ - font-size:20px; - font-family:Arial, Helvetica, sans-serif; - font-weight:normal; - font-style:normal; - color:#000; /* radikal'no cherniy, da! */ - } - .names .primary:active{ - color:#9fb749; - } - .domains-list .names .primary, - .dns-list .names .primary{ - border-bottom:1px solid #fff; - } - - .domains-list .props-main{ - width:345px; - } - .domains-list .ip-adr{ - font-size:16px; - color:#888; - } - .domains-list .ip-adr-box .prop-box{ - margin-left:20px; - } - - .domains-list .props-additional{ - width:230px; - padding-top:0; -/* background:#bbb;*/ - } - .domains-list .props-ext{ - width:170px; - padding-top:0; -/* background:#ddd;*/ - } - -.b-usage-box{ - display:block; -} - - .b-usage-box .prop-title{ - float:left; - margin:2px 15px 0 0; - } - .b-usage-box .usage-box{ - float:left; - width:136px; - } - .b-usage-box .usage-box{ - - } - .b-usage-box .value-box{ - float:left; - width:75px; - } - .b-usage-box .max-size{ - float:right; - } - .b-usage-box .value{ - display:block; - font-size:11px; - line-height:1; - color:#999; - } - .b-usage-box .max-size{ - position:relative; - top:2px; - font-size:14px; - line-height:1; - color:#ababab; - } - .b-usage-box .max-size .units{ - font-size:12px; - color:#797979; - } - .graph{ - position:relative; - border:1px solid #b7b7b9; - font-size:0; - line-height:0; - } - .graph .bar{ - position:relative; - display:block; - height:2px; - } - .critical .bar{ - background-color:#f00; - } - .middle .bar{ - background-color:#ff9934; - } - .low .bar{ - background-color:#9fec00; - } - -/* New graphs */ -.b-stats-box{ - position:relative; - margin-left:-25px; - padding-left:25px; - background:url(../images/stats-brace.png) no-repeat 0 50%; - } - .stats-box-title{ - position:absolute; - top:50%; - left:-68px; - - width:28px; - margin-top:-6px; - padding-right:35px; - text-transform:uppercase; - font-size:9px; - line-height:12px; - background:url(../images/stats-curve.png) no-repeat 85% 50%; - color:#acacac; - } - -.b-usage-box2{ - display:block; - margin:0 0 22px; - position:relative; - } - .b-usage-box2 .prop-title{ - float:left; - margin:2px 15px 0 0; - } - .b-usage-box2 .usage-box{ - float:left; - } - .b-usage-box2 .value-box{ - padding-top:11px; - float:left; - width:85px; - } - .b-usage-box2 .max-size{ - position:relative; - top:11px; - float:right; - padding:7px 0 0 3px; - border-left:1px solid #B7B7B9; - font-size:10px; - line-height:1; - color:#acacac; - } - .b-usage-box2 .max-size .units{ - font-size:10px; - color:#acacac; - } - .b-usage-box2 .graph{ - position:relative; - border:solid #b7b7b9; - border-width:1px 0 1px 1px; - font-size:0; - line-height:0; - } - .b-usage-box2 .value{ - position:absolute; - top:-15px; - left:0; - z-index:10; - display:block; - white-space:nowrap; - padding:0 0 7px 3px; - font-size:11px; - line-height:1; - background:url(../images/bar-value-mark.png) no-repeat 0 100%; - color:#797979; - } - .b-usage-box2 .value-size{ - padding-left:3px; - } - .b-usage-box2 .graph .bar{ - position:relative; - display:block; - height:2px; - background-color:#9fec00; - } - - /* Overdraft */ - .b-usage-box2 .overdraft{} - - .b-usage-box2 .overdraft .value{ - margin-left:-1px; - color:#F00; - } - - .b-usage-box2 .bar_overdraft{ - position:absolute; - top:-1px; - z-index:5; - display:block; - height:2px; - border:solid #b7b7b9; - border-width:1px 0; - background:#ff9934 url(../images/overrun-border.png) no-repeat 100% 0; - } - - -.domains-list .props-additional .prop-box, -.domains-list .props-ext .prop-box{ - display:block; - margin:0; - } - .stats-box{} - - .stats-box .stats-auth{ - position:relative; - top:3px; - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - margin:0 0 0 5px; - padding:0 0 0 10px; - font-size:12px; - line-height:1.5; - color:#777; - cursor:pointer; - } - .stats-box .stats-auth-on{ - background:url(../images/auth-plus.png) no-repeat 0 60%; - } - .stats-box .stats-auth-text{ - display:block; - line-height:11px; - border-bottom:1px solid #cacbbd; - } - - .nginx-box{} - - .nginx-box .nginx-ext-list{ - position:relative; - top:3px; - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - margin:0 0 0 5px; - border-bottom:1px solid #cacbbd; - font-size:12px; - line-height:1; - color:#777; - cursor:pointer; - } - .template-box{} - - .template-box .prop-value{ - padding:0; - cursor:pointer; - border-bottom:1px solid #cbcbbf; - } - -/* DNS list -- - - - - - - - - - - - - - - - - - - */ -.dns-list{} - - .dns-list .row-details{ - padding-bottom:8px; - } - .dns-list .entry-created{ - padding-top:9px; - } - .dns-list .props-main{ - width:295px; - } - .dns-list .props-additional{ - width:200px; - } - .dns-list .props-ext{ - width:250px; - } -.dns-list .props-additional .prop-box, -.dns-list .props-ext .prop-box{ - display:block; - margin:0; - } -.dns-list .ip-adr-box{ - margin:0; - } - .dns-list .ip-adr{ - font-size:12px; - line-height:1.5; - color:#777; - } - -/* Cron list -- - - - - - - - - - - - - - - - - - - */ -.cron-list{} - - .cron-list .entry-created{ - padding-top:18px; - } - .cron-list .cron-meta{ - margin:0 0 9px; - } - .cron-meta .prop-box{ - min-width:0; - } - .cron-meta .prop-title{ - display:block; - text-transform:none; - font-size:10px; - } - .cron-meta .prop-value{ - padding:0; - font-size:16px; - color:#7c7c7c; - } - .cron-meta .cron-min, - .cron-meta .cron-hour, - .cron-meta .cron-day, - .cron-meta .cron-week, - .cron-meta .cron-month{ - min-width:45px; - padding-right:20px; - } - - .cron-command-box{ - margin:0 0 5px; - } - .cron-command-line{ - position:relative; - padding:0 3px 0 0; - font-family:Arial, Helvetica, sans-serif; - font-size:20px; - line-height:1.5; - font-weight:normal; - font-style:normal; - color:#000; - - } - .cron-command-line:active{ - color:#9fb749; - } - .cron-list .cron-command-line{ - border-bottom:1px solid #fff; - } - - .cron-reported-to{ - margin:0 0 3px; - } - .cron-reported-to .prop-title{ - padding-right:3px; - } - .cron-reported-to .prop-value{ - padding:0 3px 0 0; - } - -/* Users list -- - - - - - - - - - - - - - - - - - - */ -.users-list{} - - .users-list .entry-created{ - padding-top:10px; - } - .users-list .user-wrap{ - margin:0 0 19px; - } - .users-list .props-main{ - width:345px; - width:330px; - } - .users-list .username-box{ - padding-top:6px; - margin:0 0 15px; - } - .users-list .username-box .user{ - position:relative; - top:-6px; - } - .users-list .username-box .nickname{ - border-bottom:1px solid #fff; - } - - .user-backups-box{ - margin-top:5px; - } - .user-backups-box .prop-title{ - border-bottom:1px solid #CBCBBF; - font-size:12px; - text-transform:capitalize; - cursor:pointer; - color:#777; - } - - .users-list .props-additional{ - width:200px; - width:225px; - } - .users-list .props-additional .prop-box, - .users-list .props-ext .prop-box{ - display:block; - } - .users-list .props-additional .ns1-box, - .users-list .props-additional .ns2-box{ - padding-left:27px; - } - .users-list .webtpl-box .group-switcher, - .users-list .ns-list-box .group-switcher{ - padding-left:2px; - } - .users-list .props-additional .ns1-box .prop-title, - .users-list .props-additional .ns2-box .prop-title{ - display: inline; - float: left; - margin: 2px 0 0 -27px; - } - .users-list .props-additional .ns1-box .prop-value, - .users-list .props-additional .ns2-box .prop-value{ - padding:0; - } - - .users-list .props-ext{ - width:190px; - } - - .users-list .db-box, - .users-list .dnsdomains-box{ - margin-top:35px; - } - - .username-box .prop-box{ - position:relative; - margin:0; - } - .user-details{ - font-size:12px; - } - .user-details .user-email{ - color:#777; - padding-right:5px; - } - .user-details .user-reports{ - color:#9c9c9c; - } - - .user-details .login-as{ - border-bottom: 1px solid #CBCBBF; - cursor: pointer; - padding-left: 0; - } - - .user-details-box .prop-box{ - margin:0 0 5px; - } - .user-details-box .user-name .prop-value, - .user-details-box .user-email{ - font-style:italic; - color:#706f6b; - } - -/* DB list -- - - - - - - - - - - - - - - - - - - */ -.db-list{} - - .db-list .row-details{ - padding-bottom:8px; - } - .db-list .db-devider{ - margin-top:25px; - position:relative; - display:block; - border-bottom:1px solid #e0e0e0; - } - .db-list .db-devider-title{ - display:block; - position:absolute; - top:-8px; - left:0; - width:100%; - } - .db-list .db-devider-outer{ - display:block; - position:absolute; - left:50%; - } - .db-list .db-devider-inner{ - background:#fff; - position:relative; - left:-50%; - padding:0 10px; - - font-size:11px; - font-weight:bold; - text-transform:uppercase; - color:#4097B3; - } - - .db-list .props-main{ - width:210px; - padding-right:10px; - } - .db-list .props-additional{ - width:340px; - padding-top:6px; - } - .db-list .props-ext{ - width:185px; - padding-top:6px; - } - .db-name{ - position:relative; - margin:0 0 6px; - padding:0 3px 0 0; - } - .db-name-box .db-name{ - font-size:20px; - font-family:Arial, Helvetica, sans-serif; - font-weight:normal; - font-style:normal; - line-height:27px; - } - .db-name:active{ - color:#9fb749; - } - .db-list .db-name{ - border-bottom:1px solid #fff; - } - - .db-list .ownership .prop-box{ - margin:5px 0 0; - } - .db-list .ownership .prop-value{ - padding:0; - font-size:11px; - font-style:italic; - } - .db-list .entry-created{ - padding:0; - } - .db-user-box{ - margin:0 0 10px; - } - .db-user-box .db-user{ - position:relative; - display:block; - float:left; - margin-right:25px; - padding-right:20px; - - font-size:12px; - line-height:1.25; /*15px*/ - font-style:italic; - color:#999; - } - .db-user-box .db-user:hover{ - color:#f00; - } - .db-user-box .change-pwd{ - position:relative; - top:1px; - display:inline-block; - border-bottom:1px solid #c9cabc; - text-transform:uppercase; - line-height:13px; - cursor:pointer; - visibility:hidden; - } - .add-db-user{ - border-bottom:1px solid #c9cabc; - text-transform:uppercase; - line-height:13px; - padding-left:10px; - background:url(../images/auth-plus.png) no-repeat 0 50%; - color:#555; - cursor:pointer; - } - .backup-db{ - float:left; - position:relative; - top:2px; - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - border-bottom:1px solid #cacbbd; - font-size:12px; - line-height:13px; - color:#777; - cursor:pointer; - } - .db-list .b-usage-box{ - float:right; - position:relative; - top:1px; - } - .db-list .b-usage-box .usage-box{ - width:auto; - } - .db-list .b-usage-box .value, - .db-list .b-usage-box .max-size{ - color:#797979; - } - .db-list .b-usage-box .value-box{ - width:60px; - margin-right:5px; - } - .db-list .b-usage-box .max-size{ - float:left; - } - .db-list .b-usage-box .max-size .units{ - color:#ABABAB; - } - -/* Backups list -- - - - - - - - - - - - - - - - - - - */ -.backups-list{} - - .backups-list .row{ - padding:25px 10px 15px; - } - .backups-list .ownership{ - padding:5px 0 0; - } - .backups-list .props-main{ - padding-top:5px; - } - .backups-list .props-main .prop-box{ - margin:0; - } - .backups-list .props-additional{ - width:165px; - padding:4px 0 0; - } - .backups-list .props-ext{ - width:165px; - padding:0; - } - .backups-list .entry-created{ - width:185px; - padding:0; - } - .backups-list .backup-date, - .backups-list .backup-weekday{ - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - } - .backups-list .backup-date .backup-day{ - display:block; - width:105px; - font-size:14px; - font-family:Arial,Helvetica,sans-serif; - font-weight:bold; - line-height:20px; - color:#47443f; - } - .backups-list .backup-weekday{ - padding-top:4px; - color:#408abb; - } - .backups-list .backup-time, - .backups-list .generation-time .prop-value{ - font-size:10px; - color:#999; - } - .backups-list .generation-time .prop-value{ - color:#9C9C9C; - } - - .backups-list .generation-time{ - padding-top:4px; - } - .backups-list .backup-size{ - display:-moz-inline-stack; - display:inline-block; - padding-right:12px; - - font-size:10px; - line-height:24px; - - background:url(../images/green-bracket-l.png) no-repeat 0 50%; - color:#595959; - } - .backups-list .backup-size-inner{ - display:-moz-inline-stack; - display:inline-block; - - padding:0 10px; - background:url(../images/green-bracket-r.png) no-repeat 100% 50%; - } - .backups-list .backup-url, - .backups-list .backup-actions{ - font-size:13px; - color:#999; - } - .backups-list .backup-actions{ - background:#ccc; - } - .backups-list .backup-actions-url{ - float:right; - display:-moz-inline-stack; - display:inline-block; - vertical-align:top; - - -webkit-border-radius:9px; - -moz-border-radius:9px; - border-radius:9px; - - border:2px solid #fff; - color:#999; - line-height:26px; - } - .backups-list .row a.backup-actions-url:hover{ - padding:0 12px; - - border-color:#c8c09c; - background-color:#feff99; - color:#444428; - font-size:14px; - font-family:Arial, Helvetica, sans-serif; - font-weight:bold; - cursor:pointer; - text-decoration:none; - text-transform:uppercase; - } - - .backups-list .detailed-restore-ext{ - display:none; - } - - .backups-list a.detailed-restore-url:hover .detailed-restore-title{ - text-transform:none; - } - .backups-list a.detailed-restore-url:hover .detailed-restore-ext{ - display:inline-block; - } - - .backups-list .restore-url{ - margin-left:10px; - color:#93b749; - } - - .backup-tree{ - padding-left:130px; - } - - .backup-tree .backup-tree-item{ - padding:0 0 7px 25px; - background:url(../images/backup-checkbox.png) no-repeat 0 .5em; - } - .backup-tree .unchecked{ - background:url(../images/backup-checkbox-unchecked.png) no-repeat 0 .5em; - } - .backup-tree .checked{ - background:url(../images/backup-checkbox-checked.png) no-repeat 0 .5em; - } - - .backup-tree .backup-sections, - .backup-tree .backup-sections .sub-tree{ - padding:10px 0 0 25px; - } - - .backup-tree .node-item{ - font-size:13px; - font-weight:bold; - padding-left:15px; - background:url(../images/backup-collapsed-ico.png) no-repeat 0 .3em; - border-bottom:1px dashed #cfd19f; - color:#5a6962; - cursor:pointer; - } - .backup-tree .node-item:hover{ - color:#ffcf0b; - } - - .backup-tree .expanded{ - background:url(../images/backup-expand-ico.png) no-repeat 0 .45em; - } - .backup-tree .backup-sections .sub-tree .node-item{ - font-style:italic; - color:#abad85; - padding:0; - background:none; - border:none; - } - .backup-tree .backup-sections .sub-tree .node-item:hover{ - color:#abad85; - } - - .backup-tree .backup-sections .sub-tree .checked .node-item{ - color:#5a6962; - font-style:normal; - } - -/* Highlighted backup row */ -.backup-details-row_highlighted, -.backups-list .backup-details-row_highlighted:hover{ - background:#666; - } - .backup-details-row_highlighted .notes-wrap{ - font-size:14px; - line-height:25px; - font-weight:bold; - text-transform:uppercase; - color:#bad23e; - text-align:center; - padding:0 0 10px; - } - .backup-details-row_highlighted .restore-ico{ - padding:4px 0 4px 30px; - line-height:25px; - background:url(../images/backup-restore-ico.png) no-repeat; - } - .backup-details-row_highlighted .backup-time{ - color:#fff; - } - .backup-details-row_highlighted .ownership .prop-value{ - color:#c8c8c8; - } - .backups-list .backup-details-row_highlighted .backup-day{ - color:#fff; - } - .backups-list .backup-details-row_highlighted .backup-size{ - color:#ccc; - } - .backups-list .backup-details-row_highlighted .backup-actions{ - display:none; - } - -/* row hover effect -- - - - - - - - - - - - - - - - - - - */ -.row:hover{ - background-color:#ffffcb; -} -.ip-list .row:hover .ip-adr, -.domains-list .row:hover .names .primary, -.dns-list .row:hover .names .primary, -.cron-list .row:hover .cron-command-line, -.users-list .row:hover .username-box .nickname, -.db-list .row:hover .db-name{ - border-bottom-style:dashed; - border-bottom-color:#e5e5e5; - border-bottom-color:#bbb; -} -.ip-list .row:hover .ip-adr:hover, -.domains-list .row:hover .names .primary:hover, -.dns-list .row:hover .names .primary:hover, -.cron-list .row:hover .cron-command-line:hover, -.users-list .row:hover .username-box .nickname:hover, -.db-list .row:hover .db-name:hover{ - cursor:pointer; - border-bottom-style:solid; - border-bottom-color:#b4c775; -} -.ip-list .ip-details-suspended:hover .ip-adr, -.ip-list .ip-details-suspended:hover .ip-adr:hover{ - border:none; - cursor:default; -} -.backups-list .row:hover .backup-actions-url{ - border-color:#ffffcb; -} - -.row:hover .ip-status-info{ - background:url(../images/enabled-ico_.png) no-repeat 100% 50%; -} -.row:hover .delete-entry, -.row:hover .db-user-box .db-user{ - background:url(../images/delete-ico-off.png) no-repeat 100% 4px; -} -.row:hover .ip-suspended-status{ - background:url(../images/suspended-ico.png) no-repeat 100% 65%; -} -.ip-status-info:hover .ip-status-text, -.delete-entry:hover .delete-entry-text, -.row:hover .db-user-box .change-pwd{ - visibility:visible; -} -.row .ip-status-info:hover{ - background-image:url(../images/enabled-ico-hover.png); -} -.row .ip-suspended-status:hover{ - background-image:url(../images/suspended-ico.png); -} -.row .delete-entry:hover, -.row .db-user-box .db-user:hover{ - background-image:url(../images/delete-ico.png); - cursor:pointer; -} -.row .delete-entry:active{ - background-image:url(../images/delete-ico-active.png); - cursor:pointer; -} -.delete-entry:hover .delete-entry-text{ - color:#333; -} -.delete-entry .delete-entry-text:hover{ - cursor:pointer; -} -.delete-entry .delete-entry-text:active{ - color:#f00; -} -.row:hover .show-records, -.row:hover .hide-records, -.row:hover .template-box .prop-value, -.domains-list .row:hover .stats-box .stats-auth-text, -.domains-list .row:hover .nginx-box .nginx-ext-list, -.row:hover .db-user-box .change-pwd, -.row:hover .add-db-user, -.row:hover .backup-db, -.row:hover .user-backups-box .prop-title{ - color:#6aa0ac; - border-bottom-color:#cacbbd; -} - -.row:hover .user-details .login-as{ - border-bottom: 1px solid #FF9591; - color: #FFCC00; -} - - -.row:hover .template-box .prop-value:hover, -.row:hover .show-records:hover, -.hide-records:hover, -.domains-list .row:hover .stats-box .stats-auth-text:hover, -.domains-list .row:hover .nginx-box .nginx-ext-list:hover, -.row .db-user-box .change-pwd:hover, -.row .add-db-user:hover, -.row .backup-db:hover, -.row .user-backups-box:hover .prop-title{ - color:#575757; - border-bottom-color:#b4c775; -} -.row .template-box .prop-value:active, -.row .show-records:active, -.hide-records:active, -.domains-list .row:hover .stats-box .stats-auth-text:active, -.domains-list .row:hover .nginx-box .nginx-ext-list:active, -.users-list .username-box .nickname:active, -.users-list .user-backups-box .prop-title:active, -.row .db-user-box .change-pwd:active, -.row .add-db-user:active, -.row .backup-db:active, -.row .user-backups-box .prop-title:active{ - color:#b4c775; -} - -/* Checked row -- - - - - - - - - - - - - - - - - - - */ -.checked-row{ - background-color:#e4f7bf; -} - .checked-row .row-actions-box .check-control{ - background-position:0 -30px; - } - - .domains-list .checked-row .names .primary, - .dns-list .checked-row .names .primary, - .cron-list .checked-row .cron-command-line, - .users-list .checked-row .username-box .nickname, - .db-list .checked-row .db-name{ - border-bottom:1px solid #e4f7bf; - } - -/* Suspended row -- - - - - - - - - - - - - - - - - - - */ -.ip-details-suspended, -.suspended-row{} - -.ip-details-suspended:hover, -.suspended-row:hover{ - background-color:#fff; -} - .ip-details-suspended .entry-created, - .suspended-row .entry-created, - .suspended-row .username-box .role{ - color:#ccc; - } - .ip-details-suspended .ip-adr, - .suspended-row .ip-adr, - .suspended-row .cron-command-line, - .suspended-row .username-box, - .suspended-row .username-box .nickname, - .suspended-row .user-name .prop-value, - .suspended-row .user-backups-box .prop-title, - .suspended-row .user-details .user-email, - .suspended-row .user-details .user-reports, - .suspended-row .template-box .prop-value, - .suspended-row .stats-box-title, - .suspended-row .stats-box .stats-auth, - .suspended-row .nginx-box .nginx-ext-list{ - color:#ccc; - border:none; - } - .ip-details-suspended:hover .ip-adr, - .suspended-row:hover .ip-adr, - .suspended-row:hover .names .primary, - .domains-list .suspended-row:hover .names .primary, - .dns-list .suspended-row:hover .names .primary, - .cron-list .suspended-row:hover .cron-command-line, - .users-list .suspended-row:hover .username-box .nickname, - .users-list .suspended-row:hover .user-backups-box .prop-title, - .suspended-row .stats-box .stats-auth-text{ - border:none; - } - .ip-details-suspended:hover .ip-adr:hover, - .suspended-row:hover .ip-adr:hover, - .cron-list .suspended-row:hover .cron-command-line:hover, - .users-list .suspended-row:hover .username-box .nickname:hover, - .users-list .suspended-row:hover .user-backups-box .prop-title:hover, - .cron-list .suspended-row:hover .cron-command-line{ - border:none; - cursor:default; - } - .users-list .suspended-row .username-box .nickname:active, - .users-list .suspended-row .user-backups-box .prop-title:active{ - color:#ccc; - } - -.ip-details-suspended .prop-title, -.ip-details-suspended .prop-value, -.suspended-row .prop-title, -.suspended-row .prop-value, -.suspended-row .b-usage-box .value, -.suspended-row .b-usage-box .max-size, -.suspended-row .b-usage-box .max-size .units, -.suspended-row .b-usage-box2 .value, -.suspended-row .b-usage-box2 .max-size, -.suspended-row .names .primary{ - color:#ccc; -} -.suspended-row .b-usage-box .bar, -.suspended-row .b-usage-box2 .graph .bar { - background-color:#ccc; -} -.suspended-row:hover .show-records, -.suspended-row:hover .hide-records, -.suspended-row:hover .template-box .prop-value, -.domains-list .suspended-row:hover .stats-box .stats-auth-text, -.domains-list .suspended-row:hover .nginx-box .nginx-ext-list, -.suspended-row:hover .user-backups-box .prop-title, -.suspended-row:hover .template-box .prop-value:hover, -.suspended-row:hover .show-records:hover, -.suspended-row .hide-records:hover, -.domains-list .suspended-row:hover .stats-box .stats-auth-text:hover, -.domains-list .suspended-row:hover .nginx-box .nginx-ext-list:hover{ - color:#ccc; - border:none; - cursor:default; -} -.suspended-row:hover .template-box .prop-value:active, -.suspended-row:hover .show-records:active, -.suspended-row .hide-records:active, -.domains-list .suspended-row:hover .stats-box .stats-auth-text:active, -.domains-list .suspended-row:hover .nginx-box .nginx-ext-list:active, -.users-list .suspended-row .username-box .nickname:active, -.users-list .suspended-row .user-backups-box .prop-title:active{ - color:#ccc; -} -.suspended-row .stats-box-title{ - background-image:url(../images/stats-curve-grey.png); -} - -.success-box { - color: #BBBF45; - font-size: 22px; - padding-left: 136px; - padding-bottom: 30px; -} - -.inactive-row { font-style: italic; opacity: 0.38; background: url('../images/bg_line.png');filter: alpha(opacity = 38); } -.form-suspended input[type="text"], .form-suspended input[type="checkbox"], .form-suspended .checkbox, .form-suspended select, .form-suspended textarea, .form-suspended .select { opacity: 0.38;filter: alpha(opacity = 38); } -.form-suspended .do_action_toggle_suspend {opacity: 1; filter: alpha(opacity = 100);} - - -.stats-block{ - background:#474338; - padding:10px; - width:600px; - margin:0 auto 10px; -} -.stats-block-header{ - color:#fc0; - font-size:12px; - font-weight:bold; - text-align:center; -} -.stats-block .stats-graph{ - display:block; - margin:0 auto; -} - -/* START: DEV!! */ -.stats-subbar {cursor: pointer;} -.stats-subbar .sub-active{font-weight: bold;} -/* END: DEV */ +/*- - - - - - - - - - - - - - - - - - - +Title : Vesta +Author : Eugen Lobicov, eugen.lobicov@gmail.com + +created : November 27, 2009 +last updated : January 15, 2012 +- - - - - - - - - - - - - - - - - - */ + +html{ + font-size:100.01%; /* prevent IE's extreme font-resizing bug*/ +} + +body{ + position:relative; + font:normal 62.5%/1.5 Helvetica, Arial, sans-serif; + background:#B2AD9C url(../images/thin-grey-line-4.gif) repeat-x; + color:#333; +} +#page{ + width:965px; + width:955px; + margin:3px auto 0; + border:1px solid red; + border:solid #807D70; + border-width:0 1px; +} +.outer{ + padding-bottom:58px; + background:#fff url(../images/footer-bg.gif) repeat-x 0 100%; +} +#header{ + padding:0 1px 0 10px; + height:26px; + border-bottom:2px solid #333527; + background-color:#484439; +} +.logo-box{ + float:left; +} +.logo, +.logo a, +.logo a span{ + display:block; + width:80px; + height:26px; +} +.logo a{ + position:relative; + overflow:hidden; + font-size:1.2em; /*12px */ + text-decoration:none; + color:#fff; + display:block; + text-indent:-9999px; +} +.logo a span{ + position:absolute; + top:1px; + left:0; + z-index:1; + width:72px; + height:24px; + background:url(../images/vesta-logo-2011-12-14.png) no-repeat; +} +.settings{ + float:right; +} +.settings .settings-item, +.extra-services .service-item{ + float:left; + display:block; + padding:0 10px; + font-size:9px; + line-height:26px; + + text-transform:uppercase; + letter-spacing:1px; +} +.settings .item-title, +.extra-services .item-title{ + font-family:Arial, Helvetica, san-serif; + font-size:9px; + color:#C0BD00; + text-decoration:none; + border-bottom:1px dotted #68684B; +} +.settings a.item-title:hover{ + color:#fefda0; + text-decoration:none; +} +.settings a.item-title:active{ + color:#E16734; + text-decoration:none; +} +.settings .logged-as{ + margin:0; +} +.settings .logged-as{ + position:relative; + top:1px; + padding-right:5px; + font-size:16px; + line-height:20px; + font-family:Georgia, Cambria, "Times New Roman", Times, serif; + font-weight:bold; + font-style:italic; + color:#fff; + text-transform:none; + border:none; + letter-spacing:normal; +} +.settings .logout{ + float:left; + display:block; + text-transform:uppercase; + letter-spacing:1px; + line-height:26px; + } + .settings .logout .item-title{ + display:block; + padding:0 10px; + font-size:9px; + line-height:26px; + border:none; + } + .settings .logout .item-title-inner{ + border-bottom:1px dotted #68684B; + } + .logout a.item-title:hover{ + background-color:#a3b82d; + color:#ffffc5; + } + .logout a.item-title:hover .item-title-inner{ + border:none; + } + + .logout a.item-title:active{ + background-color:#ffff66; + color:#272700; + } +#logged-in-as{ + background-color: #FFCC00; + border: 2px solid #EE7250; + color: #FFFFFF; + font-family: arial; + font-size: 12px; + font-weight: bold; + height: 26px; + margin: 2px auto -3px; + padding: 7px 0 0; + text-align: center; + width: 955px; +} +.extra-services{ + float:right; + margin-right:59px; +} +.extra-services .service-item{ + position:relative; + padding:0 13px; + line-height:26px; + letter-spacing:normal; +} +.extra-services .item-devider{ + position:absolute; + top:-3px; + left:0; + width:100%; + height:3px; +} +.extra-services .item-title{ + font-family:Arial, Helvetica, san-serif; + font-size:10px; + font-weight:bold; + color:#C0E1F3; + border-bottom:1px dotted #7D939F; +} +.extra-services .active{ + cursor:default; + background:#333; + font-weight:bold; + } + .extra-services .service-item:hover{ + cursor:pointer; + } + .extra-services .service-item:hover .item-title{ + color:#fffa96; + border-bottom-color:#fffa96; + } + .extra-services .service-item:active{ + background:#333; + } + .extra-services .service-item:active .item-title{ + color:#fff; + border:none; + } + .extra-services .active .item-title{ + color:#fff997; + border:none; + } + .extra-services .active .item-devider{ + background:#ff6766; + } + +/*Remove button padding in FF*/ +input::-moz-focus-inner{ + border: 0; + padding: 0; +} +.cc:after{ + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.hidden{ + display:none !important; +} + +/* Navigation +- - - - - - - - - - - - - - - - - - - - */ +#primary-nav-box{ + clear:both; + height:115px; + background-color:#ecf3d2; +} +.primary-nav{} + +.primary-nav .section{ + position:relative; + float:left; + display:block; + padding-right:1px; + background:url(../images/nav-devider-2.png) no-repeat 100% 50%; +} +.primary-nav .last-section{ + background:none; + padding:0; +} +.section .section-inner{ + width:130px; + min-height:100px; + height:auto !important; + height:100px; + padding:15px 0 3px 6px; + padding:15px 0 0 6px; + } +.primary-nav .last-section .section-inner{ + width:133px; + width:127px; +} +.section .section-title{ + position:absolute; + left:7px; + bottom:9px; + font-family:Arial, Helvetica, sans-serif; + font-size:15px; + line-height:1.2; + font-weight:bold; + text-transform:uppercase; + color:#393939; + color:#33342e; + } + .section .section-title .to-section{ + float:left; + margin-right:4px; + } + /* + .section .section-title .add-entry{ + position:relative; + top:2px; + float:left; + display:block; + width:14px; + height:14px; + background:url(../images/plus-sprite1.png) no-repeat; + font-size:0; + line-height:0; + visibility:hidden; + } + .section .section-title .add-entry:hover{ + background-position:-14px 0; + cursor:pointer; + } + */ +.section .section-devider{ + position:absolute; + left:0; + bottom:0; + z-index:10; + display:block; + width:100%; + height:3px; + + /*background:url(../images/section-status-sprite-5.gif) no-repeat -420px 115px; */ + /*background:url(../images/section-status-sprite-6.png) no-repeat -420px 100%;*/ + background:url(../images/section-status-sprite-7.png) no-repeat -136px 100%; + +} + +.dnstpl-nav-item .section-title{ + background-position:100% 85%; +} +.section .def{ + display:block; + font-family:Arial, Helvetica, sans-serif; + font-size:12px; + color:#8c9c91; +} +.section:hover .section-inner{ + background-color:#F1F7D6; + color:#000; + cursor:pointer; + } + .section:hover .section-devider{ + background-position:0 100%; + } + .section:hover .section-title{ + color:#000; + } +.primary-nav .active .section-inner{ + cursor:pointer; + } + .primary-nav .active .section-devider{ + /*background-position:-283px 100%;*/ + background-position:-276px 100%; + + height:6px; + bottom:-3px; + } + .primary-nav .active .def{ + color:#8c9c91; + } + .primary-nav .active .section-title{ + color:#393939; + } + +#console{ + position:relative; + clear:both; + height:70px; + background-color:#a09d98; + background:#535049 url(../images/console-box-bg.png) repeat-x; + border-bottom:1px solid #7a7967; + z-index:1; +} + +.b-console{ + position:absolute; + left:50%; +} + +.b-console-wrap{ + position:relative; + right:50%; + width:655px; + padding:10px 15px 16px 25px; + background:url(../images/console-bg.png) repeat; + + border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -webkit-border-top-right-radius: 0; + -webkit-border-top-left-radius: 0; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; +} + .b-console-form{} + + .b-console-field{ + float:left; + width:548px; + margin-right:15px; + padding:5px 10px; + border:2px solid #42647f; + font-family:Arial, Helvetica, sans-serif; + font-size:18px; + font-style:italic; + font-weight:bold; + color:#aaa; + } + .b-console-field:focus{ + -moz-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); + -webkit-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); + border-color:rgba(82, 168, 236, 0.75) !important; + color:#333; + } + .b-console-btn{ + float:left; + overflow:visible; + height:30px; + margin:4px 0 0; + padding:0 20px; + -webkit-border-radius:4px; + -moz-border-radius:4px; + border-radius:4px; + border:0 none; + background-color:#fdcd00; + color:#4b3600; + + font-size:13px; + font-family:Arial, Helvetica, sans-serif; + font-weight:bold; + line-height:30px; + text-transform:uppercase; + cursor:pointer; + + /* a little animation effect on hover for -webkit- */ + -webkit-transition-property: background; + -webkit-transition-duration: 150ms; + -webkit-transition-timing-function: ease-in-out; + } + .b-console-btn:focus{ + position:relative; + top:1px; + } + .b-console-btn:hover{ + background-color:#ffe84c; + color:#39351c; + } + .b-console-btn:active{ + background-color:#333; + color:#fff; + } + +.b-console-statuses{ + margin-top:15px; +} + + .b-console-status{ + position:relative; + padding:5px 80px 5px 10px; + border:2px dashed #999; + background-color:#feff99; + color:#666; + font-size:12px; + } + .b-console-status-message{ + float:left; + color:#666; + } + .b-console-status-action{ + float:right; + margin-right:-36px; + text-decoration:underline; + } + .b-console-status-message b{ + font-weight:bold; + color:#333; + } + .b-console-status-arrow{ + position:absolute; + top:10px; + right:12px; + display:block; + width:14px; + height:8px; + background:url(../images/status-arrow.png) no-repeat; + } + + + +#actions-toolbar{ + clear:both; + position:relative; + /*padding:15px 20px 15px 280px;*/ + padding:15px 20px 15px 250px; + background-color:#f3f3d9; + border-bottom:1px solid #c9cbc8; +} +.add-domain, +.add-btn{ + position:relative; + top:2px; + float:left; + /*margin:0 0 0 -260px;*/ + margin:0 0 0 -230px; + border-bottom:1px solid #b5c968; + font-family:Georgia, "Times New Roman", Times, serif; + font-size:16px; + line-height:1; + text-transform:uppercase; + color:#66685d; + text-decoration:none; +} +.add-domain .icon, +.add-btn-icon{ + float:left; + display:block; + width:11px; + height:11px; + margin:4px 5px 0 0; + background:url(../images/add-entry-plus.gif) no-repeat; + font-size:0; + line-height:0; + } + .add-btn:hover{ + color:#000; + border-bottom-color:#b85152; + } + .add-btn:active{ + color:#b85152; + border-bottom-color:#000; + } + +.select-all{ + padding:0 40px 0 0; + font-size:13px; + color:#7f7e6c; + text-decoration:underline; + cursor:pointer; + } + .select-all:hover{ + text-decoration:none; + } +.clear-selected{ + font-size:11px; + line-height:10px; + text-transform:uppercase; + color:#bcb6a6; + cursor:pointer; + letter-spacing:0.2px; + border-bottom:1px solid #bcb6a6; + } + .clear-selected:hover{ + color:#000; + border-bottom-color:#b85152; + } + .clear-selected:active{ + color:#b85152; + border-bottom-color:#000; + } + +.db-manager{ + float:right; + margin:5px 0 0 25px; + font-size:11px; + line-height:1.273; /*14px*/ + text-transform:uppercase; + letter-spacing:0.2px; + border-bottom:1px solid #bcb6a6; + text-decoration:none; + color:#9b9b8f; + } + .db-manager .highlighted{ + font-style:normal; + font-weight:bold; + color:#4097b3; + } + .db-manager:hover{ + color:#4097b3; + border-bottom-color:#b85152; + } + .db-manager:active{ + color:#b85152; + border-bottom-color:#4097b3; + } + .db-manager:active .highlighted{ + color:#b85152; + } + +/* Row filters */ + +.row-filters{} + + .b-row-selector{ + float:left; + width:240px; + } + + .b-row-selector .checkbox-selector{ + position:relative; + top:4px; + margin-right:20px; + } + .b-row-selector .b-cust-sel{ + width:100px; + } + +.checkbox-selector, +.context-actions{ + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + vertical-align:top; + } + .checkbox-selector .checkbox{ + display:block; + float:left; + width:11px; + height:11px; + margin:2px 5px 0 0; + background:url(../images/checkbox-selector.png) no-repeat; + cursor:pointer; + } + .checkbox-selector .selector-title{ + float:left; + font-size:11px; + line-height:15px; + text-transform:uppercase; + color:#5d5d5d; + cursor:pointer; + white-space:nowrap; + } + .checkbox-selector:hover .checkbox{ + background-position:0 -90px; + } + .checkbox-selector .selector-title:hover{ + color:#2ea8bd; + } + .checkbox-selector .selector-title:active{ + color:#fc0; + } + +/* Custom select */ +.b-cust-sel{ + position: relative; + font-size: 12px; + + background-color: #fff; + + box-shadow: inset 1px 1px 4px 0px rgba(0, 0, 0, 0.10); + -moz-box-shadow: inset 1px 1px 4px 0px rgba(0, 0, 0, 0.10); + -webkit-box-shadow: inset 1px 1px 4px 0px rgba(0, 0, 0, 0.10); + + border: 1px solid #c5c4bf; + display: block; + white-space: nowrap; + position: relative; + height: 20px; + line-height: 20px; + padding: 0 0 0 8px; + color: #616161; + +} +.b-cust-sel .title{ + margin-right: 26px; + display: block; + overflow: hidden; + white-space: nowrap; + -o-text-overflow: ellipsis; + -ms-text-overflow: ellipsis; + text-overflow: ellipsis; +} +.cust-sel-arrow{ + -moz-background-clip : padding; + -webkit-background-clip: padding-box; + background-clip : padding-box; + background: #ccc; + + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.6, #f5f4ef)); + background-image: -webkit-linear-gradient(center bottom, #fff 0%, #f5f4ef 60%); + background-image: -moz-linear-gradient(center bottom, #fff 0%, #f5f4ef 60%); + background-image: -o-linear-gradient(bottom, #fff 0%, #f5f4ef 60%); + background-image: -ms-linear-gradient(top, #cccccc 0%,#f5f4ef 60%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#cccccc', endColorstr='#f5f4ef',GradientType=0 ); + background-image: linear-gradient(top, #cccccc 0%,#f5f4ef 60%); + + border-left: 1px solid #c5c4bf; + position: absolute; + right: 0; + top: 0; + display: block; + height: 100%; + width: 21px; +} +.cust-sel-arrow i{ + display: block; + width: 100%; + height: 100%; + background:url(../images/custom-arrow.png) no-repeat 50% 50%; +} +.b-cust-sel .cust-sel-options{ + position:absolute; + top:21px; + left:-1px; + width:100%; + padding:5px 0 2px; + border:solid #C5C4BF; + border-width:0 1px 1px; + background:#fff; + z-index:100; + } + .b-cust-sel .cust-sel-option{ + padding:0 0 4px 18px; + background:url(../images/cust-option-bullets.png) no-repeat 5px 7px; + color:#828282; + cursor:pointer; + } + .b-cust-sel .cust-sel-option:hover{ + color:#333; + } + .b-cust-sel .ico_gray{ + background-position:5px 7px; + } + .b-cust-sel .ico_green{ + background-position:5px -35px; + } + .b-cust-sel .ico_red{ + background-position:5px -79px; + } + +.b-cust-sel_inactive{ + background:#f3f3d9; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + } + .b-cust-sel_inactive .cust-sel-arrow{ + background:#f3f3d9; + } + .b-cust-sel_inactive .cust-sel-options{ + display:none; + } + +.domain-groups-selector{ + float:left; + width:270px; + padding-top:2px; + font-size:11px; + line-height:15px; + } + .domain-groups-selector .selector-wrap{ + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + vertical-align:top; + padding-right:15px; + border-bottom:1px solid #d5d6c4; + background:url(../images/custom-arrow.png) no-repeat 100% 6px; + } + .domain-groups-selector .selector-title{ + padding-right:5px; + font-weight:normal; + text-transform:uppercase; + color:#8b8b8b; + } + .domain-groups-selector .selected-groups{ + color:#5d5d5d; + } + +#content{ + padding:8px 0 50px; + background:#fff url(../images/content-separator.png) repeat-x; +} +.b-ext-info-wrap{ + position:relative; + min-height:40px; + } + .b-ext-info{ + margin:0 0 6px; + padding:10px 25px 15px; + background:#ddd; + font-size:12px; + color:#000; + text-shadow: 0px 1px 1px #fff; + } + .b-ext-info-btn{ + position:relative; + left:-1px; + width:102px; + height:15px; + margin-left:-50px; + margin:-6px auto 0; + background-color:#fff; + cursor:pointer; + } + .b-ext-info-wrap_collapsed .b-ext-info-btn{ + background:url(../images/more-info-btn.png) no-repeat; + } +.content-inner{ + background-color:#fff; + padding:0 15px 15px; +} +/* +.domains{ + border-bottom:1px solid #333; + background-color:#fff; +} +.domains .item{ + position:relative; + padding:0 20px; + background:url(../images/long-dotted-bg.gif) repeat-x; +} +.domains .first{ + margin:0; + background:none; +} +.item .view{ + padding:15px 0 10px; +} +.item .ip-box{ + float:left; + width:150px; + padding-top:12px; +} +.ip-box .ip{ + font-size:1.1em; /*11px* + line-height:21px; + font-weight:normal; + letter-spacing:.175em; +} +.ip-box .owner{ + display:block; + font-size:1.2em; + color:#999; +} +.details .names .primary{ + font-size:20px; + font-family:Georgia, "Times New Roman", Times, serif; + font-weight:normal; + font-style:normal; + color:#000; /* radikal'no cherniy, da! * +} +.names .divider{ + font-size:12px; + line-height:2; + text-transform:uppercase; + color:#999; +} +.names .domain-name{ + padding:0 10px; + font-size:12px; + line-height:2; + font-style:italic; + color:#999; + white-space:nowrap; +} +.item .details{ + margin-left:150px; +} +.item .details .status{ + float:right; + width:60%; + margin:5px 20px 0 0; + color:#999; +} +.details .status .logging{ + float:left; +} +.logging .err-log, +.logging .log, +.logging .stats{ + float:left; + display:inline; + margin:0 20px 0 0; + padding-right:25px; + background:url(../images/logging-status-sprite.png) no-repeat -100% -100%; +} +.logging .off{ + background-position:100% 0; +} +.logging .on{ + background-position:100% 100%; +} +.logging .stats{ + margin-right:10px; +} +.logging .stat-auth{ + float:left; + display:inline; + margin:0 10px 0 0; + border-bottom:1px solid #9bcad0; + color:#999; + cursor:pointer; +} +.details .status .params{ + float:right; +} +.params .memory, +.params .t, +.params .max-weight, +.params .upload-weight{ + float:left; + display:inline; + margin-right:25px; +} +.memory{} + +.memory dl{ + overflow:hidden; + margin-bottom:2px; +} + +.memory dt{ + float:left; + width:15px; +} +.memory dd{ + float:left; +} +.memory .usage{} + +.memory .usage .value{ + float:left; + width:30px; +} +.memory .usage .divider{ + padding-right:2px; +} +.memory .usage .max{ + font-weight:bold; + border-bottom:1px solid #9bcad0; + cursor:pointer; +} +.memory .graph{ + clear:both; + position:relative; + border:1px solid #ccc; + font-size:0; + line-height:0; +} +.memory .graph .bar{ + position:relative; + display:block; + height:2px; +} +.critical .bar{ + background-color:#f00; +} +.middle .bar{ + background-color:#ff9934; +} +.low .bar{ + background-color:#acd45a; +} +.params .upload-weight{ + margin:0; +} +.t .value, +.max-weight .value, +.upload-weight .value{ + border-bottom:1px solid #9bcad0; + cursor:pointer; +} +.item .close{ + position:absolute; + top:30px; + right:20px; + display:block; + width:16px; + height:16px; + background:url(../images/sprite.png) no-repeat; + cursor:pointer; +} +.item .close:hover{ + background-position:-16px 0; +} +*/ +/* row hover effect +- - - - - - - - - - - - - - - - - - - */ +/* +.domains .item:hover{ + background-color:#ffffcb; +} +.item:hover .names .primary{ + cursor:pointer; + border-bottom:1px dotted #ccc; +} +.item:hover .logging .err-log, +.item:hover .logging .log, +.item:hover .logging .stats, +.item:hover .memory dt, +.item:hover .memory .divider, +.item:hover .params .title{ + color:#98bc65; +} +.item:hover .logging .stat-auth, +.item:hover .memory .max, +.item:hover .t .value, +.item:hover .max-weight .value, +.item:hover .upload-weight .value{ + color:#333; +} +*/ +/* Edit +- - - - - - - - - - - - - - - - - - - */ +/* +.edit{ + position:relative; + clear:both; + margin:0 -20px; + padding:15px 20px 10px; + border-top:2px solid #999; + background-color:#ffffcb; +} +.change-ip-box{ + margin:0 0 20px; +} +.edit .ip-details{ + float:left; + margin-right:20px; +} +.change-ip{ + width:140px; + padding:3px 5px; + border:2px solid #9bcad0; + font-size:16px; +} +.ip-details .created{ + display:block; + margin:5px 0 0; + font-size:12px; +} +.change-domain-name{ + width:360px; + padding:3px 5px; + border:2px solid #9bcad0; + font-size:16px; + font-weight:bold; +} +.edit .domain-name{ + font-size:20px; + font-family:Georgia, "Times New Roman", Times, serif; + font-weight:normal; + font-style:normal; + color:#000; /* radikal'no cherniy, da! * + white-space:nowrap; + line-height:2; +} +.change-logs-box{ + float:left; + width:170px; + margin-right:50px; + padding-left:180px; +} +.ownership{ + display:inline; + float:left; + width:160px; + margin:0 0 0 -180px; + font-size:12px; +} +.ownership .owner{ + display:block; + font-size:16px; + font-weight:bold; + font-style:italic; +} +.change-logs{ + padding-top:5px; +} +.change-logs label{ + display:block; + margin:0 0 9px; +} +.change-logs .last{ + margin:0; +} +.change-logs .title{ + display:block; + float:left; + width:70px; + font-size:14px; +} +.change-logs .title b{ + font-weight:bold; +} +.change-logs .checkbox{ + margin:3px 0 0; + border:2px solid #9bcad0; +} +.change-logs .stat-auth{ + position:relative; + top:-3px; + left:10px; + border-bottom:1px solid #9BCAD0; + cursor:pointer; +} +.change-memory{ + float:left; + width:150px; + padding-top:5px; + font-size:14px; +} +.change-memory dl{ + margin-bottom:13px; +} +.change-memory .value{ + padding:0 5px; + font-style:italic; + font-weight:bold; + color:#6b930f; +} +.change-memory .amount{ + margin-top:7px; +} +.change-memory .amount .max{ + width:50px; + margin-left:10px; + padding:2px 5px; + border:2px solid #9bcad0; + text-align:right; +} +.change-memory .graph{ + clear:both; + position:relative; + border:1px solid #9c9c82; + font-size:0; + line-height:0; +} +.change-memory .graph .bar{ + position:relative; + display:block; + height:2px; +} +.change-params{ + float:right; + font-size:14px; +} +.change-params li{ + margin-top:5px; + overflow:hidden; +} +.change-params .title{ + float:left; + width:165px; +} +.change-params .param-value{ + width:30px; + margin-right:5px; + padding:1px 5px; + border:2px solid #9bcad0; + text-align:right; + +} +.aliases{ + position:relative; + padding-top:20px; + margin-bottom:20px; +} +.aliases .title{ + float:left; + display:block; + margin-right:20px; + padding-top:3px; + font-size:17px; +} +.aliases .hint{ + position:absolute; + top:-15px; + left:78px; + font-style:italic; + color:#999; +} +.aliases-list{ + width:90%; + padding:3px 5px; + border:2px solid #9bcad0; + font-size:16px; +} +.buttons{} + +.buttons .apply{ + width:auto; + overflow:visible; + padding:4px 20px 3px 17px; + background-color:#feff99; + border:1px solid #728b25; + + font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif; + font-size:120%; + font-weight:bold; + text-transform:uppercase; + + line-height:130%; + color:#6b9e05; + cursor:pointer; + + float:right; +} +.buttons .devider{ + text-transform:uppercase; + float:right; + display:block; + line-height:24px; + margin:0 10px; +} +.buttons .cancel{ + float:right; + width:auto; + height:20px; + padding:0; + border:0 none; + background:none; + color:#e09462; + text-decoration:underline; + cursor:pointer; +} +.hidden{ + display:none; +} +.edit .iSelected{ /* descendant selector for more specific style context * + border-color:#59B4FF; /* blue border on focused input * + font-weight:bold; +} +.edit .not-valid{ /* descendant selector for more specific style context * + border-color:#f00; /* RED border on error field * +} + +.edit .edit-help{ + padding-bottom:1px; + font-family:Arial, Helvetica, sans-serif; + font-size:14px; + color:#a0a094; + text-decoration:none; + text-transform:uppercase; + border-bottom:1px solid #b5b59b; +} +.edit .delete{ + position:absolute; + top:15px; + right:25px; + padding:3px 25px 3px 2px; + font-family:Arial, Helvetica, sans-serif; + font-size:14px; + color:#a0a094; + text-transform:uppercase; + background:url(../images/delete.gif) no-repeat 100% 50%; + cursor:pointer; +} +.edit .delete .title{ + padding-bottom:1px; + border-bottom:1px solid #b5b59b; +} +*/ + +/* IP list +- - - - - - - - - - - - - - - - - - - - */ +#content{ + padding-bottom:0; +} +.ip-list{} + + .row{ + padding-top:10px; + padding:10px 10px 15px 10px; +/* min-height:125px; + min-height:110px;*/ + background:url(../images/long-dotted-bg.gif) repeat-x; + } + .first-row{ + background-image:none; + } + .row-meta{ + float:left; + width:150px; + } + .row-details{ + margin-left:150px; +/* background:#e0e0e0;*/ + } + .row-actions-box{ +/* margin:0 0 5px;*/ + } + + .row-actions-box .check-this, + .row-actions-box .check-control{ + float:left; + width:10px; + height:10px; + margin-top:4px; +/* background:url(../images/logging-status-sprite.png) no-repeat;*/ + background:url(../images/check-row-sprite.png) no-repeat; + background:url(../images/check-row-sprite_.png) no-repeat; + } + .row-actions-box .check-control:hover{ + cursor:pointer; + background-position:0 -89px; + } + .row-actions-box .row-operations{ + float:right; + } + .ip-status-info{ + position:relative; + display:block; + float:left; + /*margin-right:25px;*/ + padding-right:15px; + font-size:12px; + } + .ip-status-info .ip-status-text{ + visibility:hidden; + } + .row .ip-suspended-status{ + margin:0; + background:url(../images/suspended-ico.png) no-repeat 100% 65%; + } + .row .ip-suspended-status .ip-status-text{ + text-transform:uppercase; + color:#333; + font-size:10px; + visibility:visible; + } + .delete-entry{ + position:relative; + top:2px; + display:block; + float:left; + padding-right:15px; + font-size:11px; + text-transform:uppercase; + } + .delete-entry .delete-entry-text{ + visibility:hidden; + } + .entry-created{ + padding-top:7px; + font-size:11px; + color:#6f6f6f; + } + .props-main{ + float:left; + width:425px; +/* background:#eee;*/ + } + .props-main .prop-box{ + margin-bottom:15px; + } + + .props-additional{ + float:left; + width:200px; + padding:5px 10px 0 0; +/* background:#ccc;*/ + } + .props-ext{ + float:right; + width:120px; + padding-top:5px; +/* background:#d5d5d5;*/ + } + .ip-adr-box, + .user-wrap{ + margin:0 0 5px; + } + .ip-adr{ + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + font-size:22px; + line-height:1; + font-weight:normal; + letter-spacing:0.5px; + } + .ip-adr:active, + .ip-adr:focus{ + color:#9fb749; + } + .ip-adr .dot{ + padding:0 3px; + } + .ip-list .ip-adr{ + border-bottom:1px solid #fff; + } + .username-box .user{ + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + margin-right:10px; + } + .username-box .nickname{ + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + margin-right:5px; + + font-size:20px; + line-height:25px; + font-family:Arial, Helvetica, sans-serif; + color:#000; + + } + .username-box .role{ + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + position:relative; + top:2px; + + font-size:12px; + line-height:25px; + color:#777; + } + + .prop-box{ + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + min-width:40%; +/* width:auto !important; + width:40%;*/ + margin:0 0 3px; + font-size:10px; + } + .prop-title{ + text-transform:uppercase; + color:#9c9c9c; + font-size:9px; + line-height:15px; + } + .prop-value{ + padding-left:3px; + font-size:12px; + color:#777; + } + .prop-value-collapsed-childs{ + padding-right:15px; + background:url(../images/group-values-collapsed.png) no-repeat 100% 5px; + cursor:pointer; + } + .show-records{ + display:inline-block; + padding-right:15px; + border-bottom:1px solid #c9cabc; + background:url(../images/show-records-ico.png) no-repeat 100% 50%; + text-transform:uppercase; + line-height:13px; + cursor:pointer; + } + .hide-records{ + display:inline-block; + padding-right:15px; + border-bottom:1px solid #c9cabc; + background:url(../images/hide-records-ico.png) no-repeat 100% 50%; + text-transform:uppercase; + line-height:13px; + cursor:pointer; + } + + .prop-box_group-values{ + display:block; + } + .prop-box_group-values .prop-title{ + float: left; + margin:2px 0 0; + } + .prop-box_group-values .group-values{ + float:left; + margin-left:3px; + } + .group-values .prop-value{ + display:block; + } + .group-values__bullet .prop-value{ + padding-left:15px; + background:url(../images/group-value-bullet.png) no-repeat 5px 8px; + } + .group-values .group-switcher{ + padding-right:15px; + background:url(../images/group-values-collapsed.png) no-repeat 100% 4px; + } + .group-values .group-values-count{ + font-size:12px; + font-style:italic; + color:#cdcdcd; + border-bottom:1px solid #c9cac4; + cursor:pointer; + } + + .props-additional .owner-box{ + padding-left:45px; + } + .props-additional .owner-box .prop-title{ + float:left; + display:inline; + margin:2px 0 0 -45px; + } + .props-additional .owner-box .prop-value{ + padding:0; + } + + .ip-list .ip-name-box{ + margin:0 0 3px; + } + + +/* Entry adding form +- - - - - - - - - - - - - - - - - - - */ +.b-new-entry{ + margin-top:25px; + border-style:solid; + border-width:2px 1px 1px; + border-color:#999 #ccc #ccc #ccc; + + background-color:#ffffcb; + } + .b-new-entry .entry-header{ + margin:0 0 10px; + padding:8px 15px 9px; + border-bottom:1px solid #dcdbab; + font-size:16px; + font-family:Georgia, "Times New Roman", Times, serif; + text-transform:uppercase; + color:#747668; + } + .b-new-entry .form-row{ + position:relative; + padding:10px 15px; + } + .b-new-entry .field-label, + .b-new-entry .row-header{ + float:left; + width:180px; + font-size:15px; + line-height:2; + color:#3d504a; + } + .b-new-entry .text-field{ + float:left; + width:265px; + margin:0 15px 0 0; + padding:6px 7px; + border:2px solid #b8c2c3; + color:#555; + font-family:Arial, Helvetica, sans-serif; + font-size:14px; + font-weight:bold; + } + .b-new-entry .field-label .remark{ + position:relative; + top:-14px; + display:block; + font-style:italic; + font-size:14px; + color:#a3a590; + } + + .b-new-entry .custom-select{} + + .b-new-entry .textarea{ + width:685px; + height:100px; + padding:6px 7px; + border:2px solid #b8c2c3; + color:#555; + font-family:Arial, Helvetica, sans-serif; + font-size:14px; + font-weight:bold; + } + .b-new-entry .text-field:focus, + .b-new-entry .textarea:focus{ + -moz-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); + -webkit-box-shadow:0 0 8px rgba(82, 168, 236, 0.5); + border-color:rgba(82, 168, 236, 0.75) !important; + color:#333; + } + + .b-new-entry .ssl-crtfct-box .textarea{ + margin:10px 0 0; + } + .b-new-entry .select{ + position: absolute; + top:auto; + left:195px; + width: 195px; + height: 28px; + padding: 0 24px 0 8px; + color: #555555; + font:bold 14px/28px arial,sans-serif; + background:#fff url(../images/select-arrow.png) no-repeat 100% 50%; + overflow: hidden; + border:2px solid #b8c2c3; + } + .b-new-entry .select.disabled{ + border: 0; + background-color: #FFFFCB; + opacity: 1; + background: 0; + } + + .b-new-entry .checkbox.disabled{ + background-position: -331px -126px; + margin-right:5px; + } + .b-new-entry .text-field:disabled{ + border:0; + background-color:#FFFFCB; + } + .b-new-entry select.styled{ + top:10px; + } + .b-new-entry option{ + font:14px arial,sans-serif; + } + .b-new-entry .form-options-group{} + + .b-new-entry .group-header{ + margin:12px 25px 12px 15px; + text-transform:uppercase; + color:#9c9c9c; + font-size:11px; + line-height:15px; + height:16px; + background:url(../images/dotted.gif) repeat-x 0 50%; + } + .b-new-entry .group-title-outer{ + display:inline-block; + width:165px; + padding:0 15px 0 0; + line-height:16px; + text-align:right; + background:#ffffcb; + } + .b-new-entry .group-title-inner{ + padding:2px 13px 2px 0; + } + .b-new-entry .group-title{ + border-bottom:1px solid #FFFFCB; + } + .b-new-entry .expanded .group-title-inner{ + background:#ffffcb url(../images/form-group-expanded.png) no-repeat 100% 50%; + } + .b-new-entry .collapsed .group-title-inner{ + background:#ffffcb url(../images/form-group-collapsed.png) no-repeat 100% 50%; + } + .b-new-entry .group-header:hover{ + cursor:pointer; + } + .b-new-entry .group-header:hover .group-title, + .b-new-entry .group-header .group-title:hover{ + color:#000; + border-bottom-color:#9fb35a; + } + .b-new-entry .group-header .group-title:active{ + color:#4B9427; + } + + .b-new-entry .mail-options-group{ + margin-bottom:27px; + } + .b-new-entry .mail-options-group .form-row{ + padding-bottom:0; + } + + .b-new-entry .delete-record{ + display: block; + position:relative; + top:11px; + float: left; + width: 11px; + height: 11px; + background: url(../images/delete-ico-off.png) no-repeat; + } + .b-new-entry .delete-record:hover{ + cursor:pointer; + background-image:url(../images/delete-ico.png); + } + .b-new-entry .delete-record:active{ + cursor:pointer; + background-image:url(../images/delete-ico-active.png); + } + + + .b-new-entry .checkbox{ + display:block; + float:left; + width:18px; + height:18px; + margin:6px 0 0; + background:url(/images/form-checkboxes.png) no-repeat; + } + .b-new-entry .checkbox:hover{ + background-position:0 -100px; + } + .b-new-entry .stats-settings{ + padding-left:40px; + } + .b-new-entry .db-credentials .field-label{ + text-indent:40px; + } + .b-new-entry_user .lastname-box{ + margin-bottom:30px; + } + .b-new-entry_dns .dns-template-box .styled{ + float:left; + margin:0 40px 0 0; + margin:0 20px 0 0; + width:230px; + cursor:pointer; + } + .b-new-entry_dns .ttl-field{ + width:75px; + } + .generate-pwd, + .context-settings{ + position:relative; + top:10px; + float:left; + display:block; + color:#5ea2a1; + border-bottom:1px solid #cdcea6; + text-transform:uppercase; + cursor:pointer; + + font-size:11px; + line-height:1; + letter-spacing:0.5px; + } + .generate-pwd:hover, + .context-settings:hover{ + color:#575757; + border-bottom-color:#b4c775; + } + .generate-pwd:active, + .context-settings:active{ + color:#b4c775; + } + + .b-new-entry .add-ns{ + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + + margin:0 0 7px 180px; + font-family:Georgia, "Times New Roman", Times, serif; + font-size:14px; + line-height:1; + text-transform:uppercase; + color:#66685d; + text-decoration:none; + } + .add-ns .icon{ + float:left; + display:block; + width:11px; + height:11px; + margin:2px 5px 0 0; + background:url(../images/add-entry-plus.gif) no-repeat; + font-size:0; + line-height:0; + } + .add-ns .btn-title{ + display:inline-block; + border-bottom:1px solid #b5c968; + } + .add-ns .btn-title:hover{ + color:#000; + border-bottom-color:#b85152; + } + .add-ns .btn-title:active{ + color:#b85152; + border-bottom-color:#000; + } + + + .b-new-entry .buttons-row{ + position:relative; + margin-top:13px; + padding:8px 15px 8px 195px; + border-top:1px solid #dcdbad; + background:url(../images/form-bottom-bg.png) repeat-x; + } + + .b-new-entry .cancel-btn{ + + display:-moz-inline-stack; + display: inline-block; + zoom: 1; + *display: inline; + + margin-left:30px; + font-size:11px; + line-height:1; + font-weight:bold; + + text-transform:uppercase; + color:#2ca9bd; + cursor:pointer; + border-bottom:1px solid #2ca9bd; + } + .b-new-entry .cancel-btn:hover{ + color:#999; + border-bottom-color:#999; + } + .b-new-entry .cancel-btn:active{ + color:#fc0; + border-bottom-color:#fc0; + } + + .b-new-entry .delete-btn{ + position:absolute; + top:18px; + right:16px; + + font-size:9px; + line-height:11px; + text-transform:uppercase; + color:#333; + letter-spacing:3px; + cursor:pointer; + border-bottom:1px solid #ff6766; + } + .b-new-entry .delete-btn:hover{ + color:#ff6766; + } + .b-new-entry .delete-btn:active{ + color:#fc0; + border-bottom-color:#fc0; + } + + + .b-new-entry .add-entry-btn{ + overflow:visible; + height:28px; + padding:0 50px; + -webkit-border-radius:9px; + -moz-border-radius:9px; + border-radius:9px; + border:2px solid #c8c09c; + background-color:#feff99; + color:#444428; + font-size:14px; + font-family:Arial, Helvetica, sans-serif; + font-weight:bold; + line-height:25px; + text-transform:uppercase; + cursor:pointer; + } + .b-new-entry .add-entry-btn:focus{ + position:relative; + top:1px; + } + .b-new-entry .add-entry-btn:hover{ + background-color:#feff77; + color:#464322; + border-color:#9e977b; + } + .b-new-entry .add-entry-btn:active{ + background-color:#928d7a; + color:#fefe9e; + border-color:#87826e; + } + .b-new-entry .autocomplete-box{ + position:relative; + float:left; + padding-right:35px; + background:#fff; + } + .b-new-entry .autocomplete-box .text-field{ + width:213px; + margin:0; + } + .b-new-entry .autocomplete-box .arrow{ + position:absolute; + top:0; + right:0; + display:block; + width:32px; + height:32px; + font-size:0; + line-height:0; + background:#fff url(../images/autocomplete-field-arrows-sprite.png) no-repeat; + cursor:pointer; + } + .b-new-entry .autocomplete-box .arrow:hover, + .b-new-entry .autocomplete-box .arrow:active, + .b-new-entry .autocomplete-box .arrow:focus{ + background-position:0 -32px; + } + + .b-new-entry .form-error{ + position:relative; + margin:-5px 5px 5px; + padding:8px 15px; + border:1px solid #dcdbad; + background:url(../images/form-bottom-bg.png) repeat-x; + } + .form-error .error-box{ + padding-left:18px; + background:url(../images/error-bullet.png) no-repeat 0 50%; + } + .form-error .error-box .error-message{ + color:#9a32ff; + font-size:16px; + line-height:22px; + } + .form-error .error-box .help-tip-url{ + position:relative; + top:-1px; + font-size:12px; + line-height:15px; + color:#b4b39f; + text-transform:uppercase; + text-decoration:none; + cursor:pointer; + border-bottom:1px solid #b4b39f; + } + .b-new-entry .help-tip-url:hover{ + color:#000; + border-bottom-color:#9fb35a; + } + + .b-new-entry_cron{} + + .b-new-entry_cron .form-row{ + padding-top:7px; + padding-bottom:5px; + } + .b-new-entry_cron .run-at-box{ + padding-bottom:7px; + } + .b-new-entry_cron .run-at-box .row-header{ + margin-top:35px; + } + .b-new-entry_cron .form-row-line .field-box{ + margin-right:14px; + } + .b-new-entry_cron .form-row-line .cron-week-box{ + margin:0; + } + .b-new-entry_cron .form-row-line .field-label{ + display:block; + float:none; + width:auto; + line-height:1; + padding:0 0 8px; + color:#7d7d7d; + + font-size:13px; + } + .b-new-entry_cron .form-row-line .text-field{ + width:112px; + margin:0; + } + .b-new-entry_cron .form-row-line .cron-week-box .text-field{ + width:109px; + margin:0; + } + .b-new-entry_cron .textarea{ + height:60px; + } + + + .b-new-detailed-restore{} + + .b-new-detailed-restore .add-entry-btn{ + padding:0 30px; + } + +/* Show/edit dns records form +- - - - - - - - - - - - - - - - - - - */ +.b-records-list{ + margin-left:160px; + } + .b-records-list .entry-header{ + padding-top:6px; + padding-bottom:11px; + } + .b-records-list .hide-records{ + font-size:10px; + font-family:Arial, Helvetica, sans-serif; + line-height:13px; + } + .b-records-list .add-btn{ + margin:0; + float:none; + } + .b-records-list .form-row{ + padding-top:5px; + padding-bottom:5px; + } + .b-records-list .add-box{ + padding-bottom:15px; + } + .b-records-list .buttons-row{ + margin-top:20px; + } + .form-row-line{ + position:relative; + } + .form-row-line .field-box{ + float:left; + } + .form-row-line .field-devider{ + float:left; + display:block; + min-height:30px; + margin:0 15px; + font-size:15px; + line-height:2; + } + .b-records-list .form-row-line .field-label{ + float:none; + display:block; + width:auto; + line-height:20px; + } + .b-records-list .dns-record-box .text-field{ + width:147px; + float:left; + margin:0; + } + .b-records-list .dns-type-box{ + margin-right:15px; + } + .b-records-list .dns-type-box .select{ + width:51px; + left:221px; + } + .b-records-list .dns-type-box select.styled{ + width:87px; + cursor:pointer; + } + .b-records-list .dns-value-box .text-field{ + float:none; + width:390px; + margin:0; + } + .b-records-list .delete-record{ + position:absolute; + top: auto; + bottom:15px; + right:11px; + display:block; + float:left; + width:11px; + height:11px; + background:url(../images/delete-ico-off.png) no-repeat; + } + + +/* Web-domains list +- - - - - - - - - - - - - - - - - - - */ +.domains-list{} + + .domains-list .entry-created{ + padding-top:9px; + } + .names{ + margin:0 0 6px; + color:#acacac; + } + .names .alias-title{ + position:relative; + top:-1px; + padding-right:3px; + padding:0 3px 0 25px; + font-size:10px; + line-height:1.8; + text-transform:uppercase; + } + .names .domain-name{ + position:relative; + top:-1px; + padding:0 3px 0 0; + font-size:12px; + line-height:1.5; + color:#acacac; + white-space:nowrap; + } + .row-details .names .primary{ + top:0; +/* padding:0 25px 0 0;*/ + font-size:20px; + font-family:Arial, Helvetica, sans-serif; + font-weight:normal; + font-style:normal; + color:#000; /* radikal'no cherniy, da! */ + } + .names .primary:active{ + color:#9fb749; + } + .domains-list .names .primary, + .dns-list .names .primary{ + border-bottom:1px solid #fff; + } + + .domains-list .props-main{ + width:345px; + } + .domains-list .ip-adr{ + font-size:16px; + color:#888; + } + .domains-list .ip-adr-box .prop-box{ + margin-left:20px; + } + + .domains-list .props-additional{ + width:230px; + padding-top:0; +/* background:#bbb;*/ + } + .domains-list .props-ext{ + width:170px; + padding-top:0; +/* background:#ddd;*/ + } + +.b-usage-box{ + display:block; +} + + .b-usage-box .prop-title{ + float:left; + margin:2px 15px 0 0; + } + .b-usage-box .usage-box{ + float:left; + width:136px; + } + .b-usage-box .usage-box{ + + } + .b-usage-box .value-box{ + float:left; + width:75px; + } + .b-usage-box .max-size{ + float:right; + } + .b-usage-box .value{ + display:block; + font-size:11px; + line-height:1; + color:#999; + } + .b-usage-box .max-size{ + position:relative; + top:2px; + font-size:14px; + line-height:1; + color:#ababab; + } + .b-usage-box .max-size .units{ + font-size:12px; + color:#797979; + } + .graph{ + position:relative; + border:1px solid #b7b7b9; + font-size:0; + line-height:0; + } + .graph .bar{ + position:relative; + display:block; + height:2px; + } + .critical .bar{ + background-color:#f00; + } + .middle .bar{ + background-color:#ff9934; + } + .low .bar{ + background-color:#9fec00; + } + +/* New graphs */ +.b-stats-box{ + position:relative; + margin-left:-25px; + padding-left:25px; + background:url(../images/stats-brace.png) no-repeat 0 50%; + } + .stats-box-title{ + position:absolute; + top:50%; + left:-68px; + + width:28px; + margin-top:-6px; + padding-right:35px; + text-transform:uppercase; + font-size:9px; + line-height:12px; + background:url(../images/stats-curve.png) no-repeat 85% 50%; + color:#acacac; + } + +.b-usage-box2{ + display:block; + margin:0 0 22px; + position:relative; + } + .b-usage-box2 .prop-title{ + float:left; + margin:2px 15px 0 0; + } + .b-usage-box2 .usage-box{ + float:left; + } + .b-usage-box2 .value-box{ + padding-top:11px; + float:left; + width:85px; + } + .b-usage-box2 .max-size{ + position:relative; + top:11px; + float:right; + padding:7px 0 0 3px; + border-left:1px solid #B7B7B9; + font-size:10px; + line-height:1; + color:#acacac; + } + .b-usage-box2 .max-size .units{ + font-size:10px; + color:#acacac; + } + .b-usage-box2 .graph{ + position:relative; + border:solid #b7b7b9; + border-width:1px 0 1px 1px; + font-size:0; + line-height:0; + } + .b-usage-box2 .value{ + position:absolute; + top:-15px; + left:0; + z-index:10; + display:block; + white-space:nowrap; + padding:0 0 7px 3px; + font-size:11px; + line-height:1; + background:url(../images/bar-value-mark.png) no-repeat 0 100%; + color:#797979; + } + .b-usage-box2 .value-size{ + padding-left:3px; + } + .b-usage-box2 .graph .bar{ + position:relative; + display:block; + height:2px; + background-color:#9fec00; + } + + /* Overdraft */ + .b-usage-box2 .overdraft{} + + .b-usage-box2 .overdraft .value{ + margin-left:-1px; + color:#F00; + } + + .b-usage-box2 .bar_overdraft{ + position:absolute; + top:-1px; + z-index:5; + display:block; + height:2px; + border:solid #b7b7b9; + border-width:1px 0; + background:#ff9934 url(../images/overrun-border.png) no-repeat 100% 0; + } + + +.domains-list .props-additional .prop-box, +.domains-list .props-ext .prop-box{ + display:block; + margin:0; + } + .stats-box{} + + .stats-box .stats-auth{ + position:relative; + top:3px; + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + margin:0 0 0 5px; + padding:0 0 0 10px; + font-size:12px; + line-height:1.5; + color:#777; + cursor:pointer; + } + .stats-box .stats-auth-on{ + background:url(../images/auth-plus.png) no-repeat 0 60%; + } + .stats-box .stats-auth-text{ + display:block; + line-height:11px; + border-bottom:1px solid #cacbbd; + } + + .nginx-box{} + + .nginx-box .nginx-ext-list{ + position:relative; + top:3px; + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + margin:0 0 0 5px; + border-bottom:1px solid #cacbbd; + font-size:12px; + line-height:1; + color:#777; + cursor:pointer; + } + .template-box{} + + .template-box .prop-value{ + padding:0; + cursor:pointer; + border-bottom:1px solid #cbcbbf; + } + +/* DNS list +- - - - - - - - - - - - - - - - - - - */ +.dns-list{} + + .dns-list .row-details{ + padding-bottom:8px; + } + .dns-list .entry-created{ + padding-top:9px; + } + .dns-list .props-main{ + width:295px; + } + .dns-list .props-additional{ + width:200px; + } + .dns-list .props-ext{ + width:250px; + } +.dns-list .props-additional .prop-box, +.dns-list .props-ext .prop-box{ + display:block; + margin:0; + } +.dns-list .ip-adr-box{ + margin:0; + } + .dns-list .ip-adr{ + font-size:12px; + line-height:1.5; + color:#777; + } + +/* Cron list +- - - - - - - - - - - - - - - - - - - */ +.cron-list{} + + .cron-list .entry-created{ + padding-top:18px; + } + .cron-list .cron-meta{ + margin:0 0 9px; + } + .cron-meta .prop-box{ + min-width:0; + } + .cron-meta .prop-title{ + display:block; + text-transform:none; + font-size:10px; + } + .cron-meta .prop-value{ + padding:0; + font-size:16px; + color:#7c7c7c; + } + .cron-meta .cron-min, + .cron-meta .cron-hour, + .cron-meta .cron-day, + .cron-meta .cron-week, + .cron-meta .cron-month{ + min-width:45px; + padding-right:20px; + } + + .cron-command-box{ + margin:0 0 5px; + } + .cron-command-line{ + position:relative; + padding:0 3px 0 0; + font-family:Arial, Helvetica, sans-serif; + font-size:20px; + line-height:1.5; + font-weight:normal; + font-style:normal; + color:#000; + + } + .cron-command-line:active{ + color:#9fb749; + } + .cron-list .cron-command-line{ + border-bottom:1px solid #fff; + } + + .cron-reported-to{ + margin:0 0 3px; + } + .cron-reported-to .prop-title{ + padding-right:3px; + } + .cron-reported-to .prop-value{ + padding:0 3px 0 0; + } + +/* Users list +- - - - - - - - - - - - - - - - - - - */ +.users-list{} + + .users-list .entry-created{ + padding-top:10px; + } + .users-list .user-wrap{ + margin:0 0 19px; + } + .users-list .props-main{ + width:345px; + width:330px; + } + .users-list .username-box{ + padding-top:6px; + margin:0 0 15px; + } + .users-list .username-box .user{ + position:relative; + top:-6px; + } + .users-list .username-box .nickname{ + border-bottom:1px solid #fff; + } + + .user-backups-box{ + margin-top:5px; + } + .user-backups-box .prop-title{ + border-bottom:1px solid #CBCBBF; + font-size:12px; + text-transform:capitalize; + cursor:pointer; + color:#777; + } + + .users-list .props-additional{ + width:200px; + width:225px; + } + .users-list .props-additional .prop-box, + .users-list .props-ext .prop-box{ + display:block; + } + .users-list .props-additional .ns1-box, + .users-list .props-additional .ns2-box{ + padding-left:27px; + } + .users-list .webtpl-box .group-switcher, + .users-list .ns-list-box .group-switcher{ + padding-left:2px; + } + .users-list .props-additional .ns1-box .prop-title, + .users-list .props-additional .ns2-box .prop-title{ + display: inline; + float: left; + margin: 2px 0 0 -27px; + } + .users-list .props-additional .ns1-box .prop-value, + .users-list .props-additional .ns2-box .prop-value{ + padding:0; + } + + .users-list .props-ext{ + width:190px; + } + + .users-list .db-box, + .users-list .dnsdomains-box{ + margin-top:35px; + } + + .username-box .prop-box{ + position:relative; + margin:0; + } + .user-details{ + font-size:12px; + } + .user-details .user-email{ + color:#777; + padding-right:5px; + } + .user-details .user-reports{ + color:#9c9c9c; + } + + .user-details .login-as{ + border-bottom: 1px solid #CBCBBF; + cursor: pointer; + padding-left: 0; + } + + .user-details-box .prop-box{ + margin:0 0 5px; + } + .user-details-box .user-name .prop-value, + .user-details-box .user-email{ + font-style:italic; + color:#706f6b; + } + +/* DB list +- - - - - - - - - - - - - - - - - - - */ +.db-list{} + + .db-list .row-details{ + padding-bottom:8px; + } + .db-list .db-devider{ + margin-top:25px; + position:relative; + display:block; + border-bottom:1px solid #e0e0e0; + } + .db-list .db-devider-title{ + display:block; + position:absolute; + top:-8px; + left:0; + width:100%; + } + .db-list .db-devider-outer{ + display:block; + position:absolute; + left:50%; + } + .db-list .db-devider-inner{ + background:#fff; + position:relative; + left:-50%; + padding:0 10px; + + font-size:11px; + font-weight:bold; + text-transform:uppercase; + color:#4097B3; + } + + .db-list .props-main{ + width:210px; + padding-right:10px; + } + .db-list .props-additional{ + width:340px; + padding-top:6px; + } + .db-list .props-ext{ + width:257px; + padding-top:6px; + } + .db-name{ + position:relative; + margin:0 0 6px; + padding:0 3px 0 0; + } + .db-name-box .db-name{ + font-size:20px; + font-family:Arial, Helvetica, sans-serif; + font-weight:normal; + font-style:normal; + line-height:27px; + } + .db-name:active{ + color:#9fb749; + } + .db-list .db-name{ + border-bottom:1px solid #fff; + } + + .db-list .ownership .prop-box{ + margin:5px 0 0; + } + .db-list .ownership .prop-value{ + padding:0; + font-size:11px; + font-style:italic; + } + .db-list .entry-created{ + padding:0; + } + .db-user-box{ + margin:0 0 10px; + } + .db-user-box .db-user{ + position:relative; + display:block; + float:left; + margin-right:25px; + padding-right:20px; + + font-size:12px; + line-height:1.25; /*15px*/ + font-style:italic; + color:#999; + } + .db-user-box .db-user:hover{ + color:#f00; + } + .db-user-box .change-pwd{ + position:relative; + top:1px; + display:inline-block; + border-bottom:1px solid #c9cabc; + text-transform:uppercase; + line-height:13px; + cursor:pointer; + visibility:hidden; + } + .add-db-user{ + border-bottom:1px solid #c9cabc; + text-transform:uppercase; + line-height:13px; + padding-left:10px; + background:url(../images/auth-plus.png) no-repeat 0 50%; + color:#555; + cursor:pointer; + } + .backup-db{ + float:left; + position:relative; + top:2px; + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + border-bottom:1px solid #cacbbd; + font-size:12px; + line-height:13px; + color:#777; + cursor:pointer; + } + .db-list .b-usage-box{ + float:right; + position:relative; + top:1px; + } + .db-list .b-usage-box .usage-box{ + width:auto; + } + .db-list .b-usage-box .value, + .db-list .b-usage-box .max-size{ + color:#797979; + } + .db-list .b-usage-box .value-box{ + width:60px; + margin-right:5px; + } + .db-list .b-usage-box .max-size{ + float:left; + } + .db-list .b-usage-box .max-size .units{ + color:#ABABAB; + } + +/* Backups list +- - - - - - - - - - - - - - - - - - - */ +.backups-list{} + + .backups-list .row{ + padding:25px 10px 15px; + } + .backups-list .ownership{ + padding:5px 0 0; + } + .backups-list .props-main{ + padding-top:5px; + } + .backups-list .props-main .prop-box{ + margin:0; + } + .backups-list .props-additional{ + width:165px; + padding:4px 0 0; + } + .backups-list .props-ext{ + width:165px; + padding:0; + } + .backups-list .entry-created{ + width:185px; + padding:0; + } + .backups-list .backup-date, + .backups-list .backup-weekday{ + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + } + .backups-list .backup-date .backup-day{ + display:block; + width:105px; + font-size:14px; + font-family:Arial,Helvetica,sans-serif; + font-weight:bold; + line-height:20px; + color:#47443f; + } + .backups-list .backup-weekday{ + padding-top:4px; + color:#408abb; + } + .backups-list .backup-time, + .backups-list .generation-time .prop-value{ + font-size:10px; + color:#999; + } + .backups-list .generation-time .prop-value{ + color:#9C9C9C; + } + + .backups-list .generation-time{ + padding-top:4px; + } + .backups-list .backup-size{ + display:-moz-inline-stack; + display:inline-block; + padding-right:12px; + + font-size:10px; + line-height:24px; + + background:url(../images/green-bracket-l.png) no-repeat 0 50%; + color:#595959; + } + .backups-list .backup-size-inner{ + display:-moz-inline-stack; + display:inline-block; + + padding:0 10px; + background:url(../images/green-bracket-r.png) no-repeat 100% 50%; + } + .backups-list .backup-url, + .backups-list .backup-actions{ + font-size:13px; + color:#999; + } + .backups-list .backup-actions{ + background:#ccc; + } + .backups-list .backup-actions-url{ + float:right; + display:-moz-inline-stack; + display:inline-block; + vertical-align:top; + + -webkit-border-radius:9px; + -moz-border-radius:9px; + border-radius:9px; + + border:2px solid #fff; + color:#999; + line-height:26px; + } + .backups-list .row a.backup-actions-url:hover{ + padding:0 12px; + + border-color:#c8c09c; + background-color:#feff99; + color:#444428; + font-size:14px; + font-family:Arial, Helvetica, sans-serif; + font-weight:bold; + cursor:pointer; + text-decoration:none; + text-transform:uppercase; + } + + .backups-list .detailed-restore-ext{ + display:none; + } + + .backups-list a.detailed-restore-url:hover .detailed-restore-title{ + text-transform:none; + } + .backups-list a.detailed-restore-url:hover .detailed-restore-ext{ + display:inline-block; + } + + .backups-list .restore-url{ + margin-left:10px; + color:#93b749; + } + + .backup-tree{ + padding-left:130px; + } + + .backup-tree .backup-tree-item{ + padding:0 0 7px 25px; + background:url(../images/backup-checkbox.png) no-repeat 0 .5em; + } + .backup-tree .unchecked{ + background:url(../images/backup-checkbox-unchecked.png) no-repeat 0 .5em; + } + .backup-tree .checked{ + background:url(../images/backup-checkbox-checked.png) no-repeat 0 .5em; + } + + .backup-tree .backup-sections, + .backup-tree .backup-sections .sub-tree{ + padding:10px 0 0 25px; + } + + .backup-tree .node-item{ + font-size:13px; + font-weight:bold; + padding-left:15px; + background:url(../images/backup-collapsed-ico.png) no-repeat 0 .3em; + border-bottom:1px dashed #cfd19f; + color:#5a6962; + cursor:pointer; + } + .backup-tree .node-item:hover{ + color:#ffcf0b; + } + + .backup-tree .expanded{ + background:url(../images/backup-expand-ico.png) no-repeat 0 .45em; + } + .backup-tree .backup-sections .sub-tree .node-item{ + font-style:italic; + color:#abad85; + padding:0; + background:none; + border:none; + } + .backup-tree .backup-sections .sub-tree .node-item:hover{ + color:#abad85; + } + + .backup-tree .backup-sections .sub-tree .checked .node-item{ + color:#5a6962; + font-style:normal; + } + +/* Highlighted backup row */ +.backup-details-row_highlighted, +.backups-list .backup-details-row_highlighted:hover{ + background:#666; + } + .backup-details-row_highlighted .notes-wrap{ + font-size:14px; + line-height:25px; + font-weight:bold; + text-transform:uppercase; + color:#bad23e; + text-align:center; + padding:0 0 10px; + } + .backup-details-row_highlighted .restore-ico{ + padding:4px 0 4px 30px; + line-height:25px; + background:url(../images/backup-restore-ico.png) no-repeat; + } + .backup-details-row_highlighted .backup-time{ + color:#fff; + } + .backup-details-row_highlighted .ownership .prop-value{ + color:#c8c8c8; + } + .backups-list .backup-details-row_highlighted .backup-day{ + color:#fff; + } + .backups-list .backup-details-row_highlighted .backup-size{ + color:#ccc; + } + .backups-list .backup-details-row_highlighted .backup-actions{ + display:none; + } + +/* row hover effect +- - - - - - - - - - - - - - - - - - - */ +.row:hover{ + background-color:#ffffcb; +} +.ip-list .row:hover .ip-adr, +.domains-list .row:hover .names .primary, +.dns-list .row:hover .names .primary, +.cron-list .row:hover .cron-command-line, +.users-list .row:hover .username-box .nickname, +.db-list .row:hover .db-name{ + border-bottom-style:dashed; + border-bottom-color:#e5e5e5; + border-bottom-color:#bbb; +} +.ip-list .row:hover .ip-adr:hover, +.domains-list .row:hover .names .primary:hover, +.dns-list .row:hover .names .primary:hover, +.cron-list .row:hover .cron-command-line:hover, +.users-list .row:hover .username-box .nickname:hover, +.db-list .row:hover .db-name:hover{ + cursor:pointer; + border-bottom-style:solid; + border-bottom-color:#b4c775; +} +.ip-list .ip-details-suspended:hover .ip-adr, +.ip-list .ip-details-suspended:hover .ip-adr:hover{ + border:none; + cursor:default; +} +.backups-list .row:hover .backup-actions-url{ + border-color:#ffffcb; +} + +.row:hover .ip-status-info{ + background:url(../images/enabled-ico_.png) no-repeat 100% 50%; +} +.row:hover .delete-entry, +.row:hover .db-user-box .db-user{ + background:url(../images/delete-ico-off.png) no-repeat 100% 4px; +} +.row:hover .ip-suspended-status{ + background:url(../images/suspended-ico.png) no-repeat 100% 65%; +} +.ip-status-info:hover .ip-status-text, +.delete-entry:hover .delete-entry-text, +.row:hover .db-user-box .change-pwd{ + visibility:visible; +} +.row .ip-status-info:hover{ + background-image:url(../images/enabled-ico-hover.png); +} +.row .ip-suspended-status:hover{ + background-image:url(../images/suspended-ico.png); +} +.row .delete-entry:hover, +.row .db-user-box .db-user:hover{ + background-image:url(../images/delete-ico.png); + cursor:pointer; +} +.row .delete-entry:active{ + background-image:url(../images/delete-ico-active.png); + cursor:pointer; +} +.delete-entry:hover .delete-entry-text{ + color:#333; +} +.delete-entry .delete-entry-text:hover{ + cursor:pointer; +} +.delete-entry .delete-entry-text:active{ + color:#f00; +} +.row:hover .show-records, +.row:hover .hide-records, +.row:hover .template-box .prop-value, +.domains-list .row:hover .stats-box .stats-auth-text, +.domains-list .row:hover .nginx-box .nginx-ext-list, +.row:hover .db-user-box .change-pwd, +.row:hover .add-db-user, +.row:hover .backup-db, +.row:hover .user-backups-box .prop-title{ + color:#6aa0ac; + border-bottom-color:#cacbbd; +} + +.row:hover .user-details .login-as{ + border-bottom: 1px solid #FF9591; + color: #FFCC00; +} + + +.row:hover .template-box .prop-value:hover, +.row:hover .show-records:hover, +.hide-records:hover, +.domains-list .row:hover .stats-box .stats-auth-text:hover, +.domains-list .row:hover .nginx-box .nginx-ext-list:hover, +.row .db-user-box .change-pwd:hover, +.row .add-db-user:hover, +.row .backup-db:hover, +.row .user-backups-box:hover .prop-title{ + color:#575757; + border-bottom-color:#b4c775; +} +.row .template-box .prop-value:active, +.row .show-records:active, +.hide-records:active, +.domains-list .row:hover .stats-box .stats-auth-text:active, +.domains-list .row:hover .nginx-box .nginx-ext-list:active, +.users-list .username-box .nickname:active, +.users-list .user-backups-box .prop-title:active, +.row .db-user-box .change-pwd:active, +.row .add-db-user:active, +.row .backup-db:active, +.row .user-backups-box .prop-title:active{ + color:#b4c775; +} + +/* Checked row +- - - - - - - - - - - - - - - - - - - */ +.checked-row{ + background-color:#e4f7bf; +} + .checked-row .row-actions-box .check-control{ + background-position:0 -30px; + } + + .domains-list .checked-row .names .primary, + .dns-list .checked-row .names .primary, + .cron-list .checked-row .cron-command-line, + .users-list .checked-row .username-box .nickname, + .db-list .checked-row .db-name{ + border-bottom:1px solid #e4f7bf; + } + +/* Suspended row +- - - - - - - - - - - - - - - - - - - */ +.ip-details-suspended, +.suspended-row{} + +.ip-details-suspended:hover, +.suspended-row:hover{ + background-color:#fff; +} + .ip-details-suspended .entry-created, + .suspended-row .entry-created, + .suspended-row .username-box .role{ + color:#ccc; + } + .ip-details-suspended .ip-adr, + .suspended-row .ip-adr, + .suspended-row .cron-command-line, + .suspended-row .username-box, + .suspended-row .username-box .nickname, + .suspended-row .user-name .prop-value, + .suspended-row .user-backups-box .prop-title, + .suspended-row .user-details .user-email, + .suspended-row .user-details .user-reports, + .suspended-row .template-box .prop-value, + .suspended-row .stats-box-title, + .suspended-row .stats-box .stats-auth, + .suspended-row .nginx-box .nginx-ext-list{ + color:#ccc; + border:none; + } + .ip-details-suspended:hover .ip-adr, + .suspended-row:hover .ip-adr, + .suspended-row:hover .names .primary, + .domains-list .suspended-row:hover .names .primary, + .dns-list .suspended-row:hover .names .primary, + .cron-list .suspended-row:hover .cron-command-line, + .users-list .suspended-row:hover .username-box .nickname, + .users-list .suspended-row:hover .user-backups-box .prop-title, + .suspended-row .stats-box .stats-auth-text{ + border:none; + } + .ip-details-suspended:hover .ip-adr:hover, + .suspended-row:hover .ip-adr:hover, + .cron-list .suspended-row:hover .cron-command-line:hover, + .users-list .suspended-row:hover .username-box .nickname:hover, + .users-list .suspended-row:hover .user-backups-box .prop-title:hover, + .cron-list .suspended-row:hover .cron-command-line{ + border:none; + cursor:default; + } + .users-list .suspended-row .username-box .nickname:active, + .users-list .suspended-row .user-backups-box .prop-title:active{ + color:#ccc; + } + +.ip-details-suspended .prop-title, +.ip-details-suspended .prop-value, +.suspended-row .prop-title, +.suspended-row .prop-value, +.suspended-row .b-usage-box .value, +.suspended-row .b-usage-box .max-size, +.suspended-row .b-usage-box .max-size .units, +.suspended-row .b-usage-box2 .value, +.suspended-row .b-usage-box2 .max-size, +.suspended-row .names .primary{ + color:#ccc; +} +.suspended-row .b-usage-box .bar, +.suspended-row .b-usage-box2 .graph .bar { + background-color:#ccc; +} +.suspended-row:hover .show-records, +.suspended-row:hover .hide-records, +.suspended-row:hover .template-box .prop-value, +.domains-list .suspended-row:hover .stats-box .stats-auth-text, +.domains-list .suspended-row:hover .nginx-box .nginx-ext-list, +.suspended-row:hover .user-backups-box .prop-title, +.suspended-row:hover .template-box .prop-value:hover, +.suspended-row:hover .show-records:hover, +.suspended-row .hide-records:hover, +.domains-list .suspended-row:hover .stats-box .stats-auth-text:hover, +.domains-list .suspended-row:hover .nginx-box .nginx-ext-list:hover{ + color:#ccc; + border:none; + cursor:default; +} +.suspended-row:hover .template-box .prop-value:active, +.suspended-row:hover .show-records:active, +.suspended-row .hide-records:active, +.domains-list .suspended-row:hover .stats-box .stats-auth-text:active, +.domains-list .suspended-row:hover .nginx-box .nginx-ext-list:active, +.users-list .suspended-row .username-box .nickname:active, +.users-list .suspended-row .user-backups-box .prop-title:active{ + color:#ccc; +} +.suspended-row .stats-box-title{ + background-image:url(../images/stats-curve-grey.png); +} + +.success-box { + color: #BBBF45; + font-size: 22px; + padding-left: 136px; + padding-bottom: 30px; +} + +.inactive-row { font-style: italic; opacity: 0.38; background: url('../images/bg_line.png');filter: alpha(opacity = 38); } +.form-suspended input[type="text"], .form-suspended input[type="checkbox"], .form-suspended .checkbox, .form-suspended select, .form-suspended textarea, .form-suspended .select { opacity: 0.38;filter: alpha(opacity = 38); } +.form-suspended .do_action_toggle_suspend {opacity: 1; filter: alpha(opacity = 100);} + + +.stats-block{ + background:#474338; + padding:10px; + width:600px; + margin:0 auto 10px; +} +.stats-block-header{ + color:#fc0; + font-size:12px; + font-weight:bold; + text-align:center; +} +.stats-block .stats-graph{ + display:block; + margin:0 auto; +} + +/* START: DEV!! */ +.stats-subbar span{ + cursor: pointer; + margin-left: 22px; + color: #5D5D5D; + border-bottom: 1px dotted #5D5D5D; + font-size: 11px; +} +.stats-subbar .sub-active{ + font-weight: bold; + color: #FF6766; + border-bottom: 0; +} +/* END: DEV */ diff --git a/web/js/actions.js b/web/js/actions.js index 5b748e70e..6c1867e73 100644 --- a/web/js/actions.js +++ b/web/js/actions.js @@ -366,14 +366,13 @@ App.Actions.save_form = function(evt) { if (!confirmed) { return true; } - else { - var values = App.Helpers.getFormValues(elm); - if(App.Validate.form(values, $('#'+elm_id))) { - App.Model.add(values, source); - var form_id = App.Constants[App.Env.world + '_FORM_ID']; - $('#'+form_id).remove(); - } - } + } + + var values = App.Helpers.getFormValues(elm); + if(App.Validate.form(values, $('#'+elm_id))) { + App.Model.add(values, source); + var form_id = App.Constants[App.Env.world + '_FORM_ID']; + $('#'+form_id).remove(); } } else { // OLD ITEM, UPDATING IT diff --git a/web/js/html.js b/web/js/html.js index dafd366da..496060408 100644 --- a/web/js/html.js +++ b/web/js/html.js @@ -95,6 +95,7 @@ App.HTML.Build.user_form = function (options, id) { tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); } options = !App.Helpers.isEmpty(options) ? options : App.Empty.USER; + if (in_edit == true) { options.PASSWORD = App.Settings.PASSWORD_IMMUTE; var ns = []; @@ -109,7 +110,7 @@ App.HTML.Build.user_form = function (options, id) { ns[ns.length++] = App.Templates.get('PLUS_ONE_NS', 'user').finalize(); tpl.set(':NS', ns.done()); } else { - tpl.set(':NS', ''); +// tpl.set(':NS', ''); } tpl = App.HTML.setTplKeys(tpl, options, true); tpl = App.HTML.Build.user_selects(tpl, options); @@ -146,6 +147,15 @@ App.HTML.Build.web_domain_form = function (options, id) { tpl.set(':title', 'Edit WEB domain'); tpl.set(':save_button', 'SAVE'); tpl.set(':DELETE_ACTION', App.Templates.get('DELETE_ACTION', 'general').finalize()); + + if(options.SSL_CRT == '' || options.SSL_KEY == ''){ + options.SSL = ''; + options.SSL_HOME = ''; + options.SSL_CRT = ''; + options.SSL_KEY = ''; + options.SSL_CA = ''; + } + if (options.SSL == 'on') { tpl.set(':ssl_checked', 'checked="checked"'); } @@ -167,7 +177,7 @@ App.HTML.Build.web_domain_form = function (options, id) { tpl = App.HTML.setTplKeys(tpl, options, true); tpl = App.HTML.Build.web_domain_selects(tpl, options); tpl = App.HTML.toggle_suspended_form(tpl, options); - if (options.CGI == 'yes') { + if (options.CGI == 'yes' || !in_edit) { tpl.set(':CHECKED_CGI', 'checked="checked"'); } if (options.ELOG == 'yes') { @@ -384,8 +394,11 @@ App.HTML.Build.web_domain_entry = function (o, key) { 'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.DISK_QUOTA), 'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.BANDWIDTH), 'BANDWIDTH': App.Helpers.getMbHuman(App.Env.initialParams.user_data.BANDWIDTH), - 'DISK_QUOTA': App.Helpers.getMbHuman(App.Env.initialParams.user_data.DISK_QUOTA) + 'DISK_QUOTA': App.Helpers.getMbHuman(App.Env.initialParams.user_data.DISK_QUOTA), + 'SSL': (o.SSL_CRT == '' || o.SSL_KEY == '' || o.SSL != 'on') ? 'off' : 'on' }; + + var o = $.extend(o, processed_data); o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE; o.U_DISK_PERCENTAGE_3 = o.U_DISK_PERCENTAGE; @@ -691,9 +704,11 @@ App.HTML.Build.dns_selects = function (tpl, options) { $.each(App.Env.initialParams.DNS.TPL, function (key) { obj[key] = key; }); - var opts = App.HTML.Build.options(obj, options.PACKAGE); + + var opts = App.HTML.Build.options(obj, options.TPL); tpl.set(':TPL', opts); - tpl.set(':TPL_DEFAULT_VALUE', options.TPL || App.Helpers.getFirstKey(obj)); +// tpl.set(':TPL_DEFAULT_VALUE', options.TPL || App.Helpers.getFirstKey(obj)); + } catch (e) { return tpl; } diff --git a/web/js/templates.js b/web/js/templates.js index 9359681f4..f48e17389 100644 --- a/web/js/templates.js +++ b/web/js/templates.js @@ -138,7 +138,7 @@ App.Templates.html = { \
\ \ - ~!:TPL_DEFAULT_VALUE~!\ + ~!:TPL_DEFAULT_VALUE~! t \ \ @@ -286,10 +286,10 @@ App.Templates.html = { \ \
\ -
\ + \
\ \ Cancel\ @@ -403,12 +403,12 @@ App.Templates.html = { ~!:PACKAGE_OPTIONS~!\ \
\ -
\ + \ \ \ email:\ \ @@ -716,7 +716,7 @@ App.Templates.html = {
\
\
\ - \ + \ \
\
\ @@ -846,7 +846,7 @@ App.Templates.html = { \
\
\ - \ + \ \
\
\ @@ -864,10 +864,10 @@ App.Templates.html = { \ \
\ -
\ + \
\ \ \ @@ -912,10 +912,10 @@ App.Templates.html = {
\
\ \ - \ + \ \
\
\ @@ -1075,13 +1075,13 @@ App.Templates.html = { download\
\
\ -
\ + \
\
\
'] diff --git a/web/vesta/api/CRON.class.php b/web/vesta/api/CRON.class.php index 327492f1e..94c2ed744 100644 --- a/web/vesta/api/CRON.class.php +++ b/web/vesta/api/CRON.class.php @@ -132,18 +132,20 @@ class CRON extends AjaxHandler $_new = $request->getParameter('new'); $result = array(); - if($_new['SUSPEND'] == 'on') { - $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_new['CMD'])); - return $this->reply($result['status']); - } - else { - $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_new['CMD'])); - } - if (!$result['status']) { - $this->status = FALSE; - $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); - } + $result = array(); + if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_old['JOB'])); + return $this->reply($result['status'], $result['error_message']); + } + elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, array('USER' => $user['uid'], 'JOB' => $_old['JOB'])); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); + return $this->reply($result['status'], $result['error_message']); + } + } $params = array( 'USER' => $user['uid'], diff --git a/web/vesta/api/DB.class.php b/web/vesta/api/DB.class.php index 6d50dca46..9c7967f17 100644 --- a/web/vesta/api/DB.class.php +++ b/web/vesta/api/DB.class.php @@ -38,6 +38,8 @@ class DB extends AjaxHandler 'TYPE' => $record['TYPE'], 'U_DISK' => $record['U_DISK'], 'DISK' => 2024, + 'ENCODING' => "utf-8",//$record['ENCODING'], + // 'ENCODING' => $record['ENCODING'], 'SUSPEND' => $record['SUSPEND'], 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) ); @@ -65,7 +67,9 @@ class DB extends AjaxHandler 'DB' => $_s['DB'], 'DB_USER' => $_s['USER'], 'DB_PASSWORD' => $_s['PASSWORD'], - 'TYPE' => $_s['TYPE'] + 'TYPE' => $_s['TYPE'], + 'HOST' => '' + // 'ENCODING' => $_s['ENCODING'] ); $result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params); @@ -74,7 +78,7 @@ class DB extends AjaxHandler $this->errors[] = array($result['error_code'] => $result['error_message']); } - if ($_s['SUSPEND'] == 'on') { + if (Utils::getCheckboxBooleanValue($_s['SUSPEND'])) { if($result['status']){ $result = array(); @@ -86,7 +90,6 @@ class DB extends AjaxHandler } } - return $this->reply($result['status'], $result['data']); } @@ -128,16 +131,19 @@ class DB extends AjaxHandler $user = $this->getLoggedUser(); $result = array(); - if($_new['SUSPEND'] == 'on'){ - $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB'])); - } - else{ - $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB'])); - } - if (!$result['status']) { - $this->status = FALSE; - $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); + $result = array(); + if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB'])); + return $this->reply($result['status'], $result['error_message']); + } + elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user['uid'], 'DB' => $_new['DB'])); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); + return $this->reply($result['status'], $result['error_message']); + } } if ($_new['PASSWORD'] != Vesta::SAME_PASSWORD && $_new['PASSWORD'] != $_old['PASSWORD']) { diff --git a/web/vesta/api/DNS.class.php b/web/vesta/api/DNS.class.php index 066523bf6..f8f205cc9 100644 --- a/web/vesta/api/DNS.class.php +++ b/web/vesta/api/DNS.class.php @@ -97,22 +97,13 @@ class DNS extends AjaxHandler $_s = $request->getParameter('spell'); $params = array( 'USER' => $user['uid'], /// OWNER ??? - 'DNS_DOMAIN' => $_s['DNS_DOMAIN'], - 'IP' => $_s['IP'] - ); - // TODO: rewrite this block. Get away from if/if/if/if - if ($_s['TPL']) { - $params['TPL'] = $_s['TPL']; - } - if ($_s['EXP']) { - $params['EXP'] = $_s['EXP']; - } - if ($_s['SOA']) { - $params['SOA'] = $_s['SOA']; - } - if ($_s['TTL']) { - $params['TTL'] = $_s['TTL']; - } + 'DNS_DOMAIN' => $_s['DNS_DOMAIN'], + 'IP' => $_s['IP'], + 'TPL' => $_s['TPL'], + 'EXP' => $_s['EXP'], + 'SOA' => $_s['SOA'], + 'TTL' => $_s['TTL'], + ); $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params); if (!$result['status']) { @@ -120,7 +111,7 @@ class DNS extends AjaxHandler } - if ($_s['SUSPEND'] == 'on') { + if (@Utils::getCheckboxBooleanValue($_s['SUSPEND'])) { if($result['status']){ $result = array(); @@ -242,19 +233,19 @@ class DNS extends AjaxHandler $_DNS_DOMAIN = $_old['DNS_DOMAIN']; $result = array(); - if($_new['SUSPEND'] == 'on'){ + if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){ $result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN)); - return $this->reply($result['status']); + return $this->reply($result['status'], $result['error_message']); } - else{ + elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){ $result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN)); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); + return $this->reply($result['status'], $result['error_message']); + } } - if (!$result['status']) { - $this->status = FALSE; - $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); - } - if ($_old['IP'] != $_new['IP']) { $result = array(); @@ -267,7 +258,7 @@ class DNS extends AjaxHandler if ($_old['TPL'] != $_new['TPL']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TPL'])); + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TPL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'TPL' => $_new['TPL'])); if (!$result['status']) { $this->status = FALSE; $this->errors['TPL'] = array($result['error_code'] => $result['error_message']); @@ -275,8 +266,9 @@ class DNS extends AjaxHandler } if ($_old['TTL'] != $_new['TTL']) { + echo 'changing ttl'; $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['TTL'])); + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'TTL' => $_new['TTL'])); if (!$result['status']) { $this->status = FALSE; $this->errors['TTL'] = array($result['error_code'] => $result['error_message']); @@ -285,7 +277,7 @@ class DNS extends AjaxHandler if ($_old['EXP'] != $_new['EXP']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_new['EXP'])); + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'EXP' => $_new['EXP'])); if (!$result['status']) { $this->status = FALSE; $this->errors['EXP'] = array($result['error_code'] => $result['error_message']); @@ -294,7 +286,7 @@ class DNS extends AjaxHandler if ($_old['SOA'] != $_new['SOA']) { $result = array(); - $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_new['SOA'])); + $result = Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'SOA' => $_new['SOA'])); if (!$result['status']) { $this->status = FALSE; $this->errors['SOA'] = array($result['error_code'] => $result['error_message']); @@ -307,13 +299,6 @@ class DNS extends AjaxHandler Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_TTL, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['TTL'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_EXP, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN, 'IP' => $_old['EXP'])); Vesta::execute(Vesta::V_CHANGE_DNS_DOMAIN_SOA, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_new['DNS_DOMAIN'], 'IP' => $_old['SOA'])); - - if($_old['SUSPEND'] == 'on'){ - $result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN)); - } - else{ - $result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN)); - } } return $this->reply($this->status, ''); @@ -432,7 +417,7 @@ class DNS extends AjaxHandler $_entities = $request->getParameter('entities'); foreach($_entities as $entity){ - $result = Vesta::execute(Vesta::V_UNUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], $entity['DNS_DOMAIN'])); + $result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], $entity['DNS_DOMAIN'])); } return $this->reply($result['status'], $result['data']); diff --git a/web/vesta/api/IP.class.php b/web/vesta/api/IP.class.php index 00e1bcd4b..bcd9902cf 100644 --- a/web/vesta/api/IP.class.php +++ b/web/vesta/api/IP.class.php @@ -19,6 +19,10 @@ class IP extends AjaxHandler */ public function getListExecute(Request $request) { + if(!VestaSession::getUserRole()){ + return self::getListUserIpsExecute($request); + } + $reply = array(); $result = Vesta::execute(Vesta::V_LIST_SYS_IPS, array(Config::get('response_type'))); foreach ($result['data'] as $ip => $details) { @@ -44,8 +48,10 @@ class IP extends AjaxHandler */ public function getListUserIpsExecute(Request $request) { + $user = $this->getLoggedUser(); + $reply = array(); - $result = Vesta::execute(Vesta::V_LIST_USER_IPS, array(Config::get('response_type'))); + $result = Vesta::execute(Vesta::V_LIST_USER_IPS, array($user['uid'], Config::get('response_type'))); foreach ($result['data'] as $ip => $details) { $reply[] = array_merge( array( diff --git a/web/vesta/api/MAIN.class.php b/web/vesta/api/MAIN.class.php index d221d9b0a..f069c1d15 100644 --- a/web/vesta/api/MAIN.class.php +++ b/web/vesta/api/MAIN.class.php @@ -218,7 +218,7 @@ MAIL; $disk_quota = $rs['data']; $reply = array( - 'auth_user' => array('uid' => $this->getLoggedUser()), + 'auth_user' => array('uid' => $this->getLoggedUser(), 'admin' => !!VestaSession::getUserRole()), 'user_data' => array('BANDWIDTH' => (int)$bandwidth, 'DISK_QUOTA' => (int)$disk_quota), 'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domain, $global_data), 'CRON' => $this->getCronParams(), @@ -372,7 +372,50 @@ MAIL; $db_types = $this->getDBTypes(); return array( 'TYPE' => $db_types, - 'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org') + 'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org'), + 'ENCODING' => array( + + 'utf8' => 'utf8', 'latin1' => 'latin1', 'cp1251' => 'cp1251', + + '' => '', + + 'big5' => 'Big5 — Traditional Chinese ', + 'dec8' => 'dec8 — DEC West European ', + 'cp850' => 'cp850 — DOS West European', + 'hp8' => 'hp8 — HP West European', + 'koi8r' => 'koi8r — KOI8-R Relcom Russian', + 'latin1' => 'latin1 — cp1252 West European', + 'latin2' => 'latin2 — ISO 8859-2 Central European', + 'swe7' => 'swe7 — 7bit Swedish', + 'ascii' => 'ascii — US ASCII', + 'ujis' => 'ujis — EUC-JP Japanese', + 'sjis' => 'sjis — Shift-JIS Japanese', + 'hebrew' => 'hebrew — ISO 8859-8 Hebrew', + 'tis620' => 'tis620 — TIS620 Thai', + 'euckr' => 'euckr — EUC-KR Korean', + 'koi8u' => 'koi8u — KOI8-U Ukrainian', + 'gb2312' => 'gb2312 — GB2312 Simplified Chinese', + 'greek' => 'greek — ISO 8859-7 Greek', + 'cp1250' => 'cp1250 — Windows Central European', + 'gbk' => 'gbk — GBK Simplified Chinese', + 'latin5' => 'latin5 — ISO 8859-9 Turkish', + 'armscii8' => 'armscii8— ARMSCII-8 Armenian', + 'utf8' => 'utf8 — UTF-8 Unicode', + 'ucs2' => 'ucs2 — UCS-2 Unicode', + 'cp866' => 'cp866 — DOS Russian', + 'keybcs2' => 'keybcs2 — DOS Kamenicky Czech-Slovak', + 'macce' => 'macce — Mac Central European', + 'macroman' => 'macroman— Mac West European', + 'cp853' => 'cp852 — DOS Central European', + 'latin7' => 'latin7 — ISO 8859-13 Baltic', + 'cp1251' => 'cp1251 — Windows Cyrillic', + 'cp1256' => 'cp1256 — Windows Arabic', + 'cp1257' => 'cp1257 — Windows Baltic', + 'binary' => 'binary — Binary pseudo charset', + 'geostd8' => 'geostd8 — GEOSTD8 Georgian', + 'cp932' => 'cp932 — SJIS for Windows Japanese', + 'eucjpms' => 'eucjpms — UJIS for Windows Japanese' + ) ); } diff --git a/web/vesta/api/USER.class.php b/web/vesta/api/USER.class.php index 6be4cf190..5b101bfb7 100644 --- a/web/vesta/api/USER.class.php +++ b/web/vesta/api/USER.class.php @@ -45,7 +45,6 @@ class USER extends AjaxHandler "DNS_DOMAINS" => $details['DNS_DOMAINS'], "DISK_QUOTA" => $details['DISK_QUOTA'], "BANDWIDTH" => $details['BANDWIDTH'], - // "NS" => $details['NS'], "SHELL" => $details['SHELL'], "BACKUPS" => $details['BACKUPS'], "WEB_TPL" => $details['WEB_TPL'], @@ -65,7 +64,8 @@ class USER extends AjaxHandler "U_MAIL_FORWARDERS" => '0', "U_MAIL_BOXES" => '0', "U_CRON_JOBS" => $details['U_CRON_JOBS'], - "IP_OWNED" => $details['IP_OWNED'] + "IP_OWNED" => $details['IP_OWNED'], + "NGINX_EXT" => $details['"NGINX_EXT'] ); $reply[$user] = array_merge($user_details, $nses); // $reply[$user] = $user_details; @@ -204,7 +204,22 @@ class USER extends AjaxHandler $_old = $request->getParameter('old'); $_USER = $_old['LOGIN_NAME']; - + + + $result = array(); + if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER)); + return $this->reply($result['status'], $result['error_message']); + } + elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER)); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); + return $this->reply($result['status'], $result['error_message']); + } + } + $reports_result = $this->setUserReports($_USER, $_new['REPORTS_ENABLED']); if (!empty($_new['PASSWORD']) && $_new['PASSWORD'] != Vesta::SAME_PASSWORD) { @@ -251,38 +266,12 @@ class USER extends AjaxHandler $this->errors['NAMES'] = array($result['error_code'] => $result['error_message']); } - - - if ($_old['SUSPEND'] != $_new['SUSPEND']) { - $result = array(); - if($_new['SUSPEND'] == 'on'){ - $result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER)); - } - else{ - $result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER)); - } - - if (!$result['status']) { - $this->status = FALSE; - $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); - } - } - if (!$this->status) { Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_CONTACT, array('USER' => $_USER, 'EMAIL' => $_old['EMAIL'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2'])); Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL'])); - - - if($_old['SUSPEND'] == 'on'){ - $result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER)); - } - else{ - $result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER)); - } - } return $this->reply($this->status, ''); diff --git a/web/vesta/api/WEB_DOMAIN.class.php b/web/vesta/api/WEB_DOMAIN.class.php index ca0e89424..4f593046b 100644 --- a/web/vesta/api/WEB_DOMAIN.class.php +++ b/web/vesta/api/WEB_DOMAIN.class.php @@ -37,13 +37,13 @@ class WEB_DOMAIN extends AjaxHandler 'STAT' => $record['STATS'], 'STATS_LOGIN' => $record['STATS_AUTH'], 'SSL' => $record['SSL'] == 'yes' ? 'on' : 'off', - 'SSL_HOME' => $record['SSL_HOME'] == 'tsingle' ? 'off' : 'on', + 'SSL_HOME' => $record['SSL_HOME'] == 'same' ? 'off' : 'on', 'SSL_CRT' => '', 'SSL_KEY' => '', 'SSL_CA' => '', 'NGINX' => $record['NGINX'], 'NGINX_EXT' => $record['NGINX_EXT'], - 'SUSPEND' => $record['SUSPEND'] == 'on' ? 'on' : 'off', + 'SUSPEND' => $record['SUSPEND'], // == 'yes' ? 'on' : 'off', 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) ); $web_details['STAT'] == '' ? $web_details['STAT'] = 'none' : true; @@ -85,6 +85,7 @@ class WEB_DOMAIN extends AjaxHandler if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); + return $this->reply($result['status'], $result['data']); } if (!empty($_s['TPL'])) { @@ -101,9 +102,9 @@ class WEB_DOMAIN extends AjaxHandler } } + if (!empty($_s['ALIAS'])) { - $alias = str_replace("\n", "", $_s['ALIAS']); - $alias = str_replace("\n", "", $alias); + $alias_arr = explode(',', str_replace("\n", "", $_s['ALIAS'])); foreach ($alias_arr as $alias) { $params = array( @@ -112,7 +113,6 @@ class WEB_DOMAIN extends AjaxHandler 'ALIAS' => trim($alias) ); $result = 0; - $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ALIAS, $params); if (!$result['status']) { @@ -121,7 +121,7 @@ class WEB_DOMAIN extends AjaxHandler } } - if (!empty($_s['STATS']) && @$_s['STATS'] != 'none') { + if (!empty($_s['STAT']) && @$_s['STAT'] != 'none') { $params = array( 'USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN'], @@ -148,21 +148,31 @@ class WEB_DOMAIN extends AjaxHandler $this->errors['STAT_AUTH'] = array($result['error_code'] => $result['error_message']); } - if (!empty($_new['CGI'])) { - if (Utils::getCheckboxBooleanValue($_new['CGI'])) { + if (!empty($_s['CGI'])) { + if (Utils::getCheckboxBooleanValue($_s['CGI'])) { + /* removed due to CGI is set by default at WEB DOMAIN creation $result = array(); - $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); + $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN'])); if (!$result['status']) { $this->status = FALSE; $this->errors['ADD_CGI'] = array($result['error_code'] => $result['error_message']); } + */ + } + else{ + $result = array(); + $result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN_CGI, array('USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN'])); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['DEL_CGI'] = array($result['error_code'] => $result['error_message']); + } } } - if (!empty($_new['ELOG'])) { - if (Utils::getCheckboxBooleanValue($_new['ELOG'])) { + if (!empty($_s['ELOG'])) { + if (Utils::getCheckboxBooleanValue($_s['ELOG'])) { $result = array(); - $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); + $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_ELOG, array('USER' => $user['uid'], 'DOMAIN' => $_s['DOMAIN'])); if (!$result['status']) { $this->status = FALSE; $this->errors['ADD_ELOG'] = array($result['error_code'] => $result['error_message']); @@ -170,16 +180,12 @@ class WEB_DOMAIN extends AjaxHandler } } - if (($_s['DNS_DOMAIN']) == 'on') { - echo 'adding dns domain'; - echo '
'; - - $params = array( - 'USER' => $user['uid'], - 'DNS_DOMAIN' => $_s['DOMAIN'], - 'IP' => $_s['IP'] - ); + if (Utils::getCheckboxBooleanValue($_s['DNS_DOMAIN'])) { + echo 'adding dns domain'; + echo '
'; + + /* require_once V_ROOT_DIR . 'api/DNS.class.php'; $dns = new DNS(); @@ -188,6 +194,36 @@ class WEB_DOMAIN extends AjaxHandler if (!$result['status']) { $this->errors['DNS_DOMAIN'] = array($result['error_code'] => $result['error_message']); } + */ + + + + $_GET['debug'] = 2; + $params = array( + 'USER' => $user['uid'], + 'DNS_DOMAIN' => $_s['DOMAIN'], + 'IP' => $_s['IP'] + ); + + $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params); + if (!$result['status']) { + $this->errors[] = array($result['error_code'] => $result['error_message']); + } + + + if (@Utils::getCheckboxBooleanValue($_s['SUSPEND'])) { + if($result['status']){ + $result = array(); + + $result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_s['DOMAIN'])); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['DNS_SUSPEND'] = array($result['error_code'] => $result['error_message']); + } + } + } + + } @@ -209,8 +245,41 @@ class WEB_DOMAIN extends AjaxHandler }*/ - - if ($_s['SUSPEND'] == 'on') { + + if (!empty($_s['SSL_KEY']) && !empty($_s['SSL_CRT']) && $_s['SSL'] == 'on' ) { + $ssl_dir = sys_get_temp_dir().'/'; + + $ssl_crt_file = $ssl_dir . $_s['DOMAIN'] . '.crt'; + file_put_contents($ssl_crt_file, $_s['SSL_CRT']); + + $ssl_key_file = $ssl_dir . $_s['DOMAIN'] . '.key'; + file_put_contents($ssl_key_file, $_s['SSL_KEY']); + + if (!empty($_s['SSL_CA'])) { + $ssl_ca_file = $ssl_dir . $_s['DOMAIN'] . '.ca'; + file_put_contents($ssl_ca_file, $_s['SSL_CA']); + } + + // $_GET['debug'] = 2; + $params = array( + 'USER' => $user['uid'], + 'DOMAIN' => $_s['DOMAIN'], + 'SSL_DIR' => $ssl_dir, + 'SSL_HOME' => $_s['SSL_HOME'] == 'on' ? 'single' : 'same' + ); + + $result = 0; + $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params); + if (!$result['status']) { + $this->errors['SSL'] = array($result['error_code'] => $result['error_message']); + } + + unlink($ssl_crt_file); + unlink($ssl_key_file); + unlink($ssl_ca_file); + } + + if (@Utils::getCheckboxBooleanValue($_s['SUSPEND'])) { if($result['status']){ $result = array(); @@ -222,6 +291,7 @@ class WEB_DOMAIN extends AjaxHandler } } + return $this->reply($result['status'], $result['data']); } @@ -267,39 +337,20 @@ class WEB_DOMAIN extends AjaxHandler $result['status'] = TRUE; - if ($_old['SUSPEND'] != $_new['SUSPEND']) { - if ($_new['SUSPEND'] == 'on') { - $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); - if (!$result['status']) { - $this->status = FALSE; - $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); - } - // return $this->reply($result['status']); - } - else { - $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); - if (!$result['status']) { - $this->status = FALSE; - $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); - } - } - if ($_new['SUSPEND'] == 'on') { - $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); - if (!$result['status']) { - $this->status = FALSE; - $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); - } - // return $this->reply($result['status']); - } - else { - $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); - if (!$result['status']) { - $this->status = FALSE; - $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); - } - } - } - + + if(@Utils::getCheckboxBooleanValue($_new['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); + return $this->reply($result['status'], $result['error_message']); + } + elseif(@Utils::getCheckboxBooleanValue($_old['SUSPEND'])){ + $result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN)); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']); + return $this->reply($result['status'], $result['error_message']); + } + } + if ($_old['IP'] != $_new['IP']) { $result = array(); $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_IP, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN, 'IP' => $_new['IP'])); @@ -437,7 +488,15 @@ class WEB_DOMAIN extends AjaxHandler } - if (( !empty($_new['SSL_KEY']) && !empty($_new['SSL_CRT']) && $_new['SSL'] == 'on') || $_old['SSL_HOME'] != $_new['SSL_HOME']) { + if ( ( $_old['SSL_KEY'] != $_new['SSL_KEY'] + || $_old['SSL_CRT'] != $_new['SSL_CRT'] + || $_old['SSL_CA'] != $_new['SSL_CA'] + || $_old['SSL_HOME'] != $_new['SSL_HOME'] + ) + && !empty($_new['SSL_KEY']) + && !empty($_new['SSL_CRT']) + && $_new['SSL'] == 'on' + ) { $ssl_dir = sys_get_temp_dir().'/'; $ssl_crt_file = $ssl_dir . $_new['DOMAIN'] . '.crt'; @@ -455,20 +514,39 @@ class WEB_DOMAIN extends AjaxHandler 'USER' => $user['uid'], 'DOMAIN' => $_DOMAIN, 'SSL_DIR' => $ssl_dir, - 'SSL_HOME' => $_new['SSL_HOME'] == 'on' ? 'shared' : 'single' + 'SSL_HOME' => $_new['SSL_HOME'] == 'on' ? 'single' : 'same' ); $result = 0; + + // updating ssl if($_old['SSL'] == 'on'){ $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSL, $params); + if (!$result['status']) { + $this->errors['SSL'] = array($result['error_code'] => $result['error_message']); + } + + // if ssl home dir changed, updating it + if($_old['SSL_HOME'] != $_new['SSL_HOME']){ + $params = array( + 'USER' => $user['uid'], + 'DOMAIN' => $_DOMAIN, + 'SSL_HOME' => $_new['SSL_HOME'] == 'on' ? 'single' : 'same' + ); + $result = Vesta::execute(Vesta::V_CHANGE_WEB_DOMAIN_SSLHOME, $params); + if (!$result['status']) { + $this->errors['SSL_HOME'] = array($result['error_code'] => $result['error_message']); + } + } } + // adding new ssl else{ $result = Vesta::execute(Vesta::V_ADD_WEB_DOMAIN_SSL, $params); + if (!$result['status']) { + $this->errors['SSL'] = array($result['error_code'] => $result['error_message']); + } } - if (!$result['status']) { - $this->errors['SSL'] = array($result['error_code'] => $result['error_message']); - } unlink($ssl_crt_file); unlink($ssl_key_file); diff --git a/web/vesta/core/Vesta.class.php b/web/vesta/core/Vesta.class.php index 455ebc9f2..6e4f19580 100644 --- a/web/vesta/core/Vesta.class.php +++ b/web/vesta/core/Vesta.class.php @@ -46,6 +46,7 @@ class Vesta const V_LIST_WEB_DOMAINS_PROXY = 'v_list_web_domains_proxy'; const V_LIST_WEB_DOMAINS_SSL = 'v_list_web_domains_ssl'; const V_LIST_WEB_DOMAINS_STATS = 'v_list_web_domains_stats'; + const V_LIST_WEB_DOMAIN_SSL = 'v_list_web_domain_ssl'; const V_LIST_WEB_TEMPLATES = 'v_list_web_templates'; const V_ADD_WEB_DOMAIN = 'v_add_web_domain'; const V_ADD_WEB_DOMAIN_ALIAS = 'v_add_web_domain_alias'; @@ -55,7 +56,7 @@ class Vesta const V_ADD_WEB_DOMAIN_ELOG = 'v_add_web_domain_elog'; const V_ADD_WEB_DOMAIN_CGI = 'v_add_web_domain_cgi'; const V_CHANGE_WEB_DOMAIN_IP = 'v_change_web_domain_ip'; - const V_CHANGE_WEB_DOMAIN_SSLCERT = 'v_change_web_domain_sslcert'; + const V_CHANGE_WEB_DOMAIN_SSL = 'v_change_web_domain_sslcert'; const V_CHANGE_WEB_DOMAIN_SSLHOME = 'v_change_web_domain_sslhome'; const V_CHANGE_WEB_DOMAIN_TPL = 'v_change_web_domain_tpl'; const V_DEL_WEB_DOMAIN_CGI = 'v_delete_web_domain_cgi'; diff --git a/web/vesta/core/utils/Utils.class.php b/web/vesta/core/utils/Utils.class.php index 956a1f102..71c5448fc 100644 --- a/web/vesta/core/utils/Utils.class.php +++ b/web/vesta/core/utils/Utils.class.php @@ -5,7 +5,7 @@ class Utils public static function getCheckboxBooleanValue($checkbox_value) { - return $checkbox_value == 'on' ? true : false; + return ($checkbox_value == 'on' || $checkbox_value == 'yes' || $checkbox_value === TRUE) ? true : false; } } From 3c81394a3ee646e918e16915a51c41fbfa0450d8 Mon Sep 17 00:00:00 2001 From: naumov-socolov Date: Tue, 17 Jan 2012 00:57:07 +0300 Subject: [PATCH 2/2] Pre release --- test/test_actions.sh | 48 +- web/css/main.css | 8 +- web/images/checkbox-selector.png | Bin 3000 -> 1156 bytes web/images/checkboxes.png | Bin 0 -> 5926 bytes web/images/chekbox-selector.png | Bin 1422 -> 3000 bytes web/images/fav.ico | Bin 1179 -> 3599 bytes web/images/form-checkboxes.png | Bin 0 -> 1188 bytes web/images/section-status-sprite-7.png | Bin 0 -> 993 bytes web/index.html | 45 +- web/js/__init__.js | 6 +- web/js/_settings.js | 11 +- web/js/actions.js | 2 +- web/js/html.js | 29 +- web/js/lib/custom-form-elements.js | 5 +- web/js/pages.js | 3 +- web/js/templates.js | 34 +- web/js/templates_admin.js | 1151 ++++++++++++++++++++++++ web/js/user_templates.js | 1151 ++++++++++++++++++++++++ web/vesta/api/DB.class.php | 7 +- web/vesta/api/DNS.class.php | 2 +- web/vesta/api/MAIN.class.php | 32 +- web/vesta/api/USER.class.php | 46 +- web/vesta/core/Vesta.class.php | 6 +- web/vesta/core/VestaSession.class.php | 16 +- web/vesta/upload.php | 8 +- 25 files changed, 2486 insertions(+), 124 deletions(-) create mode 100644 web/images/checkboxes.png create mode 100644 web/images/form-checkboxes.png create mode 100644 web/images/section-status-sprite-7.png create mode 100644 web/js/templates_admin.js create mode 100644 web/js/user_templates.js diff --git a/test/test_actions.sh b/test/test_actions.sh index 1e4396bdc..c57df4fb6 100755 --- a/test/test_actions.sh +++ b/test/test_actions.sh @@ -6,14 +6,14 @@ V_BIN="$VESTA/bin" V_TEST="$VESTA/test" # Define functions -tmp_user() { +random() { MATRIX='0123456789' - LENGTH=4 + LENGTH=$1 while [ ${n:=1} -le $LENGTH ]; do rand="$rand${MATRIX:$(($RANDOM%${#MATRIX})):1}" let n+=1 done - echo "tmp_$rand" + echo "$rand" } echo_result() { @@ -25,8 +25,8 @@ echo_result() { echo -n 'FAILED' echo -n ']' echo -ne '\r\n' - echo "$4" - echo "RETURN VALUE $2" + echo ">>> $4" + echo ">>> RETURN VALUE $2" cat $3 else echo -n ' OK ' @@ -36,54 +36,63 @@ echo_result() { } # Create random username -user=$(tmp_user) +user="tmp_$(random 4)" while [ ! -z "$(grep "^$user:" /etc/passwd)" ]; do - user=$(tmp_user) + user="tmp_$(random 4)" done # Create random tmpfile tmpfile=$(mktemp -p /tmp ) + # Add new user cmd="v_add_user $user $user $user@vestacp.com default Super Test" $cmd > $tmpfile 2>> $tmpfile echo_result "Adding new user $user" "$?" "$tmpfile" "$cmd" + # Change system shell cmd="v_change_user_shell $user bash" $cmd > $tmpfile 2>> $tmpfile echo_result "Changing system shell to /bin/bash" "$?" "$tmpfile" "$cmd" + # Change name servers cmd="v_change_user_ns $user ns0.com ns1.com ns2.com ns3.com" $cmd > $tmpfile 2>> $tmpfile echo_result "Changing nameservers" "$?" "$tmpfile" "$cmd" + # Add cron job cmd="v_add_cron_job $user 1 1 1 1 1 echo" $cmd > $tmpfile 2>> $tmpfile echo_result "Adding cron job" "$?" "$tmpfile" "$cmd" + # Suspend cron job cmd="v_suspend_cron_job $user 1" $cmd > $tmpfile 2>> $tmpfile echo_result "Suspending cron job" "$?" "$tmpfile" "$cmd" + # Unsuspend cron job cmd="v_unsuspend_cron_job $user 1" $cmd > $tmpfile 2>> $tmpfile echo_result "Unsuspending cron job" "$?" "$tmpfile" "$cmd" + # Delete cron job cmd="v_delete_cron_job $user 1" $cmd > $tmpfile 2>> $tmpfile echo_result "Deleting cron job" "$?" "$tmpfile" "$cmd" + # Add cron job cmd="v_add_cron_job $user 1 1 1 1 1 echo 1" $cmd > $tmpfile 2>> $tmpfile echo_result "Adding cron job" "$?" "$tmpfile" "$cmd" + # Add cron job cmd="v_add_cron_job $user 1 1 1 1 1 echo 1" $cmd > $tmpfile 2>> $tmpfile @@ -94,9 +103,28 @@ else fi echo_result "Dublicate cron job check" "$retval" "$tmpfile" "$cmd" -# Check ip -#cat /proc/net/dev|cut -f 1 -d :|tail -n1 -#v_add_sys_ip 192.168.11.11 255.255.255.255 venet0 ekho + +# List network interfaces +cmd="v_list_sys_interfaces plain" +interface=$($cmd 2> $tmpfile | head -n 1) +if [ -z "$interface" ]; then + echo_result "Listing network interfaces" "1" "$tmpfile" "$cmd" +else + echo_result "Listing network interfaces" "0" "$tmpfile" "$cmd" +fi + + +# Add new ip address +cmd="v_add_sys_ip 198.18.0.123 255.255.255.255 $interface $user" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Adding ip 198.18.0.123" "$?" "$tmpfile" "$cmd" + + +# Delete ip address +cmd="v_delete_sys_ip 198.18.0.123" +$cmd > $tmpfile 2>> $tmpfile +echo_result "Deleting ip 198.18.0.123" "$?" "$tmpfile" "$cmd" + # Delete new user cmd="v_delete_user $user" diff --git a/web/css/main.css b/web/css/main.css index 6f4f59435..1d209ea43 100644 --- a/web/css/main.css +++ b/web/css/main.css @@ -1584,10 +1584,14 @@ input::-moz-focus-inner{ background-color:#FFFFCB; } .b-new-entry select.styled{ - top:10px; + top:0; } .b-new-entry option{ - font:14px arial,sans-serif; + padding:5px 5px 5px 8px; + font-family:Arial, Helvetica, sans-serif; + font-size:14px; + font-weight:bold; + color:#555; } .b-new-entry .form-options-group{} diff --git a/web/images/checkbox-selector.png b/web/images/checkbox-selector.png index f2005fbf504213f1cfe7f851fc3aa45be540e810..698ac83bfa284df0994656c1072b263445dc9c38 100644 GIT binary patch literal 1156 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 diff --git a/web/images/fav.ico b/web/images/fav.ico index 7c26ae9dff9279abe5f7fffd2a833f99a72c018f..a1ef01996c2d643f3eab6a6601139100c0a9016b 100644 GIT binary patch delta 3580 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 C>b#2p diff --git a/web/images/form-checkboxes.png b/web/images/form-checkboxes.png new file mode 100644 index 0000000000000000000000000000000000000000..fadce3ead7bc58bf2e2c240c6c8676c34608cdcf GIT binary patch literal 1188 zcmaJ=TWAwm7#^E;iDDFd5v32qsC_b-OPZz`lh!1YYSe^m5^U89PG?S=v7I^N%&AH9 z;K~YupzJnUDg}jQA?(7&2Q`W}`s72PAUOL3`%$&=7-}it2 zfBrddP^1f`U@yvw1|Whm>;Ys{75hLE zi1N^(3h)zzja1TIs4KRMm!RqrEsQIt>X=Os{`Q-BCXIfi9uhND@|$$EJ=$1@DMI4B&=kbC*0(6JZ` z?*dc?A)Tk`Y&Pr4x?RxdqgkKNXK8Sp6C<4FkcPyZQ!_VI6$D^PhN2?{YNVwo_P{|D zps>?#DX99AtY$8j2^Wmci8{@?7%QbJFc$kcR8^PICQ5?uet#%zriXMuCxHnE4GCXd z?*=QB&W8;kB50%`9H>??k%0)B8K{%tl!xq8G#O^i1#~RNM>P|PngpUkfWmy2qR4!t zHN>_CBOcBdWLP%Bwz3=-@(Cf%9SlX9-7QtF0Hr|{XsF7SzjIq^a;-*CbsSj$hH@Cl z9R^g%g@k#fwikCzy+y8E+e>pzE{)C5*0uicnyW{+cdX@7)8fri+XD^vx`CV8^V>6s ze~5HqS2{93KYz7yJ9T}2W@g6k_fJnx*VWbGkL7Z?p`oEtsm#sIH8wUDi^YkFiSF)h zo6R;hHdZJUN~MzBZXX#L866$1udjDF98FD4!^6W^@KoESJeFug$#@EHYYk%U#V3;( zSBMJ1bZ+X!J@2Zc%*uvDc<$EZr^ly@N6#?~VS6xp`iU@HT77)CzGLh2JLu_nN9pX@ zSAVa)dgWyL;MCr~T6f+JKK$j)=Qct19qSxirqP=xvupCR1J^#4XUFkiIj|S>`P)=`;2`hZrRun z0~-_V&QdXSLkOlyER|5j(iKJ!LSjS;=QK$f2sha8J$>Kze(v3~N_lN@;no5GV6n8W zR{@yWWA=slS@!+uI2HPWGdE5sn@kT!-T&+6hTww#?uAMpwRv(T+KY17_#N_1zHHcFT2pchgoJ zZuK5qiB%@xVQRtH+wvnd*0`ar%IqX8aBv8rn;LgkRMV`$0tqop^C)Gb41yVv7v<$_ zHhTw3NJIjX1W`(fSyh%)gy86KEL-Sw)T&+_W`~|0x{RcLFR_aYVL5n_XOIDM=Nmg%Demgmpr;##5~H2qjUE1h7y` z!-nfSq#q5@rm2?vh+4jlOS;A}KJU7YigI!;zibrcq9Ti;A?6J^r(}#`UQ|#fyDW{l zIOUs~U@%0us VJy_sA)0Zxzf|60z5Av<2e*hy+JLdoZ literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html index febb71277..92b4a2f3e 100644 --- a/web/index.html +++ b/web/index.html @@ -82,7 +82,6 @@
User -  
0 users @@ -98,7 +97,6 @@
Web -  
0 web domains @@ -108,12 +106,24 @@
+
  • +
    +
    +
    + DNS +
    +
    + 0 dns domain(s) +
    +
    +
    + +
  • Mail -  
    0 mail domain(s) @@ -127,7 +137,6 @@
    DB -  
    0 databases @@ -137,44 +146,28 @@
  • -
  • +
  • - DNS -   + Cron
    - 0 dns domain(s) -
    -
    -
    - -
  • -
  • -
    -
    -
    - IP -   -
    -
    - 0 ip address(es) + 0 cron job(s) 0 suspended
  • -
  • +
  • - Cron -   + IP
    - 0 cron job(s) + 0 ip address(es) 0 suspended
    diff --git a/web/js/__init__.js b/web/js/__init__.js index a475c716c..0926352f8 100644 --- a/web/js/__init__.js +++ b/web/js/__init__.js @@ -11,9 +11,9 @@ $('document').ready(function() { App.Utils.detectBrowser(); App.Ref.init(); - App.Env.world = 'USER'; + //App.Env.world = 'USER'; // Disabled cookie tab restoring. Enable if needed - /*if ('undefined' != typeof App.Tmp.loadTAB) { + if ('undefined' != typeof App.Tmp.loadTAB) { App.Env.world = App.Tmp.loadTAB; } @@ -25,7 +25,7 @@ $('document').ready(function() { else { App.Env.world = App.Constants.TABS[0]; } - }*/ + } App.Pages.init(); App.Core.listen(); diff --git a/web/js/_settings.js b/web/js/_settings.js index 47e07e5c5..2c34671ac 100644 --- a/web/js/_settings.js +++ b/web/js/_settings.js @@ -59,11 +59,12 @@ App.Messages.get = function(key, plural) { } // Imutable -App.Settings.Imutable = {}; -App.Settings.Imutable.USER = ['LOGIN_NAME']; -App.Settings.Imutable.DB = ['DB', 'TYPE', 'USER']; -App.Settings.Imutable.DNS = ['DNS_DOMAIN']; -App.Settings.Imutable.IP = ['INTERFACE']; +App.Settings.Imutable = {}; +App.Settings.Imutable.USER = ['LOGIN_NAME']; +App.Settings.Imutable.WEB_DOMAIN = ['DOMAIN']; +App.Settings.Imutable.DB = ['DB', 'TYPE', 'USER', 'CHARSET', 'HOST']; +App.Settings.Imutable.DNS = ['DNS_DOMAIN']; +App.Settings.Imutable.IP = ['IP_ADDRESS', 'NETMASK', 'INTERFACE']; // Empty diff --git a/web/js/actions.js b/web/js/actions.js index 6c1867e73..dd5bbe4c7 100644 --- a/web/js/actions.js +++ b/web/js/actions.js @@ -87,7 +87,7 @@ App.Actions.update_cs_value = function(evt) if (App.Tmp[App.Env.world + '_selected_records'] > 0) { var confirm_message_key = App.Tmp[App.Env.world + '_selected_records'] == 1 ? 1 + ' record' : App.Tmp[App.Env.world + '_selected_records'] + ' records'; - var confirmed = confirm('This action will ' + val.toLowerCase() + ' ' + confirm_message_key + '. Do you want to proceede?'); + var confirmed = confirm('This action will ' + val.toLowerCase() + ' ' + confirm_message_key + '. Do you want to proceed?'); if (confirmed) { fb.log('mass_' + val); var func_name = val.toLowerCase(); diff --git a/web/js/html.js b/web/js/html.js index 496060408..f8c5d94d0 100644 --- a/web/js/html.js +++ b/web/js/html.js @@ -110,7 +110,7 @@ App.HTML.Build.user_form = function (options, id) { ns[ns.length++] = App.Templates.get('PLUS_ONE_NS', 'user').finalize(); tpl.set(':NS', ns.done()); } else { -// tpl.set(':NS', ''); + tpl.set(':NS', ''); } tpl = App.HTML.setTplKeys(tpl, options, true); tpl = App.HTML.Build.user_selects(tpl, options); @@ -664,27 +664,14 @@ App.HTML.Build.db_selects = function (tpl, options) { }); tpl.set(':TYPE_OPTIONS', acc.done()); - acc = []; - var items = App.Env.initialParams.DB.HOST; - $.each(items, function (val) { - var tpl = App.Templates.get('select_option', 'general'); - tpl.set(':VALUE', val); - tpl.set(':TEXT', items[val]); - tpl.set(':SELECTED', val == options.HOST ? 'selected="selected"' : ''); - acc[acc.length++] = tpl.finalize(); - }); - tpl.set(':HOST_OPTIONS', acc.done()); + var obj = App.Env.initialParams.DB.HOST; + var opts = App.HTML.Build.options(obj, options.HOST); + tpl.set(':HOST_OPTIONS', opts); - acc = []; - var items = App.Env.initialParams.DB.ENCODING; - $.each(items, function (val) { - var tpl = App.Templates.get('select_option', 'general'); - tpl.set(':VALUE', val); - tpl.set(':TEXT', items[val]); - tpl.set(':SELECTED', val == options.ENCODING ? 'selected="selected"' : ''); - acc[acc.length++] = tpl.finalize(); - }); - tpl.set(':ENCODING_OPTIONS', acc.done()); + + var obj = App.Env.initialParams.DB.CHARSET; + var opts = App.HTML.Build.options(obj, options.CHARSET); + tpl.set(':CHARSET_OPTIONS', opts); return tpl; } diff --git a/web/js/lib/custom-form-elements.js b/web/js/lib/custom-form-elements.js index a68126b19..95ec2b4f3 100644 --- a/web/js/lib/custom-form-elements.js +++ b/web/js/lib/custom-form-elements.js @@ -25,7 +25,7 @@ Visit http://ryanfait.com/ for more information. var checkboxHeight = "25"; var radioHeight = "25"; -var selectWidth = "210"; +var selectWidth = "230"; /* No need to change anything after this */ @@ -47,6 +47,9 @@ var Custom = { if ($(inputs[a]).attr('class').indexOf('do_action_toggle_batch_selector') != -1) { span[a].className += ' do_action_toggle_batch_selector'; // save toggle functionality } + if ($(inputs[a]).attr('class').indexOf('do_action_toggle_ssl_support') != -1) { + span[a].className += ' do_action_toggle_ssl_support'; // save toggle functionality + } if(inputs[a].checked == true) { diff --git a/web/js/pages.js b/web/js/pages.js index 381059d2f..1343e4496 100644 --- a/web/js/pages.js +++ b/web/js/pages.js @@ -70,7 +70,8 @@ App.Pages.USER.new_entry = function(evt) $(box).find('.suspended').addClass('hidden'); App.Ref.CONTENT.prepend($(box).html()); App.Helpers.updateScreen(); - $('#'+form_id).find('.ns-entry, .additional-ns-add').addClass('hidden'); + $('#'+form_id).find('.ns-entry, .additional-ns-add').addClass('hidden').find('.rule-required').removeClass('rule-required'); + $('#'+form_id).find('.shell-entry').addClass('hidden'); } App.Pages.WEB_DOMAIN.new_entry = function(evt) diff --git a/web/js/templates.js b/web/js/templates.js index f48e17389..c9a964ad5 100644 --- a/web/js/templates.js +++ b/web/js/templates.js @@ -144,14 +144,14 @@ App.Templates.html = { \ View template settings\
    \ -
    \ + \
    \ \ \ @@ -241,7 +241,7 @@ App.Templates.html = { \ \
    \ -
    \ + \
    '] }, ip: { @@ -403,12 +403,12 @@ App.Templates.html = { ~!:PACKAGE_OPTIONS~!\ \
  • \ - \ + \ \
    \ \ \ @@ -860,14 +860,14 @@ App.Templates.html = { Generate\
    \ \ - \ - \ + \ +
    \ + \ + \ +
    \
    \ \ \ @@ -912,10 +912,10 @@ App.Templates.html = {
    \
    \ \ - \ + \ + Character Set:\ + ~!:CHARSET~!\ + \ \
    \
    \ diff --git a/web/js/templates_admin.js b/web/js/templates_admin.js new file mode 100644 index 000000000..5a7f9a8a9 --- /dev/null +++ b/web/js/templates_admin.js @@ -0,0 +1,1151 @@ +App.Templates.html = { + help: { + DNS_form: ['

    Some Things You Just Can\'t Explain

    \ + A farmer was sitting in the neighborhood bar getting drunk. A man came in and asked the farmer, "Hey, why are you sitting here on this beautiful day, getting drunk?" The farmer shook his head and replied, "Some things you just can\'t explain."\ + "So what happened that\'s so horrible?" the man asked as he sat down next to the farmer.\ + "Well," the farmer said, "today I was sitting by my cow, milking her. Just as I got the bucket full, she lifted her left leg and kicked over the bucket."\ + "Okay," said the man, "but that\'s not so bad." "Some things you just can\'t explain," the farmer replied. "So what happened then?" the man asked. The farmer said, "I took her left leg and tied it to the post on the left."\ + "And then?"\ + "Well, I sat back down and continued to milk her. Just as I got the bucket full, she took her right leg and kicked over the bucket."\ + The man laughed and said, "Again?" The farmer replied, "Some things you just can\'t explain." "So, what did you do then?" the man asked.\ + "I took her right leg this time and tied it to the post on the right."\ + "And then?"\ + "Well, I sat back down and began milking her again. Just as I got the bucket full, the stupid cow knocked over the bucket with her tail."\ + "Hmmm," the man said and nodded his head. "Some things you just can\'t explain," the farmer said.\ + "So, what did you do?" the man asked.\ + "Well," the farmer said, "I didn\'t have anymore rope, so I took off my belt and tied her tail to the rafter. In that moment, my pants fell down and my wife walked in ... Some things you just can\'t explain."'] + }, + general: { + over_bar: [''], + loading: ['
    \ +
    \ +
    '], + popup: ['\ + '], + inner_popup: ['
    \ +
    \ + ×\ +
    ~!:POPUP_TITLE~!
    \ +
    \ + ~!:CONTENT~!\ +
    \ +
    \ +
    '], + select_option: [''], + error_elm: ['
    ~!:ERROR~!
    '], + SUSPENDED_TPL_NOT_SUSPENDED : ['enabled'], + SUSPENDED_TPL_SUSPENDED : ['suspended'] + }, + popup: { + error: ['

    Important: An Error Has Occured.


        Something went wrong and some of your actions can be not saved in system. Mostly, it happens when you have network connection errors.
    ,    However, please notify us about the situation. It would be helpfull if you will write us approximate time the error occured and last actions you were performing. You send your petition on this email: BLABLA,

    Sorry for inconvinience. (We recommend you to reload the page)
    '], + change_psw: [ + '
    \ +
    \ +
    \ + \ + ~!:VERSION~!\ +
    \ + ~!:PRODUCT_NAME~! \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + \ +
    \ + \ + \ +
    \ +
    \ +  \ +
    \ + \ +
    \ +
    \ +

    \ +
    \ +

    For questions please contact ~!:EMAIL~!

    \ +
    © ~!:YEAR~! Vesta Control Panel
    \ +
    \ +
    \ +
    \ +
    ' + ], + login: ['
    \ +
    \ +
    \ + \ + ~!:VERSION~!\ +
    \ + ~!:PRODUCT_NAME~! \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ +
    \ +

    forgot password?

    \ +
    \ +

    For questions please contact ~!:EMAIL~!

    \ +
    © ~!:YEAR~! Vesta Control Panel
    \ +
    \ +
    \ +
    \ +
    '] + }, + dates: { + 'lock_plan_date' : [''], + 'save_forecasted_date' : [''] + }, + dns: { + FORM: [ + '
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ + \ +
    \ +
    \ + \ +
    \ + \ +  \ +
    \ +
    \ +
    \ + \ + ~!:TPL_DEFAULT_VALUE~!\ + \ + View template settings\ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    ' + ], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ + ~!:DNS_DOMAIN~!\ +
    \ +
    Show records
    \ +
    \ +
    \ +
    \ + ~!:IP~!\ + \ + template:\ + \ + ~!:TPL~!\ + \ +
    \ +
    \ +
    \ + \ + ttl:\ + ~!:TTL~!\ + \ + \ + soa:\ + ~!:SOA~!\ + \ +
    \ +
    \ +
    '], + SUBFORM: ['
    \ +
    \ +
    Hide records
    \ +
    \ +
    \ +
    \ + \ + ~!:SUBRECORDS~!\ +
    \ + \ + Cancel\ + \ +
    \ +
    '], + SUBENTRY: ['
    \ + \ +
    \ + \ +
    \ + \ +
    in
    \ +
    \ +
    \ +
    \ + \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ +
    '] + }, + ip: { + FORM: ['\ +
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    \ + '], + DOT: ['.'], + ENTRY: ['\ +
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ + ~!:IP_ADDRESS~!\ +
    \ + \ + netmask:\ + ~!:NETMASK~!\ + \ + \ + interface:\ + ~!:INTERFACE~!\ + \ + \ + name:\ + ~!:NAME~!\ + \ +
    \ +
    \ + \ + owner:\ + ~!:OWNER~!\ + \ + \ + status:\ + ~!:STATUS~!\ + \ +
    \ +
    \ + \ + sys users:\ + ~!:U_SYS_USERS~!\ + \ + \ + web domains:\ + ~!:U_WEB_DOMAINS~!\ + \ +
    \ +
    \ +
    \ + '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + SUSPENDED_TPL_ENABLED : ['enabled\ + delete'], + SUSPENDED_TPL_DISABLED : ['suspended'] + }, + + + user: { + WEB_TPL_MINIMIZED: ['~!:WEB_TPL_MINI~!\ + \ + ~!:MORE_NUMBER~! more\ + '], + WEB_TPL: ['~!:NAME~!'], + NS_MINIMIZED: ['~!:NS_MINI~!\ + \ + ~!:MORE_NUMBER~! more\ + '], + NS_RECORD: ['~!:NAME~!'], + NS_INPUT: ['
    \ + \ + \ + \ +
    '], + PLUS_ONE_NS: [''], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + Generate\ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + ~!:NS~!\ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ +
    \ + \ + ~!:LOGIN_NAME~!\ + \ + \ + \ + package:\ + ~!:PACKAGE~!\ + \ +
    \ +
    \ + \ + \ + \ + \ + name:\ + ~!:FULLNAME~!\ + \ + \ + email:\ + \ + ~!:CONTACT~!\ + (reports ~!:REPORTS_ENABLED~!)\ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    stats
    \ + \ +
    \ + disk usage:\ +
    \ +
    \ +
    \ + ~!:U_DISK_PERCENTAGE~!% (~!:U_DISK~! ~!:DISK_QUOTA_MEASURE~!)\ + \ + ~!:OVER_BAR~!\ +
    \ +
    \ +
    ~!:DISK_QUOTA~! ~!:DISK_QUOTA_MEASURE_2~!
    \ +
    \ +
    \ +
    \ + \ +
    \ + bandwidth:\ +
    \ +
    \ +
    \ + ~!:U_BANDWIDTH_PERCENTAGE~!% (~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)\ + \ + ~!:OVER_BAR_2~!\ +
    \ +
    \ +
    ~!:BANDWIDTH~! ~!:BANDWIDTH_MEASURE_2~!
    \ +
    \ +
    \ +
    \ +
    \ + \ + web ssl:\ + ~!:U_WEB_SSL~! (~!:WEB_SSL~!)\ + \ + \ + web alias:\ + ~!:WEB_ALIASES~! per domain\ + \ + \ + web templates:\ + \ + ~!:WEB_TPL~!\ + \ + \ + \ + databases:\ + ~!:U_DATABASES~! (~!:DATABASES~!)\ + \ + \ + shell:\ + ~!:SHELL~!\ + \ + \ + backups:\ + retention ~!:BACKUPS~!\ + \ +
    \ +
    \ + \ + mailboxes:\ + ~!:U_MAIL_BOXES~! (~!:MAIL_BOXES~!)\ + \ + \ + mail forwarders:\ + ~!:U_MAIL_FORWARDERS~! (~!:MAIL_FORWARDERS~!)\ + \ + \ + mail domains:\ + ~!:U_MAIL_DOMAINS~! (~!:MAIL_DOMAINS~!)\ + \ + \ + web domains:\ + ~!:U_WEB_DOMAINS~! (~!:WEB_DOMAINS~!)\ + \ + \ + dns domains:\ + ~!:U_DNS_DOMAINS~! (~!:DNS_DOMAINS~!)\ + \ + \ + ns list:\ + \ + ~!:NS~!\ + \ +
    \ +
    \ +
    '] + }, + web_domain: { + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ + ~!:DOMAIN~!\ + Alias:\ + ~!:ALIAS~!\ +
    \ +
    \ +
    \ + ~!:IP~!\ + \ + template:\ + ~!:TPL~!\ + \ +
    \ +
    \ +
    stats
    \ + \ +
    \ + disk usage:\ +
    \ +
    \ +
    \ + ~!:U_DISK_PERCENTAGE~!% (~!:U_DISK~! ~!:DISK_QUOTA_MEASURE~!)\ + \ + ~!:OVER_BAR~!\ +
    \ +
    \ +
    ~!:DISK_QUOTA~! ~!:DISK_QUOTA_MEASURE_2~!
    \ +
    \ +
    \ +
    \ + \ +
    \ + bandwidth:\ +
    \ +
    \ +
    \ + ~!:U_BANDWIDTH_PERCENTAGE~!% (~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)\ + \ + ~!:OVER_BAR_2~!\ +
    \ +
    \ +
    ~!:BANDWIDTH~! ~!:BANDWIDTH_MEASURE_2~!
    \ +
    \ +
    \ +
    \ +
    \ + \ + php:\ + ~!:PHP~!\ + \ + \ + cgi:\ + ~!:CGI~!\ + \ + \ + elog:\ + ~!:ELOG~!\ + \ + \ + stats:\ + ~!:STAT~!\ + \ + ~!:STATS_AUTH~!\ + \ + \ +
    \ +
    \ + \ + ssl:\ + ~!:SSL~!\ + \ + \ + nginx:\ + ~!:NGINX~!\ + extension list\ + \ +
    \ +
    \ +
    '] + }, + db: { + USER_ITEMS_WRAPPER: ['
    ~!:CONTENT~!
    '], + USER_ITEM: ['\ + ~!:NAME~!\ + \ + change password'], + DIVIDER: ['
    \ + \ + \ + ~!:TYPE~!\ + \ + \ +
    '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + Generate\ +
    \ +
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    \ + \ + ~!:OWNER~!\ + \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ + ~!:DB~!\ +
    \ +
    \ + \ +
    \ + backup\ + \ +
    \ +
    \ +
    \ + ~!:U_DISK~! Mb\ +
    \ + \ +
    \ +
    \ +
    ~!:DISK~! ~!:DISK_MEASURE~!
    \ +
    \ +
    \ +
    \ +
    \ +
    '] + }, + cron: { + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + Schedule Time:\ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ + \ + min\ + ~!:MIN~!\ + \ + \ + hour\ + ~!:HOUR~!\ + \ + \ + day of Month\ + ~!:DAY~!\ + \ + \ + Month\ + ~!:MONTH~!\ + \ + \ + day of Week\ + ~!:WDAY~!\ + \ +
    \ +
    \ + ~!:CMD~!\ +
    \ + \ +
    \ +
    '] + }, + backup: { + WRAPPER: ['
    ~!:CONTENT~!
    '], + ENTRY: ['
    \ + \ +
    \ +
    \ +
    \ + \ + owner:\ + ~!:OWNER~!\ + \ +
    \ +
    \ +
    \ +
    \ + \ + \ + ~!:CREATED_AT~!\ + ~!:CREATED_AT_TIME~!\ + \ + ~!:CREATED_AT_WDAY~!\ + \ + \ + Generation time:\ + ~!:GENERATION_TIME~!\ + \ +
    \ +
    \ + \ + ~!:SIZE~!\ + \ + download\ +
    \ + \ +
    \ +
    '] + }, + stats: { + WRAPPER: ['
    ~!:CONTENT~!
    '], + ENTRY: ['
    \ +

    ~!:HEADER~!

    \ +
    \ + \ +
    \ +
    '], + SUBMENU: ['today\ + week\ + month\ + year
    '] + } +} + + +// Internals +var Tpl = App.Templates; +var Templator = function() +{ + var init = function() { + fb.info('Templator work'); + Templator.splitThemAll(); + Templator.freezeTplIndexes(); + }; + + /** + * Split the tpl strings into arrays + */ + Templator.splitThemAll = function() + { + fb.info('splitting tpls'); + $.each(App.Templates.html, function(o) { + var tpls = App.Templates.html[o]; + $.each(tpls, function(t) { + tpls[t] = tpls[t][0].split('~!'); + }); + }); + }, + + /** + * Iterates tpls + */ + Templator.freezeTplIndexes = function() + { + fb.info('freezing tpl keys'); + $.each(App.Templates.html, Templator.cacheTplIndexes); + }, + + /** + * Grab the tpl group key and process it + */ + Templator.cacheTplIndexes = function(key) + { + var tpls = App.Templates.html[key]; + $.each(tpls, function(o) { + var tpl = tpls[o]; + Templator.catchIndex(key, o, tpl); + }); + }, + + /** + * Set the indexes + */ + Templator.catchIndex = function(key, ref_key, tpl) + { + 'undefined' == typeof App.Templates._indexes[key] ? App.Templates._indexes[key] = {} : false; + 'undefined' == typeof App.Templates._indexes[key][ref_key] ? App.Templates._indexes[key][ref_key] = {} : false; + $(tpl).each(function(index, o) { + if(':' == o.charAt(0)){ + App.Templates._indexes[key][ref_key][o.toString()] = index; + } + }); + } + + /** + * Get concrete templates + */ + init(); + return Templator; +}; +Templator.getTemplate = function(ns, key) +{ + return [ + App.Templates._indexes[ns][key], + App.Templates.html[ns][key].slice(0) + ]; +} +// init templator +Tpl.Templator = Templator(); +Tpl.get = function(key, group) +{ + return Tpl.Templator.getTemplate(group, key); +} diff --git a/web/js/user_templates.js b/web/js/user_templates.js new file mode 100644 index 000000000..beefbc05d --- /dev/null +++ b/web/js/user_templates.js @@ -0,0 +1,1151 @@ +alert('User templates loaded'); +App.Templates.html = { + help: { + DNS_form: ['

    Some Things You Just Can\'t Explain

    \ + A farmer was sitting in the neighborhood bar getting drunk. A man came in and asked the farmer, "Hey, why are you sitting here on this beautiful day, getting drunk?" The farmer shook his head and replied, "Some things you just can\'t explain."\ + "So what happened that\'s so horrible?" the man asked as he sat down next to the farmer.\ + "Well," the farmer said, "today I was sitting by my cow, milking her. Just as I got the bucket full, she lifted her left leg and kicked over the bucket."\ + "Okay," said the man, "but that\'s not so bad." "Some things you just can\'t explain," the farmer replied. "So what happened then?" the man asked. The farmer said, "I took her left leg and tied it to the post on the left."\ + "And then?"\ + "Well, I sat back down and continued to milk her. Just as I got the bucket full, she took her right leg and kicked over the bucket."\ + The man laughed and said, "Again?" The farmer replied, "Some things you just can\'t explain." "So, what did you do then?" the man asked.\ + "I took her right leg this time and tied it to the post on the right."\ + "And then?"\ + "Well, I sat back down and began milking her again. Just as I got the bucket full, the stupid cow knocked over the bucket with her tail."\ + "Hmmm," the man said and nodded his head. "Some things you just can\'t explain," the farmer said.\ + "So, what did you do?" the man asked.\ + "Well," the farmer said, "I didn\'t have anymore rope, so I took off my belt and tied her tail to the rafter. In that moment, my pants fell down and my wife walked in ... Some things you just can\'t explain."'] + }, + general: { + logged_as: ['
    You (~!:YOU_ARE~!) are viewing ~!:USER~! interface. Exit it to return to your own.
    '], + over_bar: [''], + loading: ['
    \ +
    \ +
    '], + popup: ['\ + '], + inner_popup: ['
    \ +
    \ + ×\ +
    ~!:POPUP_TITLE~!
    \ +
    \ + ~!:CONTENT~!\ +
    \ +
    \ +
    '], + select_option: [''], + error_elm: ['
    ~!:ERROR~!
    '], + SUSPENDED_TPL_NOT_SUSPENDED : ['enabled'], + SUSPENDED_TPL_SUSPENDED : ['suspended'] + }, + popup: { + error: ['

    Important: An Error Has Occured.


        Something went wrong and some of your actions can be not saved in system. Mostly, it happens when you have network connection errors.
    ,    However, please notify us about the situation. It would be helpfull if you will write us approximate time the error occured and last actions you were performing. You send your petition on this email: BLABLA,

    Sorry for inconvinience. (We recommend you to reload the page)
    '], + change_psw: [ + '
    \ +
    \ +
    \ + \ + ~!:VERSION~!\ +
    \ + ~!:PRODUCT_NAME~! \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + \ +
    \ + \ + \ +
    \ +
    \ +  \ +
    \ + \ +
    \ +
    \ +

    \ +
    \ +

    For questions please contact ~!:EMAIL~!

    \ +
    © ~!:YEAR~! Vesta Control Panel
    \ +
    \ +
    \ +
    \ +
    ' + ], + login: ['
    \ +
    \ +
    \ + \ + ~!:VERSION~!\ +
    \ + ~!:PRODUCT_NAME~! \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ +
    \ +

    forgot password?

    \ +
    \ +

    For questions please contact ~!:EMAIL~!

    \ +
    © ~!:YEAR~! Vesta Control Panel
    \ +
    \ +
    \ +
    \ +
    '] + }, + dates: { + 'lock_plan_date' : [''], + 'save_forecasted_date' : [''] + }, + dns: { + FORM: [ + '
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ + \ +
    \ +
    \ + \ +
    \ + \ +  \ +
    \ +
    \ +
    \ + \ + ~!:TPL_DEFAULT_VALUE~!\ + \ + View template settings\ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    ' + ], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ + ~!:DNS_DOMAIN~!\ +
    \ +
    Show records
    \ +
    \ +
    \ +
    \ + ~!:IP~!\ + \ + template:\ + \ + ~!:TPL~!\ + \ +
    \ +
    \ +
    \ + \ + ttl:\ + ~!:TTL~!\ + \ + \ + soa:\ + ~!:SOA~!\ + \ +
    \ +
    \ +
    '], + SUBFORM: ['
    \ +
    \ +
    Hide records
    \ +
    \ +
    \ +
    \ + \ + ~!:SUBRECORDS~!\ +
    \ + \ + Cancel\ + \ +
    \ +
    '], + SUBENTRY: ['
    \ + \ +
    \ + \ +
    \ + \ +
    in
    \ +
    \ +
    \ +
    \ + \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ +
    '] + }, + ip: { + FORM: ['\ +
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    \ + '], + DOT: ['.'], + ENTRY: ['\ +
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ + ~!:IP_ADDRESS~!\ +
    \ + \ + netmask:\ + ~!:NETMASK~!\ + \ + \ + interface:\ + ~!:INTERFACE~!\ + \ + \ + name:\ + ~!:NAME~!\ + \ +
    \ +
    \ + \ + owner:\ + ~!:OWNER~!\ + \ + \ + status:\ + ~!:STATUS~!\ + \ +
    \ +
    \ + \ + sys users:\ + ~!:U_SYS_USERS~!\ + \ + \ + web domains:\ + ~!:U_WEB_DOMAINS~!\ + \ +
    \ +
    \ +
    \ + '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + SUSPENDED_TPL_ENABLED : ['enabled\ + delete'], + SUSPENDED_TPL_DISABLED : ['suspended'] + }, + + + user: { + WEB_TPL_MINIMIZED: ['~!:WEB_TPL_MINI~!\ + \ + ~!:MORE_NUMBER~! more\ + '], + WEB_TPL: ['~!:NAME~!'], + NS_MINIMIZED: ['~!:NS_MINI~!\ + \ + ~!:MORE_NUMBER~! more\ + '], + NS_RECORD: ['~!:NAME~!'], + NS_INPUT: ['
    \ + \ + \ + \ +
    '], + PLUS_ONE_NS: [''], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + Generate\ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + ~!:NS~!\ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ +
    \ + \ + ~!:LOGIN_NAME~!\ + \ + \ + \ + package:\ + ~!:PACKAGE~!\ + \ +
    \ +
    \ + \ + name:\ + ~!:FULLNAME~!\ + \ + \ + email:\ + \ + ~!:CONTACT~!\ + (reports ~!:REPORTS_ENABLED~!)\ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    stats
    \ + \ +
    \ + disk usage:\ +
    \ +
    \ +
    \ + ~!:U_DISK_PERCENTAGE~!% (~!:U_DISK~! ~!:DISK_QUOTA_MEASURE~!)\ + \ + ~!:OVER_BAR~!\ +
    \ +
    \ +
    ~!:DISK_QUOTA~! ~!:DISK_QUOTA_MEASURE_2~!
    \ +
    \ +
    \ +
    \ + \ +
    \ + bandwidth:\ +
    \ +
    \ +
    \ + ~!:U_BANDWIDTH_PERCENTAGE~!% (~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)\ + \ + ~!:OVER_BAR_2~!\ +
    \ +
    \ +
    ~!:BANDWIDTH~! ~!:BANDWIDTH_MEASURE_2~!
    \ +
    \ +
    \ + \ +
    \ +
    \ + \ + web ssl:\ + ~!:U_WEB_SSL~! (~!:WEB_SSL~!)\ + \ + \ + web alias:\ + ~!:WEB_ALIASES~! per domain\ + \ + \ + web templates:\ + \ + ~!:WEB_TPL~!\ + \ + \ + \ + databases:\ + ~!:U_DATABASES~! (~!:DATABASES~!)\ + \ + \ + shell:\ + ~!:SHELL~!\ + \ + \ + backups:\ + retention ~!:BACKUPS~!\ + \ +
    \ +
    \ + \ + mailboxes:\ + ~!:U_MAIL_BOXES~! (~!:MAIL_BOXES~!)\ + \ + \ + mail forwarders:\ + ~!:U_MAIL_FORWARDERS~! (~!:MAIL_FORWARDERS~!)\ + \ + \ + mail domains:\ + ~!:U_MAIL_DOMAINS~! (~!:MAIL_DOMAINS~!)\ + \ + \ + web domains:\ + ~!:U_WEB_DOMAINS~! (~!:WEB_DOMAINS~!)\ + \ + \ + dns domains:\ + ~!:U_DNS_DOMAINS~! (~!:DNS_DOMAINS~!)\ + \ + \ + ns list:\ + \ + ~!:NS~!\ + \ +
    \ +
    \ +
    '] + }, + web_domain: { + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ + ~!:DOMAIN~!\ + Alias:\ + ~!:ALIAS~!\ +
    \ +
    \ +
    \ + ~!:IP~!\ + \ + template:\ + ~!:TPL~!\ + \ +
    \ +
    \ +
    stats
    \ + \ +
    \ + disk usage:\ +
    \ +
    \ +
    \ + ~!:U_DISK_PERCENTAGE~!% (~!:U_DISK~! ~!:DISK_QUOTA_MEASURE~!)\ + \ + ~!:OVER_BAR~!\ +
    \ +
    \ +
    ~!:DISK_QUOTA~! ~!:DISK_QUOTA_MEASURE_2~!
    \ +
    \ +
    \ +
    \ + \ +
    \ + bandwidth:\ +
    \ +
    \ +
    \ + ~!:U_BANDWIDTH_PERCENTAGE~!% (~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)\ + \ + ~!:OVER_BAR_2~!\ +
    \ +
    \ +
    ~!:BANDWIDTH~! ~!:BANDWIDTH_MEASURE_2~!
    \ +
    \ +
    \ +
    \ +
    \ + \ + php:\ + ~!:PHP~!\ + \ + \ + cgi:\ + ~!:CGI~!\ + \ + \ + elog:\ + ~!:ELOG~!\ + \ + \ + stats:\ + ~!:STAT~!\ + \ + ~!:STATS_AUTH~!\ + \ + \ +
    \ +
    \ + \ + ssl:\ + ~!:SSL~!\ + \ + \ + nginx:\ + ~!:NGINX~!\ + extension list\ + \ +
    \ +
    \ +
    '] + }, + db: { + USER_ITEMS_WRAPPER: ['
    ~!:CONTENT~!
    '], + USER_ITEM: ['\ + ~!:NAME~!\ + \ + change password'], + DIVIDER: ['
    \ + \ + \ + ~!:TYPE~!\ + \ + \ +
    '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + \ +
    \ +
    \ +
    \ + \ + \ +
    \ +
    \ + \ + \ + Generate\ +
    \ +
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    \ + \ + ~!:OWNER~!\ + \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ +
    \ + ~!:DB~!\ +
    \ +
    \ + \ +
    \ + backup\ + \ +
    \ +
    \ +
    \ + ~!:U_DISK~! Mb\ +
    \ + \ +
    \ +
    \ +
    ~!:DISK~! ~!:DISK_MEASURE~!
    \ +
    \ +
    \ +
    \ +
    \ +
    '] + }, + cron: { + FORM: ['
    \ + \ + \ +
    ~!:title~!
    \ + \ +
    \ + Schedule Time:\ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ + \ +
    \ + \ +
    \ +
    \ +
    \ +
    \ + \ + \ +
    \ + \ +
    \ + \ + \ +
    \ +
    \ + \ + Cancel\ + Delete\ +
    \ +
    '], + ENTRIES_WRAPPER: ['
    ~!:content~!
    '], + ENTRY: ['
    \ + \ + \ +
    \ +
    \ +
    \ + ~!:SUSPENDED_TPL~!\ +
    \ +
    \ +
    \ +
    ~!:DATE~!
    \ +
    \ +
    \ +
    \ + \ + min\ + ~!:MIN~!\ + \ + \ + hour\ + ~!:HOUR~!\ + \ + \ + day of Month\ + ~!:DAY~!\ + \ + \ + Month\ + ~!:MONTH~!\ + \ + \ + day of Week\ + ~!:WDAY~!\ + \ +
    \ +
    \ + ~!:CMD~!\ +
    \ + \ +
    \ +
    '] + }, + backup: { + WRAPPER: ['
    ~!:CONTENT~!
    '], + ENTRY: ['
    \ + \ +
    \ +
    \ +
    \ + \ + owner:\ + ~!:OWNER~!\ + \ +
    \ +
    \ +
    \ +
    \ + \ + \ + ~!:CREATED_AT~!\ + ~!:CREATED_AT_TIME~!\ + \ + ~!:CREATED_AT_WDAY~!\ + \ + \ + Generation time:\ + ~!:GENERATION_TIME~!\ + \ +
    \ +
    \ + \ + ~!:SIZE~!\ + \ + download\ +
    \ + \ +
    \ +
    '] + }, + stats: { + WRAPPER: ['
    ~!:CONTENT~!
    '], + ENTRY: ['
    \ +

    ~!:HEADER~!

    \ +
    \ + \ +
    \ +
    '], + SUBMENU: ['today\ + week\ + month\ + year
    '] + } +} + + +// Internals +var Tpl = App.Templates; +var Templator = function() +{ + var init = function() { + fb.info('Templator work'); + Templator.splitThemAll(); + Templator.freezeTplIndexes(); + }; + + /** + * Split the tpl strings into arrays + */ + Templator.splitThemAll = function() + { + fb.info('splitting tpls'); + $.each(App.Templates.html, function(o) { + var tpls = App.Templates.html[o]; + $.each(tpls, function(t) { + tpls[t] = tpls[t][0].split('~!'); + }); + }); + }, + + /** + * Iterates tpls + */ + Templator.freezeTplIndexes = function() + { + fb.info('freezing tpl keys'); + $.each(App.Templates.html, Templator.cacheTplIndexes); + }, + + /** + * Grab the tpl group key and process it + */ + Templator.cacheTplIndexes = function(key) + { + var tpls = App.Templates.html[key]; + $.each(tpls, function(o) { + var tpl = tpls[o]; + Templator.catchIndex(key, o, tpl); + }); + }, + + /** + * Set the indexes + */ + Templator.catchIndex = function(key, ref_key, tpl) + { + 'undefined' == typeof App.Templates._indexes[key] ? App.Templates._indexes[key] = {} : false; + 'undefined' == typeof App.Templates._indexes[key][ref_key] ? App.Templates._indexes[key][ref_key] = {} : false; + $(tpl).each(function(index, o) { + if(':' == o.charAt(0)){ + App.Templates._indexes[key][ref_key][o.toString()] = index; + } + }); + } + + /** + * Get concrete templates + */ + init(); + return Templator; +}; +Templator.getTemplate = function(ns, key) +{ + return [ + App.Templates._indexes[ns][key], + App.Templates.html[ns][key].slice(0) + ]; +} +// init templator +Tpl.Templator = Templator(); +Tpl.get = function(key, group) +{ + return Tpl.Templator.getTemplate(group, key); +} diff --git a/web/vesta/api/DB.class.php b/web/vesta/api/DB.class.php index 9c7967f17..142c44b26 100644 --- a/web/vesta/api/DB.class.php +++ b/web/vesta/api/DB.class.php @@ -38,8 +38,7 @@ class DB extends AjaxHandler 'TYPE' => $record['TYPE'], 'U_DISK' => $record['U_DISK'], 'DISK' => 2024, - 'ENCODING' => "utf-8",//$record['ENCODING'], - // 'ENCODING' => $record['ENCODING'], + 'CHARSET' => strtolower($record['CHARSET']), 'SUSPEND' => $record['SUSPEND'], 'DATE' => date(Config::get('ui_date_format', strtotime($record['DATE']))) ); @@ -68,8 +67,8 @@ class DB extends AjaxHandler 'DB_USER' => $_s['USER'], 'DB_PASSWORD' => $_s['PASSWORD'], 'TYPE' => $_s['TYPE'], - 'HOST' => '' - // 'ENCODING' => $_s['ENCODING'] + 'HOST' => $_s['HOST'], + 'CHARSET' => $_s['CHARSET'] ); $result = Vesta::execute(Vesta::V_ADD_DB_BASE, $params); diff --git a/web/vesta/api/DNS.class.php b/web/vesta/api/DNS.class.php index f8f205cc9..85bf3d548 100644 --- a/web/vesta/api/DNS.class.php +++ b/web/vesta/api/DNS.class.php @@ -102,7 +102,7 @@ class DNS extends AjaxHandler 'TPL' => $_s['TPL'], 'EXP' => $_s['EXP'], 'SOA' => $_s['SOA'], - 'TTL' => $_s['TTL'], + 'TTL' => $_s['TTL'] ); $result = Vesta::execute(Vesta::V_ADD_DNS_DOMAIN, $params); diff --git a/web/vesta/api/MAIN.class.php b/web/vesta/api/MAIN.class.php index f069c1d15..aafb25b31 100644 --- a/web/vesta/api/MAIN.class.php +++ b/web/vesta/api/MAIN.class.php @@ -370,13 +370,14 @@ MAIL; public function getDbParams($data = array()) { $db_types = $this->getDBTypes(); + $db_hosts = $this->getDBHosts(); + $result = Vesta::execute(Vesta::V_LIST_DNS_TEMPLATES, null, self::JSON); return array( - 'TYPE' => $db_types, - 'HOST' => array('vestacp.com' => 'vestacp.com', 'askcow.org' => 'askcow.org'), - 'ENCODING' => array( - - 'utf8' => 'utf8', 'latin1' => 'latin1', 'cp1251' => 'cp1251', - + 'TYPE' => $db_types, + 'HOST' => $db_hosts, + 'CHARSET' => array( + 'utf8' => 'utf8', 'latin1' => 'latin1', 'cp1251' => 'cp1251' +/* '' => '', 'big5' => 'Big5 — Traditional Chinese ', @@ -415,13 +416,30 @@ MAIL; 'geostd8' => 'geostd8 — GEOSTD8 Georgian', 'cp932' => 'cp932 — SJIS for Windows Japanese', 'eucjpms' => 'eucjpms — UJIS for Windows Japanese' +*/ ) ); } public function getDBTypes() { - return array('mysql' => 'mysql', 'postgre' => 'postgre'); + return array('mysql' => 'MySQL', 'pgsql' => 'PostgreSQL'); + } + + public function getDBHosts() + { + + return array('localhost' => 'localhost'); + foreach($this->getDBTypes() as $type => $type_name){ + $result = Vesta::execute(Vesta::V_LIST_DB_HOSTS, $type, self::JSON); + foreach ($result['data'] as $host_name => $host_data) { + if (Utils::getCheckboxBooleanValue($host_data['ACTIVE'])) { + $hosts[$host_name] = $type_name .' – '. $host_name; + } + } + } + + return $hosts; } /** diff --git a/web/vesta/api/USER.class.php b/web/vesta/api/USER.class.php index 5b101bfb7..bd5529ffd 100644 --- a/web/vesta/api/USER.class.php +++ b/web/vesta/api/USER.class.php @@ -51,6 +51,7 @@ class USER extends AjaxHandler "SUSPEND" => $details['SUSPENDED'], "CONTACT" => $details['CONTACT'], "REPORTS" => $details['REPORTS'], + "REPORTS_ENABLED" => $details['REPORTS'], "IP_OWNED" => $details['IP_OWNED'], "U_DIR_DISK" => $details['U_DIR_DISK'], "U_DISK" => $details['U_DISK'], @@ -132,33 +133,42 @@ class USER extends AjaxHandler */ public function addExecute(Request $request) { - $spell = $request->getParameter('spell'); + $_s = $request->getParameter('spell'); $user = $this->getLoggedUser(); $params = array( - 'USER' => $spell['LOGIN_NAME'], - 'PASSWORD' => $spell['PASSWORD'], - 'EMAIL' => $spell['CONTACT'], - 'PACKAGE' => $spell['PACKAGE'], - 'FNAME' => $spell['FNAME'], - 'LNAME' => $spell['LNAME'] + 'USER' => $_s['LOGIN_NAME'], + 'PASSWORD' => $_s['PASSWORD'], + 'EMAIL' => $_s['CONTACT'], + 'PACKAGE' => $_s['PACKAGE'], + 'FNAME' => $_s['FNAME'], + 'LNAME' => $_s['LNAME'] ); $result = Vesta::execute(Vesta::V_ADD_SYS_USER, $params); // Reports - $enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']); - $reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']); + // $enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']); + // $reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']); // Set SHELL - $this->setShell($spell['LOGIN_NAME'], $spell['SHELL']); + // $this->setShell($_s['LOGIN_NAME'], $_s['SHELL']); if (!$result['status']) { $this->errors[] = array($result['error_code'] => $result['error_message']); } + if(@Utils::getCheckboxBooleanValue($_s['REPORTS_ENABLED'])){ + $result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_USER)); + if (!$result['status']) { + $this->status = FALSE; + $this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']); + } + } + + if ($_s['SUSPEND'] == 'on') { if($result['status']){ $result = array(); - $result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $user['uid'], 'USER' => $spell['LOGIN_NAME'])); + $result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $user['uid'], 'USER' => $_s['LOGIN_NAME'])); if (!$result['status']) { $this->status = FALSE; $this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']); @@ -249,6 +259,20 @@ class USER extends AjaxHandler } } + if ($_old['REPORTS_ENABLED'] != $_new['REPORTS_ENABLED']) { + $result = array(); + if(@Utils::getCheckboxBooleanValue($_new['REPORTS_ENABLED'])){ + $result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_USER)); + } + else{ + $result = Vesta::execute(Vesta::V_ADD_SYS_USER_REPORTS, array('USER' => $_USER)); + } + if (!$result['status']) { + $this->status = FALSE; + $this->errors['REPORTS'] = array($result['error_code'] => $result['error_message']); + } + } + // Set SHELL $this->setShell($_USER, $_new['SHELL']); diff --git a/web/vesta/core/Vesta.class.php b/web/vesta/core/Vesta.class.php index 6e4f19580..b5402c1d9 100644 --- a/web/vesta/core/Vesta.class.php +++ b/web/vesta/core/Vesta.class.php @@ -29,6 +29,7 @@ class Vesta const V_LIST_SYS_USER = 'v_list_user'; const V_LIST_USER_PACKAGES = 'v_list_user_packages'; const V_ADD_SYS_USER = 'v_add_user'; + const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports'; const V_CHANGE_SYS_USER_CONTACT = 'v_change_user_contact'; const V_CHANGE_SYS_USER_NS = 'v_change_user_ns'; const V_CHANGE_SYS_USER_PACKAGE = 'v_change_user_package'; @@ -39,6 +40,7 @@ class Vesta const V_SUSPEND_SYS_USER = 'v_suspend_user'; const V_UNSUSPEND_SYS_USER = 'v_unsuspend_user'; const V_DEL_SYS_USER = 'v_delete_user'; + const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports'; // WEB_DOMAIN const V_LIST_WEB_DOMAINS = 'v_list_web_domains'; const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias'; @@ -122,14 +124,14 @@ class Vesta // CRON const V_LIST_CRON_JOBS = 'v_list_cron_jobs'; const V_ADD_CRON_JOB = 'v_add_cron_job'; - const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports'; + // const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports'; const V_CHANGE_CRON_JOB = 'v_change_cron_job'; const V_SUSPEND_CRON_JOB = 'v_suspend_cron_job'; const V_SUSPEND_CRON_JOBS = 'v_suspend_cron_jobs'; const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_cron_job'; const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_cron_jobs'; const V_DEL_CRON_JOB = 'v_delete_cron_job'; - const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports'; + // const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports'; // STATS const V_LIST_SYS_RRD = 'v_list_sys_rrd json'; const V_UPDATE_SYS_RRD = 'v_update_sys_rrd'; diff --git a/web/vesta/core/VestaSession.class.php b/web/vesta/core/VestaSession.class.php index 9c49fd482..91efd436c 100644 --- a/web/vesta/core/VestaSession.class.php +++ b/web/vesta/core/VestaSession.class.php @@ -76,20 +76,20 @@ class VestaSession public function loginAs($login) { - // TODO checkrights for login as - // if(Vesta::hasRights(self::getUserRole();, 'login_as')){ - - if(!$_SESSION['real_user']) - $_SESSION['real_user'] = $_SESSION['user']; + // TODO checkrights for login as + if(Vesta::hasRights(self::getUserRole(), 'login_as')){ + if(!$_SESSION['real_user']){ + $_SESSION['real_user'] = $_SESSION['user']; + } + } - $_SESSION['user'] = $login; - - // } + $_SESSION['user'] = $login; } public function logoutAs() { $_SESSION['user'] = $_SESSION['real_user']; + $_SESSION['real_user'] = false; } } ?> diff --git a/web/vesta/upload.php b/web/vesta/upload.php index ecbd148ee..e573b2bd9 100644 --- a/web/vesta/upload.php +++ b/web/vesta/upload.php @@ -18,7 +18,7 @@ switch ($_GET['action']) { handleUpload(); } else { - show_form(); + show_form(); } break; } @@ -59,8 +59,8 @@ function handleUpload() function show_form() { $type = $_GET['type']; - if (!in_array($type, array('key', 'cert'))) { - exit; + if (!in_array($type, array('key', 'cert', 'ca'))) { + exit; } print << \ No newline at end of file +?>