react_comments-8.x-1.0-beta2/js/src/src/components/CommentMenu.js

js/src/src/components/CommentMenu.js
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import Constants from '../utils/constants';
import Caret from '../icons/caret-down';

class CommentMenu extends Component {

    documentClick = (e) => {
        const menu = ReactDOM.findDOMNode(this.refs.menu);
        const toggle = ReactDOM.findDOMNode(this.refs.toggle);

        if (menu && toggle && !menu.contains(e.target) && this.props.id === this.props.openMenu && !toggle.contains(e.target)) {
            this.props.toggleMenu(this.props.id);
        }
    };

    componentWillMount() {
        document.addEventListener('click', this.documentClick, false);
    }

    componentWillUnmount() {
        document.removeEventListener('click', this.documentClick, false);
    }

    render() {
        const {user, currentUser, id, openMenu, closeMenu, toggleMenu, flagComment, deleteComment, publishComment, unpublishComment, status, published} = this.props;
        const userCanDeleteComment = currentUser && !currentUser.isAnon && currentUser.hasPermission('edit own comments') && (user.id === currentUser.id);
        const userCanAdministerComments = currentUser && currentUser.hasPermission('administer comments');
        const userCanFlagComment = currentUser && currentUser.hasPermission('restful put comment');

        const menuItems = [];
        if (userCanAdministerComments && (published === '0')) menuItems.push(<li onClick={() => {publishComment(id); closeMenu();}}>{window.Drupal.t('Publish')}</li>);
        if (userCanAdministerComments && (published === '1')) menuItems.push(<li onClick={() => {unpublishComment(id); closeMenu();}}>{window.Drupal.t('Unpublish')}</li>);
        if (userCanAdministerComments || userCanDeleteComment) menuItems.push(<li onClick={() => {deleteComment(id); closeMenu();}}>{window.Drupal.t('Delete')}</li>);
        if (userCanFlagComment) menuItems.push(status !== Constants.flagged ? <li onClick={() => {flagComment(id); closeMenu();}}>{window.Drupal.t('Flag as inappropriate')}</li> : <li>{window.Drupal.t('Flagged')}</li>);

        return menuItems.length > 0 ? (
            <div className="rc_comment-menu-wrapper">
                <div ref="toggle"
                     className="rc_comment-menu-toggle"
                     onClick={(e) => { e.preventDefault(); toggleMenu(id);}}><Caret /></div>
                <ul ref="menu"
                    className={(id === openMenu) ? 'rc_comment-menu rc_comment-menu--active' : 'rc_comment-menu'} >
                    { menuItems }
                </ul>
            </div>
        ) : null;
    }

}

export default CommentMenu;

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc