mirror of
https://github.com/ascribe/onion.git
synced 2024-12-23 01:39:36 +01:00
piece rating + navigation OK
close prize
This commit is contained in:
parent
81ff4641c7
commit
247cca3ee2
@ -60,7 +60,8 @@ let AccordionListItemPiece = React.createClass({
|
|||||||
</Link>}
|
</Link>}
|
||||||
subheading={
|
subheading={
|
||||||
<h3>
|
<h3>
|
||||||
{getLangText('by %s', this.props.piece.artist_name)}
|
{getLangText('by ')}
|
||||||
|
{this.props.artistName ? this.props.artistName : this.props.piece.artist_name}
|
||||||
</h3>
|
</h3>
|
||||||
}
|
}
|
||||||
subsubheading={this.props.subsubheading}
|
subsubheading={this.props.subsubheading}
|
||||||
|
@ -37,7 +37,6 @@ class PrizeRatingActions {
|
|||||||
resolve(res);
|
resolve(res);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.logGlobal(err);
|
|
||||||
reject(err);
|
reject(err);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -52,7 +51,6 @@ class PrizeRatingActions {
|
|||||||
resolve(res);
|
resolve(res);
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.logGlobal(err);
|
|
||||||
reject(err);
|
reject(err);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -69,7 +69,7 @@ let AccordionListItemPrize = React.createClass({
|
|||||||
// jury and rating available
|
// jury and rating available
|
||||||
let rating = parseInt(this.props.content.ratings.rating, 10);
|
let rating = parseInt(this.props.content.ratings.rating, 10);
|
||||||
return (
|
return (
|
||||||
<div className="pull-right">
|
<div id="list-rating" className="pull-right">
|
||||||
<Link to='piece' params={{pieceId: this.props.content.id}}>
|
<Link to='piece' params={{pieceId: this.props.content.id}}>
|
||||||
<StarRating
|
<StarRating
|
||||||
ref='rating'
|
ref='rating'
|
||||||
@ -109,11 +109,14 @@ let AccordionListItemPrize = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
let artistName = this.state.currentUser.is_jury ?
|
||||||
|
<span className="glyphicon glyphicon-eye-close" style={{fontSize: '0.75em'}} aria-hidden="true"/> :
|
||||||
|
this.props.content.artist_name;
|
||||||
return (
|
return (
|
||||||
<AccordionListItemPiece
|
<AccordionListItemPiece
|
||||||
className={this.props.className}
|
className={this.props.className}
|
||||||
piece={this.props.content}
|
piece={this.props.content}
|
||||||
|
artistName={artistName}
|
||||||
subsubheading={
|
subsubheading={
|
||||||
<div className="pull-left">
|
<div className="pull-left">
|
||||||
<span>{this.props.content.date_created.split('-')[0]}</span>
|
<span>{this.props.content.date_created.split('-')[0]}</span>
|
||||||
|
@ -80,6 +80,8 @@ let PieceContainer = React.createClass({
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
if('title' in this.state.piece) {
|
if('title' in this.state.piece) {
|
||||||
|
let artistName = this.state.currentUser.is_jury ?
|
||||||
|
<span className="glyphicon glyphicon-eye-close" aria-hidden="true"/> : this.state.piece.artist_name;
|
||||||
return (
|
return (
|
||||||
<Piece
|
<Piece
|
||||||
piece={this.state.piece}
|
piece={this.state.piece}
|
||||||
@ -89,9 +91,9 @@ let PieceContainer = React.createClass({
|
|||||||
<NavigationHeader
|
<NavigationHeader
|
||||||
piece={this.state.piece}
|
piece={this.state.piece}
|
||||||
currentUser={this.state.currentUser}/>
|
currentUser={this.state.currentUser}/>
|
||||||
<h1 className="ascribe-detail-title">{this.state.piece.title}</h1>
|
|
||||||
<hr/>
|
<hr/>
|
||||||
<DetailProperty label="BY" value={this.state.piece.artist_name} />
|
<h1 className="ascribe-detail-title">{this.state.piece.title}</h1>
|
||||||
|
<DetailProperty label="BY" value={artistName} />
|
||||||
<DetailProperty label="DATE" value={ this.state.piece.date_created.slice(0, 4) } />
|
<DetailProperty label="DATE" value={ this.state.piece.date_created.slice(0, 4) } />
|
||||||
<hr/>
|
<hr/>
|
||||||
</div>
|
</div>
|
||||||
@ -121,18 +123,18 @@ let NavigationHeader = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if (this.props.currentUser && this.props.currentUser.is_jury && this.props.piece.navigation) {
|
if (this.props.currentUser && this.props.piece.navigation) {
|
||||||
let nav = this.props.piece.navigation;
|
let nav = this.props.piece.navigation;
|
||||||
return (
|
return (
|
||||||
<div style={{marginBottom: '1em'}}>
|
<div style={{marginBottom: '1em'}}>
|
||||||
<div className="row no-margin">
|
<div className="row no-margin">
|
||||||
<Link className="disable-select" to='piece' params={{pieceId: nav.prev_index ? nav.prev_index : this.props.piece.id}}>
|
<Link className="disable-select" to='piece' params={{pieceId: nav.prev_index ? nav.prev_index : this.props.piece.id}}>
|
||||||
<span className="glyphicon glyphicon-chevron-left pull-left" aria-hidden="true">
|
<span className="glyphicon glyphicon-chevron-left pull-left link-ascribe" aria-hidden="true">
|
||||||
Previous
|
Previous
|
||||||
</span>
|
</span>
|
||||||
</Link>
|
</Link>
|
||||||
<Link className="disable-select" to='piece' params={{pieceId: nav.next_index ? nav.next_index : this.props.piece.id}}>
|
<Link className="disable-select" to='piece' params={{pieceId: nav.next_index ? nav.next_index : this.props.piece.id}}>
|
||||||
<span className="pull-right">
|
<span className="pull-right link-ascribe">
|
||||||
Next
|
Next
|
||||||
<span className="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
<span className="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||||||
</span>
|
</span>
|
||||||
@ -197,13 +199,11 @@ let PrizePieceRatings = React.createClass({
|
|||||||
render(){
|
render(){
|
||||||
if (this.props.currentUser && this.props.currentUser.is_jury) {
|
if (this.props.currentUser && this.props.currentUser.is_jury) {
|
||||||
return (
|
return (
|
||||||
<div>
|
<CollapsibleParagraph
|
||||||
<DetailProperty
|
title="Rating"
|
||||||
labelClassName='col-xs-3 col-sm-3 col-md-2 col-lg-2 col-xs-height col-middle ascribe-detail-property-label'
|
show={true}
|
||||||
label={
|
defaultExpanded={true}>
|
||||||
<span>YOUR VOTE</span>
|
<div style={{marginLeft: '1.5em', marginBottom: '1em'}}>
|
||||||
}
|
|
||||||
value={
|
|
||||||
<StarRating
|
<StarRating
|
||||||
ref='rating'
|
ref='rating'
|
||||||
name="prize-rating"
|
name="prize-rating"
|
||||||
@ -213,11 +213,11 @@ let PrizePieceRatings = React.createClass({
|
|||||||
rating={this.state.currentRating}
|
rating={this.state.currentRating}
|
||||||
onRatingClick={this.onRatingClick}
|
onRatingClick={this.onRatingClick}
|
||||||
ratingAmount={5} />
|
ratingAmount={5} />
|
||||||
}/>
|
</div>
|
||||||
<PersonalNote
|
<PersonalNote
|
||||||
piece={this.props.piece}
|
piece={this.props.piece}
|
||||||
currentUser={this.props.currentUser}/>
|
currentUser={this.props.currentUser}/>
|
||||||
</div>);
|
</CollapsibleParagraph>);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -241,13 +241,13 @@ let PersonalNote = React.createClass({
|
|||||||
handleSuccess={this.showNotification}>
|
handleSuccess={this.showNotification}>
|
||||||
<Property
|
<Property
|
||||||
name='value'
|
name='value'
|
||||||
label={getLangText('Note')}
|
label={getLangText('Jury note')}
|
||||||
editable={true}>
|
editable={true}>
|
||||||
<InputTextAreaToggable
|
<InputTextAreaToggable
|
||||||
rows={1}
|
rows={1}
|
||||||
editable={true}
|
editable={true}
|
||||||
defaultValue={this.props.piece.note_from_user ? this.props.piece.note_from_user.note : null}
|
defaultValue={this.props.piece.note_from_user ? this.props.piece.note_from_user.note : null}
|
||||||
placeholder={getLangText('Enter a personal note%s', '...')}/>
|
placeholder={getLangText('Enter your comments...')}/>
|
||||||
</Property>
|
</Property>
|
||||||
<Property hidden={true} name='piece_id'>
|
<Property hidden={true} name='piece_id'>
|
||||||
<input defaultValue={this.props.piece.id}/>
|
<input defaultValue={this.props.piece.id}/>
|
||||||
@ -256,7 +256,7 @@ let PersonalNote = React.createClass({
|
|||||||
</Form>
|
</Form>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return null;
|
return nul
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -3,28 +3,39 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import Router from 'react-router';
|
import Router from 'react-router';
|
||||||
|
|
||||||
|
import PrizeActions from '../actions/prize_actions';
|
||||||
|
import PrizeStore from '../stores/prize_store';
|
||||||
|
|
||||||
import ButtonLink from 'react-router-bootstrap/lib/ButtonLink';
|
import ButtonLink from 'react-router-bootstrap/lib/ButtonLink';
|
||||||
import ButtonGroup from 'react-bootstrap/lib/ButtonGroup';
|
import ButtonGroup from 'react-bootstrap/lib/ButtonGroup';
|
||||||
|
|
||||||
import UserStore from '../../../../stores/user_store';
|
import UserStore from '../../../../stores/user_store';
|
||||||
import UserActions from '../../../../actions/user_actions';
|
import UserActions from '../../../../actions/user_actions';
|
||||||
|
|
||||||
|
import { mergeOptions } from '../../../../utils/general_utils';
|
||||||
|
|
||||||
|
|
||||||
let Landing = React.createClass({
|
let Landing = React.createClass({
|
||||||
|
|
||||||
mixins: [Router.Navigation],
|
mixins: [Router.Navigation],
|
||||||
|
|
||||||
getInitialState() {
|
getInitialState() {
|
||||||
return UserStore.getState();
|
return mergeOptions(
|
||||||
|
PrizeStore.getState(),
|
||||||
|
UserStore.getState()
|
||||||
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
UserStore.listen(this.onChange);
|
UserStore.listen(this.onChange);
|
||||||
UserActions.fetchCurrentUser();
|
UserActions.fetchCurrentUser();
|
||||||
|
PrizeStore.listen(this.onChange);
|
||||||
|
PrizeActions.fetchPrize();
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
UserStore.unlisten(this.onChange);
|
UserStore.unlisten(this.onChange);
|
||||||
|
PrizeStore.unlisten(this.onChange);
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(state) {
|
onChange(state) {
|
||||||
@ -37,15 +48,9 @@ let Landing = React.createClass({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
getButtons() {
|
||||||
|
if (this.state.prize && this.state.prize.active){
|
||||||
return (
|
return (
|
||||||
<div className="container">
|
|
||||||
<div className="row">
|
|
||||||
<div className="col-xs-12 wp-landing-wrapper">
|
|
||||||
<h1>Sluice_screens ↄc Prize 2015</h1>
|
|
||||||
<p>
|
|
||||||
This is the submission page for Sluice_screens ↄc Prize 2015.
|
|
||||||
</p>
|
|
||||||
<ButtonGroup className="enter" bsSize="large" vertical>
|
<ButtonGroup className="enter" bsSize="large" vertical>
|
||||||
<ButtonLink to="signup">
|
<ButtonLink to="signup">
|
||||||
Sign up to submit
|
Sign up to submit
|
||||||
@ -58,6 +63,46 @@ let Landing = React.createClass({
|
|||||||
Log in to submit
|
Log in to submit
|
||||||
</ButtonLink>
|
</ButtonLink>
|
||||||
</ButtonGroup>
|
</ButtonGroup>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<ButtonGroup className="enter" bsSize="large" vertical>
|
||||||
|
<a className="btn btn-default" href="https://www.ascribe.io/app/signup">
|
||||||
|
Sign up to ascribe
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
or, already an ascribe user?
|
||||||
|
</p>
|
||||||
|
<ButtonLink to="login">
|
||||||
|
Log in
|
||||||
|
</ButtonLink>
|
||||||
|
</ButtonGroup>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
getTitle() {
|
||||||
|
if (this.state.prize && this.state.prize.active){
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
This is the submission page for Sluice_screens ↄc Prize 2015.
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<p>
|
||||||
|
Submissions for Sluice_screens ↄc Prize 2015 are now closed.
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<div className="container">
|
||||||
|
<div className="row">
|
||||||
|
<div className="col-xs-12 wp-landing-wrapper">
|
||||||
|
<h1>Sluice_screens ↄc Prize 2015</h1>
|
||||||
|
{this.getTitle()}
|
||||||
|
{this.getButtons()}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,21 +3,47 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PieceList from '../../../piece_list';
|
import PieceList from '../../../piece_list';
|
||||||
|
|
||||||
|
import PrizeActions from '../actions/prize_actions';
|
||||||
|
import PrizeStore from '../stores/prize_store';
|
||||||
|
|
||||||
import ButtonLink from 'react-router-bootstrap/lib/ButtonLink';
|
import ButtonLink from 'react-router-bootstrap/lib/ButtonLink';
|
||||||
import AccordionListItemPrize from './ascribe_accordion_list/accordion_list_item_prize';
|
import AccordionListItemPrize from './ascribe_accordion_list/accordion_list_item_prize';
|
||||||
|
|
||||||
let PrizePieceList = React.createClass({
|
let PrizePieceList = React.createClass({
|
||||||
|
getInitialState() {
|
||||||
|
return PrizeStore.getState();
|
||||||
|
},
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
PrizeStore.listen(this.onChange);
|
||||||
|
PrizeActions.fetchPrize();
|
||||||
|
},
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
PrizeStore.unlisten(this.onChange);
|
||||||
|
},
|
||||||
|
|
||||||
|
onChange(state) {
|
||||||
|
this.setState(state);
|
||||||
|
},
|
||||||
|
getButtonSubmit() {
|
||||||
|
if (this.state.prize && this.state.prize.active){
|
||||||
|
return (
|
||||||
|
<ButtonLink to="register_piece">
|
||||||
|
Submit to prize
|
||||||
|
</ButtonLink>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<PieceList
|
<PieceList
|
||||||
redirectTo="register_piece"
|
redirectTo="register_piece"
|
||||||
accordionListItemType={AccordionListItemPrize}
|
accordionListItemType={AccordionListItemPrize}
|
||||||
customSubmitButton={
|
customSubmitButton={this.getButtonSubmit()}/>
|
||||||
<ButtonLink to="register_piece">
|
|
||||||
Submit to prize
|
|
||||||
</ButtonLink>
|
|
||||||
}/>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -386,6 +386,9 @@ hr {
|
|||||||
|
|
||||||
.rating-container .rating-stars {
|
.rating-container .rating-stars {
|
||||||
width: 25px;
|
width: 25px;
|
||||||
|
color: #02b6a3;
|
||||||
|
}
|
||||||
|
#list-rating > a > span > span > .rating-container .rating-stars{
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,3 +402,10 @@ hr {
|
|||||||
-ms-user-select: none;
|
-ms-user-select: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.link-ascribe {
|
||||||
|
color: #666;
|
||||||
|
&:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user