MCPcopy Create free account
hub / github.com/error311/FileRise / wireRow

Function wireRow

public/js/adminFolderAccess.js:548–659  ·  view source on GitHub ↗
(row)

Source from the content-addressed store, hash-verified

546 }
547
548 function wireRow(row) {
549 const isAdminRow = row.dataset.admin === '1';
550 const cbView = row.querySelector('input[data-cap="view"]');
551 const cbViewOwn = row.querySelector('input[data-cap="viewOwn"]');
552 const cbWrite = row.querySelector('input[data-cap="write"]');
553 const cbManage = row.querySelector('input[data-cap="manage"]');
554 const cbCreate = row.querySelector('input[data-cap="create"]');
555 const cbUpload = row.querySelector('input[data-cap="upload"]');
556 const cbEdit = row.querySelector('input[data-cap="edit"]');
557 const cbRename = row.querySelector('input[data-cap="rename"]');
558 const cbCopy = row.querySelector('input[data-cap="copy"]');
559 const cbMove = row.querySelector('input[data-cap="move"]');
560 const cbDelete = row.querySelector('input[data-cap="delete"]');
561 const cbExtract = row.querySelector('input[data-cap="extract"]');
562 const cbShareF = row.querySelector('input[data-cap="shareFile"]');
563 const cbShareFo = row.querySelector('input[data-cap="shareFolder"]');
564 const cbInherit = row.querySelector('input[data-inherit]');
565 const markExplicit = () => { row.dataset.explicit = '1'; };
566 if (isAdminRow) {
567 qsa(row, 'input[type="checkbox"]').forEach(cb => cb.disabled = true);
568 const note = row.querySelector('.inherit-flag-note');
569 if (note) {
570 note.style.display = 'inline-flex';
571 note.textContent = tf('admin_full_access', 'Admin: full access (not editable)');
572 note.classList.add('pill-note-strong');
573 }
574 row.classList.add('admin-locked-row');
575 return;
576 }
577
578 const granular = [cbCreate, cbUpload, cbEdit, cbRename, cbCopy, cbMove, cbDelete, cbExtract];
579
580 const applyManage = () => {
581 if (cbManage && cbManage.checked) {
582 if (cbView) cbView.checked = true;
583 if (cbWrite) cbWrite.checked = true;
584 granular.forEach(cb => { if (cb) cb.checked = true; });
585 if (cbShareF) cbShareF.checked = true;
586 if (cbShareFo && !cbShareFo.disabled) cbShareFo.checked = true;
587 }
588 };
589
590 const syncWriteFromGranular = () => {
591 if (!cbWrite) return;
592 cbWrite.checked = granular.some(cb => cb && cb.checked);
593 };
594 const applyWrite = () => {
595 if (!cbWrite) return;
596 granular.forEach(cb => { if (cb) cb.checked = cbWrite.checked; });
597 const any = granular.some(cb => cb && cb.checked);
598 if (any && cbView && !cbView.checked && cbViewOwn && !cbViewOwn.checked) cbViewOwn.checked = true;
599 };
600
601 const onShareFile = () => {
602 if (cbShareF && cbShareF.checked && cbView && !cbView.checked && cbViewOwn && !cbViewOwn.checked) {
603 cbViewOwn.checked = true;
604 }
605 };

Callers

nothing calls this directly

Calls 12

applyManageFunction · 0.85
onShareFileFunction · 0.85
cascadeManageFunction · 0.85
markExplicitFunction · 0.85
applyWriteFunction · 0.85
refreshInheritanceFunction · 0.85
syncWriteFromGranularFunction · 0.85
setFromViewChangeFunction · 0.85
qsaFunction · 0.70
tfFunction · 0.70
onShareFolderToggleFunction · 0.70
enforceShareFolderRuleFunction · 0.70

Tested by

no test coverage detected