Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge 4.1.0 into kopff #2724

Merged
merged 51 commits into from
Aug 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
a87fcb5
Dataset: typographical error in the dataset Edit Form (#2666)
nadzpogi Aug 1, 2024
ca0dfe5
Fix: Widget video path does not allow windows file path (#2656)
nadzpogi Aug 1, 2024
c1d1793
Exchange: layouts added from exchange should not have the imported ta…
dasgarner Aug 1, 2024
1f3a9b5
Playlist Inline Editor: Disable sort for published layout (#2668)
maurofmferrao Aug 2, 2024
f646fb9
Editor: Remove expiry date option for standalone widgets (#2669)
maurofmferrao Aug 2, 2024
d96d0d7
Welcome page: training mention text update (#2670)
maurofmferrao Aug 2, 2024
9a52c50
XLR: Fixing slow preview caused by multiple unnecessary network calls…
rubenberttpingol Aug 2, 2024
4e0dd7e
Global Elements: Fix circle and datetime rendering (#2671)
rubenberttpingol Aug 2, 2024
a7b24b6
Mastodon: Fix for item direction horizontal setting and overflow text…
rubenberttpingol Aug 2, 2024
999c732
Image Element: replace drop area text update (#2673)
maurofmferrao Aug 5, 2024
4ed36f3
Toolbox folder control: Save preferences and reload is broken (#2675)
maurofmferrao Aug 5, 2024
38e8516
Layout Exchange : switch endpoint to 4.1 layouts. (#2678)
PeterMis Aug 5, 2024
3660c96
Editor: Element resize and position tab issues (#2681)
maurofmferrao Aug 5, 2024
6d46c0c
Reporting: Add Availability and Grouping Option in Time Connected Sum…
mgbaybay Aug 6, 2024
bf272eb
Module Settings: Translation from editor throwing error (#2685)
maurofmferrao Aug 6, 2024
f77dc2b
XLR: Fixing preview layering (#2682)
rubenberttpingol Aug 7, 2024
94fadcc
Enhancements for DataSet column configuration checks (#2665)
nadzpogi Aug 7, 2024
7782d39
Fix: Unable to save Schedule Action event due to an error (#2680)
nadzpogi Aug 7, 2024
476c0d5
Fix: Importing CSV with empty lines fails for remote datasets and fil…
nadzpogi Aug 7, 2024
f3160bd
Reports : API Requests new report type, various adjustments. (#2679)
PeterMis Aug 7, 2024
cf6a331
Bandwidth Report: Fixed data error for displays with same name (#2684)
mgbaybay Aug 7, 2024
80b2761
Release prep: 4.1.0-rc2 (#2690)
dasgarner Aug 7, 2024
7a76fa9
Developer: fix import and hide temporary text area (#2699)
dasgarner Aug 12, 2024
f94a5bc
Developer: persist data type (#2700)
dasgarner Aug 12, 2024
0095278
Datasets: Fixed HTML sanitation in datasets table (#2698)
mgbaybay Aug 12, 2024
8fe9ff4
XLR: Fix layout preview background (#2703)
rubenberttpingol Aug 12, 2024
6286621
Layout Preview: Fix text element fit to selection (#2704)
rubenberttpingol Aug 12, 2024
3333889
Logging: fix log process to ensure we record page/method (#2702)
dasgarner Aug 12, 2024
7e213fc
Schedule Criteria: CMS API + XMR update to displays (#2686)
nadzpogi Aug 13, 2024
39dff1b
Bugfix: DataSet's value discrepancy when storing large integers in nu…
nadzpogi Aug 13, 2024
8f2785e
Bugfix: Dataset Advanced Filter - display tag substitution is not rep…
nadzpogi Aug 13, 2024
a5457af
Shrunken login page (#2691)
maurofmferrao Aug 13, 2024
d3255a6
Display Profile: correct the help text on android screen dimensions (…
dasgarner Aug 13, 2024
d8f1333
Modules: Disable library media preview for generic file (#2706)
mgbaybay Aug 14, 2024
20b1965
Bugfix/android player not rendering elements (#2707)
rubenberttpingol Aug 15, 2024
5f0103e
Release preparation for 4.1.0-rc3 (#2708)
dasgarner Aug 20, 2024
7f476fe
Layout Editor: Background image layer in viewer and control (#2692)
maurofmferrao Aug 23, 2024
af2d13c
Displays: Add file assignment search filter (#2709)
mgbaybay Aug 23, 2024
c04dbc2
Ad Campaigns: unable to set a start/end date (#2710)
maurofmferrao Aug 23, 2024
03e033b
Playlists: Fixed the API should not allow manual changes to media ass…
mgbaybay Aug 27, 2024
8be002a
Layout Viewer bar: Playlist showing as Region (#2715)
maurofmferrao Aug 27, 2024
c34e640
Layout Editor: we should not show the playlist editor for dynamic pla…
maurofmferrao Aug 28, 2024
a69a709
Editor Toolbox: Media results wrong after adding media from a provide…
maurofmferrao Aug 28, 2024
85f4df6
Editor: Deleting elements and groups at the same time throws error (#…
maurofmferrao Aug 28, 2024
5e12952
Editor Viewer: Slot not being updated for groups (#2719)
maurofmferrao Aug 28, 2024
cf67010
Display Assign Files: Prevent reassigning same items (#2720)
maurofmferrao Aug 28, 2024
ebe79bc
Display: Fix for updating detail of an alert when submitting the end …
mgbaybay Aug 28, 2024
30587e3
Display: Allow limited view access to non-destructive edit-only featu…
mgbaybay Aug 29, 2024
d66cb3b
Release preparation for 4.1.0 (#2721)
dasgarner Aug 29, 2024
89fc147
Merge remote-tracking branch 'origin/develop' into feature/kopff_merg…
dasgarner Aug 30, 2024
2576ed5
Chore: npm install after merge
dasgarner Aug 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/Connector/XiboExchangeConnector.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public function onTemplateProvider(TemplateProviderEvent $event)
$this->getLogger()->debug('XiboExchangeConnector: onTemplateProvider');

// Get a cache of the layouts.json file, or request one from download.
$uri = 'https://download.xibosignage.com/layouts_v4.json';
$uri = 'https://download.xibosignage.com/layouts_v4_1.json';
$key = md5($uri);
$cache = $this->getPool()->getItem($key);
$body = $cache->get();
Expand Down
3 changes: 3 additions & 0 deletions lib/Controller/DataSet.php
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,9 @@ public function editForm(Request $request, Response $response, $id)
// Retrieve data sources from the event
$dataConnectorSources = $event->getDataConnectorSources();

// retrieve the columns of the selected dataset
$dataSet->getColumn();

// Set the form
$this->getState()->template = 'dataset-form-edit';
$this->getState()->setData([
Expand Down
11 changes: 4 additions & 7 deletions lib/Controller/Developer.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
use Xibo\Factory\ModuleFactory;
use Xibo\Factory\ModuleTemplateFactory;
use Xibo\Helper\SendFile;
use Xibo\Helper\UploadHandler;
use Xibo\Service\MediaService;
use Xibo\Service\UploadService;
use Xibo\Support\Exception\AccessDeniedException;
Expand Down Expand Up @@ -335,6 +334,7 @@ public function templateEdit(Request $request, Response $response, $id): Respons
);
}]);

$template->dataType = $dataType;
$template->isEnabled = $params->getCheckbox('enabled');

// TODO: validate?
Expand Down Expand Up @@ -530,28 +530,25 @@ public function templateImport(Request $request, Response $response): Response|R

$options = [
'upload_dir' => $libraryFolder . 'temp/',
'script_url' => $this->urlFor($request, 'developer.templates.import'),
'upload_url' => $this->urlFor($request, 'developer.templates.import'),
'accept_file_types' => '/\.xml/i',
'libraryQuotaFull' => false,
];

$this->getLog()->debug('Hand off to Upload Handler with options: ' . json_encode($options));

// Hand off to the Upload Handler provided by jquery-file-upload
$uploadService = new UploadService($options, $this->getLog(), $this->getState());
$uploadService = new UploadService($libraryFolder . 'temp/', $options, $this->getLog(), $this->getState());
$uploadHandler = $uploadService->createUploadHandler();

$uploadHandler->setPostProcessor(function ($file, $uploadHandler) {
$uploadHandler->setPostProcessor(function ($file, $uploadHandler) use ($libraryFolder) {
// Return right away if the file already has an error.
if (!empty($file->error)) {
return $file;
}

$this->getUser()->isQuotaFullByUser(true);

/** @var UploadHandler $uploadHandler */
$filePath = $uploadHandler->getUploadPath() . $file->fileName;
$filePath = $libraryFolder . 'temp/' . $file->fileName;

// load the xml from uploaded file
$xml = new \DOMDocument();
Expand Down
130 changes: 69 additions & 61 deletions lib/Controller/Display.php
Original file line number Diff line number Diff line change
Expand Up @@ -1005,33 +1005,36 @@ public function grid(Request $request, Response $response)
);
}

if ($this->getUser()->featureEnabled('displays.modify')
&& $this->getUser()->checkEditable($display)
// Check if limited view access is allowed
if (($this->getUser()->featureEnabled('displays.modify') && $this->getUser()->checkEditable($display))
|| $this->getUser()->featureEnabled('displays.limitedView')
) {
if ($this->getUser()->featureEnabled('layout.view')) {
$display->buttons[] = [
'id' => 'display_button_layouts_jump',
'linkType' => '_self',
'external' => true,
'url' => $this->urlFor($request, 'layout.view')
. '?activeDisplayGroupId=' . $display->displayGroupId,
'text' => __('Jump to Scheduled Layouts')
];
}
if ($this->getUser()->checkEditable($display)) {
if ($this->getUser()->featureEnabled('layout.view')) {
$display->buttons[] = [
'id' => 'display_button_layouts_jump',
'linkType' => '_self',
'external' => true,
'url' => $this->urlFor($request, 'layout.view')
. '?activeDisplayGroupId=' . $display->displayGroupId,
'text' => __('Jump to Scheduled Layouts')
];
}

// File Associations
$display->buttons[] = array(
'id' => 'displaygroup_button_fileassociations',
'url' => $this->urlFor($request, 'displayGroup.media.form', ['id' => $display->displayGroupId]),
'text' => __('Assign Files')
);
// File Associations
$display->buttons[] = array(
'id' => 'displaygroup_button_fileassociations',
'url' => $this->urlFor($request, 'displayGroup.media.form', ['id' => $display->displayGroupId]),
'text' => __('Assign Files')
);

// Layout Assignments
$display->buttons[] = array(
'id' => 'displaygroup_button_layout_associations',
'url' => $this->urlFor($request, 'displayGroup.layout.form', ['id' => $display->displayGroupId]),
'text' => __('Assign Layouts')
);
// Layout Assignments
$display->buttons[] = array(
'id' => 'displaygroup_button_layout_associations',
'url' => $this->urlFor($request, 'displayGroup.layout.form', ['id' => $display->displayGroupId]),
'text' => __('Assign Layouts')
);
}

// Screen Shot
$display->buttons[] = [
Expand Down Expand Up @@ -1085,43 +1088,45 @@ public function grid(Request $request, Response $response)
]
];

// Trigger webhook
$display->buttons[] = [
'id' => 'display_button_trigger_webhook',
'url' => $this->urlFor(
$request,
'displayGroup.trigger.webhook.form',
['id' => $display->displayGroupId]
),
'text' => __('Trigger a web hook'),
'multi-select' => true,
'dataAttributes' => [
[
'name' => 'commit-url',
'value' => $this->urlFor(
$request,
'displayGroup.action.trigger.webhook',
['id' => $display->displayGroupId]
)
],
['name' => 'commit-method', 'value' => 'post'],
['name' => 'id', 'value' => 'display_button_trigger_webhook'],
['name' => 'sort-group', 'value' => 3],
['name' => 'text', 'value' => __('Trigger a web hook')],
['name' => 'rowtitle', 'value' => $display->display],
['name' => 'form-callback', 'value' => 'triggerWebhookMultiSelectFormOpen']
]
];

if ($this->getUser()->isSuperAdmin()) {
if ($this->getUser()->checkEditable($display)) {
// Trigger webhook
$display->buttons[] = [
'id' => 'display_button_purgeAll',
'url' => $this->urlFor($request, 'display.purge.all.form', ['id' => $display->displayId]),
'text' => __('Purge All')
'id' => 'display_button_trigger_webhook',
'url' => $this->urlFor(
$request,
'displayGroup.trigger.webhook.form',
['id' => $display->displayGroupId]
),
'text' => __('Trigger a web hook'),
'multi-select' => true,
'dataAttributes' => [
[
'name' => 'commit-url',
'value' => $this->urlFor(
$request,
'displayGroup.action.trigger.webhook',
['id' => $display->displayGroupId]
)
],
['name' => 'commit-method', 'value' => 'post'],
['name' => 'id', 'value' => 'display_button_trigger_webhook'],
['name' => 'sort-group', 'value' => 3],
['name' => 'text', 'value' => __('Trigger a web hook')],
['name' => 'rowtitle', 'value' => $display->display],
['name' => 'form-callback', 'value' => 'triggerWebhookMultiSelectFormOpen']
]
];
}

$display->buttons[] = ['divider' => true];
if ($this->getUser()->isSuperAdmin()) {
$display->buttons[] = [
'id' => 'display_button_purgeAll',
'url' => $this->urlFor($request, 'display.purge.all.form', ['id' => $display->displayId]),
'text' => __('Purge All')
];
}

$display->buttons[] = ['divider' => true];
}
}

if ($this->getUser()->featureEnabled('displays.modify')
Expand Down Expand Up @@ -2187,7 +2192,8 @@ public function screenShot(Request $request, Response $response, $id)
{
$display = $this->displayFactory->getById($id);

if (!$this->getUser()->checkViewable($display)) {
// Allow limited view access
if (!$this->getUser()->checkViewable($display) && !$this->getUser()->featureEnabled('displays.limitedView')) {
throw new AccessDeniedException();
}

Expand Down Expand Up @@ -2247,7 +2253,8 @@ public function requestScreenShotForm(Request $request, Response $response, $id)
{
$display = $this->displayFactory->getById($id);

if (!$this->getUser()->checkViewable($display)) {
// Allow limited view access
if (!$this->getUser()->checkViewable($display) && !$this->getUser()->featureEnabled('displays.limitedView')) {
throw new AccessDeniedException();
}

Expand Down Expand Up @@ -2305,7 +2312,8 @@ public function requestScreenShot(Request $request, Response $response, $id)
{
$display = $this->displayFactory->getById($id);

if (!$this->getUser()->checkViewable($display)) {
// Allow limited view access
if (!$this->getUser()->checkViewable($display) && !$this->getUser()->featureEnabled('displays.limitedView')) {
throw new AccessDeniedException();
}

Expand Down
Loading
Loading