From 1aa2863b802cb9dd23a739faf5cc7b63805c32eb Mon Sep 17 00:00:00 2001 From: vrde Date: Mon, 13 Jul 2015 21:51:05 +0200 Subject: [PATCH 1/4] Declutter piece list if no pieces are found --- js/app.js | 5 ++- .../ascribe_accordion_list/accordion_list.js | 2 +- js/components/piece_list.js | 35 ++++++++++++++----- js/components/whitelabel/prize/app.js | 4 +-- .../prize/components/signup_container.js | 3 +- js/components/whitelabel/prize/routes.js | 3 ++ 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/js/app.js b/js/app.js index 15942bb4..94b733cd 100644 --- a/js/app.js +++ b/js/app.js @@ -33,6 +33,7 @@ requests.defaults({ class AppGateway { start() { + console.log('start'); let subdomain = window.location.host.split('.')[0]; requests.get('whitelabel_settings', {'subdomain': subdomain}) .then(this.loadSubdomain.bind(this)) @@ -45,11 +46,13 @@ class AppGateway { this.load('prize'); } - loadDefault() { + loadDefault(error) { + console.log('Loading default app, error'. error); this.load('default'); } load(type) { + console.log('loading', type); Router.run(getRoutes(type), Router.HistoryLocation, (App) => { React.render( , diff --git a/js/components/ascribe_accordion_list/accordion_list.js b/js/components/ascribe_accordion_list/accordion_list.js index a1a1c88a..85084b5f 100644 --- a/js/components/ascribe_accordion_list/accordion_list.js +++ b/js/components/ascribe_accordion_list/accordion_list.js @@ -22,7 +22,7 @@ let AccordionList = React.createClass({ } else if(this.props.count === 0) { return (
-

{getLangText('We could not find any works related to you%s', '...')}

+

{getLangText('We could not find any works related to you...')}

{getLangText('To register one, click')} {getLangText('here')}!

); diff --git a/js/components/piece_list.js b/js/components/piece_list.js index dc329444..8acfd6bd 100644 --- a/js/components/piece_list.js +++ b/js/components/piece_list.js @@ -56,6 +56,30 @@ let PieceList = React.createClass({ this.state.orderAsc); }, + getPieceListToolbar() { + if (this.state.pieceListCount > 10) { + return ( + + ); + } + }, + + getPagination() { + let currentPage = parseInt(this.props.query.page, 10) || 1; + let totalPages = Math.ceil(this.state.pieceListCount / this.state.pageSize); + + if (this.state.pieceListCount > 10) { + return ( + + ); + } + }, + searchFor(searchTerm) { PieceListActions.fetchPieceList(1, this.state.pageSize, searchTerm, this.state.orderBy, this.state.orderAsc); this.transitionTo(this.getPathname(), {page: 1}); @@ -67,15 +91,11 @@ let PieceList = React.createClass({ }, render() { - let currentPage = parseInt(this.props.query.page, 10) || 1; - let totalPages = Math.ceil(this.state.pieceListCount / this.state.pageSize); let loadingElement = (); return (
- + {this.getPieceListToolbar()} - + {this.getPagination()}
); } diff --git a/js/components/whitelabel/prize/app.js b/js/components/whitelabel/prize/app.js index a59f57a6..0828faa4 100644 --- a/js/components/whitelabel/prize/app.js +++ b/js/components/whitelabel/prize/app.js @@ -16,9 +16,7 @@ let PrizeApp = React.createClass({ render() { let header = null; if (this.isActive('pieces')) { - header = ( -
- ); + header = null; } return ( diff --git a/js/components/whitelabel/prize/components/signup_container.js b/js/components/whitelabel/prize/components/signup_container.js index 379f86e7..4950dac7 100644 --- a/js/components/whitelabel/prize/components/signup_container.js +++ b/js/components/whitelabel/prize/components/signup_container.js @@ -23,9 +23,8 @@ let SignupContainer = React.createClass({ if (this.state.submitted){ return (
-
- {this.state.message} + {this.state.message}
); diff --git a/js/components/whitelabel/prize/routes.js b/js/components/whitelabel/prize/routes.js index 69f8e525..d9b88c14 100644 --- a/js/components/whitelabel/prize/routes.js +++ b/js/components/whitelabel/prize/routes.js @@ -7,6 +7,8 @@ import Landing from './components/landing'; import LoginContainer from './components/login_container'; import SignupContainer from './components/signup_container'; import PasswordResetContainer from '../../../components/password_reset_container'; +import RegisterPiece from '../../../components/register_piece'; +import PieceList from '../../../components/piece_list'; import App from './app'; import AppConstants from '../../../constants/application_constants'; @@ -23,6 +25,7 @@ function getRoutes(commonRoutes) { + ); } From 5ea6095f6aff6be698ce2ff6bef8c33825b85326 Mon Sep 17 00:00:00 2001 From: vrde Date: Mon, 13 Jul 2015 22:05:16 +0200 Subject: [PATCH 2/4] Redirect if no artworks are found --- js/components/piece_list.js | 12 +++++++++--- .../whitelabel/prize/components/piece_list.js | 15 +++++++++++++++ js/components/whitelabel/prize/routes.js | 4 ++-- 3 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 js/components/whitelabel/prize/components/piece_list.js diff --git a/js/components/piece_list.js b/js/components/piece_list.js index 8acfd6bd..a26a75ae 100644 --- a/js/components/piece_list.js +++ b/js/components/piece_list.js @@ -20,7 +20,7 @@ import AppConstants from '../constants/application_constants'; let PieceList = React.createClass({ propTypes: { - query: React.PropTypes.object + redirectTo: React.PropTypes.string }, mixins: [Router.Navigation, Router.State], @@ -30,7 +30,7 @@ let PieceList = React.createClass({ }, componentDidMount() { - let page = this.props.query.page || 1; + let page = this.getQuery().page || 1; PieceListStore.listen(this.onChange); if (this.state.pieceList.length === 0){ PieceListActions.fetchPieceList(page, this.state.pageSize, this.state.search, this.state.orderBy, this.state.orderAsc) @@ -38,6 +38,12 @@ let PieceList = React.createClass({ } }, + componentDidUpdate() { + if (this.props.redirectTo && this.state.pieceListCount === 0) { + this.transitionTo(this.props.redirectTo); + } + }, + componentWillUnmount() { PieceListStore.unlisten(this.onChange); }, @@ -67,7 +73,7 @@ let PieceList = React.createClass({ }, getPagination() { - let currentPage = parseInt(this.props.query.page, 10) || 1; + let currentPage = parseInt(this.getQuery().page, 10) || 1; let totalPages = Math.ceil(this.state.pieceListCount / this.state.pageSize); if (this.state.pieceListCount > 10) { diff --git a/js/components/whitelabel/prize/components/piece_list.js b/js/components/whitelabel/prize/components/piece_list.js new file mode 100644 index 00000000..8b5a7a34 --- /dev/null +++ b/js/components/whitelabel/prize/components/piece_list.js @@ -0,0 +1,15 @@ +'use strict'; + +import React from 'react'; +import PieceList from '../../../piece_list'; + + +let PrizePieceList = React.createClass({ + render() { + return ( + + ); + } +}); + +export default PrizePieceList; diff --git a/js/components/whitelabel/prize/routes.js b/js/components/whitelabel/prize/routes.js index d9b88c14..10f9d000 100644 --- a/js/components/whitelabel/prize/routes.js +++ b/js/components/whitelabel/prize/routes.js @@ -8,7 +8,7 @@ import LoginContainer from './components/login_container'; import SignupContainer from './components/signup_container'; import PasswordResetContainer from '../../../components/password_reset_container'; import RegisterPiece from '../../../components/register_piece'; -import PieceList from '../../../components/piece_list'; +import PrizePieceList from './components/piece_list'; import App from './app'; import AppConstants from '../../../constants/application_constants'; @@ -25,7 +25,7 @@ function getRoutes(commonRoutes) { - + ); } From 19f82b2bbd83e20fc7a8216be39532e54bd8a842 Mon Sep 17 00:00:00 2001 From: vrde Date: Mon, 13 Jul 2015 22:58:53 +0200 Subject: [PATCH 3/4] work on register piece for for prize --- .../ascribe_forms/form_register_piece.js | 13 ++++- js/components/register_piece.js | 43 +++++++++++++--- .../prize/components/register_piece.js | 50 +++++++++++++++++++ js/components/whitelabel/prize/routes.js | 4 +- 4 files changed, 98 insertions(+), 12 deletions(-) create mode 100644 js/components/whitelabel/prize/components/register_piece.js diff --git a/js/components/ascribe_forms/form_register_piece.js b/js/components/ascribe_forms/form_register_piece.js index 6664fe6f..d3748fc0 100644 --- a/js/components/ascribe_forms/form_register_piece.js +++ b/js/components/ascribe_forms/form_register_piece.js @@ -18,11 +18,20 @@ import { getLangText } from '../../utils/lang_utils'; let RegisterPieceForm = React.createClass({ propTypes: { + headerMessage: React.PropTypes.string, + submitMessage: React.PropTypes.string, handleSuccess: React.PropTypes.func, isFineUploaderEditable: React.PropTypes.bool, children: React.PropTypes.element }, + getDefaultProps() { + return { + headerMessage: getLangText('Register your work'), + submitMessage: getLangText('Register work') + }; + }, + getInitialState(){ return { digitalWorkKey: null, @@ -69,7 +78,7 @@ let RegisterPieceForm = React.createClass({ type="submit" className="btn ascribe-btn ascribe-btn-login" disabled={!this.state.isUploadReady}> - {getLangText('Register work')} + {this.props.submitMessage} } spinner={ @@ -77,7 +86,7 @@ let RegisterPieceForm = React.createClass({ }> -

{getLangText('Register your work')}

+

{this.props.headerMessage}

diff --git a/js/components/register_piece.js b/js/components/register_piece.js index 3e9f6c5f..d581f951 100644 --- a/js/components/register_piece.js +++ b/js/components/register_piece.js @@ -29,9 +29,26 @@ import SlidesContainer from './ascribe_slides_container/slides_container'; import { mergeOptions } from '../utils/general_utils'; import { getLangText } from '../utils/lang_utils'; + let RegisterPiece = React.createClass( { + + propTypes: { + headerMessage: React.PropTypes.string, + submitMessage: React.PropTypes.string, + canSpecifyEditions: React.PropTypes.bool, + children: React.PropTypes.oneOfType([ + React.PropTypes.arrayOf(React.PropTypes.element), + React.PropTypes.element]) + }, + mixins: [Router.Navigation], + getDefaultProps() { + return { + canSpecifyEditions: true + }; + }, + getInitialState(){ return mergeOptions( LicenseStore.getState(), @@ -118,6 +135,21 @@ let RegisterPiece = React.createClass( { return null; }, + getSpecifyEditions() { + if (this.props.canSpecifyEditions) { + return ( + + {getLangText('Editions')} + + + ); + } + }, + changeSlide() { // only transition to the login store, if user is not logged in // ergo the currentUser object is not properly defined @@ -135,16 +167,11 @@ let RegisterPiece = React.createClass( { - - {getLangText('Editions')} - - + {this.getSpecifyEditions()} + {this.props.children} {this.getLicenses()} diff --git a/js/components/whitelabel/prize/components/register_piece.js b/js/components/whitelabel/prize/components/register_piece.js new file mode 100644 index 00000000..a1009b4b --- /dev/null +++ b/js/components/whitelabel/prize/components/register_piece.js @@ -0,0 +1,50 @@ +'use strict'; + +import React from 'react'; +import RegisterPiece from '../../../register_piece'; +import Property from '../../../ascribe_forms/property'; +import InputTextAreaToggable from '../../../ascribe_forms/input_textarea_toggable'; +import InputCheckbox from '../../../ascribe_forms/input_checkbox'; + +import { getLangText } from '../../../../utils/lang_utils'; + + +let PrizeRegisterPiece = React.createClass({ + render() { + return ( + + + + + + + + + + + + ); + } +}); + +export default PrizeRegisterPiece; diff --git a/js/components/whitelabel/prize/routes.js b/js/components/whitelabel/prize/routes.js index 10f9d000..b71e893d 100644 --- a/js/components/whitelabel/prize/routes.js +++ b/js/components/whitelabel/prize/routes.js @@ -7,7 +7,7 @@ import Landing from './components/landing'; import LoginContainer from './components/login_container'; import SignupContainer from './components/signup_container'; import PasswordResetContainer from '../../../components/password_reset_container'; -import RegisterPiece from '../../../components/register_piece'; +import PrizeRegisterPiece from './components/register_piece'; import PrizePieceList from './components/piece_list'; import App from './app'; @@ -24,7 +24,7 @@ function getRoutes(commonRoutes) { - + ); From b238fbeeb1f80a5c172b3ad17513e04c6c62a075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Daubensch=C3=BCtz?= Date: Mon, 13 Jul 2015 23:29:07 +0200 Subject: [PATCH 4/4] fix piece list error --- js/components/ascribe_accordion_list/accordion_list_item.js | 3 --- js/components/piece_list.js | 2 +- js/components/whitelabel/prize/routes.js | 4 ++++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/js/components/ascribe_accordion_list/accordion_list_item.js b/js/components/ascribe_accordion_list/accordion_list_item.js index 150d6934..0bab42d7 100644 --- a/js/components/ascribe_accordion_list/accordion_list_item.js +++ b/js/components/ascribe_accordion_list/accordion_list_item.js @@ -13,9 +13,6 @@ import CreateEditionsForm from '../ascribe_forms/create_editions_form'; import PieceListActions from '../../actions/piece_list_actions'; import EditionListActions from '../../actions/edition_list_actions'; -import GlobalNotificationModel from '../../models/global_notification_model'; -import GlobalNotificationActions from '../../actions/global_notification_actions'; - import { getLangText } from '../../utils/lang_utils'; let Link = Router.Link; diff --git a/js/components/piece_list.js b/js/components/piece_list.js index a26a75ae..e49c3097 100644 --- a/js/components/piece_list.js +++ b/js/components/piece_list.js @@ -63,7 +63,7 @@ let PieceList = React.createClass({ }, getPieceListToolbar() { - if (this.state.pieceListCount > 10) { + if(this.state.pieceListCount > 10) { return ( + + ); }