Commit graph

4859 commits

Author SHA1 Message Date
snipe 589f9cccdf Fixed #15732
Signed-off-by: snipe <snipe@snipe.net>
2024-10-28 12:04:10 +00:00
snipe 4d848e45e6 Fixed #15736
Signed-off-by: snipe <snipe@snipe.net>
2024-10-28 11:55:24 +00:00
Godfrey M 278bc5e52a ads check in and checkout message for license seats 2024-10-24 14:59:10 -07:00
akemidx b29a2a6ae4 removing header color from login button 2024-10-24 17:23:03 -04:00
snipe dfc63641dc
Merge pull request #15550 from uberbrady/fix_multi_create_partial_failure
Some checks failed
Crowdin Action / upload-sources-to-crowdin (push) Has been cancelled
Docker images (Alpine) / docker (push) Has been cancelled
Docker images / docker (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Has been cancelled
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Has been cancelled
Fix multi create partial failure (fixes: [RB-18591])
2024-10-24 11:40:50 +01:00
Godfrey M f29a383179 Merge branch 'develop' into seperating_notification_n_mail
# Conflicts:
#	app/Notifications/CheckoutConsumableNotification.php
2024-10-23 15:15:14 -07:00
Godfrey M c681946b1d added component markdown changes 2024-10-23 15:05:39 -07:00
snipe 55ba6279a4 Use trans_choice on alert menu
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 19:14:17 +01:00
snipe 3ee76be7e3 Added manufacturer and model_number to components
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 17:50:22 +01:00
snipe 0b6859c491 Added ability to checkout consumables in variable qty
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 15:05:35 +01:00
snipe 37f14fff3b Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 22:07:28 +01:00
snipe eb6c51fabd Fixes #15701 - load avif files properly in lightbox
Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 22:04:57 +01:00
snipe 5e1d792bba
Merge pull request #15687 from NebelKreis/fix/dashboard-title-casing
Fixed #15686: Corrected capitalization for dashboard section titles by removing strtolower()
2024-10-22 16:52:28 +01:00
snipe db81701621
Merge branch 'develop' into better_handle_inline_files 2024-10-22 15:44:24 +01:00
snipe a05c33febf Squashed commit of the following:
commit 147fcfb8eb
Merge: 58a3d09b5 fdcc17ca2
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:12:55 2024 +0100

    Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs

    Fix user creation with FullMultipleCompanySupport enabled over API

commit 58a3d09b5f
Merge: 30a06a594 867fa2f36
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 14:55:42 2024 +0100

    Merge pull request #15703 from marcusmoore/bug/sc-27188

    Linked accessory files in activity report

commit 30a06a5942
Merge: 6c6af78e0 ce3086317
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:47:06 2024 +0100

    Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing

    Removed brianium/paratest

commit 6c6af78e08
Merge: 9b06bbb6c 3f79fd7ea
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:46:04 2024 +0100

    Merge pull request #15705 from marcusmoore/tests/icon-component-test

    Added test to ensure icon component does not end in newline

commit 3f79fd7ea7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 17:07:40 2024 -0700

    Add test to ensure icon component does not end in newline

commit 9b06bbb6c3
Merge: 46ad1d072 d7f70146f
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 22:38:26 2024 +0100

    Merge pull request #15704 from marcusmoore/bug/remove-extra-icon

    Removed second icon in accessory file list

commit ce30863177
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:57:04 2024 -0700

    Remove brianium/paratest dependency

commit d7f70146f4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:48:25 2024 -0700

    Remove extra icon in accessory file upload list

commit 867fa2f36e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:40:24 2024 -0700

    Display file in activity report for accessories

commit 0933a2d4ea
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 18:01:48 2024 -0700

    Remove --parallel flag

commit 46ad1d072f
Merge: bcb4bd9eb 3cf746d7d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 15:29:47 2024 +0100

    Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions

    Bulk checkout to bulk actions

commit bcb4bd9eb4
Merge: 250037540 f50ccbcc4
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 10:20:13 2024 +0100

    Merge pull request #15683 from Toreg87/fixes/outdated_comment

    Fix outdated comment in CompanyableTrait

commit f50ccbcc49
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Thu Oct 17 11:07:28 2024 +0200

    Fix outdated comment in CompanyableTrait

    As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment

commit 3cf746d7df
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Oct 16 23:13:32 2024 +0100

    Rework the bulk checkout to not change how all checkouts work

commit 6b7af802af
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Oct 10 13:28:23 2024 +0100

    Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar

commit fdcc17ca2c
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Wed Oct 16 11:18:24 2024 +0200

    Fix user creation with FullMultipleCompanySupport enabled over API

    It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
    Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

    Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.

Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 15:43:19 +01:00
Marcus Moore d7f70146f4
Remove extra icon in accessory file upload list 2024-10-21 13:48:25 -07:00
snipe 787e651778 Fixed todos with log message
Signed-off-by: snipe <snipe@snipe.net>
2024-10-21 16:52:21 +01:00
snipe 6105323877 Use plural class name for src
Signed-off-by: snipe <snipe@snipe.net>
2024-10-21 14:11:20 +01:00
Godfrey M 285d6897cf added a coulple test adjustments and moved mail send logic to listener 2024-10-17 12:05:36 -07:00
snipe d1149730be Apply blade component to files views
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 16:31:17 +01:00
NebelKreis 780ed91a10 Fix: Removed strtolower() from dashboard titles
This fix ensures the correct capitalization in different languages.
2024-10-17 16:09:25 +02:00
Godfrey M a7754c1a7f fixed asset checkout markdown, and notifiable variable 2024-10-16 16:46:52 -07:00
snipe 0e9b3c9119 Check for existence before trying to get the icon
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:27:39 +01:00
snipe d67addc69e Removed filetype column - it’s dumb
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:21:43 +01:00
snipe 017884f843 Added checks and filetype display
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:09:09 +01:00
Godfrey M 02bda3cd95 adds Checkout Consumable mailable and slackwebhook channel to notifs 2024-10-16 15:53:05 -07:00
Godfrey M 02ff646da4 adds checkin license mailable 2024-10-16 15:44:45 -07:00
Godfrey M 2584d60344 adds Licenses seat checkout Mailable 2024-10-16 15:38:49 -07:00
Godfrey M f1d83a3f28 forgot to add asset checkout markdown to projet 2024-10-16 15:30:53 -07:00
Godfrey M dcdf600b78 adds Checkin and Checkout mailables and listner logic 2024-10-16 15:27:34 -07:00
Brady Wetherington 3cf746d7df Rework the bulk checkout to not change how all checkouts work 2024-10-16 23:13:32 +01:00
Brady Wetherington 6b7af802af Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar 2024-10-16 22:02:45 +01:00
Godfrey M 9710436d54 adds Mailables for asset checkin and out 2024-10-16 13:12:07 -07:00
Godfrey M 3ab2521cb0 email comes through, no picture and html markup appear though. 2024-10-16 12:21:33 -07:00
snipe e9225ff3ea Switch to regular HTML for input form field
Signed-off-by: snipe <snipe@snipe.net>
2024-10-15 12:43:10 +01:00
snipe feaa714304 Nicer disabled button
Signed-off-by: snipe <snipe@snipe.net>
2024-10-11 14:23:57 +01:00
snipe 8aa298f6b0
Merge pull request #15644 from snipe/form_requests_for_settings
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Form requests for settings
2024-10-10 12:30:53 +01:00
snipe 2d49e1eff2
Merge pull request #15637 from akemidx/bug/sc-26614
FIXED: Badge counter showing deleted assets on User page
2024-10-10 01:09:11 +01:00
snipe b5b93fdd3a Make ldap username required
Signed-off-by: snipe <snipe@snipe.net>
2024-10-10 00:27:00 +01:00
snipe d9432baf7a Mlore ldap style improvements
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 23:51:20 +01:00
snipe 90be2a4498 Use newer naming convention for errors
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:26:30 +01:00
snipe 4361a10818 Added string
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:30 +01:00
snipe aa8048ac15 Blade changes for ldap
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:25 +01:00
snipe 242fe33f97 Switch to regular HTML input
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:33:42 +01:00
snipe d9fbf330e5 Fixed translations
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:33:15 +01:00
snipe a7f7e4938f Added form action
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:31:56 +01:00
snipe 69c43c610c Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:30:00 +01:00
snipe 4f957bcf71 Required flag
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:34:53 +01:00
snipe 41b94e7128 Fixed form input group
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:19:26 +01:00
snipe aa55fa6ff4 Switch to form requests for settings
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:16:34 +01:00
Brady Wetherington 67a605c9a5 Fix bulk checkout to users, assets, and locations 2024-10-09 17:01:26 +01:00
akemidx c2663ea1e0 withouttrashed 2024-10-08 16:38:33 -04:00
Marcus Moore 8c9132aff9
Hide EULA text and button when nothing will be displayed 2024-10-07 14:22:49 -07:00
snipe 3f36d5f9b3 Removed duplicate CSS and removed line break before user section
Signed-off-by: snipe <snipe@snipe.net>
2024-10-07 11:08:02 +01:00
snipe cb281c6408 Tweaked line height
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 17:33:46 +01:00
snipe f483cd448f Smarter work-wrapping on long text
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 17:27:37 +01:00
snipe 722d5a58e7 Added isset on users
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 16:19:38 +01:00
snipe 3c0f4181ae Use the newer button style
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 16:19:06 +01:00
snipe 0dd6f41f66 Simplified 2fa if/else
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 11:04:55 +01:00
snipe 684c20ae39 Fixed parenthasis
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 11:00:49 +01:00
snipe c32f4e34b4 Minor formatting fix
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 20:35:49 +01:00
snipe a79dfea40a Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 20:30:58 +01:00
snipe 97d00e5aa8 Fixed erroneous form tag on anchor
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 20:08:54 +01:00
snipe 9a2117466e Removed placeholder
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 18:23:40 +01:00
snipe 7e3a062984 Use <th> for table header in bulk interstitial
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 18:23:07 +01:00
snipe 5823197e6f Added checkin action on delete for checked out assets
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 14:29:02 +01:00
snipe cae8aa7840 Added maxlengths to additional fields
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 14:02:54 +01:00
snipe 12da43303f Fixed #15584 - regression with required css change
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 01:44:05 +01:00
snipe 5689e940b8 Fixed #15581 - missing bracker
Signed-off-by: snipe <snipe@snipe.net>
2024-09-30 18:23:12 +01:00
snipe 001348c638 Unset required on checkout select :(
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Related to the discussion at #15552

Signed-off-by: snipe <snipe@snipe.net>
2024-09-29 14:33:42 +01:00
snipe 1b041af862 Merge remote-tracking branch 'origin/master' into develop
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-09-29 11:25:01 +01:00
snipe 05d74f7a92 Covered setup pages too
Signed-off-by: snipe <snipe@snipe.net>
2024-09-28 15:42:03 +01:00
snipe dc85588d7f Don’t show password as required if editing
Signed-off-by: snipe <snipe@snipe.net>
2024-09-28 15:31:44 +01:00
snipe 585f998cae Fixes for requiredness display
Signed-off-by: snipe <snipe@snipe.net>
2024-09-28 15:28:06 +01:00
snipe d120585f94 Check for valid eula for license, consumable
Some checks failed
CodeQL Security Scan / CodeQL Security Scan (javascript) (push) Has been cancelled
Codacy Security Scan / Codacy Security Scan (push) Has been cancelled
Docker images (Alpine) / docker (push) Has been cancelled
Docker images / docker (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Has been cancelled
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Has been cancelled
Signed-off-by: snipe <snipe@snipe.net>
2024-09-27 14:07:30 +01:00
snipe 36b27fcda3 Check for valid category before getting the eula
Some checks are pending
Crowdin Action / upload-sources-to-crowdin (push) Waiting to run
Docker images (Alpine) / docker (push) Waiting to run
Docker images / docker (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Waiting to run
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Waiting to run
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Waiting to run
Signed-off-by: snipe <snipe@snipe.net>
2024-09-27 13:37:14 +01:00
snipe a44490e448 Nowrap on files column
Signed-off-by: snipe <snipe@snipe.net>
2024-09-27 13:07:24 +01:00
snipe 9aada2ec70
Merge pull request #15498 from Godmartinz/Modal_fix
Some checks failed
Crowdin Action / upload-sources-to-crowdin (push) Has been cancelled
Docker images (Alpine) / docker (push) Has been cancelled
Docker images / docker (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.1) (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.2) (push) Has been cancelled
Tests in MySQL / PHP ${{ matrix.php-version }} (8.3) (push) Has been cancelled
Tests in SQLite / PHP ${{ matrix.php-version }} (8.1.1) (push) Has been cancelled
Refactoring modals with partials and fixing misalignments
2024-09-26 09:09:35 +01:00
Godfrey M ef82f954e5 fixed required css, and user input lengths 2024-09-25 15:47:57 -07:00
Godfrey M b797c37acb replace duplicate code with partials 2024-09-25 12:48:05 -07:00
snipe c02647a0fa Moved merge into delete gate, since they do technically delete
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:32:03 +01:00
snipe edca3f432c Removed gate for delete
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:30:58 +01:00
snipe 2218c94aa3 Gates the dropdown based on user permissions
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:29:23 +01:00
Godfrey M 12522a3791 fix spacing issues 2024-09-25 12:07:15 -07:00
Godfrey M 18ddffe8f9 fix partial variable intialization, fix width of input fields 2024-09-25 11:42:16 -07:00
snipe 9b03f46490
Merge pull request #15534 from marcusmoore/bulk-print-users
Added the ability to bulk print users
2024-09-25 19:32:01 +01:00
Godfrey M 926a319552 Merge branch 'develop' into Modal_fix_p2 2024-09-25 11:10:24 -07:00
snipe cb6e5042d9
Merge pull request #15547 from snipe/disallow_checkout_with_nondeployable_status
Fixed #13396 - do not allow checkout to undeployable status types
2024-09-25 18:32:59 +01:00
snipe 658c94ad8b Changed action_date to created_at
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 17:25:15 +01:00
Godfrey M 2a2666be0b makes required a pseudo field 2024-09-24 13:24:50 -07:00
Brady Wetherington b6340532d7 Improve the error and success messages and linking 2024-09-24 17:15:39 +01:00
snipe ba69259f2d Fixed #13396 - do not allow checkout to undeployable status types
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 15:35:00 +01:00
Brady Wetherington c71411465a First pass at better-handling those annoying Rollbars we keep getting 2024-09-24 15:17:35 +01:00
snipe 66249a37ed Tweaked styles
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 11:08:31 +01:00
snipe 96712cb398 Fixed app settings view on mobile
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 10:55:26 +01:00
Marcus Moore a12c9d053f
Hide label when printing 2024-09-23 16:44:25 -07:00
Marcus Moore 8b3b68b308
Show or hide all eulas at once when printing multiple users 2024-09-23 16:43:14 -07:00
Marcus Moore 3870095a28
Fix Cannot read properties of undefined error by removing snipe-table class from eula table 2024-09-23 15:50:24 -07:00
Marcus Moore a02e250b22
Add page breaks for each user 2024-09-23 15:26:15 -07:00
Marcus Moore 8ac5c0e471
Re-combine layout and view 2024-09-23 14:05:47 -07:00