Backend Snippets

Snippets und Tweaks zur Modifikation des Backends

  1. Navigation ausblenden
  2. AddOn ausblenden
  3. Seite eines AddOns durch eigene austauschen/ersetzen
  4. Subpage eines AddOns durch eigene entsprechend Recht austauschen/ersetzenn
  5. Sortierung des Medienpools ändern

Es ist möglich, die Hauptnavigation und die AddOns auszublenden. Nutzt die Bootstrap-Funktionen.

Folgenden Code in die boot.php des Project-AddOns platzieren:

if (rex::isBackend() and rex_backend_login::hasSession()) {
  rex_extension::register('OUTPUT_FILTER', static function(rex_extension_point $ep) {
      $search` = '<h4 class="rex-nav-main-title">' . rex_i18n::msg('navigation_addons') . '</h4>' . "\n        " . '<ul class="rex-nav-main-list nav nav-pills nav-stacked">';
      $replace = '<h4 class="rex-nav-main-title" data-toggle="collapse" data-target="#'.rex_i18n::msg('navigation_addons').'">'.rex_i18n::msg('navigation_addons').'</h4><ul class="rex-nav-main-list nav nav-pills nav-stacked collapse" id="'.rex_i18n::msg('navigation_addons').'">';    
      $subject = str_replace($search, $replace, $ep->getSubject());
      $ep->setSubject($subject);
  });
}

AddOn ausblenden

Es ist möglich, einzelne AddOns auch für Administratoren auszublenden. In diesem Beispiel werden der Installer und die Systemverwaltung ausgeblendet.

Folgenden Code in die boot.php des Project-AddOns platzieren:

if (rex::isBackend() and rex_backend_login::hasSession()) {
  $page = rex_be_controller::getPageObject('system');
  $page->setHidden(true);
  $page->setPath('...');

  $page = rex_be_controller::getPageObject('packages');
  $page->setHidden(true);
  $page->setPath('...');
}

Seite eines AddOns durch eigene austauschen/ersetzen

Will man eine alternative Seite in einem AddOn darstellen und die vorhandene ersetzen, kann dies mit dem nachfolgenden Code erfogen. In diesem Beispiel wird die index.php des Struktur-AddOns ausgetauscht.

Verwendeter Extension point: PAGES_PREPARED

Folgenden Code in die boot.php des Project-AddOns platzieren:

rex_extension::register('PAGES_PREPARED',function($ep) {
  if (rex_be_controller::getCurrentPage() == 'structure') {
    $Page = rex_be_controller::getCurrentPageObject();
    $Page->setPath($this->getPath('pages/index.php'));
  }
});

Subpage eines AddOns durch eigene entsprechend Recht austauschen/ersetzen

if (is_object(rex::getUser()) AND rex::getUser()->hasPerm('addonname[recht]') AND !rex::getUser()->isAdmin()):

$page = $this->getProperty('page');
        $page['subpages']['config'] = [
        'title' => 'Mein neuer Menüpunkt', 
        'icon' => 'rex-icon fa-wrench'
        ];  //neuen Menüpunkt nachträglich einfügen
        
        unset($page['subpages']['default']); //alten Menüpunkt nachträglich entfernen
$this->setProperty('page', $page);

endif;

Sortierung des Medienpools ändern

Die Standard-Sortierung im Medienpool ist immer chronologisch. Die folgende Lösung sorgt für eine alphabetische Sortierung.

Verwendeter Extension point: MEDIA_LIST_QUERY

Folgenden Code in die boot.php des Project-AddOns platzieren:

// Sortierung Medienpool aufsteigend
if (rex::isBackend() && rex::getUser()) {
  rex_extension::register('MEDIA_LIST_QUERY', function (rex_extension_point $ep) {
    $subject = $ep->getSubject();
    $subject = str_replace("f.updatedate", "f.filename, f.updatedate", $subject);
    $subject = str_replace("desc", "asc", $subject);
    return $subject;
  });
}