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

Release 4.1.0 #2722

Merged
merged 223 commits into from
Sep 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
223 commits
Select commit Hold shift + click to select a range
9f00b9f
Merge pull request #2258 from xibosignage/develop
dasgarner Dec 7, 2023
59f0ce3
Real time data pt1 (#2269)
dasgarner Dec 13, 2023
147b999
Real time data pt2 (#2275)
dasgarner Dec 15, 2023
2de0122
Real time data pt3 (#2277)
dasgarner Dec 19, 2023
fb1be9b
Real time data pt4 (#2279)
dasgarner Dec 21, 2023
15b5e55
Real time data pt5 (#2280)
dasgarner Dec 21, 2023
b9e64eb
Part 6: xiboIC fixes (#2281)
dasgarner Dec 22, 2023
d583103
Part 7: xiboIC fixes and pass data in CMS as string. (#2283)
dasgarner Dec 22, 2023
dcf847b
Part 8: Expect setData to be a string always. (#2284)
dasgarner Dec 22, 2023
ba567b6
Part 10: Fix issue setting other data (#2285)
dasgarner Dec 22, 2023
ab66338
Part 10: Fix issue setting other data (#2315)
dasgarner Jan 18, 2024
d6af9c5
Schedule criteria part 1 (#2316)
dasgarner Jan 18, 2024
fcbc434
Module Template editing in the CMS (#2320)
dasgarner Jan 24, 2024
df67df9
Merge remote-tracking branch 'upstream/develop' into giacobini/merge_…
dasgarner Feb 26, 2024
5bc64bd
NPM: install after merge.
dasgarner Feb 26, 2024
1330405
Merge pull request #2384 from dasgarner/giacobini/merge_develop
dasgarner Feb 26, 2024
7f40fb9
Layout Editor: add playlist as a toolbar option rather than a widget …
dasgarner Feb 26, 2024
aa34879
Field lengths and missing indexes (#2388)
dasgarner Feb 27, 2024
9d63084
DB: fix missing indexes (#2391)
dasgarner Feb 27, 2024
7c63958
DB: fix missing indexes (#2392)
dasgarner Feb 27, 2024
3811aee
DB: fix missing indexes (#2393)
dasgarner Feb 28, 2024
2cc16ee
Feature/editor toolbar provider tabs (#2398)
maurofmferrao Feb 29, 2024
c4f01a4
Merge remote-tracking branch 'origin/develop' into feature/giacobini_…
dasgarner Mar 8, 2024
8485c9e
Merge pull request #2428 from xibosignage/feature/giacobini_merge_4.0.8
dasgarner Mar 8, 2024
6c54476
Schedule: tidy up criteria for alpha (#2420)
dasgarner Mar 8, 2024
4b3f3f9
Edit single sub-playlist from Layout Editor (#2426)
maurofmferrao Mar 8, 2024
ebcf063
Editor toolbar: Fix for removed filter preference on load (#2402)
maurofmferrao Mar 8, 2024
42082d8
Fix JS error and moveable when adding from playlist tab (#2432)
maurofmferrao Mar 15, 2024
1aa13f5
Template Editor: Create properties form controls (#2430)
maurofmferrao Mar 15, 2024
aabbb74
Merge remote-tracking branch 'origin/develop' into bugfix/giacobini_p…
dasgarner Mar 19, 2024
393a53f
Merge pull request #2438 from xibosignage/bugfix/giacobini_pull_westphal
dasgarner Mar 19, 2024
0858b55
Provider Details : return available mediaTypes. (#2441)
PeterMis Mar 21, 2024
26fe4a7
Template Editor : add missing features. (#2437)
PeterMis Mar 22, 2024
67263f7
Layout Editor: Zoom levels and media explorer (#2440)
maurofmferrao Mar 26, 2024
85b637d
Toolbar provider FE: Added media types (#2448)
maurofmferrao Mar 26, 2024
ec4691b
Fix for library type translation object (#2454)
maurofmferrao Mar 26, 2024
80c7628
Module Template : fixes after initial tests. (#2455)
PeterMis Mar 27, 2024
c28e473
Template Editor controls fixes (#2456)
maurofmferrao Mar 27, 2024
e814110
Schedule : Switch display filters from using session to local storage…
PeterMis Mar 28, 2024
6677ef6
Cypress Fix (#2468)
ifarzana Apr 2, 2024
4383f0d
Bring back Delete confirmation modals (#2464)
maurofmferrao Apr 2, 2024
2426c0c
Logging : Separate XMDS and Player logging settings. Introduce date b…
PeterMis Apr 3, 2024
f57fb2e
Cypress fix for dataset test in layout editor (#2478)
ifarzana Apr 8, 2024
5d11dee
Editor Toolbar: Exchange tab (#2471)
maurofmferrao Apr 8, 2024
f7fc51f
Elements editing: Undo (#2470)
maurofmferrao Apr 15, 2024
ae5f100
Global Elements: Add Date (#2466)
maurofmferrao Apr 15, 2024
8f9e9a9
Elements: add a new property to control whether a module sends it pro…
dasgarner Apr 16, 2024
7b473ec
Confusing Widget naming for elements (#2481)
maurofmferrao Apr 17, 2024
2e34e17
Weather: Date element and Widget have both Language properties (#2485)
maurofmferrao Apr 18, 2024
722211b
Display alerts (#2482)
PeterMis Apr 18, 2024
26a44a3
Bugfix/giacobini toolbar tabs height fixes (#2487)
maurofmferrao Apr 18, 2024
87b23d8
Editor Bottom Bar: Add template info for static widgets (#2489)
maurofmferrao Apr 19, 2024
b452499
Image Element improvements (#2490)
maurofmferrao Apr 19, 2024
35ad9c1
Toolbar: Media table view improvements (#2491)
maurofmferrao Apr 19, 2024
21baf71
Playlist Inline Editor: Multi-select not working (#2486)
maurofmferrao Apr 22, 2024
5a6ded5
Image Placeholder element (#2484)
maurofmferrao Apr 22, 2024
8f24755
Strict CSP (#2439)
dasgarner Apr 22, 2024
f2a45cc
Element shapes: Option to fill area (#2492)
maurofmferrao Apr 23, 2024
018a3bc
Editor Toolbar: New Playlist not working with no results (#2498)
maurofmferrao Apr 23, 2024
42824e4
Editor Bottom Bar: Fix rendering for non data widgets (#2496)
maurofmferrao Apr 23, 2024
378f6f1
Layout Editor: Playlist thumbnail doesn't resize when viewer changes …
maurofmferrao Apr 23, 2024
ff11880
Remove Sub-Playlist advanced button (#2499)
maurofmferrao Apr 24, 2024
f7fa331
Countdown: Warning message issues and skipped seconds (#2495)
maurofmferrao Apr 24, 2024
7bc454c
Toolbar levels: Adjust form controls width accordingly (#2500)
maurofmferrao Apr 25, 2024
4ba31e1
Layout Exchange : Improve filters, add concept of featured templates.…
PeterMis Apr 26, 2024
23e2a92
CSP: fix for warnings raised by DOMDocument. (#2506)
dasgarner Apr 26, 2024
5a25d57
Weather: Change Background Image element name (#2503)
maurofmferrao Apr 28, 2024
8a6f9b9
Realtime data: remove the dedicated widget in favour of enhancing the…
dasgarner Apr 29, 2024
4980b6f
Elements: Add gradient control (#2502)
maurofmferrao Apr 29, 2024
b19dfff
Thumbnail for the date element (#2505)
maurofmferrao Apr 29, 2024
d91a2f8
Weather image: Media selector not working in preview (#2504)
maurofmferrao Apr 29, 2024
9de04e1
Widget : Add a new options flag to loadHTML. (#2508)
PeterMis Apr 30, 2024
f58d97f
Widget: fix Canvas module default duration. (#2511)
dasgarner Apr 30, 2024
ab6b509
Merge remote-tracking branch 'refs/remotes/origin/develop' into featu…
dasgarner Apr 30, 2024
4f150c4
Merge pull request #2513 from xibosignage/feature/giacobini-merge-dev…
dasgarner Apr 30, 2024
25cf91d
Notifications : Filtering, types and centre improvements. (#2507)
PeterMis May 3, 2024
fdf5b26
Correctly separate XMDS and PLAYER logging. (#2516)
PeterMis May 7, 2024
4b22cce
Layout/Playlist Editor: minimum resolution (#2510)
maurofmferrao May 8, 2024
66f94f2
Merge remote-tracking branch 'origin/develop' into feature/giacobini_…
dasgarner May 14, 2024
8021037
Merge fix: Pixabay merge issue.
dasgarner May 14, 2024
cf7240b
Merge pull request #2529 from xibosignage/feature/giacobini_pull_west…
dasgarner May 14, 2024
862e004
Weather Elements: Add location
nadzpogi May 15, 2024
7090765
Image placeholder doesn't render shadow (#2526)
maurofmferrao May 16, 2024
7270f3b
Merge pull request #2532 from xibosignage/feature/giacobini_weather_l…
nadzpogi May 17, 2024
22a9180
Editor Keyboard Shortcuts (#2530)
maurofmferrao May 17, 2024
2e52c96
Editor: Delete confirmation modal option and multi delete confirm (#2…
maurofmferrao May 17, 2024
ca5f461
Auditing : Session history and Reporting (#2520)
PeterMis May 20, 2024
b6e8123
Playlist : Convert from Layout Editor to global (#2527)
PeterMis May 29, 2024
da57470
Stencils to create multiple groups (#2536)
maurofmferrao May 31, 2024
0dd7662
Region exit transition (#2540)
maurofmferrao May 31, 2024
5a3146d
CKEditor doesn't work with CSP (#2534)
maurofmferrao Jun 4, 2024
2f99849
Folders: Refactor (#2545)
maurofmferrao Jun 5, 2024
a7a9f93
Add refresh buttons to all grids (#2542)
maurofmferrao Jun 5, 2024
cebaf47
Convert inline playlist to a global playlist - Front-End (#2541)
maurofmferrao Jun 5, 2024
7b2c8ca
About Page: Updated copyright year
mgbaybay Jun 6, 2024
4f4bad1
Updated copyright year
mgbaybay Jun 6, 2024
1fe04e7
Revert copyright year update in comment
mgbaybay Jun 7, 2024
29ff3b3
Text element: Adjust to area (#2548)
maurofmferrao Jun 11, 2024
969e031
Merge remote-tracking branch 'origin/develop' into feature/giacobini_…
dasgarner Jun 11, 2024
0cac5ba
Text Element: Inline editing (#2556)
maurofmferrao Jun 11, 2024
2f3a1d8
Merge pull request #2562 from xibosignage/feature/giacobini_merge_4.0.12
dasgarner Jun 12, 2024
40ebf74
Merge pull request #2555 from xibosignage/feature/giacobini_update_co…
mgbaybay Jun 12, 2024
8de3a4c
Sync Group: Add Switch Delay and Video Pause Delay
mgbaybay Jun 12, 2024
ae6cf0b
Add default values for switch delay and video pause delay
mgbaybay Jun 12, 2024
d2bf44b
Added table headings for switch delay and video pause delay. Addresse…
mgbaybay Jun 12, 2024
c703f94
Layout Preview: First integration of Xibo Layout Renderer (#2547)
rubenberttpingol Jun 13, 2024
31ee0eb
Editor: Drag to select (#2563)
maurofmferrao Jun 13, 2024
30a1b15
Auditing : API requests (#2557)
PeterMis Jun 13, 2024
1f702e2
Sync Group: Updated sync switch delay and video pause delay db valida…
mgbaybay Jun 14, 2024
997cdcf
Merge pull request #2564 from xibosignage/feature/giacobini_add_switc…
mgbaybay Jun 17, 2024
5d89862
Weather template: Dimensions and thumbnail (#2569)
maurofmferrao Jun 19, 2024
f0b89c3
XLR: Fix CSP issue with inline onclick attribute for <button> and <a>…
rubenberttpingol Jun 19, 2024
ec157e3
Widgets: Add the ability to filter datasets by display tag
nadzpogi Jun 19, 2024
cd3367b
Display: register should process operating system if sent by the play…
mgbaybay Jun 19, 2024
9ff0edb
Drag to select: Click on layout refresh fix (#2570)
maurofmferrao Jun 19, 2024
7ea4a07
Merge remote-tracking branch 'origin/develop' into feature/giacobini_…
dasgarner Jun 20, 2024
5bd5e2f
Release: bump version to 4.1.0-alpha2, update swagger.
dasgarner Jun 20, 2024
e08bfdb
Image element: Extra characters need to be removed (#2579)
maurofmferrao Jun 20, 2024
ee2d4c4
Merge pull request #2578 from xibosignage/feature/giacobini_merge_wes…
dasgarner Jun 20, 2024
886bf09
Multiple references to Layout Designer (#2582)
maurofmferrao Jun 25, 2024
a4774e0
Template editing: Adding playlists to zones fix (#2577)
maurofmferrao Jun 25, 2024
2bb81f9
Media Upload to Inline Playlist (#2580)
maurofmferrao Jun 25, 2024
1763ec3
Layout Editor: Dataset form Filter enter key creates a new Order clau…
maurofmferrao Jun 25, 2024
41f9ccd
Editor Toolbar: Fixed adding item from provider already in library er…
mgbaybay Jun 25, 2024
48fe734
Image Element: Show media info (#2583)
maurofmferrao Jun 27, 2024
ea88000
Fallback data for elements (#2576)
maurofmferrao Jun 27, 2024
62add5a
Element group condition isn't always right (#2585)
maurofmferrao Jun 28, 2024
d92f52f
Library Image Search: In layout editor owner name is not preserved (#…
maurofmferrao Jul 1, 2024
736e6bc
Command page: Fix names inconsistency (#2593)
maurofmferrao Jul 1, 2024
0f78bc7
Dataset Grid: Select folder is not available is dateset item menu (#2…
maurofmferrao Jul 2, 2024
5e77db5
Highlight Editor Preview (#2590)
maurofmferrao Jul 3, 2024
a492fcb
Custom schedule criteria (via connectors) (#2591)
nadzpogi Jul 4, 2024
e87b930
New Element: Ellipse (#2601)
maurofmferrao Jul 5, 2024
9ecbb2a
Editor: Widget loading status (#2592)
maurofmferrao Jul 5, 2024
5cb4afb
SSP Connector: Add activity report summary and chart (#2598)
mgbaybay Jul 5, 2024
4c3e4dc
Merge remote-tracking branch 'origin/develop' into feature/giacobini_…
dasgarner Jul 9, 2024
5a519bb
Env: update version number
dasgarner Jul 9, 2024
a2955cb
Merge pull request #2614 from xibosignage/feature/giacobini_merge_wes…
dasgarner Jul 9, 2024
c4e2304
Fixed onclick buttons throw CSP error (#2615)
mgbaybay Jul 10, 2024
ad50c14
Editor: Viewer dimensions wrong when refreshing page with toolbar tog…
maurofmferrao Jul 10, 2024
bae3023
Dataset Add Column: Update help text to warn that column names with …
nadzpogi Jul 11, 2024
b200782
Users: filter by first/last name (rename Name to Username) (#2619)
nadzpogi Jul 11, 2024
6423311
Schedule: Criteria based scheduling - part 2 (#2616)
nadzpogi Jul 11, 2024
d6c7ee2
Fallback data for elements: tab name change (#2621)
maurofmferrao Jul 11, 2024
e4dd568
Stocks and Currency stencils (#2607)
maurofmferrao Jul 11, 2024
04ff535
GitHub: update readme and container workflow. (#2624)
dasgarner Jul 11, 2024
c426852
Proof of Play: validate sortBy parameter has an expected value. (#2626)
dasgarner Jul 12, 2024
f3fbcef
DataSet : Better validate formula column. (#2627)
PeterMis Jul 15, 2024
1c56828
Editor Toolbar: Inline playlist throws JS error on slow networks when…
maurofmferrao Jul 15, 2024
4638241
DataSet: improve query structure in importJSON/addRow (#2633)
dasgarner Jul 15, 2024
e9c4a5b
Cypress fix for command error (#2628)
ifarzana Jul 15, 2024
e58e432
Editor Property Panel: Keep same tab when moving between objects (#2637)
maurofmferrao Jul 16, 2024
2cd795e
Editor Toolbar: Media load ready for slow connections (#2625)
maurofmferrao Jul 16, 2024
4f5212b
DataSet: fix regression in filter clause matching for uniqueKey and d…
dasgarner Jul 17, 2024
e0e6e4d
Change logs to debug logs to de-clutter dev console (#2645)
maurofmferrao Jul 18, 2024
c8d097b
Schedule form preview button is now accessible for both the layout an…
nadzpogi Jul 19, 2024
edd2a88
Editor toolbar: Search by folder (#2643)
maurofmferrao Jul 19, 2024
b16da37
Reports: Add Session History (#2642)
mgbaybay Jul 22, 2024
b258eb1
Layout Playlist: Convert to global refactor (#2638)
maurofmferrao Jul 22, 2024
eff36fb
Add user: Select/Deselect all folders (#2644)
maurofmferrao Jul 22, 2024
f294f68
Folders: Implement exact matching search (#2647)
mgbaybay Jul 24, 2024
a2304fa
Fix: Schedule Event add form modal not closing on save when Criteria …
nadzpogi Jul 24, 2024
0897299
Editor Viewer: Tags and controls overlap issue (#2646)
maurofmferrao Jul 24, 2024
730cf23
Release 4.1.0-rc1
dasgarner Jul 24, 2024
c903d43
Weekly and Monthly Calendar widgets display issue on WebOS (#2651)
maurofmferrao Jul 24, 2024
032be97
Real-time data: provide data connector JS via Connectors (#2648)
nadzpogi Jul 26, 2024
86a125e
Media: when deleting a media record reinstate its parent if it has on…
dasgarner Jul 26, 2024
3bee998
XMDS: extra sanitization on submit log (#2655)
dasgarner Jul 26, 2024
b6b8346
Playlist: Previous/Next and Edit buttons not clickable (#2657)
maurofmferrao Jul 26, 2024
638bf7c
XMDS: use a sub-query to filter out draft layouts before outer join (…
dasgarner Jul 26, 2024
b903b26
Permissions: only update permission record in the DB if necessary (so…
dasgarner Jul 26, 2024
838840c
Editor: Elements don’t render properly after changing properties (#2658)
maurofmferrao Jul 30, 2024
b63e55c
The weather widget not functioning with specific coordinates such as …
nadzpogi Jul 30, 2024
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
ce03c27
Fix validation for hidden inputs (#2726)
maurofmferrao Sep 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .github/workflows/build-container.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ on:
branches:
- master
- develop
- kopff
- release23
- release33
- release40

jobs:
build:
Expand Down
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ digital signage network, or single screen, open source and free to use.

[![Licence](https://img.shields.io/github/license/xibosignage/xibo-cms)]()

Copyright (C) 2006-2023 Xibo Signage Ltd and Contributors.
Copyright (C) 2006-2024 Xibo Signage Ltd and Contributors.

Xibo is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public
License as published by the Free Software Foundation, either version 3 of the License, or any later version.
Expand Down Expand Up @@ -69,10 +69,12 @@ git clone git@github.com:<your_id>/xibo-cms.git xibo-cms

### Branches

We maintain the following branches. To contribute to Xibo please also use the `develop` branch as your base.
We maintain the following branches. To contribute to Xibo please use the `develop` branch as your base.

- develop: Work in progress toward 4.0.x
- kopff: Work in progress toward 4.2.x
- develop: Bug fixes for 4.1.x
- master: Currently 4.0
- release40: Bug fixes for 4.0
- release33: Bug fixes for 3.3
- release23: Bug fixes for 2.3
- release18: Archive of 1.8
Expand Down
14 changes: 7 additions & 7 deletions bin/locale.php
Original file line number Diff line number Diff line change
Expand Up @@ -95,28 +95,28 @@ function __($original)
$sanitizerService = new \Xibo\Helper\SanitizerService();

// Create a new base dependency service
$baseDepenencyService = new \Xibo\Service\BaseDependenciesService();
$baseDepenencyService->setConfig(new MockConfigService());
$baseDepenencyService->setStore(new MockPdoStorageServiceForModuleFactory());
$baseDepenencyService->setSanitizer($sanitizerService);
$baseDependencyService = new \Xibo\Service\BaseDependenciesService();
$baseDependencyService->setConfig(new MockConfigService());
$baseDependencyService->setStore(new MockPdoStorageServiceForModuleFactory());
$baseDependencyService->setSanitizer($sanitizerService);

$moduleFactory = new \Xibo\Factory\ModuleFactory(
'',
$pool,
$view,
new MockConfigService(),
);
$moduleFactory->useBaseDependenciesService($baseDepenencyService);
$moduleFactory->useBaseDependenciesService($baseDependencyService);
// Get all module
$modules = $moduleFactory->getAll();

$moduleTemplateFactory = new \Xibo\Factory\ModuleTemplateFactory(
$pool,
$view,
);
$moduleTemplateFactory->useBaseDependenciesService($baseDepenencyService);
$moduleTemplateFactory->useBaseDependenciesService($baseDependencyService);
// Get all module templates
$moduleTemplates = $moduleTemplateFactory->getAll();
$moduleTemplates = $moduleTemplateFactory->getAll(null, false);

// --------------
// Create translation file
Expand Down
9 changes: 9 additions & 0 deletions cypress/e2e/Layout/Editor/layout_editor_clock.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ describe('Layout Designer', function() {
it('should create a new layout and be redirected to the layout designer, add/delete analogue clock', function() {
cy.intercept('/playlist/widget/*').as('saveWidget');

cy.intercept({
method: 'DELETE',
url: '/region/*',
}).as('deleteWidget');

cy.visit('/layout/view');

cy.get('button[href="/layout"]').click();
Expand Down Expand Up @@ -76,6 +81,10 @@ describe('Layout Designer', function() {
// Delete
cy.get('#layout-viewer .designer-region .widget-preview[data-type="widget_clock-analogue"]').parents('.designer-region').rightclick();
cy.get('[data-title="Delete"]').click();
cy.contains('Yes').click();

// Wait until the widget has been deleted
cy.wait('@deleteWidget');
cy.get('#layout-viewer .designer-region .widget-preview[data-type="widget_clock-analogue"]').should('not.exist');
});
});
28 changes: 20 additions & 8 deletions cypress/e2e/Layout/Editor/layout_editor_dataset.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ describe('Layout Designer', function() {
// Create and alias for load dataset
cy.intercept('/dataset?start=*').as('loadDatasets');

cy.intercept({
method: 'DELETE',
url: '/region/*',
}).as('deleteWidget');

cy.visit('/layout/view');

cy.get('button[href="/layout"]').click();
Expand All @@ -50,25 +55,29 @@ describe('Layout Designer', function() {
cy.wait('@loadDatasets');

// Type the dataset name
cy.get('.select2-container--open input[type="search"]').type('test');
cy.get('.select2-container--open input[type="search"]').type('8 items');

// Wait for datasets to load
cy.wait('@loadDatasets');
cy.get('.select2-container--open').contains('test');
cy.get('.select2-container--open .select2-results > ul > li:first').contains('test').click();
cy.get('.select2-container--open').contains('8 items');
cy.get('.select2-container--open .select2-results > ul > li:first').contains('8 items').click();

cy.get('[name="lowerLimit"]').clear().type('1');
cy.get('[name="upperLimit"]').clear().type('10');
cy.get('.order-clause-row > :nth-child(2) > .form-control').select('Text', {force: true});
cy.get('.order-clause-row > :nth-child(2) > .form-control').select('Col1', {force: true});
cy.get('.order-clause-row > .btn').click();
cy.get(':nth-child(2) > :nth-child(2) > .form-control').select('Number', {force: true});
cy.get(':nth-child(2) > :nth-child(2) > .form-control').select('Col2', {force: true});

// -------------
// -------------Appearance Tab
cy.get('.nav-link[href="#appearanceTab"]').click();

// Check if dataset exists exactly two columns
cy.get('#columnsOut')
.find('li')
.should('have.length', 2)

// Select columns available/ move them to columns selected
cy.get('#columnsOut>li:first').should('have.attr', 'id').and('equal', '1');
cy.get('#columnsOut>li:first')
.trigger('mousedown', {
which: 1,
Expand All @@ -80,7 +89,6 @@ describe('Layout Designer', function() {
});
cy.get('#columnsIn').click();

cy.get('#columnsOut>li:first').should('have.attr', 'id').and('equal', '2');
cy.get('#columnsOut>li:first')
.trigger('mousedown', {
which: 1,
Expand All @@ -99,6 +107,10 @@ describe('Layout Designer', function() {

cy.get('#layout-viewer .designer-region .widget-preview[data-type="widget_dataset"]').parents('.designer-region').rightclick();
cy.get('[data-title="Delete"]').click();
cy.contains('Yes').click();

// Wait until the widget has been deleted
cy.wait('@deleteWidget');
cy.get('#layout-viewer .designer-region .widget-preview[data-type="widget_dataset"]').should('not.exist');
});
});
13 changes: 11 additions & 2 deletions cypress/e2e/Layout/Editor/layout_editor_rss_ticker.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ describe('Layout Designer', function() {
});

it('should create a new layout and be redirected to the layout designer, add/delete RSS ticker widget', function() {
cy.intercept({
method: 'DELETE',
url: '/region/*',
}).as('deleteWidget');

cy.visit('/layout/view');

cy.get('button[href="/layout"]').click();
Expand Down Expand Up @@ -64,12 +69,16 @@ describe('Layout Designer', function() {
cy.get('[name="itemImageFit"]').select('Fill', {force: true});
cy.get('[name="effect"]').select('Fade', {force: true});
cy.get('[name="speed"]').clear().type('500');
cy.get('.cke_editable_inline').focus().clear();
cy.get('.cke_editable_inline').type('No data to show').trigger('change');
// Update CKEditor value
cy.updateCKEditor('noDataMessage', 'No data to show');
cy.get('[name="copyright"]').clear().type('Xibo').trigger('change');

cy.get('#layout-viewer .designer-region .widget-preview[data-type="widget_rss-ticker"]').parents('.designer-region').rightclick();
cy.get('[data-title="Delete"]').click();
cy.contains('Yes').click();

// Wait until the widget has been deleted
cy.wait('@deleteWidget');
cy.get('#layout-viewer .designer-region .widget-preview[data-type="widget_rss-ticker"]').should('not.exist');
});
});
16 changes: 16 additions & 0 deletions cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -864,3 +864,19 @@ Cypress.Commands.add('openToolbarMenuForPlaylist', function(menuIdx) {
}
});
});


/**
* Update data on CKEditor instance
* @param {string} ckeditorId
* @param {string} value
*/
Cypress.Commands.add('updateCKEditor', function(ckeditorId, value) {
cy.get('textarea[name="' + ckeditorId + '"]').invoke('prop', 'id').then((id) => {
cy.window().then((win) => {
win.formHelpers.getCKEditorInstance(
id,
).setData(value);
});
});
});
55 changes: 55 additions & 0 deletions db/migrations/20231128144300_real_time_data_migration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php
/*
* Copyright (C) 2023 Xibo Signage Ltd
*
* Xibo - Digital Signage - https://xibosignage.com
*
* This file is part of Xibo.
*
* Xibo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Xibo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
*/

use Phinx\Migration\AbstractMigration;

/**
* Migrations for new real-time data
* @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
*/
class RealTimeDataMigration extends AbstractMigration
{
public function change(): void
{
$this->table('dataset')
->addColumn('isRealTime', 'integer', [
'limit' => \Phinx\Db\Adapter\MysqlAdapter::INT_TINY,
'default' => 0,
'null' => false,
])
->save();

$this->table('schedule')
->addColumn('dataSetId', 'integer', [
'limit' => \Phinx\Db\Adapter\MysqlAdapter::INT_REGULAR,
'default' => null,
'null' => true
])
->addColumn('dataSetParams', 'text', [
'limit' => \Phinx\Db\Adapter\MysqlAdapter::TEXT_REGULAR,
'default' => null,
'null' => true
])
->addForeignKey('dataSetId', 'dataset', 'dataSetId')
->save();
}
}
57 changes: 57 additions & 0 deletions db/migrations/20231213120700_schedule_criteria_migration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php
/*
* Copyright (C) 2023 Xibo Signage Ltd
*
* Xibo - Digital Signage - https://xibosignage.com
*
* This file is part of Xibo.
*
* Xibo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Xibo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
*/

use Phinx\Migration\AbstractMigration;

/**
* Migrations for schedule criteria
* @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
*/
class ScheduleCriteriaMigration extends AbstractMigration
{
public function change(): void
{
$this->table('schedule_criteria')
->addColumn('eventId', 'integer', [
'limit' => \Phinx\Db\Adapter\MysqlAdapter::INT_REGULAR,
'null' => false,
])
->addColumn('type', 'string', [
'limit' => 20,
'null' => false,
])
->addColumn('metric', 'string', [
'limit' => 20,
'null' => false,
])
->addColumn('condition', 'string', [
'limit' => 20,
'null' => false,
])
->addColumn('value', 'string', [
'limit' => 255,
'null' => false,
])
->addForeignKey('eventId', 'schedule', 'eventId')
->save();
}
}
61 changes: 61 additions & 0 deletions db/migrations/20231220155800_user_module_templates_migration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php
/*
* Copyright (C) 2024 Xibo Signage Ltd
*
* Xibo - Digital Signage - https://xibosignage.com
*
* This file is part of Xibo.
*
* Xibo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Xibo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
*/

use Phinx\Migration\AbstractMigration;

/**
* Migrations for adding user supplied module templates
* @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
*/
class UserModuleTemplatesMigration extends AbstractMigration
{
public function change(): void
{
$this->table('module_templates')
->addColumn('templateId', 'string', [
'limit' => 50,
'null' => false,
])
->addColumn('dataType', 'string', [
'limit' => 50,
'null' => false,
])
->addColumn('xml', 'text', [
'limit' => \Phinx\Db\Adapter\MysqlAdapter::TEXT_MEDIUM,
'null' => false,
])
->addColumn('enabled', 'integer', [
'limit' => \Phinx\Db\Adapter\MysqlAdapter::INT_TINY,
'null' => false,
'default' => 1,
])
->addColumn('ownerId', 'integer')
->addForeignKey('ownerId', 'user', 'userId')
->save();

$this->table('permissionentity')
->insert([
['entity' => 'Xibo\Entity\ModuleTemplate']
])
->save();
}
}
Loading
Loading