Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions fragments/minibar/minibar_element.php
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
<?php
/**
* @var $element rex_minibar_element
* @var rex_minibar_element $element
*/
$element = $this->element;

$class = 'rex-minibar-element ';
$class .= rex_string::normalize(get_class($element), '-');
$class .= $element->cssClass();
$class .= ($element->getOrientation() == rex_minibar_element::RIGHT ? ' rex-minibar-element-right' : '');
$class .= ($element->isDanger() ? ' rex-minibar-status-danger' : '');
$class .= ($element->isWarning() ? ' rex-minibar-status-warning' : '');
$class .= ($element->isPrimary() ? ' rex-minibar-status-primary' : '');

$onmouseover = '';
if ($element instanceof rex_minibar_lazy_element && rex_minibar_lazy_element::isFirstView()) {
$elementId = get_class($element);
$elementId = $element->jsId();
$context = rex_context::restore();
$url = $context->getUrl(['lazy_element' => $elementId, 'article_id' => rex_article::getCurrentId(), 'current_lang'=> rex_clang::getCurrentId()] + rex_api_minibar::getUrlParams());
$onmouseover = <<<EOD
Expand Down
29 changes: 29 additions & 0 deletions lib/element/element.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,35 @@ abstract class rex_minibar_element
*/
abstract public function render();

/**
* liefert einen CSS-Namen, über den Elemente dieser Klasse
* individuell konfiguriert werden können.
*
* Für eigene Klassen: optional überschreiben
*
* Default: normalisierter Klassenname
*
* @api
*/
public function cssClass() : string
{
return rex_string::normalize(static::class, '-');
}
Comment thread
skerbis marked this conversation as resolved.

/**
* Liefert einen anonymisierten Identifier zur Verwendung in API-Aufrufen
* MD5-kodierter Pfadname
*
* Dem Hash ist ein M vorangestellt, da JS-Identifier mit einem Buchstaben
* beginnen müssen/sollten
*
* @api
*/
public function jsId() : string
{
return 'M' . md5(static::class);
}
Comment thread
skerbis marked this conversation as resolved.

/**
* Returns the orientation in the minibar.
*
Expand Down
7 changes: 6 additions & 1 deletion lib/minibar.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,22 @@ public function addElement(rex_minibar_element $instance)
}

/**
* Identifiziert eine Elementklasse entweder über den Klassennamen im Klartext
* oder über den als MD5 kodierten Klassennamen.
* (zur Info, dem Hash stgeht ein M voran)
Comment thread
skerbis marked this conversation as resolved.
Outdated
*
* @param string $className
*
* @return rex_minibar_element|null
*/
public function elementByClass($className)
{
foreach ($this->elements as $element) {
if (get_class($element) === $className) {
if ($element::class === $className || $element->jsId() === $className) {
Comment thread
skerbis marked this conversation as resolved.
return $element;
}
}
return null;
}

public function get()
Expand Down