|
10 | 10 | rex_view::addCssFile($this->getAssetsUrl('css/live_preview.css')); |
11 | 11 | rex_view::addJsFile($this->getAssetsUrl('js/live_preview.js')); |
12 | 12 |
|
13 | | -// Namespaced API-Klasse registrieren (seit REDAXO 5.17 unterstützt) |
| 13 | +// Namespaced API-Klassen registrieren (seit REDAXO 5.17 unterstützt) |
14 | 14 | rex_api_function::register('live_preview_url', \FriendsOfREDAXO\LivePreview\LivePreviewUrlApi::class); |
| 15 | +rex_api_function::register('live_preview_toggle', \FriendsOfREDAXO\LivePreview\LivePreviewToggleApi::class); |
15 | 16 |
|
16 | 17 | // API-URL für JS bereitstellen |
17 | 18 | rex_view::setJsProperty('livePreviewApiUrl', rex_url::backendController(['rex-api-call' => 'live_preview_url'])); |
|
65 | 66 | return (string) ob_get_clean(); |
66 | 67 | })(); |
67 | 68 |
|
| 69 | + // User-Präferenz für das Panel lesen (Default: aktiviert) |
| 70 | + $userId = rex::getUser()->getId(); |
| 71 | + $livePreviewEnabled = (bool) rex_addon::get('live_preview')->getConfig('live_preview_enabled_' . $userId, true); |
| 72 | + $toggleUrl = rex_url::backendController(['rex-api-call' => 'live_preview_toggle']); |
| 73 | + $toggleChecked = $livePreviewEnabled ? ' checked="checked"' : ''; |
| 74 | + |
| 75 | + $panelTitle = '<i class="rex-icon fa-eye"></i> ' . rex_i18n::msg('live_preview_title') |
| 76 | + . '<label class="rex-lp-header-toggle rex-lp-toggle-pill" onclick="event.stopPropagation()" title="' . rex_escape(rex_i18n::msg('live_preview_toggle_title')) . '">' |
| 77 | + . '<input type="checkbox" class="rex-lp-enable-toggle"' . $toggleChecked . ' data-url="' . rex_escape($toggleUrl) . '">' |
| 78 | + . '<span class="rex-lp-toggle-slider"></span>' |
| 79 | + . '</label>'; |
| 80 | + |
| 81 | + // Wenn deaktiviert: leerer Body (kein iframe im DOM → lädt nicht) |
| 82 | + $fragmentBody = $livePreviewEnabled ? $panel : ''; |
| 83 | + |
68 | 84 | // REDAXO-Standard-Panel (wie yrewrite) |
69 | 85 | $fragment = new rex_fragment(); |
70 | | - $fragment->setVar('title', '<i class="rex-icon fa-eye"></i> ' . rex_i18n::msg('live_preview_title'), false); |
71 | | - $fragment->setVar('body', $panel, false); |
| 86 | + $fragment->setVar('title', $panelTitle, false); |
| 87 | + $fragment->setVar('body', $fragmentBody, false); |
72 | 88 | $fragment->setVar('collapse', true); |
73 | | - $fragment->setVar('collapsed', false); |
| 89 | + $fragment->setVar('collapsed', !$livePreviewEnabled); |
74 | 90 | $content = $fragment->parse('core/page/section.php'); |
75 | 91 |
|
76 | 92 | return $subject . $content; |
|
0 commit comments