Added "admin_" prefix for ftp user names

Affected pages: Add/Edit Web entity for admin and user points
This commit is contained in:
dmitry.malishev 2013-07-11 17:00:40 +03:00
parent 0593df0f83
commit 7c81fe71c5
9 changed files with 2593 additions and 1222 deletions

308
web/js/app.js Normal file
View file

@ -0,0 +1,308 @@
/**
* jQuery.browser.mobile (http://detectmobilebrowser.com/)
*
* jQuery.browser.mobile will be true if the browser is a mobile device
*
**/
(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);
/*! jQuery JSON plugin 2.4.0 | code.google.com/p/jquery-json */
(function(jQuery){'use strict';var escape=/["\\\x00-\x1f\x7f-\x9f]/g,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},hasOwn=Object.prototype.hasOwnProperty;jQuery.toJSON=typeof JSON==='object'&&JSON.stringify?JSON.stringify:function(o){if(o===null){return'null';}
var pairs,k,name,val,type=jQuery.type(o);if(type==='undefined'){return undefined;}
if(type==='number'||type==='boolean'){return String(o);}
if(type==='string'){return jQuery.quoteString(o);}
if(typeof o.toJSON==='function'){return jQuery.toJSON(o.toJSON());}
if(type==='date'){var month=o.getUTCMonth()+1,day=o.getUTCDate(),year=o.getUTCFullYear(),hours=o.getUTCHours(),minutes=o.getUTCMinutes(),seconds=o.getUTCSeconds(),milli=o.getUTCMilliseconds();if(month<10){month='0'+month;}
if(day<10){day='0'+day;}
if(hours<10){hours='0'+hours;}
if(minutes<10){minutes='0'+minutes;}
if(seconds<10){seconds='0'+seconds;}
if(milli<100){milli='0'+milli;}
if(milli<10){milli='0'+milli;}
return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
pairs=[];if(jQuery.isArray(o)){for(k=0;k<o.length;k++){pairs.push(jQuery.toJSON(o[k])||'null');}
return'['+pairs.join(',')+']';}
if(typeof o==='object'){for(k in o){if(hasOwn.call(o,k)){type=typeof k;if(type==='number'){name='"'+k+'"';}else if(type==='string'){name=jQuery.quoteString(k);}else{continue;}
type=typeof o[k];if(type!=='function'&&type!=='undefined'){val=jQuery.toJSON(o[k]);pairs.push(name+':'+val);}}}
return'{'+pairs.join(',')+'}';}};jQuery.evalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(str){return eval('('+str+')');};jQuery.secureEvalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(str){var filtered=str.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*jQuery/.test(filtered)){return eval('('+str+')');}
throw new SyntaxError('Error parsing JSON, source is not valid.');};jQuery.quoteString=function(str){if(str.match(escape)){return'"'+str.replace(escape,function(a){var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+str+'"';};}(jQuery));
/**
*
* @author: Malishev Dmitry <dima.malishev@gmail.com>
*/
var _DEBUG = true;
var _DEBUG_LEVEL = 'ALL';
// possible levels: ALL, IMPORTANT
var Error = {FATAL: 1, WARNING: 0, NORMAL: -1};
//
// GLOBAL SETTINGS
//
GLOBAL = {};
GLOBAL.FTP_USER_PREFIX = 'admin_';
GLOBAL.AJAX_URL = '';
/**
* Init debug, grabs console object if accessible, or makes dummy debugger
*/
var fb = _DEBUG && 'undefined' != typeof(console) ? console : {
log : function(){},
debug : function(){},
info : function(){},
warn : function(){},
error : function(){},
assert : function(){},
dir : function(){},
dirxml : function(){},
trace : function(){},
group : function(){},
groupEnd : function(){},
time : function(){},
timeEnd : function(){},
profile : function(){},
profileEnd : function(){},
count : function(){},
msg : function(){}
};
//
var App = {
// Main namespases for page specific functions
// Core namespaces
Ajax: { Busy: {} },
Core: {},
// Actions. More widly used funcs
Actions: {
WEB: {}
},
// Utilities
Helpers: {},
HTML: {Build: {}},
Filters: {},
Env: {
lang: GLOBAL.lang,
},
i18n: {},
Listeners: {
WEB: {}
},
View:{
HTML: {
Build: {}
},
// pages related views
},
Cache: {
clear: function(){} // TODO: stub method, will be used later
},
Ref: {},
Tmp: {},
Thread: {
run: function(delay, ref){
setTimeout(function(){
ref();
}, delay*10);
}
},
Settings: { GLOBAL: {}, General: {}},
Templates: {
Templator: null,
Tpl: {},
_indexes: {}
}
};
// Internals
Array.prototype.set = function(key, value){
var index = this[0][key];
this[1][index] = value;
}
Array.prototype.get = function(key){
var index = this[0][key];
return this[1][index];
}
Array.prototype.finalize = function(){
this.shift();
this[0] = this[0].join('');
return this[0];
}
Array.prototype.done = function(){
return this.join('');
}
String.prototype.wrapperize = function(key, ns){
var tpl = App.Templates.get(key, ns);
tpl.set(':content', this);
return tpl.finalize();
}
App.Ajax.request = function(method, data, callback, onError){
// this will prevent multiple ajaxes on user clicks
/*if (App.Helpers.isAjaxBusy(method, data)) {
fb.warn('ajax request ['+method+'] is busy');
return;
}*/
//App.Helpers.setAjaxBusy(method, data);
data = data || {};
jQuery.ajax({
url: GLOBAL.ajax_url,
global: false,
type: data.request_method || "GET",
data: jQuery.extend(data, {'action': method}),
dataType: "text boost",
converters: {
"text boost": function(value) {
value = value.trim();
return jsonParse(value);
}},
async: true,
cache: false,
error: function(jqXHR, textStatus, errorThrown)
{
onError && onError();
if ('undefined' != typeof onError) {
fb.error(textStatus);
}
},
complete: function()
{
//App.Helpers.setAjaxFree(method, data);
},
success: function(reply)
{
//App.Helpers.setAjaxFree(method, data);
try {
callback && callback(reply);
}
catch(e) {
alert('GENERAL ERROR: '+e);
//App.Helpers.generalError();
}
}
});
}
jQuery.extend({
keys: function(obj){
if (!obj) {
return [];
}
var a = [];
jQuery.each(obj, function(k){ a.push(k) });
return a;
}
})
App.Core.create_hidden_form = function(action){
var form = jQuery('<form>', {
id : 'hidden-form',
method : 'post',
action : action
});
jQuery('body').append(form);
return form;
};
App.Core.extend_from_json = function(elm, data, prefix){
elm = jQuery(elm);
var data = App.Core.flatten_json(data, prefix);
var keys = jQuery.keys(data);
for(var i=0, cnt=keys.length; i<cnt; i++)
{
elm.append(jQuery('<input>', {
name : keys[i],
value: data[keys[i]],
type : 'hidden'
}));
}
return elm;
}
App.Core.flatten_json = function(data, prefix){
var keys = jQuery.keys(data);
var result = {};
prefix || (prefix = '');
if(keys.length)
{
for(var i=0, cnt=keys.length; i<cnt; i++)
{
var value = data[keys[i]];
switch(typeof(value))
{
case 'function': break;
case 'object' : result = jQuery.extend(result, App.Core.flatten_json(value, prefix + '[' + keys[i] + ']')); break;
default : result[prefix + '[' + keys[i] + ']'] = value;
}
}
return result;
}
else
{
return false;
}
}
//
// Cookies adapter
// Allow to work old pages realisations of cookie requests
//
function createCookie(name, value, expire_days) {
jQuery.cookie(name, value, { expires: expire_days});
}
function readCookie(name) {
jQuery.cookie(name);
}
function eraseCookie(name) {
jQuery.removeCookie(name);
}
/**
* Timer for profiling
*/
var timer = {};
timer.start = function()
{
timer.start_time = new Date();
}
timer.stop = function( msg )
{
timer.stop_time = new Date();
timer.print( msg );
}
timer.print = function( msg )
{
var passed = timer.stop_time - timer.start_time;
fb.info( msg || '' + passed / 1000 );
}
String.prototype.trim = function()
{
var str = this;
str = str.replace(/^\s+/, '');
for (var i = str.length - 1; i >= 0; i--) {
if (/\S/.test(str.charAt(i))) {
str = str.substring(0, i + 1);
break;
}
}
return str;
}

23
web/js/pages/add.web.js Normal file
View file

@ -0,0 +1,23 @@
App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
if (hint.trim() == '') {
$(elm).parent().find('.ftp_username_hint').html('');
}
if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
}
$(elm).parent().find('.ftp_username_hint').html(GLOBAL.FTP_USER_PREFIX + hint);
}
App.Listeners.WEB.keypress_ftp_username = function() {
$('input[name="v_ftp_user"]').bind('keypress', function(evt) {
clearTimeout(window.frp_usr_tmt);
window.frp_usr_tmt = setTimeout(function() {
var elm = $(evt.target);
App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
}, 100);
});
}
//
// Page entry point
App.Listeners.WEB.keypress_ftp_username();

23
web/js/pages/edit.web.js Normal file
View file

@ -0,0 +1,23 @@
App.Actions.WEB.update_ftp_username_hint = function(elm, hint) {
if (hint.trim() == '') {
$(elm).parent().find('.ftp_username_hint').html('');
}
if (hint.indexOf(GLOBAL.FTP_USER_PREFIX) == 0) {
hint = hint.slice(GLOBAL.FTP_USER_PREFIX.length, hint.length);
}
$(elm).parent().find('.ftp_username_hint').html(GLOBAL.FTP_USER_PREFIX + hint);
}
App.Listeners.WEB.keypress_ftp_username = function() {
$('input[name="v_ftp_user"]').bind('keypress', function(evt) {
clearTimeout(window.frp_usr_tmt);
window.frp_usr_tmt = setTimeout(function() {
var elm = $(evt.target);
App.Actions.WEB.update_ftp_username_hint(elm, $(elm).val());
}, 100);
});
}
//
// Page entry point
App.Listeners.WEB.keypress_ftp_username();

96
web/js/templates.js Normal file
View file

@ -0,0 +1,96 @@
/**
*
* @author: Malishev Dmitry <dima.malishev@gmail.com>
*/
App.Templates.html = {
WEB: {
hint: ['']
}
};
// 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');
jQuery.each(App.Templates.html, function(o){
//try{
var tpls = App.Templates.html[o];
jQuery.each(tpls, function(t){
tpls[t] = tpls[t][0].split('~!');
});
//}catch(e){fb.error('%o %o', o, e);}
});
},
/**
* Iterates tpls
*/
Templator.freezeTplIndexes = function(){
fb.info('freezing tpl keys');
jQuery.each(App.Templates.html, Templator.cacheTplIndexes);
},
/**
* Grab the tpl group key and process it
*/
Templator.cacheTplIndexes = function(key)
{
var tpls = App.Templates.html[key];
jQuery.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;
jQuery(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);
}

