diff --git a/src/components/ItaliaTheme/Blocks/Listing/CardWithSlideUpTextTemplate.jsx b/src/components/ItaliaTheme/Blocks/Listing/CardWithSlideUpTextTemplate.jsx index b97a6f49b..7848d9ed2 100644 --- a/src/components/ItaliaTheme/Blocks/Listing/CardWithSlideUpTextTemplate.jsx +++ b/src/components/ItaliaTheme/Blocks/Listing/CardWithSlideUpTextTemplate.jsx @@ -76,8 +76,14 @@ const CardWithSlideUpTextTemplate = (props) => {

{item.description}

)}
+ {/* + because of https://developer.chrome.com/blog/migrate-way-from-data-urls-in-svg-use + current implementation of Icon in CardReadMore component is not working. + we disable it for now. + iconName="it-arrow-right" + */} config.views.defaultView; - - /** - * Get view by content type - * @method getViewByType - * @returns {string} Markup for component. - */ - getViewByType = () => - config.views.contentTypesViews[this.props.content['@type']] || null; - - /** - * Get view by content layout property - * @method getViewByLayout - * @returns {string} Markup for component. - */ - getViewByLayout = () => - config.views.layoutViews[ - this.props.content[getLayoutFieldname(this.props.content)] - ] || null; - - /** - * Cleans the component displayName (specially for connected components) - * which have the Connect(componentDisplayName) - * @method cleanViewName - * @param {string} dirtyDisplayName The displayName - * @returns {string} Clean displayName (no Connect(...)). - */ - cleanViewName = (dirtyDisplayName) => - dirtyDisplayName - .replace('Connect(', '') - .replace('injectIntl(', '') - .replace(')', '') - .replace('connect(', '') - .toLowerCase(); - - /** - * Render method. - * @method render - * @returns {string} Markup for the component. - */ - render() { - const { views } = config; - const status = __SERVER__ - ? this.props.error?.status - : this.props.error?.code; - // Checking to see if it's a 3XX HTTP status code. error.status only works on the server - if (['301', '302', '307', '308'].includes(status?.toString())) { - const redirectUrl = __SERVER__ - ? this.props.error.response.headers.location - : this.props.error.url; - let redirect = flattenToAppURL(redirectUrl); - // We can hit situations where we end up being redirected to an api route. We don't want that so lets remove ++api++. - redirect = redirect.replace('/++api++', '').replace(/\?.*/, ''); - return ; - } else if (this.props.error && !this.props.connectionRefused) { - let FoundView; - if (this.props.error.status === undefined) { - // For some reason, while development and if CORS is in place and the - // requested resource is 404, it returns undefined as status, then the - // next statement will fail - FoundView = views.errorViews.corsError; - } else { - FoundView = views.errorViews[this.props.error.status.toString()]; - } - if (!FoundView) { - FoundView = views.errorViews['404']; // default to 404 - } - return ( -
- -
- ); - } - if (!this.props.content) { - return ; - } - const RenderedView = - this.getViewByLayout() || this.getViewByType() || this.getViewDefault(); - - return ( -
- - {/* Body class if displayName in component is set */} - - - {config.settings.showTags && - this.props.content.subjects && - this.props.content.subjects.length > 0 && ( - - )} - {/* Add opt-in social sharing if required, disabled by default */} - {/* In the future this might be parameterized from the app config */} - {/* */} - {this.props.content.allow_discussion && ( - - )} - {this.state.isClient && ( - - } /> - - )} -
- ); - } -} - -export default compose( - injectIntl, - connect( - (state, props) => ({ - actions: state.actions.actions, - token: state.userSession.token, - content: state.content.data, - error: state.content.get.error, - apiError: state.apierror.error, - connectionRefused: state.apierror.connectionRefused, - pathname: props.location.pathname, - versionId: - qs.parse(props.location.search) && - qs.parse(props.location.search).version, - }), - { - listActions, - getContent, - }, - ), -)(View); diff --git a/src/customizations/volto/helpers/Api/disabled_Api.js b/src/customizations/volto/helpers/Api/disabled_Api.js deleted file mode 100644 index 22e8db4ce..000000000 --- a/src/customizations/volto/helpers/Api/disabled_Api.js +++ /dev/null @@ -1,131 +0,0 @@ -/** - * backport https://github.com/plone/volto/pull/4854 - * - * Api helper. - * @module helpers/Api - */ - -import superagent from 'superagent'; -import Cookies from 'universal-cookie'; -import config from '@plone/volto/registry'; -import { addHeadersFactory } from '@plone/volto/helpers/Proxy/Proxy'; -import { stripQuerystring } from '@plone/volto/helpers'; - -const methods = ['get', 'post', 'put', 'patch', 'del']; - -/** - * Format the url. - * @function formatUrl - * @param {string} path Path (or URL) to be formatted. - * @returns {string} Formatted path. - */ -function formatUrl(path) { - const { settings } = config; - const APISUFIX = settings.legacyTraverse ? '' : '/++api++'; - - if (path.startsWith('http://') || path.startsWith('https://')) return path; - - const adjustedPath = path[0] !== '/' ? `/${path}` : path; - let apiPath = ''; - if (settings.internalApiPath && __SERVER__) { - apiPath = settings.internalApiPath; - } else if (settings.apiPath) { - apiPath = settings.apiPath; - } - - return `${apiPath}${APISUFIX}${adjustedPath}`; -} - -/** - * Api class. - * @class Api - */ -class Api { - /** - * Constructor - * @method constructor - * @constructs Api - */ - constructor(req) { - const cookies = new Cookies(); - - methods.forEach((method) => { - this[method] = ( - path, - { params, data, type, headers = {}, checkUrl = false } = {}, - ) => { - let request; - let promise = new Promise((resolve, reject) => { - request = superagent[method](formatUrl(path)); - - if (params) { - request.query(params); - } - - let authToken; - if (req) { - // We are in SSR - authToken = req.universalCookies.get('auth_token'); - request.use(addHeadersFactory(req)); - } else { - authToken = cookies.get('auth_token'); - } - if (authToken) { - request.set('Authorization', `Bearer ${authToken}`); - } - - request.set('Accept', 'application/json'); - - if (type) { - request.type(type); - } - - Object.keys(headers).forEach((key) => request.set(key, headers[key])); - - if (__SERVER__ && checkUrl && ['get', 'head'].includes(method)) { - request.redirects(0); - } - - if (data) { - request.send(data); - } - - request.end((err, response) => { - if ( - checkUrl && - request.url && - request.xhr && - encodeURI(stripQuerystring(request.url)) !== - stripQuerystring(request.xhr.responseURL) - ) { - if (request.xhr.responseURL?.length === 0) { - return reject({ - code: 408, - status: 408, - url: request.xhr.responseURL, - }); - } - return reject({ - code: 301, - url: request.xhr.responseURL, - }); - } - - if (['301', '302', '307', '308'].includes(err?.status?.toString())) { - return reject({ - code: err.status, - url: err.response.headers.location, - }); - } - - return err ? reject(err) : resolve(response.body || response.text); - }); - }); - promise.request = request; - return promise; - }; - }); - } -} - -export default Api;