Commit 54ee229e authored by Juorder Antonio's avatar Juorder Antonio

get mailquota from attrs, add missing atts inside config file, centralize status in constants.

parent 778b7ee7
......@@ -159,7 +159,7 @@ export default class AddAdminModal extends React.Component {
</td>
<td className='text-center'>
<a
className='btn btn-warning btn-xs'
className='btn btn-info btn-xs'
onClick={(e) => this.handleAddAdmin(e, u)}
>
{'Activar Admin'}
......
......@@ -75,7 +75,7 @@ export default class AntiSpam extends React.Component {
if (invalidInput.test(value)) {
EventStore.emitMessage({
message: 'El valor de esta lista no puede contener caracteres "Ñ".',
message: 'El valor de esta lista no puede contener caracteres especiales.',
typeError: MessageType.ERROR
});
return false;
......
......@@ -144,7 +144,7 @@ export default class CreateDomain extends React.Component {
if (!this.state.isGlobalAdmin) {
form = (
<div className='text-center'>
<h4>
<h4 className='text-danger'>
{'Lo sentimos pero usted no tiene permiso para crear dominios.'}
</h4>
</div>
......
......@@ -8,6 +8,7 @@ import Panel from '../panel.jsx';
import StatusLabel from '../status_label.jsx';
import CompanyStore from '../../stores/company_store.jsx';
import UserStore from '../../stores/user_store.jsx';
import * as Client from '../../utils/client.jsx';
import * as Utils from '../../utils/utils.jsx';
......@@ -21,6 +22,7 @@ export default class DomainGeneralInfo extends React.Component {
this.getMXRecord = this.getMXRecord.bind(this);
this.renovationDate = this.renovationDate.bind(this);
this.getCompany = this.getCompany.bind(this);
this.isGlobalAdmin = UserStore.isGlobalAdmin();
this.state = {
mx: null,
......@@ -80,6 +82,7 @@ export default class DomainGeneralInfo extends React.Component {
}
render() {
const domain = this.props.domain;
let editDomainButton = null;
const infoBody = (
<div className='row'>
<div className='col-md-12'>
......@@ -125,13 +128,15 @@ export default class DomainGeneralInfo extends React.Component {
</div>
);
const editDomainButton = [{
label: 'Editar',
props: {
className: 'btn btn-default btn-xs',
onClick: (e) => Utils.handleLink(e, `/domains/${this.props.params.id}/edit`, this.props.location)
}
}];
if (this.isGlobalAdmin) {
editDomainButton = [{
label: 'Editar',
props: {
className: 'btn btn-default btn-xs',
onClick: (e) => Utils.handleLink(e, `/domains/${this.props.params.id}/edit`, this.props.location)
}
}];
}
return (
<Panel
......
......@@ -7,6 +7,7 @@ import Panel from '../panel.jsx';
import CompanyStore from '../../stores/company_store.jsx';
import DomainStore from '../../stores/domain_store.jsx';
import UserStore from '../../stores/user_store.jsx';
import * as Client from '../../utils/client.jsx';
import * as Utils from '../../utils/utils.jsx';
......@@ -22,6 +23,7 @@ export default class EditDomain extends React.Component {
this.getDomain = this.getDomain.bind(this);
this.getCompanies = this.getCompanies.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
this.isGlobalAdmin = UserStore.isGlobalAdmin();
this.state = {};
}
......@@ -128,6 +130,7 @@ export default class EditDomain extends React.Component {
render() {
const domain = this.state.domain;
const error = this.state.error;
let form = null;
if (domain || error) {
const companies = this.state.companies;
......@@ -180,71 +183,72 @@ export default class EditDomain extends React.Component {
// </div>
// </div>
const form = (
<form
className='simple_form form-horizontal mailbox-form'
onSubmit={this.handleSubmit}
>
<div className='form-group string required'>
<label className='string required col-sm-3 control-label'>
<abbr title='requerido'>{'*'}</abbr>
{'Nombre'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
ref='domainName'
value={domain.name}
disabled='disabled'
/>
if (this.isGlobalAdmin) {
form = (
<form
className='simple_form form-horizontal mailbox-form'
onSubmit={this.handleSubmit}
>
<div className='form-group string required'>
<label className='string required col-sm-3 control-label'>
<abbr title='requerido'>{'*'}</abbr>
{'Nombre'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
ref='domainName'
value={domain.name}
disabled='disabled'
/>
</div>
</div>
</div>
{lastRenovation}
<div className='form-group string'>
<label className='string required col-sm-3 control-label'>
<abbr title='requerido'>{'*'}</abbr>
{'Empresa'}
</label>
<div className='col-sm-8'>
<select
className='form-control select required'
data-required='true'
data-message='Debe especificar a que empresa corresponde el dominio'
ref='company'
defaultValue={domain.attrs.businessCategory}
>
{companiesOptions}
</select>
{lastRenovation}
<div className='form-group string'>
<label className='string required col-sm-3 control-label'>
<abbr title='requerido'>{'*'}</abbr>
{'Empresa'}
</label>
<div className='col-sm-8'>
<select
className='form-control select required'
data-required='true'
data-message='Debe especificar a que empresa corresponde el dominio'
ref='company'
defaultValue={domain.attrs.businessCategory}
>
{companiesOptions}
</select>
</div>
</div>
</div>
<div className='form-group string'>
<label className='string col-sm-3 control-label'>
{'Descripción'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
ref='description'
placeholder='Descripción del dominio'
defaultValue={domain.attrs.description}
/>
<div className='form-group string'>
<label className='string col-sm-3 control-label'>
{'Descripción'}
</label>
<div className='col-sm-8'>
<input
type='text'
className='form-control'
ref='description'
placeholder='Descripción del dominio'
defaultValue={domain.attrs.description}
/>
</div>
</div>
</div>
<div className='form-group string'>
<label className='string col-sm-3 control-label'>
{'Notas'}
</label>
<div className='form-group string'>
<label className='string col-sm-3 control-label'>
{'Notas'}
</label>
<div className='col-sm-8'>
<div className='col-sm-8'>
<Textarea
className='form-control'
ref='notes'
......@@ -253,28 +257,37 @@ export default class EditDomain extends React.Component {
minRows={3}
maxRows={9}
/>
</div>
</div>
</div>
<div className='form-group'>
<div className='col-sm-8 col-sm-offset-3'>
<input
type='submit'
name='commit'
value='Guardar'
className='btn btn-info'
/>
<a
href='#'
className='btn btn-default'
onClick={(e) => Utils.handleLink(e, `/domains/${domain.id}`)}
>
{'Cancelar'}
</a>
<div className='form-group'>
<div className='col-sm-8 col-sm-offset-3'>
<input
type='submit'
name='commit'
value='Guardar'
className='btn btn-info'
/>
<a
href='#'
className='btn btn-default'
onClick={(e) => Utils.handleLink(e, `/domains/${domain.id}`)}
>
{'Cancelar'}
</a>
</div>
</div>
</form>
);
} else {
form = (
<div className='text-center'>
<h4 className='text-danger'>
{'Lo sentimos pero usted no tiene permiso para editar dominios.'}
</h4>
</div>
</form>
);
);
}
const actions = [
{
......
......@@ -86,6 +86,14 @@ export default class CreateDomainForm extends React.Component {
const name = this.refs.domainName.value.trim();
const businessCategory = this.refs.company.value.trim();
const zimbraDomainStatus = this.refs.zimbraDomainStatus.value.trim();
const isDomain = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/gi;
if (!isDomain.test(name)) {
return GlobalActions.emitMessage({
message: 'No se permite caracteres especiales en un dominio, por favor verificar.',
typeError: MessageType.ERROR
});
}
plans.forEach((p) => {
zimbraDomainCOSMaxAccounts.push(`${this.refs[`plan-${p}`].getAttribute('data-id')}:${this.refs[`plan-${p}`].value || 0}`);
......
......@@ -246,6 +246,21 @@ export default class CreateMailBox extends React.Component {
domains.push(object[limit].name);
}
const options = Object.keys(Constants.status).map((option, i) => {
if (Constants.status[option].isEnabledOnCreate) {
return (
<option
value={option}
key={`option-plan-${i}`}
>
{Constants.status[option].label}
</option>
);
}
return null;
});
for (let plan in plans) {
if (plans.hasOwnProperty(plan)) {
const item = (
......@@ -364,9 +379,7 @@ export default class CreateMailBox extends React.Component {
className='form-control'
ref='zimbraAccountStatus'
>
<option value='active'>Activa</option>
<option value='closed'>Cerrada</option>
<option value='locked'>Bloqueada</option>
{options}
</select>
</div>
</div>
......
......@@ -51,12 +51,7 @@ export default class Mailboxes extends React.Component {
this.cos = Utils.getEnabledPlansByCos(ZimbraStore.getAllCos());
this.cosById = Utils.getEnabledPlansByCosId(ZimbraStore.getAllCos());
this.isRefreshing = true;
this.optionStatus = {
active: 'Active',
locked: 'Inactiva',
lockout: 'Bloqueada',
closed: 'Cerrada'
};
this.optionStatus = Constants.status;
this.optionPlans = window.manager_config.plans;
this.domainId = null;
this.domainName = null;
......@@ -602,7 +597,7 @@ export default class Mailboxes extends React.Component {
key={`status-${i}`}
value={`${item}`}
>
{Utils.titleCase(this.optionStatus[item])}
{Utils.titleCase(this.optionStatus[item].label)}
</option>
);
});
......
//import ZimbraStore from '../../stores/zimbra_store.jsx';
import React from 'react';
import * as Utils from '../../utils/utils.jsx';
import ZimbraStore from '../../stores/zimbra_store.jsx';
import bytesConvertor from 'bytes';
import Constants from '../../utils/constants.jsx';
export default class BlockGeneralInfoMailbox extends React.Component {
constructor(props) {
//this.sizeEnabled = Utils.getEnabledPlansObjectByCos(ZimbraStore.getAllCos(), this.props.data.attrs.zimbraCOSId);
super(props);
this.date = null;
this.status = null;
this.className = null;
this.lastConection = 'No se ha conectado';
this.getMailSize = this.getMailSize.bind(this);
this.sizeEnabled = Utils.getEnabledPlansObjectByCos(ZimbraStore.getAllCos(), this.props.data.attrs.zimbraCOSId);
console.log('cosID', this.props.data.attrs.zimbraCOSId); //eslint-disable-line no-console
console.log('all cos', ZimbraStore.getAllCos()); //eslint-disable-line no-console
this.state = {};
}
......@@ -34,24 +33,11 @@ export default class BlockGeneralInfoMailbox extends React.Component {
componentWillMount() {
this.date = Utils.dateFormatted(this.props.data.attrs.zimbraCreateTimestamp);
switch (this.props.data.attrs.zimbraAccountStatus) {
case 'lockout':
this.status = 'Bloqueada';
this.className = 'label-locked mailbox-status';
break;
case 'active':
this.status = 'Activa';
this.className = 'label-success mailbox-status';
break;
case 'closed':
this.status = 'Cerrada';
this.className = 'label-default mailbox-status';
break;
case 'locked':
this.status = 'Inactiva';
this.className = 'label-warning mailbox-status';
break;
default:
const status = this.props.data.attrs.zimbraAccountStatus;
if (Constants.status[status]) {
this.status = Constants.status[status].label;
this.className = Constants.status[status].classes;
}
if (this.props.data.attrs.zimbraLastLogonTimestamp) {
......@@ -68,9 +54,10 @@ export default class BlockGeneralInfoMailbox extends React.Component {
if (this.state.size) {
size = this.state.size;
}
console.log(this.sizeEnabled); //eslint-disable-line no-console
if (this.sizeEnabled.hasOwnProperty('attrs') && this.sizeEnabled.attrs.zimbraMailQuota) {
const sizeOfPlan = typeof this.sizeEnabled.attrs.zimbraMailQuota === 'string' ? parseInt(this.sizeEnabled.attrs.zimbraMailQuota, 10) : this.sizeEnabled.attrs.zimbraMailQuota;
if (this.props.data.attrs.zimbraMailQuota) {
const attrs = this.props.data.attrs;
const sizeOfPlan = typeof attrs.zimbraMailQuota === 'string' ? parseInt(attrs.zimbraMailQuota, 10) : attrs.zimbraMailQuota;
sizeEnaled = (sizeOfPlan) ? bytesConvertor(sizeOfPlan) : 'Ilimitado';
}
......
......@@ -54,6 +54,7 @@
"zimbraCOSId": true,
"zimbraAccountStatus": true,
"zimbraMailHost": true,
"zimbraMailQuota": true,
"zimbraArchiveAccount": true,
"zimbraMailAlias": true,
"zimbraPrefOutOfOfficeReplyEnabled": true,
......
......@@ -105,5 +105,27 @@ export default {
'TSIG',
'TXT',
'WKS'
]
],
status: {
active: {
label: 'Activa',
isEnabledOnCreate: true,
classes: 'label-success mailbox-status'
},
locked: {
label: 'Inactiva',
isEnabledOnCreate: true,
classes: 'label-warning mailbox-status'
},
lockout: {
label: 'Bloqueada',
isEnabledOnCreate: false,
classes: 'label-warning mailbox-status'
},
closed: {
label: 'Cerrada',
isEnabledOnCreate: true,
classes: 'label-default mailbox-status'
}
}
};
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