View file

@ -1,3 +1,4 @@
<?php
$back = $_SESSION['back'];
if (empty($back)) {
@ -6,9 +7,10 @@
$back = "location.href='".$back."'";
}
?>
<table class="submenu">
<tr>
<td style="padding: 16px 8px;" ><a class="name"><b><?php print __('Adding Domain');?></b></a>
<td style="padding: 0 2px 0 0;" ><a class="name"><b><?php print __('Adding Domain');?></b></a>
<?php
if (!empty($_SESSION['error_msg'])) {
echo "<span class=\"vst-error\"> → ".$_SESSION['error_msg']."</span>";
@ -21,7 +23,9 @@
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<form id="vstobjects" name="v_add_web" method="post">
<script type="text/javascript">
@ -317,6 +321,7 @@
<tr>
<td>
<input type="text" size="20" class="vst-input" name="v_ftp_user" <?php if (!empty($v_ftp_user)) echo "value=".$v_ftp_user; ?>>
<small class="ftp_username_hint"></small>
</td>
</tr>
<tr>
@ -357,3 +362,5 @@
</tr>
</table>
</form>
<script type="text/javascript" src="/js/pages/add.web.js"></script>

View file

@ -6,9 +6,10 @@
$back = "location.href='".$back."'";
}
?>
<table class="submenu">
<tr>
<td style="padding: 16px 8px;" ><a class="name"><b><?php print __('Editing Domain');?></b></a>
<td style="padding: 0 2px 0 0;" ><a class="name"><b><?php print __('Editing Domain');?></b></a>
<?php
if (!empty($_SESSION['error_msg'])) {
echo "<span class=\"vst-error\"> → ".$_SESSION['error_msg']."</span>";
@ -21,7 +22,9 @@
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<form id="vstobjects" name="v_edit_web" method="post">
<script language="javascript">
@ -61,12 +64,12 @@
<td class="data-dotted" width="150">
<table class="data-col1">
<tr>
<td>
<td style="padding: 24px 0 2px 18px;">
<a class="data-date"><?php echo strftime("%d %b %Y", strtotime($v_date))?></a><br>
<a class="data-date"><?php echo $v_time?></a>
</td>
</tr>
<tr><td class="data-<?php echo $v_status ?>"><b><?php echo __($v_status) ?></b></td></tr>
<tr><td style="padding: 0 0 0 18px;" class="data-<?php echo $v_status ?>"><b><?php echo __($v_status) ?></b></td></tr>
</table>
</td>
<td class="data-dotted" width="830px">
@ -333,6 +336,7 @@
<tr>
<td>
<input type="text" size="20" class="vst-input" name="v_ftp_user" <?php if (!empty($v_ftp_user)) echo "value=".$v_ftp_user; ?>>
<small class="ftp_username_hint"></small>
</td>
</tr>
<tr>
@ -381,3 +385,7 @@
</table>
</form>
<script type="text/javascript" src="/js/pages/edit.web.js"></script>

View file

@ -4,9 +4,900 @@
<link rel="icon" href="/images/favicon.ico" type="image/x-icon">
<title>Vesta - <?php echo "$TAB"; ?> </title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link type="text/css" href="/css/main.css" rel="stylesheet" />
<style type="text/css">
body {
margin: 0;
margin-left: auto;
margin-right: auto;
font-family: Arial, Helvetica, sans-serif;
background-color: #e5e5e5;
}
form {
margin: 0;
}
.hidden {
display: none;
}
.main {
background-color: #ffffff;
padding: 0 0 18px 0;
box-shadow: 0 2px 4px rgba(100, 100, 100, 0.3);
}
.top {
color: #ffd76e;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
margin: 0;
width: 990px;
font-size: 10pt;
text-align: left;
border: 0px;
border-collapse:collapse;
}
.top thead td {
background-color: #505050;
border-bottom: 1px solid #fff;
height: 25px;
text-align: right;
padding: 0 24px 0 0px;
weight:120px;
}
.top thead td:first-child{
border-left: 1px solid #fff;
border-right:none;
text-align:left;
padding: 0 0 0 0;
width:auto;
}
.top-link {
padding: 5px 22px 4px;
text-decoration: none;
color: #fff;
border-right: 1px solid #fff;
}
.top-link:hover {
color: #fff;
background-color: #999;
}
.top-link:active{
color: #fff;
background-color: #f79b44;
}
.top-selected-link {
padding: 5px 22px;
text-decoration: none;
color: #555;
background-color: #fff;
border-right: 1px solid #fff;
}
.top-selected-link:hover {
color: #174f82;
}
.top-selected-link:active {
color: #fff;
background-color: #f79b44;
}
.top-user {
padding: 0 2px 0 0;
text-decoration: none;
color: #ffd76e;
}
.top-user:hover {
color: #fff;
}
.top-user:active{
color: #fff;
background-color: #f79b44;
}
.top-logout {
text-decoration: none;
color: #d3d3d3;
border: noner;
}
.top-logout:hover {
color: #fff;
}
.top-logout:active {
color: #fff;
background-color: #f79b44;
}
.nav-logo {
float:left;
height:110px;
width:161px;
margin: 0;
border-bottom: 1px solid #e3e3e3;
}
.nav-lnk {
text-decoration: none;
color: #323232;
float:left;
}
.nav-lnk:active {
color: #f79b44;
}
.nav-block {
margin: 0;
height:110px;
width: 118px;
float:left;
cursor: pointer;
border-bottom: 1px solid #e3e3e3;
}
.nav-block:hover {
height:107px;
border-bottom: 4px solid #f79b44;
}
.nav-selected-block {
margin: 0;
color: #174f82;
height: 107px;
width: 118px;
float: left;
background-color: #fff;
border-bottom: 4px solid #777;
cursor: pointer;
}
.nav-selected-block:hover {
height:107px;
border-bottom: 4px solid #f79b44;
}
.nav-selected-block:active {
color: #f79b44;
}
.nav-header {
padding: 14px 0 0 6px;
margin: 0;
letter-spacing: -1.0px;
font-size: 16pt;
font-weight: bold;
}
.nav-selected-header {
padding: 14px 0 0 6px;
margin: 0;
letter-spacing: -1.0px;
font-size: 16pt;
font-weight: bold;
}
.nav-counters {
padding: 1px 0 0 6px;
margin: 0;
height: 58px;
line-height: 1.4em;
font-size: 9pt;
color: #555;
decoration: none;
}
.submenu {
margin-left: auto;
margin-right: auto;
width: 990px;
font-family:Arial, Helvetica, sans-serif;
height: 54px;
font-size: 10pt;
text-align: left;
vertical-align:top;
padding: 0px 10px 0px 0;
background-color: none repeat scroll 0% 0% white;
}
.submenu td {
vertical-align: middle;
}
.submenu-button-block {
float: left;
}
.submenu-button {
width: 130px;
height: 24px;
cursor: pointer;
color: #333;
background-color: #fafafa;
border: 1px solid #999;
border-radius: 3px 3px 3px 3px;
padding: 0;
font-size: 12px;
font-family:Arial, Helvetica, sans-serif;
}
@-moz-document url-prefix() {
.submenu-button {
padding-bottom: 2px;
}
}
.submenu-button:hover {
background-color: #f0f0f0;
}
.submenu-button:active {
color: #fff;
border: 1px solid #f79b44;
background-color: #f79b44;
}
.submenu-select-block {
float:left;
padding-left: 18px;
}
.submenu-select-link {
color: #6A6A6A;
display: block;
float: left;
font-size: 8pt;
letter-spacing: 0.1em;
margin: 6px 6px 0 0;
text-decoration: none;
padding: 0 4px 0 12px
}
.submenu-select-link:hover {
text-decoration: underline;
}
.submenu-select-link:active {
color: #fff;
background-color: #f79b44;
text-decoration: underline;
}
.submenu-select-dropdown {
font-family:Arial, Helvetica, sans-serif;
color: #333333;
display: block;
float: left;
height: 24px;
margin: 0 4px 0 0;
min-width: 138px;
}
.submenu-search-block {
text-align: right;
float: right;
}
.submenu-search-field {
border: 1px solid #d3d3d3;
border-radius: 3px 3px 3px 3px;
color: #333;
font-size: 14px;
background-color: #fff;
float: left;
padding: 0px 3px 0px 3px;
height: 22px;
width: 250px;
margin: 0 4px 0 0;
}
.bottom {
background-color: #ebe9dc;
color: #555;
margin: 30px 0 0 0;
padding: 4px 20px 8px 0;
margin-left: auto;
margin-right: auto;
width: 990px;
font-size: 8pt;
text-align: center;
vertical-align:top;
line-height: 0.8em;
border-top: 4px solid #d3d3d3;
}
.bottom a:link {
font-size: 8pt;
text-decoration: none;
color: #555;
}
.bottom a:visited {
text-decoration: none;
color: #555;
}
.bottom a:hover {
text-decoration: underline;
color: #7fa1cb;
}
.vst {
padding: 0 4px 0 4px;
margin: 0;
text-decoration: none;
color: #999;
font-size: 12pt;
float: left;
}
.vst:hover {
text-decoration: underline;
}
.vst:active {
color: #fff;
background-color: #f79b44;
}
.vst-selected {
padding: 0 4px 0 4px;
margin: 0;
text-decoration: none;
color: #174f82;
font-size: 12pt;
float: left;
}
.vst-selected:hover {
text-decoration: underline;
}
.vst-selected:active {
color: #fff;
background-color: #f79b44;
}
.data {
border-collapse:collapse;
margin-left: auto;
margin-right: auto;
width: 990px;
font-family:Arial, Helvetica, sans-serif;
color: #e5a907;
font-size: 12pt;
text-align: left;
vertical-align:top;
margin: 0;
behavior:url("/css/csshover3.htc");
}
.data a {
text-decoration: none;
}
.data-row:hover {
margin: 0;
background-color: #f7f6ed;
}
.data-row:active {
background-color: #f7f7d8;
}
.datarowhover {
margin: 0;
background-color: #f7f6ed;
}
.data-null {
margin: 0;
width: 990px;
height: 10px;
border-top:1px dotted #d3d3d3;
}
.data-spacer {
margin: 0;
width: 990px;
}
.data-add {
margin: 0;
background-color: #f7f6ed;
border-left: 1px solid #e9e9e9;
border-right: 1px solid #e9e9e9;
border-bottom: 1px solid #e9e9e9;
}
.data-dotted {
text-align: left;
vertical-align:top;
border-top:1px dotted #d3d3d3;
padding: 0 0 26px 0;
margin: 0;
}
.data-dotted td {
margin: 0;
}
.data-col1 {
text-align: left;
padding:0;
}
.data-col1 tr td {
padding:0 0 0 20px;
}
.data-col1 tr:first-child td {
padding:23px 0 0 20px;
}
.data-col2 {
text-align: left;
padding: 0;
overflow: hidden;
}
.data-col2 a:visited {
color: green;
}
.data-col5 {
table-layout: fixed;
text-align: left;
padding: 0;
overflow: hidden;
white-space: nowrap;
}
.data-date {
padding: 0 0 0 18;
letter-spacing: 0.3em;
font-size: 8pt;
color: #6A6A6A
}
.data-active {
font-size: 8pt;
letter-spacing: 0.1em;
color: #81a64f;
padding: 0 0 13 18;
}
.data-suspended {
font-size: 8pt;
letter-spacing: 0.1em;
color: #de5543;
padding: 0 0 13 18;
}
.data-controls {
float: right;
height: 16px;
border-left: 1px solid #d3d3d3;
font-size: 8pt;
padding: 2px 12px 0 6px;
letter-spacing: 0.1em;
color: #174f82;
text-decoration: none;
cursor: pointer;
}
.data-controls:hover {
color: #fff;
background-color: #f79b44;
}
.data-controls:active {
background-color: #999
}
.data-controls img {
border: 0px;
}
.data-count {
font-family: Arial, Helvetica, sans-serif;
background-color: #f3f3f3;
color: #555;
font-size: 8pt;
margin: 18px 0 0 0;
text-align:right;
padding: 0 16px 0 0;
}
.chart1 {
color:#000;
font-size: 10pt;
}
.chart2 {
color: #484243;
font-size: 8pt;
}
.username {
color: #323232;
font-size: 16pt;
}
.domain {
color: #323232;
font-size: 16pt;
}
.cron {
color: #323232;
font-size: 18px;
}
.log {
color: #323232;
font-size: 12pt;
}
.aliases {
font-size: 12pt;
color: #99a7af;
padding: 0 0 0 8px;
}
.nginx-ext {
color: black;
vertical-align:top;
font-size: 10pt;
}
.fullname {
font-size: 18px;
color: #99a7af;
padding: 0 0 0 8px;
}
.counter-name {
white-space: nowrap;
vertical-align:top;
line-height: 1.3em;
font-size: 10pt;
color: #505050;
padding: 0 4px 0 0;
}
.cron-counter-name {
vertical-align:top;
line-height: 0.8em;
font-size: 8pt;
padding: 4 0 0 0;
color: #505050;
}
.counter-value {
vertical-align:top;
line-height: 1.2em;
font-size: 10pt;
color: #000;
padding: 0 0 0 4px;
}
.log-counter-value {
vertical-align:top;
font-size: 12pt;
color: #484243;
}
.cron-counter-value {
vertical-align:top;
line-height: 1.2em;
font-size: 12pt;
color: #484243;
}
.name {
font-size: 16pt;
color: #555;
padding: 0 0 0 10px;
}
.vst-ok {
font-size: 18px;
color: #62a358;
padding: 0 0 0 6px;
}
.vst-ok a{
color: #58934f;
text-decoration: none;
}
.vst-ok a:hover{
text-decoration: underline;
}
.vst-error {
font-size: 18px;
color: #de6c5d;
padding: 0 0 0 6px;
}
.vst-text {
color: #323232;
font-size: 12pt;
}
.vst-textinput {
background-color: #fff;
border: 1px solid #c0c0c0;
border-radius: 3px 3px 3px 3px;
color: #555;
font-size: 18px;
padding: 5px;
width: 360px;
height: 120px;
}
.vst-textinput:hover {
border: 1px solid #f79b44;
}
.vst-textinput:focus {
border: 1px solid #f79b44;
}
.vst-textinput:disabled {
background-color: #f1f1f1;
}
.vst-input {
background-color: #fff;
border: 1px solid #c0c0c0;
border-radius: 3px 3px 3px 3px;
color: #555;
font-size: 14pt;
padding: 5px;
width: 360px;
height: 28px;
}
.vst-input:hover {
border: 1px solid #f79b44;
}
.vst-input:focus {
border: 1px solid #f79b44;
}
.vst-input:disabled {
background-color: #f1f1f1;
}
.vst-list {
font-family:Arial, Helvetica, sans-serif;
font-size: 12pt;
color: #555;
height: 30px;
min-width: 136px;
}
@-moz-document url-prefix() {
.vst-list {
padding-top: 2px;
}
}
.vst-checkbox {
padding: 5px;
font-size: 12pt;
}
.vst-checkbox:hover {
border: 1px solid #f79b44;
}
.button {
filter:chroma(color=#000000);
cursor: pointer;
color: #202020;
background-color: #fafafa;
border: 1px solid #999;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
padding: 2px 16px;
width: 108px;
height: 34px;
}
.button:hover {
background-color: #f0f0f0;
}
.button:active {
color: #fff;
border: 1px solid #f79b44;
background-color: #f79b44;
}
.genpass {
color: #34536a;
font-size: 8pt;
padding: 0 5px;
letter-spacing: 0.1em;
text-decoration: underline;
}
.genpass:hover {
color: #7fa1cb;
}
.genpass:active {
background-color: #f79b44;
color: #fff;
}
.vst-advanced {
color: #34536a;
font-size: 10pt;
letter-spacing: 0.1em;
text-decoration: none;
padding: 0 2px;
border-bottom: 1px solid #f79b44;
}
.vst-advanced:hover {
color: #7fa1cb;
}
.vst-advanced:active {
color: #fff;
background-color: #f79b44;
}
.fixed{
position: fixed;
border: none;
top: -3px;
border-bottom: 1px solid #d3d3d3;
background-color: #fff;
}
*html .fixed{
position:absolute;
position:fixed;
_position:absolute;
top:0;
_top:expression( eval(document.body.scrollTop) + 'px' );
}
#vstobjects{
padding-top: 192px;
width: 996px;
padding-left: 3px;
min-height: 370px;
}
.login {
font-family:Arial, Helvetica, sans-serif;
margin: 80px 0 80px 0;
padding: 0;
background-color: #fff;
text-align: left;
vertical-align:top;
width: 500px;
box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
}
.login-box {
text-align: left;
vertical-align:top;
color: #323232;
}
.login-bottom {
color: #ebe9dc;
text-align: right;
vertical-align:top;
width: 500px;
height: 50px;
background-color: #ebe9dc;
padding: 0 8px 0 0;
margin: 0;
}
.vestacp{
font-size: 8pt;
color: #323232;
text-align: right;
padding: 20px 0 0 0;
}
.error {
font-size: 10pt;
color: #dE6c5d;
}
</style>
<!--[if IE]>
<style type="text/css">
html, body, div, span, applet, object, iframe {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
.fixed {
margin-top: 0px;
}
.vst-advanced {
text-decoration: underline;
}
#vstobjects{
padding-top: 195px;
min-height: 370px;
height: auto !important;
height: 370px;
width: 996px;
}
.nav-logo {
float:left;
height:112px;
width:161px;
margin: 0;
border-bottom: 1px solid #d3d3d3;
}
.nav-block {
margin: 0;
height:112px;
width: 118px;
float:left;
cursor: pointer;
border-bottom: 1px solid #d3d3d3;
}
.nav-block:hover {
height:109px;
border-bottom: 4px solid #f79b44;
}
.nav-selected-block {
margin: 0;
color: #174f82;
height: 109px;
width: 118px;
float: left;
background-color: #fff;
border-bottom: 4px solid #777;
cursor: pointer;
}
.nav-selected-block:hover {
height:109px;
border-bottom: 4px solid #f79b44;
}
</style>
<![endif]-->
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="/css/ie.css" />
<style type="text/css">
.data-col1 a {
white-space: nowrap;
@ -29,6 +920,7 @@
top: 2px;
}
</style>
<link rel="stylesheet" type="text/css" href="/css/ie.css" />
<![endif]-->
<link type="text/css" href="/css/jquery-custom-dialogs.css" rel="stylesheet" />
<script type="text/javascript" src="/js/events.js"></script>
@ -67,5 +959,9 @@
});
});
</script>
<script type="text/javascript" src="/js/app.js"></script>
<script type="text/javascript" src="/js/templates.js"></script>
</head>
<body>

