Commit 56cfdf1d authored by Juorder Gonzalez's avatar Juorder Gonzalez Committed by Juorder Antonio

enable all status for domain list to know what state means when users log in

parents 34619210 32f4ea47
1468357419
\ No newline at end of file
1478881770
\ No newline at end of file
module.exports = {"main":{"js":"/018497bundle.js"}}
\ No newline at end of file
module.exports = {"main":{"js":"/209210bundle.js"}}
\ No newline at end of file
......@@ -23,6 +23,7 @@ export default class AntiSpam extends React.Component {
this.domain = this.isStoreEnabled ? DomainStore.getCurrent() : this.props.data;
this.blackList = [];
this.whiteList = [];
this.limit = 10;
if (this.domain.attrs.amavisBlacklistSender) {
this.blackList = Array.isArray(this.domain.attrs.amavisBlacklistSender) ? this.domain.attrs.amavisBlacklistSender : this.domain.attrs.amavisBlacklistSender.trim().split(' ');
......@@ -31,6 +32,42 @@ export default class AntiSpam extends React.Component {
if (this.domain.attrs.amavisWhitelistSender) {
this.whiteList = Array.isArray(this.domain.attrs.amavisWhitelistSender) ? this.domain.attrs.amavisWhitelistSender : this.domain.attrs.amavisWhitelistSender.trim().split(' ');
}
this.state = {
whiteListPaginate: {
page: 1,
total: this.whiteList.length,
offset: 0
},
blackListPaginate: {
page: 1,
total: this.blackList.length,
offset: 0
}
};
}
onChangePage(target, value) {
const paginator = this.state[`${target}ListPaginate`];
let {page} = paginator;
page += value;
if (page < 1) {
page = 1;
}
if (page > Math.ceil(paginator.total / this.limit)) {
page = paginator.page;
}
let newState = {...this.state[`${target}ListPaginate`],
page,
offset: ((page - 1) * this.limit)
};
newState = {...this.state, [`${target}ListPaginate`]: {...newState}};
this.setState(newState);
}
handleDelete(e, item, action) {
......@@ -64,7 +101,7 @@ export default class AntiSpam extends React.Component {
handleSave(e, action) {
const attrs = {};
const isEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
const isEmail = /^(([^<>()\[\]\\.,;:\s@']+(\.[^<>()\[\]\\.,;:\s@']+)*)|('.+'))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
const isDomain = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/;
const invalidInput = /ñ/gi;
const target = action === 'black' ? 'lista negra' : 'lista blanca';
......@@ -154,8 +191,26 @@ export default class AntiSpam extends React.Component {
this.whiteList = returns;
}
const paginator = this.state[`${action}ListPaginate`];
const total = this[`${action}List`].length;
let page = Math.ceil(total / this.limit);
let offset = paginator.offset;
if (page > paginator.page) {
page--;
}
offset = ((page - 1) * this.limit);
const newState = {...this.state[`${action}ListPaginate`],
total: this[`${action}List`].length || 0,
page,
offset
};
this.setState({
update: true
[action + 'ListPaginate']: newState
});
}).catch((err) => {
EventStore.emitMessage({
......@@ -177,9 +232,15 @@ export default class AntiSpam extends React.Component {
render() {
let whiteList = null;
let blackList = null;
let sliceList = null;
let whiteListControls = null;
let blackListControls = null;
const {whiteListPaginate, blackListPaginate} = this.state;
if (this.blackList && this.blackList.length > 0) {
blackList = this.blackList.map((black, i) => {
sliceList = this.blackList.slice(blackListPaginate.offset, blackListPaginate.page * this.limit);
blackList = sliceList.map((black, i) => {
return (
<tr
key={`black-${i}`}
......@@ -203,6 +264,41 @@ export default class AntiSpam extends React.Component {
</tr>
);
});
if (blackListPaginate.total > this.limit) {
const until = (blackListPaginate.page * this.limit) < blackListPaginate.total ? blackListPaginate.page * this.limit : blackListPaginate.total;
blackListControls = (
<td>
<div className='row'>
<div className='col-xs-6'>
<span>{`${blackListPaginate.offset + 1} - ${until} de ${blackListPaginate.total}`}</span>
</div>
<div className='col-xs-6'>
<div className='text-right'>
<button
className={'btn btn-info btn-sm'}
onClick={() => {
this.onChangePage('black', -1);
}
}
>
Anterior
</button>
<button
className={'btn btn-info btn-sm'}
onClick={() => {
this.onChangePage('black', 1);
}
}
>
Siguiente
</button>
</div>
</div>
</div>
</td>
);
}
} else {
blackList = (
<tr>
......@@ -214,7 +310,9 @@ export default class AntiSpam extends React.Component {
}
if (this.whiteList && this.whiteList.length > 0) {
whiteList = this.whiteList.map((white, i) => {
sliceList = this.whiteList.slice(whiteListPaginate.offset, whiteListPaginate.page * this.limit);
whiteList = sliceList.map((white, i) => {
return (
<tr
key={`white-${i}`}
......@@ -238,6 +336,43 @@ export default class AntiSpam extends React.Component {
</tr>
);
});
if (whiteListPaginate.total > this.limit) {
const until = (whiteListPaginate.page * this.limit) < whiteListPaginate.total ? whiteListPaginate.page * this.limit : whiteListPaginate.total;
whiteListControls = (
<td>
<div className='row'>
<div className='col-xs-6'>
<span>{`${whiteListPaginate.offset + 1} - ${until} de ${whiteListPaginate.total}`}</span>
</div>
<div className='col-xs-6'>
<div className='text-right'>
<button
className={'btn btn-info btn-sm'}
onClick={() => {
this.onChangePage('white', -1);
}
}
>
Anterior
</button>
<button
className={'btn btn-info btn-sm'}
onClick={() => {
this.onChangePage('white', 1);
}
}
>
Siguiente
</button>
</div>
</div>
</div>
</td>
);
}
} else {
whiteList = (
<tr>
......@@ -297,7 +432,13 @@ export default class AntiSpam extends React.Component {
</thead>
<tbody>
{whiteList}
{whiteList}
{whiteListControls && (
<tr>
{whiteListControls}
</tr>
)}
</tbody>
</table>
</div>
......@@ -350,7 +491,13 @@ export default class AntiSpam extends React.Component {
</thead>
<tbody>
{blackList}
{blackList}
{blackListControls && (
<tr>
{blackListControls}
</tr>
)}
</tbody>
</table>
</div>
......
......@@ -345,7 +345,7 @@ export default class DomainDetails extends React.Component {
zona_dns: zonaDNS
};
if (!this.isGlobalAdmin) {
/*if (!this.isGlobalAdmin) {
tabNames = ['Administradores', 'Listas De Distribución', 'Preferencias', 'Zona DNS'];
tabs = {
administradores: tabAdmin,
......@@ -353,7 +353,7 @@ export default class DomainDetails extends React.Component {
preferencias: tabPreferences,
zona_dns: zonaDNS
};
}
}*/
if (domain.isAliasDomain) {
tabNames = ['Zona DNS'];
......
......@@ -216,14 +216,26 @@ export default class Domains extends React.Component {
status = 'Activo';
statusClass += 'btn-info';
break;
case 'inactive':
status = 'Inactivo';
statusClass += 'btn-default';
case 'closed':
status = 'Cerrado';
statusClass += 'btn-primary';
break;
default:
status = 'Migrando';
case 'locked':
status = 'Bloqueado';
statusClass += 'btn-danger';
break;
case 'suspended':
status = 'Suspendido';
statusClass += 'btn-primary';
break;
case 'maintenance':
status = 'En Mantención';
statusClass += 'btn-warning2';
break;
default:
status = 'Desconocido';
statusClass += 'btn-danger';
break;
}
let mailboxes;
......
......@@ -76,8 +76,10 @@ function initZimbra() {
export function getClientConfig(success, error) {
return $.ajax({
url: 'https://manager-api.zboxapp.com/parse/functions/getConfigManager',
//url: './config/config.json',
dataType: 'json',
method: 'POST',
//method: 'GET',
headers: {
'X-Parse-Application-Id': 'salesZboxManagerApp'
},
......@@ -644,7 +646,10 @@ export function getAllCos(success, error) {
if (UserStore.isGlobalAdmin()) {
zimbra.getAllCos((err, data) => {
if (err) {
return error(handleError('getAllCos', err));
if (error && typeof error === 'function') {
error(handleError('getAllCos', err));
}
return;
}
return success(data);
});
......@@ -657,7 +662,10 @@ export function getAllCos(success, error) {
zimbra.makeBatchRequest(batchRequests, (err, data) => {
if (err) {
return error(handleError('getCos', err));
if (error && typeof error === 'function') {
error(handleError('getCos', err));
}
return;
}
const allCos = data.GetCosResponse.map((r) => {
return r.cos[0];
......@@ -667,7 +675,10 @@ export function getAllCos(success, error) {
}
},
(err) => {
return error(handleError('getAllCos', err));
if (error && typeof error === 'function') {
error(handleError('getAllCos', err));
}
return;
}
);
}
......
......@@ -40,7 +40,7 @@ var config = {
loaders: [
{
test: /\.jsx?$/,
loader: 'babel',
loader: 'babel-loader',
exclude: /(node_modules)/,
query: {
presets: ['react', 'es2015', 'stage-0'],
......@@ -88,12 +88,12 @@ var config = {
}),
htmlExtract,
new webpack.LoaderOptionsPlugin({
minimize: !DEV,
minimize: true,
debug: false
}),
new webpack.optimize.UglifyJsPlugin({
/*new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false }
})
})*/
],
resolve: {
alias: {
......@@ -112,15 +112,15 @@ var config = {
// Development mode configuration
if (DEV) {
if (FULLMAP) {
config.devtool = 'source-map';
//config.devtool = 'source-map';
} else {
config.devtool = 'eval-cheap-module-source-map';
//config.devtool = 'eval-cheap-module-source-map';
}
}
// Production mode configuration
if (!DEV) {
config.devtool = 'source-map';
//config.devtool = 'source-map';
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
'screw-ie8': true,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment