'use strict'; import React from 'react'; import Form from './form'; import LoanRequestButton from '../ascribe_buttons/acls/loan_request_button'; import UnconsignButton from '../ascribe_buttons/acls/unconsign_button'; import ActionPanel from '../ascribe_panel/action_panel'; import NotificationActions from '../../actions/notification_actions'; import GlobalNotificationModel from '../../models/global_notification_model'; import GlobalNotificationActions from '../../actions/global_notification_actions'; import ApiUrls from '../../constants/api_urls'; import { getAclFormDataId } from '../../utils/form_utils'; import { getLangText } from '../../utils/lang_utils.js'; let RequestActionForm = React.createClass({ propTypes: { notifications: React.PropTypes.object.isRequired, pieceOrEditions: React.PropTypes.oneOfType([ React.PropTypes.object, React.PropTypes.array ]).isRequired, currentUser: React.PropTypes.object, handleSuccess: React.PropTypes.func }, isPiece() { return this.props.pieceOrEditions.constructor !== Array; }, getUrls() { let urls = {}; if (this.props.notifications.action === 'consign') { urls.accept = ApiUrls.ownership_consigns_confirm; urls.deny = ApiUrls.ownership_consigns_deny; } else if (this.props.notifications.action === 'unconsign') { urls.accept = ApiUrls.ownership_unconsigns; urls.deny = ApiUrls.ownership_unconsigns_deny; } else if (this.props.notifications.action === 'loan' && !this.isPiece()) { urls.accept = ApiUrls.ownership_loans_confirm; urls.deny = ApiUrls.ownership_loans_deny; } else if (this.props.notifications.action === 'loan' && this.isPiece()) { urls.accept = ApiUrls.ownership_loans_pieces_confirm; urls.deny = ApiUrls.ownership_loans_pieces_deny; } else if (this.props.notifications.action === 'loan_request' && this.isPiece()) { urls.accept = ApiUrls.ownership_loans_pieces_request_confirm; urls.deny = ApiUrls.ownership_loans_pieces_request_deny; } return urls; }, getFormData() { return getAclFormDataId(this.isPiece(), this.props.pieceOrEditions); }, showNotification(option, action, owner) { return () => { const message = getLangText('You have successfully %s the %s request from %s', getLangText(option), getLangText(action), owner); const notifications = new GlobalNotificationModel(message, 'success'); GlobalNotificationActions.appendGlobalNotification(notifications); this.handleSuccess(); }; }, handleSuccess() { if (this.isPiece()) { NotificationActions.fetchPieceListNotifications(); } else { NotificationActions.fetchEditionListNotifications(); } if (typeof this.props.handleSuccess === 'function') { this.props.handleSuccess(); } }, getContent() { return ( {this.props.notifications.action_str + ' by ' + this.props.notifications.by} ); }, getAcceptButtonForm(urls) { if (this.props.notifications.action === 'unconsign') { return ( ); } else if (this.props.notifications.action === 'loan_request') { return ( ); } else { return (
); } }, getButtonForm() { const urls = this.getUrls(); const acceptButtonForm = this.getAcceptButtonForm(urls); return (
{acceptButtonForm}
); }, render() { return ( ); } }); export default RequestActionForm;