2026-03-14 21:45:58 +01:00
|
|
|
<?php
|
|
|
|
|
|
2026-03-17 22:58:07 +01:00
|
|
|
use MintyPHP\Http\SessionStoreInterface;
|
2026-03-14 21:45:58 +01:00
|
|
|
use MintyPHP\Service\Bookmark\BookmarkService;
|
|
|
|
|
|
2026-03-17 22:58:07 +01:00
|
|
|
$bmSessionData = is_array(app(SessionStoreInterface::class)->get('user_bookmarks')) ? app(SessionStoreInterface::class)->get('user_bookmarks') : [];
|
2026-03-14 21:45:58 +01:00
|
|
|
$bmSessionGroups = is_array($bmSessionData['groups'] ?? null) ? $bmSessionData['groups'] : [];
|
|
|
|
|
|
|
|
|
|
?>
|
|
|
|
|
<dialog
|
|
|
|
|
data-app-bookmark-dialog
|
2026-03-17 22:58:07 +01:00
|
|
|
data-app-component="bookmark-save"
|
2026-03-14 21:45:58 +01:00
|
|
|
data-max-message="<?php e(t('Maximum bookmarks reached')); ?>"
|
|
|
|
|
data-title-create="<?php e(t('Bookmarks')); ?>"
|
|
|
|
|
data-title-edit="<?php e(t('Bookmarks')); ?>"
|
|
|
|
|
data-label-save="<?php e(t('Save')); ?>"
|
|
|
|
|
data-label-update="<?php e(t('Save')); ?>"
|
|
|
|
|
data-msg-saved="<?php e(t('Bookmark saved')); ?>"
|
|
|
|
|
data-msg-updated="<?php e(t('Bookmark updated')); ?>"
|
|
|
|
|
data-msg-group-created="<?php e(t('Group created')); ?>"
|
|
|
|
|
data-msg-error-generic="<?php e(t('Bookmark action failed')); ?>"
|
|
|
|
|
data-msg-group-create-failed="<?php e(t('Group action failed')); ?>"
|
|
|
|
|
data-msg-name-required="<?php e(t('Bookmark name is required')); ?>"
|
|
|
|
|
data-msg-url-required="<?php e(t('Bookmark URL is invalid')); ?>"
|
|
|
|
|
data-msg-group-not-found="<?php e(t('Group not found')); ?>"
|
|
|
|
|
aria-labelledby="app-bookmark-dialog-title"
|
|
|
|
|
>
|
|
|
|
|
<article class="app-bookmark-dialog">
|
|
|
|
|
<header>
|
|
|
|
|
<h2 id="app-bookmark-dialog-title"><?php e(t('Bookmarks')); ?></h2>
|
|
|
|
|
<button type="button" class="close" data-bookmark-dialog-close aria-label="<?php e(t('Close')); ?>" title="<?php e(t('Close')); ?>"></button>
|
|
|
|
|
</header>
|
|
|
|
|
<form data-bookmark-save-form>
|
|
|
|
|
<label for="bookmark-name"><?php e(t('Name')); ?></label>
|
|
|
|
|
<input type="text" id="bookmark-name" name="name" maxlength="120" required
|
|
|
|
|
placeholder="<?php e(t('Bookmark name')); ?>">
|
|
|
|
|
<label for="bookmark-group"><?php e(t('Assign to group')); ?></label>
|
|
|
|
|
<select id="bookmark-group" name="group_id" data-bookmark-group-select>
|
|
|
|
|
<option value=""><?php e(t('No group')); ?></option>
|
|
|
|
|
<?php foreach ($bmSessionGroups as $grp):
|
|
|
|
|
$grpId = (int) ($grp['id'] ?? 0);
|
|
|
|
|
$grpName = trim((string) ($grp['name'] ?? ''));
|
|
|
|
|
if ($grpId <= 0 || $grpName === '') { continue; }
|
|
|
|
|
?>
|
|
|
|
|
<option value="<?php e($grpId); ?>"><?php e($grpName); ?></option>
|
|
|
|
|
<?php endforeach; ?>
|
|
|
|
|
</select>
|
|
|
|
|
<button type="button" class="outline secondary app-bookmark-new-group-btn" data-bookmark-new-group>
|
|
|
|
|
<i class="bi bi-plus"></i> <?php e(t('New group')); ?>
|
|
|
|
|
</button>
|
|
|
|
|
<footer>
|
|
|
|
|
<button type="submit" class="app-action-success" data-bookmark-submit-label><?php e(t('Save')); ?></button>
|
|
|
|
|
</footer>
|
|
|
|
|
</form>
|
|
|
|
|
</article>
|
|
|
|
|
</dialog>
|
|
|
|
|
|
|
|
|
|
<dialog
|
|
|
|
|
data-app-bookmark-group-dialog
|
|
|
|
|
data-title-create="<?php e(t('New group')); ?>"
|
|
|
|
|
data-title-edit="<?php e(t('Edit group')); ?>"
|
|
|
|
|
data-label-save="<?php e(t('Save')); ?>"
|
|
|
|
|
data-label-update="<?php e(t('Save')); ?>"
|
|
|
|
|
data-max-message="<?php e(t('Maximum groups reached')); ?>"
|
|
|
|
|
data-msg-created="<?php e(t('Group created')); ?>"
|
|
|
|
|
data-msg-updated="<?php e(t('Group updated')); ?>"
|
|
|
|
|
data-msg-error-generic="<?php e(t('Group action failed')); ?>"
|
|
|
|
|
data-msg-name-required="<?php e(t('Group name is required')); ?>"
|
|
|
|
|
aria-labelledby="app-bookmark-group-dialog-title"
|
|
|
|
|
>
|
|
|
|
|
<article class="app-bookmark-dialog app-bookmark-group-dialog">
|
|
|
|
|
<header>
|
|
|
|
|
<h2 id="app-bookmark-group-dialog-title"><?php e(t('New group')); ?></h2>
|
|
|
|
|
<button type="button" class="close" data-bookmark-group-dialog-close aria-label="<?php e(t('Close')); ?>" title="<?php e(t('Close')); ?>"></button>
|
|
|
|
|
</header>
|
|
|
|
|
<form data-bookmark-group-save-form>
|
|
|
|
|
<label for="bookmark-group-name"><?php e(t('Group name')); ?></label>
|
|
|
|
|
<input type="text" id="bookmark-group-name" name="name" maxlength="100" required
|
|
|
|
|
placeholder="<?php e(t('Group name')); ?>">
|
|
|
|
|
<label><?php e(t('Icon')); ?></label>
|
|
|
|
|
<div class="app-bookmark-group-icon-picker" data-bookmark-group-icon-picker>
|
|
|
|
|
<?php foreach (BookmarkService::allowedGroupIcons() as $allowedIcon): ?>
|
|
|
|
|
<button type="button" class="app-bookmark-group-icon-option"
|
|
|
|
|
data-icon="<?php e($allowedIcon); ?>"
|
|
|
|
|
aria-label="<?php e($allowedIcon); ?>">
|
|
|
|
|
<i class="bi <?php e($allowedIcon); ?>"></i>
|
|
|
|
|
</button>
|
|
|
|
|
<?php endforeach; ?>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="hidden" name="icon" value="bi-folder">
|
|
|
|
|
<footer>
|
|
|
|
|
<button type="submit" class="app-action-success" data-bookmark-group-submit-label><?php e(t('Save')); ?></button>
|
|
|
|
|
</footer>
|
|
|
|
|
</form>
|
|
|
|
|
</article>
|
|
|
|
|
</dialog>
|