Commit 48a7327b authored by Juorder Antonio's avatar Juorder Antonio

Merge branch 'master' of https://github.com/ZBoxApp/manager-react

parents 34d41c73 b1bd98c2
......@@ -53,6 +53,7 @@ export default class Companies extends React.Component {
return Promise.all(domains).then((comps) => {
CompaniesStore.setCompanies(comps);
self.setState({
companies: comps
});
......@@ -102,7 +103,7 @@ export default class Companies extends React.Component {
return rej(err);
}
d.admins = admins;
d.admins = admins.account;
return solve(d);
});
});
......
......@@ -23,7 +23,9 @@ export default class CompanyAdmins extends React.Component {
if (domains) {
domains.forEach((d) => {
Reflect.apply(Array.prototype.push, admins, d.admins);
if (d.admins) {
Reflect.apply(Array.prototype.push, admins, d.admins);
}
});
}
......
......@@ -98,8 +98,7 @@ export default class CompaniesDetails extends React.Component {
if (err) {
return rej(err);
}
d.admins = admins;
d.admins = admins.account;
return solve(d);
});
});
......
......@@ -7,6 +7,8 @@ import * as GlobalActions from '../../action_creators/global_actions.jsx';
import * as Client from '../../utils/client.jsx';
import * as Utils from '../../utils/utils.jsx';
import Constants from '../../utils/constants.jsx';
import StatusLabel from '../status_label.jsx';
import {Modal} from 'react-bootstrap';
......@@ -34,18 +36,19 @@ export default class AddAdminModal extends React.Component {
GlobalActions.emitStartLoading();
Client.getAllAccounts(
{
query: `mail=*${query}*`,
domain: this.props.domain.name
query: `mail=*${query}*`
},
(data) => {
const admins = DomainStore.getAdmins(this.props.domain);
let users = [];
if (admins) {
data.account.forEach((u) => {
if (!admins.hasOwnProperty(u.id)) {
users.push(u);
}
});
if (data.account) {
data.account.forEach((u) => {
if (!admins.hasOwnProperty(u.id)) {
users.push(u);
}
});
}
} else {
users = data.account;
}
......@@ -65,8 +68,22 @@ export default class AddAdminModal extends React.Component {
}
handleAddAdmin(e, user) {
e.preventDefault();
console.log(user); //eslint-disable-line no-console
DomainStore.addAdmin(user);
this.props.domain.addAdmin(
user.name,
(error) => {
if (error) {
return this.setState({
error: {
message: error.extra.reason,
type: Constants.MessageType.ERROR
}
});
}
return DomainStore.addAdmin(user);
}
);
}
shouldComponentUpdate(nextProps, nextState) {
......
......@@ -5,12 +5,15 @@ import React from 'react';
import DomainStore from '../../stores/domain_store.jsx';
import MessageBar from '../message_bar.jsx';
import Panel from '../panel.jsx';
import ToggleModalButton from '../toggle_modal_button.jsx';
import AddAdminModal from './add_admin_modal.jsx';
import * as Utils from '../../utils/utils.jsx';
import Constants from '../../utils/constants.jsx';
export default class DomainAdminList extends React.Component {
constructor(props) {
super(props);
......@@ -28,7 +31,8 @@ export default class DomainAdminList extends React.Component {
}
getAdmins() {
const domain = this.props.domain;
domain.getAdmins((err, admins) => {
domain.getAdmins((err, data) => {
const admins = data.account || [];
DomainStore.setAdmins(domain, admins);
this.setState({admins});
});
......@@ -37,7 +41,21 @@ export default class DomainAdminList extends React.Component {
e.preventDefault();
if (confirm(`¿Seguro quieres eliminar a ${admin.name} como administrador del dominio?`)) { //eslint-disable-line no-alert
// previo a esto hay que remover el usuario como admin del dominio
DomainStore.removeAdmin(admin.id);
this.props.domain.removeAdmin(
admin.name,
(error) => {
if (error) {
return this.setState({
error: {
message: error.extra.reason,
type: Constants.MessageType.ERROR
}
});
}
return DomainStore.removeAdmin(admin.id);
}
);
}
}
onAdminsChange() {
......@@ -63,6 +81,20 @@ export default class DomainAdminList extends React.Component {
return <div/>;
}
let messageBar;
if (this.state.error) {
const error = this.state.error;
messageBar = (
<MessageBar
message={error.message}
type={error.type}
canClose={true}
autoclose={true}
autocloseInSecs={5}
/>
);
}
const domain = this.props.domain;
const adminRows = this.state.admins.map((a) => {
return (
......@@ -74,7 +106,7 @@ export default class DomainAdminList extends React.Component {
{a.name}
</td>
<td className='user-name text-center'>
{a.attrs.givenName}
{a.attrs.displayName}
</td>
<td className='user-type text-center'>
</td>
......@@ -155,6 +187,7 @@ export default class DomainAdminList extends React.Component {
<Panel
hasHeader={false}
children={adminContent}
error={messageBar}
/>
);
}
......
......@@ -30,7 +30,7 @@ export default class DomainDetails extends React.Component {
getDomain() {
const domain = DomainStore.getCurrent();
if (domain) {
if (domain && domain.id === this.props.params.id) {
GlobalActions.emitEndLoading();
this.setState({
domain
......@@ -39,6 +39,7 @@ export default class DomainDetails extends React.Component {
Client.getDomain(
this.props.params.id,
(data) => {
DomainStore.setCurrent(data);
this.setState({
domain: data
});
......
......@@ -171,8 +171,9 @@ export default class Mailboxes extends React.Component {
const arrLocked = [];
if (this.state.data) {
total = this.state.data.account.length;
tableResults = this.state.data.account.map((mail) => {
const accounts = this.state.data.account || [];
total = accounts.length;
tableResults = accounts.map((mail) => {
let attrs = mail.attrs;
let statusClass = '';
let status = attrs.zimbraAccountStatus;
......
......@@ -72,11 +72,13 @@ class DomainStoreClass extends EventEmitter {
const admins = {};
adminsArray.forEach((a) => {
admins[a.id] = a;
});
if (adminsArray) {
adminsArray.forEach((a) => {
admins[a.id] = a;
});
this.current.admins = admins;
this.current.admins = admins;
}
}
addAdmin(user) {
......
......@@ -11,8 +11,6 @@ import * as GlobalActions from '../action_creators/global_actions.jsx';
import * as Utils from './utils.jsx';
import Constants from './constants.jsx';
// arguments.callee.name
// función que maneja el error como corresponde
function handleError(methodName, err) {
if (err.extra &&
......@@ -474,3 +472,43 @@ export function search(query, success, error) {
}
);
}
export function batchRequest(requestArray, success, error) {
initZimbra().then(
(zimbra) => {
zimbra.makeBatchRequest(
requestArray,
(err, data) => {
if (err) {
const e = handleError('batchRequest', err);
return error(e);
}
return success(data);
});
},
(err) => {
const e = handleError('batchRequest', err);
return error(e);
}
);
}
export function getAllCos(success, error) {
initZimbra().then(
(zimbra) => {
zimbra.getAllCos((err, data) => {
if (err) {
const e = handleError('getAllCos', err);
return error(e);
}
return success(data);
});
},
(err) => {
const e = handleError('getAllCos', err);
return error(e);
}
);
}
......@@ -281,3 +281,17 @@ export function getPlansFromDomain(domain) {
export function titleCase(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
export function getEnabledPlansByCos(cosArray) {
const configPlans = global.window.manager_config.plans;
const plans = {};
cosArray.forEach((cos) => {
const key = cos.name;
if (configPlans.hasOwnProperty(key) && configPlans[key]) {
plans[key] = cos.id;
}
});
return plans;
}
......@@ -68,9 +68,6 @@ var config = {
}
]
},
sassLoader: {
includePaths: ['node_modules/compass-mixins/lib']
},
plugins: [
new CopyWebpackPlugin([
{from: 'src/config', to: 'config'}
......
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