Skip to content

Commit

Permalink
fix minor bugs within the dashboard administration
Browse files Browse the repository at this point in the history
  • Loading branch information
iszmais committed Feb 21, 2025
1 parent 565eefb commit d516909
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class ilDashboardSortationTableGUI extends ilTable2GUI
private ilPDSelectedItemsBlockViewSettings $viewSettings;
private ilDashboardSidePanelSettingsRepository $side_panel_settings;

public function __construct($a_parent_obj, $a_parent_cmd)
public function __construct($a_parent_obj, $a_parent_cmd, bool $disable = false)
{
global $DIC;
$this->uiFactory = $DIC->ui()->factory();
Expand All @@ -39,13 +39,15 @@ public function __construct($a_parent_obj, $a_parent_cmd)
$this->lng->loadLanguageModule('mme');
$this->initColumns();
$this->setFormAction($this->ctrl->getFormAction($this->parent_obj));
$this->addCommandButton('saveSettings', $this->lng->txt('save'));
if (!$disable) {
$this->addCommandButton('saveSettings', $this->lng->txt('save'));
}
$this->setRowTemplate(
'tpl.dashboard_sortation_row.html',
'components/ILIAS/Dashboard'
);
$this->setEnableNumInfo(false);
$this->initData();
$this->initData($disable);
}

public function initColumns(): void
Expand All @@ -55,7 +57,7 @@ public function initColumns(): void
$this->addColumn($this->lng->txt('topitem_active'));
}

