-
-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Custom View/Theme Support #652
Comments
Well laravel made that much easier than expected. Functionality added in 6988a6f. Still need to do a view clear-up at some point so will keep this open for now. |
I was thinking that maybe we could introduce something like WordPress shortcodes in BookStack for the table of contents related issues (and potentially others) but I think this is a solution that will meet more requirements. |
Have been waiting for this a long time now |
Another nice Feature for this one would be if it is possible to define a theme per role... we want another theme for guests than for logged in users. guests hould not see things like last changes, histories, etc... only logged in users should see this informations. |
* Started draw.io integration * Updated pull-request info to be clearer Also updated dev version * Adds code to allow deletion of users via cmd line. Fixes BookStackApp#579 Command: php artisan bookstack:delete-users Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds button to allow users to toggle the book view via the books list page. Closes BookStackApp#613 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds test cases and fixes an issue with the permission checking. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Enabled session in 404 responses Fixes #634 * Adds font-size to ol to ensure that they are uniform. Fixes BookStackApp#643 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Standardised admin role check * Updated book view change to PATCH + other amends Moved toggle to right of header bar and added unique text and icon for each view type. Removed old profile setting to keep things clean. * Enabled system-storage of drawings made via draw.io * Fixed broken table/ol/ul page includes Fixes BookStackApp#640 * Fixed failing book view test Also ensured setting system localcache is cleared correctly * Checks the target and the source book before performing the sort. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Changed the sort view to only show books to which we have an update permission. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds test case for sorting permissions. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Added view override support Relates to BookStackApp#652 * Refactored the code to first check for the permissions before sorting the book. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds overflow:auto to popup content to allow it to scroll in lower res. Fixes BookStackApp#650 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Added ability to secure images behind auth Still in testing. Adds STORAGE_TYPE=local_secure option for setting images to be behind auth. Stores images alongside attachments in /storage/uploads/images. * Refactored book sort using collections * Added drawing update ability * Added drawing icon and made drawio disablable * Extracted draw.io functionality to own file * Added drawio abilities to markdown editor * Added Swedish translation * Added Swedish locale to config * Added drawing endpoint tests Also refactored ImageTests away from BrowserKit Also added image upload type validation. * Fixed test failing from missing baseURL Also updated image upload test to delete before upload to prevent failed tests breaking subsequent tests. * Actually fixed the BaseURL this time 🤦 * #630: Deleting user's profile pics on deleting of user account (BookStackApp#646) * Issue-630: Fixed issue with deleting user profile pics when deleting a user. * Issue #630: Deleting user's profile pics on deleting of user account * Issue-630: Added test case for deleting user * Updated user profile image delete to delete all uploads Also moved test and made more comprehensive * Adapted code insert area and language select for mobile * Set /app PHP code to PSR-2 standard Also adde draw.io to attribution list. Closes BookStackApp#649 * Fixed validation issue on register post Added test to cover and also cleaned up RegisterController comments. Fixes #670 * Added command to add a new admin user Closes BookStackApp#609 * Set markdown editor preview width to 100% Fixes BookStackApp#658 * Add twitch socialite auth provider * Update... * add support for gitlab authentification * add missing lock file * Corrected the keys for okta auth * Update services.php * Update .env.example * reduced icon size * add missing icon, fix name conventions * Update all.blade.php * Made default books view configurable in .env Under 'APP_VIEWS_BOOKS' key. Closes BookStackApp#675 * Added simplified Chinese(zh-CN) language * Added 'zh_CN' to app.locales * Prevent image manager search from reloading page Fixes BookStackApp#697 * Fixed code block wrapping on export Now wraps instead of running off the page. Fixed BookStackApp#676 * Updated grid view to use CSS grid and flexbox Provides a cleaner height-matched design. Closes BookStackApp#701 * Updated twitch SVG icon with vector SVG * Fixed error when accessing non-authed attachment Also updated attachment tests to use standard test-case. Fixes BookStackApp#681 * Fixed text overflow in various views Fixes BookStackApp#669 * Tweaked some comments * Updated assets for release v0.20.0 * Made it possible to override icons via custom theme * Started migration to SVG icons * Finished migrated from icon-font to SVG * Updated 'Spanish Argentina' translation. * Added ability to configure email sender name Added env variable MAIL_FROM_NAME to allow the email sender name to be customised. Also added MAIL_FROM to .env.example * Updated 'Spanish Argentina' translation. * Add CACHE_PREFIX to the .env.example file We had some problems with multiple BookStack instances using the same caching server. Perhaps it's a good idea to have this available in the `.env.example` file. * fix markdown editor resizing with long strings * typo in readme.md * add missing polish translations for comments * Update .env.example * Attempted move to webpack again * Reorganised dev-deps and updated moment * Update Italian translation * Fixes issue with the validation message not being translated. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Finished off intitial conversion to webpack * Moved jQuery to use NPM and fixed some asset refs * Added togglable script escaping to page content Configurable via 'ALLOW_CONTENT_SCRIPTS' env variable. Fixes BookStackApp#575 * Updated exports to use DejaVu font Provides potentially better language font coverage. * Markdown editor image paste sets cursor correctly Now sets cursor to alt text rather than end of placeholder image. Fixed BookStackApp#751 * Prevented markdown editor pushing out toolbar * Fixed up notification styling a little * Fixed large content previews and improved mobile styles Listing content previews no longer pre-wrap and instead simply break correctly. Updated titles to ensure they break on mobile devices. Reduced spacing and font sizes on mobile to better adjust content to screen size. Fixes BookStackApp#739 * Fixes a number of issues with the image uploader. Read below, - Added a remove link to remove files that have an error. - Error will appear below the progress bar. - Hovering on dz-image or dz-details will display the error message. Otherwise error message was covering the remove link as well. - Removed styling around the file size. - Removed gradient effect in accordance with BookStack styling. - Dropzone filenae will not overflow the container element. Also done for page attachments - Added a 'uploaded' error message. this error was being thrown when the file size exceeded the server configured file size. (https://stackoverflow.com/a/42934387/903324) Towards BookStackApp#741 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Update activities.php * Update auth.php * Update common.php * Update components.php * Update settings.php * Fixes the icons not being aligned properly in attached items section for the page. Also formatting. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Update entities.php * Updated webpack SCSS extract to provide sourcemaps * Cleaned some form styling Removed uppercasing of labels to make a little friendlier. Extracted out toggleswitch JS into own component. Improved basic code input for html-head-input area. * Use autodiscover for dev packages Allows installation with `composer install --no-dev` Fixed BookStackApp#742 * Updated outline button styles for svg icons * Removing the selected image and clearing the dropdzone on dialog close. Towards BookStackApp#741 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Not resizing gif images. See - Intervention/image#176 Fixes BookStackApp#223 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Fixes an issue with handling of large image files. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * update japanese translation * fix entities.php * Fixed failing tests Fixed syntax error in french translations. Removed 'required' on image validation which was breaking tests * Made search more efficient and tweaked weighting Added per-entity weighting changes. Now Books score higher than chapters which score higher than pages. Reduced queries required on search by only searching once but at a higher count to see if there's another page. * Fixed incorrect search logic in last commit Incorrect cross-entity pagination could lead to hidden entities. * Properly escaped search results Prevents vue-like syntax in results causing errors. Related to BookStackApp#748 * Updated create routes to prevent slug clashes Fixes BookStackApp#758 * Removed invalid bracket from view * Ensured uploaded system images remain public Also added tests to cover local_secure image storage. Fixes BookStackApp#725 * Updated icons with height Fixes issues within IE * Updated assets for release v0.20.1 * Fixed export style paths * Updated the version because i'm such a plonker And forgot to do this last release. I wonder if there's a simple commit hook that could prevent the same two versions twice in a row?
* Started draw.io integration * Updated pull-request info to be clearer Also updated dev version * Adds code to allow deletion of users via cmd line. Fixes BookStackApp#579 Command: php artisan bookstack:delete-users Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds button to allow users to toggle the book view via the books list page. Closes BookStackApp#613 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds test cases and fixes an issue with the permission checking. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Enabled session in 404 responses Fixes #634 * Adds font-size to ol to ensure that they are uniform. Fixes BookStackApp#643 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Standardised admin role check * Updated book view change to PATCH + other amends Moved toggle to right of header bar and added unique text and icon for each view type. Removed old profile setting to keep things clean. * Enabled system-storage of drawings made via draw.io * Fixed broken table/ol/ul page includes Fixes BookStackApp#640 * Fixed failing book view test Also ensured setting system localcache is cleared correctly * Checks the target and the source book before performing the sort. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Changed the sort view to only show books to which we have an update permission. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds test case for sorting permissions. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Added view override support Relates to BookStackApp#652 * Refactored the code to first check for the permissions before sorting the book. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Adds overflow:auto to popup content to allow it to scroll in lower res. Fixes BookStackApp#650 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Added ability to secure images behind auth Still in testing. Adds STORAGE_TYPE=local_secure option for setting images to be behind auth. Stores images alongside attachments in /storage/uploads/images. * Refactored book sort using collections * Added drawing update ability * Added drawing icon and made drawio disablable * Extracted draw.io functionality to own file * Added drawio abilities to markdown editor * Added Swedish translation * Added Swedish locale to config * Added drawing endpoint tests Also refactored ImageTests away from BrowserKit Also added image upload type validation. * Fixed test failing from missing baseURL Also updated image upload test to delete before upload to prevent failed tests breaking subsequent tests. * Actually fixed the BaseURL this time 🤦 * #630: Deleting user's profile pics on deleting of user account (BookStackApp#646) * Issue-630: Fixed issue with deleting user profile pics when deleting a user. * Issue #630: Deleting user's profile pics on deleting of user account * Issue-630: Added test case for deleting user * Updated user profile image delete to delete all uploads Also moved test and made more comprehensive * Adapted code insert area and language select for mobile * Set /app PHP code to PSR-2 standard Also adde draw.io to attribution list. Closes BookStackApp#649 * Fixed validation issue on register post Added test to cover and also cleaned up RegisterController comments. Fixes #670 * Added command to add a new admin user Closes BookStackApp#609 * Set markdown editor preview width to 100% Fixes BookStackApp#658 * Add twitch socialite auth provider * Update... * add support for gitlab authentification * add missing lock file * Corrected the keys for okta auth * Update services.php * Update .env.example * reduced icon size * add missing icon, fix name conventions * Update all.blade.php * Made default books view configurable in .env Under 'APP_VIEWS_BOOKS' key. Closes BookStackApp#675 * Added simplified Chinese(zh-CN) language * Added 'zh_CN' to app.locales * Prevent image manager search from reloading page Fixes BookStackApp#697 * Fixed code block wrapping on export Now wraps instead of running off the page. Fixed BookStackApp#676 * Updated grid view to use CSS grid and flexbox Provides a cleaner height-matched design. Closes BookStackApp#701 * Updated twitch SVG icon with vector SVG * Fixed error when accessing non-authed attachment Also updated attachment tests to use standard test-case. Fixes BookStackApp#681 * Fixed text overflow in various views Fixes BookStackApp#669 * Tweaked some comments * Updated assets for release v0.20.0 * Made it possible to override icons via custom theme * Started migration to SVG icons * Finished migrated from icon-font to SVG * Updated 'Spanish Argentina' translation. * Added ability to configure email sender name Added env variable MAIL_FROM_NAME to allow the email sender name to be customised. Also added MAIL_FROM to .env.example * Updated 'Spanish Argentina' translation. * Add CACHE_PREFIX to the .env.example file We had some problems with multiple BookStack instances using the same caching server. Perhaps it's a good idea to have this available in the `.env.example` file. * fix markdown editor resizing with long strings * typo in readme.md * add missing polish translations for comments * Update .env.example * Attempted move to webpack again * Reorganised dev-deps and updated moment * Update Italian translation * Fixes issue with the validation message not being translated. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Finished off intitial conversion to webpack * Moved jQuery to use NPM and fixed some asset refs * Added togglable script escaping to page content Configurable via 'ALLOW_CONTENT_SCRIPTS' env variable. Fixes BookStackApp#575 * Updated exports to use DejaVu font Provides potentially better language font coverage. * Markdown editor image paste sets cursor correctly Now sets cursor to alt text rather than end of placeholder image. Fixed BookStackApp#751 * Prevented markdown editor pushing out toolbar * Fixed up notification styling a little * Fixed large content previews and improved mobile styles Listing content previews no longer pre-wrap and instead simply break correctly. Updated titles to ensure they break on mobile devices. Reduced spacing and font sizes on mobile to better adjust content to screen size. Fixes BookStackApp#739 * Fixes a number of issues with the image uploader. Read below, - Added a remove link to remove files that have an error. - Error will appear below the progress bar. - Hovering on dz-image or dz-details will display the error message. Otherwise error message was covering the remove link as well. - Removed styling around the file size. - Removed gradient effect in accordance with BookStack styling. - Dropzone filenae will not overflow the container element. Also done for page attachments - Added a 'uploaded' error message. this error was being thrown when the file size exceeded the server configured file size. (https://stackoverflow.com/a/42934387/903324) Towards BookStackApp#741 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Update activities.php * Update auth.php * Update common.php * Update components.php * Update settings.php * Fixes the icons not being aligned properly in attached items section for the page. Also formatting. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Update entities.php * Updated webpack SCSS extract to provide sourcemaps * Cleaned some form styling Removed uppercasing of labels to make a little friendlier. Extracted out toggleswitch JS into own component. Improved basic code input for html-head-input area. * Use autodiscover for dev packages Allows installation with `composer install --no-dev` Fixed BookStackApp#742 * Updated outline button styles for svg icons * Removing the selected image and clearing the dropdzone on dialog close. Towards BookStackApp#741 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Not resizing gif images. See - Intervention/image#176 Fixes BookStackApp#223 Signed-off-by: Abijeet <abijeetpatro@gmail.com> * Fixes an issue with handling of large image files. Signed-off-by: Abijeet <abijeetpatro@gmail.com> * update japanese translation * fix entities.php * Fixed failing tests Fixed syntax error in french translations. Removed 'required' on image validation which was breaking tests * Made search more efficient and tweaked weighting Added per-entity weighting changes. Now Books score higher than chapters which score higher than pages. Reduced queries required on search by only searching once but at a higher count to see if there's another page. * Fixed incorrect search logic in last commit Incorrect cross-entity pagination could lead to hidden entities. * Properly escaped search results Prevents vue-like syntax in results causing errors. Related to BookStackApp#748 * Updated create routes to prevent slug clashes Fixes BookStackApp#758 * Removed invalid bracket from view * Ensured uploaded system images remain public Also added tests to cover local_secure image storage. Fixes BookStackApp#725 * Updated icons with height Fixes issues within IE * Updated assets for release v0.20.1 * Fixed export style paths * Updated the version because i'm such a plonker And forgot to do this last release. I wonder if there's a simple commit hook that could prevent the same two versions twice in a row?
There are documentation and examples about create custom themes? |
Hi @MiguelAngelLV, There is nothing yet since I'd deem the views, Which the themes would be based on, as unstable. The feature is in the latest release though and my original description on this issue explains how the system works although I'd advise only small, selective theme overrides should be done for now to minimise breakage upon update. |
Is any of this going to end up 0.26? Or is there at least a possibility of getting a dark theme for 0.26, even if customized beyond that isn't necessarily an option? |
@lindsayschm This functionality is already in v0.26, it's just not stable since views may still actively change therefore I'm keeping this issue open. There will not be a dark theme in v0.26. The request for a dark theme is already open under #1234. Not really looking to officially support a dark theme for a while due to the extra effort it would require for every UI change. Pretty sure I've seen some repos offering dark styles for BookStack although it'll likely be a small while before these are updated for the changes in v0.26. |
As of the last release, docs were updated with details of using this system for customisation: |
Are all of the settings from the customisation section of the app settings controllable from here if I was to export the folders from a version I have customised? Namely I am trying to set the application name, logo and colour. |
@Maggie0002 Not directly, there are hacks accessible from the theme files but I'm not sure I'd recommend them. You can always override where those elements are used and, for the colors, these are just used as css variables so you could override those via css if needed to be done via the theme system. |
Hi @ssddanbrown Do you plan to "officially" support this / to make the themenig system stable? |
Hi @dorianim, The logical system is newer so may incur more changes. But, for the core systems in use here, I would be intending to note potential breakages in any release notes. What isn't stable is the elements that may be overridden using these systems. So icons, translations and view files (Or any application/framework classes or functions used in the logical system). These can change upon any release. They probably are not things I'd ever look to deem as "stable" due to the impact that'd have on development. That said, I don't really change translation files unless needed and I've recently done a pass on view files to make the structure a little more standard, so we have less volatility there. |
Olá @ssddanbrown, |
Hi @dsoftware43, |
Since the visual theme system has become relatively mature I'm going to go ahead and close this off as I'm not sure of what further to do apart from further clean & break down view files as we are developing the platform. |
This system has now been documented on the docs site here: https://www.bookstackapp.com/docs/admin/hacking-bookstack/#theme-system
Enable the ability to override views without editing original files. Will greatly enhance customizability of views.
By setting an
APP_THEME
environment variable a custom theme can be used.A
theme
folder has been added to the root BookStack dir. Any custom themes can be added within their own folder here.After setting an
APP_THEME
variable then the system will search in thethemes/{APP_THEME}
folder for any views before defaulting to standard BookStack views. This gives the option to only override single views if required.Will need to do a major clean-up of views at some point to ensure everything is modular. May also need to add some helpers to allow easy, safe fetching of entities through the permission system to prevent otherwise 'Themers' with Laravel knowledge may directly query models within views.
This serves as a potential solution to the following:
The text was updated successfully, but these errors were encountered: