handling blok redhydratation
This commit is contained in:
parent
0c53c32c23
commit
0a53199b3d
|
|
@ -23,6 +23,10 @@
|
||||||
"tooltipWords": {
|
"tooltipWords": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"default": []
|
"default": []
|
||||||
|
},
|
||||||
|
"vocabulairesPostsIds": {
|
||||||
|
"type": "array",
|
||||||
|
"default": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1 +1 @@
|
||||||
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '5051d822b38f2dd8e9ad');
|
<?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => '26852ebc6e130b4f3af8');
|
||||||
|
|
|
||||||
|
|
@ -100,46 +100,8 @@ function Edit({
|
||||||
let {
|
let {
|
||||||
tooltipWords
|
tooltipWords
|
||||||
} = attributes;
|
} = attributes;
|
||||||
console.log("tooltipWords", tooltipWords);
|
console.log("tooltipWords ATTRIBUTES", tooltipWords);
|
||||||
let [hasFetchedDatas, setHasFetchedDatas] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useState)(false);
|
let [hasFetchedDatas, setHasFetchedDatas] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useState)(false);
|
||||||
function CurrentThematiqueDisplay({
|
|
||||||
id
|
|
||||||
}) {
|
|
||||||
const {
|
|
||||||
record,
|
|
||||||
isResolving
|
|
||||||
} = (0,_wordpress_core_data__WEBPACK_IMPORTED_MODULE_4__.useEntityRecord)("taxonomy", "thematiques", id);
|
|
||||||
if (isResolving) {
|
|
||||||
return "Loading...";
|
|
||||||
}
|
|
||||||
if (!record) {
|
|
||||||
return "no post...";
|
|
||||||
}
|
|
||||||
return record.name;
|
|
||||||
}
|
|
||||||
function getCurrentThematique(id) {
|
|
||||||
const {
|
|
||||||
record,
|
|
||||||
isResolving
|
|
||||||
} = (0,_wordpress_core_data__WEBPACK_IMPORTED_MODULE_4__.useEntityRecord)("taxonomy", "thematiques", id);
|
|
||||||
if (isResolving) {
|
|
||||||
return "Loading...";
|
|
||||||
}
|
|
||||||
if (!record) {
|
|
||||||
return "no post...";
|
|
||||||
}
|
|
||||||
return record;
|
|
||||||
}
|
|
||||||
function filterToolTipsArray(tooltipWords) {
|
|
||||||
const filteredTooltipWords = [];
|
|
||||||
tooltipWords.forEach(tooltipWord => {
|
|
||||||
const existingTooltip = filteredTooltipWords.find(item => item.tooltipID === tooltipWord.tooltipID);
|
|
||||||
if (!existingTooltip) {
|
|
||||||
filteredTooltipWords.push(tooltipWord);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return filteredTooltipWords;
|
|
||||||
}
|
|
||||||
function parseContentTooltips(editorContent) {
|
function parseContentTooltips(editorContent) {
|
||||||
const parser = new DOMParser();
|
const parser = new DOMParser();
|
||||||
const doc = parser.parseFromString(editorContent, "text/html");
|
const doc = parser.parseFromString(editorContent, "text/html");
|
||||||
|
|
@ -170,13 +132,32 @@ function Edit({
|
||||||
});
|
});
|
||||||
return blocksTooltipWords;
|
return blocksTooltipWords;
|
||||||
}
|
}
|
||||||
function buildTooltipWords() {
|
function filterToolTipsArray(tooltipWords) {
|
||||||
|
const filteredTooltipWords = Array.from(new Map(tooltipWords.map(tooltipWord => [tooltipWord.tooltipID, tooltipWord])).values());
|
||||||
|
return filteredTooltipWords;
|
||||||
|
// const filteredTooltipWords = [];
|
||||||
|
|
||||||
|
// tooltipWords.forEach((tooltipWord) => {
|
||||||
|
// const existingTooltip = filteredTooltipWords.find(
|
||||||
|
// (item) => item.tooltipID === tooltipWord.tooltipID,
|
||||||
|
// );
|
||||||
|
|
||||||
|
// if (!existingTooltip) {
|
||||||
|
// filteredTooltipWords.push(tooltipWord);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
function parseTooltipWords() {
|
||||||
let newParsedTooltipWords = parseContentTooltips(currentPost.content);
|
let newParsedTooltipWords = parseContentTooltips(currentPost.content);
|
||||||
let newBlocksTooltipWords = parseBlocksTooltips(currentBlocks);
|
let newBlocksTooltipWords = parseBlocksTooltips(currentBlocks);
|
||||||
let allTooltipWords = [...newParsedTooltipWords, ...newBlocksTooltipWords];
|
let allTooltipWords = [...newParsedTooltipWords, ...newBlocksTooltipWords];
|
||||||
const filteredTooltipWords = filterToolTipsArray(allTooltipWords);
|
const filteredTooltipWords = filterToolTipsArray(allTooltipWords);
|
||||||
return filteredTooltipWords;
|
return filteredTooltipWords;
|
||||||
}
|
}
|
||||||
|
function buildTooltipWordsIdArray(tooltipsArray) {
|
||||||
|
const tooltipWordsIds = tooltipsArray.map(tooltipWord => tooltipWord.tooltipID);
|
||||||
|
return tooltipWordsIds;
|
||||||
|
}
|
||||||
function compareHasNewVocabularyWord(previousWords, newWords) {
|
function compareHasNewVocabularyWord(previousWords, newWords) {
|
||||||
return !(JSON.stringify(previousWords) === JSON.stringify(newWords));
|
return !(JSON.stringify(previousWords) === JSON.stringify(newWords));
|
||||||
}
|
}
|
||||||
|
|
@ -185,11 +166,21 @@ function Edit({
|
||||||
const currentTaxonomies = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.useSelect)(select => select("core/editor").getCurrentPostAttribute("thematiques"));
|
const currentTaxonomies = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.useSelect)(select => select("core/editor").getCurrentPostAttribute("thematiques"));
|
||||||
let currentThematique = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.useSelect)(select => select("core").getEntityRecord("taxonomy", "thematiques", currentTaxonomies[0] // or currentPost.thematiques[0] works as well
|
let currentThematique = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.useSelect)(select => select("core").getEntityRecord("taxonomy", "thematiques", currentTaxonomies[0] // or currentPost.thematiques[0] works as well
|
||||||
), [currentTaxonomies]);
|
), [currentTaxonomies]);
|
||||||
|
const tooltipWordsIds = buildTooltipWordsIdArray(tooltipWords);
|
||||||
|
const vocabulairePosts = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_6__.useSelect)(select => {
|
||||||
|
if (!tooltipWordsIds.length) return [];
|
||||||
|
return select("core").getEntityRecords("postType", "vocabulaire", {
|
||||||
|
per_page: -1,
|
||||||
|
include: tooltipWordsIds
|
||||||
|
});
|
||||||
|
}, [tooltipWordsIds]);
|
||||||
|
console.log("vocabulairePosts", vocabulairePosts);
|
||||||
const currentLang = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_8__.getAdminLanguageFromCookie)("wp-wpml_current_language");
|
const currentLang = (0,_utilities_js__WEBPACK_IMPORTED_MODULE_8__.getAdminLanguageFromCookie)("wp-wpml_current_language");
|
||||||
const localBlockName = currentLang === "fr" ? "Vocabulaire" : "Woordenschat";
|
const localBlockName = currentLang === "fr" ? "Vocabulaire" : "Woordenschat";
|
||||||
(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {
|
(0,_wordpress_element__WEBPACK_IMPORTED_MODULE_5__.useEffect)(() => {
|
||||||
if (currentPost.content && currentBlocks) {
|
if (currentPost.content && currentBlocks) {
|
||||||
const newTooltipWords = buildTooltipWords();
|
const newTooltipWords = parseTooltipWords();
|
||||||
|
const newTooltipWordsDatas = buildTooltipWordsIdArray(newTooltipWords);
|
||||||
if (compareHasNewVocabularyWord(tooltipWords, newTooltipWords)) {
|
if (compareHasNewVocabularyWord(tooltipWords, newTooltipWords)) {
|
||||||
setAttributes({
|
setAttributes({
|
||||||
tooltipWords: newTooltipWords
|
tooltipWords: newTooltipWords
|
||||||
|
|
@ -203,9 +194,9 @@ function Edit({
|
||||||
})
|
})
|
||||||
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
|
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("h2", {
|
||||||
className: "homegrade-blocks-vocabulaire-summary__title"
|
className: "homegrade-blocks-vocabulaire-summary__title"
|
||||||
}, localBlockName + " — ", currentThematique && currentThematique.name ? currentThematique.name : "...pas de thématique"), tooltipWords && tooltipWords.map(elem => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("details", {
|
}, localBlockName + " — ", currentThematique && currentThematique.name ? currentThematique.name : "...pas de thématique"), vocabulairePosts && vocabulairePosts.map(elem => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("details", {
|
||||||
className: "question"
|
className: "question"
|
||||||
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("summary", null, elem.tooltipText, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
|
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("summary", null, elem.title.rendered, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", {
|
||||||
className: "open-close-icon"
|
className: "open-close-icon"
|
||||||
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
|
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("img", {
|
||||||
src: _img_chevron_down_svg__WEBPACK_IMPORTED_MODULE_7__["default"],
|
src: _img_chevron_down_svg__WEBPACK_IMPORTED_MODULE_7__["default"],
|
||||||
|
|
@ -217,7 +208,7 @@ function Edit({
|
||||||
class: " homegrade-dynamic-accordeon__content"
|
class: " homegrade-dynamic-accordeon__content"
|
||||||
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
|
}, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("p", {
|
||||||
className: "homegrade-blocks-vocabulaire-summary__content"
|
className: "homegrade-blocks-vocabulaire-summary__content"
|
||||||
}, elem.tooltipDefinition))))));
|
}, elem.acf.definition))))));
|
||||||
}
|
}
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
@ -381,7 +372,7 @@ module.exports = window["wp"]["i18n"];
|
||||||
\************************/
|
\************************/
|
||||||
/***/ ((module) => {
|
/***/ ((module) => {
|
||||||
|
|
||||||
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/vocabulaire-summary","version":"0.1.0","title":"Vocabulaire de la fiche","category":"homegrade-blocks","icon":{"foreground":"#DF1E1E","src":"testimonial"},"description":"Pour afficher tout le vocabulaire contenu dans la fiche","supports":{"html":false,"multiple":false},"textdomain":"homegrade-blocks","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php","attributes":{"tooltipWords":{"type":"array","default":[]}}}');
|
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"homegrade-content-blocks/vocabulaire-summary","version":"0.1.0","title":"Vocabulaire de la fiche","category":"homegrade-blocks","icon":{"foreground":"#DF1E1E","src":"testimonial"},"description":"Pour afficher tout le vocabulaire contenu dans la fiche","supports":{"html":false,"multiple":false},"textdomain":"homegrade-blocks","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php","attributes":{"tooltipWords":{"type":"array","default":[]},"vocabulairesPostsIds":{"type":"array","default":[]}}}');
|
||||||
|
|
||||||
/***/ })
|
/***/ })
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -13,12 +13,7 @@ endif;
|
||||||
|
|
||||||
global $post;
|
global $post;
|
||||||
$thematique = get_the_terms($post->ID, 'thematiques')[0] ?? null;
|
$thematique = get_the_terms($post->ID, 'thematiques')[0] ?? null;
|
||||||
|
|
||||||
|
|
||||||
write_log($tooltipWords);
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<?php return array('dependencies' => array(), 'version' => '399a1e7def5ebaedbda7');
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
/******/ (() => { // webpackBootstrap
|
|
||||||
var __webpack_exports__ = {};
|
|
||||||
/*!*********************!*\
|
|
||||||
!*** ./src/view.js ***!
|
|
||||||
\*********************/
|
|
||||||
// NO NEEDED ANYMORE BECAUSE DIRECTLY UPDATED BY PHP
|
|
||||||
|
|
||||||
// async function updateWordsDefinitions() {
|
|
||||||
// const vocabularySummary = document.querySelector("#vocabulaire-summary");
|
|
||||||
// let tooltipWordsDefinition = vocabularySummary.querySelectorAll("details");
|
|
||||||
|
|
||||||
// const vocabulairesPostsIds = Array.from(tooltipWordsDefinition).map(
|
|
||||||
// (element) => element.getAttribute("data-definition-id"),
|
|
||||||
// );
|
|
||||||
|
|
||||||
// try {
|
|
||||||
// const tooltipData = await getTooltipsDatas(vocabulairesPostsIds);
|
|
||||||
|
|
||||||
// tooltipWordsDefinition.forEach((word, index) => {
|
|
||||||
// const foundTooltipDatas = tooltipData.find(
|
|
||||||
// (tooltip) =>
|
|
||||||
// tooltip.id === parseInt(word.getAttribute("data-definition-id")),
|
|
||||||
// );
|
|
||||||
|
|
||||||
// const definitionText = word.querySelector(
|
|
||||||
// ".homegrade-blocks-vocabulaire-summary__content",
|
|
||||||
// );
|
|
||||||
// definitionText.textContent = foundTooltipDatas.acf.definition;
|
|
||||||
// });
|
|
||||||
// } catch (error) {
|
|
||||||
// console.log("Something went wrong!", error);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// async function getTooltipsDatas(vocabulairesPostsIds) {
|
|
||||||
// try {
|
|
||||||
// const response = await fetch(
|
|
||||||
// `/wp-json/wp/v2/vocabulaire?include=${vocabulairesPostsIds.toString()}`,
|
|
||||||
// );
|
|
||||||
// if (!response.ok) {
|
|
||||||
// throw new Error(`Request failed with status: ${response.status}`);
|
|
||||||
// }
|
|
||||||
// const data = await response.json();
|
|
||||||
// return data;
|
|
||||||
// } catch (err) {
|
|
||||||
// throw err;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// window.addEventListener("DOMContentLoaded", (event) => {
|
|
||||||
// updateWordsDefinitions();
|
|
||||||
// });
|
|
||||||
/******/ })()
|
|
||||||
;
|
|
||||||
//# sourceMappingURL=view.js.map
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
{"version":3,"file":"view.js","mappings":";;;;;AAAA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,M","sources":["webpack://vocabulaire-summary/./src/view.js"],"sourcesContent":["// NO NEEDED ANYMORE BECAUSE DIRECTLY UPDATED BY PHP\r\n\r\n// async function updateWordsDefinitions() {\r\n// \tconst vocabularySummary = document.querySelector(\"#vocabulaire-summary\");\r\n// \tlet tooltipWordsDefinition = vocabularySummary.querySelectorAll(\"details\");\r\n\r\n// \tconst vocabulairesPostsIds = Array.from(tooltipWordsDefinition).map(\r\n// \t\t(element) => element.getAttribute(\"data-definition-id\"),\r\n// \t);\r\n\r\n// \ttry {\r\n// \t\tconst tooltipData = await getTooltipsDatas(vocabulairesPostsIds);\r\n\r\n// \t\ttooltipWordsDefinition.forEach((word, index) => {\r\n// \t\t\tconst foundTooltipDatas = tooltipData.find(\r\n// \t\t\t\t(tooltip) =>\r\n// \t\t\t\t\ttooltip.id === parseInt(word.getAttribute(\"data-definition-id\")),\r\n// \t\t\t);\r\n\r\n// \t\t\tconst definitionText = word.querySelector(\r\n// \t\t\t\t\".homegrade-blocks-vocabulaire-summary__content\",\r\n// \t\t\t);\r\n// \t\t\tdefinitionText.textContent = foundTooltipDatas.acf.definition;\r\n// \t\t});\r\n// \t} catch (error) {\r\n// \t\tconsole.log(\"Something went wrong!\", error);\r\n// \t}\r\n// }\r\n\r\n// async function getTooltipsDatas(vocabulairesPostsIds) {\r\n// \ttry {\r\n// \t\tconst response = await fetch(\r\n// \t\t\t`/wp-json/wp/v2/vocabulaire?include=${vocabulairesPostsIds.toString()}`,\r\n// \t\t);\r\n// \t\tif (!response.ok) {\r\n// \t\t\tthrow new Error(`Request failed with status: ${response.status}`);\r\n// \t\t}\r\n// \t\tconst data = await response.json();\r\n// \t\treturn data;\r\n// \t} catch (err) {\r\n// \t\tthrow err;\r\n// \t}\r\n// }\r\n// window.addEventListener(\"DOMContentLoaded\", (event) => {\r\n// \tupdateWordsDefinitions();\r\n// });\r\n"],"names":[],"sourceRoot":""}
|
|
||||||
|
|
@ -23,6 +23,10 @@
|
||||||
"tooltipWords": {
|
"tooltipWords": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"default": []
|
"default": []
|
||||||
|
},
|
||||||
|
"vocabulairesPostsIds": {
|
||||||
|
"type": "array",
|
||||||
|
"default": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11,56 +11,10 @@ import { getAdminLanguageFromCookie } from "../../utilities.js";
|
||||||
|
|
||||||
export default function Edit({ attributes, setAttributes }) {
|
export default function Edit({ attributes, setAttributes }) {
|
||||||
let { tooltipWords } = attributes;
|
let { tooltipWords } = attributes;
|
||||||
|
console.log("tooltipWords ATTRIBUTES", tooltipWords);
|
||||||
|
|
||||||
console.log("tooltipWords", tooltipWords);
|
|
||||||
let [hasFetchedDatas, setHasFetchedDatas] = useState(false);
|
let [hasFetchedDatas, setHasFetchedDatas] = useState(false);
|
||||||
|
|
||||||
function CurrentThematiqueDisplay({ id }) {
|
|
||||||
const { record, isResolving } = useEntityRecord(
|
|
||||||
"taxonomy",
|
|
||||||
"thematiques",
|
|
||||||
id,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isResolving) {
|
|
||||||
return "Loading...";
|
|
||||||
}
|
|
||||||
if (!record) {
|
|
||||||
return "no post...";
|
|
||||||
}
|
|
||||||
return record.name;
|
|
||||||
}
|
|
||||||
function getCurrentThematique(id) {
|
|
||||||
const { record, isResolving } = useEntityRecord(
|
|
||||||
"taxonomy",
|
|
||||||
"thematiques",
|
|
||||||
id,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (isResolving) {
|
|
||||||
return "Loading...";
|
|
||||||
}
|
|
||||||
if (!record) {
|
|
||||||
return "no post...";
|
|
||||||
}
|
|
||||||
return record;
|
|
||||||
}
|
|
||||||
|
|
||||||
function filterToolTipsArray(tooltipWords) {
|
|
||||||
const filteredTooltipWords = [];
|
|
||||||
|
|
||||||
tooltipWords.forEach((tooltipWord) => {
|
|
||||||
const existingTooltip = filteredTooltipWords.find(
|
|
||||||
(item) => item.tooltipID === tooltipWord.tooltipID,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!existingTooltip) {
|
|
||||||
filteredTooltipWords.push(tooltipWord);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return filteredTooltipWords;
|
|
||||||
}
|
|
||||||
function parseContentTooltips(editorContent) {
|
function parseContentTooltips(editorContent) {
|
||||||
const parser = new DOMParser();
|
const parser = new DOMParser();
|
||||||
const doc = parser.parseFromString(editorContent, "text/html");
|
const doc = parser.parseFromString(editorContent, "text/html");
|
||||||
|
|
@ -100,13 +54,42 @@ export default function Edit({ attributes, setAttributes }) {
|
||||||
|
|
||||||
return blocksTooltipWords;
|
return blocksTooltipWords;
|
||||||
}
|
}
|
||||||
function buildTooltipWords() {
|
|
||||||
|
function filterToolTipsArray(tooltipWords) {
|
||||||
|
const filteredTooltipWords = Array.from(
|
||||||
|
new Map(
|
||||||
|
tooltipWords.map((tooltipWord) => [tooltipWord.tooltipID, tooltipWord]),
|
||||||
|
).values(),
|
||||||
|
);
|
||||||
|
|
||||||
|
return filteredTooltipWords;
|
||||||
|
// const filteredTooltipWords = [];
|
||||||
|
|
||||||
|
// tooltipWords.forEach((tooltipWord) => {
|
||||||
|
// const existingTooltip = filteredTooltipWords.find(
|
||||||
|
// (item) => item.tooltipID === tooltipWord.tooltipID,
|
||||||
|
// );
|
||||||
|
|
||||||
|
// if (!existingTooltip) {
|
||||||
|
// filteredTooltipWords.push(tooltipWord);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
function parseTooltipWords() {
|
||||||
let newParsedTooltipWords = parseContentTooltips(currentPost.content);
|
let newParsedTooltipWords = parseContentTooltips(currentPost.content);
|
||||||
let newBlocksTooltipWords = parseBlocksTooltips(currentBlocks);
|
let newBlocksTooltipWords = parseBlocksTooltips(currentBlocks);
|
||||||
|
|
||||||
let allTooltipWords = [...newParsedTooltipWords, ...newBlocksTooltipWords];
|
let allTooltipWords = [...newParsedTooltipWords, ...newBlocksTooltipWords];
|
||||||
const filteredTooltipWords = filterToolTipsArray(allTooltipWords);
|
const filteredTooltipWords = filterToolTipsArray(allTooltipWords);
|
||||||
|
|
||||||
return filteredTooltipWords;
|
return filteredTooltipWords;
|
||||||
}
|
}
|
||||||
|
function buildTooltipWordsIdArray(tooltipsArray) {
|
||||||
|
const tooltipWordsIds = tooltipsArray.map(
|
||||||
|
(tooltipWord) => tooltipWord.tooltipID,
|
||||||
|
);
|
||||||
|
return tooltipWordsIds;
|
||||||
|
}
|
||||||
|
|
||||||
function compareHasNewVocabularyWord(previousWords, newWords) {
|
function compareHasNewVocabularyWord(previousWords, newWords) {
|
||||||
return !(JSON.stringify(previousWords) === JSON.stringify(newWords));
|
return !(JSON.stringify(previousWords) === JSON.stringify(newWords));
|
||||||
|
|
@ -133,12 +116,26 @@ export default function Edit({ attributes, setAttributes }) {
|
||||||
),
|
),
|
||||||
[currentTaxonomies],
|
[currentTaxonomies],
|
||||||
);
|
);
|
||||||
|
const tooltipWordsIds = buildTooltipWordsIdArray(tooltipWords);
|
||||||
|
|
||||||
|
const vocabulairePosts = useSelect(
|
||||||
|
(select) => {
|
||||||
|
if (!tooltipWordsIds.length) return [];
|
||||||
|
return select("core").getEntityRecords("postType", "vocabulaire", {
|
||||||
|
per_page: -1,
|
||||||
|
include: tooltipWordsIds,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
[tooltipWordsIds],
|
||||||
|
);
|
||||||
|
console.log("vocabulairePosts", vocabulairePosts);
|
||||||
|
|
||||||
const currentLang = getAdminLanguageFromCookie("wp-wpml_current_language");
|
const currentLang = getAdminLanguageFromCookie("wp-wpml_current_language");
|
||||||
const localBlockName = currentLang === "fr" ? "Vocabulaire" : "Woordenschat";
|
const localBlockName = currentLang === "fr" ? "Vocabulaire" : "Woordenschat";
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (currentPost.content && currentBlocks) {
|
if (currentPost.content && currentBlocks) {
|
||||||
const newTooltipWords = buildTooltipWords();
|
const newTooltipWords = parseTooltipWords();
|
||||||
|
const newTooltipWordsDatas = buildTooltipWordsIdArray(newTooltipWords);
|
||||||
|
|
||||||
if (compareHasNewVocabularyWord(tooltipWords, newTooltipWords)) {
|
if (compareHasNewVocabularyWord(tooltipWords, newTooltipWords)) {
|
||||||
setAttributes({ tooltipWords: newTooltipWords });
|
setAttributes({ tooltipWords: newTooltipWords });
|
||||||
|
|
@ -158,11 +155,12 @@ export default function Edit({ attributes, setAttributes }) {
|
||||||
? currentThematique.name
|
? currentThematique.name
|
||||||
: "...pas de thématique"}
|
: "...pas de thématique"}
|
||||||
</h2>
|
</h2>
|
||||||
{tooltipWords &&
|
|
||||||
tooltipWords.map((elem) => (
|
{vocabulairePosts &&
|
||||||
|
vocabulairePosts.map((elem) => (
|
||||||
<details className="question">
|
<details className="question">
|
||||||
<summary>
|
<summary>
|
||||||
{elem.tooltipText}
|
{elem.title.rendered}
|
||||||
<div className="open-close-icon">
|
<div className="open-close-icon">
|
||||||
<img src={chevronDown} className="open-close-cta" alt="" />
|
<img src={chevronDown} className="open-close-cta" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -170,7 +168,7 @@ export default function Edit({ attributes, setAttributes }) {
|
||||||
<div className="homegrade-blocks-vocabulaire-summary__content-wrapper homegrade-dynamic-accordeon__content-wrapper">
|
<div className="homegrade-blocks-vocabulaire-summary__content-wrapper homegrade-dynamic-accordeon__content-wrapper">
|
||||||
<div class=" homegrade-dynamic-accordeon__content">
|
<div class=" homegrade-dynamic-accordeon__content">
|
||||||
<p className="homegrade-blocks-vocabulaire-summary__content">
|
<p className="homegrade-blocks-vocabulaire-summary__content">
|
||||||
{elem.tooltipDefinition}
|
{elem.acf.definition}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,7 @@ endif;
|
||||||
|
|
||||||
global $post;
|
global $post;
|
||||||
$thematique = get_the_terms($post->ID, 'thematiques')[0] ?? null;
|
$thematique = get_the_terms($post->ID, 'thematiques')[0] ?? null;
|
||||||
|
|
||||||
|
|
||||||
write_log($tooltipWords);
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user