'use strict'; import React from 'react'; import { Link } from 'react-router'; import Moment from 'moment'; import Row from 'react-bootstrap/lib/Row'; import Col from 'react-bootstrap/lib/Col'; import Glyphicon from 'react-bootstrap/lib/Glyphicon'; import EditionActions from '../../actions/edition_actions'; import DetailProperty from './detail_property'; import EditionActionPanel from './edition_action_panel'; import FurtherDetails from './further_details'; import HistoryIterator from './history_iterator'; import LicenseDetail from './license_detail'; import MediaContainer from './media_container'; import Note from './note'; import CollapsibleParagraph from '../ascribe_collapsible/collapsible_paragraph'; import Form from '../ascribe_forms/form'; import Property from '../ascribe_forms/property'; import AclProxy from '../acl_proxy'; import ApiUrls from '../../constants/api_urls'; import AscribeSpinner from '../ascribe_spinner'; import { getLangText } from '../../utils/lang_utils'; /** * This is the component that implements display-specific functionality */ let Edition = React.createClass({ propTypes: { currentUser: React.PropTypes.object.isRequired, edition: React.PropTypes.object.isRequired, whitelabel: React.PropTypes.object.isRequired, actionPanelButtonListType: React.PropTypes.func, coaError: React.PropTypes.object, furtherDetailsType: React.PropTypes.func, loadEdition: React.PropTypes.func }, getDefaultProps() { return { furtherDetailsType: FurtherDetails }; }, render() { const { actionPanelButtonListType, coaError, currentUser, edition, furtherDetailsType: FurtherDetailsType, loadEdition, whitelabel } = this.props; return (

{edition.title}


{return {'bitcoin_id': edition.bitcoin_id}; }} label={getLangText('Personal note (private)')} defaultValue={edition.private_note ? edition.private_note : null} placeholder={getLangText('Enter your comments ...')} editable={true} successMessage={getLangText('Private note saved')} url={ApiUrls.note_private_edition} currentUser={currentUser} /> {return {'bitcoin_id': edition.bitcoin_id}; }} label={getLangText('Personal note (public)')} defaultValue={edition.public_note ? edition.public_note : null} placeholder={getLangText('Enter your comments ...')} editable={!!edition.acl.acl_edit} show={!!(edition.public_note || edition.acl.acl_edit)} successMessage={getLangText('Public edition note saved')} url={ApiUrls.note_public_edition} currentUser={currentUser} />
); } }); let EditionSummary = React.createClass({ propTypes: { currentUser: React.PropTypes.object.isRequired, edition: React.PropTypes.object.isRequired, whitelabel: React.PropTypes.object.isRequired, actionPanelButtonListType: React.PropTypes.func, handleSuccess: React.PropTypes.func }, getStatus() { const { status } = this.props.edition; return status.length ? ( ) : null; }, render() { const { actionPanelButtonListType, currentUser, edition, handleSuccess, whitelabel } = this.props; return (
{this.getStatus()} {/* `acl_view` is always available in `edition.acl`, therefore if it has no more than 1 key, we're hiding the `DetailProperty` actions as otherwise `AclInformation` would show up */} 1}>
); } }); let CoaDetails = React.createClass({ propTypes: { editionId: React.PropTypes.string, coa: React.PropTypes.oneOfType([ React.PropTypes.number, React.PropTypes.string, React.PropTypes.object ]), coaError: React.PropTypes.object }, render() { const { coa, coaError } = this.props; let coaDetailElement; if (coaError) { coaDetailElement = [

{getLangText('There was an error generating your Certificate of Authenticity.')}

,

{getLangText('Try to refresh the page. If this happens repeatedly, please ')} {getLangText('contact us')}.

]; } else if (coa && coa.url_safe) { coaDetailElement = [
,
]; } else if (typeof coa === 'string') { coaDetailElement = coa; } else { coaDetailElement = [ ,

{getLangText("Just a sec, we're generating your COA")}

,

{getLangText('(you may leave the page)')}

]; } return (
{coaDetailElement}
{/* Hide the COA and just show that it's a seperate document when printing */}
{getLangText('The COA is available as a seperate document')}
); } }); let SpoolDetails = React.createClass({ propTypes: { edition: React.PropTypes.object }, render() { const { edition: { bitcoin_id: bitcoinId, hash_as_address: hashAsAddress, btc_owner_address_noprefix: bitcoinOwnerAddress } } = this.props; const bitcoinIdValue = ( {bitcoinId} ); const hashOfArtwork = ( {hashAsAddress} ); const ownerAddress = ( {bitcoinOwnerAddress} ); return (
{bitcoinIdValue}
{hashOfArtwork}
{ownerAddress}

); } }); export default Edition;