aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/sidebar/ClipboardWidget.class.php
diff options
context:
space:
mode:
authorPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
committerPhilipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de>2024-09-24 10:53:31 +0200
commit4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch)
tree5c07151ae61276d334e88f6309c30d439a85c12e /lib/classes/sidebar/ClipboardWidget.class.php
parentda0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff)
parent97a188592c679890a25c37ab78463add76a52ff7 (diff)
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/classes/sidebar/ClipboardWidget.class.php')
-rw-r--r--lib/classes/sidebar/ClipboardWidget.class.php143
1 files changed, 0 insertions, 143 deletions
diff --git a/lib/classes/sidebar/ClipboardWidget.class.php b/lib/classes/sidebar/ClipboardWidget.class.php
deleted file mode 100644
index abc0d6c..0000000
--- a/lib/classes/sidebar/ClipboardWidget.class.php
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-
-/**
- * This class is responsible for displaying new clipboards
- * (the ones that use the Clipboard SORM class) in the sidebar.
- *
- * @author Moritz Strohm <strohm@data-quest.de>
- * @license GNU General Public License v2 or later.
- * @since 4.5
- */
-class ClipboardWidget extends SidebarWidget
-{
- protected $draggable_items;
-
- /**
- * clipboard_widget_id is required in the case that multiple
- * clipboard widgets exist on one page. The JavaScript code
- * can then distinguish each clipboard widget by its unique ID.
- */
- protected $clipboard_widget_id;
-
-
- /**
- * This attribute holds the ID of the clipboard which is stored in the
- * session as currently selected clipboard.
- */
- protected $current_clipboard_id;
-
-
- /**
- * This attribute contains a string that shall be the title of the button
- * for applying the selected clipbard to the main area
- * the widget is showing when in read only mode.
- */
- protected $apply_button_title;
-
- /**
- * This widget can be initialised with the class names of allowed classes
- * to limit the displayed items in a clipboard to items of specific
- * classes.
- */
- public function __construct($allowed_item_classes = [])
- {
- parent::__construct();
-
- if ($allowed_item_classes) {
- //Check if all allowed item classes are SimpleORMap objects
- //and if the classes implement the StudipItem interface:
- foreach ($allowed_item_classes as $class) {
- if (!is_subclass_of($class, 'StudipItem')) {
- throw new InvalidArgumentException(
- sprintf(
- 'The class %s does not implement the StudipItem interface which is required for clipboard items!',
- htmlReady($class)
- )
- );
- }
- }
- } else {
- //Allow all StudipItem implementations:
- $allowed_item_classes = ['StudipItem'];
- }
-
- $this->allowed_item_classes = $allowed_item_classes;
- $this->template = 'sidebar/clipboard-widget';
- $this->title = _('Eigene Merkzettel');
- $this->apply_button_title = _('Hauptbereich aktualisieren');
-
- $this->clipboard_widget_id = md5(uniqid('clipboard_widget_id'));
-
- $this->updateSessionVariables();
- $this->current_clipboard_id = $_SESSION['selected_clipboard_id'] ?? '';
-
- $this->setId("ClipboardWidget_{$this->clipboard_widget_id}");
- $this->setAdditionalAttribute('data-widget_id', $this->clipboard_widget_id);
- $this->addLayoutCSSClass('clipboard-widget');
- }
-
- /**
- * Updates session variables if a special POST request is made.
- */
- public function updateSessionVariables()
- {
- if (Request::submitted('clipboard_update_session_special_action')) {
- CSRFProtection::verifyUnsafeRequest();
-
- $_SESSION['selected_clipboard_id'] = Request::get('selected_clipboard_id');
- }
- }
-
- public function setApplyButtonTitle($title = '')
- {
- if ($title) {
- $this->apply_button_title = $title;
- }
- }
-
- public function getClipboardWidgetId()
- {
- return $this->clipboard_widget_id;
- }
-
- public function render($variables = [])
- {
- $clipboards = Clipboard::getClipboardsForUser(
- $GLOBALS['user']->id
- );
-
- if (!$this->current_clipboard_id && $clipboards) {
- $_SESSION['selected_clipboard_id'] = $clipboards[0]->id;
- $this->current_clipboard_id = $clipboards[0]->id;
- }
-
- 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,
- 'apply_button_title' => $this->apply_button_title,
- 'elements' => $this->elements,
- 'selected_clipboard_id' => $this->current_clipboard_id,
- ]);
- }
-
- /**
- * Adds a link to the widget
- *
- * @param String $label Label/content of the link
- * @param String $url URL/Location of the link
- * @param Icon $icon instance of class Icon for the link
- * @param bool $active Pass true if the link is currently active,
- * defaults to false
- */
- public function &addLink($label, $url, $icon = null, $attributes = array(), $index = null)
- {
- if ($index === null) {
- $index = 'link-' . md5($url);
- }
- $element = new LinkElement($label, $url, $icon, $attributes);
- $this->addElement($element, $index);
- return $element;
- }
-}