Fix various typos

Found via `codespell -q 3 -S ./.git,./config/locales,./modules/xls_export/config/locales,./modules/job_status/config/locales,./modules/two_factor_authentication/config/locales,./modules/backlogs/config/locales/crowdin,./**/config/locales,./frontend/src/vendor -L ba,inflight,nd,parms,pullrequest,pullrequests,sur,varius`
pull/11591/head
luz paz 2 years ago
parent 5ca016b3f8
commit c757e6f60e
  1. 2
      Gemfile
  2. 2
      app/helpers/no_results_helper.rb
  3. 2
      app/helpers/pagination_helper.rb
  4. 2
      config/application.rb
  5. 2
      config/configuration.yml.example
  6. 2
      docs/development/concepts/application-architecture/README.md
  7. 4
      docs/development/concepts/queries/README.md
  8. 2
      docs/development/design-system/README.md
  9. 2
      docs/development/kerberos/README.md
  10. 2
      docs/enterprise-guide/enterprise-on-premises-guide/support/installation-support/script/op-support-data.sh
  11. 2
      docs/faq/README.md
  12. 2
      docs/installation-and-operations/configuration/environment/README.md
  13. 2
      docs/installation-and-operations/installation/packaged/README.md
  14. 2
      docs/system-admin-guide/authentication/saml/README.md
  15. 2
      docs/system-admin-guide/integrations/nextcloud/README.md
  16. 2
      docs/user-guide/wiki/wiki-faq/README.md
  17. 4
      docs/user-guide/work-packages/set-change-dates/README.md
  18. 2
      frontend/src/app/core/main-menu/main-menu-toggle.service.ts
  19. 2
      frontend/src/app/core/setup/globals/global-listeners/setup-server-response.ts
  20. 2
      frontend/src/app/core/state/collection-store.ts
  21. 2
      frontend/src/app/core/state/resource-collection.service.ts
  22. 2
      frontend/src/app/features/boards/tile-view/tile-view.component.spec.ts
  23. 2
      frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts
  24. 2
      frontend/src/app/features/in-app-notifications/center/in-app-notification-center-page.component.ts
  25. 2
      frontend/src/app/features/plugins/plugin-context.ts
  26. 2
      frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts
  27. 2
      frontend/src/app/shared/components/autocompleter/autocomplete-select-decoration/autocomplete-select-decoration.component.ts
  28. 2
      frontend/src/app/shared/components/autocompleter/op-autocompleter/services/op-autocompleter.service.ts
  29. 2
      frontend/src/app/shared/components/dataset-inputs.ts
  30. 2
      frontend/src/app/shared/components/fields/edit/field-types/formattable-edit-field/formattable-edit-field.component.ts
  31. 2
      frontend/src/app/shared/components/grids/widgets/news/news.component.spec.ts
  32. 4
      frontend/src/app/spot/components/form-field/form-field.component.ts
  33. 2
      frontend/src/app/spot/components/selector-field/selector-field.component.ts
  34. 4
      frontend/src/global_styles/layout/_toolbar.lsg
  35. 2
      frontend/src/global_styles/openproject/_scm.sass
  36. 2
      frontend/src/stories/ActionBar.stories.mdx
  37. 6
      frontend/src/stories/Buttons.stories.mdx
  38. 2
      frontend/src/stories/Colors.stories.mdx
  39. 4
      frontend/src/stories/Mobile-Accessibility-Localisation.stories.mdx
  40. 2
      frontend/src/stories/Shadows.stories.mdx
  41. 4
      frontend/src/stories/Typography.stories.mdx
  42. 2
      lib_static/plugins/acts_as_journalized/lib/acts/journalized/reversion.rb
  43. 2
      modules/backlogs/app/models/story.rb
  44. 2
      modules/bim/app/services/bim/ifc_models/view_converter_service.rb
  45. 2
      modules/costs/spec/controllers/costlog_controller_spec.rb
  46. 2
      modules/dashboards/spec/features/work_package_calendar_spec.rb
  47. 2
      modules/dashboards/spec/features/work_package_graph_overview_spec.rb
  48. 2
      modules/storages/spec/services/storages/file_links/file_link_sync_service_spec.rb
  49. 2
      packaging/conf/configuration.yml
  50. 2
      spec/constants/settings/definition_spec.rb
  51. 2
      spec/features/projects/copy_spec.rb
  52. 2
      spec/features/wiki/restore_main_item_spec.rb
  53. 2
      spec/lib/api/v3/projects/schemas/project_schema_representer_spec.rb
  54. 2
      spec/lib/open_project/text_formatting/markdown/child_pages_macro_spec.rb
  55. 2
      spec/models/custom_actions/actions/notify_spec.rb
  56. 2
      spec/models/mail_handler_spec.rb

@ -151,7 +151,7 @@ gem 'airbrake', '~> 13.0.0', require: false
gem 'prawn', '~> 2.2' gem 'prawn', '~> 2.2'
gem 'prawn-markup', '~> 0.3.0' gem 'prawn-markup', '~> 0.3.0'
# prawn implictly depends on matrix gem no longer in ruby core with 3.1 # prawn implicitly depends on matrix gem no longer in ruby core with 3.1
gem 'matrix', '~> 0.4.2' gem 'matrix', '~> 0.4.2'
gem 'cells-erb', '~> 0.1.0' gem 'cells-erb', '~> 0.1.0'

