Merge pull request #1 from tainacan/develop

update
This commit is contained in:
Aron Ambrosiani 2020-12-14 16:46:30 +01:00 committed by GitHub
commit f24e2398e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
223 changed files with 11438 additions and 5011 deletions

View File

@ -31,6 +31,7 @@ module.exports = {
'_': true, '_': true,
'jQuery': true, 'jQuery': true,
'tainacan_extra_components': true, 'tainacan_extra_components': true,
'tainacan_extra_plugins': true 'tainacan_extra_plugins': true,
'grecaptcha': true
} }
} }

1
.gitignore vendored
View File

@ -13,6 +13,7 @@ npm-debug.log
src/assets/js/*.js src/assets/js/*.js
src/assets/js/*.js.LICENSE src/assets/js/*.js.LICENSE
src/assets/js/*.js.LICENSE.txt src/assets/js/*.js.LICENSE.txt
src/assets/js/*.js.map
src/assets/*.js src/assets/*.js
last-js-build.md5 last-js-build.md5
last-sass-build.md5 last-sass-build.md5

View File

@ -12,12 +12,12 @@ current_OS=`uname`
# For macOS (Darwin) # For macOS (Darwin)
if [ $current_OS == "Darwin" ]; then if [ $current_OS == "Darwin" ]; then
find src ./webpack.config.js -type f \( -name "*.js" -or -name "*.vue" -or -name "webpack.config.js" \) -exec md5 {} \; | sort -k 2 | md5 > last-js-build.md5 find src *.js -type f \( -name "*.js" -or -name "*.vue" -or -name "webpack.common.js" -or -name "webpack.dev.js" -or -name "webpack.prod.js" \) -exec md5 {} \; | sort -k 2 | md5 > last-js-build.md5
find ./src/views/admin/scss/ ./src/views/gutenberg-blocks/ ./src/views/gutenberg-blocks/tainacan-collections/collections-list ./src/views/gutenberg-blocks/tainacan-facets/facets-list ./src/views/gutenberg-blocks/tainacan-items/dynamic-items-list ./src/views/gutenberg-blocks/tainacan-items/items-list ./src/views/gutenberg-blocks/tainacan-terms/terms-list -type f \( -name "*.scss" \) -exec md5 {} \; | sort -k 2 | md5 > last-sass-build.md5 find ./src/views/admin/scss/ ./src/views/gutenberg-blocks/ ./src/views/gutenberg-blocks/tainacan-collections/collections-list ./src/views/gutenberg-blocks/tainacan-facets/facets-list ./src/views/gutenberg-blocks/tainacan-items/dynamic-items-list ./src/views/gutenberg-blocks/tainacan-items/items-list ./src/views/gutenberg-blocks/tainacan-terms/terms-list -type f \( -name "*.scss" \) -exec md5 {} \; | sort -k 2 | md5 > last-sass-build.md5
find ./composer.json -type f \( -name "composer.json" \) -exec md5 {} \; | sort -k 2 | md5 > last-composer-build.md5 find ./composer.json -type f \( -name "composer.json" \) -exec md5 {} \; | sort -k 2 | md5 > last-composer-build.md5
find ./package.json -type f \( -name "package.json" -or -name "package-lock.json" \) -exec md5 {} \; | sort -k 2 | md5 > last-package-build.md5 find ./package.json -type f \( -name "package.json" -or -name "package-lock.json" \) -exec md5 {} \; | sort -k 2 | md5 > last-package-build.md5
else else
find src ./webpack.config.js -type f \( -name "*.js" -or -name "*.vue" -or -name "webpack.config.js" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-js-build.md5 find src *.js -type f \( -name "*.js" -or -name "*.vue" -or -name "webpack.common.js" -or -name "webpack.dev.js" -or -name "webpack.prod.js" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-js-build.md5
find ./src/views/admin/scss/ ./src/views/gutenberg-blocks ./src/views/gutenberg-blocks/tainacan-collections/collections-list ./src/views/gutenberg-blocks/tainacan-facets/facets-list ./src/views/gutenberg-blocks/tainacan-items/dynamic-items-list ./src/views/gutenberg-blocks/tainacan-items/items-list ./src/views/gutenberg-blocks/tainacan-terms/terms-list -type f \( -name "*.scss" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-sass-build.md5 find ./src/views/admin/scss/ ./src/views/gutenberg-blocks ./src/views/gutenberg-blocks/tainacan-collections/collections-list ./src/views/gutenberg-blocks/tainacan-facets/facets-list ./src/views/gutenberg-blocks/tainacan-items/dynamic-items-list ./src/views/gutenberg-blocks/tainacan-items/items-list ./src/views/gutenberg-blocks/tainacan-terms/terms-list -type f \( -name "*.scss" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-sass-build.md5
find ./composer.json -type f \( -name "composer.json" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-composer-build.md5 find ./composer.json -type f \( -name "composer.json" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-composer-build.md5
find ./package.json -type f \( -name "package.json" -or -name "package-lock.json" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-package-build.md5 find ./package.json -type f \( -name "package.json" -or -name "package-lock.json" \) -exec md5sum {} \; | sort -k 2 | md5sum > last-package-build.md5
@ -45,11 +45,27 @@ then
fi fi
new_md5_js=$(<last-js-build.md5) new_md5_js=$(<last-js-build.md5)
is_prod_build=false
if [ "$current_md5_js" != "$new_md5_js" ] if [ "$current_md5_js" != "$new_md5_js" ]
then then
npm run build for i in "$@"
do
case $i in
--prod)
is_prod_build=true
echo "$(tput setab 4) $(tput sgr 0) $(tput setab 4) $(tput sgr 0) Building in production mode $(tput setab 4) $(tput sgr 0) $(tput setab 4) $(tput sgr 0)"
npm run build-prod
;;
esac
done
if [ "$is_prod_build" == false ]
then
echo "$(tput setab 2) $(tput sgr 0) $(tput setab 2) $(tput sgr 0) Building in development mode $(tput setab 2) $(tput sgr 0) $(tput setab 2) $(tput sgr 0)"
npm run build
fi
fi fi
### END npm build ###
## Fetch PDF.js ## Fetch PDF.js
## Commented as we have a modified version of its code. ## Commented as we have a modified version of its code.
@ -61,7 +77,6 @@ fi
# rm pdfjs-1.9.426-dist.zip # rm pdfjs-1.9.426-dist.zip
# fi # fi
echo "Updating files in $wp_plugin_dir" echo "Updating files in $wp_plugin_dir"
rm -rf $wp_plugin_dir rm -rf $wp_plugin_dir
@ -77,7 +92,17 @@ rsync -axz --exclude='vendor/bin/phpc*' --exclude='vendor/squizlabs' --exclude='
--exclude='vendor/tecnickcom/tcpdf/examples' \ --exclude='vendor/tecnickcom/tcpdf/examples' \
src/* $wp_plugin_dir/ src/* $wp_plugin_dir/
echo "Removing unecessary source files"
rm -rf $wp_plugin_dir/scss rm -rf $wp_plugin_dir/scss
find $wp_plugin_dir/views/ -type f -name '*.js' ! -path "${wp_plugin_dir}/views/libs/*" -exec rm {} + find $wp_plugin_dir/views/ -type f -name '*.vue' -exec rm {} +
find $wp_plugin_dir/views/ -type f -name '*.scss' -exec rm {} +
find $wp_plugin_dir/views/ -type f -name '*.sass' -exec rm {} +
find $wp_plugin_dir/views/ -type f -name '*.js' ! -path "${wp_plugin_dir}/views/libs/*" -exec rm {} +
find $wp_plugin_dir/views/ -type d -empty -delete
if [ "$is_prod_build" == true ]
then
find $wp_plugin_dir/assets/js/ -type f -name '*.js.map' -exec rm {} +
fi
echo "Build complete!" echo "Build complete!"

View File

@ -35,7 +35,9 @@ sass -E 'UTF-8' --cache-location .tmp/sass-cache-12 src/views/gutenberg-blocks/t
sass -E 'UTF-8' --cache-location .tmp/sass-cache-13 src/views/gutenberg-blocks/tainacan-facets/faceted-search/faceted-search.scss:src/assets/css/tainacan-gutenberg-block-faceted-search.css sass -E 'UTF-8' --cache-location .tmp/sass-cache-13 src/views/gutenberg-blocks/tainacan-facets/faceted-search/faceted-search.scss:src/assets/css/tainacan-gutenberg-block-faceted-search.css
sass -E 'UTF-8' --cache-location .tmp/sass-cache-14 src/views/gutenberg-blocks/gutenberg-blocks-style.scss:src/assets/css/tainacan-gutenberg-block-common-styles.css sass -E 'UTF-8' --cache-location .tmp/sass-cache-14 src/views/gutenberg-blocks/tainacan-items/item-submission-form/item-submission-form.scss:src/assets/css/tainacan-gutenberg-block-item-submission-form.css
sass -E 'UTF-8' --cache-location .tmp/sass-cache-15 src/views/gutenberg-blocks/gutenberg-blocks-style.scss:src/assets/css/tainacan-gutenberg-block-common-styles.css
echo "Compilação do Sass Concluído!" echo "Compilação do Sass Concluído!"
exit 0 exit 0

274
package-lock.json generated
View File

@ -1256,6 +1256,23 @@
"to-fast-properties": "^2.0.0" "to-fast-properties": "^2.0.0"
} }
}, },
"@npmcli/move-file": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz",
"integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==",
"dev": true,
"requires": {
"mkdirp": "^1.0.4"
},
"dependencies": {
"mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true
}
}
},
"@types/events": { "@types/events": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz",
@ -1273,6 +1290,12 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"@types/json-schema": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
"dev": true
},
"@types/minimatch": { "@types/minimatch": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@ -1548,9 +1571,9 @@
"dev": true "dev": true
}, },
"aggregate-error": { "aggregate-error": {
"version": "3.0.1", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
"integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true, "dev": true,
"requires": { "requires": {
"clean-stack": "^2.0.0", "clean-stack": "^2.0.0",
@ -2362,11 +2385,11 @@
} }
}, },
"buefy": { "buefy": {
"version": "0.9.3", "version": "0.9.4",
"resolved": "https://registry.npmjs.org/buefy/-/buefy-0.9.3.tgz", "resolved": "https://registry.npmjs.org/buefy/-/buefy-0.9.4.tgz",
"integrity": "sha512-Xqfo3ppeBo8Fwhb2fLwWnpkIC/1thPErU7DX3HksxTHxrSMixJ2BYkf3f6aWv4Ffx/FWX5UHnUrgtT7o7slnDA==", "integrity": "sha512-LRSIYVNrKTPQhmNRegASkntX+ObtZ7aSSA/3cybDKXzGtPNy8g8cl2tp79Rl8/LBVH/KkRT5rmmzJ21nxz9IcQ==",
"requires": { "requires": {
"bulma": "0.9.0" "bulma": "0.9.1"
} }
}, },
"buffer": { "buffer": {
@ -2405,9 +2428,9 @@
"dev": true "dev": true
}, },
"bulma": { "bulma": {
"version": "0.9.0", "version": "0.9.1",
"resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.0.tgz", "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.1.tgz",
"integrity": "sha512-rV75CJkubNUroAt0qCRkjznZLoaXq/ctfMXsMvKSL84UetbSyx5REl96e8GoQ04G4Tkw0XF3STECffTOQrbzOQ==" "integrity": "sha512-LSF69OumXg2HSKl2+rN0/OEXJy7WFEb681wtBlNS/ulJYR27J3rORHibdXZ6GVb/vyUzzYK/Arjyh56wjbFedA=="
}, },
"bytes": { "bytes": {
"version": "3.0.0", "version": "3.0.0",
@ -2416,31 +2439,36 @@
"dev": true "dev": true
}, },
"cacache": { "cacache": {
"version": "13.0.1", "version": "15.0.5",
"resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
"integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
"dev": true, "dev": true,
"requires": { "requires": {
"chownr": "^1.1.2", "@npmcli/move-file": "^1.0.1",
"figgy-pudding": "^3.5.1", "chownr": "^2.0.0",
"fs-minipass": "^2.0.0", "fs-minipass": "^2.0.0",
"glob": "^7.1.4", "glob": "^7.1.4",
"graceful-fs": "^4.2.2",
"infer-owner": "^1.0.4", "infer-owner": "^1.0.4",
"lru-cache": "^5.1.1", "lru-cache": "^6.0.0",
"minipass": "^3.0.0", "minipass": "^3.1.1",
"minipass-collect": "^1.0.2", "minipass-collect": "^1.0.2",
"minipass-flush": "^1.0.5", "minipass-flush": "^1.0.5",
"minipass-pipeline": "^1.2.2", "minipass-pipeline": "^1.2.2",
"mkdirp": "^0.5.1", "mkdirp": "^1.0.3",
"move-concurrently": "^1.0.1", "p-map": "^4.0.0",
"p-map": "^3.0.0",
"promise-inflight": "^1.0.1", "promise-inflight": "^1.0.1",
"rimraf": "^2.7.1", "rimraf": "^3.0.2",
"ssri": "^7.0.0", "ssri": "^8.0.0",
"tar": "^6.0.2",
"unique-filename": "^1.1.1" "unique-filename": "^1.1.1"
}, },
"dependencies": { "dependencies": {
"chownr": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"dev": true
},
"glob": { "glob": {
"version": "7.1.6", "version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@ -2455,53 +2483,57 @@
"path-is-absolute": "^1.0.0" "path-is-absolute": "^1.0.0"
} }
}, },
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
"lru-cache": { "lru-cache": {
"version": "5.1.1", "version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true, "dev": true,
"requires": { "requires": {
"yallist": "^3.0.2" "yallist": "^4.0.0"
} }
}, },
"mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true
},
"p-map": { "p-map": {
"version": "3.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
"integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"aggregate-error": "^3.0.0" "aggregate-error": "^3.0.0"
} }
}, },
"rimraf": { "rimraf": {
"version": "2.7.1", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true, "dev": true,
"requires": { "requires": {
"glob": "^7.1.3" "glob": "^7.1.3"
} }
}, },
"ssri": { "tar": {
"version": "7.1.0", "version": "6.0.5",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz",
"integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==",
"dev": true, "dev": true,
"requires": { "requires": {
"figgy-pudding": "^3.5.1", "chownr": "^2.0.0",
"minipass": "^3.1.1" "fs-minipass": "^2.0.0",
"minipass": "^3.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
} }
}, },
"yallist": { "yallist": {
"version": "3.1.1", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "dev": true
} }
} }
@ -6198,9 +6230,9 @@
"dev": true "dev": true
}, },
"supports-color": { "supports-color": {
"version": "7.1.0", "version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true, "dev": true,
"requires": { "requires": {
"has-flag": "^4.0.0" "has-flag": "^4.0.0"
@ -6732,14 +6764,32 @@
} }
}, },
"minipass-pipeline": { "minipass-pipeline": {
"version": "1.2.3", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
"integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
"dev": true, "dev": true,
"requires": { "requires": {
"minipass": "^3.0.0" "minipass": "^3.0.0"
} }
}, },
"minizlib": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dev": true,
"requires": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
},
"dependencies": {
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"mixin-deep": { "mixin-deep": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
@ -8919,6 +8969,15 @@
} }
} }
}, },
"serialize-javascript": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
"integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
}
},
"serve-index": { "serve-index": {
"version": "1.9.1", "version": "1.9.1",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
@ -9429,6 +9488,15 @@
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-2.0.0.tgz",
"integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A==" "integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A=="
}, },
"ssri": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz",
"integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==",
"dev": true,
"requires": {
"minipass": "^3.1.1"
}
},
"static-extend": { "static-extend": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@ -10016,27 +10084,46 @@
"inherits": "2" "inherits": "2"
} }
}, },
"terser-webpack-plugin": { "terser": {
"version": "2.3.6", "version": "4.8.0",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
"integrity": "sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg==", "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
"dev": true, "dev": true,
"requires": { "requires": {
"cacache": "^13.0.1", "commander": "^2.20.0",
"source-map": "~0.6.1",
"source-map-support": "~0.5.12"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"terser-webpack-plugin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.0.tgz",
"integrity": "sha512-gHAVFtJz1gQW5cu0btPtb+5Syo7K9hRj3b0lstgfglaBhbtcOCizsaPTnxOBGmF9iIgwsrSIiraBa2xzuWND7Q==",
"dev": true,
"requires": {
"cacache": "^15.0.3",
"find-cache-dir": "^3.3.1", "find-cache-dir": "^3.3.1",
"jest-worker": "^25.4.0", "jest-worker": "^25.5.0",
"p-limit": "^2.3.0", "p-limit": "^2.3.0",
"schema-utils": "^2.6.6", "schema-utils": "^2.6.6",
"serialize-javascript": "^3.0.0", "serialize-javascript": "^3.0.0",
"source-map": "^0.6.1", "source-map": "^0.6.1",
"terser": "^4.6.12", "terser": "^4.6.13",
"webpack-sources": "^1.4.3" "webpack-sources": "^1.4.3"
}, },
"dependencies": { "dependencies": {
"ajv": { "ajv": {
"version": "6.12.2", "version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true, "dev": true,
"requires": { "requires": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
@ -10046,15 +10133,15 @@
} }
}, },
"ajv-keywords": { "ajv-keywords": {
"version": "3.4.1", "version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true "dev": true
}, },
"fast-deep-equal": { "fast-deep-equal": {
"version": "3.1.1", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true "dev": true
}, },
"find-cache-dir": { "find-cache-dir": {
@ -10136,13 +10223,14 @@
} }
}, },
"schema-utils": { "schema-utils": {
"version": "2.6.6", "version": "2.7.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.6.tgz", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
"integrity": "sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==", "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.0", "@types/json-schema": "^7.0.5",
"ajv-keywords": "^3.4.1" "ajv": "^6.12.4",
"ajv-keywords": "^3.5.2"
} }
}, },
"semver": { "semver": {
@ -10151,31 +10239,11 @@
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true "dev": true
}, },
"serialize-javascript": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
"integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
"dev": true,
"requires": {
"randombytes": "^2.1.0"
}
},
"source-map": { "source-map": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true "dev": true
},
"terser": {
"version": "4.6.13",
"resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz",
"integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==",
"dev": true,
"requires": {
"commander": "^2.20.0",
"source-map": "~0.6.1",
"source-map-support": "~0.5.12"
}
} }
} }
}, },
@ -11717,6 +11785,16 @@
"uuid": "^3.3.2" "uuid": "^3.3.2"
} }
}, },
"webpack-merge": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.4.0.tgz",
"integrity": "sha512-/scBgu8LVPlHDgqH95Aw1xS+L+PHrpHKOwYVGFaNOQl4Q4wwwWDarwB1WdZAbLQ24SKhY3Awe7VZGYAdp+N+gQ==",
"dev": true,
"requires": {
"clone-deep": "^4.0.1",
"wildcard": "^2.0.0"
}
},
"webpack-sources": { "webpack-sources": {
"version": "1.4.3", "version": "1.4.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
@ -11771,6 +11849,12 @@
"string-width": "^1.0.2 || 2" "string-width": "^1.0.2 || 2"
} }
}, },
"wildcard": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz",
"integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
"dev": true
},
"wordwrap": { "wordwrap": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",

View File

@ -4,12 +4,13 @@
"author": "Eduardo <eduardo.humberto1992@gmail.com>", "author": "Eduardo <eduardo.humberto1992@gmail.com>",
"private": true, "private": true,
"scripts": { "scripts": {
"build": "cross-env NODE_ENV=development webpack --display-error-details --mode development --progress --hide-modules" "build": "cross-env NODE_ENV=development webpack --config webpack.dev.js --display-error-details --progress --hide-modules",
"build-prod": "cross-env NODE_ENV=production webpack --config webpack.prod.js --display-error-details --progress --hide-modules"
}, },
"dependencies": { "dependencies": {
"axios": "^0.19.2", "axios": "^0.19.2",
"buefy": "^0.9.3", "buefy": "^0.9.4",
"bulma": "^0.9.0", "bulma": "^0.9.1",
"css-vars-ponyfill": "^2.3.1", "css-vars-ponyfill": "^2.3.1",
"mdi": "^2.2.43", "mdi": "^2.2.43",
"moment": "^2.25.3", "moment": "^2.25.3",
@ -44,12 +45,13 @@
"postcss-loader": "^3.0.0", "postcss-loader": "^3.0.0",
"sass-loader": "^7.3.1", "sass-loader": "^7.3.1",
"style-loader": "^0.23.1", "style-loader": "^0.23.1",
"terser-webpack-plugin": "^2.3.6", "terser-webpack-plugin": "3.0.0",
"vue-loader": "^15.9.2", "vue-loader": "^15.9.2",
"vue-template-compiler": "^2.6.11", "vue-template-compiler": "^2.6.11",
"webpack": "^4.43.0", "webpack": "^4.43.0",
"webpack-bundle-analyzer": "^3.7.0", "webpack-bundle-analyzer": "^3.7.0",
"webpack-cli": "^3.3.11", "webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.11.0" "webpack-dev-server": "^3.11.0",
"webpack-merge": "^5.4.0"
} }
} }

View File

@ -1,12 +1,14 @@
.tainacan-embed-container { .tainacan-embed-container {
position: relative; position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0; height: 0;
overflow: hidden; overflow: hidden;
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }
.tainacan-embed-container:not(.tainacan-embed-without-iframe) {
padding-bottom: 56.25%;
padding-top: 30px;
}
.tainacan-embed-container iframe, .tainacan-embed-container iframe,
.tainacan-embed-container object, .tainacan-embed-container object,
.tainacan-embed-container embed { .tainacan-embed-container embed {

View File

@ -124,7 +124,8 @@
text-decoration: none; text-decoration: none;
padding: 8px 16px; padding: 8px 16px;
display: block; display: block;
line-height: 1.2em; } line-height: 1.2em;
word-break: break-word; }
.wp-block-tainacan-carousel-collections-list .tainacan-carousel .swiper-container a > img { .wp-block-tainacan-carousel-collections-list .tainacan-carousel .swiper-container a > img {
width: 100%; width: 100%;
height: auto; } height: auto; }

File diff suppressed because one or more lines are too long

View File

@ -131,7 +131,8 @@
text-decoration: none; text-decoration: none;
padding: 8px 16px; padding: 8px 16px;
display: block; display: block;
line-height: 1.2em; } line-height: 1.2em;
word-break: break-word; }
.wp-block-tainacan-carousel-items-list .tainacan-carousel .swiper-container a > img { .wp-block-tainacan-carousel-items-list .tainacan-carousel .swiper-container a > img {
width: 100%; width: 100%;
height: auto; } height: auto; }

File diff suppressed because one or more lines are too long

View File

@ -124,7 +124,8 @@
text-decoration: none; text-decoration: none;
padding: 8px 16px; padding: 8px 16px;
display: block; display: block;
line-height: 1.2em; } line-height: 1.2em;
word-break: break-word; }
.wp-block-tainacan-carousel-terms-list .tainacan-carousel .swiper-container a > img { .wp-block-tainacan-carousel-terms-list .tainacan-carousel .swiper-container a > img {
width: 100%; width: 100%;
height: auto; } height: auto; }

File diff suppressed because one or more lines are too long

View File

@ -84,6 +84,7 @@
.wp-block-tainacan-modal .modal-search-area { .wp-block-tainacan-modal .modal-search-area {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: flex-end;
margin-bottom: 6px; } margin-bottom: 6px; }
.wp-block-tainacan-modal .modal-search-area .components-base-control { .wp-block-tainacan-modal .modal-search-area .components-base-control {
width: 60%; } width: 60%; }
@ -128,7 +129,7 @@
padding-left: 1px; } padding-left: 1px; }
.wp-block-tainacan-modal .modal-checkbox-list svg.components-checkbox-control__checked, .wp-block-tainacan-modal .modal-checkbox-list svg.components-checkbox-control__checked,
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field svg.components-checkbox-control__checked { .wp-block-tainacan-modal .modal-radio-list .components-base-control__field svg.components-checkbox-control__checked {
fill: black; } fill: inherit; }
.wp-block-tainacan-modal .modal-checkbox-list .modal-checkbox-list-item, .wp-block-tainacan-modal .modal-checkbox-list .modal-checkbox-list-item,
.wp-block-tainacan-modal .modal-checkbox-list .components-radio-control__option, .wp-block-tainacan-modal .modal-checkbox-list .components-radio-control__option,
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field .modal-checkbox-list-item, .wp-block-tainacan-modal .modal-radio-list .components-base-control__field .modal-checkbox-list-item,
@ -157,6 +158,9 @@
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field .modal-checkbox-list-item label, .wp-block-tainacan-modal .modal-radio-list .components-base-control__field .modal-checkbox-list-item label,
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field .components-radio-control__option label { .wp-block-tainacan-modal .modal-radio-list .components-base-control__field .components-radio-control__option label {
max-width: 80%; } } max-width: 80%; } }
.wp-block-tainacan-modal .modal-checkbox-list .components-radio-control__option .components-radio-control__input::before,
.wp-block-tainacan-modal .modal-radio-list .components-base-control__field .components-radio-control__option .components-radio-control__input::before {
border-width: 0px; }
.wp-block-tainacan-modal .modal-loadmore-section { .wp-block-tainacan-modal .modal-loadmore-section {
display: flex; display: flex;
align-items: baseline; align-items: baseline;

View File

@ -1,6 +1,6 @@
{ {
"version": 3, "version": 3,
"mappings": "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", "mappings": "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",
"sources": ["../../views/gutenberg-blocks/gutenberg-blocks-style.scss","../../views/gutenberg-blocks/gutenberg-blocks-variables.scss"], "sources": ["../../views/gutenberg-blocks/gutenberg-blocks-style.scss","../../views/gutenberg-blocks/gutenberg-blocks-variables.scss"],
"names": [], "names": [],
"file": "tainacan-gutenberg-block-common-styles.css" "file": "tainacan-gutenberg-block-common-styles.css"

View File

@ -1,5 +1,5 @@
.wp-block-tainacan-faceted-search { .wp-block-tainacan-faceted-search {
margin: 2em auto; } margin: 0 auto; }
.wp-block-tainacan-faceted-search .spinner-container { .wp-block-tainacan-faceted-search .spinner-container {
min-height: 56px; min-height: 56px;
padding: 1em; padding: 1em;
@ -249,5 +249,14 @@
width: 50%; } width: 50%; }
.wp-block-tainacan-faceted-search .theme-items-list { .wp-block-tainacan-faceted-search .theme-items-list {
max-width: 100% !important; } max-width: 100% !important; }
.wp-block-tainacan-faceted-search:not(.alignfull) .theme-items-list .search-control {
padding: var(--tainacan-container-padding, 25px) var(--tainacan-container-padding, 25px) 20px var(--tainacan-container-padding, 25px); }
.wp-block-tainacan-faceted-search:not(.alignfull) .theme-items-list #filters-modal .modal-content {
padding: 24px 18px 24px var(--tainacan-container-padding, 25px); }
.wp-block-tainacan-faceted-search:not(.alignfull) .theme-items-list #filter-menu-compress-button {
border-radius: 2px; }
.wp-block-tainacan-faceted-search:not(.alignfull) .theme-items-list #items-list-results .table-container {
padding-left: var(--tainacan-container-padding, 25px);
padding-right: var(--tainacan-container-padding, 25px); }
/*# sourceMappingURL=tainacan-gutenberg-block-faceted-search.css.map */ /*# sourceMappingURL=tainacan-gutenberg-block-faceted-search.css.map */

View File

