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 1478881770
\ No newline at end of file \ No newline at end of file
module.exports = {"main":{"js":"/018497bundle.js"}} module.exports = {"main":{"js":"/209210bundle.js"}}
\ No newline at end of file \ No newline at end of file
...@@ -23,6 +23,7 @@ export default class AntiSpam extends React.Component { ...@@ -23,6 +23,7 @@ export default class AntiSpam extends React.Component {
this.domain = this.isStoreEnabled ? DomainStore.getCurrent() : this.props.data; this.domain = this.isStoreEnabled ? DomainStore.getCurrent() : this.props.data;
this.blackList = []; this.blackList = [];
this.whiteList = []; this.whiteList = [];
this.limit = 10;
if (this.domain.attrs.amavisBlacklistSender) { if (this.domain.attrs.amavisBlacklistSender) {
this.blackList = Array.isArray(this.domain.attrs.amavisBlacklistSender) ? this.domain.attrs.amavisBlacklistSender : this.domain.attrs.amavisBlacklistSender.trim().split(' '); 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 { ...@@ -31,6 +32,42 @@ export default class AntiSpam extends React.Component {
if (this.domain.attrs.amavisWhitelistSender) { if (this.domain.attrs.amavisWhitelistSender) {
this.whiteList = Array.isArray(this.domain.attrs.amavisWhitelistSender) ? this.domain.attrs.amavisWhitelistSender : this.domain.attrs.amavisWhitelistSender.trim().split(' '); 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) { handleDelete(e, item, action) {
...@@ -64,7 +101,7 @@ export default class AntiSpam extends React.Component { ...@@ -64,7 +101,7 @@ export default class AntiSpam extends React.Component {
handleSave(e, action) { handleSave(e, action) {
const attrs = {}; 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 isDomain = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/;
const invalidInput = /ñ/gi; const invalidInput = /ñ/gi;
const target = action === 'black' ? 'lista negra' : 'lista blanca'; const target = action === 'black' ? 'lista negra' : 'lista blanca';
...@@ -154,8 +191,26 @@ export default class AntiSpam extends React.Component { ...@@ -154,8 +191,26 @@ export default class AntiSpam extends React.Component {
this.whiteList = returns; 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({ this.setState({
update: true [action + 'ListPaginate']: newState
}); });
}).catch((err) => { }).catch((err) => {
EventStore.emitMessage({ EventStore.emitMessage({
...@@ -177,9 +232,15 @@ export default class AntiSpam extends React.Component { ...@@ -177,9 +232,15 @@ export default class AntiSpam extends React.Component {
render() { render() {
let whiteList = null; let whiteList = null;
let blackList = 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) { 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 ( return (
<tr <tr
key={`black-${i}`} key={`black-${i}`}
...@@ -203,6 +264,41 @@ export default class AntiSpam extends React.Component { ...@@ -203,6 +264,41 @@ export default class AntiSpam extends React.Component {
</tr> </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 { } else {
blackList = ( blackList = (
<tr> <tr>
...@@ -214,7 +310,9 @@ export default class AntiSpam extends React.Component { ...@@ -214,7 +310,9 @@ export default class AntiSpam extends React.Component {
} }
if (this.whiteList && this.whiteList.length > 0) { 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 ( return (
<tr <tr
key={`white-${i}`} key={`white-${i}`}
...@@ -238,6 +336,43 @@ export default class AntiSpam extends React.Component { ...@@ -238,6 +336,43 @@ export default class AntiSpam extends React.Component {
</tr> </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 { } else {
whiteList = ( whiteList = (
<tr> <tr>
...@@ -298,6 +433,12 @@ export default class AntiSpam extends React.Component { ...@@ -298,6 +433,12 @@ export default class AntiSpam extends React.Component {
<tbody> <tbody>
{whiteList} {whiteList}
{whiteListControls && (
<tr>
{whiteListControls}
</tr>
)}
</tbody> </tbody>
</table> </table>
</div> </div>
...@@ -351,6 +492,12 @@ export default class AntiSpam extends React.Component { ...@@ -351,6 +492,12 @@ export default class AntiSpam extends React.Component {
<tbody> <tbody>
{blackList} {blackList}
{blackListControls && (
<tr>
{blackListControls}
</tr>
)}
</tbody> </tbody>
</table> </table>
</div> </div>
......
...@@ -345,7 +345,7 @@ export default class DomainDetails extends React.Component { ...@@ -345,7 +345,7 @@ export default class DomainDetails extends React.Component {
zona_dns: zonaDNS zona_dns: zonaDNS
}; };
if (!this.isGlobalAdmin) { /*if (!this.isGlobalAdmin) {
tabNames = ['Administradores', 'Listas De Distribución', 'Preferencias', 'Zona DNS']; tabNames = ['Administradores', 'Listas De Distribución', 'Preferencias', 'Zona DNS'];
tabs = { tabs = {
administradores: tabAdmin, administradores: tabAdmin,
...@@ -353,7 +353,7 @@ export default class DomainDetails extends React.Component { ...@@ -353,7 +353,7 @@ export default class DomainDetails extends React.Component {
preferencias: tabPreferences, preferencias: tabPreferences,
zona_dns: zonaDNS zona_dns: zonaDNS
}; };
} }*/
if (domain.isAliasDomain) { if (domain.isAliasDomain) {
tabNames = ['Zona DNS']; tabNames = ['Zona DNS'];
......
...@@ -216,14 +216,26 @@ export default class Domains extends React.Component { ...@@ -216,14 +216,26 @@ export default class Domains extends React.Component {
status = 'Activo'; status = 'Activo';
statusClass += 'btn-info'; statusClass += 'btn-info';
break; break;
case 'inactive': case 'closed':
status = 'Inactivo'; status = 'Cerrado';
statusClass += 'btn-default'; statusClass += 'btn-primary';
break; break;
default: case 'locked':
status = 'Migrando'; status = 'Bloqueado';
statusClass += 'btn-danger';
break;
case 'suspended':
status = 'Suspendido';
statusClass += 'btn-primary';
break;
case 'maintenance':
status = 'En Mantención';
statusClass += 'btn-warning2'; statusClass += 'btn-warning2';
break; break;
default:
status = 'Desconocido';
statusClass += 'btn-danger';
break;
} }
let mailboxes; let mailboxes;
......
...@@ -76,8 +76,10 @@ function initZimbra() { ...@@ -76,8 +76,10 @@ function initZimbra() {
export function getClientConfig(success, error) { export function getClientConfig(success, error) {
return $.ajax({ return $.ajax({
url: 'https://manager-api.zboxapp.com/parse/functions/getConfigManager', url: 'https://manager-api.zboxapp.com/parse/functions/getConfigManager',
//url: './config/config.json',
dataType: 'json', dataType: 'json',
method: 'POST', method: 'POST',
//method: 'GET',
headers: { headers: {
'X-Parse-Application-Id': 'salesZboxManagerApp' 'X-Parse-Application-Id': 'salesZboxManagerApp'
}, },
...@@ -644,7 +646,10 @@ export function getAllCos(success, error) { ...@@ -644,7 +646,10 @@ export function getAllCos(success, error) {
if (UserStore.isGlobalAdmin()) { if (UserStore.isGlobalAdmin()) {
zimbra.getAllCos((err, data) => { zimbra.getAllCos((err, data) => {
if (err) { if (err) {
return error(handleError('getAllCos', err)); if (error && typeof error === 'function') {
error(handleError('getAllCos', err));
}
return;
} }
return success(data); return success(data);
}); });
...@@ -657,7 +662,10 @@ export function getAllCos(success, error) { ...@@ -657,7 +662,10 @@ export function getAllCos(success, error) {
zimbra.makeBatchRequest(batchRequests, (err, data) => { zimbra.makeBatchRequest(batchRequests, (err, data) => {
if (err) { if (err) {
return error(handleError('getCos', err)); if (error && typeof error === 'function') {
error(handleError('getCos', err));
}
return;
} }
const allCos = data.GetCosResponse.map((r) => { const allCos = data.GetCosResponse.map((r) => {
return r.cos[0]; return r.cos[0];
...@@ -667,7 +675,10 @@ export function getAllCos(success, error) { ...@@ -667,7 +675,10 @@ export function getAllCos(success, error) {
} }
}, },
(err) => { (err) => {
return error(handleError('getAllCos', err)); if (error && typeof error === 'function') {
error(handleError('getAllCos', err));
}
return;
} }
); );
} }
......
...@@ -40,7 +40,7 @@ var config = { ...@@ -40,7 +40,7 @@ var config = {
loaders: [ loaders: [
{ {
test: /\.jsx?$/, test: /\.jsx?$/,
loader: 'babel', loader: 'babel-loader',
exclude: /(node_modules)/, exclude: /(node_modules)/,
query: { query: {
presets: ['react', 'es2015', 'stage-0'], presets: ['react', 'es2015', 'stage-0'],
...@@ -88,12 +88,12 @@ var config = { ...@@ -88,12 +88,12 @@ var config = {
}), }),
htmlExtract, htmlExtract,
new webpack.LoaderOptionsPlugin({ new webpack.LoaderOptionsPlugin({
minimize: !DEV, minimize: true,
debug: false debug: false
}), }),
new webpack.optimize.UglifyJsPlugin({ /*new webpack.optimize.UglifyJsPlugin({
compress: { warnings: false } compress: { warnings: false }
}) })*/
], ],
resolve: { resolve: {
alias: { alias: {
...@@ -112,15 +112,15 @@ var config = { ...@@ -112,15 +112,15 @@ var config = {
// Development mode configuration // Development mode configuration
if (DEV) { if (DEV) {
if (FULLMAP) { if (FULLMAP) {
config.devtool = 'source-map'; //config.devtool = 'source-map';
} else { } else {
config.devtool = 'eval-cheap-module-source-map'; //config.devtool = 'eval-cheap-module-source-map';
} }
} }
// Production mode configuration // Production mode configuration
if (!DEV) { if (!DEV) {
config.devtool = 'source-map'; //config.devtool = 'source-map';
config.plugins.push( config.plugins.push(
new webpack.optimize.UglifyJsPlugin({ new webpack.optimize.UglifyJsPlugin({
'screw-ie8': true, '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