Modifications de l'API des plugins Discourse : utilisation de api.registerValueTransformer pour addPostMenuButton et component:topic-list

{“content”: “Salut, j’utilise la version 3.2.0.beta4-dev pour le développement local et la version 0.8.7 de l’API des plugins pour le développement de plugins. Cependant, en raison de changements récents dans Discourse, les fonctions addPostMenuButton et component:topic-list ont été modifiées.\n\nComment puis-je utiliser api.registerValueTransformer pour ces fonctions API ? De plus, quelle version de l’API des plugins dois-je utiliser pour correspondre à 3.2.0.beta4-dev afin d’assurer la compatibilité avec api.registerValueTransformer ?\n\nVoici mon code pour addPostMenuButton :\n\napi.addPostMenuButton("togglePostButton", (model) => {\n const siteSettings = api.container.lookup("site-settings:main");\n const posts = siteSettings.posts;\n const array_of_posts = posts.split("|");\n const postId = model.id;\n const postIdstr = postId.toString();\n const isPost = array_of_posts.includes(postIdstr);\n\n return {\n action: "togglePost",\n position: "first",\n className: isPost\n ? "button.topic_hidden custom-class-hidden"\n : "button.topic_visible custom-class-visible",\n icon: isPost ? "far-eye-slash" : "far-eye",\n title: isPost ? "Hide Post" : "Show Post",\n };\n});\n\nEt voici mon code pour component:topic-list :\n\napi.modifyClass("component:topic-list", {\n pluginId: "post-toggle",\n didInsertElement: function () {\n this._super();\n const topics = this.topics;\n for (let key in topics) {\n if (topics.hasOwnProperty(key)) {\n let newTopicLatest = [];\n const topic_id = topics[key].id;\n const topic_posters = topics[key].posters;\n\n topic_posters.forEach((poster) => {\n if (poster && poster.extras !== null && poster.extras.includes("latest")) {\n newTopicLatest = poster["description"].split(",");\n }\n });\n\n let userListLatest = newTopicLatest;\n if (userListLatest.length > 1 && userListLatest[0] === "Original Poster") {\n userListLatest = userListLatest.slice(1);\n userListLatest[0] = userListLatest[0].trim();\n }\n\n let i = 0;\n const element = $('tr[data-topic-id="' + topic_id + '"]').find(\n "a[data-user-card]"\n );\n\n if (element.length > 0) {\n element.each(function () {\n const poster_inside = topic_posters[i];\n if (poster_inside !== undefined && Object.keys(poster_inside).length !== 0) {\n const userElement = $(this);\n if (!userListLatest.includes(poster_inside.user.id.toString())) {\n userElement.hide();\n }\n }\n i++;\n });\n }\n }\n }\n }\n});\n\nPouvez-vous m’aider avec cela ?” }

J’ai mis à jour mon instance Discourse de développement local vers la version 3.5.0.beta2-dev, et la version de l’API des plugins est 2.1.1. Comment puis-je utiliser api.registerValueTransformer pour les fonctions addPostMenuButton et component:topic-list ?

Avez-vous lu le sujet : Upcoming post menu changes - How to prepare themes and plugins

3 « J'aime »

Oui, j’ai lu ce sujet, j’ai implémenté des changements basés sur les mises à jour de la nouvelle API de plugin et j’ai également compris component:topic-list.

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.