Skip to content
Snippets Groups Projects
To find the state of this project's repository at the time of any of these versions, check out the tags.
News.js 2.48 KiB
import React, { Component } from 'react';
import { Container, Segment, Item, Button, Grid } from 'semantic-ui-react';
import { connect } from 'react-redux';
import moment from 'moment';

import AddNewsForm from '../forms/AddNewsForm';
import EditNewsForm from '../forms/EditNewsForm';

import { getNews, deleteNews, setSelectedNews } from '../../actions/news';

import './News.css';

class News extends Component {
  componentWillMount() {
    this.props.getNews();
  }

  renderNews() {
    return this.props.news.map(item => (
      <Item key={item.id}>
        <Item.Content>
          <Item.Header
            as='h3'
            style={{ fontSize: '2em' }}
          >
            {item.title}
            <EditNewsForm
              floated='right'
              onClick={() => this.props.setSelectedNews(item)}
            />
            <Button
              color='red'
              size='mini'
              floated='right'
              onClick={() => this.props.deleteNews(item)}
            >
            Delete
            </Button>
          </Item.Header>
          <Item.Description style={{ fontSize: '1.33em' }}>
            <pre>{item.text}</pre>
          </Item.Description>
          <Item.Extra>
            <Grid>
              <Grid.Row className='news-extra'>
                <Grid.Column floated='left' width={10}>
                  <p> Készült: {moment(item.created_at).format('LLLL')} </p>
                  {/* TODO get the time when was edited */}
                  <p> Szerkesztve: {moment(item.updated_at).format('LLLL')}</p>
                </Grid.Column>
                <Grid.Column floated='right' width={5}>
                  <p> Írta: <strong>{item.author_name}</strong></p>
                  {/* TODO get the edited by name */}
                  <p> Szerkesztette: {item.author_name}</p>
                </Grid.Column>
              </Grid.Row>
            </Grid>
          </Item.Extra>
        </Item.Content>
      </Item>
    ));
  }

  render() {
    return (
      <div>

        <Segment style={{ padding: '3em 3em' }} vertical>
          {/*  { this.props.user.is_superuser ? <AddNewsForm /> : ''} */}
          <AddNewsForm />
          <Container text textAlign='center'>
            <Item.Group divided>
              {this.renderNews()}
            </Item.Group>
          </Container>
        </Segment>
      </div>
    );
  }
}


const mapStateToProps = ({ news, user }) => ({ news, user });

export default connect(mapStateToProps, { getNews, deleteNews, setSelectedNews })(News);