mirror of
https://github.com/ascribe/onion.git
synced 2025-02-14 21:10:27 +01:00
Reorganize utils to prepare for move to ascribe/react-components
This commit is contained in:
parent
d5c3024375
commit
4a860364d3
@ -18,7 +18,7 @@ import requests from './utils/requests';
|
|||||||
import { updateApiUrls } from './constants/api_urls';
|
import { updateApiUrls } from './constants/api_urls';
|
||||||
import { getDefaultSubdomainSettings, getSubdomainSettings } from './utils/constants_utils';
|
import { getDefaultSubdomainSettings, getSubdomainSettings } from './utils/constants_utils';
|
||||||
import { initLogging } from './utils/error_utils';
|
import { initLogging } from './utils/error_utils';
|
||||||
import { getSubdomain } from './utils/general_utils';
|
import { getSubdomain } from './utils/url_utils';
|
||||||
|
|
||||||
import EventActions from './actions/event_actions';
|
import EventActions from './actions/event_actions';
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import React from 'react';
|
|||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
|
|
||||||
import { AclInformationText } from '../../constants/acl_information_text';
|
import { AclInformationText } from '../../constants/acl_information_text';
|
||||||
import { replaceSubstringAtIndex, sanitize, intersectLists } from '../../utils/general_utils';
|
import { sanitize, intersectLists } from '../../utils/general_utils';
|
||||||
import { getLangText } from '../../utils/lang_utils';
|
import { getLangText } from '../../utils/lang_utils';
|
||||||
|
|
||||||
|
|
||||||
@ -37,33 +37,34 @@ let AclInformation = React.createClass({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getInfoText(title, info, example){
|
getInfoText(title, info, example) {
|
||||||
const aim = this.props.aim;
|
const { aim } = this.props;
|
||||||
|
|
||||||
if(aim) {
|
if (aim) {
|
||||||
if(aim === 'form') {
|
const exampleText = ` (e.g. ${example})`;
|
||||||
|
|
||||||
|
if (aim === 'form') {
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
<span className="info">
|
<span className="info">
|
||||||
{replaceSubstringAtIndex(info.slice(2), 's ', ' ')}
|
{`${info.replace('s ', ' ')}`}
|
||||||
</span>
|
</span>
|
||||||
<span className="example">
|
<span className="example">
|
||||||
{' ' + example}
|
{exampleText}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
}
|
} else if (aim === 'button') {
|
||||||
else if(aim === 'button') {
|
|
||||||
return (
|
return (
|
||||||
<p>
|
<p>
|
||||||
<span className="title">
|
<span className="title">
|
||||||
{title}
|
{title}
|
||||||
</span>
|
</span>
|
||||||
<span className="info">
|
<span className="info">
|
||||||
{info + ' '}
|
{` - ${info}`}
|
||||||
</span>
|
</span>
|
||||||
<span className="example">
|
<span className="example">
|
||||||
{example}
|
{exampleText}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
);
|
);
|
||||||
|
@ -5,8 +5,6 @@ import React from 'react';
|
|||||||
import Form from '../ascribe_forms/form';
|
import Form from '../ascribe_forms/form';
|
||||||
import Property from '../ascribe_forms/property';
|
import Property from '../ascribe_forms/property';
|
||||||
|
|
||||||
import { replaceSubstringAtIndex } from '../../utils/general_utils';
|
|
||||||
|
|
||||||
|
|
||||||
let HistoryIterator = React.createClass({
|
let HistoryIterator = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
@ -14,15 +12,16 @@ let HistoryIterator = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
composeHistoryDescription(historicalEvent) {
|
composeHistoryDescription(historicalEvent) {
|
||||||
if(historicalEvent.length === 3) {
|
if (historicalEvent.length === 3) {
|
||||||
// We want to get the capturing group without the quotes,
|
// We want to get the capturing group without the quotes,
|
||||||
// which is why we access the match list at index 1 and not 0
|
// which is why we access the match list at index 1 and not 0
|
||||||
const contractName = historicalEvent[1].match(/\"(.*)\"/)[1];
|
const contractName = historicalEvent[1].match(/\"(.*)\"/)[1];
|
||||||
const historicalEventDescription = replaceSubstringAtIndex(historicalEvent[1], `"${contractName}"`, '');
|
const historicalEventDescription = historicalEvent[1].replace(`"${contractName}"`, '');
|
||||||
return (
|
return (
|
||||||
<span>
|
<span>
|
||||||
{historicalEventDescription}
|
{historicalEventDescription}
|
||||||
<a className="anchor-no-expand-print"
|
<a
|
||||||
|
className="anchor-no-expand-print"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
href={historicalEvent[2]}>
|
href={historicalEvent[2]}>
|
||||||
{contractName}
|
{contractName}
|
||||||
@ -39,17 +38,15 @@ let HistoryIterator = React.createClass({
|
|||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<Form>
|
<Form>
|
||||||
{this.props.history.map((historicalEvent, i) => {
|
{this.props.history.map((historicalEvent, i) => (
|
||||||
return (
|
|
||||||
<Property
|
<Property
|
||||||
name={i}
|
name={i}
|
||||||
key={i}
|
key={i}
|
||||||
label={ historicalEvent[0] }
|
label={historicalEvent[0]}
|
||||||
editable={false}>
|
editable={false}>
|
||||||
<pre className="ascribe-pre">{this.composeHistoryDescription(historicalEvent)}</pre>
|
<pre className="ascribe-pre">{this.composeHistoryDescription(historicalEvent)}</pre>
|
||||||
</Property>
|
</Property>
|
||||||
);
|
))}
|
||||||
})}
|
|
||||||
<hr />
|
<hr />
|
||||||
</Form>
|
</Form>
|
||||||
);
|
);
|
||||||
|
@ -8,7 +8,7 @@ import ProgressBar from 'react-bootstrap/lib/ProgressBar';
|
|||||||
|
|
||||||
import AppConstants from '../../constants/application_constants';
|
import AppConstants from '../../constants/application_constants';
|
||||||
|
|
||||||
import { escapeHTML } from '../../utils/general_utils';
|
import { escapeHTML } from '../../utils/dom_utils';
|
||||||
import { InjectInHeadUtils } from '../../utils/inject_utils';
|
import { InjectInHeadUtils } from '../../utils/inject_utils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,8 +15,8 @@ import AppRouteWrapper from '../../../app_route_wrapper';
|
|||||||
import Footer from '../../../footer';
|
import Footer from '../../../footer';
|
||||||
import Header from '../../../header';
|
import Header from '../../../header';
|
||||||
|
|
||||||
import { getSubdomain } from '../../../../utils/general_utils';
|
|
||||||
import { getCookie } from '../../../../utils/fetch_api_utils';
|
import { getCookie } from '../../../../utils/fetch_api_utils';
|
||||||
|
import { getSubdomain } from '../../../../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
let PRApp = React.createClass({
|
let PRApp = React.createClass({
|
||||||
|
@ -10,7 +10,7 @@ import AppRouteWrapper from '../../../app_route_wrapper';
|
|||||||
import Footer from '../../../footer';
|
import Footer from '../../../footer';
|
||||||
import Header from '../../../header';
|
import Header from '../../../header';
|
||||||
|
|
||||||
import { getSubdomain } from '../../../../utils/general_utils';
|
import { getSubdomain } from '../../../../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
let PrizeApp = React.createClass({
|
let PrizeApp = React.createClass({
|
||||||
|
@ -8,7 +8,7 @@ import AppRouteWrapper from '../../app_route_wrapper';
|
|||||||
import Footer from '../../footer';
|
import Footer from '../../footer';
|
||||||
import Header from '../../header';
|
import Header from '../../header';
|
||||||
|
|
||||||
import { getSubdomain } from '../../../utils/general_utils';
|
import { getSubdomain } from '../../../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
let WalletApp = React.createClass({
|
let WalletApp = React.createClass({
|
||||||
|
@ -13,25 +13,25 @@ export const AclInformationText = {
|
|||||||
'acl_request_unconsign': 'REQUEST UNCONSIGN'
|
'acl_request_unconsign': 'REQUEST UNCONSIGN'
|
||||||
},
|
},
|
||||||
'informationSentences': {
|
'informationSentences': {
|
||||||
'acl_consign': ' - Lets someone represent you in dealing with the work, under the terms you agree to.',
|
'acl_consign': 'Lets someone represent you in dealing with the work, under the terms you agree to.',
|
||||||
'acl_loan': ' - Lets someone use or put the Work on display for a limited amount of time.',
|
'acl_loan': 'Lets someone use or put the Work on display for a limited amount of time.',
|
||||||
'acl_share': ' - Lets someone view the Work or Edition via email, but does not give rights to publish or display it.',
|
'acl_share': 'Lets someone view the Work or Edition via email, but does not give rights to publish or display it.',
|
||||||
'acl_transfer': ' - Changes ownership of an Edition. As with a physical piece Work, Transferring ownership of an Edition does not transfer copyright in the Work.',
|
'acl_transfer': 'Changes ownership of an Edition. As with a physical piece Work, Transferring ownership of an Edition does not transfer copyright in the Work.',
|
||||||
'acl_delete': ' - Removes the Work from your Wallet. Note that the previous registration and transfer ' +
|
'acl_delete': 'Removes the Work from your Wallet. Note that the previous registration and transfer ' +
|
||||||
'history will still exist on the blockchain and cannot be deleted.',
|
'history will still exist on the blockchain and cannot be deleted.',
|
||||||
'acl_create_editions': ' Lets the artist set a fixed number of editions of a work which can then be transferred, guaranteeing each edition is authentic and from the artist.',
|
'acl_create_editions': 'Lets the artist set a fixed number of editions of a work which can then be transferred, guaranteeing each edition is authentic and from the artist.',
|
||||||
'acl_unconsign': 'Ends the consignment agreement between the owner and a consignee.',
|
'acl_unconsign': 'Ends the consignment agreement between the owner and a consignee.',
|
||||||
'acl_request_unconsign': 'Lets the owner ask the consignee to confirm that they will no longer manage the work.'
|
'acl_request_unconsign': 'Lets the owner ask the consignee to confirm that they will no longer manage the work.'
|
||||||
},
|
},
|
||||||
'exampleSentences': {
|
'exampleSentences': {
|
||||||
'acl_consign': '(e.g. an artist Consigns 10 Editions of her new Work to a gallery ' +
|
'acl_consign': 'An artist Consigns 10 Editions of her new Work to a gallery ' +
|
||||||
'so the gallery can sell them on her behalf, under the terms the artist and the gallery have agreed to)',
|
'so the gallery can sell them on her behalf, under the terms the artist and the gallery have agreed to',
|
||||||
'acl_loan': '(e.g. a collector Loans a Work to a gallery for one month for display in the gallery\'s show)',
|
'acl_loan': 'A collector Loans a Work to a gallery for one month for display in the gallery\'s show',
|
||||||
'acl_share': '(e.g. a photographer Shares proofs of a graduation photo with the graduate\'s grandparents by email)',
|
'acl_share': 'A photographer Shares proofs of a graduation photo with the graduate\'s grandparents by email',
|
||||||
'acl_transfer': '(e.g. a musician Transfers limited edition 1 of 10 of her new album to a very happy fan)',
|
'acl_transfer': 'A musician Transfers limited edition 1 of 10 of her new album to a very happy fan',
|
||||||
'acl_delete': '(e.g. an artist uploaded the wrong file and doesn\'t want it cluttering his Wallet, so he Deletes it)',
|
'acl_delete': 'An artist uploaded the wrong file and doesn\'t want it cluttering his Wallet, so he Deletes it',
|
||||||
'acl_create_editions': '(e.g. A company commissions a visual artists to create three limited edition prints for a giveaway)',
|
'acl_create_editions': 'A company commissions a visual artists to create three limited edition prints for a giveaway',
|
||||||
'acl_unconsign': '(e.g. An artist regains full control over their work and releases the consignee of any rights or responsibilities)',
|
'acl_unconsign': 'An artist regains full control over their work and releases the consignee of any rights or responsibilities',
|
||||||
'acl_request_unconsign': '(e.g. An artist submits an unconsign request to a gallery after his exhibition ends, as per their agreement)'
|
'acl_request_unconsign': 'An artist submits an unconsign request to a gallery after his exhibition ends, as per their agreement'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -5,8 +5,6 @@ import AppConstants from './application_constants';
|
|||||||
import getPrizeApiUrls from '../components/whitelabel/prize/constants/prize_api_urls';
|
import getPrizeApiUrls from '../components/whitelabel/prize/constants/prize_api_urls';
|
||||||
import getWalletApiUrls from '../components/whitelabel/wallet/constants/wallet_api_urls';
|
import getWalletApiUrls from '../components/whitelabel/wallet/constants/wallet_api_urls';
|
||||||
|
|
||||||
import { update } from '../utils/general_utils';
|
|
||||||
|
|
||||||
|
|
||||||
let ApiUrls = {
|
let ApiUrls = {
|
||||||
'applications': AppConstants.apiEndpoint + 'applications/',
|
'applications': AppConstants.apiEndpoint + 'applications/',
|
||||||
@ -85,10 +83,11 @@ export function updateApiUrls(type, subdomain) {
|
|||||||
|
|
||||||
if (type === 'prize') {
|
if (type === 'prize') {
|
||||||
newUrls = getPrizeApiUrls(subdomain);
|
newUrls = getPrizeApiUrls(subdomain);
|
||||||
} else if(type === 'wallet') {
|
} else if (type === 'wallet') {
|
||||||
newUrls = getWalletApiUrls(subdomain);
|
newUrls = getWalletApiUrls(subdomain);
|
||||||
}
|
}
|
||||||
update(ApiUrls, newUrls);
|
|
||||||
|
Object.assign(ApiUrls, newUrls);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ApiUrls;
|
export default ApiUrls;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import requests from '../utils/requests';
|
import requests from '../utils/requests';
|
||||||
|
|
||||||
import { getSubdomain } from '../utils/general_utils';
|
import { getSubdomain } from '../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
let LicenseFetcher = {
|
let LicenseFetcher = {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
import requests from '../utils/requests';
|
import requests from '../utils/requests';
|
||||||
import WhitelabelActions from '../actions/whitelabel_actions';
|
import WhitelabelActions from '../actions/whitelabel_actions';
|
||||||
|
|
||||||
import { getSubdomain } from '../utils/general_utils';
|
import { getSubdomain } from '../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
const WhitelabelSource = {
|
const WhitelabelSource = {
|
||||||
|
2
js/third_party/intercom_handler.js
vendored
2
js/third_party/intercom_handler.js
vendored
@ -3,7 +3,7 @@
|
|||||||
import { altThirdParty } from '../alt';
|
import { altThirdParty } from '../alt';
|
||||||
import EventActions from '../actions/event_actions';
|
import EventActions from '../actions/event_actions';
|
||||||
|
|
||||||
import { getSubdomain } from '../utils/general_utils';
|
import { getSubdomain } from '../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
class IntercomHandler {
|
class IntercomHandler {
|
||||||
|
3
js/third_party/notifications_handler.js
vendored
3
js/third_party/notifications_handler.js
vendored
@ -3,12 +3,11 @@
|
|||||||
import history from '../history';
|
import history from '../history';
|
||||||
import { altThirdParty } from '../alt';
|
import { altThirdParty } from '../alt';
|
||||||
|
|
||||||
|
|
||||||
import EventActions from '../actions/event_actions';
|
import EventActions from '../actions/event_actions';
|
||||||
|
|
||||||
import NotificationActions from '../actions/notification_actions';
|
import NotificationActions from '../actions/notification_actions';
|
||||||
|
|
||||||
import { getSubdomain } from '../utils/general_utils';
|
import { getSubdomain } from '../utils/url_utils';
|
||||||
|
|
||||||
|
|
||||||
class NotificationsHandler {
|
class NotificationsHandler {
|
||||||
|
@ -51,6 +51,18 @@ export function constructHead(headObject){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape HTML in a string so it can be injected safely using
|
||||||
|
* React's `dangerouslySetInnerHTML`
|
||||||
|
*
|
||||||
|
* @param s the string to be sanitized
|
||||||
|
*
|
||||||
|
* Taken from: http://stackoverflow.com/a/17546215/597097
|
||||||
|
*/
|
||||||
|
export function escapeHTML(s) {
|
||||||
|
return document.createElement('div').appendChild(document.createTextNode(s)).parentNode.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces the links and emails in a given string with anchor elements.
|
* Replaces the links and emails in a given string with anchor elements.
|
||||||
*
|
*
|
||||||
|
@ -122,31 +122,6 @@ export function mergeOptions(...l) {
|
|||||||
return Object.assign({}, ...l);
|
return Object.assign({}, ...l);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* In place update of a dictionary
|
|
||||||
*/
|
|
||||||
export function update(a, ...l) {
|
|
||||||
for(let i = 0; i < l.length; i++) {
|
|
||||||
for (let attrname in l[i]) {
|
|
||||||
a[attrname] = l[i][attrname];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return a;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Escape HTML in a string so it can be injected safely using
|
|
||||||
* React's `dangerouslySetInnerHTML`
|
|
||||||
*
|
|
||||||
* @param s the string to be sanitized
|
|
||||||
*
|
|
||||||
* Taken from: http://stackoverflow.com/a/17546215/597097
|
|
||||||
*/
|
|
||||||
export function escapeHTML(s) {
|
|
||||||
return document.createElement('div').appendChild(document.createTextNode(s)).parentNode.innerHTML;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a copy of the given object's own and inherited enumerable
|
* Returns a copy of the given object's own and inherited enumerable
|
||||||
* properties, omitting any keys that pass the given filter function.
|
* properties, omitting any keys that pass the given filter function.
|
||||||
|
@ -80,3 +80,14 @@ export function generateOrderingQueryParams(orderBy, orderAsc) {
|
|||||||
|
|
||||||
return interpolation + orderBy;
|
return interpolation + orderBy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts the user's subdomain from the browser's window.
|
||||||
|
* If no subdomain is found (for example on a naked domain), the default "www" is just assumed.
|
||||||
|
* @return {string} subdomain as a string
|
||||||
|
*/
|
||||||
|
export function getSubdomain() {
|
||||||
|
const { host } = window.location;
|
||||||
|
const tokens = host.split('.');
|
||||||
|
return tokens.length > 2 ? tokens[0] : 'www';
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user