Commit 12560b80 authored by Juorder Gonzalez's avatar Juorder Gonzalez

Merge pull request #98 from ZBoxApp/issues_resolved_manager

add store functionality to companies, and show or hide if user is glo…
parents 1cb0e59a 2b316059
module.exports = {"main":{"js":"/263980bundle.js"}} module.exports = {"main":{"js":"/699779bundle.js"}}
\ No newline at end of file \ No newline at end of file
...@@ -11,6 +11,8 @@ import Panel from '../panel.jsx'; ...@@ -11,6 +11,8 @@ import Panel from '../panel.jsx';
import CompaniesStore from '../../stores/company_store.jsx'; import CompaniesStore from '../../stores/company_store.jsx';
import ZimbraStore from '../../stores/zimbra_store.jsx'; import ZimbraStore from '../../stores/zimbra_store.jsx';
import UserStore from '../../stores/user_store.jsx';
import DomainStore from '../../stores/domain_store.jsx';
import * as Client from '../../utils/client.jsx'; import * as Client from '../../utils/client.jsx';
import * as Utils from '../../utils/utils.jsx'; import * as Utils from '../../utils/utils.jsx';
...@@ -30,6 +32,8 @@ export default class Companies extends React.Component { ...@@ -30,6 +32,8 @@ export default class Companies extends React.Component {
this.getDomains = this.getDomains.bind(this); this.getDomains = this.getDomains.bind(this);
this.getPlans = this.getPlans.bind(this); this.getPlans = this.getPlans.bind(this);
this.gotoCompany = this.gotoCompany.bind(this); this.gotoCompany = this.gotoCompany.bind(this);
this.isGlobalAdmin = UserStore.isGlobalAdmin();
} }
gotoCompany(e, company) { gotoCompany(e, company) {
...@@ -47,6 +51,9 @@ export default class Companies extends React.Component { ...@@ -47,6 +51,9 @@ export default class Companies extends React.Component {
return GlobalActions.emitEndLoading(); return GlobalActions.emitEndLoading();
} }
const mydomain = UserStore.getCurrentUser().name.split('@').pop();
if (this.isGlobalAdmin) {
return Client.getAllCompanies().then((data) => { return Client.getAllCompanies().then((data) => {
const domains = data.map((company) => { const domains = data.map((company) => {
return self.getDomains(company); return self.getDomains(company);
...@@ -72,6 +79,39 @@ export default class Companies extends React.Component { ...@@ -72,6 +79,39 @@ export default class Companies extends React.Component {
}); });
} }
if (DomainStore.getDomains()) {
const domain = DomainStore.getDomainByName(mydomain);
Client.getCompany(domain.attrs.businessCategory, (company) => {
CompaniesStore.setCompanies(company);
}, (error) => {
self.setState({error: {
message: error,
type: messageTypes.ERROR
}});
});
} else {
Client.getDomain(mydomain, (dom) => {
Client.getCompany(dom.attrs.businessCategory, (company) => {
self.setState({
companies: company
});
}, (error) => {
self.setState({error: {
message: error,
type: messageTypes.ERROR
}});
});
}, (error) => {
self.setState({
error,
type: messageTypes.ERROR
});
});
}
return GlobalActions.emitEndLoading();
}
getDomains(company) { getDomains(company) {
const self = this; const self = this;
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
......
...@@ -7,6 +7,8 @@ import DNSZoneForm from './multiform/dns_form.jsx'; ...@@ -7,6 +7,8 @@ import DNSZoneForm from './multiform/dns_form.jsx';
import DomainStore from '../../stores/domain_store.jsx'; import DomainStore from '../../stores/domain_store.jsx';
import EventStore from '../../stores/event_store.jsx'; import EventStore from '../../stores/event_store.jsx';
import MessageBar from '../message_bar.jsx'; import MessageBar from '../message_bar.jsx';
import UserStore from '../../stores/user_store.jsx';
import * as GlobalActions from '../../action_creators/global_actions.jsx';
export default class CreateDomain extends React.Component { export default class CreateDomain extends React.Component {
constructor(props) { constructor(props) {
...@@ -15,6 +17,7 @@ export default class CreateDomain extends React.Component { ...@@ -15,6 +17,7 @@ export default class CreateDomain extends React.Component {
this.getNextStep = this.getNextStep.bind(this); this.getNextStep = this.getNextStep.bind(this);
this.showMessage = this.showMessage.bind(this); this.showMessage = this.showMessage.bind(this);
this.isGlobalAdmin = UserStore.isGlobalAdmin();
this.multiform = window.manager_config.multiFormDomain; this.multiform = window.manager_config.multiFormDomain;
let total = 1; let total = 1;
...@@ -30,7 +33,8 @@ export default class CreateDomain extends React.Component { ...@@ -30,7 +33,8 @@ export default class CreateDomain extends React.Component {
this.state = { this.state = {
step: 1, step: 1,
total total,
isGlobalAdmin: this.isGlobalAdmin
}; };
} }
...@@ -56,6 +60,7 @@ export default class CreateDomain extends React.Component { ...@@ -56,6 +60,7 @@ export default class CreateDomain extends React.Component {
componentDidMount() { componentDidMount() {
DomainStore.addNextStepListener(this.getNextStep); DomainStore.addNextStepListener(this.getNextStep);
EventStore.addMessageListener(this.showMessage); EventStore.addMessageListener(this.showMessage);
GlobalActions.emitEndLoading();
} }
componentWillUnmount() { componentWillUnmount() {
...@@ -73,7 +78,9 @@ export default class CreateDomain extends React.Component { ...@@ -73,7 +78,9 @@ export default class CreateDomain extends React.Component {
width: `${width}%` width: `${width}%`
}; };
let error = null; let error = null;
let actions = null;
if (this.state.isGlobalAdmin) {
if (this.state.error) { if (this.state.error) {
error = ( error = (
<MessageBar <MessageBar
...@@ -111,7 +118,7 @@ export default class CreateDomain extends React.Component { ...@@ -111,7 +118,7 @@ export default class CreateDomain extends React.Component {
} }
//onClick: (e) => Utils.handleLink(e, backUrl) //onClick: (e) => Utils.handleLink(e, backUrl)
const actions = [ actions = [
{ {
label: 'Cancelar', label: 'Cancelar',
props: { props: {
...@@ -132,8 +139,23 @@ export default class CreateDomain extends React.Component { ...@@ -132,8 +139,23 @@ export default class CreateDomain extends React.Component {
</div> </div>
); );
} }
}
if (!this.state.isGlobalAdmin) {
form = (
<div className='text-center'>
<h4>
{'Lo sentimos pero usted no tiene permiso para crear dominios.'}
</h4>
</div>
);
}
return ( return (
<div>
<div className='content animate-panel'>
<div className='row'>
<div className='col-md-12 panel-with-tabs'>
<Panel <Panel
title={'Agregar Dominio'} title={'Agregar Dominio'}
classHeader={'forum-box'} classHeader={'forum-box'}
...@@ -143,6 +165,10 @@ export default class CreateDomain extends React.Component { ...@@ -143,6 +165,10 @@ export default class CreateDomain extends React.Component {
{progressForm} {progressForm}
{form} {form}
</Panel> </Panel>
</div>
</div>
</div>
</div>
); );
} }
} }
......
...@@ -33,8 +33,10 @@ export default class SearchView extends React.Component { ...@@ -33,8 +33,10 @@ export default class SearchView extends React.Component {
loading: true loading: true
}); });
Client.search({ Client.search({
maxResults: window.manager_config.maxResultOnRequestZimbra,
query: `(|(mail=*${query}*)(cn=*${query}*)(sn=*${query}*)(gn=*${query}*)(displayName=*${query}*)(zimbraMailDeliveryAddress=*${query}*)(zimbraDomainName=*${query}*)(uid=*${query}*)(zimbraMailAlias=*${query}*)(uid=*${query}*)(zimbraDomainName=*${query}*)(cn=*${query}*))`, query: `(|(mail=*${query}*)(cn=*${query}*)(sn=*${query}*)(gn=*${query}*)(displayName=*${query}*)(zimbraMailDeliveryAddress=*${query}*)(zimbraDomainName=*${query}*)(uid=*${query}*)(zimbraMailAlias=*${query}*)(uid=*${query}*)(zimbraDomainName=*${query}*)(cn=*${query}*))`,
types: 'accounts,distributionlists,domains' types: 'accounts,distributionlists,domains',
attrs: 'objectClass'
}, (success) => { }, (success) => {
const result = []; const result = [];
...@@ -55,7 +57,8 @@ export default class SearchView extends React.Component { ...@@ -55,7 +57,8 @@ export default class SearchView extends React.Component {
return this.setState({ return this.setState({
result, result,
loading: false loading: false,
notfound: false
}); });
}, (error) => { }, (error) => {
console.log(error); //eslint-disable-line no-console console.log(error); //eslint-disable-line no-console
...@@ -131,6 +134,7 @@ export default class SearchView extends React.Component { ...@@ -131,6 +134,7 @@ export default class SearchView extends React.Component {
<tr <tr
key={id} key={id}
className={'mailbox-row'} className={'mailbox-row'}
onClick={(e) => Utils.handleLink(e, url)}
> >
<td className={'mailbox-name'}> <td className={'mailbox-name'}>
{tipo} {tipo}
...@@ -166,7 +170,7 @@ export default class SearchView extends React.Component { ...@@ -166,7 +170,7 @@ export default class SearchView extends React.Component {
id='index-domains' id='index-domains'
cellPadding='1' cellPadding='1'
cellSpacing='1' cellSpacing='1'
className='table table-condensed table-striped vertical-align index-mailbox-table' className='table table-condensed table-striped vertical-align index-mailbox-table table-search'
> >
<thead> <thead>
<tr> <tr>
......
.margin-left { .margin-left {
margin-left: 5px; margin-left: 5px;
} }
.table-search {
.mailbox-row {
transition: background-color .5s;
&:hover {
background-color: $color-background;
cursor: pointer;
}
}
}
...@@ -18,6 +18,7 @@ class DomainStoreClass extends EventEmitter { ...@@ -18,6 +18,7 @@ class DomainStoreClass extends EventEmitter {
resetThisStore() { resetThisStore() {
this.current = null; this.current = null;
this.domains = null;
this.distributionListOwners = null; this.distributionListOwners = null;
this.distributionListMembers = null; this.distributionListMembers = null;
this.zoneDNS = null; this.zoneDNS = null;
...@@ -39,6 +40,24 @@ class DomainStoreClass extends EventEmitter { ...@@ -39,6 +40,24 @@ class DomainStoreClass extends EventEmitter {
return null; return null;
} }
getDomainByName(name) {
if (this.domains) {
const data = this.domains.domain;
if (data) {
let length = data.length;
for (;length-- > 0;) {
if (data[length].name === name) {
return data[length];
}
}
}
}
return null;
}
getCurrent() { getCurrent() {
return this.current; return this.current;
} }
......
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