@ -1,6 +1,6 @@
{ {
"version": 3, "version": 3,
"mappings": "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", "mappings": "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",
"sources": ["../../views/gutenberg-blocks/tainacan-facets/faceted-search/faceted-search.scss"], "sources": ["../../views/gutenberg-blocks/tainacan-facets/faceted-search/faceted-search.scss"],
"names": [], "names": [],
"file": "tainacan-gutenberg-block-faceted-search.css" "file": "tainacan-gutenberg-block-faceted-search.css"

View File

@ -179,47 +179,6 @@
width: 100%; width: 100%;
border: 1px solid var(--tainacan-block-gray3, #cbcbcb); border: 1px solid var(--tainacan-block-gray3, #cbcbcb);
box-shadow: none; } box-shadow: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid {
padding: 0;
flex-wrap: wrap;
display: flex;
display: -ms-grid;
display: grid;
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(auto-fill, 220px);
grid-gap: 0px;
justify-content: space-evenly;
list-style-type: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item {
position: relative;
display: block;
margin: 12px;
width: 185px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item a {
color: var(--tainacan-block-gray5, #454647);
border: none;
font-weight: bold;
line-height: normal; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item img {
height: auto;
width: 185px;
min-width: 185px;
padding: 0px;
margin-bottom: 0.5em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item span.facet-item-count,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item span.facet-item-count {
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-without-image img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-without-image img {
display: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:hover a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; }
.wp-block-tainacan-facets-list ul.facets-list-edit li.facet-list-item { .wp-block-tainacan-facets-list ul.facets-list-edit li.facet-list-item {
display: flex; display: flex;
align-items: flex-start; } align-items: flex-start; }
@ -250,34 +209,288 @@
.wp-block-tainacan-facets-list ul.facets-list-edit li.facet-list-item:hover button:hover { .wp-block-tainacan-facets-list ul.facets-list-edit li.facet-list-item:hover button:hover {
background-color: white !important; background-color: white !important;
border: 1px solid var(--tainacan-block-gray3, #cbcbcb) !important; } border: 1px solid var(--tainacan-block-gray3, #cbcbcb) !important; }
@media only screen and (max-width: 498px) { .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid,
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid, .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid {
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid { padding: 0;
grid-template-columns: repeat(auto-fill, 100%); } flex-wrap: wrap;
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item, display: flex;
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item { display: -ms-grid;
width: 100%; } display: grid;
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item img, justify-content: space-evenly;
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item img { list-style-type: none; }
width: 100%; } } .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7) {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(7, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(6, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5 {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4 {
-ms-grid-columns: 220px 220px 220px 220px;
grid-template-columns: repeat(4, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3 {
-ms-grid-columns: 220px 220px 220px;
grid-template-columns: repeat(3, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-2 {
-ms-grid-columns: 220px 220px;
grid-template-columns: repeat(2, 1fr); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-1,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-1 {
-ms-grid-columns: 220px;
grid-template-columns: repeat(1, 1fr); }
@media only screen and (max-width: 1600px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6 {
-ms-grid-columns: 220px 220px 220px 220px 220px 220px;
grid-template-columns: repeat(6, 1fr); } }
@media only screen and (max-width: 1400px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5 {
-ms-grid-columns: 220px 220px 220px 220px 220px;
grid-template-columns: repeat(5, 1fr); } }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4 {
-ms-grid-columns: 220px 220px 220px 220px;
grid-template-columns: repeat(4, 1fr); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3 {
-ms-grid-columns: 220px 220px 220px;
grid-template-columns: repeat(3, 1fr); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-2 {
-ms-grid-columns: 220px 220px;
grid-template-columns: repeat(2, 1fr); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7), .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-7, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-6, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-5, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-4, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-3, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-2, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid.max-columns-count-1,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid:not(.max-columns-count-1):not(.max-columns-count-2):not(.max-columns-count-3):not(.max-columns-count-4):not(.max-columns-count-5):not(.max-columns-count-6):not(.max-columns-count-7),
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid.max-columns-count-1 {
-ms-grid-columns: 220px;
grid-template-columns: repeat(1, 1fr); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item {
position: relative;
display: block;
width: 100%;
flex-basis: 220px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item a {
color: var(--tainacan-block-gray5, #454647);
border: none;
font-weight: bold;
line-height: normal;
display: block; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) img {
height: auto;
width: 100%;
padding: 0px;
margin-bottom: 0.5em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) span.facet-item-count,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:not(.facet-with-name-inside-image) span.facet-item-count {
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span {
display: block;
position: absolute;
background: rgba(255, 255, 255, 0.75);
opacity: 0;
padding: 8px 12px;
word-break: break-word;
transition: opacity 0.5s ease;
max-width: 100%; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:first-of-type,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:first-of-type {
left: 0;
bottom: 0;
border-top-right-radius: 2px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:last-of-type,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item.facet-with-name-inside-image a span:last-of-type {
right: 0;
top: 0;
border-bottom-left-radius: 2px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:hover.facet-with-name-inside-image a span,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:hover.facet-with-name-inside-image a span {
opacity: 1; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item:hover a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-grid li.facet-list-item svg,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-grid li.facet-list-item svg {
fill: var(--tainacan-block-gray4, #555758);
margin-left: auto;
overflow: visible; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list {
padding: 0; padding: 0;
display: flex; padding-left: 0;
margin: 0;
margin-left: 0;
flex-wrap: wrap; flex-wrap: wrap;
align-items: center; display: flex;
display: -ms-grid;
display: grid;
align-items: self-start;
list-style-type: none; } list-style-type: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(7, auto); }
@media only screen and (max-width: 1600px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(6, auto); } }
@media only screen and (max-width: 1400px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(5, auto); } }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(4, auto); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-7,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-7 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(6, auto); }
@media only screen and (max-width: 1400px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(5, auto); } }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(4, auto); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-6,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-6 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(5, auto); }
@media only screen and (max-width: 1280px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(4, auto); } }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-5,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-5 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(4, auto); }
@media only screen and (max-width: 1024px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(3, auto); } }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-4,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-4 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-3 {
grid-template-columns: repeat(3, auto); }
@media only screen and (max-width: 768px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-3 {
grid-template-columns: repeat(2, auto); } }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-3,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-3 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-2 {
grid-template-columns: repeat(2, auto); }
@media only screen and (max-width: 498px) {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-2,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-2 {
grid-template-columns: repeat(1, auto); } }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list.max-columns-count-1,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list.max-columns-count-1 {
grid-template-columns: repeat(1, auto); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list > div,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list > div {
flex-basis: 220px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item {
position: relative; display: inline-block;
margin: 12px 12px 24px 12px; padding: 12px 12px 24px 12px;
margin-bottom: 12px; margin-bottom: 0px;
min-height: 54px; min-height: 54px;
min-width: calc(20% - 24px); min-width: 100%;
width: calc(20% - 24px); } width: 100%; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item a, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item a { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item a {
color: var(--tainacan-block-gray5, #454647); color: var(--tainacan-block-gray5, #454647);
line-height: normal;
height: auto; height: auto;
display: flex; display: flex;
align-items: center; align-items: center;
@ -290,12 +503,18 @@
min-width: 54px; min-width: 54px;
padding: 0px; padding: 0px;
margin-right: 20px; } margin-right: 20px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item svg,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item svg {
fill: var(--tainacan-block-gray4, #555758);
margin-left: auto;
overflow: visible; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image {
min-height: 0.875em; } min-height: 0.875em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image a, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image a { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image a {
height: 0.875em; } height: auto;
min-height: 0.875em; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image img, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-without-image img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image img { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-without-image img {
display: none; } display: none; }
@ -307,26 +526,29 @@
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item:hover a { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item:hover a {
color: var(--tainacan-block-gray5, #454647); color: var(--tainacan-block-gray5, #454647);
text-decoration: none; } text-decoration: none; }
@media only screen and (max-width: 1600px) { .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item.facet-term-with-children,
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item, .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item.facet-term-with-children {
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item { font-weight: bold !important;
min-width: calc(25% - 24px); cursor: pointer; }
width: calc(25% - 24px); } } .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets,
@media only screen and (max-width: 1024px) { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets {
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item, padding-left: 7px;
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item { margin: 12px 0px -12px 0px; }
min-width: calc(33.333% - 24px); .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets img,
width: calc(33.333% - 24px); } } .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets img {
@media only screen and (max-width: 768px) { width: 36px;
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item, min-width: 36px; }
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item { .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets .facet-list-item,
min-width: calc(50% - 24px); .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets .facet-list-item {
width: calc(50% - 24px); } } padding: 12px;
@media only screen and (max-width: 498px) { font-weight: normal; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-list li.facet-list-item .child-term-facets .no-child-facet-found,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-list li.facet-list-item .child-term-facets .no-child-facet-found {
min-width: calc(100% - 24px); font-weight: normal;
width: calc(100% - 24px); } } font-style: italic;
font-size: 0.875em;
margin: 0;
color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud {
padding: 0; padding: 0;
@ -352,15 +574,28 @@
min-width: 54px; min-width: 54px;
padding: 0px; padding: 0px;
margin-right: 20px; } margin-right: 20px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item svg,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item svg {
fill: var(--tainacan-block-gray4, #555758);
margin-left: auto;
overflow: visible;
margin-bottom: -12px; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item.facet-without-image img, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item.facet-without-image img,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item.facet-without-image img { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item.facet-without-image img {
display: none; } display: none; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item span.facet-item-count, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item span.facet-item-count,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item span.facet-item-count { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item span.facet-item-count {
color: var(--tainacan-block-gray3, #cbcbcb); } color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover a, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover a { .wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover a {
color: var(--tainacan-block-primary, #298596); color: var(--tainacan-block-primary, #298596);
text-decoration: none;
cursor: pointer; }
.wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children, .wp-block-tainacan-facets-list ul.facets-list.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children a,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children,
.wp-block-tainacan-facets-list ul.facets-list-edit.facets-layout-cloud li.facet-list-item:hover.facet-term-with-children a {
color: var(--tainacan-block-gray5, #454647);
text-decoration: none; } text-decoration: none; }
.wp-block-tainacan-facets-list .show-more-button { .wp-block-tainacan-facets-list .show-more-button {
margin: 12px auto; margin: 12px auto;
@ -376,4 +611,16 @@
.wp-block-tainacan-facets-list .show-more-button i > svg { .wp-block-tainacan-facets-list .show-more-button i > svg {
fill: white; } fill: white; }
.child-reveal-enter-active {
overflow: hidden;
animation-name: filter-item-in;
animation-duration: 0.1s;
animation-timing-function: ease; }
.child-reveal-leave-active {
overflow: hidden;
animation-name: filter-item-out;
animation-duration: 0.1s;
animation-timing-function: ease; }
/*# sourceMappingURL=tainacan-gutenberg-block-facets-list.css.map */ /*# sourceMappingURL=tainacan-gutenberg-block-facets-list.css.map */

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,242 @@
#metadata-checkbox-list {
margin: 8px 12px 18px 12px; }
#metadata-checkbox-list .components-base-control__help {
margin-left: 33px;
font-size: 0.75rem;
color: var(--tainacan-block-gray4, #555758); }
.wp-block-tainacan-item-submission-form {
margin: 2em auto; }
.wp-block-tainacan-item-submission-form .spinner-container {
min-height: 56px;
padding: 1em;
display: flex;
justify-content: center;
align-items: center;
color: var(--tainacan-block-gray4, #555758); }
.wp-block-tainacan-item-submission-form .preview-warning {
width: 100%;
font-size: 0.875em;
font-style: italic;
color: var(--tainacan-block-gray4, #555758);
text-align: center;
margin: 4px auto; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder {
background-color: var(--tainacan-background-color, white);
padding: 0 4.1666667%;
font-size: 1.125em;
width: 100%;
display: flex;
flex-wrap: nowrap;
flex-direction: column;
border-radius: 4px;
border: 1px solid rgba(200, 200, 200, 0.3);
overflow: hidden; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-text {
background-color: var(--tainacan-label-color, rgba(200, 200, 200, 0.3));
height: 0.25em;
width: 15%;
min-width: 1.25em;
border-radius: 2px;
display: inline-block; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-text.section-label {
display: block;
margin-top: 1em;
height: 0.32em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-text.fake-text-info {
background-color: var(--tainacan-info-color, rgba(200, 200, 200, 0.3));
width: 5%;
opacity: 0.75;
margin-left: 6px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-text.fake-help-button {
background-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.3));
height: 0.32em;
width: 0.32em;
min-width: 0.25em;
border-radius: 0.2em;
margin-left: 6px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-collapse-arrow {
position: relative;
top: 0.2em;
left: -0.75em;
width: 0;
height: 0;
border-style: solid;
border-width: 0.2em 0.2em 0 0.2em;
border-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.3)) transparent transparent transparent; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-link {
background-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.3));
height: 0.2em;
width: 10%;
border-radius: 2px;
display: inline-block; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-icon {
background-color: var(--tainacan-info-color, rgba(200, 200, 200, 0.3));
height: 0.5em;
width: 0.5em;
min-height: 0.5em;
min-width: 0.5em;
max-height: 0.5em;
max-width: 0.5em;
border-radius: 2px;
display: inline-block; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-image-uploader {
background-size: cover;
height: 3em;
background-color: var(--tainacan-input-background-color, rgba(200, 200, 200, 0.3));
border: 2px dashed var(--tainacan-input-border-color, rgba(200, 200, 200, 0.3));
width: 100%;
border-radius: 2px;
display: inline-block; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-image-uploader:hover {
background-color: var(--tainacan-primary, rgba(200, 200, 200, 0.1)); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-tooltip {
background-color: var(--tainacan-primary, rgba(200, 200, 200, 0.1));
position: absolute;
height: 0.75em;
width: 4em;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
top: -1.0em;
left: 1em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-tooltip .fake-link {
width: 100%;
margin: 0 4px 0 8px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-tooltip:before {
content: "";
display: block;
position: absolute;
left: 12px;
width: 0;
height: 0;
border-style: solid; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-tooltip:before {
border-color: var(--tainacan-primary) transparent transparent transparent;
border-right-width: 6px;
border-top-width: 6px;
border-left-width: 6px;
bottom: -8px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-input {
background-color: var(--tainacan-input-background-color, rgba(200, 200, 200, 0.3));
height: 1.5em;
width: 18%;
border: 2px solid var(--tainacan-input-border-color, rgba(200, 200, 200, 0.3));
border-radius: 3px;
display: inline-block; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-textarea {
background-color: var(--tainacan-input-background-color, rgba(200, 200, 200, 0.3));
height: 2.5em;
width: 100%;
border: 2px solid var(--tainacan-input-border-color, rgba(200, 200, 200, 0.3));
border-radius: 3px;
display: inline-block; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-button {
background-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.3));
padding: 0.4em 0.7em;
height: 0.95em;
width: 10%;
max-width: 3.25em;
min-width: 1em;
margin-left: 6px;
border-radius: 3px;
display: flex;
align-items: center;
margin-right: auto; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-button .fake-text {
background-color: white;
width: 95%;
margin: 0 2px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-button .fake-icon {
background-color: white;
flex: 1 0 auto;
margin: 0 2px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-button.outline {
border: 2px solid var(--tainacan-input-border-color rgba(200, 200, 200, 0.3));
background-color: var(--tainacan-background-color, white); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-button.outline .fake-text {
background-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.1)); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-switch {
padding: 0.5em;
display: flex;
align-items: center; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-switch .fake-icon {
background-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.3));
width: 1.5em;
height: 0.5em;
border-radius: 1em;
max-height: 1em;
max-width: 1em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .fake-switch .fake-text {
margin-left: 0.5em;
width: 24%;
max-width: 4em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .documents-section {
display: flex;
padding: 0.5em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .documents-section .fake-circle {
margin-right: 1.75em;
display: flex;
justify-content: center;
align-items: center;
width: 3em;
height: 3em;
border-radius: 100%;
background-color: var(--tainacan-input-border-color, rgba(200, 200, 200, 0.3)); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .documents-section .fake-circle .fake-icon {
background-color: var(--tainacan-secondary, rgba(200, 200, 200, 0.3)); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .documents-section .fake-circle:hover {
background-color: var(--tainacan-primary, rgba(200, 200, 200, 0.2)); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .thumbnail-section {
padding: 0.5em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .thumbnail-section .fake-button {
position: relative;
max-width: 0.85em;
min-width: 0.85em;
margin-top: -1em;
margin-left: 2rem;
border-radius: 100%;
z-index: 99;
padding: 4px; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .thumbnail-section .fake-icon {
max-height: 0.2em;
max-width: 0.2em;
width: 0.2em;
height: 0.2em;
min-width: 0.2em;
min-height: 0.2em;
border-radius: 100%; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .attachments-section {
padding: 0.5em;
display: flex;
flex-wrap: wrap;
justify-content: flex-start; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .metadata-section {
width: 100%;
padding: 0.5em 1em;
display: flex;
flex-wrap: nowrap;
flex-direction: column; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .metadata-section .fake-metadata {
display: flex;
flex-direction: column;
flex-wrap: nowrap; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .metadata-section .fake-metadata .fake-input {
width: 100%;
max-width: 100%;
margin: 0.25em 0 0.4em 0; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .metadata-section .fake-metadata.has-collapse {
border-bottom: 1px solid var(--tainacan-input-border-color, rgba(200, 200, 200, 0.3));
margin-bottom: 0.5em; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .form-footer {
padding: 1em 0 2em 0;
display: flex;
align-items: center;
justify-content: space-between; }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .form-footer > .fake-text {
background-color: var(--tainacan-info-color, rgba(200, 200, 200, 0.3)); }
.wp-block-tainacan-item-submission-form .item-submission-form-placeholder .form-footer .fake-button {
margin: 0 1em; }
/*# sourceMappingURL=tainacan-gutenberg-block-item-submission-form.css.map */

View File

@ -0,0 +1,7 @@
{
"version": 3,
"mappings": "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",
"sources": ["../../views/gutenberg-blocks/tainacan-items/item-submission-form/item-submission-form.scss"],
"names": [],
"file": "tainacan-gutenberg-block-item-submission-form.css"
}

View File

@ -7,7 +7,7 @@
.wp-block-tainacan-search-bar .tainacan-search-container { .wp-block-tainacan-search-bar .tainacan-search-container {
width: 100%; } width: 100%; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block { .wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block {
height: 32px; height: 2em;
max-width: 100%; max-width: 100%;
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -29,7 +29,9 @@
margin: 0; margin: 0;
border: none; border: none;
padding: 4px 0.75em; padding: 4px 0.75em;
text-overflow: ellipsis; } text-overflow: ellipsis;
overflow: hidden;
font-size: 0.875em; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button { .wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button {
height: auto !important; height: auto !important;
display: flex; display: flex;
@ -41,8 +43,9 @@
padding: 4px 1em; padding: 4px 1em;
font-size: 1em; } font-size: 1em; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button .icon { .wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button .icon {
height: 28px; } height: 1.75em; }
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button .icon svg { .wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block button .icon svg {
transform: scale(1);
fill: var(--tainacan-block-primary, #298596); } fill: var(--tainacan-block-primary, #298596); }
@media only screen and (max-width: 768px) { @media only screen and (max-width: 768px) {
.wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block { .wp-block-tainacan-search-bar .tainacan-search-container #tainacan-search-bar-block {
@ -89,12 +92,12 @@
.wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block input#tainacan-search-bar-block_input::placeholder { .wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block input#tainacan-search-bar-block_input::placeholder {
color: var(--tainacan-block-gray3, #cbcbcb); } color: var(--tainacan-block-gray3, #cbcbcb); }
.wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block button { .wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block button {
margin-right: 0.75em; margin-right: 12px;
padding: 0 0.35em; padding: 0 0.35em;
min-height: 28px; min-height: 1.75em;
z-index: 2; z-index: 2;
border: none; border: none;
background: transparent; background: transparent !important;
cursor: pointer; } cursor: pointer; }
.wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block button .icon svg { .wp-block-tainacan-search-bar.is-style-alternate #tainacan-search-bar-block button .icon svg {
fill: var(--tainacan-block-gray3, #cbcbcb); fill: var(--tainacan-block-gray3, #cbcbcb);
@ -124,7 +127,7 @@
fill: var(--tainacan-block-gray2, #dbdbdb) !important; } fill: var(--tainacan-block-gray2, #dbdbdb) !important; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block { .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block {
width: 100%; width: 100%;
height: 53px; height: 3.3125em;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
border: none; } border: none; }
@ -132,29 +135,29 @@
border: none; } border: none; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block:hover input#tainacan-search-bar-block_input { .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block:hover input#tainacan-search-bar-block_input {
width: 100%; width: 100%;
padding-right: 52px; padding-right: 3.25em;
padding-left: 24px; padding-left: 1.625em;
border-width: 0; } border-width: 0; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input { .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input {
width: 0%; width: 0%;
min-width: 0%; min-width: 0%;
border-radius: 28px; border-radius: 3.3125em;
margin-right: -56px; margin-right: -3.5em;
padding-right: 27px; padding-right: 1.6875em;
padding-left: 26px; padding-left: 1.625em;
font-size: 1em; font-size: 1em;
border-width: 0; border-width: 0;
background: var(--tainacan-block-gray1, #f2f2f2); background: var(--tainacan-block-gray1, #f2f2f2);
transition: width 0.5s ease-in, padding 0.5s ease-in; } transition: width 0.5s ease-in, padding 0.5s ease-in; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:focus, .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:active, .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:hover { .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:focus, .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:active, .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block input#tainacan-search-bar-block_input:hover {
width: 100%; width: 100%;
padding-right: 52px; padding-right: 3.25em;
padding-left: 24px; padding-left: 1.625em;
border-width: 0; } border-width: 0; }
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block button { .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block button {
margin-left: 0.75em; margin-left: 0.875em;
padding: 0 0.35em; padding: 0 0.35em;
min-height: 28px; min-height: 1.75em;
z-index: 2; z-index: 2;
border: none; border: none;
background: transparent; background: transparent;
@ -165,38 +168,38 @@
.wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block button:hover { .wp-block-tainacan-search-bar.is-style-stylish #tainacan-search-bar-block button:hover {
background: transparent !important; } background: transparent !important; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container:not(.is-aligned-right):not(.is-aligned-left) .tainacan-search-container { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container:not(.is-aligned-right):not(.is-aligned-left) .tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 53px); width: calc(100% - var(--tainacan-one-column) - 3.3125em);
width: calc(100% - 4.1667vw - 53px); width: calc(100% - 4.1667vw - 3.3125em);
bottom: calc(-50% + 38px); bottom: calc(-50% + 38px);
position: absolute; } position: absolute; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container:not(.is-aligned-right):not(.is-aligned-left) .search-bar-collection-header-title { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container:not(.is-aligned-right):not(.is-aligned-left) .search-bar-collection-header-title {
margin-bottom: 26px; } margin-bottom: 26px; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-right .tainacan-search-container { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-right .tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 26px); width: calc(100% - var(--tainacan-one-column) - 1.625em);
width: calc(100% - 4.1667vw - 26px); width: calc(100% - 4.1667vw - 1.625em);
top: calc(-50% + 26px); top: calc(-50% + 26px);
right: calc(var(--tainacan-one-column) + 26px); right: calc(var(--tainacan-one-column) + 1.625em);
right: calc(4.1667vw + 26px); right: calc(4.1667vw + 1.625em);
position: absolute; } position: absolute; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-left .tainacan-search-container { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-left .tainacan-search-container {
width: calc(100% - 1em - 26px); width: calc(100% - 1em - 1.625em);
top: calc(-50% + 26px); top: calc(-50% + 26px);
left: calc(var(--tainacan-one-column) + 26px); left: calc(var(--tainacan-one-column) + 1.625em);
left: calc(4.1667vw + 26px); left: calc(4.1667vw + 1.625em);
position: absolute; } position: absolute; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container #tainacan-search-bar-block input#tainacan-search-bar-block_input { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container #tainacan-search-bar-block input#tainacan-search-bar-block_input {
background: white; background: white;
border-width: 3px; border-width: 3px;
border-style: solid; border-style: solid;
margin-right: -56px; margin-right: -3.5em;
padding-right: 24px; padding-right: 1.5em;
padding-left: 24px; } padding-left: 1.5em; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container #tainacan-search-bar-block input#tainacan-search-bar-block_input:hover { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container #tainacan-search-bar-block input#tainacan-search-bar-block_input:hover {
border-width: 3px !important; } border-width: 3px !important; }
@media only screen and (max-width: 768px) { @media only screen and (max-width: 768px) {
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container .tainacan-search-container {
width: calc(100% - var(--tainacan-one-column) - 53px) !important; width: calc(100% - var(--tainacan-one-column) - 3.3125em) !important;
width: calc(100% - 4.1667vw - 53px) !important; width: calc(100% - 4.1667vw - 3.3125em) !important;
bottom: calc(-50% + 38px) !important; bottom: calc(-50% + 38px) !important;
position: absolute !important; } position: absolute !important; }
.wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-right .search-bar-collection-header-title, .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-left .search-bar-collection-header-title { .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-right .search-bar-collection-header-title, .wp-block-tainacan-search-bar.is-style-stylish .search-bar-collection-header-container.is-aligned-left .search-bar-collection-header-title {

View File

@ -1,6 +1,6 @@
{ {
"version": 3, "version": 3,
"mappings": "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", "mappings": "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",
"sources": ["../../views/gutenberg-blocks/tainacan-items/search-bar/search-bar.scss"], "sources": ["../../views/gutenberg-blocks/tainacan-items/search-bar/search-bar.scss"],
"names": [], "names": [],
"file": "tainacan-gutenberg-block-search-bar.css" "file": "tainacan-gutenberg-block-search-bar.css"

View File

@ -566,8 +566,8 @@ font-weight: normal;
} }
.tainacan-icon-spin:before { .tainacan-icon-spin:before {
-webkit-animation: mdi-spin 2s infinite linear; -webkit-animation: mdi-spin 2s infinite linear reverse !important;
animation: mdi-spin 2s infinite linear; animation: mdi-spin 2s infinite linear reverse !important;
} }
@-webkit-keyframes mdi-spin { @-webkit-keyframes mdi-spin {

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -101,7 +101,6 @@ class REST_Background_Processes_Controller extends REST_Controller {
), ),
)); ));
register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<id>[0-9]+)', array( register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<id>[0-9]+)', array(
array( array(
@ -112,8 +111,6 @@ class REST_Background_Processes_Controller extends REST_Controller {
), ),
)); ));
} }
@ -129,10 +126,8 @@ class REST_Background_Processes_Controller extends REST_Controller {
return current_user_can('read'); return current_user_can('read');
} }
public function get_items( $request ) { public function get_items( $request ) {
global $wpdb; global $wpdb;
//$body = json_decode($request->get_body(), true);
$perpage = isset($request['perpage']) && is_numeric($request['perpage']) ? $request['perpage'] : 10; $perpage = isset($request['perpage']) && is_numeric($request['perpage']) ? $request['perpage'] : 10;
if ($perpage < 1) { if ($perpage < 1) {
@ -150,6 +145,8 @@ class REST_Background_Processes_Controller extends REST_Controller {
$user_q = $wpdb->prepare("AND user_id = %d", get_current_user_id()); $user_q = $wpdb->prepare("AND user_id = %d", get_current_user_id());
$status_q = ""; $status_q = "";
$date_range = '';
if (current_user_can('edit_users')) { if (current_user_can('edit_users')) {
if (isset($request['user_id'])) { if (isset($request['user_id'])) {
$user_q = $wpdb->prepare("AND user_id = %d", $request['user_id']); $user_q = $wpdb->prepare("AND user_id = %d", $request['user_id']);
@ -169,12 +166,27 @@ class REST_Background_Processes_Controller extends REST_Controller {
} }
} }
if (isset($request['datequery'])) {
$from = $request['datequery'][0]['after'];
$to = $request['datequery'][0]['before'];
$date_query = "AND processed_last >= %s AND processed_last <= %s";
$date_range = $wpdb->prepare($date_query, $from, $to);
}
$process_type = '';
if (isset($request['search'])) {
$name = $request['search'];
$process_type = "AND name LIKE '%${name}%'";
$process_type = $wpdb->prepare($process_type);
}
$recent_q = ''; $recent_q = '';
if ( isset($request['recent']) && $request['recent'] !== false ) { if ( isset($request['recent']) && $request['recent'] !== false ) {
$recent_q = "AND (processed_last >= NOW() - INTERVAL 10 MINUTE OR queued_on >= NOW() - INTERVAL 10 MINUTE)"; $recent_q = "AND (processed_last >= NOW() - INTERVAL 10 MINUTE OR queued_on >= NOW() - INTERVAL 10 MINUTE)";
} }
$base_query = "FROM $this->table WHERE 1=1 $status_q $user_q $recent_q ORDER BY priority DESC, queued_on DESC"; $base_query = "FROM $this->table WHERE 1=1 $status_q $user_q $recent_q $date_range $process_type ORDER BY priority DESC, queued_on DESC";
$query = "SELECT * $base_query $limit_q"; $query = "SELECT * $base_query $limit_q";
$count_query = "SELECT COUNT(ID) $base_query"; $count_query = "SELECT COUNT(ID) $base_query";
@ -196,7 +208,6 @@ class REST_Background_Processes_Controller extends REST_Controller {
$rest_response->header('X-WP-TotalPages', (int) $max_pages); $rest_response->header('X-WP-TotalPages', (int) $max_pages);
return $rest_response; return $rest_response;
} }
public function get_item( $request ) { public function get_item( $request ) {
@ -344,9 +355,4 @@ class REST_Background_Processes_Controller extends REST_Controller {
} }
} }
?>

View File

@ -141,9 +141,15 @@ class REST_Facets_Controller extends REST_Controller {
$second_arg = $val['taxonomy']; $second_arg = $val['taxonomy'];
} }
$entity = $metadatum_type_object->get_repository()->fetch( (int) $val['value'], $second_arg ); $entity = $metadatum_type_object->get_repository()->fetch( (int) $val['value'], $second_arg );
if ($entity) {
$val['entity'] = $entity->_toArray(); $add_attt_item = function($array_item, $item) {
} $array_item['thumbnail'] = $item->get_thumbnail();
return $array_item;
};
add_filter('tainacan-item-to-array', $add_attt_item, 10, 2);
$val['entity'] = $entity->_toArray();
remove_filter( 'tainacan-item-to-array', $add_attt_item, 10);
return $val; return $val;
}, $all_values['values']); }, $all_values['values']);
} }

View File

@ -382,6 +382,13 @@ class REST_Filters_Controller extends REST_Controller {
} else { } else {
$collection = $this->collection_repository->fetch($request['collection_id']); $collection = $this->collection_repository->fetch($request['collection_id']);
$filters = $this->filter_repository->fetch_by_collection($collection, $args); $filters = $this->filter_repository->fetch_by_collection($collection, $args);
$filters = array_filter($filters, function($filter) {
if ( $filter->get_metadatum() !== null ) {
$options = $filter->get_metadatum()->get_metadata_type_options();
return ($options == null || !isset($options['only_repository']) || $options['only_repository'] == 'no');
}
return false;
});
} }
$response = []; $response = [];

View File

@ -183,11 +183,10 @@ class REST_Importers_Controller extends REST_Controller {
* @return string|\WP_Error|\WP_REST_Response * @return string|\WP_Error|\WP_REST_Response
*/ */
public function update_item( $request ) { public function update_item( $request ) {
$session_id = $request['session_id']; $session_id = $request['session_id'];
$body = json_decode($request->get_body(), true);
$body = json_decode($request->get_body(), true); if (!empty($body)) {
if(!empty($body)){
$attributes = []; $attributes = [];
foreach ($body as $att => $value){ foreach ($body as $att => $value){
@ -197,15 +196,13 @@ class REST_Importers_Controller extends REST_Controller {
global $Tainacan_Importer_Handler; global $Tainacan_Importer_Handler;
$importer = $Tainacan_Importer_Handler->get_importer_instance_by_session_id($session_id); $importer = $Tainacan_Importer_Handler->get_importer_instance_by_session_id($session_id);
if($importer) { if ($importer) {
foreach ($body as $att => $value) {
foreach ($body as $att => $value){
if ($att == 'collection') { if ($att == 'collection') {
if (is_array($value) && isset($value['id'])) { if (is_array($value) && isset($value['id'])) {
if ($importer->add_collection($value) === false ) { if ($importer->add_collection($value) === false ) {
return new \WP_REST_Response([ return new \WP_REST_Response([
'error_message' => __('Error on creating metadata, please review the metadata description', 'tainacan' ), 'error_message' => __('Error while creating metadatum, please review the metadatum description.', 'tainacan' ),
'session_id' => $session_id 'session_id' => $session_id
], 400); ], 400);
} }
@ -383,8 +380,5 @@ class REST_Importers_Controller extends REST_Controller {
return new \WP_REST_Response( $importers, 200 ); return new \WP_REST_Response( $importers, 200 );
} }
} }
?>

View File

@ -17,6 +17,7 @@ class REST_Items_Controller extends REST_Controller {
private $item; private $item;
private $item_metadata; private $item_metadata;
private $collections_repository; private $collections_repository;
private $metadatum_repository;
/** /**
* REST_Items_Controller constructor. * REST_Items_Controller constructor.
@ -36,6 +37,7 @@ class REST_Items_Controller extends REST_Controller {
$this->item = new Entities\Item(); $this->item = new Entities\Item();
$this->item_metadata = Repositories\Item_Metadata::get_instance(); $this->item_metadata = Repositories\Item_Metadata::get_instance();
$this->collections_repository = Repositories\Collections::get_instance(); $this->collections_repository = Repositories\Collections::get_instance();
$this->metadatum_repository = Repositories\Metadata::get_instance();
} }
/** /**
@ -131,6 +133,27 @@ class REST_Items_Controller extends REST_Controller {
), ),
) )
); );
register_rest_route(
$this->namespace, '/collection/(?P<collection_id>[\d]+)/' . $this->rest_base . '/submission',
array(
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array($this, 'submission_item'),
'permission_callback' => array($this, 'submission_item_permissions_check'),
'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::CREATABLE),
),
)
);
register_rest_route(
$this->namespace, '/collection/(?P<collection_id>[\d]+)/' . $this->rest_base . '/submission/(?P<submission_id>[\d]+)/finish',
array(
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array($this, 'submission_item_finish'),
'permission_callback' => array($this, 'submission_item_permissions_check'),
),
)
);
} }
/** /**
@ -211,6 +234,11 @@ class REST_Items_Controller extends REST_Controller {
if ( $request->get_method() != 'GET') { if ( $request->get_method() != 'GET') {
$item_arr['thumbnail'] = $item->get_thumbnail(); $item_arr['thumbnail'] = $item->get_thumbnail();
$item_arr['thumbnail_alt'] = get_post_meta( $item->get__thumbnail_id(), '_wp_attachment_image_alt', true );
$item_arr['thumbnail_id'] = $item->get__thumbnail_id();
$item_arr['nonces'] = array(
'update-post_' . $item->get_id() => wp_create_nonce('update-post_' . $item->get_id())
);
} }
} else { } else {
@ -248,6 +276,13 @@ class REST_Items_Controller extends REST_Controller {
if ( $request['context'] === 'edit' ) { if ( $request['context'] === 'edit' ) {
$item_arr['current_user_can_edit'] = $item->can_edit(); $item_arr['current_user_can_edit'] = $item->can_edit();
$item_arr['current_user_can_delete'] = $item->can_delete(); $item_arr['current_user_can_delete'] = $item->can_delete();
$item_arr['nonces'] = array(
'update-post_' . $item->get_id() => wp_create_nonce('update-post_' . $item->get_id())
);
}
if( isset($item_arr['thumbnail']) ) {
$item_arr['thumbnail_alt'] = get_post_meta( $item->get__thumbnail_id(), '_wp_attachment_image_alt', true );
$item_arr['thumbnail_id'] = $item->get__thumbnail_id();
} }
$item_arr['url'] = get_permalink( $item_arr['id'] ); $item_arr['url'] = get_permalink( $item_arr['id'] );
@ -828,6 +863,280 @@ class REST_Items_Controller extends REST_Controller {
} }
private function submission_item_metadada ( \Tainacan\Entities\Item_Metadata_Entity &$item_metadata, $request) {
$collection_id = $item_metadata->get_item()->get_collection_id();
$item = $item_metadata->get_item();
$collection = $this->collections_repository->fetch($collection_id);
if ( $item_metadata->validate() ) {
if($item->can_edit() || $collection->get_submission_anonymous_user() == 'yes') {
return $this->item_metadata->update( $item_metadata );
}
elseif($item_metadata->get_metadatum()->get_accept_suggestion()) {
return $this->item_metadata->suggest( $item_metadata );
}
else {
return new \WP_REST_Response( [
'error_message' => __( 'The metadatum does not accept suggestions', 'tainacan' ),
], 400 );
}
} else {
return new \WP_REST_Response( [
'error_message' => __( 'Please verify, invalid value(s)', 'tainacan' ),
'errors' => $item_metadata->get_errors(),
'item_metadata' => $this->prepare_item_for_response($item_metadata, $request),
], 400 );
}
}
public function submission_item ($request) {
$collection_id = $request['collection_id'];
$item = json_decode($request->get_body(), true);
$metadata = $item['metadata'];
foreach ($item as $key => $value) {
$item[$key] = ( is_string($value) && !is_numeric($value) ? filter_var($value, FILTER_SANITIZE_STRING) : $value );
}
$response_recaptcha = $this->submission_item_check_recaptcha($request);
if ($response_recaptcha !== true) {
return $response_recaptcha;
}
if(empty($item) || empty($metadata)) {
return new \WP_REST_Response([
'error_message' => __('Body can not be empty.', 'tainacan'),
'item' => $item
], 400);
}
try {
$item['status'] = 'auto-draft';
$item = $this->prepare_item_for_database( [ $item, $collection_id ] );
if ( $item->validate() ) {
$item = $this->items_repository->insert( $item );
$item_id = $item->get_id();
foreach ( $metadata as $m ) {
if ( !isset($m['value']) || $m['value'] == null ) continue;
$value = $m['value'];
$metadatum_id = $m['metadatum_id'];
$metadatum = $this->metadatum_repository->fetch( $metadatum_id );
$item_metadata = new Entities\Item_Metadata_Entity($item, $metadatum);
if($metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Compound') {
if ($item_metadata->is_multiple()) {
foreach($value as $row) {
$parent_meta_id = null;
foreach($row as $child) {
$child_value = $child['value'];
if (is_array($child_value) == true) {
$child_value = implode(' ', $child_value);
}
if (is_numeric($value) != true) {
$child_value = filter_var($child_value, FILTER_SANITIZE_STRING);
}
$metadatum_child = $this->metadatum_repository->fetch( $child['metadatum_id'] );
$item_metadata_child = new Entities\Item_Metadata_Entity($item, $metadatum_child, null, $parent_meta_id);
$item_metadata_child->set_value($child_value);
$item_metadata_child = $this->submission_item_metadada($item_metadata_child, $request);
if ($item_metadata_child instanceof \WP_REST_Response) {
return $item_metadata_child;
}
$parent_meta_id = $item_metadata_child->get_parent_meta_id();
}
}
} else {
$parent_meta_id = null;
if( is_array($value) && count($value) == 1 )
$value = $value[0];
foreach($value as $child) {
$child_value = $child['value'];
if (is_array($child_value) == true) {
$child_value = implode(' ', $child_value);
}
if (is_numeric($value) != true) {
$child_value = filter_var($child_value, FILTER_SANITIZE_STRING);
}
$metadatum_child = $this->metadatum_repository->fetch( $child['metadatum_id'] );
$item_metadata_child = new Entities\Item_Metadata_Entity($item, $metadatum_child, null, $parent_meta_id);
$item_metadata_child->set_value($child_value);
$item_metadata_child = $this->submission_item_metadada($item_metadata_child, $request);
if ($item_metadata_child instanceof \WP_REST_Response) {
return $item_metadata_child;
}
$parent_meta_id = $item_metadata_child->get_parent_meta_id();
}
}
} else {
if (is_array($value) == true) {
$value = array_map( function($v) { return is_numeric($v) ? $v : filter_var($v, FILTER_SANITIZE_STRING); }, $value);
} else if (is_numeric($value) != true) {
$value = filter_var($value, FILTER_SANITIZE_STRING);
}
if ($item_metadata->is_multiple()) {
$item_metadata->set_value( is_array($value) ? $value : [$value] );
} else {
$item_metadata->set_value( is_array($value) ? implode(' ', $value) : $value);
}
$item_metadata = $this->submission_item_metadada($item_metadata, $request);
if ($item_metadata instanceof \WP_REST_Response) {
return $item_metadata;
}
}
}
if ($item->validate()) {
$item = $this->items_repository->insert( $item );
$fake_id = \hexdec(\uniqid());
$id = $item->get_id();
set_transient('tnc_transient_submission_' . $fake_id, $id, 300);
$response_item = $this->prepare_item_for_response($item, $request);
$response_item['id'] = $fake_id;
return new \WP_REST_Response($response_item, 201 );
} else {
return new \WP_REST_Response([
'error_message' => __('One or more values are invalid.', 'tainacan'),
'errors' => $item->get_errors(),
'item' => $this->prepare_item_for_response($this->item, $request)
], 400);
}
} else {
return new \WP_REST_Response([
'error_message' => __('One or more values are invalid.', 'tainacan'),
'errors' => $item->get_errors(),
'item' => $this->prepare_item_for_response($this->item, $request)
], 400);
}
} catch (\Exception $exception){
return new \WP_REST_Response($exception->getMessage(), 400);
}
}
public function submission_item_finish ( $request ) {
define( 'WP_ADMIN', true );
$submission_id = $request['submission_id'];
$collection_id = $request['collection_id'];
$item_id = get_transient('tnc_transient_submission_' . $submission_id);
if($item_id === false) {
return new \WP_REST_Response([
'error_message' => __('submission ID not exist.', 'tainacan'),
], 400);
}
$item = $this->items_repository->fetch($item_id);
$collection = $this->collections_repository->fetch($collection_id);
$default_status = $collection->get_submission_default_status();
$item->set_status($default_status);
$TainacanMedia = \Tainacan\Media::get_instance();
$files = $request->get_file_params();
$insert_attachments = [];
$entities_erros = [];
if( isset($files['document']) && !is_array($files['document']['tmp_name']) == 1 && $files['document']['size'] > 0 ) {
$tmp_file_name = sys_get_temp_dir() . DIRECTORY_SEPARATOR . \hexdec(\uniqid()) . '_' . $files['document']['name'];
move_uploaded_file($files['document']['tmp_name'], $tmp_file_name);
$document_id = $TainacanMedia->insert_attachment_from_file($tmp_file_name, $item_id);
if($document_id === false) {
$entities_erros[] = ["document" => __('Error while creating document', 'tainacan')];
wp_delete_attachment($document_id, true);
} else {
$item->set_document_type('attachment');
$item->set_document($document_id);
$insert_attachments[] = $document_id;
}
unlink($tmp_file_name);
}
if( isset($files['thumbnail']) && !is_array($files['thumbnail']['tmp_name']) == 1 && $files['thumbnail']['size'] > 0 ) {
$tmp_file_name = sys_get_temp_dir() . DIRECTORY_SEPARATOR . \hexdec(\uniqid()) . '_' . $files['thumbnail']['name'];
move_uploaded_file($files['thumbnail']['tmp_name'], $tmp_file_name);
$thumbnail_id = $TainacanMedia->insert_attachment_from_file($tmp_file_name);
if($thumbnail_id === false) {
$entities_erros[] = ["thumbnail" => __('Error while creating thumbnail', 'tainacan')];
wp_delete_attachment($thumbnail_id, true);
} else {
$item->set__thumbnail_id($thumbnail_id);
$insert_attachments[] = $thumbnail_id;
}
unlink($tmp_file_name);
} else {
$thumbnail_id = $this->items_repository->get_thumbnail_id_from_document($item);
if (!is_null($thumbnail_id)) {
set_post_thumbnail( $item_id, (int) $thumbnail_id );
$insert_attachments[] = $thumbnail_id;
}
}
if( isset($files['attachments']) ) {
$attachments = is_array($files['attachments']['tmp_name']) ? $files['attachments']['tmp_name'] : [$files['attachments']['tmp_name']];
$attachments_name = is_array($files['attachments']['name']) ? $files['attachments']['name'] : [$files['attachments']['name']];
for ($i = 0; $i < count($attachments); $i++) {
$tmp_file_name = sys_get_temp_dir() . DIRECTORY_SEPARATOR . \hexdec(\uniqid()) . '_' . $attachments_name[$i];
move_uploaded_file($attachments[$i], $tmp_file_name);
$attachment_id = $TainacanMedia->insert_attachment_from_file($tmp_file_name, $item_id);
unlink($tmp_file_name);
if($attachment_id === false) {
$entities_erros[] = ['attachments' => __('Error while creating attachment ', 'tainacan') . "($attachments_name[$i])" ];
break;
}
$insert_attachments[] = $attachment_id;
}
}
if( !empty($entities_erros) ) {
foreach($insert_attachments as $remove_id) {
wp_delete_attachment($remove_id, true);
}
}
if (empty($entities_erros) & $item->validate()) {
$item = $this->items_repository->insert( $item );
delete_transient('tnc_transient_submission_' . $submission_id);
return new \WP_REST_Response($this->prepare_item_for_response($item, $request), 201 );
} else {
return new \WP_REST_Response([
'error_message' => __('One or more values are invalid.', 'tainacan'),
'errors' => array_merge($item->get_errors(), $entities_erros),
'item' => $this->prepare_item_for_response($this->item, $request)
], 400);
}
}
public function submission_item_permissions_check ( $request ) {
$collection = $this->collections_repository->fetch($request['collection_id']);
if ($collection instanceof Entities\Collection && $collection->get_allows_submission() == 'yes') {
if ($collection->get_submission_anonymous_user() == 'yes') {
return true;
}
return current_user_can($collection->get_items_capabilities()->edit_posts);
}
return false;
}
private function submission_item_check_recaptcha( $request ) {
$collection = $this->collections_repository->fetch($request['collection_id']);
$body = json_decode($request->get_body(), true);
if ($collection instanceof Entities\Collection && $collection->get_submission_use_recaptcha() == 'yes') {
$captcha_data = $body['g-recaptcha-response'];
if (!$captcha_data) {
return new \WP_REST_Response([
'error_message' => __('reCAPTCHA data it is need.', 'tainacan'),
'errors' => []
], 400);
}
$secret_key = get_option("tnc_option_recaptch_secret_key");
$response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret_key&response=".$captcha_data."&remoteip=".$_SERVER['REMOTE_ADDR']));
if ($response->success) {
return true;
} else {
return new \WP_REST_Response([
'error_message' => __('reCAPTCHA not valid.', 'tainacan'),
'errors' => []
], 400);
}
}
return true;
}
/** /**
* @param string $method * @param string $method

View File

@ -248,10 +248,8 @@ class REST_Logs_Controller extends REST_Controller {
* @throws \Exception * @throws \Exception
*/ */
public function get_items( $request ) { public function get_items( $request ) {
$args = $this->prepare_filters( $request ); $args = $this->prepare_filters( $request );
if ($request['item_id']) { if ($request['item_id']) {
$args['item_id'] = $request['item_id']; $args['item_id'] = $request['item_id'];
} elseif ($request['collection_id']) { } elseif ($request['collection_id']) {

View File

@ -368,6 +368,10 @@ class REST_Metadata_Controller extends REST_Controller {
$args['include_disabled'] = true; $args['include_disabled'] = true;
} }
if ($request['include_control_metadata_types'] === 'true') {
$args['include_control_metadata_types'] = true;
}
$collection = new Entities\Collection( $collection_id ); $collection = new Entities\Collection( $collection_id );
$result = $this->metadatum_repository->fetch_by_collection( $collection, $args ); $result = $this->metadatum_repository->fetch_by_collection( $collection, $args );
@ -382,6 +386,10 @@ class REST_Metadata_Controller extends REST_Controller {
] ]
]; ];
if ($request['include_control_metadata_types'] === 'true') {
$args['include_control_metadata_types'] = true;
}
$result = $this->metadatum_repository->fetch( $args, 'OBJECT' ); $result = $this->metadatum_repository->fetch( $args, 'OBJECT' );
} }
@ -474,8 +482,12 @@ class REST_Metadata_Controller extends REST_Controller {
$attributes = []; $attributes = [];
$metadatum_id = $request['metadatum_id']; $metadatum_id = $request['metadatum_id'];
$confirm_repository = false;
foreach ($body as $att => $value){ foreach ($body as $att => $value){
if ($att === "repository_level" && $value === "yes") {
$confirm_repository = true;
continue;
}
$attributes[$att] = $value; $attributes[$att] = $value;
} }
@ -483,25 +495,28 @@ class REST_Metadata_Controller extends REST_Controller {
$error_message = __('Metadata with this ID was not found', 'tainacan'); $error_message = __('Metadata with this ID was not found', 'tainacan');
if($metadatum){ if ($metadatum) {
// These conditions are for verify if endpoints are used correctly // These conditions are for verify if endpoints are used correctly
if(!$collection_id && $metadatum->get_collection_id() !== 'default') { if(!$collection_id && $metadatum->get_collection_id() !== 'default') {
$error_message = __('This metadata is not a default metadata', 'tainacan'); $error_message = __('This metadata is not a default metadata', 'tainacan');
return new \WP_REST_Response( [ return new \WP_REST_Response( [
'error_message' => $error_message, 'error_message' => $error_message,
'metadatum_id' => $metadatum_id 'metadatum_id' => $metadatum_id
] ); ] );
} elseif ($collection_id && $metadatum->get_collection_id() === 'default'){ } elseif ($collection_id && $metadatum->get_collection_id() === 'default'){
$error_message = __('This metadata is not a collection metadata', 'tainacan'); $error_message = __('This metadata is not a collection metadata', 'tainacan');
return new \WP_REST_Response( [ return new \WP_REST_Response( [
'error_message' => $error_message, 'error_message' => $error_message,
'metadatum_id' => $metadatum_id 'metadatum_id' => $metadatum_id
] ); ] );
} }
if (isset($request['repository_level']) && $confirm_repository) {
$attributes['collection_id'] = "default";
}
$prepared_metadata = $this->prepare_item_for_updating($metadatum, $attributes); $prepared_metadata = $this->prepare_item_for_updating($metadatum, $attributes);
if($prepared_metadata->validate()){ if($prepared_metadata->validate()){
@ -515,7 +530,7 @@ class REST_Metadata_Controller extends REST_Controller {
return new \WP_REST_Response([ return new \WP_REST_Response([
'error_message' => __('One or more values are invalid.', 'tainacan'), 'error_message' => __('One or more values are invalid.', 'tainacan'),
'errors' => $prepared_metadata->get_errors(), 'errors' => $prepared_metadata->get_errors(),
'metadatum' => $this->prepare_item_for_response($prepared_metadata, $request) 'metadatum' => $this->prepare_item_for_response($prepared_metadata, $request)
], 400); ], 400);
} }

View File

@ -53,7 +53,7 @@ class REST_Roles_Controller extends REST_Controller {
), ),
'schema' => [$this, 'get_schema'] 'schema' => [$this, 'get_schema']
)); ));
register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<role>[a-z-]+)', array( register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P<role>[a-z0-9-_]+)', array(
array( array(
'methods' => \WP_REST_Server::DELETABLE, 'methods' => \WP_REST_Server::DELETABLE,
'callback' => array($this, 'delete_item'), 'callback' => array($this, 'delete_item'),
@ -119,6 +119,14 @@ class REST_Roles_Controller extends REST_Controller {
$role_slug = sanitize_title($name); $role_slug = sanitize_title($name);
// allow restricted name format ...
if( preg_match('/^[a-zA-Z0-9-_ ]*$/', $name) == false ) {
return new \WP_REST_Response([
'error_message' => __('This role name is not allowed. Use only letters, numbers, underscore and hyphen', 'tainacan'),
'error' => $name
], 400);
}
// avoid confusion ... // avoid confusion ...
if ( in_array($role_slug, $this->core_roles) ) { if ( in_array($role_slug, $this->core_roles) ) {
return new \WP_REST_Response([ return new \WP_REST_Response([
@ -236,6 +244,14 @@ class REST_Roles_Controller extends REST_Controller {
if ( isset($request['name']) ) { if ( isset($request['name']) ) {
$name = esc_html( esc_sql( $request['name'] ) ); $name = esc_html( esc_sql( $request['name'] ) );
// allow restricted name format ...
if( preg_match('/^[a-zA-Z0-9-_ ]*$/', $name) == false ) {
return new \WP_REST_Response([
'error_message' => __('This role name is not allowed. Use only letters, numbers, underscore and hyphen', 'tainacan'),
'error' => $name
], 400);
}
// the slug remains the same // the slug remains the same
\wp_roles()->roles[$role_slug]['name'] = $name; \wp_roles()->roles[$role_slug]['name'] = $name;
update_option( \wp_roles()->role_key, \wp_roles()->roles ); update_option( \wp_roles()->role_key, \wp_roles()->roles );
@ -294,6 +310,7 @@ class REST_Roles_Controller extends REST_Controller {
foreach ( $newcaps as $cap => $val ) { foreach ( $newcaps as $cap => $val ) {
\wp_roles()->add_cap($role_slug, $cap, $val); \wp_roles()->add_cap($role_slug, $cap, $val);
\tainacan_roles()->add_dependencies($role_slug, $cap);
} }

View File

@ -57,6 +57,29 @@ class Elastic_Press {
unset( $formatted_args['query']['bool']['should'] ); unset( $formatted_args['query']['bool']['should'] );
unset( $formatted_args["query"]["bool"]["must"][0]["multi_match"]["type"] ); unset( $formatted_args["query"]["bool"]["must"][0]["multi_match"]["type"] );
} }
/**
* @TODO
* Elasticsearch is not good a substring matches similar to SQL like.
* here we replace `match_phrase` with` wildcard`, but this is not an efficient operation.
*/
if ( ! empty( $formatted_args['post_filter']['bool']['must'] ) ) {
$array_must = $formatted_args['post_filter']['bool']['must'];
for($i = 0; $i < count($array_must); $i++ ) {
$el_must = $array_must[$i];
if( ! empty($el_must['bool']['must']) ) {
$array_must_nested = $el_must['bool']['must'];
for($j = 0; $j < count($array_must_nested); $j++ ) {
if ( isset ($array_must_nested[$j]['match_phrase'] ) ) {
$formatted_args['post_filter']['bool']['must'][$i]['bool']['must'][$j]['wildcard'] =
array_map( function($match) { return "*$match*"; } ,$array_must_nested[$j]['match_phrase']);
unset($formatted_args['post_filter']['bool']['must'][$i]['bool']['must'][$j]['match_phrase']);
}
}
}
}
}
return $formatted_args; return $formatted_args;
} ); } );
@ -134,7 +157,7 @@ class Elastic_Press {
$args['ep_integrate'] = true; $args['ep_integrate'] = true;
add_action('ep_valid_response', function ( $response, $query, $query_args ) { add_action('ep_valid_response', function ( $response, $query, $query_args ) {
$aggregations = $response['aggregations']; $aggregations = isset($response['aggregations']) ? $response['aggregations'] : [];
$this->last_aggregations = $this->format_aggregations($aggregations); $this->last_aggregations = $this->format_aggregations($aggregations);
}, 10, 3); }, 10, 3);

View File

@ -125,7 +125,13 @@ class Embed {
* @return string Updated embed markup * @return string Updated embed markup
*/ */
function responsive_embed($html, $url, $attr) { function responsive_embed($html, $url, $attr) {
return $html !== '' ? '<div class="tainacan-embed-container">'.$html.'</div>' : '';
$class = 'tainacan-embed-container';
if ( !preg_match('/(?:<iframe[^>]*)(?:(?:\/>)|(?:>.*?<\/iframe>))/i', $html ) && !preg_match('/(?:<object[^>]*)(?:(?:\/>)|(?:>.*?<\/object>))/i', $html) && !preg_match('/(?:<embed[^>]*)(?:(?:\/>)|(?:>.*?<\/embed>))/i', $html ) )
$class .= ' tainacan-embed-without-iframe';
return $html !== '' ? '<div class="' . $class . '">'.$html.'</div>' : '';
} }
} }

View File

@ -42,7 +42,7 @@ class Media {
if( ob_get_level() > 0 ) { if( ob_get_level() > 0 ) {
ob_flush(); ob_flush();
} }
flush(); // flush();
} }
/** /**
@ -195,6 +195,7 @@ class Media {
// Include image.php // Include image.php
require_once( ABSPATH . 'wp-admin/includes/image.php' ); require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
// Define attachment metadata // Define attachment metadata
$attach_data = wp_generate_attachment_metadata( $attach_id, $file_path ); $attach_data = wp_generate_attachment_metadata( $attach_id, $file_path );

View File

@ -5,16 +5,6 @@ use Tainacan\Repositories\Repository;
class Roles { class Roles {
public static $dependencies = [
"tainacan-items" => [
'edit_posts' => 'upload_files',
"edit_private_posts" => 'upload_files',
"edit_published_posts" => 'upload_files',
"edit_others_posts" => 'upload_files'
]
];
private static $instance = null; private static $instance = null;
private $capabilities; private $capabilities;
@ -536,6 +526,8 @@ class Roles {
} }
} }
$collection_capabilities = tainacan_collections()->get_capabilities();
foreach ( $caps as $cap ) { foreach ( $caps as $cap ) {
if ( array_key_exists($cap, $allcaps) && $allcaps[$cap] === true ) { if ( array_key_exists($cap, $allcaps) && $allcaps[$cap] === true ) {
@ -548,24 +540,64 @@ class Roles {
$allcaps = array_merge($allcaps, [ $cap => true ]); $allcaps = array_merge($allcaps, [ $cap => true ]);
} elseif ( \strpos($cap, 'tnc_col_') === 0 ) { /**
* Handle checks for collection specific capabilities.
* Either tnc_col_* or tnc_rep_*_collections
*/
} elseif ( \strpos($cap, 'tnc_col_') === 0 || in_array( $cap, (array) $collection_capabilities ) ) {
$col_id = preg_replace('/[a-z_]+(\d+)[a-z_]+?$/', '$1', $cap ); $check_all_collections_cap = false;
$has_all_collections_cap = false;
/**
* We are only interested in checks for a specific collection.
* $args[2] will be set if this came from a meta cap of a specific collection ( e.g. current_user_can('tnc_rep_edit_collection', 3) ).
*/
if ( isset( $args[2] ) && is_numeric( $args[2] ) ) {
$col_id = $args[2];
/**
* Or we extract the collectino id from the capability itself. Example: tnc_col_3_delete_items
*/
} else {
$col_id = preg_replace('/[a-z_]+(\d+)[a-z_]+?$/', '$1', $cap );
$check_all_collections_cap = true;
}
/**
* If there is no specific collection, do nothing.
*/
if ( ! is_numeric($col_id) ) { if ( ! is_numeric($col_id) ) {
continue; continue;
} }
// check for tnc_col_all_* capabilities // In case of a tnc_col_* capability check,
$all_collections_cap = preg_replace('/([a-z_]+)(\d+)([a-z_]+?)$/', '${1}all${3}', $cap ); // Let's see if the user has the respective tnc_col_all_* capability
if ( $check_all_collections_cap ) {
$all_collections_cap = preg_replace('/([a-z_]+)(\d+)([a-z_]+?)$/', '${1}all${3}', $cap );
$has_all_collections_cap = $user->has_cap( $all_collections_cap );
}
if ( if (
$user->has_cap('manage_tainacan_collection_' . $col_id) || $user->has_cap('manage_tainacan_collection_' . $col_id) ||
$user->has_cap('manage_tainacan_collection_all') || $user->has_cap('manage_tainacan_collection_all') ||
$user->has_cap($all_collections_cap) ) { $has_all_collections_cap
) {
$allcaps = array_merge($allcaps, [ $cap => true ]); $allcaps = array_merge($allcaps, [ $cap => true ]);
} else {
// check if the user is the owner /**
* If a user is trying to edit a collection relying on the manage_tainacan_collection_* cap
* they will also need the edit_others_posts capability. But since it is 'manage_tainacan',
* we have to treat this here because this check will not get here since we are only handling
* caps that starts with tnc_
*/
if ( $collection_capabilities->edit_posts === $cap ) {
$allcaps = array_merge($allcaps, [ $collection_capabilities->edit_others_posts => true ]);
}
} elseif ( \strpos($cap, 'tnc_col_') === 0 ) {
// check if the user is the owner only when checking tnc_col_* capabilities
$collection = tainacan_collections()->fetch( (int) $col_id ); $collection = tainacan_collections()->fetch( (int) $col_id );
if ( $collection instanceof \Tainacan\Entities\Collection ) { if ( $collection instanceof \Tainacan\Entities\Collection ) {
if ( (int) $collection->get_author_id() == (int) $user->ID ) { if ( (int) $collection->get_author_id() == (int) $user->ID ) {
@ -580,7 +612,6 @@ class Roles {
return $allcaps; return $allcaps;
} }

View File

@ -0,0 +1,144 @@
<?php
namespace Tainacan;
use WP_CLI;
use Tainacan\Repositories;
class Cli_Control_Metadata {
private $collection_repository;
private $items_repository;
private $result_count;
private $dry_run = false;
public function __construct() {
$this->collection_repository = Repositories\Collections::get_instance();
$this->items_repository = Repositories\Items::get_instance();
$this->result_count = [
'items' => 0,
'items_collection' => 0,
];
}
/**
* recalculete values of metadata control
*
* ## OPTIONS
* [--collection=<value>]
* : <value> Collection specific ID into which the control metadata will be recalculated, or 'all' for all collections.
*
* [--dry-run]
* : only count the total of item which will recalculated, just output a report
*
* [--recreate-control-metadata-definitions]
* : recreate the control metadata collection definitions
*
* ## EXAMPLES
*
* wp tainacan control-metadata --collection=416
* recalculate control metadata for items to collection 416: 100% [====================================================] 0:00 / 0:00
* Success:
* 710 items recalculate
*
*
* wp tainacan control-metadata --collection=all
* recalculate control metadata for items to collection 416: 100% [====================================================] 0:00 / 0:00
* Success:
* 710 items recalculate
* recalculate control metadata for items to collection 301: 100% [====================================================] 0:00 / 0:00
* Success:
* 156 items recalculate
*
*/
public function __invoke($args, $assoc_args) {
$this->dry_run = false;
if ( !empty($assoc_args['dry-run']) ) {
$this->dry_run = true;
}
if( empty($assoc_args['collection']) ) {
\WP_CLI::error( 'Wrong parameters', true );
}
if ( !empty($assoc_args['recreate-control-metadata-definitions']) ) {
$this->recreate_control_metadata_collection_definitions();
}
$collection = $assoc_args['collection'];
if ($collection == 'all') {
$this->recalculate_items_for_all_collections();
} else {
$this->recalculate_items($collection);
}
$msg = "\n\n" . $this->result_count['items'] . " items recalculated.";
\WP_CLI::success( $msg );
}
private function recalculate_items_for_all_collections() {
$collections = $this->collection_repository->fetch(['posts_per_page' => -1], 'OBJECT');
foreach ($collections as $collection) {
$this->result_count['items_collection'] = 0;
$this->recalculate_items($collection->get_id());
}
}
private function recalculate_items($collection_id) {
$per_page = 50; $page = 1;
$args = [
'posts_per_page'=> $per_page,
'paged' => $page,
'post_status' => get_post_stati()
];
$collection_items = $this->items_repository->fetch($args, $collection_id, 'WP_Query');
$total = $collection_items->found_posts;
$last_page = ceil($total/$per_page);
$progress = \WP_CLI\Utils\make_progress_bar( "recalculate control metadata for items to collection $collection_id:", $total );
while ($page++ <= $last_page) {
if ($collection_items->have_posts()) {
while ( $collection_items->have_posts() ) {
$collection_items->the_post();
$item = new Entities\Item($collection_items->post);
$this->perform_item_recalculation($item);
$progress->tick();
}
}
$args['paged'] = $page;
$collection_items = $this->items_repository->fetch($args, $collection_id, 'WP_Query');
}
$progress->finish();
$this->result_count['items'] += $this->result_count['items_collection'];
$msg = $this->result_count['items_collection'] . " items recalculated in collection";
\WP_CLI::success( $msg );
}
private function recreate_control_metadata_collection_definitions() {
$Tainacan_Metadata = \Tainacan\Repositories\Metadata::get_instance();
$collections = $this->collection_repository->fetch(['posts_per_page' => -1], 'OBJECT');
foreach ($collections as $collection) {
$Tainacan_Metadata->register_control_metadata( $collection, true );
}
$msg = "recreate control metadata collection definitions completed successfully";
\WP_CLI::success( $msg );
}
private function perform_item_recalculation($item) {
if (! $item instanceof Entities\Item) {
\WP_CLI::error( 'An item with this ID was not found', true );
}
$this->result_count['items_collection']++;
if ($this->dry_run)
return true;
$helper = \Tainacan\Metadata_Types\Control::get_helper();
$helper->update_control_metadatum($item);
}
}
?>

View File

@ -25,11 +25,11 @@ class Cli {
} }
function add_commands() { function add_commands() {
\WP_CLI::add_command('tainacan garbage-collector', 'Tainacan\Cli_Garbage_Collector'); \WP_CLI::add_command('tainacan garbage-collector', 'Tainacan\Cli_Garbage_Collector');
\WP_CLI::add_command('tainacan move-attachments-to-items-folder', 'Tainacan\Cli_Move_Attachments'); \WP_CLI::add_command('tainacan move-attachments-to-items-folder', 'Tainacan\Cli_Move_Attachments');
\WP_CLI::add_command('tainacan collection', 'Tainacan\Cli_Collection'); \WP_CLI::add_command('tainacan collection', 'Tainacan\Cli_Collection');
\WP_CLI::add_command('tainacan index-content', 'Tainacan\Cli_Document'); \WP_CLI::add_command('tainacan index-content', 'Tainacan\Cli_Document');
\WP_CLI::add_command('tainacan control-metadata', 'Tainacan\Cli_Control_Metadata');
} }

View File

@ -9,35 +9,39 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
*/ */
class Collection extends Entity { class Collection extends Entity {
protected protected
$diplay_name, $diplay_name,
$full, $full,
$_thumbnail_id, $_thumbnail_id,
$modification_date, $modification_date,
$creation_date, $creation_date,
$author_id, $author_id,
$url, $url,
$name, $name,
$slug, $slug,
$order, $order,
$parent, $parent,
$description, $description,
$default_order, $default_order,
$default_orderby, $default_orderby,
$columns, $columns,
$default_view_mode, $default_view_mode,
$enabled_view_modes, $enabled_view_modes,
$metadata_order, $metadata_order,
$filters_order, $filters_order,
$enable_cover_page, $enable_cover_page,
$cover_page_id, $cover_page_id,
$header_image_id, $header_image_id,
$header_image, $header_image,
$comment_status, $comment_status,
$allow_comments, $allow_comments,
$hide_items_thumbnail_on_lists; $allows_submission,
$hide_items_thumbnail_on_lists,
$submission_anonymous_user,
$submission_default_status,
$submission_use_recaptcha;
/** /**
* {@inheritDoc} * {@inheritDoc}
* @see \Tainacan\Entities\Entity::post_type * @see \Tainacan\Entities\Entity::post_type
* @var string * @var string
@ -131,7 +135,7 @@ class Collection extends Entity {
'revisions', 'revisions',
'page-attributes', 'page-attributes',
'post-formats', 'post-formats',
'comments' 'comments'
] ]
); );
@ -227,7 +231,7 @@ class Collection extends Entity {
return apply_filters("tainacan-collection-get-attachments", $attachments, $exclude, $this); return apply_filters("tainacan-collection-get-attachments", $attachments, $exclude, $this);
} }
/** /**
* @return string * @return string
*/ */
function get_author_name() { function get_author_name() {
@ -242,11 +246,11 @@ class Collection extends Entity {
$sizes = get_intermediate_image_sizes(); $sizes = get_intermediate_image_sizes();
array_unshift($sizes, 'full'); array_unshift($sizes, 'full');
foreach ( $sizes as $size ) { foreach ( $sizes as $size ) {
$thumbs[$size] = wp_get_attachment_image_src( $this->get__thumbnail_id(), $size ); $thumbs[$size] = wp_get_attachment_image_src( $this->get__thumbnail_id(), $size );
} }
return apply_filters("tainacan-collection-get-thumbnail", $thumbs, $this); return apply_filters("tainacan-collection-get-thumbnail", $thumbs, $this);
} }
@ -271,10 +275,10 @@ class Collection extends Entity {
*/ */
function get__thumbnail_id() { function get__thumbnail_id() {
$_thumbnail_id = $this->get_mapped_property("_thumbnail_id"); $_thumbnail_id = $this->get_mapped_property("_thumbnail_id");
if ( isset( $_thumbnail_id ) ) { if ( isset( $_thumbnail_id ) ) {
return $_thumbnail_id; return $_thumbnail_id;
} }
return get_post_thumbnail_id( $this->get_id() ); return get_post_thumbnail_id( $this->get_id() );
} }
@ -430,8 +434,8 @@ class Collection extends Entity {
* @return boolean * @return boolean
*/ */
function is_cover_page_enabled() { function is_cover_page_enabled() {
return $this->get_enable_cover_page() === 'yes'; return $this->get_enable_cover_page() === 'yes';
} }
/** /**
* Get enable cover page attribute * Get enable cover page attribute
@ -533,7 +537,7 @@ class Collection extends Entity {
* @return string "open"|"closed" * @return string "open"|"closed"
*/ */
public function get_comment_status() { public function get_comment_status() {
return $this->get_mapped_property('comment_status'); return $this->get_mapped_property('comment_status');
} }
/** /**
@ -541,7 +545,34 @@ class Collection extends Entity {
* @return bool * @return bool
*/ */
public function get_allow_comments() { public function get_allow_comments() {
return $this->get_mapped_property('allow_comments'); return $this->get_mapped_property('allow_comments');
}
/**
* Get enable submission with anonymous user
*
* @return string "yes"|"no"
*/
function get_submission_anonymous_user() {
return $this->get_mapped_property( 'submission_anonymous_user' );
}
/**
* Get default submission status
*
* @return string
*/
function get_submission_default_status() {
return $this->get_mapped_property( 'submission_default_status' );
}
/**
* Checks if submission items are allowed for the current collection.
*
* @return string "yes"|"no"
*/
function get_allows_submission() {
return $this->get_mapped_property( 'allows_submission' );
} }
/** /**
@ -553,6 +584,15 @@ class Collection extends Entity {
return $this->get_mapped_property( 'hide_items_thumbnail_on_lists' ); return $this->get_mapped_property( 'hide_items_thumbnail_on_lists' );
} }
/**
* Checks if submission items use a recaptcha.
*
* @return string "yes"|"no"
*/
function get_submission_use_recaptcha() {
return $this->get_mapped_property( 'submission_use_recaptcha' );
}
/** /**
* Set the collection name * Set the collection name
* *
@ -730,7 +770,7 @@ class Collection extends Entity {
* @param $value string "open"|"closed" * @param $value string "open"|"closed"
*/ */
public function set_comment_status( $value ) { public function set_comment_status( $value ) {
$this->set_mapped_property('comment_status', $value); $this->set_mapped_property('comment_status', $value);
} }
/** /**
@ -739,7 +779,40 @@ class Collection extends Entity {
* @param $value bool * @param $value bool
*/ */
public function set_allow_comments( $value ) { public function set_allow_comments( $value ) {
$this->set_mapped_property('allow_comments', $value ); $this->set_mapped_property('allow_comments', $value );
}
/**
* Set enable submission with anonymous user
*
* @param [string] $value
*
* @return void
*/
function set_submission_anonymous_user( $value ) {
$this->set_mapped_property( 'submission_anonymous_user', $value );
}
/**
* Set default submission status
*
* @param [string] $value
*
* @return void
*/
function set_submission_default_status( $value ) {
$this->set_mapped_property( 'submission_default_status', $value );
}
/**
* Set if submission items are allowes for the current collection.
*
* @param [string] $value
*
* @return void
*/
function set_allows_submission( $value ) {
$this->set_mapped_property( 'allows_submission', $value );
} }
/** /**
@ -753,6 +826,17 @@ class Collection extends Entity {
$this->set_mapped_property( 'hide_items_thumbnail_on_lists', $value ); $this->set_mapped_property( 'hide_items_thumbnail_on_lists', $value );
} }
/**
* Set if submission items are use recaptcha.
*
* @param [string] $value
*
* @return void
*/
function set_submission_use_recaptcha( $value ) {
return $this->set_mapped_property( 'submission_use_recaptcha', $value);
}
/** /**
* Validate Collection * Validate Collection
* *

View File

@ -466,128 +466,131 @@ class Item_Metadata_Entity extends Entity {
* *
* @return boolean * @return boolean
*/ */
function validate() { function validate() {
$value = $this->get_value(); $value = $this->get_value();
$metadatum = $this->get_metadatum(); $metadatum = $this->get_metadatum();
$item = $this->get_item(); $item = $this->get_item();
if (empty($value) && $this->is_required() && in_array( $item->get_status(), apply_filters( 'tainacan-status-require-validation', [ if( !isset($metadatum) ) {
'publish', $this->add_error('not_found', ['metadatum not found'] );
'future', return false;
'private' }
] ) )
) {
$this->add_error('required', $metadatum->get_name() . ' is required');
return false;
} elseif (empty($value) && !$this->is_required()) {
$this->set_as_valid();
return true;
} elseif(empty($value) && $this->is_required() && !in_array( $item->get_status(), apply_filters( 'tainacan-status-require-validation', [
'publish',
'future',
'private'
] ) )) {
$this->set_as_valid(); if (empty($value) && $this->is_required() && in_array( $item->get_status(), apply_filters( 'tainacan-status-require-validation', [
return true; 'publish',
} 'future',
'private'
] ) )
) {
$this->add_error('required', $metadatum->get_name() . ' is required');
return false;
} elseif (empty($value) && !$this->is_required()) {
$this->set_as_valid();
return true;
} elseif(empty($value) && $this->is_required() && !in_array( $item->get_status(), apply_filters( 'tainacan-status-require-validation', [
'publish',
'future',
'private'
] ) )) {
$classMetadatumType = $metadatum->get_metadata_type_object(); $this->set_as_valid();
if( is_object( $classMetadatumType ) ){ return true;
if( method_exists ( $classMetadatumType , 'validate' ) ){ }
if( ! $classMetadatumType->validate( $this ) ) {
$this->add_error('metadata_type_error', $classMetadatumType->get_errors() );
return false;
}
}
}
if ($this->is_multiple()) { $classMetadatumType = $metadatum->get_metadata_type_object();
if( is_object( $classMetadatumType ) ){
if( method_exists ( $classMetadatumType , 'validate' ) ){
if( ! $classMetadatumType->validate( $this ) ) {
$this->add_error('metadata_type_error', $classMetadatumType->get_errors() );
return false;
}
}
}
if (is_array($value)) { if ($this->is_multiple()) {
if (is_array($value)) {
// if its required, at least one must be filled
$one_filled = false;
$valid = true;
$dupe_array = array();
foreach($value as $val) {
if (!empty($val))
$one_filled = true;
// if its required, at least one must be filled if ($this->is_collection_key()) {
$one_filled = false; if (++$dupe_array[$val] > 1) {
$valid = true; $this->add_error( 'key_exists', sprintf( __('%s is a collection key and there is another item with the same value', 'tainacan'), $metadatum->get_name() ) );
$dupe_array = array(); return false;
foreach($value as $val) { }
if (!empty($val))
$one_filled = true;
if ($this->is_collection_key()) { $Tainacan_Items = \Tainacan\Repositories\Items::get_instance();
if (++$dupe_array[$val] > 1) { $test = $Tainacan_Items->fetch([
$this->add_error( 'key_exists', sprintf( __('%s is a collection key and there is another item with the same value', 'tainacan'), $metadatum->get_name() ) ); 'meta_query' => [
return false; [
} 'key' => $this->metadatum->get_id(),
'value' => $val
]
],
'post__not_in' => [$item->get_id()]
], $item->get_collection());
$Tainacan_Items = \Tainacan\Repositories\Items::get_instance(); if ($test->have_posts()) {
$test = $Tainacan_Items->fetch([ // translators: %s = metadatum name. ex: Register ID is a collection key and there is another item with the same value
'meta_query' => [ $this->add_error( 'key_exists', sprintf( __('%s is a collection key and there is another item with the same value', 'tainacan'), $metadatum->get_name() ) );
[ return false;
'key' => $this->metadatum->get_id(), }
'value' => $val }
] }
],
'post__not_in' => [$item->get_id()]
], $item->get_collection());
if ($test->have_posts()) { if ($this->is_required() && !$one_filled) {
// translators: %s = metadatum name. ex: Register ID is a collection key and there is another item with the same value // translators: %s = metadatum name. ex: Title is required
$this->add_error( 'key_exists', sprintf( __('%s is a collection key and there is another item with the same value', 'tainacan'), $metadatum->get_name() ) ); $this->add_error( 'required', sprintf( __('%s is required', 'tainacan'), $metadatum->get_name() ) );
return false; return false;
} }
}
}
if ($this->is_required() && !$one_filled) { if (!$valid) {
// translators: %s = metadatum name. ex: Title is required // translators: %s = metadatum name. ex: Title is invalid
$this->add_error( 'required', sprintf( __('%s is required', 'tainacan'), $metadatum->get_name() ) ); $this->add_error( 'invalid', sprintf( __('%s is invalid', 'tainacan'), $metadatum->get_name() ) );
return false; return false;
} }
if (!$valid) { $this->set_as_valid();
// translators: %s = metadatum name. ex: Title is invalid return true;
$this->add_error( 'invalid', sprintf( __('%s is invalid', 'tainacan'), $metadatum->get_name() ) ); } else {
return false; // translators: %s = metadatum name. ex: Title is invalid
} $this->add_error( 'invalid', sprintf( __('%s is invalid', 'tainacan'), $metadatum->get_name() ) );
return false;
}
} else {
$this->set_as_valid(); if( is_array($value) ){
return true; // translators: %s = metadatum name. ex: Title accepts only one single value and not a list of values
} else { $this->add_error( 'not_multiple', sprintf( __('%s accepts only one single value and not a list of values', 'tainacan'), $metadatum->get_name() ) );
// translators: %s = metadatum name. ex: Title is invalid return false;
$this->add_error( 'invalid', sprintf( __('%s is invalid', 'tainacan'), $metadatum->get_name() ) ); }
return false;
}
} else {
if( is_array($value) ){ if ($this->is_collection_key()) {
// translators: %s = metadatum name. ex: Title accepts only one single value and not a list of values $Tainacan_Items = \Tainacan\Repositories\Items::get_instance();
$this->add_error( 'not_multiple', sprintf( __('%s accepts only one single value and not a list of values', 'tainacan'), $metadatum->get_name() ) );
return false;
}
if ($this->is_collection_key()) { $test = $Tainacan_Items->fetch([
$Tainacan_Items = \Tainacan\Repositories\Items::get_instance(); 'meta_query' => [
[
'key' => $this->metadatum->get_id(),
'value' => $value
],
],
'post__not_in' => [$item->get_id()]
], $item->get_collection());
$test = $Tainacan_Items->fetch([ if ($test->have_posts()) {
'meta_query' => [ // translators: %s = metadatum name. ex: Register ID is a collection key and there is another item with the same value
[ $this->add_error( 'key_exists', sprintf( __('%s is a collection key and there is another item with the same value', 'tainacan'), $metadatum->get_name() ) );
'key' => $this->metadatum->get_id(), return false;
'value' => $value }
], }
],
'post__not_in' => [$item->get_id()]
], $item->get_collection());
if ($test->have_posts()) { $this->set_as_valid();
// translators: %s = metadatum name. ex: Register ID is a collection key and there is another item with the same value return true;
$this->add_error( 'key_exists', sprintf( __('%s is a collection key and there is another item with the same value', 'tainacan'), $metadatum->get_name() ) ); }
return false; }
}
}
$this->set_as_valid();
return true;
}
}
} }

View File

@ -93,6 +93,8 @@ class Item extends Entity {
} }
$attachments_query = [ $attachments_query = [
'orderby' => 'menu_order',
'order' => 'ASC',
'post_type' => 'attachment', 'post_type' => 'attachment',
'posts_per_page' => -1, 'posts_per_page' => -1,
'post_parent' => $item_id, 'post_parent' => $item_id,
@ -405,7 +407,7 @@ class Item extends Entity {
$is_valid = false; $is_valid = false;
} }
$arrayItemMetadata = $this->get_metadata(['parent'=>'any']); $arrayItemMetadata = $this->get_metadata(['parent'=>'any', 'include_control_metadata_types' => 'true']);
if ( $arrayItemMetadata ) { if ( $arrayItemMetadata ) {
foreach ( $arrayItemMetadata as $itemMetadata ) { foreach ( $arrayItemMetadata as $itemMetadata ) {

View File

@ -9,35 +9,35 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
*/ */
class Metadatum extends Entity { class Metadatum extends Entity {
protected protected
$name, $name,
$slug, $slug,
$order, $order,
$parent, $parent,
$description, $description,
$required, $required,
$multiple, $multiple,
$display, $display,
$cardinality, $cardinality,
$collection_key, $collection_key,
$mask, $mask,
$default_value, $default_value,
$metadata_type, $metadata_type,
$metadata_type_options; $metadata_type_options;
// Collection getter and setter declared here // Collection getter and setter declared here
use \Tainacan\Traits\Entity_Collection_Relation; use \Tainacan\Traits\Entity_Collection_Relation;
public $enabled_for_collection = true; public $enabled_for_collection = true;
static $post_type = 'tainacan-metadatum'; static $post_type = 'tainacan-metadatum';
/** /**
* {@inheritDoc} * {@inheritDoc}
* @see \Tainacan\Entities\Entity::capability_type * @see \Tainacan\Entities\Entity::capability_type
* @var string * @var string
*/ */
protected static $capability_type = ['tainacan-metadatum', 'tainacan-metadata']; protected static $capability_type = ['tainacan-metadatum', 'tainacan-metadata'];
/** /**
@ -66,329 +66,332 @@ class Metadatum extends Entity {
return $this->get_mapped_property('display'); return $this->get_mapped_property('display');
} }
/** /**
* Return the metadatum name * Return the metadatum name
* *
* @return string * @return string
*/ */
function get_name() { function get_name() {
return $this->get_mapped_property('name'); return $this->get_mapped_property('name');
} }
/** /**
* Get metadatum slug * Get metadatum slug
* *
* @return string * @return string
*/ */
function get_slug() { function get_slug() {
return $this->get_mapped_property('slug'); return $this->get_mapped_property('slug');
} }
/** /**
* Return the metadatum order type * Return the metadatum order type
* *
* @return string * @return string
*/ */
function get_order() { function get_order() {
return $this->get_mapped_property('order'); return $this->get_mapped_property('order');
} }
/** /**
* Return the parent ID * Return the parent ID
* *
* @return string * @return string
*/ */
function get_parent() { function get_parent() {
return $this->get_mapped_property('parent'); return $this->get_mapped_property('parent');
} }
/** /**
* Return the metadatum description * Return the metadatum description
* *
* @return string * @return string
*/ */
function get_description() { function get_description() {
return $this->get_mapped_property('description'); return $this->get_mapped_property('description');
} }
/** /**
* Return if is a required metadatum * Return if is a required metadatum
* *
* @return boolean * @return boolean
*/ */
function get_required(){ function get_required(){
return $this->get_mapped_property('required'); return $this->get_mapped_property('required');
} }
/** /**
* Return if is a multiple metadatum * Return if is a multiple metadatum
* *
* @return boolean * @return boolean
*/ */
function get_multiple(){ function get_multiple(){
return $this->get_mapped_property('multiple'); return $this->get_mapped_property('multiple');
} }
/** /**
* Return the cardinality * Return the cardinality
* *
* @return string * @return string
*/ */
function get_cardinality(){ function get_cardinality(){
return $this->get_mapped_property('cardinality'); return $this->get_mapped_property('cardinality');
} }
/** /**
* Return if metadatum is key * Return if metadatum is key
* *
* @return boolean * @return boolean
*/ */
function get_collection_key(){ function get_collection_key(){
return $this->get_mapped_property('collection_key'); return $this->get_mapped_property('collection_key');
} }
/** /**
* Return the mask * Return the mask
* *
* @return string * @return string
*/ */
function get_mask(){ function get_mask(){
return $this->get_mapped_property('mask'); return $this->get_mapped_property('mask');
} }
/** /**
* Return the metadatum default value * Return the metadatum default value
* *
* @return string || integer * @return string || integer
*/ */
function get_default_value(){ function get_default_value(){
return $this->get_mapped_property('default_value'); return $this->get_mapped_property('default_value');
} }
/** /**
* Return the an object child of \Tainacan\metadatum_Types\Metadata_Type with options * Return the an object child of \Tainacan\metadatum_Types\Metadata_Type with options
* *
* @return \Tainacan\Metadata_Types\Metadata_Type The metadatum type class with filled options * @return \Tainacan\Metadata_Types\Metadata_Type The metadatum type class with filled options
*/ */
function get_metadata_type_object(){ function get_metadata_type_object(){
$class_name = $this->get_metadata_type(); $class_name = $this->get_metadata_type();
if( !class_exists( $class_name ) ){ if( !class_exists( $class_name ) ) {
return null; $class_name = "Tainacan\\Metadata_Types\\Text";
} if( !class_exists( $class_name ) ){
return null;
}
}
$object_type = new $class_name(); $object_type = new $class_name();
$object_type->set_options( $this->get_mapped_property('metadata_type_options') ); $object_type->set_options( $this->get_mapped_property('metadata_type_options') );
return $object_type; return $object_type;
} }
/** /**
* Return the class name for the metadatum type * Return the class name for the metadatum type
* *
* @return string The * @return string The
*/ */
function get_metadata_type(){ function get_metadata_type(){
return $this->get_mapped_property('metadata_type'); return $this->get_mapped_property('metadata_type');
} }
/** /**
* Return the actual options for the current metadatum type * Return the actual options for the current metadatum type
* *
* @return array Configurations for the metadatum type object * @return array Configurations for the metadatum type object
*/ */
function get_metadata_type_options(){ function get_metadata_type_options(){
$object = $this->get_metadata_type_object(); $object = $this->get_metadata_type_object();
if ($object) { if ($object) {
return $object->get_options(); // merge with dedault metadata type options return $object->get_options(); // merge with dedault metadata type options
} }
return $this->get_mapped_property('metadata_type_options'); return $this->get_mapped_property('metadata_type_options');
} }
/** /**
* Return true if this metadatum allow community suggestions, false otherwise * Return true if this metadatum allow community suggestions, false otherwise
* @return bool * @return bool
*/ */
function get_accept_suggestion() { function get_accept_suggestion() {
return $this->get_mapped_property('accept_suggestion'); return $this->get_mapped_property('accept_suggestion');
} }
/** /**
* Return array of exposer mapping configurations * Return array of exposer mapping configurations
* @return array * @return array
*/ */
public function get_exposer_mapping() { public function get_exposer_mapping() {
return $this->get_mapped_property('exposer_mapping'); return $this->get_mapped_property('exposer_mapping');
} }
/** /**
* Return the semantic_uri * Return the semantic_uri
* *
* @return string * @return string
*/ */
function get_semantic_uri(){ function get_semantic_uri(){
return $this->get_mapped_property('semantic_uri'); return $this->get_mapped_property('semantic_uri');
} }
/** /**
* Set the metadatum name * Set the metadatum name
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_name($value) { function set_name($value) {
$this->set_mapped_property('name', $value); $this->set_mapped_property('name', $value);
} }
/** /**
* Set the metadatum slug * Set the metadatum slug
* *
* If you dont set the metadatum slug, it will be set automatically based on the name and * If you dont set the metadatum slug, it will be set automatically based on the name and
* following WordPress default behavior of creating slugs for posts. * following WordPress default behavior of creating slugs for posts.
* *
* If you set the slug for an existing one, WordPress will append a number at the end of in order * If you set the slug for an existing one, WordPress will append a number at the end of in order
* to make it unique (e.g slug-1, slug-2) * to make it unique (e.g slug-1, slug-2)
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_slug($value) { function set_slug($value) {
$this->set_mapped_property('slug', $value); $this->set_mapped_property('slug', $value);
} }
/** /**
* Set manually the order of the metadatum * Set manually the order of the metadatum
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_order($value) { function set_order($value) {
$this->set_mapped_property('order', $value); $this->set_mapped_property('order', $value);
} }
/** /**
* Set the metadatum parent ID * Set the metadatum parent ID
* *
* @param [integer] $value The ID from parent * @param [integer] $value The ID from parent
* @return void * @return void
*/ */
function set_parent($value) { function set_parent($value) {
$this->set_mapped_property('parent', $value); $this->set_mapped_property('parent', $value);
} }
/** /**
* Set metadatum description * Set metadatum description
* *
* @param [string] $value The text description * @param [string] $value The text description
* @return void * @return void
*/ */
function set_description($value) { function set_description($value) {
$this->set_mapped_property('description', $value); $this->set_mapped_property('description', $value);
} }
/** /**
* Allow the metadatum be required * Allow the metadatum be required
* *
* @param [boolean] $value * @param [boolean] $value
* @return void * @return void
*/ */
function set_required( $value ){ function set_required( $value ){
$this->set_mapped_property('required', $value); $this->set_mapped_property('required', $value);
} }
/** /**
* Allow multiple metadata * Allow multiple metadata
* *
* @param [boolean] $value * @param [boolean] $value
* @return void * @return void
*/ */
function set_multiple( $value ){ function set_multiple( $value ){
$this->set_mapped_property('multiple', $value); $this->set_mapped_property('multiple', $value);
} }
/** /**
* The number of possible metadata * The number of possible metadata
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_cardinality( $value ){ function set_cardinality( $value ){
$this->set_mapped_property('cardinality', $value); $this->set_mapped_property('cardinality', $value);
} }
/** /**
* Define if the value is key on the collection * Define if the value is key on the collection
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_collection_key( $value ){ function set_collection_key( $value ){
$this->set_mapped_property('collection_key', $value); $this->set_mapped_property('collection_key', $value);
} }
/** /**
* Set mask for the metadatum * Set mask for the metadatum
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_mask( $value ){ function set_mask( $value ){
$this->set_mapped_property('mask', $value); $this->set_mapped_property('mask', $value);
} }
/** /**
* Set default value * Set default value
* *
* @param [string || integer] $value * @param [string || integer] $value
* @return void * @return void
*/ */
function set_default_value( $value ){ function set_default_value( $value ){
$this->set_mapped_property('default_property', $value); $this->set_mapped_property('default_property', $value);
} }
/** /**
* set the metadatum type class name * set the metadatum type class name
* *
* @param string | \Tainacan\Metadata_Types\Metadata_Type $value The name of the class or the instance * @param string | \Tainacan\Metadata_Types\Metadata_Type $value The name of the class or the instance
*/ */
public function set_metadata_type( $value ){ public function set_metadata_type( $value ){
$this->set_mapped_property('metadata_type', ( is_object( $value ) ) ? get_class( $value ) : $value ) ; // Encode to avoid backslaches removal $this->set_mapped_property('metadata_type', ( is_object( $value ) ) ? get_class( $value ) : $value ) ; // Encode to avoid backslaches removal
} }
/** /**
* Set if this metadatum allow community suggestions * Set if this metadatum allow community suggestions
* @param bool $value * @param bool $value
*/ */
function set_accept_suggestion( $value ) { function set_accept_suggestion( $value ) {
$this->set_mapped_property('accept_suggestion', $value); $this->set_mapped_property('accept_suggestion', $value);
} }
/** /**
* Set Metadatum type options * Set Metadatum type options
* *
* @param [string || integer] $value * @param [string || integer] $value
* @return void * @return void
*/ */
function set_metadata_type_options( $value ){ function set_metadata_type_options( $value ){
$this->set_mapped_property('metadata_type_options', $value); $this->set_mapped_property('metadata_type_options', $value);
} }
/** /**
* Set exposers mapping configuration for this metadatum * Set exposers mapping configuration for this metadatum
* @param array $value * @param array $value
*/ */
public function set_exposer_mapping( $value ) { public function set_exposer_mapping( $value ) {
$this->set_mapped_property('exposer_mapping', $value); $this->set_mapped_property('exposer_mapping', $value);
} }
/** /**
* Set Semantic URI for the metadatum * Set Semantic URI for the metadatum
* *
* @param [string] $value * @param [string] $value
* @return void * @return void
*/ */
function set_semantic_uri( $value ){ function set_semantic_uri( $value ){
$this->set_mapped_property('semantic_uri', $value); $this->set_mapped_property('semantic_uri', $value);
} }
/** /**
* Transient property used to store the status of the metadatum for a particular collection * Transient property used to store the status of the metadatum for a particular collection
@ -404,7 +407,7 @@ class Metadatum extends Entity {
} }
// helpers // helpers
/** /**
* Return true if is multiple, else return false * Return true if is multiple, else return false
@ -412,8 +415,8 @@ class Metadatum extends Entity {
* @return boolean * @return boolean
*/ */
function is_multiple() { function is_multiple() {
return $this->get_multiple() === 'yes'; return $this->get_multiple() === 'yes';
} }
/** /**
* Return true if is collection key, else return false * Return true if is collection key, else return false
@ -421,8 +424,8 @@ class Metadatum extends Entity {
* @return boolean * @return boolean
*/ */
function is_collection_key() { function is_collection_key() {
return $this->get_collection_key() === 'yes'; return $this->get_collection_key() === 'yes';
} }
/** /**
* Return true if is required, else return false * Return true if is required, else return false
@ -430,8 +433,8 @@ class Metadatum extends Entity {
* @return boolean * @return boolean
*/ */
function is_required() { function is_required() {
return $this->get_required() === 'yes'; return $this->get_required() === 'yes';
} }
/** /**
* {@inheritdoc } * {@inheritdoc }
@ -441,12 +444,11 @@ class Metadatum extends Entity {
* @return bool valid or not * @return bool valid or not
* @throws \Exception * @throws \Exception
*/ */
public function validate() { public function validate() {
$is_valid = parent::validate();
$is_valid = parent::validate(); if (false === $is_valid)
return false;
if (false === $is_valid)
return false;
// You cant have a multiple metadatum inside a compound metadatum (except taxonomy) // You cant have a multiple metadatum inside a compound metadatum (except taxonomy)
if ($this->get_parent() > 0) { if ($this->get_parent() > 0) {
@ -464,7 +466,8 @@ class Metadatum extends Entity {
return false; return false;
} }
} }
if ( $this->get_metadata_type() == 'Tainacan\Metadata_Types\Compound' && $this->is_multiple() ) { if ( $this->get_metadata_type() == 'Tainacan\Metadata_Types\Compound' && $this->is_multiple() && $this->get_id() != null ) {
$Tainacan_Metadata = \Tainacan\Repositories\Metadata::get_instance(); $Tainacan_Metadata = \Tainacan\Repositories\Metadata::get_instance();
$children_taxonomy = $Tainacan_Metadata->fetch( $children_taxonomy = $Tainacan_Metadata->fetch(
[ [
@ -496,26 +499,22 @@ class Metadatum extends Entity {
} }
} }
$fto = $this->get_metadata_type_object(); $fto = $this->get_metadata_type_object();
if (is_object($fto)) {
$is_valid = $fto->validate_options($this);
}
if (is_object($fto)) { if (true === $is_valid) {
$is_valid = $fto->validate_options($this); $this->set_as_valid();
}
if (true === $is_valid) { return true;
$this->set_as_valid(); }
return true; if (!is_array($is_valid)) {
} throw new \Exception( "Return of validate_options metadatum type method should be an Array in case of error" );
}
if (!is_array($is_valid)) { $this->add_error('metadata_type_options', $is_valid);
throw new \Exception( "Return of validate_options metadatum type method should be an Array in case of error" ); return false;
} }
$this->add_error('metadata_type_options', $is_valid);
return false;
}
} }

View File

@ -5,17 +5,25 @@ use Tainacan;
use Tainacan\Entities; use Tainacan\Entities;
class CSV extends Exporter { class CSV extends Exporter {
private $collection_name;
public function __construct($attributes = array()) { public function __construct($attributes = array()) {
parent::__construct($attributes); parent::__construct($attributes);
$this->set_accepted_mapping_methods('any'); // set all method to mapping $this->set_accepted_mapping_methods('any'); // set all method to mapping
$this->accept_no_mapping = true; $this->accept_no_mapping = true;
if ($current_collection = $this->get_current_collection_object()) {
$name = $current_collection->get_name();
$this->collection_name = sanitize_title($name) . "_csv_export.csv";;
} else {
$this->collection_name = "csv_export.csv";
}
//$this->set_accepted_mapping_methods('list', [ "dublin-core" ]); // set specific list of methods to mapping //$this->set_accepted_mapping_methods('list', [ "dublin-core" ]); // set specific list of methods to mapping
$this->set_default_options([ $this->set_default_options([
'delimiter' => ',', 'delimiter' => ',',
'multivalued_delimiter' => '||', 'multivalued_delimiter' => '||',
'enclosure' => '"' 'enclosure' => '"'
]); ]);
} }
public function filter_multivalue_separator($separator) { public function filter_multivalue_separator($separator) {
@ -61,7 +69,6 @@ class CSV extends Exporter {
remove_filter('tainacan-item-metadata-get-multivalue-separator', [$this, 'filter_multivalue_separator']); remove_filter('tainacan-item-metadata-get-multivalue-separator', [$this, 'filter_multivalue_separator']);
remove_filter('tainacan-terms-hierarchy-html-separator', [$this, 'filter_hierarchy_separator']); remove_filter('tainacan-terms-hierarchy-html-separator', [$this, 'filter_hierarchy_separator']);
$line[] = $item->get_status(); $line[] = $item->get_status();
$line[] = $this->get_document_cell($item); $line[] = $this->get_document_cell($item);
@ -80,9 +87,7 @@ class CSV extends Exporter {
$line_string = $this->str_putcsv($line, $this->get_option('delimiter'), $this->get_option('enclosure')); $line_string = $this->str_putcsv($line, $this->get_option('delimiter'), $this->get_option('enclosure'));
$this->append_to_file($this->collection_name, $line_string."\n");
$this->append_to_file('csvexporter.csv', $line_string."\n");
} }
function get_compound_metadata_cell($meta) { function get_compound_metadata_cell($meta) {
@ -214,7 +219,7 @@ class CSV extends Exporter {
$line_string = $this->str_putcsv($line, $this->get_option('delimiter'), $this->get_option('enclosure')); $line_string = $this->str_putcsv($line, $this->get_option('delimiter'), $this->get_option('enclosure'));
$this->append_to_file('csvexporter.csv', $line_string."\n"); $this->append_to_file($this->collection_name, $line_string."\n");
} }
@ -237,10 +242,15 @@ class CSV extends Exporter {
public function get_output() { public function get_output() {
$files = $this->get_output_files(); $files = $this->get_output_files();
if ( is_array($files) && isset($files['csvexporter.csv'])) { if ( is_array($files) && isset($files[$this->collection_name])) {
$file = $files['csvexporter.csv']; $file = $files[$this->collection_name];
$current_user = wp_get_current_user();
$author_name = $current_user->user_login;
$message = __('target collections:', 'tainacan'); $message = __('target collections:', 'tainacan');
$message .= " <b>" . implode(", ", $this->get_collections_names() ) . "</b><br/>"; $message .= " <b>" . implode(", ", $this->get_collections_names() ) . "</b><br/>";
$message .= __('Exported by:', 'tainacan');
$message .= " <b> ${author_name} </b><br/>";
$message .= __('Your CSV file is ready! Access it in the link below:', 'tainacan'); $message .= __('Your CSV file is ready! Access it in the link below:', 'tainacan');
$message .= '<br/><br/>'; $message .= '<br/><br/>';
$message .= '<a href="' . $file['url'] . '">Download</a>'; $message .= '<a href="' . $file['url'] . '">Download</a>';
@ -267,7 +277,7 @@ class CSV extends Exporter {
public function options_form() { public function options_form() {
ob_start(); ob_start();
?> ?>
<div class="field"> <div class="field">
<label class="label"><?php _e('CSV Delimiter', 'tainacan'); ?></label> <label class="label"><?php _e('CSV Delimiter', 'tainacan'); ?></label>
<span class="help-wrapper"> <span class="help-wrapper">
@ -334,12 +344,7 @@ class CSV extends Exporter {
</div> </div>
</div> </div>
<?php
return ob_get_clean();
<?php }
return ob_get_clean();
}
} }

View File

@ -84,7 +84,7 @@ abstract class Exporter {
* This array holds the structure that the default step 'process_collections' will handle. * This array holds the structure that the default step 'process_collections' will handle.
* *
* Its an array of the target collections, with their IDs, an identifier from the source, the total number of items to be importer/exporter, the mapping array * Its an array of the target collections, with their IDs, an identifier from the source, the total number of items to be importer/exporter, the mapping array
* from the source structure to the ID of the metadata metadata in tainacan * from the source structure to the ID of the metadata in tainacan
* *
* The format of the map is an array where the keys are the metadata IDs of the destination collection and the * The format of the map is an array where the keys are the metadata IDs of the destination collection and the
* values are the identifier from the source. This could be an ID or a string or whatever the importer/exporter finds appropriate to handle * values are the identifier from the source. This could be an ID or a string or whatever the importer/exporter finds appropriate to handle
@ -568,7 +568,13 @@ abstract class Exporter {
$processed_items = $this->get_items($current_collection_item, $collection_definition); $processed_items = $this->get_items($current_collection_item, $collection_definition);
foreach ($processed_items as $processed_item) { foreach ($processed_items as $processed_item) {
$init = microtime(true);
$this->process_item( $processed_item['item'], $processed_item['metadata'] ); $this->process_item( $processed_item['item'], $processed_item['metadata'] );
$final = microtime(true);
$total = ($final - $init);
$time_log = sprintf( __('Processed in %f seconds', 'tainacan'), $total );
$this->add_log($time_log);
} }
$this->process_footer($current_collection_item, $collection_definition); $this->process_footer($current_collection_item, $collection_definition);
@ -618,7 +624,6 @@ abstract class Exporter {
$this->update_current_collection($collection_definition); $this->update_current_collection($collection_definition);
} }
$data = []; $data = [];
while ($items->have_posts()) { while ($items->have_posts()) {
$items->the_post(); $items->the_post();
@ -681,14 +686,15 @@ abstract class Exporter {
$upload_dir = trailingslashit( $upload_dir_info['basedir'] ); $upload_dir = trailingslashit( $upload_dir_info['basedir'] );
$upload_url = trailingslashit( $upload_dir_info['baseurl'] ); $upload_url = trailingslashit( $upload_dir_info['baseurl'] );
$exporter_folder = 'tainacan/exporter'; $exporter_folder = 'tainacan/exporter';
$file_suffix = "{$exporter_folder}/{$prefix}_{$key}";
if (!is_dir($upload_dir . $exporter_folder)) { if (!is_dir($upload_dir . $exporter_folder)) {
if (!mkdir($upload_dir . $exporter_folder)) { if (!mkdir($upload_dir . $exporter_folder)) {
return false; return false;
} }
} }
$file_name = "$upload_dir$exporter_folder/$prefix$key"; $file_name = "{$upload_dir}{$file_suffix}";
$file_url = "$upload_url$exporter_folder/$prefix$key"; $file_url = "{$upload_url}{$file_suffix}";
$this->output_files[$key] = [ $this->output_files[$key] = [
'filename' => $file_name, 'filename' => $file_name,
'url' => $file_url 'url' => $file_url

View File

@ -9,13 +9,13 @@ namespace Tainacan\Exposers;
class JSON_flat extends Exposer { class JSON_flat extends Exposer {
public $slug = 'json-flat'; // type slug for url safe public $slug = 'json-flat'; // type slug for url safe
public $name = 'simple JSON (JavaScript Object Notation) for tainacan items'; public $name = 'Simple JSON (JavaScript Object Notation) for tainacan items';
public $accept_no_mapper = true; public $accept_no_mapper = true;
protected $mappers = true; protected $mappers = true;
function __construct() { function __construct() {
$this->set_name( __('Simple JSON', 'tainacan') ); $this->set_name( __('Simple JSON', 'tainacan') );
$this->set_description( __('simple JSON for tainacan items', 'tainacan') ); $this->set_description( __('Simple JSON for tainacan items', 'tainacan') );
} }

View File

@ -83,10 +83,45 @@ class Bulk_Edit_Process extends Generic_Process {
} }
public function get_output() { public function get_output() {
$message = __('Bulk edit finished', 'tainacan'); $name = $this->get_bulk_edit_collection_name();
$metadata = $this->get_changed_metadata();
$current_user = wp_get_current_user();
$author_name = $current_user->user_login;
$title_label = __('Collection', 'tainacan');
$author_label = __('Edited by', 'tainacan');
$metadata_label = __('Changed metadata', 'tainacan');
$message = __('Bulk edit finished', 'tainacan');
$message .= "<p> <strong> ${title_label}: </strong> ${name} </p>";
$message .= "<p> <strong> ${author_label}: </strong> ${author_name} </p>";
$message .= "<p> <strong> ${metadata_label}: </strong> ${metadata} </p>";
return $message; return $message;
} }
private function get_bulk_edit_collection_name() {
$params = $this->get_options();
if ($params['collection_id']) {
$collection = $params['collection_id'];
$bulk_collection = Tainacan\Repositories\Collections::get_instance()->fetch($collection);
if ($bulk_collection instanceof \Tainacan\Entities\Collection) {
return $bulk_collection->get_name();
}
}
return __('Collection', 'tainacan');
}
private function get_changed_metadata() {
$metadatum = $this->metadatum_repository->fetch($this->bulk_edit_data['metadatum_id']);
if ($metadatum instanceof \Tainacan\Entities\Metadatum) {
return $metadatum->get_name();
}
return __('Metadata', 'tainacan');
}
public function set_bulk_edit_data($bulk_edit_data = false) { public function set_bulk_edit_data($bulk_edit_data = false) {
$this->bulk_edit_data = $bulk_edit_data; $this->bulk_edit_data = $bulk_edit_data;
} }

View File

@ -50,18 +50,18 @@ abstract class Generic_Process {
]; ];
/** /**
* Transients is used to store temporary data to be used accross multiple requests * Transients are used to store temporary data to be used across multiple requests
* *
* Add and remove transient data using add_transient() and delete_transient() methods * Add and remove transient data using add_transient() and delete_transient() methods
* *
* Transitens can be strings, numbers or arrays. Avoid storing objects. * Transients can be strings, numbers or arrays. Avoid storing objects.
* *
* @var array * @var array
*/ */
protected $transients = []; protected $transients = [];
/** /**
* Wether to abort process execution. * Whether to abort process execution.
* @var bool * @var bool
*/ */
protected $abort = false; protected $abort = false;
@ -73,8 +73,8 @@ abstract class Generic_Process {
protected $error_log = []; protected $error_log = [];
/** /**
* List of attributes that are saved in DB and that are used to * List of attributes saved in DB, used to reconstruct the object.
* reconstruct the object, this property need be overwrite. * This property needs to be overwritten.
* @var array * @var array
*/ */
protected $array_attributes = [ protected $array_attributes = [
@ -84,7 +84,7 @@ abstract class Generic_Process {
]; ];
/** /**
* @return string * @return string the process unique id
*/ */
public function get_id(){ public function get_id(){
return $this->id; return $this->id;

View File

@ -63,8 +63,4 @@ class Background_Importer extends Background_Process {
} }
} }
?>

View File

@ -283,7 +283,6 @@ class CSV extends Importer {
return false; return false;
} }
public function options_form() { public function options_form() {
ob_start(); ob_start();
?> ?>
@ -654,7 +653,7 @@ class CSV extends Importer {
* *
* @param array $processed_item Associative array with metadatum source's as index with * @param array $processed_item Associative array with metadatum source's as index with
* its value or values * its value or values
* @param integet $collection_index The index in the $this->collections array of the collection the item is beeing inserted into * @param integer $collection_index The index in the $this->collections array of the collection the item is being inserted into
* *
* @return Tainacan\Entities\Item Item inserted * @return Tainacan\Entities\Item Item inserted
*/ */
@ -722,7 +721,7 @@ class CSV extends Importer {
if( is_array( $processed_item ) ) { if( is_array( $processed_item ) ) {
foreach ( $processed_item as $metadatum_source => $values ) { foreach ( $processed_item as $metadatum_source => $values ) {
if ( $metadatum_source == 'special_document' || if ($metadatum_source == 'special_document' ||
$metadatum_source == 'special_attachments' || $metadatum_source == 'special_attachments' ||
$metadatum_source == 'special_item_status' || $metadatum_source == 'special_item_status' ||
$metadatum_source == 'special_comment_status') { $metadatum_source == 'special_comment_status') {
@ -736,9 +735,9 @@ class CSV extends Importer {
} }
$metadatum = $Tainacan_Metadata->fetch( $tainacan_metadatum_id ); $metadatum = $Tainacan_Metadata->fetch( $tainacan_metadatum_id );
if( $this->is_empty_value( $values ) ) continue; if ($this->is_empty_value($values)) continue;
if( $metadatum instanceof Entities\Metadatum ) { if ($metadatum instanceof Entities\Metadatum) {
$singleItemMetadata = new Entities\Item_Metadata_Entity( $item, $metadatum); // *empty item will be replaced by inserted in the next foreach $singleItemMetadata = new Entities\Item_Metadata_Entity( $item, $metadatum); // *empty item will be replaced by inserted in the next foreach
if( $metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy' ) { if( $metadatum->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy' ) {
if( !is_array( $values ) ) { if( !is_array( $values ) ) {
@ -959,18 +958,25 @@ class CSV extends Importer {
public function add_collection(array $collection) { public function add_collection(array $collection) {
if (isset($collection['id'])) { if (isset($collection['id'])) {
if( isset($collection['mapping']) && is_array($collection['mapping']) ){ if (isset($collection['mapping']) && is_array($collection['mapping'])) {
foreach( $collection['mapping'] as $metadatum_id => $header ){ foreach( $collection['mapping'] as $metadatum_id => $header ){
if( !is_numeric($metadatum_id) ) { if (!is_numeric($metadatum_id)) {
$metadatum = $this->create_new_metadata( $header, $collection['id']); $repo_key = "create_repository_metadata";
if ( $metadatum == false ) { $collection_id = $collection['id'];
$this->add_error_log( __("Error on creating metadata metadata, please review the metadata description.", 'tainacan') ); if (strpos($metadatum_id, $repo_key) !== false) {
$collection_id = "default";
}
$metadatum = $this->create_new_metadata($header, $collection_id);
if ($metadatum == false) {
$this->add_error_log( __("Error while creating metadatum, please review the metadatum description.", 'tainacan') );
$this->abort(); $this->abort();
return false; return false;
} }
if( is_object($metadatum) && $metadatum instanceof \Tainacan\Entities\Metadatum ){
if (is_object($metadatum) && $metadatum instanceof \Tainacan\Entities\Metadatum) {
$collection['mapping'][$metadatum->get_id()] = $header; $collection['mapping'][$metadatum->get_id()] = $header;
} elseif ( is_array($metadatum) && sizeof($metadatum) == 2) { } elseif ( is_array($metadatum) && sizeof($metadatum) == 2) {
$parent_header = key($header); $parent_header = key($header);
@ -983,11 +989,14 @@ class CSV extends Importer {
$this->save_mapping( $collection['id'], $collection['mapping'] ); $this->save_mapping( $collection['id'], $collection['mapping'] );
$coll = \Tainacan\Repositories\Collections::get_instance()->fetch($collection['id']); $coll = \Tainacan\Repositories\Collections::get_instance()->fetch($collection['id']);
$metadata_order = array_map( if(empty($coll->get_metadata_order())) {
function($meta) { return ["enabled"=>true, "id"=>$meta]; }, $metadata_order = array_map(
array_keys( $collection['mapping'] ) function($meta) { return ["enabled"=>true, "id"=>$meta]; },
); array_keys( $collection['mapping'] )
$coll->set_metadata_order( $metadata_order ); );
$coll->set_metadata_order( $metadata_order );
}
if ( $coll->validate() ) { if ( $coll->validate() ) {
\Tainacan\Repositories\Collections::get_instance()->update( $coll ); \Tainacan\Repositories\Collections::get_instance()->update( $coll );
} else { } else {
@ -1018,9 +1027,17 @@ class CSV extends Importer {
* @return string * @return string
*/ */
public function get_output() { public function get_output() {
$imported_file = basename($this->get_tmp_file());
$current_user = wp_get_current_user();
$author = $current_user->user_login;
$message = __('target collections:', 'tainacan'); $message = __('imported file:', 'tainacan');
$message .= " <b> ${imported_file} </b><br/>";
$message .= __('target collections:', 'tainacan');
$message .= " <b>" . implode(", ", $this->get_collections_names() ) . "</b><br/>"; $message .= " <b>" . implode(", ", $this->get_collections_names() ) . "</b><br/>";
$message .= __('Imported by:', 'tainacan');
$message .= " <b> ${author} </b><br/>";
return $message; return $message;
} }

View File

@ -11,7 +11,6 @@ class Importer_Handler {
$this->bg_importer = new Background_Importer(); $this->bg_importer = new Background_Importer();
add_action('init', array(&$this, 'init')); add_action('init', array(&$this, 'init'));
} }
public function init() { public function init() {
@ -220,5 +219,3 @@ class Importer_Handler {
global $Tainacan_Importer_Handler; global $Tainacan_Importer_Handler;
$Tainacan_Importer_Handler = new Importer_Handler(); $Tainacan_Importer_Handler = new Importer_Handler();
?>

View File

@ -26,7 +26,7 @@ abstract class Importer {
* This array holds the structure that the default step 'process_collections' will handle. * This array holds the structure that the default step 'process_collections' will handle.
* *
* Its an array of the target collections, with their IDs, an identifier from the source, the total number of items to be imported, the mapping array * Its an array of the target collections, with their IDs, an identifier from the source, the total number of items to be imported, the mapping array
* from the source structure to the ID of the metadata metadata in tainacan * from the source structure to the ID of the metadata in tainacan
* *
* The format of the map is an array where the keys are the metadata IDs of the destination collection and the * The format of the map is an array where the keys are the metadata IDs of the destination collection and the
* values are the identifier from the source. This could be an ID or a string or whatever the importer finds appropriate to handle * values are the identifier from the source. This could be an ID or a string or whatever the importer finds appropriate to handle
@ -761,8 +761,6 @@ abstract class Importer {
} }
return false; return false;
} }
/** /**
@ -913,8 +911,6 @@ abstract class Importer {
} }
return $return; return $return;
} }
/** /**
@ -984,13 +980,20 @@ abstract class Importer {
if( $taxonomy->validate() ){ if( $taxonomy->validate() ){
$inserted_tax = $taxonomy_repo->insert( $taxonomy ); $inserted_tax = $taxonomy_repo->insert( $taxonomy );
$newMetadatum->set_metadata_type_options([ if(is_array($properties) && in_array( 'multiple', $properties) ){
'taxonomy_id' => $inserted_tax->get_id(), $newMetadatum->set_metadata_type_options([
'allow_new_terms' => 'yes', 'taxonomy_id' => $inserted_tax->get_id(),
'input_type' => 'tainacan-taxonomy-checkbox' 'allow_new_terms' => 'yes',
]); 'input_type' => 'tainacan-taxonomy-checkbox'
]);
} else {
$newMetadatum->set_metadata_type_options([
'taxonomy_id' => $inserted_tax->get_id(),
'allow_new_terms' => 'no',
'input_type' => 'tainacan-taxonomy-radio'
]);
}
} }
} }
/*Properties of metadatum*/ /*Properties of metadatum*/

View File

@ -195,6 +195,31 @@ class Collections extends Repository {
'default' => 'open', 'default' => 'open',
'validation' => v::optional(v::stringType()->in( [ 'open', 'closed' ] )), 'validation' => v::optional(v::stringType()->in( [ 'open', 'closed' ] )),
], ],
'submission_anonymous_user' => [
'map' => 'meta',
'title' => __( 'Allows submission by anonymous user', 'tainacan' ),
'type' => 'string',
'description' => __( 'If enabled, allows submission by anonymous users, whose does not have to be logged in with permissions on the WordPress system.', 'tainacan' ),
'default' => 'no',
'on_error' => __( 'Value should be yes or no', 'tainacan' ),
'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no
],
'submission_default_status' => [
'map' => 'meta',
'title' => __( 'Default submission item status', 'tainacan' ),
'type' => 'string',
'description' => __( 'The default status of the item that will be created in the collection after submission.', 'tainacan' ),
'default' => 'draft'
],
'allows_submission' => [
'map' => 'meta',
'title' => __( 'Allows item submission', 'tainacan' ),
'type' => 'string',
'description' => __( 'If enabled, the collection allows item submission, for example via the Item Submission block.', 'tainacan' ),
'default' => 'no',
'on_error' => __( 'Value should be yes or no', 'tainacan' ),
'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no
],
'hide_items_thumbnail_on_lists' => [ 'hide_items_thumbnail_on_lists' => [
'map' => 'meta', 'map' => 'meta',
'title' => __( 'Hide items thumbnail on lists', 'tainacan' ), 'title' => __( 'Hide items thumbnail on lists', 'tainacan' ),
@ -204,6 +229,16 @@ class Collections extends Repository {
'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no 'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no
'default' => 'no' 'default' => 'no'
], ],
'submission_use_recaptcha' => [
'map' => 'meta',
'title' => __( 'Use reCAPTCHA verification on submission form', 'tainacan' ),
'type' => 'string',
'description' => __( 'If enabled, the collection allows item submission using a reCAPTCHA', 'tainacan' ),
'default' => 'no',
'on_error' => __( 'Value should be yes or no', 'tainacan' ),
'validation' => v::stringType()->in( [ 'yes', 'no' ] ), // yes or no
],
] ); ] );
} }
@ -271,9 +306,11 @@ class Collections extends Repository {
$this->pre_process( $collection ); $this->pre_process( $collection );
$this->handle_parent_order_clone( $collection );
$new_collection = parent::insert( $collection ); $new_collection = parent::insert( $collection );
$this->handle_core_metadata( $new_collection ); $this->handle_core_metadata( $new_collection );
$this->handle_control_metadata( $new_collection );
$collection->register_collection_item_post_type(); $collection->register_collection_item_post_type();
flush_rewrite_rules( false ); // needed to activate items post type archive url flush_rewrite_rules( false ); // needed to activate items post type archive url
@ -374,6 +411,30 @@ class Collections extends Repository {
} }
} }
function handle_control_metadata( $collection ) {
$Tainacan_Metadata = \Tainacan\Repositories\Metadata::get_instance();
$Tainacan_Metadata->register_control_metadata( $collection );
}
/**
* This function guarantees that children collections has its own clone
* of "metadata_order" from the parent collention.
*
* @param \Tainacan\Entities\Collection $collection, children collection
*
* @return void
*/
function handle_parent_order_clone( &$collection ) {
if ($collection instanceof Entities\Collection && $collection->get_parent() != 0) {
$parent_collection = $this->fetch( $collection->get_parent() );
$collection->set_metadata_order($parent_collection->get_metadata_order());
$collection->set_filters_order($parent_collection->get_filters_order());
if (!$collection->validate()) {
throw new \Exception( implode(",", $collection->get_errors()) );
}
}
}
} }

View File

@ -70,7 +70,8 @@ class Item_Metadata extends Repository {
return $item_metadata; return $item_metadata;
} else { } else {
if ( $unique ) { if ( $unique ) {
if( empty( $item_metadata->get_value() ) ) {
if ( !is_numeric($item_metadata->get_value()) && empty( $item_metadata->get_value() ) ) {
if ( $item_metadata->get_metadatum()->get_parent() > 0 ) if ( $item_metadata->get_metadatum()->get_parent() > 0 )
delete_metadata_by_mid( 'post', $item_metadata->get_meta_id() ); delete_metadata_by_mid( 'post', $item_metadata->get_meta_id() );
else else
@ -101,7 +102,7 @@ class Item_Metadata extends Repository {
$values = $item_metadata->get_value(); $values = $item_metadata->get_value();
foreach ( $values as $value ) { foreach ( $values as $value ) {
if( empty($value) || $value == "" ) { if ( !is_numeric($value) && empty($value) ) {
continue; continue;
} }
add_post_meta( $item_metadata->get_item()->get_id(), $item_metadata->get_metadatum()->get_id(), wp_slash( $value ) ); add_post_meta( $item_metadata->get_item()->get_id(), $item_metadata->get_metadatum()->get_id(), wp_slash( $value ) );

View File

@ -231,7 +231,7 @@ class Items extends Repository {
$no_collection_set = false; $no_collection_set = false;
/** /**
* We can not user $collections->fetch() here because facets * We can not use $collections->fetch() here because facets
* filter wp_query to just return the query and not the results * filter wp_query to just return the query and not the results
* See Repositories\Metadata::fetch_all_metadatum_values() * See Repositories\Metadata::fetch_all_metadatum_values()
* *

View File

@ -199,7 +199,17 @@ class Metadata extends Repository {
'validation' => v::optional( v::url() ), 'validation' => v::optional( v::url() ),
'description' => __( 'The semantic metadatum description URI like: ', 'tainacan' ) . 'https://schema.org/URL', 'description' => __( 'The semantic metadatum description URI like: ', 'tainacan' ) . 'https://schema.org/URL',
'default' => '' 'default' => ''
] ],
'repository_level' => [
'map' => 'meta',
'title' => __( 'Repository metadata', 'tainacan' ),
'type' => 'string',
'description' => __( 'Makes this metadatum a repository level metadatum instead of collection metadatum', 'tainacan' ),
'on_error' => __( 'Invalid value for repository metadata', 'tainacan' ),
'validation' => v::stringType()->in( [ 'yes', 'no' ] ),
// yes or no. It cant be multiple if its collection_key
'default' => 'no'
],
] ); ] );
} }
@ -326,17 +336,27 @@ class Metadata extends Repository {
return []; return [];
} }
} elseif ( is_array( $args ) ) { } elseif ( is_array( $args ) ) {
$args = array_merge( [ $args = array_merge( [
'posts_per_page' => - 1, 'posts_per_page' => - 1,
], $args ); ], $args );
if ( ! (isset($args['include_control_metadata_types']) && $args['include_control_metadata_types'] == true) ) {
if( !isset($args['meta_query']) )
$args['meta_query'] = [];
$args['meta_query'][] = [
'key' => 'metadata_type',
'value' => 'Tainacan\Metadata_Types\Control',
'compare' => 'NOT IN'
];
}
$args = $this->parse_fetch_args( $args ); $args = $this->parse_fetch_args( $args );
$args['post_type'] = Entities\Metadatum::get_post_type(); $args['post_type'] = Entities\Metadatum::get_post_type();
$args = apply_filters( 'tainacan_fetch_args', $args, 'metadata' ); $args = apply_filters( 'tainacan_fetch_args', $args, 'metadata' );
$wp_query = new \WP_Query( $args ); $wp_query = new \WP_Query( $args );
return $this->fetch_output( $wp_query, $output ); return $this->fetch_output( $wp_query, $output );
@ -422,9 +442,7 @@ class Metadata extends Repository {
$args['meta_query'] = $original_meta_q; $args['meta_query'] = $original_meta_q;
$args['meta_query'][] = $meta_query; $args['meta_query'][] = $meta_query;
//var_dump($args);
$results = array_merge($results, $this->fetch( $args, 'OBJECT' )); $results = array_merge($results, $this->fetch( $args, 'OBJECT' ));
} }
} else { } else {
@ -447,9 +465,14 @@ class Metadata extends Repository {
$args['meta_query'][] = $meta_query; $args['meta_query'][] = $meta_query;
$results = $this->fetch( $args, 'OBJECT' ); $results = $this->fetch( $args, 'OBJECT' );
} }
if (!isset($args['add_only_repository']) || $args['add_only_repository'] !== true) {
$results = array_filter($results, function($meta) {
return ( !isset($meta->get_metadata_type_options()['only_repository']) || $meta->get_metadata_type_options()['only_repository'] == 'no' );
});
}
return $this->order_result( return $this->order_result(
$results, $results,
@ -562,6 +585,7 @@ class Metadata extends Repository {
*/ */
public function order_result( $result, Entities\Collection $collection, $include_disabled = false ) { public function order_result( $result, Entities\Collection $collection, $include_disabled = false ) {
$order = $collection->get_metadata_order(); $order = $collection->get_metadata_order();
if ( $order ) { if ( $order ) {
$order = ( is_array( $order ) ) ? $order : unserialize( $order ); $order = ( is_array( $order ) ) ? $order : unserialize( $order );
@ -644,15 +668,12 @@ class Metadata extends Repository {
do_action( 'register_metadata_types' ); do_action( 'register_metadata_types' );
if ( $output === 'NAME' ) { return array_map(
foreach ( $this->metadata_types as $metadata_type ) { function($metadata_type) use ($output) {
$return[] = str_replace( 'Tainacan\Metadata_Types\\', '', $metadata_type ); return $output === 'NAME' ? str_replace( 'Tainacan\\Metadata_Types\\', '', $metadata_type ) : $metadata_type;
} },
array_filter($this->metadata_types, function($metadata_type) { return $metadata_type != 'Tainacan\Metadata_Types\Control';})
return $return; );
}
return $this->metadata_types;
} }
@ -773,6 +794,90 @@ class Metadata extends Repository {
} }
} }
/**
* @param Entities\Collection $collection
* @param bool $force if true will register control metadata even if collection is auto draft
*
* @return bool
* @throws \ErrorException
* @throws \Exception
*/
public function register_control_metadata( Entities\Collection $collection, $force = false ) {
if ( $force !== true && $collection->get_status() == 'auto-draft' ) {
return;
}
$metadata = $this->fetch( [
'meta_query' => [
[
'key' => 'metadata_type',
'value' => 'Tainacan\Metadata_Types\Control',
'compare' => '='
],[
'key' => 'collection_id',
'value' => 'default',
'compare' => '='
]
],
'include_disabled' => true,
'include_control_metadata_types' => true
], 'OBJECT' );
$data_control_metadata = [
'document_type' => [
'name' => __('Document type', 'tainacan'),
'description' => __('The item main document type', 'tainacan'),
'collection_id' => 'default',
'metadata_type' => 'Tainacan\Metadata_Types\Control',
'status' => 'publish',
'display' => 'never',
'metadata_type_options' => [ 'control_metadatum' => 'document_type' ]
],
'collection_id' => [
'name' => __('Collection', 'tainacan'),
'description' => __('The item collection ID', 'tainacan'),
'collection_id' => 'default',
'metadata_type' => 'Tainacan\Metadata_Types\Control',
'status' => 'publish',
'display' => 'never',
'metadata_type_options' => [
'control_metadatum' => 'collection_id',
'only_repository' => 'yes'
]
],
'has_thumbnail' => [
'name' => __('Has thumbnail', 'tainacan'),
'description' => __('Does the item has a thumbnail set?', 'tainacan'),
'collection_id' => 'default',
'metadata_type' => 'Tainacan\Metadata_Types\Control',
'status' => 'publish',
'display' => 'never',
'metadata_type_options' => [ 'control_metadatum' => 'has_thumbnail' ]
],
];
foreach ( $data_control_metadata as $index => $data_control_metadatum ) {
if ( empty( $metadata ) ) {
$this->insert_array_metadatum( $data_control_metadatum );
} else {
$exists = false;
foreach ( $metadata as $metadatum ) {
if (
$metadatum->get_metadata_type() === $data_control_metadatum['metadata_type'] &&
$metadatum->get_metadata_type_options()['control_metadatum'] == $data_control_metadatum['metadata_type_options']['control_metadatum']
) {
$exists = true;
}
}
if ( ! $exists ) {
$this->insert_array_metadatum( $data_control_metadatum );
}
}
}
}
/** /**
* block user from remove core metadata * block user from remove core metadata
* *
@ -912,7 +1017,6 @@ class Metadata extends Repository {
$set_ = 'set_' . $attribute; $set_ = 'set_' . $attribute;
$metadatum->$set_( $value ); $metadatum->$set_( $value );
} }
if ( $metadatum->validate() ) { if ( $metadatum->validate() ) {
$metadatum = $this->insert( $metadatum ); $metadatum = $this->insert( $metadatum );
@ -1249,6 +1353,9 @@ class Metadata extends Repository {
continue; continue;
} }
$label = $_post->post_title; $label = $_post->post_title;
} elseif ( $metadatum_type === 'Tainacan\Metadata_Types\Control' ) {
$metadata_type_object = $metadatum->get_metadata_type_object();
$label = $metadata_type_object->get_control_metadatum_value($r, $metadatum_options['control_metadatum'], 'string' );
} elseif ( $metadatum_type === 'Tainacan\Metadata_Types\User' ) { } elseif ( $metadatum_type === 'Tainacan\Metadata_Types\User' ) {
$name = get_the_author_meta( 'display_name', $label ); $name = get_the_author_meta( 'display_name', $label );
$label = apply_filters("tainacan-item-get-author-name", $name); $label = apply_filters("tainacan-item-get-author-name", $name);

View File

@ -128,9 +128,10 @@ abstract class Repository {
$old = ''; $old = '';
$diffs = []; $diffs = [];
do_action( 'tainacan-pre-insert', $obj ); do_action( 'tainacan-pre-insert', $obj );
do_action( 'tainacan-pre-insert-' . $obj->get_post_type(), $obj ); $obj_post_type = $obj->get_post_type();
if( $obj_post_type != false )
do_action( "tainacan-pre-insert-$obj_post_type", $obj );
$map = $this->get_map(); $map = $this->get_map();
@ -159,6 +160,8 @@ abstract class Repository {
$post_t = $collection->get_db_identifier(); $post_t = $collection->get_db_identifier();
$obj->WP_Post->post_type = $post_t; $obj->WP_Post->post_type = $post_t;
$obj_post_type = 'tainacan-item';
do_action( "tainacan-pre-insert-$obj_post_type", $obj );
} }
// TODO verificar se salvou mesmo // TODO verificar se salvou mesmo
@ -176,7 +179,9 @@ abstract class Repository {
update_post_meta( $id, '_user_edit_lastr', get_current_user_id() ); update_post_meta( $id, '_user_edit_lastr', get_current_user_id() );
do_action( 'tainacan-insert', $obj, $diffs, $is_update ); do_action( 'tainacan-insert', $obj, $diffs, $is_update );
do_action( 'tainacan-insert-' . $obj->get_post_type(), $obj ); if( $obj_post_type != false ) {
do_action( "tainacan-insert-$obj_post_type", $obj );
}
// return a brand new object // return a brand new object
return new $this->entities_type( $obj->WP_Post ); return new $this->entities_type( $obj->WP_Post );

View File

@ -49,6 +49,7 @@ class Theme_Helper {
add_filter('get_the_archive_title', array($this, 'filter_archive_title')); add_filter('get_the_archive_title', array($this, 'filter_archive_title'));
add_shortcode( 'tainacan-search', array($this, 'search_shortcode')); add_shortcode( 'tainacan-search', array($this, 'search_shortcode'));
add_shortcode( 'tainacan-item-submission', array($this, 'item_submission_shortcode'));
add_action( 'generate_rewrite_rules', array( &$this, 'rewrite_rules' ), 10, 1 ); add_action( 'generate_rewrite_rules', array( &$this, 'rewrite_rules' ), 10, 1 );
add_filter( 'query_vars', array( &$this, 'rewrite_rules_query_vars' ) ); add_filter( 'query_vars', array( &$this, 'rewrite_rules_query_vars' ) );
@ -366,6 +367,28 @@ class Theme_Helper {
return $image; return $image;
} }
public function item_submission_shortcode($args) {
global $TAINACAN_BASE_URL;
$props = ' ';
// Passes arguments to custom props
if ($args) {
foreach ($args as $key => $value) {
if ($value == true || $value == 'true') {
$props .= str_replace('_', '-', $key) . '="' . $value . '" ';
}
}
}
wp_enqueue_media();
wp_enqueue_script('jcrop');
wp_enqueue_script('tainacan-item-submission', $TAINACAN_BASE_URL . '/assets/js/item_submission.js' , ['underscore', 'jcrop', 'media-editor', 'media-views', 'customize-controls'] , TAINACAN_VERSION);
wp_localize_script('tainacan-item-submission', 'tainacan_plugin', \Tainacan\Admin::get_instance()->get_admin_js_localization_params());
return "<div id='tainacan-item-submission-form' $props ></div>";
}
public function search_shortcode($args) { public function search_shortcode($args) {
$props = ' '; $props = ' ';
@ -487,7 +510,7 @@ class Theme_Helper {
* *
* @type string $label Label, visible to users. Default to $slug * @type string $label Label, visible to users. Default to $slug
* @type string $description Description, visible only to editors in the admin. Default none. * @type string $description Description, visible only to editors in the admin. Default none.
* @type string $type Type. Accepted values are 'template' or 'component'. Defautl 'template' * @type string $type Type. Accepted values are 'template' or 'component'. Default 'template'
* @type string $template Full path to the template file to be used. Required if $type is set to template. * @type string $template Full path to the template file to be used. Required if $type is set to template.
* Default: theme-path/tainacan/view-mode-{$slug}.php * Default: theme-path/tainacan/view-mode-{$slug}.php
* @type string $component Component tag name. The web component js must be included and must accept two props: * @type string $component Component tag name. The web component js must be included and must accept two props:
@ -567,7 +590,7 @@ class Theme_Helper {
$title = tainacan_get_the_collection_name(); $title = tainacan_get_the_collection_name();
$img_info = ( has_post_thumbnail( tainacan_get_collection_id() ) ) ? wp_get_attachment_image_src( get_post_thumbnail_id( tainacan_get_collection_id() ), 'full' ) : $logo; $img_info = ( has_post_thumbnail( tainacan_get_collection_id() ) ) ? wp_get_attachment_image_src( get_post_thumbnail_id( tainacan_get_collection_id() ), 'full' ) : $logo;
$url_src = home_url( $wp->request ); $url_src = home_url( $wp->request );
$excerpt = tainacan_get_the_collection_description(); $excerpt = strip_tags(tainacan_get_the_collection_description());
} elseif ( is_post_type_archive('tainacan-collection') ) { } elseif ( is_post_type_archive('tainacan-collection') ) {
$title = __('Collections', 'tainacan'); $title = __('Collections', 'tainacan');
} }
@ -589,7 +612,7 @@ class Theme_Helper {
$tainacan_term = tainacan_get_term(); $tainacan_term = tainacan_get_term();
$title = $term->name; $title = $term->name;
$excerpt = $term->description; $excerpt = strip_tags($term->description);
$url_src = get_term_link($term->term_id, $term->taxonomy); $url_src = get_term_link($term->term_id, $term->taxonomy);

View File

@ -445,6 +445,41 @@ class Migrations {
} }
static function create_control_metadata() {
$items_repository = \Tainacan\Repositories\Items::get_instance();
$collection_repository = \Tainacan\Repositories\Collections::get_instance();
$metadata_repository = \Tainacan\Repositories\Metadata::get_instance();
$collections = $collection_repository->fetch(['posts_per_page' => -1], 'OBJECT');
$helper = \Tainacan\Metadata_Types\Control::get_helper();
foreach ($collections as $collection) {
$collection_id = $collection->get_id();
$metadata_repository->register_control_metadata( $collection );
$per_page = 50; $page = 1;
$args = [
'posts_per_page'=> $per_page,
'paged' => $page,
'post_status' => get_post_stati()
];
$collection_items = $items_repository->fetch($args, $collection_id, 'WP_Query');
$total = $collection_items->found_posts;
$last_page = ceil($total/$per_page);
while ($page++ <= $last_page) {
if ($collection_items->have_posts()) {
while ( $collection_items->have_posts() ) {
$collection_items->the_post();
$item = new \Tainacan\Entities\Item($collection_items->post);
if ( $item instanceof \Tainacan\Entities\Item) {
$helper->update_control_metadatum($item);
}
}
}
$args['paged'] = $page;
$collection_items = $items_repository->fetch($args, $collection_id, 'WP_Query');
}
}
}
} }

View File

@ -2,9 +2,9 @@
Contributors: andrebenedito, daltonmartins, fabianobn, jacsonp, leogermani, weryques, wetah, eduardohumberto, ravipassos, jessicafpx, marinagiolo, omarceloavila, vnmedeiros, tainacan Contributors: andrebenedito, daltonmartins, fabianobn, jacsonp, leogermani, weryques, wetah, eduardohumberto, ravipassos, jessicafpx, marinagiolo, omarceloavila, vnmedeiros, tainacan
Tags: museums, libraries, archives, GLAM, collections, repository Tags: museums, libraries, archives, GLAM, collections, repository
Requires at least: 4.8 Requires at least: 4.8
Tested up to: 5.4 Tested up to: 5.6
Requires PHP: 5.6 Requires PHP: 5.6
Stable tag: 0.16.3 Stable tag: 0.17.2
License: GPLv2 or later License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html License URI: http://www.gnu.org/licenses/gpl-3.0.html
@ -13,7 +13,7 @@ Tainacan is an open-source, powerful and flexible digital repository platform fo
== Description == == Description ==
[Tainacan](https://tainacan.org/) is an open-source, powerful and flexible digital repository platform for WordPress. Manage and publish your digital collections just as easily as you post to your blog, having all the tools of a professional repository platform. It can be used for the creation of a digital collection, a digital library or a digital repository for your institutional or personal collection. [Tainacan](https://tainacan.org/) is an [open-source](https://github.com/tainacan/tainacan), powerful and flexible digital repository platform for WordPress. Manage and publish your digital collections just as easily as you post to your blog, having all the tools of a professional repository platform. It can be used for the creation of a digital collection, a digital library or a digital repository for your institutional or personal collection.
Tainacan aims to facilitate the activities of organizing, documenting, disseminating and displaying digital objects based on simple and accessible principles of digital curation. The plugin integrates with the Wordpress block engine, making it easy to reuse objects for different and varied uses. Tainacan aims to facilitate the activities of organizing, documenting, disseminating and displaying digital objects based on simple and accessible principles of digital curation. The plugin integrates with the Wordpress block engine, making it easy to reuse objects for different and varied uses.
@ -80,6 +80,7 @@ If you have Imagick installed in your server, Tainacan will be able to automatic
== Find out more == == Find out more ==
* Visit our official website: [https://tainacan.org/](https://tainacan.org/) * Visit our official website: [https://tainacan.org/](https://tainacan.org/)
* Contribute to the source code: [https://github.com/tainacan/tainacan](https://github.com/tainacan/tainacan)
* Check our documentation Wiki: [https://wiki.tainacan.org/](https://wiki.tainacan.org/) * Check our documentation Wiki: [https://wiki.tainacan.org/](https://wiki.tainacan.org/)
== Screenshots == == Screenshots ==

View File

@ -4,13 +4,13 @@ Plugin Name: Tainacan
Plugin URI: https://tainacan.org/ Plugin URI: https://tainacan.org/
Description: Open source, powerfull and flexible repository platform for WordPress. Manage and publish you digital collections as easily as publishing a post to your blog, while having all the tools of a professional respository platform. Description: Open source, powerfull and flexible repository platform for WordPress. Manage and publish you digital collections as easily as publishing a post to your blog, while having all the tools of a professional respository platform.
Author: Tainacan.org Author: Tainacan.org
Version: 0.16.3 Version: 0.17.2
Text Domain: tainacan Text Domain: tainacan
License: GPLv2 or later License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-3.0.html License URI: http://www.gnu.org/licenses/gpl-3.0.html
*/ */
const TAINACAN_VERSION = '0.16.3'; const TAINACAN_VERSION = '0.17.2';
defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
$TAINACAN_BASE_URL = plugins_url('', __FILE__); $TAINACAN_BASE_URL = plugins_url('', __FILE__);
@ -34,3 +34,9 @@ add_action( 'after_setup_theme', function() {
} ); } );
add_action('init', ['Tainacan\Migrations', 'run_migrations']); add_action('init', ['Tainacan\Migrations', 'run_migrations']);
//https://core.trac.wordpress.org/ticket/23022
//https://core.trac.wordpress.org/ticket/23022#comment:13
add_filter( 'wp_untrash_post_status', function( $new_status, $post_id, $previous_status ) {
return $previous_status;
}, 10, 3 );

View File

@ -431,7 +431,7 @@
:addons="false" :addons="false"
:label="$i18n.get('label_slug')" :label="$i18n.get('label_slug')"
:type="editFormErrors['slug'] != undefined ? 'is-danger' : ''" :type="editFormErrors['slug'] != undefined ? 'is-danger' : ''"
:message="editFormErrors['slug'] != undefined ? editFormErrors['slug'] : ''"> :message="isUpdatingSlug ? $i18n.get('info_validating_slug') : (editFormErrors['slug'] != undefined ? editFormErrors['slug'] : '')">
<help-button <help-button
:title="$i18n.getHelperTitle('collections', 'slug')" :title="$i18n.getHelperTitle('collections', 'slug')"
:message="$i18n.getHelperMessage('collections', 'slug')"/> :message="$i18n.getHelperMessage('collections', 'slug')"/>
@ -439,7 +439,9 @@
id="tainacan-text-slug" id="tainacan-text-slug"
@input="updateSlug" @input="updateSlug"
v-model="form.slug" v-model="form.slug"
@focus="clearErrors('slug')"/> @focus="clearErrors('slug')"
:disabled="isUpdatingSlug"
:loading="isUpdatingSlug"/>
</b-field> </b-field>
<!-- Comment Status ------------------------ --> <!-- Comment Status ------------------------ -->
@ -458,6 +460,97 @@
:message="$i18n.getHelperMessage('collections', 'allow_comments')"/> :message="$i18n.getHelperMessage('collections', 'allow_comments')"/>
</b-field> </b-field>
<!-- Allows Submissions ------------------------ -->
<b-field
:addons="false"
:label="$i18n.getHelperTitle('collections', 'allows_submission')"
:type="editFormErrors['allows_submission'] != undefined ? 'is-danger' : ''"
:message="editFormErrors['allows_submission'] != undefined ? editFormErrors['allows_submission'] : ''">
&nbsp;
<b-switch
id="tainacan-checkbox-allow-submission"
size="is-small"
true-value="yes"
false-value="no"
v-model="form.allows_submission" />
<help-button
:title="$i18n.getHelperTitle('collections', 'allows_submission')"
:message="$i18n.getHelperMessage('collections', 'allows_submission')"/>
</b-field>
<transition name="filter-item">
<div
v-if="form.allows_submission === 'yes'"
class="item-submission-options">
<!-- Allows Submissions by anonynmous user ------------------------ -->
<b-field
:addons="false"
:label="$i18n.getHelperTitle('collections', 'submission_anonymous_user')"
:type="editFormErrors['submission_anonymous_user'] != undefined ? 'is-danger' : ''"
:message="editFormErrors['submission_anonymous_user'] != undefined ? editFormErrors['submission_anonymous_user'] : ''">
&nbsp;
<b-switch
id="tainacan-checkbox-allow-submission"
size="is-small"
true-value="yes"
false-value="no"
v-model="form.submission_anonymous_user" />
<help-button
:title="$i18n.getHelperTitle('collections', 'submission_anonymous_user')"
:message="$i18n.getHelperMessage('collections', 'submission_anonymous_user')"/>
</b-field>
<!-- Item submission default Status -------------------------------- -->
<b-field
:addons="false"
:label="$i18n.getHelperTitle('collections', 'submission_default_status')"
:type="editFormErrors['submission_default_status'] != undefined ? 'is-danger' : ''"
:message="editFormErrors['submission_default_status'] != undefined ? editFormErrors['submission_default_status'] : ''">
<help-button
:title="$i18n.getHelperTitle('collections', 'submission_default_status')"
:message="$i18n.getHelperMessage('collections', 'submission_default_status')"/>
<div class="status-radios">
<b-radio
v-model="form.submission_default_status"
v-for="(statusOption, index) of $statusHelper.getStatuses().filter((status) => status.slug != 'trash')"
:key="index"
:native-value="statusOption.slug">
<span class="icon has-text-gray">
<i
class="tainacan-icon tainacan-icon-18px"
:class="$statusHelper.getIcon(statusOption.slug)"/>
</span>
{{ statusOption.name }}
</b-radio>
</div>
</b-field>
<!-- Submission process uses reCAPTCHA ------------------------ -->
<b-field
:addons="false"
:label="$i18n.getHelperTitle('collections', 'submission_use_recaptcha')"
:type="editFormErrors['submission_use_recaptcha'] != undefined ? 'is-danger' : ''"
:message="editFormErrors['submission_use_recaptcha'] != undefined ? editFormErrors['submission_use_recaptcha'] : ''">
&nbsp;
<b-switch
id="tainacan-checkbox-submission-use-recaptcha"
size="is-small"
true-value="yes"
false-value="no"
v-model="form.submission_use_recaptcha" />
<help-button
:title="$i18n.getHelperTitle('collections', 'submission_use_recaptcha')"
:message="$i18n.getHelperMessage('collections', 'submission_use_recaptcha')"/>
<p
v-if="form.submission_use_recaptcha == 'yes'"
v-html="$i18n.getWithVariables('info_recaptcha_link_%s', [ reCAPTCHASettingsPagePath ])" />
</b-field>
</div>
</transition>
<!-- Hook for extra Form options --> <!-- Hook for extra Form options -->
<template <template
v-if="formHooks != undefined && v-if="formHooks != undefined &&
@ -486,14 +579,14 @@
style="margin-left: auto;" style="margin-left: auto;"
class="control"> class="control">
<button <button
v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata')" v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata') && !fromImporter"
id="button-submit-goto-metadata" id="button-submit-goto-metadata"
@click.prevent="onSubmit('metadata')" @click.prevent="onSubmit('metadata')"
class="button is-secondary">{{ $i18n.get('label_save_goto_metadata') }}</button> class="button is-secondary">{{ $i18n.get('label_save_goto_metadata') }}</button>
</div> </div>
<div class="control"> <div class="control">
<button <button
v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata')" v-if="isNewCollection && $userCaps.hasCapability('tnc_rep_edit_metadata') && !fromImporter"
id="button-submit-goto-filter" id="button-submit-goto-filter"
@click.prevent="onSubmit('filters')" @click.prevent="onSubmit('filters')"
class="button is-secondary">{{ $i18n.get('label_save_goto_filter') }}</button> class="button is-secondary">{{ $i18n.get('label_save_goto_filter') }}</button>
@ -556,7 +649,11 @@ export default {
enabled_view_modes: [], enabled_view_modes: [],
default_view_mode: [], default_view_mode: [],
allow_comments: '', allow_comments: '',
hide_items_thumbnail_on_lists: '' allows_submission: 'no',
submission_default_status: 'draft',
submission_anonymous_user: 'no',
hide_items_thumbnail_on_lists: '',
submission_use_recaptcha: 'no'
}, },
thumbnail: {}, thumbnail: {},
cover: {}, cover: {},
@ -581,6 +678,7 @@ export default {
viewModesList: [], viewModesList: [],
fromImporter: '', fromImporter: '',
registeredViewModes: tainacan_plugin.registered_view_modes, registeredViewModes: tainacan_plugin.registered_view_modes,
reCAPTCHASettingsPagePath: tainacan_plugin.admin_url + 'admin.php?page=tainacan_item_submission',
newPagePath: tainacan_plugin.admin_url + 'post-new.php?post_type=page', newPagePath: tainacan_plugin.admin_url + 'post-new.php?post_type=page',
isUpdatingSlug: false, isUpdatingSlug: false,
entityName: 'collection' entityName: 'collection'
@ -650,6 +748,10 @@ export default {
this.form.default_view_mode = this.collection.default_view_mode; this.form.default_view_mode = this.collection.default_view_mode;
this.form.enabled_view_modes = JSON.parse(JSON.stringify(this.collection.enabled_view_modes.reduce((result, viewMode) => { typeof viewMode == 'string' ? result.push(viewMode) : null; return result }, []))); this.form.enabled_view_modes = JSON.parse(JSON.stringify(this.collection.enabled_view_modes.reduce((result, viewMode) => { typeof viewMode == 'string' ? result.push(viewMode) : null; return result }, [])));
this.form.allow_comments = this.collection.allow_comments; this.form.allow_comments = this.collection.allow_comments;
this.form.allows_submission = this.collection.allows_submission;
this.form.submission_anonymous_user = this.collection.submission_anonymous_user;
this.form.submission_default_status = this.collection.submission_default_status;
this.form.submission_use_recaptcha = this.collection.submission_use_recaptcha;
this.form.hide_items_thumbnail_on_lists = this.collection.hide_items_thumbnail_on_lists; this.form.hide_items_thumbnail_on_lists = this.collection.hide_items_thumbnail_on_lists;
// Generates CoverPage from current cover_page_id info // Generates CoverPage from current cover_page_id info
@ -731,7 +833,7 @@ export default {
this.isUpdatingSlug = false; this.isUpdatingSlug = false;
}); });
}, 500), }, 1000),
onSubmit(goTo) { onSubmit(goTo) {
this.isLoading = true; this.isLoading = true;
@ -747,6 +849,10 @@ export default {
parent: this.form.parent, parent: this.form.parent,
enabled_view_modes: this.form.enabled_view_modes, enabled_view_modes: this.form.enabled_view_modes,
default_view_mode: this.form.default_view_mode, default_view_mode: this.form.default_view_mode,
allows_submission: this.form.allows_submission,
submission_anonymous_user: this.form.submission_anonymous_user,
submission_default_status: this.form.submission_default_status,
submission_use_recaptcha: this.form.submission_use_recaptcha,
allow_comments: this.form.allow_comments, allow_comments: this.form.allow_comments,
hide_items_thumbnail_on_lists: this.form.hide_items_thumbnail_on_lists hide_items_thumbnail_on_lists: this.form.hide_items_thumbnail_on_lists
}; };
@ -770,15 +876,19 @@ export default {
this.form.enabled_view_modes = this.collection.enabled_view_modes.map((viewMode) => viewMode.viewMode); this.form.enabled_view_modes = this.collection.enabled_view_modes.map((viewMode) => viewMode.viewMode);
this.form.default_view_mode = this.collection.default_view_mode; this.form.default_view_mode = this.collection.default_view_mode;
this.form.allow_comments = this.collection.allow_comments; this.form.allow_comments = this.collection.allow_comments;
this.form.allows_submission = this.collection.allows_submission;
this.form.submission_anonymous_user = this.collection.submission_anonymous_user;
this.form.submission_default_status = this.collection.submission_default_status;
this.form.submission_use_recaptcha = this.collection.submission_use_recaptcha;
this.form.hide_items_thumbnail_on_lists = this.collection.hide_items_thumbnail_on_lists; this.form.hide_items_thumbnail_on_lists = this.collection.hide_items_thumbnail_on_lists;
this.isLoading = false; this.isLoading = false;
this.formErrorMessage = ''; this.formErrorMessage = '';
this.editFormErrors = {}; this.editFormErrors = {};
if (this.fromImporter) if (this.fromImporter) {
this.$router.go(-1); this.$router.go(-1);
else { } else {
if (goTo == 'metadata') if (goTo == 'metadata')
this.$router.push(this.$routerHelper.getCollectionMetadataPath(this.collectionId)); this.$router.push(this.$routerHelper.getCollectionMetadataPath(this.collectionId));
else if (goTo == 'filters') else if (goTo == 'filters')
@ -824,6 +934,10 @@ export default {
this.form.default_view_mode = this.collection.default_view_mode; this.form.default_view_mode = this.collection.default_view_mode;
this.form.enabled_view_modes = []; this.form.enabled_view_modes = [];
this.form.allow_comments = this.collection.allow_comments; this.form.allow_comments = this.collection.allow_comments;
this.form.allows_submission = this.collection.allows_submission;
this.form.submission_anonymous_user = this.collection.submission_anonymous_user;
this.form.submission_default_status = this.collection.submission_default_status;
this.form.submission_use_recaptcha = this.collection.submission_use_recaptcha;
this.form.hide_items_thumbnail_on_lists = this.collection.hide_items_thumbnail_on_lists; this.form.hide_items_thumbnail_on_lists = this.collection.hide_items_thumbnail_on_lists;
// Pre-fill status with publish to incentivate it // Pre-fill status with publish to incentivate it
@ -1129,6 +1243,12 @@ export default {
align-items: center; align-items: center;
} }
} }
.item-submission-options {
padding-left: 1em;
padding-top: 1.25em;
margin-top: -1.5em;
border-left: 1px solid var(--tainacan-gray2);
}
</style> </style>

View File

@ -80,6 +80,11 @@
:value="'create_metadata' + index"> :value="'create_metadata' + index">
{{ $i18n.get('label_create_metadatum') }} {{ $i18n.get('label_create_metadatum') }}
</option> </option>
<option
v-if="collection && collection.current_user_can_edit_metadata"
:value="'create_repository_metadata' + index">
{{ $i18n.get('label_create_repository_metadata') }}
</option>
<option <option
v-for="(collectionMetadatum, metadatumIndex) of collectionMetadata" v-for="(collectionMetadatum, metadatumIndex) of collectionMetadata"
:key="metadatumIndex" :key="metadatumIndex"

View File

@ -351,6 +351,20 @@
</a> </a>
</div> </div>
</div> </div>
<div
v-if="form.thumbnail_id"
class="thumbnail-alt-input">
<label class="label">{{ $i18n.get('label_thumbnail_alt') }}</label>
<help-button
:title="$i18n.get('label_thumbnail_alt')"
:message="$i18n.get('info_thumbnail_alt')"/>
<b-input
type="textarea"
lazy
:placeholder="$i18n.get('instruction_thumbnail_alt')"
:value="form.thumbnail_alt ? form.thumbnail_alt : ''"
@input="onUpdateThumbnailAlt" />
</div>
</div> </div>
<!-- Hook for extra Form options --> <!-- Hook for extra Form options -->
@ -485,6 +499,7 @@
:key="index" :key="index"
:item-metadatum="itemMetadatum" :item-metadatum="itemMetadatum"
:is-collapsed="metadataCollapses[index]" :is-collapsed="metadataCollapses[index]"
:is-last-metadatum="index > 2 && (index == metadatumList.length - 1)"
@changeCollapse="onChangeCollapse($event, index)"/> @changeCollapse="onChangeCollapse($event, index)"/>
<!-- Hook for extra Form options --> <!-- Hook for extra Form options -->
@ -516,25 +531,20 @@
</template> </template>
<div v-if="item != undefined && item.id != undefined"> <div v-if="item != undefined && item.id != undefined">
<br> <div class="attachments-list-heading">
<button <button
style="margin-left: calc(var(--tainacan-one-column) + 12px)" style="margin-left: calc(var(--tainacan-one-column) + 12px)"
type="button" type="button"
class="button is-secondary" class="button is-secondary"
@click.prevent="attachmentMediaFrame.openFrame($event)" @click.prevent="attachmentMediaFrame.openFrame($event)"
:disabled="isLoadingAttachments"> :disabled="isLoadingAttachments">
{{ $i18n.get("label_edit_attachments") }} {{ $i18n.get("label_edit_attachments") }}
</button> </button>
<!-- <p>
<button {{ $i18n.get("info_edit_attachments") }}
style="margin-left: calc(var(--tainacan-one-column) + 12px)" </p>
type="button" </div>
class="button is-secondary"
@click.prevent="openNewAttachmentsMediaFrame"
:disabled="isLoadingAttachments">
{{ $i18n.get("label_edit_attachments") + ' 2' }}
</button>
-->
<attachments-list <attachments-list
v-if="item != undefined && item.id != undefined" v-if="item != undefined && item.id != undefined"
:item="item" :item="item"
@ -819,7 +829,9 @@ export default {
status: '', status: '',
document: '', document: '',
document_type: '', document_type: '',
comment_status: '' comment_status: '',
thumbnail_id: '',
thumbnail_alt: ''
}, },
thumbnail: {}, thumbnail: {},
formErrorMessage: '', formErrorMessage: '',
@ -987,6 +999,7 @@ export default {
'sendItem', 'sendItem',
'updateItem', 'updateItem',
'updateItemDocument', 'updateItemDocument',
'updateThumbnailAlt',
'fetchItemMetadata', 'fetchItemMetadata',
'fetchItem', 'fetchItem',
'cleanItemMetadata', 'cleanItemMetadata',
@ -1053,6 +1066,8 @@ export default {
this.form.document = this.item.document; this.form.document = this.item.document;
this.form.document_type = this.item.document_type; this.form.document_type = this.item.document_type;
this.form.comment_status = this.item.comment_status; this.form.comment_status = this.item.comment_status;
this.form.thumbnail_id = this.item.thumbnail_id;
this.form.thumbnail_alt = this.item.thumbnail_alt;
this.isLoading = false; this.isLoading = false;
@ -1151,6 +1166,8 @@ export default {
this.form.document = this.item.document; this.form.document = this.item.document;
this.form.document_type = this.item.document_type; this.form.document_type = this.item.document_type;
this.form.comment_status = this.item.comment_status; this.form.comment_status = this.item.comment_status;
this.form.thumbnail_id = this.item.thumbnail_id;
this.form.thumbnail_alt = this.item.thumbnail_alt;
// If a parameter was passed with a suggestion of item title, also send a patch to item metadata // If a parameter was passed with a suggestion of item title, also send a patch to item metadata
if (this.$route.query.newitemtitle) { if (this.$route.query.newitemtitle) {
@ -1279,7 +1296,13 @@ export default {
}) })
.then(() => { .then(() => {
this.isLoadingAttachments = true; this.isLoadingAttachments = true;
this.fetchAttachments({ page: 1, attachmentsPerPage: 24, itemId: this.itemId, documentId: this.item.document }) this.fetchAttachments({
page: 1,
attachmentsPerPage: 24,
itemId: this.itemId,
documentId: this.form.document,
thumbnailId: this.form.thumbnail_id
})
.then(() => this.isLoadingAttachments = false) .then(() => this.isLoadingAttachments = false)
.catch(() => this.isLoadingAttachments = false); .catch(() => this.isLoadingAttachments = false);
}) })
@ -1296,9 +1319,10 @@ export default {
}); });
}, },
deleteThumbnail() { deleteThumbnail() {
this.updateThumbnail({itemId: this.itemId, thumbnailId: 0}) this.updateThumbnail({ itemId: this.itemId, thumbnailId: 0 })
.then(() => { .then(() => {
this.item.thumbnail = false; this.item.thumbnail = false;
this.item.thumbnail_id = null;
}) })
.catch((error) => { .catch((error) => {
this.$console.error(error); this.$console.error(error);
@ -1317,7 +1341,13 @@ export default {
.then(() => { .then(() => {
this.isLoadingAttachments = true; this.isLoadingAttachments = true;
this.fetchAttachments({ page: 1, attachmentsPerPage: 24, itemId: this.itemId, documentId: this.item.document }) this.fetchAttachments({
page: 1,
attachmentsPerPage: 24,
itemId: this.itemId,
documentId: this.form.document,
thumbnailId: this.form.thumbnail_id
})
.then(() => this.isLoadingAttachments = false) .then(() => this.isLoadingAttachments = false)
.catch(() => this.isLoadingAttachments = false); .catch(() => this.isLoadingAttachments = false);
}) })
@ -1343,6 +1373,7 @@ export default {
this.isLoading = true; this.isLoading = true;
this.form.document_type = 'attachment'; this.form.document_type = 'attachment';
this.form.document = file.id + ''; this.form.document = file.id + '';
this.updateItemDocument({ item_id: this.itemId, document: this.form.document, document_type: this.form.document_type }) this.updateItemDocument({ item_id: this.itemId, document: this.form.document, document_type: this.form.document_type })
.then((item) => { .then((item) => {
this.isLoading = false; this.isLoading = false;
@ -1371,29 +1402,42 @@ export default {
button_labels: { button_labels: {
frame_title: this.$i18n.get('instruction_select_item_thumbnail'), frame_title: this.$i18n.get('instruction_select_item_thumbnail'),
}, },
thumbnail: this.form.thumbnail_id,
relatedPostId: this.itemId, relatedPostId: this.itemId,
onSave: (media) => { onSave: (media) => {
this.updateThumbnail({itemId: this.itemId, thumbnailId: media.id}) this.updateThumbnail({ itemId: this.itemId, thumbnailId: media.id})
.then((res) => { .then((res) => {
this.item.thumbnail = res.thumbnail; this.item.thumbnail = res.thumbnail;
}) this.item.thumbnail_id = res.thumbnail_id;
.catch(error => this.$console.error(error)); this.item.thumbnail_alt = res.thumbnail_alt;
this.form.thumbnail = res.thumbnail;
this.form.thumbnail_id = res.thumbnail_id;
this.form.thumbnail_alt = res.thumbnail_alt;
})
.catch(error => this.$console.error(error));
} }
} }
); );
this.attachmentMediaFrame = new wpMediaFrames.attachmentControl( this.attachmentMediaFrame = new wpMediaFrames.attachmentControl(
'my-attachment-media-frame', { 'my-attachment-media-frame', {
button_labels: { button_labels: {
frame_title: this.$i18n.get('instruction_select_files_to_attach_to_item'), frame_title: this.$i18n.get('instruction_select_files_to_attach_to_item'),
frame_button: this.$i18n.get('label_attach_to_item'), frame_button: this.$i18n.get('label_attach_to_item'),
}, },
nonce: this.item.nonces ? this.item.nonces['update-post_' + this.item.id] : null,
relatedPostId: this.itemId, relatedPostId: this.itemId,
document: this.item.document, document: this.form.document_type == 'attachment' ? this.form.document : null,
thumbnailId: this.form.thumbnail_id ? this.form.thumbnail_id : null,
onSave: () => { onSave: () => {
// Fetch current existing attachments // Fetch current existing attachments
this.isLoadingAttachments = true; this.isLoadingAttachments = true;
this.fetchAttachments({ page: 1, attachmentsPerPage: 24, itemId: this.itemId, documentId: this.item.document }) this.fetchAttachments({
page: 1,
attachmentsPerPage: 24,
itemId: this.itemId,
documentId: this.form.document,
thumbnailId: this.form.thumbnail_id
})
.then(() => this.isLoadingAttachments = false) .then(() => this.isLoadingAttachments = false)
.catch(() => this.isLoadingAttachments = false); .catch(() => this.isLoadingAttachments = false);
} }
@ -1401,27 +1445,15 @@ export default {
); );
}, },
// openNewAttachmentsMediaFrame() { onUpdateThumbnailAlt(updatedThumbnailAlt) {
// const newAttachmentMediaFrame = new wpMediaFrames.customAttachmentsControl({
// existingAttachments: this.getAttachments().map((attachment) => attachment.id),
// button_labels: {
// frame_title: this.$i18n.get('instruction_select_files_to_attach_to_item'),
// frame_button_new: this.$i18n.get('label_attach_to_item'),
// frame_button_update: this.$i18n.get('finish')
// },
// relatedPostId: this.itemId,
// onSelect: (selected) => {
// console.log(selected);
// // Fetch current existing attachments
// this.isLoadingAttachments = true;
// this.fetchAttachments({ page: 1, attachmentsPerPage: 24, itemId: this.itemId, documentId: this.item.document })
// .then(() => this.isLoadingAttachments = false)
// .catch(() => this.isLoadingAttachments = false);
// } this.updateThumbnailAlt({ thumbnailId: this.item.thumbnail_id, thumbnailAlt: updatedThumbnailAlt })
// }); .then((res) => {
// setTimeout(() => newAttachmentMediaFrame.openModal(), 1000); this.form.thumbnail_id = res.thumbnail_id;
// }, this.form.thumbnail_alt = res.thumbnail_alt;
})
.catch(error => this.$console.error(error));
},
toggleCollapseAll() { toggleCollapseAll() {
this.collapseAll = !this.collapseAll; this.collapseAll = !this.collapseAll;
@ -1494,6 +1526,8 @@ export default {
this.form.document = this.item.document; this.form.document = this.item.document;
this.form.document_type = this.item.document_type; this.form.document_type = this.item.document_type;
this.form.comment_status = this.item.comment_status; this.form.comment_status = this.item.comment_status;
this.form.thumbnail_id = this.item.thumbnail_id;
this.form.thumbnail_alt = this.item.thumbnail_alt;
if (this.form.document_type != undefined && this.form.document_type == 'url') if (this.form.document_type != undefined && this.form.document_type == 'url')
this.urlLink = this.form.document; this.urlLink = this.form.document;
@ -1507,7 +1541,12 @@ export default {
this.setLastUpdated(this.item.modification_date); this.setLastUpdated(this.item.modification_date);
// Fetch current existing attachments now that item.document // Fetch current existing attachments now that item.document
this.fetchAttachments({ page: 1, attachmentsPerPage: 24, itemId: this.itemId, documentId: this.item.document }); this.fetchAttachments({
page: 1,
attachmentsPerPage: 24,
itemId: this.itemId,
documentId: this.form.document,
thumbnailId: this.form.thumbnail_id });
// Initializes Media Frames now that itemId and item.document exists // Initializes Media Frames now that itemId and item.document exists
this.initializeMediaFrames(); this.initializeMediaFrames();
@ -1571,7 +1610,7 @@ export default {
} }
.status-tag { .status-tag {
color: var(--tainacan-white); color: var(--tainacan-white);
background: var(--tainacan-turquoise5); background: var(--tainacan-secondary);
padding: 0.15em 0.5em; padding: 0.15em 0.5em;
font-size: 0.75em; font-size: 0.75em;
margin: 0 1em 0 0; margin: 0 1em 0 0;
@ -1637,7 +1676,7 @@ export default {
label { label {
font-size: 1em !important; font-size: 1em !important;
font-weight: 500 !important; font-weight: 500 !important;
color: var(--tainacan-gray5) !important; color: var(--tainacan-label-color) !important;
line-height: 1.2em; line-height: 1.2em;
} }
} }
@ -1669,7 +1708,7 @@ export default {
color: var(--tainacan-secondary); color: var(--tainacan-secondary);
margin-bottom: 6px; margin-bottom: 6px;
&:hover { &:hover {
background-color: var(--tainacan-turquoise2); background-color: var(--tainacan-primary);
cursor: pointer; cursor: pointer;
} }
} }
@ -1699,6 +1738,9 @@ export default {
} }
.document-field { .document-field {
/deep/ iframe {
max-width: 100%;
}
.document-buttons-row { .document-buttons-row {
text-align: right; text-align: right;
top: -21px; top: -21px;
@ -1757,6 +1799,27 @@ export default {
left: 90px; left: 90px;
bottom: 1.0em; bottom: 1.0em;
} }
.thumbnail-alt-input {
.label {
font-size: 0.875em;
font-weight: 500;
margin-left: 15px;
margin-bottom: 0;
margin-top: 0.15em;
}
}
}
.attachments-list-heading {
display: flex;
align-items: center;
margin-top: 24px;
margin-bottom: 24px;
button {
margin-right: 12px;
}
} }
.footer { .footer {
@ -1808,7 +1871,7 @@ export default {
.sequence-progress { .sequence-progress {
height: 5px; height: 5px;
background: var(--tainacan-turquoise5); background: var(--tainacan-secondary);
width: 0%; width: 0%;
position: absolute; position: absolute;
top: 0; top: 0;
@ -1826,7 +1889,7 @@ export default {
.sequence-button { .sequence-button {
background-color: transparent; background-color: transparent;
color: var(--tainacan-turquoise5); color: var(--tainacan-secondary);
border: none; border: none;
.icon { .icon {
@ -1837,7 +1900,7 @@ export default {
&:focus, &:focus,
&:active { &:active {
background-color: transparent !important; background-color: transparent !important;
color: var(--tainacan-turquoise5) !important; color: var(--tainacan-secondary) !important;
} }
} }
} }

View File

@ -209,6 +209,24 @@
:message="$i18n.getHelperMessage('metadata', 'collection_key')"/> :message="$i18n.getHelperMessage('metadata', 'collection_key')"/>
</b-checkbox> </b-checkbox>
</b-field> </b-field>
<b-field
v-if="!isRepositoryLevel && isOnModal"
>
<b-checkbox
class="is-inline-block"
v-model="editForm.repository_level"
@input="clearErrors('repository_level')"
name="repository_level"
true-value="yes"
false-value="no"
>
{{ $i18n.get('label_repository_metadata') }}
<help-button
:title="$i18n.getHelperTitle('metadata', 'repository_level')"
:message="$i18n.getHelperMessage('metadata', 'repository_level')"/>
</b-checkbox>
</b-field>
</b-field> </b-field>
<component <component
@ -282,13 +300,10 @@
} }
}, },
created() { created() {
this.editForm = this.editedMetadatum; this.editForm = this.editedMetadatum;
this.formErrors = this.editForm.formErrors != undefined ? this.editForm.formErrors : {}; this.formErrors = this.editForm.formErrors != undefined ? this.editForm.formErrors : {};
this.formErrorMessage = this.editForm.formErrors != undefined ? this.editForm.formErrorMessage : ''; this.formErrorMessage = this.editForm.formErrors != undefined ? this.editForm.formErrorMessage : '';
this.oldForm = JSON.parse(JSON.stringify(this.originalMetadatum)); this.oldForm = JSON.parse(JSON.stringify(this.originalMetadatum));
}, },
mounted() { mounted() {
// Fills hook forms with it's real values // Fills hook forms with it's real values
@ -313,8 +328,11 @@
'updateMetadatum' 'updateMetadatum'
]), ]),
saveEdition(metadatum) { saveEdition(metadatum) {
if ((metadatum.metadata_type_object && metadatum.metadata_type_object.form_component) || metadatum.edit_form == '') { if ((metadatum.metadata_type_object && metadatum.metadata_type_object.form_component) || metadatum.edit_form == '') {
let repository = this.editForm.repository_level;
if (repository && repository === 'yes') {
this.isRepositoryLevel = true;
}
this.fillExtraFormData(this.editForm); this.fillExtraFormData(this.editForm);
this.isUpdating = true; this.isUpdating = true;

View File

@ -21,7 +21,7 @@
:addons="false" :addons="false"
:label="$i18n.get('label_name')" :label="$i18n.get('label_name')"
:type="editFormErrors['name'] != undefined ? 'is-danger' : ''" :type="editFormErrors['name'] != undefined ? 'is-danger' : ''"
:message="editFormErrors['name'] != undefined ? editFormErrors['name'] : ''"> :message="isUpdatingSlug ? $i18n.get('info_validating_slug') : (editFormErrors['name'] != undefined ? editFormErrors['name'] : '')">
<span class="required-metadatum-asterisk">*</span> <span class="required-metadatum-asterisk">*</span>
<help-button <help-button
:title="$i18n.getHelperTitle('taxonomies', 'name')" :title="$i18n.getHelperTitle('taxonomies', 'name')"
@ -30,7 +30,9 @@
id="tainacan-text-name" id="tainacan-text-name"
v-model="form.name" v-model="form.name"
@focus="clearErrors('name')" @focus="clearErrors('name')"
@blur="updateSlug()"/> @blur="updateSlug()"
:disabled="isUpdatingSlug"
:loading="isUpdatingSlug"/>
</b-field> </b-field>
<!-- Hook for extra Form options --> <!-- Hook for extra Form options -->

View File

@ -575,6 +575,7 @@
z-index: 99; z-index: 99;
text-align: center; text-align: center;
color: var(--tainacan-info-color); color: var(--tainacan-info-color);
background-color: transparent;
} }
#button-delete-header, #button-delete-header,
#button-edit-header { #button-edit-header {

View File

@ -102,7 +102,7 @@
if (this.getOptionsValuesCancel != undefined) if (this.getOptionsValuesCancel != undefined)
this.getOptionsValuesCancel.cancel('Facet search Canceled.'); this.getOptionsValuesCancel.cancel('Facet search Canceled.');
if ( this.metadatumType === 'Tainacan\\Metadata_Types\\Relationship' ) if ( this.metadatumType === 'Tainacan\\Metadata_Types\\Relationship' || this.metadatumType === 'Tainacan\\Metadata_Types\\Control' )
promise = this.getValuesRelationship( null, this.isRepositoryLevel, [], 0, this.filter.max_options, false, '1'); promise = this.getValuesRelationship( null, this.isRepositoryLevel, [], 0, this.filter.max_options, false, '1');
else else
promise = this.getValuesPlainText( this.metadatumId, null, this.isRepositoryLevel, [], 0, this.filter.max_options, false, '1' ); promise = this.getValuesPlainText( this.metadatumId, null, this.isRepositoryLevel, [], 0, this.filter.max_options, false, '1' );
@ -133,6 +133,7 @@
}); });
}, },
updateSelectedValues() { updateSelectedValues() {
if ( !this.query || !this.query.metaquery || !Array.isArray( this.query.metaquery ) ) if ( !this.query || !this.query.metaquery || !Array.isArray( this.query.metaquery ) )
return false; return false;

View File

@ -10,7 +10,7 @@ class Checkbox extends Filter_Type {
function __construct(){ function __construct(){
$this->set_name( __('Checkbox List', 'tainacan') ); $this->set_name( __('Checkbox List', 'tainacan') );
$this->set_supported_types(['string','long_string','item']); $this->set_supported_types(['string','long_string','item', 'control']);
$this->set_component('tainacan-filter-checkbox'); $this->set_component('tainacan-filter-checkbox');
$this->set_preview_template(' $this->set_preview_template('
<div> <div>

View File

@ -132,6 +132,7 @@
cursor: pointer; cursor: pointer;
outline: none; outline: none;
padding: 0 !important; padding: 0 !important;
margin: 0;
} }
} }

View File

@ -157,10 +157,10 @@
if (this.isRepositoryLevel) if (this.isRepositoryLevel)
route = `/facets/${this.metadatumId}?getSelected=1&order=asc&parent=0&number=${this.filter.max_options}&` + qs.stringify(query_items); route = `/facets/${this.metadatumId}?getSelected=1&order=asc&parent=0&number=${this.filter.max_options}&` + qs.stringify(query_items);
else { else {
if ((this.collectionId == 'default' || this.filter.inherited) && this.currentCollectionId) if (this.filter.collection_id == 'default' && this.currentCollectionId)
route = `/collection/${this.currentCollectionId}/facets/${this.metadatumId}?getSelected=1&order=asc&parent=0&number=${this.filter.max_options}&` + qs.stringify(query_items); route = `/collection/${this.currentCollectionId}/facets/${this.metadatumId}?getSelected=1&order=asc&parent=0&number=${this.filter.max_options}&` + qs.stringify(query_items);
else else
route = `/collection/${this.collectionId}/facets/${this.metadatumId}?getSelected=1&order=asc&parent=0&number=${this.filter.max_options}&` + qs.stringify(query_items); route = `/collection/${this.filter.collection_id}/facets/${this.metadatumId}?getSelected=1&order=asc&parent=0&number=${this.filter.max_options}&` + qs.stringify(query_items);
} }
this.options = []; this.options = [];

View File

@ -117,10 +117,10 @@
if (this.isRepositoryLevel) if (this.isRepositoryLevel)
endpoint += '/facets/' + this.metadatumId; endpoint += '/facets/' + this.metadatumId;
else { else {
if (this.collectionId == 'default' && this.currentCollection) if (this.filter.collection_id == 'default' && this.currentCollectionId)
endpoint += '/collection/' + this.currentCollectionId +'/facets/' + this.metadatumId; endpoint += '/collection/' + this.currentCollectionId +'/facets/' + this.metadatumId;
else else
endpoint += '/collection/' + this.collectionId +'/facets/' + this.metadatumId; endpoint += '/collection/' + this.filter.collection_id + '/facets/' + this.metadatumId;
} }
endpoint += '?order=asc&' + qs.stringify(query_items); endpoint += '?order=asc&' + qs.stringify(query_items);

View File

@ -165,7 +165,8 @@
page: this.attachmentsPage, page: this.attachmentsPage,
attachmentsPerPage: this.attachmentsPerPage, attachmentsPerPage: this.attachmentsPerPage,
itemId: this.item.id, itemId: this.item.id,
documentId: this.item.document documentId: this.item.document,
thumbnailId: this.item.thumbnail_id
}) })
.then((response) => { .then((response) => {
this.isLoading = false; this.isLoading = false;
@ -189,7 +190,6 @@
.uploaded-files { .uploaded-files {
display: block; display: block;
text-align: center;
.file-item-container { .file-item-container {
display: inline-block; display: inline-block;

View File

@ -177,19 +177,19 @@
@click.left="onClickCollection($event, collection.id, index)" @click.left="onClickCollection($event, collection.id, index)"
@click.right="onRightClickCollection($event, collection.id, index)" @click.right="onRightClickCollection($event, collection.id, index)"
:label="$i18n.get('label_description')" :label="$i18n.get('label_description')"
:aria-label="$i18n.get('label_description') + ': ' + (collection.description != undefined && collection.description != '') ? collection.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`"> :aria-label="$i18n.get('label_description') + ': ' + (collection.description != undefined && collection.description != '') ? collection.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`">
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
}, },
content: (collection.description != undefined && collection.description != '') ? collection.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`, content: (collection.description != undefined && collection.description != '') ? collection.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`,
autoHide: false, autoHide: false,
classes: ['tooltip', 'repository-tooltip'], classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-html="(collection.description != undefined && collection.description != '') ? collection.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`"/> v-html="(collection.description != undefined && collection.description != '') ? collection.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`"/>
</td> </td>
<!-- Creation Date --> <!-- Creation Date -->
<td <td

View File

@ -23,7 +23,6 @@
</b-checkbox> </b-checkbox>
</span> </span>
</div> </div>
<pre>{{ firstSelectedIndex }}</pre>
<div class="field"> <div class="field">
<b-dropdown <b-dropdown
:mobile-modal="true" :mobile-modal="true"
@ -63,7 +62,7 @@
</b-dropdown-item> </b-dropdown-item>
<b-dropdown-item <b-dropdown-item
v-if="collectionId && isOnTrash" v-if="collectionId && isOnTrash"
@click="untrashSelectedItems()" @click="untrashSelectedItems();"
aria-role="listitem"> aria-role="listitem">
{{ $i18n.get('label_untrash_selected_items') }} {{ $i18n.get('label_untrash_selected_items') }}
</b-dropdown-item> </b-dropdown-item>
@ -135,6 +134,7 @@
<div <div
role="listitem" role="listitem"
:key="index" :key="index"
:data-tainacan-item-id="item.id"
v-for="(item, index) of items" v-for="(item, index) of items"
:class="{ 'selected-grid-item': getSelectedItemChecked(item.id) == true }" :class="{ 'selected-grid-item': getSelectedItemChecked(item.id) == true }"
class="tainacan-grid-item"> class="tainacan-grid-item">
@ -179,7 +179,7 @@
class="grid-item-thumbnail" class="grid-item-thumbnail"
:style="{ backgroundImage: 'url(' + (item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)) + ')' }"> :style="{ backgroundImage: 'url(' + (item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)) + ')' }">
<img <img
:alt="$i18n.get('label_thumbnail')" :alt="item.thumbnail_alt ? item.thumbnail_alt : $i18n.get('label_thumbnail')"
:src="item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)"> :src="item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)">
</a> </a>
@ -249,6 +249,7 @@
<div <div
role="listitem" role="listitem"
:key="index" :key="index"
:data-tainacan-item-id="item.id"
v-for="(item, index) of items" v-for="(item, index) of items"
:class="{ :class="{
'selected-masonry-item': getSelectedItemChecked(item.id) == true, 'selected-masonry-item': getSelectedItemChecked(item.id) == true,
@ -292,7 +293,7 @@
class="tainacan-masonry-item-thumbnail" class="tainacan-masonry-item-thumbnail"
:style="{ backgroundImage: 'url(' + (item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)) + ')' }"> :style="{ backgroundImage: 'url(' + (item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)) + ')' }">
<img <img
:alt="$i18n.get('label_thumbnail')" :alt="item.thumbnail_alt ? item.thumbnail_alt : $i18n.get('label_thumbnail')"
:src="item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)"> :src="item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)">
</div> </div>
@ -359,6 +360,7 @@
<div <div
role="listitem" role="listitem"
:key="index" :key="index"
:data-tainacan-item-id="item.id"
v-for="(item, index) of items" v-for="(item, index) of items"
:class="{ 'selected-card': getSelectedItemChecked(item.id) == true }" :class="{ 'selected-card': getSelectedItemChecked(item.id) == true }"
class="tainacan-card"> class="tainacan-card">
@ -460,7 +462,7 @@
:style="{ backgroundImage: 'url(' + (item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)) + ')' }" :style="{ backgroundImage: 'url(' + (item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)) + ')' }"
class="card-thumbnail"> class="card-thumbnail">
<img <img
:alt="$i18n.get('label_thumbnail')" :alt="item.thumbnail_alt ? item.thumbnail_alt : $i18n.get('label_thumbnail')"
v-if="item.thumbnail != undefined" v-if="item.thumbnail != undefined"
:src="item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)"> :src="item['thumbnail']['tainacan-medium'] ? item['thumbnail']['tainacan-medium'][0] : (item['thumbnail'].medium ? item['thumbnail'].medium[0] : thumbPlaceholderPath)">
</div> </div>
@ -473,13 +475,13 @@
show: 500, show: 500,
hide: 300, hide: 300,
}, },
content: item.description != undefined && item.description != '' ? item.description : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`, content: item.description != undefined && item.description != '' ? item.description : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`,
html: true, html: true,
autoHide: false, autoHide: false,
placement: 'auto-start' placement: 'auto-start'
}" }"
class="metadata-description" class="metadata-description"
v-html="item.description != undefined && item.description != '' ? getLimitedDescription(item.description) : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`" /> v-html="item.description != undefined && item.description != '' ? getLimitedDescription(item.description) : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`" />
<!-- Author--> <!-- Author-->
<p <p
v-tooltip="{ v-tooltip="{
@ -526,6 +528,7 @@
<div <div
role="listitem" role="listitem"
:key="index" :key="index"
:data-tainacan-item-id="item.id"
v-for="(item, index) of items" v-for="(item, index) of items"
:class="{ 'selected-record': getSelectedItemChecked(item.id) == true }" :class="{ 'selected-record': getSelectedItemChecked(item.id) == true }"
class="tainacan-record"> class="tainacan-record">
@ -651,7 +654,7 @@
<div class="list-metadata media-body"> <div class="list-metadata media-body">
<div class="tainacan-record-thumbnail"> <div class="tainacan-record-thumbnail">
<img <img
:alt="$i18n.get('label_thumbnail')" :alt="item.thumbnail_alt ? item.thumbnail_alt : $i18n.get('label_thumbnail')"
v-if="item.thumbnail != undefined" v-if="item.thumbnail != undefined"
:src="item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)"> :src="item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)">
</div> </div>
@ -736,6 +739,7 @@
'highlighted-item': highlightedItem == item.id 'highlighted-item': highlightedItem == item.id
}" }"
:key="index" :key="index"
:data-tainacan-item-id="item.id"
v-for="(item, index) of items"> v-for="(item, index) of items">
<!-- Checking list --> <!-- Checking list -->
<!-- TODO: Remove v-if="collectionId" from this element when the bulk edit in repository is done --> <!-- TODO: Remove v-if="collectionId" from this element when the bulk edit in repository is done -->
@ -777,7 +781,7 @@
show: 500, show: 500,
hide: 300, hide: 300,
}, },
content: item.title != undefined && item.title != '' ? item.title : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`, content: item.title != undefined && item.title != '' ? item.title : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`,
html: true, html: true,
autoHide: false, autoHide: false,
placement: 'auto-start' placement: 'auto-start'
@ -785,14 +789,14 @@
v-if="collectionId == undefined && v-if="collectionId == undefined &&
column.metadata_type_object != undefined && column.metadata_type_object != undefined &&
column.metadata_type_object.related_mapped_prop == 'title'" column.metadata_type_object.related_mapped_prop == 'title'"
v-html="`<span class='sr-only'>` + column.name + ': </span>' + ((item.title != undefined && item.title != '') ? item.title : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`)"/> v-html="`<span class='sr-only'>` + column.name + ': </span>' + ((item.title != undefined && item.title != '') ? item.title : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`)"/>
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
}, },
content: item.description != undefined && item.description != '' ? item.description : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`, content: item.description != undefined && item.description != '' ? item.description : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`,
html: true, html: true,
autoHide: false, autoHide: false,
placement: 'auto-start' placement: 'auto-start'
@ -800,7 +804,7 @@
v-if="collectionId == undefined && v-if="collectionId == undefined &&
column.metadata_type_object != undefined && column.metadata_type_object != undefined &&
column.metadata_type_object.related_mapped_prop == 'description'" column.metadata_type_object.related_mapped_prop == 'description'"
v-html="`<span class='sr-only'>` + column.name + ': </span>' + ((item.description != undefined && item.description) != '' ? item.description : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`)"/> v-html="`<span class='sr-only'>` + column.name + ': </span>' + ((item.description != undefined && item.description) != '' ? item.description : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`)"/>
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
@ -808,7 +812,7 @@
hide: 300, hide: 300,
}, },
classes: [ column.metadata_type_object != undefined && column.metadata_type_object.component == 'tainacan-textarea' ? 'metadata-type-textarea' : '' ], classes: [ column.metadata_type_object != undefined && column.metadata_type_object.component == 'tainacan-textarea' ? 'metadata-type-textarea' : '' ],
content: renderMetadata(item.metadata, column) != '' ? renderMetadata(item.metadata, column) : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`, content: renderMetadata(item.metadata, column) != '' ? renderMetadata(item.metadata, column) : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`,
html: true, html: true,
autoHide: false, autoHide: false,
placement: 'auto-start' placement: 'auto-start'
@ -820,11 +824,11 @@
column.metadatum !== 'row_author' && column.metadatum !== 'row_author' &&
column.metadatum !== 'row_title' && column.metadatum !== 'row_title' &&
column.metadatum !== 'row_description'" column.metadatum !== 'row_description'"
v-html="renderMetadata(item.metadata, column) != '' ? renderMetadata(item.metadata, column) : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`"/> v-html="renderMetadata(item.metadata, column) != '' ? renderMetadata(item.metadata, column) : `<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`"/>
<span v-if="column.metadatum == 'row_thumbnail'"> <span v-if="column.metadatum == 'row_thumbnail'">
<img <img
:alt="$i18n.get('label_thumbnail')" :alt="item.thumbnail_alt ? item.thumbnail_alt : $i18n.get('label_thumbnail')"
class="table-thumb" class="table-thumb"
:src="item['thumbnail']['tainacan-small'] ? item['thumbnail']['tainacan-small'][0] : (item['thumbnail'].thumbnail ? item['thumbnail'].thumbnail[0] : thumbPlaceholderPath)"> :src="item['thumbnail']['tainacan-small'] ? item['thumbnail']['tainacan-small'][0] : (item['thumbnail'].thumbnail ? item['thumbnail'].thumbnail[0] : thumbPlaceholderPath)">
</span> </span>
@ -926,6 +930,7 @@
role="listitem" role="listitem"
:href="item.url" :href="item.url"
:key="index" :key="index"
:data-tainacan-item-id="item.id"
v-for="(item, index) of items" v-for="(item, index) of items"
class="tainacan-list" class="tainacan-list"
:class="{ 'selected-list-item': getSelectedItemChecked(item.id) == true }"> :class="{ 'selected-list-item': getSelectedItemChecked(item.id) == true }">
@ -964,7 +969,7 @@
v-for="(column, metadatumIndex) in displayedMetadata" v-for="(column, metadatumIndex) in displayedMetadata"
:key="metadatumIndex" :key="metadatumIndex"
v-if="column.display && column.metadata_type_object != undefined && (column.metadata_type_object.related_mapped_prop == 'title')" v-if="column.display && column.metadata_type_object != undefined && (column.metadata_type_object.related_mapped_prop == 'title')"
v-html="item.metadata != undefined && collectionId ? renderMetadata(item.metadata, column) : (item.title ? item.title :`<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_informed') + `</span>`)" /> v-html="item.metadata != undefined && collectionId ? renderMetadata(item.metadata, column) : (item.title ? item.title :`<span class='has-text-gray3 is-italic'>` + $i18n.get('label_value_not_provided') + `</span>`)" />
</div> </div>
<!-- Actions --> <!-- Actions -->
@ -1029,7 +1034,7 @@
class="tainacan-list-thumbnail" class="tainacan-list-thumbnail"
v-if="item.thumbnail != undefined"> v-if="item.thumbnail != undefined">
<img <img
:alt="$i18n.get('label_thumbnail')" :alt="item.thumbnail_alt ? item.thumbnail_alt : $i18n.get('label_thumbnail')"
:src="item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)"> :src="item['thumbnail']['tainacan-medium-full'] ? item['thumbnail']['tainacan-medium-full'][0] : (item['thumbnail'].medium_large ? item['thumbnail'].medium_large[0] : thumbPlaceholderPath)">
</div> </div>
<div class="list-metadata media-body"> <div class="list-metadata media-body">
@ -1309,6 +1314,7 @@ export default {
groupId: groupId groupId: groupId
}).then(() => { }).then(() => {
this.$eventBusSearch.loadItems(); this.$eventBusSearch.loadItems();
this.$root.$emit('openProcessesPopup');
}); });
}); });
} }
@ -1340,6 +1346,7 @@ export default {
groupId: groupId groupId: groupId
}).then(() => { }).then(() => {
this.$eventBusSearch.loadItems(); this.$eventBusSearch.loadItems();
this.$root.$emit('openProcessesPopup');
}); });
} else { } else {
this.trashItemsInBulk({ this.trashItemsInBulk({
@ -1347,6 +1354,7 @@ export default {
groupId: groupId groupId: groupId
}).then(() => { }).then(() => {
this.$eventBusSearch.loadItems(); this.$eventBusSearch.loadItems();
this.$root.$emit('openProcessesPopup');
}); });
} }
}); });

View File

@ -1,76 +1,81 @@
<template> <template>
<div>
<div <div
v-if="processes.length > 0 && !isLoading" v-if="processes.length > 0 && !isLoading"
class="table-container"> class="table-container">
<!-- <!--
<div class="selection-control"> <div class="selection-control">
<div class="field select-all is-pulled-left"> <div class="field select-all is-pulled-left">
<span> <span>
<b-checkbox <b-checkbox
@click.native="selectAllOnPage()" @click.native="selectAllOnPage()"
:value="allOnPageSelected">{{ $i18n.get('label_select_all_processes_page') }}</b-checkbox> :value="allOnPageSelected">{{ $i18n.get('label_select_all_processes_page') }}</b-checkbox>
</span> </span>
</div> </div>
<div class="field is-pulled-right"> <div class="field is-pulled-right">
<b-dropdown <b-dropdown
position="is-bottom-left" position="is-bottom-left"
:disabled="!isSelecting" :disabled="!isSelecting"
id="bulk-actions-dropdown" id="bulk-actions-dropdown"
trap-focus> trap-focus>
<button <button
class="button is-white" class="button is-white"
slot="trigger"> slot="trigger">
<span>{{ $i18n.get('label_bulk_actions') }}</span> <span>{{ $i18n.get('label_bulk_actions') }}</span>
<span class="icon"> <span class="icon">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-arrowdown"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-arrowdown"/>
</span> </span>
</button> </button>
<b-dropdown-item <b-dropdown-item
id="item-delete-selected-items" id="item-delete-selected-items"
@click="deleteSelected()"> @click="deleteSelected()">
{{ $i18n.get('label_delete_selected_processes') }} {{ $i18n.get('label_delete_selected_processes') }}
</b-dropdown-item> </b-dropdown-item>
<b-dropdown-item disabled>{{ $i18n.get('label_edit_selected_processes') + ' (Not ready)' }} <b-dropdown-item disabled>{{ $i18n.get('label_edit_selected_processes') + ' (Not ready)' }}
</b-dropdown-item> </b-dropdown-item>
</b-dropdown> </b-dropdown>
</div> </div>
</div> </div>
--> -->
<div class="processes-list"> <div class="processes-list">
<div <div
:class="{ :class="{
'opened-process': collapses[index], 'opened-process': collapses[index],
'selected-row': selected[index], 'selected-row': selected[index],
'highlighted-process': highlightedProcess == bgProcess.ID 'highlighted-process': highlightedProcess == bgProcess.ID
}" }"
class="processes-list-item" class="processes-list-item"
:key="index" :key="index"
v-for="(bgProcess, index) of processes"> v-for="(bgProcess, index) of processes">
<div <div
@click="$set(collapses, index, !collapses[index])" @click="$set(collapses, index, !collapses[index])"
class="process-handler"> class="process-handler">
<!-- Collapse --> <!-- Collapse -->
<span class="icon"> <span class="icon">
<i <i
:class="{ 'tainacan-icon-arrowdown' : collapses[index], 'tainacan-icon-arrowright' : !collapses[index] }" :class="{ 'tainacan-icon-arrowdown' : collapses[index], 'tainacan-icon-arrowright' : !collapses[index] }"
class="tainacan-icon tainacan-icon-1-25em has-text-blue4"/> class="tainacan-icon tainacan-icon-1-25em has-text-blue4" />
</span> </span>
<!-- Checking list --> <!-- Checking list -->
<!-- <span <!-- <span
:class="{ 'is-selecting': isSelecting }" :class="{ 'is-selecting': isSelecting }"
class="checkbox-cell"> class="checkbox-cell">
<b-checkbox <b-checkbox
v-model="selected[index]"/> v-model="selected[index]"/>
</span> --> </span> -->
<!-- Name --> <!-- Name -->
<span <span
class="process-title" class="process-title"
:label="$i18n.get('label_name')" :label="$i18n.get('label_name')"
:aria-label="$i18n.get('label_name') + ': ' + bgProcess.name"> :aria-label="$i18n.get('label_name') + ': ' + bgProcess.name">
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -81,13 +86,13 @@
}"> }">
{{ bgProcess.name ? bgProcess.name : $i18n.get('label_unamed_process') }}</p> {{ bgProcess.name ? bgProcess.name : $i18n.get('label_unamed_process') }}</p>
</span> </span>
<!-- Progress --> <!-- Progress -->
<span <span
class="process-progress" class="process-progress"
:label="$i18n.get('label_progress')" :label="$i18n.get('label_progress')"
:aria-label="$i18n.get('label_progress') + ': ' + bgProcess.progress_label ? bgProcess.progress_label + (bgProcess.progress_value ? ' (' + bgProcess.progress_value + '%)' : '') : $i18n.get('label_no_details_of_process')"> :aria-label="$i18n.get('label_progress') + ': ' + bgProcess.progress_label ? bgProcess.progress_label + (bgProcess.progress_value ? ' (' + bgProcess.progress_value + '%)' : '') : $i18n.get('label_no_details_of_process')">
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -97,16 +102,16 @@
placement: 'auto-start' placement: 'auto-start'
}"> }">
<span :class="{'occluding-content': bgProcess.progress_value }"><span class="has-text-weight-bold">{{ $i18n.get('label_progress') + " " }}</span>{{ bgProcess.progress_label ? bgProcess.progress_label : $i18n.get('label_no_details_of_process') }}</span> <span :class="{'occluding-content': bgProcess.progress_value }"><span class="has-text-weight-bold">{{ $i18n.get('label_progress') + " " }}</span>{{ bgProcess.progress_label ? bgProcess.progress_label : $i18n.get('label_no_details_of_process') }}</span>
<span>{{ bgProcess.progress_value &lt;&equals; 0 ? `(0%)` : ' ('+ bgProcess.progress_value +'%)' }}</span> <span>{{ bgProcess.progress_value == 0 ? `(0%)` : ' ('+ bgProcess.progress_value +'%)' }}</span>
</p> </p>
</span> </span>
<!-- Queued on --> <!-- Queued on -->
<span <span
class="process-queued-on" class="process-queued-on"
:label="$i18n.get('label_queued_on')" :label="$i18n.get('label_queued_on')"
:aria-label="$i18n.get('label_queued_on') + ' ' + getDate(bgProcess.queued_on)"> :aria-label="$i18n.get('label_queued_on') + ' ' + getDate(bgProcess.queued_on)">
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -118,18 +123,18 @@
<span class="has-text-weight-bold">{{ $i18n.get('label_queued_on') + " " }}</span>{{ getDate(bgProcess.queued_on) }}</p> <span class="has-text-weight-bold">{{ $i18n.get('label_queued_on') + " " }}</span>{{ getDate(bgProcess.queued_on) }}</p>
</span> </span>
<!-- Status--> <!-- Status-->
<span <span
class="actions-cell" class="actions-cell"
:label="$i18n.get('label_status')"> :label="$i18n.get('label_status')">
<div class="actions-container"> <div class="actions-container">
<span <span
v-if="bgProcess.status == 'running'" v-if="bgProcess.status == 'running'"
class="icon has-text-success loading-icon"> class="icon has-text-success loading-icon">
<div class="control has-icons-right is-loading is-clearfix" /> <div class="control has-icons-right is-loading is-clearfix" />
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -138,13 +143,13 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if=" bgProcess.status === 'running' " v-if=" bgProcess.status === 'running' "
class="icon has-text-gray action-icon" class="icon has-text-gray action-icon"
@click.prevent.stop="pauseProcess(index)"> @click.prevent.stop="pauseProcess(index)">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-stop"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-stop"/>
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -153,12 +158,12 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if=" ( bgProcess.status === 'finished' && !bgProcess.error_log ) || bgProcess.status === null" v-if=" ( bgProcess.status === 'finished' && !bgProcess.error_log ) || bgProcess.status === null"
class="icon has-text-success"> class="icon has-text-success">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-approvedcircle"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-approvedcircle"/>
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -167,15 +172,15 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if=" bgProcess.status === 'finished-errors' || ( bgProcess.done > 0 && bgProcess.error_log && bgProcess.status === 'finished' ) " v-if=" bgProcess.status === 'finished-errors' || ( bgProcess.done > 0 && bgProcess.error_log && bgProcess.status === 'finished' ) "
class="icon has-text-success"> class="icon has-text-success">
<i <i
style="margin-right: -5px;" style="margin-right: -5px;"
class="tainacan-icon tainacan-icon-1-25em tainacan-icon-alert has-text-yellow2"/> class="tainacan-icon tainacan-icon-1-25em tainacan-icon-alert has-text-yellow2"/>
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-approvedcircle"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-approvedcircle"/>
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -184,12 +189,12 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if=" bgProcess.status === 'cancelled' " v-if=" bgProcess.status === 'cancelled' "
class="icon has-text-success"> class="icon has-text-success">
<i class="tainacan-icon has-text-danger tainacan-icon-1-25em tainacan-icon-repprovedcircle"/> <i class="tainacan-icon has-text-danger tainacan-icon-1-25em tainacan-icon-repprovedcircle"/>
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -198,12 +203,12 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if=" bgProcess.status === 'paused' " v-if=" bgProcess.status === 'paused' "
class="icon has-text-gray"> class="icon has-text-gray">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-pause"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-pause"/>
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -212,12 +217,12 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if=" bgProcess.status === 'waiting' " v-if=" bgProcess.status === 'waiting' "
class="icon has-text-gray"> class="icon has-text-gray">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-waiting"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-waiting"/>
</span> </span>
<span <span
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -226,36 +231,36 @@
autoHide: false, classes: ['tooltip', 'repository-tooltip'], autoHide: false, classes: ['tooltip', 'repository-tooltip'],
placement: 'auto-start' placement: 'auto-start'
}" }"
v-if="bgProcess.status === 'errored'" v-if="bgProcess.status === 'errored'"
class="icon has-text-danger"> class="icon has-text-danger">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-processerror" /> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-processerror" />
</span> </span>
</div> </div>
</span> </span>
</div> </div>
<!-- Collapse inner content --> <!-- Collapse inner content -->
<transition name="filter-item"> <transition name="filter-item">
<div <div
v-if="collapses[index]" v-if="collapses[index]"
class="process-collapse"> class="process-collapse">
<!-- Output --> <!-- Output -->
<span <span
class="process-output" class="process-output"
:label="$i18n.get('label_output')" :label="$i18n.get('label_output')"
:aria-label="$i18n.get('label_output') + ': ' + (bgProcess.output ? bgProcess.output : $i18n.get('label_no_output_info'))"> :aria-label="$i18n.get('label_output') + ': ' + (bgProcess.output ? bgProcess.output : $i18n.get('label_no_output_info'))">
<p v-html="bgProcess.output ? bgProcess.output : $i18n.get('label_no_output_info')"/> <p v-html="bgProcess.output ? bgProcess.output : $i18n.get('label_no_output_info')"/>
</span> </span>
<!-- Logs --> <!-- Logs -->
<span <span
class="process-logs" class="process-logs"
:label="$i18n.get('label_log_file')" :label="$i18n.get('label_log_file')"
:aria-label="$i18n.get('label_log_gile')"> :aria-label="$i18n.get('label_log_gile')">
<p> <p>
<a <a
v-if="bgProcess.log" v-if="bgProcess.log"
:href="bgProcess.log"> :href="bgProcess.log">
<span class="icon is-small"> <span class="icon is-small">
<i class="tainacan-icon tainacan-icon-18px tainacan-icon-openurl"/> <i class="tainacan-icon tainacan-icon-18px tainacan-icon-openurl"/>
</span> </span>
@ -263,9 +268,9 @@
</a> </a>
<br> <br>
<a <a
v-if="bgProcess.error_log" v-if="bgProcess.error_log"
class="has-text-danger" class="has-text-danger"
:href="bgProcess.error_log"> :href="bgProcess.error_log">
<span class="icon is-small"> <span class="icon is-small">
<i class="tainacan-icon tainacan-icon-18px tainacan-icon-openurl"/> <i class="tainacan-icon tainacan-icon-18px tainacan-icon-openurl"/>
</span> </span>
@ -274,13 +279,13 @@
</p> </p>
</span> </span>
<!-- Last processed on --> <!-- Last processed on -->
<span <span
class="process-last-processed-on" class="process-last-processed-on"
:label="$i18n.get('label_last_processed_on')" :label="$i18n.get('label_last_processed_on')"
:aria-label="$i18n.get('label_last_processed_on') + ' ' + getDate(bgProcess.processed_last)"> :aria-label="$i18n.get('label_last_processed_on') + ' ' + getDate(bgProcess.processed_last)">
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
@ -291,11 +296,21 @@
}"> }">
<span class="has-text-weight-bold">{{ $i18n.get('label_last_processed_on') + " " }}</span>{{ getDate(bgProcess.processed_last) }}</p> <span class="has-text-weight-bold">{{ $i18n.get('label_last_processed_on') + " " }}</span>{{ getDate(bgProcess.processed_last) }}</p>
</span> </span>
</div>
</transition>
</div> </div>
</transition>
</div> </div>
</div>
</div> </div>
<div v-else-if="isLoading">
<center>
<span>
{{ $i18n.get('loading_processes') }}
</span>
</center>
</div>
</div>
</template> </template>
<script> <script>
@ -319,7 +334,7 @@
allOnPageSelected: false, allOnPageSelected: false,
isSelecting: false, isSelecting: false,
highlightedProcess: '', highlightedProcess: '',
dateFormat: '' dateFormat: '',
} }
}, },
watch: { watch: {
@ -364,14 +379,15 @@
}, },
beforeDestroy() { beforeDestroy() {
if (jQuery && jQuery( document )) { if (jQuery && jQuery( document )) {
jQuery( document ).unbind( 'heartbeat-tick', this.onHeartBitTickList) jQuery( document ).off( 'heartbeat-tick', this.onHeartBitTickList)
} }
}, },
methods: { methods: {
...mapActions('bgprocess', [ ...mapActions('bgprocess', [
'deleteProcess', 'deleteProcess',
'updateProcess', 'updateProcess',
'heartBitUpdateProcess' 'heartBitUpdateProcess',
'fetchProcesses'
]), ]),
selectAllOnPage() { selectAllOnPage() {
for (let i = 0; i < this.selected.length; i++) for (let i = 0; i < this.selected.length; i++)
@ -493,6 +509,11 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../../scss/_variables.scss';
.sub-header {
@include logs-container();
}
.selection-control { .selection-control {

View File

@ -109,18 +109,18 @@
class="column-large-width" class="column-large-width"
@click="onClickTaxonomy($event, taxonomy.id, index)" @click="onClickTaxonomy($event, taxonomy.id, index)"
:label="$i18n.get('label_description')" :label="$i18n.get('label_description')"
:aria-label="$i18n.get('label_description') + ': ' + taxonomy.description != undefined && taxonomy.description != '' ? taxonomy.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`"> :aria-label="$i18n.get('label_description') + ': ' + taxonomy.description != undefined && taxonomy.description != '' ? taxonomy.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`">
<p <p
v-tooltip="{ v-tooltip="{
delay: { delay: {
show: 500, show: 500,
hide: 300, hide: 300,
}, },
content: taxonomy.description != undefined && taxonomy.description != '' ? taxonomy.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`, content: taxonomy.description != undefined && taxonomy.description != '' ? taxonomy.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`,
autoHide: false, autoHide: false,
placement: 'auto-start' placement: 'auto-start'
}" }"
v-html="(taxonomy.description != undefined && taxonomy.description != '') ? taxonomy.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_informed') + `</span>`" /> v-html="(taxonomy.description != undefined && taxonomy.description != '') ? taxonomy.description : `<span class='has-text-gray is-italic'>` + $i18n.get('label_description_not_provided') + `</span>`" />
</td> </td>
<!-- Collections using --> <!-- Collections using -->
<td <td

View File

@ -47,7 +47,7 @@
<div <div
class="skeleton" class="skeleton"
:style="{ :style="{
minHeight: (childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-checkbox' || childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-taxonomycheckbox') ? '150px' : '30px' minHeight: (childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-checkbox' || childItemMetadatum.metadatum.metadata_type_object.component == 'tainacan-taxonomy-checkbox') ? '150px' : '30px'
}" /> }" />
</div> </div>
<tainacan-form-item <tainacan-form-item
@ -86,7 +86,7 @@
</p> </p>
<a <a
v-if="isMultiple" v-if="isMultiple"
:disabled="childItemMetadataGroups.length > 0 && !someValueOnLastInput" :disabled="itemMetadatum.item.id && (childItemMetadataGroups.length > 0 && !someValueOnLastInput)"
@click="addGroup" @click="addGroup"
class="is-block add-link"> class="is-block add-link">
<span class="icon is-small"> <span class="icon is-small">
@ -137,10 +137,10 @@
} }
}, },
created() { created() {
eventBusItemMetadata.$on('hasRemovedItemMetadataGroup', () => this.isRemovingGroup = false); eventBusItemMetadata.$on('hasRemovedItemMetadataGroup', () => this.$nextTick(() => this.isRemovingGroup = false));
}, },
beforeDestroy() { beforeDestroy() {
eventBusItemMetadata.$off('hasRemovedItemMetadataGroup', () => this.isRemovingGroup = false); eventBusItemMetadata.$off('hasRemovedItemMetadataGroup', () => this.$nextTick(() => this.isRemovingGroup = false));
}, },
methods: { methods: {
createChildMetadataGroups() { createChildMetadataGroups() {
@ -153,7 +153,6 @@
this.itemMetadatum.metadatum.metadata_type_options && this.itemMetadatum.metadatum.metadata_type_options &&
this.itemMetadatum.metadatum.metadata_type_options.children_objects.length > 0 this.itemMetadatum.metadatum.metadata_type_options.children_objects.length > 0
) { ) {
// Here we load the values from the object, but must also create some // Here we load the values from the object, but must also create some
if (parentValues && parentValues.length) { if (parentValues && parentValues.length) {
@ -172,7 +171,7 @@
existingChildItemMetadata.push({ existingChildItemMetadata.push({
item: this.itemMetadatum.item, item: this.itemMetadatum.item,
metadatum: childMetadatum, metadatum: childMetadatum,
parent_meta_id: childItemMetadatum.parent_meta_id, parent_meta_id: (this.itemMetadatum.item && this.itemMetadatum.item.id) ?childItemMetadatum.parent_meta_id : groupIndex,
value: childItemMetadatum.value, value: childItemMetadatum.value,
value_as_html: childItemMetadatum.value_as_html, value_as_html: childItemMetadatum.value_as_html,
value_as_string: childItemMetadatum.value_as_string, value_as_string: childItemMetadatum.value_as_string,
@ -184,7 +183,7 @@
existingChildItemMetadata.push({ existingChildItemMetadata.push({
item: this.itemMetadatum.item, item: this.itemMetadatum.item,
metadatum: childMetadatum, metadatum: childMetadatum,
parent_meta_id: existingParentMetaIdIndex >= 0 ? childItemMetadata[existingParentMetaIdIndex].parent_meta_id : 0, parent_meta_id: (this.itemMetadatum.item && this.itemMetadatum.item.id) ? (existingParentMetaIdIndex >= 0 ? childItemMetadata[existingParentMetaIdIndex].parent_meta_id : 0) : groupIndex,
value: '', value: '',
value_as_html: '', value_as_html: '',
value_as_string: '', value_as_string: '',
@ -200,7 +199,7 @@
let childObject = { let childObject = {
item: this.itemMetadatum.item, item: this.itemMetadatum.item,
metadatum: childMetadatum, metadatum: childMetadatum,
parent_meta_id: '0', parent_meta_id: (this.itemMetadatum.item && this.itemMetadatum.item.id) ? '0' : currentChildItemMetadataGroups.length,
value: '', value: '',
value_as_html: '', value_as_html: '',
value_as_string: '', value_as_string: '',
@ -209,7 +208,7 @@
existingChildItemMetadata.push(childObject) existingChildItemMetadata.push(childObject)
} }
} }
currentChildItemMetadataGroups.push(existingChildItemMetadata) currentChildItemMetadataGroups.push(existingChildItemMetadata);
} }
} }
} }
@ -230,11 +229,43 @@
this.isCreatingGroup = true; this.isCreatingGroup = true;
// Sends value to api so we can obtain the parent_meta_id if (this.itemMetadatum.item && this.itemMetadatum.item.id) {
eventBusItemMetadata.fetchCompoundFirstParentMetaId({
itemId: this.itemMetadatum.item.id, // Sends value to api so we can obtain the parent_meta_id
metadatumId: this.itemMetadatum.metadatum.id eventBusItemMetadata.fetchCompoundFirstParentMetaId({
}).then((parentMetaId) => { itemId: this.itemMetadatum.item.id,
metadatumId: this.itemMetadatum.metadatum.id
}).then((parentMetaId) => {
// Create a new placeholder parent_meta_id group here.
let newEmptyGroup = [];
if (this.itemMetadatum &&
this.itemMetadatum.metadatum &&
this.itemMetadatum.metadatum.metadata_type_options &&
this.itemMetadatum.metadatum.metadata_type_options.children_objects.length > 0
) {
for (let childMetadatum of this.itemMetadatum.metadatum.metadata_type_options.children_objects) {
let childObject = {
item: this.itemMetadatum.item,
metadatum: childMetadatum,
parent_meta_id: parentMetaId,
value: '',
value_as_html: '',
value_as_string: '',
collapse: true
};
newEmptyGroup.push(childObject)
}
}
this.childItemMetadataGroups.push(newEmptyGroup);
this.isCreatingGroup = false;
});
// If no itemId is provided, we are probably on an item Submission flow
} else {
// Create a new placeholder parent_meta_id group here. // Create a new placeholder parent_meta_id group here.
let newEmptyGroup = []; let newEmptyGroup = [];
@ -248,7 +279,7 @@
let childObject = { let childObject = {
item: this.itemMetadatum.item, item: this.itemMetadatum.item,
metadatum: childMetadatum, metadatum: childMetadatum,
parent_meta_id: parentMetaId, parent_meta_id: this.childItemMetadataGroups.length,
value: '', value: '',
value_as_html: '', value_as_html: '',
value_as_string: '', value_as_string: '',
@ -257,11 +288,9 @@
newEmptyGroup.push(childObject) newEmptyGroup.push(childObject)
} }
} }
this.childItemMetadataGroups.push(newEmptyGroup); this.childItemMetadataGroups.push(newEmptyGroup);
this.isCreatingGroup = false; this.isCreatingGroup = false;
}); }
}, },
removeGroup(groupIndex) { removeGroup(groupIndex) {
@ -270,8 +299,10 @@
eventBusItemMetadata.$emit('remove_group', { eventBusItemMetadata.$emit('remove_group', {
itemId: this.itemMetadatum.item.id, itemId: this.itemMetadatum.item.id,
metadatumId: this.itemMetadatum.metadatum.id, metadatumId: this.itemMetadatum.metadatum.id,
parentMetaId: this.itemMetadatum.value[groupIndex][0].parent_meta_id parentMetaId: this.itemMetadatum.item.id ? this.itemMetadatum.value[groupIndex][0].parent_meta_id : groupIndex
}); });
if (!this.itemMetadatum.item.id)
this.childItemMetadataGroups.splice(groupIndex, 1);
} else { } else {
this.childItemMetadataGroups.splice(groupIndex, 1); this.childItemMetadataGroups.splice(groupIndex, 1);
} }
@ -316,7 +347,8 @@
height: 1px; height: 1px;
} }
.empty-label { .empty-label {
color: var(--tainacan-gray3); color: var(--tainacan-gray4);
font-size: 0.875em;
font-style: italic; font-style: italic;
} }
} }

View File

@ -31,7 +31,7 @@
<div <div
class="active-metadatum-item" class="active-metadatum-item"
:class="{ :class="{
'not-sortable-item': metadatum.id == undefined || openedMetadatumId != '' || isUpdatingMetadataOrder, 'not-sortable-item': metadatum.id == undefined || openedMetadatumId != '' || isUpdatingMetadataOrder || metadatum.parent == 0 || metadatum.collection_id != collectionId,
'not-focusable-item': openedMetadatumId == metadatum.id, 'not-focusable-item': openedMetadatumId == metadatum.id,
'disabled-metadatum': parent.enabled == false, 'disabled-metadatum': parent.enabled == false,
'inherited-metadatum': (metadatum.collection_id != collectionId && metadatum.parent == 0) || isRepositoryLevel 'inherited-metadatum': (metadatum.collection_id != collectionId && metadatum.parent == 0) || isRepositoryLevel
@ -42,7 +42,7 @@
:ref="'metadatum-handler-' + metadatum.id" :ref="'metadatum-handler-' + metadatum.id"
class="handle"> class="handle">
<span <span
:style="{ opacity: !( metadatum.id == undefined || openedMetadatumId != '' || isUpdatingMetadataOrder) ? '1.0' : '0.0' }" :style="{ opacity: !( metadatum.id == undefined || openedMetadatumId != '' || isUpdatingMetadataOrder || metadatum.parent == 0 || metadatum.collection_id != collectionId) ? '1.0' : '0.0' }"
v-tooltip="{ v-tooltip="{
content: metadatum.id == undefined || openedMetadatumId != '' || isUpdatingMetadataOrder ? $i18n.get('info_not_allowed_change_order_metadata') : $i18n.get('instruction_drag_and_drop_metadatum_sort'), content: metadatum.id == undefined || openedMetadatumId != '' || isUpdatingMetadataOrder ? $i18n.get('info_not_allowed_change_order_metadata') : $i18n.get('instruction_drag_and_drop_metadatum_sort'),
autoHide: true, autoHide: true,

View File

@ -169,6 +169,8 @@ class Compound extends Metadata_Type {
public function get_value_as_html(Item_Metadata_Entity $item_metadata) { public function get_value_as_html(Item_Metadata_Entity $item_metadata) {
$value = $item_metadata->get_value(); $value = $item_metadata->get_value();
$separator = $item_metadata->get_multivalue_separator(); $separator = $item_metadata->get_multivalue_separator();
$options = $item_metadata->get_metadatum()->get_metadata_type_options();
$order = $options['children_order'];
$return = ''; $return = '';
if ( empty($value) ) if ( empty($value) )
@ -178,29 +180,36 @@ class Compound extends Metadata_Type {
$elements = []; $elements = [];
foreach ( $value as $compound_element ) { foreach ( $value as $compound_element ) {
if ( !empty($compound_element) ) { if ( !empty($compound_element) ) {
$metadata_value = ''; $metadata_value = array_fill(0, count($compound_element), null);
foreach ( $compound_element as $meta ) { $metadata_value_not_ordinate = [];
foreach ( $compound_element as $meta_id => $meta ) {
$index = array_search( $meta_id, array_column( $order, 'id' ) );
if ( $meta instanceof Item_Metadata_Entity && $meta->get_value_as_html() != '' ) { if ( $meta instanceof Item_Metadata_Entity && $meta->get_value_as_html() != '' ) {
$metadata_value .= '<label class="label">' . $meta->get_metadatum()->get_name() . '</label> <p>' . $meta->get_value_as_html() . "</p> \n"; if ( $index !== false ) {
$metadata_value[$index] = '<div class="tainacan-metadatum"><label class="label">' . $meta->get_metadatum()->get_name() . '</label> <p>' . $meta->get_value_as_html() . "</p></div>";
} else {
$metadata_value_not_ordinate[] = '<div class="tainacan-metadatum"><label class="label">' . $meta->get_metadatum()->get_name() . '</label> <p>' . $meta->get_value_as_html() . "</p></div>";
}
} }
} }
$elements[] = '<div class="tainacan-compound-metadatum">' . $metadata_value . "</div> \n" ; $elements[] = '<div class="tainacan-compound-metadatum">' . implode("\n", array_merge($metadata_value, $metadata_value_not_ordinate)) . "</div> \n" ;
} }
} }
$return .= '<div class="tainacan-compound-group">' . implode($separator, $elements) . '</div>'; $return = '<div class="tainacan-compound-group">' . implode($separator, $elements) . '</div>';
} else { } else {
$return .= '<div class="tainacan-compound-group">'; $metadata_value = array_fill(0, count($value), null);
foreach ( $value as $meta ) { $metadata_value_not_ordinate = [];
if ( $meta->get_value_as_html() != '' ) { foreach ( $value as $meta_id => $meta ) {
$return .= '<div class="tainacan-metadatum">'; $index = array_search( $meta_id, array_column( $order, 'id' ) );
if ( $meta instanceof Item_Metadata_Entity ) { if ( $meta instanceof Item_Metadata_Entity && $meta->get_value_as_html() != '' ) {
$return .= '<label class="label">' . $meta->get_metadatum()->get_name() . "</label>\n"; if ( $index !== false ) {
$return .= '<p>' . $meta->get_value_as_html() . '</p>'; $metadata_value[intval($index)] = '<div class="tainacan-metadatum"><label class="label">' . $meta->get_metadatum()->get_name() . '</label> <p>' . $meta->get_value_as_html() . "</p></div>";
} } else {
$return .= '</div>' . "\n\n"; $metadata_value_not_ordinate[] = '<div class="tainacan-metadatum"><label class="label">' . $meta->get_metadatum()->get_name() . '</label> <p>' . $meta->get_value_as_html() . "</p></div>";
} }
} }
$return .= '</div>' . "\n\n"; }
$return = '<div class="tainacan-compound-group">' . implode("\n", array_merge($metadata_value, $metadata_value_not_ordinate)) . "</div> \n";
} }
return $return; return $return;

View File

@ -0,0 +1,233 @@
<?php
namespace Tainacan\Metadata_Types;
use Tainacan\Entities\Metadatum;
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
/**
* Class TainacanMetadatumType
*/
class MetadataTypeControlHelper {
private static $instance = null;
private function __construct() { }
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
add_action( 'tainacan-insert-tainacan-item', array(self::$instance, 'update_control_metadatum'), 10, 1 );
}
return self::$instance;
}
static function update_control_metadatum( $item ) {
if ( $item instanceof \Tainacan\Entities\Item ) {
$item_metadata_repositories = \Tainacan\Repositories\Item_Metadata::get_instance();
$item_metadata_repositories->disable_logs();
$collection = $item->get_collection();
$args = [
'include_control_metadata_types' => true,
'add_only_repository' => true,
'meta_query' => [
[
'key' => 'metadata_type',
'value' => 'Tainacan\Metadata_Types\Control',
'compare' => 'IN'
]
]
];
$metadatum_repository = \Tainacan\Repositories\Metadata::get_instance();
$metadata = $metadatum_repository->fetch_by_collection( $collection, $args );
foreach ($metadata as $item_metadatum) {
if ( $item_metadatum->get_metadata_type_object() instanceof \Tainacan\Metadata_Types\Control) {
$update_item_metadatum = new \Tainacan\Entities\Item_Metadata_Entity( $item, $item_metadatum );
switch ( $item_metadatum->get_metadata_type_object()->get_option('control_metadatum') ) {
case 'document_type':
$document_type = $item->get_document_type() == 'attachment' ? get_post_mime_type($item->get_document()) : $item->get_document_type();
$update_item_metadatum->set_value( $document_type !== false ? $document_type : 'attachment' );
break;
case 'collection_id':
$update_item_metadatum->set_value( $item->get_collection_id() );
break;
case 'has_thumbnail':
$update_item_metadatum->set_value( !empty($item->get__thumbnail_id()) ? 'yes':'no' );
break;
default:
// What the hell am I doing here?
break;
}
if ( $update_item_metadatum->validate() )
$item_metadata_repositories->insert( $update_item_metadatum );
else
$errors[] = $update_item_metadatum->get_errors();
}
}
$item_metadata_repositories->enable_logs();
}
}
}
/**
* Class TainacanMetadatumType
*/
class Control extends Metadata_Type {
private $metadataTypeControlHelper;
function __construct() {
// call metadatum type constructor
parent::__construct();
$this->set_primitive_type('control');
$this->set_component('tainacan-text');
$this->set_name( __('Control Type', 'tainacan') );
$this->set_description( __('A special metadata type, used to map certain item properties such as collection id and document type to metadata in order to easily create filters.', 'tainacan') );
$this->set_default_options([
'control_metadatum_options' => ['document_type', 'collection_id', 'has_thumbnail'],
'control_metadatum' => 'document_type',
'only_repository' => 'no'
]);
$metadataTypeControlHelper = MetadataTypeControlHelper::get_instance();
}
public static function get_helper() {
return MetadataTypeControlHelper::get_instance();
}
public function validate_options( Metadatum $metadatum ) {
if ( !in_array($metadatum->get_status(), apply_filters('tainacan-status-require-validation', ['publish','future','private'])) )
return true;
if ( empty($this->get_option('control_metadatum')) ) {
return [
'control_metadatum' => __('Required control metadatum.','tainacan')
];
}
return true;
}
public function get_control_metadatum_value($value, $control_metadatum, $format) {
$return = '';
switch ( $control_metadatum ) {
case 'document_type':
$return = ($format == 'html' ? $this->get_document_as_html( $value ) : $this->get_document_as_string( $value ));
break;
case 'collection_id':
$return = ($format == 'html' ? $this->get_collection_as_html( $value ) : $this->get_collection_as_string( $value ));
break;
case 'has_thumbnail':
$return = ( $value == 'yes' ? __( 'yes', 'tainacan' ) : __( 'no', 'tainacan' ) );
break;
default:
$return = $value;// What the hell am I doing here?
break;
}
return $return;
}
/**
* Return the value of an Item_Metadata_Entity using a metadatum of this metadatum type as an html string
* @param Item_Metadata_Entity $item_metadata
* @return string The HTML representation of the value, containing one or multiple items names, linked to the item page
*/
public function get_value_as_html(\Tainacan\Entities\Item_Metadata_Entity $item_metadata) {
$value = $item_metadata->get_value();
$control_metadatum = $this->get_option('control_metadatum');
return $this->get_control_metadatum_value($value, $control_metadatum, 'html');
}
/**
* Return the value of an Item_Metadata_Entity using a metadatum of this metadatum type as a string
* @param Item_Metadata_Entity $item_metadata
* @return string The String representation of the value, containing one or multiple items names, linked to the item page
*/
public function get_value_as_string(\Tainacan\Entities\Item_Metadata_Entity $item_metadata) {
$value = $item_metadata->get_value();
$control_metadatum = $this->get_option('control_metadatum');
return $this->get_control_metadatum_value($value, $control_metadatum, 'string');
}
private function get_document_as_html( $value ) {
return $this->get_document_as_string( $value );
}
public function get_document_as_string( $value ) {
switch ($value) {
case 'attachment':
return __( 'File', 'tainacan' );
break;
case 'text':
return __( 'Text', 'tainacan' );
break;
case 'url':
return __( 'URL', 'tainacan' );
break;
case 'empty':
return __( 'Empty', 'tainacan' );
break;
case 'application/pdf':
return "PDF";
break;
}
$type = explode( '/', $value );
if (count($type) == 2 ) {
switch ($type[0]) {
case 'image':
$value = __( 'Image', 'tainacan' ) . '/' . $type[1];
break;
case 'video':
$value = __( 'Video', 'tainacan' ) . '/' . $type[1];
break;
case 'audio':
$value = __( 'Audio', 'tainacan' ) . '/' . $type[1];
break;
case 'text':
$value = __( 'Text', 'tainacan' ) . '/' . $type[1];
break;
case 'application':
$value = __( 'Others', 'tainacan' ) . '/' . $type[1];
break;
}
}
return $value;
}
private function get_collection_as_html( $value ) {
$collection = \Tainacan\Repositories\Collections::get_instance()->fetch( (int) $value );
if ( $collection instanceof \Tainacan\Entities\Collection ) {
$label = $collection->get_name();
$link = $collection->get_url();
$return = "<a data-linkto='collection' data-id='$value' href='$link'>";
$return.= $label;
$return .= "</a>";
return $return;
}
return null;
}
private function get_collection_as_string( $value ) {
$collection = \Tainacan\Repositories\Collections::get_instance()->fetch( (int) $value );
if ( $collection instanceof \Tainacan\Entities\Collection ) {
$label = $collection->get_name();
return $label;
}
return null;
}
}

View File

@ -41,6 +41,7 @@ class Metadata_Type_Helper {
$this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\Taxonomy'); $this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\Taxonomy');
$this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\Compound'); $this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\Compound');
$this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\User'); $this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\User');
$this->Tainacan_Metadata->register_metadata_type('Tainacan\Metadata_Types\Control');
// the priority should see less than on function // the priority should see less than on function
// `load_admin_page()` of class `Admin` in file /src/views/class-tainacan-admin.php // `load_admin_page()` of class `Admin` in file /src/views/class-tainacan-admin.php

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="{ 'is-flex': itemMetadatum.metadatum.multiple != 'yes' || maxtags != undefined }"> <div :class="{ 'is-flex is-flex-wrap-wrap': itemMetadatum.metadatum.multiple != 'yes' || maxtags != undefined }">
<b-taginput <b-taginput
expanded expanded
:disabled="disabled" :disabled="disabled"
@ -10,8 +10,10 @@
@input="onInput" @input="onInput"
@blur="onBlur" @blur="onBlur"
:data="options" :data="options"
:maxtags="maxtags != undefined ? maxtags : (itemMetadatum.metadatum.multiple == 'yes' || allowNew === true ? 100 : 1)" :maxtags="maxtags != undefined ? maxtags : (itemMetadatum.metadatum.multiple == 'yes' || allowNew === true ? null : 1)"
autocomplete autocomplete
:remove-on-keys="[]"
:dropdown-position="isLastMetadatum ? 'top' :'auto'"
attached attached
:placeholder="$i18n.get('instruction_type_existing_item')" :placeholder="$i18n.get('instruction_type_existing_item')"
:loading="isLoading" :loading="isLoading"
@ -42,7 +44,7 @@
{{ $i18n.get('info_no_item_found') }} {{ $i18n.get('info_no_item_found') }}
</template> </template>
<template <template
v-if="currentUserCanEditItems && !$route.query.iframemode" v-if="currentUserCanEditItems && !($route && $route.query.iframemode)"
slot="footer"> slot="footer">
<a @click="createNewItemModal = true"> <a @click="createNewItemModal = true">
{{ $i18n.get('label_crate_new_item') + ' "' + searchQuery + '"' }} {{ $i18n.get('label_crate_new_item') + ' "' + searchQuery + '"' }}
@ -50,8 +52,8 @@
</template> </template>
</b-taginput> </b-taginput>
<a <a
v-if="currentUserCanEditItems" v-if="currentUserCanEditItems && itemMetadatum.item && itemMetadatum.item.id"
:disabled="$route.query.iframemode" :disabled="!$route || $route.query.iframemode"
@click="createNewItemModal = !createNewItemModal" @click="createNewItemModal = !createNewItemModal"
class="add-link"> class="add-link">
<span class="icon is-small"> <span class="icon is-small">
@ -82,7 +84,8 @@
itemMetadatum: Object, itemMetadatum: Object,
maxtags: undefined, maxtags: undefined,
disabled: false, disabled: false,
allowNew: true allowNew: true,
isLastMetadatum: false
}, },
data() { data() {
return { return {
@ -90,9 +93,6 @@
options: [], options: [],
isLoading: false, isLoading: false,
collectionId: '', collectionId: '',
inputValue: null,
queryObject: {},
itemsFound: [],
searchQuery: '', searchQuery: '',
totalItems: 0, totalItems: 0,
page: 1, page: 1,
@ -120,7 +120,7 @@
if (this.itemMetadatum.value && (Array.isArray( this.itemMetadatum.value ) ? this.itemMetadatum.value.length > 0 : true )) { if (this.itemMetadatum.value && (Array.isArray( this.itemMetadatum.value ) ? this.itemMetadatum.value.length > 0 : true )) {
let query = qs.stringify({ postin: ( Array.isArray( this.itemMetadatum.value ) ) ? this.itemMetadatum.value : [ this.itemMetadatum.value ] }); let query = qs.stringify({ postin: ( Array.isArray( this.itemMetadatum.value ) ) ? this.itemMetadatum.value : [ this.itemMetadatum.value ] });
query += this.itemMetadatum.metadatum.metadata_type_options.search ? '&fetch_only_meta=' + this.itemMetadatum.metadatum.metadata_type_options.search : ''; query += this.itemMetadatum.metadatum.metadata_type_options.search ? '&fetch_only_meta=' + this.itemMetadatum.metadatum.metadata_type_options.search : '';
axios.get('/collection/' + this.collectionId + '/items?' + query + '&nopaging=1&fetch_only=title,thumbnail') axios.get('/collection/' + this.collectionId + '/items?' + query + '&nopaging=1&fetch_only=title,thumbnail&order=asc')
.then( res => { .then( res => {
if (res.data.items) { if (res.data.items) {
for (let item of res.data.items) for (let item of res.data.items)
@ -137,7 +137,7 @@
} }
// Checks if current user can edit itens on the related collection to offer modal // Checks if current user can edit itens on the related collection to offer modal
if (this.collection.id == this.collectionId) if (this.collection && this.collection.id == this.collectionId)
this.currentUserCanEditItems = this.collection.current_user_can_edit_items; this.currentUserCanEditItems = this.collection.current_user_can_edit_items;
else { else {
axios.get('/collections/' + this.collectionId + '?fetch_only=name,url,allow_comments&context=edit') axios.get('/collections/' + this.collectionId + '?fetch_only=name,url,allow_comments&context=edit')
@ -150,6 +150,9 @@
'getCollection' 'getCollection'
]), ]),
onInput(newSelected) { onInput(newSelected) {
// First we reset the input
this.search('');
this.selected = newSelected; this.selected = newSelected;
this.$emit('input', newSelected.map((item) => item.value)); this.$emit('input', newSelected.map((item) => item.value));
}, },
@ -226,7 +229,6 @@
}, },
getQueryString( search ) { getQueryString( search ) {
let query = []; let query = [];
if (this.itemMetadatum.metadatum.metadata_type_options && if (this.itemMetadatum.metadatum.metadata_type_options &&
this.itemMetadatum.metadatum.metadata_type_options.search) this.itemMetadatum.metadatum.metadata_type_options.search)
{ {
@ -247,6 +249,23 @@
value: search, value: search,
compare: 'LIKE' compare: 'LIKE'
} }
// Sorting options depend on metadata type. Notice that this won't work with taxonomies
switch(this.itemMetadatum.metadatum.metadata_type_options.related_primitive_type) {
case 'float':
case 'int':
query['orderby'] = 'meta_value_num';
query['metakey'] = this.itemMetadatum.metadatum.metadata_type_options.search;
break;
case 'date':
query['orderby'] = 'meta_value';
query['metakey'] = this.itemMetadatum.metadatum.metadata_type_options.search;
query['metatype'] = 'DATETIME';
break;
default:
query['orderby'] = 'meta_value';
query['metakey'] = this.itemMetadatum.metadatum.metadata_type_options.search;
}
} }
} else { } else {
@ -256,6 +275,7 @@
query['fetch_only_meta'] = this.itemMetadatum.metadatum.metadata_type_options.search; query['fetch_only_meta'] = this.itemMetadatum.metadatum.metadata_type_options.search;
query['perpage'] = 12; query['perpage'] = 12;
query['paged'] = this.page; query['paged'] = this.page;
query['order'] = 'asc';
if (this.selected.length > 0) if (this.selected.length > 0)
query['exclude'] = this.selected.map((item) => item.value); query['exclude'] = this.selected.map((item) => item.value);

View File

@ -229,9 +229,13 @@ class Relationship extends Metadata_Type {
if ( isset($opt['search']) && !empty($opt['search']) ) { if ( isset($opt['search']) && !empty($opt['search']) ) {
$search_id = $opt['search']; $search_id = $opt['search'];
$metadata = \Tainacan\Repositories\Metadata::get_instance()->fetch($search_id, 'OBJECT'); $metadata = \Tainacan\Repositories\Metadata::get_instance()->fetch($search_id, 'OBJECT');
if ($metadata->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy') { if( $metadata instanceof \Tainacan\Entities\Metadatum ) {
$taxonomy_id = $metadata->get_metadata_type_options()['taxonomy_id']; $opt = array_merge(['related_primitive_type' => $metadata->get_metadata_type_object()->get_primitive_type()], $opt);
return array_merge(['search_by_tax' => $taxonomy_id], $opt);
if ($metadata->get_metadata_type() == 'Tainacan\Metadata_Types\Taxonomy') {
$taxonomy_id = $metadata->get_metadata_type_options()['taxonomy_id'];
return array_merge(['search_by_tax' => $taxonomy_id], $opt);
}
} }
} }
return $opt; return $opt;

View File

@ -16,6 +16,7 @@
@input="emitValues()" @input="emitValues()"
@focus="clear()" @focus="clear()"
attached attached
:remove-on-keys="[]"
:aria-close-label="$i18n.get('remove_value')" :aria-close-label="$i18n.get('remove_value')"
:class="{'has-selected': options != undefined && options != []}" :class="{'has-selected': options != undefined && options != []}"
:placeholder="$i18n.get('new') + ', ...'"/> :placeholder="$i18n.get('new') + ', ...'"/>
@ -34,7 +35,7 @@
return { return {
optionType: '', optionType: '',
optionMessage: '', optionMessage: '',
options: [] options: [],
} }
}, },
computed: { computed: {

View File

@ -1,12 +1,15 @@
<template> <template>
<b-field <b-field
:class="hideCollapses ? 'has-collapses-hidden' : ''"
:addons="false" :addons="false"
:message="errorMessage" :message="errorMessage"
:type="errorMessage ? 'is-danger' : ''"> :type="errorMessage ? 'is-danger' : ''">
<span <span
class="collapse-handle" class="collapse-handle"
@click="$emit('changeCollapse', errorMessage ? true : !isCollapsed )"> @click="!hideCollapses ? $emit('changeCollapse', errorMessage ? true : !isCollapsed ) : ''">
<span class="icon"> <span
v-if="!hideCollapses"
class="icon">
<i <i
:class="{ :class="{
'tainacan-icon-arrowdown' : isCollapsed || errorMessage, 'tainacan-icon-arrowdown' : isCollapsed || errorMessage,
@ -33,16 +36,19 @@
:class="errorMessage ? 'is-danger' : ''"> :class="errorMessage ? 'is-danger' : ''">
* *
</span> </span>
<span class="metadata-type"> <span
v-if="!$parent.hideMetadataTypes"
class="metadata-type">
({{ itemMetadatum.metadatum.metadata_type_object.name }}) ({{ itemMetadatum.metadatum.metadata_type_object.name }})
</span> </span>
<help-button <help-button
v-if="!$parent.hideHelpButtons"
:title="itemMetadatum.metadatum.name" :title="itemMetadatum.metadatum.name"
:message="itemMetadatum.metadatum.description"/> :message="itemMetadatum.metadatum.description"/>
</span> </span>
<transition name="filter-item"> <transition name="filter-item">
<div <div
v-show="isCollapsed || errorMessage" v-show="hideCollapses || (isCollapsed || errorMessage)"
v-if="isTextInputComponent"> v-if="isTextInputComponent">
<component <component
:is="metadatumComponent" :is="metadatumComponent"
@ -91,14 +97,15 @@
<!-- Non-textual metadata such as taxonomy, relationship and compound manage multiple state in different ways --> <!-- Non-textual metadata such as taxonomy, relationship and compound manage multiple state in different ways -->
<transition name="filter-item"> <transition name="filter-item">
<div <div
v-show="isCollapsed" v-show="hideCollapses || isCollapsed"
v-if="!isTextInputComponent"> v-if="!isTextInputComponent">
<component <component
:is="metadatumComponent" :is="metadatumComponent"
v-model="values" v-model="values"
:item-metadatum="itemMetadatum" :item-metadatum="itemMetadatum"
@input="changeValue" @input="changeValue"
@blur="performValueChange"/> @blur="performValueChange"
:is-last-metadatum="isLastMetadatum" />
</div> </div>
</transition> </transition>
</b-field> </b-field>
@ -111,7 +118,9 @@
name: 'TainacanFormItem', name: 'TainacanFormItem',
props: { props: {
itemMetadatum: Object, itemMetadatum: Object,
isCollapsed: true isCollapsed: true,
hideCollapses: false,
isLastMetadatum: false
}, },
data(){ data(){
return { return {
@ -167,43 +176,51 @@
if (this.metadatumComponent == 'tainacan-compound') if (this.metadatumComponent == 'tainacan-compound')
return; return;
// This routine avoids calling the API if the value did not changed if (this.itemMetadatum.value !== null) {
switch(this.itemMetadatum.value.constructor.name) {
// Multivalored Metadata requires checking the whole array // This routine avoids calling the API if the value did not changed
case 'Array': { switch(this.itemMetadatum.value.constructor.name) {
let equal = []; // Multivalored Metadata requires checking the whole array
let currentValues = []; case 'Array': {
// An array of terms let equal = [];
if (this.values.length && this.values[0].constructor.name == 'Object') let currentValues = [];
currentValues = this.values.map(term => term.value)
else
currentValues = this.values;
for (let value of currentValues) { // An array of terms
let foundIndex = this.itemMetadatum.value.findIndex(element => value == element.id); if (this.values.length && this.values[0].constructor.name == 'Object')
if (foundIndex >= 0) currentValues = this.values.map(term => term.value)
equal.push(this.itemMetadatum.value[foundIndex]); else
currentValues = this.values;
if (Array.isArray(currentValues)) {
for (let value of currentValues) {
let foundIndex = this.itemMetadatum.value.findIndex(element => value == element.id);
if (foundIndex >= 0)
equal.push(this.itemMetadatum.value[foundIndex]);
}
if (equal.length == currentValues.length && this.itemMetadatum.value.length <= equal.length)
return;
} else { // This will happen in taxonomy single valued on item submission, as there all term values appear as array.
if (this.itemMetadatum.value == currentValues)
return;
}
break;
} }
if (equal.length == currentValues.length && this.itemMetadatum.value.length <= equal.length) // A single term value
return; case 'Object':
if (this.values.length && this.values[0] == this.itemMetadatum.value.id)
return;
break;
break; // Any single metadatum value that is not a term
default:
if (this.values.length && this.values[0] == this.itemMetadatum.value)
return;
} }
// A single term value
case 'Object':
if (this.values.length && this.values[0] == this.itemMetadatum.value.id)
return;
break;
// Any single metadatum value that is not a term
default:
if (this.values.length && this.values[0] == this.itemMetadatum.value)
return;
} }
// If none is the case, the value is update request is sent to the API // If none is the case, the value is update request is sent to the API
@ -211,7 +228,8 @@
itemId: this.itemMetadatum.item.id, itemId: this.itemMetadatum.item.id,
metadatumId: this.itemMetadatum.metadatum.id, metadatumId: this.itemMetadatum.metadatum.id,
values: this.values ? this.values : '', values: this.values ? this.values : '',
parentMetaId: this.itemMetadatum.parent_meta_id parentMetaId: this.itemMetadatum.parent_meta_id,
parentId: this.itemMetadatum.metadatum.parent != undefined ? this.itemMetadatum.metadatum.parent : 0
}); });
}, },
addValue(){ addValue(){
@ -236,9 +254,22 @@
} }
.field { .field {
border-bottom: 1px solid var(--tainacan-gray2); border-bottom: 1px solid var(--tainacan-input-border-color);
padding: 10px var(--tainacan-container-padding); padding: 10px var(--tainacan-container-padding);
&.has-collapses-hidden {
border-bottom: none;
padding: 10px !important;
.collapse-handle {
margin-left: -15px;
}
.child-metadata-inputs {
margin-left: 0.25em;
}
}
.label { .label {
font-size: 0.875em; font-size: 0.875em;
font-weight: 500; font-weight: 500;
@ -250,7 +281,8 @@
.metadata-type { .metadata-type {
font-size: 0.8125em; font-size: 0.8125em;
font-weight: 400; font-weight: 400;
color: var(--tainacan-gray3); color: var(--tainacan-info-color);
opacity: 0.75;
top: -0.1em; top: -0.1em;
position: relative; position: relative;
} }

View File

@ -109,6 +109,7 @@
@input="updateSelectedCollections" @input="updateSelectedCollections"
@focus="clear()" @focus="clear()"
attached attached
:remove-on-keys="[]"
:aria-close-label="$i18n.get('remove_value')" :aria-close-label="$i18n.get('remove_value')"
:class="{'has-selected': link_filtered_by_collections != undefined && link_filtered_by_collections != []}" :class="{'has-selected': link_filtered_by_collections != undefined && link_filtered_by_collections != []}"
:placeholder="$i18n.get('instruction_select_one_or_more_collections')" :placeholder="$i18n.get('instruction_select_one_or_more_collections')"

View File

@ -14,8 +14,11 @@
:has-counter="false" /> :has-counter="false" />
<checkbox-radio-metadata-input <checkbox-radio-metadata-input
v-else v-else
:id="'tainacan-item-metadatum_id-' + itemMetadatum.metadatum.id + (itemMetadatum.parent_meta_id ? ('_parent_meta_id-' + itemMetadatum.parent_meta_id) : '')"
:is-modal="false" :is-modal="false"
:parent="0" :parent="0"
:allow-new="allowNew"
@showAddNewTerm="openTermCreationModal"
:taxonomy_id="taxonomyId" :taxonomy_id="taxonomyId"
:selected="!valueComponent ? [] : valueComponent" :selected="!valueComponent ? [] : valueComponent"
:metadatum-id="itemMetadatum.metadatum.id" :metadatum-id="itemMetadatum.metadatum.id"
@ -23,9 +26,11 @@
:collection-id="itemMetadatum.metadatum.collection_id" :collection-id="itemMetadatum.metadatum.collection_id"
:is-taxonomy="true" :is-taxonomy="true"
:metadatum="itemMetadatum.metadatum" :metadatum="itemMetadatum.metadatum"
:amount-selected="Array.isArray(valueComponent) ? valueComponent.length : (valueComponent ? '1' : '0')"
:is-checkbox="getComponent == 'tainacan-taxonomy-checkbox'" :is-checkbox="getComponent == 'tainacan-taxonomy-checkbox'"
@input="(selected) => valueComponent = selected" @input="(selected) => valueComponent = selected"
/> />
<div <div
v-if="allowNew" v-if="allowNew"
class="add-new-term"> class="add-new-term">
@ -39,12 +44,26 @@
&nbsp;{{ $i18n.get('label_new_term') }} &nbsp;{{ $i18n.get('label_new_term') }}
</a> </a>
</div> </div>
<b-modal
v-model="isTermCreationModalOpen"
trap-focus
aria-role="dialog"
aria-modal
:can-cancel="['outside', 'escape']">
<term-edition-form
:taxonomy-id="taxonomyId"
:edit-form="{ id: 'new', name: newTermName ? newTermName : '' }"
:is-modal="true"
@onEditionFinished="($event) => addRecentlyCreatedTerm($event.term)"
@onEditionCanceled="() => $console.log('Edition canceled')"
@onErrorFound="($event) => $console.log('Form with errors: ' + $event)" />
</b-modal>
</div> </div>
</template> </template>
<script> <script>
import TainacanTaxonomyTagInput from './TaxonomyTaginput.vue'; import TainacanTaxonomyTagInput from './TaxonomyTaginput.vue';
import TermEditionForm from '../../edition/term-edition-form.vue';
import CheckboxRadioMetadataInput from '../../other/checkbox-radio-metadata-input.vue'; import CheckboxRadioMetadataInput from '../../other/checkbox-radio-metadata-input.vue';
import { tainacan as axios } from '../../../js/axios.js'; import { tainacan as axios } from '../../../js/axios.js';
@ -60,6 +79,8 @@
forcedComponentType: '', forcedComponentType: '',
maxtags: '', maxtags: '',
allowSelectToCreate: false, allowSelectToCreate: false,
isTermCreationModalOpen: false,
newTermName: ''
}, },
data(){ data(){
return { return {
@ -85,7 +106,7 @@
} }
}, },
watch: { watch: {
valueComponent( val ){ valueComponent( val ) {
this.$emit('input', val); this.$emit('input', val);
} }
}, },
@ -95,7 +116,7 @@
this.taxonomyId = metadata_type_options.taxonomy_id; this.taxonomyId = metadata_type_options.taxonomy_id;
this.taxonomy = metadata_type_options.taxonomy; this.taxonomy = metadata_type_options.taxonomy;
if (metadata_type_options && metadata_type_options.allow_new_terms && this.itemMetadatum.item) if (this.itemMetadatum.item && this.itemMetadatum.item.id && metadata_type_options && metadata_type_options.allow_new_terms && this.itemMetadatum.item)
this.allowNew = metadata_type_options.allow_new_terms == 'yes'; this.allowNew = metadata_type_options.allow_new_terms == 'yes';
this.getTermsId(); this.getTermsId();
@ -140,23 +161,8 @@
} }
}, },
openTermCreationModal(newTerm) { openTermCreationModal(newTerm) {
this.$buefy.modal.open({ this.newTermName = newTerm.name;
parent: this, this.isTermCreationModalOpen = true;
component: TermEditionForm,
canCancel: ['outside', 'escape'],
props: {
taxonomyId: this.taxonomyId,
editForm: { id: 'new', name: newTerm.name ? newTerm.name : '' },
isModal: true
},
events: {
onEditionFinished: ($event) => this.addRecentlyCreatedTerm($event.term),
onEditionCanceled: () => this.$console.log('Edition canceled'),
onErrorFound: ($event) => this.$console.log('Form with errors: ' + $event)
},
trapFocus: true
});
} }
} }
} }

View File

@ -13,6 +13,8 @@
v-model="selected" v-model="selected"
:data="labels" :data="labels"
field="label" field="label"
:remove-on-keys="[]"
:dropdown-position="isLastMetadatum ? 'top' :'auto'"
attached attached
ellipsis ellipsis
:aria-close-label="$i18n.get('remove_value')" :aria-close-label="$i18n.get('remove_value')"
@ -59,6 +61,7 @@
disabled: false, disabled: false,
allowSelectToCreate: false, allowSelectToCreate: false,
maxtags: '', maxtags: '',
isLastMetadatum: false
}, },
data() { data() {
return { return {

View File

@ -21,7 +21,8 @@ class Taxonomy extends Metadata_Type {
$this->set_default_options([ $this->set_default_options([
'allow_new_terms' => 'no', 'allow_new_terms' => 'no',
'link_filtered_by_collections' => [] 'link_filtered_by_collections' => [],
'input_type' => 'tainacan-taxonomy-radio',
]); ]);
$this->set_form_component('tainacan-form-taxonomy'); $this->set_form_component('tainacan-form-taxonomy');
@ -73,7 +74,6 @@ class Taxonomy extends Metadata_Type {
</div> </div>
'); ');
add_filter( 'tainacan-term-to-html', [$this, 'term_to_html'], 10, 2 );
} }
/** /**
@ -112,6 +112,11 @@ class Taxonomy extends Metadata_Type {
if (empty($this->get_option('taxonomy_id'))) if (empty($this->get_option('taxonomy_id')))
return ['taxonomy_id' => __('Please select a taxonomy', 'tainacan')]; return ['taxonomy_id' => __('Please select a taxonomy', 'tainacan')];
$options = $metadatum->get_metadata_type_options();
if ( !$metadatum->is_multiple() && $this->get_option('input_type') !== 'tainacan-taxonomy-radio' ) {
return ['input_type' => __('A taxonomy metadata that does not accept multiple values should use a radio type input', 'tainacan')];
}
$Tainacan_Metadata = Metadata::get_instance(); $Tainacan_Metadata = Metadata::get_instance();
// Check taxonomy visibility // Check taxonomy visibility
@ -225,37 +230,6 @@ class Taxonomy extends Metadata_Type {
} }
public function term_to_html($return, $term) {
$collections = $this->get_option( 'link_filtered_by_collections' );
if ( !empty( $collections ) ) {
$return = '';
$id = $term->get_id();
if ( $id ) {
$link = get_term_link( (int) $id );
if (is_string($link)) {
$meta_query = [
'metaquery' => [
[
'key' => 'collection_id',
'compare' => 'IN',
'value' => $collections
]
]
];
$link = $link . '?' . http_build_query( $meta_query );
$return = "<a data-linkto='term' data-id='$id' href='$link'>";
$return.= $term->get_name();
$return .= "</a>";
}
}
return $return;
}
return $return;
}
/** /**
* Return the value of an Item_Metadata_Entity using a metadatum of this metadatum type as an html string * Return the value of an Item_Metadata_Entity using a metadatum of this metadatum type as an html string
* @param Item_Metadata_Entity $item_metadata * @param Item_Metadata_Entity $item_metadata
@ -314,11 +288,11 @@ class Taxonomy extends Metadata_Type {
$terms = []; $terms = [];
$terms[] = $term->_toHtml(); $terms[] = $this->term_to_html($term);
while ($term->get_parent() > 0) { while ($term->get_parent() > 0) {
$term = \Tainacan\Repositories\Terms::get_instance()->fetch( (int) $term->get_parent(), $term->get_taxonomy() ); $term = \Tainacan\Repositories\Terms::get_instance()->fetch( (int) $term->get_parent(), $term->get_taxonomy() );
$terms[] = $term->_toHtml(); $terms[] = $this->term_to_html($term);
} }
$terms = \array_reverse($terms); $terms = \array_reverse($terms);
@ -329,6 +303,35 @@ class Taxonomy extends Metadata_Type {
} }
private function term_to_html($term) {
$collections = $this->get_option( 'link_filtered_by_collections' );
if ( !empty( $collections ) ) {
$return = '';
$id = $term->get_id();
if ( $id ) {
$link = get_term_link( (int) $id );
if (is_string($link)) {
$meta_query = [
'metaquery' => [
[
'key' => 'collection_id',
'compare' => 'IN',
'value' => $collections
]
]
];
$link = $link . '?' . http_build_query( $meta_query );
$return = "<a data-linkto='term' data-id='$id' href='$link'>";
$return.= $term->get_name();
$return .= "</a>";
}
}
return $return;
}
return $term->_toHtml();
}
public function _toArray() { public function _toArray() {
$array = parent::_toArray(); $array = parent::_toArray();

View File

@ -16,6 +16,8 @@
:placeholder="$i18n.get('instruction_type_search_users')" :placeholder="$i18n.get('instruction_type_search_users')"
keep-first keep-first
open-on-focus open-on-focus
:remove-on-keys="[]"
:dropdown-position="isLastMetadatum ? 'top' :'auto'"
:loading="isLoading || isLoading" :loading="isLoading || isLoading"
:aria-close-label="$i18n.get('remove_value')" :aria-close-label="$i18n.get('remove_value')"
:class="{'has-selected': selected != undefined && selected != []}" :class="{'has-selected': selected != undefined && selected != []}"
@ -58,6 +60,7 @@ export default {
maxtags: undefined, maxtags: undefined,
disabled: false, disabled: false,
allowNew: true, allowNew: true,
isLastMetadatum: false
}, },
data() { data() {
return { return {

View File

@ -440,7 +440,7 @@
}).then(() => { }).then(() => {
this.finalizeProcedure(criterion); this.finalizeProcedure(criterion);
}); });
} if(procedure.metadatum.id === 'comments'){ } else if (procedure.metadatum.id === 'comments') {
this.setCommentStatusInBulk({ this.setCommentStatusInBulk({
collectionId: this.collectionId, collectionId: this.collectionId,
groupId: this.groupId, groupId: this.groupId,

View File

@ -31,7 +31,7 @@
class="level-item"> class="level-item">
<router-link <router-link
tag="a" tag="a"
:to="{ path: collection && collection.id ? $routerHelper.getCollectionItemsPath(collection.id, '') : '' }" :to="{ path: collection && collection.id ? $routerHelper.getCollectionItemsPath(collection.id, '') : '', query: activeRoute == 'CollectionItemsPage' ? $route.query : '' }"
:aria-label="$i18n.get('label_collection_items')"> :aria-label="$i18n.get('label_collection_items')">
<span class="icon"> <span class="icon">
<i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-items"/> <i class="tainacan-icon tainacan-icon-1-25em tainacan-icon-items"/>

View File

@ -108,7 +108,7 @@
class="tainacan-finder-column" class="tainacan-finder-column"
:key="finderColumn.label + '-' + key"> :key="finderColumn.label + '-' + key">
<p class="column-label"> <p class="column-label">
{{ finderColumn.label ? finderColumn.label : $i18n.get('label_terms_without_parent') }} {{ finderColumn.label ? finderColumn.label : $i18n.get('label_root_terms') }}
</p> </p>
<ul v-if="finderColumn.children.length"> <ul v-if="finderColumn.children.length">
<b-field <b-field
@ -676,7 +676,6 @@
let query = `?order=asc&parent=${parent}&number=${this.maxNumOptionsCheckboxFinderColumns}&offset=0&${qs.stringify(query_items)}` let query = `?order=asc&parent=${parent}&number=${this.maxNumOptionsCheckboxFinderColumns}&offset=0&${qs.stringify(query_items)}`
this.isColumnLoading = true; this.isColumnLoading = true;
let route = `/collection/${this.collectionId}/facets/${this.metadatumId}${query}`; let route = `/collection/${this.collectionId}/facets/${this.metadatumId}${query}`;
if (this.collectionId == 'default') if (this.collectionId == 'default')
@ -1027,6 +1026,7 @@
border-radius: 0 !important; border-radius: 0 !important;
min-height: 100%; min-height: 100%;
border: 1px solid var(--tainacan-input-border-color); border: 1px solid var(--tainacan-input-border-color);
background-color: var(--tainacan-input-background-color);
transition: background 0.2s ease; transition: background 0.2s ease;
} }
.button.is-active { .button.is-active {
@ -1096,6 +1096,10 @@
.tags.is-small { .tags.is-small {
font-size: 0.875em; font-size: 0.875em;
} }
section p {
font-size: 0.875em;
}
} }
.tainacan-modal-checkbox-search-results-body { .tainacan-modal-checkbox-search-results-body {

File diff suppressed because it is too large Load Diff

View File

@ -104,7 +104,7 @@
class="tainacan-finder-column" class="tainacan-finder-column"
:key="finderColumn.label + '-' + key"> :key="finderColumn.label + '-' + key">
<p class="column-label"> <p class="column-label">
{{ finderColumn.label ? finderColumn.label : $i18n.get('label_terms_without_parent') }} {{ finderColumn.label ? finderColumn.label : $i18n.get('label_root_terms') }}
</p> </p>
<ul v-if="finderColumn.children.length"> <ul v-if="finderColumn.children.length">
<b-field <b-field
@ -188,37 +188,51 @@
:style="{ height: expandResultsSection ? 'auto' : '0px' }" :style="{ height: expandResultsSection ? 'auto' : '0px' }"
class="modal-card-body tainacan-search-results-container"> class="modal-card-body tainacan-search-results-container">
<ul class="tainacan-modal-checkbox-search-results-body"> <ul class="tainacan-modal-checkbox-search-results-body">
<li <template v-if="searchResults.length">
class="tainacan-li-search-results" <li
v-for="(option, key) in searchResults" class="tainacan-li-search-results"
:key="key"> v-for="(option, key) in searchResults"
<label :key="key">
v-if="isCheckbox" <label
class="b-checkbox checkbox"> v-if="isCheckbox"
<input class="b-checkbox checkbox">
<input
v-model="selected"
:value="option.id ? (isNaN(Number(option.id)) ? option.id : Number(option.id)) : (isNaN(Number(option.value)) ? option.value : Number(option.value))"
type="checkbox">
<span class="check" />
<span class="control-label">
<span
class="checkbox-label-text"
v-html="`${ option.name ? option.name : (option.label ? (option.hierarchy_path ? renderHierarchicalPath(option.hierarchy_path, option.label) : option.label) : '') }`" />
</span>
</label>
<b-radio
v-tooltip="{
content: option.name ? option.name : option.label,
autoHide: false,
}"
v-else
v-model="selected" v-model="selected"
:value="option.id ? (isNaN(Number(option.id)) ? option.id : Number(option.id)) : (isNaN(Number(option.value)) ? option.value : Number(option.value))" :native-value="option.id ? (isNaN(Number(option.id)) ? option.id : Number(option.value)) : (isNaN(Number(option.value)) ? option.value : Number(option.value))">
type="checkbox">
<span class="check" />
<span class="control-label">
<span <span
class="checkbox-label-text" class="checkbox-label-text"
v-html="`${ option.name ? option.name : (option.label ? (option.hierarchy_path ? renderHierarchicalPath(option.hierarchy_path, option.label) : option.label) : '') }`" /> v-html="`${ option.name ? option.name : (option.label ? (option.hierarchy_path ? renderHierarchicalPath(option.hierarchy_path, option.label) : option.label) : '') }`" />
</span> </b-radio>
</label> </li>
<b-radio </template>
v-tooltip="{ <template v-if="!isLoadingSearch && !searchResults.length">
content: option.name ? option.name : option.label, <li class="tainacan-li-search-results result-info">
autoHide: false, {{ $i18n.get('info_no_terms_found') }}
}" </li>
v-else </template>
v-model="selected" <template v-if="!isLoadingSearch && allowNew && !searchResults.length">
:native-value="option.id ? (isNaN(Number(option.id)) ? option.id : Number(option.value)) : (isNaN(Number(option.value)) ? option.value : Number(option.value))"> <li class="tainacan-li-search-results result-info">
<span <a @click="$emit('showAddNewTerm', { name: optionName })">
class="checkbox-label-text" {{ $i18n.get('label_new_term') + ' "' + optionName + '"' }}
v-html="`${ option.name ? option.name : (option.label ? (option.hierarchy_path ? renderHierarchicalPath(option.hierarchy_path, option.label) : option.label) : '') }`" /> </a>
</b-radio> </li>
</li> </template>
<b-loading <b-loading
:is-full-page="false" :is-full-page="false"
:active.sync="isLoadingSearch"/> :active.sync="isLoadingSearch"/>
@ -227,7 +241,7 @@
</b-tab-item> </b-tab-item>
<b-tab-item :label="isTaxonomy ? $i18n.get('label_selected_terms') : $i18n.get('label_selected_metadatum_values')"> <b-tab-item :label="(isTaxonomy ? $i18n.get('label_selected_terms') : $i18n.get('label_selected_metadatum_values')) + (amountSelected !== null && amountSelected !== undefined ? (' (' + amountSelected + ')' ): '') ">
<div class="modal-card-body tainacan-tags-container"> <div class="modal-card-body tainacan-tags-container">
<b-field <b-field
@ -294,6 +308,7 @@
metadatumId: Number, metadatumId: Number,
metadatum: Object, metadatum: Object,
selected: Array, selected: Array,
allowNew: Boolean,
isTaxonomy: { isTaxonomy: {
type: Boolean, type: Boolean,
default: false, default: false,
@ -303,7 +318,8 @@
isCheckbox: { isCheckbox: {
type: Boolean, type: Boolean,
default: true, default: true,
} },
amountSelected: 0
}, },
data() { data() {
return { return {
@ -358,6 +374,7 @@
this.$parent.$on('update-taxonomy-inputs', ($event) => { this.$parent.$on('update-taxonomy-inputs', ($event) => {
if ($event.taxonomyId == this.taxonomy_id && $event.metadatumId == this.metadatumId) { if ($event.taxonomyId == this.taxonomy_id && $event.metadatumId == this.metadatumId) {
this.finderColumns = []; this.finderColumns = [];
this.optionName = '';
this.hierarchicalPath = []; this.hierarchicalPath = [];
this.isSearching = false; this.isSearching = false;
this.searchResults = []; this.searchResults = [];
@ -733,7 +750,7 @@
margin-bottom: 0 !important; margin-bottom: 0 !important;
ul { ul {
padding: none; padding: 0;
} }
} }
.hidden-tabs-section /deep/ .tabs { .hidden-tabs-section /deep/ .tabs {
@ -792,9 +809,14 @@
} }
} }
&:hover { &:hover:not(.result-info) {
background-color: var(--tainacan-gray1); background-color: var(--tainacan-gray1);
} }
&.result-info {
width: 100%;
column-span: all;
font-size: 0.75em;
}
} }
.tainacan-li-checkbox-modal { .tainacan-li-checkbox-modal {
@ -947,6 +969,7 @@
.button { .button {
border-radius: 0 !important; border-radius: 0 !important;
min-height: 100%; min-height: 100%;
background-color: var(--tainacan-input-background-color);
border: 1px solid var(--tainacan-input-border-color); border: 1px solid var(--tainacan-input-border-color);
transition: background 0.2s ease; transition: background 0.2s ease;
} }
@ -1017,6 +1040,10 @@
.tags.is-small { .tags.is-small {
font-size: 0.875em; font-size: 0.875em;
} }
section p {
font-size: 0.875em;
}
} }
.tainacan-modal-checkbox-search-results-body { .tainacan-modal-checkbox-search-results-body {

View File

@ -1,117 +0,0 @@
<template>
<b-field
v-if="collections && collections.length"
class="filter-item-forms">
<b-collapse
aria-id="collection-filters-collapse"
class="show"
:open="collections.length != 1 ? open : false"
animation="filter-item">
<label
class="label"
slot="trigger"
slot-scope="props">
<span class="icon is-right">
<i
:class="{ 'tainacan-icon-arrowdown': props.open, 'tainacan-icon-arrowright': !props.open }"
class="tainacan-icon tainacan-icon-1-25em" />
</span>
{{ $i18n.get('collections') }}
</label>
<div
v-if="collections.length > 1"
class="block">
<div
v-for="(collection, key) in collections"
:key="key"
class="control">
<b-checkbox
v-model="collectionsIdsToFilter"
:native-value="collection.id"
@input="applyFilter">
{{ collection.name }}
</b-checkbox>
</div>
</div>
<div
v-else
class="block">
<div
v-for="(collection, key) in collections"
:key="key"
class="control">
<b-checkbox
v-model="fakeTrueValue"
:disabled="true"
:native-value="true">
{{ collection.name }}
</b-checkbox>
</div>
</div>
</b-collapse>
</b-field>
</template>
<script>
import { mapActions, mapGetters } from 'vuex';
export default {
name: 'CollectionFilter',
props: {
query: Object,
open: false,
},
data(){
return {
inputs: [],
collectionsIdsToFilter: [],
fakeTrueValue: true
}
},
computed: {
collections(){
return this.getCollections();
},
},
created(){
this.fetchCollections({
page: 1,
collectionsPerPage: -1,
status: null,
contextEdit: false
});
},
mounted(){
let routeQueries = this.$route.query;
if(routeQueries.metaquery &&
routeQueries.metaquery[0] &&
Array.isArray(routeQueries.metaquery[0].value)){
this.collectionsIdsToFilter = routeQueries.metaquery[0].value;
this.applyFilter();
}
},
methods: {
...mapActions('search', [
'setPage'
]),
...mapActions('collection', [
'fetchCollections'
]),
...mapGetters('collection', [
'getCollections',
]),
applyFilter(){
this.$eventBusSearch.$emit( 'input', {
filter: 'checkbox',
metadatum_id: 'collection_id',
value: this.collectionsIdsToFilter,
compare: 'IN',
collection_id: this.collectionsIdsToFilter,
});
}
}
}
</script>

View File

@ -9,7 +9,7 @@
</a> </a>
<div class="help-tooltip"> <div class="help-tooltip">
<div class="help-tooltip-header"> <div class="help-tooltip-header">
<h5>{{ title }}</h5> <h5 class="has-text-color">{{ title }}</h5>
</div> </div>
<div class="help-tooltip-body"> <div class="help-tooltip-body">
<p v-html="(message != '' && message != undefined) ? message : $i18n.get('info_no_description_provided')"/> <p v-html="(message != '' && message != undefined) ? message : $i18n.get('info_no_description_provided')"/>
@ -49,8 +49,7 @@ export default {
} }
.help-tooltip { .help-tooltip {
z-index: 99999999999999999999; z-index: 99999999999999999999;
color: var(--tainacan-turquoise5); background-color: var(--tainacan-primary);
background-color: var(--tainacan-turquoise2);
border: none; border: none;
display: block; display: block;
border-radius: 5px; border-radius: 5px;
@ -70,6 +69,9 @@ export default {
h5 { h5 {
font-size: 0.875em; font-size: 0.875em;
font-weight: bold; font-weight: bold;
color: var(--tainacan-secondary);
margin-bottom: 0;
margin-top: 0;
} }
} }
@ -77,11 +79,14 @@ export default {
padding: 0.5em 1.0em 1.0em 1.0em; padding: 0.5em 1.0em 1.0em 1.0em;
p { p {
margin: 0 0 0.125em 0;
font-size: 0.875em !important; font-size: 0.875em !important;
font-weight: normal !important; font-weight: normal !important;
white-space: normal !important; white-space: normal !important;
overflow: visible !important; overflow: visible !important;
max-height: 100% !important; max-height: 100% !important;
line-height: normal;
color: var(--tainacan-secondary);
} }
} }
@ -95,7 +100,7 @@ export default {
border-style: solid; border-style: solid;
} }
&:before { &:before {
border-color: var(--tainacan-turquoise2) transparent transparent transparent; border-color: var(--tainacan-primary) transparent transparent transparent;
border-right-width: 15px; border-right-width: 15px;
border-top-width: 12px; border-top-width: 12px;
border-left-width: 15px; border-left-width: 15px;

View File

@ -13,16 +13,23 @@
</div> </div>
<div class="help-tooltip-body"> <div class="help-tooltip-body">
<ol> <ol>
<li <template v-for="(error, index) of formErrors">
v-for="(error, index) of formErrors" <li
:key="index"> v-if="error.errors.length"
<a :key="index">
v-if="metadataElements[error.metadatum_id + (error.parent_meta_id ? ('_parent_meta_id-' + error.parent_meta_id) : '')]" <a
@click="metadataElements[error.metadatum_id + (error.parent_meta_id ? ('_parent_meta_id-' + error.parent_meta_id) : '')].scrollIntoView({ behavior: 'smooth', block: 'center' })"> v-if="['thumbnail', 'attachments', 'document'].includes(error.metadatum_id)"
{{ getErrorMessage(error.errors) }} @click="metadataElements[error.metadatum_id].scrollIntoView({ behavior: 'smooth', block: 'center' })">
</a> {{ getErrorMessage(error.errors) }}
<p v-else>{{ getErrorMessage(error.errors) }}</p> </a>
</li> <a
v-else-if="metadataElements[error.metadatum_id + (error.parent_meta_id ? ('_parent_meta_id-' + error.parent_meta_id) : '')]"
@click="metadataElements[error.metadatum_id + (error.parent_meta_id ? ('_parent_meta_id-' + error.parent_meta_id) : '')].scrollIntoView({ behavior: 'smooth', block: 'center' })">
{{ getErrorMessage(error.errors) }}
</a>
<p v-else>{{ getErrorMessage(error.errors) }}</p>
</li>
</template>
</ol> </ol>
</div> </div>
</div> </div>
@ -44,8 +51,12 @@ export default {
getErrorMessage(errors) { getErrorMessage(errors) {
let metadatumErrorMessage = ''; let metadatumErrorMessage = '';
for (let singleError of errors) { for (let singleError of errors) {
for (let index of Object.keys(singleError)) if (typeof singleError != 'string') {
metadatumErrorMessage += singleError[index] + '\n'; for (let index of Object.keys(singleError))
metadatumErrorMessage += singleError[index] + '\n';
} else {
metadatumErrorMessage += singleError;
}
} }
return metadatumErrorMessage; return metadatumErrorMessage;
}, },
@ -99,6 +110,9 @@ export default {
h5 { h5 {
font-size: 0.875em; font-size: 0.875em;
font-weight: bold; font-weight: bold;
color: var(--tainacan-red2);
margin-bottom: 0;
margin-top: 0;
} }
} }
@ -111,15 +125,22 @@ export default {
font-weight: normal !important; font-weight: normal !important;
white-space: normal !important; white-space: normal !important;
overflow: visible !important; overflow: visible !important;
line-height: normal;
color: var(--tainacan-red2) !important;
} }
a { a {
color: var(--tainacan-red2);
text-decoration: underline; text-decoration: underline;
} }
a:hover {
color: var(--tainacan-red2) !important;
}
ol, ul { ol, ul {
margin: 4px 4px; margin: 4px 4px;
padding-left: 16px; padding-left: 16px;
} }
li {
line-height: 0.875em;
}
} }
&:before { &:before {
content: ""; content: "";

Some files were not shown because too many files have changed in this diff Show More