@ -27,7 +27,7 @@
#++ #++
module NoResultsHelper module NoResultsHelper
# Helper to render the /common/no_results partial custamizable content. # Helper to render the /common/no_results partial customizable content.
# Example usage: # Example usage:
# no_results_box action_url: new_project_version_path(@project), # no_results_box action_url: new_project_version_path(@project),
# display_action: authorize_for('messages', 'new') # display_action: authorize_for('messages', 'new')

@ -106,7 +106,7 @@ module PaginationHelper
# * limit # * limit
# * page # * page
# parameters. # parameters.
# Preferes page over the other two and # Prefers page over the other two and
# calculates page in it's absence based on limit and offset. # calculates page in it's absence based on limit and offset.
# Return 1 if all else fails. # Return 1 if all else fails.

@ -122,7 +122,7 @@ module OpenProject
# Doing this, it is e.g. possible to avoid having the format of '%{attribute} %{message}' which # Doing this, it is e.g. possible to avoid having the format of '%{attribute} %{message}' which
# will always prepend the attribute name to the error message. # will always prepend the attribute name to the error message.
# The formats can then be specified using the `format:` key within the [local].yml file in every # The formats can then be specified using the `format:` key within the [local].yml file in every
# layer of activerecord.errors down to the individual leve of the message, e.g. # layer of activerecord.errors down to the individual level of the message, e.g.
# activerecord.errors.models.project.attributes.types.format # activerecord.errors.models.project.attributes.types.format
config.active_model.i18n_customize_full_message = true config.active_model.i18n_customize_full_message = true

@ -165,7 +165,7 @@
# Beta features # Beta features
# #
# Some features are hidden behind a feature flag during development. # Some features are hidden behind a feature flag during development.
# To activate one or more features set the correspondig flag inside the section. # To activate one or more features set the corresponding flag inside the section.
# #
# Example: # Example:
# production: # production:

