1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | xlat = require '../utils/translate' licenses = require '../data/licenses' ImageDialogStore = require '../stores/image-dialog-store' {div, table, tr, td, a, input, select, radio, p} = React.DOM module.exports = React.createClass displayName: 'ImageMetadata' getInitialState: -> hostname: null hostname: -> # instead of using a regexp to extract the hostname use the dom link = document.createElement 'a' link.setAttribute 'href', @props.metadata?.link link.hostname changed: -> newMetaData = title: @refs.title.getDOMNode().value link: @refs.link.getDOMNode().value license: @refs.license.getDOMNode().value source: 'external' @props.update {metadata: newMetaData} render: -> (div {className: 'image-metadata'}, if @props.metadata @renderMetadata() ) renderMetadata: -> licenseName = @props.metadata.license or 'public domain' licenseData = licenses.getLicense licenseName title = @props.metadata.title link = @props.metadata.link if @props.metadata.source is 'external' (div {key: 'external'}, (table {}, (tr {}, (td {}, xlat '~METADATA.TITLE'), (td {}, (input {ref: 'title', value: title, onChange: @changed}))) (tr {}, (td {}, xlat '~METADATA.LINK'), (td {}, (input {ref: 'link', value: link, onChange: @changed}))) (tr {}, (td {}, xlat '~METADATA.CREDIT'), (td {}, (select {ref: 'license', value: licenseName, onChange: @changed}, licenses.getRenderOptions licenseName ))) ) (p {className: 'learn-more'}, (a {href: licenseData.link, target: '_blank'}, "Learn more about #{licenseData.fullLabel}")) ) else (div {key: 'internal'}, (p {}) (div {}, "\"#{title}\"") if link (div {key: 'hostname'}, (a {href: link, target: '_blank'}, "See it on #{@hostname()}")) (p {}) (div {}, 'License') (div {key: 'license'}, (a {href: licenseData.link, target: '_blank'}, licenseData.label) ) ) |