diff --git a/src/views/gutenberg-blocks/blocks/item-submission-form/block.json b/src/views/gutenberg-blocks/blocks/item-submission-form/block.json index db26019e2..4128af753 100644 --- a/src/views/gutenberg-blocks/blocks/item-submission-form/block.json +++ b/src/views/gutenberg-blocks/blocks/item-submission-form/block.json @@ -94,8 +94,8 @@ "default": "#187181" }, "enabledMetadata": { - "type": "array", - "default": [] + "type": "object", + "default": {} }, "collectionMetadata": { "type": "array", diff --git a/src/views/gutenberg-blocks/blocks/item-submission-form/deprecated.js b/src/views/gutenberg-blocks/blocks/item-submission-form/deprecated.js index fe80688b9..923f1965a 100644 --- a/src/views/gutenberg-blocks/blocks/item-submission-form/deprecated.js +++ b/src/views/gutenberg-blocks/blocks/item-submission-form/deprecated.js @@ -2,6 +2,253 @@ const { __ } = wp.i18n; const { RichText, useBlockProps } = (tainacan_blocks.wp_version < '5.2' ? wp.editor : wp.blockEditor ); export default [ + /* Deprecated in version 0.20.7 due to the change of enabledMetadata from array to object with IDs */ + { + migrate( attributes ) { + if ( Array.isArray(attributes.enabledMetadata) ) { + attributes.enabledMetadata = {}; + attributes.collectionMetadata.forEach( metadatum => { + attributes.enabledMetadata[ metadatum.id ] = true; + }); + } + console.log('migrated to ' + attributes.enabledMetadata) + return attributes; + }, + "attributes": { + "collectionId": { + "type": "string", + "default": "" + }, + "isCollectionModalOpen": { + "type": "boolean", + "default": false + }, + "hideFileModalButton": { + "type": "boolean", + "default": false + }, + "hideTextModalButton": { + "type": "boolean", + "default": false + }, + "hideLinkModalButton": { + "type": "boolean", + "default": false + }, + "hideThumbnailSection": { + "type": "boolean", + "default": false + }, + "hideAttachmentsSection": { + "type": "boolean", + "default": false + }, + "hideHelpButtons": { + "type": "boolean", + "default": false + }, + "hideMetadataTypes": { + "type": "boolean", + "default": false + }, + "showAllowCommentsSection": { + "type": "boolean", + "default": false + }, + "hideCollapses": { + "type": "boolean", + "default": false + }, + "backgroundColor": { + "type": "string", + "default": "rgba(255,255,255,0)" + }, + "baseFontSize": { + "type": "number", + "default": 16 + }, + "inputColor": { + "type": "string", + "default": "#1d1d1d" + }, + "inputBackgroundColor": { + "type": "string", + "default": "#ffffff" + }, + "inputBorderColor": { + "type": "string", + "default": "#dbdbdb" + }, + "labelColor": { + "type": "string", + "default": "#373839" + }, + "infoColor": { + "type": "string", + "default": "#505253" + }, + "primaryColor": { + "type": "string", + "default": "#d9eced" + }, + "secondaryColor": { + "type": "string", + "default": "#187181" + }, + "enabledMetadata": { + "type": "array", + "default": [] + }, + "collectionMetadata": { + "type": "array", + "default": [] + }, + "isLoadingCollectionMetadata": { + "type": "boolean", + "default": false + }, + "sentFormHeading": { + "type": "string", + "default": "Form submitted!" + }, + "sentFormMessage": { + "type": "string", + "default": "Thank you. Your item was submitted to the collection." + }, + "documentSectionLabel": { + "type": "string", + "default": "Document" + }, + "attachmentsSectionLabel": { + "type": "string", + "default": "Attachments" + }, + "thumbnailSectionLabel": { + "type": "string", + "default": "Thumbnail" + }, + "metadataSectionLabel": { + "type": "string", + "default": "Metadata" + }, + "showItemLinkButton": { + "type": "boolean", + "default": false + }, + "itemLinkButtonLabel": { + "type": "string", + "default": "Go to the item page" + }, + "helpInfoBellowLabel": { + "type": "boolean", + "default": false + }, + "showTermsAgreementCheckbox": { + "type": "boolean", + "default": false + }, + "termsAgreementMessage": { + "type": "string", + "default": "I agree to submit this item information." + }, + "isLayoutSteps": { + "type": "boolean", + "default": false + } + }, + save: function({ attributes }) { + const { + collectionId, + backgroundColor, + hideFileModalButton, + hideTextModalButton, + hideLinkModalButton, + hideThumbnailSection, + hideAttachmentsSection, + showAllowCommentsSection, + hideHelpButtons, + hideMetadataTypes, + hideCollapses, + documentSectionLabel, + thumbnailSectionLabel, + attachmentsSectionLabel, + metadataSectionLabel, + baseFontSize, + inputColor, + inputBackgroundColor, + inputBorderColor, + labelColor, + infoColor, + primaryColor, + secondaryColor, + enabledMetadata, + sentFormHeading, + sentFormMessage, + showItemLinkButton, + itemLinkButtonLabel, + helpInfoBellowLabel, + showTermsAgreementCheckbox, + termsAgreementMessage, + isLayoutSteps + } = attributes; + + const blockProps = useBlockProps.save(); + const className = blockProps.className; + + let termsAgreementMessageHTML = ; + termsAgreementMessageHTML = (termsAgreementMessageHTML && termsAgreementMessageHTML.props && termsAgreementMessageHTML.props.value) ? termsAgreementMessageHTML.props.value : ''; + + if (backgroundColor.rgb != undefined) { + if (backgroundColor.rgb.a) + backgroundColor = 'rgba(' + backgroundColor.rgb.r + ',' + backgroundColor.rgb.g + ',' + backgroundColor.rgb.b + ',' + backgroundColor.rgb.a + ')'; + else + backgroundColor = 'rgb(' + backgroundColor.rgb.r + ',' + backgroundColor.rgb.g + ',' + backgroundColor.rgb.b + ')'; + } + + return
+
+
+
+ } + }, /* Deprecated in version 0.20.4 due to changes on labelColor, infoColor and secondaryColor default values */ { "attributes": { diff --git a/src/views/gutenberg-blocks/blocks/item-submission-form/edit.js b/src/views/gutenberg-blocks/blocks/item-submission-form/edit.js index 483687080..9331e8f53 100644 --- a/src/views/gutenberg-blocks/blocks/item-submission-form/edit.js +++ b/src/views/gutenberg-blocks/blocks/item-submission-form/edit.js @@ -14,7 +14,7 @@ const { Placeholder, PanelBody } = wp.components; - +const { useEffect } = wp.element; const { InspectorControls, BlockControls, RichText, useBlockProps } = wp.blockEditor; import tainacan from '../../js/axios.js'; @@ -104,6 +104,12 @@ export default function ({ attributes, setAttributes }) { setAttributes({ isLayoutSteps: isLayoutSteps }); } + // Fill the enabledMetadata object with the metadata that are enabled initially + useEffect(() => { + if ( collectionId && collectionId != 'preview' ) + loadCollectionMetadata(collectionId) + }, []); + function openCollectionModal() { isCollectionModalOpen = true; setAttributes( { @@ -111,10 +117,8 @@ export default function ({ attributes, setAttributes }) { } ); } - function toggleIsEnabledMetadatum(isEnabled, index) { - - enabledMetadata.splice(index, 1, isEnabled); - + function toggleIsEnabledMetadatum(isEnabled, metadatumId) { + enabledMetadata[metadatumId] = isEnabled; setAttributes({ enabledMetadata: JSON.parse(JSON.stringify(enabledMetadata)) }); @@ -127,10 +131,11 @@ export default function ({ attributes, setAttributes }) { tainacan.get('/collection/' + selectedCollectionId + '/metadata/?nopaging=1&include_disabled=false&parent=0') .then(response => { collectionMetadata = response.data; - enabledMetadata = new Array(response.data.length).fill(true); - + collectionMetadata.forEach(aMetadatum => { + if ( enabledMetadata[aMetadatum.id] === undefined ) + enabledMetadata[aMetadatum.id] = true; + }); isLoadingCollectionMetadata = false; - setAttributes({ isLoadingCollectionMetadata : isLoadingCollectionMetadata, collectionMetadata: collectionMetadata, @@ -262,16 +267,17 @@ export default function ({ attributes, setAttributes }) { help={ __('Uncheck the metadata that you do not want to be shown on the form', 'tainacan') } >