import Telescope from 'meteor/nova:lib'; import React, { PropTypes, Component } from 'react'; import { FormattedMessage, FormattedRelative } from 'react-intl'; import { Button } from 'react-bootstrap'; import { ModalTrigger } from "meteor/nova:core"; import { Link } from 'react-router'; import Posts from "meteor/nova:posts"; import Users from 'meteor/nova:users'; import { withCurrentUser } from 'meteor/nova:core'; import gql from 'graphql-tag'; class PostsItem extends Component { renderCategories() { return this.props.post.categories && this.props.post.categories.length > 0 ? : ""; } renderCommenters() { return this.props.post.commenters && this.props.post.commenters.length > 0 ? : ""; } renderActions() { return (
}>
) } render() { const {post} = this.props; let postClass = "posts-item"; if (post.sticky) postClass += " posts-sticky"; return (
{post.thumbnailUrl ? : null}

{post.title} {this.renderCategories()}

{post.user?
: null}
{post.postedAt ? : }
{this.props.currentUser && this.props.currentUser.isAdmin ? : null} {Posts.options.mutations.edit.check(this.props.currentUser, post) ? this.renderActions() : null}
{this.renderCommenters()}
) } }; PostsItem.propTypes = { currentUser: React.PropTypes.object, post: React.PropTypes.object.isRequired, }; PostsItem.fragment = gql` fragment PostsItemFragment on Post { _id title url slug thumbnailUrl baseScore postedAt sticky status categories { # ...minimumCategoryInfo _id name slug } commentCount commenters { # ...avatarUserInfo _id __displayName __emailHash __slug } upvoters { _id } downvoters { _id } upvotes # should be asked only for admins? score # should be asked only for admins? viewCount # should be asked only for admins? clickCount # should be asked only for admins? user { # ...avatarUserInfo _id __displayName __emailHash __slug } userId } `; Telescope.registerComponent('PostsItem', PostsItem, withCurrentUser);