`content_tag(:meta, name:, content:)` treated the keyword arguments as
text content rather than HTML attributes, producing visible JSON-like
output on the page. Replace with `tag(:meta, ...)` which correctly
renders a self-closing element with the proper attributes.
Adds a view spec assertion to cover the rendered output.
The decision on which fields are writable has been moved into
the user's contract. Previously the fields in the My Account form were only
disabled in the frontend, but when changing the browser form, the user could
still update values. Now the contract has been updated to check the
authentication method as well, denying changes to the own name and email address.
Similarly when the contract prevents edits, this is also reflected in the admin
UI for users. It's not pretty, because there seems to be no formatting for disabled
text boxes in our old forms, but it still gives faster feedback than the
old forms, where you had to submit to see that a change to your own login
was rejected.
In the My Accounts form, this change leads to the curious case, where
an admin CAN change their own name in the My Account view, because admins
could do it in other forms as well. It's surprising, but consistent.
Additionally the behaviour has been harmonized across LDAP and other auth providers.
Editing the email address is now also forbidden in all cases for the user themselves.
- invalid or expired tokens are ignored, only active tokens are
considered
- if there are active non-trial tokens, the trial tokens are ignored
- if there is an active token without any user restrictions (no
`active_user_count` key), there is no limit on the number of active
users
- the maximum allowed active users is computed by taking the maximum of
the `active_user_count` values of the active tokens
- if there are no tokens, there is no limit on the number of active
users
https://community.openproject.org/wp/64157
Instead of having one single token, we can now have multiple tokens.
They can have different plans, different trial/non-trial status, and
different activation dates.
This allows:
- to have a paid token for a plan, and a trial token for two weeks to
try out a higher plan.
- to have an existing token for a plan which will soon expire, and add
the token for the next period or a higher plan in parallel.
All tokens are listed on the same page in the administration.
* add a new helper for breadcrumb in wiki page
* set page header in destroy page
* set page header in edit page
* set page header in history and rename and edit parent pages
* change toolbar items into page header items
* add new wiki action to sub header
* remove version edit page which is not in use any more
* add export as a menu item of the header
* fix rubocup errors
* fix failing tests
* replace page header in annotate page
* replace page header in diff page
* add page header in select menu page
* fix rubocup errors
* fix errors on rename test
* fix errors on selecting items from toolbar
* fix errors on tests for child pages
* set correct permission for configure menu item
* replace page header in summary page
* replace page header in summary details page
* edit docs of sub header
* add page header in wiki new page
* remove controller and a route for edit method
* undo changes for docs of sub header
* extract header in show page into a new component
* use helper method in header component
* add wiki module to the breadcrumb
* rename page header component for wiki page
* simplify how lock and lock implemented
* extract sub header
* remove wiki title from header of history page
* fix page header in new page
* use page.find_test_selector in test
* fix failing test for summary page
* fix failing test for wiki child pages
* change the summary test
* use test selector for page header title
* undo changes for activate user in admin
* use test selector in adding editing history test
* use test selector in attachment upload test
* use test selector in child pages tests
* use test selector in wiki menu items tests
* change test selector for breadcrumbs
* extract conditions to show edit button into a method
* extract conditions to show rollback action menu item into a method
* extract conditions to show create button into a method
* fix duplicated code in test
* Remove outdated `show_local_breadcrumb` method which is replaced by the Primer::PageHeader breadcrumb
* Remove `default_breadcrumb` method as it serves no prupose any more
* Remove the old breadcrumb and its hook completely
* remove breadcrumbs path from rename
* fix translations errors in storages
* undo changes on translations
* remove default breadcrumbs in time tracking controller
---------
Co-authored-by: Behrokh Satarnejad <b.satarnejad@openproject.com>
Co-authored-by: Behrokh Satarnejad <62008897+bsatarnejad@users.noreply.github.com>
Previously we only got the slug name of the provider
as a string, which doesn't allow to further use the provider.
Converting it back into its AR representation allows to call
further methods on it, e.g. checking support for certain capabilities.
* visibly different favicon and apple touch icon in development environment
Commands to create modified icons:
* `mogrify -path development -modulate 100,100,0 apple-touch-icon-120x120.png favicon.ico`
* `image_optim development/*.png`
* development in app header
* mention highlighting in documentation about development environment