В расширении я хотел бы иметь возможность изменить существующую ссылку. Соответствующее поле в базе данных - это поле, которое может содержать несколько ссылок (например, tt_content.bodytext).
Я хочу использовать как можно больше уже существующих функций. Поэтому я хотел бы использовать уже существующий мастер ссылок.
Я нашел существующий маршрут rteckeditor_wizard_browse_links
, который использует rte_ckeditor / Classes / Controller / BrowseLinksController.php .
Я использую это в качестве помощника:
$parameters = [
'table' => $table,
'fieldName' => $field,
'pid' => $pid,
'uid' => $uid,
'recordType' => $recordType;
];
$urlParameters = [
'contentsLanguage' => 'en',
// 'route'
// 'token*
'P' => $parameters,
'curUrl' => [
'url' => $url
// todo: add anchor text etc. ...
],
'editorId' => 'cke_1'
];
$route = 'rteckeditor_wizard_browse_links';
return (string)$uriBuilder->buildUriFromRoute($route, $urlParameters);
Это открывает мастер ссылок правильно. Но это переплетено с ckeditor.
Когда я нажимаю «Установить ссылку», ничего не происходит, и я получаю следующую ошибку JavaScript (отображается, если консоль открыта в браузере):
RteLinkBrowser.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:77 Uncaught TypeError: Cannot read property 'document' of null
at Object.LinkBrowser.finalizeFunction (RteLinkBrowser.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:77)
at HTMLFormElement.UrlLinkHandler.link (UrlLinkHandler.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:40)
at HTMLFormElement.dispatch (jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2)
at HTMLFormElement.y.handle (jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2)
LinkBrowser.finalizeFunction @ RteLinkBrowser.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:77
UrlLinkHandler.link @ UrlLinkHandler.js?bust=8d6016d70f0f490d5e7d24262f0ec96230f399d9:40
dispatch @ jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2
y.handle @ jquery.min-16985e7a97b69d2a9c29e484ac3b581a.js:2
Соответствующая строка в RteLinkBrowser.js :
var linkElement = RteLinkBrowser.CKEditor.document.createElement('a');
Мастер ссылок ожидает открытия окна ckeditor и использует вещи в DOM, которых там нет.
Есть ли способ напрямую открыть мастер ссылок для конкретной ссылки в текстовом поле?
Или, альтернативно, откройте текстовое поле с помощью ckeditor и предварительно выберите конкретную ссылку.