@ -57,7 +57,7 @@ A response that is fully controlled by Rails but extended by some Angular compon
Historically, OpenProject has been forked from [Redmine](https://www.redmine.org/) and modified from a primarily software-development focused flow into a general project management application suite. A Ruby on Rails monolith was used to serve the entire application, frontend and API. Javascript was used to extend some of the functionality with Prototype.js and jQuery on existing, Rails-rendered pages. Historically, OpenProject has been forked from [Redmine](https://www.redmine.org/) and modified from a primarily software-development focused flow into a general project management application suite. A Ruby on Rails monolith was used to serve the entire application, frontend and API. Javascript was used to extend some of the functionality with Prototype.js and jQuery on existing, Rails-rendered pages.
The monolith was turned into a hybrid application with semi-separated JavaScript frontend by the [introduction of AngularJS in 2014](https://github.com/opf/openproject/pull/913) for a redesign of the [work package table](../../../user-guide/work-packages/work-package-views/#work-packages-views). The Rails monolith was and is still rendering a large potion of the frontend however. The AngularJS frontend was served from within Rails and not separated. Therefore, the application frontend is not a single-page application yet. The monolith was turned into a hybrid application with semi-separated JavaScript frontend by the [introduction of AngularJS in 2014](https://github.com/opf/openproject/pull/913) for a redesign of the [work package table](../../../user-guide/work-packages/work-package-views/#work-packages-views). The Rails monolith was and is still rendering a large portion of the frontend however. The AngularJS frontend was served from within Rails and not separated. Therefore, the application frontend is not a single-page application yet.
Due to performance issues with AngularJS digest cycles and a large number of components, the work package table was [refactored into a plain JavaScript renderer](https://github.com/opf/openproject/pull/5117) end of 2016. Finally, in early 2018, the application frontend was [migrated from AngularJS to Angular](https://github.com/opf/openproject/pull/5984) during the course of a few releases. Due to performance issues with AngularJS digest cycles and a large number of components, the work package table was [refactored into a plain JavaScript renderer](https://github.com/opf/openproject/pull/5117) end of 2016. Finally, in early 2018, the application frontend was [migrated from AngularJS to Angular](https://github.com/opf/openproject/pull/5984) during the course of a few releases.

@ -90,7 +90,7 @@ When accessing a singular query resource, the response will always contain the s
- `_links.project` to the project it is saved in (if project-scoped) - `_links.project` to the project it is saved in (if project-scoped)
- `_links.user` reference to the user that saved or requested the query - `_links.user` reference to the user that saved or requested the query
- Properties regarding the **displaying of the query** results such as `timelineVisible` (show the gantt chart), `highlightingMode` and `showHierarchies` - Properties regarding the **displaying of the query** results such as `timelineVisible` (show the gantt chart), `highlightingMode` and `showHierarchies`
- **Embedded HAL links** und `_embedded` related to how the results are to be fetched - **Embedded HAL links** and `_embedded` related to how the results are to be fetched
- `filters` selected filters array - `filters` selected filters array
- `columns` embedded array of selected `columns` - `columns` embedded array of selected `columns`
- `sortBy` array of one or multiple sort criteria. - `sortBy` array of one or multiple sort criteria.
@ -175,7 +175,7 @@ In practice, you will likely not only access the query resource itself, but rath
The `WorkPackagesListService` can also update and save existing queries passed to it. This flow will often happen in the [`PartitionedQuerySpaceComponent`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts), which is the basis for the modules showing work packages as a table or grid such as the [`WorkPackageViewPageComponent`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/routing/wp-view-page/wp-view-page.component.ts) or the [`IfcViewerPageComponent`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/bim/ifc_models/pages/viewer/ifc-viewer-page.component.ts). The `WorkPackagesListService` can also update and save existing queries passed to it. This flow will often happen in the [`PartitionedQuerySpaceComponent`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts), which is the basis for the modules showing work packages as a table or grid such as the [`WorkPackageViewPageComponent`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/routing/wp-view-page/wp-view-page.component.ts) or the [`IfcViewerPageComponent`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/bim/ifc_models/pages/viewer/ifc-viewer-page.component.ts).
`PartionedQuerySpaceComponent` instances will be instantiated by the router and listen to URL params to load the corresponding query object. The most prominent example of such a page is the work packages module such as [community.openproject.com/work_packages](https://community.openproject.com/work_packages). `PartitionedQuerySpaceComponent` instances will be instantiated by the router and listen to URL params to load the corresponding query object. The most prominent example of such a page is the work packages module such as [community.openproject.com/work_packages](https://community.openproject.com/work_packages).
The partitioning comes from showing a work package table (or cards view) on one side, and a details view of a single work package on another side, splitting the page in two. The width of the split areas can be customized by the user through a drag-handle. The partitioning comes from showing a work package table (or cards view) on one side, and a details view of a single work package on another side, splitting the page in two. The width of the split areas can be customized by the user through a drag-handle.

@ -106,4 +106,4 @@ keywords: Design system, styles, design, components
## Contribute ## Contribute
The OpenProject product team is very interested in your feedback. So if you want to contribute or comment on the style definitions, components or documentation currently created in Figma please contact us by email to [info@openproject.com](mailto:info@openproject.com). Alternatively you can create a work package in the [OpenProject community plattform](https://community.openproject.org). The OpenProject product team is very interested in your feedback. So if you want to contribute or comment on the style definitions, components or documentation currently created in Figma please contact us by email to [info@openproject.com](mailto:info@openproject.com). Alternatively you can create a work package in the [OpenProject community platform](https://community.openproject.org).

@ -82,7 +82,7 @@ You can now run `kadmin.local` to access the admin CLI for adding principals to
This will prompt for a password for user1, which you have to confirm afterwards. This will prompt for a password for user1, which you have to confirm afterwards.
To check that the user was created successfuly, run this command `get_principal`: To check that the user was created successfully, run this command `get_principal`:
``` ```
> kadmin.local: get_principal user1 > kadmin.local: get_principal user1

@ -105,7 +105,7 @@ cat /etc/[A-Za-z]*[_-][rv]e[lr]*
echo "---" echo "---"
#CHECK FILESYSTEMS ON LOCALHOST #CHECK FILESYSTEMS ON LOCALHOST
echo Filesystems on locahost echo Filesystems on localhost
cat /etc/fstab | grep -vE "^#" cat /etc/fstab | grep -vE "^#"
echo "---" echo "---"
df -h df -h

@ -277,7 +277,7 @@ If you cancel your subscription for Enterprise on-premises you will be downgrade
### How can I migrate from an old version of OpenProject to the latest version? ### How can I migrate from an old version of OpenProject to the latest version?
OpenProject changed the database from MySQL (rarely also MariaDB) in older Versions and used PostgreSQL 10 afterwards. With the relase of version 12 OpenProject introduced the PostgreSQL 13 database. For further information on several database migrations, please have a look at [this section](../installation-and-operations/misc). OpenProject changed the database from MySQL (rarely also MariaDB) in older Versions and used PostgreSQL 10 afterwards. With the release of version 12 OpenProject introduced the PostgreSQL 13 database. For further information on several database migrations, please have a look at [this section](../installation-and-operations/misc).
## Other ## Other

@ -322,4 +322,4 @@ OPENPROJECT_YOUTUBE__CHANNEL (default="https://www.youtube.com/c/OpenProjectComm
### PostgreSQL statement_timeout ### PostgreSQL statement_timeout
In docker installations, there is a default `statement_timeout` of 90s set for the docker image. To override this value in case you're getting statement timeout errros such as "ERROR: canceling statement due to statement timeout", use the environment variable `POSTGRES_STATEMENT_TIMEOUT` In docker installations, there is a default `statement_timeout` of 90s set for the docker image. To override this value in case you're getting statement timeout errors such as "ERROR: canceling statement due to statement timeout", use the environment variable `POSTGRES_STATEMENT_TIMEOUT`

@ -460,7 +460,7 @@ If you wish to install OpenProject under a server path prefix, such as `yourdoma
#### SSL/TLS configuration #### SSL/TLS configuration
> **Note:** With OpenProject version 12.2 **HTTPS confugration** was set to be **default** for every installation. **Now best practice is to proceed by selecting `yes` for using HTTPS (SSL/TLS)** and generating the needed certificates, otherwise you will have to manually deactivate HTTPS on the command line. > **Note:** With OpenProject version 12.2 **HTTPS configuration** was set to be **default** for every installation. **Now best practice is to proceed by selecting `yes` for using HTTPS (SSL/TLS)** and generating the needed certificates, otherwise you will have to manually deactivate HTTPS on the command line.
OpenProject can configure Apache to support HTTPS (SSL/TLS). If you have SSL certificates and want to use SSL/TLS (recommended), select **Yes**. OpenProject can configure Apache to support HTTPS (SSL/TLS). If you have SSL certificates and want to use SSL/TLS (recommended), select **Yes**.

@ -239,7 +239,7 @@ SAML responses by identity providers are required to be signed. You can configur
Use the key `attribute_statements` to provide mappings for attributes returned by the SAML identity provider's response to OpenProject internal attributes. Use the key `attribute_statements` to provide mappings for attributes returned by the SAML identity provider's response to OpenProject internal attributes.
**a) Attribute mapping example for configration.yml** **a) Attribute mapping example for configuration.yml**
```yaml ```yaml
default: default:

@ -121,7 +121,7 @@ Navigate back to your OpenProject tab and click on the **Done. Continue setup**
![OpenProject_NC_OAuth_values](3_3_01-OP_OAuth_application_details.png) ![OpenProject_NC_OAuth_values](3_3_01-OP_OAuth_application_details.png)
Once you hava entered the client ID and client secrets on this page, click on **Save and complete setup**. In the next screen, click on **Yes, I have copied these values**. At this point, your instance configuration is complete and you should see a green banner confirming this. Once you have entered the client ID and client secrets on this page, click on **Save and complete setup**. In the next screen, click on **Yes, I have copied these values**. At this point, your instance configuration is complete and you should see a green banner confirming this.
![Integration successfully completed on the OpenProject end](Nextcloud-set-up-in-OP.png) ![Integration successfully completed on the OpenProject end](Nextcloud-set-up-in-OP.png)

@ -10,7 +10,7 @@ keywords: wiki faq
### Is it possible to copy a wiki or a wiki page from one project into another project? ### Is it possible to copy a wiki or a wiki page from one project into another project?
Yes, you can do both, you have to export the wiki or the wiki page as a Markdown (or Atom), than copy the Mardown from the text editor. Now you have to create a new wiki in the project you want to copy the old one (or the page). In the section paragrah you have to change into the markdown modus, then paste the text from you have copied. Unforunally pictures cannot be copied this way. You have to add them manually. Yes, you can do both, you have to export the wiki or the wiki page as a Markdown (or Atom), than copy the Mardown from the text editor. Now you have to create a new wiki in the project you want to copy the old one (or the page). In the section paragraph you have to change into the markdown modus, then paste the text from you have copied. Unforunally pictures cannot be copied this way. You have to add them manually.
### Which image formats can be used to include them on a wiki page? ### Which image formats can be used to include them on a wiki page?

@ -44,7 +44,7 @@ You can enter dates either by typing them in into the start and finish date fiel
You can also click on the **Today** link below the start and finish date fields to use today's date. You can also click on the **Today** link below the start and finish date fields to use today's date.
A more intuitive way to select start and end dates is to simply click on two different dates in the mini calendars below. Two calendar months are displayed for better visibilty. A more intuitive way to select start and end dates is to simply click on two different dates in the mini calendars below. Two calendar months are displayed for better visibility.
Start by clicking on a start date. This will enter the selected date as the start date, mark it with a dark color on the mini calendar below and move the focus to the finish date field. Hovering on different finish dates will give you a preview of the date range for the work packakge if you click this second date. Once you have decided on a finish date, click on it. This will enter the finish date in the date field and mark that date with another dark color. The dates in between will be highlighted with a lighter colour. Start by clicking on a start date. This will enter the selected date as the start date, mark it with a dark color on the mini calendar below and move the focus to the finish date field. Hovering on different finish dates will give you a preview of the date range for the work packakge if you click this second date. Once you have decided on a finish date, click on it. This will enter the finish date in the date field and mark that date with another dark color. The dates in between will be highlighted with a lighter colour.
@ -127,7 +127,7 @@ For example, if you set the start date to *Wednesday, 12 October* and enter a du
It is possible for a work package to have only duration without any start or finish dates set. It is possible for a work package to have only duration without any start or finish dates set.
> **Note:** If you add even one date to a work package with duration, the other date is automatically derived; ot is not possible to have just one date (start *or* finish) and duration set. Please note also that if a work package with only duration derives its start date via a relation, the finish date is then also derived. > **Note:** If you add even one date to a work package with duration, the other date is automatically derived; it is not possible to have just one date (start *or* finish) and duration set. Please note also that if a work package with only duration derives its start date via a relation, the finish date is then also derived.
Setting only duration without start or finish dates is especially useful when you have a general estimation of how long different tasks or phases of a project will take, but do not have exact dates defined quite yet. Setting only duration without start or finish dates is especially useful when you have a general estimation of how long different tasks or phases of a project will take, but do not have exact dates defined quite yet.

@ -146,7 +146,7 @@ export class MainMenuToggleService {
public setWidth(width?:any):void { public setWidth(width?:any):void {
if (width !== undefined) { if (width !== undefined) {
// Leave a minimum amount of space for space fot the content // Leave a minimum amount of space for space for the content
const maxMenuWidth = this.deviceService.isMobile ? window.innerWidth - 120 : window.innerWidth - 520; const maxMenuWidth = this.deviceService.isMobile ? window.innerWidth - 120 : window.innerWidth - 520;
if (width > maxMenuWidth) { if (width > maxMenuWidth) {
this.elementWidth = maxMenuWidth; this.elementWidth = maxMenuWidth;

@ -1,5 +1,5 @@
// Legacy code ported from app/assets/javascripts/application.js.erb // Legacy code ported from app/assets/javascripts/application.js.erb
// Do not add stuff here, but ideally remove into components whenver changes are necessary // Do not add stuff here, but ideally remove into components whenever changes are necessary
export function setupServerResponse() { export function setupServerResponse() {
initMainMenuExpandStatus(); initMainMenuExpandStatus();
focusFirstErroneousField(); focusFirstErroneousField();

@ -167,7 +167,7 @@ export function collectionFrom<T>(elements:T[]):IHALCollection<T> {
/** /**
* Takes a collection of elements that do not have an ID, and extract the ID from self link. * Takes a collection of elements that do not have an ID, and extract the ID from self link.
* @param collection a IHALCollection with elements that have a self link * @param collection a IHALCollection with elements that have a self link
* @returns the same collection with elements extended with an ID dervied from the self link. * @returns the same collection with elements extended with an ID derived from the self link.
*/ */
export function extendCollectionElementsWithId<T extends { _links:IHalResourceLinks }>( export function extendCollectionElementsWithId<T extends { _links:IHalResourceLinks }>(
collection:IHALCollection<T>, collection:IHALCollection<T>,

@ -245,7 +245,7 @@ export abstract class ResourceCollectionService<T extends { id:ID }> {
} }
/** /**
* Create a new instance of this resource service's underyling store. * Create a new instance of this resource service's underlying store.
* @protected * @protected
*/ */
protected abstract createStore():CollectionStore<T>; protected abstract createStore():CollectionStore<T>;

@ -32,7 +32,7 @@ describe('shows tiles', () => {
element = fixture.debugElement; element = fixture.debugElement;
}); });
it('should render the componenet successfully', () => { it('should render the component successfully', () => {
fixture.detectChanges(); fixture.detectChanges();
const tile = document.querySelector('.op-tile-block--title'); const tile = document.querySelector('.op-tile-block--title');
expect(document.contains(tile)).toBeTruthy(); expect(document.contains(tile)).toBeTruthy();

@ -83,7 +83,7 @@ export class WorkPackagesCalendarPageComponent extends PartitionedQuerySpacePage
/** Toolbar is not editable */ /** Toolbar is not editable */
titleEditingEnabled = false; titleEditingEnabled = false;
/** Savable */ /** Saveable */
showToolbarSaveButton = true; showToolbarSaveButton = true;
/** Toolbar is always enabled */ /** Toolbar is always enabled */

@ -61,7 +61,7 @@ export class InAppNotificationCenterPageComponent extends UntilDestroyedMixin im
// eslint-disable-next-line @typescript-eslint/ban-types // eslint-disable-next-line @typescript-eslint/ban-types
removeTransitionSubscription:Function; removeTransitionSubscription:Function;
/** Not savable */ /** Not saveable */
showToolbarSaveButton = false; showToolbarSaveButton = false;
/** Toolbar is always enabled */ /** Toolbar is always enabled */

@ -39,7 +39,7 @@ export class OpenProjectPluginContext {
'workPackageNewInitialization', 'workPackageNewInitialization',
]; ];
// Common services referencable by index // Common services referenceable by index
public readonly services = { public readonly services = {
confirmDialog: this.injector.get<ConfirmDialogService>(ConfirmDialogService), confirmDialog: this.injector.get<ConfirmDialogService>(ConfirmDialogService),
externalQueryConfiguration: this.injector.get<ExternalQueryConfigurationService>(ExternalQueryConfigurationService), externalQueryConfiguration: this.injector.get<ExternalQueryConfigurationService>(ExternalQueryConfigurationService),

@ -68,7 +68,7 @@ export class TeamPlannerPageComponent extends PartitionedQuerySpacePageComponent
/** Toolbar is not editable */ /** Toolbar is not editable */
titleEditingEnabled = false; titleEditingEnabled = false;
/** Savable */ /** Saveable */
showToolbarSaveButton = true; showToolbarSaveButton = true;
/** Toolbar is always enabled */ /** Toolbar is always enabled */

@ -80,7 +80,7 @@ export class AutocompleteSelectDecorationComponent implements OnInit {
/** Get the selected options */ /** Get the selected options */
public selected:SelectItem|SelectItem[]; public selected:SelectItem|SelectItem[];
/** Get the selected options especially fot the project autocompleter */ /** Get the selected options especially for the project autocompleter */
public currentProjectSelection:{ id:string, name:string }|{ id:string, name:string }[]; public currentProjectSelection:{ id:string, name:string }|{ id:string, name:string }[];
/** The input name we're syncing selections to */ /** The input name we're syncing selections to */

@ -47,7 +47,7 @@ export class OpAutocompleterService extends UntilDestroyedMixin {
// A method for returning data based on the resource type // A method for returning data based on the resource type
// If you need to fetch our default date sources like work_packages or users, // If you need to fetch our default date sources like work_packages or users,
// you should use the default method (loadAvailable), otherwise you should implement a function for // you should use the default method (loadAvailable), otherwise you should implement a function for
// your desired resourse // your desired resource
public loadData(matching:string, resource:resource, filters?:IAPIFilter[], searchKey?:string) { public loadData(matching:string, resource:resource, filters?:IAPIFilter[], searchKey?:string) {
switch (resource) { switch (resource) {
// in this case we can add more functions for fetching usual resources // in this case we can add more functions for fetching usual resources

@ -16,7 +16,7 @@ export interface DatasetInputsComponent extends DatasetInputsDecorated {
} }
/** /**
* The populateInputsFromDataset furnction automatically sets input values from `data` attributes set on a component tag. * The populateInputsFromDataset function automatically sets input values from `data` attributes set on a component tag.
* This is useful if you're rendering the tag in the backend but want to provide data to the component via its inputs. * This is useful if you're rendering the tag in the backend but want to provide data to the component via its inputs.
* *
* Usage: * Usage:

@ -43,7 +43,7 @@ import isNewResource from 'core-app/features/hal/helpers/is-new-resource';
export class FormattableEditFieldComponent extends EditFieldComponent implements OnInit { export class FormattableEditFieldComponent extends EditFieldComponent implements OnInit {
public readonly field = this; public readonly field = this;
// Detect when inner component could not be initalized // Detect when inner component could not be initialized
public initializationError = false; public initializationError = false;
@ViewChild(OpCkeditorComponent, { static: true }) editor:OpCkeditorComponent; @ViewChild(OpCkeditorComponent, { static: true }) editor:OpCkeditorComponent;

@ -69,7 +69,7 @@ describe('shows news', () => {
expect(app.entries.length).toBe(1); expect(app.entries.length).toBe(1);
})); }));
it('should render the componenet successfully to show the news', waitForAsync(() => { it('should render the component successfully to show the news', waitForAsync(() => {
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
const newsItem = document.querySelector('li'); const newsItem = document.querySelector('li');

@ -29,7 +29,7 @@ export class SpotFormFieldComponent {
* One example of an input like is the CKEditor rich text editor. * One example of an input like is the CKEditor rich text editor.
* *
* Setting noWrapLabel to `true` causes the label not to wrap the input. * Setting noWrapLabel to `true` causes the label not to wrap the input.
* This might slighly reduce the label functionality (e.g. clicking the label * This might slightly reduce the label functionality (e.g. clicking the label
* does not focus the input) but is still preferred over more broken behavior. * does not focus the input) but is still preferred over more broken behavior.
*/ */
@Input() noWrapLabel = false; @Input() noWrapLabel = false;
@ -55,7 +55,7 @@ export class SpotFormFieldComponent {
/** /**
* Hides the input. This is a utility input for usage of `spot-form-field` in dynamic forms. * Hides the input. This is a utility input for usage of `spot-form-field` in dynamic forms.
* Outisde of dynamic forms, you should be hiding inputs via `*ngIf` or other methods. * Outside of dynamic forms, you should be hiding inputs via `*ngIf` or other methods.
*/ */
@Input() hidden = false; @Input() hidden = false;

@ -55,7 +55,7 @@ export class SpotSelectorFieldComponent {
/** /**
* Hides the input. This is a utility input for usage of `spot-form-field` in dynamic forms. * Hides the input. This is a utility input for usage of `spot-form-field` in dynamic forms.
* Outisde of dynamic forms, you should be hiding inputs via `*ngIf` or other methods. * Outside of dynamic forms, you should be hiding inputs via `*ngIf` or other methods.
*/ */
@Input() hidden = false; @Input() hidden = false;

@ -69,7 +69,7 @@ A toolbar that can and should be used for actions on the current view. Initially
</li> </li>
</ul> </ul>
</div> </div>
<p class="subtitle">now with extremeley long subtitle: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste consequatur doloribus suscipit nemo temporibus deserunt alias incidunt doloremque officia rerum, nobis fuga, recusandae voluptatibus voluptatem tenetur repellendus itaque et. Eum.</p> <p class="subtitle">now with extremely long subtitle: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste consequatur doloribus suscipit nemo temporibus deserunt alias incidunt doloremque officia rerum, nobis fuga, recusandae voluptatibus voluptatem tenetur repellendus itaque et. Eum.</p>
</div> </div>
``` ```
@ -138,6 +138,6 @@ A toolbar that can and should be used for actions on the current view. Initially
</li> </li>
</ul> </ul>
</div> </div>
<p class="subtitle">now with extremeley long subtitle: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste consequatur doloribus suscipit nemo temporibus deserunt alias incidunt doloremque officia rerum, nobis fuga, recusandae voluptatibus voluptatem tenetur repellendus itaque et. Eum.</p> <p class="subtitle">now with extremely long subtitle: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iste consequatur doloribus suscipit nemo temporibus deserunt alias incidunt doloremque officia rerum, nobis fuga, recusandae voluptatibus voluptatem tenetur repellendus itaque et. Eum.</p>
</div> </div>
``` ```

@ -145,7 +145,7 @@ table.filecontent
pre pre
overflow: hidden overflow: hidden
// 12 different colors for the annonate view // 12 different colors for the annotate view
table.annotate table.annotate
tr tr
&.bloc-0 &.bloc-0

@ -122,7 +122,7 @@ When the action bar is use as a toolbar with more three buttons (or with a “Mo
When the text is too long, the button set will remain in one line, and the side option (if present) will move to a new line. When the text is too long, the button set will remain in one line, and the side option (if present) will move to a new line.
If the text in the side option is too long, that will itself also wrap in mutliple lines. If the text in the side option is too long, that will itself also wrap in multiple lines.
## Margins, Padding and Styling ## Margins, Padding and Styling

@ -23,7 +23,7 @@ There are four button styles and a disabled one.
**Basic** **Basic**
The basic style is grey by defualt. Use it for secondary actions or in a group of buttons where there are no primary actions (for exmaple, in a toolbar). The basic style is grey by default. Use it for secondary actions or in a group of buttons where there are no primary actions (for example, in a toolbar).
> Example: Open in Nextcloud with right icon, Settings with left icon, More with right icon > Example: Open in Nextcloud with right icon, Settings with left icon, More with right icon
@ -49,7 +49,7 @@ The danger style should also be used sparingly to draw attention to actions that
A button can be *enabled* or *disabled*. The disabled style is the same for all of the above-described styles. A button can be *enabled* or *disabled*. The disabled style is the same for all of the above-described styles.
> Example: Disabled Open in Nextcloud buttin with right icon, disabled Settings button with left icon, disabled More icon with right button > Example: Disabled Open in Nextcloud button with right icon, disabled Settings button with left icon, disabled More icon with right button
## Options ## Options
@ -126,4 +126,4 @@ If space allows, the button can have a max-width setting, so that it can first s
## Margin and Spacing ## Margin and Spacing
The width of the button is generally set by the contents (notably by the length of the text and the precense of icons). In certain situations, the button might have a fixed length. The width of the button is generally set by the contents (notably by the length of the text and the presence of icons). In certain situations, the button might have a fixed length.

@ -151,7 +151,7 @@ Attention is used to draw user attention to certain updates on the screen, like
> Example > Example
This colour is used when “flagging” work packges. It is a teal colour meant to be distinct from **Indication/_Attention_**. This colour is used when “flagging” work packages. It is a teal colour meant to be distinct from **Indication/_Attention_**.
**Indication/_Current date_** **Indication/_Current date_**

@ -1,8 +1,8 @@
import { Meta } from '@storybook/addon-docs'; import { Meta } from '@storybook/addon-docs';
<Meta title="Devices and Accessibilty" /> <Meta title="Devices and Accessibility" />
# Devices and Accessibilty # Devices and Accessibility
## Desktop-first ## Desktop-first

@ -39,7 +39,7 @@ Although it is best to avoid layering beyond two levels (a base screen + an over
We use different shadows to communicate depth and allow the user to intuitively understand what is "on top". We use different shadows to communicate depth and allow the user to intuitively understand what is "on top".
Our shadows definitions divided between Light and Hard and three levels of elevation. The shadow is always based on a black #000000 transparancy level, a X and Y px value and a spread px value. Our shadows definitions divided between Light and Hard and three levels of elevation. The shadow is always based on a black #000000 transparency level, a X and Y px value and a spread px value.
<ShadowsTable tokens={tokens} /> <ShadowsTable tokens={tokens} />

@ -57,7 +57,7 @@ This is really an alias of _Body Small/Bold_ when this style is used as a header
## Body Big ## Body Big
Used occassionally (where?) Used occasionally (where?)
> Code example here > Code example here
@ -83,7 +83,7 @@ The bold version is used in:
## Caption ## Caption
The caption is used for indications and auxillery information that usually adds context to a view, but are not primary elements. They are also used on elements where space is limited (like the date information on Team planner or Board cards). The caption is used for indications and auxiliary information that usually adds context to a view, but are not primary elements. They are also used on elements where space is limited (like the date information on Team planner or Board cards).
The regular version is used, among other places, in: The regular version is used, among other places, in:

@ -81,7 +81,7 @@ module Acts::Journalized
# some eager loading may mess up the order # some eager loading may mess up the order
# journals.order('created_at').last will not work # journals.order('created_at').last will not work
# (especially when journals already filtered) # (especially when journals already filtered)
# thats why this method exists # that's why this method exists
# it is impossible to incorporate this into #last_journal # it is impossible to incorporate this into #last_journal
# because some logic is based on this eager loading bug/feature # because some logic is based on this eager loading bug/feature
def last_loaded_journal def last_loaded_journal

@ -110,7 +110,7 @@ class Story < WorkPackage
# TODO: Refactor and add tests # TODO: Refactor and add tests
# #
# groups = tasks.partion(&:closed?) # groups = tasks.partition(&:closed?)
# {:open => tasks.last.size, :closed => tasks.first.size} # {:open => tasks.last.size, :closed => tasks.first.size}
# #
def task_status def task_status

@ -127,7 +127,7 @@ module Bim
convert!(ifc_filepath, 'dae') do |target_file| convert!(ifc_filepath, 'dae') do |target_file|
# To include IfcSpace entities, which by default are excluded by # To include IfcSpace entities, which by default are excluded by
# IfcConvert, together with IfcOpeningElement, we need ot over- # IfcConvert, together with IfcOpeningElement, we need to over-
# write the default exclude parameter to only exclude # write the default exclude parameter to only exclude
# IfcOpeningElements. # IfcOpeningElements.
# https://github.com/IfcOpenShell/IfcOpenShell/wiki#ifconvert # https://github.com/IfcOpenShell/IfcOpenShell/wiki#ifconvert

@ -586,7 +586,7 @@ describe CostlogController, type: :controller do
it_behaves_like 'successful update' it_behaves_like 'successful update'
end end
describe "WHEN the user is allowed ot update own cost_entries describe "WHEN the user is allowed to update own cost_entries
WHEN updating something" do WHEN updating something" do
let(:expected_units) { cost_entry.units + 20 } let(:expected_units) { cost_entry.units + 20 }

@ -122,7 +122,7 @@ describe 'Work package calendar widget on dashboard',
sleep(0.1) sleep(0.1)
# As the user lacks the necessary permisisons, no widget is preconfigured # As the user lacks the necessary permissions, no widget is preconfigured
calendar_widget = Components::Grids::GridArea.new('.grid--area.-widgeted:nth-of-type(1)') calendar_widget = Components::Grids::GridArea.new('.grid--area.-widgeted:nth-of-type(1)')
within(calendar_widget.area) do within(calendar_widget.area) do

@ -90,7 +90,7 @@ describe 'Work package overview graph widget on dashboard',
dashboard.add_widget(1, 1, :within, "Work packages overview") dashboard.add_widget(1, 1, :within, "Work packages overview")
# As the user lacks the necessary permisisons, no widget is preconfigured # As the user lacks the necessary permissions, no widget is preconfigured
overview_widget = Components::Grids::GridArea.new('.grid--area.-widgeted:nth-of-type(1)') overview_widget = Components::Grids::GridArea.new('.grid--area.-widgeted:nth-of-type(1)')
overview_widget.expect_to_span(1, 1, 2, 2) overview_widget.expect_to_span(1, 1, 2, 2)

@ -67,7 +67,7 @@ describe ::Storages::FileLinkSyncService, type: :model do
container: work_package) container: work_package)
end end
# We're going to mock OAuth2 autentication failures below # We're going to mock OAuth2 authentication failures below
let(:connection_manager) { ::OAuthClients::ConnectionManager.new(user:, oauth_client: oauth_client1) } let(:connection_manager) { ::OAuthClients::ConnectionManager.new(user:, oauth_client: oauth_client1) }
let(:authorize_url) { 'https://example.com/authorize' } let(:authorize_url) { 'https://example.com/authorize' }
let(:instance) { described_class.new(user:) } let(:instance) { described_class.new(user:) }

@ -52,7 +52,7 @@ default:
subversion: subversion:
# SVN uses Apache repository wrapper due to permission errors in multi-user operation # SVN uses Apache repository wrapper due to permission errors in multi-user operation
manages: <%= ENV['SVN_REPOMAN_URL'] %> manages: <%= ENV['SVN_REPOMAN_URL'] %>
# Do noot verify SSL certificates when SERVER_PROTOCOL is 'https'. # Do not verify SSL certificates when SERVER_PROTOCOL is 'https'.
# As we currently only support local repoman installations with packager, # As we currently only support local repoman installations with packager,
# this option is set to true by default. # this option is set to true by default.
insecure: true insecure: true

@ -99,7 +99,7 @@ describe Settings::Definition do
expect(value_for('default_language')).to eql 'en' expect(value_for('default_language')).to eql 'en'
end end
it 'allows overriding email/smpt configuration from ENV without OPENPROJECT_ prefix even though setting is writable' do it 'allows overriding email/smtp configuration from ENV without OPENPROJECT_ prefix even though setting is writable' do
stub_const('ENV', stub_const('ENV',
{ {
'EMAIL_DELIVERY_CONFIGURATION' => 'legacy', 'EMAIL_DELIVERY_CONFIGURATION' => 'legacy',

@ -189,7 +189,7 @@ describe 'Projects copy',
copied_settings_page.expect_wp_custom_field_active(wp_custom_field) copied_settings_page.expect_wp_custom_field_active(wp_custom_field)
copied_settings_page.expect_wp_custom_field_inactive(inactive_wp_custom_field) copied_settings_page.expect_wp_custom_field_inactive(inactive_wp_custom_field)
# has types of original project activ # has types of original project active
copied_settings_page.visit_tab!('types') copied_settings_page.visit_tab!('types')
active_types.each do |type| active_types.each do |type|

@ -43,7 +43,7 @@ describe 'Wiki page - restoring main wiki item', type: :feature do
it 'restores the main item on start' do it 'restores the main item on start' do
# For some reason, a customer had deleted their wiki start page # For some reason, a customer had deleted their wiki start page
# even though it should be recreated on desctruction of the last item # even though it should be recreated on destruction of the last item
# This spec ensure the wiki main item is rendered even if no menu item is saved. # This spec ensure the wiki main item is rendered even if no menu item is saved.
visit project_path(project) visit project_path(project)

@ -272,7 +272,7 @@ describe ::API::V3::Projects::Schemas::ProjectSchemaRepresenter do
it_behaves_like 'has basic schema properties' do it_behaves_like 'has basic schema properties' do
let(:type) { 'Project' } let(:type) { 'Project' }
let(:name) { Project.human_attribute_name('parent') } let(:name) { Project.human_attribute_name('parent') }
# Required is different when the add_project permisison is lacking # Required is different when the add_project permission is lacking
let(:required) { true } let(:required) { true }
let(:writable) { true } let(:writable) { true }
let(:location) { '_links' } let(:location) { '_links' }

@ -138,7 +138,7 @@ describe 'OpenProject child pages macro' do
it { is_expected.not_to match(current_page.title) } it { is_expected.not_to match(current_page.title) }
it { is_expected.to match(middle_page.title) } it { is_expected.to match(middle_page.title) }
it { is_expected.to match(leaf_page.title) } it { is_expected.to match(leaf_page.title) }
# Check accessability # Check accessibility
it { is_expected.to include('hidden-for-sighted', 'tabindex', 'Expanded. Click to collapse') } it { is_expected.to include('hidden-for-sighted', 'tabindex', 'Expanded. Click to collapse') }
end end

@ -59,7 +59,7 @@ describe CustomActions::Actions::Notify, type: :model do
describe '#apply' do describe '#apply' do
let(:work_package) { build_stubbed(:work_package) } let(:work_package) { build_stubbed(:work_package) }
it 'adds a note with all values distinguised by type' do it 'adds a note with all values distinguished by type' do
principals = [build_stubbed(:user), principals = [build_stubbed(:user),
build_stubbed(:group), build_stubbed(:group),
build_stubbed(:user)] build_stubbed(:user)]

@ -1198,7 +1198,7 @@ describe MailHandler, type: :model do
it 'updates a work package with attachment' do it 'updates a work package with attachment' do
allow(WorkPackage).to receive(:find_by).with(id: 123).and_return(work_package) allow(WorkPackage).to receive(:find_by).with(id: 123).and_return(work_package)
# Mail with two attachemnts, one of which is skipped by signature.asc filename match # Mail with two attachments, one of which is skipped by signature.asc filename match
submit_email 'update_ticket_with_attachment_and_sig.eml', issue: { project: 'onlinestore' } submit_email 'update_ticket_with_attachment_and_sig.eml', issue: { project: 'onlinestore' }
work_package.reload work_package.reload

Loading…
Cancel
Save