Skip to content

Commit

Permalink
Elements, Widgets, and Regions need to obey sharing
Browse files Browse the repository at this point in the history
  • Loading branch information
maurofmferrao committed Mar 5, 2024
1 parent f8d880c commit 932ca95
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 3 deletions.
6 changes: 6 additions & 0 deletions lib/Controller/Layout.php
Original file line number Diff line number Diff line change
Expand Up @@ -1542,6 +1542,9 @@ public function grid(Request $request, Response $response)
// Augment with deletable flag
$widget->setUnmatchedProperty('isDeletable', $this->getUser()->checkDeleteable($widget));

// Augment with viewable flag
$widget->setUnmatchedProperty('isViewable', $this->getUser()->checkViewable($widget));

// Augment with permissions flag
$widget->setUnmatchedProperty(
'isPermissionsModifiable',
Expand All @@ -1562,6 +1565,9 @@ public function grid(Request $request, Response $response)
// Augment with deletable flag
$region->setUnmatchedProperty('isDeletable', $this->getUser()->checkDeleteable($region));

// Augment with viewable flag
$region->setUnmatchedProperty('isViewable', $this->getUser()->checkViewable($region));

// Augment with permissions flag
$region->setUnmatchedProperty(
'isPermissionsModifiable',
Expand Down
3 changes: 3 additions & 0 deletions lib/Controller/Playlist.php
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,9 @@ public function grid(Request $request, Response $response)
// Augment with deletable flag
$widget->setUnmatchedProperty('isDeletable', $this->getUser()->checkDeleteable($widget));

// Augment with viewable flag
$widget->setUnmatchedProperty('isViewable', $this->getUser()->checkViewable($widget));

// Augment with permissions flag
$widget->setUnmatchedProperty(
'isPermissionsModifiable',
Expand Down
1 change: 1 addition & 0 deletions ui/src/editor-core/element-group.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const ElementGroup = function(data, widgetId, regionId, parentWidget) {
// Set element to have same properties for edit and delete as parent widget
this.isEditable = (parentWidget) ? parentWidget.isEditable : true;
this.isDeletable = (parentWidget) ? parentWidget.isDeletable : true;
this.isViewable = (parentWidget) ? parentWidget.isViewable : true;
this.effect = data.effect || 'noTransition';

// Expanded on layer manager
Expand Down
1 change: 1 addition & 0 deletions ui/src/editor-core/element.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ const Element = function(data, widgetId, regionId, parentWidget) {
// Set element to have same properties for edit and delete as parent widget
this.isEditable = (parentWidget) ? parentWidget.isEditable : true;
this.isDeletable = (parentWidget) ? parentWidget.isDeletable : true;
this.isViewable = (parentWidget) ? parentWidget.isViewable : true;

// Element data from the linked widget/module
this.data = {};
Expand Down
1 change: 1 addition & 0 deletions ui/src/editor-core/widget.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ const Widget = function(id, data, regionId = null, layoutObject = null) {
// Permissions
this.isEditable = data.isEditable;
this.isDeletable = data.isDeletable;
this.isViewable = data.isViewable;
this.isPermissionsModifiable = data.isPermissionsModifiable;

// widget tags
Expand Down
1 change: 1 addition & 0 deletions ui/src/layout-editor/canvas.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const Canvas = function(id, data, layoutDimensions) {
// Permissions
this.isEditable = data.isEditable;
this.isDeletable = data.isDeletable;
this.isViewable = data.isViewable;
this.isPermissionsModifiable = data.isPermissionsModifiable;

// Interactive actions
Expand Down
1 change: 1 addition & 0 deletions ui/src/layout-editor/region.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const Region = function(id, data, {backgroundColor = '#aaa'} = {}) {
// Permissions
this.isEditable = data.isEditable;
this.isDeletable = data.isDeletable;
this.isViewable = data.isViewable;
this.isPermissionsModifiable = data.isPermissionsModifiable;
this.isPlaylist = data.type === 'playlist';
this.isFrame = data.type === 'frame';
Expand Down
15 changes: 13 additions & 2 deletions ui/src/layout-editor/viewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,10 @@ Viewer.prototype.render = function(forceReload = false, target = {}) {

// Render viewer regions/widgets
for (const regionIndex in lD.layout.regions) {
if (lD.layout.regions.hasOwnProperty(regionIndex)) {
if (
lD.layout.regions.hasOwnProperty(regionIndex) &&
lD.layout.regions[regionIndex].isViewable
) {
this.renderRegion(lD.layout.regions[regionIndex]);
}
}
Expand Down Expand Up @@ -1484,6 +1487,12 @@ Viewer.prototype.renderElement = function(
canvas,
) {
const self = this;

// If element is not viewable, don't render
if (!element.isViewable) {
return;
}

// Get canvas region container
const $canvasRegionContainer = this.DOMObject.find(`#${canvas.id}`);

Expand Down Expand Up @@ -2936,13 +2945,15 @@ Viewer.prototype.updateMoveable = function(
const multipleSelected = ($selectedElement.length > 1);

// Update moveable if we have a selected element, and is not a drawerWidget
// If we're selecting a widget with no edit permissions don't update moveable
if (
multipleSelected ||
(
$selectedElement &&
$.contains(document, $selectedElement[0]) &&
!$selectedElement.hasClass('drawerWidget') &&
$selectedElement.hasClass('editable')
$selectedElement.hasClass('editable') &&
lD.selectedObject.isEditable
)
) {
if ($selectedElement.hasClass('designer-element-group')) {
Expand Down
4 changes: 3 additions & 1 deletion ui/src/templates/viewer.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
{{/if}}
<div id="regions">
{{#each layout.regions}}
{{> viewer-region}}
{{#if isViewable}}
{{> viewer-region}}
{{/if}}
{{/each}}
</div>
</div>
Expand Down

0 comments on commit 932ca95

Please sign in to comment.