Skip to content

Commit 68eb384

Browse files
committed
fix(#175): convert_urls Default-Guard in base.js + linkmap.js Event-Fix
Inspiriert von PR #176 (copilot-swe-agent): - base.js: erzwingt convert_urls: false fuer alle Profile, die es nicht explizit setzen (schuetzt bestehende DB-Profile ohne manuelles Editieren) - linkmap.js: selectLink() feuert rex:selectLink jetzt korrekt via opener.jQuery(window).trigger(...) statt DOM-Hack auf tox-textfield
1 parent 55f14d7 commit 68eb384

3 files changed

Lines changed: 22 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ Version 8.10.5
66

77
### Fixes
88

9-
* **Issue #175 – Absolute URLs (Protokoll + Domain) bei Mediapool-Links:** Neue Default-Profile setzen jetzt `convert_urls: false`. Damit bleiben aus dem Mediapool eingefügte URLs wie `/media/datei.pdf` verbatim erhalten und werden nicht mehr durch TinyMCEs URL-Konvertierung zu `https://domain.test/media/datei.pdf` umgeschrieben. Der Profil-Assistent setzt die Option ebenfalls per Default auf `false` und enthält einen erklärenden Hinweis. **Bestehende Profile bleiben unverändert** – wer den Issue-Effekt sieht, ergänzt im Profil-Extra `convert_urls: false` (die alten Optionen `relative_urls`, `remove_script_host`, `document_base_url` greifen dann nicht mehr und können entfernt werden).
9+
* **Issue #175 – Absolute URLs (Protokoll + Domain) bei Mediapool-Links:** Neue Default-Profile setzen jetzt `convert_urls: false`. Zusätzlich greift in `base.js` ein Default-Guard: setzt ein Profil `convert_urls` nicht explizit, wird es auf `false` erzwungen. Damit bleiben aus dem Mediapool eingefügte URLs wie `/media/datei.pdf` verbatim erhalten und werden nicht mehr durch TinyMCEs URL-Konvertierung zu `https://domain.test/media/datei.pdf` umgeschrieben – **bestehende Profile profitieren ohne manuelle Änderung**. Der Profil-Assistent setzt die Option ebenfalls per Default auf `false` und enthält einen erklärenden Hinweis. Profile, die das wirklich brauchen, können weiterhin explizit `convert_urls: true` setzen.
10+
* **linkmap.js:** `selectLink()` feuert den `rex:selectLink`-jQuery-Event jetzt korrekt via `opener.jQuery(window).trigger(...)` und nutzt damit den Callback-Pfad aus `base.js`. Bisher wurde das Event zwar erzeugt, aber nie ausgelöst – stattdessen wurde das TinyMCE-Dialog-Input direkt per `getElementsByClassName('tox-textfield')[0].value` beschrieben (DOM-Hack, brüchig bei TinyMCE-Updates).
11+
* Dank an [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent) für den Hinweis und die Implementierungsskizze in [#176](https://github.com/FriendsOfREDAXO/tinymce/pull/176).
1012

1113
Version 8.10.4
1214
---------------

assets/scripts/base.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,17 @@ function tiny_init(container) {
512512
options.remove_trailing_brs = true;
513513
}
514514

515+
// TinyMCE's URL-Konvertierung ist im CMS-Backend immer falsch: der
516+
// Editor laeuft unter /redaxo/index.php, der Content wird im Frontend
517+
// ausgeliefert. convert_urls: true wuerde /media/datei.pdf gegen die
518+
// Backend-URL aufloesen und unerwuenscht zu einer absoluten URL mit
519+
// Protokoll und Hostname machen (siehe Issue #175). Profile, die das
520+
// wirklich brauchen, koennen weiterhin explizit convert_urls: true
521+
// setzen.
522+
if (!options.hasOwnProperty('convert_urls')) {
523+
options.convert_urls = false;
524+
}
525+
515526
// Use the full link dialog (with REDAXO internal picker) instead of
516527
// TinyMCE's quicklink bubble unless a profile explicitly opts in.
517528
if (!options.hasOwnProperty('link_quicklink')) {

assets/scripts/linkmap.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
var selectLink = function(filename,alt) {
2-
var event = opener.jQuery.Event("rex:selectLink");
3-
window.opener.document.getElementsByClassName("tox-textfield")[0].value = '/media/'+filename;
1+
// Wird vom REDAXO-Mediapool aufgerufen (Pendant zu selectMedia); `alt`
2+
// gehoert zur Mediapool-API-Signatur und bleibt aus Kompatibilitaetsgruenden
3+
// erhalten. Das eigentliche Setzen der URL passiert ueber den
4+
// `rex:selectLink`-Event-Listener in base.js (tinyMce-link-Callback).
5+
var selectLink = function(filename, alt) {
6+
var linkurl = '/media/' + filename;
7+
opener.jQuery(window).trigger('rex:selectLink', [linkurl, filename]);
48
self.close();
5-
}
9+
};

0 commit comments

Comments
 (0)