View file

@ -1,3 +1,4 @@
<?php
$back = $_SESSION['back'];
if (empty($back)) {
@ -9,7 +10,7 @@
<table class="submenu">
<tr>
<td style="padding: 16px 8px;" ><a class="name"><b><?php print __('Adding Domain');?></b></a>
<td style="padding: 0 2px 0 0;" ><a class="name"><b><?php print __('Adding Web Domain');?></b></a>
<?php
if (!empty($_SESSION['error_msg'])) {
echo "<span class=\"vst-error\"> → ".$_SESSION['error_msg']."</span>";
@ -22,7 +23,10 @@
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<form id="vstobjects" name="v_add_web" method="post">
<script type="text/javascript">
$(function() {
@ -317,6 +321,7 @@
<tr>
<td>
<input type="text" size="20" class="vst-input" name="v_ftp_user" <?php if (!empty($v_ftp_user)) echo "value=".$v_ftp_user; ?>>
<small class="ftp_username_hint"></small>
</td>
</tr>
<tr>
@ -357,4 +362,5 @@
</tr>
</table>
</form>
<br>
<script type="text/javascript" src="/js/pages/add.web.js"></script>

View file

@ -9,7 +9,7 @@
<table class="submenu">
<tr>
<td style="padding: 16px 8px;" ><a class="name"><b><?php print __('Editing Domain');?></b></a>
<td style="padding: 0 2px 0 0;" ><a class="name"><b><?php print __('Editing Domain');?></b></a>
<?php
if (!empty($_SESSION['error_msg'])) {
echo "<span class=\"vst-error\"> → ".$_SESSION['error_msg']."</span>";
@ -22,7 +22,9 @@
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<form id="vstobjects" name="v_edit_web" method="post">
<script language="javascript">
@ -62,12 +64,12 @@
<td class="data-dotted" width="150">
<table class="data-col1">
<tr>
<td>
<td style="padding: 24px 0 2px 18px;">
<a class="data-date" ?><?php echo strftime("%d %b %Y", strtotime($v_date))?></a><br>
<a class="data-date" ?><?php echo $v_time?></a>
</td>
</tr>
<tr><td class="data-<?php echo $v_status ?>"><b><?php echo __($v_status) ?></b></td></tr>
<tr><td style="padding: 0 0 0 18px;" class="data-<?php echo $v_status ?>"><b><?php echo __($v_status) ?></b></td></tr>
</table>
</td>
<td class="data-dotted" width="830px">
@ -289,6 +291,7 @@
<tr>
<td>
<input type="text" size="20" class="vst-input" name="v_ftp_user" <?php if (!empty($v_ftp_user)) echo "value=".$v_ftp_user; ?>>
<small class="ftp_username_hint"></small>
</td>
</tr>
<tr>
@ -337,3 +340,4 @@
</table>
</form>
<script type="text/javascript" src="/js/pages/edit.web.js"></script>