public function initData(): void
public function initData($disable = false): void
{
$data[] = [
'position' => $this->uiRenderer->render(
Expand All @@ -71,12 +73,13 @@ public function initData(): void
$presentation_cb->setChecked($this->viewSettings->isViewEnabled($presentation_view));
$presentation_cb->setValue('1');
$presentation_cb->setDisabled(
$presentation_view === ilPDSelectedItemsBlockConstants::VIEW_RECOMMENDED_CONTENT
$disable ?? ($presentation_view === ilPDSelectedItemsBlockConstants::VIEW_RECOMMENDED_CONTENT)
);

$position_input = new ilNumberInputGUI('', 'main_panel[position][' . $presentation_view . ']');
$position_input->setSize(3);
$position_input->setValue((string) (++$position * 10));
$position_input->setDisabled($disable);

$data[] = [
'position' => $position_input->render(),
Expand All @@ -98,10 +101,12 @@ public function initData(): void
foreach ($this->side_panel_settings->getPositions() as $mod) {
$side_panel_module_cb = new ilCheckboxInputGUI('', 'side_panel[enable][' . $mod . ']');
$side_panel_module_cb->setChecked($this->side_panel_settings->isEnabled($mod));
$side_panel_module_cb->setDisabled($disable);

$position_input = new ilNumberInputGUI('', 'side_panel[position][' . $mod . ']');
$position_input->setSize(3);
$position_input->setValue((string) (++$position * 10));
$position_input->setDisabled($disable);

$data[] = [
'position' => $position_input->render(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public function editSettings(): void
$content[] = $this->ui_factory->messageBox()->info($this->lng->txt('memberships_disabled_info'));
}
$this->setSettingsSubTabs('general');
$table = new ilDashboardSortationTableGUI($this, 'editSettings');
$table = new ilDashboardSortationTableGUI($this, 'editSettings', !$this->canWrite());
$this->tpl->setContent($table->getHTML());
}

Expand Down Expand Up @@ -182,7 +182,9 @@ public function getViewForm(string $mode): ?StandardForm

public function getViewSectionSorting(int $view, string $title): Section
{
$this->tpl->addJavaScript("assets/js/SortationUserInputHandler.js");
if ($this->canWrite()) {
$this->tpl->addJavaScript("assets/js/SortationUserInputHandler.js");
}
$lng = $this->lng;
$availabe_sort_options = $this->viewSettings->getAvailableSortOptionsByView($view);
$options = array_reduce(
Expand Down Expand Up @@ -266,19 +268,11 @@ public function saveSettings(): void
asort($positions);
$this->side_panel_settings->setPositions(array_keys($positions));

$this->tpl->setOnScreenMessage(
$this->tpl::MESSAGE_TYPE_SUCCESS,
$this->lng->txt('settings_saved'),
true
);
$this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('settings_saved'), true);
} else {
$this->tpl->setOnScreenMessage(
$this->tpl::MESSAGE_TYPE_FAILURE,
$this->lng->txt('no_permission'),
true
);
$this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_FAILURE, $this->lng->txt('no_permission'), true);
}
$this->ctrl->redirect($this, 'editSettings');
$this->editSettings();
}

public function setSettingsSubTabs(string $a_active): void
Expand Down Expand Up @@ -376,57 +370,44 @@ public function getViewSectionPresentation(int $view, string $title): Section

protected function savePresentation(): void
{
$form = $this->getViewForm(self::VIEW_MODE_PRESENTATION);

if (!$form || !$this->canWrite()) {
$this->tpl->setOnScreenMessage(
$this->tpl::MESSAGE_TYPE_FAILURE,
$this->lng->txt('no_permission'),
true
);
$this->editPresentation();
return;
}

$form = $form->withRequest($this->request);
$form_data = $form->getData();
if ($this->canWrite()) {
$data = $this->getViewForm(self::VIEW_MODE_PRESENTATION)->withRequest($this->request)->getData();

foreach ($form_data as $view => $view_data) {
$this->viewSettings->storeViewPresentation(
$view,
$view_data['default_pres'],
$view_data['avail_pres'] ?? []
);
foreach ($data as $view => $view_data) {
$this->viewSettings->storeViewPresentation(
$view,
$view_data['default_pres'],
$view_data['avail_pres'] ?? []
);
}
$this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('msg_obj_modified'), true);
} else {
$this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_FAILURE, $this->lng->txt('no_permission'), true);
}
$this->tpl->setOnScreenMessage('success', $this->lng->txt('msg_obj_modified'), true);
$this->editPresentation();
}

public function saveSorting(): void
{
$form = $this->getViewForm(self::VIEW_MODE_SORTING);

if (!$form || !$this->canWrite()) {
$this->tpl->setOnScreenMessage('failure', $this->lng->txt('no_permission'), true);
$this->editSorting();
}

$form = $form->withRequest($this->request);
$form_data = $form->getData();

foreach ($form_data as $view => $view_data) {
if (isset($view_data['default_sorting'])) {
if (!is_array($view_data['avail_sorting'] ?? null)) {
$view_data['avail_sorting'] = [$view_data['default_sorting']];
if ($this->canWrite()) {
$data = $this->getViewForm(self::VIEW_MODE_SORTING)->withRequest($this->request)->getData();

foreach ($data as $view => $view_data) {
if (isset($view_data['default_sorting'])) {
if (!is_array($view_data['avail_sorting'] ?? null)) {
$view_data['avail_sorting'] = [$view_data['default_sorting']];
}
$this->viewSettings->storeViewSorting(
$view,
$view_data['default_sorting'],
$view_data['avail_sorting']
);
}
$this->viewSettings->storeViewSorting(
$view,
$view_data['default_sorting'],
$view_data['avail_sorting']
);
}
$this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_SUCCESS, $this->lng->txt('msg_obj_modified'), true);
} else {
$this->tpl->setOnScreenMessage($this->tpl::MESSAGE_TYPE_FAILURE, $this->lng->txt('no_permission'), true);
}
$this->tpl->setOnScreenMessage('success', $this->lng->txt('msg_obj_modified'), true);
$this->editSorting();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public function __construct()
}
public function getRows(DataRowBuilder $row_builder, array $visible_column_ids, Range $range, Order $order, ?array $filter_data, ?array $additional_parameters): Generator
{
foreach ($this->lng->getInstalledLanguages() as $key) {
foreach (array_slice($this->lng->getInstalledLanguages(), $range->getStart(), $range->getLength()) as $key) {
$title = $this->lng->txt('meta_l_' . $key);
if ($key === $this->lng->getDefaultLanguage()) {
$title .= ' (' . $this->lng->txt('system_language') . ')';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,6 @@ public function getAdditionalPageActions(): array
public static function isLanguageAvailable(string $lang): bool
{
$page = new ilDashboardPage();
return ilPageObject::_exists($page->getParentType(), $page->getParentId(), $lang);
return ilPageObject::_existsAndNotEmpty($page->getParentType(), $page->getParentId(), $lang);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,6 @@ public function select(): void
$token
);

$url_builder = $url_builder->withURI(new URI(
ILIAS_HTTP_PATH . '/' . $this->dic->ctrl()->getLinkTargetByClass(ilDashboardPageGUI::class, 'delete')
));
list($builder, $token) = $url_builder->acquireParameters([$this->page->getParentType()], 'lang');
$actions[] = $this->dic->ui()->factory()->table()->action()->single(
$this->dic->language()->txt('dash_co_delete'),
$builder,
$token
);

$table = $this->dic->ui()->factory()->table()->data(
$this->dic->language()->txt('dash_co_lang'),
[
Expand Down

0 comments on commit d516909

Please sign in to comment.