'use strict'; import React from 'react'; import AclButton from './../ascribe_buttons/acl_button'; import ActionPanel from '../ascribe_panel/action_panel'; import Form from './form'; import PieceListActions from '../../actions/piece_list_actions'; import GlobalNotificationModel from '../../models/global_notification_model'; import GlobalNotificationActions from '../../actions/global_notification_actions'; import ApiUrls from '../../constants/api_urls'; import { getLangText } from '../../utils/lang_utils.js'; let RequestActionForm = React.createClass({ propTypes: { pieceOrEditions: React.PropTypes.oneOfType([ React.PropTypes.object, React.PropTypes.array ]).isRequired, requestAction: React.PropTypes.string, requestUser: React.PropTypes.string, currentUser: React.PropTypes.object, handleSuccess: React.PropTypes.func }, isPiece(){ return this.props.pieceOrEditions.constructor !== Array; }, getUrls() { let urls = {}; if (this.props.requestAction === 'consign'){ urls.accept = ApiUrls.ownership_consigns_confirm; urls.deny = ApiUrls.ownership_consigns_deny; } else if (this.props.requestAction === 'unconsign'){ urls.accept = ApiUrls.ownership_unconsigns; urls.deny = ApiUrls.ownership_unconsigns_deny; } else if (this.props.requestAction === 'loan' && !this.isPiece()){ urls.accept = ApiUrls.ownership_loans_confirm; urls.deny = ApiUrls.ownership_loans_deny; } else if (this.props.requestAction === 'loan' && this.isPiece()){ urls.accept = ApiUrls.ownership_loans_pieces_confirm; urls.deny = ApiUrls.ownership_loans_pieces_deny; } else if (this.props.requestAction === 'loan_request' && this.isPiece()){ urls.accept = ApiUrls.ownership_loans_pieces_request_confirm; urls.deny = ApiUrls.ownership_loans_pieces_request_deny; } return urls; }, getFormData(){ if (this.isPiece()) { return {piece_id: this.props.pieceOrEditions.id}; } else { return {bitcoin_id: this.props.pieceOrEditions.map(function(edition){ return edition.bitcoin_id; }).join()}; } }, showNotification(option, action, owner) { return () => { let message = getLangText('You have successfully') + ' ' + option + ' the ' + action + ' request ' + getLangText('from') + ' ' + owner; let notification = new GlobalNotificationModel(message, 'success'); GlobalNotificationActions.appendGlobalNotification(notification); this.handleSuccess(); }; }, handleSuccess() { PieceListActions.fetchPieceRequestActions(); if(this.props.handleSuccess) { this.props.handleSuccess(); } }, getContent() { let pieceOrEditionStr = this.isPiece() ? getLangText('this work%s', '.') : getLangText('this edition%s', '.'); let message = this.props.requestUser + ' ' + getLangText('requests you') + ' ' + this.props.requestAction + ' ' + pieceOrEditionStr; if (this.props.requestAction === 'loan_request'){ message = this.props.requestUser + ' ' + getLangText('requests you to loan') + ' ' + pieceOrEditionStr; } return ( {message} ); }, getAcceptButtonForm(urls) { if(this.props.requestAction === 'unconsign') { return ( ); } else if(this.props.requestAction === 'loan_request') { return ( ); } else { return (
); } }, getButtonForm() { let urls = this.getUrls(); let acceptButtonForm = this.getAcceptButtonForm(urls); return (
{acceptButtonForm}
); }, render() { return ( ); } }); export default RequestActionForm;