Skip to content
Snippets Groups Projects
Commit d951db97 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms Committed by Jan-Hendrik Willms
Browse files

correctly render clipboard widgets

Closes #1102

Merge request studip/studip!654
parent 65865c7f
No related branches found
No related tags found
No related merge requests found
...@@ -65,7 +65,7 @@ class ClipboardWidget extends SidebarWidget ...@@ -65,7 +65,7 @@ class ClipboardWidget extends SidebarWidget
$this->allowed_item_classes = $allowed_item_classes; $this->allowed_item_classes = $allowed_item_classes;
$this->template = 'sidebar/clipboard-widget'; $this->template = 'sidebar/clipboard-widget';
$this->title = _('Merkzettel'); $this->title = _('Eigene Merkzettel');
$this->readonly = false; $this->readonly = false;
$this->apply_button_title = _('Hauptbereich aktualisieren'); $this->apply_button_title = _('Hauptbereich aktualisieren');
...@@ -78,6 +78,10 @@ class ClipboardWidget extends SidebarWidget ...@@ -78,6 +78,10 @@ class ClipboardWidget extends SidebarWidget
if (!is_array($this->current_selected_items)) { if (!is_array($this->current_selected_items)) {
$this->current_selected_items = []; $this->current_selected_items = [];
} }
$this->setId("ClipboardWidget_{$this->clipboard_widget_id}");
$this->setAdditionalAttribute('data-widget_id', $this->getId());
$this->addLayoutCSSClass('clipboard-widget');
} }
...@@ -158,62 +162,27 @@ class ClipboardWidget extends SidebarWidget ...@@ -158,62 +162,27 @@ class ClipboardWidget extends SidebarWidget
public function render($variables = []) public function render($variables = [])
{ {
$template = $GLOBALS['template_factory']->open(
$this->template
);
$layout = $GLOBALS['template_factory']->open(
'widgets/widget-layout'
);
$template->set_layout('widgets/widget-layout');
$clipboards = Clipboard::getClipboardsForUser( $clipboards = Clipboard::getClipboardsForUser(
$GLOBALS['user']->id $GLOBALS['user']->id
); );
if (!$this->current_clipboard_id) { if (!$this->current_clipboard_id && $clipboards) {
if ($clipboards) {
$_SESSION['selected_clipboard_id'] = $clipboards[0]->id; $_SESSION['selected_clipboard_id'] = $clipboards[0]->id;
$_SESSION['selected_clipboard_items'] = []; $_SESSION['selected_clipboard_items'] = [];
$this->current_clipboard_id = $clipboards[0]->id; $this->current_clipboard_id = $clipboards[0]->id;
} }
}
$template->set_attribute(
'selected_clipboard_id',
$this->current_clipboard_id
);
$template->set_attribute(
'selected_clipboard_items',
$this->current_selected_items
);
$template->set_attribute('clipboards', $clipboards);
$template->set_attribute(
'allowed_item_classes',
$this->allowed_item_classes
);
$template->set_attribute(
'clipboard_widget_id',
$this->clipboard_widget_id
);
$template->set_attribute(
'draggable_items',
$this->draggable_items
);
$template->set_attribute(
'readonly',
$this->readonly
);
$template->set_attribute(
'apply_button_title',
$this->apply_button_title
);
$template->set_attribute(
'elements',
$this->elements
);
return $template->render(); return parent::render($variables + [
'clipboards' => $clipboards,
'allowed_item_classes' => $this->allowed_item_classes,
'clipboard_widget_id' => $this->clipboard_widget_id,
'draggable_items' => $this->draggable_items,
'readonly' => $this->readonly,
'apply_button_title' => $this->apply_button_title,
'elements' => $this->elements,
'selected_clipboard_id' => $this->current_clipboard_id,
'selected_clipboard_items' => $this->current_selected_items,
]);
} }
/** /**
......
...@@ -18,6 +18,9 @@ class RoomClipboardWidget extends ClipboardWidget ...@@ -18,6 +18,9 @@ class RoomClipboardWidget extends ClipboardWidget
parent::__construct(['Room']); parent::__construct(['Room']);
$this->setTitle(_('Individuelle Raumgruppen'));
$this->template = 'sidebar/room-clipboard-widget';
$current_user = User::findCurrent(); $current_user = User::findCurrent();
$this->addLink( $this->addLink(
...@@ -49,7 +52,5 @@ class RoomClipboardWidget extends ClipboardWidget ...@@ -49,7 +52,5 @@ class RoomClipboardWidget extends ClipboardWidget
'data-show_in_dialog' => '1'] 'data-show_in_dialog' => '1']
); );
} }
$this->template = 'sidebar/room-clipboard-widget';
} }
} }
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
*/ */
class SidebarWidget extends Widget class SidebarWidget extends Widget
{ {
protected $additional_attributes = [];
public function __construct() public function __construct()
{ {
$this->layout = 'sidebar/widget-layout.php'; $this->layout = 'sidebar/widget-layout.php';
...@@ -57,6 +60,24 @@ class SidebarWidget extends Widget ...@@ -57,6 +60,24 @@ class SidebarWidget extends Widget
$this->extra = false; $this->extra = false;
} }
public function setAdditionalAttribute(string $key, $value)
{
$this->additional_attributes[$key] = $value;
}
public function setAdditionalAttributes(array $attributes)
{
foreach ($attributes as $key => $value) {
$this->setAdditionalAttribute($key, $value);
}
}
public function removeAdditionalAttribute(string $key)
{
unset($this->additional_attributes[$key]);
}
/** /**
* Renders the widget. * Renders the widget.
* The widget will only be rendered if it contains at least one element. * The widget will only be rendered if it contains at least one element.
...@@ -65,6 +86,12 @@ class SidebarWidget extends Widget ...@@ -65,6 +86,12 @@ class SidebarWidget extends Widget
*/ */
public function render($variables = []) public function render($variables = [])
{ {
$attributes = $this->additional_attributes;
if (!empty($this->id)) {
$attributes['id'] = $this->id;
}
$variables['additional_attributes'] = $attributes;
return parent::render($variables); return parent::render($variables);
} }
} }
<section class="sidebar-widget clipboard-widget"
id="ClipboardWidget_<?= htmlReady($clipboard_widget_id) ?>"
data-widget_id="<?= htmlReady($clipboard_widget_id) ?>">
<header class="sidebar-widget-header">
<?= _('Eigene Merkzettel') ?>
</header>
<section class="sidebar-widget-content">
<?= $this->render_partial( <?= $this->render_partial(
'sidebar/clipboard-area.php', 'sidebar/clipboard-area.php',
[ [
...@@ -52,5 +45,3 @@ ...@@ -52,5 +45,3 @@
]) ?> ]) ?>
</form> </form>
<? endif ?> <? endif ?>
</section>
</section>
<section class="sidebar-widget clipboard-widget"
id="ClipboardWidget_<?= htmlReady($clipboard_widget_id) ?>"
data-widget_id="<?= htmlReady($clipboard_widget_id) ?>">
<header class="sidebar-widget-header">
<?= _('Individuelle Raumgruppen') ?>
</header>
<section class="sidebar-widget-content">
<div id="clipboard-group-container" class="<?= $clipboards ? '' : 'invisible' ?>"> <div id="clipboard-group-container" class="<?= $clipboards ? '' : 'invisible' ?>">
<?= $this->render_partial( <?= $this->render_partial(
'sidebar/clipboard-area.php', 'sidebar/clipboard-area.php',
...@@ -30,9 +23,6 @@ ...@@ -30,9 +23,6 @@
</li> </li>
<? endforeach; ?> <? endforeach; ?>
</ul> </ul>
</div>
<form class="default new-clipboard-form" <form class="default new-clipboard-form"
action="<?= URLHelper::getLink( action="<?= URLHelper::getLink(
'dispatch.php/clipboard/add' 'dispatch.php/clipboard/add'
...@@ -59,5 +49,4 @@ ...@@ -59,5 +49,4 @@
</form> </form>
<? endif ?> <? endif ?>
</section> </div>
</section>
<div class="<?= $base_class ?>-widget <? if ($layout_css_classes && is_array($layout_css_classes)) echo htmlReady(implode(' ', $layout_css_classes)); ?>" <div class="<?= $base_class ?>-widget <?= is_array($layout_css_classes) ? htmlReady(implode(' ', $layout_css_classes)) : '' ?>"
<? if ($id) printf('id="%s"', htmlReady($id)) ?> <?= arrayToHtmlAttributes($additional_attributes) ?>>
<? if ($style) printf('style="%s"', $style) ?>>
<? if ($title): ?> <? if ($title): ?>
<div class="<?= $base_class ?>-widget-header"> <div class="<?= $base_class ?>-widget-header">
<? if ($extra): ?> <? if ($extra): ?>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment