Voe Umbau mit Joomla-Cron
This commit is contained in:
BIN
com_eis/administrator/tmpl/.DS_Store
vendored
BIN
com_eis/administrator/tmpl/.DS_Store
vendored
Binary file not shown.
@@ -6,6 +6,10 @@ use Joomla\CMS\Router\Route;
|
||||
use Joomla\CMS\Language\Text;
|
||||
|
||||
$hasTree = !empty($this->treeHtml);
|
||||
|
||||
// ACL-Daten aus der View (für Vorbelegung im Formular)
|
||||
$viewLevels = method_exists($this, 'getViewLevels') ? (array) $this->getViewLevels() : [];
|
||||
$aclMap = method_exists($this, 'getFolderAccess') ? (array) $this->getFolderAccess() : [];
|
||||
?>
|
||||
<style>
|
||||
/* Layout */
|
||||
@@ -75,7 +79,7 @@ $hasTree = !empty($this->treeHtml);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rechte Seite: Inline-Bearbeitungsformular -->
|
||||
<!-- Rechte Seite: Inline-Bearbeitung + ACL -->
|
||||
<div class="eis-edit">
|
||||
<h4><?php echo Text::_('COM_EIS_EDIT_TITLE') ?: 'Anzeigename bearbeiten'; ?></h4>
|
||||
|
||||
@@ -105,11 +109,46 @@ $hasTree = !empty($this->treeHtml);
|
||||
|
||||
<?php echo HTMLHelper::_('form.token'); ?>
|
||||
</form>
|
||||
|
||||
<!-- ===== ACL: Zugriff (Top-Level-Ordner) ===== -->
|
||||
<hr style="margin:1rem 0">
|
||||
|
||||
<h4><?php echo Text::_('COM_EIS_ACCESS_TITLE') ?: 'Zugriff (Top-Level-Ordner)'; ?></h4>
|
||||
|
||||
<form action="<?php echo Route::_('index.php?option=com_eis&task=display.saveAccess'); ?>"
|
||||
method="post" id="eis-access-form">
|
||||
<div class="control-group">
|
||||
<label for="eis-folder-viewlevel">
|
||||
<?php echo Text::_('COM_EIS_FIELD_VIEWLEVEL') ?: 'Zugriffsebene'; ?>
|
||||
</label>
|
||||
<select name="viewlevel_id" id="eis-folder-viewlevel" class="form-control">
|
||||
<option value="0">(Öffentlich)</option>
|
||||
<?php foreach ($viewLevels as $vl): ?>
|
||||
<option value="<?php echo (int)$vl['id']; ?>">
|
||||
<?php echo htmlspecialchars($vl['title'], ENT_QUOTES, 'UTF-8'); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<div class="form-help">
|
||||
<?php echo Text::_('COM_EIS_ACCESS_HELP') ?: 'Nur für Ordner der ersten Ebene. Unterordner und Dateien erben die Einstellung.'; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="folder_id" id="eis-folder-id" value="">
|
||||
<?php echo HTMLHelper::_('form.token'); ?>
|
||||
|
||||
<div class="mt-2">
|
||||
<button type="submit" class="btn btn-secondary" id="eis-access-save" disabled>
|
||||
<?php echo Text::_('JSAVE'); ?>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- ===== /ACL ===== -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
(function(){
|
||||
const tree = document.getElementById('eis-tree');
|
||||
const form = document.getElementById('eis-rename-form');
|
||||
const idFld = document.getElementById('eis-id');
|
||||
@@ -119,10 +158,26 @@ $hasTree = !empty($this->treeHtml);
|
||||
const btnSave = document.getElementById('eis-save');
|
||||
const btnClr = document.getElementById('eis-clear-title');
|
||||
|
||||
if (!tree || !form) return;
|
||||
// ACL-Form Elemente
|
||||
const aclForm = document.getElementById('eis-access-form');
|
||||
const aclFolderId = document.getElementById('eis-folder-id');
|
||||
const aclSelect = document.getElementById('eis-folder-viewlevel');
|
||||
const aclBtn = document.getElementById('eis-access-save');
|
||||
|
||||
// PHP-Map folder_id => viewlevel_id an JS übergeben
|
||||
const ACL_MAP = <?php echo json_encode($aclMap, JSON_UNESCAPED_SLASHES); ?>;
|
||||
|
||||
if (!tree) return;
|
||||
|
||||
let lastSelected;
|
||||
|
||||
// Helper: prüfen, ob li.folder Top-Level ist
|
||||
function isTopLevelFolder(li){
|
||||
if (!li) return false;
|
||||
const parentLi = li.parentElement ? li.parentElement.closest('li.folder') : null;
|
||||
return !parentLi; // kein übergeordneter <li.folder>
|
||||
}
|
||||
|
||||
// Toggle (Caret) & Auswahl
|
||||
tree.addEventListener('click', (e) => {
|
||||
const t = e.target;
|
||||
@@ -151,22 +206,37 @@ $hasTree = !empty($this->treeHtml);
|
||||
t.classList.add('is-selected');
|
||||
lastSelected = t;
|
||||
|
||||
// Daten aus data-Attributen (TreeHelper muss sie setzen)
|
||||
// Daten aus data-Attributen
|
||||
const id = li.getAttribute('data-id') || '';
|
||||
const title = li.getAttribute('data-title') || '';
|
||||
const name = li.getAttribute('data-name') || '';
|
||||
const size = li.getAttribute('data-size') || ''; // optional
|
||||
|
||||
|
||||
idFld.value = id;
|
||||
nameFld.value = name;
|
||||
titleFld.value= title;
|
||||
sizeOut.textContent = size || '–';
|
||||
|
||||
// Buttons ermöglichen
|
||||
btnSave.disabled = !id;
|
||||
btnClr.disabled = !id;
|
||||
|
||||
// ACL-Form: nur bei Top-Level-Ordner aktivieren und vorbelegen
|
||||
if (li.classList.contains('folder') && isTopLevelFolder(li)) {
|
||||
aclFolderId.value = id || '';
|
||||
aclBtn.disabled = !aclFolderId.value;
|
||||
// vorwählen
|
||||
const current = (id && ACL_MAP[id]) ? String(ACL_MAP[id]) : '0';
|
||||
if (aclSelect) {
|
||||
for (const opt of aclSelect.options) {
|
||||
opt.selected = (opt.value === current);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// kein Top-Level -> ACL-Form deaktivieren
|
||||
aclFolderId.value = '';
|
||||
aclBtn.disabled = true;
|
||||
}
|
||||
|
||||
// Fokus ins Titel-Feld
|
||||
titleFld.focus();
|
||||
}
|
||||
@@ -187,7 +257,7 @@ $hasTree = !empty($this->treeHtml);
|
||||
document.querySelectorAll('.pdf-tree ul').forEach(ul => ul.style.display = 'none');
|
||||
document.querySelectorAll('.pdf-tree .toggle').forEach(t => t.textContent = '▶');
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
Reference in New Issue
Block a user