From dbbccc58be1fd0df7eaf6d81949b4090b9ddb7bb Mon Sep 17 00:00:00 2001 From: Hannes Bochmann Date: Thu, 23 May 2024 16:27:22 +0200 Subject: [PATCH] Add option for custom replace content method --- .../Utilities/AjaxContentRenderer/Index.md | 17 +++++++++++++++++ Resources/Public/JavaScript/AjaxContent.js | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Documentation/Utilities/AjaxContentRenderer/Index.md b/Documentation/Utilities/AjaxContentRenderer/Index.md index 8edb87d..38b371a 100644 --- a/Documentation/Utilities/AjaxContentRenderer/Index.md +++ b/Documentation/Utilities/AjaxContentRenderer/Index.md @@ -116,3 +116,20 @@ ausgelöst wird. Das bedeutet z.B. dass Checkboxen nicht den checked Status erha z.B. ein anderes Element lädt und selbst gar nicht aktualisiert wird, dann bekommt eine Checkbox keinen checked Status. Wenn das betrffende Element die CSS Klasse "ajax-dont-prevent-default" bekommt, wird das verhindert. + +Eigene Methode zum ersetzen des Inhalts +--------------------------------------- + +Wenn ein Element, welches den Ajax Request startet, das data-Attribut +**data-ajax-custom-replace-method** hat, dann wird diese Method zum ersetzen +des Inhalts aufgerufen. Die Method muss in der DMK.Objects.AjaxContent Klasse +ergänzt werden. z.B. so: + +~~~~ {.sourceCode .js} +DMK.Objects.AjaxContent.prototype.replaceContentForSomethingElse = function(contentId, html, from, to) { + appendContent(contentId, html) +}; + +~~~~ + +Ansonsten wird der komplette Inhalt des Elements 1:1 ersetzt. diff --git a/Resources/Public/JavaScript/AjaxContent.js b/Resources/Public/JavaScript/AjaxContent.js index 56f39ab..29d9ac7 100644 --- a/Resources/Public/JavaScript/AjaxContent.js +++ b/Resources/Public/JavaScript/AjaxContent.js @@ -197,7 +197,11 @@ else if (parameters.page === "prev") { from = 1; } - _self.replaceContent(parameters.contentid, data, from, to); + if ($el.data("ajaxCustomReplaceMethod")) { + _self[$el.data("ajaxCustomReplaceMethod")](parameters.contentid, data, from, to); + } else { + _self.replaceContent(parameters.contentid, data, from, to); + } }; if ($el.hasClass("notcachable")) {