Adds License and LicenseUrl to AssetInfo and Publish/Edit Forms #935
|
@ -1,6 +1,7 @@
|
|||
select {
|
||||
margin: 0;
|
||||
display: inline-block;
|
||||
background: $base-color;
|
||||
background: $background-color;
|
||||
border: 0;
|
||||
color: $text-color;
|
||||
}
|
||||
|
|
|
@ -7,9 +7,6 @@ const ChannelSelectDropdown = ({ selectedChannel, handleSelection, loggedInChann
|
|||
id='channel-name-select'
|
||||
value={selectedChannel}
|
||||
onChange={handleSelection}>
|
||||
{ loggedInChannelName && (
|
||||
<option value={loggedInChannelName} >{loggedInChannelName}</option>
|
||||
)}
|
||||
<option value={LOGIN}>Existing</option>
|
||||
<option value={CREATE}>New</option>
|
||||
</select>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
import React from 'react';
|
||||
import RowLabeled from '@components/RowLabeled';
|
||||
import Label from '@components/Label';
|
||||
import { LICENSES } from '../../constants/publish_license_urls';
|
||||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
import { LICENSES } from '@clientConstants/publish_license_urls';
|
||||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
|
||||
const PublishLicenseInput = ({ handleSelect }) => {
|
||||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
const PublishLicenseInput = ({ handleSelect, license }) => {
|
||||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
return (
|
||||
<RowLabeled
|
||||
label={
|
||||
|
@ -14,6 +14,7 @@ const PublishLicenseInput = ({ handleSelect }) => {
|
|||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
type='text'
|
||||
name='license'
|
||||
id='publish-license'
|
||||
value={license}
|
||||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
||||
onChange={handleSelect}
|
||||
>
|
||||
<option value=''>Unspecified</option>
|
||||
|
|
|||
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
We should have a more suitable alias to use instead of the We should have a more suitable alias to use instead of the `../../`
|
|
@ -1,9 +1,9 @@
|
|||
alias alias
alias alias
|
||||
import React from 'react';
|
||||
import RowLabeled from '@components/RowLabeled';
|
||||
import Label from '@components/Label';
|
||||
import { CC_LICENSES } from '../../constants/publish_license_urls';
|
||||
alias alias
|
||||
import { CC_LICENSES } from '@clientConstants/publish_license_urls';
|
||||
alias alias
|
||||
|
||||
const PublishLicenseUrlInput = ({ handleSelect }) => {
|
||||
alias alias
|
||||
const PublishLicenseUrlInput = ({ handleSelect, licenseUrl }) => {
|
||||
alias alias
|
||||
return (
|
||||
<RowLabeled
|
||||
label={
|
||||
|
@ -14,6 +14,7 @@ const PublishLicenseUrlInput = ({ handleSelect }) => {
|
|||
alias alias
alias alias
|
||||
type='text'
|
||||
name='licenseUrl'
|
||||
id='publish-license-url'
|
||||
value={licenseUrl}
|
||||
alias alias
|
||||
onChange={handleSelect}
|
||||
>
|
||||
<option value=''>Unspecified</option>
|
||||
|
|
|||
alias alias
alias alias
|
|
@ -7,7 +7,7 @@ import AssetShareButtons from '@components/AssetShareButtons';
|
|||
import ClickToCopy from '@components/ClickToCopy';
|
||||
import siteConfig from '@config/siteConfig.json';
|
||||
import createCanonicalLink from '@globalutils/createCanonicalLink';
|
||||
import AssetInfoFooter from '../../components/AssetInfoFooter/index';
|
||||
import AssetInfoFooter from '@components/AssetInfoFooter/index';
|
||||
import { createPermanentURI } from '@clientutils/createPermanentURI';
|
||||
import ReactMarkdown from 'react-markdown';
|
||||
|
||||
|
@ -18,7 +18,20 @@ class AssetInfo extends React.Component {
|
|||
render () {
|
||||
const { editable, asset } = this.props;
|
||||
const { claimViews, claimData } = asset;
|
||||
const { channelName, claimId, channelShortId, description, name, fileExt, contentType, host, certificateId, license, licenseUrl, transactionTime } = claimData;
|
||||
const {
|
||||
channelName,
|
||||
claimId,
|
||||
channelShortId,
|
||||
description,
|
||||
name,
|
||||
fileExt,
|
||||
contentType,
|
||||
host,
|
||||
certificateId,
|
||||
license,
|
||||
licenseUrl,
|
||||
transactionTime
|
||||
} = claimData;
|
||||
|
||||
const canonicalUrl = createCanonicalLink({ asset: { ...claimData, shortId: asset.shortId }});
|
||||
const assetCanonicalUrl = `${host}${canonicalUrl}`;
|
||||
|
@ -55,7 +68,7 @@ class AssetInfo extends React.Component {
|
|||
{editable && (
|
||||
<RowLabeled
|
||||
label={<Label value={'Edit'} />}
|
||||
content={<Link to={`/edit${canonicalUrl}`}>{name}</Link>}
|
||||
content={<Link className='link--primary' to={`/edit${canonicalUrl}`}>{name}</Link>}
|
||||
/>
|
||||
)}
|
||||
{channelName && (
|
||||
|
@ -72,22 +85,6 @@ class AssetInfo extends React.Component {
|
|||
/>
|
||||
)}
|
||||
<SpaceBetween>
|
||||
{license && (
|
||||
<RowLabeled
|
||||
label={
|
||||
<Label value={'License'} />
|
||||
}
|
||||
content={
|
||||
<div className='text'>
|
||||
{licenseUrl ? (
|
||||
<a className={'link--primary'} href={licenseUrl} target={'_blank'}>{license}</a>
|
||||
) : (
|
||||
<span>{license}</span> )}
|
||||
</div>
|
||||
}
|
||||
/>
|
||||
)}
|
||||
|
||||
{claimViews ? (
|
||||
<RowLabeled
|
||||
label={
|
||||
|
@ -100,6 +97,21 @@ class AssetInfo extends React.Component {
|
|||
}
|
||||
/>
|
||||
) : null}
|
||||
{license && (
|
||||
<RowLabeled
|
||||
label={
|
||||
<Label value={'License'} />
|
||||
}
|
||||
content={
|
||||
<div className='text'>
|
||||
{licenseUrl ? (
|
||||
<a className={'link--primary'} href={licenseUrl} target={'_blank'}>{license}</a>
|
||||
) : (
|
||||
<span>{license}</span> )}
|
||||
</div>
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</SpaceBetween>
|
||||
<RowLabeled
|
||||
label={
|
||||
|
|
|
@ -18,10 +18,10 @@ class ChannelSelect extends React.Component {
|
|||
componentWillMount () {
|
||||
const { loggedInChannelName, onChannelSelect, publishOnlyApproved, onPublishInChannelChange } = this.props;
|
||||
if (loggedInChannelName) {
|
||||
this.props.onPublishInChannelChange(true);
|
||||
onChannelSelect(loggedInChannelName);
|
||||
}
|
||||
if (publishOnlyApproved) {
|
||||
this.props.onPublishInChannelChange(true);
|
||||
onPublishInChannelChange(true);
|
||||
}
|
||||
}
|
||||
toggleAnonymousPublish (event) {
|
||||
|
@ -37,10 +37,7 @@ class ChannelSelect extends React.Component {
|
|||
this.props.onChannelSelect(selectedOption);
|
||||
}
|
||||
render () {
|
||||
let { publishInChannel, channelError, selectedChannel, loggedInChannelName, publishOnlyApproved } = this.props;
|
||||
if (loggedInChannelName) {
|
||||
publishInChannel = 'checked';
|
||||
}
|
||||
const { publishInChannel, channelError, selectedChannel, loggedInChannelName, publishOnlyApproved } = this.props;
|
||||
if (publishOnlyApproved) {
|
||||
return (
|
||||
<React.Fragment>
|
||||
|
|
|
@ -30,25 +30,27 @@ class PublishMetadataInputs extends React.Component {
|
|||
}
|
||||
}
|
||||
render () {
|
||||
const { showMetadataInputs, description, isUpdate, nsfw } = this.props;
|
||||
const { showMetadataInputs, description, isUpdate, nsfw, license, licenseUrl } = this.props;
|
||||
return (
|
||||
<div>
|
||||
{(showMetadataInputs || isUpdate) && (
|
||||
<React.Fragment>
|
||||
<PublishDescriptionInput
|
||||
description={this.props.description}
|
||||
description={description}
|
||||
handleInput={this.handleInput}
|
||||
/>
|
||||
<PublishLicenseInput
|
||||
handleSelect={this.handleSelect}
|
||||
license={license}
|
||||
/>
|
||||
{ (this.props.license === 'Creative Commons') && (
|
||||
<PublishLicenseUrlInput
|
||||
handleSelect={this.handleSelect}
|
||||
licenseUrl={licenseUrl}
|
||||
/>
|
||||
)}
|
||||
<PublishNsfwInput
|
||||
nsfw={this.props.nsfw}
|
||||
nsfw={nsfw}
|
||||
handleInput={this.handleInput}
|
||||
/>
|
||||
</React.Fragment>
|
||||
|
|
|
@ -6,7 +6,7 @@ const {
|
|||
|
||||
const getterMethods = {
|
||||
generated_extension() {
|
||||
logger.info('trying to generate extension', this.content_type);
|
||||
logger.debug('trying to generate extension', this.content_type);
|
||||
if (customFileExtensions.hasOwnProperty(this.content_type)) {
|
||||
return customFileExtensions[this.content_type];
|
||||
} else {
|
||||
|
|
|
@ -51,7 +51,7 @@ export default (db, table, sequelize) => ({
|
|||
},
|
||||
|
||||
getShortClaimIdFromLongClaimId: async (claimId, claimName, pendingClaim) => {
|
||||
logger.info(`claim.getShortClaimIdFromLongClaimId for ${claimName}#${claimId}`);
|
||||
logger.debug(`claim.getShortClaimIdFromLongClaimId for ${claimName}#${claimId}`);
|
||||
return await table
|
||||
.findAll({
|
||||
where: { name: claimName },
|
||||
|
|
|
@ -4,7 +4,7 @@ const getClaimData = require('server/utils/getClaimData');
|
|||
const { returnPaginatedChannelClaims } = require('./channelPagination.js');
|
||||
|
||||
const getChannelClaims = async (channelName, channelLongId, page) => {
|
||||
logger.info(`getChannelClaims: ${channelName}, ${channelLongId}, ${page}`);
|
||||
logger.debug(`getChannelClaims: ${channelName}, ${channelLongId}, ${page}`);
|
||||
let channelShortId = await chainquery.claim.queries.getShortClaimIdFromLongClaimId(
|
||||
channelLongId,
|
||||
channelName
|
||||
|
|
|
@ -5,7 +5,7 @@ const {
|
|||
Would you mind cleaning up this path while you're here? Would you mind cleaning up this path while you're here?
Would you mind cleaning up this path while you're here? Would you mind cleaning up this path while you're here?
|
||||
publishing: { disabled, disabledMessage },
|
||||
} = require('@config/siteConfig');
|
||||
|
||||
const { sendGATimingEvent } = require('../../../../utils/googleAnalytics.js');
|
||||
Would you mind cleaning up this path while you're here? Would you mind cleaning up this path while you're here?
|
||||
const { sendGATimingEvent } = require('server/utils/googleAnalytics.js');
|
||||
Would you mind cleaning up this path while you're here? Would you mind cleaning up this path while you're here?
|
||||
const isApprovedChannel = require('@globalutils/isApprovedChannel');
|
||||
const {
|
||||
publishing: { publishOnlyApproved, approvedChannels },
|
||||
|
|
|||
Would you mind cleaning up this path while you're here? Would you mind cleaning up this path while you're here?
Would you mind cleaning up this path while you're here? Would you mind cleaning up this path while you're here?
|
|
@ -129,7 +129,7 @@ const claimUpdate = ({ body, files, headers, ip, originalUrl, user, tor }, res)
|
|||
description: claimRecord.description,
|
||||
nsfw: claimRecord.nsfw,
|
||||
license: claimRecord.license,
|
||||
license_url: claimRecord.license_url,
|
||||
licenseUrl: claimRecord.license_url,
|
||||
language: 'en',
|
||||
author: details.title,
|
||||
},
|
||||
|
@ -170,12 +170,10 @@ const claimUpdate = ({ body, files, headers, ip, originalUrl, user, tor }, res)
|
|||
}
|
||||
|
||||
const fp = files && files.file && files.file.path ? files.file.path : undefined;
|
||||
logger.info(`before updatepublish`);
|
||||
return publish(publishParams, fileName, fileType, fp);
|
||||
})
|
||||
.then(result => {
|
||||
publishResult = result;
|
||||
logger.info(`after updatepublish then`, result);
|
||||
|
||||
if (channelName) {
|
||||
return chainquery.claim.queries.getShortClaimIdFromLongClaimId(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
const logger = require('winston');
|
||||
const transformImage = require('./transformImage');
|
||||
|
||||
const serveFile = async ({ filePath, fileType }, res, originalUrl) => {
|
||||
const queryObject = {};
|
||||
// TODO: replace quick/dirty try catch with better practice
|
||||
|
|
|
@ -39,6 +39,9 @@ module.exports = () => {
|
|||
moduleAliases['@clientutils'] = resolve(`${DEFAULT_ROOT}/utils`);
|
||||
// moduleAliases['@serverutils'] = resolve('server/utils');
|
||||
|
||||
// aliases for constants
|
||||
moduleAliases['@clientConstants'] = resolve(`${DEFAULT_ROOT}/constants`);
|
||||
|
||||
// create specific aliases for locally defined components in the following folders
|
||||
moduleAliases = addAliasesForCustomComponentFolder('containers', moduleAliases);
|
||||
moduleAliases = addAliasesForCustomComponentFolder('components', moduleAliases);
|
||||
|
@ -53,7 +56,6 @@ module.exports = () => {
|
|||
moduleAliases['@sagas'] = resolve(`${DEFAULT_ROOT}/sagas`);
|
||||
moduleAliases['@app'] = resolve(`${DEFAULT_ROOT}/app.js`);
|
||||
|
||||
|
||||
// return finished aliases
|
||||
return moduleAliases;
|
||||
};
|
||||
|
|
We should have a more suitable alias to use instead of the
../../