3236361: Do not overwrite js settings data per filter method invocation.
This PR addresses the issues described in #3236361 by creating $js_settings
as a static variable which can be appended to on subsequent AceFilter > process method invocations on a given page load, ensuring that multiple paragraphs will render their code snippets on the same page.
It also edits the $element_id
variable assignment to use php's uniqid()
function instead of an array key, which ends up being repeated in this use case of paragraph fields.
To Test
- Install this module and the paragraphs module.
- Create a text format that only uses the filter provided by this module and does not use the wysiwyg editor.
- Create a new paragraph that contains a formatted text field that includes your new text format.
- Create a node bundle that has a entity reference revisions field, allow references to the paragraph type that you created.
- Create a node of the new bundle you created.
- In your paragraphs field, add multiple paragraphs and add a code snippet to each paragraph (ie.
<ace syntax="HTML"><p>Test snippet 1/2/3</p></ace>
) - Save and view the page
-
Observe all paragraphs render content and are styled as a code snippet. -
Open your dev tools > console and inspect the drupalSettings.ace_filter.instances
array and observe there are multiple instances.
Closes #3236361
Edited by Jes Constantine