diff --git a/.github/workflows/codeql-scan-core.yml b/.github/workflows/codeql-scan-core.yml index 851878a55db2..39af5c08b057 100644 --- a/.github/workflows/codeql-scan-core.yml +++ b/.github/workflows/codeql-scan-core.yml @@ -1,35 +1,43 @@ name: codeql on: + push: + branches: [ "dev", "release/*", "stable/*" ] pull_request: - branches: - - dev - - release/* + branches: [ "dev", "release/*", "stable/*" ] schedule: - - cron: '55 5 * * 1-5' + - cron: '32 1 * * 2' jobs: analyze: name: Analyze - runs-on: ubuntu-latest + runs-on: 'ubuntu-latest' + timeout-minutes: 120 permissions: + # required for all workflows + security-events: write + + # only required for workflows in private repositories actions: read contents: read - security-events: write strategy: fail-fast: false matrix: - language: [ 'javascript', 'ruby' ] + language: [ 'javascript-typescript', 'ruby' ] steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + queries: security-extended,security-and-quality - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 494934e0eb18..937c42cd3c66 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -10,8 +10,8 @@ on: - v* workflow_dispatch: inputs: - version: - description: "The version to release. Note that this happens by default on the tag push. Only run this action when something went wrong!" + tag: + description: "The tag to release. Note that this happens by default on the tag push. Only run this action when something went wrong!" required: true permissions: @@ -23,7 +23,7 @@ env: jobs: build: if: github.repository == 'opf/openproject' - runs-on: ubuntu-latest + runs-on: [ self-hosted, aws, ubuntu22, x64, 2XL ] strategy: matrix: include: @@ -33,17 +33,32 @@ jobs: target: slim - platform: linux/amd64 target: all-in-one + - platform: linux/ppc64le + bim_support: false + target: all-in-one - platform: linux/arm64/v8 bim_support: false target: all-in-one steps: + - name: Extract version + id: extract_version + run: | + if [[ ${{ github.event_name }} == 'push' ]]; then + TAG_REF=${GITHUB_REF#refs/tags/} + elif [[ ${{ github.event_name }} == 'workflow_dispatch' ]]; then + TAG_REF=${{ inputs.tag }} + fi + + VERSION=${TAG_REF#v} + echo "Version: $VERSION" + echo "::set-output name=version::$VERSION" - name: Checkout current release if: ${{ github.event_name == 'push' }} uses: actions/checkout@v3 - name: Checkout specific version if: ${{ github.event_name != 'push' }} with: - ref: ${{ inputs.version }} + ref: ${{ inputs.tag }} uses: actions/checkout@v3 - name: Prepare docker files run: | @@ -62,6 +77,8 @@ jobs: id: meta uses: docker/metadata-action@v4 with: + tags: | + type=semver,pattern={{version}},value=${{ steps.extract_version.outputs.version }} images: | ${{ env.REGISTRY_IMAGE }} - name: Build image @@ -142,13 +159,17 @@ jobs: uses: docker/metadata-action@v4 with: images: ${{ env.REGISTRY_IMAGE }} + labels: | + io.artifacthub.package.readme-url="https://www.openproject.org/docs/installation-and-operations/installation/docker/" + org.opencontainers.image.documentation="https://www.openproject.org/docs/" + org.opencontainers.image.vendor="OpenProject GmbH" flavor: | latest=false suffix=${{ steps.set_suffix.outputs.suffix }} tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} + type=semver,pattern={{version}},value=${{ steps.extract_version.outputs.version }} + type=semver,pattern={{major}}.{{minor}},value=${{ steps.extract_version.outputs.version }} + type=semver,pattern={{major}},value=${{ steps.extract_version.outputs.version }} type=raw,value=dev,priority=200,enable={{is_default_branch}} - name: Login to Docker Hub uses: docker/login-action@v2 diff --git a/README.md b/README.md index 0f9a689fbba0..539858a17d69 100644 --- a/README.md +++ b/README.md @@ -62,10 +62,6 @@ See [COPYRIGHT](COPYRIGHT) and [LICENSE](LICENSE) files for details. Thanks to Vincent Le Moign and his fabulous Minicons icons on [webalys.com](http://www.webalys.com/minicons/icons-free-pack.php). -### Lato Font - -Thanks to Łukasz Dziedzic (aka "tyPoland") for his 'Lato' font. - ### OpenProject icon font Published and created by the OpenProject Foundation (OPF) under [Creative Commons Attribution 3.0 Unported License](http://creativecommons.org/licenses/by/3.0/) with icons from the following sources diff --git a/app/controllers/work_packages/bulk_controller.rb b/app/controllers/work_packages/bulk_controller.rb index 4bf0a689fd5c..b0495d346c58 100644 --- a/app/controllers/work_packages/bulk_controller.rb +++ b/app/controllers/work_packages/bulk_controller.rb @@ -85,9 +85,13 @@ def destroy def setup_edit @available_statuses = @projects.map { |p| Workflow.available_statuses(p) }.inject(&:&) - @custom_fields = @projects.map(&:all_work_package_custom_fields).inject(&:&) @assignables = @responsibles = Principal.possible_assignee(@projects) @types = @projects.map(&:types).inject(&:&) + + # Display only the custom fields that are enabled on the projects and on types too. + @custom_fields = + @projects.map(&:all_work_package_custom_fields).inject(&:&) & + WorkPackageCustomField.joins(:types).where(types: @types) end def destroy_work_packages(work_packages) diff --git a/app/models/queries/operators/concerns/contains_all_values.rb b/app/models/queries/operators/concerns/contains_all_values.rb index 0fe722085fbd..78a2b1cf28c1 100644 --- a/app/models/queries/operators/concerns/contains_all_values.rb +++ b/app/models/queries/operators/concerns/contains_all_values.rb @@ -35,7 +35,7 @@ def sql_for_field(values, db_table, db_field) values .first .split(/\s+/) - .map { |substr| "#{db_table}.#{db_field} ILIKE '%#{connection.quote_string(substr)}%'" } + .map { |token| "#{db_table}.#{db_field} ILIKE '%#{OpenProject::SqlSanitization.quoted_sanitized_sql_like(token)}%'" } .join(' AND ') end end diff --git a/app/models/work_package/pdf_export/markdown.rb b/app/models/work_package/pdf_export/markdown.rb index 19f573f25080..7cea0021c56c 100644 --- a/app/models/work_package/pdf_export/markdown.rb +++ b/app/models/work_package/pdf_export/markdown.rb @@ -91,7 +91,7 @@ def handle_unknown_html_tag(_tag, _node, opts) end def warn(text, element, node) - Rails.logger.warn "PDF-Export: #{text}\nGot #{element} at #{node.sourcepos.inspect}\n\n" + Rails.logger.warn "PDF-Export: #{text}\nGot #{element} at #{node.source_position.inspect}\n\n" end end diff --git a/app/services/copy/dependency.rb b/app/services/copy/dependency.rb index b92350ef7091..9076775914ef 100644 --- a/app/services/copy/dependency.rb +++ b/app/services/copy/dependency.rb @@ -84,6 +84,8 @@ def perform(params:) copy_dependency(params:) rescue StandardError => e Rails.logger.error { "Failed to copy dependency #{self.class.identifier}: #{e.message}" } + ::OpenProject.logger.error e + result.success = false result.errors.add(:base, :could_not_be_copied, dependency: self.class.human_name) end diff --git a/app/services/users/login_service.rb b/app/services/users/login_service.rb index ac41c18ec662..cf2384453070 100644 --- a/app/services/users/login_service.rb +++ b/app/services/users/login_service.rb @@ -48,9 +48,9 @@ def call! User.current = user set_autologin_cookie if autologin_requested - - successful_login end + + successful_login end private diff --git a/app/services/work_packages/set_attributes_service.rb b/app/services/work_packages/set_attributes_service.rb index aff89c852f0e..aef4758227ba 100644 --- a/app/services/work_packages/set_attributes_service.rb +++ b/app/services/work_packages/set_attributes_service.rb @@ -313,6 +313,8 @@ def reassign_type return if available_types.include?(work_package.type) && work_package.type work_package.type = available_types.first + update_duration + unify_milestone_dates reassign_status assignable_statuses end diff --git a/app/services/work_packages/shared/update_ancestors.rb b/app/services/work_packages/shared/update_ancestors.rb index 21d11eff700f..5d673b7a2b54 100644 --- a/app/services/work_packages/shared/update_ancestors.rb +++ b/app/services/work_packages/shared/update_ancestors.rb @@ -51,8 +51,13 @@ def update_ancestors_all_attributes(work_packages) end def update_each_ancestor(work_packages, changes) - work_packages.map do |wp| - inherit_to_ancestors(wp, changes) + updated_work_package_ids = Set.new + work_packages.filter_map do |wp| + next if updated_work_package_ids.include?(wp.id) + + result = inherit_to_ancestors(wp, changes) + updated_work_package_ids = updated_work_package_ids.merge(result.all_results.map(&:id)) + result end end diff --git a/app/views/versions/_overview.html.erb b/app/views/versions/_overview.html.erb index db32deeac1bd..effd5ca9b5d0 100644 --- a/app/views/versions/_overview.html.erb +++ b/app/views/versions/_overview.html.erb @@ -54,7 +54,9 @@ See COPYRIGHT and LICENSE files for more details. <% end %> <% if version.work_packages.count > 0 %> - <%= progress_bar([version.closed_percent, version.completed_percent], width: '40%', legend: ('%0.0f' % version.completed_percent)) %> + <% closed = version.closed_percent %> + <% done = version.completed_percent - closed %> + <%= progress_bar([closed, done], width: '40%', legend: ('%0.0f' % version.completed_percent)) %>

<%= link_to_if(version.closed_issues_count > 0, t(:label_x_closed_work_packages_abbr, count: version.closed_issues_count), diff --git a/config/locales/crowdin/cs.seeders.yml b/config/locales/crowdin/cs.seeders.yml index 3c0b712c76af..9c592ac25f0f 100644 --- a/config/locales/crowdin/cs.seeders.yml +++ b/config/locales/crowdin/cs.seeders.yml @@ -45,7 +45,7 @@ cs: item_0: name: Editor pracovních balíčků item_1: - name: Work package commenter + name: Komentář pracovního balíčku item_2: name: Prohlížeč pracovních balíčků project_roles: @@ -132,32 +132,32 @@ cs: welcome: title: Vítejte v OpenProject! text: | - OpenProject is the leading open source project management software. It supports classic, agile as well as hybrid project management and gives you full control over your data. + OpenProject je hlavní open source software pro správu projektů. Podporuje klasické, agilní i hybridní řízení projektů a dává vám plnou kontrolu nad vašimi daty. - Core features and use cases: + Základní funkce a použití případů: - * [Project Portfolio Management](https://www.openproject.org/collaboration-software-features/project-portfolio-management/) - * [Project Planning and Scheduling](https://www.openproject.org/collaboration-software-features/project-planning-scheduling/) - * [Task Management and Issue Tracking](https://www.openproject.org/collaboration-software-features/task-management/) - * [Agile Boards (Scrum and Kanban)](https://www.openproject.org/collaboration-software-features/agile-project-management/) + * [Project Portfolio Management](https://www.openproject. rg/collaboration-software-features/project-portfolio-management/) + * [Plánování projektů a plánování](https://www.openproject.org/collaboration-software-features/project-planning-scheduling/) + * [Správa úloh a sledování problémů](https://www.openproject.org/collaboration-software-features/task-management/) + * [Agile Boards (Scrum and Kanban)](https://www. penproject.org/collaboration-software-features/agile-project-management/) * [Requirements Management and Release Planning](https://www.openproject.org/collaboration-software-features/product-development/) - * [Time and Cost Tracking, Budgets](https://www.openproject.org/collaboration-software-features/time-tracking/) - * [Team Collaboration and Documentation](https://www.openproject.org/collaboration-software-features/team-collaboration/) + * [Time and Cost Tracking, Budgets](https://www.openproject. rg/collaboration-software-features/time-tracking/) + * [Team Collaboration and Documentation](https://www.openproject. rg/collaboration-software-features/tým-collaboration/) - Welcome to the future of project management. + Vítejte v budoucnosti řízení projektu. - For Admins: You can change this welcome text [here]({{opSetting:base_url}}/admin/settings/general). + Pro administrátory: Můžete změnit uvítací text [here]({{opSetting:base_url}}/admin/settings/general). projects: demo-project: name: Demo projekt - status_explanation: All tasks are on schedule. The people involved know their tasks. The system is completely set up. - description: This is a short summary of the goals of this demo project. + status_explanation: Všechny úkoly probíhají podle harmonogramu. Zúčastněné osoby znají své úkoly. Systém je kompletně nastaven. + description: Toto je krátké shrnutí cílů tohoto demo projektu. news: item_0: title: Vítejte ve vašem demo projektu summary: | - We are glad you joined. - In this module you can communicate project news to your team members. + Jsme rádi, že jste se připojili. + V tomto modulu můžete sdělit zprávy o projektu členům vašeho týmu. description: Aktuální novinky categories: item_0: Kategorie 1 (bude změněno v nastavení projektu) @@ -179,7 +179,7 @@ cs: item_0: name: Seznam přání item_1: - name: Short list + name: Krátký seznam item_2: name: Seznam priorit pro dnešek item_3: @@ -195,21 +195,7 @@ cs: options: name: Začínáme text: | - We are glad you joined! We suggest to try a few things to get started in OpenProject. - - Discover the most important features with our [Guided Tour]({{opSetting:base_url}}/projects/demo-project/work_packages/?start_onboarding_tour=true). - - _Try the following steps:_ - - 1. *Invite new members to your project*: → Go to [Members]({{opSetting:base_url}}/projects/demo-project/members) in the project navigation. - 2. *View the work in your project*: → Go to [Work packages]({{opSetting:base_url}}/projects/demo-project/work_packages) in the project navigation. - 3. *Create a new work package*: → Go to [Work packages → Create]({{opSetting:base_url}}/projects/demo-project/work_packages/new). - 4. *Create and update a project plan*: → Go to [Project plan]({{opSetting:base_url}}/projects/demo-project/work_packages?query_id=##query.id:demo_project__query__project_plan) in the project navigation. - 5. *Activate further modules*: → Go to [Project settings → Modules]({{opSetting:base_url}}/projects/demo-project/settings/modules). - 6. *Complete your tasks in the project*: → Go to [Work packages → Tasks]({{opSetting:base_url}}/projects/demo-project/work_packages/details/##wp.id:set_date_and_location_of_conference/overview?query_id=##query.id:demo_project__query__tasks). - Here you will find our [User Guides](https://www.openproject.org/docs/user-guide/). - Please let us know if you have any questions or need support. Contact us: [support[at]openproject.com](mailto:support@openproject.com). item_5: options: name: Pracovní balíčky @@ -220,7 +206,7 @@ cs: item_0: subject: Zahájení projektu item_1: - subject: Organize open source conference + subject: Spravovat open source konferenci children: item_0: subject: Nastavit datum a místo konference @@ -228,9 +214,9 @@ cs: item_0: subject: Poslat pozvánku řečníkům item_1: - subject: Contact sponsoring partners + subject: Kontaktovat sponzorské partnery item_2: - subject: Create sponsorship brochure and hand-outs + subject: Vytvořte sponzorskou brožuru a podklady item_1: subject: Pozvat účastníky konference item_2: @@ -243,24 +229,24 @@ cs: item_0: subject: Nahrát prezentace na webové stránky item_1: - subject: Party for conference supporters :-) + subject: Party pro podporovatele konferencí :-) description: |- - * [ ] Beer - * [ ] Snacks - * [ ] Music - * [ ] Even more beer + * [ ] Pivo + * [ ] Pivo + * [ ] Hudba + * [ ] Ještě více piva item_4: subject: Ukončení projektu scrum-project: name: Projekt Scrum - status_explanation: All tasks are on schedule. The people involved know their tasks. The system is completely set up. - description: This is a short summary of the goals of this demo Scrum project. + status_explanation: Všechny úkoly a dílčí projekty probíhají podle harmonogramu. Zúčastněné osoby znají své úkoly. Systém je kompletně nastaven. + description: Toto je krátké shrnutí cílů tohoto demo Scrum projektu. news: item_0: title: Vítejte ve vašem Scrum demo projektu summary: | - We are glad you joined. - In this module you can communicate project news to your team members. + Jsme rádi, že jste se připojili. + V tomto modulu můžete sdělit zprávy o projektu členům vašeho týmu. versions: item_0: name: Bug Backlog @@ -331,14 +317,14 @@ cs: name: Úkoly boards: kanban: - name: Kanban board + name: Kanban tabule basic: name: Tabule úkolů lists: item_0: name: Seznam přání item_1: - name: Short list + name: Krátký seznam item_2: name: Seznam priorit pro dnešek item_3: @@ -424,48 +410,5 @@ cs: item_16: subject: Vydání v2.0 wiki: | - ### Sprint planning meeting - - _Please document here topics to the Sprint planning meeting_ - - * Time boxed (8 h) - * Input: Product Backlog - * Output: Sprint Backlog - - * Divided into two additional time boxes of 4 h: - - * The Product Owner presents the [Product Backlog]({{opSetting:base_url}}/projects/your-scrum-project/backlogs) and the priorities to the team and explains the Sprint Goal, to which the team must agree. Together, they prioritize the topics from the Product Backlog which the team will take care of in the next sprint. The team commits to the discussed delivery. - * The team plans autonomously (without the Product Owner) in detail and breaks down the tasks from the discussed requirements to consolidate a [Sprint Backlog]({{opSetting:base_url}}/projects/your-scrum-project/backlogs). - - - ### Daily Scrum meeting - - _Please document here topics to the Daily Scrum meeting_ - - * Short, daily status meeting of the team. - * Time boxed (max. 15 min). - * Stand-up meeting to discuss the following topics from the Task board. - * What do I plan to do until the next Daily Scrum? - * What has blocked my work (Impediments)? - * Scrum Master moderates and notes down Sprint Impediments. - * Product Owner may participate may participate in order to stay informed. - - ### Sprint Review meeting - - _Please document here topics to the Sprint Review meeting_ - - * Time boxed (4 h). - * A maximum of one hour of preparation time per person. - * The team shows the product owner and other interested persons what has been achieved in this sprint. - * Important: no dummies and no PowerPoint! Just finished product functionality (Increments) should be demonstrated. - * Feedback from Product Owner, stakeholders and others is desired and will be included in further work. - * Based on the demonstrated functionalities, the Product Owner decides to go live with this increment or to develop it further. This possibility allows an early ROI. - - - ### Sprint Retrospective - _Please document here topics to the Sprint Retrospective meeting_ - * Time boxed (3 h). - * After Sprint Review, will be moderated by Scrum Master. - * The team discusses the sprint: what went well, what needs to be improved to be more productive for the next sprint or even have more fun. diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 8cb8a820e3b4..c576e818848b 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -65,14 +65,14 @@ cs: theme_warning: Změna motivu přepíše váš vlastní styl. Vzhled pak bude ztracen. Jste si jisti, že chcete pokračovat? enterprise: upgrade_to_ee: "Upgradovat na Enterprise Edici" - add_token: "Upload an Enterprise edition support token" + add_token: "Nahrát podpůrný token Enterprise Edition" delete_token_modal: - text: "Are you sure you want to remove the current Enterprise edition token used?" + text: "Jste si jisti, že chcete odstranit použitý aktuální token verze Enterprise?" title: "Odstranit Token" replace_token: "Nahradit aktuální podpůrný token" order: "Objednat Enterprise Edici" - paste: "Paste your Enterprise edition support token" - required_for_feature: "This add-on is only available with an active Enterprise edition support token." + paste: "Vložte svůj podpůrný token Enterprise Edition" + required_for_feature: "Tato funkce je dostupná pouze s aktivním podpůrným tokenem pro Enterprise Edition." enterprise_link: "Pro více informací klikněte zde." start_trial: "Začít zkušební verzi" book_now: "Rezervujte nyní" @@ -202,20 +202,20 @@ cs: reorder_alphabetical: "Změnit pořadí abecedně" reorder_confirmation: "Varování: Aktuální pořadí dostupných hodnot bude ztraceno. Pokračovat?" instructions: - is_required: "Mark the custom field as required. This will make it mandatory to fill in the field when creating new or updating existing resources." - is_for_all: "Mark the custom field as available in all existing and new projects." - searchable: "Include the field values when using the global search functionality." - editable: "Allow the field to be editable by users themselves." - visible: "Make field visible for all users (non-admins) in the project overview and displayed in the project details widget on the Project Overview." + is_required: "Označit vlastní pole jako povinné. Bude povinné vyplnit pole při vytváření nových nebo aktualizaci existujících zdrojů." + is_for_all: "Označit vlastní pole jako dostupné ve všech existujících a nových projektech." + searchable: "Zahrnout hodnoty polí při použití globální funkce vyhledávání." + editable: "Umožnit editaci pole samotnými uživateli." + visible: "Zviditelnit pole pro všechny uživatele (neadminy) v přehledu projektu a zobrazit ve widgetu podrobností projektu v přehledu projektu." is_filter: > - Allow the custom field to be used in a filter in work package views. Note that only with 'For all projects' selected, the custom field will show up in global views. + Povolit použití vlastního pole ve filtru v zobrazení pracovního balíčku. Všimněte si, že pouze s vybraným 'pro všechny projekty' se vlastní pole zobrazí v globálních zobrazeních. tab: no_results_title_text: V současné době nejsou žádná vlastní pole. no_results_content_text: Vytvořit nové vlastní pole concatenation: single: "nebo" global_search: - placeholder: "Search in %{app_title}" + placeholder: "Hledat v %{app_title}" overwritten_tabs: wiki_pages: "Wiki" messages: "Fórum" @@ -281,17 +281,17 @@ cs: no_results_content_text: Přidání člena do projektu invite_by_mail: "Poslat pozvánku do %{mail}" send_invite_to: "Odeslat pozvánky" - no_modify_on_shared: "You currently cannot modify or remove shared memberships through the member page. Use the sharing modal instead." + no_modify_on_shared: "Momentálně nemůžete měnit nebo odebrat sdílená členství přes stránku člena. Používejte místo toho modal sdílení." columns: - shared: "Shared" + shared: "Sdílené" filters: - all_shares: 'All shares' + all_shares: 'Všechny akcie' menu: all: 'Vše' invited: 'Pozvané' locked: 'Uzamčeno' project_roles: 'Projektové role' - wp_shares: 'Work package shares' + wp_shares: 'Sdílení pracovních balíčků' groups: 'Skupiny' my: access_token: @@ -373,7 +373,7 @@ cs: settings: "Nastavení" form_configuration: "Konfigurace formuláře" more_info_text_html: > - Enterprise edition allows you to customize form configuration with these additional add-ons:

+ Enterprise Edice umožňuje přizpůsobit konfiguraci formuláře s těmito dalšími funkcemi:
projects: "Projekty" enabled_projects: "Povolit projekty" edit_query: "Upravit tabulku" @@ -721,7 +721,7 @@ cs: ldap_auth_source: attributes: tls_certificate_string: - invalid_certificate: "The provided SSL certificate is invalid: %{additional_message}" + invalid_certificate: "Zadaný certifikát SSL je neplatný: %{additional_message}" format: "%{message}" attachment: attributes: @@ -752,7 +752,7 @@ cs: fragment_present: "nemůže obsahovat fragment." invalid_uri: "musí být platná URI." relative_uri: "musí být absolutní URI." - secured_uri: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost.' + secured_uri: 'neposkytuje "bezpečný kontext". Buď použijte HTTPS nebo adresu pro smyčku, jako je localhost.' forbidden_uri: "je zakázán serverem." scopes: not_match_configured: "neodpovídá dostupným rozsahům." @@ -791,7 +791,7 @@ cs: id_filter_required: "Je vyžadován filtr 'id'." project: archived_ancestor: "Projekt má archivovaného předka." - foreign_wps_reference_version: "Work packages in non descendant projects reference versions of the project or its descendants." + foreign_wps_reference_version: "Pracovní balíčky v projektech, které nejsou potomky, odkazují na verze projektu nebo jeho potomků." attributes: base: archive_permission_missing_on_subprojects: "Nemáte dostatečná oprávnění k archivaci všech podprojektů. Obraťte se na správce." @@ -851,8 +851,8 @@ cs: setting: attributes: base: - working_days_are_missing: "At least one day of the week must be defined as a working day." - previous_working_day_changes_unprocessed: "The previous changes to the working days configuration have not been applied yet." + working_days_are_missing: "Nejméně jeden den v týdnu musí být definován jako pracovní den." + previous_working_day_changes_unprocessed: "Předchozí změny nastavení pracovních dnů ještě nebyly použity." time_entry: attributes: hours: @@ -924,7 +924,7 @@ cs: attributes: base: user_limit_reached: "Byl dosažen limit uživatelů. V aktuálním plánu nelze vytvořit žádné další účty." - one_must_be_active: "Admin User cannot be locked/removed. At least one admin must be active." + one_must_be_active: "Admin uživatel nemůže být uzamčen/odstraněn. Alespoň jeden administrátor musí být aktivní." password_confirmation: confirmation: "Hesla se neshodují!" format: "%{message}" @@ -976,7 +976,7 @@ cs: custom_field: "Vlastní pole" "doorkeeper/application": "OAuth aplikace" forum: "Fórum" - global_role: "Global role" + global_role: "Globální role" group: "Skupina" member: "Člen" news: "Novinky" @@ -1009,20 +1009,20 @@ cs: other: "Nastaly prolémy v následujících polích:" header_additional_invalid_fields: one: "Navíc došlo k potížím s následujícím polem:" - few: "Additionally, there were problems with the following fields:" - many: "Additionally, there were problems with the following fields:" - other: "Additionally, there were problems with the following fields:" + few: "Navíc došlo k potížím s následujícím polem:" + many: "Navíc došlo k potížím s následujícím polem:" + other: "Navíc došlo k potížím s následujícím polem:" field_erroneous_label: "Toto pole je neplatné: %{full_errors}\nProsím zadejte platnou hodnotu." activity: item: created_by_on: "vytvořil %{user} dne %{datetime}" - created_by_on_time_entry: "time logged by %{user} on %{datetime}" + created_by_on_time_entry: "čas zaznamenán %{user} na %{datetime}" created_on: "vytvořeno dne %{datetime}" - created_on_time_entry: "time logged on %{datetime}" + created_on_time_entry: "čas zaznamenán na %{datetime}" updated_by_on: "Aktualizováno uživatelem %{user} dne %{datetime}" updated_by_on_time_entry: "logged time updated by %{user} on %{datetime}" updated_on: "aktualizováno dne %{datetime}" - updated_on_time_entry: "logged time updated on %{datetime}" + updated_on_time_entry: "zaznamenaný čas aktualizován na %{datetime}" parent_without_of: "Podprojekt" parent_no_longer: "Již není podprojekt projektu" time_entry: @@ -1035,7 +1035,7 @@ cs: one: "%{count} hodina" few: "%{count} hodiny" many: "%{count} hodiny" - other: "%{count} hours" + other: "%{count} hodiny" updated: "změněno z %{old_value} na %{value}" logged_for: "Přihlášen " filter: @@ -1068,7 +1068,7 @@ cs: default_columns: "Výchozí sloupce" description: "Popis" derived_due_date: "Derivované Datum ukončení " - derived_estimated_hours: "Derived work" + derived_estimated_hours: "Odvozená práce" derived_start_date: "Derivované Datum zahájení " display_sums: "Zobrazit součty" due_date: "Datum dokončení" @@ -1120,7 +1120,7 @@ cs: heading_reset: "Resetovat záložní token" heading_create: "Vytvořit záložní token" implications: > - Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. + Povolení záloh umožní každému uživateli s požadovaným oprávněním a tímto záložním tokenem stáhnout zálohu obsahující všechna data této OpenProject instalace. To zahrnuje údaje všech ostatních uživatelů. info: > Budete muset vygenerovat token zálohy, abyste mohli vytvořit zálohu. Pokaždé, když chcete požádat o zálohu, budete muset tento token poskytnout. Pro zakázání záloh tomuto uživateli můžete odstranit token zálohy verification: > @@ -1339,10 +1339,10 @@ cs: many: "%{count} minut" other: "%{count} minut" x_minutes_abbreviated: - one: "1 min" - few: "%{count} mins" - many: "%{count} mins" - other: "min" + one: "1 minuta" + few: "%{count} minut" + many: "%{count} minut" + other: "%{count} minut" x_hours: one: "1 hodina" few: "%{count} hodin" @@ -1354,10 +1354,10 @@ cs: many: "" other: "" x_weeks: - one: "1 week" - few: "%{count} weeks" - many: "%{count} weeks" - other: "%{count} weeks" + one: "1 týden" + few: "%{count} týdnů" + many: "%{count} týdnů" + other: "%{count} týdnů" x_months: one: "1 měsíc" few: "%{count} měsíců" @@ -1365,9 +1365,9 @@ cs: other: "%{count} měsíců" x_years: one: "1 rok" - few: "%{count} years" - many: "%{count} years" - other: "%{count} years" + few: "%{count} roků" + many: "%{count} roků" + other: "%{count} roků" x_seconds: one: "1 sekunda" few: "%{count} sekund" @@ -1422,7 +1422,7 @@ cs: add_groups: "Přidat nové skupiny atributů" rename_groups: "Přejmenovat skupiny atributů" project_filters: - description_html: "Filtering and sorting on custom fields is an Enterprise edition add-on." + description_html: "Filtrování a třídění na vlastních polích je doplněk edice Enterprise." enumeration_activities: "Sledování času" enumeration_work_package_priorities: "Priority pracovního balíčku" enumeration_reported_project_statuses: "Nahlášený stav projektu" @@ -1430,8 +1430,8 @@ cs: error_can_not_archive_project: "Tento projekt nelze archivovat: %{errors}" error_can_not_delete_entry: "Nelze odstranit položku" error_can_not_delete_custom_field: "Nelze odstranit vlastní pole" - error_can_not_delete_in_use_archived_undisclosed: "There are also work packages in archived projects. You need to ask an administrator to perform the deletion to see which projects are affected." - error_can_not_delete_in_use_archived_work_packages: "There are also work packages in archived projects. You need to reactivate the following projects first, before you can change the attribute of the respective work packages: %{archived_projects_urls}" + error_can_not_delete_in_use_archived_undisclosed: "V archivovaných projektech jsou obsaženy také pracovní balíčky. Musíte požádat správce, aby provedl smazání, aby zjistil, které projekty jsou dotčeny." + error_can_not_delete_in_use_archived_work_packages: "V archivovaných projektech jsou také pracovní balíčky. Nejprve musíte projekty znovu aktivovat, než budete moci změnit typ příslušných pracovních balíčků: %{archived_projects}" error_can_not_delete_type: explanation: 'Tento typ obsahuje pracovní balíčky a nelze je odstranit. Všechny dotčené pracovní balíčky můžete vidět v tomto zobrazení.' error_can_not_delete_standard_type: "Standartní typy se nedají odstranit." @@ -1455,7 +1455,7 @@ cs: error_pdf_export_too_many_columns: "Příliš mnoho sloupců vybraných pro PDF export. Snižte počet sloupců." error_pdf_failed_to_export: "PDF export nelze uložit: %{error}" error_token_authenticity: "Nelze ověřit token Cross-Site Request Forgy. Pokusili jste se odeslat data na více prohlížečích nebo kartách? Prosím zavřete všechny panely a zkuste to znovu." - error_work_package_done_ratios_not_updated: "Work package % Complete values not updated." + error_work_package_done_ratios_not_updated: "Pracovní balíček % Dokončené hodnoty nebyly aktualizovány." error_work_package_not_found_in_project: "Pracovný balíček nebyl nalezen, nebo nepatří k tomuto projektu" error_must_be_project_member: "musí být členem projektu" error_migrations_are_pending: "Vaše instalace OpenProject čeká na migraci databáze. Pravděpodobně jste při poslední aktualizaci zmeškali migrace. Pro správnou aktualizaci vaší instalace prosím zkontrolujte průvodce aktualizací." @@ -1562,12 +1562,12 @@ cs: system_update: "Aktualizace systému OpenProject:" cause_descriptions: work_package_predecessor_changed_times: podle změn na předchůdce %{link} - work_package_parent_changed_times: by changes to parent %{link} - work_package_children_changed_times: by changes to child %{link} - work_package_related_changed_times: by changes to related %{link} - unaccessable_work_package_changed: by changes to a related work package + work_package_parent_changed_times: podle změn na nadřazený %{link} + work_package_children_changed_times: podle změn na potomka %{link} + work_package_related_changed_times: podle změn na související %{link} + unaccessable_work_package_changed: prostřednictvím změn souvisejícího pracovního balíčku working_days_changed: - changed: "by changes to working days (%{changes})" + changed: "podle změn na pracovní dny (%{changes})" days: working: "%{day} je pracovní " non_working: "%{day} je nepracovní " @@ -1576,7 +1576,7 @@ cs: non_working: "%{date} je nepracovní " system_update: file_links_journal: > - From now on, activity related to file links (files stored in external storages) will appear here in the Activity tab. The following represent activity concerning links that already existed: + Od této chvíle se zde v záložce Aktivita zobrazí činnost související s odkazy na soubory (soubory uložené v externím úložišti). Níže uvedené představují činnost týkající se již existujících: links: configuration_guide: "Konfigurační manuál" get_in_touch: "Máte otázky? Spojte se s námi." @@ -1614,7 +1614,7 @@ cs: empty_text_hint: "To add an iCalendar token, subscribe to a new or existing calendar from within the Calendar module of a project. You must have the necessary permissions." oauth: title: "OAuth" - text_hint: "OAuth tokens allow third-party applications to connect with this OpenProject instance." + text_hint: "OAuth tokeny umožňují aplikacím třetích stran spojení s touto instancí OpenProjekt." empty_text_hint: "There is no third-party application access configured and active for you. Please contact your administrator to activate this feature." rss: title: "RSS" @@ -1624,10 +1624,10 @@ cs: storages: title: "Úložiště souborů" text_hint: "File Storage tokens connect this OpenProject instance with an external File Storage." - empty_text_hint: "There is no storage access linked to your account." - revoke_token: "Do you really want to remove this token? You will need to login again on %{storage}" - removed: "File Storage token successfully removed" - failed: "An error occurred and the token couldn't be removed. Please try again later." + empty_text_hint: "K vašemu účtu není připojen žádný přístup k úložišti." + revoke_token: "Opravdu chcete odstranit tento token? Budete se muset znovu přihlásit na %{storage}" + removed: "Token Úložiště souborů byl úspěšně odstraněn" + failed: "Došlo k chybě a token nemohl být odstraněn. Opakujte akci později." notifications: send_notifications: "Pro tuto akci odeslat notifikaci" work_packages: @@ -1683,7 +1683,7 @@ cs: label_ical_access_key_type: "iCalendar" label_ical_access_key_description: 'iCalendar token "%{token_name}" for "%{calendar_name}" in "%{project_name}"' label_ical_access_key_not_present: "toket iCalendar není přítomen." - label_ical_access_key_generation_hint: "Automatically generated when subscribing to a calendar." + label_ical_access_key_generation_hint: "Automaticky vygenerováno při odebírání kalendáře." label_ical_access_key_latest: "poslední" label_ical_access_key_revoke: "Revoke" label_applied_status: "Přiřazený stav" @@ -1701,7 +1701,7 @@ cs: label_ldap_auth_source: "Připojení LDAP" label_ldap_auth_source_plural: "Připojení LDAP" label_authentication: "Ověření" - label_available_global_roles: "Available global roles" + label_available_global_roles: "Dostupné globální role" label_available_project_forums: "Dostupná fóra" label_available_project_repositories: "Dostupné repozitáře" label_available_project_versions: "Dostupné verze" @@ -1768,7 +1768,7 @@ cs: label_copy_workflow_from: "Kopírovat pracovní postup z" label_copy_project: "Kopírovat projekt" label_core_version: "Verze jádra" - label_core_build: "Core build" + label_core_build: "Build jádra" label_current_status: "Aktuální stav" label_current_version: "Aktuální verze" label_custom_field_add_no_type: "Přidat toto pole k typu pracovního balíčku" @@ -1824,7 +1824,7 @@ cs: label_enterprise_active_users: "%{current}/%{limit} rezervováno aktivních uživatelů" label_enterprise_edition: "Enterprise Edice" label_enterprise_support: "Podpora pro Enterprise edici" - label_enterprise_addon: "Enterprise add-on" + label_enterprise_addon: "Doplňky Enterprise Edice" label_environment: "Prostředí" label_estimates_and_time: "Odhady a čas" label_equals: "je" @@ -1869,7 +1869,7 @@ cs: label_hierarchy_leaf: "Úroveň hierarchie" label_home: "Domů" label_subject_or_id: "Předmět nebo ID" - label_calendar_subscriptions: "Calendar subscriptions" + label_calendar_subscriptions: "Předplatné kalendáře" label_impressum: "Právní oznámení" label_in: "v" label_in_less_than: "za méně než" @@ -2135,7 +2135,7 @@ cs: label_type_new: "Nový typ" label_type_plural: "Typy" label_ui: "Uživatelské rozhraní" - label_update_work_package_done_ratios: "Update work package % Complete values" + label_update_work_package_done_ratios: "Aktualizovat hodnoty % Průběh pracovního balíčku " label_updated_time: "Aktualizováno před %{value}" label_updated_time_at: "%{author} %{age}" label_updated_time_by: "Aktualizováno uživatelem %{author} před %{age}" @@ -2221,9 +2221,9 @@ cs: other: "%{count} otevřených" zero: "0 otevřených" label_x_work_packages: - one: "1 work package" - other: "%{count} work packages" - zero: "No work packages" + one: "1 pracovní balíček" + other: " %{count} Pracovních balíčků" + zero: "Žádné pracovní balíčky" label_x_projects: one: "1 projekt" other: "%{count} projektů" @@ -2234,7 +2234,7 @@ cs: label_global_role: "Globální role" label_not_changeable: "(neměnitelné)" label_global: "Globální" - label_seeded_from_env_warning: This record has been created through a setting / environment variable. It is not editable through UI. + label_seeded_from_env_warning: Tento záznam byl vytvořen pomocí proměnné nastavení / prostředí. Není upravitelný prostřednictvím uživatelského rozhraní. macro_execution_error: "Chyba při provádění makra %{macro_name}" macro_unavailable: "Makro %{macro_name} nelze zobrazit." macros: @@ -2297,13 +2297,13 @@ cs: sharing: work_packages: allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." - create_account: "To access this work package, you will need to create and activate an account on %{instance}." + create_account: "Pro přístup k tomuto pracovnímu balíčku musíte vytvořit a aktivovat účet na %{instance}." open_work_package: "Otevřít pracovní balíček" - subject: "Work package #%{id} was shared with you" - enterprise_text: "Share work packages with users who are not members of the project." + subject: "Pracovní balíček #%{id} byl s vámi sdílen" + enterprise_text: "Sdílejte pracovní balíčky s uživateli, kteří nejsou členy projektu." summary: user: "%{user} s vámi sdílel pracovní balíček s právy %{role_rights}" - group: "%{user} shared a work package with the group %{group} you are a member of" + group: "%{user} sdílel pracovní balíček se skupinou %{group} které jste členem" mail_body_account_activation_request: "Nový uživatel (%{value}) byl zaregistrován. Účet čeká na Vaše schválení:" mail_body_account_information: "Informace o vašem účtu" mail_body_account_information_external: "Můžete použít váš %{value} účet pro přihlášení." @@ -2318,19 +2318,19 @@ cs: mail_body_incoming_email_error_logs: "Protokoly" mail_body_lost_password: "Pro změnu vašeho hesla klikněte na následující odkaz:" mail_password_change_not_possible: - title: "Password change not possible" - body: "Your account at %{app_title} is connected to an external authentication provider (%{name})." - subtext: "Passwords for external account cannot be changed in the application. Please use the lost password functionality of your authentication provider." + title: "Změna hesla není možná" + body: "Váš účet na %{app_title} je připojen k externímu poskytovateli ověřování (%{name})." + subtext: "Hesla pro externí účet nelze změnit v aplikaci. Použijte prosím ztracené heslo poskytovatele ověření." mail_body_register: "Vítejte v %{app_title}. Aktivujte svůj účet kliknutím na tento odkaz:" - mail_body_register_header_title: "E-mail pozvánka člena projektu" + mail_body_register_header_title: "Pozvánka do projektu OpenProject" mail_body_register_user: "Vážený %{name}," mail_body_register_links_html: | Prohlédněte si prosím náš YouTube kanál (%{youtube_link}), kde poskytneme webinář (%{webinar_link}) a videa "Začínáme" (%{get_started_link}), abychom učinili vaše první kroky v OpenProject co nejjednodušší.
Pokud máte nějaké další dotazy, podívejte se do dokumentace (%{documentation_link}) nebo kontaktujte svého správce. - mail_body_register_closing: "Váš OpenProject tým" - mail_body_register_ending: "Zůstaňte ve spojení! S pozdravem," + mail_body_register_closing: "Team OpenProject " + mail_body_register_ending: "S pozdravem," mail_body_reminder: "%{count} pracovních balíčků, které máte přiřazeny, mají termín během následujících %{days} dnů:" mail_body_group_reminder: '%{count} pracovních balíčků, které jsou přiřazeny ke skupině "%{group}", má termín splatnosti během následujících %{days} dnů:' mail_body_wiki_page_added: "Wiki stránka '%{id}' byla přidána uživatelem %{author}." @@ -2408,7 +2408,7 @@ cs: notice_file_not_found: "Stránka, kterou se snažíte získat přístup, neexistuje nebo byla odstraněna." notice_forced_logout: "Byli jste automaticky odhlášeni po %{ttl_time} minutách nečinnosti." notice_internal_server_error: "Nastala chyba na stránce, ke které se pokoušíte přistoupit. Pokud přetrváváte problémy, obraťte se na správce %{app_title}." - notice_work_package_done_ratios_updated: "% complete updated" + notice_work_package_done_ratios_updated: "% Průběh aktualizováno" notice_locking_conflict: "Informace mezitím aktualizoval alespoň jeden další uživatel." notice_locking_conflict_additional_information: "Aktualizace pocházely z %{users}." notice_locking_conflict_reload_page: "Prosím obnovte stránku, zkontrolujte změny a znovu aplikujte aktualizace." @@ -2440,7 +2440,7 @@ cs: present_access_key_value: "Váš %{key_name} je: %{value}" notice_automatic_set_of_standard_type: "Automaticky nastavit standardní typ." notice_logged_out: "Byli jste odhlášeni." - notice_wont_delete_auth_source: The LDAP connection cannot be deleted as long as there are still users using it. + notice_wont_delete_auth_source: Připojení LDAP nemůže být odstraněno, dokud ho stále používají uživatelé. notice_project_cannot_update_custom_fields: "Nemůžete aktualizovat dostupné vlastní pole projektu. Projekt je neplatný: %{errors}" notice_attachment_migration_wiki_page: > Tato stránka byla generována automaticky během aktualizace OpenProject. Obsahuje všechny přílohy dříve přidružené k %{container_type} "%{container_name}". @@ -2468,7 +2468,7 @@ cs: tb: "TB" onboarding: heading_getting_started: "Získejte přehled" - text_getting_started_description: "Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu." + text_getting_started_description: "Získejte rychlý přehled o řízení projektu a spolupráci týmu s OpenProject. Toto video můžete restartovat z nabídky nápovědy." welcome: "Vítejte v %{app_title}" select_language: "Vyberte prosím svůj jazyk" permission_add_work_package_notes: "Přidat poznámky" @@ -2476,7 +2476,7 @@ cs: permission_add_messages: "Odesílat zprávy" permission_add_project: "Vytvořit projekty" permission_add_work_package_attachments: "Přidat přílohy" - permission_add_work_package_attachments_explanation: "Allows adding attachments without Edit work packages permission" + permission_add_work_package_attachments_explanation: "Umožňuje přidávat přílohy bez oprávnění upravovat pracovní balíčky" permission_archive_project: "Archivovat projekt" permission_create_user: "Vytvořit uživatele" permission_manage_user: "Upravit uživatele" @@ -2486,8 +2486,8 @@ cs: permission_assign_versions: "Přiřadit verze" permission_browse_repository: "Přístup pouze pro čtení do repozitáře (procházet a pokladna)" permission_change_wiki_parent_page: "Změnit nadřazenou wiki stránku" - permission_change_work_package_status: "Change work package status" - permission_change_work_package_status_explanation: "Allows changing status without Edit work packages permission" + permission_change_work_package_status: "Změnit stav pracovního balíčku" + permission_change_work_package_status_explanation: "Umožňuje změnu stavu bez oprávnění upravovat pracovní balíčky" permission_comment_news: "Komentování novinek" permission_commit_access: "Čtěte/zapisovat přístup do repozitáře (commit)" permission_copy_projects: "Kopírovat projekty" @@ -2549,7 +2549,7 @@ cs: permission_view_news: "Zobrazit novinky" permission_view_members: "Zobrazit členy" permission_view_reportings: "Zobrazit přehledy" - permission_view_shared_work_packages: "View work package shares" + permission_view_shared_work_packages: "Zobrazit sdílení pracovních balíčků" permission_view_time_entries: "Zobrazit strávený čas" permission_view_timelines: "Zobrazit časové osy" permission_view_wiki_edits: "Zobrazit historii wiki" @@ -2558,15 +2558,15 @@ cs: permission_work_package_assigned_explanation: "Pracovní balíčky mohou být přiřazeny uživatelům a skupinám, které tuto roli vlastní v příslušném projektu" permission_view_project_activity: "Zobrazit aktivitu projektu" permission_save_bcf_queries: "Uložit dotazy BCF" - permission_manage_public_bcf_queries: "Manage public BCF queries" - permission_edit_attribute_help_texts: "Edit attribute help texts" + permission_manage_public_bcf_queries: "Spravovat veřejné dotazy BCF." + permission_edit_attribute_help_texts: "Upravit text nápovědy atributu" placeholders: default: "-" project: destroy: - confirmation: "If you continue, the project %{identifier} will be permanently destroyed. To confirm this action please introduce the project name in the field below, this will:" + confirmation: "Pokud budete pokračovat, projekt %{identifier} bude natrvalo zničen. Pro potvrzení této akce prosím vložte název projektu do níže uvedeného pole, toto bude:" project_delete_result_1: "Odstranit všechna související data." - project_delete_result_2: "Delete all managed project folders in the attached storages." + project_delete_result_2: "Odstranit všechny spravované složky projektu v přiložených úložištích." info: "Odstranění projektu je nevratná akce." project_verification: "Zadejte název projektu %{name} pro potvrzení odstranění." subprojects_confirmation: "Jeho podprojek(y): %{value} budou také smazány." @@ -2590,7 +2590,7 @@ cs: project_module_news: "Novinky" project_module_repository: "Repozitář" project_module_wiki: "Wiki" - permission_header_for_project_module_work_package_tracking: "Work packages and Gantt" + permission_header_for_project_module_work_package_tracking: "Pracovní balíčky a Gantt diagram" query: attribute_and_direction: "%{attribute} (%{direction})" #possible query parameters (e.g. issue queries), @@ -2602,7 +2602,7 @@ cs: member_of_group: "Řešitelova skupina" name_or_identifier: "Jméno nebo identifikátor" only_subproject_id: "Pouze podprojekt" - shared_with_user: "Shared with user" + shared_with_user: "Sdíleno s uživatelem" subproject_id: "Včetně podprojektu" repositories: at_identifier: "v %{identifier}" @@ -2717,9 +2717,9 @@ cs: deactivated: "Deaktivováno" search_input_placeholder: "Hledat ..." setting_apiv3_cors_enabled: "Povolit CORS" - setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" + setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) povolené počátky" setting_apiv3_cors_origins_text_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + Pokud je funkce CORS povolena, je to původ, který má přístup k OpenProject API.
Zkontrolujte Dokumentaci na záhlaví Origin o tom, jak specifikovat očekávané hodnoty. setting_apiv3_max_page_size: "Maximální velikost stránky API" setting_apiv3_max_page_instructions_html: > Nastavte maximální velikost stránky, se kterou bude API reagovat. Nebude možné provádět API požadavky, které vracejí více hodnot na jedné stránce.
Varování: Změňte tuto hodnotu pouze pokud jste si jisti, proč ji potřebujete. Nastavení na vysokou hodnotu bude mít výrazný dopad na výkon, zatímco hodnota nižší, než jsou možnosti na stránce, způsobí chyby v stránkovaných zobrazeních. @@ -2775,7 +2775,7 @@ cs: setting_enabled_scm: "Povolit SCM" setting_enabled_projects_columns: "Viditelné v seznamu projektů" setting_feeds_enabled: "Povolit kanály" - setting_ical_enabled: "Enable iCalendar subscriptions" + setting_ical_enabled: "Povolit odebírání iCalendar" setting_feeds_limit: "Limit obsahu kanálů" setting_file_max_size_displayed: "Maximální velikost textových souborů zobrazených přímo na stránce" setting_host_name: "Název serveru" @@ -2783,7 +2783,7 @@ cs: setting_work_package_done_ratio: "Vypočítat % plnění pracovního balíčku z" setting_work_package_done_ratio_field: "Pole pracovního balíčku" setting_work_package_done_ratio_status: "Stav pracovního balíčku" - setting_work_package_done_ratio_disabled: "Disable (hide the % Complete field)" + setting_work_package_done_ratio_disabled: "Zakázat (skrýt pole % Průběh )" setting_work_package_list_default_columns: "Zobrazit ve výchozím nastavení" setting_work_package_properties: "Vlastnosti pracovního balíčku" setting_work_package_startdate_is_adddate: "Použít aktuální datum jako počáteční datum pro nové úkoly" @@ -2851,7 +2851,7 @@ cs: experimental: save_confirmation: Caution! Risk of data loss! Only activate experimental features if you do not mind breaking your OpenProject installation and losing all of its data. warning_toast: Feature flags are settings that activate features that are still under development. They shall only be used for testing purposes. They shall never be activated on OpenProject installations holding important data. These features will very likely corrupt your data. Use them at your own risk. - feature_flags: Feature flags + feature_flags: Značky funkcí general: "Obecné" highlighting: mode_long: @@ -2914,17 +2914,17 @@ cs: text_wp_status_read_only_html: > The Enterprise edition will add these additional add-ons for work packages' statuses fields:
text_project_custom_field_html: > - The Enterprise edition will add these additional add-ons for projects' custom fields:
+ Enterprise edice přidá tyto další doplňky do vlastních polí projektů:
text_custom_logo_instructions: > Doporučuje se bílé logo na průhledném pozadí. Pro nejlepší výsledky na displejích klasického i retina se ujistěte, že rozměry vašeho obrázku jsou 460px do 60px. text_custom_export_logo_instructions: > - This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended. + Toto je logo, které se zobrazí ve vašem PDF exportu. Musí se jednat o PNG nebo JPEG obrázek. Doporučuje se černé nebo barevné logo na průhledném nebo bílém pozadí. text_custom_export_cover_instructions: > - This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file. + Toto je obrázek, který se zobrazí na pozadí titulní stránky ve vašem PDF exportu. Musí být asi 800px šířka o 500px výška obrazového souboru PNG nebo JPEG. text_custom_favicon_instructions: > - This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background. + Toto je malá ikona zobrazená v okně/záložce prohlížeče vedle názvu stránky. Musí být čtvercový obrázek velikosti PNG 32 až 32 pixelů s průhledným pozadím. text_custom_touch_icon_instructions: > - This is the icon that appears in your mobile or tablet when you place a bookmark on your homescreen. It needs to be a squared 180 by 180 pixels sized PNG image file. Please make sure the image's background is not transparent otherwise it will look bad on iOS. + Toto je ikona, která se zobrazí v mobilu nebo tabletu, když umístíte záložku na hlavní obrazovku. Musí být čtvercový obrazový soubor velikosti PNG 180 pixelů. Ujistěte se, že pozadí obrázku není transparentní, jinak bude vypadat špatně. text_database_allows_tsv: "Databáze umožňuje TSVector (volitelné)" text_default_administrator_account_changed: "Výchozí účet správce změněn" text_default_encoding: "Výchozí: UTF-8" @@ -2950,8 +2950,8 @@ cs: text_work_packages_destroy_confirmation: "Jste si jisti, že chcete odstranit vybrané pracovní balíčky?" text_work_packages_ref_in_commit_messages: "Odkazování a opravování pracovních balíčků ve zprávách commitu" text_journal_added: "%{label} %{value} přidán" - text_journal_attachment_added: "%{label} %{value} added as attachment" - text_journal_attachment_deleted: "%{label} %{old} removed as attachment" + text_journal_attachment_added: "%{label} %{value} přidáno jako příloha" + text_journal_attachment_deleted: "%{label} %{old} odebráno jako příloha" text_journal_changed_plain: "%{label} se změnil z %{old} %{linebreak}na %{new}" text_journal_changed_no_detail: "%{label} aktualizován" text_journal_changed_with_diff: "%{label} změněn (%{link})" @@ -3045,7 +3045,7 @@ cs: activate: "Aktivovat" activate_and_reset_failed_logins: "Aktivovat a resetovat nezdařené přihlášení" authentication_provider: "Zprostředkovatel ověřování" - identity_url_text: "The internal unique identifier provided by the authentication provider." + identity_url_text: "Interní jedinečný identifikátor poskytnutý poskytovatelem ověřování." authentication_settings_disabled_due_to_external_authentication: > Tento uživatel se ověřuje prostřednictvím externího poskytovatele ověření, takže v OpenProject není žádné heslo, které by se mělo změnit. authorization_rejected: "Nejste oprávněn se přihlásit." @@ -3084,22 +3084,22 @@ cs: warning_registration_token_expired: | Platnost aktivačního emailu vypršela. Poslali jsme vám nový %{email}. Klikněte prosím na odkaz uvnitř pro aktivaci vašeho účtu. warning_user_limit_reached: > - Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. + Přidání dalších uživatelů překročí aktuální limit. Obraťte se na správce pro zvýšení limitu uživatelů, abyste zajistili, že externí uživatelé mají přístup k této instanci. warning_user_limit_reached_admin: > - Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + Přidání dalších uživatelů překročí aktuální limit. Obraťte se na správce pro zvýšení limitu uživatelů, abyste zajistili, že externí uživatelé mají přístup k této instanci. warning_user_limit_reached_instructions: > - You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. + Limit počtu uživatelů (%{current}/%{max} aktivních uživatelů) dosažen. Prosím kontaktujte sales@openproject.com a upgradujte vaši Enterprise Edition a přidejte další uživatele. warning_protocol_mismatch_html: > warning_bar: https_mismatch: title: "Neshoda nastavení HTTPS" text_html: > - Your application is running with HTTPS mode set to %{set_protocol}, but the request is an %{actual_protocol} request. This will result in errors! You will need to set the following configuration value: %{setting_value}. Please see the installation documentation on how to set this configuration. + Vaše aplikace běží s režimem HTTPS nastaveným na %{set_protocol}, ale žádost je %{actual_protocol} požadavek. To povede k chybám! Budete muset nastavit následující hodnotu konfigurace: %{setting_value}. Přečtěte si prosím dokumentaci o instalaci , jak nastavit tuto konfiguraci. hostname_mismatch: title: "Nastavení hostname se neshoduje" text_html: > - Your application is running with its host name setting set to %{set_hostname}, but the request is a %{actual_hostname} hostname. This will result in errors! Go to System settings and change the "Host name" setting to correct this. + Vaše aplikace běží s nastavením názvu hostitele nastaveným na %{set_hostname}, ale žádost je %{actual_hostname} název hostitele. To bude mít za následek chyby! Přejděte do Nastavení systému a změňte nastavení "Název hostitele" pro opravu. menu_item: "Položka nabídky" menu_item_setting: "Viditelnost" wiki_menu_item_for: 'Položka nabídky pro stránku wiki "%{title}"' @@ -3121,14 +3121,14 @@ cs: other: "%{count} uživatelů" filter: project_member: 'Člen projektu' - not_project_member: 'Not project member' - project_group: 'Project group' - not_project_group: 'Not project group' + not_project_member: 'Není členem projektu' + project_group: 'Skupina projektů' + not_project_group: 'Není skupina projektů' role: 'Role' type: 'Typ' - label_search: "Search for users to invite" + label_search: "Hledat uživatele pro pozvání" label_search_placeholder: "Hledat podle uživatele nebo e-mailové adresy" - label_toggle_all: "Toggle all shares" + label_toggle_all: "Přepnout všechny sdílené" permissions: comment: "Komentář" comment_description: "Může zobrazit a komentovat tento pracovní balíček." @@ -3139,29 +3139,29 @@ cs: view_description: "Může zobrazit tento pracovní balíček." remove: "Odebrat" share: "Sdílet" - text_empty_search_description: "There are no users with the current filter criteria." + text_empty_search_description: "Neexistují žádní uživatelé s aktuálními kritérii filtru." text_empty_search_header: "Nenašli jsme žádné odpovídající výsledky." - text_empty_state_description: "The work package has not been shared with anyone yet." - text_empty_state_header: "No shared members." + text_empty_state_description: "Pracovní balíček zatím nebyl s nikým sdílen." + text_empty_state_header: "Žádní sdílení členové." text_user_limit_reached: "Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this work package." text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this work package. warning_user_limit_reached_admin: > Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this work package. - warning_no_selected_user: "Please select users to share this work package with" - warning_locked_user: "The user %{user} is locked and cannot be shared with" + warning_no_selected_user: "Vyberte uživatele pro sdílení tohoto pracovního balíčku " + warning_locked_user: "Uživatel %{user} je uzamčen a nemůže být s ním sdíleno" user_details: locked: "Uzamčený uživatel" invited: "Pozvánka odeslána" resend_invite: "Znovu odeslat." - invite_resent: "Invite has been resent" + invite_resent: "Pozvánka byla znovu odeslána" not_project_member: "Není členem projektu" - project_group: "Group members might have additional privileges (as project members)" - not_project_group: "Group (shared with all members)" - additional_privileges_project: "Might have additional privileges (as project member)" - additional_privileges_group: "Might have additional privileges (as group member)" - additional_privileges_project_or_group: "Might have additional privileges (as project or group member)" + project_group: "Členové skupiny mohou mít dodatečná práva (jako členové projektu)" + not_project_group: "Skupina (sdílená se všemi členy)" + additional_privileges_project: "Může mít další oprávnění (jako člen projektu)" + additional_privileges_group: "Může mít dodatečná oprávnění (jako člen skupiny)" + additional_privileges_project_or_group: "Může mít dodatečná oprávnění (jako člen skupiny)" working_days: info: > Days that are not selected are skipped when scheduling work packages (and not included in the day count). These can be overriden at a work-package level. @@ -3169,7 +3169,7 @@ cs: Dates added to the list below are considered non-working and skipped when scheduling work packages. change_button: "Změnit pracovní dny" warning: > - Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance.
Please note that changes are only applied after you click on the apply changes button. + Změna, které dny v týdnu jsou považovány za pracovní dny nebo za nepracovní dny, může ovlivnit začátek a ukončení všech pracovních balíčků ve všech projektech v tomto případě.
Vezměte prosím na vědomí, že změny jsou aplikovány až po kliknutí na tlačítko změn. journal_note: changed: _**Pracovní dny** změněny (%{changes})._ days: @@ -3222,9 +3222,9 @@ cs: unsupported_context: "Zadaný dokument není podporován jako kontext." context_object_not_found: "Zdroj nelze najít jako kontext." validation: - done_ratio: "% Complete cannot be set on parent work packages, when it is inferred by status or when it is disabled." + done_ratio: "% Průběh nelze nastavit na nadřazených pracovních balíčcích, je odvozen ze stavu podřazených nebo pokud je zakázán." due_date: "Datum ukončení nemůže být nastaveno na nadřazených pracovních balíčcích." - estimated_hours: "Work cannot be set on parent work packages." #feel like this one should be removed eventually + estimated_hours: "Práci nelze nastavit na nadřazených pracovních balíčcích." #feel like this one should be removed eventually invalid_user_assigned_to_work_package: "Zvolený uživatel nesmí být '%{property}' pro tento pracovní balíček." start_date: "Počáteční datum nelze nastavit na nadřazených pracovních balíčcích." eprops: @@ -3345,7 +3345,7 @@ cs: oauth_returned_json_error: "OAuth2 vrátil chybu JSON" oauth_returned_http_error: "OAuth2 vrátil chybu sítě" oauth_returned_standard_error: "OAuth2 vrátil interní chybu" - client_id_blank: "ID can't be blank." + client_id_blank: "ID nemůže být prázdné." wrong_token_type_returned: "OAuth2 vrátil špatný typ tokenu, očekává se AccessToken::Bearer" oauth_issue_contact_admin: "OAuth2 nahlásil chybu. Obraťte se na správce systému." oauth_client_not_found: "Klient OAuth2 nebyl nalezen v koncovém bodě 'callback' (redirect_uri)." @@ -3377,10 +3377,10 @@ cs: response: unexpected: "Byla přijata neočekávaná odpověď." you: vy - link: link + link: odkaz plugin_openproject_auth_plugins: - name: "OpenProject Auth Plugins" - description: "Integration of OmniAuth strategy providers for authentication in Openproject." + name: "OpenProject Auth pluginy" + description: "Integrace poskytovatelů strategie OmniAuth pro ověřování v Openproject." plugin_openproject_auth_saml: name: "OmniAuth SAML / Single-Sign On" - description: "Adds the OmniAuth SAML provider to OpenProject" + description: "Přidá poskytovatele SAML OmniAuth do OpenProject" diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 0f41add5c1bf..3965c4f19f1a 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -199,7 +199,7 @@ de: reorder_alphabetical: "Alphabetisch umsortieren" reorder_confirmation: "Warnung: Die aktuelle Reihenfolge der verfügbaren Werte geht verloren. Fortfahren?" instructions: - is_required: "Markieren Sie das benutzerdefinierte Feld nach Bedarf. Dies macht es zwingend erforderlich, das Feld auszufüllen, wenn neue oder aktualisierte Ressourcen erstellt werden." + is_required: "Markieren Sie das benutzerdefinierte Feld als erforderlich. Dies macht es zwingend erforderlich, das Feld auszufüllen, wenn neue oder aktualisierte Ressourcen erstellt werden." is_for_all: "Markieren Sie das benutzerdefinierte Feld als verfügbar in allen bestehenden und neuen Projekten." searchable: "Fügen Sie die Feldwerte hinzu, wenn Sie die globale Suchfunktion verwenden." editable: "Feld darf von den Benutzern selbst bearbeitet werden." @@ -408,8 +408,8 @@ de: sharing: missing_workflow_waring: title: "Der Workflow für das Teilen von Arbeitspaketen fehlt" - message: "Es ist kein Arbeitsablauf (Workflow) für die Rolle ‚Arbeitspaket-Editor‘ konfiguriert. Ohne einen Arbeitsablauf kann der gemeinsam mit dem Benutzer den Status des Arbeitspakets nicht ändern. Arbeitsabläufe können kopiert werden. Wählen Sie einen Quelltyp (z. B. ‚Task‘) und eine Quell-Rolle (z. B. 'Member'). Wählen Sie dann die Zieltypen aus, um alle Typen als Ziele auszuwählen und schließlich die Rolle ‚Arbeitspaket-Editor‘ als Ziel aus und drücken Sie ‚Kopieren‘. Nachdem Sie die Standardeinstellungen erstellt haben, können Sie die Arbeitsabläufe so einstellen, wie Sie es für jede andere Rolle tun." - link_message: "Konfigurieren Sie die Arbeitsabläufe in der Administration." + message: "Es ist kein Workflow für die Rolle ‚Work package editor‘ konfiguriert. Nur mit einem solchen Workflow können Benutzer, mit denen ein Arbeitspaket geteilt wurde, den Status des Arbeitspakets ändern. Workflows lassen sich einfach kopieren. Wählen Sie dazu einen Quell-Typ (z. B. ‚Task‘) und eine Quell-Rolle (z. B. 'Member') aus. Wählen Sie dann die Ziel-Typen aus. Als ersten Schritt können Sie alle Typen als Ziel-Typen auswählen. Danach wählen Sie die Ziel-Rolle ‚Work package editor‘ aus und drücken Sie auf den Knopf ‚Kopieren‘. Nachdem Sie hiermit eine Grundlage geschaffen haben, können Sie danach diese Workflows weiter anpassen, ganz genau wie Sie es für jede andere Rolle bereits getan haben." + link_message: "Konfigurieren Sie die Workflows in der Administration." summary: reports: category: diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index 69988a15dd8a..5c4f16b3501d 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -236,12 +236,12 @@ cs: quick_overview: "Získejte rychlý přehled o řízení projektu a týmové spolupráci s OpenProject Enterprise edion." upsale: become_hero: "Staň se hrdinou!" - enterprise_info_html: "%{feature_title} is an Enterprise add-on." + enterprise_info_html: "%{feature_title} je Enterprise doplněk." upgrade_info: "Přejděte na placenou verzi a začněte ji používat ve vašem týmu." benefits: description: "Jaké jsou výhody Enterprise on-premises Edice?" high_security: "Bezpečnostní prvky" - high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP groups." + high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP skupiny." installation: "Instalační podpora" installation_text: "Zkušení softwaroví inženýři vás povedou kompletní instalací a instalací ve vaší vlastní infrastruktuře." premium_features: "Doplňky Enterprise Edice" @@ -259,21 +259,20 @@ cs: text: > OpenProject Enterprise Edition je postavena na komunitní edici. Obsahuje prémiové funkce a profesionální podporu zaměřenou především na organizace s více než 10 uživateli, kteří spravují kritické projekty unlimited: "Bez omezení" - you_contribute: "Developers need to pay their bills, too. By upgrading to the Enterprise edition, you will be supporting this open source community effort and contributing to its development, maintenance and continuous improvement." + you_contribute: "Vývojáři musí platit také své účty. Přejetím na Enterprise Edition budete podporovat toto open source úsilí komunity a přispívat k jeho vývoji, údržbě a neustálému zlepšování." working_days: calendar: empty_state_header: "Nepracovní dny" - empty_state_description: 'No specific non-working days are defined for this year. Click on "+ Non-working day" below to add a date.' + empty_state_description: 'Pro tento rok nejsou definovány žádné konkrétní nepracovní dny. Pro přidání data klikněte na "+ Nepracovní den".' new_date: '(nové)' add_non_working_day: "Nepracovní den" already_added_error: "Nepracovní den pro toto datum již existuje. Pro každý jedinečný datum může být vytvořen pouze jeden nepracovní den." change_button: "Uložit a přeplánovat" change_title: "Změnit pracovní dny" - removed_title: "You will remove the following days from the non-working days list:" - change_description: "Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance." + removed_title: "Následující dny odeberete ze seznamu nepracovních dnů:" + change_description: "Změna, těch dnů v týdnu, které jsou považovány za pracovní dny, může ovlivnit datum zahájení a datum ukončení všech pracovních balíčků ve všech projektech \n v této instanci." warning: > - The changes might take some time to take effect. You will be notified when all relevant work packages have been updated. - Are you sure you want to continue? + custom_actions: date: specific: 'zapnuto' @@ -350,20 +349,20 @@ cs: #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '13_2': standard: - learn_about_link: https://www.openproject.org/blog/openproject-13-2-release/ + learn_about_link: new_features_html: > - The release contains various new features and improvements:
+ Vydání obsahuje různé nové funkce a vylepšení:
ical_sharing_modal: title: "Přihlásit kalendář k odběru" inital_setup_error_message: "Při načítání dat došlo k chybě." - description: "You can use the URL (iCalendar) to subscribe to this calendar in an external client and view up-to-date work package information from there." - warning: "Please don't share this URL with other users. Anyone with this link will be able to view work package details without an account or password." + description: "Můžete použít URL (iCalendar) k odběru tohoto kalendáře v externím klientovi a zobrazit aktuální informace o pracovním balíčku." + warning: "Prosím, nesdílejte tuto URL s ostatními uživateli. Kdokoli s tímto odkazem bude moci zobrazit podrobnosti o pracovním balíčku bez účtu nebo hesla." token_name_label: "Kde to použijete?" token_name_placeholder: "Zadejte jméno, např. \"Telefon\"" - token_name_description_text: "If you subscribe to this calendar from multiple devices, this name will help you distinguish between them in your access tokens list." + token_name_description_text: "Pokud se přihlásíte k odběru tohoto kalendáře z více zařízení, toto jméno vám pomůže rozlišit mezi nimi v seznamu přístupových tokenů." copy_url_label: "Kopírovat URL" - ical_generation_error_text: "An error occured while generating the calendar URL." - success_message: "The URL \"%{name}\" was successfully copied to your clipboard. Paste it in your calendar client to complete the subscription." + ical_generation_error_text: "Při generování adresy URL kalendáře došlo k chybě." + success_message: "URL \"%{name}\" byla úspěšně zkopírována do vaší schránky. Vložte ji do vašeho klienta kalendáře pro dokončení odběru." label_activate: "Aktivovat" label_assignee: 'Řešitel' label_add_column_after: "Přidat sloupec za" @@ -400,7 +399,7 @@ cs: label_details: "Podrobnosti" label_display: "Zobrazit" label_cancel_comment: "Stornovat komentář" - label_closed_work_packages: "uzavřené" + label_closed_work_packages: "uzavřeno" label_collapse: "Sbalit" label_collapsed: "sbalené" label_collapse_all: "Sbalit vše" @@ -605,18 +604,18 @@ cs: processed: 'zpracováno' prioritized: 'upřednostněno' dateAlert: 'Upozornění na datum' - shared: 'shared' + shared: 'sdíleno' date_alerts: milestone_date: 'Datum milníku' overdue: 'Po termínu' overdue_since: 'od %{difference_in_days}' property_today: 'je dnes' - property_is: 'is in %{difference_in_days}' - property_was: 'was %{difference_in_days} ago' + property_is: 'je v %{difference_in_days}' + property_was: 'byl před %{difference_in_days}' property_is_deleted: 'Smazáno' upsale: title: 'Upozornění na datum' - description: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' + description: 'S upozorněním na datum budete upozorněni na blížící se datum zahájení nebo ukončení, abyste nikdy nezmeškali nebo nezapomněli na důležitou lhůtu.' facets: unread: 'Nepřečtené' unread_title: 'Zobrazit nepřečtené' @@ -633,7 +632,7 @@ cs: at_all: 'Nová oznámení se zobrazí zde, když se objeví aktivita, která se vás týká' with_current_filter: 'V současné době nejsou v tomto zobrazení žádná oznámení' mark_all_read: 'Označit vše jako přečtené' - mark_as_read: 'Označit jako přečteno' + mark_as_read: 'Označit jako přečtené' text_update_date: "%{date} od" total_count_warning: "Zobrazení posledních oznámení %{newest_count} . Nezobrazuje se ještě %{more_count}" empty_state: @@ -646,7 +645,7 @@ cs: link_text: 'Klikněte zde pro jejich načtení' menu: accountable: 'Odpovědný' - by_project: 'Nepřečteno podle projektu' + by_project: 'Nepřečteno dle projektu' by_reason: 'Důvod' inbox: 'Inbox' mentioned: 'Zmíněné' @@ -654,7 +653,7 @@ cs: date_alert: 'Upozornění na datum' shared: 'Sdílené' settings: - change_notification_settings: 'You can modify your notification settings to ensure you never miss an important update.' + change_notification_settings: 'Můžete změnit nastavení oznámení , abyste se ujistili, že nikdy nezmeškáte důležitou aktualizaci.' title: "Nastavení oznámení" notify_me: "Upozornit mě" reminders: @@ -692,7 +691,7 @@ cs: date_alerts: title: 'Upozornění na datum' description: 'Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher).' - teaser_text: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' + teaser_text: 'S upozorněním na datum budete upozorněni na blížící se datum zahájení nebo ukončení, abyste nikdy nezmeškali nebo nezapomněli na důležitou lhůtu.' overdue: Po termínu project_specific: title: "Nastavení upozornění pro konkrétní projekt\n" @@ -783,8 +782,8 @@ cs: stop: 'Zastavit' timer: start_new_timer: 'Spustit nový časovač' - timer_already_running: 'To start a new timer, you must first stop the current timer:' - timer_already_stopped: 'No active timer for this work package, have you stopped it in another window?' + timer_already_running: 'Chcete-li spustit nový časovač, musíte nejprve zastavit aktuální časovač:' + timer_already_stopped: 'Žádný aktivní časovač pro tento pracovní balíček, zastavil jste jej v jiném okně?' tracking_time: 'Čas sledování' button_stop: 'Zastavit aktuální časovač' two_factor_authentication: @@ -835,7 +834,7 @@ cs: toggle_description: "Přepnout popis relace" update_relation: "Klikněte pro změnu typu vztahu" add_follower: "Přidat následující" - show_relations: "Show relations" + show_relations: "Zobrazit vztahy" add_predecessor: "Přidat předchůdce" remove: "Odstranit vztah" save: "Uložit vztah" @@ -926,14 +925,14 @@ cs: message_work_package_status_blocked: "Stav pracovního balíčku nelze zapisovat kvůli stavu zavření a přiřazování uzavřené verze." placeholder_filter_by_text: "Předmět, popis, komentáře, ..." baseline: - addition_label: 'Added to view within the comparison time period' - removal_label: 'Removed from view within the comparison time period' - modification_label: 'Modified within the comparison time period' - column_incompatible: 'This column does not show changes in Baseline mode.' + addition_label: 'Přidáno k zobrazení ve srovnávacím období' + removal_label: 'Odstraněno ze zobrazení ve srovnávacím období ' + modification_label: 'Upraveno ve srovnávacím období' + column_incompatible: 'Tento sloupec nezobrazuje změny v režimu Baseline.' filters: title: 'Filtrovat pracovní balíčky' - baseline_incompatible: 'This filter attribute is not taken into consideration in Baseline mode.' - baseline_warning: 'Baseline mode is on but some of your active filters are not included in the comparison.' + baseline_incompatible: 'Tento atribut filtru se nebere v úvahu v režimu Baseline' + baseline_warning: 'Baseline režim je zapnutý, ale některé z vašich aktivních filtrů nejsou zahrnuty do srovnání.' inline_create: title: 'Klikněte zde pro přidání nového pracovního balíčku do tohoto seznamu' create: @@ -1034,11 +1033,11 @@ cs: sharing: share: 'Sdílet' title: "Sdílet pracovní balíček" - selected_count: "%{count} selected" + selected_count: "%{count} vybráno" selection: - mixed: "Mixed" + mixed: "Smíšená" upsale: - description: "Share work packages with users who are not members of the project." + description: "Sdílejte pracovní balíčky s uživateli, kteří nejsou členy projektu." table: configure_button: 'Konfigurovat tabulku pracovních balíčků' summary: "Tabulka s řádky pracovního balíčku a atributy sloupců pracovního balíčku." @@ -1049,7 +1048,7 @@ cs: button: 'Konfigurovat tabulku pracovních balíčků' choose_display_mode: 'Zobrazit pracovní balíčky jako' modal_title: 'Konfigurace tabulky pracovních balíčků' - embedded_tab_disabled: "This configuration tab is not available for the embedded view you are editing." + embedded_tab_disabled: "Tato karta konfigurace není k dispozici pro embedded zobrazení, které upravujete." default: "výchozí" display_settings: 'Nastavení zobrazení' default_mode: "Plochý seznam" @@ -1246,12 +1245,12 @@ cs: role: label: 'Role v %{project}' no_roles_found: 'Nebyly nalezeny žádné role.' - description: 'This is the role that the user will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. Learn more about roles and permissions. ' + description: 'Toto je role, kterou uživatel obdrží, když se připojí k vašemu projektu. Role vymezuje, která změny mohou provádět a jaké informace mohou vidět. Další informace o rolích a oprávněních. ' required: 'Vyberte prosím roli' next_button: 'Další' message: label: 'Pozvánka' - description: 'We will send an email to the user, to which you can add a personal message here. An explanation for the invitation could be useful, or prehaps a bit of information regarding the project to help them get started.' + description: 'Pošleme uživateli e-mail, ke kterému můžete přidat osobní zprávu. Vysvětlení pozvánky by mohlo být užitečné, nebo pár informací o projektu, které by jim pomohly začít.' next_button: 'Další' summary: next_button: 'Odeslat pozvánku' @@ -1281,11 +1280,11 @@ cs: toggle_title: 'Směrný plán' clear: 'Vyčistit' apply: 'Použít' - header_description: 'Highlight changes made to this list since any point in the past.' - enterprise_header_description: 'Highlight changes made to this list since any point in the past with Enterprise edition.' + header_description: 'Zvýraznit změny provedené v tomto seznamu od té doby v minulosti.' + enterprise_header_description: 'Zvýraznit změny provedené v tomto seznamu od chvíle, kdy v minulosti došlo k vydání Enterprise .' show_changes_since: 'Zobrazit změny od' baseline_comparison: 'Srovnání baseline' - help_description: 'Reference time zone for the baseline.' + help_description: 'Referenční časové pásmo pro Baseline' time_description: 'Ve vašem místním čase: %{datetime}' time: 'Čas' from: 'Od' @@ -1306,8 +1305,8 @@ cs: maintained_with_changes: 'Udržováno se změnami' in_your_timezone: 'Ve vašem místním časovém pásmu:' icon_tooltip: - added: 'Added to view within the comparison time period' - removed: 'Removed from view within the comparison time period' + added: 'Přidáno k zobrazení ve srovnávacím období' + removed: 'Odstraněno ze zobrazení ve srovnávacím období ' changed: 'Udržováno s úpravami' forms: submit_success_message: 'Formulář byl úspěšně odeslán' @@ -1318,5 +1317,5 @@ cs: filter_chip: remove: 'Odstranit' drop_modal: - focus_grab: 'This is a focus anchor for modals. Press shift+tab to go back to the modal trigger element.' + focus_grab: 'Toto je ukotvení pro modaly. Stisknutím karty shift+b se vrátíte k aktivačnímu prvku modalu.' Close: 'Zavřít' diff --git a/config/locales/crowdin/js-kk.yml b/config/locales/crowdin/js-kk.yml new file mode 100644 index 000000000000..19fef305f8b9 --- /dev/null +++ b/config/locales/crowdin/js-kk.yml @@ -0,0 +1,1316 @@ +#-- copyright +#OpenProject is an open source project management software. +#Copyright (C) 2012-2024 the OpenProject GmbH +#This program is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public License version 3. +#OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +#Copyright (C) 2006-2013 Jean-Philippe Lang +#Copyright (C) 2010-2013 the ChiliProject Team +#This program is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version 2 +#of the License, or (at your option) any later version. +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +#See COPYRIGHT and LICENSE files for more details. +#++ +kk: + js: + ajax: + hide: "Hide" + loading: "Loading…" + updating: "Updating…" + attachments: + delete: "Delete attachment" + delete_confirmation: | + Are you sure you want to delete this file? This action is not reversible. + draggable_hint: | + Drag on editor field to inline image or reference attachment. Closed editor fields will be opened while you keep dragging. + autocomplete_ng_select: + add_tag: "Add item" + clear_all: "Clear all" + loading: "Loading..." + not_found: "No items found" + type_to_search: "Type to search" + autocomplete_select: + placeholder: + multi: "Add \"%{name}\"" + single: "Select \"%{name}\"" + remove: "Remove %{name}" + active: "Active %{label} %{name}" + backup: + attachments_disabled: Attachments may not be included since they exceed the maximum overall size allowed. You can change this via the configuration (requires a server restart). + info: > + You can trigger a backup here. The process can take some time depending on the amount of data (especially attachments) you have. You will receive an email once it's ready. + note: > + A new backup will override any previous one. Only a limited number of backups per day can be requested. + last_backup: Last backup + last_backup_from: Last backup from + title: Backup OpenProject + options: Options + include_attachments: Include attachments + download_backup: Download backup + request_backup: Request backup + close_popup_title: "Close popup" + close_filter_title: "Close filter" + close_form_title: "Close form" + button_add_watcher: "Add watcher" + button_add: "Add" + button_back: "Back" + button_back_to_list_view: "Back to list view" + button_cancel: "Cancel" + button_close: "Close" + button_change_project: "Change project" + button_check_all: "Check all" + button_configure-form: "Configure form" + button_confirm: "Confirm" + button_continue: "Continue" + button_copy: "Copy" + button_copy_to_clipboard: "Copy to clipboard" + button_copy_link_to_clipboard: "Copy link to clipboard" + button_copy_to_other_project: "Copy to other project" + button_custom-fields: "Custom fields" + button_delete: "Delete" + button_delete_watcher: "Delete watcher" + button_details_view: "Details view" + button_duplicate: "Duplicate" + button_edit: "Edit" + button_filter: "Filter" + button_collapse_all: "Collapse all" + button_expand_all: "Expand all" + button_advanced_filter: "Advanced filter" + button_list_view: "List view" + button_show_view: "Fullscreen view" + button_log_time: "Log time" + button_more: "More" + button_open_details: "Open details view" + button_close_details: "Close details view" + button_open_fullscreen: "Open fullscreen view" + button_show_cards: "Show card view" + button_show_list: "Show list view" + button_show_table: "Show table view" + button_show_gantt: "Show Gantt view" + button_show_fullscreen: "Show fullscreen view" + button_more_actions: "More actions" + button_quote: "Quote" + button_save: "Save" + button_settings: "Settings" + button_uncheck_all: "Uncheck all" + button_update: "Update" + button_export-pdf: "Download PDF" + button_export-atom: "Download Atom" + button_create: "Create" + card: + add_new: 'Add new card' + highlighting: + inline: 'Highlight inline:' + entire_card_by: 'Entire card by' + remove_from_list: 'Remove card from list' + caption_rate_history: "Rate history" + clipboard: + browser_error: "Your browser doesn't support copying to clipboard. Please copy it manually: %{content}" + copied_successful: "Successfully copied to clipboard!" + chart: + type: 'Chart type' + axis_criteria: 'Axis criteria' + modal_title: 'Work package graph configuration' + types: + line: 'Line' + horizontal_bar: 'Horizontal bar' + bar: 'Bar' + pie: 'Pie' + doughnut: 'Doughnut' + radar: 'Radar' + polar_area: 'Polar area' + tabs: + graph_settings: 'General' + dataset: 'Dataset %{number}' + errors: + could_not_load: 'The data to display the graph could not be loaded. The necessary permissions may be lacking.' + description_available_columns: "Available Columns" + description_current_position: "You are here: " + description_select_work_package: "Select work package #%{id}" + description_selected_columns: "Selected Columns" + description_subwork_package: "Child of work package #%{id}" + editor: + preview: 'Toggle preview mode' + source_code: 'Toggle Markdown source mode' + error_saving_failed: 'Saving the document failed with the following error: %{error}' + ckeditor_error: 'An error occurred within CKEditor' + mode: + manual: 'Switch to Markdown source' + wysiwyg: 'Switch to WYSIWYG editor' + macro: + error: 'Cannot expand macro: %{message}' + attribute_reference: + macro_help_tooltip: 'This text segment is being dynamically rendered by a macro.' + not_found: 'Requested resource could not be found' + invalid_attribute: "The selected attribute '%{name}' does not exist." + child_pages: + button: 'Links to child pages' + include_parent: 'Include parent' + text: '[Placeholder] Links to child pages of' + page: 'Wiki page' + this_page: 'this page' + hint: | + Leave this field empty to list all child pages of the current page. If you want to reference a different page, provide its title or slug. + code_block: + button: 'Insert code snippet' + title: 'Insert / edit Code snippet' + language: 'Formatting language' + language_hint: 'Enter the formatting language that will be used for highlighting (if supported).' + dropdown: + macros: 'Macros' + chose_macro: 'Choose macro' + toc: 'Table of contents' + toolbar_help: 'Click to select widget and show the toolbar. Double-click to edit widget' + wiki_page_include: + button: 'Include content of another wiki page' + text: '[Placeholder] Included wiki page of' + page: 'Wiki page' + not_set: '(Page not yet set)' + hint: | + Include the content of another wiki page by specifying its title or slug. + You can include the wiki page of another project by separating them with a colon like the following example. + work_package_button: + button: 'Insert create work package button' + type: 'Work package type' + button_style: 'Use button style' + button_style_hint: 'Optional: Check to make macro appear as a button, not as a link.' + without_type: 'Create work package' + with_type: 'Create work package (Type: %{typename})' + embedded_table: + button: 'Embed work package table' + text: '[Placeholder] Embedded work package table' + embedded_calendar: + text: '[Placeholder] Embedded calendar' + admin: + type_form: + custom_field: 'Custom field' + inactive: 'Inactive' + drag_to_activate: "Drag fields from here to activate them" + add_group: "Add attribute group" + add_table: "Add table of related work packages" + edit_query: 'Edit query' + new_group: 'New group' + reset_to_defaults: 'Reset to defaults' + enterprise: + text_reprieve_days_left: "%{days} days until end of grace period" + text_expired: "expired" + trial: + confirmation: "Confirmation of email address" + confirmation_info: > + We sent you an email on %{date} to %{email}. Please check your inbox and click the confirmation link provided to start your 14 days trial. + form: + general_consent: > + I agree with the terms of service and the privacy policy. + invalid_email: "Invalid email address" + label_company: "Company" + label_first_name: "First name" + label_last_name: "Last name" + label_domain: "Domain" + label_subscriber: "Subscriber" + label_maximum_users: "Maximum active users" + label_starts_at: "Starts at" + label_expires_at: "Expires at" + receive_newsletter: I want to receive the OpenProject newsletter. + taken_domain: There can only be one active trial per domain. + domain_mismatch: The current request host name does not match the configured host name. Please double check your system settings. + taken_email: Each user can only create one trial. + email_not_received: "You did not receive an email? You can resend the email with the link on the right." + try_another_email: "Or try it with another email address." + next_steps: "Next steps" + resend_link: "Resend" + resend_success: "Email has been resent. Please check your emails and click the confirmation link provided." + resend_warning: "Could not resend email." + session_timeout: "Your session timed out. Please try to reload the page or resend email." + status_label: "Status:" + status_confirmed: "confirmed" + status_waiting: "email sent - waiting for confirmation" + test_ee: "Test the Enterprise edition 14 days for free" + quick_overview: "Get a quick overview of project management and team collaboration with OpenProject Enterprise edition." + upsale: + become_hero: "Become a hero!" + enterprise_info_html: "%{feature_title} is an Enterprise add-on." + upgrade_info: "Please upgrade to a paid plan to activate and start using it in your team." + benefits: + description: "What are the benefits of the Enterprise on-premises edition?" + high_security: "Security features" + high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP groups." + installation: "Installation support" + installation_text: "Experienced software engineers guide you through the complete installation and setup process in your own infrastructure." + premium_features: "Enterprise add-ons" + premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent workflows with custom actions, full text search for work package attachments and multi-select custom fields." + professional_support: "Professional support" + professional_support_text: "Get reliable, high-touch support from senior support engineers with expert knowledge about running OpenProject in business-critical environments." + button_start_trial: "Start free trial" + button_upgrade: "Upgrade now" + button_contact_us: "Contact us for a demo" + button_book_now: "Book now" + confidence: > + We deliver the confidence of a tested and supported enterprise-class project management software - with Open Source and an open mind. + link_quote: "Get a quote" + more_info: "More information" + text: > + The OpenProject Enterprise edition builds on top of the Community edition. It includes Enterprise add-ons and professional support mainly aimed at organizations with more than 10 users that manage business critical projects with OpenProject. + unlimited: "Unlimited" + you_contribute: "Developers need to pay their bills, too. By upgrading to the Enterprise edition, you will be supporting this open source community effort and contributing to its development, maintenance and continuous improvement." + working_days: + calendar: + empty_state_header: "Non-working days" + empty_state_description: 'No specific non-working days are defined for this year. Click on "+ Non-working day" below to add a date.' + new_date: '(new)' + add_non_working_day: "Non-working day" + already_added_error: "A non-working day for this date exists already. There can only be one non-working day created for each unique date." + change_button: "Save and reschedule" + change_title: "Change working days" + removed_title: "You will remove the following days from the non-working days list:" + change_description: "Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance." + warning: > + The changes might take some time to take effect. You will be notified when all relevant work packages have been updated. + Are you sure you want to continue? + custom_actions: + date: + specific: 'on' + current_date: 'Current date' + error: + internal: "An internal error has occurred." + cannot_save_changes_with_message: "Cannot save your changes due to the following error: %{error}" + query_saving: "The view could not be saved." + embedded_table_loading: "The embedded view could not be loaded: %{message}" + enumeration_activities: "Activities (time tracking)" + enumeration_doc_categories: "Document categories" + enumeration_work_package_priorities: "Work package priorities" + filter: + more_values_not_shown: "There are %{total} more results, search to filter results." + description: + text_open_filter: "Open this filter with 'ALT' and arrow keys." + text_close_filter: "To select an entry leave the focus for example by pressing enter. To leave without filter select the first (empty) entry." + noneElement: "(none)" + time_zone_converted: + two_values: "%{from} - %{to} in your local time." + only_start: "From %{from} in your local time." + only_end: "Till %{to} in your local time." + value_spacer: "-" + sorting: + criteria: + one: "First sorting criteria" + two: "Second sorting criteria" + three: "Third sorting criteria" + gantt_chart: + label: 'Gantt chart' + quarter_label: 'Q%{quarter_number}' + labels: + title: 'Label configuration' + bar: 'Bar labels' + left: 'Left' + right: 'Right' + farRight: 'Far right' + description: > + Select the attributes you want to be shown in the respective positions of the Gantt chart at all times. Note that when hovering over an element, its date labels will be shown instead of these attributes. + button_activate: 'Show Gantt chart' + button_deactivate: 'Hide Gantt chart' + filter: + noneSelection: "(none)" + selection_mode: + notification: 'Click on any highlighted work package to create the relation. Press escape to cancel.' + zoom: + in: "Zoom in" + out: "Zoom out" + auto: "Auto zoom" + days: "Days" + weeks: "Weeks" + months: "Months" + quarters: "Quarters" + years: "Years" + description: > + Select the initial zoom level that should be shown when autozoom is not available. + general_text_no: "no" + general_text_yes: "yes" + general_text_No: "No" + general_text_Yes: "Yes" + hal: + error: + update_conflict_refresh: "Click here to refresh the resource and update to the newest version." + edit_prohibited: "Editing %{attribute} is blocked for this resource. Either this attribute is derived from relations (e.g, children) or otherwise not configurable." + format: + date: "%{attribute} is no valid date - YYYY-MM-DD expected." + general: "An error has occurred." + homescreen: + blocks: + new_features: + text_new_features: "Read about new features and product updates." + learn_about: "Learn more about the new features" + #Include the version to invalidate outdated translations in other locales. + #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. + '13_2': + standard: + learn_about_link: https://www.openproject.org/blog/openproject-13-2-release/ + new_features_html: > + The release contains various new features and improvements:
+ ical_sharing_modal: + title: "Subscribe to calendar" + inital_setup_error_message: "An error occured while fetching data." + description: "You can use the URL (iCalendar) to subscribe to this calendar in an external client and view up-to-date work package information from there." + warning: "Please don't share this URL with other users. Anyone with this link will be able to view work package details without an account or password." + token_name_label: "Where will you be using this?" + token_name_placeholder: "Type a name, e.g. \"Phone\"" + token_name_description_text: "If you subscribe to this calendar from multiple devices, this name will help you distinguish between them in your access tokens list." + copy_url_label: "Copy URL" + ical_generation_error_text: "An error occured while generating the calendar URL." + success_message: "The URL \"%{name}\" was successfully copied to your clipboard. Paste it in your calendar client to complete the subscription." + label_activate: "Activate" + label_assignee: 'Assignee' + label_add_column_after: "Add column after" + label_add_column_before: "Add column before" + label_add_columns: "Add columns" + label_add_comment: "Add comment" + label_add_comment_title: "Comment and type @ to notify other people" + label_add_row_after: "Add row after" + label_add_row_before: "Add row before" + label_add_selected_columns: "Add selected columns" + label_added_by: "added by" + label_added_time_by: "Added by %{author} at %{age}" + label_ago: "days ago" + label_all: "all" + label_all_work_packages: "all work packages" + label_and: "and" + label_ascending: "Ascending" + label_author: "Author: %{user}" + label_avatar: "Avatar" + label_between: "between" + label_board: "Board" + label_board_locked: "Locked" + label_board_plural: "Boards" + label_board_sticky: "Sticky" + label_change: "Change" + label_create: "Create" + label_create_work_package: "Create new work package" + label_created_by: "Created by" + label_date: "Date" + label_date_with_format: "Enter the %{date_attribute} using the following format: %{format}" + label_deactivate: "Deactivate" + label_descending: "Descending" + label_description: "Description" + label_details: "Details" + label_display: "Display" + label_cancel_comment: "Cancel comment" + label_closed_work_packages: "closed" + label_collapse: "Collapse" + label_collapsed: "collapsed" + label_collapse_all: "Collapse all" + label_comment: "Comment" + label_committed_at: "%{committed_revision_link} at %{date}" + label_committed_link: "committed revision %{revision_identifier}" + label_contains: "contains" + label_created_on: "created on" + label_edit_comment: "Edit this comment" + label_edit_status: "Edit the status of the work package" + label_email: "Email" + label_equals: "is" + label_expand: "Expand" + label_expanded: "expanded" + label_expand_all: "Expand all" + label_expand_project_menu: "Expand project menu" + label_export: "Export" + label_export_preparing: "The export is being prepared and will be downloaded shortly." + label_filename: "File" + label_filesize: "Size" + label_general: "General" + label_global_roles: "Global roles" + label_greater_or_equal: ">=" + label_group: 'Group' + label_group_by: "Group by" + label_group_plural: "Groups" + label_hide_attributes: "Show less" + label_hide_column: "Hide column" + label_hide_project_menu: "Collapse project menu" + label_in: "in" + label_in_less_than: "in less than" + label_in_more_than: "in more than" + label_incoming_emails: "Incoming emails" + label_information_plural: "Information" + label_invalid: "Invalid" + label_import: "Import" + label_latest_activity: "Latest activity" + label_last_updated_on: "Last updated on" + label_learn_more_link: "Learn more" + label_less_or_equal: "<=" + label_less_than_ago: "less than days ago" + label_loading: "Loading..." + label_mail_notification: "Email notifications" + label_me: "me" + label_meeting_agenda: "Agenda" + label_meeting_minutes: "Minutes" + label_menu_collapse: "collapse" + label_menu_expand: "expand" + label_more_than_ago: "more than days ago" + label_next: "Next" + label_no_color: "No color" + label_no_data: "No data to display" + label_no_due_date: "no finish date" + label_no_start_date: "no start date" + label_no_date: "no date" + label_no_value: "No value" + label_none: "none" + label_not_contains: "doesn't contain" + label_not_equals: "is not" + label_on: "on" + label_open_menu: "Open menu" + label_open_context_menu: "Open context menu" + label_open_work_packages: "open" + label_password: "Password" + label_previous: "Previous" + label_per_page: "Per page:" + label_please_wait: "Please wait" + label_project: "Project" + label_project_list: "Projects list" + label_project_plural: "Projects" + label_visibility_settings: "Visibility settings" + label_quote_comment: "Quote this comment" + label_recent: "Recent" + label_reset: "Reset" + label_remove: "Remove" + label_remove_column: "Remove column" + label_remove_columns: "Remove selected columns" + label_remove_row: "Remove row" + label_report: "Report" + label_repository_plural: "Repositories" + label_save_as: "Save as" + label_select_project: "Select a project" + label_select_watcher: "Select a watcher..." + label_selected_filter_list: "Selected filters" + label_show_attributes: "Show all attributes" + label_show_in_menu: "Show view in menu" + label_sort_by: "Sort by" + label_sorted_by: "sorted by" + label_sort_higher: "Move up" + label_sort_lower: "Move down" + label_sorting: "Sorting" + label_spent_time: "Spent time" + label_star_query: "Favored" + label_press_enter_to_save: "Press enter to save." + label_public_query: "Public" + label_sum: "Sum" + label_sum_for: "Sum for" + label_total_sum: "Total sum" + label_subject: "Subject" + label_this_week: "this week" + label_today: "Today" + label_time_entry_plural: "Spent time" + label_up: "Up" + label_user_plural: "Users" + label_activity_show_only_comments: "Show activities with comments only" + label_activity_show_all: "Show all activities" + label_total_progress: "%{percent}% Total progress" + label_total_amount: "Total: %{amount}" + label_updated_on: "updated on" + label_value_derived_from_children: "(value derived from children)" + label_children_derived_duration: "Work package's children derived duration" + label_warning: "Warning" + label_work_package: "Work package" + label_work_package_parent: "Parent work package" + label_work_package_plural: "Work packages" + label_watch: "Watch" + label_watch_work_package: "Watch work package" + label_watcher_added_successfully: "Watcher successfully added!" + label_watcher_deleted_successfully: "Watcher successfully deleted!" + label_work_package_details_you_are_here: "You are on the %{tab} tab for %{type} %{subject}." + label_work_package_context_menu: "Work package context menu" + label_unwatch: "Unwatch" + label_unwatch_work_package: "Unwatch work package" + label_uploaded_by: "Uploaded by" + label_default_queries: "Default" + label_starred_queries: "Favorite" + label_global_queries: "Public" + label_custom_queries: "Private" + label_columns: "Columns" + label_attachments: Attachments + label_drop_files: "Drop files here to attach files." + label_drop_or_click_files: "Drop files here or click to attach files." + label_drop_folders_hint: You cannot upload folders as an attachment. Please select single files. + label_add_attachments: "Attach files" + label_formattable_attachment_hint: "Attach and link files by dropping on this field, or pasting from the clipboard." + label_remove_file: "Delete %{fileName}" + label_remove_watcher: "Remove watcher %{name}" + label_remove_all_files: Delete all files + label_add_description: "Add a description for %{file}" + label_upload_notification: "Uploading files..." + label_work_package_upload_notification: "Uploading files for Work package #%{id}: %{subject}" + label_wp_id_added_by: "#%{id} added by %{author}" + label_files_to_upload: "These files will be uploaded:" + label_rejected_files: "These files cannot be uploaded:" + label_rejected_files_reason: "These files cannot be uploaded as their size is greater than %{maximumFilesize}" + label_wait: "Please wait for configuration..." + label_upload_counter: "%{done} of %{count} files finished" + label_validation_error: "The work package could not be saved due to the following errors:" + label_version_plural: "Versions" + label_view_has_changed: "This view has unsaved changes. Click to save them." + help_texts: + show_modal: 'Show attribute help text entry' + onboarding: + buttons: + skip: 'Skip' + next: 'Next' + got_it: 'Got it' + steps: + help_menu: 'The Help (?) menu provides additional help resources. Here you can find a user guide, helpful how-to videos and more.
Enjoy your work with OpenProject!' + members: 'Invite new members to join your project.' + quick_add_button: 'Click on the plus (+) icon in the header navigation to create a new project or to invite coworkers.' + sidebar_arrow: "Use the return arrow in the top left corner to return to the project’s main menu." + welcome: 'Take a three minutes introduction tour to learn the most important features.
We recommend completing the steps until the end. You can restart the tour any time.' + wiki: 'Within the wiki you can document and share knowledge together with your team.' + backlogs: + overview: "Manage your work in the backlogs view." + sprints: "On the right you have the product backlog and the bug backlog, on the left you have the respective sprints. Here you can create epics, user stories, and bugs, prioritize via drag & drop and add them to a sprint." + task_board_arrow: 'To see your task board, open the sprint drop-down...' + task_board_select: '...and select the task board entry.' + task_board: "The task board visualizes the progress for this sprint. Click on the plus (+) icon next to a user story to add new tasks or impediments.
The status can be updated by drag and drop." + boards: + overview: 'Select boards to shift the view and manage your project using the agile boards view.' + lists_kanban: 'Here you can create multiple lists (columns) within your board. This feature allows you to create a Kanban board, for example.' + lists_basic: 'Here you can create multiple lists (columns) within your agile board.' + add: 'Click on the plus (+) icon to create a new card or add an existing card to the list on the board.' + drag: 'Drag and drop your cards within a given list to reorder them, or to move them to another list.
You can click the info (i) icon in the upper right-hand corner or double-click a card to open its details.' + wp: + toggler: "Now let's have a look at the work package section, which gives you a more detailed view of your work." + list: 'This work package overview provides a list of all the work in your project, such as tasks, milestones, phases, and more.
Work packages can be created and edited directly from this view. To access the details of a particular work package, simply double-click its row.' + full_view: 'The work package details view provides all the relevant information pertaining to a given work package, such as its description, status, priority, activities, dependencies, and comments.' + back_button: 'Use the return arrow in the top left corner to exit and return to the work package list.' + create_button: 'The + Create button will add a new work package to your project.' + timeline_button: 'You can activate the Gantt chart view to create a timeline for your project.' + timeline: 'Here you can edit your project plan, create new work packages, such as tasks, milestones, phases, and more, as well as add dependencies. All team members can see and update the latest plan at any time.' + team_planner: + overview: 'The team planner lets you visually assign tasks to team members and get an overview of who is working on what.' + calendar: 'The weekly or biweekly planning board displays all work packages assigned to your team members.' + add_assignee: 'To get started, add assignees to the team planner.' + add_existing: 'Search for existing work packages and drag them to the team planner to instantly assign them to a team member and define start and end dates.' + card: 'Drag work packages horizontally to move them backwards or forwards in time, drag the edges to change start and end dates and even drag them vertically to a different row to assign them to another member.' + notifications: + title: "Notifications" + no_unread: "No unread notifications" + reasons: + mentioned: 'mentioned' + watched: 'watcher' + assigned: 'assignee' + responsible: 'accountable' + created: 'created' + scheduled: 'scheduled' + commented: 'commented' + processed: 'processed' + prioritized: 'prioritized' + dateAlert: 'Date alert' + shared: 'shared' + date_alerts: + milestone_date: 'Milestone date' + overdue: 'Overdue' + overdue_since: 'since %{difference_in_days}' + property_today: 'is today' + property_is: 'is in %{difference_in_days}' + property_was: 'was %{difference_in_days} ago' + property_is_deleted: 'is deleted' + upsale: + title: 'Date alerts' + description: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' + facets: + unread: 'Unread' + unread_title: 'Show unread' + all: 'All' + all_title: 'Show all' + center: + label_actor_and: 'and' + and_more_users: + one: 'and 1 other' + other: 'and %{count} others' + no_results: + at_all: 'New notifications will appear here when there is activity that concerns you.' + with_current_filter: 'There are no notifications in this view at the moment' + mark_all_read: 'Mark all as read' + mark_as_read: 'Mark as read' + text_update_date: "%{date} by" + total_count_warning: "Showing the %{newest_count} most recent notifications. %{more_count} more are not displayed." + empty_state: + no_notification: "Looks like you are all caught up." + no_notification_with_current_project_filter: "Looks like you are all caught up with the selected project." + no_notification_with_current_filter: "Looks like you are all caught up for %{filter} filter." + no_selection: "Click on a notification to view all activity details." + new_notifications: + message: 'There are new notifications.' + link_text: 'Click here to load them' + menu: + accountable: 'Accountable' + by_project: 'Unread by project' + by_reason: 'Reason' + inbox: 'Inbox' + mentioned: 'Mentioned' + watched: 'Watcher' + date_alert: 'Date alert' + shared: 'Shared' + settings: + change_notification_settings: 'You can modify your notification settings to ensure you never miss an important update.' + title: "Notification settings" + notify_me: "Notify me" + reminders: + no_notification: No notification + timeframes: + normal: + PT0S: same day + P1D: 1 day before + P3D: 3 days before + P7D: a week before + overdue: + P1D: every day + P3D: every 3 days + P7D: every week + reasons: + mentioned: + title: 'Mentioned' + description: 'Receive a notification every time someone mentions me anywhere' + assignee: 'Assignee' + responsible: 'Accountable' + shared: 'Shared' + watched: 'Watcher' + work_package_commented: 'All new comments' + work_package_created: 'New work packages' + work_package_processed: 'All status changes' + work_package_prioritized: 'All priority changes' + work_package_scheduled: 'All date changes' + global: + immediately: + title: 'Participating' + description: 'Notifications for all activities in work packages you are involved in (assignee, accountable or watcher).' + delayed: + title: 'Non-participating' + description: 'Additional notifications for activities in all projects.' + date_alerts: + title: 'Date alerts' + description: 'Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher).' + teaser_text: 'With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline.' + overdue: When overdue + project_specific: + title: 'Project-specific notification settings' + description: 'These project-specific settings override default settings above.' + add: 'Add setting for project' + already_selected: 'This project is already selected' + remove: 'Remove project settings' + password_confirmation: + field_description: 'You need to enter your account password to confirm this change.' + title: 'Confirm your password to continue' + pagination: + no_other_page: "You are on the only page." + pages: + next: "Forward to the next page" + previous: "Back to the previous page" + placeholders: + default: '-' + subject: 'Enter subject here' + selection: 'Please select' + description: 'Description: Click to edit...' + relation_description: 'Click to add description for this relation' + project: + required_outside_context: > + Please choose a project to create the work package in to see all attributes. You can only select projects which have the type above activated. + details_activity: 'Project details activity' + context: 'Project context' + click_to_switch_to_project: 'Project: %{projectname}' + confirm_template_load: 'Switching the template will reload the page and you will lose all input to this form. Continue?' + use_template: "Use template" + no_template_selected: "(None)" + copy: + copy_options: "Copy options" + autocompleter: + label: 'Project autocompletion' + reminders: + settings: + daily: + add_time: 'Add time' + enable: 'Enable daily email reminders' + explanation: 'You will receive these reminders only for unread notifications and only at hours you specify. %{no_time_zone}' + no_time_zone: 'Until you configure a time zone for your account, the times will be interpreted to be in UTC.' + time_label: 'Time %{counter}:' + title: 'Send me daily email reminders for unread notifications' + workdays: + title: 'Receive email reminders on these days' + immediate: + title: 'Send me an email reminder' + mentioned: 'Immediately when someone @mentions me' + alerts: + title: 'Email alerts for other items (that are not work packages)' + explanation: > + Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications: + news_added: 'News added' + news_commented: 'Comment on a news item' + document_added: 'Documents added' + forum_messages: 'New forum messages' + wiki_page_added: 'Wiki page added' + wiki_page_updated: 'Wiki page updated' + membership_added: 'Membership added' + membership_updated: 'Membership updated' + title: 'Email reminders' + pause: + label: 'Temporarily pause daily email reminders' + first_day: 'First day' + last_day: 'Last day' + text_are_you_sure: "Are you sure?" + text_data_lost: "All entered data will be lost." + text_user_wrote: "%{value} wrote:" + types: + attribute_groups: + error_duplicate_group_name: "The name %{group} is used more than once. Group names must be unique." + error_no_table_configured: "Please configure a table for %{group}." + reset_title: "Reset form configuration" + confirm_reset: > + Warning: Are you sure you want to reset the form configuration? This will reset the attributes to their default group and disable ALL custom fields. + upgrade_to_ee: "Upgrade to Enterprise on-premises edition" + upgrade_to_ee_text: "Wow! If you need this add-on you are a super pro! Would you mind supporting us OpenSource developers by becoming an Enterprise edition client?" + more_information: "More information" + nevermind: "Nevermind" + edit: + form_configuration: "Form Configuration" + projects: "Projects" + settings: "Settings" + time_entry: + work_package_required: 'Requires selecting a work package first.' + title: 'Log time' + tracking: 'Time tracking' + stop: 'Stop' + timer: + start_new_timer: 'Start new timer' + timer_already_running: 'To start a new timer, you must first stop the current timer:' + timer_already_stopped: 'No active timer for this work package, have you stopped it in another window?' + tracking_time: 'Tracking time' + button_stop: 'Stop current timer' + two_factor_authentication: + label_two_factor_authentication: 'Two-factor authentication' + watchers: + label_loading: loading watchers... + label_error_loading: An error occurred while loading the watchers + label_search_watchers: Search watchers + label_add: Add watchers + label_discard: Discard selection + typeahead_placeholder: Search for possible watchers + relation_labels: + parent: "Parent" + children: "Children" + relates: "Related To" + duplicates: "Duplicates" + duplicated: "Duplicated by" + blocks: "Blocks" + blocked: "Blocked by" + precedes: "Precedes" + follows: "Follows" + includes: "Includes" + partof: "Part of" + requires: "Requires" + required: "Required by" + relation_type: "relation type" + relations_hierarchy: + parent_headline: "Parent" + hierarchy_headline: "Hierarchy" + children_headline: "Children" + relation_buttons: + set_parent: "Set parent" + change_parent: "Change parent" + remove_parent: "Remove parent" + hierarchy_indent: "Indent hierarchy" + hierarchy_outdent: "Outdent hierarchy" + group_by_wp_type: "Group by work package type" + group_by_relation_type: "Group by relation type" + add_parent: "Add existing parent" + add_new_child: "Create new child" + create_new: "Create new" + add_existing: "Add existing" + add_existing_child: "Add existing child" + remove_child: "Remove child" + add_new_relation: "Create new relation" + add_existing_relation: "Add existing relation" + update_description: "Set or update description of this relation" + toggle_description: "Toggle relation description" + update_relation: "Click to change the relation type" + add_follower: "Add follower" + show_relations: "Show relations" + add_predecessor: "Add predecessor" + remove: "Remove relation" + save: "Save relation" + abort: "Abort" + relations_autocomplete: + placeholder: "Type to search" + parent_placeholder: "Choose new parent or press escape to cancel." + autocompleter: + placeholder: "Type to search" + notFoundText: "No items found" + project: + placeholder: "Select project" + repositories: + select_tag: 'Select tag' + select_branch: 'Select branch' + field_value_enter_prompt: "Enter a value for '%{field}'" + project_menu_details: "Details" + scheduling: + manual: 'Manual scheduling' + sort: + sorted_asc: 'Ascending sort applied, ' + sorted_dsc: 'Descending sort applied, ' + sorted_no: 'No sort applied, ' + sorting_disabled: 'sorting is disabled' + activate_asc: 'activate to apply an ascending sort' + activate_dsc: 'activate to apply a descending sort' + activate_no: 'activate to remove the sort' + text_work_packages_destroy_confirmation: "Are you sure you want to delete the selected work package(s)?" + text_query_destroy_confirmation: "Are you sure you want to delete the selected view?" + tl_toolbar: + zooms: "Zoom level" + outlines: "Hierarchy level" + upsale: + ee_only: 'Enterprise edition add-on' + wiki_formatting: + strong: "Strong" + italic: "Italic" + underline: "Underline" + deleted: "Deleted" + code: "Inline Code" + heading1: "Heading 1" + heading2: "Heading 2" + heading3: "Heading 3" + unordered_list: "Unordered List" + ordered_list: "Ordered List" + quote: "Quote" + unquote: "Unquote" + preformatted_text: "Preformatted Text" + wiki_link: "Link to a Wiki page" + image: "Image" + work_packages: + bulk_actions: + move: 'Bulk change of project' + edit: 'Bulk edit' + copy: 'Bulk copy' + delete: 'Bulk delete' + button_clear: "Clear" + comment_added: "The comment was successfully added." + comment_send_failed: "An error has occurred. Could not submit the comment." + comment_updated: "The comment was successfully updated." + confirm_edit_cancel: "Are you sure you want to cancel editing the work package?" + datepicker_modal: + automatically_scheduled_parent: "Automatically scheduled. Dates are derived from relations." + manually_scheduled: "Manual scheduling enabled, all relations ignored." + start_date_limited_by_relations: "Available start and finish dates are limited by relations." + changing_dates_affects_follow_relations: "Changing these dates will affect dates of related work packages." + click_on_show_relations_to_open_gantt: 'Click on "%{button_name}" for GANTT overview.' + show_relations: 'Show relations' + ignore_non_working_days: + title: 'Working days only' + description_filter: "Filter" + description_enter_text: "Enter text" + description_options_hide: "Hide options" + description_options_show: "Show options" + edit_attribute: "%{attribute} - Edit" + key_value: "%{key}: %{value}" + label_enable_multi_select: "Enable multiselect" + label_disable_multi_select: "Disable multiselect" + label_filter_add: "Add filter" + label_filter_by_text: "Filter by text" + label_options: "Options" + label_column_multiselect: "Combined dropdown field: Select with arrow keys, confirm selection with enter, delete with backspace" + message_error_during_bulk_delete: An error occurred while trying to delete work packages. + message_successful_bulk_delete: Successfully deleted work packages. + message_successful_show_in_fullscreen: "Click here to open this work package in fullscreen view." + message_view_spent_time: "Show spent time for this work package" + message_work_package_read_only: "Work package is locked in this status. No attribute other than status can be altered." + message_work_package_status_blocked: "Work package status is not writable due to closed status and closed version being assigned." + placeholder_filter_by_text: "Subject, description, comments, ..." + baseline: + addition_label: 'Added to view within the comparison time period' + removal_label: 'Removed from view within the comparison time period' + modification_label: 'Modified within the comparison time period' + column_incompatible: 'This column does not show changes in Baseline mode.' + filters: + title: 'Filter work packages' + baseline_incompatible: 'This filter attribute is not taken into consideration in Baseline mode.' + baseline_warning: 'Baseline mode is on but some of your active filters are not included in the comparison.' + inline_create: + title: 'Click here to add a new work package to this list' + create: + title: 'New work package' + header: 'New %{type}' + header_no_type: 'New work package (Type not yet set)' + header_with_parent: 'New %{type} (Child of %{parent_type} #%{id})' + button: 'Create' + copy: + title: 'Copy work package' + hierarchy: + show: "Show hierarchy mode" + hide: "Hide hierarchy mode" + toggle_button: 'Click to toggle hierarchy mode.' + leaf: 'Work package leaf at level %{level}.' + children_collapsed: 'Hierarchy level %{level}, collapsed. Click to show the filtered children' + children_expanded: 'Hierarchy level %{level}, expanded. Click to collapse the filtered children' + faulty_query: + title: Work packages could not be loaded. + description: Your view is erroneous and could not be processed. + no_results: + title: No work packages to display. + description: Either none have been created or all work packages are filtered out. + limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. + property_groups: + details: "Details" + people: "People" + estimatesAndTime: "Estimates & Time" + other: "Other" + properties: + assignee: "Assignee" + author: "Author" + createdAt: "Created on" + description: "Description" + date: "Date" + dueDate: "Finish date" + duration: "Duration" + spentTime: "Spent time" + category: "Category" + percentageDone: "Percentage done" + priority: "Priority" + projectName: "Project" + responsible: "Responsible" + startDate: "Start date" + status: "Status" + subject: "Subject" + subproject: "Subproject" + title: "Title" + type: "Type" + updatedAt: "Updated on" + versionName: "Version" + version: "Version" + remainingTime: "Remaining work" + default_queries: + latest_activity: "Latest activity" + created_by_me: "Created by me" + assigned_to_me: "Assigned to me" + recently_created: "Recently created" + all_open: "All open" + summary: "Summary" + shared_with_users: "Shared with users" + jump_marks: + pagination: "Jump to table pagination" + label_pagination: "Click here to skip over the work packages table and go to pagination" + content: "Jump to content" + label_content: "Click here to skip over the menu and go to the content" + placeholders: + default: "-" + date: "Select date" + query: + column_names: "Columns" + group_by: "Group results by" + group: "Group by" + group_by_disabled_by_hierarchy: "Group by is disabled due to the hierarchy mode being active." + hierarchy_disabled_by_group_by: "Hierarchy mode is disabled due to results being grouped by %{column}." + sort_ascending: "Sort ascending" + sort_descending: "Sort descending" + move_column_left: "Move column left" + move_column_right: "Move column right" + hide_column: "Hide column" + insert_columns: "Insert columns" + filters: "Filters" + display_sums: "Display Sums" + confirm_edit_cancel: "Are you sure you want to cancel editing the name of this view? Title will be set back to previous value." + click_to_edit_query_name: "Click to edit title of this view." + rename_query_placeholder: "Name of this view" + star_text: "Mark this view as favorite and add to the saved views sidebar on the left." + public_text: > + Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results. + errors: + unretrievable_query: "Unable to retrieve view from URL" + not_found: "There is no such view" + duplicate_query_title: "Name of this view already exists. Change anyway?" + text_no_results: "No matching views were found." + scheduling: + is_parent: "The dates of this work package are automatically deduced from its children. Activate 'Manual scheduling' to set the dates." + is_switched_from_manual_to_automatic: "The dates of this work package may need to be recalculated after switching from manual to automatic scheduling due to relationships with other work packages." + sharing: + share: 'Share' + title: "Share work package" + selected_count: "%{count} selected" + selection: + mixed: "Mixed" + upsale: + description: "Share work packages with users who are not members of the project." + table: + configure_button: 'Configure work package table' + summary: "Table with rows of work package and columns of work package attributes." + text_inline_edit: "Most cells of this table are buttons that activate inline-editing functionality of that attribute." + text_sort_hint: "With the links in the table headers you can sort, group, reorder, remove and add table columns." + text_select_hint: "Select boxes should be opened with 'ALT' and arrow keys." + table_configuration: + button: 'Configure this work package table' + choose_display_mode: 'Display work packages as' + modal_title: 'Work package table configuration' + embedded_tab_disabled: "This configuration tab is not available for the embedded view you are editing." + default: "default" + display_settings: 'Display settings' + default_mode: "Flat list" + hierarchy_mode: "Hierarchy" + hierarchy_hint: "All filtered table results will be augmented with their ancestors. Hierarchies can be expanded and collapsed." + display_sums_hint: "Display sums of all summable attributes in a row below the table results." + show_timeline_hint: "Show an interactive gantt chart on the right side of the table. You can change its width by dragging the divider between table and gantt chart." + highlighting: 'Highlighting' + highlighting_mode: + description: "Highlight with color" + none: "No highlighting" + inline: 'Highlighted attribute(s)' + inline_all: 'All attributes' + entire_row_by: 'Entire row by' + status: 'Status' + priority: 'Priority' + type: 'Type' + sorting_mode: + description: 'Chose the mode to sort your Work packages:' + automatic: 'Automatic' + manually: 'Manually' + warning: 'You will lose your previous sorting when activating the automatic sorting mode.' + columns_help_text: "Use the input field above to add columns to your table view. You can drag and drop the columns to reorder them." + upsale: + attribute_highlighting: 'Need certain work packages to stand out from the mass?' + relation_columns: 'Need to see relations in the work package list?' + check_out_link: 'Check out the Enterprise edition.' + relation_filters: + filter_work_packages_by_relation_type: 'Filter work packages by relation type' + tabs: + overview: Overview + activity: Activity + relations: Relations + watchers: Watchers + files: Files + time_relative: + days: "days" + weeks: "weeks" + months: "months" + toolbar: + settings: + configure_view: "Configure view" + columns: "Columns" + sort_by: "Sort by" + group_by: "Group by" + display_sums: "Display sums" + display_hierarchy: "Display hierarchy" + hide_hierarchy: "Hide hierarchy" + hide_sums: "Hide sums" + save: "Save" + save_as: "Save as" + export: "Export" + visibility_settings: "Visibility settings" + share_calendar: "Subscribe to calendar" + page_settings: "Rename view" + delete: "Delete" + filter: "Filter" + unselected_title: "Work package" + search_query_label: "Search saved views" + modals: + label_name: "Name" + label_delete_page: "Delete current page" + button_apply: "Apply" + button_save: "Save" + button_submit: "Submit" + button_cancel: "Cancel" + button_delete: "Delete" + form_submit: + title: 'Confirm to continue' + text: 'Are you sure you want to perform this action?' + destroy_work_package: + title: "Confirm deletion of %{label}" + single_text: "Are you sure you want to delete the work package" + bulk_text: "Are you sure you want to delete the following %{label}?" + has_children: "The work package has %{childUnits}:" + confirm_deletion_children: "I acknowledge that ALL descendants of the listed work packages will be recursively removed." + deletes_children: "All child work packages and their descendants will also be recursively deleted." + destroy_time_entry: + title: "Confirm deletion of time entry" + text: "Are you sure you want to delete the following time entry?" + notice_no_results_to_display: "No visible results to display." + notice_successful_create: "Successful creation." + notice_successful_delete: "Successful deletion." + notice_successful_update: "Successful update." + notice_job_started: "job started." + notice_bad_request: "Bad Request." + relations: + empty: No relation exists + remove: Remove relation + inplace: + button_edit: "%{attribute}: Edit" + button_save: "%{attribute}: Save" + button_cancel: "%{attribute}: Cancel" + button_save_all: "Save" + button_cancel_all: "Cancel" + link_formatting_help: "Text formatting help" + btn_preview_enable: "Preview" + btn_preview_disable: "Disable preview" + null_value_label: "No value" + clear_value_label: "-" + errors: + required: '%{field} cannot be empty' + number: '%{field} is not a valid number' + maxlength: '%{field} cannot contain more than %{maxLength} digit(s)' + minlength: '%{field} cannot contain less than %{minLength} digit(s)' + messages_on_field: 'This field is invalid: %{messages}' + error_could_not_resolve_version_name: "Couldn't resolve version name" + error_could_not_resolve_user_name: "Couldn't resolve user name" + error_attachment_upload: "File failed to upload: %{error}" + error_attachment_upload_permission: "You don't have the permission to upload files on this resource." + units: + workPackage: + one: "work package" + other: "work packages" + child_work_packages: + one: "one child work package" + other: "%{count} work package children" + hour: + one: "1 h" + other: "%{count} h" + zero: "0 h" + day: + one: "1 day" + other: "%{count} days" + zero: "0 days" + zen_mode: + button_activate: 'Activate zen mode' + button_deactivate: 'Deactivate zen mode' + global_search: + all_projects: "In all projects" + close_search: "Close search" + current_project_and_all_descendants: "In this project + subprojects" + current_project: "In this project" + recently_viewed: "Recently viewed" + search: "Search" + title: + all_projects: "all projects" + project_and_subprojects: "and all subprojects" + search_for: "Search for" + views: + card: 'Cards' + list: 'Table' + timeline: 'Gantt' + invite_user_modal: + back: 'Back' + invite: 'Invite' + title: + invite: 'Invite user' + invite_to_project: 'Invite %{type} to %{project}' + User: 'user' + Group: 'group' + PlaceholderUser: 'placeholder user' + invite_principal_to_project: 'Invite %{principal} to %{project}' + project: + label: 'Project' + required: 'Please select a project' + lacking_permission: 'Please select a different project since you lack permissions to assign users to the currently selected.' + lacking_permission_info: 'You lack the permission to assign users to the project you are currently in. You need to select a different one.' + next_button: 'Next' + no_results: 'No projects were found' + no_invite_rights: 'You are not allowed to invite members to this project' + type: + required: 'Please select the type to be invited' + user: + title: 'User' + description: 'Permissions based on the assigned role in the selected project' + group: + title: 'Group' + description: 'Permissions based on the assigned role in the selected project' + placeholder: + title: 'Placeholder user' + title_no_ee: 'Placeholder user (Enterprise edition only add-on)' + description: 'Has no access to the project and no emails are sent out.' + description_no_ee: 'Has no access to the project and no emails are sent out.
Check out the Enterprise edition' + principal: + label: + name_or_email: 'Name or email address' + name: 'Name' + already_member_message: 'Already a member of %{project}' + no_results_user: 'No users were found' + invite_user: 'Invite:' + no_results_placeholder: 'No placeholders were found' + create_new_placeholder: 'Create new placeholder:' + no_results_group: 'No groups were found' + next_button: 'Next' + required: + user: 'Please select a user' + placeholder: 'Please select a placeholder' + group: 'Please select a group' + role: + label: 'Role in %{project}' + no_roles_found: 'No roles were found' + description: 'This is the role that the user will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. Learn more about roles and permissions. ' + required: 'Please select a role' + next_button: 'Next' + message: + label: 'Invitation message' + description: 'We will send an email to the user, to which you can add a personal message here. An explanation for the invitation could be useful, or prehaps a bit of information regarding the project to help them get started.' + next_button: 'Next' + summary: + next_button: 'Send invitation' + success: + title: '%{principal} was invited!' + description: + user: 'The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance.' + placeholder: 'The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance.' + group: 'The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance.' + next_button: 'Continue' + include_projects: + toggle_title: 'Include projects' + title: 'Projects' + clear_selection: 'Clear selection' + apply: 'Apply' + selected_filter: + all: 'All projects' + selected: 'Only selected' + search_placeholder: 'Search project...' + include_subprojects: 'Include all sub-projects' + tooltip: + include_all_selected: 'Project already included since Include all sub-projects is enabled.' + current_project: 'This is the current project you are in.' + does_not_match_search: 'Project does not match the search criteria.' + no_results: 'No project matches your search criteria.' + baseline: + toggle_title: 'Baseline' + clear: 'Clear' + apply: 'Apply' + header_description: 'Highlight changes made to this list since any point in the past.' + enterprise_header_description: 'Highlight changes made to this list since any point in the past with Enterprise edition.' + show_changes_since: 'Show changes since' + baseline_comparison: 'Baseline comparison' + help_description: 'Reference time zone for the baseline.' + time_description: 'In your local time: %{datetime}' + time: 'Time' + from: 'From' + to: 'To' + drop_down: + none: '-' + yesterday: 'yesterday' + last_working_day: 'last working day' + last_week: 'last week' + last_month: 'last month' + a_specific_date: 'a specific date' + between_two_specific_dates: 'between two specific dates' + legends: + changes_since: 'Changes since' + changes_between: 'Changes between' + now_meets_filter_criteria: 'Now meets filter criteria' + no_longer_meets_filter_criteria: 'No longer meets filter criteria' + maintained_with_changes: 'Maintained with changes' + in_your_timezone: 'In your local timezone:' + icon_tooltip: + added: 'Added to view within the comparison time period' + removed: 'Removed from view within the comparison time period' + changed: 'Maintained with modifications' + forms: + submit_success_message: 'The form was successfully submitted' + load_error_message: 'There was an error loading the form' + validation_error_message: 'Please fix the errors present in the form' + advanced_settings: 'Advanced settings' + spot: + filter_chip: + remove: 'Remove' + drop_modal: + focus_grab: 'This is a focus anchor for modals. Press shift+tab to go back to the modal trigger element.' + Close: 'Close' diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index 24b37bad2c27..080e861d5a0c 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -985,7 +985,7 @@ ru: updatedAt: "Обновлено" versionName: "Этап" version: "Этап" - remainingTime: "Оставшаяся работа" + remainingTime: "Оставшиеся часы" default_queries: latest_activity: "Последние действия" created_by_me: "Создано мной" diff --git a/config/locales/crowdin/kk.seeders.yml b/config/locales/crowdin/kk.seeders.yml new file mode 100644 index 000000000000..2d977cf4660b --- /dev/null +++ b/config/locales/crowdin/kk.seeders.yml @@ -0,0 +1,471 @@ +#This file has been generated by script/i18n/generate_seeders_i18n_source_file. +#Please do not edit directly. +#This file is part of the sources sent to crowdin for translation. +--- +kk: + seeds: + common: + colors: + item_0: + name: Blue (dark) + item_1: + name: Blue + item_2: + name: Blue (light) + item_3: + name: Green (light) + item_4: + name: Green (dark) + item_5: + name: Yellow + item_6: + name: Orange + item_7: + name: Red + item_8: + name: Magenta + item_9: + name: White + item_10: + name: Grey (light) + item_11: + name: Grey + item_12: + name: Grey (dark) + item_13: + name: Black + document_categories: + item_0: + name: Documentation + item_1: + name: Specification + item_2: + name: Other + work_package_roles: + item_0: + name: Work package editor + item_1: + name: Work package commenter + item_2: + name: Work package viewer + project_roles: + item_0: + name: Non member + item_1: + name: Anonymous + item_2: + name: Member + item_3: + name: Reader + item_4: + name: Project admin + global_roles: + item_0: + name: Staff and projects manager + standard: + priorities: + item_0: + name: Low + item_1: + name: Normal + item_2: + name: High + item_3: + name: Immediate + statuses: + item_0: + name: New + item_1: + name: In specification + item_2: + name: Specified + item_3: + name: Confirmed + item_4: + name: To be scheduled + item_5: + name: Scheduled + item_6: + name: In progress + item_7: + name: Developed + item_8: + name: In testing + item_9: + name: Tested + item_10: + name: Test failed + item_11: + name: Closed + item_12: + name: On hold + item_13: + name: Rejected + time_entry_activities: + item_0: + name: Management + item_1: + name: Specification + item_2: + name: Development + item_3: + name: Testing + item_4: + name: Support + item_5: + name: Other + types: + item_0: + name: Task + item_1: + name: Milestone + item_2: + name: Phase + item_3: + name: Feature + item_4: + name: Epic + item_5: + name: User story + item_6: + name: Bug + welcome: + title: Welcome to OpenProject! + text: | + OpenProject is the leading open source project management software. It supports classic, agile as well as hybrid project management and gives you full control over your data. + + Core features and use cases: + + * [Project Portfolio Management](https://www.openproject.org/collaboration-software-features/project-portfolio-management/) + * [Project Planning and Scheduling](https://www.openproject.org/collaboration-software-features/project-planning-scheduling/) + * [Task Management and Issue Tracking](https://www.openproject.org/collaboration-software-features/task-management/) + * [Agile Boards (Scrum and Kanban)](https://www.openproject.org/collaboration-software-features/agile-project-management/) + * [Requirements Management and Release Planning](https://www.openproject.org/collaboration-software-features/product-development/) + * [Time and Cost Tracking, Budgets](https://www.openproject.org/collaboration-software-features/time-tracking/) + * [Team Collaboration and Documentation](https://www.openproject.org/collaboration-software-features/team-collaboration/) + + Welcome to the future of project management. + + For Admins: You can change this welcome text [here]({{opSetting:base_url}}/admin/settings/general). + projects: + demo-project: + name: Demo project + status_explanation: All tasks are on schedule. The people involved know their tasks. The system is completely set up. + description: This is a short summary of the goals of this demo project. + news: + item_0: + title: Welcome to your demo project + summary: | + We are glad you joined. + In this module you can communicate project news to your team members. + description: The actual news + categories: + item_0: Category 1 (to be changed in Project settings) + queries: + item_0: + name: Project plan + item_1: + name: Milestones + item_2: + name: Tasks + item_3: + name: Team planner + boards: + kanban: + name: Kanban board + basic: + name: Basic board + lists: + item_0: + name: Wish list + item_1: + name: Short list + item_2: + name: Priority list for today + item_3: + name: Never + parent_child: + name: Work breakdown structure + project-overview: + widgets: + item_0: + options: + name: Welcome + item_1: + options: + name: Getting started + text: | + We are glad you joined! We suggest to try a few things to get started in OpenProject. + + Discover the most important features with our [Guided Tour]({{opSetting:base_url}}/projects/demo-project/work_packages/?start_onboarding_tour=true). + + _Try the following steps:_ + + 1. *Invite new members to your project*: → Go to [Members]({{opSetting:base_url}}/projects/demo-project/members) in the project navigation. + 2. *View the work in your project*: → Go to [Work packages]({{opSetting:base_url}}/projects/demo-project/work_packages) in the project navigation. + 3. *Create a new work package*: → Go to [Work packages → Create]({{opSetting:base_url}}/projects/demo-project/work_packages/new). + 4. *Create and update a project plan*: → Go to [Project plan]({{opSetting:base_url}}/projects/demo-project/work_packages?query_id=##query.id:demo_project__query__project_plan) in the project navigation. + 5. *Activate further modules*: → Go to [Project settings → Modules]({{opSetting:base_url}}/projects/demo-project/settings/modules). + 6. *Complete your tasks in the project*: → Go to [Work packages → Tasks]({{opSetting:base_url}}/projects/demo-project/work_packages/details/##wp.id:set_date_and_location_of_conference/overview?query_id=##query.id:demo_project__query__tasks). + + Here you will find our [User Guides](https://www.openproject.org/docs/user-guide/). + Please let us know if you have any questions or need support. Contact us: [support[at]openproject.com](mailto:support@openproject.com). + item_5: + options: + name: Work packages + item_6: + options: + name: Milestones + work_packages: + item_0: + subject: Start of project + item_1: + subject: Organize open source conference + children: + item_0: + subject: Set date and location of conference + children: + item_0: + subject: Send invitation to speakers + item_1: + subject: Contact sponsoring partners + item_2: + subject: Create sponsorship brochure and hand-outs + item_1: + subject: Invite attendees to conference + item_2: + subject: Setup conference website + item_2: + subject: Conference + item_3: + subject: Follow-up tasks + children: + item_0: + subject: Upload presentations to website + item_1: + subject: Party for conference supporters :-) + description: |- + * [ ] Beer + * [ ] Snacks + * [ ] Music + * [ ] Even more beer + item_4: + subject: End of project + scrum-project: + name: Scrum project + status_explanation: All tasks are on schedule. The people involved know their tasks. The system is completely set up. + description: This is a short summary of the goals of this demo Scrum project. + news: + item_0: + title: Welcome to your Scrum demo project + summary: | + We are glad you joined. + In this module you can communicate project news to your team members. + versions: + item_0: + name: Bug Backlog + item_1: + name: Product Backlog + item_2: + name: Sprint 1 + wiki: + title: Sprint 1 + content: | + ### Sprint planning meeting + + _Please document here topics to the Sprint planning meeting_ + + * Time boxed (8 h) + * Input: Product Backlog + * Output: Sprint Backlog + + * Divided into two additional time boxes of 4 h: + + * The Product Owner presents the [Product Backlog]({{opSetting:base_url}}/projects/your-scrum-project/backlogs) and the priorities to the team and explains the Sprint Goal, to which the team must agree. Together, they prioritize the topics from the Product Backlog which the team will take care of in the next sprint. The team commits to the discussed delivery. + * The team plans autonomously (without the Product Owner) in detail and breaks down the tasks from the discussed requirements to consolidate a [Sprint Backlog]({{opSetting:base_url}}/projects/your-scrum-project/backlogs). + + + ### Daily Scrum meeting + + _Please document here topics to the Daily Scrum meeting_ + + * Short, daily status meeting of the team. + * Time boxed (max. 15 min). + * Stand-up meeting to discuss the following topics from the [Task board](##sprint:scrum_project__version__sprint_1). + * What do I plan to do until the next Daily Scrum? + * What has blocked my work (Impediments)? + * Scrum Master moderates and notes down [Sprint Impediments](##sprint:scrum_project__version__sprint_1). + * Product Owner may participate may participate in order to stay informed. + + ### Sprint Review meeting + + _Please document here topics to the Sprint Review meeting_ + + * Time boxed (4 h). + * A maximum of one hour of preparation time per person. + * The team shows the product owner and other interested persons what has been achieved in this sprint. + * Important: no dummies and no PowerPoint! Just finished product functionality (Increments) should be demonstrated. + * Feedback from Product Owner, stakeholders and others is desired and will be included in further work. + * Based on the demonstrated functionalities, the Product Owner decides to go live with this increment or to develop it further. This possibility allows an early ROI. + + + ### Sprint Retrospective + + _Please document here topics to the Sprint Retrospective meeting_ + + * Time boxed (3 h). + * After Sprint Review, will be moderated by Scrum Master. + * The team discusses the sprint: what went well, what needs to be improved to be more productive for the next sprint or even have more fun. + item_3: + name: Sprint 2 + categories: + item_0: Category 1 (to be changed in Project settings) + queries: + item_0: + name: Project plan + item_1: + name: Product backlog + item_2: + name: Sprint 1 + item_3: + name: Tasks + boards: + kanban: + name: Kanban board + basic: + name: Task board + lists: + item_0: + name: Wish list + item_1: + name: Short list + item_2: + name: Priority list for today + item_3: + name: Never + project-overview: + widgets: + item_0: + options: + name: Welcome + item_1: + options: + name: Getting started + text: | + We are glad you joined! We suggest to try a few things to get started in OpenProject. + + _Try the following steps:_ + + 1. *Invite new members to your project*: → Go to [Members]({{opSetting:base_url}}/projects/your-scrum-project/members) in the project navigation. + 2. *View your Product backlog and Sprint backlogs*: → Go to [Backlogs]({{opSetting:base_url}}/projects/your-scrum-project/backlogs) in the project navigation. + 3. *View your Task board*: → Go to [Backlogs]({{opSetting:base_url}}/projects/your-scrum-project/backlogs) → Click on right arrow on Sprint → Select [Task Board](##sprint:scrum_project__version__sprint_1). + 4. *Create a new work package*: → Go to [Work packages → Create]({{opSetting:base_url}}/projects/your-scrum-project/work_packages/new). + 5. *Create and update a project plan*: → Go to [Project plan](##query:scrum_project__query__project_plan) in the project navigation. + 6. *Create a Sprint wiki*: → Go to [Backlogs]({{opSetting:base_url}}/projects/your-scrum-project/backlogs) and open the sprint wiki from the right drop down menu in a sprint. You can edit the [wiki template]({{opSetting:base_url}}/projects/your-scrum-project/wiki/) based on your needs. + 7. *Activate further modules*: → Go to [Project settings → Modules]({{opSetting:base_url}}/projects/your-scrum-project/settings/modules). + + Here you will find our [User Guides](https://www.openproject.org/docs/user-guide/). + Please let us know if you have any questions or need support. Contact us: [support[at]openproject.com](mailto:support@openproject.com). + item_5: + options: + name: Work packages + item_6: + options: + name: Project plan + work_packages: + item_0: + subject: New login screen + item_1: + subject: Password reset does not send email + item_2: + subject: New website + children: + item_0: + subject: Newsletter registration form + item_1: + subject: Implement product tour + item_2: + subject: New landing page + children: + item_0: + subject: Create wireframes for new landing page + item_3: + subject: Contact form + item_4: + subject: Feature carousel + children: + item_0: + subject: Make screenshots for feature tour + item_5: + subject: Wrong hover color + item_6: + subject: SSL certificate + item_7: + subject: Set-up Staging environment + item_8: + subject: Choose a content management system + item_9: + subject: Website navigation structure + children: + item_0: + subject: Set up navigation concept for website. + item_10: + subject: Internal link structure + item_11: + subject: Develop v1.0 + item_12: + subject: Release v1.0 + item_13: + subject: Develop v1.1 + item_14: + subject: Release v1.1 + item_15: + subject: Develop v2.0 + item_16: + subject: Release v2.0 + wiki: | + ### Sprint planning meeting + + _Please document here topics to the Sprint planning meeting_ + + * Time boxed (8 h) + * Input: Product Backlog + * Output: Sprint Backlog + + * Divided into two additional time boxes of 4 h: + + * The Product Owner presents the [Product Backlog]({{opSetting:base_url}}/projects/your-scrum-project/backlogs) and the priorities to the team and explains the Sprint Goal, to which the team must agree. Together, they prioritize the topics from the Product Backlog which the team will take care of in the next sprint. The team commits to the discussed delivery. + * The team plans autonomously (without the Product Owner) in detail and breaks down the tasks from the discussed requirements to consolidate a [Sprint Backlog]({{opSetting:base_url}}/projects/your-scrum-project/backlogs). + + + ### Daily Scrum meeting + + _Please document here topics to the Daily Scrum meeting_ + + * Short, daily status meeting of the team. + * Time boxed (max. 15 min). + * Stand-up meeting to discuss the following topics from the Task board. + * What do I plan to do until the next Daily Scrum? + * What has blocked my work (Impediments)? + * Scrum Master moderates and notes down Sprint Impediments. + * Product Owner may participate may participate in order to stay informed. + + ### Sprint Review meeting + + _Please document here topics to the Sprint Review meeting_ + + * Time boxed (4 h). + * A maximum of one hour of preparation time per person. + * The team shows the product owner and other interested persons what has been achieved in this sprint. + * Important: no dummies and no PowerPoint! Just finished product functionality (Increments) should be demonstrated. + * Feedback from Product Owner, stakeholders and others is desired and will be included in further work. + * Based on the demonstrated functionalities, the Product Owner decides to go live with this increment or to develop it further. This possibility allows an early ROI. + + + ### Sprint Retrospective + + _Please document here topics to the Sprint Retrospective meeting_ + + * Time boxed (3 h). + * After Sprint Review, will be moderated by Scrum Master. + * The team discusses the sprint: what went well, what needs to be improved to be more productive for the next sprint or even have more fun. diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml new file mode 100644 index 000000000000..4fc205047323 --- /dev/null +++ b/config/locales/crowdin/kk.yml @@ -0,0 +1,3326 @@ +#-- copyright +#OpenProject is an open source project management software. +#Copyright (C) 2012-2024 the OpenProject GmbH +#This program is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public License version 3. +#OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +#Copyright (C) 2006-2013 Jean-Philippe Lang +#Copyright (C) 2010-2013 the ChiliProject Team +#This program is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version 2 +#of the License, or (at your option) any later version. +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +#See COPYRIGHT and LICENSE files for more details. +#++ +kk: + no_results_title_text: There is currently nothing to display. + activities: + index: + no_results_title_text: There has not been any activity for the project within this time frame. + admin: + plugins: + no_results_title_text: There are currently no plugins available. + custom_styles: + color_theme: "Color theme" + color_theme_custom: "(Custom)" + colors: + alternative-color: "Alternative" + content-link-color: "Link font" + primary-color: "Primary" + primary-color-dark: "Primary (dark)" + header-bg-color: "Header background" + header-item-bg-hover-color: "Header background on hover" + header-item-font-color: "Header font" + header-item-font-hover-color: "Header font on hover" + header-border-bottom-color: "Header border" + main-menu-bg-color: "Main menu background" + main-menu-bg-selected-background: "Main menu when selected" + main-menu-bg-hover-background: "Main menu on hover" + main-menu-font-color: "Main menu font" + main-menu-selected-font-color: "Main menu font when selected" + main-menu-hover-font-color: "Main menu font on hover" + main-menu-border-color: "Main menu border" + custom_colors: "Custom colors" + customize: "Customize your OpenProject installation with your own logo and colors." + enterprise_notice: "As a special 'Thank you!' for their financial contribution to develop OpenProject, this tiny add-on is only available for Enterprise edition support subscribers." + enterprise_more_info: "Note: the used logo will be publicly accessible." + manage_colors: "Edit color select options" + instructions: + alternative-color: "Strong accent color, typically used for the most important button on a screen." + content-link-color: "Font color of most of the links." + primary-color: "Main color." + primary-color-dark: "Typically a darker version of the main color used for hover effects." + header-item-bg-hover-color: "Background color of clickable header items when hovered with the mouse." + header-item-font-color: "Font color of clickable header items." + header-item-font-hover-color: "Font color of clickable header items when hovered with the mouse." + header-border-bottom-color: "Thin line under the header. Leave this field empty if you don't want any line." + main-menu-bg-color: "Left side menu's background color." + theme_warning: Changing the theme will overwrite you custom style. The design will then be lost. Are you sure you want to continue? + enterprise: + upgrade_to_ee: "Upgrade to the Enterprise edition" + add_token: "Upload an Enterprise edition support token" + delete_token_modal: + text: "Are you sure you want to remove the current Enterprise edition token used?" + title: "Delete token" + replace_token: "Replace your current support token" + order: "Order Enterprise on-premises edition" + paste: "Paste your Enterprise edition support token" + required_for_feature: "This add-on is only available with an active Enterprise edition support token." + enterprise_link: "For more information, click here." + start_trial: "Start free trial" + book_now: "Book now" + get_quote: "Get a quote" + buttons: + upgrade: "Upgrade now" + contact: "Contact us for a demo" + enterprise_info_html: "is an Enterprise add-on." + upgrade_info: "Please upgrade to a paid plan to activate and start using it in your team." + journal_aggregation: + explanation: + text: "Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent and will also affect %{webhook_link} delay." + link: "webhook" + announcements: + show_until: Show until + is_active: currently displayed + is_inactive: currently not displayed + attribute_help_texts: + note_public: "Any text and images you add to this field is publicly visible to all logged in users!" + text_overview: "In this view, you can create custom help texts for attributes view. When defined, these texts can be shown by clicking the help icon next to its belonging attribute." + label_plural: "Attribute help texts" + show_preview: "Preview text" + add_new: "Add help text" + edit: "Edit help text for %{attribute_caption}" + background_jobs: + status: + error_requeue: "Job experienced an error but is retrying. The error was: %{message}" + cancelled_due_to: "Job was cancelled due to error: %{message}" + ldap_auth_sources: + ldap_error: "LDAP-Error: %{error_message}" + ldap_auth_failed: "Could not authenticate at the LDAP-Server." + back_to_index: "Click here to go back to the list of connection." + technical_warning_html: | + This LDAP form requires technical knowledge of your LDAP / Active Directory setup. +
+ Please visit our documentation for detailed instructions. + attribute_texts: + name: Arbitrary name of the LDAP connection + host: LDAP host name or IP address + login_map: The attribute key in LDAP that is used to identify the unique user login. Usually, this will be `uid` or `samAccountName`. + generic_map: The attribute key in LDAP that is mapped to the OpenProject `%{attribute}` attribute + admin_map_html: "Optional: The attribute key in LDAP that if present marks the OpenProject user an admin. Leave empty when in doubt." + system_user_dn_html: | + Enter the DN of the system user used for read-only access. +
+ Example: uid=openproject,ou=system,dc=example,dc=com + system_user_password: Enter the bind password of the system user + base_dn: | + Enter the Base DN of the subtree in LDAP you want OpenProject to look for users and groups. + OpenProject will filter for provided usernames in this subtree only. + Example: ou=users,dc=example,dc=com + filter_string: | + Add an optional RFC4515 filter to apply to the results returned for users filtered in the LDAP. + This can be used to restrict the set of users that are found by OpenProject for authentication and group synchronization. + filter_string_concat: | + OpenProject will always filter for the login attribute provided by the user to identify the record. If you provide a filter here, + it will be concatenated with an AND. By default, a catch-all (objectClass=*) will be used as a filter. + onthefly_register: | + If you check this box, OpenProject will automatically create new users from their LDAP entries + when they first authenticate with OpenProject. + Leave this unchecked to only allow existing accounts in OpenProject to authenticate through LDAP! + connection_encryption: "Connection encryption" + encryption_details: "LDAPS / STARTTLS options" + system_account: "System account" + system_account_legend: | + OpenProject requires read-only access through a system account to lookup users and groups in your LDAP tree. + Please specify the bind credentials for that system user in the following section. + ldap_details: "LDAP details" + user_settings: "Attribute mapping" + user_settings_legend: | + The following fields are related to how users are created in OpenProject from LDAP entries and + what LDAP attributes are used to define the attributes of an OpenProject user (attribute mapping). + tls_mode: + plain: "none" + simple_tls: "LDAPS" + start_tls: "STARTTLS" + plain_description: "Opens an unencrypted connection to the LDAP server. Not recommended for production." + simple_tls_description: "Use LDAPS. Requires a separate port on the LDAP server. This mode is often deprecated, we recommend using STARTTLS whenever possible." + start_tls_description: "Sends a STARTTLS command after connecting to the standard LDAP port. Recommended for encrypted connections." + section_more_info_link_html: > + This section concerns the connection security of this LDAP authentication source. For more information, visit the Net::LDAP documentation. + tls_options: + verify_peer: "Verify SSL certificate" + verify_peer_description_html: > + Enables strict SSL verification of the certificate trusted chain.
Warning: Unchecking this option disables SSL verification of the LDAP server certificate. This exposes your connection to Man in the Middle attacks. + tls_certificate_description: "If the LDAP server certificate is not in the trust sources of this system, you can add it manually here. Enter a PEM X509 certifiate string." + forums: + show: + no_results_title_text: There are currently no posts for the forum. + colors: + index: + no_results_title_text: There are currently no colors. + no_results_content_text: Create a new color + label_new_color: "New color" + new: + label_new_color: "New Color" + edit: + label_edit_color: "Edit Color" + form: + label_new_color: "New color" + label_edit_color: "Edit color" + label_no_color: "No color" + label_properties: "Properties" + label_really_delete_color: > + Are you sure, you want to delete the following color? Types using this color will not be deleted. + custom_actions: + actions: + name: "Actions" + add: "Add action" + assigned_to: + executing_user_value: "(Assign to executing user)" + conditions: "Conditions" + plural: "Custom actions" + new: "New custom action" + edit: "Edit custom action %{name}" + execute: "Execute %{name}" + upsale: + title: "Custom actions" + description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." + custom_fields: + text_add_new_custom_field: > + To add new custom fields to a project you first need to create them before you can add them to this project. + is_enabled_globally: "Is enabled globally" + enabled_in_project: "Enabled in project" + contained_in_type: "Contained in type" + confirm_destroy_option: "Deleting an option will delete all of its occurrences (e.g. in work packages). Are you sure you want to delete it?" + reorder_alphabetical: "Reorder values alphabetically" + reorder_confirmation: "Warning: The current order of available values will be lost. Continue?" + instructions: + is_required: "Mark the custom field as required. This will make it mandatory to fill in the field when creating new or updating existing resources." + is_for_all: "Mark the custom field as available in all existing and new projects." + searchable: "Include the field values when using the global search functionality." + editable: "Allow the field to be editable by users themselves." + visible: "Make field visible for all users (non-admins) in the project overview and displayed in the project details widget on the Project Overview." + is_filter: > + Allow the custom field to be used in a filter in work package views. Note that only with 'For all projects' selected, the custom field will show up in global views. + tab: + no_results_title_text: There are currently no custom fields. + no_results_content_text: Create a new custom field + concatenation: + single: "or" + global_search: + placeholder: "Search in %{app_title}" + overwritten_tabs: + wiki_pages: "Wiki" + messages: "Forum" + groups: + index: + no_results_title_text: There are currently no groups. + no_results_content_text: Create a new group + users: + no_results_title_text: There are currently no users part of this group. + memberships: + no_results_title_text: There are currently no projects part of this group. + incoming_mails: + ignore_filenames: > + Specify a list of names to ignore when processing attachments for incoming mails (e.g., signatures or icons). Enter one filename per line. + projects: + copy: + #Contains custom strings for options when copying a project that cannot be found elsewhere. + members: "Project members" + overviews: "Project overview" + queries: "Work packages: saved views" + wiki_page_attachments: "Wiki pages: attachments" + work_package_attachments: "Work packages: attachments" + work_package_categories: "Work packages: categories" + work_package_file_links: "Work packages: file links" + delete: + scheduled: "Deletion has been scheduled and is performed in the background. You will be notified of the result." + schedule_failed: "Project cannot be deleted: %{errors}" + failed: "Deletion of project %{name} has failed" + failed_text: "The request to delete project %{name} has failed. The project was left archived." + completed: "Deletion of project %{name} completed" + completed_text: "The request to delete project '%{name}' has been completed." + completed_text_children: "Additionally, the following subprojects have been deleted:" + index: + open_as_gantt: "Open as Gantt view" + open_as_gantt_title: "Use this button to generate a Gantt view that filters work packages for the projects visible on this page." + open_as_gantt_title_admin: "You can modify the view settings (such as selected work package types) in the administration under project settings." + no_results_title_text: There are currently no projects + no_results_content_text: Create a new project + settings: + change_identifier: Change identifier + activities: + no_results_title_text: There are currently no activities available. + forums: + no_results_title_text: There are currently no forums for the project. + no_results_content_text: Create a new forum + categories: + no_results_title_text: There are currently no work package categories. + no_results_content_text: Create a new work package category + custom_fields: + no_results_title_text: There are currently no custom fields available. + types: + no_results_title_text: There are currently no types available. + form: + enable_type_in_project: 'Enable type "%{type}"' + versions: + no_results_title_text: There are currently no versions for the project. + no_results_content_text: Create a new version + storage: + no_results_title_text: There is no additional recorded disk space consumed by this project. + members: + index: + no_results_title_text: There are currently no members part of this project. + no_results_content_text: Add a member to the project + invite_by_mail: "Send invite to %{mail}" + send_invite_to: "Send invite to" + no_modify_on_shared: "You currently cannot modify or remove shared memberships through the member page. Use the sharing modal instead." + columns: + shared: "Shared" + filters: + all_shares: 'All shares' + menu: + all: 'All' + invited: 'Invited' + locked: 'Locked' + project_roles: 'Project roles' + wp_shares: 'Work package shares' + groups: 'Groups' + my: + access_token: + failed_to_reset_token: "Failed to reset access token: %{error}" + notice_reset_token: "A new %{type} token has been generated. Your access token is:" + token_value_warning: "Note: This is the only time you will see this token, make sure to copy it now." + no_results_title_text: There are currently no access tokens available. + notice_api_token_revoked: "The API token has been deleted. To create a new token please use the link in the API section." + notice_rss_token_revoked: "The RSS token has been deleted. To create a new token please use the link in the RSS section." + notice_ical_token_revoked: 'iCalendar token "%{token_name}" for calendar "%{calendar_name}" of project "%{project_name}" has been revoked. The iCalendar URL with this token is now invalid.' + news: + index: + no_results_title_text: There is currently no news to report. + no_results_content_text: Add a news item + users: + autologins: + prompt: "Stay logged in for %{num_days}" + sessions: + remembered_devices: "Remembered devices" + remembered_devices_caption: "A list of all devices that logged into this account using the 'Stay logged in' option." + session_name: "%{browser_name} %{browser_version} on %{os_name}" + browser: "Browser" + device: "Device / OS" + unknown_browser: "unknown browser" + unknown_os: "unknown operating system" + current: "Current session" + title: "Session management" + instructions: "This is a list of devices that have logged into your account. Revoke any sessions that you do not recognize or you have no longer access to." + may_not_delete_current: "You cannot delete your current session." + groups: + member_in_these_groups: "This user is currently a member of the following groups:" + no_results_title_text: This user is currently not a member in any group. + memberships: + no_results_title_text: This user is currently not a member of a project. + placeholder_users: + right_to_manage_members_missing: > + You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. + delete_tooltip: "Delete placeholder user" + deletion_info: + heading: "Delete placeholder user %{name}" + data_consequences: > + All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. + irreversible: "This action is irreversible" + confirmation: "Enter the placeholder user name %{name} to confirm the deletion." + upsale: + title: Placeholder users + description: > + Placeholder users are a way to assign work packages to users who are not part of your project. They can be useful in a range of scenarios; for example, if you need to track tasks for a resource that is not yet named or available, or if you don’t want to give that person access to OpenProject but still want to track tasks assigned to them. + prioritiies: + edit: + priority_color_text: | + Click to assign or change the color of this priority. + It can be used for highlighting work packages in the table. + reportings: + index: + no_results_title_text: There are currently no status reportings. + no_results_content_text: Add a status reporting + statuses: + edit: + status_readonly_html: | + Check this option to mark work packages with this status as read-only. + No attributes can be changed with the exception of the status. +
+ Note: Inherited values (e.g., from children or relations) will still apply. + status_color_text: | + Click to assign or change the color of this status. + It is shown in the status button and can be used for highlighting work packages in the table. + index: + no_results_title_text: There are currently no work package statuses. + no_results_content_text: Add a new status + themes: + light: "Light" + light_high_contrast: "Light high contrast" + types: + index: + no_results_title_text: There are currently no types. + no_results_content_text: Create a new type + edit: + settings: "Settings" + form_configuration: "Form configuration" + more_info_text_html: > + Enterprise edition allows you to customize form configuration with these additional add-ons:
+ projects: "Projects" + enabled_projects: "Enabled projects" + edit_query: "Edit table" + query_group_placeholder: "Give the table a name" + reset: "Reset to defaults" + type_color_text: | + The selected color distinguishes different types + in Gantt charts or work packages tables. It is therefore recommended to use a strong color. + versions: + overview: + work_packages_in_archived_projects: "The version is shared with archived projects which still have work packages assigned to this version. These are counted, but will not appear in the linked views." + no_results_title_text: There are currently no work packages assigned to this version. + wiki: + page_not_editable_index: The requested page does not (yet) exist. You have been redirected to the index of all wiki pages. + no_results_title_text: There are currently no wiki pages. + print_hint: This will print the content of this wiki page without any navigation bars. + index: + no_results_content_text: Add a new wiki page + work_flows: + index: + no_results_title_text: There are currently no workflows. + work_packages: + x_descendants: + one: "One descendant work package" + other: "%{count} work package descendants" + bulk: + copy_failed: "The work packages could not be copied." + move_failed: "The work packages could not be moved." + could_not_be_saved: "The following work packages could not be saved:" + none_could_be_saved: "None of the %{total} work packages could be updated." + x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." + selected_because_descendants: "While %{selected} work packages where selected, in total %{total} work packages are affected which includes descendants." + descendant: "descendant of selected" + move: + no_common_statuses_exists: "There is no status available for all selected work packages. Their status cannot be changed." + unsupported_for_multiple_projects: "Bulk move/copy is not supported for work packages from multiple projects" + sharing: + missing_workflow_waring: + title: "Workflow missing for work package sharing" + message: "No workflow is configured for the 'Work package editor' role. Without a workflow, the shared with user cannot alter the status of the work package. Workflows can be copied. Select a source type (e.g. 'Task') and source role (e.g. 'Member'). Then select the target types. To start with, you could select all the types as targets. Finally, select the 'Work package editor' role as the target and press 'Copy'. After having thus created the defaults, fine tune the workflows as you do for every other role." + link_message: "Configure the workflows in the administration." + summary: + reports: + category: + no_results_title_text: There are currently no categories available. + assigned_to: + no_results_title_text: There are currently no members part of this project. + responsible: + no_results_title_text: There are currently no members part of this project. + author: + no_results_title_text: There are currently no members part of this project. + priority: + no_results_title_text: There are currently no priorities available. + type: + no_results_title_text: There are currently no types available. + version: + no_results_title_text: There are currently no versions available. + label_invitation: Invitation + account: + delete: "Delete account" + delete_confirmation: "Are you sure you want to delete the account?" + deletion_pending: "Account has been locked and was scheduled for deletion. Note that this process takes place in the background. It might take a few moments until the user is fully deleted." + deletion_info: + data_consequences: + other: 'Of the data the user created (e.g. email, preferences, work packages, wiki entries) as much as possible will be deleted. Note however, that data like work packages and wiki entries can not be deleted without impeding the work of the other users. Such data is hence reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account.' + self: 'Of the data you created (e.g. email, preferences, work packages, wiki entries) as much as possible will be deleted. Note however, that data like work packages and wiki entries can not be deleted without impeding the work of the other users. Such data is hence reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data you created from the data of another deleted account.' + heading: "Delete account %{name}" + info: + other: "Deleting the user account is an irreversible action." + self: "Deleting your user account is an irreversible action." + login_consequences: + other: "The account will be deleted from the system. Therefore, the user will no longer be able to log in with his current credentials. He/she can choose to become a user of this application again by the means this application grants." + self: "Your account will be deleted from the system. Therefore, you will no longer be able to log in with your current credentials. If you choose to become a user of this application again, you can do so by using the means this application grants." + login_verification: + other: "Enter the login %{name} to verify the deletion. Once submitted, you will be asked to confirm your password." + self: "Enter your login %{name} to verify the deletion. Once submitted, you will be asked to confirm your password." + error_inactive_activation_by_mail: > + Your account has not yet been activated. To activate your account, click on the link that was emailed to you. + error_inactive_manual_activation: > + Your account has not yet been activated. Please wait for an administrator to activate your account. + error_self_registration_disabled: > + User registration is disabled on this system. Please ask an administrator to create an account for you. + error_self_registration_limited_provider: > + User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the account for you or change the self registration limit for this provider. + login_with_auth_provider: "or sign in with your existing account" + signup_with_auth_provider: "or sign up using" + auth_source_login: Please login as %{login} to activate your account. + omniauth_login: Please login to activate your account. + actionview_instancetag_blank_option: "Please select" + activerecord: + attributes: + announcements: + show_until: "Display until" + attachment: + attachment_content: "Attachment content" + attachment_file_name: "Attachment file name" + downloads: "Downloads" + file: "File" + filename: "File" + filesize: "Size" + attribute_help_text: + attribute_name: "Attribute" + help_text: "Help text" + ldap_auth_source: + account: "Account" + attr_firstname: "Firstname attribute" + attr_lastname: "Lastname attribute" + attr_login: "Username attribute" + attr_mail: "Email attribute" + base_dn: "Base DN" + host: "Host" + onthefly: "Automatic user creation" + port: "Port" + tls_certificate_string: "LDAP server SSL certificate" + changeset: + repository: "Repository" + color: + hexcode: "Hex code" + comment: + commented: "Commented" #an object that this comment belongs to + custom_action: + actions: "Actions" + custom_field: + allow_non_open_versions: "Allow non-open versions" + default_value: "Default value" + editable: "Editable" + field_format: "Format" + is_filter: "Used as a filter" + is_required: "Required" + max_length: "Maximum length" + min_length: "Minimum length" + multi_value: "Allow multi-select" + possible_values: "Possible values" + regexp: "Regular expression" + searchable: "Searchable" + visible: "Visible" + custom_value: + value: "Value" + enterprise_token: + starts_at: "Valid since" + subscriber: "Subscriber" + encoded_token: "Enterprise support token" + active_user_count_restriction: "Maximum active users" + grids/grid: + page: "Page" + row_count: "Number of rows" + column_count: "Number of columns" + widgets: "Widgets" + relation: + delay: "Delay" + from: "Work package" + to: "Related work package" + status: + is_closed: "Work package closed" + is_readonly: "Work package read-only" + journal: + notes: "Notes" + member: + roles: "Roles" + project: + active_value: + true: "unarchived" + false: "archived" + identifier: "Identifier" + latest_activity_at: "Latest activity at" + parent: "Subproject of" + public_value: + title: "Visibility" + true: "public" + false: "private" + queries: "Queries" + status_code: "Project status" + status_explanation: "Project status description" + status_codes: + not_started: "Not started" + on_track: "On track" + at_risk: "At risk" + off_track: "Off track" + finished: "Finished" + discontinued: "Discontinued" + templated: "Template project" + templated_value: + true: "marked as template" + false: "unmarked as template" + types: "Types" + versions: "Versions" + work_packages: "Work Packages" + query: + column_names: "Columns" + relations_to_type_column: "Relations to %{type}" + relations_of_type_column: "%{type} relations" + group_by: "Group results by" + filters: "Filters" + timeline_labels: "Timeline labels" + repository: + url: "URL" + role: + permissions: "Permissions" + time_entry: + activity: "Activity" + hours: "Hours" + spent_on: "Date" + type: "Type" + ongoing: "Ongoing" + type: + description: "Default text for description" + attribute_groups: "" + is_in_roadmap: "Displayed in roadmap by default" + is_default: "Activated for new projects by default" + is_milestone: "Is milestone" + color: "Color" + user: + admin: "Administrator" + ldap_auth_source: "LDAP connection" + identity_url: "Identity URL" + current_password: "Current password" + force_password_change: "Enforce password change on next login" + language: "Language" + last_login_on: "Last login" + new_password: "New password" + password_confirmation: "Confirmation" + consented_at: "Consented at" + user_preference: + comments_sorting: "Display comments" + hide_mail: "Hide my email address" + impaired: "Accessibility mode" + time_zone: "Time zone" + auto_hide_popups: "Auto-hide success notifications" + warn_on_leaving_unsaved: "Warn me when leaving a work package with unsaved changes" + theme: "Mode" + version: + effective_date: "Finish date" + sharing: "Sharing" + wiki_content: + text: "Text" + wiki_page: + parent_title: "Parent page" + redirect_existing_links: "Redirect existing links" + planning_element_type_color: + hexcode: Hex code + work_package: + begin_insertion: "Begin of the insertion" + begin_deletion: "Begin of the deletion" + children: "Subelements" + derived_remaining_hours: "Derived remaining work" + derived_remaining_time: "Derived remaining work" + done_ratio: "% Complete" + duration: "Duration" + end_insertion: "End of the insertion" + end_deletion: "End of the deletion" + ignore_non_working_days: "Ignore non working days" + include_non_working_days: + title: "Working days" + false: "working days only" + true: "include non-working days" + notify: "Notify" #used in custom actions + parent: "Parent" + parent_issue: "Parent" + parent_work_package: "Parent" + priority: "Priority" + progress: "% Complete" + readonly: "Read only" + remaining_hours: "Remaining work" + remaining_time: "Remaining work" + schedule_manually: "Manual scheduling" + spent_hours: "Spent time" + spent_time: "Spent time" + subproject: "Subproject" + time_entries: "Log time" + type: "Type" + version: "Version" + watcher: "Watcher" + "doorkeeper/application": + uid: "Client ID" + secret: "Client secret" + owner: "Owner" + redirect_uri: "Redirect URI" + client_credentials_user_id: "Client Credentials User ID" + scopes: "Scopes" + confidential: "Confidential" + errors: + messages: + accepted: "must be accepted." + after: "must be after %{date}." + after_or_equal_to: "must be after or equal to %{date}." + before: "must be before %{date}." + before_or_equal_to: "must be before or equal to %{date}." + blank: "can't be blank." + blank_nested: "needs to have the property '%{property}' set." + cant_link_a_work_package_with_a_descendant: "A work package cannot be linked to one of its subtasks." + circular_dependency: "This relation would create a circular dependency." + confirmation: "doesn't match %{attribute}." + could_not_be_copied: "%{dependency} could not be (fully) copied." + does_not_exist: "does not exist." + error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition" + error_unauthorized: "may not be accessed." + error_readonly: "was attempted to be written but is not writable." + error_conflict: "Information has been updated by at least one other user in the meantime." + email: "is not a valid email address." + empty: "can't be empty." + even: "must be even." + exclusion: "is reserved." + file_too_large: "is too large (maximum size is %{count} Bytes)." + filter_does_not_exist: "filter does not exist." + format: "does not match the expected format '%{expected}'." + format_nested: "does not match the expected format '%{expected}' at path '%{path}'." + greater_than: "must be greater than %{count}." + greater_than_or_equal_to: "must be greater than or equal to %{count}." + greater_than_or_equal_to_start_date: "must be greater than or equal to the start date." + greater_than_start_date: "must be greater than the start date." + inclusion: "is not set to one of the allowed values." + inclusion_nested: "is not set to one of the allowed values at path '%{path}'." + invalid: "is invalid." + invalid_url: "is not a valid URL." + invalid_url_scheme: "is not a supported protocol (allowed: %{allowed_schemes})." + less_than_or_equal_to: "must be less than or equal to %{count}." + not_available: "is not available due to a system configuration." + not_deletable: "cannot be deleted." + not_current_user: "is not the current user." + not_a_date: "is not a valid date." + not_a_datetime: "is not a valid date time." + not_a_number: "is not a number." + not_allowed: "is invalid because of missing permissions." + not_an_integer: "is not an integer." + not_an_iso_date: "is not a valid date. Required format: YYYY-MM-DD." + not_same_project: "doesn't belong to the same project." + odd: "must be odd." + regex_invalid: "could not be validated with the associated regular expression." + smaller_than_or_equal_to_max_length: "must be smaller than or equal to maximum length." + taken: "has already been taken." + too_long: "is too long (maximum is %{count} characters)." + too_short: "is too short (minimum is %{count} characters)." + type_mismatch: "is not of type '%{type}'" + type_mismatch_nested: "is not of type '%{type}' at path '%{path}'" + unchangeable: "cannot be changed." + unknown_property: "is not a known property." + unknown_property_nested: "has the unknown path '%{path}'." + unremovable: "cannot be removed." + url_not_secure_context: > + is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. + wrong_length: "is the wrong length (should be %{count} characters)." + models: + ldap_auth_source: + attributes: + tls_certificate_string: + invalid_certificate: "The provided SSL certificate is invalid: %{additional_message}" + format: "%{message}" + attachment: + attributes: + content_type: + blank: "The content type of the file cannot be blank." + not_whitelisted: "The file was rejected by an automatic filter. '%{value}' is not whitelisted for upload." + format: "%{message}" + capability: + context: + global: "Global" + query: + filters: + minimum: "need to include at least one filter for principal, context or id with the '=' operator." + custom_field: + at_least_one_custom_option: "At least one option needs to be available." + custom_actions: + only_one_allowed: "(%{name}) only one value is allowed." + empty: "(%{name}) value can't be empty." + inclusion: "(%{name}) value is not set to one of the allowed values." + not_logged_in: "(%{name}) value cannot be set because you are not logged in." + not_an_integer: "(%{name}) is not an integer." + smaller_than_or_equal_to: "(%{name}) must be smaller than or equal to %{count}." + greater_than_or_equal_to: "(%{name}) must be greater than or equal to %{count}." + format: "%{message}" + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: "cannot contain a fragment." + invalid_uri: "must be a valid URI." + relative_uri: "must be an absolute URI." + secured_uri: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost.' + forbidden_uri: "is forbidden by the server." + scopes: + not_match_configured: "doesn't match available scopes." + enterprise_token: + unreadable: "can't be read. Are you sure it is a support token?" + grids/grid: + overlaps: "overlap." + outside: "is outside of the grid." + end_before_start: "end value needs to be larger than the start value." + ical_token_query_assignment: + attributes: + name: + blank: "is mandatory. Please select a name." + not_unique: "is already in use. Please select another name." + notifications: + at_least_one_channel: "At least one channel for sending notifications needs to be specified." + attributes: + read_ian: + read_on_creation: "cannot be set to true on notification creation." + mail_reminder_sent: + set_on_creation: "cannot be set to true on notification creation." + reason: + no_notification_reason: "cannot be blank as IAN is chosen as a channel." + reason_mail_digest: + no_notification_reason: "cannot be blank as mail digest is chosen as a channel." + non_working_day: + attributes: + date: + taken: "A non-working day already exists for %{value}." + format: "%{message}" + parse_schema_filter_params_service: + attributes: + base: + unsupported_operator: "The operator is not supported." + invalid_values: "A value is invalid." + id_filter_required: "An 'id' filter is required." + project: + archived_ancestor: "The project has an archived ancestor." + foreign_wps_reference_version: "Work packages in non descendant projects reference versions of the project or its descendants." + attributes: + base: + archive_permission_missing_on_subprojects: "You do not have the permissions required to archive all sub-projects. Please contact an administrator." + types: + in_use_by_work_packages: "still in use by work packages: %{types}" + enabled_modules: + dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." + format: "%{message}" + query: + attributes: + project: + error_not_found: "not found" + public: + error_unauthorized: "- The user has no permission to create public views." + group_by: + invalid: "Can't group by: %{value}" + format: "%{message}" + column_names: + invalid: "Invalid query column: %{value}" + format: "%{message}" + sort_criteria: + invalid: "Can't sort by column: %{value}" + format: "%{message}" + timestamps: + invalid: "Timestamps contain invalid values: %{values}" + forbidden: "Timestamps contain forbidden values: %{values}" + format: "%{message}" + group_by_hierarchies_exclusive: "is mutually exclusive with group by '%{group_by}'. You cannot activate both." + filters: + custom_fields: + inexistent: "There is no custom field for the filter." + queries/filters/base: + attributes: + values: + inclusion: "filter has invalid values." + format: "%{message}" + relation: + typed_dag: + circular_dependency: "The relationship creates a circle of relationships." + attributes: + to: + error_not_found: "work package in `to` position not found or not visible" + error_readonly: "an existing relation's `to` link is immutable" + from: + error_not_found: "work package in `from` position not found or not visible" + error_readonly: "an existing relation's `from` link is immutable" + repository: + not_available: "SCM vendor is not available" + not_whitelisted: "is not allowed by the configuration." + invalid_url: "is not a valid repository URL or path." + must_not_be_ssh: "must not be an SSH url." + no_directory: "is not a directory." + role: + attributes: + permissions: + dependency_missing: "need to also include '%{dependency}' as '%{permission}' is selected." + setting: + attributes: + base: + working_days_are_missing: "At least one day of the week must be defined as a working day." + previous_working_day_changes_unprocessed: "The previous changes to the working days configuration have not been applied yet." + time_entry: + attributes: + hours: + day_limit: "is too high as a maximum of 24 hours can be logged per date." + user_preference: + attributes: + pause_reminders: + invalid_range: "can only be a valid date range." + daily_reminders: + full_hour: "can only be configured to be delivered at a full hour." + notification_settings: + only_one_global_setting: "There must only be one global notification setting." + email_alerts_global: "The email notification settings can only be set globally." + format: "%{message}" + wrong_date: "Wrong value for Start date, Due date, or Overdue." + watcher: + attributes: + user_id: + not_allowed_to_view: "is not allowed to view this resource." + locked: "is locked." + wiki_page: + error_conflict: "The wiki page has been updated by someone else while you were editing it." + attributes: + slug: + undeducible: "cannot be deduced from the title '%{title}'." + work_package: + is_not_a_valid_target_for_time_entries: "Work package #%{id} is not a valid target for reassigning the time entries." + attributes: + assigned_to: + format: "%{message}" + due_date: + not_start_date: "is not on start date, although this is required for milestones." + cannot_be_null: "can not be set to null as start date and duration are known." + duration: + larger_than_dates: "is larger than the interval between the start and the finish date." + smaller_than_dates: "is smaller than the interval between the start and the finish date." + not_available_for_milestones: "is not available for milestone typed work packages." + cannot_be_null: "can not be set to null as start date and finish date are known." + parent: + cannot_be_milestone: "cannot be a milestone." + cannot_be_self_assigned: "cannot be assigned to itself." + cannot_be_in_another_project: "cannot be in another project." + not_a_valid_parent: "is invalid." + start_date: + violates_relationships: "can only be set to %{soonest_start} or later so as not to violate the work package's relationships." + cannot_be_null: "can not be set to null as finish date and duration are known." + status_id: + status_transition_invalid: "is invalid because no valid transition exists from old to new status for the current user's roles." + status_invalid_in_type: "is invalid because the current status does not exist in this type." + type: + cannot_be_milestone_due_to_children: "cannot be a milestone because this work package has children." + priority_id: + only_active_priorities_allowed: "needs to be active." + category: + only_same_project_categories_allowed: "The category of a work package must be within the same project as the work package." + does_not_exist: "The specified category does not exist." + estimated_hours: + only_values_greater_or_equal_zeroes_allowed: "must be >= 0." + readonly_status: "The work package is in a readonly status so its attributes cannot be changed." + type: + attributes: + attribute_groups: + attribute_unknown: "Invalid work package attribute used." + attribute_unknown_name: "Invalid work package attribute used: %{attribute}" + duplicate_group: "The group name '%{group}' is used more than once. Group names must be unique." + query_invalid: "The embedded query '%{group}' is invalid: %{details}" + group_without_name: "Unnamed groups are not allowed." + user: + attributes: + base: + user_limit_reached: "User limit reached. No more accounts can be created on the current plan." + one_must_be_active: "Admin User cannot be locked/removed. At least one admin must be active." + password_confirmation: + confirmation: "Password confirmation does not match password." + format: "%{message}" + password: + weak: "Must contain characters of the following classes (at least %{min_count} of %{all_count}): %{rules}." + lowercase: "lowercase (e.g. 'a')" + uppercase: "uppercase (e.g. 'A')" + numeric: "numeric (e.g. '1')" + special: "special (e.g. '%')" + reused: + one: "has been used before. Please choose one that is different from your last one." + other: "has been used before. Please choose one that is different from your last %{count}." + match: + confirm: "Confirm new password." + description: "'Password confirmation' should match the input in the 'New password' field." + status: + invalid_on_create: "is not a valid status for new users." + ldap_auth_source: + error_not_found: "not found" + member: + principal_blank: "Please choose at least one user or group." + role_blank: "need to be assigned." + attributes: + roles: + ungrantable: "has an unassignable role." + more_than_one: "has more than one role." + principal: + unassignable: "cannot be assigned to a project." + version: + undeletable_archived_projects: "The version cannot be deleted as it has work packages attached to it." + undeletable_work_packages_attached: "The version cannot be deleted as it has work packages attached to it." + status: + readonly_default_exlusive: "can not be activated for statuses that are marked default." + template: + body: "Please check the following fields:" + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + models: + attachment: "File" + attribute_help_text: "Attribute help text" + category: "Category" + comment: "Comment" + custom_action: "Custom action" + custom_field: "Custom field" + "doorkeeper/application": "OAuth application" + forum: "Forum" + global_role: "Global role" + group: "Group" + member: "Member" + news: "News" + notification: + one: "Notification" + other: "Notifications" + placeholder_user: "Placeholder user" + project: "Project" + query: "Custom query" + role: + one: "Role" + other: "Roles" + status: "Work package status" + type: "Type" + user: "User" + version: "Version" + workflow: "Workflow" + work_package: "Work package" + wiki: "Wiki" + wiki_page: "Wiki page" + errors: + header_invalid_fields: + one: "There was a problem with the following field:" + other: "There were problems with the following fields:" + header_additional_invalid_fields: + one: "Additionally, there was a problem with the following field:" + other: "Additionally, there were problems with the following fields:" + field_erroneous_label: "This field is invalid: %{full_errors}\nPlease enter a valid value." + activity: + item: + created_by_on: "created by %{user} on %{datetime}" + created_by_on_time_entry: "time logged by %{user} on %{datetime}" + created_on: "created on %{datetime}" + created_on_time_entry: "time logged on %{datetime}" + updated_by_on: "updated by %{user} on %{datetime}" + updated_by_on_time_entry: "logged time updated by %{user} on %{datetime}" + updated_on: "updated on %{datetime}" + updated_on_time_entry: "logged time updated on %{datetime}" + parent_without_of: "Subproject" + parent_no_longer: "No longer subproject of" + time_entry: + hour: + one: "%{count} hour" + other: "%{count} hours" + hour_html: + one: "%{count} hour" + other: "%{count} hours" + updated: "changed from %{old_value} to %{value}" + logged_for: "Logged for" + filter: + changeset: "Changesets" + message: "Forums" + news: "News" + project_attribute: "Project attributes" + subproject: "Include subprojects" + time_entry: "Spent time" + wiki_edit: "Wiki" + work_package: "Work packages" + #common attributes of all models + attributes: + active: "Active" + assigned_to: "Assignee" + assignee: "Assignee" + attachments: "Attachments" + author: "Author" + base: "General Error:" + blocks_ids: "IDs of blocked work packages" + category: "Category" + comment: "Comment" + comments: "Comment" + content: "Content" + color: "Color" + created_at: "Created on" + custom_options: "Possible values" + custom_values: "Custom fields" + date: "Date" + default_columns: "Default columns" + description: "Description" + derived_due_date: "Derived finish date" + derived_estimated_hours: "Derived work" + derived_start_date: "Derived start date" + display_sums: "Display Sums" + due_date: "Finish date" + estimated_hours: "Work" + estimated_time: "Work" + expires_at: "Expires at" + firstname: "First name" + group: "Group" + groups: "Groups" + id: "ID" + is_default: "Default value" + is_for_all: "For all projects" + public: "Public" + #kept for backwards compatibility + issue: "Work package" + lastname: "Last name" + login: "Username" + mail: "Email" + name: "Name" + password: "Password" + priority: "Priority" + project: "Project" + responsible: "Accountable" + role: "Role" + roles: "Roles" + start_date: "Start date" + status: "Status" + subject: "Subject" + summary: "Summary" + title: "Title" + type: "Type" + updated_at: "Updated on" + updated_on: "Updated on" + uploader: "Uploader" + user: "User" + value: "Value" + version: "Version" + work_package: "Work package" + backup: + failed: "Backup failed" + label_backup_token: "Backup token" + label_create_token: "Create backup token" + label_delete_token: "Delete backup token" + label_reset_token: "Reset backup token" + label_token_users: "The following users have active backup tokens" + reset_token: + action_create: Create + action_reset: Reset + heading_reset: "Reset backup token" + heading_create: "Create backup token" + implications: > + Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. + info: > + You will need to generate a backup token to be able to create a backup. Each time you want to request a backup you will have to provide this token. You can delete the backup token to disable backups for this user. + verification: > + Enter %{word} to confirm you want to %{action} the backup token. + verification_word_reset: reset + verification_word_create: create + warning: > + When you create a new token you will only be allowed to request a backup after 24 hours. This is a safety measure. After that you can request a backup any time using that token. + text_token_deleted: Backup token deleted. Backups are now disabled. + error: + invalid_token: Invalid or missing backup token + token_cooldown: The backup token will be valid in %{hours} hours. + backup_pending: There is already a backup pending. + limit_reached: You can only do %{limit} backups per day. + button_add: "Add" + button_add_comment: "Add comment" + button_add_member: Add member + button_add_watcher: "Add watcher" + button_annotate: "Annotate" + button_apply: "Apply" + button_archive: "Archive" + button_back: "Back" + button_cancel: "Cancel" + button_change: "Change" + button_change_parent_page: "Change parent page" + button_change_password: "Change password" + button_check_all: "Check all" + button_clear: "Clear" + button_click_to_reveal: "Click to reveal" + button_close: "Close" + button_collapse_all: "Collapse all" + button_configure: "Configure" + button_continue: "Continue" + button_copy: "Copy" + button_copy_to_clipboard: "Copy to clipboard" + button_copy_link_to_clipboard: "Copy link to clipboard" + button_copy_and_follow: "Copy and follow" + button_create: "Create" + button_create_and_continue: "Create and continue" + button_delete: "Delete" + button_decline: "Decline" + button_delete_watcher: "Delete watcher %{name}" + button_download: "Download" + button_duplicate: "Duplicate" + button_edit: "Edit" + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + button_expand_all: "Expand all" + button_filter: "Filter" + button_generate: "Generate" + button_list: "List" + button_lock: "Lock" + button_login: "Sign in" + button_move: "Move" + button_move_and_follow: "Move and follow" + button_print: "Print" + button_quote: "Quote" + button_remove: Remove + button_rename: "Rename" + button_replace: "Replace" + button_revoke: "Revoke" + button_reply: "Reply" + button_reset: "Reset" + button_rollback: "Rollback to this version" + button_save: "Save" + button_apply_changes: "Apply changes" + button_save_back: "Save and back" + button_show: "Show" + button_sort: "Sort" + button_submit: "Submit" + button_test: "Test" + button_unarchive: "Unarchive" + button_uncheck_all: "Uncheck all" + button_unlock: "Unlock" + button_unwatch: "Unwatch" + button_update: "Update" + button_upgrade: "Upgrade" + button_upload: "Upload" + button_view: "View" + button_watch: "Watch" + button_manage_menu_entry: "Configure menu item" + button_add_menu_entry: "Add menu item" + button_configure_menu_entry: "Configure menu item" + button_delete_menu_entry: "Delete menu item" + consent: + checkbox_label: I have noted and do consent to the above. + failure_message: Consent failed, cannot proceed. + title: User Consent + decline_warning_message: You have declined to consent and have been logged out. + user_has_consented: User has consented to your configured statement at the given time. + not_yet_consented: User has not consented yet, will be requested upon next login. + contact_mail_instructions: Define the mail address that users can reach a data controller to perform data change or removal requests. + contact_your_administrator: Please contact your administrator if you want to have your account deleted. + contact_this_mail_address: Please contact %{mail_address} if you want to have your account deleted. + text_update_consent_time: Check this box to force users to consent again. Enable when you have changed the legal aspect of the consent information above. + update_consent_last_time: "Last update of consent: %{update_time}" + copy_project: + title: 'Copy project "%{source_project_name}"' + started: 'Started to copy project "%{source_project_name}" to "%{target_project_name}". You will be informed by mail as soon as "%{target_project_name}" is available.' + failed: "Cannot copy project %{source_project_name}" + failed_internal: "Copying failed due to an internal error." + succeeded: "Created project %{target_project_name}" + errors: "Error" + project_custom_fields: "Custom fields on project" + x_objects_of_this_type: + zero: "No objects of this type" + one: "One object of this type" + other: "%{count} objects of this type" + text: + failed: 'Could not copy project "%{source_project_name}" to project "%{target_project_name}".' + succeeded: 'Copied project "%{source_project_name}" to "%{target_project_name}".' + create_new_page: "Wiki page" + date: + abbr_day_names: + - "Sun" + - "Mon" + - "Tue" + - "Wed" + - "Thu" + - "Fri" + - "Sat" + abbr_month_names: + - null + - "Jan" + - "Feb" + - "Mar" + - "Apr" + - "May" + - "Jun" + - "Jul" + - "Aug" + - "Sep" + - "Oct" + - "Nov" + - "Dec" + abbr_week: "Wk" + day_names: + - "Sunday" + - "Monday" + - "Tuesday" + - "Wednesday" + - "Thursday" + - "Friday" + - "Saturday" + formats: + #Use the strftime parameters for formats. + #When no format has been given, it uses default. + #You can provide other formats here if you like! + default: "%m/%d/%Y" + long: "%B %d, %Y" + short: "%b %d" + #Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: #Used in date_select and datetime_select. + - null + - "January" + - "February" + - "March" + - "April" + - "May" + - "June" + - "July" + - "August" + - "September" + - "October" + - "November" + - "December" + order: + - :year + - :month + - :day + datetime: + distance_in_words: + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + half_a_minute: "half a minute" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + x_days: + one: "1 day" + other: "%{count} days" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + x_minutes_abbreviated: + one: "1 min" + other: "%{count} mins" + x_hours: + one: "1 hour" + other: "%{count} hours" + x_hours_abbreviated: + one: "1 hr" + other: "%{count} hrs" + x_weeks: + one: "1 week" + other: "%{count} weeks" + x_months: + one: "1 month" + other: "%{count} months" + x_years: + one: "1 year" + other: "%{count} years" + x_seconds: + one: "1 second" + other: "%{count} seconds" + x_seconds_abbreviated: + one: "1 s" + other: "%{count} s" + units: + hour: + one: "hour" + other: "hours" + description_active: "Active?" + description_attachment_toggle: "Show/Hide attachments" + description_autocomplete: > + This field uses autocomplete. While typing the title of a work package you will receive a list of possible candidates. Choose one using the arrow up and arrow down key and select it with tab or enter. Alternatively you can enter the work package number directly. + description_available_columns: "Available Columns" + description_choose_project: "Projects" + description_compare_from: "Compare from" + description_compare_to: "Compare to" + description_current_position: "You are here: " + description_date_from: "Enter start date" + description_date_to: "Enter end date" + description_enter_number: "Enter number" + description_enter_text: "Enter text" + description_filter: "Filter" + description_filter_toggle: "Show/Hide filter" + description_category_reassign: "Choose category" + description_message_content: "Message content" + description_my_project: "You are member" + description_notes: "Notes" + description_parent_work_package: "Parent work package of current" + description_project_scope: "Search scope" + description_query_sort_criteria_attribute: "Sort attribute" + description_query_sort_criteria_direction: "Sort direction" + description_search: "Searchfield" + description_select_work_package: "Select work package" + description_selected_columns: "Selected Columns" + description_sub_work_package: "Sub work package of current" + description_toc_toggle: "Show/Hide table of contents" + description_wiki_subpages_reassign: "Choose new parent page" + #Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: ltr + ee: + upsale: + form_configuration: + description: "Customize the form configuration with these additional add-ons:" + add_groups: "Add new attribute groups" + rename_groups: "Rename attributes groups" + project_filters: + description_html: "Filtering and sorting on custom fields is an Enterprise edition add-on." + enumeration_activities: "Time tracking activities" + enumeration_work_package_priorities: "Work package priorities" + enumeration_reported_project_statuses: "Reported project status" + error_auth_source_sso_failed: "Single Sign-On (SSO) for user '%{value}' failed" + error_can_not_archive_project: "This project cannot be archived: %{errors}" + error_can_not_delete_entry: "Unable to delete entry" + error_can_not_delete_custom_field: "Unable to delete custom field" + error_can_not_delete_in_use_archived_undisclosed: "There are also work packages in archived projects. You need to ask an administrator to perform the deletion to see which projects are affected." + error_can_not_delete_in_use_archived_work_packages: "There are also work packages in archived projects. You need to reactivate the following projects first, before you can change the attribute of the respective work packages: %{archived_projects_urls}" + error_can_not_delete_type: + explanation: 'This type contains work packages and cannot be deleted. You can see all affected work packages in this view.' + error_can_not_delete_standard_type: "Standard types cannot be deleted." + error_can_not_invite_user: "Failed to send invitation to user." + error_can_not_remove_role: "This role is in use and cannot be deleted." + error_can_not_reopen_work_package_on_closed_version: "A work package assigned to a closed version cannot be reopened" + error_can_not_find_all_resources: "Could not find all related resources to this request." + error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}" + error_check_user_and_role: "Please choose a user and a role." + error_code: "Error %{code}" + error_color_could_not_be_saved: "Color could not be saved" + error_cookie_missing: "The OpenProject cookie is missing. Please ensure that cookies are enabled, as this application will not properly function without." + error_custom_option_not_found: "Option does not exist." + error_enterprise_activation_user_limit: "Your account could not be activated (user limit reached). Please contact your administrator to gain access." + error_enterprise_token_invalid_domain: "The Enterprise edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." + error_failed_to_delete_entry: "Failed to delete this entry." + error_in_dependent: "Error attempting to alter dependent object: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" + error_in_new_dependent: "Error attempting to create dependent object: %{dependent_class} - %{related_subject}: %{error}" + error_invalid_selected_value: "Invalid selected value." + error_journal_attribute_not_present: "Journal does not contain attribute %{attribute}." + error_pdf_export_too_many_columns: "Too many columns selected for the PDF export. Please reduce the number of columns." + error_pdf_failed_to_export: "The PDF export could not be saved: %{error}" + error_token_authenticity: "Unable to verify Cross-Site Request Forgery token. Did you try to submit data on multiple browsers or tabs? Please close all tabs and try again." + error_work_package_done_ratios_not_updated: "Work package % Complete values not updated." + error_work_package_not_found_in_project: "The work package was not found or does not belong to this project" + error_must_be_project_member: "must be project member" + error_migrations_are_pending: "Your OpenProject installation has pending database migrations. You have likely missed running the migrations on your last upgrade. Please check the upgrade guide to properly upgrade your installation." + error_migrations_visit_upgrade_guides: "Please visit our upgrade guide documentation" + error_no_default_work_package_status: 'No default work package status is defined. Please check your configuration (Go to "Administration -> Work package statuses").' + error_no_type_in_project: "No type is associated to this project. Please check the Project settings." + error_omniauth_registration_timed_out: "The registration via an external authentication provider timed out. Please try again." + error_omniauth_invalid_auth: "The authentication information returned from the identity provider was invalid. Please contact your administrator for further help." + error_password_change_failed: "An error occurred when trying to change the password." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_type_could_not_be_saved: "Type could not be saved" + error_unable_delete_status: "The work package status cannot be deleted since it is used by at least one work package." + error_unable_delete_default_status: "Unable to delete the default work package status. Please select another default work package status before deleting the current one." + error_unable_to_connect: "Unable to connect (%{value})" + error_unable_delete_wiki: "Unable to delete the wiki page." + error_unable_update_wiki: "Unable to update the wiki page." + error_workflow_copy_source: "Please select a source type or role" + error_workflow_copy_target: "Please select target type(s) and role(s)" + error_menu_item_not_created: Menu item could not be added + error_menu_item_not_saved: Menu item could not be saved + error_wiki_root_menu_item_conflict: > + Can't rename "%{old_name}" to "%{new_name}" due to a conflict in the resulting menu item with the existing menu item "%{existing_caption}" (%{existing_identifier}). + error_external_authentication_failed: "An error occurred during external authentication. Please try again." + error_attribute_not_highlightable: "Attribute(s) not highlightable: %{attributes}" + events: + changeset: "Changeset edited" + message: Message edited + news: News + project_attributes: "Project attributes edited" + projects: "Project edited" + reply: Replied + time_entry: "Timelog edited" + wiki_page: "Wiki page edited" + work_package_closed: "Work Package closed" + work_package_edit: "Work Package edited" + work_package_note: "Work Package note added" + title: + project: "Project: %{name}" + subproject: "Subproject: %{name}" + export: + your_work_packages_export: "Your work packages export" + succeeded: "The export has completed successfully." + failed: "The export has failed: %{message}" + format: + atom: "Atom" + csv: "CSV" + pdf: "PDF" + pdf_overview_table: "PDF Table" + pdf_report_with_images: "PDF Report with images" + pdf_report: "PDF Report" + image: + omitted: "Image not exported." + units: + hours: h + days: d + extraction: + available: + pdftotext: "Pdftotext available (optional)" + unrtf: "Unrtf available (optional)" + catdoc: "Catdoc available (optional)" + xls2csv: "Xls2csv available (optional)" + catppt: "Catppt available (optional)" + tesseract: "Tesseract available (optional)" + general_csv_decimal_separator: "." + general_csv_encoding: "UTF-8" + general_csv_separator: "," + general_first_day_of_week: "7" + general_pdf_encoding: "ISO-8859-1" + general_text_no: "no" + general_text_yes: "yes" + general_text_No: "No" + general_text_Yes: "Yes" + general_text_true: "true" + general_text_false: "false" + gui_validation_error: "1 error" + gui_validation_error_plural: "%{count} errors" + homescreen: + additional: + projects: "Newest visible projects in this instance." + no_visible_projects: "There are no visible projects in this instance." + users: "Newest registered users in this instance." + blocks: + community: "OpenProject community" + upsale: + title: "Upgrade to Enterprise edition" + more_info: "More information" + links: + upgrade_enterprise_edition: "Upgrade to Enterprise edition" + postgres_migration: "Migrating your installation to PostgreSQL" + user_guides: "User guides" + faq: "FAQ" + glossary: "Glossary" + shortcuts: "Shortcuts" + blog: "OpenProject blog" + forums: "Community forum" + newsletter: "Security alerts / Newsletter" + image_conversion: + imagemagick: "Imagemagick" + journals: + changes_retracted: "The changes were retracted." + caused_changes: + dates_changed: "Dates changed" + system_update: "OpenProject system update:" + cause_descriptions: + work_package_predecessor_changed_times: by changes to predecessor %{link} + work_package_parent_changed_times: by changes to parent %{link} + work_package_children_changed_times: by changes to child %{link} + work_package_related_changed_times: by changes to related %{link} + unaccessable_work_package_changed: by changes to a related work package + working_days_changed: + changed: "by changes to working days (%{changes})" + days: + working: "%{day} is now working" + non_working: "%{day} is now non-working" + dates: + working: "%{date} is now working" + non_working: "%{date} is now non-working" + system_update: + file_links_journal: > + From now on, activity related to file links (files stored in external storages) will appear here in the Activity tab. The following represent activity concerning links that already existed: + links: + configuration_guide: "Configuration guide" + get_in_touch: "You have questions? Get in touch with us." + instructions_after_registration: "You can sign in as soon as your account has been activated by clicking %{signin}." + instructions_after_logout: "You can sign in again by clicking %{signin}." + instructions_after_error: "You can try to sign in again by clicking %{signin}. If the error persists, ask your admin for help." + menus: + admin: + mail_notification: "Email notifications" + mails_and_notifications: "Emails and notifications" + aggregation: "Aggregation" + api_and_webhooks: "API and webhooks" + quick_add: + label: "Open quick add menu" + my_account: + access_tokens: + no_results: + title: "No access tokens to display" + description: "All of them have been disabled. They can be re-enabled in the administration menu." + access_tokens: "Access tokens" + headers: + action: "Action" + expiration: "Expires" + indefinite_expiration: "Never" + simple_revoke_confirmation: "Are you sure you want to revoke this token?" + api: + title: "API" + text_hint: "API tokens allow third-party applications to communicate with this OpenProject instance via REST APIs." + static_token_name: "API token" + disabled_text: "API tokens are not enabled by the administrator. Please contact your administrator to use this feature." + ical: + title: "iCalendar" + text_hint: 'iCalendar tokens allow users to subscribe to OpenProject calendars and view up-to-date work package information from external clients.' + disabled_text: "iCalendar subscriptions are not enabled by the administrator. Please contact your administrator to use this feature." + empty_text_hint: "To add an iCalendar token, subscribe to a new or existing calendar from within the Calendar module of a project. You must have the necessary permissions." + oauth: + title: "OAuth" + text_hint: "OAuth tokens allow third-party applications to connect with this OpenProject instance." + empty_text_hint: "There is no third-party application access configured and active for you. Please contact your administrator to activate this feature." + rss: + title: "RSS" + text_hint: "RSS tokens allow users to keep up with the latest changes in this OpenProject instance via an external RSS reader." + static_token_name: "RSS token" + disabled_text: "RSS tokens are not enabled by the administrator. Please contact your administrator to use this feature." + storages: + title: "File Storages" + text_hint: "File Storage tokens connect this OpenProject instance with an external File Storage." + empty_text_hint: "There is no storage access linked to your account." + revoke_token: "Do you really want to remove this token? You will need to login again on %{storage}" + removed: "File Storage token successfully removed" + failed: "An error occurred and the token couldn't be removed. Please try again later." + notifications: + send_notifications: "Send notifications for this action" + work_packages: + subject: + created: "The work package was created." + assigned: "You have been assigned to %{work_package}" + subscribed: "You subscribed to %{work_package}" + mentioned: "You have been mentioned in %{work_package}" + responsible: "You have become accountable for %{work_package}" + watched: "You are watching %{work_package}" + update_info_mail: + body: > + We are excited to announce the release of OpenProject 12.0. It's a major release that will hopefully significantly improve the way you use OpenProject. + Starting with this release, we are introducing in-app notifications. From now on, you will receive notifications for updates to work packages directly in OpenProject. You can mark these notifications as read, reply to a comment or even directly modify work package attributes without leaving the notification center. + This also means that we will no longer be using emails for notifications. We think the new notification center is a better place to view and act upon these updates. Nevertheless, if you would like continue receiving updates via email, you can choose to receive daily email reminders at particular times of your choosing. + Please make sure to verify your new default notification settings, and set your preferences for notifications and email reminders via your account settings. You can do this through the “Change email settings” button bellow. + We hope you find in-app notifications useful and that they makes you even more productive. + Sincerely, The OpenProject team + body_header: "Version 12.0 with Notification Center" + body_subheader: "News" + subject: "Important changes to notifications with the release of 12.0" + label_accessibility: "Accessibility" + label_account: "Account" + label_active: "Active" + label_activate_user: "Activate user" + label_active_in_new_projects: "Active in new projects" + label_activity: "Activity" + label_add_edit_translations: "Add and edit translations" + label_add_another_file: "Add another file" + label_add_columns: "Add selected columns" + label_add_note: "Add a note" + label_add_related_work_packages: "Add related work packages" + label_add_subtask: "Add subtask" + label_added: "added" + label_added_by: "Added by %{author}" + label_added_time_by: "Added by %{author} %{age} ago" + label_additional_workflow_transitions_for_assignee: "Additional transitions allowed when the user is the assignee" + label_additional_workflow_transitions_for_author: "Additional transitions allowed when the user is the author" + label_administration: "Administration" + label_advanced_settings: "Advanced settings" + label_age: "Age" + label_ago: "days ago" + label_all: "all" + label_all_projects: "All projects" + label_all_time: "all time" + label_all_words: "All words" + label_all_open_wps: "All open" + label_always_visible: "Always displayed" + label_announcement: "Announcement" + label_api_access_key: "API access key" + label_api_access_key_created_on: "API access key created %{value} ago" + label_api_access_key_type: "API" + label_ical_access_key_type: "iCalendar" + label_ical_access_key_description: 'iCalendar token "%{token_name}" for "%{calendar_name}" in "%{project_name}"' + label_ical_access_key_not_present: "iCalendar token(s) not present." + label_ical_access_key_generation_hint: "Automatically generated when subscribing to a calendar." + label_ical_access_key_latest: "latest" + label_ical_access_key_revoke: "Revoke" + label_applied_status: "Applied status" + label_archive_project: "Archive project" + label_archived_projects: "Archived projects" + label_ascending: "Ascending" + label_assigned_to_me_work_packages: "Work packages assigned to me" + label_associated_revisions: "Associated revisions" + label_attachment_delete: "Delete file" + label_attachment_new: "New file" + label_attachment_plural: "Files" + label_attribute: "Attribute" + label_attribute_plural: "Attributes" + label_ldap_auth_source_new: "New LDAP connection" + label_ldap_auth_source: "LDAP connection" + label_ldap_auth_source_plural: "LDAP connections" + label_authentication: "Authentication" + label_available_global_roles: "Available global roles" + label_available_project_forums: "Available forums" + label_available_project_repositories: "Available repositories" + label_available_project_versions: "Available versions" + label_available_project_work_package_categories: "Available work package categories" + label_available_project_work_package_types: "Available work package types" + label_available_projects: "Available projects" + label_api_documentation: "API documentation" + label_backup: "Backup" + label_between: "between" + label_blocked_by: "blocked by" + label_blocks: "blocks" + label_blog: "Blog" + label_forums_locked: "Locked" + label_forum_new: "New forum" + label_forum_plural: "Forums" + label_forum_sticky: "Sticky" + label_boolean: "Boolean" + label_branch: "Branch" + label_browse: "Browse" + label_bulk_edit_selected_work_packages: "Bulk edit selected work packages" + label_bundled: "(Bundled)" + label_calendar: "Calendar" + label_calendars_and_dates: "Calendars and dates" + label_calendar_show: "Show Calendar" + label_category: "Category" + label_consent_settings: "User Consent" + label_wiki_menu_item: Wiki menu item + label_select_main_menu_item: Select new main menu item + label_required_disk_storage: "Required disk storage" + label_send_invitation: Send invitation + label_change_plural: "Changes" + label_change_properties: "Change properties" + label_change_status: "Change status" + label_change_status_of_user: "Change status of #{username}" + label_change_view_all: "View all changes" + label_changes_details: "Details of all changes" + label_changeset: "Changeset" + label_changeset_id: "Changeset ID" + label_changeset_plural: "Changesets" + label_checked: "checked" + label_check_uncheck_all_in_column: "Check/Uncheck all in column" + label_check_uncheck_all_in_row: "Check/Uncheck all in row" + label_child_element: "Child element" + label_chronological_order: "Oldest first" + label_close_versions: "Close completed versions" + label_closed_work_packages: "closed" + label_collapse: "Collapse" + label_collapsed_click_to_show: "Collapsed. Click to show" + label_configuration: configuration + label_comment_add: "Add a comment" + label_comment_added: "Comment added" + label_comment_delete: "Delete comments" + label_comment_plural: "Comments" + label_commits_per_author: "Commits per author" + label_commits_per_month: "Commits per month" + label_confirmation: "Confirmation" + label_contains: "contains" + label_content: "Content" + label_color_plural: "Colors" + label_copied: "copied" + label_copy_same_as_target: "Same as target" + label_copy_source: "Source" + label_copy_target: "Target" + label_copy_workflow_from: "Copy workflow from" + label_copy_project: "Copy project" + label_core_version: "Core version" + label_core_build: "Core build" + label_current_status: "Current status" + label_current_version: "Current version" + label_custom_field_add_no_type: "Add this field to a work package type" + label_custom_field_new: "New custom field" + label_custom_field_plural: "Custom fields" + label_custom_field_default_type: "Empty type" + label_custom_style: "Design" + label_database_version: "PostgreSQL version" + label_date: "Date" + label_date_and_time: "Date and time" + label_date_format: "Date format" + label_date_from: "From" + label_date_from_to: "From %{start} to %{end}" + label_date_to: "To" + label_day_plural: "days" + label_default: "Default" + label_delete_user: "Delete user" + label_delete_project: "Delete project" + label_deleted: "deleted" + label_deleted_custom_field: "(deleted custom field)" + label_deleted_custom_option: "(deleted option)" + label_empty_element: "(empty)" + label_missing_or_hidden_custom_option: "(missing value or lacking permissions to access)" + label_descending: "Descending" + label_details: "Details" + label_development_roadmap: "Development roadmap" + label_diff: "diff" + label_diff_inline: "inline" + label_diff_side_by_side: "side by side" + label_digital_accessibility: "Digital accessibility (DE)" + label_disabled: "disabled" + label_display: "Display" + label_display_per_page: "Per page: %{value}" + label_display_used_statuses_only: "Only display statuses that are used by this type" + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_downloads_abbr: "D/L" + label_duplicated_by: "duplicated by" + label_duplicate: "duplicate" + label_duplicates: "duplicates" + label_edit: "Edit" + label_edit_x: "Edit: %{x}" + label_enable_multi_select: "Toggle multiselect" + label_enabled_project_custom_fields: "Enabled custom fields" + label_enabled_project_modules: "Enabled modules" + label_enabled_project_activities: "Enabled time tracking activities" + label_end_to_end: "end to end" + label_end_to_start: "end to start" + label_enumeration_new: "New enumeration value" + label_enumeration_value: "Enumeration value" + label_enumerations: "Enumerations" + label_enterprise: "Enterprise" + label_enterprise_active_users: "%{current}/%{limit} booked active users" + label_enterprise_edition: "Enterprise edition" + label_enterprise_support: "Enterprise support" + label_enterprise_addon: "Enterprise add-on" + label_environment: "Environment" + label_estimates_and_time: "Estimates and time" + label_equals: "is" + label_everywhere: "everywhere" + label_example: "Example" + label_experimental: "Experimental" + label_i_am_member: "I am member" + label_import: "Import" + label_export_to: "Also available in:" + label_expanded_click_to_collapse: "Expanded. Click to collapse" + label_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" + label_favoured: "Favoured" + label_feed_plural: "Feeds" + label_feeds_access_key: "RSS access key" + label_feeds_access_key_created_on: "RSS access key created %{value} ago" + label_feeds_access_key_type: "RSS" + label_file_plural: "Files" + label_filter_add: "Add filter" + label_filter_plural: "Filters" + label_filters_toggle: "Show/hide filters" + label_float: "Float" + label_folder: "Folder" + label_follows: "follows" + label_force_user_language_to_default: "Set language of users having a non allowed language to default" + label_form_configuration: "Form configuration" + label_gantt: "Gantt" + label_gantt_chart: "Gantt chart" + label_general: "General" + label_generate_key: "Generate a key" + label_git_path: "Path to .git directory" + label_greater_or_equal: ">=" + label_group_by: "Group by" + label_group_new: "New group" + label_group: "Group" + label_group_named: "Group %{name}" + label_group_plural: "Groups" + label_help: "Help" + label_here: here + label_hide: "Hide" + label_history: "History" + label_hierarchy_leaf: "Hierarchy leaf" + label_home: "Home" + label_subject_or_id: "Subject or ID" + label_calendar_subscriptions: "Calendar subscriptions" + label_impressum: "Legal notice" + label_in: "in" + label_in_less_than: "in less than" + label_in_more_than: "in more than" + label_inactive: "Inactive" + label_incoming_emails: "Incoming emails" + label_includes: "includes" + label_index_by_date: "Index by date" + label_index_by_title: "Index by title" + label_information: "Information" + label_information_plural: "Information" + label_installation_guides: "Installation guides" + label_integer: "Integer" + label_internal: "Internal" + label_introduction_video: "Introduction video" + label_invite_user: "Invite user" + label_show_hide: "Show/hide" + label_show_all_registered_users: "Show all registered users" + label_journal: "Journal" + label_journal_diff: "Description Comparison" + label_language: "Language" + label_languages: "Languages" + label_jump_to_a_project: "Jump to a project..." + label_keyword_plural: "Keywords" + label_language_based: "Based on user's language" + label_last_activity: "Last activity" + label_last_change_on: "Last change on" + label_last_changes: "last %{count} changes" + label_last_login: "Last login" + label_last_month: "last month" + label_last_n_days: "last %{count} days" + label_last_week: "last week" + label_latest_revision: "Latest revision" + label_latest_revision_plural: "Latest revisions" + label_ldap_authentication: "LDAP authentication" + label_less_or_equal: "<=" + label_less_than_ago: "less than days ago" + label_list: "List" + label_loading: "Loading..." + label_lock_user: "Lock user" + label_logged_as: "Logged in as" + label_login: "Sign in" + label_custom_logo: "Custom logo" + label_custom_export_logo: "Custom export logo" + label_custom_export_cover: "Custom export cover background" + label_custom_export_cover_overlay: "Custom export cover background overlay" + label_custom_export_cover_text_color: "Text color" + label_custom_pdf_export_settings: "Custom PDF export settings" + label_custom_favicon: "Custom favicon" + label_custom_touch_icon: "Custom touch icon" + label_logout: "Sign out" + label_main_menu: "Side Menu" + label_manage_groups: "Manage groups" + label_managed_repositories_vendor: "Managed %{vendor} repositories" + label_max_size: "Maximum size" + label_me: "me" + label_member_new: "New member" + label_member_all_admin: "(All roles due to admin status)" + label_member_plural: "Members" + lable_membership_added: "Member added" + lable_membership_updated: "Member updated" + label_menu_badge: + pre_alpha: "pre-alpha" + alpha: "alpha" + beta: "beta" + label_menu_item_name: "Name of menu item" + label_message: "Message" + label_message_last: "Last message" + label_message_new: "New message" + label_message_plural: "Messages" + label_message_posted: "Message added" + label_min_max_length: "Min - Max length" + label_minute_plural: "minutes" + label_missing_api_access_key: "Missing API access key" + label_missing_feeds_access_key: "Missing RSS access key" + label_modification: "%{count} change" + label_modified: "modified" + label_module_plural: "Modules" + label_modules: "Modules" + label_months_from: "months from" + label_more: "More" + label_more_than_ago: "more than days ago" + label_move_work_package: "Move work package" + label_my_account: "My account" + label_my_activity: "My activity" + label_my_account_data: "My account data" + label_my_projects: "My projects" + label_my_queries: "My custom queries" + label_name: "Name" + label_never: "Never" + label_new: "New" + label_new_features: "New features" + label_new_statuses_allowed: "New statuses allowed" + label_news_singular: "News" + label_news_added: "News added" + label_news_comment_added: "Comment added to a news" + label_news_latest: "Latest news" + label_news_new: "Add news" + label_news_edit: "Edit news" + label_news_plural: "News" + label_news_view_all: "View all news" + label_next: "Next" + label_next_week: "Next week" + label_no_change_option: "(No change)" + label_no_data: "No data to display" + label_no_parent_page: "No parent page" + label_nothing_display: "Nothing to display" + label_nobody: "nobody" + label_not_found: "not found" + label_none: "none" + label_none_parentheses: "(none)" + label_not_contains: "doesn't contain" + label_not_equals: "is not" + label_on: "on" + label_operator_all: "is not empty" + label_operator_none: "is empty" + label_operator_equals_or: "is (OR)" + label_operator_equals_all: "is (AND)" + label_operator_shared_with_user_any: "any" + label_open_menu: "Open menu" + label_open_work_packages: "open" + label_open_work_packages_plural: "open" + label_openproject_website: "OpenProject website" + label_optional_description: "Description" + label_options: "Options" + label_other: "Other" + label_overall_activity: "Overall activity" + label_overview: "Overview" + label_page_title: "Page title" + label_part_of: "part of" + label_password_lost: "Forgot your password?" + label_password_rule_lowercase: "Lowercase" + label_password_rule_numeric: "Numeric Characters" + label_password_rule_special: "Special Characters" + label_password_rule_uppercase: "Uppercase" + label_path_encoding: "Path encoding" + label_per_page: "Per page" + label_people: "People" + label_permissions: "Permissions" + label_permissions_report: "Permissions report" + label_personalize_page: "Personalize this page" + label_placeholder_user: "Placeholder user" + label_placeholder_user_new: "New placeholder user" + label_placeholder_user_plural: "Placeholder users" + label_planning: "Planning" + label_please_login: "Please log in" + label_plugins: "Plugins" + label_modules_and_plugins: "Modules and Plugins" + label_precedes: "precedes" + label_preferences: "Preferences" + label_preview: "Preview" + label_previous: "Previous" + label_previous_week: "Previous week" + label_principal_invite_via_email: " or invite new users via email" + label_principal_search: "Add existing users or groups" + label_privacy_policy: "Data privacy and security policy" + label_product_version: "Product version" + label_profile: "Profile" + label_project_activity: "Project activity" + label_project_attribute_plural: "Project attributes" + label_project_count: "Total number of projects" + label_project_copy_notifications: "Send email notifications during the project copy" + label_project_latest: "Latest projects" + label_project_default_type: "Allow empty type" + label_project_hierarchy: "Project hierarchy" + label_project_new: "New project" + label_project_plural: "Projects" + label_project_settings: "Project settings" + label_project_storage_plural: "File Storages" + label_project_storage_project_folder: "File Storages: Project folders" + label_projects_storage_information: "%{count} projects using %{storage} disk storage" + label_project_view_all: "View all projects" + label_project_show_details: "Show project details" + label_project_hide_details: "Hide project details" + label_public_projects: "Public projects" + label_query_new: "New query" + label_query_plural: "Custom queries" + label_read: "Read..." + label_register: "Create a new account" + label_register_with_developer: "Register as developer" + label_registered_on: "Registered on" + label_registration_activation_by_email: "account activation by email" + label_registration_automatic_activation: "automatic account activation" + label_registration_manual_activation: "manual account activation" + label_related_work_packages: "Related work packages" + label_relates: "related to" + label_relates_to: "related to" + label_relation_delete: "Delete relation" + label_relation_new: "New relation" + label_release_notes: "Release notes" + label_remove_columns: "Remove selected columns" + label_renamed: "renamed" + label_reply_plural: "Replies" + label_report: "Report" + label_report_bug: "Report a bug" + label_report_plural: "Reports" + label_reported_work_packages: "Reported work packages" + label_reporting: "Reporting" + label_reporting_plural: "Reportings" + label_repository: "Repository" + label_repository_root: "Repository root" + label_repository_plural: "Repositories" + label_required: "required" + label_requires: "requires" + label_result_plural: "Results" + label_reverse_chronological_order: "Newest first" + label_revision: "Revision" + label_revision_id: "Revision %{value}" + label_revision_plural: "Revisions" + label_roadmap: "Roadmap" + label_roadmap_edit: "Edit roadmap %{name}" + label_roadmap_due_in: "Due in %{value}" + label_roadmap_no_work_packages: "No work packages for this version" + label_roadmap_overdue: "%{value} late" + label_role_and_permissions: "Roles and permissions" + label_role_new: "New role" + label_role_plural: "Roles" + label_role_search: "Assign role to new members" + label_scm: "SCM" + label_search: "Search" + label_send_information: "Send new credentials to the user" + label_send_test_email: "Send a test email" + label_setting_plural: "Settings" + label_system_settings: "System settings" + label_show_completed_versions: "Show completed versions" + label_sort: "Sort" + label_sort_by: "Sort by %{value}" + label_sorted_by: "sorted by %{value}" + label_sort_higher: "Move up" + label_sort_highest: "Move to top" + label_sort_lower: "Move down" + label_sort_lowest: "Move to bottom" + label_spent_time: "Spent time" + label_start_to_end: "start to end" + label_start_to_start: "start to start" + label_statistics: "Statistics" + label_status: "Status" + label_storage_free_space: "Remaining disk space" + label_storage_used_space: "Used disk space" + label_storage_group: "Storage filesystem %{identifier}" + label_storage_for: "Encompasses storage for" + label_string: "Text" + label_subproject: "Subproject" + label_subproject_new: "New subproject" + label_subproject_plural: "Subprojects" + label_subtask_plural: "Subtasks" + label_summary: "Summary" + label_system: "System" + label_system_storage: "Storage information" + label_table_of_contents: "Table of contents" + label_tag: "Tag" + label_text: "Long text" + label_this_month: "this month" + label_this_week: "this week" + label_this_year: "this year" + label_time_entry_plural: "Spent time" + label_title: "Title" + label_projects_menu: "Projects" + label_today: "today" + label_top_menu: "Top Menu" + label_topic_plural: "Topics" + label_total: "Total" + label_type_new: "New type" + label_type_plural: "Types" + label_ui: "User Interface" + label_update_work_package_done_ratios: "Update work package % Complete values" + label_updated_time: "Updated %{value} ago" + label_updated_time_at: "%{author} %{age}" + label_updated_time_by: "Updated by %{author} %{age} ago" + label_upgrade_guides: "Upgrade guides" + label_used_by: "Used by" + label_used_by_types: "Used by types" + label_used_in_projects: "Used in projects" + label_user: "User" + label_user_and_permission: "Users and permissions" + label_user_named: "User %{name}" + label_user_activity: "%{value}'s activity" + label_user_anonymous: "Anonymous" + label_user_mail_option_all: "For any event on all my projects" + label_user_mail_option_none: "No events" + label_user_mail_option_only_assigned: "Only for things I am assigned to" + label_user_mail_option_only_my_events: "Only for things I watch or I'm involved in" + label_user_mail_option_only_owner: "Only for things I am the owner of" + label_user_mail_option_selected: "For any event on the selected projects only" + label_user_new: "New user" + label_user_plural: "Users" + label_user_search: "Search for user" + label_user_settings: "User settings" + label_users_settings: "Users settings" + label_version_new: "New version" + label_version_plural: "Versions" + label_version_sharing_descendants: "With subprojects" + label_version_sharing_hierarchy: "With project hierarchy" + label_version_sharing_none: "Not shared" + label_version_sharing_system: "With all projects" + label_version_sharing_tree: "With project tree" + label_videos: "Videos" + label_view_all_revisions: "View all revisions" + label_view_diff: "View differences" + label_view_revisions: "View revisions" + label_watched_work_packages: "Watched work packages" + label_what_is_this: "What is this?" + label_week: "Week" + label_wiki_content_added: "Wiki page added" + label_wiki_content_updated: "Wiki page updated" + label_wiki_toc: "Table of Contents" + label_wiki_toc_empty: "Table of Contents is empty as no headings are present." + label_wiki_dont_show_menu_item: "Do not show this wikipage in project navigation" + label_wiki_edit: "Wiki edit" + label_wiki_edit_plural: "Wiki edits" + label_wiki_page_attachments: "Wiki page attachments" + label_wiki_page_id: "Wiki page ID" + label_wiki_navigation: "Wiki navigation" + label_wiki_page: "Wiki page" + label_wiki_page_plural: "Wiki pages" + label_wiki_show_index_page_link: "Show submenu item 'Table of Contents'" + label_wiki_show_menu_item: "Show as menu item in project navigation" + label_wiki_show_new_page_link: "Show submenu item 'Create new child page'" + label_wiki_show_submenu_item: "Show as submenu item of " + label_wiki_start: "Start page" + label_work_package: "Work package" + label_work_package_attachments: "Work package attachments" + label_work_package_category_new: "New category" + label_work_package_category_plural: "Work package categories" + label_work_package_hierarchy: "Work package hierarchy" + label_work_package_new: "New work package" + label_work_package_edit: "Edit work package %{name}" + label_work_package_plural: "Work packages" + label_work_package_status: "Work package status" + label_work_package_status_new: "New status" + label_work_package_status_plural: "Work package statuses" + label_work_package_types: "Work package types" + label_work_package_tracking: "Work package tracking" + label_work_package_view_all: "View all work packages" + label_workflow: "Workflow" + label_workflow_plural: "Workflows" + label_workflow_summary: "Summary" + label_working_days: "Working days" + label_x_closed_work_packages_abbr: + one: "1 closed" + other: "%{count} closed" + zero: "0 closed" + label_x_comments: + one: "1 comment" + other: "%{count} comments" + zero: "no comments" + label_x_open_work_packages_abbr: + one: "1 open" + other: "%{count} open" + zero: "0 open" + label_x_work_packages: + one: "1 work package" + other: "%{count} work packages" + zero: "No work packages" + label_x_projects: + one: "1 project" + other: "%{count} projects" + zero: "no projects" + label_yesterday: "yesterday" + label_role_type: "Type" + label_member_role: "Project role" + label_global_role: "Global role" + label_not_changeable: "(not changeable)" + label_global: "Global" + label_seeded_from_env_warning: This record has been created through a setting / environment variable. It is not editable through UI. + macro_execution_error: "Error executing the macro %{macro_name}" + macro_unavailable: "Macro %{macro_name} cannot be displayed." + macros: + placeholder: "[Placeholder] Macro %{macro_name}" + errors: + missing_or_invalid_parameter: "Missing or invalid macro parameter." + legacy_warning: + timeline: "This legacy timeline macro has been removed and is no longer available. You can replace the functionality with an embedded table macro." + include_wiki_page: + removed: "The macro does no longer exist." + wiki_child_pages: + errors: + page_not_found: "Cannot find the wiki page '%{name}'." + create_work_package_link: + errors: + no_project_context: "Calling create_work_package_link macro from outside project context." + invalid_type: "No type found with name '%{type}' in project '%{project}'." + link_name: "New work package" + link_name_type: "New %{type_name}" + mail: + actions: "Actions" + digests: + including_mention_singular: "including a mention" + including_mention_plural: "including %{number_mentioned} mentions" + unread_notification_singular: "1 unread notification" + unread_notification_plural: "%{number_unread} unread notifications" + you_have: "You have" + logo_alt_text: "Logo" + mention: + subject: "%{user_name} mentioned you in #%{id} - %{subject}" + notification: + center: 'To notification center' + see_in_center: 'See comment in notification center' + settings: 'Change email settings' + salutation: 'Hello %{user}' + salutation_full_name: 'Full name' + work_packages: + created_at: "Created at %{timestamp} by %{user} " + login_to_see_all: "Log in to see all notifications." + mentioned: "You have been mentioned in a comment" + mentioned_by: "%{user} mentioned you in a comment" + more_to_see: + one: "There is 1 more work package with notifications." + other: "There are %{count} more work packages with notifications." + open_in_browser: "Open in browser" + reason: + watched: "Watched" + assigned: "Assigned" + responsible: "Accountable" + mentioned: "Mentioned" + shared: "Shared" + subscribed: "all" + prefix: "Received because of the notification setting: %{reason}" + date_alert_start_date: "Date alert" + date_alert_due_date: "Date alert" + see_all: "See all" + updated_at: "Updated at %{timestamp} by %{user}" + sharing: + work_packages: + allowed_actions: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + create_account: "To access this work package, you will need to create and activate an account on %{instance}." + open_work_package: "Open work package" + subject: "Work package #%{id} was shared with you" + enterprise_text: "Share work packages with users who are not members of the project." + summary: + user: "%{user} shared a work package with you with %{role_rights} rights" + group: "%{user} shared a work package with the group %{group} you are a member of" + mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" + mail_body_account_information: "Your account information" + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_backup_ready: "Your requested backup is ready. You can download it here:" + mail_body_backup_token_reset_admin_info: The backup token for user '%{user}' has been reset. + mail_body_backup_token_reset_user_info: Your backup token has been reset. + mail_body_backup_token_info: The previous token is no longer valid. + mail_body_backup_waiting_period: The new token will be enabled in %{hours} hours. + mail_body_backup_token_warning: If this wasn't you, login to OpenProject immediately and reset it again. + mail_body_incoming_email_error: The email you sent to OpenProject could not be processed. + mail_body_incoming_email_error_in_reply_to: "At %{received_at} %{from_email} wrote" + mail_body_incoming_email_error_logs: "Logs" + mail_body_lost_password: "To change your password, click on the following link:" + mail_password_change_not_possible: + title: "Password change not possible" + body: "Your account at %{app_title} is connected to an external authentication provider (%{name})." + subtext: "Passwords for external account cannot be changed in the application. Please use the lost password functionality of your authentication provider." + mail_body_register: "Welcome to %{app_title}. Please activate your account by clicking on this link:" + mail_body_register_header_title: "Project member invitation email" + mail_body_register_user: "Dear %{name}, " + mail_body_register_links_html: | + Please feel free to browse our youtube channel (%{youtube_link}) where we provide a webinar (%{webinar_link}) + and “Get started” videos (%{get_started_link}) to make your first steps in OpenProject as easy as possible. +
+ If you have any further questions, consult our documentation (%{documentation_link}) or contact your administrator. + mail_body_register_closing: "Your OpenProject team" + mail_body_register_ending: "Stay connected! Kind regards," + mail_body_reminder: "%{count} work package(s) that are assigned to you are due in the next %{days} days:" + mail_body_group_reminder: '%{count} work package(s) that are assigned to group "%{group}" are due in the next %{days} days:' + mail_body_wiki_page_added: "The '%{id}' wiki page has been added by %{author}." + mail_body_wiki_page_updated: "The '%{id}' wiki page has been updated by %{author}." + mail_subject_account_activation_request: "%{value} account activation request" + mail_subject_backup_ready: "Your backup is ready" + mail_subject_backup_token_reset: "Backup token reset" + mail_subject_incoming_email_error: "An email you sent to OpenProject could not be processed" + mail_subject_lost_password: "Your %{value} password" + mail_subject_register: "Your %{value} account activation" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_member_added_project: + subject: "%{project} - You have been added as a member" + body: + added_by: + without_message: "%{user} added you as a member to the project '%{project}'." + with_message: "%{user} added you as a member to the project '%{project}' writing:" + roles: "You have the following roles:" + mail_member_updated_project: + subject: "%{project} - Your roles have been updated" + body: + updated_by: + without_message: "%{user} updated the roles you have in the project '%{project}'." + with_message: "%{user} updated the roles you have in the project '%{project}' writing:" + roles: "You now have the following roles:" + mail_member_updated_global: + subject: "Your global permissions have been updated" + body: + updated_by: + without_message: "%{user} updated the roles you have globally." + with_message: "%{user} updated the roles you have globally writing:" + roles: "You now have the following roles:" + mail_user_activation_limit_reached: + subject: User activation limit reached + message: | + A new user (%{email}) tried to create an account on an OpenProject environment that you manage (%{host}). + The user cannot activate their account since the user limit has been reached. + steps: + label: "To allow the user to sign in you can either: " + a: "Upgrade your payment plan ([here](upgrade_url))" #here turned into a link + b: "Lock or delete an existing user ([here](users_url))" #here turned into a link + more_actions: "More functions" + noscript_description: "You need to activate JavaScript in order to use OpenProject!" + noscript_heading: "JavaScript disabled" + noscript_learn_more: "Learn more" + notice_accessibility_mode: The accessibility mode can be enabled in your [account settings](url). + notice_account_activated: "Your account has been activated. You can now log in." + notice_account_already_activated: The account has already been activated. + notice_account_invalid_token: Invalid activation token + notice_account_invalid_credentials: "Invalid user or password" + notice_account_invalid_credentials_or_blocked: "Invalid user or password or the account is blocked due to multiple failed login attempts. If so, it will be unblocked automatically in a short time." + notice_account_lost_email_sent: "An email with instructions to choose a new password has been sent to you." + notice_account_new_password_forced: "A new password is required." + notice_account_password_expired: "Your password expired after %{days} days. Please set a new one." + notice_account_password_updated: "Password was successfully updated." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_account_register_done: "Account was successfully created. To activate your account, click on the link that was emailed to you." + notice_account_unknown_email: "Unknown user." + notice_account_update_failed: "Account setting could not be saved. Please have a look at your account page." + notice_account_updated: "Account was successfully updated." + notice_account_other_session_expired: "All other sessions tied to your account have been invalidated." + notice_account_wrong_password: "Wrong password" + notice_account_registered_and_logged_in: "Welcome, your account has been activated. You are logged in now." + notice_activation_failed: The account could not be activated. + notice_auth_stage_verification_error: "Could not verify stage '%{stage}'." + notice_auth_stage_wrong_stage: "Expected to finish authentication stage '%{expected}', but '%{actual}' returned." + notice_auth_stage_error: "Authentication stage '%{stage}' failed." + notice_can_t_change_password: "This account uses an external authentication source. Impossible to change the password." + notice_custom_options_deleted: "Option '%{option_value}' and its %{num_deleted} occurrences were deleted." + notice_email_error: "An error occurred while sending mail (%{value})" + notice_email_sent: "An email was sent to %{value}" + notice_failed_to_save_work_packages: "Failed to save %{count} work package(s) on %{total} selected: %{ids}." + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + notice_deletion_scheduled: "The deletion has been scheduled and is performed asynchronously." + notice_file_not_found: "The page you were trying to access doesn't exist or has been removed." + notice_forced_logout: "You have been automatically logged out after %{ttl_time} minutes of inactivity." + notice_internal_server_error: "An error occurred on the page you were trying to access. If you continue to experience problems please contact your %{app_title} administrator for assistance." + notice_work_package_done_ratios_updated: "% complete updated" + notice_locking_conflict: "Information has been updated by at least one other user in the meantime." + notice_locking_conflict_additional_information: "The update(s) came from %{users}." + notice_locking_conflict_reload_page: "Please reload the page, review the changes and reapply your updates." + notice_member_added: Added %{name} to the project. + notice_members_added: Added %{number} users to the project. + notice_member_removed: "Removed %{user} from project." + notice_member_deleted: "%{user} has been removed from the project and deleted." + notice_no_principals_found: "No results found." + notice_bad_request: "Bad Request." + notice_not_authorized: "You are not authorized to access this page." + notice_not_authorized_archived_project: "The project you're trying to access has been archived." + notice_password_confirmation_failed: "Your password is not correct. Cannot continue." + notice_principals_found_multiple: "There are %{number} results found. \n Tab to focus the first result." + notice_principals_found_single: "There is one result. \n Tab to focus it." + notice_project_not_deleted: "The project wasn't deleted." + notice_successful_connection: "Successful connection." + notice_successful_create: "Successful creation." + notice_successful_delete: "Successful deletion." + notice_successful_update: "Successful update." + notice_successful_update_custom_fields_added_to_project: | + Successful update. The custom fields of the activated types are automatically activated + on the work package form. See more. + notice_successful_update_custom_fields_added_to_type: | + Successful update. The active custom fields are automatically activated for + the associated projects of this type. + notice_to_many_principals_to_display: "There are too many results.\nNarrow down the search by typing in the name of the new member (or group)." + notice_user_missing_authentication_method: User has yet to choose a password or another way to sign in. + notice_user_invitation_resent: An invitation has been sent to %{email}. + present_access_key_value: "Your %{key_name} is: %{value}" + notice_automatic_set_of_standard_type: "Set standard type automatically." + notice_logged_out: "You have been logged out." + notice_wont_delete_auth_source: The LDAP connection cannot be deleted as long as there are still users using it. + notice_project_cannot_update_custom_fields: "You cannot update the project's available custom fields. The project is invalid: %{errors}" + notice_attachment_migration_wiki_page: > + This page was generated automatically during the update of OpenProject. It contains all attachments previously associated with the %{container_type} "%{container_name}". + #Default format for numbers + number: + format: + delimiter: "" + precision: 3 + separator: "." + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + gb: "GB" + kb: "kB" + mb: "MB" + tb: "TB" + onboarding: + heading_getting_started: "Get an overview" + text_getting_started_description: "Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu." + welcome: "Welcome to %{app_title}" + select_language: "Please select your language" + permission_add_work_package_notes: "Add notes" + permission_add_work_packages: "Add work packages" + permission_add_messages: "Post messages" + permission_add_project: "Create projects" + permission_add_work_package_attachments: "Add attachments" + permission_add_work_package_attachments_explanation: "Allows adding attachments without Edit work packages permission" + permission_archive_project: "Archive project" + permission_create_user: "Create users" + permission_manage_user: "Edit users" + permission_manage_placeholder_user: "Create, edit, and delete placeholder users" + permission_add_subprojects: "Create subprojects" + permission_add_work_package_watchers: "Add watchers" + permission_assign_versions: "Assign versions" + permission_browse_repository: "Read-only access to repository (browse and checkout)" + permission_change_wiki_parent_page: "Change parent wiki page" + permission_change_work_package_status: "Change work package status" + permission_change_work_package_status_explanation: "Allows changing status without Edit work packages permission" + permission_comment_news: "Comment news" + permission_commit_access: "Read/write access to repository (commit)" + permission_copy_projects: "Copy projects" + permission_copy_work_packages: "Copy work packages" + permission_create_backup: "Create backups" + permission_delete_work_package_watchers: "Delete watchers" + permission_delete_work_packages: "Delete work packages" + permission_delete_messages: "Delete messages" + permission_delete_own_messages: "Delete own messages" + permission_delete_reportings: "Delete reportings" + permission_delete_timelines: "Delete timelines" + permission_delete_wiki_pages: "Delete wiki pages" + permission_delete_wiki_pages_attachments: "Delete attachments" + permission_edit_work_package_notes: "Edit notes" + permission_edit_work_packages: "Edit work packages" + permission_edit_messages: "Edit messages" + permission_edit_own_work_package_notes: "Edit own notes" + permission_edit_own_messages: "Edit own messages" + permission_edit_own_time_entries: "Edit own time logs" + permission_edit_project: "Edit project" + permission_edit_reportings: "Edit reportings" + permission_edit_time_entries: "Edit time logs for other users" + permission_edit_timelines: "Edit timelines" + permission_edit_wiki_pages: "Edit wiki pages" + permission_export_work_packages: "Export work packages" + permission_export_wiki_pages: "Export wiki pages" + permission_list_attachments: "List attachments" + permission_log_own_time: "Log own time" + permission_log_time: "Log time for other users" + permission_manage_forums: "Manage forums" + permission_manage_categories: "Manage work package categories" + permission_manage_dashboards: "Manage dashboards" + permission_manage_work_package_relations: "Manage work package relations" + permission_manage_members: "Manage members" + permission_manage_news: "Manage news" + permission_manage_project_activities: "Manage project activities" + permission_manage_public_queries: "Manage public views" + permission_manage_repository: "Manage repository" + permission_manage_subtasks: "Manage work package hierarchies" + permission_manage_versions: "Manage versions" + permission_manage_wiki: "Manage wiki" + permission_manage_wiki_menu: "Manage wiki menu" + permission_move_work_packages: "Move work packages" + permission_protect_wiki_pages: "Protect wiki pages" + permission_rename_wiki_pages: "Rename wiki pages" + permission_save_queries: "Save views" + permission_search_project: "Search project" + permission_select_custom_fields: "Select custom fields" + permission_select_project_modules: "Select project modules" + permission_share_work_packages: "Share work packages" + permission_manage_types: "Select types" + permission_view_project: "View projects" + permission_view_changesets: "View repository revisions in OpenProject" + permission_view_commit_author_statistics: "View commit author statistics" + permission_view_dashboards: "View dashboards" + permission_view_work_package_watchers: "View watchers list" + permission_view_work_packages: "View work packages" + permission_view_messages: "View messages" + permission_view_news: "View news" + permission_view_members: "View members" + permission_view_reportings: "View reportings" + permission_view_shared_work_packages: "View work package shares" + permission_view_time_entries: "View spent time" + permission_view_timelines: "View timelines" + permission_view_wiki_edits: "View wiki history" + permission_view_wiki_pages: "View wiki" + permission_work_package_assigned: "Become assignee/responsible" + permission_work_package_assigned_explanation: "Work packages can be assigned to users and groups in possession of this role in the respective project" + permission_view_project_activity: "View project activity" + permission_save_bcf_queries: "Save BCF queries" + permission_manage_public_bcf_queries: "Manage public BCF queries" + permission_edit_attribute_help_texts: "Edit attribute help texts" + placeholders: + default: "-" + project: + destroy: + confirmation: "If you continue, the project %{identifier} will be permanently destroyed. To confirm this action please introduce the project name in the field below, this will:" + project_delete_result_1: "Delete all related data." + project_delete_result_2: "Delete all managed project folders in the attached storages." + info: "Deleting the project is an irreversible action." + project_verification: "Enter the project's name %{name} to verify the deletion." + subprojects_confirmation: "Its subproject(s): %{value} will also be deleted." + title: "Delete the project %{name}" + identifier: + warning_one: Members of the project will have to relocate the project's repositories. + warning_two: Existing links to the project will no longer work. + title: Change the project's identifier + template: + copying: > + Your project is being created from the selected template project. You will be notified by mail as soon as the project is available. + use_template: "Use template" + make_template: "Set as template" + remove_from_templates: "Remove from templates" + archive: + are_you_sure: "Are you sure you want to archive the project '%{name}'?" + archived: "Archived" + project_module_activity: "Activity" + project_module_forums: "Forums" + project_module_work_package_tracking: "Work packages" + project_module_news: "News" + project_module_repository: "Repository" + project_module_wiki: "Wiki" + permission_header_for_project_module_work_package_tracking: "Work packages and Gantt" + query: + attribute_and_direction: "%{attribute} (%{direction})" + #possible query parameters (e.g. issue queries), + #which are not attributes of an AR-Model. + query_fields: + active_or_archived: "Active or archived" + assigned_to_role: "Assignee's role" + assignee_or_group: "Assignee or belonging group" + member_of_group: "Assignee's group" + name_or_identifier: "Name or identifier" + only_subproject_id: "Only subproject" + shared_with_user: "Shared with user" + subproject_id: "Including subproject" + repositories: + at_identifier: "at %{identifier}" + atom_revision_feed: "Atom revision feed" + autofetch_information: "Check this if you want repositories to be updated automatically when accessing the repository module page.\nThis encompasses the retrieval of commits from the repository and refreshing the required disk storage." + checkout: + access: + readwrite: "Read + Write" + read: "Read-only" + none: "No checkout access, you may only view the repository through this application." + access_permission: "Your permissions on this repository" + url: "Checkout URL" + base_url_text: "The base URL to use for generating checkout URLs (e.g., https://myserver.example.org/repos/).\nNote: The base URL is only used for rewriting checkout URLs in managed repositories. Other repositories are not altered." + default_instructions: + git: |- + The data contained in this repository can be downloaded to your computer with Git. + Please consult the documentation of Git if you need more information on the checkout procedure and available clients. + subversion: |- + The data contained in this repository can be downloaded to your computer with Subversion. + Please consult the documentation of Subversion if you need more information on the checkout procedure and available clients. + enable_instructions_text: "Displays checkout instructions defined below on all repository-related pages." + instructions: "Checkout instructions" + show_instructions: "Display checkout instructions" + text_instructions: "This text is displayed alongside the checkout URL for guidance on how to check out the repository." + not_available: "Checkout instructions are not defined for this repository. Ask your administrator to enable them for this repository in the system settings." + create_managed_delay: "Please note: The repository is managed, it is created asynchronously on the disk and will be available shortly." + create_successful: "The repository has been registered." + delete_sucessful: "The repository has been deleted." + destroy: + confirmation: "If you continue, this will permanently delete the managed repository." + info: "Deleting the repository is an irreversible action." + info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." + managed_path_note: "The following directory will be erased: %{path}" + repository_verification: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" + subtitle_not_managed: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + title: "Delete the %{repository_type}" + title_not_managed: "Remove the linked %{repository_type}?" + errors: + build_failed: "Unable to create the repository with the selected configuration. %{reason}" + managed_delete: "Unable to delete the managed repository." + managed_delete_local: "Unable to delete the local repository on filesystem at '%{path}': %{error_message}" + empty_repository: "The repository exists, but is empty. It does not contain any revisions yet." + exists_on_filesystem: "The repository directory already exists in the filesystem." + filesystem_access_failed: "An error occurred while accessing the repository in the filesystem: %{message}" + not_manageable: "This repository vendor cannot be managed by OpenProject." + path_permission_failed: "An error occurred trying to create the following path: %{path}. Please ensure that OpenProject may write to that folder." + unauthorized: "You're not authorized to access the repository or the credentials are invalid." + unavailable: "The repository is unavailable." + exception_title: "Cannot access the repository: %{message}" + disabled_or_unknown_type: "The selected type %{type} is disabled or no longer available for the SCM vendor %{vendor}." + disabled_or_unknown_vendor: "The SCM vendor %{vendor} is disabled or no longer available." + remote_call_failed: "Calling the managed remote failed with message '%{message}' (Code: %{code})" + remote_invalid_response: "Received an invalid response from the managed remote." + remote_save_failed: "Could not save the repository with the parameters retrieved from the remote." + git: + instructions: + managed_url: "This is the URL of the managed (local) Git repository." + path: >- + Specify the path to your local Git repository ( e.g., %{example_path} ). You can also use remote repositories which are cloned to a local copy by using a value starting with http(s):// or file://. + path_encoding: "Override Git path encoding (Default: UTF-8)" + local_title: "Link existing local Git repository" + local_url: "Local URL" + local_introduction: "If you have an existing local Git repository, you can link it with OpenProject to access it from within the application." + managed_introduction: "Let OpenProject create and integrate a local Git repository automatically." + managed_title: "Git repository integrated into OpenProject" + managed_url: "Managed URL" + path: "Path to Git repository" + path_encoding: "Path encoding" + go_to_revision: "Go to revision" + managed_remote: "Managed repositories for this vendor are handled remotely." + managed_remote_note: "Information on the URL and path of this repository is not available prior to its creation." + managed_url: "Managed URL" + settings: + automatic_managed_repos_disabled: "Disable automatic creation" + automatic_managed_repos: "Automatic creation of managed repositories" + automatic_managed_repos_text: "By setting a vendor here, newly created projects will automatically receive a managed repository of this vendor." + scm_vendor: "Source control management system" + scm_type: "Repository type" + scm_types: + local: "Link existing local repository" + existing: "Link existing repository" + managed: "Create new repository in OpenProject" + storage: + not_available: "Disk storage consumption is not available for this repository." + update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." + oauth_application_details: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + oauth_application_details_link_text: "Go to settings page" + setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " + setup_documentation_details_link_text: "File Storages setup" + show_warning_details: "To use this file storage remember to activate the module and the specific storage in the project settings of each desired project." + subversion: + existing_title: "Existing Subversion repository" + existing_introduction: "If you have an existing Subversion repository, you can link it with OpenProject to access it from within the application." + existing_url: "Existing URL" + instructions: + managed_url: "This is the URL of the managed (local) Subversion repository." + url: "Enter the repository URL. This may either target a local repository (starting with %{local_proto} ), or a remote repository.\nThe following URL schemes are supported:" + managed_title: "Subversion repository integrated into OpenProject" + managed_introduction: "Let OpenProject create and integrate a local Subversion repository automatically." + managed_url: "Managed URL" + password: "Repository Password" + username: "Repository username" + truncated: "Sorry, we had to truncate this directory to %{limit} files. %{truncated} entries were omitted from the list." + named_repository: "%{vendor_name} repository" + update_settings_successful: "The settings have been successfully saved." + url: "URL to repository" + warnings: + cannot_annotate: "This file cannot be annotated." + scheduling: + activated: "activated" + deactivated: "deactivated" + search_input_placeholder: "Search ..." + setting_apiv3_cors_enabled: "Enable CORS" + setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" + setting_apiv3_cors_origins_text_html: > + If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. + setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_instructions_html: > + Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + setting_apiv3_docs: "Documentation" + setting_apiv3_docs_enabled: "Enable docs page" + setting_apiv3_docs_enabled_instructions_html: > + If the docs page is enabled you can get an interactive view of the APIv3 documentation under %{link}. + setting_attachment_whitelist: "Attachment upload whitelist" + setting_email_delivery_method: "Email delivery method" + setting_emails_salutation: "Address user in emails with" + setting_sendmail_location: "Location of the sendmail executable" + setting_smtp_enable_starttls_auto: "Automatically use STARTTLS if available" + setting_smtp_ssl: "Use SSL connection" + setting_smtp_address: "SMTP server" + setting_smtp_port: "SMTP port" + setting_smtp_authentication: "SMTP authentication" + setting_smtp_user_name: "SMTP username" + setting_smtp_password: "SMTP password" + setting_smtp_domain: "SMTP HELO domain" + setting_activity_days_default: "Days displayed on project activity" + setting_app_subtitle: "Application subtitle" + setting_app_title: "Application title" + setting_attachment_max_size: "Attachment max. size" + setting_autofetch_changesets: "Autofetch repository changes" + setting_autologin: "Autologin" + setting_available_languages: "Available languages" + setting_bcc_recipients: "Blind carbon copy recipients (bcc)" + setting_brute_force_block_after_failed_logins: "Block user after this number of failed login attempts" + setting_brute_force_block_minutes: "Time the user is blocked for" + setting_cache_formatted_text: "Cache formatted text" + setting_use_wysiwyg_description: "Select to enable CKEditor5 WYSIWYG editor for all users by default. CKEditor has limited functionality for GFM Markdown." + setting_column_options: "Customize the appearance of the work package lists" + setting_commit_fix_keywords: "Fixing keywords" + setting_commit_logs_encoding: "Commit messages encoding" + setting_commit_logtime_activity_id: "Activity for logged time" + setting_commit_logtime_enabled: "Enable time logging" + setting_commit_ref_keywords: "Referencing keywords" + setting_consent_time: "Consent time" + setting_consent_info: "Consent information text" + setting_consent_required: "Consent required" + setting_consent_decline_mail: "Consent contact mail address" + setting_cross_project_work_package_relations: "Allow cross-project work package relations" + setting_first_week_of_year: "First week in year contains" + setting_date_format: "Date" + setting_default_language: "Default language" + setting_default_projects_modules: "Default enabled modules for new projects" + setting_default_projects_public: "New projects are public by default" + setting_diff_max_lines_displayed: "Max number of diff lines displayed" + setting_display_subprojects_work_packages: "Display subprojects work packages on main projects by default" + setting_emails_footer: "Emails footer" + setting_emails_header: "Emails header" + setting_email_login: "Use email as login" + setting_enabled_scm: "Enabled SCM" + setting_enabled_projects_columns: "Visible in project list" + setting_feeds_enabled: "Enable Feeds" + setting_ical_enabled: "Enable iCalendar subscriptions" + setting_feeds_limit: "Feed content limit" + setting_file_max_size_displayed: "Max size of text files displayed inline" + setting_host_name: "Host name" + setting_invitation_expiration_days: "Activation email expires after" + setting_work_package_done_ratio: "Calculate work package % Complete with" + setting_work_package_done_ratio_field: "The work package field" + setting_work_package_done_ratio_status: "The work package status" + setting_work_package_done_ratio_disabled: "Disable (hide the % Complete field)" + setting_work_package_list_default_columns: "Display by default" + setting_work_package_properties: "Work package properties" + setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" + setting_work_packages_projects_export_limit: "Work packages / Projects export limit" + setting_journal_aggregation_time_minutes: "User actions aggregated within" + setting_log_requesting_user: "Log user login, name, and mail address for all requests" + setting_login_required: "Authentication required" + setting_mail_from: "Emission email address" + setting_mail_handler_api_key: "API key" + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_body_delimiter_regex: "Truncate emails matching this regex" + setting_mail_handler_ignore_filenames: "Ignored mail attachments" + setting_new_project_user_role_id: "Role given to a non-admin user who creates a project" + setting_password_active_rules: "Active character classes" + setting_password_count_former_banned: "Number of most recently used passwords banned for reuse" + setting_password_days_valid: "Number of days, after which to enforce a password change" + setting_password_min_length: "Minimum length" + setting_password_min_adhered_rules: "Minimum number of required classes" + setting_per_page_options: "Objects per page options" + setting_plain_text_mail: "Plain text mail (no HTML)" + setting_protocol: "Protocol" + setting_project_gantt_query: "Project portfolio Gantt view" + setting_project_gantt_query_text: "You can modify the query that is used to display Gantt chart from the project overview page." + setting_security_badge_displayed: "Display security badge" + setting_registration_footer: "Registration footer" + setting_repositories_automatic_managed_vendor: "Automatic repository vendor type" + setting_repositories_encodings: "Repositories encodings" + setting_repository_authentication_caching_enabled: "Enable caching for authentication request of version control software" + setting_repository_storage_cache_minutes: "Repository disk size cache" + setting_repository_checkout_display: "Show checkout instructions" + setting_repository_checkout_base_url: "Checkout base URL" + setting_repository_checkout_text: "Checkout instruction text" + setting_repository_log_display_limit: "Maximum number of revisions displayed on file log" + setting_repository_truncate_at: "Maximum number of files displayed in the repository browser" + setting_rest_api_enabled: "Enable REST web service" + setting_self_registration: "Self-registration" + setting_session_ttl: "Session expiry time after inactivity" + setting_session_ttl_hint: "Value below 5 works like disabled" + setting_session_ttl_enabled: "Session expires" + setting_start_of_week: "Week starts on" + setting_sys_api_enabled: "Enable repository management web service" + setting_sys_api_description: "The repository management web service provides integration and user authorization for accessing repositories." + setting_time_format: "Time" + setting_accessibility_mode_for_anonymous: "Enable accessibility mode for anonymous users" + setting_user_format: "Users name format" + setting_user_default_timezone: "Users default time zone" + setting_users_deletable_by_admins: "User accounts deletable by admins" + setting_users_deletable_by_self: "Users allowed to delete their accounts" + setting_welcome_text: "Welcome block text" + setting_welcome_title: "Welcome block title" + setting_welcome_on_homescreen: "Display welcome block on homescreen" + setting_work_package_list_default_highlighting_mode: "Default highlighting mode" + setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" + setting_working_days: "Working days" + settings: + attachments: + whitelist_text_html: > + Define a list of valid file extensions and/or mime types for uploaded files.
Enter file extensions (e.g., %{ext_example}) or mime types (e.g., %{mime_example}).
Leave empty to allow any file type to be uploaded. Multiple values allowed (one line for each value). + brute_force_prevention: "Automated user blocking" + date_format: + first_date_of_week_and_year_set: > + If either options "%{day_of_week_setting_name}" or "%{first_week_setting_name}" are set, the other has to be set as well to avoid inconsistencies in the frontend. + first_week_of_year_text_html: > + Select the date of January that is contained in the first week of the year. This value together with first day of the week determines the total number of weeks in a year. For more information, please see our documentation on this topic. + experimental: + save_confirmation: Caution! Risk of data loss! Only activate experimental features if you do not mind breaking your OpenProject installation and losing all of its data. + warning_toast: Feature flags are settings that activate features that are still under development. They shall only be used for testing purposes. They shall never be activated on OpenProject installations holding important data. These features will very likely corrupt your data. Use them at your own risk. + feature_flags: Feature flags + general: "General" + highlighting: + mode_long: + inline: "Highlight attribute(s) inline" + none: "No highlighting" + status: "Entire row by Status" + type: "Entire row by Type" + priority: "Entire row by Priority" + icalendar: + enable_subscriptions_text_html: Allows users with the necessary permissions to subscribe to OpenProject calendars and access work package information via an external calendar client. Note: Please read about iCalendar subscriptions to understand potential security risks before enabling this. + language_name_being_default: "%{language_name} (default)" + notifications: + events_explanation: "Governs for which event an email is sent out. Work packages are excluded from this list as the notifications for them can be configured specifically for every user." + delay_minutes_explanation: "Email sending can be delayed to allow users with configured in app notification to confirm the notification within the application before a mail is sent out. Users who read a notification within the application will not receive an email for the already read notification." + other: "Other" + passwords: "Passwords" + projects: + section_new_projects: "Settings for new projects" + section_project_overview: "Settings for project overview list" + session: "Session" + user: + default_preferences: "Default preferences" + display_format: "Display format" + deletion: "Deletion" + working_days: + section_work_week: "Work week" + section_holidays_and_closures: "Holidays and closures" + text_formatting: + markdown: "Markdown" + plain: "Plain text" + status_active: "active" + status_archived: "archived" + status_invited: invited + status_locked: locked + status_registered: registered + #Used in array.to_sentence. + support: + array: + sentence_connector: "and" + skip_last_comma: "false" + text_accessibility_hint: "The accessibility mode is designed for users who are blind, motorically handicaped or have a bad eyesight. For the latter focused elements are specially highlighted. Please notice, that the Backlogs module is not available in this mode." + text_access_token_hint: "Access tokens allow you to grant external applications access to resources in OpenProject." + text_analyze: "Further analyze: %{subject}" + text_are_you_sure: "Are you sure?" + text_are_you_sure_continue: "Are you sure you want to continue?" + text_are_you_sure_with_children: "Delete work package and all child work packages?" + text_assign_to_project: "Assign to the project" + text_form_configuration: > + You can customize which fields will be displayed in work package forms. You can freely group the fields to reflect the needs for your domain. + text_form_configuration_required_attribute: "Attribute is marked required and thus always shown" + text_caracters_maximum: "%{count} characters maximum." + text_caracters_minimum: "Must be at least %{count} characters long." + text_comma_separated: "Multiple values allowed (comma separated)." + text_comment_wiki_page: "Comment to wiki page: %{page}" + text_custom_field_possible_values_info: "One line for each value" + text_custom_field_hint_activate_per_project: > + When using custom fields: Keep in mind that custom fields need to be activated per project, too. + text_custom_field_hint_activate_per_project_and_type: > + Custom fields need to be activated per work package type and per project. + text_wp_status_read_only_html: > + The Enterprise edition will add these additional add-ons for work packages' statuses fields:
+ text_project_custom_field_html: > + The Enterprise edition will add these additional add-ons for projects' custom fields:
+ text_custom_logo_instructions: > + A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px. + text_custom_export_logo_instructions: > + This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended. + text_custom_export_cover_instructions: > + This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file. + text_custom_favicon_instructions: > + This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background. + text_custom_touch_icon_instructions: > + This is the icon that appears in your mobile or tablet when you place a bookmark on your homescreen. It needs to be a squared 180 by 180 pixels sized PNG image file. Please make sure the image's background is not transparent otherwise it will look bad on iOS. + text_database_allows_tsv: "Database allows TSVector (optional)" + text_default_administrator_account_changed: "Default administrator account changed" + text_default_encoding: "Default: UTF-8" + text_destroy: "Delete" + text_destroy_with_associated: "There are additional objects assossociated with the work package(s) that are to be deleted. Those objects are of the following types:" + text_destroy_what_to_do: "What do you want to do?" + text_diff_truncated: "... This diff was truncated because it exceeds the maximum size that can be displayed." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server to enable them." + text_enumeration_category_reassign_to: "Reassign them to this value:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_file_repository_writable: "Attachments directory writable" + text_git_repo_example: "a bare and local repository (e.g. /gitrepo, c:\\gitrepo)" + text_hint_date_format: "Enter a date in the form of YYYY-MM-DD. Other formats may be changed to an unwanted date." + text_hint_disable_with_0: "Note: Disable with 0" + text_hours_between: "Between %{min} and %{max} hours." + text_work_package_added: "Work package %{id} has been reported by %{author}." + text_work_package_category_destroy_assignments: "Remove category assignments" + text_work_package_category_destroy_question: "Some work packages (%{count}) are assigned to this category. What do you want to do?" + text_work_package_category_reassign_to: "Reassign work packages to this category" + text_work_package_updated: "Work package %{id} has been updated by %{author}." + text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}." + text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}." + text_work_packages_destroy_confirmation: "Are you sure you want to delete the selected work package(s)?" + text_work_packages_ref_in_commit_messages: "Referencing and fixing work packages in commit messages" + text_journal_added: "%{label} %{value} added" + text_journal_attachment_added: "%{label} %{value} added as attachment" + text_journal_attachment_deleted: "%{label} %{old} removed as attachment" + text_journal_changed_plain: "%{label} changed from %{old} %{linebreak}to %{new}" + text_journal_changed_no_detail: "%{label} updated" + text_journal_changed_with_diff: "%{label} changed (%{link})" + text_journal_deleted: "%{label} deleted (%{old})" + text_journal_deleted_subproject: "%{label} %{old}" + text_journal_deleted_with_diff: "%{label} deleted (%{link})" + text_journal_file_link_added: "%{label} link to %{value} (%{storage}) added" + text_journal_file_link_deleted: "%{label} link to %{old} (%{storage}) removed" + text_journal_of: "%{label} %{value}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_set_with_diff: "%{label} set (%{link})" + text_journal_label_value: "%{label} %{value}" + text_latest_note: "The latest comment is: %{note}" + text_length_between: "Length between %{min} and %{max} characters." + text_line_separated: "Multiple values allowed (one line for each value)." + text_load_default_configuration: "Load the default configuration" + text_min_max_length_info: "0 means no restriction" + text_no_roles_defined: There are no roles defined. + text_no_access_tokens_configurable: "There are no access tokens which can be configured." + text_no_configuration_data: "Roles, types, work package statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_no_notes: "There are no comments available for this work package." + text_notice_too_many_values_are_inperformant: "Note: Displaying more than 100 items per page can increase the page load time." + text_notice_security_badge_displayed_html: > + Note: if enabled, this will display a badge with your installation status in the %{information_panel_label} administration panel, and on the home page. It is displayed to administrators only.
The badge will check your current OpenProject version against the official OpenProject release database to alert you of any updates or known vulnerabilities. For more information on what the check provides, what data is needed to provide available updates, and how to disable this check, please visit the configuration documentation. + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_plugin_assets_writable: "Plugin assets directory writable" + text_powered_by: "Powered by %{link}" + text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_reassign: "Reassign to work package:" + text_regexp_info: "eg. ^[A-Z0-9]+$" + text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' + text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_table_difference_description: "In this table the single %{entries} are shown. You can view the difference between any two entries by first selecting the according checkboxes in the table. When clicking on the button below the table the differences are shown." + text_time_logged_by_changeset: "Applied in changeset %{value}." + text_tip_work_package_begin_day: "work package beginning this day" + text_tip_work_package_begin_end_day: "work package beginning and ending this day" + text_tip_work_package_end_day: "work package ending this day" + text_type_no_workflow: "No workflow defined for this type" + text_unallowed_characters: "Unallowed characters" + text_user_invited: The user has been invited and is pending registration. + text_user_wrote: "%{value} wrote:" + text_warn_on_leaving_unsaved: "The work package contains unsaved text that will be lost if you leave this page." + text_what_did_you_change_click_to_add_comment: "What did you change? Click to add comment" + text_wiki_destroy_confirmation: "Are you sure you want to delete this wiki and all its content?" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_workflow_edit: "Select a role and a type to edit the workflow" + text_zoom_in: "Zoom in" + text_zoom_out: "Zoom out" + text_setup_mail_configuration: "Configure your email provider" + help_texts: + views: + project: > + %{plural} are always attached to a project. You can only select projects here where the %{plural} module is active. After creating a %{singular} you can add work packages from other projects to it. + public: "Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results." + favoured: "Mark this view as favourite and add to the saved views sidebar on the left." + time: + am: "am" + formats: + default: "%m/%d/%Y %I:%M %p" + long: "%B %d, %Y %H:%M" + short: "%d %b %H:%M" + time: "%I:%M %p" + pm: "pm" + timeframe: + show: "Show timeframe" + end: "to" + start: "from" + title_remove_and_delete_user: Remove the invited user from the project and delete him/her. + title_enterprise_upgrade: "Upgrade to unlock more users." + tooltip_user_default_timezone: > + The default time zone for new users. Can be changed in a user's settings. + tooltip_resend_invitation: > + Sends another invitation email with a fresh token in case the old one expired or the user did not get the original email. Can also be used for active users to choose a new authentication method. When used with active users their status will be changed to 'invited'. + tooltip: + setting_email_login: > + If enabled a user will be unable to chose a login during registration. Instead their given email address will serve as the login. An administrator may still change the login separately. + queries: + apply_filter: Apply preconfigured filter + top_menu: + additional_resources: "Additional resources" + getting_started: "Getting started" + help_and_support: "Help and support" + total_progress: "Total progress" + user: + all: "all" + active: "active" + activate: "Activate" + activate_and_reset_failed_logins: "Activate and reset failed logins" + authentication_provider: "Authentication Provider" + identity_url_text: "The internal unique identifier provided by the authentication provider." + authentication_settings_disabled_due_to_external_authentication: > + This user authenticates via an external authentication provider, so there is no password in OpenProject to be changed. + authorization_rejected: "You are not allowed to sign in." + assign_random_password: "Assign random password (sent to user via email)" + blocked: "locked temporarily" + blocked_num_failed_logins: + one: "locked temporarily (one failed login attempt)" + other: "locked temporarily (%{count} failed login attempts)" + confirm_status_change: "You are about to change the status of '%{name}'. Are you sure you want to continue?" + deleted: "Deleted user" + error_status_change_failed: "Changing the user status failed due to the following errors: %{errors}" + invite: Invite user via email + invited: invited + lock: "Lock permanently" + locked: "locked permanently" + no_login: "This user authenticates through login by password. Since it is disabled, they cannot log in." + password_change_unsupported: Change of password is not supported. + registered: "registered" + reset_failed_logins: "Reset failed logins" + status_user_and_brute_force: "%{user} and %{brute_force}" + status_change: "Status change" + text_change_disabled_for_provider_login: "The name is set by your login provider and can thus not be changed." + unlock: "Unlock" + unlock_and_reset_failed_logins: "Unlock and reset failed logins" + version_status_closed: "closed" + version_status_locked: "locked" + version_status_open: "open" + note: Note + note_password_login_disabled: "Password login has been disabled by %{configuration}." + warning: Warning + warning_attachments_not_saved: "%{count} file(s) could not be saved." + warning_imminent_user_limit: > + You invited more users than are supported by your current plan. Invited users may not be able to join your OpenProject environment. Please upgrade your plan or block existing users in order to allow invited and registered users to join. + warning_registration_token_expired: | + The activation email has expired. We sent you a new one to %{email}. + Please click the link inside of it to activate your account. + warning_user_limit_reached: > + Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this instance. + warning_user_limit_reached_admin: > + Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this instance. + warning_user_limit_reached_instructions: > + You reached your user limit (%{current}/%{max} active users). Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. + warning_protocol_mismatch_html: > + + warning_bar: + https_mismatch: + title: "HTTPS mode setup mismatch" + text_html: > + Your application is running with HTTPS mode set to %{set_protocol}, but the request is an %{actual_protocol} request. This will result in errors! You will need to set the following configuration value: %{setting_value}. Please see the installation documentation on how to set this configuration. + hostname_mismatch: + title: "Hostname setting mismatch" + text_html: > + Your application is running with its host name setting set to %{set_hostname}, but the request is a %{actual_hostname} hostname. This will result in errors! Go to System settings and change the "Host name" setting to correct this. + menu_item: "Menu item" + menu_item_setting: "Visibility" + wiki_menu_item_for: 'Menu item for wikipage "%{title}"' + wiki_menu_item_setting: "Visibility" + wiki_menu_item_new_main_item_explanation: > + You are deleting the only main wiki menu item. You now have to choose a wiki page for which a new main item will be generated. To delete the wiki the wiki module can be deactivated by project administrators. + wiki_menu_item_delete_not_permitted: The wiki menu item of the only wiki page cannot be deleted. + #TODO: merge with work_packages top level key + work_package: + updated_automatically_by_child_changes: | + _Updated automatically by changing values within child work package %{child}_ + destroy: + info: "Deleting the work package is an irreversible action." + title: "Delete the work package" + sharing: + count: + zero: "0 users" + one: "1 user" + other: "%{count} users" + filter: + project_member: 'Project member' + not_project_member: 'Not project member' + project_group: 'Project group' + not_project_group: 'Not project group' + role: 'Role' + type: 'Type' + label_search: "Search for users to invite" + label_search_placeholder: "Search by user or email address" + label_toggle_all: "Toggle all shares" + permissions: + comment: "Comment" + comment_description: "Can view and comment this work package." + denied: "You don't have permissions to share work packages." + edit: "Edit" + edit_description: "Can view, comment and edit this work package." + view: "View" + view_description: "Can view this work package." + remove: "Remove" + share: "Share" + text_empty_search_description: "There are no users with the current filter criteria." + text_empty_search_header: "We couldn't find any matching results." + text_empty_state_description: "The work package has not been shared with anyone yet." + text_empty_state_header: "No shared members." + text_user_limit_reached: "Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this work package." + text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' + warning_user_limit_reached: > + Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this work package. + warning_user_limit_reached_admin: > + Adding additional users will exceed the current limit. Please upgrade your plan to be able to ensure external users are able to access this work package. + warning_no_selected_user: "Please select users to share this work package with" + warning_locked_user: "The user %{user} is locked and cannot be shared with" + user_details: + locked: "Locked user" + invited: "Invite sent. " + resend_invite: "Resend." + invite_resent: "Invite has been resent" + not_project_member: "Not a project member" + project_group: "Group members might have additional privileges (as project members)" + not_project_group: "Group (shared with all members)" + additional_privileges_project: "Might have additional privileges (as project member)" + additional_privileges_group: "Might have additional privileges (as group member)" + additional_privileges_project_or_group: "Might have additional privileges (as project or group member)" + working_days: + info: > + Days that are not selected are skipped when scheduling work packages (and not included in the day count). These can be overriden at a work-package level. + instance_wide_info: > + Dates added to the list below are considered non-working and skipped when scheduling work packages. + change_button: "Change working days" + warning: > + Changing which days of the week are considered working days or non-working days can affect the start and finish days of all work packages in all projects in this instance.
Please note that changes are only applied after you click on the apply changes button. + journal_note: + changed: _**Working days** changed (%{changes})._ + days: + working: "%{day} is now working" + non_working: "%{day} is now non-working" + dates: + working: "%{date} is now working" + non_working: "%{date} is now non-working" + nothing_to_preview: "Nothing to preview" + api_v3: + attributes: + lock_version: "Lock Version" + property: "Property" + errors: + code_400: "Bad request: %{message}" + code_401: "You need to be authenticated to access this resource." + code_401_wrong_credentials: "You did not provide the correct credentials." + code_403: "You are not authorized to access this resource." + code_404: "The requested resource could not be found." + code_409: "Could not update the resource because of conflicting modifications." + code_429: "Too many requests. Please try again later." + code_500: "An internal error has occurred." + code_500_outbound_request_failure: "An outbound request to another resource has failed with status code %{status_code}." + code_500_missing_enterprise_token: "The request can not be handled due to invalid or missing Enterprise token." + not_found: + work_package: "The work package you are looking for cannot be found or has been deleted." + expected: + date: "YYYY-MM-DD (ISO 8601 date only)" + datetime: "YYYY-MM-DDThh:mm:ss[.lll][+hh:mm] (any compatible ISO 8601 datetime)" + duration: "ISO 8601 duration" + invalid_content_type: "Expected CONTENT-TYPE to be '%{content_type}' but got '%{actual}'." + invalid_format: "Invalid format for property '%{property}': Expected format like '%{expected_format}', but got '%{actual}'." + invalid_json: "The request could not be parsed as JSON." + invalid_relation: "The relation is invalid." + invalid_resource: "For property '%{property}' a link like '%{expected}' is expected, but got '%{actual}'." + invalid_signal: + embed: "The requested embedding of %{invalid} is not supported. Supported embeddings are %{supported}." + select: "The requested select of %{invalid} is not supported. Supported selects are %{supported}." + invalid_user_status_transition: "The current user account status does not allow this operation." + missing_content_type: "not specified" + missing_property: "Missing property '%{property}'." + missing_request_body: "There was no request body." + missing_or_malformed_parameter: "The query parameter '%{parameter}' is missing or malformed." + multipart_body_error: "The request body did not contain the expected multipart parts." + multiple_errors: "Multiple field constraints have been violated." + unable_to_create_attachment: "The attachment could not be created" + unable_to_create_attachment_permissions: "The attachment could not be saved due to lacking file system permissions" + render: + context_not_parsable: "The context provided is not a link to a resource." + unsupported_context: "The resource given is not supported as context." + context_object_not_found: "Cannot find the resource given as the context." + validation: + done_ratio: "% Complete cannot be set on parent work packages, when it is inferred by status or when it is disabled." + due_date: "Finish date cannot be set on parent work packages." + estimated_hours: "Work cannot be set on parent work packages." #feel like this one should be removed eventually + invalid_user_assigned_to_work_package: "The chosen user is not allowed to be '%{property}' for this work package." + start_date: "Start date cannot be set on parent work packages." + eprops: + invalid_gzip: "is invalid gzip: %{message}" + invalid_json: "is invalid json: %{message}" + resources: + schema: "Schema" + undisclosed: + parent: Undisclosed - The selected parent is invisible because of lacking permissions. + ancestor: Undisclosed - The ancestor is invisible because of lacking permissions. + doorkeeper: + pre_authorization: + status: "Pre-authorization" + auth_url: "Auth URL" + access_token_url: "Access token URL" + errors: + messages: + #Common error messages + invalid_request: + unknown: "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed." + missing_param: "Missing required parameter: %{value}." + request_not_authorized: "Request need to be authorized. Required parameter for authorizing request is missing or invalid." + invalid_redirect_uri: "The requested redirect uri is malformed or doesn't match client redirect URI." + unauthorized_client: "The client is not authorized to perform this request using this method." + access_denied: "The resource owner or authorization server denied the request." + invalid_scope: "The requested scope is invalid, unknown, or malformed." + invalid_code_challenge_method: "The code challenge method must be plain or S256." + server_error: "The authorization server encountered an unexpected condition which prevented it from fulfilling the request." + temporarily_unavailable: "The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server." + #Configuration error messages + credential_flow_not_configured: "Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured." + resource_owner_authenticator_not_configured: "Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfigured." + admin_authenticator_not_configured: "Access to admin panel is forbidden due to Doorkeeper.configure.admin_authenticator being unconfigured." + #Access grant errors + unsupported_response_type: "The authorization server does not support this response type." + unsupported_response_mode: "The authorization server does not support this response mode." + #Access token errors + invalid_client: "Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method." + invalid_grant: "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client." + unsupported_grant_type: "The authorization grant type is not supported by the authorization server." + invalid_token: + revoked: "The access token was revoked" + expired: "The access token expired" + unknown: "The access token is invalid" + revoke: + unauthorized: "You are not authorized to revoke this token." + forbidden_token: + missing_scope: 'Access to this resource requires scope "%{oauth_scopes}".' + unsupported_browser: + title: "Your browser is outdated and unsupported." + message: "You may run into errors and degraded experience on this page." + update_message: "Please update your browser." + close_warning: "Ignore this warning." + oauth: + application: + singular: "OAuth application" + plural: "OAuth applications" + named: "OAuth application '%{name}'" + new: "New OAuth application" + default_scopes: "(Default scopes)" + instructions: + name: "The name of your application. This will be displayed to other users upon authorization." + redirect_uri_html: > + The allowed URLs authorized users can be redirected to. One entry per line.
If you're registering a desktop application, use the following URL. + confidential: "Check if the application will be used where the client secret can be kept confidential. Native mobile apps and Single Page Apps are assumed non-confidential." + scopes: "Check the scopes you want the application to grant access to. If no scope is checked, api_v3 is assumed." + client_credential_user_id: "Optional user ID to impersonate when clients use this application. Leave empty to allow public access only" + register_intro: "If you are developing an OAuth API client application for OpenProject, you can register it using this form for all users to use." + default_scopes: "" + client_id: "Client ID" + client_secret_notice: > + This is the only time we can print the client secret, please note it down and keep it secure. It should be treated as a password and cannot be retrieved by OpenProject at a later time. + authorization_dialog: + authorize: "Authorize" + cancel: "Cancel and deny authorization." + prompt_html: "Authorize %{application_name} to use your account %{login}?" + title: "Authorize %{application_name}" + wants_to_access_html: > + This application requests access to your OpenProject account.
It has requested the following permissions: + scopes: + api_v3: "Full API v3 access" + api_v3_text: "Application will receive full read & write access to the OpenProject API v3 to perform actions on your behalf." + grants: + created_date: "Approved on" + scopes: "Permissions" + successful_application_revocation: "Revocation of application %{application_name} successful." + none_given: "No OAuth applications have been granted access to your user account." + x_active_tokens: + one: "one active token" + other: "%{count} active token" + flows: + authorization_code: "Authorization code flow" + client_credentials: "Client credentials flow" + client_credentials: "User used for Client credentials" + client_credentials_impersonation_set_to: "Client credentials user set to" + client_credentials_impersonation_warning: "Note: Clients using the 'Client credentials' flow in this application will have the rights of this user" + client_credentials_impersonation_html: > + By default, OpenProject provides OAuth 2.0 authorization via %{authorization_code_flow_link}. You can optionally enable %{client_credentials_flow_link}, but you must provide a user on whose behalf requests will be performed. + authorization_error: "An authorization error has occurred." + revoke_my_application_confirmation: "Do you really want to remove this application? This will revoke %{token_count} active for it." + my_registered_applications: "Registered OAuth applications" + oauth_client: + urn_connection_status: + connected: "Connected" + error: "Error" + failed_authorization: "Authorization failed" + labels: + label_oauth_integration: "OAuth2 integration" + label_redirect_uri: "Redirect URI" + label_request_token: "Request token" + label_refresh_token: "Refresh token" + errors: + oauth_authorization_code_grant_had_errors: "OAuth2 returned an error" + oauth_reported: "OAuth2 provider reported" + oauth_returned_error: "OAuth2 returned an error" + oauth_returned_json_error: "OAuth2 returned a JSON error" + oauth_returned_http_error: "OAuth2 returned a network error" + oauth_returned_standard_error: "OAuth2 returned an internal error" + client_id_blank: "ID can't be blank." + wrong_token_type_returned: "OAuth2 returned a wrong type of token, expecting AccessToken::Bearer" + oauth_issue_contact_admin: "OAuth2 reported an error. Please contact your system administrator." + oauth_client_not_found: "OAuth2 client not found in 'callback' endpoint (redirect_uri)." + refresh_token_called_without_existing_token: > + Internal error: Called refresh_token without a previously existing token. + refresh_token_updated_failed: "Error during update of OAuthClientToken" + oauth_client_not_found_explanation: > + This error appears after you have updated the client_id and client_secret in OpenProject, but haven't updated the 'Return URI' field in the OAuth2 provider. + oauth_code_not_present: "OAuth2 'code' not found in 'callback' endpoint (redirect_uri)." + oauth_code_not_present_explanation: > + This error appears if you have selected the wrong response_type in the OAuth2 provider. Response_type should be 'code' or similar. + oauth_state_not_present: "OAuth2 'state' not found in 'callback' endpoint (redirect_uri)." + oauth_state_not_present_explanation: > + The 'state' is used to indicate to OpenProject where to continue after a successful OAuth2 authorization. A missing 'state' is an internal error that may appear during setup. Please contact your system administrator. + rack_oauth2: + client_secret_invalid: "Client secret is invalid (client_secret_invalid)" + invalid_request: > + OAuth2 Authorization Server responded with 'invalid_request'. This error appears if you try to authorize multiple times or in case of technical issues. + invalid_response: "OAuth2 Authorization Server provided an invalid response (invalid_response)" + invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize (invalid_grant)." + invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject (invalid_client)." + unauthorized_client: "The OAuth2 Authorization Server rejects the grant type (unauthorized_client)" + unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize (unsupported_grant_type)." + invalid_scope: "You are not allowed to access the requested resource (invalid_scope)." + http: + request: + failed_authorization: "The server side request failed authorizing itself." + missing_authorization: "The server side request failed due to missing authorization information." + response: + unexpected: "Unexpected response received." + you: you + link: link + plugin_openproject_auth_plugins: + name: "OpenProject Auth Plugins" + description: "Integration of OmniAuth strategy providers for authentication in Openproject." + plugin_openproject_auth_saml: + name: "OmniAuth SAML / Single-Sign On" + description: "Adds the OmniAuth SAML provider to OpenProject" diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index b00e1ae5dfe9..c4a0dc76b57a 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -619,8 +619,8 @@ ru: begin_insertion: "Начало вставки" begin_deletion: "Начало удаления" children: "Вложенные элементы" - derived_remaining_hours: "Производная оставшаяся работа" - derived_remaining_time: "Производная оставшаяся работа" + derived_remaining_hours: "Запланированное время" + derived_remaining_time: "Запланированное время" done_ratio: "% Завершено" duration: "Продолжительность" end_insertion: "Завершение вставки" @@ -637,8 +637,8 @@ ru: priority: "Приоритет" progress: "% Завершено" readonly: "Только для чтения" - remaining_hours: "Оставшаяся работа" - remaining_time: "Оставшаяся работа" + remaining_hours: "Оставшиеся часы" + remaining_time: "Оставшиеся часы" schedule_manually: "Ручное планирование" spent_hours: "Затраченное время" spent_time: "Затраченное время" @@ -1067,12 +1067,12 @@ ru: default_columns: "Столбцы по умолчанию" description: "Описание" derived_due_date: "Дата окончания производства" - derived_estimated_hours: "Производная работа" + derived_estimated_hours: "Производные часы" derived_start_date: "Дата начала производства" display_sums: "Отображение суммы" due_date: "Дата окончания" - estimated_hours: "Работа" - estimated_time: "Работа" + estimated_hours: "Часы" + estimated_time: "Часы" expires_at: "Истекает в" firstname: "Имя" group: "Группа" @@ -3221,7 +3221,7 @@ ru: validation: done_ratio: "% законченный не может быть установлен в родительских пакетах работ, когда он устанавливается по статусу или когда он отключен." due_date: "Дату окончания нельзя задать на родительских пакетах работ." - estimated_hours: "Работа не может быть установлена на родительская" #feel like this one should be removed eventually + estimated_hours: "Предполагаемое количество часов не может быть задано для родительских пакетов." #feel like this one should be removed eventually invalid_user_assigned_to_work_package: "Выбранный пользователь не может быть «%{property}» для этого пакета работ." start_date: "Дата начала не может быть задана на родительских пакетах работ." eprops: diff --git a/config/locales/generated/kk.yml b/config/locales/generated/kk.yml new file mode 100644 index 000000000000..1a0cfaf38051 --- /dev/null +++ b/config/locales/generated/kk.yml @@ -0,0 +1,14 @@ +# This file has been generated by script/i18n/generate_languages_translations. +# Please do not edit directly. +# +# To update this file, run script/i18n/generate_languages_translations. +# +# The translations come from version 42 of the Unicode CLDR project . +# +# The Unicode Common Locale Data Repository (CLDR) provides key building +# blocks for software to support the world's languages, with the largest +# and most extensive standard repository of locale data available. +--- +kk: + cldr: + language_name: Қазақ тілі diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile index 7753aa0d5d2f..e61bfd125ed5 100644 --- a/docker/prod/Dockerfile +++ b/docker/prod/Dockerfile @@ -67,11 +67,6 @@ RUN --mount=type=cache,target=/app/frontend/.angular/cache,uid=1000,gid=1000 \ FROM ruby:${RUBY_VERSION}-slim-bullseye as base LABEL maintainer="operations@openproject.com" -# Labels for artifacthub.io -LABEL io.artifacthub.package.readme-url="https://www.openproject.org/docs/installation-and-operations/installation/docker/" -LABEL org.opencontainers.image.documentation="https://www.openproject.org/docs/" -LABEL org.opencontainers.image.vendor="OpenProject GmbH" - # SYSTEM ENV APP_USER=app ENV APP_PATH=/app diff --git a/docker/prod/setup/preinstall-common.sh b/docker/prod/setup/preinstall-common.sh index 2fb2b98404cc..3a9b092d43f8 100755 --- a/docker/prod/setup/preinstall-common.sh +++ b/docker/prod/setup/preinstall-common.sh @@ -1,11 +1,11 @@ #!/bin/bash -get_architecture() { +get_architecture() { if command -v uname > /dev/null; then ARCHITECTURE=$(uname -m) case $ARCHITECTURE in aarch64|arm64) - echo "arm64" + echo "arm64" return 0 ;; ppc64le) @@ -24,7 +24,7 @@ set -o pipefail ARCHITECTURE=$(get_architecture) apt-get update -qq -apt-get install -y git subversion wget curl gnupg2 apt-transport-https unzip build-essential libpq-dev +apt-get install -y git subversion wget curl gnupg2 apt-transport-https unzip build-essential libpq-dev libclang-dev # install node + npm curl -s https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${ARCHITECTURE}.tar.gz | tar xzf - -C /usr/local --strip-components=1 diff --git a/docs/api/README.md b/docs/api/README.md index 9a4b3d81682c..47873bbc9609 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -20,7 +20,7 @@ We try to keep stable releases of OpenProject with changes to this API backwards The API v3 is a general purpose API supporting multiple use cases. -While by no means complete, a whole lot of different scenarios can be automatised which otherwise would have to be carried out by hand via the UI. +While by no means complete, a whole lot of different scenarios can be automatized which otherwise would have to be carried out by hand via the UI. Examples for this include managing work packages, projects and users. ➔ [Go to OpenProject API](./introduction/) diff --git a/docs/api/apiv3/example/README.md b/docs/api/apiv3/example/README.md index 463a2b852a63..f88046848caa 100644 --- a/docs/api/apiv3/example/README.md +++ b/docs/api/apiv3/example/README.md @@ -10,9 +10,9 @@ of choice. While being limited to the work package resource, the same principles apply throughout the API. -## Fetching work packages from community.openproject.com +## Fetching work packages from community.openproject.org -Because it is readily at hand, we will first fetch a list of work packages from [community.openproject.com](https://community.openproject.com). +Because it is readily at hand, we will first fetch a list of work packages from [community.openproject.org](https://community.openproject.org). In its simplest form, fetching work packages looks like this: @@ -25,7 +25,7 @@ Please notice that no headers and no credentials need to be provided. Because th ## Authentication In a default OpenProject installation however, credentials are necessary to even access the instance, so this guide will assume this -default behaviour to apply further on. Only in very limited use cases should an unauthenticated access ever be allowed. +default behavior to apply further on. Only in very limited use cases should an unauthenticated access ever be allowed. Without authentication, a client will be informed of the missing credentials as demonstrated below when issuing a request identical to the one above against a locally run installation: @@ -239,7 +239,7 @@ Adapting the request we issued against the community installation, the client ca ![get all work packages](./get-work-packages-all.png) This however will return all work packages the authenticated user employing the client is eligible to see, which might potentially be thousands of work packages. -The server will always limit the amount of work packages actually returned (and will indicate the total amount by the `total` attribute that is part of the `WorkPackageColletion` resource) but using this method to find an individual work packages is laborious. +The server will always limit the amount of work packages actually returned (and will indicate the total amount by the `total` attribute that is part of the `WorkPackageCollection` resource) but using this method to find an individual work packages is laborious. That is why the [API supports filters](../filters). The filter that is applied most easily, is the filter for the project. This filter can be applied requesting via a project scoped url: diff --git a/docs/api/apiv3/openapi-spec.yml b/docs/api/apiv3/openapi-spec.yml index f54526762632..a5012089fafe 100644 --- a/docs/api/apiv3/openapi-spec.yml +++ b/docs/api/apiv3/openapi-spec.yml @@ -73,7 +73,7 @@ info: ```shell API_KEY=2519132cdf62dcf5a66fd96394672079f9e9cad1 - curl -u apikey:$API_KEY https://community.openproject.com/api/v3/users/42 + curl -u apikey:$API_KEY https://community.openproject.org/api/v3/users/42 ``` ### OAuth2.0 authentication diff --git a/docs/api/apiv3/tags/filters.yml b/docs/api/apiv3/tags/filters.yml index b0d66bc84e9a..343abf5bbc94 100644 --- a/docs/api/apiv3/tags/filters.yml +++ b/docs/api/apiv3/tags/filters.yml @@ -35,7 +35,7 @@ description: |- With the above JSON stringified and URL-encoded, this can be added to the `/api/v3/work_packages` endpoint using the `filter` parameter to form the URL: ``` - https://community.openproject.com/api/v3/work_packages?filters=%5B%7B%22subjectOrId%22:%7B%22operator%22:%22**%22,%22values%22:%5B%2212%22%5D%7D%7D,%7B%22status%22:%7B%22operator%22:%22=%22,%22values%22:%5B%225%22%5D%7D%7D%5D + https://community.openproject.org/api/v3/work_packages?filters=%5B%7B%22subjectOrId%22:%7B%22operator%22:%22**%22,%22values%22:%5B%2212%22%5D%7D%7D,%7B%22status%22:%7B%22operator%22:%22=%22,%22values%22:%5B%225%22%5D%7D%7D%5D ``` ## Compression @@ -48,13 +48,13 @@ description: |- Instead of the request ``` - https://community.openproject.com/api/v3/work_packages?filters=[%7B%22subjectOrId%22:%7B%22operator%22:%22**%22,%22values%22:[%2212%22]%7D%7D,%7B%22status%22:%7B%22operator%22:%22=%22,%22values%22:[%225%22]%7D%7D]&pageSize=10&sortBy=[[%22id%22,%20%22asc%22]] + https://community.openproject.org/api/v3/work_packages?filters=[%7B%22subjectOrId%22:%7B%22operator%22:%22**%22,%22values%22:[%2212%22]%7D%7D,%7B%22status%22:%7B%22operator%22:%22=%22,%22values%22:[%225%22]%7D%7D]&pageSize=10&sortBy=[[%22id%22,%20%22asc%22]] ``` Which in a non URL encoded style would be ``` - https://community.openproject.com/api/v3/work_packages?filters=[{"subjectOrId":{"operator":"**","values":["12"]}},{"status":{"operator":"=","values":["5"]}}]&pageSize=10&sortBy=[["id", "asc"]] + https://community.openproject.org/api/v3/work_packages?filters=[{"subjectOrId":{"operator":"**","values":["12"]}},{"status":{"operator":"=","values":["5"]}}]&pageSize=10&sortBy=[["id", "asc"]] ``` All of the props can be put inside a json object @@ -72,12 +72,12 @@ description: |- That json object can then be compressed and encoded and the result sent over as the combined `eprops` parameter: ``` - https://community.openproject.com/api/v3/work_packages?eprops=eJxtjTELwjAUhP%2FLjSWDFVwCLt2cHBz7OsT2VSKFlLwXQUv%2Bu0lXHe%2B7%2B7gN%0As1%2BUo8Ci3wiS7k8e9RovE8EWEFaOTkMsidA0BEN4uSWxFNIT2iNhyNlUV50m%0A%2BaOdf6zTLg0wkBC1e9f3gv20L52Mpa%2Ft6h588x%2BGbQ%2F5C12YN%2BM%3D%0A + https://community.openproject.org/api/v3/work_packages?eprops=eJxtjTELwjAUhP%2FLjSWDFVwCLt2cHBz7OsT2VSKFlLwXQUv%2Bu0lXHe%2B7%2B7gN%0As1%2BUo8Ci3wiS7k8e9RovE8EWEFaOTkMsidA0BEN4uSWxFNIT2iNhyNlUV50m%0A%2BaOdf6zTLg0wkBC1e9f3gv20L52Mpa%2Ft6h588x%2BGbQ%2F5C12YN%2BM%3D%0A ``` ## Available filters - The availability of filters depend on the endpoint you're querying and will be listed in each endpoint definition. For work packages, you can also [start using filters in the work packages module](https://community.openproject.com/projects/openproject/work_packages) to build your query and then simply copy the URL from your browser to get the resulting filter values and their operators. + The availability of filters depend on the endpoint you're querying and will be listed in each endpoint definition. For work packages, you can also [start using filters in the work packages module](https://community.openproject.org/projects/openproject/work_packages) to build your query and then simply copy the URL from your browser to get the resulting filter values and their operators. ## Available operators diff --git a/docs/bim-guide/README.md b/docs/bim-guide/README.md index ba8541d08099..0fa67cffdf99 100644 --- a/docs/bim-guide/README.md +++ b/docs/bim-guide/README.md @@ -41,7 +41,7 @@ Details: [BIM Issue Management](bim-issue-management) ## Revit add-in -Stay always connected to OpenProject in realtime, show and create tasks while you're working in the Revit, using the Revit Addin. +Stay always connected to OpenProject in realtime, show and create tasks while you're working in the Revit, using the Revit Add-in. Details: [Revit Add-in](revit-add-in) @@ -61,7 +61,7 @@ The BCF Module and the included IFC viewer can be enabled for every single proje ## Reporting bugs -You found a bug? Please [report it](../development/report-a-bug) to our [OpenProject community](https://community.openproject.com/projects/revit-add-in). Thank you! +You found a bug? Please [report it](../development/report-a-bug) to our [OpenProject community](https://community.openproject.org/projects/revit-add-in). Thank you! @@ -85,13 +85,13 @@ In our [Installation & Upgrade Guide](../installation-and-operations/bim-edition ### Is OpenProject BIM compatible to other BIM software? -Yes of course. We are of the opinion that the full potential of the BIM method only works through collaboration and the exchange of information (openBIM). For this reason we support the open BCF XML Standard. You are able to import and export all created BCF and stay interoparable with any other BCF software. +Yes of course. We are of the opinion that the full potential of the BIM method only works through collaboration and the exchange of information (openBIM). For this reason we support the open BCF XML Standard. You are able to import and export all created BCF and stay interoperable with any other BCF software. ### Why do I need a Revit add-in? -You don't need it, but it makes your BIM Issue Management much easier. The *OpenProject Revit Add-In* allows you to use the open source project management software *OpenProject BIM* directly within your Autodesk Revit environment. It lets you create, inspect and manage issues right in the moment when you can also solve them - when you have your Revit application fired up and the relevant BIM models open. Issues get stored as BIM Issues centrally and are available to every team member in real time - thanks to our browser based IFC viewer even to those team members without expensive Revit licenses. No BCF XML import/export is needed. However, you still can import and export BCF XML as you like and stay interoparable with any other BCF software. +You don't need it, but it makes your BIM Issue Management much easier. The *OpenProject Revit Add-In* allows you to use the open source project management software *OpenProject BIM* directly within your Autodesk Revit environment. It lets you create, inspect and manage issues right in the moment when you can also solve them - when you have your Revit application fired up and the relevant BIM models open. Issues get stored as BIM Issues centrally and are available to every team member in real time - thanks to our browser based IFC viewer even to those team members without expensive Revit licenses. No BCF XML import/export is needed. However, you still can import and export BCF XML as you like and stay interoperable with any other BCF software. @@ -103,7 +103,7 @@ The OpenProject Revit Add-In does not have any special system requirements. Only ### Which versions of Revit are supported? -The OpenProject BIM Addin for Revit supports the following versions: +The OpenProject BIM Add-in for Revit supports the following versions: - REVIT 2019 - REVIT 2020 @@ -113,13 +113,13 @@ The OpenProject BIM Addin for Revit supports the following versions: ### Is it possible to use OpenProject BIM without Revit? -Yes! The Revit Add-In is just additional to the OpenProject BIM core functionality. It's still possible to import and export BCF XML as you like and stay interoparable with any other Software for BIM Issue Management. +Yes! The Revit Add-In is just additional to the OpenProject BIM core functionality. It's still possible to import and export BCF XML as you like and stay interoperable with any other Software for BIM Issue Management. ### Are integrations with other BIM software planned? -Yes, we want to develop some other integrations to stay interoparable with other BIM software and make BIM Issue Management with OpenProject BIM much easier. +Yes, we want to develop some other integrations to stay interoperable with other BIM software and make BIM Issue Management with OpenProject BIM much easier. diff --git a/docs/bim-guide/bim-issue-management/README.md b/docs/bim-guide/bim-issue-management/README.md index f2dc3f3217fd..281848d31732 100644 --- a/docs/bim-guide/bim-issue-management/README.md +++ b/docs/bim-guide/bim-issue-management/README.md @@ -45,7 +45,7 @@ Then, navigate to the BCF module in the project navigation. To create new BIM Issues, you have to open the Model - Viewer first and create the view you want to save within the BIM Issue (e.g. zoom, [rotate](../ifc-viewer/#how-to-rotate-the-building-model), [slice](../ifc-viewer/#how-to-slice-the-building-model), [select](../ifc-viewer/#how-to-select-elements), [hide](../ifc-viewer/#show-or-hide-models-or-elements-via-model-tree), … ). -Click on the **+ Create new work package** and select the type of workpackage you want. +Click on the **+ Create new work package** and select the type of work package you want. ![Create a new BIM Issue](create-a-new-BIM-issue.png) @@ -76,7 +76,7 @@ Open the **BCF-Module** to see the building model. Make sure the "Model Viewer & Maps" - View or "Model Viewer & Table" - View is selected within the **OpenProject-Toolbar**. -![Model and workpackage view](model_maps_view.png) +![Model and work package view](model_maps_view.png) @@ -125,7 +125,7 @@ To create BIM Issues you don't have to configure additional work package types. You can switch between different View modes within the OpenProject toolbar. Just open the dropdown menu and select the view which fits best to your situation. - ![Swicht_View_Mode](Swicht_View_Mode.gif) + ![Switch View Mode](Swicht_View_Mode.gif) @@ -187,9 +187,9 @@ You are able to filter BIM Issues by using the filter button in the **OpenProjec -## BIM issues in workpackage module +## BIM issues in work package module -BIM Issues are also listed in the workpackage module. This supports you to manage your building project in the best way and get an overview of all issues. To separate work packages and BIM Issues we created a new filter which enables you to filter BIM Issues. +BIM Issues are also listed in the work package module. This supports you to manage your building project in the best way and get an overview of all issues. To separate work packages and BIM Issues we created a new filter which enables you to filter BIM Issues. ![BIM Issues and work packages](bim-issues-and-work-packages.png) @@ -233,7 +233,7 @@ If attributes of the imported BCF Issue can't be matched automatically (because After a successful matching of the attributes the topics will be displayed in OpenProject. -![Successfull BCF Import](successfull-bcf-import.png) +![Successful BCF Import](successfull-bcf-import.png) diff --git a/docs/bim-guide/ifc-viewer/README.md b/docs/bim-guide/ifc-viewer/README.md index 08918da5758d..7df28aac67fb 100644 --- a/docs/bim-guide/ifc-viewer/README.md +++ b/docs/bim-guide/ifc-viewer/README.md @@ -44,7 +44,7 @@ To upload your first IFC model click on the green "+ IFC Model" - Button. A new -Select the file you want and confirm your upload. You also the choice to set the new model as "Default model". All default models (multiple models can be set as default) are initially shown if you relaod the BCF module. You are able to change this setting later as well. +Select the file you want and confirm your upload. You also the choice to set the new model as "Default model". All default models (multiple models can be set as default) are initially shown if you reload the BCF module. You are able to change this setting later as well. ![Set Model as Default](set-model-as-default.png) @@ -99,7 +99,7 @@ If your building model (or objects within the model) is rotated, zoomed or cut a ![2D View](2-d-view.png) -If your building model can easily be shown in 2D or 3D. This function is very popular to have a deeper look into the building (e.g. to see the floorplan). To use this function in the best way, you are able to combine the 2D view with hiding elements (like it is shown below). +If your building model can easily be shown in 2D or 3D. This function is very popular to have a deeper look into the building (e.g. to see the floor plan). To use this function in the best way, you are able to combine the 2D view with hiding elements (like it is shown below). ![2D_3D](2D_3D.gif) @@ -109,7 +109,7 @@ If your building model can easily be shown in 2D or 3D. This function is very po ![Orthographic Button](orthographic-button.png) -The default behavior of the OpenProject BIM Model Viewer is a perspective view. The perspective camera gives you more information about depth. Distant objects are smaller than nerby ones. This function changes from perspective view to orthographic view. The orthographic view is widely used in engineering. All objects appear at the same scale and parallel lines remain parallel. Also a unit length appears the same length anywhere on the screen. This makes it easier to assess the relative sizes. +The default behavior of the OpenProject BIM Model Viewer is a perspective view. The perspective camera gives you more information about depth. Distant objects are smaller than nearby ones. This function changes from perspective view to orthographic view. The orthographic view is widely used in engineering. All objects appear at the same scale and parallel lines remain parallel. Also a unit length appears the same length anywhere on the screen. This makes it easier to assess the relative sizes. ![Orthographic View](orthographic-view.png) @@ -127,7 +127,7 @@ This function allows you to reset the current zoom level and the position of the ![First Person Button](first-person-button.png) -The first person perspective changes the way you ineract with the building model. The user no longer rotates the entire building model around an axis. Now he has the option of changing their own perspective. After activating the first person perspective, the viewer behaves similar to the real world and the camera moves in a manner comparable to a head movement. +The first person perspective changes the way you interact with the building model. The user no longer rotates the entire building model around an axis. Now he has the option of changing their own perspective. After activating the first person perspective, the viewer behaves similar to the real world and the camera moves in a manner comparable to a head movement. ![First_Person_Perspective](First_Person_Perspective.gif) @@ -173,7 +173,7 @@ To select elements within the building model, you have to activate the selection ## Show properties -You are able to see the basic properties of each element (e.g. the UUID) within OpenProject BIM. After using the "information" buttion a new tab named "Properties" will appear. +You are able to see the basic properties of each element (e.g. the UUID) within OpenProject BIM. After using the "information" button a new tab named "Properties" will appear. ![Show Properties Button](show-properties-button.png) diff --git a/docs/bim-guide/revit-add-in/README.md b/docs/bim-guide/revit-add-in/README.md index 58fb9ee464f9..435b81ebd668 100644 --- a/docs/bim-guide/revit-add-in/README.md +++ b/docs/bim-guide/revit-add-in/README.md @@ -8,7 +8,7 @@ keywords: BIM, BCF, IFC, Viewer # Revit add-in (BIM feature) -The *OpenProject Revit Add-In* allows you to use the open source project management software *OpenProject BIM* directly within your Autodesk Revit environment. It lets you create, inspect and manage issues right in the moment when you can also solve them - when you have your Revit application fired up and the relevant BIM models open. Issues get stored as BIM Issues centrally and are available to every team member in real time - thanks to our browser based IFC viewer even to those team members without expensive Revit licenses. No BCF XML import/export is needed. However, you still can import and export BCF XML as you like and stay interoparable with any other software for BIM Issue Management. +The *OpenProject Revit Add-In* allows you to use the open source project management software *OpenProject BIM* directly within your Autodesk Revit environment. It lets you create, inspect and manage issues right in the moment when you can also solve them - when you have your Revit application fired up and the relevant BIM models open. Issues get stored as BIM Issues centrally and are available to every team member in real time - thanks to our browser based IFC viewer even to those team members without expensive Revit licenses. No BCF XML import/export is needed. However, you still can import and export BCF XML as you like and stay interoperable with any other software for BIM Issue Management. To download the latest version (v2.2.3) of our OpenProject Revit AddIn click here: [DOWNLOAD](https://github.com/opf/openproject-revit-add-in/releases/download/v2.3.3/OpenProject.Revit.exe) @@ -22,10 +22,10 @@ To download the latest version (v2.2.3) of our OpenProject Revit AddIn click her Please check the following steps before using the OpenProject BIM edition. 1. Does OpenProject BIM support your [Version of Revit](#system-requirements)? -2. Did you already install the latest Version of our OpenProject BIM Addin? +2. Did you already install the latest Version of our OpenProject BIM Add-in? 3. Is the latest IFC Model uploaded to your Project in OpenProject BIM? -If you can answer all questions with "yes" you are ready to start using our Revit Addin. +If you can answer all questions with "yes" you are ready to start using our Revit Add-in. @@ -115,7 +115,7 @@ The settings will appear in a new tab. Within this tab you have to insert your o After connecting your OpenProject BIM instance you are able to start working with your BCF Tasks within Revit. Firstly you have to open the **OpenProject Tab** in the taskbar and start the application. -![Start OpenProject BIM Addin](OpenProject_BIM_Start.png) +![Start OpenProject BIM Add-in](OpenProject_BIM_Start.png) @@ -133,7 +133,7 @@ To work with BIM Issues, please open our AddIn and navigate to our BCF Module. -Within this module all existing work packages are displayed. Within this demo project no work package exist yet. To create a new one, click on the "add new workpackage"-Button. +Within this module all existing work packages are displayed. Within this demo project no work package exist yet. To create a new one, click on the "add new work package"-Button. ![OpenProject BIM - Create BCF](OpenProject_BIM_Create_BCF.png) @@ -213,4 +213,4 @@ To proceed with the installation, click on *Run Anyway* and the installation wil ## Reporting bugs -You found a bug? Please [report it](../../development/report-a-bug) to our [OpenProject community](https://community.openproject.com/projects/revit-add-in). Thank you! +You found a bug? Please [report it](../../development/report-a-bug) to our [OpenProject community](https://community.openproject.org/projects/revit-add-in). Thank you! diff --git a/docs/development/README.md b/docs/development/README.md index 73799e79600e..0d5d1372dd5d 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -10,7 +10,7 @@ We are pleased that you are thinking about contributing to OpenProject! This gui ## Get in touch -Please get in touch with us using our [development forum](https://community.openproject.com/projects/openproject/forums/7) or send us an email to info@openproject.org. +Please get in touch with us using our [development forum](https://community.openproject.org/projects/openproject/forums/7) or send us an email to info@openproject.org. @@ -22,7 +22,7 @@ We eat our own ice cream so we use OpenProject for roadmap planning and team col - [Wish list](https://community.openproject.org/projects/openproject/work_packages?query_id=180) -- [Bug backlog](https://community.openproject.com/projects/openproject/work_packages?query_id=491) +- [Bug backlog](https://community.openproject.org/projects/openproject/work_packages?query_id=491) - [Reporting a bug](report-a-bug) diff --git a/docs/development/accessibility-checklist/README.md b/docs/development/accessibility-checklist/README.md index b0b130ee0637..d2aed2e1ed49 100644 --- a/docs/development/accessibility-checklist/README.md +++ b/docs/development/accessibility-checklist/README.md @@ -32,7 +32,7 @@ To help development teams prioritize accessibility implementation and remediatio ### 2.1. Keyboard usability * All page functionality is available using the keyboard, unless the functionality cannot be accomplished in any known way using a keyboard (e.g., free hand drawing). -* Page-specified shortcut keys and accesskeys (accesskey should typically be avoided) do not conflict with existing browser and screen reader shortcuts. +* Page-specified shortcut keys and access keys (access key should typically be avoided) do not conflict with existing browser and screen reader shortcuts. * Keyboard focus is never locked or trapped at one particular page element. The user can navigate to and from all navigable page elements using only a keyboard. * All page functionality is available using the keyboard. diff --git a/docs/development/application-architecture/README.md b/docs/development/application-architecture/README.md index da6a0692ecac..01984e2906a2 100644 --- a/docs/development/application-architecture/README.md +++ b/docs/development/application-architecture/README.md @@ -64,25 +64,25 @@ end ## Involved services -| Service | Relationship to OpenProject | Communication interfaces and mechanisms | Access modes
(R - read)
(W - write) | References | -| ----------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | --------------------------------------------- | ------------------------------------------------------------ | -| Web browser | Performs requests to the application | HTTPS | RW | n/a | -| Native client | Performs requests to the application | HTTPS | RW | n/a | -| SVN client | Performs SVN requests to the application web server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) | -| Git client | Performs Git Smart HTTP requests to the application server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) | -| Load balancer / Proxy | Depending on installation mechanism, terminates TLS/SSL, accepts and proxies or load balances web requests to the different OpenProject web application servers | HTTPS / PROXY | - | [Configuration for packaged installations](https://www.openproject.org/docs/installation-and-operations/installation/packaged/#step-3-apache2-web-server-and-ssl-termination)
[Configuration for Docker/Kubernetes](https://www.openproject.org/docs/installation-and-operations/installation/docker/#disabling-https-mode) | -| Puma application server | Accepts web requests, runs the OpenProject web facing application | Web requests (HTTP/HTTPS)
Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) | -| Memached / Redis / File cache | Application-level cache (if enabled) | TCP connections | RW | [Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options) | -| PostgreSQL | Database management system | (Encrypted) TCP connections between web and background workers | | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
| -| Background worker | Handles asynchronous jobs, such as backup requests, email delivery, | Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) | -| Attached storages or Object storage | Access for attachments for the OpenProject application.
Either directly (or networked) attached storages, or configuration of an S3-compatible Object store | Local filesystem access (local drives, NFS)
HTTPS (S3-compatible storage) | RW | [Configuration of the attachment storage](https://www.openproject.org/docs/installation-and-operations/configuration/#attachments-storage) | -| Email gateways | Send emails (e.g., notifications) from OpenProject application | SMTP | W (deliver mails to relay) | [SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/) | -| Identity providers | External authentication providers (e.g., Keycloak, ADFS, etc.) | HTTPS through standard protocols (OpenID connect, SAML, OAuth 2.0) | R (Redirect and read user info) | [OpenID connect provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/)
[SAML provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/saml/)
[OAuth 2.0 application configuration](https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications/) | -| Nextcloud | External biliteral integration | HTTPS | RW | [Nextcloud integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/) | -| GitHub | Pull Request / Issue referencing Integration into Openproject | HTTPS (Webhooks) | R (Incoming webhook from GitHub) | [GitHub integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/github-integration/) | -| Calendars | External calendars requesting dynamic ICS calendar files from OpenProject | HTTPS (iCalendar/webdav) | R (Outgoing calendar data) | [Calendar subscriptions configuration](https://www.openproject.org/docs/system-admin-guide/calendars-and-dates/#calendar-subscriptions) | -| API integrations | Structural access to OpenProject through API endpoints. Optional access to users and third party organizations depending on authorized scopes | HTTPS | (Optional) R
(Optional) W
| [API configuration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/) | -| Outgoing Webhooks | Outgoing requests for changes within the application | HTTPS | R (Outgoing webhook data) | [Webhook configuration an adminstration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks) | +| Service | Relationship to OpenProject | Communication interfaces and mechanisms | Access modes
(R - read)
(W - write) | References | +|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Web browser | Performs requests to the application | HTTPS | RW | n/a | +| Native client | Performs requests to the application | HTTPS | RW | n/a | +| SVN client | Performs SVN requests to the application web server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) | +| Git client | Performs Git Smart HTTP requests to the application server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) | +| Load balancer / Proxy | Depending on installation mechanism, terminates TLS/SSL, accepts and proxies or load balances web requests to the different OpenProject web application servers | HTTPS / PROXY | - | [Configuration for packaged installations](https://www.openproject.org/docs/installation-and-operations/installation/packaged/#step-3-apache2-web-server-and-ssl-termination)
[Configuration for Docker/Kubernetes](https://www.openproject.org/docs/installation-and-operations/installation/docker/#disabling-https-mode) | +| Puma application server | Accepts web requests, runs the OpenProject web facing application | Web requests (HTTP/HTTPS)
Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) | +| Memcached / Redis / File cache | Application-level cache (if enabled) | TCP connections | RW | [Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options) | +| PostgreSQL | Database management system | (Encrypted) TCP connections between web and background workers | | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
| +| Background worker | Handles asynchronous jobs, such as backup requests, email delivery, | Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) | +| Attached storages or Object storage | Access for attachments for the OpenProject application.
Either directly (or networked) attached storages, or configuration of an S3-compatible Object store | Local filesystem access (local drives, NFS)
HTTPS (S3-compatible storage) | RW | [Configuration of the attachment storage](https://www.openproject.org/docs/installation-and-operations/configuration/#attachments-storage) | +| Email gateways | Send emails (e.g., notifications) from OpenProject application | SMTP | W (deliver mails to relay) | [SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/) | +| Identity providers | External authentication providers (e.g., Keycloak, ADFS, etc.) | HTTPS through standard protocols (OpenID connect, SAML, OAuth 2.0) | R (Redirect and read user info) | [OpenID connect provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/)
[SAML provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/saml/)
[OAuth 2.0 application configuration](https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications/) | +| Nextcloud | External bilateral integration | HTTPS | RW | [Nextcloud integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/) | +| GitHub | Pull Request / Issue referencing Integration into OpenProject | HTTPS (Webhooks) | R (Incoming webhook from GitHub) | [GitHub integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/github-integration/) | +| Calendars | External calendars requesting dynamic ICS calendar files from OpenProject | HTTPS (iCalendar/webdav) | R (Outgoing calendar data) | [Calendar subscriptions configuration](https://www.openproject.org/docs/system-admin-guide/calendars-and-dates/#calendar-subscriptions) | +| API integrations | Structural access to OpenProject through API endpoints. Optional access to users and third party organizations depending on authorized scopes | HTTPS | (Optional) R
(Optional) W
| [API configuration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/) | +| Outgoing Webhooks | Outgoing requests for changes within the application | HTTPS | R (Outgoing webhook data) | [Webhook configuration an administration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks) | @@ -99,15 +99,15 @@ OpenProject is developed as a GPLv3 licensed, open-source software. The software OpenProject is continuously tested, developed, and distributed using the following environments -| **Environment** | **Description** | **Release Target** | **Deployment cycles** | -| ------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| Edge | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-edge.com
Subject for continuous QA, acceptance and regression testing. | Next minor or major release planned and developed in our [community instance](https://community.openproject.org/projects/openproject/) | On every push to `opf/openproject#dev` | -| Stage | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-stage.com.
Subject for QA and acceptance testing of bugfix prior to stable releases. | Next patch release of the current stable release following our [release plan](https://community.openproject.org/projects/openproject/work_packages?query_id=918) | On every push to `release/X.Y`, where `X.Y` is the current stable release major and minor versions. | -| Production
(SaaS / Cloud) | Production cloud environments. Deployed manually with the latest stable release | Stable releases | Manually | -| Production
(Docker images) | [Official public OpenProject docker images](https://hub.docker.com/r/openproject/community)
Continuous delivery for development versions using `dev-*`tags.
Stable releases through major, minor, or patch level tags. | Development (`dev`, `dev-slim` tag)
Stable releases (`X`, `X.Y`, `X.Y.Z`, `X-slim`, `X.Y-slim`, `X.Y.Z-slim`) | Automatically on new releases of the OpenProject application | -| Production
(Packages) | [Official public OpenProject Linux packages](https://www.openproject.org/docs/installation-and-operations/installation/packaged/)

Stable releases for supported distributions | Stable releases | Automatically on new releases of the OpenProject application | -| Production
(Helm chart) | [Official public OpenProject Helm charts](https://www.openproject.org/docs/installation-and-operations/installation/helm-chart/)
Stable releases | Stable releases (configurable through container tags) | Updates to Helm chart are manual, underlying deployment uses OpenProject docker images | -| PullPreview | Temporary instances for development of features scope to a pull request. | Feature branches | Automatically deployed when developers/QA request a pull preview instance by labelling pull requests with the `PullPreview` tag. | +| **Environment** | **Description** | **Release Target** | **Deployment cycles** | +| ------------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------ | ------------------------------------------------------------ | +| Edge | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-edge.com
Subject for continuous QA, acceptance and regression testing. | Next minor or major release planned and developed in our [community instance](https://community.openproject.org/projects/openproject/) | On every push to `opf/openproject#dev` | +| Stage | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-stage.com.
Subject for QA and acceptance testing of bugfix prior to stable releases. | Next patch release of the current stable release following our [release plan](https://community.openproject.org/projects/openproject/work_packages?query_id=918) | On every push to `release/X.Y`, where `X.Y` is the current stable release major and minor versions. | +| Production
(SaaS / Cloud) | Production cloud environments. Deployed manually with the latest stable release | Stable releases | Manually | +| Production
(Docker images) | [Official public OpenProject docker images](https://hub.docker.com/r/openproject/community/)
Continuous delivery for development versions using `dev-*`tags.
Stable releases through major, minor, or patch level tags. | Development (`dev`, `dev-slim` tag)
Stable releases (`X`, `X.Y`, `X.Y.Z`, `X-slim`, `X.Y-slim`, `X.Y.Z-slim`) | Automatically on new releases of the OpenProject application | +| Production
(Packages) | [Official public OpenProject Linux packages](https://www.openproject.org/docs/installation-and-operations/installation/packaged/)

Stable releases for supported distributions | Stable releases | Automatically on new releases of the OpenProject application | +| Production
(Helm chart) | [Official public OpenProject Helm charts](https://www.openproject.org/docs/installation-and-operations/installation/helm-chart/)
Stable releases | Stable releases (configurable through container tags) | Updates to Helm chart are manual, underlying deployment uses OpenProject docker images | +| PullPreview | Temporary instances for development of features scope to a pull request. | Feature branches | Automatically deployed when developers/QA request a pull preview instance by labelling pull requests with the `PullPreview` tag. | @@ -127,13 +127,13 @@ Administrators can identify their currently deployed version of OpenProject in t ## Upcoming releases -See the [Roadmap](https://community.openproject.com/projects/openproject/roadmap) for the overview of the upcoming stable releases. +See the [Roadmap](https://community.openproject.org/projects/openproject/roadmap) for the overview of the upcoming stable releases. ## Versioning -OpenProject follows [Semantic Versioning](https://semver.org/). Therefore, the version is a composition of three digits in the format of e.g. 0.1.1 and can be summarised as followed: +OpenProject follows [Semantic Versioning](https://semver.org/). Therefore, the version is a composition of three digits in the format of e.g. 0.1.1 and can be summarized as followed: - MAJOR version when you make incompatible API changes, - MINOR version when you add functionality in a backwards-compatible manner, and @@ -176,7 +176,7 @@ We recommended to update to a new stable release as soon as possible to have a s ## Change history -All changes made to the OpenProject software are documented via work packages bundled by the version. The [Roadmap view](https://community.openproject.com/projects/openproject/roadmap) gives a corresponding overview. A release is also summarized in the [release notes](https://www.openproject.org/docs/release-notes). +All changes made to the OpenProject software are documented via work packages bundled by the version. The [Roadmap view](https://community.openproject.org/projects/openproject/roadmap) gives a corresponding overview. A release is also summarized in the [release notes](https://www.openproject.org/docs/release-notes). diff --git a/docs/development/code-review-guidelines/README.md b/docs/development/code-review-guidelines/README.md index d792d6def642..e56e67d0d2cb 100644 --- a/docs/development/code-review-guidelines/README.md +++ b/docs/development/code-review-guidelines/README.md @@ -8,9 +8,9 @@ This guide serves as a foundation on how to prepare your work for and perform co ### Coding style -We try to adhere to the [Ruby community styleguide](https://github.com/bbatsov/ruby-style-guide) as well as the [AirBnB JavaScript style guide](https://github.com/airbnb/javascript) with [some extensions for Angular](../style-guide/frontend/). Rules we want to follow are expressed as either Rubocop definitions or eslint rules. Follow your linter to adhere to them. +We try to adhere to the [Ruby community style guide](https://github.com/bbatsov/ruby-style-guide) as well as the [AirBnB JavaScript style guide](https://github.com/airbnb/javascript) with [some extensions for Angular](../style-guide/frontend/). Rules we want to follow are expressed as either Rubocop definitions or eslint rules. Follow your linter to adhere to them. -Due to the age of our codebase, a lot of our code might not yet adhere to these styleguides, but we want all new code to adhere to it. You do not have to improve existing code when making changes, but we encourage it. If you do, please do all improvements in a separate commit from the actual change, so the improvements do not hide your actual code changes in a diff. +Due to the age of our codebase, a lot of our code might not yet adhere to these style guides, but we want all new code to adhere to it. You do not have to improve existing code when making changes, but we encourage it. If you do, please do all improvements in a separate commit from the actual change, so the improvements do not hide your actual code changes in a diff. Before committing, please run your new code through [Rubocop](https://github.com/bbatsov/rubocop). It detects deviations from a lot of things in the style guide and things that are bad practice in general. You obviously do not have to fix issues with existing code. There is a [list of editor plugins](https://docs.rubocop.org/rubocop/1.31/integration_with_other_tools.html#editor-integration) in the Rubocop docs. You can also use `bin/dirty-rubocop` to test them. Pull requests are being linted automatically through a GitHub action. @@ -18,7 +18,7 @@ The same is true for eslint. Your editor will likely have support for eslint che **Lefthook** -For automatically linting your files on commiting them, please have a look at [Lefthook](https://github.com/evilmartians/lefthook). You can install these rules by using `bundle exec lefthook install`. +For automatically linting your files on committing them, please have a look at [Lefthook](https://github.com/evilmartians/lefthook). You can install these rules by using `bundle exec lefthook install`. @@ -65,7 +65,7 @@ Every developer and reviewer should read the Rails Security Guide as well as the ### Changelog - All changes made to the OpenProject software are managed and documented via work packages in the [OpenProject project](https://community.openproject.org/projects/openproject/). -- The [Roadmap view](https://community.openproject.com/projects/openproject/roadmap) gives a corresponding overview. +- The [Roadmap view](https://community.openproject.org/projects/openproject/roadmap) gives a corresponding overview. - For any nontrivial or pure maintenance changes (Gem bumps etc.), please ensure you have a corresponding ticket you link to in the form of `OP## `or `https://community.openproject.org/work_packages/ID` in your pull request. - To prevent inconsistencies and avoid redundant work there is no additional change log in the source code. Releases will contain a changelog of the publicly visible tickets in the GitHub releases pages, as well as [on our release notes](../../release-notes/). @@ -98,7 +98,7 @@ You've found a pull request you want to review. Here is how to do it: Reviewing code from your colleagues has higher priority than picking up more work. When you start your day, or in between working on other topics, please check the above link if there is any review requested. -If a review is left untouched, feel free to request a review from a group or link the pull request in question in the devs element channel. +If a review is left untouched, feel free to request a review from a group or link the pull request in question in the developers element channel. @@ -122,7 +122,7 @@ Try to think of edge cases when testing or evaluating the code, double check the ### Language -Keep in mind that we're all trying to do the correct thing. Be kind and honest to one another, especially since our reviews are public for everyeone to see. +Keep in mind that we're all trying to do the correct thing. Be kind and honest to one another, especially since our reviews are public for everyone to see. - Prefer questions instead of demands - When in doubt, ask for a meeting to clarify things before assuming someone made a mistake. @@ -189,8 +189,8 @@ The only exception to this rule are single commit pull requests, which can be ap ## Citations -[scientopia.org/blogs/goodmath/2011/07/06/things-everyone-should-do-code-review/](https://blog.csdn.net/zhangmike/article/details/30198411) +[Things everyone should do: code review](https://blog.csdn.net/zhangmike/article/details/30198411) -[beust.com/weblog/2006/06/22/why-code-reviews-are-good-for-you/](https://beust.com/weblog/2006/06/22/why-code-reviews-are-good-for-you/) +[Why code reviews are good for you](https://beust.com/weblog/2006/06/22/why-code-reviews-are-good-for-you/) -[www-archive.mozilla.org/hacking/code-review-faq](https://www-archive.mozilla.org/hacking/code-review-faq) +[Code review FAQ](https://www-archive.mozilla.org/hacking/code-review-faq) diff --git a/docs/development/concepts/hal-resources/README.md b/docs/development/concepts/hal-resources/README.md index 33eacd3e95c2..6e3b33a15f19 100644 --- a/docs/development/concepts/hal-resources/README.md +++ b/docs/development/concepts/hal-resources/README.md @@ -34,7 +34,7 @@ The JSON response in HAL standard can contain these things: -The following is an example HAL JSON for a work package as it is retrieved by the API. This response is abbreviated, you can see the full response of [#34250 on our community](https://community.openproject.com/api/v3/work_packages/34250). You will see the three sections: +The following is an example HAL JSON for a work package as it is retrieved by the API. This response is abbreviated, you can see the full response of [#34250 on our community](https://community.openproject.org/api/v3/work_packages/34250). You will see the three sections: 1. Immediate properties within the JSON such as `_type`, `id`, `lockVersion`, `description`. There are more properties like this, they are scalar values of the work package that are not linked to other resources diff --git a/docs/development/concepts/inline-editing/README.md b/docs/development/concepts/inline-editing/README.md index 88e775ec2860..1334f93543e8 100644 --- a/docs/development/concepts/inline-editing/README.md +++ b/docs/development/concepts/inline-editing/README.md @@ -45,7 +45,7 @@ In order to understand the different modes of the inline edition functionality, The display fields handle showing read-only representation of a resource's attribute. For example, the work package table may contain very different kinds of attributes: A progress bar, bare text fields, formatted date fields and the like. -Since OpenProject can also have dynamic custom fields with varying formats, the frontend cannot know all potential attribute names and their types. Instead, the available attributes of a resource are retrieved from its associated [schema resource](../resource-schemas/). For display fields, the important part of the schema definition for an attribute is its `type` attribute. Take a look at the JSON schema response for projects at the community: [community.openproject.com/api/v3/projects/schema](https://community.openproject.com/api/v3/projects/schema). For the sake of brevity, the following JSON will only show two of the returned attributes: The name and status attribute description: +Since OpenProject can also have dynamic custom fields with varying formats, the frontend cannot know all potential attribute names and their types. Instead, the available attributes of a resource are retrieved from its associated [schema resource](../resource-schemas/). For display fields, the important part of the schema definition for an attribute is its `type` attribute. Take a look at the JSON schema response for projects at the community: [community.openproject.org/api/v3/projects/schema](https://community.openproject.org/api/v3/projects/schema). For the sake of brevity, the following JSON will only show two of the returned attributes: The name and status attribute description: ```json5 { @@ -291,7 +291,7 @@ While this doesn't take care of any labels or styling, it will already provide e The work package single view is the boss fight of inline editing. It combines all the previous concepts with the flexibility of work package attributes and type configuration. -The following screenshot is [bug report #34250](https://community.openproject.com/wp/34250), which is a work package of Type `Bug`. The Bug type has a [specific form configuration](../../../system-admin-guide/manage-work-packages/work-package-types/#work-package-form-configuration-enterprise-add-on) defined. This configuration is as follows: +The following screenshot is [bug report #34250](https://community.openproject.org/wp/34250), which is a work package of Type `Bug`. The Bug type has a [specific form configuration](../../../system-admin-guide/manage-work-packages/work-package-types/#work-package-form-configuration-enterprise-add-on) defined. This configuration is as follows: @@ -299,13 +299,13 @@ The following screenshot is [bug report #34250](https://community.openproject.co The Bug has three attribute groups defined with a set of attributes in it. These attributes correspond to the attribute groups in the `single view`. -If we take a look at the XHR requests on the bug page, we see that a request is being made to the schema `https://community.openproject.com/api/v3/work_packages/schemas/14-1`, which is the work package schema for project ID=14 (openproject on community), and the type ID=1 (Bug type). It contains the attribute definitions of the [work package schema](../resource-schemas/) and the enabled attribute groups with their attribute definitions: +If we take a look at the XHR requests on the bug page, we see that a request is being made to the schema `https://community.openproject.org/api/v3/work_packages/schemas/14-1`, which is the work package schema for project ID=14 (openproject on community), and the type ID=1 (Bug type). It contains the attribute definitions of the [work package schema](../resource-schemas/) and the enabled attribute groups with their attribute definitions: ![Attribute groups of type Bug in OpenProject project](schema-attribute-groups.png) We can see the three groups as defined in the administration are being transmitted to the frontend through the `_attributeGroups` property. -The type defines which type of group is being rendered. The attribute group is the most common, rendering a set of attributes. It is also possible to render an embedded work package table for related work packages such as in the following exemplary [Epic #25624](https://community.openproject.com/wp/25624): +The type defines which type of group is being rendered. The attribute group is the most common, rendering a set of attributes. It is also possible to render an embedded work package table for related work packages such as in the following exemplary [Epic #25624](https://community.openproject.org/wp/25624): ![Work package with query group for children](single-view-query-group.png) diff --git a/docs/development/concepts/permissions/README.md b/docs/development/concepts/permissions/README.md index fd884d6f7420..5d4dde478400 100644 --- a/docs/development/concepts/permissions/README.md +++ b/docs/development/concepts/permissions/README.md @@ -94,14 +94,14 @@ However, for most end points, this does not need to be and should not be done on When a set of records is to be returned, e.g. for an index action, it is best to limit the returned result set to the records the user is allowed to see. To avoid having to apply the permission check after the records have been fetched and instantiated, which is costly, it is best to limit the records in the sql right away. As there are a couple of different scenarios for fetching records, there are a couple of matching scopes defined: -| Scenario | Scope | Example | -|--------- | ------| ------- | -| All projects a user is allowed a permission in | `Project.allowed_to(user, permission)` | `Project.allowed_to(User.current, :view_work_packages)` | -| All work packges a user is allowed a permission in | `WorkPackage.allowed_to(user, permission)` | `WorkPackage.allowed_to(User.current, :view_work_packages)` | -| All users granted a permission in a project | `Authorization.users(permission, project: project)` | `Authorization.users(:view_work_packages, project: project)` | -| All roles a user has in a project | `Authorization.roles(user, project)` | `Authorization.roles(User.current, project)` | -| All roles a user has for a specific resource | `Authorization.roles(user, entity)` | `Authorization.roles(User.current, work_package)` | -| All roles a user has globally | `Authorization.roles(user)` | `Authorization.roles(User.current)` | +| Scenario | Scope | Example | +|-----------------------------------------------------|-----------------------------------------------------|--------------------------------------------------------------| +| All projects a user is allowed a permission in | `Project.allowed_to(user, permission)` | `Project.allowed_to(User.current, :view_work_packages)` | +| All work packages a user is allowed a permission in | `WorkPackage.allowed_to(user, permission)` | `WorkPackage.allowed_to(User.current, :view_work_packages)` | +| All users granted a permission in a project | `Authorization.users(permission, project: project)` | `Authorization.users(:view_work_packages, project: project)` | +| All roles a user has in a project | `Authorization.roles(user, project)` | `Authorization.roles(User.current, project)` | +| All roles a user has for a specific resource | `Authorization.roles(user, entity)` | `Authorization.roles(User.current, work_package)` | +| All roles a user has globally | `Authorization.roles(user)` | `Authorization.roles(User.current)` | Most of the time, a developer will not witness those queries as they are the embedded deeply within the existing scopes. E.g. the `visible` scopes defined for most AR models. @@ -209,7 +209,7 @@ This hooks into all permission checks (including the deprecated `allowed_to?` me In the frontend, we have to rely on the API to tell us what actions the user is allowed to do. With [`HAL+JSON resources`](../hal-resources), we can do that by checking for the presence or absence of an action link in responses. -For example, if the user has the permission to create work packages in the OpenProject project on the community, [the collection response of the work packages API](https://community.openproject.com/api/v3/projects/openproject/work_packages?pageSize=0) of it will contain a link `createWorkPackage` that contains the link to the create form API endpoint. +For example, if the user has the permission to create work packages in the OpenProject project on the community, [the collection response of the work packages API](https://community.openproject.org/api/v3/projects/openproject/work_packages?pageSize=0) of it will contain a link `createWorkPackage` that contains the link to the create form API endpoint. To check these links, one can use the [`ModelAuthService`](https://github.com/opf/openproject/tree/dev/frontend/src/app/core/model-auth/model-auth.service.ts) that gets initialized with the resources being loaded: diff --git a/docs/development/concepts/queries/README.md b/docs/development/concepts/queries/README.md index 421a75ff00e9..eefc9df0eb75 100644 --- a/docs/development/concepts/queries/README.md +++ b/docs/development/concepts/queries/README.md @@ -58,8 +58,8 @@ Currently, the Queries endpoint and object is highly specific to work packages, Queries are regular APIv3 grape endpoints that can be accessed through the `/api/v3/queries` namespace. In general, they can be maintained in two ways: -1. By accessing a previously saved query by their ID such as `/api/v3/queries/2453` ([Example JSON response](https://community.openproject.com/api/v3/queries/2453) on community) -2. By setting dynamic GET parameters on a saved or `default` query such as `/api/v3/queries/default?columns[]=id` ([Example JSON response](https://community.openproject.com/api/v3/queries/default?columns[]=id) on community) +1. By accessing a previously saved query by their ID such as `/api/v3/queries/2453` ([Example JSON response](https://community.openproject.org/api/v3/queries/2453) on community) +2. By setting dynamic GET parameters on a saved or `default` query such as `/api/v3/queries/default?columns[]=id` ([Example JSON response](https://community.openproject.org/api/v3/queries/default?columns[]=id) on community) The default query `/api/v3/queries/default` and `/api/v3/:project_id/queries/default` contains a default set of configuration (back-end and front-end) global and for the given project, respectively. They can only be modified administrators through some global settings. @@ -84,7 +84,7 @@ When accessing a singular query resource, the response will always contain the s - **Basic properties** of the query object itself - `id` of the query (if any) - `name` of the query set by the saving user - - `starred` whether the user favorited this query (special place in sidebar) + - `starred` whether the user favorites this query (special place in sidebar) - `public` whether the query is shared with other users - `createdAt` / `updatedAt` timestamps for the resource - `_links.project` to the project it is saved in (if project-scoped) @@ -111,7 +111,7 @@ These filters are also saved within the queries. Read the [APIv3 filters documen ### Exemplary query response -Due to the public nature of the OpenProject community, you can check out the following exemplary query response in HAL+JSON: [community.openproject.com/api/v3/queries/2453](https://community.openproject.com/api/v3/queries/2453) +Due to the public nature of the OpenProject community, you can check out the following exemplary query response in HAL+JSON: [community.openproject.org/api/v3/queries/2453](https://community.openproject.org/api/v3/queries/2453) It returns a saved query for the OpenProject 11.0 release, with a type filter `type is not [Idea, Phase, Release]` , a version filter `version = 11.0.0` and a "show all subprojects" filter with `subProject = all` . It is sorted by `type ascending`. @@ -175,6 +175,6 @@ 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). -`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). +`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.org/work_packages](https://community.openproject.org/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. diff --git a/docs/development/concepts/resource-schemas/README.md b/docs/development/concepts/resource-schemas/README.md index 07e0ec83653b..5a808c30b035 100644 --- a/docs/development/concepts/resource-schemas/README.md +++ b/docs/development/concepts/resource-schemas/README.md @@ -75,7 +75,7 @@ This section describes some of the existing schemas. **Projects** -For projects, there is a single APIv3 endpoint for their schemas: `/api/v3/projects/schema`. This schema is identical for all projects. You can simply request the OpenProject Community schema for projects [here](https://community.openproject.com/api/v3/projects/schema). It contains a set of static properties (name, identifier, status, etc.), as well as all project-level custom fields. +For projects, there is a single APIv3 endpoint for their schemas: `/api/v3/projects/schema`. This schema is identical for all projects. You can simply request the OpenProject Community schema for projects [here](https://community.openproject.org/api/v3/projects/schema). It contains a set of static properties (name, identifier, status, etc.), as well as all project-level custom fields. @@ -85,7 +85,7 @@ The work package schema is more complicated, as work package types can be custom This results in work package schemas being defined per project and type combination. The URL of each schema looks like this: `/api/v3/work_packages/schemas/{project id}-{type-id}`. -An exemplary schema response on the Community for the OpenProject project (`ID=14`) and the Bug type (`ID=1`) is [community.openproject.com/api/v3/work_packages/schemas/14-1](https://community.openproject.com/api/v3/work_packages/schemas/14-1) +An exemplary schema response on the Community for the OpenProject project (`ID=14`) and the Bug type (`ID=1`) is [community.openproject.org/api/v3/work_packages/schemas/14-1](https://community.openproject.org/api/v3/work_packages/schemas/14-1) The work package schema also contains the reference to the attribute groups from the form configuration in the `_attributeGroups` property. @@ -95,9 +95,9 @@ The work package schema also contains the reference to the attribute groups from The OpenProject frontend usually ensure that whenever you get access to a HAL resource, its associated schema (if there is any) is also loaded. This is done through the [`SchemaCacheService`](https://github.com/opf/openproject/blob/dev/frontend/src/app/core/schemas/schema-cache.service.ts). It will request the associated schema unless it has already been cached in the global states object to avoid loading a schema multiple times. -In some cases, such as the work package `/api/v3/work_packages` or `/api/v3/queries` endpoints, the needed schemas to represent the work packages contained in the collection are embedded automatically in the `_embedded.schemas` endpoint. Services handling these loaded requests such as the [`WorkPackagesStatesIntializationService`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/components/wp-list/wp-states-initialization.service.ts) will automatically update the schema states. +In some cases, such as the work package `/api/v3/work_packages` or `/api/v3/queries` endpoints, the needed schemas to represent the work packages contained in the collection are embedded automatically in the `_embedded.schemas` endpoint. Services handling these loaded requests such as the [`WorkPackagesStatesInitializationService`](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/components/wp-list/wp-states-initialization.service.ts) will automatically update the schema states. -If you look at the HAL+JSON response of a work package API request, you will see it has a `_links.schema.href` property which identifies the schema resource that the loaded work package is associated with. ([Exemplary request](https://community.openproject.com/api/v3/work_packages/34250)) +If you look at the HAL+JSON response of a work package API request, you will see it has a `_links.schema.href` property which identifies the schema resource that the loaded work package is associated with. ([Exemplary request](https://community.openproject.org/api/v3/work_packages/34250)) If you have work package resource, you can get hold of its associated schema as follows: diff --git a/docs/development/concepts/secure-coding/README.md b/docs/development/concepts/secure-coding/README.md index 823ca1fa7416..89d92c65e1f3 100644 --- a/docs/development/concepts/secure-coding/README.md +++ b/docs/development/concepts/secure-coding/README.md @@ -13,7 +13,7 @@ This document provides secure coding development guidelines for developers worki By following these guidelines, developers can contribute to OpenProject while ensuring the security of OpenProject and reduce the risk of vulnerabilities being released into production. -The following guidelines are a starting point for developers interesting in contributing in OpenProject to ensure they are developing secure code. We recommend to refer to the [OWASP cheat sheets](https://cheatsheetseries.owasp.org/) as well as the [OWASP Top Ten](https://owasp.org/www-project-top-ten/) for the most recent and detailed guidelines. The following sections are heavily inspired and cross-referencing the well-known recommendations from the the OWASP, each section providing links for further references to generic, Rails-centered as well as OpenProject-specific information when available. +The following guidelines are a starting point for developers interesting in contributing in OpenProject to ensure they are developing secure code. We recommend to refer to the [OWASP cheat sheets](https://cheatsheetseries.owasp.org) as well as the [OWASP Top Ten](https://owasp.org/www-project-top-ten/) for the most recent and detailed guidelines. The following sections are heavily inspired and cross-referencing the well-known recommendations from the the OWASP, each section providing links for further references to generic, Rails-centered as well as OpenProject-specific information when available. By adhering to these secure coding development guidelines, contributors to OpenProject can help to significantly reduce the risk of adding potentially unsecure code. Regardless of these guidelines, be mindful when reviewing pull requests of features touching any of these guidelines, keep security in mind whenever you write new code for OpenProject to ensure we deliver a secure and trustworthy software. @@ -45,7 +45,7 @@ Implement strong authentication mechanisms for any sensitive credentials to be u **Guidelines** - Ensure uniqueness and case-insensitivity of user logins. -- Use crytographic hashes for password or credentials storage +- Use cryptographic hashes for password or credentials storage - Allow administrators to enforce strong password policies with a combination of characters, numbers, and special symbols. Implement password expiration and account lockout mechanisms. - Implement mechanisms to protect against brute force attacks, such as account lockouts, rate limiting, or increasing delays after multiple failed login attempts. - Use strong password controls and validations @@ -70,13 +70,13 @@ OpenProject uses industry standard authentication mechanisms that follow the bes -OpenProject recommends these authenticiation mechanisms: +OpenProject recommends these authentication mechanisms: - All connections to and from OpenProject should be secured through TLS/SSL transport encryption. OpenProject assumes connections are secured through TLS/SSL by default in all production systems. Note that OpenProject does not provide TLS/SSL termination itself for Docker-based installations. The customer's IT department needs to configure and maintain the TLS certificates at the load balancer or proxying server before connections reach the application server. -- For any external connection (Database, LDAP, etc.), OpenProject uses openssl library for the host or container's openssl certificate store. Use your distribution's mechanisms to add verified certificate or certificate chains. For more infomration, see the [Ruby OpenSSL X509 Store documentation](https://ruby-doc.org/stdlib-2.4.0/libdoc/openssl/rdoc/OpenSSL/X509/Store.html). +- For any external connection (Database, LDAP, etc.), OpenProject uses openssl library for the host or container's openssl certificate store. Use your distribution's mechanisms to add verified certificate or certificate chains. For more information, see the [Ruby OpenSSL X509 Store documentation](https://ruby-doc.org/stdlib-2.4.0/libdoc/openssl/rdoc/OpenSSL/X509/Store.html). - For smaller to medium organizations with no centralized authentication mechanism, use the internal username / password authentication mechanism for secure storing of your user's credentials using BCrypt salted cryptographic hash function. -- For organizations with a centralized and accessible LDAP server, [OpenProject provides LDAP userbind authentication](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/) to foward the authentication request to your LDAP server. Use TLS or LDAPS encrypted connections to the LDAP server to ensure transport level security. Optionally, synchronize roles and permissions using the [LDAP Group sync functionality](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/). +- For organizations with a centralized and accessible LDAP server, [OpenProject provides LDAP userbind authentication](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/) to forward the authentication request to your LDAP server. Use TLS or LDAPS encrypted connections to the LDAP server to ensure transport level security. Optionally, synchronize roles and permissions using the [LDAP Group sync functionality](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/). - If your organization operates a central authentication services, it is very likely it supports one of the standard remote authentication mechanisms for single sign-on, such as [OpenID connect](https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/), [SAML](https://www.openproject.org/docs/system-admin-guide/authentication/saml/), or [Kerberos](https://www.openproject.org/docs/system-admin-guide/authentication/kerberos/). Use these mechanisms to ensure a standardized and secure authentication of users without requiring the storage of any credentials at OpenProject while providing a high level of usability due to centralized logins. @@ -117,13 +117,13 @@ As OpenProject is a web application, the web session is the central mechanism of **Guidelines** -- Use Rails' built-in secure session cookies for maintaing the users' session. It incorporates best-practices to ensure strong session tokens, tamper resistance, and proper expiration. +- Use Rails' built-in secure session cookies for maintaining the users' session. It incorporates best-practices to ensure strong session tokens, tamper resistance, and proper expiration. - Ensure session cookies are marked `secure` and `httponly`, as well as providing the appropriate `SameSite` and expiry flags according to the instance's configuration. - Provide a secure logout mechanism that invalidates the session and clears session cookies. Ensure that users are logged out after a period of inactivity. - Implement session fixation protection mechanisms to prevent attackers from fixing a user's session to a known value. - Prevent storing sensitive unencrypted session information on the client device - Allow users to terminate sessions themselves, as well as allow instances to prevent simultaneous session logins by terminating other sessions. -- Implement strong Cross-site scriptiong (XSS) protections as listed further down below, as the target of XSS attacks is often exploitation of the user's session credential. +- Implement strong Cross-site scripting (XSS) protections as listed further down below, as the target of XSS attacks is often exploitation of the user's session credential. **References** @@ -137,15 +137,15 @@ At its core, permissions in OpenProject are the central key to determine who can **Risks and Impact** -- *Unauthorized access*: Users gaining or exploting access to sensitive resources or functionalities they are not supposed to have access to. Potential consequences in data breaches, unauthorized actions, and potential exposure of confidential information. -- *Over-Privileged Users*: Users receiving more permissions than necessary for their role, leading to potential misuse of privileges. Potential consequencse are unauthorized data modifications, data leaks, or abuse of system capabilities. +- *Unauthorized access*: Users gaining or exploiting access to sensitive resources or functionalities they are not supposed to have access to. Potential consequences in data breaches, unauthorized actions, and potential exposure of confidential information. +- *Over-Privileged Users*: Users receiving more permissions than necessary for their role, leading to potential misuse of privileges. Potential consequences are unauthorized data modifications, data leaks, or abuse of system capabilities. **Guidelines** - Allow flexible assignment of permissions for individual projects and objects, following the *Least Privilege* rule. -- Implement controlls and authorization checks with a *Deny by default* or *Fallback deny* rule, preventing authorization flows to miss certain steps and allowing user requests to fall through the authorization checks. +- Implement controls and authorization checks with a *Deny by default* or *Fallback deny* rule, preventing authorization flows to miss certain steps and allowing user requests to fall through the authorization checks. - Validate the permissions of a user on every request, regardless of the origin of it. - Enforce proper authorization controls to ensure that users only access their own data. - Provide extensive tests for permission checks, making assertions of all available cases and using visibility testing for asserting that certain actors _cannot_ access data or perform actions. @@ -178,7 +178,7 @@ OpenProject is a form-driven application, meaning that users input a lot of data **Guidelines** -- Understand and use the [Rails framework's mechansims](https://guides.rubyonrails.org/security.html#injection) to prevent injection and CSRF attacks +- Understand and use the [Rails framework's mechanisms](https://guides.rubyonrails.org/security.html#injection) to prevent injection and CSRF attacks - Understand and use the Rails framework to use its built-in security measures such as proper encoding of HTML output, CSRF tokens in all state-changing requests, and automatic escaping of user input in ActiveRecord SQL queries. - Implement a strict [content security policy](https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html) to mitigate common XSS, CSRF and similar cross-site attack vectors. OpenProject uses the [secure_headers gem](https://github.com/github/secure_headers) to define its CSP. - Learn about the [different types of XSS](https://owasp.org/www-community/Types_of_Cross-Site_Scripting#stored-xss-aka-persistent-or-type-i) and their impacts: Reflected XSS, Stored XSS, Dom-based XSS and server vs client side XSS @@ -199,13 +199,13 @@ https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html ## Virus and Malware protection -As OpenProject may handle and distribute sensitive user data, attack vectors such as malicious user input as specified in the previous section pose a threat to the integrity, confidentiality, and availaibility of data. In the following, we will evaluate different risks and guidelines on the protection against viruses and other malware during operation of an OpenProject instance. +As OpenProject may handle and distribute sensitive user data, attack vectors such as malicious user input as specified in the previous section pose a threat to the integrity, confidentiality, and availability of data. In the following, we will evaluate different risks and guidelines on the protection against viruses and other malware during operation of an OpenProject instance. **Risks and impacts** -- *Viruses and malware uploads*: Whenever users are able to upload files to a system, potentially malicous files could be provided and distributed through OpenProject by users with the appropriate upload permission. +- *Viruses and malware uploads*: Whenever users are able to upload files to a system, potentially malicious files could be provided and distributed through OpenProject by users with the appropriate upload permission. - *Malware in software*: OpenProject carefully selects and updates third-party dependencies. Please see the following section on [external dependencies](#external-dependencies) for more information on the best practices of external dependencies. @@ -214,10 +214,10 @@ As OpenProject may handle and distribute sensitive user data, attack vectors suc - Virus and malware uploads - OpenProject provides users with fine-grained access to control which user groups are allowed to upload files - - Whitelist for uploads can be provided by MIME type, rejecting any nonmatching files + - Whitelist for uploads can be provided by MIME type, rejecting any non-matching files - OpenProject currently does not provide a built-in virus scanner. However, using [webhooks](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks) and the [attachments API](https://www.openproject.org/docs/api/endpoints/attachments/), users can plug existing virus scanning tools and scrub any uploaded files. - *Malware in software*: - - OpenProject uses statical code analysis on every change provided to the application as well as code scanners on the artefacts generated from the source code (such as Snyk vulnerability scanner for Docker images). + - OpenProject uses statical code analysis on every change provided to the application as well as code scanners on the artifacts generated from the source code (such as Snyk vulnerability scanner for Docker images). - We recommend users to perform their own @@ -251,7 +251,7 @@ Inconsiderate use of error handling, logging, and monitoring mechanisms of a web - Exception handlers catch all StandardErrors whenever your controller inherits from ApplicationController - Exception responses are disconnected from the actual errors and provide user-friendly messages without error details - Database transaction wrapping for any actions is wrapped in the [BaseContracted services](https://github.com/opf/openproject/blob/dev/app/services/base_services/base_contracted.rb#L54). Transactions are automatically rolled back in [Rails when exceptions occur](https://api.rubyonrails.org/v5.0.1/classes/ActiveRecord/Transactions/ClassMethods.html). -- OpenProject uses a LogRage formatter for flexible, yet easily parseable formats +- OpenProject uses a LogRage formatter for flexible, yet easily parsable formats @@ -280,7 +280,7 @@ OpenProject includes a number of external dependencies both in Ruby as well as i **Guidelines** - *Automate Updates*: Use and maintain automated tools such as Dependabot and workflows that check for dependency updates regularly, and run tests when updates are available. Before updating the dependencies, review its changelog or release notes to understand changes and potential impacts on your application. -- *Manual update checking:* For pinned versions, use `npm outdated`, `bundle outdated` or `npm-check-updates `to ensure you staay on top of new versions and see if breaking changes ocurred. +- *Manual update checking:* For pinned versions, use `npm outdated`, `bundle outdated` or `npm-check-updates `to ensure you stay on top of new versions and see if breaking changes occurred. - *Lockfile integrity*: Use `package-lock.json` and `Gemfile.lock` to pin exact version for a released version of OpenProject, ensuring that all environments use the same versions. - *Stay Informed*: Subscribe to mailing lists, newsletters, or vulnerability databases to receive timely information on crucial updates or security patches so that updates can be performed as fast as possible. - *Vet new dependencies*: Before adding a new gem or package, research its maintenance history, last update, known vulnerabilities, and community reviews. Check if it's actively maintained, and evaluate all the alternatives. @@ -296,7 +296,7 @@ https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_ ## Packaging and containerization -Packaging and containerization are critical artefacts in the delivery pipeline of OpenProject. They encapsulate the application and its environment, ensuring consistent operation across different systems and infrastructures. These artefacts need to provide a secure and stable default for maintaining and upgrading OpenProject. +Packaging and containerization are critical artifacts in the delivery pipeline of OpenProject. They encapsulate the application and its environment, ensuring consistent operation across different systems and infrastructures. These artifacts need to provide a secure and stable default for maintaining and upgrading OpenProject. Properly managed packaging and containerization pipelines ensure smooth installations, upgrades, and scaling, enhancing the deployment process and - as a result - the overall user experience. This section highlights risks connected to improper containerization or packaging as well as our main objectives and best practices to provide a secure, efficient, and reliable software delivery process. diff --git a/docs/development/concepts/state-management/README.md b/docs/development/concepts/state-management/README.md index 50b13ef965a0..4c0d374c4999 100644 --- a/docs/development/concepts/state-management/README.md +++ b/docs/development/concepts/state-management/README.md @@ -161,4 +161,4 @@ This might then look like the following, with green color for added objects, and ## Discussions - In contrast to a `Store` concept of redux, the States and state groups do not have any concept of data immutability. As a caller you will need to ensure that. In OpenProject, many of the states are in fact mutable due to historic reasons and the fact that complex class instances are passed around that cannot be easily shallow copied. This will need to be refactored in the future. -- As the reactivestates library was primarily developed for us, we may need to take over its code or move to a different state management concept altogether. The recent developments in `ngxs` look very promising. +- As the `reactivestates` library was primarily developed for us, we may need to take over its code or move to a different state management concept altogether. The recent developments in `ngxs` look very promising. diff --git a/docs/development/concepts/stimulus/README.md b/docs/development/concepts/stimulus/README.md index fab16b7da834..8f735eaf45f0 100644 --- a/docs/development/concepts/stimulus/README.md +++ b/docs/development/concepts/stimulus/README.md @@ -11,7 +11,7 @@ keywords: Stimulus, Ruby on Rail, Hotwire In a decision to move OpenProject towards the [Hotwire approach](https://hotwired.dev/), we introduced [Stimulus.js](https://stimulus.hotwired.dev) to replace a collection of dynamically loaded custom JavaScript files used to sprinkle some interactivity. -This guide will outline how to add controllers and the conventions around it. This is _not_ a documentation of stimulus itself. Use their documentation instead: https://stimulus.hotwired.dev/ +This guide will outline how to add controllers and the conventions around it. This is _not_ a documentation of stimulus itself. Use their documentation instead: https://stimulus.hotwired.dev @@ -52,7 +52,7 @@ You need to take care to prefix all actions, values etc. with the exact same pat -### Requring a page controller +### Requiring a page controller If you have a single controller used in a partial, we have added a helper to use in a partial in order to append a controller to the `#content`tag. This is useful if your template doesn't have a single DOM root. For example, to load the dynamic `project-storage-form` controller and provide a custom value to it: diff --git a/docs/development/contribution-documentation/documentation-process/README.md b/docs/development/contribution-documentation/documentation-process/README.md index baee68dc04c9..1962c6a0c252 100644 --- a/docs/development/contribution-documentation/documentation-process/README.md +++ b/docs/development/contribution-documentation/documentation-process/README.md @@ -15,10 +15,10 @@ This guide describes how to contribute to the OpenProject documentation, includi This guide aims to help users that are new to Git and Markdown to contribute to the OpenProject documentation. There are a two very helpful tools that makes it extremely easy to contribute to OpenProject: -| Tool | Purpose of this tool | Website and download | -| ------------------ | ------------------------------------------------------------ |----------------------------------------------------| -| **Typora** | Typora is an application that enables you to easily edit markdown files. The markdown file format is used for the OpenProject documentation which allows you to focus on the content instead of the formatting. | [typora.io](https://typora.io/) | -| **GitHub Desktop** | Desktop is an application that enables you to interact with GitHub using a GUI instead of the command line or a web browser. | [desktop.github.com](https://desktop.github.com/) | +| Tool | Purpose of this tool | Website and download | +| ------------------ | ------------------------------------------------------------ |--------------------------------------------------| +| **Typora** | Typora is an application that enables you to easily edit markdown files. The markdown file format is used for the OpenProject documentation which allows you to focus on the content instead of the formatting. | [typora.io](https://typora.io) | +| **GitHub Desktop** | Desktop is an application that enables you to interact with GitHub using a GUI instead of the command line or a web browser. | [desktop.github.com](https://desktop.github.com) | ## Step 1: Create user account on GitHub.com @@ -26,7 +26,7 @@ You need an account on GitHub.com to contribute to the OpenProject documentation ## Step 2: Install Typora -You can download the installer from the [Typora website](https://typora.io/#download). Follow the prompts to complete the installation. In case you need more information there are very detailed [help](https://support.typora.io/) for each supported operating systems [Linux](https://support.typora.io/Typora-on-Linux/), [macOS](https://support.typora.io/Typora-on-macOS/) and [Windows](https://support.typora.io/Typora-on-Windows/). +You can download the installer from the [Typora website](https://typora.io). Follow the prompts to complete the installation. In case you need more information there are very detailed [help](https://support.typora.io/) for each supported operating systems [Linux](https://support.typora.io/Typora-on-Linux/), [macOS](https://support.typora.io/Typora-on-macOS/) and [Windows](https://support.typora.io/Typora-on-Windows/). ## Step 3: Install GitHub Desktop @@ -52,7 +52,7 @@ After authenticating your account, you are ready to manage and contribute to pro ## Step 5: Fork the OpenProject repository -If you are an external contributor you don't have write permissions on the repository [https://github.com/opf/openproject](https://github.com/opf/openproject). In this case you first need to fork the repository by clicking the button **[Fork](https://github.com/opf/openproject/fork)**. This basically means that you have your own copy of the repository on GitHub.com. Since it is your own repository you have write privileges here. +If you are an external contributor you don't have write permissions on the repository [https://github.com/opf/openproject](https://github.com/opf/openproject). In this case you first need to fork the repository by clicking the button [Fork](https://github.com/opf/openproject/fork). This basically means that you have your own copy of the repository on GitHub.com. Since it is your own repository you have write privileges here. ![fork openproject](fork-openproject.png) diff --git a/docs/development/contribution-documentation/documentation-style-guide/README.md b/docs/development/contribution-documentation/documentation-style-guide/README.md index 2aaafa1b6f12..a90a5206ffff 100644 --- a/docs/development/contribution-documentation/documentation-style-guide/README.md +++ b/docs/development/contribution-documentation/documentation-style-guide/README.md @@ -304,7 +304,7 @@ instead of: ## Headings -- Add only one H1 in each documentation page, by adding # at the beginning of ithe headline (when using Markdown). +- Add only one H1 in each documentation page, by adding # at the beginning of the headline (when using Markdown). - Start with an H2 (##) and respect the order H2 > H3. Never skip the hierarchy level, such as H3 > H2. Do not go lower in the hierarchy than H3 (###). diff --git a/docs/development/create-omniauth-plugin/README.md b/docs/development/create-omniauth-plugin/README.md index 9c4468bc4d2f..866a1a5a7dc2 100644 --- a/docs/development/create-omniauth-plugin/README.md +++ b/docs/development/create-omniauth-plugin/README.md @@ -6,7 +6,7 @@ This page describes how to create an OpenProject plugin to authenticate users vi ## Warning -This howto is in a preliminary state and explains a low-level way to create an OmniAuth authentication plugin for OpenProject. We will provide a more high-level API and update this howto soon. +This how-to is in a preliminary state and explains a low-level way to create an OmniAuth authentication plugin for OpenProject. We will provide a more high-level API and update this how-to soon. ## OpenID Connect diff --git a/docs/development/create-openproject-plugin/README.md b/docs/development/create-openproject-plugin/README.md index 245f722158b3..4a76477dd8bb 100644 --- a/docs/development/create-openproject-plugin/README.md +++ b/docs/development/create-openproject-plugin/README.md @@ -46,7 +46,7 @@ To use your plugin in production you have to add it to your [docker](../../insta You may have a look at some existing OpenProject plugins to get inspiration. It is possible to add new routes, views, models, … and/or overwrite existing ones. -Feel free to ask for help in our [Development Forum](https://community.openproject.com/projects/openproject/forums/7). +Feel free to ask for help in our [Development Forum](https://community.openproject.org/projects/openproject/forums/7). ## Steps to release a plugin diff --git a/docs/development/design-system/README.md b/docs/development/design-system/README.md index 1e1eb7218596..58aa524fd4b9 100644 --- a/docs/development/design-system/README.md +++ b/docs/development/design-system/README.md @@ -2,7 +2,7 @@ sidebar_navigation: title: Primer Design system priority: 998 -description: OpenProject adap Design System +description: OpenProject adapt Design System keywords: Design system, Primer, styles, design, components --- # Design System and Component Libraries diff --git a/docs/development/development-environment-docker-macos/README.md b/docs/development/development-environment-docker-macos/README.md index a8713ce26edd..b20f3065fedd 100644 --- a/docs/development/development-environment-docker-macos/README.md +++ b/docs/development/development-environment-docker-macos/README.md @@ -16,7 +16,7 @@ Container operations are slower than they would be in a native Linux environment As Docker runs in a virtual machine, a shared filesystem is needed and applications such as OpenProject with large number of files may experience performance drawbacks. -[Switching to VirtioFS filesystem implementaion](https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac/) can help improve the file system performance. Although Virtio FS is available on [Docker Desktop](https://docs.docker.com/desktop/install/mac-install/), [Orbstack + VirtioFS](https://orbstack.dev/) provides a more consistent experience in performance and resource usage; significantly less than docker desktop + VirtioFS. [According to OrbStack](https://docs.orbstack.dev/architecture#docker), the overall architecture is similar to Docker Desktop but more specialized and lightweight. +[Switching to VirtioFS filesystem implementation](https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac/) can help improve the file system performance. Although Virtio FS is available on [Docker Desktop](https://docs.docker.com/desktop/install/mac-install/), [Orbstack + VirtioFS](https://orbstack.dev/) provides a more consistent experience in performance and resource usage; significantly less than docker desktop + VirtioFS. [According to OrbStack](https://docs.orbstack.dev/architecture#docker), the overall architecture is similar to Docker Desktop but more specialized and lightweight. The following is a benchmark performed on a _MacBook Pro, 2019 16 GB 2667 MHz DDR4 2.3 GHz 8-Core Intel Core i9_ diff --git a/docs/development/development-environment-docker/README.md b/docs/development/development-environment-docker/README.md index 0ddce05c1725..4c5c88894762 100644 --- a/docs/development/development-environment-docker/README.md +++ b/docs/development/development-environment-docker/README.md @@ -15,7 +15,7 @@ The quickest way to get started developing OpenProject is to use the docker setu And nothing else! -## Quickstart +## Quick start To get right into it and just start the application you can just do the following: diff --git a/docs/development/git-workflow/README.md b/docs/development/git-workflow/README.md index 1a51f25a5fdb..5c4d679a8937 100644 --- a/docs/development/git-workflow/README.md +++ b/docs/development/git-workflow/README.md @@ -91,7 +91,7 @@ git push origin Create a pull request against a branch of of the `opf/openproject` repository, containing a **clear description** of what the pull request attempts to change and/or fix. -If your pull request **does not contain a description** for what it does and what it's intentions are, we will reject it. If you are working on a specific work package from the [list](https://community.openproject.com/projects/openproject/work_packages), please include a link to that work package in the description, so we can track your work. +If your pull request **does not contain a description** for what it does and what it's intentions are, we will reject it. If you are working on a specific work package from the [list](https://community.openproject.org/projects/openproject/work_packages), please include a link to that work package in the description, so we can track your work. The core contributor team will then review your pull request according to our [code review guideline](../code-review-guidelines/). Please note that you can add commits after the pull request has been created by pushing to the branch in your fork. diff --git a/docs/development/git-workflow/branching-diagram.drawio b/docs/development/git-workflow/branching-diagram.drawio deleted file mode 100644 index 82b62d6893ff..000000000000 --- a/docs/development/git-workflow/branching-diagram.drawio +++ /dev/null @@ -1 +0,0 @@ -7V1bd6M2EP41fowPEojLYxIn3Xa3PXuatnt5wyBsTrBxMd44+fUVIGGQxMXYYLyN87CWkAVovhl9MxppJ+r9av9LZG+Wv4cuDiZQcfcTdTaBEOg6Iv8kNa9ZjWUqWcUi8l3a6FDx5L/hrJL+bLHzXbwttYvDMIj9TbnSCddr7MSlOjuKwpdyMy8Myjfd2AssVDw5diDWfvHdeElrgaIcLnzA/mJJb20iemFls8a0Yru03fClUKU+TNT7KAzj7Ntqf4+DZOzYsGS/e6y4mj9YhNdxmx/s751Pzhdt7Tnm5+XNB7Tdz7/eQD3r5ocd7Ogb06eNX9kQLKJwt6HNcBTjvWzg7TlrrogPBvLXJTDB4QrH0StpQjtS2VhShEBTy8ovhwFHGsXDsjDWENGnt6mQF3nfh3EgX+hQHDMsWvOwkFFZuzjpRZmody9LP8ZPG9tJrr4QVSB1y3hF7joD5KsXrmOKbZQU/SC4D4MwSrtSH9MPqd/GUfiMC1f09EOuVI5/cZxrRCyO/iCj+2X99Nufxjo2vv12p9r7X/96e4tuGERKo6sH5L5384h8W8TpC9MaoUJoQh6i0IoTE167t4kdICUnsLdb3ylLJhtypttQJgQTztVUCLkKJxLfPuPYWdIC3vvxV9pj8v1bUj9FtDTbF5rNXmmBA4GLsOlq+Su0lCtUsFuyYJVqdqNMFZUJuih8RZQ9q4twYMf+j7ItlOGB3vVz6JNnzm8JmfGnmq1ZU8MqfBAq97gNd5GDaSdFU8b1i7SyxWCPy/qJ7WiB45p+WMPQ87a41CYFdD54J1gQeF0Y1x0Tz71ajPN4tbHpJTciMI1evx4AnxS/McAnhQP80xLDvxS+RwA/k3JNQ2CNTSE0WFYIoHJdtNUAoSP9oiogNfNANoletwqcw8wztTkS7Rkysobf0dtihvcfn0zz1X96Cn0XLfJZ9YrmA6ByqO06AQgdjWAGEJn1CpOHEpFL5PXJnhO3qQRYO/AX6wTNBB6YYOcu4X4+cUxu6YWV77pJH3cR3vpvlH8ngNskr5i+HrqboJmEfZLio73yg2T07smQ++QGUPkDv9QRzTZE/ygCyug/IkBUoAIMXTc1QwMlyUJTmRKmAA0NIUVHinYs5kyr1N8NgBzpOAsCpBoJ1OsygJZuqHY9z+WMGQaEtRoFw6gUDWOtWSywBs2yirwhNUxmA3lIS59x5BMhJepRYBSdCIRcgNroTSpQOZNqdDSpfEdQUS9pUv8Jvn9A+Nn7ePv9w68w9n63/tjdgOvSJw/ZcxWdnVCcQBxc7H55fv7b+TQjsvi4Drx75R82qiMGuaacCeQCb+A7GgHIRccxJkbuRHwCGT5VoKlIO8be65qhm4m9Lwe/jkTkMUjTdIObv8GQyONsosqFxLriTuhoWNzVmQGZcS0hT/93l4SsUxZ5s01Z5S1pAJTNPrOt9DqzrC7+0crgHiAFWsRTy7gULa0U8Nos+avj0gWmDDogW6DNldiucN8LqDYlqIacueoSkpU7j6cJ36qQvYfteBcR46XMI3vtLPG2dyjklLQeCjnXbQMFazgkQOXCSAAyO8DPPUHgb7a4WTZlQbaUSJVAe5NAzmZqZAAHlUGL5aefTAaghR4MK4Nqi3hhX6Nech1899wTL3rhhWB+lQvOfJcpACwGQH+ps3KF708KJ/rujeFQpkPNTv74/R9gcMoBOvo/alNHw/JQuTxQT0SUCAHbxGLCRwCmSu9EJA/015vcfNXh8pwUcPMggJfmIqYAhd2aitFNRJ3KkZMZedlYZj7ZmK/DNeakRavah9xlSCi7xCWhFySosyJ9YGXSKh4/hLQlPogukTZvMs7ng8jSQoZgPbkKVmlwG9XUOMGmdyKP568XExofzEp/heRRZzegT9nCFpo8KJuC46VT8BjS5HkedOqSHkADaRLA94hu79LQxZFgaOQ117AejM61eAGMqQVNS4XANAF5C5OjOVB6eUSsB4pT3fGsR6A8892CXPP8/QCBF890sNPMd+Ym0pAyCr4DzTL8TImRlKG/NyupilZS4DtT8M54usqbTz+RzIrGkIxHrQ67JiPURu91mdqnOCl6OFlvVdNlH5wqz5mtynJto/46z5oGJU3ahTmTemXpI2dKIQWwxKemwNCbAlGyXJA8IyVfTW/OSTkSWq1T8hq5GjMEY+ZqgDOeZkeuBlF5RRdo1lTXlcPnouRMvmFBoojV+kPnVtfeLnNjWdCkruFWQd/u008PngOTdCMaL7EG3zlnVAAwb7grgHYuEMms+U8MIubQjBJEVlcMMXrIPAZrasLChpZ2putciGqzStgaUWdDxigFzu8Qah1YQPX99Cxh6WL8iClg7ty3D6ixqMGBr2mGVWBshADWcrYzrCWOmHWpujZFZoEcaeU5TIHdcK027cQYAeuSps8P4bv2vR4wxAqAxme6DrgCIJemGOD88+HTw+3TwyTfIT+2kFZtmIqLU/QmSSgk5guC1AYVpFU5J50etALvQavT9HzAoJXcVRYZy7uatxKkWhYkG8hLqTmbbCvXIuB77kV3m25cLvdCLm0x6eqQu+3iHzgINytMueC7xDtIHDTnt+aHCg0j8poV53ff8v/gW1o9+ZbWqHxLeXSymsSelmS6zTbIJzmmRVU5ocf+E1UZu21Jji+fuMGnLkpIb195qtI3uDJL2sNZP01pb91XY7ufD1Rcnq0NMBXXMmpc3jHZbo3PnAP6VCvYcsBt3m99rhBCU1ieB/TkeI5Cz2xjxYiOWpEZ8yHiBfl+0qrtqBWG7fRDU4QEX4kD0ZffLz9r68oOezrHWSdH2LKudvOcNrB291PzYWr1gLwIf61wqU4mrMZFd+fLh1900MdwnBRzsAc8TiqzNHVARLpRnsLYZs5Tt+FxvVpTPpG8R/m3OKj3J5vj+G3Zl5/j/n88Q+OTpi4tg7FvJHo/V3Uc56p2PKhnZOeqyuUk5kWIu0REy/RTRur7MHlM5P3vEiHFw/n/GTwO/4mC+vAf \ No newline at end of file diff --git a/docs/development/product-development-handbook/README.md b/docs/development/product-development-handbook/README.md index 6427be2ebf54..a838a20e66e8 100644 --- a/docs/development/product-development-handbook/README.md +++ b/docs/development/product-development-handbook/README.md @@ -108,10 +108,10 @@ The specification phase may not be necessary for bug fixes, minor design changes | Involved | Output | |----------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------| -| - Entire team (incl. PMs, UX researcher, developers, etc.)
- Customers
- Community
- Other stackholders | - Feature request in Wish List
- Bugs in Bug backlog | +| - Entire team (incl. PMs, UX researcher, developers, etc.)
- Customers
- Community
- Other stakeholders | - Feature request in Wish List
- Bugs in Bug backlog | -The [OpenProject Wish List](https://community.openproject.com/projects/openproject/work_packages?query_id=180) is used to collect a backlog of potential validation opportunities. Requirements may come from customers, internal usage, support messages, community forums or through other communication channels. +The [OpenProject Wish List](https://community.openproject.org/projects/openproject/work_packages?query_id=180) is used to collect a backlog of potential validation opportunities. Requirements may come from customers, internal usage, support messages, community forums or through other communication channels. Requirements should be captured as a **Feature** or **Epic** (for larger features which we can be broken down into smaller features) and focus on describing the customer’s problem rather than jumping ahead to a solution. For a guideline on how to report feature requests, refer to the [Feature request guideline](../../development/submit-feature-idea/). Technical maintenance issues and refactorings can be tracked as **Code Maintenance**. @@ -141,7 +141,7 @@ Oftentimes, the process stops for a time at this phase. This is because the RICE Those features judged positively by the PM: 1. PM creates an Opportunity Canvas for requirements with a moderate to high level of uncertainty (> 80%) or for large requirements (effort > 1 week). -2. PM assigns features to the product backlog (only features with RICE values are allowed in the [product backlog](https://community.openproject.com/projects/openproject/work_packages?query_id=2261)). +2. PM assigns features to the product backlog (only features with RICE values are allowed in the [product backlog](https://community.openproject.org/projects/openproject/work_packages?query_id=2261)). 3. For requirements which require an Opportunity Canvas: PM and UX Researcher meet to discuss appropriate research methodology to collect user feedback. 1. PM and UX Researcher schedule interviews with relevant users. 2. PM and UX Researcher document interview results in opportunity canvas. @@ -253,16 +253,16 @@ Changes to the technical documentation, e.g API documentation, are done in paral The Implementation and Quality Assurance phase can run partly in parallel for those parts of a feature already implemented and may loop since implemented features may need to be adjusted. -When all features, bugs have been tested successfully, regression testing was performed successfully and no critical errors are reported on community.openproject.com OpenProject environment, new product version is prepared for release. +When all features, bugs have been tested successfully, regression testing was performed successfully and no critical errors are reported on community.openproject.org OpenProject environment, new product version is prepared for release. ### 3.2.3 Building phase 4: Acceptance test -| Involved | Output | -| --------------------------------------------------------- | :----------------------------------------------------------- | -| - Product manager
- (possibly) External Stakeholders | Accepted feature (acceptenace succeeded) OR
Changes necessary (acceptance failed) | +| Involved | Output | +|---------------------------------------------------------|:------------------------------------------------------------------------------------| +| - Product manager
- (possibly) External Stakeholders | Accepted feature (acceptance succeeded) OR
Changes necessary (acceptance failed) | 1. PM tests features to see if requirements are met, discusses necessary changes with developer (acceptance test) (status: “closed”). -1. If external stakeholders are involved and depending on any additional agreements between OpenProject and the external stakeholders, an additional presentation or feature presentation is performed as part of the acceptance testing. The result of this test may result in additional iterations of the steps Buidling phase 1 - 3. +1. If external stakeholders are involved and depending on any additional agreements between OpenProject and the external stakeholders, an additional presentation or feature presentation is performed as part of the acceptance testing. The result of this test may result in additional iterations of the steps Building phase 1 - 3. If required changes are identified or predefined acceptance criteria is not met, the acceptance test is failed, the respective work packages are returned ot the developers/product team for additional changes or specification work @@ -278,7 +278,7 @@ If required changes are identified or predefined acceptance criteria is not met, | Involved | Output | |-----------------------------------------|:--------------------------------------------------------| -| - QA
- Developers
- DevOps | Release candidate deployed in community.openproject.com | +| - QA
- Developers
- DevOps | Release candidate deployed in community.openproject.org | Developed features are bundled into a version that is released to the public via different channels (package, SaaS, docker, ...). This means that not every feature will receive its own release but rather that a feature's release will happen together with other features as well as bugfixes. This offers the opportunity to add another quality assurance step. At the end of building multiple features, the application in its entirety is tested again and bugs identified can be fixed. This includes bugs that are in the newly developed feature, regressions caused by the feature development as well as bugs originating in former versions. @@ -290,7 +290,7 @@ Developed features are bundled into a version that is released to the public via * Tester adjusts status on errors (status: “test failed"). * Tester adjusts status when no errors are found (status: “closed"). 6. Developer fixes bugs that were not fixed successfully. -7. DevOps deploys release candidate on community.openproject.com. +7. DevOps deploys release candidate on community.openproject.org. 8. DevOps monitors for failures. 9. QA vets incoming bug reports and checks if they need to be fixed before the release. @@ -340,7 +340,7 @@ The metrics defined in the Opportunity Canvas are referenced to evaluate this. The entire team documents possible improvements for the next release. -## 4. Artefacts +## 4. Artifacts ### 4.1 Version/Release @@ -377,7 +377,7 @@ For OpenProject, Reach refers to the number of users and customers who will bene The reach ranges from 0.5 for minimal reach (less than 5% of users) to 10.0 for requirements that impact the vast majority of users (80% or more). -Data sources to estimate this may include queries and user data of an associated feature (e.g. number of users using the “Work packages” module on community.openproject.com to determine the value for a new work package requirement), qualitative customer interviews, customer requests, comments on work packages, surveys, etc.. +Data sources to estimate this may include queries and user data of an associated feature (e.g. number of users using the “Work packages” module on community.openproject.org to determine the value for a new work package requirement), qualitative customer interviews, customer requests, comments on work packages, surveys, etc.. diff --git a/docs/development/profiling/README.md b/docs/development/profiling/README.md index c340639c8757..980c39d5ee4b 100644 --- a/docs/development/profiling/README.md +++ b/docs/development/profiling/README.md @@ -34,7 +34,7 @@ This will start the application in development mode, which oftentimes is suffici To avoid this, the application can be started in production mode but before this can happen, the code needs to be adapted slightly: * Search for the places where `OPENPROJECT_RACK_PROFILER_ENABLED` is referenced within the code and remove the references to `Rails.env.development?` from the conditions. At the time of writing, this needs to be done at: - * `config/initializers/rack_profilier.rb` + * `config/initializers/rack_profiler.rb` * `config/initializers/secure_headers.rb` * Read the profiling gems to your `Gemfile`/`Gemfile.local`/`Gemfile.profiling` since they would otherwise only be available in the development environment: ```ruby diff --git a/docs/development/running-tests/README.md b/docs/development/running-tests/README.md index 107307a984b7..f3902b5042ee 100644 --- a/docs/development/running-tests/README.md +++ b/docs/development/running-tests/README.md @@ -26,9 +26,9 @@ The following types of functional tests are used at OpenProject. | ----------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | [Unit tests](#unit-tests) | Test individual components of OpenProject using RSpec. Involves mocking or stubbing dependent components | e.g, Model specs under `spec/models` | | [Integration tests](#integration-tests) | Testing the integration of multiple components, but still in their isolation without testing the entire software stack | controller, requests, service integration specs, e.g., `spec/services/**/*_integration_spec.rb` | -| [Feature / end-to-end tests](#feature-tests) | Tests of the entire Rails application stack and all necessary dependent components (routing, controllers, database access, permissions, and responses). Performed in `RSpec` using `Capybara` feature specs.
External third-party service requests and responses are recorded for testing (e.g., nextcloud integration) | `spec/features` | +| [Feature / end-to-end tests](#feature-tests) | Tests of the entire Rails application stack and all necessary dependent components (routing, controllers, database access, permissions, and responses). Performed in `RSpec` using `Capybara` feature specs.
External third-party service requests and responses are recorded for testing (e.g., nextcloud integration) | `spec/features` | | [Smoke tests](#smoke-tests) | Automated and manual tests to ensure the main application features and happy paths are working as expected (e.g., packaging or dockerization tests, manual smoke tests by QA) | Docker test workflow under `.github/workflows/docker.yml` | -| [Sanity and regression tests](#sanity-and-regression-tests) | Manual testing of affected or relevant components made after changes or bug fixes to the application. Performed by QA. | e.g., testing the critical path of creating work packages after a bug fix has been made in that data model
Manual execution of test plan defined by QA | +| [Sanity and regression tests](#sanity-and-regression-tests) | Manual testing of affected or relevant components made after changes or bug fixes to the application. Performed by QA. | e.g., testing the critical path of creating work packages after a bug fix has been made in that data model
Manual execution of test plan defined by QA | | [Acceptance tests](#acceptance-tests) | Final phase of manual testing where the system is evaluated against predefined requirements to ensure it meets user and stakeholder expectations before deployment. | Manual interactions with customers and stakeholders to identify whether we're building the correct part | @@ -235,7 +235,7 @@ Examples for non-functional test cases: software should be compatible with most | [Security tests](#security-tests) | Automated or manually crafted test cases for evaluating application security by assuming the role of an attacker, e.g., by providing malicious user input or trying to break the application. | Statical and automated code scanning (CodeQL, Brakeman), defined test cases for verifying security related input as defined in the [secure coding guidelines](../concepts/secure-coding/). | | [Installation / upgrade tests](#installation-and-upgrade-tests) | Automated and manual installation tests of OpenProject | Packaged installation build tests for various distributions, Docker installation smoke tests for verifying correct startup and basic operation of the container. | | [Usability tests](#usability-testing) | Evaluating the UX of the application as defined and in comparison to the requirements. Involves QA, Product, Customer. | e.g., verifying common use-cases as defined in the requirements in an early development stage (such as a PullPreview deployment), or on a pre-released version of the application. | -| [Accessibility tests](#accessibility-tests) | Evaluating the accessibility of the application according to [WCAG AA](https://www.w3.org/WAI/WCAG2AA-Conformance) and similar standards | Performing automated keyboard navigation tests.
Manually executing screen readers to ensure application can be used. | +| [Accessibility tests](#accessibility-tests) | Evaluating the accessibility of the application according to [WCAG AA](https://www.w3.org/WAI/WCAG2AA-Conformance) and similar standards | Performing automated keyboard navigation tests.
Manually executing screen readers to ensure application can be used. | @@ -283,7 +283,7 @@ Automated or manual security tests for OpenProject are evaluating common weaknes - OpenProject uses [Docker Scout](https://www.docker.com/products/docker-scout/) for the Docker images hosted on Docker Hub for automated vulnerability scanning and analysis of the built container, including all dependencies. - Follow our [secure coding guidelines](../concepts/secure-coding/) when proposing changes to the application, especially when modifying or adding features to authentication, authorization, 2FA, or sensitive data operations. - If possible, automate security tests for common vulnerabilities for input in your development. -- Train on recent vulnerabilities and checklists such as [OWASP Top Ten](https://owasp.org/www-project-top-ten/) or [OWASP cheat sheets](https://cheatsheetseries.owasp.org/index.html) to stay up-to-date on security testing and extend our security test suite with new information. +- Train on recent vulnerabilities and checklists such as [OWASP Top Ten](https://owasp.org/www-project-top-ten/) or [OWASP cheat sheets](https://cheatsheetseries.owasp.org) to stay up-to-date on security testing and extend our security test suite with new information. @@ -840,7 +840,7 @@ OPENPROJECT_CLI_PROXY='http://:4200' ./bin/rails s -b 0.0.0.0 -p ## Legacy LDAP tests OpenProject supports using LDAP for user authentications. To test LDAP -with OpenProject, load the LDAP export from test/fixtures/ldap/test-ldap.ldif +with OpenProject, load the LDAP export from `test/fixtures/ldap/test-ldap.ldif` into a testing LDAP server. Test that the ldap server can be accessed at 127.0.0.1 on port 389. diff --git a/docs/development/style-guide/frontend/README.md b/docs/development/style-guide/frontend/README.md index 1d1c1a122af8..1bb4c9fbb0d0 100644 --- a/docs/development/style-guide/frontend/README.md +++ b/docs/development/style-guide/frontend/README.md @@ -121,7 +121,7 @@ means that the respective collections and entities have to be refreshed from the 2. Changing the type of a work package in the split view changes the collection that is shown in the table, since the work package will be filtered out. -For this usecase, we have implemented a global actions service. You can dispatch actions here, and other parts of the +For this use-case, we have implemented a global actions service. You can dispatch actions here, and other parts of the application can listen to these actions. Think of it like a global event bus. These actions are typed. To reduce server requests, side effects **should be** be calculated in the frontend. If this is impossible, the updating store **must** send out a global event to notify other parts that the specific event occurred. diff --git a/docs/development/translate-openproject/README.md b/docs/development/translate-openproject/README.md index b7ea53095181..4ba689aaae00 100644 --- a/docs/development/translate-openproject/README.md +++ b/docs/development/translate-openproject/README.md @@ -18,7 +18,7 @@ In order to translate OpenProject, we use [CrowdIn](https://crowdin.com/projects We highly appreciate the help of anyone who wants to translate OpenProject to additional languages. In order to provide translations not only for the OpenProject core but also for the plugins, we created several translation projects on CrowdIn: -* Translate OpenProject +* [Translate OpenProject](https://crowdin.com/project/openproject) To help us translate OpenProject, please follow the links above and follow the instructions below. @@ -68,4 +68,4 @@ If you are interested in becoming a proof reader, please contact one of the proj If your language is not listed in the list of CrowdIn languages, please contact our project managers or send us an email so we can add your language. -Find out more about our development concepts regarding translations [here](../concepts/translations). \ No newline at end of file +Find out more about our development concepts regarding translations [here](../concepts/translations). diff --git a/docs/enterprise-guide/enterprise-cloud-guide/create-cloud-trial/README.md b/docs/enterprise-guide/enterprise-cloud-guide/create-cloud-trial/README.md index f50fd82d3394..692b9fdfd07b 100644 --- a/docs/enterprise-guide/enterprise-cloud-guide/create-cloud-trial/README.md +++ b/docs/enterprise-guide/enterprise-cloud-guide/create-cloud-trial/README.md @@ -24,7 +24,7 @@ Click the Start Free Trial button. ![create OpenProject trial](image-20191202165638244.png) -You will then be asked to [**create an OpenProject account**](../../../getting-started/sign-in-registration/#create-a-new-account). +You will then be asked to [create an OpenProject account](../../../getting-started/sign-in-registration/#create-a-new-account). 1. Enter your first and last **name**. 2. Enter your **e-mail address**. diff --git a/docs/enterprise-guide/support/README.md b/docs/enterprise-guide/support/README.md index e9f9c3216c63..5e70d2719b10 100644 --- a/docs/enterprise-guide/support/README.md +++ b/docs/enterprise-guide/support/README.md @@ -26,7 +26,7 @@ Community support is covered to the best of our ability by the active internatio | Service hours | Support channels | Support services | | ------------- | ------------------------------------------------------------ | ------------------------------------------------------ | -| Best effort | - [Bug reports or Feature requests](https://community.openproject.org/projects/openproject/work_packages)
- [Community forums](https://community.openproject.org/projects/openproject/forums) | - Documentation and user guides
- Tutorial videos | +| Best effort | - [Bug reports or Feature requests](https://community.openproject.org/projects/openproject/work_packages)
- [Community forums](https://community.openproject.org/projects/openproject/forums) | - Documentation and user guides
- Tutorial videos | ### Basic support (cloud and on-premises) @@ -34,7 +34,7 @@ With Basic support, you already have integrated mail support and can reach our e | Service hours | Support channels | Support services | | --------------------------------------------------------- | ---------------------- | ------------------------------------------------------ | -| Mon-Fri, 9:30 - 16:00 CET
Mon-Fri, 9:30 am - 4 pm ET | - Basic E-Mail support | - Documentation and user guides
- Tutorial videos | +| Mon-Fri, 9:30 - 16:00 CET
Mon-Fri, 9:30 am - 4 pm ET | - Basic E-Mail support | - Documentation and user guides
- Tutorial videos | ### Professional support (cloud and on-premises) @@ -42,7 +42,7 @@ The Professional support covers everything from the Basic support. Furthermore, | Service hours | Support channels | Support services | | --------------------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------ | -| Mon-Fri, 9:30 - 17:00 CET
Mon-Fri, 9:30 am - 4 pm ET | - Professional E-Mail support
- Phone support | - Documentation and user guides
- Tutorial videos
- Training material and best practices
- Onboarding training | +| Mon-Fri, 9:30 - 17:00 CET
Mon-Fri, 9:30 am - 4 pm ET | - Professional E-Mail support
- Phone support | - Documentation and user guides
- Tutorial videos
- Training material and best practices
- Onboarding training | ### Premium support (on-premises only) @@ -52,7 +52,7 @@ Onboarding training in the Premium support plan includes onboarding for a perfec | Service hours | Support channels | Support services | | ------------------------------------------------------------ | --------------------------------------------- | ------------------------------------------------------------ | -| Mon-Fri, 9:30 - 17:30 CET
Mon-Fri, 9:30 am - 5:30 pm ET | - Premium E-Mail support
- Phone support | - Documentation and user guides
- Tutorial videos
- Training material and best practices
- Onboarding training
- Remote hands
- Installation support
- Upgrade assistance
- Dedicated onboarding manager (3h) | +| Mon-Fri, 9:30 - 17:30 CET
Mon-Fri, 9:30 am - 5:30 pm ET | - Premium E-Mail support
- Phone support | - Documentation and user guides
- Tutorial videos
- Training material and best practices
- Onboarding training
- Remote hands
- Installation support
- Upgrade assistance
- Dedicated onboarding manager (3h) | ### Corporate support (on-premises only) @@ -60,7 +60,7 @@ The Corporate support covers everything from the Basic, Professional and Premium | Service hours | Support channels | Support services | | --------------------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------ | -| Mon-Fri, 9:30 - 18:00 CET
Mon-Fri, 9:30 am - 6 pm ET | - Corporate E-Mail support
- Phone support | - Documentation and user guides
- Tutorial videos
- Training material and best practices
- Onboarding training
- Remote hands
- Installation support
- Upgrade assistance
- Dedicated onboarding manager (3h)
- Custom plugin support
- Dedicated support engineer | +| Mon-Fri, 9:30 - 18:00 CET
Mon-Fri, 9:30 am - 6 pm ET | - Corporate E-Mail support
- Phone support | - Documentation and user guides
- Tutorial videos
- Training material and best practices
- Onboarding training
- Remote hands
- Installation support
- Upgrade assistance
- Dedicated onboarding manager (3h)
- Custom plugin support
- Dedicated support engineer | ## How to receive Enterprise support diff --git a/docs/faq/README.md b/docs/faq/README.md index e0f5ccf71c07..be9464f0d80b 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -46,10 +46,10 @@ Apart from using OpenProject in the cloud (OpenProject Enterprise cloud) OpenPro Here are resources to get to know OpenProject: - The [overview of our features](https://www.openproject.org/collaboration-software-features) -- Our [English demo video](https://www.youtube.com/watch?v=un6zCm8_FT4) or [German demo video](https://www.youtube.com/watch?v=doVtVArSSvk) to get an overview of Openproject. There are additional videos explaining certain features to be found on our [YouTube channel](https://www.youtube.com/c/OpenProjectCommunity/videos), too. +- Our [English demo video](https://www.youtube.com/watch?v=un6zCm8_FT4) or [German demo video](https://www.youtube.com/watch?v=doVtVArSSvk) to get an overview of OpenProject. There are additional videos explaining certain features to be found on our [YouTube channel](https://www.youtube.com/c/OpenProjectCommunity/videos), too. - The [Getting started guide](../getting-started) and the [User guide](../user-guide) - Our free trial: Click the green button [here](https://www.openproject.org/enterprise-edition) for Enterprise on-premises or go to [start.openproject.com](https://start.openproject.com) for the Enterprise cloud. -- Our [development roadmap](https://community.openproject.com/projects/openproject/roadmap) (to get to know future features) +- Our [development roadmap](https://community.openproject.org/projects/openproject/roadmap) (to get to know future features) - Our [training and consulting offers](https://www.openproject.org/training-and-consulting) ### Can I run OpenProject as a single user? @@ -146,7 +146,7 @@ Please go to [openproject.org/newsletter/](https://www.openproject.org/newslette ## FAQ regarding features -Please find information on the features of OpenProject [here](https://www.openproject.org/collaboration-software-features/) and a comparison between Enterprise on-premises, Enterprise cloud and Community edition [here](https://www.openproject.org/pricing/#features). The community platform to see and [issue](../development/submit-feature-idea/) feature ideas can be found [here](https://community.openproject.com). +Please find information on the features of OpenProject [here](https://www.openproject.org/collaboration-software-features/) and a comparison between Enterprise on-premises, Enterprise cloud and Community edition [here](https://www.openproject.org/pricing/#features). The community platform to see and [issue](../development/submit-feature-idea/) feature ideas can be found [here](https://community.openproject.org). ### Is it possible to use multiple languages in OpenProject? @@ -186,8 +186,8 @@ Yes, you can. Starting with OpenProject 12.4 we implemented date alerts and emai ### Does OpenProject offer resource management? You can [set up budgets](../user-guide/budgets), [set the estimated time in the **Work** field](../user-guide/work-packages/edit-work-package/) of a work package and use the [Assignee board](../user-guide/agile-boards/#choose-between-board-types) to find out how many work packages are assigned to a person at the moment. -Additional resource management features will be added within the next years. You can find the roadmap for future releases [here](https://community.openproject.com/projects/openproject/work_packages?query_id=1993). -More infomation regarding resource management in OpenProject can be found in the [Use Cases](../use-cases/resource-management) section. +Additional resource management features will be added within the next years. You can find the roadmap for future releases [here](https://community.openproject.org/projects/openproject/work_packages?query_id=1993). +More information regarding resource management in OpenProject can be found in the [Use Cases](../use-cases/resource-management) section. ### Does OpenProject offer portfolio management? diff --git a/docs/getting-started/gantt-chart-introduction/README.md b/docs/getting-started/gantt-chart-introduction/README.md index 771c230b7a17..f8519218f411 100644 --- a/docs/getting-started/gantt-chart-introduction/README.md +++ b/docs/getting-started/gantt-chart-introduction/README.md @@ -55,7 +55,7 @@ Click in the at the level of the line of the work package you want to map in the You can change the duration or move the element in the project plan via drag and drop. -![create projectplan](create-projectplan-1571743591204.gif) +![create project plan](create-projectplan-1571743591204.gif) ## Edit a project plan @@ -64,5 +64,5 @@ You can edit a project plan by clicking directly in the table and changing work To change the start and end date or the duration of a work package, click directly in the Gantt chart and change it via drag and drop. All changes will also be tracked in the work packages [Activity](../../user-guide/activity). -![edit the projectplan](edit-projectplan.gif) +![edit the project plan](edit-projectplan.gif) diff --git a/docs/getting-started/invite-members/README.md b/docs/getting-started/invite-members/README.md index f3f77a818b3d..1c3f860dcc5a 100644 --- a/docs/getting-started/invite-members/README.md +++ b/docs/getting-started/invite-members/README.md @@ -29,9 +29,13 @@ In order to see a project and work in it, you have to be a member of a project. ## View members -To view the list of **all project members and their roles** in the project, select Members in the project menu. +To view the list of **all project members and their roles** in the project, select Members in the project menu on the left side. It will open a list of all the project members, including groups and external users, that work packages have been shared with. -![invite members](invite-members.png) +You can use both filters in the left hand menu, as well as the filter options next to the **+ Member** button. + +Please also refer to [Members module guide](../../user-guide/members). + +![invite members](project-members-module.png) ## Add existing users @@ -45,7 +49,7 @@ Type the name of the user, placeholder user or group which you want to add. You Please note that you will have to click on the new member's name or press the Enter key before clicking the Add button. -![search bar for member selection invite members](search-bar-invite-members.png) +![search bar for member selection invite members](invite-new-member.png) ## Invite new members @@ -59,7 +63,7 @@ Type in the email address of the new member. If OpenProject does not find an exi An email invitation will be sent out to the user with a link to [create an account](../sign-in-registration/#create-a-new-account) for OpenProject. -![invite new member via email in the members module](invite-new-member-via-email.png) +![invite new member via email in the members module](invite-new-member-email.png) **Invite from header** @@ -67,19 +71,19 @@ In the header menu that is always present, you find a green button that allows y ![green button for project creation](create-project-button.png) -Once clicked on **Invite user**, a pop up comes up where you decide to which project you invite the new members and which roles they get. +Once you clicked the **Invite user**, a dialogue will open. Here you can select the project, to which you want to invite new members and which roles they get. ![invite user pop up](invite-user-pop-up.png) **Invite within a work package** -When you are working in the work package table, you can also invite users from there. For example when you want to set an assignee for a work package that has not got access to OpenProject yet, you can select Invite from the drop down. The same applies to accountables or custom fields for your project. +When you are working in the work package table, you can also invite users from there. For example when you want to set an assignee for a work package that has not got access to OpenProject yet, you can select the Invite option from the drop down menu. The same applies to the column Accountable or custom fields for your project. ![invite user over assignment](invite-user-over-assignment.png) You can now collaborate with your team in OpenProject. Newly invited users will be shown with a letter symbol next to their name. -Please note that removing a member who has not accepted the invite yet from a project will lead to the deletion of this user, which can't be reversed. +> Please note that removing a member who has not accepted the invite from a project yet will lead to the deletion of this user, which can't be reversed. diff --git a/docs/getting-started/invite-members/create-project-button.png b/docs/getting-started/invite-members/create-project-button.png index 9364bfd3de54..1e7579161468 100644 Binary files a/docs/getting-started/invite-members/create-project-button.png and b/docs/getting-started/invite-members/create-project-button.png differ diff --git a/docs/getting-started/invite-members/invite-members.png b/docs/getting-started/invite-members/invite-members.png deleted file mode 100644 index 0c1423759f49..000000000000 Binary files a/docs/getting-started/invite-members/invite-members.png and /dev/null differ diff --git a/docs/getting-started/invite-members/invite-new-member-email.png b/docs/getting-started/invite-members/invite-new-member-email.png new file mode 100644 index 000000000000..9244cac0fd30 Binary files /dev/null and b/docs/getting-started/invite-members/invite-new-member-email.png differ diff --git a/docs/getting-started/invite-members/invite-new-member-via-email.png b/docs/getting-started/invite-members/invite-new-member-via-email.png deleted file mode 100644 index 3a3fd48a8ad6..000000000000 Binary files a/docs/getting-started/invite-members/invite-new-member-via-email.png and /dev/null differ diff --git a/docs/getting-started/invite-members/invite-new-member.png b/docs/getting-started/invite-members/invite-new-member.png new file mode 100644 index 000000000000..ca3187700312 Binary files /dev/null and b/docs/getting-started/invite-members/invite-new-member.png differ diff --git a/docs/getting-started/invite-members/invite-user-over-assignment.png b/docs/getting-started/invite-members/invite-user-over-assignment.png index 233dd9473c7e..2766aab005cf 100644 Binary files a/docs/getting-started/invite-members/invite-user-over-assignment.png and b/docs/getting-started/invite-members/invite-user-over-assignment.png differ diff --git a/docs/getting-started/invite-members/invite-user-pop-up.png b/docs/getting-started/invite-members/invite-user-pop-up.png index 63cb50828a0a..b2c4bb75556c 100644 Binary files a/docs/getting-started/invite-members/invite-user-pop-up.png and b/docs/getting-started/invite-members/invite-user-pop-up.png differ diff --git a/docs/getting-started/invite-members/project-members-module.png b/docs/getting-started/invite-members/project-members-module.png new file mode 100644 index 000000000000..2cd07dbbad43 Binary files /dev/null and b/docs/getting-started/invite-members/project-members-module.png differ diff --git a/docs/getting-started/invite-members/search-bar-invite-members.png b/docs/getting-started/invite-members/search-bar-invite-members.png deleted file mode 100644 index 317ea06d7857..000000000000 Binary files a/docs/getting-started/invite-members/search-bar-invite-members.png and /dev/null differ diff --git a/docs/getting-started/my-account/README.md b/docs/getting-started/my-account/README.md index bfb3b72251ec..4c764c287746 100644 --- a/docs/getting-started/my-account/README.md +++ b/docs/getting-started/my-account/README.md @@ -30,7 +30,7 @@ To open your personal settings in OpenProject, click on your user icon in the to Choose **My account**. -![my account profil information](openproject_open_my_account_page.png) +![my account profile information](openproject_open_my_account_page.png) ## Edit your user information To change your email address or your name, navigate to **Profile** on the left side menu of **My account** page. @@ -106,7 +106,7 @@ Press the blue **Save** button in order to confirm the password changes. In order to activate the two-factor authentication for your OpenProject installation, navigate to your **My account** and choose the **Two-factor authentication** in the menu. -![Openproject_my_account_two_factor_authentication](openproject_my_account_two_factor_authentication.png) +![OpenProject my account two_factor authentication](openproject_my_account_two_factor_authentication.png) In order to register a new device for two-factor authentication, click the green button to add a **new 2FA device**. diff --git a/docs/getting-started/my-activity/README.md b/docs/getting-started/my-activity/README.md index f96040114b07..6492bd596ea4 100644 --- a/docs/getting-started/my-activity/README.md +++ b/docs/getting-started/my-activity/README.md @@ -12,7 +12,7 @@ keywords: my activity, personal changes, dashboard You can open your **My Activity** page by clicking on your user avatar in the upper right corner and then selecting **My Activity** from the dropdown menu. -![OpenProject navigate to My Activity Page](openproject_select_my_actvity.png) +![Navigate to My Activity Page](openproject_select_my_actvity.png) You will see two lists by default. @@ -22,7 +22,7 @@ You will see two lists by default. >Please note that only activities from projects that have the **Activity** module enabled will be shown. -![Openproject_my_activity_page](openproject_my_activity_overview.png) +![My activity page](openproject_my_activity_overview.png) diff --git a/docs/getting-started/my-page/README.md b/docs/getting-started/my-page/README.md index b07025fcb122..be7a0989773d 100644 --- a/docs/getting-started/my-page/README.md +++ b/docs/getting-started/my-page/README.md @@ -92,4 +92,4 @@ You can directly create new time entries by clicking on the day, change the date Watch the short video to see how to activate the spent time widget, add spent time, edit spent time (e.g. change the date or work packages or change the time booked) and delete spent time. -![my pagetime log](my-page-time-log.gif) +![my page time log](my-page-time-log.gif) diff --git a/docs/getting-started/sign-in-registration/README.md b/docs/getting-started/sign-in-registration/README.md index b385d243056d..587a2de2b90c 100644 --- a/docs/getting-started/sign-in-registration/README.md +++ b/docs/getting-started/sign-in-registration/README.md @@ -28,7 +28,7 @@ This page will give you an overview of how to register or sign in to an existing To sign in to an OpenProject installation with an existing account, please enter the URL of your OpenProject in a modern browser, e.g. documentation.openproject.com. -![modern-browser-searchbar](modern-browser-searchbar.png) +![modern browser search bar](modern-browser-searchbar.png) Type in your user name and password in the respective fields and click the blue Sign in button. You will then be signed in to your OpenProject environment. If the autologin option was activated for your installation you will also be able to stay logged in for several days. diff --git a/docs/getting-started/work-packages-introduction/README.md b/docs/getting-started/work-packages-introduction/README.md index e60b8dbad232..4eb6966526b4 100644 --- a/docs/getting-started/work-packages-introduction/README.md +++ b/docs/getting-started/work-packages-introduction/README.md @@ -29,9 +29,9 @@ A work package in OpenProject can basically be everything you need to keep track To get started, create a new work package in your project, [open the project](../projects/#open-an-existing-project) with the project drop-down menu, navigate to the **module work packages** in the project menu. -Within the work packages module, click the green + Create button to create a new work package. In the drop down menu, choose which type of work package you want to create, e.g. a task or a milestone. To create a new work package, you can also select the blue printed + Create a new workpackage writing. +Within the work packages module, click the green + Create button to create a new work package. In the drop down menu, choose which type of work package you want to create, e.g. a task or a milestone. To create a new work package, you can also select the blue printed + Create a new work package writing. -![create-a-new-workpackage](create-a-new-workpackage.png) +![create a new work package](create-a-new-workpackage.png) A split screen view is opened with the new work package form on the right and the table listing already existing work packages on the left. @@ -41,11 +41,11 @@ In the empty form on the right, you can enter all relevant information for this Click the green **Save** button to create the work package. -![split-screen-workpackages](split-screen-workpackages.png) +![split screen work packages](split-screen-workpackages.png) The work package will the be displayed in the table view: - ![create-work-package-define-project](create-work-package-define-project-6669224.png) + ![create work package define project](create-work-package-define-project-6669224.png) Another option to create a work package is to do it from the header menu. The [work package types](../../user-guide/projects/project-settings/work-package-types/#work-package-types) that are activated, will be shown and you can select the relevant work package type to be created. @@ -83,7 +83,7 @@ You can also insert a comment at the end of the Activity list. ![activity-work-packages](activity-work-packages.png) -To notify other people about changes in your work packages activities, you can comment and type an @" infront of the username you want to inform and when you publish your message the person you have tagged will get a notification in OpenProject. The aggregation of changes in the Activity list can be configured in the [system administration](../../system-admin-guide/calendars-and-dates/#date-format). +To notify other people about changes in your work packages activities, you can comment and type an @" in front of the username you want to inform and when you publish your message the person you have tagged will get a notification in OpenProject. The aggregation of changes in the Activity list can be configured in the [system administration](../../system-admin-guide/calendars-and-dates/#date-format). To find out more about the work package functionalities, please visit our detailed [user guide for work packages](../../user-guide/work-packages). diff --git a/docs/glossary/README.md b/docs/glossary/README.md index 65201ba2fbc1..a0552f36c373 100644 --- a/docs/glossary/README.md +++ b/docs/glossary/README.md @@ -62,7 +62,7 @@ In OpenProject, authentication is an important element to guarantee a data prote ### Backlogs -Backlogs is a [module](#module) in OpenProject that brings feautres that support the Scrum methodology in OpenProject, such as a product backlog and sprint backlogs, a task board, estimation of story points, a burndown chart and a Scrum wiki. In order to use backlogs in OpenProject, the backlogs module has to be activated in the [project settings](#project-settings) by a project admin. [Read how to work with backlogs in OpenProject](https://www.openproject.org/docs/user-guide/backlogs-scrum). +Backlogs is a [module](#module) in OpenProject that brings features that support the Scrum methodology in OpenProject, such as a product backlog and sprint backlogs, a task board, estimation of story points, a burndown chart and a Scrum wiki. In order to use backlogs in OpenProject, the backlogs module has to be activated in the [project settings](#project-settings) by a project admin. [Read how to work with backlogs in OpenProject](https://www.openproject.org/docs/user-guide/backlogs-scrum). ### Baseline comparison @@ -110,7 +110,7 @@ A custom action in OpenProject is defined as customizable buttons which trigger - [Watch a short video how custom actions work](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/custom-actions/#automated-workflows-with-custom-actions-enterprise-add-on) - [Read this guide on how to create custom actions](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/custom-actions/#create-custom-actions) -- [Read this blog article on how to create an intelligent workflow with custom action - explained with an example](https://www.openproject.org/blog/customise-workflows/) +- [Read this blog article on how to create an intelligent workflow with custom action - explained with an example](https://www.openproject.org/blog/customize-workflows/) ### Custom field @@ -230,7 +230,7 @@ In OpenProject, News is defined as a [module](#module) that allows the publicati ### Nextcloud integration -OpenProject offers a Nextcloud integration which allows you to manage files in a secure and easy way, e.g. to link files or folders in Nextcloud or upload files to Nextcloud on work packages. You find the Nextcloud integration in the Files tab of your work package, if you have activated the Nextcloud integration for your instance. Get access to the OpenProject-Nextcloud integration by downloading and activating it in the built-in [Nextcloud app store](https://apps.nextcloud.com/) within your Nextcloud instance. [Read more about the Nextcloud integration of OpenProject](../user-guide/file-management/nextcloud-integration/). +OpenProject offers a Nextcloud integration which allows you to manage files in a secure and easy way, e.g. to link files or folders in Nextcloud or upload files to Nextcloud on work packages. You find the Nextcloud integration in the Files tab of your work package, if you have activated the Nextcloud integration for your instance. Get access to the OpenProject-Nextcloud integration by downloading and activating it in the built-in [Nextcloud app store](https://apps.nextcloud.com) within your Nextcloud instance. [Read more about the Nextcloud integration of OpenProject](../user-guide/file-management/nextcloud-integration/). ### Notifications diff --git a/docs/installation-and-operations/README.md b/docs/installation-and-operations/README.md index f70c9c1edd78..aa2402764c4f 100644 --- a/docs/installation-and-operations/README.md +++ b/docs/installation-and-operations/README.md @@ -19,7 +19,7 @@ This page summarizes the options for getting OpenProject, some hosted and some o * **Univention App Center** - Download the free Community edition as a pre-installed virtual environment and upgrade to the Enterprise edition with Enterprise add-ons and support. See the [documentation](installation/univention/) for details. -All editions can be enhanced by adding **[the BIM module](../bim-guide/)**, including features for construction project management, i.e. 3D model viewer, BCF management. See how to [switch to that edition](bim-edition/) in the documentation or how to start a [BIM Enterprise cloud edition](https://start.openproject.com/trial/bim). +All editions can be enhanced by adding [the BIM module](../bim-guide/), including features for construction project management, i.e. 3D model viewer, BCF management. See how to [switch to that edition](bim-edition/) in the documentation or how to start a [BIM Enterprise cloud edition](https://start.openproject.com/trial/bim). Compare the features of these versions [on the website](https://www.openproject.org/pricing/#features). diff --git a/docs/installation-and-operations/configuration/README.md b/docs/installation-and-operations/configuration/README.md index 9a03a993b3b6..dcfe7449f45e 100644 --- a/docs/installation-and-operations/configuration/README.md +++ b/docs/installation-and-operations/configuration/README.md @@ -12,7 +12,7 @@ OpenProject can be configured via environment variables. These are often helpful > **NOTE:** This documentation is for OpenProject on-premises Installations only, if you would like to setup similar in your OpenProject cloud instance, please contact us at support@openproject.com -> **NOTE:** Using the configuration file `config/configuration.yml` is depracted and is **NOT** recommended anymore +> **NOTE:** Using the configuration file `config/configuration.yml` is deprecated and is **NOT** recommended anymore @@ -196,7 +196,7 @@ OpenProject allows you to create and maintain an LDAP connection with optional s **Note:** These variables are applied whenever `db:seed` rake task is being executed. This happens on every packaged `configure` call or when the seeder container job is being run, so be aware that these changes might happen repeatedly. -The connection can be set with the following options. Please note that "EXAMPLE" stands for an arbitrary name (expressable in ENV keys) which will become the name of the connection. In this case, "example" and "examplefilter" for the synchronized filter. +The connection can be set with the following options. Please note that "EXAMPLE" stands for an arbitrary name (expressible in ENV keys) which will become the name of the connection. In this case, "example" and "examplefilter" for the synchronized filter. The name of the LDAP connection is derived from the ENV key behind `SEED_LDAP_`, so you need to take care to use only valid characters. If you need to place an underscore, use a double underscore to encode it e.g., `my__ldap`. @@ -292,7 +292,7 @@ When a filter is defined, synchronization happens directly during seeding for en ## Allowing public access -By default, any request to the OpenProject application needs to be authenticated. If you want to enable public unauthenticated access like we do for https://community.openproject.com, you can set the `login_required` to `false`. If not provided through environment variables, this setting is also accessible in the administrative UI. Please see the [authentication settings guide](../../system-admin-guide/authentication/authentication-settings/#general-authentication-settings) for more details. +By default, any request to the OpenProject application needs to be authenticated. If you want to enable public unauthenticated access like we do for https://community.openproject.org, you can set the `login_required` to `false`. If not provided through environment variables, this setting is also accessible in the administrative UI. Please see the [authentication settings guide](../../system-admin-guide/authentication/authentication-settings/#general-authentication-settings) for more details. *default: true* @@ -543,7 +543,7 @@ OPENPROJECT_FOG__DOWNLOAD__URL__EXPIRES__IN="60" You can override the default help menu of OpenProject by specifying a `force_help_link` option to the configuration. This value is used for the href of the help link, and the default dropdown is removed. -*deafult: nil* +*default: nil* ```yaml OPENPROJECT_FORCE__HELP__LINK="https://it-support.example.com" @@ -553,7 +553,7 @@ OPENPROJECT_FORCE__HELP__LINK="https://it-support.example.com" You can set a impressum link (legal notice) for your OpenProject instance by setting `impressum_link` to an absolute URL. -*deafult: nil* +*default: nil* ```yaml OPENPROJECT_IMPRESSUM__LINK="https://impressum.example.com" @@ -624,7 +624,7 @@ Remote git repositories will be checked out here. note: to be verified, maybe option was removed, not in environement variables list ``` -## apiv3 enable basic auth +## APIv3 enable basic auth You can control basic auth access to the APIv3 with the following configuration option: diff --git a/docs/installation-and-operations/configuration/database/README.md b/docs/installation-and-operations/configuration/database/README.md index 799a124ced57..444ccdae0225 100644 --- a/docs/installation-and-operations/configuration/database/README.md +++ b/docs/installation-and-operations/configuration/database/README.md @@ -52,15 +52,15 @@ In both cases the seeder will be run when you (re)launch OpenProject to make sur OpenProject will merge the settings from `DATABASE_URL` with manually specified environment options. Here are the supported options: -| Environment variable | Default | Description | Documentation | -| ------------------------------------ | ----------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| DATABASE_URL
OPENPROJECT_DB_URL | *none* | URL style passing of database options | https://guides.rubyonrails.org/configuring.html#configuring-a-database | -| OPENPROJECT_DB_ENCODING | unicode | Encoding of the database | Should be left at unicode unless you really know what you're doing. | -| OPENPROJECT_DB_POOL | *none* | Connection pool count | https://guides.rubyonrails.org/configuring.html#database-pooling | -| OPENPROJECT_DB_USERNAME | *none* | Database username, if not presented in URL above | https://guides.rubyonrails.org/configuring.html#configuring-a-database | -| OPENPROJECT_DB_PASSWORD | *none* | Database password, if not presented in URL above | https://guides.rubyonrails.org/configuring.html#configuring-a-database | -| OPENPROJECT_DB_APPLICATION_NAME | openproject | PostgreSQL application name option | https://www.postgresql.org/docs/13/libpq-connect.html#LIBPQ-CONNECT-APPLICATION-NAME | -| OPENPROJECT_DB_STATEMENT_TIMEOUT | 90s | Default statement timeout before connection statements are terminted | https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT | +| Environment variable | Default | Description | Documentation | +|------------------------------------|-------------|-----------------------------------------------------------------------|------------------------------------------------------------------------------------------| +| DATABASE_URL
OPENPROJECT_DB_URL | *none* | URL style passing of database options | https://guides.rubyonrails.org/configuring.html#configuring-a-database | +| OPENPROJECT_DB_ENCODING | unicode | Encoding of the database | Should be left at unicode unless you really know what you're doing. | +| OPENPROJECT_DB_POOL | *none* | Connection pool count | https://guides.rubyonrails.org/configuring.html#database-pooling | +| OPENPROJECT_DB_USERNAME | *none* | Database username, if not presented in URL above | https://guides.rubyonrails.org/configuring.html#configuring-a-database | +| OPENPROJECT_DB_PASSWORD | *none* | Database password, if not presented in URL above | https://guides.rubyonrails.org/configuring.html#configuring-a-database | +| OPENPROJECT_DB_APPLICATION_NAME | openproject | PostgreSQL application name option | https://www.postgresql.org/docs/13/libpq-connect.html#LIBPQ-CONNECT-APPLICATION-NAME | +| OPENPROJECT_DB_STATEMENT_TIMEOUT | 90s | Default statement timeout before connection statements are terminated | https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-STATEMENT-TIMEOUT | @@ -74,7 +74,7 @@ The most import option is the `sslmode` parameter. Set this to the appropriate m DATABASE_URL=postgres://user:pass@host:port/dbname?sslmode=require-full&sslcert=/path/to/postgresql.cert ``` -Alternatively, for better readibility, you can set these parameters with separate environment variables: +Alternatively, for better readability, you can set these parameters with separate environment variables: | Environment variable | Default | Description | PostgreSQL documentation | | ----------------------------- | ---------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | diff --git a/docs/installation-and-operations/configuration/outbound-emails/README.md b/docs/installation-and-operations/configuration/outbound-emails/README.md index f2551dde25df..295f506db3ac 100644 --- a/docs/installation-and-operations/configuration/outbound-emails/README.md +++ b/docs/installation-and-operations/configuration/outbound-emails/README.md @@ -48,7 +48,7 @@ These are the options that are available. Please see the [Configuration guide](. | SMTP user name | smtp_user_name | `OPENPROJECT_SMTP__USER__NAME` | User name for authentication against the SMTP server (when authentication is required) | | SMTP password | smtp_password | `OPENPROJECT_SMTP__PASSWORD` | Password for authentication against the SMTP server (when authentication is required) | | Automatically use STARTTLS | smtp_enable_starttls_auto | `OPENPROJECT_SMTP__ENABLE__STARTTLS__AUTO` | You can enable or disable STARTTLS here in case it doesn't work. Make sure you don't login to a SMTP server over a public network when using this. Recommended to leave this on if your server supports it. Possible values: true / false | -| OpenSSL verify mode | smtp_openssl_verify_mode | `OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE` | Define how the SMTP server certificate is validated. Make sure you don't just disable verification here unless both, OpenProject and SMTP servers are on a private network. Possible values: `none`, `peer`, `client_once` or `fail_if_no_peer_cert`.
Note: This setting can only be set through ENV/settings | +| OpenSSL verify mode | smtp_openssl_verify_mode | `OPENPROJECT_SMTP__OPENSSL__VERIFY__MODE` | Define how the SMTP server certificate is validated. Make sure you don't just disable verification here unless both, OpenProject and SMTP servers are on a private network. Possible values: `none`, `peer`, `client_once` or `fail_if_no_peer_cert`.
Note: This setting can only be set through ENV/settings | diff --git a/docs/installation-and-operations/configuration/repositories/README.md b/docs/installation-and-operations/configuration/repositories/README.md index fc14fab05fd4..da3869dabd40 100644 --- a/docs/installation-and-operations/configuration/repositories/README.md +++ b/docs/installation-and-operations/configuration/repositories/README.md @@ -51,13 +51,13 @@ The following is an excerpt of the configuration and contains all required infor # # Available types for git: # - :local (Local repositories, registered using a local path) - # - :managed (Managed repositores, available IF :manages path is set below) + # - :managed (Managed repositories, available IF :manages path is set below) # Available types for subversion: # - :existing (Existing subversion repositories by URL - local using file:/// or remote # using one of the supported URL schemes (e.g., https://, svn+ssh:// ) - # - :managed (Managed repositores, available IF :manages path is set below) + # - :managed (Managed repositories, available IF :manages path is set below) # - # Examplary configuration (Enables managed Git repositories at the given path) + # Exemplary configuration (Enables managed Git repositories at the given path) scm: git: manages: /srv/repositories/git @@ -186,10 +186,10 @@ Apache provides the module `mod_dav_svn` to serve Subversion repositories throug This method requires some apache modules to be enabled and installed. The following commands are required for Debian / Ubuntu, please adjust accordingly for other distributions: -
+```shell
   apt-get install subversion libapache2-mod-perl2 libapache2-svn
   a2enmod proxy proxy_http dav dav_svn
-
+``` ### Permissions @@ -274,10 +274,10 @@ We can exploit git-http-backend to serve Git repositories through HTTP(s) with A This method additionally requires the `cgi` Apache module to be installed. The following commands are required for Debian / Ubuntu, please adjust accordingly for other distributions: -
+```shell
   apt-get install git libapache2-mod-perl2
   a2enmod proxy proxy_http cgi
-
+``` You need to locate the location of the `git-http-backend` CGI wrapper shipping with the Git installation. Depending on your installation, it may reside in `/usr/libexec/git-core/git-http-backend`. @@ -293,77 +293,78 @@ Thus, if you use a separate user for Apache and OpenProject, they need to reside We provide an example apache configuration. Some details are explained inline as comments. - # Load OpenProject per module used to authenticate requests against the user database. - # Be sure that the OpenProjectAuthentication.pm script is located in your perl path. - PerlSwitches -I/srv/www/perl-lib -T - PerlLoadModule Apache::OpenProjectAuthentication - - - ErrorLog /var/log/apache2/error - - # The /sys endpoint is an internal API used to authenticate repository - # access requests. It shall not be reachable from remote. - - Order Deny,Allow - Deny from all - Allow from 127.0.0.1 - - - # This fixes COPY for webdav over https - RequestHeader edit Destination ^https: http: early - - # Serves svn repositories locates in /srv/openproject/svn via WebDAV - # It is secure with basic auth against the OpenProject user database. - - DAV svn - SVNParentPath "/srv/openproject/svn" - DirectorySlash Off - - AuthType Basic - AuthName "Secured Area" - Require valid-user - - PerlAccessHandler Apache::Authn::OpenProject::access_handler - PerlAuthenHandler Apache::Authn::OpenProject::authen_handler - - OpenProjectUrl 'http://127.0.0.1:3000' - OpenProjectApiKey 'REPLACE WITH REPOSITORY API KEY' - - - Allow from all - - - - # see https://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html for details - # needs mod_cgi to work -> a2enmod cgi - SetEnv GIT_PROJECT_ROOT /srv/openproject/git - SetEnv GIT_HTTP_EXPORT_ALL - ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ - - Order allow,deny - Allow from all - - AuthType Basic - AuthName "OpenProject GIT" - Require valid-user - - PerlAccessHandler Apache::Authn::OpenProject::access_handler - PerlAuthenHandler Apache::Authn::OpenProject::authen_handler - - OpenProjectGitSmartHttp yes - OpenProjectUrl 'http://127.0.0.1:3000' - OpenProjectApiKey 'REPLACE WITH REPOSITORY API KEY' - - - # Requires the apache module mod_proxy. Enable it with - # a2enmod proxy proxy_http - # See: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#ProxyPass - # Note that the ProxyPass with the longest path should be listed first, otherwise - # a shorter path may match and will do an early redirect (without looking for other - # more specific matching paths). - ProxyPass /svn ! - ProxyPass /git ! - ProxyPass / http://127.0.0.1:3000/ - ProxyPassReverse / http://127.0.0.1:3000/ - - +```apache +# Load OpenProject per module used to authenticate requests against the user database. +# Be sure that the OpenProjectAuthentication.pm script is located in your perl path. +PerlSwitches -I/srv/www/perl-lib -T +PerlLoadModule Apache::OpenProjectAuthentication + + + ErrorLog /var/log/apache2/error + + # The /sys endpoint is an internal API used to authenticate repository + # access requests. It shall not be reachable from remote. + + Order Deny,Allow + Deny from all + Allow from 127.0.0.1 + + + # This fixes COPY for webdav over https + RequestHeader edit Destination ^https: http: early + + # Serves svn repositories locates in /srv/openproject/svn via WebDAV + # It is secure with basic auth against the OpenProject user database. + + DAV svn + SVNParentPath "/srv/openproject/svn" + DirectorySlash Off + + AuthType Basic + AuthName "Secured Area" + Require valid-user + + PerlAccessHandler Apache::Authn::OpenProject::access_handler + PerlAuthenHandler Apache::Authn::OpenProject::authen_handler + + OpenProjectUrl 'http://127.0.0.1:3000' + OpenProjectApiKey 'REPLACE WITH REPOSITORY API KEY' + + + Allow from all + + + + # see https://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html for details + # needs mod_cgi to work -> a2enmod cgi + SetEnv GIT_PROJECT_ROOT /srv/openproject/git + SetEnv GIT_HTTP_EXPORT_ALL + ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ + + Order allow,deny + Allow from all + + AuthType Basic + AuthName "OpenProject GIT" + Require valid-user + + PerlAccessHandler Apache::Authn::OpenProject::access_handler + PerlAuthenHandler Apache::Authn::OpenProject::authen_handler + + OpenProjectGitSmartHttp yes + OpenProjectUrl 'http://127.0.0.1:3000' + OpenProjectApiKey 'REPLACE WITH REPOSITORY API KEY' + + + # Requires the apache module mod_proxy. Enable it with + # a2enmod proxy proxy_http + # See: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#ProxyPass + # Note that the ProxyPass with the longest path should be listed first, otherwise + # a shorter path may match and will do an early redirect (without looking for other + # more specific matching paths). + ProxyPass /svn ! + ProxyPass /git ! + ProxyPass / http://127.0.0.1:3000/ + ProxyPassReverse / http://127.0.0.1:3000/ + +``` diff --git a/docs/installation-and-operations/installation-faq/README.md b/docs/installation-and-operations/installation-faq/README.md index b5344aac8f38..06ffe8c1de28 100644 --- a/docs/installation-and-operations/installation-faq/README.md +++ b/docs/installation-and-operations/installation-faq/README.md @@ -100,7 +100,7 @@ You can either order the SSL certificates from your ISP or we can create them du ### How do you implement the routing so that the page requests intended for this project domain of ours land on the Apache server that is part of the OpenProject installation? What agreements or requirements do we have to discuss with our domain/webspace provider? -A DNS record needs to be placed at the ISP that connects the domain name you would like your OpenProject installation to be reachable at (e.g. [community.openproject.org](https://community.openproject.com/)) to the IP Address of your designated server (e.g. 13.226.159.10). The ports do not matter here as they can simply all be routed to the server. The server will then only listen on 80 and 443 and redirect 80 to 443. Depending on your network configuration, additional configurations need to be carried out e.g. on intermediary load balancers or switches. +A DNS record needs to be placed at the ISP that connects the domain name you would like your OpenProject installation to be reachable at (e.g. [community.openproject.org](https://community.openproject.org/)) to the IP Address of your designated server (e.g. 13.226.159.10). The ports do not matter here as they can simply all be routed to the server. The server will then only listen on 80 and 443 and redirect 80 to 443. Depending on your network configuration, additional configurations need to be carried out e.g. on intermediary load balancers or switches. ### Does the email address used by OpenProject have to be within the our domain for OpenProject or can this also be another address? diff --git a/docs/installation-and-operations/installation/docker/README.md b/docs/installation-and-operations/installation/docker/README.md index 1e79f80b65e3..cd400e301935 100644 --- a/docs/installation-and-operations/installation/docker/README.md +++ b/docs/installation-and-operations/installation/docker/README.md @@ -6,9 +6,9 @@ sidebar_navigation: # Install OpenProject with Docker -[Docker](https://www.docker.com/) is a way to distribute self-contained applications easily. We provide a Docker image for the Community edition that you can very easily +[Docker](https://www.docker.com) is a way to distribute self-contained applications easily. We provide a Docker image for the Community edition that you can very easily install and upgrade on your servers. However, contrary to the manual or package-based installation, your machine needs to have the Docker Engine -installed first, which usually requires a recent operating system. Please see the [Docker Engine installation page](https://docs.docker.com/install) if you don't have Docker installed. +installed first, which usually requires a recent operating system. Please see the [Docker Engine installation page](https://docs.docker.com/install/) if you don't have Docker installed. *** @@ -35,7 +35,7 @@ OpenProject's docker setup can be launched in two ways: 1. Multiple containers (recommended), each with a single process inside, using a Compose file. Allows to easily choose which services you want to run, and simplifies scaling and monitoring aspects. -2. One container with all the processes inside. Easy but not recommended for production. This is the legacy behaviour. +2. One container with all the processes inside. Easy but not recommended for production. This is the legacy behavior. ## One container per process (recommended) diff --git a/docs/installation-and-operations/installation/manual/README.md b/docs/installation-and-operations/installation/manual/README.md index ada34f50e20a..35afbcf3ba72 100644 --- a/docs/installation-and-operations/installation/manual/README.md +++ b/docs/installation-and-operations/installation/manual/README.md @@ -6,7 +6,7 @@ sidebar_navigation: false > **IMPORTANT: We strongly recommend to use one of the officially supported [installation methods](../../installation).** > -> **This guide is simply provided as an OLD and OUTDATED reference, and is NOT up to date with relation to the latest OpenProject releases and will be NOT maintained NOR supported. You are on your own and maybe could ask experienced users in the forum in order to use this guide for any integrations taht you would like to solve. We also removed it from the navigation sidebar on the left in order to hide it.** +> **This guide is simply provided as an OLD and OUTDATED reference, and is NOT up to date with relation to the latest OpenProject releases and will be NOT maintained NOR supported. You are on your own and maybe could ask experienced users in the forum in order to use this guide for any integrations that you would like to solve. We also removed it from the navigation sidebar on the left in order to hide it.** Please be aware that: @@ -414,11 +414,9 @@ We encourage you to extend OpenProject yourself by writing a plug-in. Please, re ## Troubleshooting -You can find the error logs for apache here: -
/var/log/apache2/error.log
+You can find the error logs for apache here: `/var/log/apache2/error.log` -The OpenProject logfile can be found here: -
/home/openproject/openproject/log/production.log
+The OpenProject logfile can be found here: `/home/openproject/openproject/log/production.log` If an error occurs, it should be logged there. @@ -441,10 +439,9 @@ If you need to restart the server (for example after a configuration change), do * **When accessing OpenProject, I get an error page. How do I find out what went wrong?** - Things can go wrong on different levels. You can find the apache error logs here: -
/var/log/apache2/error.log
- The OpenProject log can be found here: -
/home/openproject/openproject/log/production.log
+ Things can go wrong on different levels. You can find the apache error logs here: `/var/log/apache2/error.log` + + The OpenProject log can be found here: `/home/openproject/openproject/log/production.log` * **I cannot solve an error, not even with the log files. How do I get help?** diff --git a/docs/installation-and-operations/installation/packaged/README.md b/docs/installation-and-operations/installation/packaged/README.md index b790e43fea99..49f057e687df 100644 --- a/docs/installation-and-operations/installation/packaged/README.md +++ b/docs/installation-and-operations/installation/packaged/README.md @@ -450,7 +450,7 @@ If you have a separate server that is terminating SSL and only forwarding/proxyi - Finally, to let OpenProject know that it should create links with 'https' when no request is available (for example, when sending emails), you need to set the following setting: `openproject config:set SERVER_PROTOCOL_FORCE_HTTPS="true"` followed by an `openproject configure`. This ensures that OpenProject responds correctly with secure cookies even though it was not configured for https in the server configuration. -Here an example for external SSL/TLS terminaltion with apache (httpd): +Here an example for external SSL/TLS termination with apache (httpd): > **Note:** There is [another example](../docker/#1-virtual-host-root) for external SSL/TLS termination for **docker-compose** installations @@ -555,7 +555,7 @@ Also, this setting will control what is the default language for new users if th With this last step confirmed, the OpenProject wizard will complete, and apply all the configuration options that you have just selected. This might take a few minutes depending on your machine and internet connection, as OpenProject might need to install additional packages (such as the web server, database) depending on your selections. -In case this process crashes or exits with an obvious error, please keep the output and send your configuration from `/etc/openproject/installer.dat` (removing any passwords from it) to us at support@openproject.com , or [reach out to the community forums](https://community.openproject.com/projects/openproject/forums). +In case this process crashes or exits with an obvious error, please keep the output and send your configuration from `/etc/openproject/installer.dat` (removing any passwords from it) to us at support@openproject.com , or [reach out to the community forums](https://community.openproject.org/projects/openproject/forums). When this process completes, it will have started the internal application and web servers, the background jobs to process work-intensive jobs, and set up the connection to the database. diff --git a/docs/installation-and-operations/misc/textile-migration/README.md b/docs/installation-and-operations/misc/textile-migration/README.md index d4b034999b5a..4e4a17be2178 100644 --- a/docs/installation-and-operations/misc/textile-migration/README.md +++ b/docs/installation-and-operations/misc/textile-migration/README.md @@ -15,7 +15,7 @@ You need to run this migration on an OpenProject version < 13.0, as the conversi ## Dependencies -We depend on `pandoc` (https://pandoc.org/) for the conversion of all formattable fields in OpenProject. It provides automated means to migrate between many input and output formats, in our case from Textile to GitHub-flavored Markdown. +We depend on `pandoc` (https://pandoc.org) for the conversion of all formattable fields in OpenProject. It provides automated means to migrate between many input and output formats, in our case from Textile to GitHub-flavored Markdown. If you do not have an executable pandoc version of at least version 2.0 in your path, OpenProject will try download an AMD64 static linked binary for pandoc (Currently, this would be version 2.3.2). This version will be made available to OpenProject through `/vendor/pandoc` and is only used during that one-time migration step. diff --git a/docs/installation-and-operations/operation/restoring/README.md b/docs/installation-and-operations/operation/restoring/README.md index f35ec5c1b1ef..127d7146ce89 100644 --- a/docs/installation-and-operations/operation/restoring/README.md +++ b/docs/installation-and-operations/operation/restoring/README.md @@ -6,6 +6,10 @@ sidebar_navigation: # Restoring an OpenProject backup +This document describes how to restore a complete backup of OpenProject. + +Please look [here](./restoring-a-deleted-project/) if you want to restore a deleted project from a backup. + ## Package-based installation (DEB/RPM) Assuming you have a backup of all the OpenProject files at hand (see the [Backing up](../backing-up) guide), here is how you would restore your OpenProject installation from that backup. @@ -73,7 +77,7 @@ sudo openproject config:get DATABASE_URL #=> e.g.: postgres://:@:/ ``` -Then, to restore the PostgreSQL dump please use the `pg_restore` command utility. **WARNING:** The command `--clean --if-exists` is used and it will drop objects in the database and you will lose all changes in this database! Double-check that the database URL above is the database you want to restore to. +Then, to restore the PostgreSQL dump please use the `pg_restore` command utility. **WARNING:** The command `--clean --if-exists` is used and it will drop objects in the database and you will lose all changes in this database! Double-check that the database URL above is the database you want to restore to. This is necessary since the backups of OpenProject does not clean statements to remove existing options and will lead to duplicate index errors when trying to restore to an existing database. The alternative is to drop/recreate the database manually (see below), if you have the permissions to do so. @@ -129,7 +133,7 @@ If you are using docker-compose this is what you do after you started everything 1. Stop the OpenProject container using `docker-compose stop web worker`. 2. Drop the existing, seeded database using `docker exec -it compose_db_1 psql -U postgres -c 'drop database openproject;'` -3. If your database doesn't have an openproject user yet, create it with this command: `docker exec -it compose_db_1 psql -U postgres -c 'create user openproject;'` +3. If your database doesn't have an openproject user yet, create it with this command: `docker exec -it compose_db_1 psql -U postgres -c 'create user openproject;'` 4. Recreate the database using `docker exec -it compose_db_1 psql -U postgres -c 'create database openproject owner openproject;'` 5. Copy the dump onto the container: `docker cp openproject.sql compose_db_1:/` 6. Source the dump with psql on the container: `docker exec -it compose_db_1 psql -U postgres` followed first by `\c openproject` and then by `\i openproject.sql`. You can leave this console by entering `\q` once it's done. @@ -207,7 +211,7 @@ but then you use `pg_restore` instead to restore it. # 1. copy .pgdump file into container docker cp postgresql-dump-20211119210038.pgdump postgres:/ -# 2. delete existing database created in step 2) above +# 2. delete existing database created in step 2) above docker exec -it postgres dropdb -U postgres openproject # 3. import the dump diff --git a/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/README.md b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/README.md new file mode 100644 index 000000000000..691a850e7eab --- /dev/null +++ b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/README.md @@ -0,0 +1,91 @@ +--- +sidebar_navigation: + title: Restoring a deleted project + priority: 8 +keywords: deleted project, restore, restoring +--- + +# Restoring a deleted project + +Sometimes it may happen that you delete a project on accident. +Perhaps it would be too much trouble or more recent data lost to restore a complete backup. + +For these kinds of cases we describe here how to restore a single project from a backup. +The following files will be used in the examples. + +* [dump.sql](./dump.sql) +* [restore.sql](./restore.sql) + +There is also a script ([restore.sh](./restore.sh)) that shows how to use everything together. + +## 0. Prerequisites + +* you have a Backup of your OpenProject installation with the missing data still present +* you have restored the database dump of this backup into a new, separate database called `openproject_backup` + * Created, for instance, via + * `psql -c 'create database openproject_backup'` + * `pg_restore -d openproject_backup openproject.pgdump` +* your present OpenProject database is called `openproject` + +It does not matter where the actual Postgres server is running. +In all the following examples we simply use `psql -d openproject_backup` and `psql -d openproject` respectively. Where `openproject_backup` and `openproject` are the names of the databases within Postgres. + +In your case you may have to provide more options (e.g. the user or host) to connect to the respective database. + +## 1. Dump project data from backup + +First we copy the data from the backup, that was deleted later. +For each relevant table, a `missing_` table is created +that only contains the missing data. + +This is then saved to `missing_data.sql` which will be used to import +the missing data into the current database. + +Before performing the next step, edit the `dump.sql` file and change the missing project ID +to the correct value in the head of the file where it says 'DEFINE MISSING PROJECT ID HERE'. + +```shell +cat dump.sql | psql -d openproject_backup + +pg_dump -d openproject_backup -t 'missing_*' -f missing_data.sql +``` + +## 2. Restore missing data + +Now that we have the missing data, we can restore it in the current database. + +```shell +cat missing_data.sql | psql -d openproject +cat restore.sql | psql -d openproject +``` + +First we create the tables with the missing data in the current database. +This has no effect on the actual data of OpenProject yet. +Only with executing `restore.sql` will the data be copied from the `missing_` tables +into the corresponding actual `` tables. + +After this is done, the `missing_*` tables are dropped. +This all happens within a transaction. + +**Project hierarchy** + +Now it can happen that the project hierarchy does not look correct in the projects dropdown after +you restored a deleted project. To fix this, delete the restored project's `lft` and `rgt` columns +and rebuild the hierarchy. + +To do this, start an OpenProject console (e.g. `sudo openproject run console`) and execute the following. + +```ruby +p = Project.find_by(name: "Restored project") + +p.update_column :lft, nil +p.update_column :rgt, nil + +Project.rebuild! +``` + +This may take a moment depending on the number of projects you have. +After this is finished, the project hierarchy will look correct again. + +This operation is perfectly safe and will not affect any actual data. +It just affects the display of projects in the projects dropdown and projects list. diff --git a/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/dump.sql b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/dump.sql new file mode 100644 index 000000000000..48f6ecc8a02a --- /dev/null +++ b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/dump.sql @@ -0,0 +1,166 @@ +SET search_path="public"; +SET client_min_messages TO WARNING; + +BEGIN; + +CREATE SCHEMA helpers; + +CREATE OR REPLACE FUNCTION helpers.missing_project_id() +RETURNS integer +AS +$$ +SELECT 773 -- DEFINE MISSING PROJECT ID HERE +$$ +LANGUAGE SQL IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION helpers.camel_to_down_case(identifier TEXT) +RETURNS text +AS +$$ +SELECT regexp_replace(lower(regexp_replace(identifier, E'([A-Z])', E'\_\\1','g')), E'^_', '', 'g'); +$$ +LANGUAGE SQL IMMUTABLE STRICT; + +CREATE OR REPLACE FUNCTION helpers.pluralize(table_name TEXT) +RETURNS text +AS +$$ +SELECT regexp_replace(lower(regexp_replace(table_name, E'y$', E'ie','g')), E'([^s])$', E'\\1s', 'g'); +$$ +LANGUAGE SQL IMMUTABLE STRICT; + +-- remove all the missing_* tables we created during the last try if there are any +DO +$$ +DECLARE table_to_remove TEXT; +BEGIN +FOR table_to_remove IN ( + select table_name + from information_schema.tables + where table_schema = 'public' and table_name like 'missing_%' +) +LOOP + EXECUTE 'DROP TABLE IF EXISTS ' || table_to_remove || ' CASCADE'; +END LOOP; +END; +$$; + +-- restore missing rows in all tables where deleted project was referenced (via project_id) +DO +$$ +DECLARE source_table TEXT; +DECLARE source_column TEXT; +BEGIN + +EXECUTE 'CREATE TABLE missing_projects AS (select * from projects where id = ' || helpers.missing_project_id() || ');'; + +FOR source_table, source_column IN ( + select table_name, column_name + from information_schema.columns + where table_schema = 'public' and column_name = 'project_id' + and table_name not like '%_journals' +) +LOOP + EXECUTE 'CREATE TABLE missing_' || source_table || ' AS (' || + 'SELECT * from ' || source_table || ' where project_id = ' || helpers.missing_project_id() || ')'; +END LOOP; + +END; +$$; + +-- BEGIN: restore rows related to restrored rows above +-- +-- todo: This could probably be scripted to cover all relevant tables as well. +-- But for now it's easier to just list them by hand. This is the only +-- part of this script which may have to be adapted in the future to +-- account for new tables or relations. + +CREATE TABLE missing_attachments AS ( + select * from attachments where container_type = 'WorkPackage' and container_id in ( + select id from missing_work_packages + ) +); + +CREATE TABLE missing_meeting_contents AS ( + select * from meeting_contents where meeting_id in (select id from missing_meetings) +); + +CREATE TABLE missing_messages AS ( + select * from messages where forum_id in (select id from missing_forums) +); + +CREATE TABLE missing_wiki_pages AS ( + select * from wiki_pages where wiki_id in (select id from missing_wikis) +); + +CREATE TABLE missing_changesets AS ( + select * from changesets where repository_id in (select id from missing_repositories) +); + +CREATE TABLE missing_member_roles AS ( + select * from member_roles where member_id in (select id from missing_members) +); + +-- END: restore rows related to restrored rows above + +-- create missing journals and journal data +DO +$$ +DECLARE journable_type_name TEXT; +DECLARE clauses TEXT; +DECLARE clause TEXT; +BEGIN + +clauses := '(journable_id = ' || helpers.missing_project_id() || ' and journable_type = ''Project'')'; + +FOR journable_type_name IN ( + select distinct(journable_type) from journals where journable_type != 'Project' +) +LOOP + clause := '(journable_id in (select id from missing_' || + helpers.pluralize(helpers.camel_to_down_case(journable_type_name)) || + ') and journable_type = ''' || journable_type_name || + ''')'; + clauses := FORMAT('%s or %s', clauses, clause); +END LOOP; + +EXECUTE 'CREATE TABLE missing_journals AS (select * from journals where ' || clauses || ')'; + +FOR journable_type_name IN ( + select distinct(journable_type) from journals where journable_type != 'Project' +) +LOOP + EXECUTE 'CREATE TABLE missing_' || helpers.camel_to_down_case(journable_type_name) || '_journals AS (' || + 'select * from ' || helpers.camel_to_down_case(journable_type_name) || '_journals where id in (' || + 'select data_id from missing_journals where journable_type = ''' || journable_type_name || '''))'; +END LOOP; + +END; +$$; + +-- create missing custom values +DO +$$ +DECLARE customized_type_name TEXT; +DECLARE query TEXT; +DECLARE clause TEXT; +BEGIN + +query := 'SELECT * from custom_values where (customized_type = ''Project'' and customized_id = ' || helpers.missing_project_id() || ')'; + +FOR customized_type_name IN (select distinct(customized_type) from custom_values where customized_type != 'Project') +LOOP + clause := '(customized_type = ''' || customized_type_name || + ''' and customized_id in (select id from missing_' || + helpers.pluralize(helpers.camel_to_down_case(customized_type_name)) || '))'; + query := FORMAT('%s or %s', query, clause); +END LOOP; + +EXECUTE 'CREATE TABLE missing_custom_values AS (' || query || ')'; + +END; +$$; + +DROP SCHEMA helpers CASCADE; + +COMMIT; diff --git a/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/restore.sh b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/restore.sh new file mode 100644 index 000000000000..3cb91fe53b6c --- /dev/null +++ b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/restore.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Dump missing data from backup. +# This assumes you restored the correct backup into a database called `openproject_backup`. +# Edit `dump.sql` to define the missing project ID first! +cat dump.sql | psql -d openproject_backup +pg_dump -d openproject_backup -t 'missing_*' -f missing_data.sql + +# Restore missing data in current database. +# This assumes your current OpenProject database is called `openproject`. +cat missing_data.sql | psql -d openproject +cat restore.sql | psql -d openproject diff --git a/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/restore.sql b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/restore.sql new file mode 100644 index 000000000000..1cd7e8928ac6 --- /dev/null +++ b/docs/installation-and-operations/operation/restoring/restoring-a-deleted-project/restore.sql @@ -0,0 +1,60 @@ +SET search_path="public"; + +BEGIN; + +DO +$$ +DECLARE table_to_copy TEXT; +DECLARE primary_keys TEXT; +DECLARE insert_sql TEXT; +BEGIN +FOR table_to_copy IN ( + select table_name + from information_schema.tables + where table_schema = 'public' and table_name like 'missing_%' + order by table_name = 'missing_projects' desc + -- order such that project is re-created first to satisfy foreign key constraints +) +LOOP + raise notice 'Restoring % to %', table_to_copy, REPLACE(table_to_copy, 'missing_', ''); + + -- get primary keys for table + SELECT STRING_AGG(a.attname, ',') AS TEXT INTO primary_keys + FROM pg_index i + JOIN pg_attribute a + ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) + WHERE i.indrelid = REPLACE(table_to_copy, 'missing_', '')::regclass + AND i.indisprimary; + + + insert_sql := 'INSERT INTO ' || REPLACE(table_to_copy, 'missing_', '') || + ' (SELECT * FROM ' || table_to_copy || ')'; + + -- do nothing on conflict if a primary key exists + IF primary_keys IS NOT NULL + THEN + insert_sql := (insert_sql || ' ON CONFLICT ('|| primary_keys ||') DO NOTHING'); + END IF; + + EXECUTE (insert_sql || ';'); +END LOOP; +END; +$$; + +-- remove all the missing_* tables we created after we're done +DO +$$ +DECLARE table_to_remove TEXT; +BEGIN +FOR table_to_remove IN ( + select table_name + from information_schema.tables + where table_schema = 'public' and table_name like 'missing_%' +) +LOOP + EXECUTE 'DROP TABLE IF EXISTS ' || table_to_remove || ' CASCADE'; +END LOOP; +END; +$$; + +COMMIT; diff --git a/docs/installation-and-operations/operation/upgrading/README.md b/docs/installation-and-operations/operation/upgrading/README.md index 631f69d49a6b..a3d6bd78840e 100644 --- a/docs/installation-and-operations/operation/upgrading/README.md +++ b/docs/installation-and-operations/operation/upgrading/README.md @@ -108,7 +108,7 @@ docker-compose pull docker-compose up -d ``` -Please note that you can override the `TAG` that is used to pull the OpenProject image from the [Docker Hub](https://hub.docker.com/r/openproject/community). +Please note that you can override the `TAG` that is used to pull the OpenProject image from the [Docker Hub](https://hub.docker.com/r/openproject/community/). ### All-in-one container @@ -214,7 +214,7 @@ These following points are some known issues around the update to 8.0. It does n ### Upgrades in NPM may result in package inconsistencies As has been reported from the -community, [there appear to be issues with NPM leftover packages](https://community.openproject.com/wp/28571) upgrading +community, [there appear to be issues with NPM leftover packages](https://community.openproject.org/wp/28571) upgrading to OpenProject 8.0.0. This is due to the packages applying a delta between your installed version and the to-be-installed 8.0. package. diff --git a/docs/installation-and-operations/system-requirements/README.md b/docs/installation-and-operations/system-requirements/README.md index b7104da188c5..8998deb0b1a9 100644 --- a/docs/installation-and-operations/system-requirements/README.md +++ b/docs/installation-and-operations/system-requirements/README.md @@ -37,11 +37,11 @@ There may come a point where you will have to make configuration changes to the Using a rough estimate we can give the following recommendations based on the number of total users. -| Users | CPU cores | RAM in GB | web workers | background workers | Diskspace in GB | -|-------|-----------|------------|-------------|--------------------|-----------------| -| <=200 | 4 | 4 | 4 | 1 | 20 | -| 500 | 8 | 8 | 8 | 2 | 40 | -| 1500 | 16 | 16 | 16 | 4 | 80 | +| Users | CPU cores | RAM in GB | web workers | background workers | disk space in GB | +|-------|-----------|------------|-------------|--------------------|------------------| +| <=200 | 4 | 4 | 4 | 1 | 20 | +| 500 | 8 | 8 | 8 | 2 | 40 | +| 1500 | 16 | 16 | 16 | 4 | 80 | Mind, even just for 5 users we do recommend the default 4 workers as each page may require multiple requests to be made simultaneously. Having less workers will work, but pages may take longer to finish loading. diff --git a/docs/release-notes/10/10-0-0/README.md b/docs/release-notes/10/10-0-0/README.md index 66f23787ea7b..b13b6db2904f 100644 --- a/docs/release-notes/10/10-0-0/README.md +++ b/docs/release-notes/10/10-0-0/README.md @@ -94,129 +94,129 @@ OpenProject 10 significantly improves the performance, especially for the work p #### Bug fixes and changes -- Added: [Wiki] Allow to create child pages via links without a target [[#24167](https://community.openproject.com/wp/24167)] -- Added: Sticky text editor toolbar that is visible above long text fields [[#29738](https://community.openproject.com/wp/29738)] -- Added: Checkbox lists for work package [[#29804](https://community.openproject.com/wp/29804)] -- Added: Custom Fields are now shown in Projects API [[#30387](https://community.openproject.com/wp/30387)] -- Changed: Render text field links in the backend independently of the user [[#30501](https://community.openproject.com/wp/30501)] -- Changed: Widget: add graphs with single dataset [[#30522](https://community.openproject.com/wp/30522)] -- Changed: When drag and drop work packages indicate drop zone in work package table as flat line instead of entire row [[#30723](https://community.openproject.com/wp/30723)] -- Changed: View selector to switch between Gantt view, tiles view and list view [[#30746](https://community.openproject.com/wp/30746)] -- Changed: Add menu items "Sort by..." and "Group by..." to the more menu of a work packages view so the features are more visible [[#30751](https://community.openproject.com/wp/30751)] -- Changed: Don't highlight the first row in the split view [[#30765](https://community.openproject.com/wp/30765)] -- Fixed: Reminder mailer fails if assignee is not a user [[#25689](https://community.openproject.com/wp/25689)] -- Fixed: Unable to subscribe to member_updated or member_removed notifications [[#29632](https://community.openproject.com/wp/29632)] -- Fixed: SQL Injection Project orders [[#30132](https://community.openproject.com/wp/30132)] -- Fixed: Remove "new" badge of boards in Version 10.0 [[#30213](https://community.openproject.com/wp/30213)] -- Fixed: Insufficient space between user avatar and user name [[#30357](https://community.openproject.com/wp/30357)] -- Fixed: [DnD] Changing a WP changes the sort order [[#30389](https://community.openproject.com/wp/30389)] -- Fixed: Check spelling of e-mail vs. email [[#30411](https://community.openproject.com/wp/30411)] -- Fixed: Sorting relation sub elements influences the order of the rest of the table [[#30421](https://community.openproject.com/wp/30421)] -- Fixed: Boolean CF with unset values are shown empty in export [[#30442](https://community.openproject.com/wp/30442)] -- Fixed: Missing colors for work package status [[#30483](https://community.openproject.com/wp/30483)] -- Fixed: Table is not scrollable with enabled Gantt chart [[#30490](https://community.openproject.com/wp/30490)] -- Fixed: Fixed page size not forced in already-saved queries [[#30561](https://community.openproject.com/wp/30561)] -- Fixed: Subject fields in sync while creating 2 new board cards [[#30586](https://community.openproject.com/wp/30586)] -- Fixed: No warning when switching from project description to other page [[#30587](https://community.openproject.com/wp/30587)] -- Fixed: Sorting of card view is not the same as in the list [[#30675](https://community.openproject.com/wp/30675)] -- Fixed: Project resource not updated when changing a custom field [[#30683](https://community.openproject.com/wp/30683)] -- Fixed: Typo in German Enterprise edition license Email (date) [[#30732](https://community.openproject.com/wp/30732)] -- Fixed: Users and permissions tile in the administration should link to the users table instead of the user settings [[#30742](https://community.openproject.com/wp/30742)] -- Fixed: After pressing enter in the work package widget title the cursor is still blinking [[#30757](https://community.openproject.com/wp/30757)] -- Fixed: Dropdown in WP list not centered (when next to subject) [[#30760](https://community.openproject.com/wp/30760)] -- Fixed: Context menu in Gantt not working [[#30761](https://community.openproject.com/wp/30761)] -- Fixed: Cannot drag & drop WP (child) work package created from context menu [[#30762](https://community.openproject.com/wp/30762)] -- Fixed: Drag & Drop: Order of other work package changed [[#30763](https://community.openproject.com/wp/30763)] -- Fixed: Missing border between tiles and split screen and not aligned on the top [[#30764](https://community.openproject.com/wp/30764)] -- Fixed: Kosmetisch: Notification E-Mails manchmal schwarz / manchmal weiß [[#30769](https://community.openproject.com/wp/30769)] -- Fixed: New child work package that is created in the relations tab is not shown in the list view [[#30777](https://community.openproject.com/wp/30777)] -- Fixed: Typos in German language settings [[#30785](https://community.openproject.com/wp/30785)] -- Fixed: When changing WP type in Gantt shadow WPs are shown [[#30787](https://community.openproject.com/wp/30787)] -- Fixed: Enterprise edition option shown in Cloud Administration (Page not found) [[#30788](https://community.openproject.com/wp/30788)] -- Fixed: Wrong side entry selected in administration when selecting "Work packages" [[#30789](https://community.openproject.com/wp/30789)] -- Fixed: Default descriptions get still applied even after deleting them. [[#30795](https://community.openproject.com/wp/30795)] -- Fixed: UX: Inconsistency when confirm-click on tick-button is needed (Adding an existing child vs. adding a relation). [[#30796](https://community.openproject.com/wp/30796)] -- Fixed: Switching from Gantt view back to table view will still display Gantt in the button [[#30797](https://community.openproject.com/wp/30797)] -- Fixed: Internal error when setting assignee [[#30799](https://community.openproject.com/wp/30799)] -- Fixed: View toggler not changing when activating Gantt in settings [[#30800](https://community.openproject.com/wp/30800)] -- Fixed: White space in Gantt when zooming out [[#30801](https://community.openproject.com/wp/30801)] -- Fixed: Zoom in Gantt loses WPs (zooms in on left side instead of center) [[#30802](https://community.openproject.com/wp/30802)] -- Fixed: Table and Gantt are off when many WPs are displayed [[#30805](https://community.openproject.com/wp/30805)] -- Fixed: Relations not translated in XLS export [[#30806](https://community.openproject.com/wp/30806)] -- Fixed: Watcher / relations numbers cut off in German (non-English languages) [[#30807](https://community.openproject.com/wp/30807)] -- Fixed: Cannot close set parent dialog with Escape right away / weird German text [[#30808](https://community.openproject.com/wp/30808)] -- Fixed: Empty parentheses briefly shown when creating new custom action [[#30809](https://community.openproject.com/wp/30809)] -- Fixed: Missing translation in administration (Status, Types, ...) [[#30811](https://community.openproject.com/wp/30811)] -- Fixed: Missing translations for OAuth authentication [[#30812](https://community.openproject.com/wp/30812)] -- Fixed: Wrong focus / scroll on admin entries [[#30814](https://community.openproject.com/wp/30814)] -- Fixed: Gantt: Can't move WP on time axis if follower has no finish date [[#30816](https://community.openproject.com/wp/30816)] -- Fixed: Type is wrongly changed in Action board on status change [[#30817](https://community.openproject.com/wp/30817)] -- Fixed: MS Edge: Dropzone for Drag & Drop not shown [[#30826](https://community.openproject.com/wp/30826)] -- Fixed: Icon wrongly shown briefly in administration submenus [[#30827](https://community.openproject.com/wp/30827)] -- Fixed: Links in administration open in same tab [[#30828](https://community.openproject.com/wp/30828)] -- Fixed: Sorting arrow not shown next to columns (automatic sorting) [[#30831](https://community.openproject.com/wp/30831)] -- Fixed: Gantt view for filtered out parent work packages not updated correctly [[#30837](https://community.openproject.com/wp/30837)] -- Fixed: Inaccessible linked work package shown as active link [[#30839](https://community.openproject.com/wp/30839)] -- Fixed: Creating empty cards in different columns leads to weird behavior [[#30842](https://community.openproject.com/wp/30842)] -- Fixed: Focus not set when adding existing card to board [[#30843](https://community.openproject.com/wp/30843)] -- Fixed: Adding existing card and creating new card form can be open at same time [[#30844](https://community.openproject.com/wp/30844)] -- Fixed: Search field cannot be minimized / closed again after being opened [[#30846](https://community.openproject.com/wp/30846)] -- Fixed: Work package from board not shown in fullscreen [[#30848](https://community.openproject.com/wp/30848)] -- Fixed: Drag & Drop handle not shown in group mode when split screen was activated [[#30852](https://community.openproject.com/wp/30852)] -- Fixed: Author field is cut off even though there is plenty of space [[#30853](https://community.openproject.com/wp/30853)] -- Fixed: Dropdown menus not aligned [[#30856](https://community.openproject.com/wp/30856)] -- Fixed: Unnecessary scrollbars in work package view [[#30857](https://community.openproject.com/wp/30857)] -- Fixed: When clicking on "Webhooks" in admin menu, focus jumps to "Overview" [[#30859](https://community.openproject.com/wp/30859)] -- Fixed: Work package stays selected when clicking on WPs with split screen open [[#30862](https://community.openproject.com/wp/30862)] -- Fixed: Color of status button always shown in orange [[#30863](https://community.openproject.com/wp/30863)] -- Fixed: Project menu auto-closes in change project screen [[#30867](https://community.openproject.com/wp/30867)] -- Fixed: Versions not copied and copying slow [[#30872](https://community.openproject.com/wp/30872)] -- Fixed: Relations cannot be created [[#30877](https://community.openproject.com/wp/30877)] -- Fixed: Performance error on MyPage [[#30878](https://community.openproject.com/wp/30878)] -- Fixed: Bars in Roadmap graph are massive [[#30890](https://community.openproject.com/wp/30890)] -- Fixed: Words with umlauts are not found in PDF's [[#30891](https://community.openproject.com/wp/30891)] -- Fixed: Lists in Copy Workflow could be bigger [[#30892](https://community.openproject.com/wp/30892)] -- Fixed: WP description confusing/wrong? [[#30897](https://community.openproject.com/wp/30897)] -- Fixed: Page not found when using sign in from public project [[#30898](https://community.openproject.com/wp/30898)] -- Fixed: Spacing in members widget on overview page slightly crammed [[#30900](https://community.openproject.com/wp/30900)] -- Fixed: Project description not shown for some projects [[#30901](https://community.openproject.com/wp/30901)] -- Fixed: Custom field not shown for work package [[#30903](https://community.openproject.com/wp/30903)] -- Fixed: Unclear tab description in work package graph [[#30905](https://community.openproject.com/wp/30905)] -- Fixed: Chart in Roadmap details view minimizes [[#30907](https://community.openproject.com/wp/30907)] -- Fixed: Header not aligned to widget boxes in Project Overview Page [[#30911](https://community.openproject.com/wp/30911)] -- Fixed: Work package attribute called "Story Punkte js" instead of "Story Punkte" [[#30919](https://community.openproject.com/wp/30919)] -- Fixed: Second click on "All open" view doesn't reset the view toggle button [[#30921](https://community.openproject.com/wp/30921)] -- Fixed: Users in Members widget not correctly aligned [[#30925](https://community.openproject.com/wp/30925)] -- Fixed: Wiki TOC Error [[#30926](https://community.openproject.com/wp/30926)] -- Fixed: Wiki menu tree is still cached to old project when identifier renamed [[#30927](https://community.openproject.com/wp/30927)] -- Fixed: WorkPackage linked in comment text cannot be opened [[#30928](https://community.openproject.com/wp/30928)] -- Fixed: Error when creating new boards [[#30930](https://community.openproject.com/wp/30930)] -- Fixed: Unable to login [[#30932](https://community.openproject.com/wp/30932)] -- Fixed: Optimize text box formatting of header texts [[#30940](https://community.openproject.com/wp/30940)] -- Fixed: Harmonize drag and drop handle icons [[#30941](https://community.openproject.com/wp/30941)] -- Fixed: Project description and project details share the same icon [[#30942](https://community.openproject.com/wp/30942)] -- Fixed: Some widget titles can be edited which should be static [[#30945](https://community.openproject.com/wp/30945)] -- Fixed: grid is invisible during resizing and drag and drop of widgets [[#30946](https://community.openproject.com/wp/30946)] -- Fixed: Too long comment box when adding a picture to the text editor [[#30947](https://community.openproject.com/wp/30947)] -- Fixed: Overview page: click on link opens edit mode, instead of following the link [[#30948](https://community.openproject.com/wp/30948)] -- Fixed: Custom Action. Exception on OP Edge. "undefined method `iso8601' for "%CURRENT_DATE%":String" [[#30949](https://community.openproject.com/wp/30949)] -- Fixed: Wrong formatting of scroll bars on overview page in Windows [[#30951](https://community.openproject.com/wp/30951)] -- Fixed: Boards. EE ypsale. Translation missing. [[#30954](https://community.openproject.com/wp/30954)] -- Fixed: Drag and drop in embedded tables does not work (or should be deactivated for now) [[#30967](https://community.openproject.com/wp/30967)] -- Fixed: Picture slider in for BCF issues even if there is only one picture [[#30969](https://community.openproject.com/wp/30969)] -- Fixed: Members: Error message overlapping form but not X-icon to remove it [[#30971](https://community.openproject.com/wp/30971)] -- Fixed: Widget "Work packages overview" cuts off tooltip [[#30972](https://community.openproject.com/wp/30972)] -- Fixed: Missing save indication after renaming a widget [[#30975](https://community.openproject.com/wp/30975)] -- Fixed: Sorting board columns only applied after reload [[#30981](https://community.openproject.com/wp/30981)] -- Fixed: Overview grid widgets are not translated [[#30988](https://community.openproject.com/wp/30988)] -- Fixed: Crowdin JS translations not complete [[#30989](https://community.openproject.com/wp/30989)] -- Fixed: In- and Outdent create version conflicts with inline edition [[#30994](https://community.openproject.com/wp/30994)] -- Fixed: Inconsistent behavior to show add-widget buttons only after project creation [[#31011](https://community.openproject.com/wp/31011)] -- Fixed: Type colors lost in print of Gantt chart [[#31021](https://community.openproject.com/wp/31021)] -- Fixed: Graph titles get get lost after page reload [[#31026](https://community.openproject.com/wp/31026)] -- Fixed: Misaligned drag and drop handle in Members widget [[#31027](https://community.openproject.com/wp/31027)] -- Fixed: Single Sign on feature is available in Community edition [[#31045](https://community.openproject.com/wp/31045)] -- Fixed: Cannot edit comment that was just created [[#31057](https://community.openproject.com/wp/31057)] +- Added: [Wiki] Allow to create child pages via links without a target [[#24167](https://community.openproject.org/wp/24167)] +- Added: Sticky text editor toolbar that is visible above long text fields [[#29738](https://community.openproject.org/wp/29738)] +- Added: Checkbox lists for work package [[#29804](https://community.openproject.org/wp/29804)] +- Added: Custom Fields are now shown in Projects API [[#30387](https://community.openproject.org/wp/30387)] +- Changed: Render text field links in the backend independently of the user [[#30501](https://community.openproject.org/wp/30501)] +- Changed: Widget: add graphs with single dataset [[#30522](https://community.openproject.org/wp/30522)] +- Changed: When drag and drop work packages indicate drop zone in work package table as flat line instead of entire row [[#30723](https://community.openproject.org/wp/30723)] +- Changed: View selector to switch between Gantt view, tiles view and list view [[#30746](https://community.openproject.org/wp/30746)] +- Changed: Add menu items "Sort by..." and "Group by..." to the more menu of a work packages view so the features are more visible [[#30751](https://community.openproject.org/wp/30751)] +- Changed: Don't highlight the first row in the split view [[#30765](https://community.openproject.org/wp/30765)] +- Fixed: Reminder mailer fails if assignee is not a user [[#25689](https://community.openproject.org/wp/25689)] +- Fixed: Unable to subscribe to member_updated or member_removed notifications [[#29632](https://community.openproject.org/wp/29632)] +- Fixed: SQL Injection Project orders [[#30132](https://community.openproject.org/wp/30132)] +- Fixed: Remove "new" badge of boards in Version 10.0 [[#30213](https://community.openproject.org/wp/30213)] +- Fixed: Insufficient space between user avatar and user name [[#30357](https://community.openproject.org/wp/30357)] +- Fixed: [DnD] Changing a WP changes the sort order [[#30389](https://community.openproject.org/wp/30389)] +- Fixed: Check spelling of e-mail vs. email [[#30411](https://community.openproject.org/wp/30411)] +- Fixed: Sorting relation sub elements influences the order of the rest of the table [[#30421](https://community.openproject.org/wp/30421)] +- Fixed: Boolean CF with unset values are shown empty in export [[#30442](https://community.openproject.org/wp/30442)] +- Fixed: Missing colors for work package status [[#30483](https://community.openproject.org/wp/30483)] +- Fixed: Table is not scrollable with enabled Gantt chart [[#30490](https://community.openproject.org/wp/30490)] +- Fixed: Fixed page size not forced in already-saved queries [[#30561](https://community.openproject.org/wp/30561)] +- Fixed: Subject fields in sync while creating 2 new board cards [[#30586](https://community.openproject.org/wp/30586)] +- Fixed: No warning when switching from project description to other page [[#30587](https://community.openproject.org/wp/30587)] +- Fixed: Sorting of card view is not the same as in the list [[#30675](https://community.openproject.org/wp/30675)] +- Fixed: Project resource not updated when changing a custom field [[#30683](https://community.openproject.org/wp/30683)] +- Fixed: Typo in German Enterprise edition license Email (date) [[#30732](https://community.openproject.org/wp/30732)] +- Fixed: Users and permissions tile in the administration should link to the users table instead of the user settings [[#30742](https://community.openproject.org/wp/30742)] +- Fixed: After pressing enter in the work package widget title the cursor is still blinking [[#30757](https://community.openproject.org/wp/30757)] +- Fixed: Dropdown in WP list not centered (when next to subject) [[#30760](https://community.openproject.org/wp/30760)] +- Fixed: Context menu in Gantt not working [[#30761](https://community.openproject.org/wp/30761)] +- Fixed: Cannot drag & drop WP (child) work package created from context menu [[#30762](https://community.openproject.org/wp/30762)] +- Fixed: Drag & Drop: Order of other work package changed [[#30763](https://community.openproject.org/wp/30763)] +- Fixed: Missing border between tiles and split screen and not aligned on the top [[#30764](https://community.openproject.org/wp/30764)] +- Fixed: Cosmetic: Notification emails sometimes black / sometimes white [[#30769](https://community.openproject.org/wp/30769)] +- Fixed: New child work package that is created in the relations tab is not shown in the list view [[#30777](https://community.openproject.org/wp/30777)] +- Fixed: Typos in German language settings [[#30785](https://community.openproject.org/wp/30785)] +- Fixed: When changing WP type in Gantt shadow WPs are shown [[#30787](https://community.openproject.org/wp/30787)] +- Fixed: Enterprise edition option shown in Cloud Administration (Page not found) [[#30788](https://community.openproject.org/wp/30788)] +- Fixed: Wrong side entry selected in administration when selecting "Work packages" [[#30789](https://community.openproject.org/wp/30789)] +- Fixed: Default descriptions get still applied even after deleting them. [[#30795](https://community.openproject.org/wp/30795)] +- Fixed: UX: Inconsistency when confirm-click on tick-button is needed (Adding an existing child vs. adding a relation). [[#30796](https://community.openproject.org/wp/30796)] +- Fixed: Switching from Gantt view back to table view will still display Gantt in the button [[#30797](https://community.openproject.org/wp/30797)] +- Fixed: Internal error when setting assignee [[#30799](https://community.openproject.org/wp/30799)] +- Fixed: View toggler not changing when activating Gantt in settings [[#30800](https://community.openproject.org/wp/30800)] +- Fixed: White space in Gantt when zooming out [[#30801](https://community.openproject.org/wp/30801)] +- Fixed: Zoom in Gantt loses WPs (zooms in on left side instead of center) [[#30802](https://community.openproject.org/wp/30802)] +- Fixed: Table and Gantt are off when many WPs are displayed [[#30805](https://community.openproject.org/wp/30805)] +- Fixed: Relations not translated in XLS export [[#30806](https://community.openproject.org/wp/30806)] +- Fixed: Watcher / relations numbers cut off in German (non-English languages) [[#30807](https://community.openproject.org/wp/30807)] +- Fixed: Cannot close set parent dialog with Escape right away / weird German text [[#30808](https://community.openproject.org/wp/30808)] +- Fixed: Empty parentheses briefly shown when creating new custom action [[#30809](https://community.openproject.org/wp/30809)] +- Fixed: Missing translation in administration (Status, Types, ...) [[#30811](https://community.openproject.org/wp/30811)] +- Fixed: Missing translations for OAuth authentication [[#30812](https://community.openproject.org/wp/30812)] +- Fixed: Wrong focus / scroll on admin entries [[#30814](https://community.openproject.org/wp/30814)] +- Fixed: Gantt: Can't move WP on time axis if follower has no finish date [[#30816](https://community.openproject.org/wp/30816)] +- Fixed: Type is wrongly changed in Action board on status change [[#30817](https://community.openproject.org/wp/30817)] +- Fixed: MS Edge: Dropzone for Drag & Drop not shown [[#30826](https://community.openproject.org/wp/30826)] +- Fixed: Icon wrongly shown briefly in administration submenus [[#30827](https://community.openproject.org/wp/30827)] +- Fixed: Links in administration open in same tab [[#30828](https://community.openproject.org/wp/30828)] +- Fixed: Sorting arrow not shown next to columns (automatic sorting) [[#30831](https://community.openproject.org/wp/30831)] +- Fixed: Gantt view for filtered out parent work packages not updated correctly [[#30837](https://community.openproject.org/wp/30837)] +- Fixed: Inaccessible linked work package shown as active link [[#30839](https://community.openproject.org/wp/30839)] +- Fixed: Creating empty cards in different columns leads to weird behavior [[#30842](https://community.openproject.org/wp/30842)] +- Fixed: Focus not set when adding existing card to board [[#30843](https://community.openproject.org/wp/30843)] +- Fixed: Adding existing card and creating new card form can be open at same time [[#30844](https://community.openproject.org/wp/30844)] +- Fixed: Search field cannot be minimized / closed again after being opened [[#30846](https://community.openproject.org/wp/30846)] +- Fixed: Work package from board not shown in fullscreen [[#30848](https://community.openproject.org/wp/30848)] +- Fixed: Drag & Drop handle not shown in group mode when split screen was activated [[#30852](https://community.openproject.org/wp/30852)] +- Fixed: Author field is cut off even though there is plenty of space [[#30853](https://community.openproject.org/wp/30853)] +- Fixed: Dropdown menus not aligned [[#30856](https://community.openproject.org/wp/30856)] +- Fixed: Unnecessary scrollbars in work package view [[#30857](https://community.openproject.org/wp/30857)] +- Fixed: When clicking on "Webhooks" in admin menu, focus jumps to "Overview" [[#30859](https://community.openproject.org/wp/30859)] +- Fixed: Work package stays selected when clicking on WPs with split screen open [[#30862](https://community.openproject.org/wp/30862)] +- Fixed: Color of status button always shown in orange [[#30863](https://community.openproject.org/wp/30863)] +- Fixed: Project menu auto-closes in change project screen [[#30867](https://community.openproject.org/wp/30867)] +- Fixed: Versions not copied and copying slow [[#30872](https://community.openproject.org/wp/30872)] +- Fixed: Relations cannot be created [[#30877](https://community.openproject.org/wp/30877)] +- Fixed: Performance error on MyPage [[#30878](https://community.openproject.org/wp/30878)] +- Fixed: Bars in Roadmap graph are massive [[#30890](https://community.openproject.org/wp/30890)] +- Fixed: Words with umlauts are not found in PDF's [[#30891](https://community.openproject.org/wp/30891)] +- Fixed: Lists in Copy Workflow could be bigger [[#30892](https://community.openproject.org/wp/30892)] +- Fixed: WP description confusing/wrong? [[#30897](https://community.openproject.org/wp/30897)] +- Fixed: Page not found when using sign in from public project [[#30898](https://community.openproject.org/wp/30898)] +- Fixed: Spacing in members widget on overview page slightly crammed [[#30900](https://community.openproject.org/wp/30900)] +- Fixed: Project description not shown for some projects [[#30901](https://community.openproject.org/wp/30901)] +- Fixed: Custom field not shown for work package [[#30903](https://community.openproject.org/wp/30903)] +- Fixed: Unclear tab description in work package graph [[#30905](https://community.openproject.org/wp/30905)] +- Fixed: Chart in Roadmap details view minimizes [[#30907](https://community.openproject.org/wp/30907)] +- Fixed: Header not aligned to widget boxes in Project Overview Page [[#30911](https://community.openproject.org/wp/30911)] +- Fixed: Work package attribute called "story points js" instead of "story points" [[#30919](https://community.openproject.org/wp/30919)] +- Fixed: Second click on "All open" view doesn't reset the view toggle button [[#30921](https://community.openproject.org/wp/30921)] +- Fixed: Users in Members widget not correctly aligned [[#30925](https://community.openproject.org/wp/30925)] +- Fixed: Wiki TOC Error [[#30926](https://community.openproject.org/wp/30926)] +- Fixed: Wiki menu tree is still cached to old project when identifier renamed [[#30927](https://community.openproject.org/wp/30927)] +- Fixed: WorkPackage linked in comment text cannot be opened [[#30928](https://community.openproject.org/wp/30928)] +- Fixed: Error when creating new boards [[#30930](https://community.openproject.org/wp/30930)] +- Fixed: Unable to login [[#30932](https://community.openproject.org/wp/30932)] +- Fixed: Optimize text box formatting of header texts [[#30940](https://community.openproject.org/wp/30940)] +- Fixed: Harmonize drag and drop handle icons [[#30941](https://community.openproject.org/wp/30941)] +- Fixed: Project description and project details share the same icon [[#30942](https://community.openproject.org/wp/30942)] +- Fixed: Some widget titles can be edited which should be static [[#30945](https://community.openproject.org/wp/30945)] +- Fixed: grid is invisible during resizing and drag and drop of widgets [[#30946](https://community.openproject.org/wp/30946)] +- Fixed: Too long comment box when adding a picture to the text editor [[#30947](https://community.openproject.org/wp/30947)] +- Fixed: Overview page: click on link opens edit mode, instead of following the link [[#30948](https://community.openproject.org/wp/30948)] +- Fixed: Custom Action. Exception on OP Edge. "undefined method `iso8601' for "%CURRENT_DATE%":String" [[#30949](https://community.openproject.org/wp/30949)] +- Fixed: Wrong formatting of scroll bars on overview page in Windows [[#30951](https://community.openproject.org/wp/30951)] +- Fixed: Boards. EE upsale. Translation missing. [[#30954](https://community.openproject.org/wp/30954)] +- Fixed: Drag and drop in embedded tables does not work (or should be deactivated for now) [[#30967](https://community.openproject.org/wp/30967)] +- Fixed: Picture slider in for BCF issues even if there is only one picture [[#30969](https://community.openproject.org/wp/30969)] +- Fixed: Members: Error message overlapping form but not X-icon to remove it [[#30971](https://community.openproject.org/wp/30971)] +- Fixed: Widget "Work packages overview" cuts off tooltip [[#30972](https://community.openproject.org/wp/30972)] +- Fixed: Missing save indication after renaming a widget [[#30975](https://community.openproject.org/wp/30975)] +- Fixed: Sorting board columns only applied after reload [[#30981](https://community.openproject.org/wp/30981)] +- Fixed: Overview grid widgets are not translated [[#30988](https://community.openproject.org/wp/30988)] +- Fixed: Crowdin JS translations not complete [[#30989](https://community.openproject.org/wp/30989)] +- Fixed: In- and Outdent create version conflicts with inline edition [[#30994](https://community.openproject.org/wp/30994)] +- Fixed: Inconsistent behavior to show add-widget buttons only after project creation [[#31011](https://community.openproject.org/wp/31011)] +- Fixed: Type colors lost in print of Gantt chart [[#31021](https://community.openproject.org/wp/31021)] +- Fixed: Graph titles get get lost after page reload [[#31026](https://community.openproject.org/wp/31026)] +- Fixed: Misaligned drag and drop handle in Members widget [[#31027](https://community.openproject.org/wp/31027)] +- Fixed: Single Sign on feature is available in Community edition [[#31045](https://community.openproject.org/wp/31045)] +- Fixed: Cannot edit comment that was just created [[#31057](https://community.openproject.org/wp/31057)] @@ -246,6 +246,6 @@ Special thanks go to all OpenProject contributors without whom this release woul We are continuously developing new features and improvements for OpenProject. The next release will contain a dashboard and reporting view for OpenProject and also allow to communicate the project status using a traffic light. -Take a look at the [release timeline](https://community.openproject.com/projects/openproject/work_packages?query_id=918) to see the upcoming features and releases. +Take a look at the [release timeline](https://community.openproject.org/projects/openproject/work_packages?query_id=918) to see the upcoming features and releases. To stay up to date with the recent development, feel free to follow OpenProject on [Twitter](https://twitter.com/openproject) and like OpenProject on [Facebook](https://www.facebook.com/openprojectfoundation). diff --git a/docs/release-notes/10/10-0-1/README.md b/docs/release-notes/10/10-0-1/README.md index e03acfea53a0..6bcaca04892e 100644 --- a/docs/release-notes/10/10-0-1/README.md +++ b/docs/release-notes/10/10-0-1/README.md @@ -8,30 +8,30 @@ release_date: 2019-09-30 # OpenProject 10.0.1 -We released [OpenProject 10.0.1](https://community.openproject.com/versions/1393). +We released [OpenProject 10.0.1](https://community.openproject.org/versions/1393). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Misaligned checkboxes in text editor [[#31066](https://community.openproject.com/wp/31066)] -- Fixed: Wrong cursor icon when editing custom text widget [[#31092](https://community.openproject.com/wp/31092)] -- Fixed: Work package subject changes formatting when switching between show and edit mode [[#31136](https://community.openproject.com/wp/31136)] -- Fixed: Custom field label cut off in project details widget [[#31144](https://community.openproject.com/wp/31144)] -- Fixed: Attachments not showing until new attachment is uploaded [[#31148](https://community.openproject.com/wp/31148)] -- Fixed: WP disappears when dragging work package in board [[#31157](https://community.openproject.com/wp/31157)] -- Fixed: Announcements: missing localisation, wrong date and missing formatting options [[#31159](https://community.openproject.com/wp/31159)] -- Fixed: Action board: Adding a list will reset the manual left/right order of lists. [[#31161](https://community.openproject.com/wp/31161)] -- Fixed: Installed 10.0.0 incorrect security badge [[#31178](https://community.openproject.com/wp/31178)] -- Fixed: Translation missing on instance dashboard page [[#31180](https://community.openproject.com/wp/31180)] -- Fixed: Input fields misplaced for CF in enumerations [[#31193](https://community.openproject.com/wp/31193)] -- Fixed: Inconsistent table button in Budget settings [[#31194](https://community.openproject.com/wp/31194)] -- Fixed: Colors can no longer be deleted [[#31200](https://community.openproject.com/wp/31200)] -- Fixed: Attempting to add filter to project list crashes browser tab [[#31202](https://community.openproject.com/wp/31202)] -- Fixed: Clicking back button from full-view created work package leads to full-view-create [[#31204](https://community.openproject.com/wp/31204)] -- Fixed: Attachments lose their name on download [[#31205](https://community.openproject.com/wp/31205)] -- Changed: Complete missing translations for 10.0 [[#31147](https://community.openproject.com/wp/31147)] +- Fixed: Misaligned checkboxes in text editor [[#31066](https://community.openproject.org/wp/31066)] +- Fixed: Wrong cursor icon when editing custom text widget [[#31092](https://community.openproject.org/wp/31092)] +- Fixed: Work package subject changes formatting when switching between show and edit mode [[#31136](https://community.openproject.org/wp/31136)] +- Fixed: Custom field label cut off in project details widget [[#31144](https://community.openproject.org/wp/31144)] +- Fixed: Attachments not showing until new attachment is uploaded [[#31148](https://community.openproject.org/wp/31148)] +- Fixed: WP disappears when dragging work package in board [[#31157](https://community.openproject.org/wp/31157)] +- Fixed: Announcements: missing localization, wrong date and missing formatting options [[#31159](https://community.openproject.org/wp/31159)] +- Fixed: Action board: Adding a list will reset the manual left/right order of lists. [[#31161](https://community.openproject.org/wp/31161)] +- Fixed: Installed 10.0.0 incorrect security badge [[#31178](https://community.openproject.org/wp/31178)] +- Fixed: Translation missing on instance dashboard page [[#31180](https://community.openproject.org/wp/31180)] +- Fixed: Input fields misplaced for CF in enumerations [[#31193](https://community.openproject.org/wp/31193)] +- Fixed: Inconsistent table button in Budget settings [[#31194](https://community.openproject.org/wp/31194)] +- Fixed: Colors can no longer be deleted [[#31200](https://community.openproject.org/wp/31200)] +- Fixed: Attempting to add filter to project list crashes browser tab [[#31202](https://community.openproject.org/wp/31202)] +- Fixed: Clicking back button from full-view created work package leads to full-view-create [[#31204](https://community.openproject.org/wp/31204)] +- Fixed: Attachments lose their name on download [[#31205](https://community.openproject.org/wp/31205)] +- Changed: Complete missing translations for 10.0 [[#31147](https://community.openproject.org/wp/31147)] #### Contributions diff --git a/docs/release-notes/10/10-0-2/README.md b/docs/release-notes/10/10-0-2/README.md index d0afb5350db4..682fc87ccaf9 100644 --- a/docs/release-notes/10/10-0-2/README.md +++ b/docs/release-notes/10/10-0-2/README.md @@ -8,7 +8,7 @@ release_date: 2019-10-02 # OpenProject 10.0.2 -We released [OpenProject 10.0.2](https://community.openproject.com/versions/1395). +We released [OpenProject 10.0.2](https://community.openproject.org/versions/1395). The release contains a security related fix and we urge updating to the newest version. @@ -35,14 +35,14 @@ This has been fixed in this release. We now use the environment variable *OPENPR #### OtherBug fixes and changes -- Fixed: Inconsistent row heights when resizing widgets [[#31048](https://community.openproject.com/wp/31048)] -- Fixed: In Budgets projected unit costs and labor cost is not shown [[#31247](https://community.openproject.com/wp/31247)] -- Fixed: Restart puma workers to cope with potential memory leaks [[#31262](https://community.openproject.com/wp/31262)] -- Fixed: "Enterprise edition" blue bar would be nicer horizontally [[#31265](https://community.openproject.com/wp/31265)] +- Fixed: Inconsistent row heights when resizing widgets [[#31048](https://community.openproject.org/wp/31048)] +- Fixed: In Budgets projected unit costs and labor cost is not shown [[#31247](https://community.openproject.org/wp/31247)] +- Fixed: Restart puma workers to cope with potential memory leaks [[#31262](https://community.openproject.org/wp/31262)] +- Fixed: "Enterprise edition" blue bar would be nicer horizontally [[#31265](https://community.openproject.org/wp/31265)] #### Contributions -Thanks to David Haintz from [SEC Consult Vulnerability Lab](https://www.sec-consult.com/) for identifying and responsibly disclosing the identified issues. +Thanks to David Haintz from [SEC Consult Vulnerability Lab](https://www.sec-consult.com) for identifying and responsibly disclosing the identified issues. A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/10/10-1-0/README.md b/docs/release-notes/10/10-1-0/README.md index 1d82449f4746..9a450a3b56a9 100644 --- a/docs/release-notes/10/10-1-0/README.md +++ b/docs/release-notes/10/10-1-0/README.md @@ -50,41 +50,41 @@ OpenProject has been updated to Rails 6.0.0. #### Bug fixes and changes -- Fixed: Status dropdown is misplaced when the widget is at the bottom of the page [[#31426](https://community.openproject.com/wp/31426)] -- Fixed: Project overview: Display fields should be "read only" when user lacks permissions [[#31453\]](https://community.openproject.com/wp/31426) -- Fixed: Type selection drop down looks ugly [[#31457\]](https://community.openproject.com/wp/31426) -- Fixed: Scheduling new bar in Gantt chart not working properly [[#31426\]](https://community.openproject.com/wp/31426) -- Fixed: Edit abilities between angular and rails differ for project text cf and project status [[#31483\]](https://community.openproject.com/wp/31426) -- Fixed: Can add status column multiple times to board [[#31506\]](https://community.openproject.com/wp/31426) -- Fixed: Size of widgets sometimes not changeable [[#31489\]](https://community.openproject.com/wp/31489) -- Fixed: Rendering error resulting in too much space between the widgets [[#31490\]](https://community.openproject.com/wp/31489) -- Fixed: Incorrect order of the status in the diagram [[#31383\]](https://community.openproject.com/wp/31489) -- Fixed: Wrong formatting of preview cards [[#31391\]](https://community.openproject.com/wp/31489) -- Fixed: Modal for adding widget too high for smaller viewports [[#31396\]](https://community.openproject.com/wp/31489) -- Fixed: Since 10.0, in repository commits, links to work packages look bad [[#31284\]](https://community.openproject.com/wp/31489) -- Fixed: When deleting and re-uploading document in documents plugin it is not added [[#31452\]](https://community.openproject.com/wp/31452) -- Fixed: Switching from dashboard/my page to wp page (and other angular pages) leads to gray background [[#31459\]](https://community.openproject.com/wp/31489) -- Fixed: On community.openproject.com comment area is still shown after sending comment [[#31477\]](https://community.openproject.com/wp/31489) -- Fixed: Project status description not displayed when adding macro (from project settings) [[#31454\]](https://community.openproject.com/wp/31489) -- Fixed: Widget sometimes not movable [[#31486\]](https://community.openproject.com/wp/31489) -- Fixed: Cannot edit work package comments if content is too wide. [[#31207\]](https://community.openproject.com/wp/31489) -- Fixed: Mail notification for meeting review showing the wrong timezone [[#31127\]](https://community.openproject.com/wp/31489) -- Fixed: Sorting of bars in work package graphs are inconsistent to the sorting of groups in the work packages table [[#30977\]](https://community.openproject.com/wp/31489) -- Fixed: Formatting error in checkboxes in text editor [[#31248\]](https://community.openproject.com/wp/31489) -- Fixed: [openproject-documents] Cannot delete attachments [[#31126\]](https://community.openproject.com/wp/31489) -- Fixed: Budget should display correct decimal separator. [[#31053\]](https://community.openproject.com/wp/31489) -- Fixed: Empty page shown on project overview page [[#31226\]](https://community.openproject.com/wp/31489) -- Fixed: Text tables in widgets (e.g. project description, project status) cannot be scrolled [[#31480\]](https://community.openproject.com/wp/31489) -- Fixed: Internal error when accessing admin work packages section [[#31305\]](https://community.openproject.com/wp/31489) -- Fixed: Widget flickers sometimes [[#31488\]](https://community.openproject.com/wp/31489) -- Fixed: Work Package subject jumps again when editing [[#31448\]](https://community.openproject.com/wp/31489) -- Fixed: Incoming mail with unknown user=accept results in untranslated contract errors [[#31500\]](https://community.openproject.com/wp/31489) -- Fixed: Editing versions terribly slow because `/api/v3/versions/available projects` is potentially loading a large number of projects [[#31312\]](https://community.openproject.com/wp/31489) -- Fixed: Error when loading work packages graph for categories [[#31377\]](https://community.openproject.com/wp/31489) -- Fixed: API documentation wrongfully describes the project status [[#31362\]](https://community.openproject.com/wp/31489) -- Fixed: Direct error message directly when trying to copy a project. [[#31313\]](https://community.openproject.com/wp/31489) -- Fixed: Grid: Cannot escape edition with escape [[#31394\]](https://community.openproject.com/wp/31489) -- Fixed: Work package graph view for projects without work packages look broken [[#31449\]](https://community.openproject.com/wp/31489) +- Fixed: Status dropdown is misplaced when the widget is at the bottom of the page [[#31426](https://community.openproject.org/wp/31426)] +- Fixed: Project overview: Display fields should be "read only" when user lacks permissions [[#31453\]](https://community.openproject.org/wp/31426) +- Fixed: Type selection drop down looks ugly [[#31457\]](https://community.openproject.org/wp/31426) +- Fixed: Scheduling new bar in Gantt chart not working properly [[#31426\]](https://community.openproject.org/wp/31426) +- Fixed: Edit abilities between angular and rails differ for project text cf and project status [[#31483\]](https://community.openproject.org/wp/31426) +- Fixed: Can add status column multiple times to board [[#31506\]](https://community.openproject.org/wp/31426) +- Fixed: Size of widgets sometimes not changeable [[#31489\]](https://community.openproject.org/wp/31489) +- Fixed: Rendering error resulting in too much space between the widgets [[#31490\]](https://community.openproject.org/wp/31489) +- Fixed: Incorrect order of the status in the diagram [[#31383\]](https://community.openproject.org/wp/31489) +- Fixed: Wrong formatting of preview cards [[#31391\]](https://community.openproject.org/wp/31489) +- Fixed: Modal for adding widget too high for smaller viewports [[#31396\]](https://community.openproject.org/wp/31489) +- Fixed: Since 10.0, in repository commits, links to work packages look bad [[#31284\]](https://community.openproject.org/wp/31489) +- Fixed: When deleting and re-uploading document in documents plugin it is not added [[#31452\]](https://community.openproject.org/wp/31452) +- Fixed: Switching from dashboard/my page to wp page (and other angular pages) leads to gray background [[#31459\]](https://community.openproject.org/wp/31489) +- Fixed: On community.openproject.org comment area is still shown after sending comment [[#31477\]](https://community.openproject.org/wp/31489) +- Fixed: Project status description not displayed when adding macro (from project settings) [[#31454\]](https://community.openproject.org/wp/31489) +- Fixed: Widget sometimes not movable [[#31486\]](https://community.openproject.org/wp/31489) +- Fixed: Cannot edit work package comments if content is too wide. [[#31207\]](https://community.openproject.org/wp/31489) +- Fixed: Mail notification for meeting review showing the wrong timezone [[#31127\]](https://community.openproject.org/wp/31489) +- Fixed: Sorting of bars in work package graphs are inconsistent to the sorting of groups in the work packages table [[#30977\]](https://community.openproject.org/wp/31489) +- Fixed: Formatting error in checkboxes in text editor [[#31248\]](https://community.openproject.org/wp/31489) +- Fixed: [openproject-documents] Cannot delete attachments [[#31126\]](https://community.openproject.org/wp/31489) +- Fixed: Budget should display correct decimal separator. [[#31053\]](https://community.openproject.org/wp/31489) +- Fixed: Empty page shown on project overview page [[#31226\]](https://community.openproject.org/wp/31489) +- Fixed: Text tables in widgets (e.g. project description, project status) cannot be scrolled [[#31480\]](https://community.openproject.org/wp/31489) +- Fixed: Internal error when accessing admin work packages section [[#31305\]](https://community.openproject.org/wp/31489) +- Fixed: Widget flickers sometimes [[#31488\]](https://community.openproject.org/wp/31489) +- Fixed: Work Package subject jumps again when editing [[#31448\]](https://community.openproject.org/wp/31489) +- Fixed: Incoming mail with unknown user=accept results in untranslated contract errors [[#31500\]](https://community.openproject.org/wp/31489) +- Fixed: Editing versions terribly slow because `/api/v3/versions/available projects` is potentially loading a large number of projects [[#31312\]](https://community.openproject.org/wp/31489) +- Fixed: Error when loading work packages graph for categories [[#31377\]](https://community.openproject.org/wp/31489) +- Fixed: API documentation wrongfully describes the project status [[#31362\]](https://community.openproject.org/wp/31489) +- Fixed: Direct error message directly when trying to copy a project. [[#31313\]](https://community.openproject.org/wp/31489) +- Fixed: Grid: Cannot escape edition with escape [[#31394\]](https://community.openproject.org/wp/31489) +- Fixed: Work package graph view for projects without work packages look broken [[#31449\]](https://community.openproject.org/wp/31489) ## Support @@ -108,6 +108,6 @@ Special thanks go to all OpenProject contributors without whom this release woul We are continuously developing new features and improvements for OpenProject. The next release will contain a multi-project portfolio view which provides a quick overview of your most important projects. -Take a look at the [release timeline](https://community.openproject.com/projects/openproject/work_packages?query_id=918) to see the upcoming features and releases. +Take a look at the [release timeline](https://community.openproject.org/projects/openproject/work_packages?query_id=918) to see the upcoming features and releases. To stay up to date with the recent development, feel free to follow OpenProject on [Twitter](https://twitter.com/openproject) and like OpenProject on [Facebook](https://www.facebook.com/openprojectfoundation). diff --git a/docs/release-notes/10/10-2-0/README.md b/docs/release-notes/10/10-2-0/README.md index 8fbc0cc3c1de..422d74119f4c 100644 --- a/docs/release-notes/10/10-2-0/README.md +++ b/docs/release-notes/10/10-2-0/README.md @@ -9,29 +9,29 @@ release_date: 2019-11-11 # OpenProject 10.2.0 -We released [OpenProject 10.2.0](https://community.openproject.com/versions/1390). +We released [OpenProject 10.2.0](https://community.openproject.org/versions/1390). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Many mails are still being sent synchronously, slowing down the application [[#28287](https://community.openproject.com/wp/28287)] -- Fixed: Work package webhooks not triggered when Setting.notified_events disabled [[#29501](https://community.openproject.com/wp/29501)] -- Fixed: EE teaser in project filter and work package filter look different [[#31424](https://community.openproject.com/wp/31424)] -- Fixed: Success messages displaced [[#31538](https://community.openproject.com/wp/31538)] -- Fixed: Estimated time not properly aligned [[#31540](https://community.openproject.com/wp/31540)] -- Fixed: Wrong formatting of preview cards [[#31572](https://community.openproject.com/wp/31572)] -- Fixed: Configure icon to change embedded tables have no impact [[#31574](https://community.openproject.com/wp/31574)] -- Fixed: Enabling sums for a custom field break work packages widget on project overview page [[#31576](https://community.openproject.com/wp/31576)] -- Fixed: Attachment filename not stringified [[#31580](https://community.openproject.com/wp/31580)] -- Fixed: SMTP_PASSWORD not correctly output in YAML configuration [[#31583](https://community.openproject.com/wp/31583)] -- Fixed: Change date of milestones in Gantt chart not possible [[#31596](https://community.openproject.com/wp/31596)] -- Fixed: System user is not active [[#31609](https://community.openproject.com/wp/31609)] -- Fixed: i18 // German: Delete in context menu should be "Löschen" and not "Lösche" [[#31636](https://community.openproject.com/wp/31636)] -- Changed: Upgrade CKEditor to 15.0 [[#31542](https://community.openproject.com/wp/31542)] -- Changed: Zen mode for project overview page [[#31559](https://community.openproject.com/wp/31559)] +- Fixed: Many mails are still being sent synchronously, slowing down the application [[#28287](https://community.openproject.org/wp/28287)] +- Fixed: Work package webhooks not triggered when Setting.notified_events disabled [[#29501](https://community.openproject.org/wp/29501)] +- Fixed: EE teaser in project filter and work package filter look different [[#31424](https://community.openproject.org/wp/31424)] +- Fixed: Success messages displaced [[#31538](https://community.openproject.org/wp/31538)] +- Fixed: Estimated time not properly aligned [[#31540](https://community.openproject.org/wp/31540)] +- Fixed: Wrong formatting of preview cards [[#31572](https://community.openproject.org/wp/31572)] +- Fixed: Configure icon to change embedded tables have no impact [[#31574](https://community.openproject.org/wp/31574)] +- Fixed: Enabling sums for a custom field break work packages widget on project overview page [[#31576](https://community.openproject.org/wp/31576)] +- Fixed: Attachment filename not stringified [[#31580](https://community.openproject.org/wp/31580)] +- Fixed: SMTP_PASSWORD not correctly output in YAML configuration [[#31583](https://community.openproject.org/wp/31583)] +- Fixed: Change date of milestones in Gantt chart not possible [[#31596](https://community.openproject.org/wp/31596)] +- Fixed: System user is not active [[#31609](https://community.openproject.org/wp/31609)] +- Fixed: i18 // German: Delete in context menu should be "Löschen" and not "Lösche" [[#31636](https://community.openproject.org/wp/31636)] +- Changed: Upgrade CKEditor to 15.0 [[#31542](https://community.openproject.org/wp/31542)] +- Changed: Zen mode for project overview page [[#31559](https://community.openproject.org/wp/31559)] #### Contributions -Thanks to Thanh Nguyen Nguyen from [Fortinet's FortiGuard Labs](https://fortiguard.com/) for identifying and responsibly disclosing the attachment filename stringification issue [#31580](https://community.openproject.com/wp/31580). +Thanks to Thanh Nguyen Nguyen from [Fortinet's FortiGuard Labs](https://fortiguard.com/) for identifying and responsibly disclosing the attachment filename stringification issue [#31580](https://community.openproject.org/wp/31580). diff --git a/docs/release-notes/10/10-2-1/README.md b/docs/release-notes/10/10-2-1/README.md index e24830dff5ce..13b324faddcf 100644 --- a/docs/release-notes/10/10-2-1/README.md +++ b/docs/release-notes/10/10-2-1/README.md @@ -8,16 +8,16 @@ release_date: 2019-11-13 # OpenProject 10.2.1 -We released [OpenProject 10.2.1](https://community.openproject.com/versions/1404). +We released [OpenProject 10.2.1](https://community.openproject.org/versions/1404). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Error 500 when clicking on a history version [[#31643](https://community.openproject.com/wp/31643)] -- Fixed: Built-in users count towards active user limit [[#31650](https://community.openproject.com/wp/31650)] -- Changed: Webhook for created time entries [[#31647](https://community.openproject.com/wp/31647)] +- Fixed: Error 500 when clicking on a history version [[#31643](https://community.openproject.org/wp/31643)] +- Fixed: Built-in users count towards active user limit [[#31650](https://community.openproject.org/wp/31650)] +- Changed: Webhook for created time entries [[#31647](https://community.openproject.org/wp/31647)] #### Contributions diff --git a/docs/release-notes/10/10-2-2/README.md b/docs/release-notes/10/10-2-2/README.md index cc2171279ddb..7d5624e026e9 100644 --- a/docs/release-notes/10/10-2-2/README.md +++ b/docs/release-notes/10/10-2-2/README.md @@ -8,31 +8,31 @@ release_date: 2019-12-11 # OpenProject 10.2.2 -We released [OpenProject 10.2.2](https://community.openproject.com/versions/1405). +We released [OpenProject 10.2.2](https://community.openproject.org/versions/1405). The release contains several bug fixes and fixes server security issues. We thus urge everybody to upgrade to the newest version as soon as possible. #### Bug fixes and changes -- Fixed: Outline of display-field extends table cell width \[[#31214](https://community.openproject.com/wp/31214)\] -- Fixed: SQL error in work package view \[[#31667](https://community.openproject.com/wp/31667)\] -- Fixed: Error in OpenProject::Patches::ActiveRecordJoinPartPatch module after ActiveRecord updating to 6 version \[[#31673](https://community.openproject.com/wp/31673)\] -- Fixed: [WorkPackages] "group by"-header line to short \[[#31720](https://community.openproject.com/wp/31720)\] -- Fixed: Second level menu of boards is not reachable on first click \[[#31721](https://community.openproject.com/wp/31721)\] -- Fixed: Doubled scrollbar in sidebar when "Buy Now" teaser is activated \[[#31729](https://community.openproject.com/wp/31729)\] -- Fixed: Main menu width is lost after closing it \[[#31730](https://community.openproject.com/wp/31730)\] -- Fixed: Dropdown for table highlighting configuration is off place \[[#31732](https://community.openproject.com/wp/31732)\] -- Fixed: Double click on WP row not working \[[#31737](https://community.openproject.com/wp/31737)\] -- Fixed: Unverified CSRF request in create budget form \[[#31739](https://community.openproject.com/wp/31739)\] -- Fixed: Selected long cf values are reduced to ... in ng-select \[[#31765](https://community.openproject.com/wp/31765)\] -- Fixed: Webhook is failing/crashing due to NameError \[[#31809](https://community.openproject.com/wp/31809)\] -- Fixed: API v3 /relations/:id does not check permissions \[[#31855](https://community.openproject.com/wp/31855)\] -- Fixed: Tabnabbing on wiki pages \[[#31817](https://community.openproject.com/wp/31817)\] +- Fixed: Outline of display-field extends table cell width \[[#31214](https://community.openproject.org/wp/31214)\] +- Fixed: SQL error in work package view \[[#31667](https://community.openproject.org/wp/31667)\] +- Fixed: Error in OpenProject::Patches::ActiveRecordJoinPartPatch module after ActiveRecord updating to 6 version \[[#31673](https://community.openproject.org/wp/31673)\] +- Fixed: [WorkPackages] "group by"-header line to short \[[#31720](https://community.openproject.org/wp/31720)\] +- Fixed: Second level menu of boards is not reachable on first click \[[#31721](https://community.openproject.org/wp/31721)\] +- Fixed: Doubled scrollbar in sidebar when "Buy Now" teaser is activated \[[#31729](https://community.openproject.org/wp/31729)\] +- Fixed: Main menu width is lost after closing it \[[#31730](https://community.openproject.org/wp/31730)\] +- Fixed: Dropdown for table highlighting configuration is off place \[[#31732](https://community.openproject.org/wp/31732)\] +- Fixed: Double click on WP row not working \[[#31737](https://community.openproject.org/wp/31737)\] +- Fixed: Unverified CSRF request in create budget form \[[#31739](https://community.openproject.org/wp/31739)\] +- Fixed: Selected long cf values are reduced to ... in ng-select \[[#31765](https://community.openproject.org/wp/31765)\] +- Fixed: Webhook is failing/crashing due to NameError \[[#31809](https://community.openproject.org/wp/31809)\] +- Fixed: API v3 /relations/:id does not check permissions \[[#31855](https://community.openproject.org/wp/31855)\] +- Fixed: Tabnabbing on wiki pages \[[#31817](https://community.openproject.org/wp/31817)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. -In this release, we would especially like to thank Bartosz Nowicki for responsibly disclosing a severe data leakage \([#31855](https://community.openproject.com/wp/31855)\). Behaviour like this helps improving the security for everybody, so thanks a lot Bartosz. And Thanh Nguyen Nguyen of [Fortiguard Labs](https://fortiguard.com/) has once again responsibly disclosed a security issue to us ([#31817](https://community.openproject.com/wp/31817)). Thank you, Nguyen. +In this release, we would especially like to thank Bartosz Nowicki for responsibly disclosing a severe data leakage \([#31855](https://community.openproject.org/wp/31855)\). Behavior like this helps improving the security for everybody, so thanks a lot Bartosz. And Thanh Nguyen Nguyen of [Fortiguard Labs](https://fortiguard.com/) has once again responsibly disclosed a security issue to us ([#31817](https://community.openproject.org/wp/31817)). Thank you, Nguyen. We'd also like to thank users for reporting bugs: diff --git a/docs/release-notes/10/10-3-0/README.md b/docs/release-notes/10/10-3-0/README.md index fb462826d809..cc131d84ddb0 100644 --- a/docs/release-notes/10/10-3-0/README.md +++ b/docs/release-notes/10/10-3-0/README.md @@ -31,27 +31,27 @@ You can use those custom fields to properly display text with a right-to-left or #### Bug fixes and changes -- Changed: [Watchers] Removing watcher sends email to removed watcher \[[#21304](https://community.openproject.com/wp/21304)\] -- Changed: Work packages tiles view for small screens \[[#31631](https://community.openproject.com/wp/31631)\] -- Changed: Scroll header out of view on mobile \[[#31699](https://community.openproject.com/wp/31699)\] -- Changed: Limit width of sidebar on mobile \[[#31701](https://community.openproject.com/wp/31701)\] -- Changed: Remove borders of card view on mobile work package page \[[#31702](https://community.openproject.com/wp/31702)\] -- Changed: Merge toolbar title and buttons into one line on mobile \[[#31736](https://community.openproject.com/wp/31736)\] -- Fixed: Translation error \[[#29828](https://community.openproject.com/wp/29828)\] -- Fixed: Attachment API tries to call `to_json` on binary data if attachment file has mime-type `application/json` \[[#31661](https://community.openproject.com/wp/31661)\] -- Fixed: Using "Back" button on WP show page reloads wp table \[[#31698](https://community.openproject.com/wp/31698)\] -- Fixed: Project list input has a zoom effect on iOS \[[#31700](https://community.openproject.com/wp/31700)\] -- Fixed: Board list buttons overlap the sidebar on mobile \[[#31722](https://community.openproject.com/wp/31722)\] -- Fixed: Bottom bar overlaps content on mobile \[[#31723](https://community.openproject.com/wp/31723)\] -- Fixed: Lists are out of place in rtl-CF \[[#31731](https://community.openproject.com/wp/31731)\] -- Fixed: More than two tildes (~) in markdown break CKEditor \[[#31749](https://community.openproject.com/wp/31749)\] -- Fixed: Avatar for user option "none" shown \[[#31764](https://community.openproject.com/wp/31764)\] -- Fixed: Closing an error message during registration closes whole form \[[#31808](https://community.openproject.com/wp/31808)\] -- Fixed: Version wiki page setting allows input (URL) breaking the version view \[[#31845](https://community.openproject.com/wp/31845)\] -- Fixed: Derived Values for Estimated Cut off \[[#31852](https://community.openproject.com/wp/31852)\] -- Fixed: Column height for work packages changes based on content \[[#31874](https://community.openproject.com/wp/31874)\] -- Fixed: Error 500 when non-admin tries to sort by project "Status" column \[[#31889](https://community.openproject.com/wp/31889)\] -- Fixed: On mobile side menu is cut off when opening side menu \[[#31891](https://community.openproject.com/wp/31891)\] +- Changed: [Watchers] Removing watcher sends email to removed watcher \[[#21304](https://community.openproject.org/wp/21304)\] +- Changed: Work packages tiles view for small screens \[[#31631](https://community.openproject.org/wp/31631)\] +- Changed: Scroll header out of view on mobile \[[#31699](https://community.openproject.org/wp/31699)\] +- Changed: Limit width of sidebar on mobile \[[#31701](https://community.openproject.org/wp/31701)\] +- Changed: Remove borders of card view on mobile work package page \[[#31702](https://community.openproject.org/wp/31702)\] +- Changed: Merge toolbar title and buttons into one line on mobile \[[#31736](https://community.openproject.org/wp/31736)\] +- Fixed: Translation error \[[#29828](https://community.openproject.org/wp/29828)\] +- Fixed: Attachment API tries to call `to_json` on binary data if attachment file has mime-type `application/json` \[[#31661](https://community.openproject.org/wp/31661)\] +- Fixed: Using "Back" button on WP show page reloads wp table \[[#31698](https://community.openproject.org/wp/31698)\] +- Fixed: Project list input has a zoom effect on iOS \[[#31700](https://community.openproject.org/wp/31700)\] +- Fixed: Board list buttons overlap the sidebar on mobile \[[#31722](https://community.openproject.org/wp/31722)\] +- Fixed: Bottom bar overlaps content on mobile \[[#31723](https://community.openproject.org/wp/31723)\] +- Fixed: Lists are out of place in rtl-CF \[[#31731](https://community.openproject.org/wp/31731)\] +- Fixed: More than two tildes (~) in markdown break CKEditor \[[#31749](https://community.openproject.org/wp/31749)\] +- Fixed: Avatar for user option "none" shown \[[#31764](https://community.openproject.org/wp/31764)\] +- Fixed: Closing an error message during registration closes whole form \[[#31808](https://community.openproject.org/wp/31808)\] +- Fixed: Version wiki page setting allows input (URL) breaking the version view \[[#31845](https://community.openproject.org/wp/31845)\] +- Fixed: Derived Values for Estimated Cut off \[[#31852](https://community.openproject.org/wp/31852)\] +- Fixed: Column height for work packages changes based on content \[[#31874](https://community.openproject.org/wp/31874)\] +- Fixed: Error 500 when non-admin tries to sort by project "Status" column \[[#31889](https://community.openproject.org/wp/31889)\] +- Fixed: On mobile side menu is cut off when opening side menu \[[#31891](https://community.openproject.org/wp/31891)\] ## Support diff --git a/docs/release-notes/10/10-3-1/README.md b/docs/release-notes/10/10-3-1/README.md index 0f654122ebc2..36161adf8dd5 100644 --- a/docs/release-notes/10/10-3-1/README.md +++ b/docs/release-notes/10/10-3-1/README.md @@ -8,16 +8,16 @@ release_date: 2020-01-15 # OpenProject 10.3.1 -We released [OpenProject 10.3.1](https://community.openproject.com/versions/1409). +We released [OpenProject 10.3.1](https://community.openproject.org/versions/1409). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Activity numbers only partly shown on mobile \[[#31892](https://community.openproject.com/wp/31892)\] -- Fixed: Text in custom field not correctly displayed \[[#31896](https://community.openproject.com/wp/31896)\] -- Fixed: New Wiki pages are not shown \[[#31907](https://community.openproject.com/wp/31907)\] -- Fixed: Date separator (dash) misplaced \[[#31926](https://community.openproject.com/wp/31926)\] +- Fixed: Activity numbers only partly shown on mobile \[[#31892](https://community.openproject.org/wp/31892)\] +- Fixed: Text in custom field not correctly displayed \[[#31896](https://community.openproject.org/wp/31896)\] +- Fixed: New Wiki pages are not shown \[[#31907](https://community.openproject.org/wp/31907)\] +- Fixed: Date separator (dash) misplaced \[[#31926](https://community.openproject.org/wp/31926)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/10/10-4-0/README.md b/docs/release-notes/10/10-4-0/README.md index a406650985dd..85a8e9f20527 100644 --- a/docs/release-notes/10/10-4-0/README.md +++ b/docs/release-notes/10/10-4-0/README.md @@ -95,94 +95,94 @@ You can slice 3D objects in all dimensions to get a view on the exact thing you ## Further improvements and bug fixes -- Changed: API v3 time entries create and update form as well as schema \[[#28727](https://community.openproject.com/wp/28727)\] -- Changed: Remove tab "Forum" from project settings \[[#31905](https://community.openproject.com/wp/31905)\] -- Changed: Replace project settings tab by sub menu entries \[[#31906](https://community.openproject.com/wp/31906)\] -- Changed: Adapt old tab layouts to newer search tabs \[[#31914](https://community.openproject.com/wp/31914)\] -- Changed: Simplify instance color theme changes (EE) \[[#31974](https://community.openproject.com/wp/31974)\] -- Changed: Zen mode for ifc viewer \[[#32053](https://community.openproject.com/wp/32053)\] -- Changed: Re-name menu item in project settings from Enabled modules to Modules and Backlogs settings to Backlogs \[[#32056](https://community.openproject.com/wp/32056)\] -- Changed: Formatted text for description in pdf export \[[#32065](https://community.openproject.com/wp/32065)\] -- Changed: Interactive time logging widget on my page \[[#32097](https://community.openproject.com/wp/32097)\] -- Changed: Change header of spent time widget in My page to "My spent time" and make it not-editable \[[#32127](https://community.openproject.com/wp/32127)\] -- Changed: Add button "Log time" on widget "My spent time" \[[#32128](https://community.openproject.com/wp/32128)\] -- Changed: Make header of spent time widget in Project overview page not-editable \[[#32130](https://community.openproject.com/wp/32130)\] -- Changed: Sort versions by date on wp list and version list and version autocompleter \[[#32156](https://community.openproject.com/wp/32156)\] -- Changed: Change OpenProject Dark theme to the same color theme as for BIM \[[#32191](https://community.openproject.com/wp/32191)\] -- Changed: Change wording of relation queries \[[#32209](https://community.openproject.com/wp/32209)\] -- Changed: Allow setting version on bulk copy \[[#32267](https://community.openproject.com/wp/32267)\] -- Fixed: Calendar does not respect "weeks start on" \[[#31271](https://community.openproject.com/wp/31271)\] -- Fixed: Overlapping menus on WP page \[[#31524](https://community.openproject.com/wp/31524)\] -- Fixed: Wrong characters encoding when using Work package export with html signs \[[#31676](https://community.openproject.com/wp/31676)\] -- Fixed: Limited entries in Spent Time list on My Page \[[#31685](https://community.openproject.com/wp/31685)\] -- Fixed: Project overview page not usable on mobile \[[#31744](https://community.openproject.com/wp/31744)\] -- Fixed: Language selection on mobile cut off \[[#31846](https://community.openproject.com/wp/31846)\] -- Fixed: Webhook is crashing internally with NameError: undefined local variable or method `params' \[[#31848](https://community.openproject.com/wp/31848)\] -- Fixed: Forum menu entry not highlighted \[[#31849](https://community.openproject.com/wp/31849)\] -- Fixed: Removing a date is from a WP is not consistently possible \[[#31859](https://community.openproject.com/wp/31859)\] -- Fixed: Ampersand (&) and quote marks (") is not exported correctly in work package description in pdf-export with description \[[#31860](https://community.openproject.com/wp/31860)\] -- Fixed: Keyboard opens unnecessarily on mobile \[[#31871](https://community.openproject.com/wp/31871)\] -- Fixed: Wrong thousands separator in budget values when language is set to German \[[#31911](https://community.openproject.com/wp/31911)\] -- Fixed: Child WP version cannot be edited although parent is no backlogs type \[[#31922](https://community.openproject.com/wp/31922)\] -- Fixed: Total Estimate time won't be re-calculated after hierarchy of sub-nodes changed \[[#31925](https://community.openproject.com/wp/31925)\] -- Fixed: Special characters (e.g. '#' and '&') trip up search autocompleter \[[#31964](https://community.openproject.com/wp/31964)\] -- Fixed: Migration from 7.4 to 10.3 fails \[[#31997](https://community.openproject.com/wp/31997)\] -- Fixed: Grey security badge showing "UNKNOWN" status after upgrade to OpenProject 10.3.1 \[[#32023](https://community.openproject.com/wp/32023)\] -- Fixed: Unable to login (fresh install) \[[#32028](https://community.openproject.com/wp/32028)\] -- Fixed: Error message is insufficient when IFC file size is too large \[[#32032](https://community.openproject.com/wp/32032)\] -- Fixed: Wording "Default value" is misleading \[[#32033](https://community.openproject.com/wp/32033)\] -- Fixed: Menu item "IFC Models" links to the default, although there is no default model \[[#32034](https://community.openproject.com/wp/32034)\] -- Fixed: Wrong breadcrumbs in Administration \[[#32039](https://community.openproject.com/wp/32039)\] -- Fixed: Duplicate work package priorities in Administration -> Enumerations \[[#32041](https://community.openproject.com/wp/32041)\] -- Fixed: In German separator for costs is wrong \[[#32042](https://community.openproject.com/wp/32042)\] -- Fixed: Roadmap index page highlights wrong menu item \[[#32103](https://community.openproject.com/wp/32103)\] -- Fixed: Server error after actions in the work package table \[[#32112](https://community.openproject.com/wp/32112)\] -- Fixed: Parent changes by drag and drop are not saved correctly \[[#32114](https://community.openproject.com/wp/32114)\] -- Fixed: Select all / unselect all for modules, work package types, etc. not visible \[[#32116](https://community.openproject.com/wp/32116)\] -- Fixed: Query indicates unsaved changes without changes to query \[[#32118](https://community.openproject.com/wp/32118)\] -- Fixed: Error when editing Gantt chart in quick succession (+ weird scheduling) \[[#32133](https://community.openproject.com/wp/32133)\] -- Fixed: Blank Gantt chart when zooming out \[[#32134](https://community.openproject.com/wp/32134)\] -- Fixed: In cost reports in Firefox cancel icons overlap filters \[[#32135](https://community.openproject.com/wp/32135)\] -- Fixed: Tab "Email notifications" loads for long time and header not shown \[[#32136](https://community.openproject.com/wp/32136)\] -- Fixed: Tabs in Firefox flicker \[[#32137](https://community.openproject.com/wp/32137)\] -- Fixed: OpenProject logo in light theme is hard to see \[[#32141](https://community.openproject.com/wp/32141)\] -- Fixed: Error 403 when trying to export work package table with descriptions \[[#32142](https://community.openproject.com/wp/32142)\] -- Fixed: Wrong icon in time entries modal \[[#32143](https://community.openproject.com/wp/32143)\] -- Fixed: The date field has wrong width in time entries modal \[[#32145](https://community.openproject.com/wp/32145)\] -- Fixed: The hours field has wrong width in time entries modal \[[#32146](https://community.openproject.com/wp/32146)\] -- Fixed: Wrong header in time entries form "Edit time entry" -> "Time entry" \[[#32147](https://community.openproject.com/wp/32147)\] -- Fixed: Redundant close button in the time entry modal \[[#32148](https://community.openproject.com/wp/32148)\] -- Fixed: Inconsistent/redundant naming in time entry creation modal \[[#32150](https://community.openproject.com/wp/32150)\] -- Fixed: "Get started for free" broken \[[#32161](https://community.openproject.com/wp/32161)\] -- Fixed: WP list does not update after updating a WP of that query \[[#32168](https://community.openproject.com/wp/32168)\] -- Fixed: Recaptcha should not target admin accounts \[[#32177](https://community.openproject.com/wp/32177)\] -- Fixed: Deleting work package will not refresh the list \[[#32179](https://community.openproject.com/wp/32179)\] -- Fixed: Edit a wiki page send an email with a wrong number for diff \[[#32180](https://community.openproject.com/wp/32180)\] -- Fixed: Version show page has the project settings menu item selected \[[#32183](https://community.openproject.com/wp/32183)\] -- Fixed: Backlogs settings available in project settings although backlogs module is not active \[[#32184](https://community.openproject.com/wp/32184)\] -- Fixed: Billing widget looks different on the starting screen \[[#32186](https://community.openproject.com/wp/32186)\] -- Fixed: Error message when trying to name group \[[#32189](https://community.openproject.com/wp/32189)\] -- Fixed: Work package relation labels inconsistent between form configuration and relations tab \[[#32190](https://community.openproject.com/wp/32190)\] -- Fixed: Page not found when exporting cost report without filters \[[#32200](https://community.openproject.com/wp/32200)\] -- Fixed: XLS export does not include work packages \[[#32201](https://community.openproject.com/wp/32201)\] -- Fixed: Update links on application start page and in help menu \[[#32202](https://community.openproject.com/wp/32202)\] -- Fixed: Missing indication if field is mandatory for time tracking \[[#32204](https://community.openproject.com/wp/32204)\] -- Fixed: Work package Save button should be blue (not alternative color in the theme settings) as all other save buttons in the application \[[#32205](https://community.openproject.com/wp/32205)\] -- Fixed: Moving time entries between dates leads to confusing behaviour \[[#32206](https://community.openproject.com/wp/32206)\] -- Fixed: Wrong query displayed after going to full screen view \[[#32216](https://community.openproject.com/wp/32216)\] -- Fixed: Unnecessary dots displayed in subject column \[[#32218](https://community.openproject.com/wp/32218)\] -- Fixed: Project sorting not working anymore \[[#32220](https://community.openproject.com/wp/32220)\] -- Fixed: Documents widget does not update if document content changes... \[[#32221](https://community.openproject.com/wp/32221)\] -- Fixed: Header menu item vanishes when moving the mouse a bit to the left \[[#32227](https://community.openproject.com/wp/32227)\] -- Fixed: + Forum button (create forum) should be green as all other + create buttons \[[#32228](https://community.openproject.com/wp/32228)\] -- Fixed: News widget does not update if title has been edited \[[#32235](https://community.openproject.com/wp/32235)\] -- Fixed: Error on WP count on roadmap \[[#32236](https://community.openproject.com/wp/32236)\] -- Fixed: Console error when switching from card to gantt view \[[#32254](https://community.openproject.com/wp/32254)\] -- Fixed: Remove hover effect of action column in children table \[[#32255](https://community.openproject.com/wp/32255)\] -- Fixed: Alignment WP filters incorrect \[[#32256](https://community.openproject.com/wp/32256)\] -- Fixed: Group counts only factor in the current page \[[#32259](https://community.openproject.com/wp/32259)\] -- Fixed: Missing warning message when deleting time entry (on My page) \[[#32268](https://community.openproject.com/wp/32268)\] -- Fixed: Unclear which assigned role an admin has in a project \[[#32274](https://community.openproject.com/wp/32274)\] +- Changed: API v3 time entries create and update form as well as schema \[[#28727](https://community.openproject.org/wp/28727)\] +- Changed: Remove tab "Forum" from project settings \[[#31905](https://community.openproject.org/wp/31905)\] +- Changed: Replace project settings tab by sub menu entries \[[#31906](https://community.openproject.org/wp/31906)\] +- Changed: Adapt old tab layouts to newer search tabs \[[#31914](https://community.openproject.org/wp/31914)\] +- Changed: Simplify instance color theme changes (EE) \[[#31974](https://community.openproject.org/wp/31974)\] +- Changed: Zen mode for ifc viewer \[[#32053](https://community.openproject.org/wp/32053)\] +- Changed: Re-name menu item in project settings from Enabled modules to Modules and Backlogs settings to Backlogs \[[#32056](https://community.openproject.org/wp/32056)\] +- Changed: Formatted text for description in pdf export \[[#32065](https://community.openproject.org/wp/32065)\] +- Changed: Interactive time logging widget on my page \[[#32097](https://community.openproject.org/wp/32097)\] +- Changed: Change header of spent time widget in My page to "My spent time" and make it not-editable \[[#32127](https://community.openproject.org/wp/32127)\] +- Changed: Add button "Log time" on widget "My spent time" \[[#32128](https://community.openproject.org/wp/32128)\] +- Changed: Make header of spent time widget in Project overview page not-editable \[[#32130](https://community.openproject.org/wp/32130)\] +- Changed: Sort versions by date on wp list and version list and version autocompleter \[[#32156](https://community.openproject.org/wp/32156)\] +- Changed: Change OpenProject Dark theme to the same color theme as for BIM \[[#32191](https://community.openproject.org/wp/32191)\] +- Changed: Change wording of relation queries \[[#32209](https://community.openproject.org/wp/32209)\] +- Changed: Allow setting version on bulk copy \[[#32267](https://community.openproject.org/wp/32267)\] +- Fixed: Calendar does not respect "weeks start on" \[[#31271](https://community.openproject.org/wp/31271)\] +- Fixed: Overlapping menus on WP page \[[#31524](https://community.openproject.org/wp/31524)\] +- Fixed: Wrong characters encoding when using Work package export with html signs \[[#31676](https://community.openproject.org/wp/31676)\] +- Fixed: Limited entries in Spent Time list on My Page \[[#31685](https://community.openproject.org/wp/31685)\] +- Fixed: Project overview page not usable on mobile \[[#31744](https://community.openproject.org/wp/31744)\] +- Fixed: Language selection on mobile cut off \[[#31846](https://community.openproject.org/wp/31846)\] +- Fixed: Webhook is crashing internally with NameError: undefined local variable or method `params' \[[#31848](https://community.openproject.org/wp/31848)\] +- Fixed: Forum menu entry not highlighted \[[#31849](https://community.openproject.org/wp/31849)\] +- Fixed: Removing a date is from a WP is not consistently possible \[[#31859](https://community.openproject.org/wp/31859)\] +- Fixed: Ampersand (&) and quote marks (") is not exported correctly in work package description in pdf-export with description \[[#31860](https://community.openproject.org/wp/31860)\] +- Fixed: Keyboard opens unnecessarily on mobile \[[#31871](https://community.openproject.org/wp/31871)\] +- Fixed: Wrong thousands separator in budget values when language is set to German \[[#31911](https://community.openproject.org/wp/31911)\] +- Fixed: Child WP version cannot be edited although parent is no backlogs type \[[#31922](https://community.openproject.org/wp/31922)\] +- Fixed: Total Estimate time won't be re-calculated after hierarchy of sub-nodes changed \[[#31925](https://community.openproject.org/wp/31925)\] +- Fixed: Special characters (e.g. '#' and '&') trip up search autocompleter \[[#31964](https://community.openproject.org/wp/31964)\] +- Fixed: Migration from 7.4 to 10.3 fails \[[#31997](https://community.openproject.org/wp/31997)\] +- Fixed: Grey security badge showing "UNKNOWN" status after upgrade to OpenProject 10.3.1 \[[#32023](https://community.openproject.org/wp/32023)\] +- Fixed: Unable to login (fresh install) \[[#32028](https://community.openproject.org/wp/32028)\] +- Fixed: Error message is insufficient when IFC file size is too large \[[#32032](https://community.openproject.org/wp/32032)\] +- Fixed: Wording "Default value" is misleading \[[#32033](https://community.openproject.org/wp/32033)\] +- Fixed: Menu item "IFC Models" links to the default, although there is no default model \[[#32034](https://community.openproject.org/wp/32034)\] +- Fixed: Wrong breadcrumbs in Administration \[[#32039](https://community.openproject.org/wp/32039)\] +- Fixed: Duplicate work package priorities in Administration -> Enumerations \[[#32041](https://community.openproject.org/wp/32041)\] +- Fixed: In German separator for costs is wrong \[[#32042](https://community.openproject.org/wp/32042)\] +- Fixed: Roadmap index page highlights wrong menu item \[[#32103](https://community.openproject.org/wp/32103)\] +- Fixed: Server error after actions in the work package table \[[#32112](https://community.openproject.org/wp/32112)\] +- Fixed: Parent changes by drag and drop are not saved correctly \[[#32114](https://community.openproject.org/wp/32114)\] +- Fixed: Select all / unselect all for modules, work package types, etc. not visible \[[#32116](https://community.openproject.org/wp/32116)\] +- Fixed: Query indicates unsaved changes without changes to query \[[#32118](https://community.openproject.org/wp/32118)\] +- Fixed: Error when editing Gantt chart in quick succession (+ weird scheduling) \[[#32133](https://community.openproject.org/wp/32133)\] +- Fixed: Blank Gantt chart when zooming out \[[#32134](https://community.openproject.org/wp/32134)\] +- Fixed: In cost reports in Firefox cancel icons overlap filters \[[#32135](https://community.openproject.org/wp/32135)\] +- Fixed: Tab "Email notifications" loads for long time and header not shown \[[#32136](https://community.openproject.org/wp/32136)\] +- Fixed: Tabs in Firefox flicker \[[#32137](https://community.openproject.org/wp/32137)\] +- Fixed: OpenProject logo in light theme is hard to see \[[#32141](https://community.openproject.org/wp/32141)\] +- Fixed: Error 403 when trying to export work package table with descriptions \[[#32142](https://community.openproject.org/wp/32142)\] +- Fixed: Wrong icon in time entries modal \[[#32143](https://community.openproject.org/wp/32143)\] +- Fixed: The date field has wrong width in time entries modal \[[#32145](https://community.openproject.org/wp/32145)\] +- Fixed: The hours field has wrong width in time entries modal \[[#32146](https://community.openproject.org/wp/32146)\] +- Fixed: Wrong header in time entries form "Edit time entry" -> "Time entry" \[[#32147](https://community.openproject.org/wp/32147)\] +- Fixed: Redundant close button in the time entry modal \[[#32148](https://community.openproject.org/wp/32148)\] +- Fixed: Inconsistent/redundant naming in time entry creation modal \[[#32150](https://community.openproject.org/wp/32150)\] +- Fixed: "Get started for free" broken \[[#32161](https://community.openproject.org/wp/32161)\] +- Fixed: WP list does not update after updating a WP of that query \[[#32168](https://community.openproject.org/wp/32168)\] +- Fixed: Recaptcha should not target admin accounts \[[#32177](https://community.openproject.org/wp/32177)\] +- Fixed: Deleting work package will not refresh the list \[[#32179](https://community.openproject.org/wp/32179)\] +- Fixed: Edit a wiki page send an email with a wrong number for diff \[[#32180](https://community.openproject.org/wp/32180)\] +- Fixed: Version show page has the project settings menu item selected \[[#32183](https://community.openproject.org/wp/32183)\] +- Fixed: Backlogs settings available in project settings although backlogs module is not active \[[#32184](https://community.openproject.org/wp/32184)\] +- Fixed: Billing widget looks different on the starting screen \[[#32186](https://community.openproject.org/wp/32186)\] +- Fixed: Error message when trying to name group \[[#32189](https://community.openproject.org/wp/32189)\] +- Fixed: Work package relation labels inconsistent between form configuration and relations tab \[[#32190](https://community.openproject.org/wp/32190)\] +- Fixed: Page not found when exporting cost report without filters \[[#32200](https://community.openproject.org/wp/32200)\] +- Fixed: XLS export does not include work packages \[[#32201](https://community.openproject.org/wp/32201)\] +- Fixed: Update links on application start page and in help menu \[[#32202](https://community.openproject.org/wp/32202)\] +- Fixed: Missing indication if field is mandatory for time tracking \[[#32204](https://community.openproject.org/wp/32204)\] +- Fixed: Work package Save button should be blue (not alternative color in the theme settings) as all other save buttons in the application \[[#32205](https://community.openproject.org/wp/32205)\] +- Fixed: Moving time entries between dates leads to confusing behavior \[[#32206](https://community.openproject.org/wp/32206)\] +- Fixed: Wrong query displayed after going to full screen view \[[#32216](https://community.openproject.org/wp/32216)\] +- Fixed: Unnecessary dots displayed in subject column \[[#32218](https://community.openproject.org/wp/32218)\] +- Fixed: Project sorting not working anymore \[[#32220](https://community.openproject.org/wp/32220)\] +- Fixed: Documents widget does not update if document content changes... \[[#32221](https://community.openproject.org/wp/32221)\] +- Fixed: Header menu item vanishes when moving the mouse a bit to the left \[[#32227](https://community.openproject.org/wp/32227)\] +- Fixed: + Forum button (create forum) should be green as all other + create buttons \[[#32228](https://community.openproject.org/wp/32228)\] +- Fixed: News widget does not update if title has been edited \[[#32235](https://community.openproject.org/wp/32235)\] +- Fixed: Error on WP count on roadmap \[[#32236](https://community.openproject.org/wp/32236)\] +- Fixed: Console error when switching from card to gantt view \[[#32254](https://community.openproject.org/wp/32254)\] +- Fixed: Remove hover effect of action column in children table \[[#32255](https://community.openproject.org/wp/32255)\] +- Fixed: Alignment WP filters incorrect \[[#32256](https://community.openproject.org/wp/32256)\] +- Fixed: Group counts only factor in the current page \[[#32259](https://community.openproject.org/wp/32259)\] +- Fixed: Missing warning message when deleting time entry (on My page) \[[#32268](https://community.openproject.org/wp/32268)\] +- Fixed: Unclear which assigned role an admin has in a project \[[#32274](https://community.openproject.org/wp/32274)\] ## Installation and Updates @@ -204,7 +204,7 @@ Try out OpenProject BIM 10.4. right away, create a free trial instance for the [ ## What is on the Roadmap? We are continuously developing new features for OpenProject. The next release will include improved scheduling in the Gantt chart. -Take a look at the [release timeline](https://community.openproject.com/projects/openproject/work_packages?query_id=918) to see the upcoming features and releases. +Take a look at the [release timeline](https://community.openproject.org/projects/openproject/work_packages?query_id=918) to see the upcoming features and releases. For the upcoming BIM specific release we are focusing on more building industry specific features and integrations, i.e. diff --git a/docs/release-notes/10/10-4-1/README.md b/docs/release-notes/10/10-4-1/README.md index 3959f4553388..059b2af4d061 100644 --- a/docs/release-notes/10/10-4-1/README.md +++ b/docs/release-notes/10/10-4-1/README.md @@ -8,7 +8,7 @@ release_date: 2020-03-04 # OpenProject 10.4.1 -We released [OpenProject 10.4.1](https://community.openproject.com/versions/1417). +We released [OpenProject 10.4.1](https://community.openproject.org/versions/1417). The release contains several bug fixes and we recommend updating to the newest version. @@ -27,12 +27,12 @@ If you have updated to 10.4.0 and were using project-based time entry activities #### Bug fixes and changes -- Fixed: Can not delete queries on community.openproject.com \[[#32326](https://community.openproject.com/wp/32326)\] -- Fixed: Special characters displayed as ASCII code in My Spent Time widget \[[#32328](https://community.openproject.com/wp/32328)\] -- Fixed: Custom Design gone after change color schema \[[#32356](https://community.openproject.com/wp/32356)\] -- Fixed: Project activities no more filtered when logging time \[[#32358](https://community.openproject.com/wp/32358)\] -- Fixed: Cost control - activity types lost after upgrade to 10.4 \[[#32360](https://community.openproject.com/wp/32360)\] -- Fixed: Unexpected submit when using IME \[[#32423](https://community.openproject.com/wp/32423)\] +- Fixed: Can not delete queries on community.openproject.org \[[#32326](https://community.openproject.org/wp/32326)\] +- Fixed: Special characters displayed as ASCII code in My Spent Time widget \[[#32328](https://community.openproject.org/wp/32328)\] +- Fixed: Custom Design gone after change color schema \[[#32356](https://community.openproject.org/wp/32356)\] +- Fixed: Project activities no more filtered when logging time \[[#32358](https://community.openproject.org/wp/32358)\] +- Fixed: Cost control - activity types lost after upgrade to 10.4 \[[#32360](https://community.openproject.org/wp/32360)\] +- Fixed: Unexpected submit when using IME \[[#32423](https://community.openproject.org/wp/32423)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/10/10-5-0/README.md b/docs/release-notes/10/10-5-0/README.md index 0d529bac17d9..2a120128b5ba 100644 --- a/docs/release-notes/10/10-5-0/README.md +++ b/docs/release-notes/10/10-5-0/README.md @@ -16,7 +16,7 @@ release_date: 2020-04-23 # OpenProject 10.5.0 -We released [OpenProject 10.5.0](https://community.openproject.com/versions/1386). +We released [OpenProject 10.5.0](https://community.openproject.org/versions/1386). The new release of the open source project management software contains new action boards for assignees, much more intuitive sorting of versions by name, the removed 24-hours booking restriction for time tracking, the summary of news on the project overview page, and much more usability improvements and bug fixes. We recommend updating to the newest version. @@ -89,99 +89,99 @@ An export function can then be used to distribute the BCFs back to the local app ### All changes and bug fixes -- Changed: Hide "Empty" work package updates \[[#21471](https://community.openproject.com/wp/21471)\] -- Changed: Create a "Action board" with "Action attribute" -> "Assignee" \[[#30157](https://community.openproject.com/wp/30157)\] -- Changed: Project Overview | news-widget: Show summary of news on widget \[[#32321](https://community.openproject.com/wp/32321)\] -- Changed: Change version, type, priority validations to case-insensitive \[[#32513](https://community.openproject.com/wp/32513)\] -- Changed: Sort versions by name not by dates \[[#32749](https://community.openproject.com/wp/32749)\] -- Changed: Remove 24 hour restriction for time tracking \[[#32811](https://community.openproject.com/wp/32811)\] -- Changed: What's new teaser OpenProject 10.5 \[[#33105](https://community.openproject.com/wp/33105)\] -- Changed: Change the Billing image on the start page to the new icon set \[[#33114](https://community.openproject.com/wp/33114)\] -- Fixed: Noop on WorkPackage creates empty journal \[[#21816](https://community.openproject.com/wp/21816)\] -- Fixed: Markdown link behind reverse proxy \[[#29010](https://community.openproject.com/wp/29010)\] -- Fixed: User List limitation in CostReport \[[#29524](https://community.openproject.com/wp/29524)\] -- Fixed: Work Package preview trigger area is too small \[[#31366](https://community.openproject.com/wp/31366)\] -- Fixed: OP 9/10 Coping projects results in forums not being copied even when checked. \[[#31472](https://community.openproject.com/wp/31472)\] -- Fixed: Relation "grid_widgets" does not exist \[[#31567](https://community.openproject.com/wp/31567)\] -- Fixed: Missing warning message when reopening agenda \[[#31598](https://community.openproject.com/wp/31598)\] -- Fixed: Can not add existing work package to board \[[#31613](https://community.openproject.com/wp/31613)\] -- Fixed: Checkboxes are not displayed properly in viewing mode \[[#31628](https://community.openproject.com/wp/31628)\] -- Fixed: Inconsistent translation of "News" in German \[[#31674](https://community.openproject.com/wp/31674)\] -- Fixed: Wiki tables not responsive + CSS weird + no markdown \[[#31920](https://community.openproject.com/wp/31920)\] -- Fixed: Strings not localized (password settings) \[[#31976](https://community.openproject.com/wp/31976)\] -- Fixed: Multiple Work Package Widgets on MyPage - Groups can't be reduced independently \[[#32030](https://community.openproject.com/wp/32030)\] -- Fixed: [Repository] Error 500 when trying to log time with unmapped changeset user \[[#32038](https://community.openproject.com/wp/32038)\] -- Fixed: Clean-up Administration -> System settings and remove wiki history compression \[[#32045](https://community.openproject.com/wp/32045)\] -- Fixed: Work package ID cut off on right side \[[#32069](https://community.openproject.com/wp/32069)\] -- Fixed: Project sorting not working anymore \[[#32220](https://community.openproject.com/wp/32220)\] -- Fixed: Incoming Mail does not find case-insensitive attributes such as status \[[#32251](https://community.openproject.com/wp/32251)\] -- Fixed: BIM theme is applied in standard edition \[[#32374](https://community.openproject.com/wp/32374)\] -- Fixed: Since migrate to 10.4 version unable to create SVN repository \[[#32389](https://community.openproject.com/wp/32389)\] -- Fixed: Drag placeholder in boards should look like on the project overview page \[[#32396](https://community.openproject.com/wp/32396)\] -- Fixed: Toolbar is cut off when sidebar is very large \[[#32430](https://community.openproject.com/wp/32430)\] -- Fixed: Wrong field type of Default Value in custom fields \[[#32445](https://community.openproject.com/wp/32445)\] -- Fixed: Order of work packages in copied project different from source project \[[#32447](https://community.openproject.com/wp/32447)\] -- Fixed: "All open" query still shows the card view \[[#32464](https://community.openproject.com/wp/32464)\] -- Fixed: missing www-authenticate in http 401 header for api/v3/time_entries/form \[[#32486](https://community.openproject.com/wp/32486)\] -- Fixed: Missing create button in work packages module on iOS \[[#32496](https://community.openproject.com/wp/32496)\] -- Fixed: Search filter transmitted although removed by user \[[#32500](https://community.openproject.com/wp/32500)\] -- Fixed: Split screen content not reachable on medium screen sizes \[[#32525](https://community.openproject.com/wp/32525)\] -- Fixed: Widget: My Spent Time: Time entry Search Function broken \[[#32578](https://community.openproject.com/wp/32578)\] -- Fixed: Cancel button does not remove the create form \[[#32647](https://community.openproject.com/wp/32647)\] -- Fixed: Usability bug: breadcrumbs do not follow usability best practices \[[#32650](https://community.openproject.com/wp/32650)\] -- Fixed: Emails are being sent for all created work packages when copying a project (even when email settings deactivated) \[[#32663](https://community.openproject.com/wp/32663)\] -- Fixed: Work package details view cut off on smaller screen \[[#32665](https://community.openproject.com/wp/32665)\] -- Fixed: Watcher autocompleter broken \[[#32666](https://community.openproject.com/wp/32666)\] -- Fixed: Adding child work packages not possible \[[#32670](https://community.openproject.com/wp/32670)\] -- Fixed: Dockerfile does not work on Windows \[[#32674](https://community.openproject.com/wp/32674)\] -- Fixed: Assigning a budget to a work package fails \[[#32732](https://community.openproject.com/wp/32732)\] -- Fixed: JS-Error on login page \[[#32738](https://community.openproject.com/wp/32738)\] -- Fixed: Project settings "(check/uncheck all)" misaligned \[[#32740](https://community.openproject.com/wp/32740)\] -- Fixed: "translation missing: en.button_history" error in meeting history view. \[[#32742](https://community.openproject.com/wp/32742)\] -- Fixed: Username attribute should not maintain whitespace \[[#32748](https://community.openproject.com/wp/32748)\] -- Fixed: Unnecessary scrollbar in split screen. \[[#32751](https://community.openproject.com/wp/32751)\] -- Fixed: Cost report: Error 404 when displaying cash value \[[#32752](https://community.openproject.com/wp/32752)\] -- Fixed: In forum "Quote" and "Reply" button do not automatically scroll to quote / reply (unclear that button has been pressed) \[[#32754](https://community.openproject.com/wp/32754)\] -- Fixed: Label "Message content" in forums not correctly aligned \[[#32755](https://community.openproject.com/wp/32755)\] -- Fixed: Disable possibility to change the user name when login via Google \[[#32779](https://community.openproject.com/wp/32779)\] -- Fixed: Several styling bugs in tables \[[#32781](https://community.openproject.com/wp/32781)\] -- Fixed: Update the project description onboarding texts and activate the project description in the demo projects \[[#32782](https://community.openproject.com/wp/32782)\] -- Fixed: Changing filter does not reset to first page \[[#32785](https://community.openproject.com/wp/32785)\] -- Fixed: Can not switch between work packages in split view \[[#32786](https://community.openproject.com/wp/32786)\] -- Fixed: Missing demo data: Teaser image and GETTING STARTED box for Demo project and Scrum project \[[#32799](https://community.openproject.com/wp/32799)\] -- Fixed: work packages with empty values are not sorted descending \[[#32808](https://community.openproject.com/wp/32808)\] -- Fixed: Resizers don't work on mobile devices \[[#32810](https://community.openproject.com/wp/32810)\] -- Fixed: Main menu state is not stored on page reload \[[#32814](https://community.openproject.com/wp/32814)\] -- Fixed: Planned cost increases by an order of magnitude (10x) when saving budget \[[#32822](https://community.openproject.com/wp/32822)\] -- Fixed: Cannot filter for Work package TYPE in Boards \[[#32824](https://community.openproject.com/wp/32824)\] -- Fixed: After adding or removing a column the change is not indicated in the query \[[#32835](https://community.openproject.com/wp/32835)\] -- Fixed: Query indicates unsaved changes without changes to query \[[#32843](https://community.openproject.com/wp/32843)\] -- Fixed: Avatars are incorrectly cached \[[#32870](https://community.openproject.com/wp/32870)\] -- Fixed: Hourly cron synchronization not executed in docker context \[[#32884](https://community.openproject.com/wp/32884)\] -- Fixed: Assignee list empty when creating a task in "modules" work package table \[[#32887](https://community.openproject.com/wp/32887)\] -- Fixed: [Docker] Attach files error "An internal error has occurred. The attachment could not be saved due to lacking file system permissions" \[[#32890](https://community.openproject.com/wp/32890)\] -- Fixed: Inconsistent breadcrumb in Administration -> Enterprise edition \[[#32905](https://community.openproject.com/wp/32905)\] -- Fixed: Styling and consistency issues in the confirm deletion modal for the EE token \[[#32908](https://community.openproject.com/wp/32908)\] -- Fixed: Misaligned menu opener in Backlogs plugin \[[#32923](https://community.openproject.com/wp/32923)\] -- Fixed: Wrong space in members widget after a group \[[#32927](https://community.openproject.com/wp/32927)\] -- Fixed: Filter for Type does not work in the WIKI makro \[[#32983](https://community.openproject.com/wp/32983)\] -- Fixed: Cannot assign tasks to groups in assignee board \[[#33072](https://community.openproject.com/wp/33072)\] -- Fixed: Enterprise-Upgrade-Video re-starts multiple times on Boards page \[[#33078](https://community.openproject.com/wp/33078)\] -- Fixed: Error 503 when trying to activate EE trial \[[#33080](https://community.openproject.com/wp/33080)\] -- Fixed: Error 500 when trying to remove EE trial license (on PullPreview) \[[#33081](https://community.openproject.com/wp/33081)\] -- Fixed: Wrong link to data privacy information \[[#33083](https://community.openproject.com/wp/33083)\] -- Fixed: Confirm icon too close to text in EE trial modal \[[#33084](https://community.openproject.com/wp/33084)\] -- Fixed: Internal error when trying to request EE trial license with Chinese language settings \[[#33085](https://community.openproject.com/wp/33085)\] -- Fixed: Cannot resend email to activate EE trial license \[[#33086](https://community.openproject.com/wp/33086)\] -- Fixed: Enterprise edition email confirmation page reloads automatically \[[#33087](https://community.openproject.com/wp/33087)\] -- Fixed: Button "Continue" when adding column to board should be named "Add" \[[#33090](https://community.openproject.com/wp/33090)\] -- Fixed: Internal error when trying to save manually sorted work package view \[[#33092](https://community.openproject.com/wp/33092)\] -- Fixed: Error when trying to export work packages \[[#33093](https://community.openproject.com/wp/33093)\] -- Fixed: Typo in change retraction message \[[#33094](https://community.openproject.com/wp/33094)\] -- Fixed: Export seems to be stuck in infinite loop when export with all columns \[[#33110](https://community.openproject.com/wp/33110)\] -- Fixed: Export ignores columns, order and groups when exporting grouped WP view \[[#33111](https://community.openproject.com/wp/33111)\] -- Fixed: String without translation in roles & permissions \[[#33113](https://community.openproject.com/wp/33113)\] -- Fixed: Cannot find users anymore with "+" sign in user name / email to add to project \[[#33115](https://community.openproject.com/wp/33115)\] +- Changed: Hide "Empty" work package updates \[[#21471](https://community.openproject.org/wp/21471)\] +- Changed: Create a "Action board" with "Action attribute" -> "Assignee" \[[#30157](https://community.openproject.org/wp/30157)\] +- Changed: Project Overview | news-widget: Show summary of news on widget \[[#32321](https://community.openproject.org/wp/32321)\] +- Changed: Change version, type, priority validations to case-insensitive \[[#32513](https://community.openproject.org/wp/32513)\] +- Changed: Sort versions by name not by dates \[[#32749](https://community.openproject.org/wp/32749)\] +- Changed: Remove 24 hour restriction for time tracking \[[#32811](https://community.openproject.org/wp/32811)\] +- Changed: What's new teaser OpenProject 10.5 \[[#33105](https://community.openproject.org/wp/33105)\] +- Changed: Change the Billing image on the start page to the new icon set \[[#33114](https://community.openproject.org/wp/33114)\] +- Fixed: Noop on WorkPackage creates empty journal \[[#21816](https://community.openproject.org/wp/21816)\] +- Fixed: Markdown link behind reverse proxy \[[#29010](https://community.openproject.org/wp/29010)\] +- Fixed: User List limitation in CostReport \[[#29524](https://community.openproject.org/wp/29524)\] +- Fixed: Work Package preview trigger area is too small \[[#31366](https://community.openproject.org/wp/31366)\] +- Fixed: OP 9/10 Coping projects results in forums not being copied even when checked. \[[#31472](https://community.openproject.org/wp/31472)\] +- Fixed: Relation "grid_widgets" does not exist \[[#31567](https://community.openproject.org/wp/31567)\] +- Fixed: Missing warning message when reopening agenda \[[#31598](https://community.openproject.org/wp/31598)\] +- Fixed: Can not add existing work package to board \[[#31613](https://community.openproject.org/wp/31613)\] +- Fixed: Checkboxes are not displayed properly in viewing mode \[[#31628](https://community.openproject.org/wp/31628)\] +- Fixed: Inconsistent translation of "News" in German \[[#31674](https://community.openproject.org/wp/31674)\] +- Fixed: Wiki tables not responsive + CSS weird + no markdown \[[#31920](https://community.openproject.org/wp/31920)\] +- Fixed: Strings not localized (password settings) \[[#31976](https://community.openproject.org/wp/31976)\] +- Fixed: Multiple Work Package Widgets on MyPage - Groups can't be reduced independently \[[#32030](https://community.openproject.org/wp/32030)\] +- Fixed: [Repository] Error 500 when trying to log time with unmapped changeset user \[[#32038](https://community.openproject.org/wp/32038)\] +- Fixed: Clean-up Administration -> System settings and remove wiki history compression \[[#32045](https://community.openproject.org/wp/32045)\] +- Fixed: Work package ID cut off on right side \[[#32069](https://community.openproject.org/wp/32069)\] +- Fixed: Project sorting not working anymore \[[#32220](https://community.openproject.org/wp/32220)\] +- Fixed: Incoming Mail does not find case-insensitive attributes such as status \[[#32251](https://community.openproject.org/wp/32251)\] +- Fixed: BIM theme is applied in standard edition \[[#32374](https://community.openproject.org/wp/32374)\] +- Fixed: Since migrate to 10.4 version unable to create SVN repository \[[#32389](https://community.openproject.org/wp/32389)\] +- Fixed: Drag placeholder in boards should look like on the project overview page \[[#32396](https://community.openproject.org/wp/32396)\] +- Fixed: Toolbar is cut off when sidebar is very large \[[#32430](https://community.openproject.org/wp/32430)\] +- Fixed: Wrong field type of Default Value in custom fields \[[#32445](https://community.openproject.org/wp/32445)\] +- Fixed: Order of work packages in copied project different from source project \[[#32447](https://community.openproject.org/wp/32447)\] +- Fixed: "All open" query still shows the card view \[[#32464](https://community.openproject.org/wp/32464)\] +- Fixed: missing www-authenticate in http 401 header for api/v3/time_entries/form \[[#32486](https://community.openproject.org/wp/32486)\] +- Fixed: Missing create button in work packages module on iOS \[[#32496](https://community.openproject.org/wp/32496)\] +- Fixed: Search filter transmitted although removed by user \[[#32500](https://community.openproject.org/wp/32500)\] +- Fixed: Split screen content not reachable on medium screen sizes \[[#32525](https://community.openproject.org/wp/32525)\] +- Fixed: Widget: My Spent Time: Time entry Search Function broken \[[#32578](https://community.openproject.org/wp/32578)\] +- Fixed: Cancel button does not remove the create form \[[#32647](https://community.openproject.org/wp/32647)\] +- Fixed: Usability bug: breadcrumbs do not follow usability best practices \[[#32650](https://community.openproject.org/wp/32650)\] +- Fixed: Emails are being sent for all created work packages when copying a project (even when email settings deactivated) \[[#32663](https://community.openproject.org/wp/32663)\] +- Fixed: Work package details view cut off on smaller screen \[[#32665](https://community.openproject.org/wp/32665)\] +- Fixed: Watcher autocompleter broken \[[#32666](https://community.openproject.org/wp/32666)\] +- Fixed: Adding child work packages not possible \[[#32670](https://community.openproject.org/wp/32670)\] +- Fixed: Dockerfile does not work on Windows \[[#32674](https://community.openproject.org/wp/32674)\] +- Fixed: Assigning a budget to a work package fails \[[#32732](https://community.openproject.org/wp/32732)\] +- Fixed: JS-Error on login page \[[#32738](https://community.openproject.org/wp/32738)\] +- Fixed: Project settings "(check/uncheck all)" misaligned \[[#32740](https://community.openproject.org/wp/32740)\] +- Fixed: "translation missing: en.button_history" error in meeting history view. \[[#32742](https://community.openproject.org/wp/32742)\] +- Fixed: Username attribute should not maintain whitespace \[[#32748](https://community.openproject.org/wp/32748)\] +- Fixed: Unnecessary scrollbar in split screen. \[[#32751](https://community.openproject.org/wp/32751)\] +- Fixed: Cost report: Error 404 when displaying cash value \[[#32752](https://community.openproject.org/wp/32752)\] +- Fixed: In forum "Quote" and "Reply" button do not automatically scroll to quote / reply (unclear that button has been pressed) \[[#32754](https://community.openproject.org/wp/32754)\] +- Fixed: Label "Message content" in forums not correctly aligned \[[#32755](https://community.openproject.org/wp/32755)\] +- Fixed: Disable possibility to change the user name when login via Google \[[#32779](https://community.openproject.org/wp/32779)\] +- Fixed: Several styling bugs in tables \[[#32781](https://community.openproject.org/wp/32781)\] +- Fixed: Update the project description onboarding texts and activate the project description in the demo projects \[[#32782](https://community.openproject.org/wp/32782)\] +- Fixed: Changing filter does not reset to first page \[[#32785](https://community.openproject.org/wp/32785)\] +- Fixed: Can not switch between work packages in split view \[[#32786](https://community.openproject.org/wp/32786)\] +- Fixed: Missing demo data: Teaser image and GETTING STARTED box for Demo project and Scrum project \[[#32799](https://community.openproject.org/wp/32799)\] +- Fixed: work packages with empty values are not sorted descending \[[#32808](https://community.openproject.org/wp/32808)\] +- Fixed: Resizers don't work on mobile devices \[[#32810](https://community.openproject.org/wp/32810)\] +- Fixed: Main menu state is not stored on page reload \[[#32814](https://community.openproject.org/wp/32814)\] +- Fixed: Planned cost increases by an order of magnitude (10x) when saving budget \[[#32822](https://community.openproject.org/wp/32822)\] +- Fixed: Cannot filter for Work package TYPE in Boards \[[#32824](https://community.openproject.org/wp/32824)\] +- Fixed: After adding or removing a column the change is not indicated in the query \[[#32835](https://community.openproject.org/wp/32835)\] +- Fixed: Query indicates unsaved changes without changes to query \[[#32843](https://community.openproject.org/wp/32843)\] +- Fixed: Avatars are incorrectly cached \[[#32870](https://community.openproject.org/wp/32870)\] +- Fixed: Hourly cron synchronization not executed in docker context \[[#32884](https://community.openproject.org/wp/32884)\] +- Fixed: Assignee list empty when creating a task in "modules" work package table \[[#32887](https://community.openproject.org/wp/32887)\] +- Fixed: [Docker] Attach files error "An internal error has occurred. The attachment could not be saved due to lacking file system permissions" \[[#32890](https://community.openproject.org/wp/32890)\] +- Fixed: Inconsistent breadcrumb in Administration -> Enterprise edition \[[#32905](https://community.openproject.org/wp/32905)\] +- Fixed: Styling and consistency issues in the confirm deletion modal for the EE token \[[#32908](https://community.openproject.org/wp/32908)\] +- Fixed: Misaligned menu opener in Backlogs plugin \[[#32923](https://community.openproject.org/wp/32923)\] +- Fixed: Wrong space in members widget after a group \[[#32927](https://community.openproject.org/wp/32927)\] +- Fixed: Filter for Type does not work in the WIKI macro \[[#32983](https://community.openproject.org/wp/32983)\] +- Fixed: Cannot assign tasks to groups in assignee board \[[#33072](https://community.openproject.org/wp/33072)\] +- Fixed: Enterprise-Upgrade-Video re-starts multiple times on Boards page \[[#33078](https://community.openproject.org/wp/33078)\] +- Fixed: Error 503 when trying to activate EE trial \[[#33080](https://community.openproject.org/wp/33080)\] +- Fixed: Error 500 when trying to remove EE trial license (on PullPreview) \[[#33081](https://community.openproject.org/wp/33081)\] +- Fixed: Wrong link to data privacy information \[[#33083](https://community.openproject.org/wp/33083)\] +- Fixed: Confirm icon too close to text in EE trial modal \[[#33084](https://community.openproject.org/wp/33084)\] +- Fixed: Internal error when trying to request EE trial license with Chinese language settings \[[#33085](https://community.openproject.org/wp/33085)\] +- Fixed: Cannot resend email to activate EE trial license \[[#33086](https://community.openproject.org/wp/33086)\] +- Fixed: Enterprise edition email confirmation page reloads automatically \[[#33087](https://community.openproject.org/wp/33087)\] +- Fixed: Button "Continue" when adding column to board should be named "Add" \[[#33090](https://community.openproject.org/wp/33090)\] +- Fixed: Internal error when trying to save manually sorted work package view \[[#33092](https://community.openproject.org/wp/33092)\] +- Fixed: Error when trying to export work packages \[[#33093](https://community.openproject.org/wp/33093)\] +- Fixed: Typo in change retraction message \[[#33094](https://community.openproject.org/wp/33094)\] +- Fixed: Export seems to be stuck in infinite loop when export with all columns \[[#33110](https://community.openproject.org/wp/33110)\] +- Fixed: Export ignores columns, order and groups when exporting grouped WP view \[[#33111](https://community.openproject.org/wp/33111)\] +- Fixed: String without translation in roles & permissions \[[#33113](https://community.openproject.org/wp/33113)\] +- Fixed: Cannot find users anymore with "+" sign in user name / email to add to project \[[#33115](https://community.openproject.org/wp/33115)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/10/10-5-1/README.md b/docs/release-notes/10/10-5-1/README.md index 8b9910315480..c3bf9e122290 100644 --- a/docs/release-notes/10/10-5-1/README.md +++ b/docs/release-notes/10/10-5-1/README.md @@ -8,25 +8,25 @@ release_date: 2020-05-06 # OpenProject 10.5.1 -We released [OpenProject 10.5.1](https://community.openproject.com/versions/1426). +We released [OpenProject 10.5.1](https://community.openproject.org/versions/1426). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Remove horizontal line in several modules above buttons \[[#32924](https://community.openproject.com/wp/32924)\] -- Fixed: Alignment for assignee in Gantt chart off \[[#33097](https://community.openproject.com/wp/33097)\] -- Fixed: Scale for spent time widget wrong (especially when logging a lot of time on same day) \[[#33128](https://community.openproject.com/wp/33128)\] -- Fixed: bcf api is called although bim is disabled for the instance \[[#33130](https://community.openproject.com/wp/33130)\] -- Fixed: Search instead of work package is shown when entering id and pressing enter in search in quick succession \[[#33137](https://community.openproject.com/wp/33137)\] -- Fixed: Wiki CKEditor5 toolbar no longer sticky \[[#33144](https://community.openproject.com/wp/33144)\] -- Fixed: Number vanishes in time logging widget \[[#33185](https://community.openproject.com/wp/33185)\] -- Fixed: Main menu doesn't open when resized to 0 width \[[#33188](https://community.openproject.com/wp/33188)\] -- Fixed: BCF thumbnail column available in non-bim instances \[[#33190](https://community.openproject.com/wp/33190)\] -- Fixed: Missing translation for default assignee board name \[[#33193](https://community.openproject.com/wp/33193)\] -- Fixed: Avoid selecting text while resizing main menu \[[#33194](https://community.openproject.com/wp/33194)\] -- Fixed: Assignee board breaks in sub url \[[#33202](https://community.openproject.com/wp/33202)\] -- Fixed: n+1 query in work package list (for bcf_issues) \[[#33234](https://community.openproject.com/wp/33234)\] -- Fixed: Avoid sending mails on seeding \[[#33245](https://community.openproject.com/wp/33245)\] -- Fixed: Error 500 when comparing meeting versions / diffs \[[#33253](https://community.openproject.com/wp/33253)\] -- Changed: Fulltext autocompletion for work packages 2.0 \[[#33133](https://community.openproject.com/wp/33133)\] +- Fixed: Remove horizontal line in several modules above buttons \[[#32924](https://community.openproject.org/wp/32924)\] +- Fixed: Alignment for assignee in Gantt chart off \[[#33097](https://community.openproject.org/wp/33097)\] +- Fixed: Scale for spent time widget wrong (especially when logging a lot of time on same day) \[[#33128](https://community.openproject.org/wp/33128)\] +- Fixed: bcf api is called although bim is disabled for the instance \[[#33130](https://community.openproject.org/wp/33130)\] +- Fixed: Search instead of work package is shown when entering id and pressing enter in search in quick succession \[[#33137](https://community.openproject.org/wp/33137)\] +- Fixed: Wiki CKEditor5 toolbar no longer sticky \[[#33144](https://community.openproject.org/wp/33144)\] +- Fixed: Number vanishes in time logging widget \[[#33185](https://community.openproject.org/wp/33185)\] +- Fixed: Main menu doesn't open when resized to 0 width \[[#33188](https://community.openproject.org/wp/33188)\] +- Fixed: BCF thumbnail column available in non-bim instances \[[#33190](https://community.openproject.org/wp/33190)\] +- Fixed: Missing translation for default assignee board name \[[#33193](https://community.openproject.org/wp/33193)\] +- Fixed: Avoid selecting text while resizing main menu \[[#33194](https://community.openproject.org/wp/33194)\] +- Fixed: Assignee board breaks in sub url \[[#33202](https://community.openproject.org/wp/33202)\] +- Fixed: n+1 query in work package list (for bcf_issues) \[[#33234](https://community.openproject.org/wp/33234)\] +- Fixed: Avoid sending mails on seeding \[[#33245](https://community.openproject.org/wp/33245)\] +- Fixed: Error 500 when comparing meeting versions / diffs \[[#33253](https://community.openproject.org/wp/33253)\] +- Changed: Fulltext autocompletion for work packages 2.0 \[[#33133](https://community.openproject.org/wp/33133)\] diff --git a/docs/release-notes/10/10-6-0/README.md b/docs/release-notes/10/10-6-0/README.md index 98e2fcb7bcff..336f0a6b96d9 100644 --- a/docs/release-notes/10/10-6-0/README.md +++ b/docs/release-notes/10/10-6-0/README.md @@ -57,7 +57,7 @@ OpenProject 10.6 will upgrade the card view of work packages. To make clear what If you are creating an agile boards by assignees, you will get notified if there are no members in your project. You will also get notified if you are trying to add another assignee list to your board even though there is no more member left. -![asssignee-board-notification](asssignee-board-notification.png) +![Assignee board notification](asssignee-board-notification.png) ### Various usability improvements and bug fixes @@ -65,40 +65,40 @@ Furthermore, the **styling of the news widget** on the project overview page as #### All bug fixes and changes -- Epic: Aggregate activity entries \[[#23744](https://community.openproject.com/wp/23744)\] -- Fixed: Date picker allows selection a year for only the next 10 years. Needs to increase. \[[#29413](https://community.openproject.com/wp/29413)\] -- Fixed: Weird date format at meetings page \[[#32986](https://community.openproject.com/wp/32986)\] -- Fixed: [Work packages] Custom fields for long text \[[#33143](https://community.openproject.com/wp/33143)\] -- Fixed: .xls exports of cost reports use incorrect decimal precision \[[#33149](https://community.openproject.com/wp/33149)\] -- Fixed: Button to log time is shown even if I do not have the permissions \[[#33152](https://community.openproject.com/wp/33152)\] -- Fixed: Main menu element is not correctly highlighted when creating a new category \[[#33154](https://community.openproject.com/wp/33154)\] -- Fixed: Main menu resizer icon not draggable \[[#33187](https://community.openproject.com/wp/33187)\] -- Fixed: Work Package - Comment can only be edited once per description call \[[#33200](https://community.openproject.com/wp/33200)\] -- Fixed: Assignee board breaks in sub url \[[#33202](https://community.openproject.com/wp/33202)\] -- Fixed: Logged time widget does not update correctly \[[#33217](https://community.openproject.com/wp/33217)\] -- Fixed: OAuth settings and docs both do not provide information for endpoints \[[#33241](https://community.openproject.com/wp/33241)\] -- Fixed: Time Tracking Issue After update OpenProject 10.5.2 (PostgreSQL) \[[#33310](https://community.openproject.com/wp/33310)\] -- Fixed: Timeout / error 500 when setting current unit cost rate \[[#33319](https://community.openproject.com/wp/33319)\] -- Fixed: Form misplaced after error \[[#33324](https://community.openproject.com/wp/33324)\] -- Fixed: Create child in work package table does not create parent-child relationship \[[#33329](https://community.openproject.com/wp/33329)\] -- Fixed: Oauth endpoints need to allow target hosts in CSP header "form-action" \[[#33336](https://community.openproject.com/wp/33336)\] -- Fixed: Time logging not possible with custom field of type "version" \[[#33378](https://community.openproject.com/wp/33378)\] -- Fixed: Mailing configuration appears not to be reloaded in workers \[[#33413](https://community.openproject.com/wp/33413)\] -- Fixed: layout bug when setting new parent \[[#33449](https://community.openproject.com/wp/33449)\] -- Fixed: Clicking on info icon on card view doesn't do anything \[[#33451](https://community.openproject.com/wp/33451)\] -- Fixed: Fetching recent work packages when logging time fails with internal error \[[#33472](https://community.openproject.com/wp/33472)\] -- Changed: Show Project name in Card View \[[#31556](https://community.openproject.com/wp/31556)\] -- Changed: Use angular modal for time logging throughout the application \[[#32126](https://community.openproject.com/wp/32126)\] -- Changed: Add icon "Log time" close to spent time attribute in work packages details view \[[#32129](https://community.openproject.com/wp/32129)\] -- Changed: Make cancel buttons consistent \[[#32919](https://community.openproject.com/wp/32919)\] -- Changed: Improve styling for the news widget \[[#32926](https://community.openproject.com/wp/32926)\] -- Changed: Add notification message to assignee board when no project members \[[#33073](https://community.openproject.com/wp/33073)\] -- Changed: Extend token structure with attributes company and domain \[[#33129](https://community.openproject.com/wp/33129)\] -- Changed: Move "log time" icon outside of the hover highlighting \[[#33307](https://community.openproject.com/wp/33307)\] -- Changed: Allow defining CA path of LDAP connection \[[#33345](https://community.openproject.com/wp/33345)\] -- Changed: Enable more table features in texteditor \[[#33349](https://community.openproject.com/wp/33349)\] -- Changed: Enable Projects for outgoing Webhooks \[[#33355](https://community.openproject.com/wp/33355)\] -- Changed: New Features teaser for 10.6 \[[#33470](https://community.openproject.com/wp/33470)\] +- Epic: Aggregate activity entries \[[#23744](https://community.openproject.org/wp/23744)\] +- Fixed: Date picker allows selection a year for only the next 10 years. Needs to increase. \[[#29413](https://community.openproject.org/wp/29413)\] +- Fixed: Weird date format at meetings page \[[#32986](https://community.openproject.org/wp/32986)\] +- Fixed: [Work packages] Custom fields for long text \[[#33143](https://community.openproject.org/wp/33143)\] +- Fixed: .xls exports of cost reports use incorrect decimal precision \[[#33149](https://community.openproject.org/wp/33149)\] +- Fixed: Button to log time is shown even if I do not have the permissions \[[#33152](https://community.openproject.org/wp/33152)\] +- Fixed: Main menu element is not correctly highlighted when creating a new category \[[#33154](https://community.openproject.org/wp/33154)\] +- Fixed: Main menu resizer icon not draggable \[[#33187](https://community.openproject.org/wp/33187)\] +- Fixed: Work Package - Comment can only be edited once per description call \[[#33200](https://community.openproject.org/wp/33200)\] +- Fixed: Assignee board breaks in sub url \[[#33202](https://community.openproject.org/wp/33202)\] +- Fixed: Logged time widget does not update correctly \[[#33217](https://community.openproject.org/wp/33217)\] +- Fixed: OAuth settings and docs both do not provide information for endpoints \[[#33241](https://community.openproject.org/wp/33241)\] +- Fixed: Time Tracking Issue After update OpenProject 10.5.2 (PostgreSQL) \[[#33310](https://community.openproject.org/wp/33310)\] +- Fixed: Timeout / error 500 when setting current unit cost rate \[[#33319](https://community.openproject.org/wp/33319)\] +- Fixed: Form misplaced after error \[[#33324](https://community.openproject.org/wp/33324)\] +- Fixed: Create child in work package table does not create parent-child relationship \[[#33329](https://community.openproject.org/wp/33329)\] +- Fixed: Oauth endpoints need to allow target hosts in CSP header "form-action" \[[#33336](https://community.openproject.org/wp/33336)\] +- Fixed: Time logging not possible with custom field of type "version" \[[#33378](https://community.openproject.org/wp/33378)\] +- Fixed: Mailing configuration appears not to be reloaded in workers \[[#33413](https://community.openproject.org/wp/33413)\] +- Fixed: layout bug when setting new parent \[[#33449](https://community.openproject.org/wp/33449)\] +- Fixed: Clicking on info icon on card view doesn't do anything \[[#33451](https://community.openproject.org/wp/33451)\] +- Fixed: Fetching recent work packages when logging time fails with internal error \[[#33472](https://community.openproject.org/wp/33472)\] +- Changed: Show Project name in Card View \[[#31556](https://community.openproject.org/wp/31556)\] +- Changed: Use angular modal for time logging throughout the application \[[#32126](https://community.openproject.org/wp/32126)\] +- Changed: Add icon "Log time" close to spent time attribute in work packages details view \[[#32129](https://community.openproject.org/wp/32129)\] +- Changed: Make cancel buttons consistent \[[#32919](https://community.openproject.org/wp/32919)\] +- Changed: Improve styling for the news widget \[[#32926](https://community.openproject.org/wp/32926)\] +- Changed: Add notification message to assignee board when no project members \[[#33073](https://community.openproject.org/wp/33073)\] +- Changed: Extend token structure with attributes company and domain \[[#33129](https://community.openproject.org/wp/33129)\] +- Changed: Move "log time" icon outside of the hover highlighting \[[#33307](https://community.openproject.org/wp/33307)\] +- Changed: Allow defining CA path of LDAP connection \[[#33345](https://community.openproject.org/wp/33345)\] +- Changed: Enable more table features in text editor \[[#33349](https://community.openproject.org/wp/33349)\] +- Changed: Enable Projects for outgoing Webhooks \[[#33355](https://community.openproject.org/wp/33355)\] +- Changed: New Features teaser for 10.6 \[[#33470](https://community.openproject.org/wp/33470)\] @@ -141,7 +141,7 @@ Special thanks for reporting and finding bugs go to Marc Vollmer, Ricardo Vigatti, Sébastien VITA, Tino Breddin, Lukas Zeil, Rajesh Vishwakarma, Gio @ Enuan, Harald Holzmann. - DBI AG for sponsoring the BCF Management. -- Lindsay Kay for the integration of the 3D Modell viewer, [xeokit](https://xeokit.io/), as well as for improving the camera control in the IFC viewer. +- Lindsay Kay for the integration of the 3D Model viewer, [xeokit](https://xeokit.io/), as well as for improving the camera control in the IFC viewer. - [Georg Dangl](https://blog.dangl.me/categories/BIM) for developing the Revit Integration in OpenProject. - All the developers, designers, project managers who have contributed to OpenProject. - Every dedicated user who has reported bugs and supported the community by asking and answering questions in the [forum](https://community.openproject.org/projects/openproject/boards). diff --git a/docs/release-notes/10/10-6-1/README.md b/docs/release-notes/10/10-6-1/README.md index b78c2395bac7..da59ee590a13 100644 --- a/docs/release-notes/10/10-6-1/README.md +++ b/docs/release-notes/10/10-6-1/README.md @@ -8,15 +8,15 @@ release_date: 2020-06-08 # OpenProject 10.6.1 -We released [OpenProject 10.6.1](https://community.openproject.com/versions/1437). +We released [OpenProject 10.6.1](https://community.openproject.org/versions/1437). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Second page is cut off when exporting to PDF \[[#33203](https://community.openproject.com/wp/33203)\] -- Fixed: Cannot focus "Log time" by keyboard (accessibility) \[[#33380](https://community.openproject.com/wp/33380)\] -- Fixed: Inconsistent confirmation modal for deleting a time entry \[[#33447](https://community.openproject.com/wp/33447)\] -- Fixed: Error "Resource" not found when trying to upload Gif to comment \[[#33486](https://community.openproject.com/wp/33486)\] -- Fixed: Rename work package permission "Manage subtasks" to "Manage work package hierarchies" \[[#33520](https://community.openproject.com/wp/33520)\] -- Fixed: Ungrouped cost report issues n requests to cost entries api for n entries displayed \[[#33522](https://community.openproject.com/wp/33522)\] +- Fixed: Second page is cut off when exporting to PDF \[[#33203](https://community.openproject.org/wp/33203)\] +- Fixed: Cannot focus "Log time" by keyboard (accessibility) \[[#33380](https://community.openproject.org/wp/33380)\] +- Fixed: Inconsistent confirmation modal for deleting a time entry \[[#33447](https://community.openproject.org/wp/33447)\] +- Fixed: Error "Resource" not found when trying to upload Gif to comment \[[#33486](https://community.openproject.org/wp/33486)\] +- Fixed: Rename work package permission "Manage subtasks" to "Manage work package hierarchies" \[[#33520](https://community.openproject.org/wp/33520)\] +- Fixed: Ungrouped cost report issues n requests to cost entries api for n entries displayed \[[#33522](https://community.openproject.org/wp/33522)\] diff --git a/docs/release-notes/10/10-6-2/README.md b/docs/release-notes/10/10-6-2/README.md index 8d7731c65c91..73d22e2255a7 100644 --- a/docs/release-notes/10/10-6-2/README.md +++ b/docs/release-notes/10/10-6-2/README.md @@ -8,24 +8,24 @@ release_date: 2020-06-23 # OpenProject 10.6.2 -We released [OpenProject 10.6.2](https://community.openproject.com/versions/1440). +We released [OpenProject 10.6.2](https://community.openproject.org/versions/1440). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Usability bug: activity toggle not readily visible \[[#32649](https://community.openproject.com/wp/32649)\] -- Fixed: Multiple spaces in project name causes problems \[[#33344](https://community.openproject.com/wp/33344)\] -- Fixed: Empty fields are too small in the WP view \[[#33400](https://community.openproject.com/wp/33400)\] -- Fixed: Closing icon overlaps modal header when the content is small \[[#33446](https://community.openproject.com/wp/33446)\] -- Fixed: Entries on card view not rearranged when applying filter \[[#33454](https://community.openproject.com/wp/33454)\] -- Fixed: Show link for Log time and harmonize font \[[#33460](https://community.openproject.com/wp/33460)\] -- Fixed: Users without editing permission can move widgets on overview page (frontend only) \[[#33478](https://community.openproject.com/wp/33478)\] -- Fixed: Checkboxes in work package comments not properly displayed / tab issue \[[#33488](https://community.openproject.com/wp/33488)\] -- Fixed: Modal does not close on click outside \[[#33585](https://community.openproject.com/wp/33585)\] -- Fixed: Error loading board list \[[#33602](https://community.openproject.com/wp/33602)\] -- Fixed: SAML single sign out URL is not being respected \[[#33617](https://community.openproject.com/wp/33617)\] -- Fixed: Remapping of existing users with `oauth_allow_remapping_of_existing_users' does not work with LDAP users \[[#33620](https://community.openproject.com/wp/33620)\] +- Fixed: Usability bug: activity toggle not readily visible \[[#32649](https://community.openproject.org/wp/32649)\] +- Fixed: Multiple spaces in project name causes problems \[[#33344](https://community.openproject.org/wp/33344)\] +- Fixed: Empty fields are too small in the WP view \[[#33400](https://community.openproject.org/wp/33400)\] +- Fixed: Closing icon overlaps modal header when the content is small \[[#33446](https://community.openproject.org/wp/33446)\] +- Fixed: Entries on card view not rearranged when applying filter \[[#33454](https://community.openproject.org/wp/33454)\] +- Fixed: Show link for Log time and harmonize font \[[#33460](https://community.openproject.org/wp/33460)\] +- Fixed: Users without editing permission can move widgets on overview page (frontend only) \[[#33478](https://community.openproject.org/wp/33478)\] +- Fixed: Checkboxes in work package comments not properly displayed / tab issue \[[#33488](https://community.openproject.org/wp/33488)\] +- Fixed: Modal does not close on click outside \[[#33585](https://community.openproject.org/wp/33585)\] +- Fixed: Error loading board list \[[#33602](https://community.openproject.org/wp/33602)\] +- Fixed: SAML single sign out URL is not being respected \[[#33617](https://community.openproject.org/wp/33617)\] +- Fixed: Remapping of existing users with `oauth_allow_remapping_of_existing_users' does not work with LDAP users \[[#33620](https://community.openproject.org/wp/33620)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/10/10-6-3/README.md b/docs/release-notes/10/10-6-3/README.md index 0acfe3c7020a..a45099d4dd8c 100644 --- a/docs/release-notes/10/10-6-3/README.md +++ b/docs/release-notes/10/10-6-3/README.md @@ -8,18 +8,18 @@ release_date: 2020-06-29 # OpenProject 10.6.3 -We released [OpenProject 10.6.3](https://community.openproject.com/versions/1441). +We released [OpenProject 10.6.3](https://community.openproject.org/versions/1441). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Arrow next to parent task still shown after removing subtask \[[#33109](https://community.openproject.com/wp/33109)\] -- Fixed: Multiple spaces in project name causes problems \[[#33344](https://community.openproject.com/wp/33344)\] -- Fixed: Number indicator for MultiSelect user fields is not visible in table \[[#33452](https://community.openproject.com/wp/33452)\] -- Fixed: Cannot remove user from project after adding and removing group user is part of \[[#33659](https://community.openproject.com/wp/33659)\] -- Fixed: Number of watchers not shown when opening work package in full screen (through double-click) \[[#33685](https://community.openproject.com/wp/33685)\] -- Changed: Don't poll queries in boards in inactive tabs \[[#33707](https://community.openproject.com/wp/33707)\] +- Fixed: Arrow next to parent task still shown after removing subtask \[[#33109](https://community.openproject.org/wp/33109)\] +- Fixed: Multiple spaces in project name causes problems \[[#33344](https://community.openproject.org/wp/33344)\] +- Fixed: Number indicator for MultiSelect user fields is not visible in table \[[#33452](https://community.openproject.org/wp/33452)\] +- Fixed: Cannot remove user from project after adding and removing group user is part of \[[#33659](https://community.openproject.org/wp/33659)\] +- Fixed: Number of watchers not shown when opening work package in full screen (through double-click) \[[#33685](https://community.openproject.org/wp/33685)\] +- Changed: Don't poll queries in boards in inactive tabs \[[#33707](https://community.openproject.org/wp/33707)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/10/10-6-4/README.md b/docs/release-notes/10/10-6-4/README.md index d7693a4b1f2b..c6e4482de730 100644 --- a/docs/release-notes/10/10-6-4/README.md +++ b/docs/release-notes/10/10-6-4/README.md @@ -8,7 +8,7 @@ release_date: 2020-06-30 # OpenProject 10.6.4 -We released [OpenProject 10.6.4](https://community.openproject.com/versions/1443). +We released [OpenProject 10.6.4](https://community.openproject.org/versions/1443). The release contains several bug fixes and we recommend updating to the newest version. diff --git a/docs/release-notes/10/10-6-5/README.md b/docs/release-notes/10/10-6-5/README.md index ae965a879330..38f8ac63d515 100644 --- a/docs/release-notes/10/10-6-5/README.md +++ b/docs/release-notes/10/10-6-5/README.md @@ -8,14 +8,14 @@ release_date: 2020-07-21 # OpenProject 10.6.5 -We released [OpenProject 10.6.5](https://community.openproject.com/versions/1446). +We released [OpenProject 10.6.5](https://community.openproject.org/versions/1446). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Comments get repeated when entering several comments within 5 minutes \[[#33744](https://community.openproject.com/wp/33744)\] -- Fixed: Wrong (abusive) translations on avatar change page in russian localization. \[[#33888](https://community.openproject.com/wp/33888)\] +- Fixed: Comments get repeated when entering several comments within 5 minutes \[[#33744](https://community.openproject.org/wp/33744)\] +- Fixed: Wrong (abusive) translations on avatar change page in russian localization. \[[#33888](https://community.openproject.org/wp/33888)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-0-0/README.md b/docs/release-notes/11/11-0-0/README.md index 13d9a61c89be..e3f569d5990b 100644 --- a/docs/release-notes/11/11-0-0/README.md +++ b/docs/release-notes/11/11-0-0/README.md @@ -80,7 +80,7 @@ The *Budgets* module will remain unchanged and additionally enables project budg We have again added many improvements to the WYSIWYG editor, i.e. for wiki pages or the work packages description. For example, you can now adjust the image size in the editor. -![resize-imagesshort](resize-imagesshort.gif) +![Resize images](resize-imagesshort.gif) Additionally, it is now possible to add macros to insert project or work packages attributes to the wiki or work package description. @@ -100,208 +100,208 @@ There are lots and lots of new things we packed into 11.0 to tell you about. ### All bug fixes and changes in 11.0 -- Fixed: Journal data is not removed upon work package deletion \[[#22048](https://community.openproject.com/wp/22048)\] -- Fixed: warning when data will be discarded \[[#25683](https://community.openproject.com/wp/25683)\] -- Fixed: WYSIWYG editor incorrectly interprets underscores in function names as italics \[[#28889](https://community.openproject.com/wp/28889)\] -- Fixed: The cost reports plugin is hidden unless the time tracking module is active \[[#30350](https://community.openproject.com/wp/30350)\] -- Fixed: Position of work package attribute changes when starting editing \[[#31614](https://community.openproject.com/wp/31614)\] -- Fixed: Work package no longer included in filter "Estimated time: none" when removing value for Estimated time \[[#32111](https://community.openproject.com/wp/32111)\] -- Fixed: Custom action lists archived projects as options \[[#32131](https://community.openproject.com/wp/32131)\] -- Fixed: Wrong display of work package widgets on project overview \[[#32457](https://community.openproject.com/wp/32457)\] -- Fixed: News create - undefined method `journaled_attributes' for nil:NilClass: \[[#33038](https://community.openproject.com/wp/33038)\] -- Fixed: OP 10.4.x: Wrong message "Installation is already using MySQL, skipping postgres addon" \[[#33066](https://community.openproject.com/wp/33066)\] -- Fixed: Cannot create plugins \[[#33213](https://community.openproject.com/wp/33213)\] -- Fixed: Cannot drag & drop work package outside of currently displayed browser window \[[#33247](https://community.openproject.com/wp/33247)\] -- Fixed: No default order for time entry api \[[#33328](https://community.openproject.com/wp/33328)\] -- Fixed: Add-list modal of version board is sometimes empty \[[#33346](https://community.openproject.com/wp/33346)\] -- Fixed: Mails do not respect OS dark mode \[[#33382](https://community.openproject.com/wp/33382)\] -- Fixed: Unit cost for units < 1 are off by order of magnitude \[[#33383](https://community.openproject.com/wp/33383)\] -- Fixed: Overview activity does not update automatically in split screen \[[#33405](https://community.openproject.com/wp/33405)\] -- Fixed: Date fields of closed work packages are highlighted red \[[#33457](https://community.openproject.com/wp/33457)\] -- Fixed: Filter get lost after deleting search string from text filter \[[#33465](https://community.openproject.com/wp/33465)\] -- Fixed: Printing the wrong value in the report \[[#33496](https://community.openproject.com/wp/33496)\] -- Fixed: Selected board in the left sidebar loses color highlighting \[[#33514](https://community.openproject.com/wp/33514)\] -- Fixed: Unsolicited logout on community.openproject.com every day \[[#33575](https://community.openproject.com/wp/33575)\] -- Fixed: Image removed from work package description when adding image to comment \[[#33578](https://community.openproject.com/wp/33578)\] -- Fixed: No German translation for Cost reports \[[#33584](https://community.openproject.com/wp/33584)\] -- Fixed: Type Form Configuration Not Saved \[[#33592](https://community.openproject.com/wp/33592)\] -- Fixed: ATOM feed link for all activities is not created as intended \[[#33650](https://community.openproject.com/wp/33650)\] -- Fixed: Mark priority as mandatory and remove "empty" option \[[#33678](https://community.openproject.com/wp/33678)\] -- Fixed: Work packages missing/duplicates when displayed on several pages \[[#33679](https://community.openproject.com/wp/33679)\] -- Fixed: Remapping oauth users fails if email or login contains upper case letters \[[#33687](https://community.openproject.com/wp/33687)\] -- Fixed: wiki after navigate on item in sidebar, the sidebar reset to top and lose the view of focus item \[[#33690](https://community.openproject.com/wp/33690)\] -- Fixed: Autologin breaks in conjunction with auth stages (e.g. consent, 2FA, recaptcha) \[[#33696](https://community.openproject.com/wp/33696)\] -- Fixed: Back button does not work when coming from Boards \[[#33747](https://community.openproject.com/wp/33747)\] -- Fixed: Missing padding in "Log time" widget \[[#33749](https://community.openproject.com/wp/33749)\] -- Fixed: Users can set the default work package status to read-only \[[#33750](https://community.openproject.com/wp/33750)\] -- Fixed: "New Board" modal is missing a header text \[[#33753](https://community.openproject.com/wp/33753)\] -- Fixed: WP still shown after deleting it \[[#33756](https://community.openproject.com/wp/33756)\] -- Fixed: Errors on project custom values are not displayed upon saving a project \[[#33766](https://community.openproject.com/wp/33766)\] -- Fixed: Cannot create user through API with auth_source, but no password \[[#33869](https://community.openproject.com/wp/33869)\] -- Fixed: Another error during form configuration \[[#33892](https://community.openproject.com/wp/33892)\] -- Fixed: Parent's due date can be edited in automatic scheduling mode \[[#33901](https://community.openproject.com/wp/33901)\] -- Fixed: Cost report layout broken \[[#33910](https://community.openproject.com/wp/33910)\] -- Fixed: Work package graph displays unnecessary scrollbar \[[#33911](https://community.openproject.com/wp/33911)\] -- Fixed: Custom action button not removed when condition is no longer met \[[#33912](https://community.openproject.com/wp/33912)\] -- Fixed: Inconsistent upper and lower case in "Remaining Hours" when compared with "Estimated time" \[[#33927](https://community.openproject.com/wp/33927)\] -- Fixed: Documents layout broken \[[#33930](https://community.openproject.com/wp/33930)\] -- Fixed: Problem with watchers \[[#33936](https://community.openproject.com/wp/33936)\] -- Fixed: Selected dates in date picker not highlighted across months \[[#33957](https://community.openproject.com/wp/33957)\] -- Fixed: ScrollIntoView previous element \[[#33966](https://community.openproject.com/wp/33966)\] -- Fixed: Users without permissions can see budgets in work package dropdown / internal error \[[#33981](https://community.openproject.com/wp/33981)\] -- Fixed: Work package on edge not shown correctly / cannot be edited \[[#33982](https://community.openproject.com/wp/33982)\] -- Fixed: Budgets module shown for users without permission "View budgets" \[[#33983](https://community.openproject.com/wp/33983)\] -- Fixed: Impossible to deactivate a project through the API \[[#33987](https://community.openproject.com/wp/33987)\] -- Fixed: Hide resizer when the wp detail page is shown in full view \[[#33988](https://community.openproject.com/wp/33988)\] -- Fixed: Changes in widget titles are not saved sometime \[[#33998](https://community.openproject.com/wp/33998)\] -- Fixed: Cannot copy projects with user CF \[[#34000](https://community.openproject.com/wp/34000)\] -- Fixed: "An internal error has occurred" displayed when file size exceeded on direct upload \[[#34016](https://community.openproject.com/wp/34016)\] -- Fixed: Drag and drop parent/child \[[#34021](https://community.openproject.com/wp/34021)\] -- Fixed: Gantt chart: phases doesn't have background color on hover \[[#34074](https://community.openproject.com/wp/34074)\] -- Fixed: Gantt chart: children not allowed to move out of its parent's date range \[[#34076](https://community.openproject.com/wp/34076)\] -- Fixed: Filters does not accept user id for principal in API memberships \[[#34108](https://community.openproject.com/wp/34108)\] -- Fixed: Order of work packages in XLS, PDF, CSV export differs from order in OpenProject \[[#34112](https://community.openproject.com/wp/34112)\] -- Fixed: Checkboxes in table not displayed correctly in WYSIWYG editor \[[#34113](https://community.openproject.com/wp/34113)\] -- Fixed: Archived projects not available via the API \[[#34120](https://community.openproject.com/wp/34120)\] -- Fixed: Gantt charts: rows misaligned when scrolling to bottom \[[#34127](https://community.openproject.com/wp/34127)\] -- Fixed: Logged time is always one hour instead of the entered value \[[#34130](https://community.openproject.com/wp/34130)\] -- Fixed: Cost types: Unable to add a new cost type \[[#34144](https://community.openproject.com/wp/34144)\] -- Fixed: Cost Types: rate not saved when a new type is created \[[#34145](https://community.openproject.com/wp/34145)\] -- Fixed: Time entry modal form can send form multiple times when clicked quickly several times \[[#34163](https://community.openproject.com/wp/34163)\] -- Fixed: I18n: Settings label not found in /settings/plugin/costs \[[#34188](https://community.openproject.com/wp/34188)\] -- Fixed: [all projects overview] Todo-list: checkboxes are preceded by bullets \[[#34190](https://community.openproject.com/wp/34190)\] -- Fixed: Quick filter not applied for externally configured queries \[[#34239](https://community.openproject.com/wp/34239)\] -- Fixed: Gantt Chart: Back-end - Front-end discrepancies when dragging a work package produces an error \[[#34252](https://community.openproject.com/wp/34252)\] -- Fixed: "Undefined" shown when editing cost entry in "Log unit cost" screen \[[#34257](https://community.openproject.com/wp/34257)\] -- Fixed: All-in-one docker image on dev branch no longer works \[[#34272](https://community.openproject.com/wp/34272)\] -- Fixed: Error displayed when deleting work package with logged time \[[#34283](https://community.openproject.com/wp/34283)\] -- Fixed: Wiki side menu cuts of too high / doesn't display bottom wiki pages \[[#34284](https://community.openproject.com/wp/34284)\] -- Fixed: Internal error when uploading attachment(s) to "Documents" module \[[#34285](https://community.openproject.com/wp/34285)\] -- Fixed: Two identical / very similar error message shown in custom field create screen \[[#34289](https://community.openproject.com/wp/34289)\] -- Fixed: Not possible to scroll page while move custom field in form configuration \[[#34290](https://community.openproject.com/wp/34290)\] -- Fixed: Date "null - null" shown when editing date of newly created work packages \[[#34291](https://community.openproject.com/wp/34291)\] -- Fixed: Typo and strange wording on board creation screen \[[#34292](https://community.openproject.com/wp/34292)\] -- Fixed: No translation / wrong translation for "Settings" \[[#34293](https://community.openproject.com/wp/34293)\] -- Fixed: Date picker in cost types settings (administration) opens in weird location \[[#34297](https://community.openproject.com/wp/34297)\] -- Fixed: Missing translations on copy project loading (and error) screen \[[#34298](https://community.openproject.com/wp/34298)\] -- Fixed: Budget positions disappear from budget when editing \[[#34299](https://community.openproject.com/wp/34299)\] -- Fixed: "Fixed date" in Budget not translated \[[#34300](https://community.openproject.com/wp/34300)\] -- Fixed: Work packages table: dropped element disappears when back-end error \[[#34332](https://community.openproject.com/wp/34332)\] -- Fixed: Link to a particular activity doesn't work \[[#34341](https://community.openproject.com/wp/34341)\] -- Fixed: Broken error message when creating task on backlogs page \[[#34345](https://community.openproject.com/wp/34345)\] -- Fixed: Date picker modal is cut off when switching from manual scheduling mode \[[#34346](https://community.openproject.com/wp/34346)\] -- Fixed: Internal error shown when uploading document to attribute help text (projects) \[[#34352](https://community.openproject.com/wp/34352)\] -- Fixed: Help text for custom fields (projects) not shown in project settings \[[#34353](https://community.openproject.com/wp/34353)\] -- Fixed: Date settings are not applied for date picker or calendar \[[#34356](https://community.openproject.com/wp/34356)\] -- Fixed: Unclear warning message displayed when filtered value for assignee board does not match any member \[[#34358](https://community.openproject.com/wp/34358)\] -- Fixed: Tasks added to subproject action board disappear automatically after adding \[[#34359](https://community.openproject.com/wp/34359)\] -- Fixed: Entry "Time and costs" not highlighted when selecting from side menu \[[#34373](https://community.openproject.com/wp/34373)\] -- Fixed: Project date custom fields takes a lot of space (more than other fields) \[[#34380](https://community.openproject.com/wp/34380)\] -- Fixed: Widget content is lost / widget collapsed (custom text) \[[#34381](https://community.openproject.com/wp/34381)\] -- Fixed: Default value of a custom field not passed \[[#34420](https://community.openproject.com/wp/34420)\] -- Fixed: Focus not set on project name when creating new project \[[#34424](https://community.openproject.com/wp/34424)\] -- Fixed: Low contrast for filter icon \[[#34425](https://community.openproject.com/wp/34425)\] -- Fixed: Broken success message shown when logging into OpenProject \[[#34427](https://community.openproject.com/wp/34427)\] -- Fixed: Project members not added when selecting multiple users from "Members" menu \[[#34428](https://community.openproject.com/wp/34428)\] -- Fixed: Assignee and author field cut off even though there is enough space \[[#34431](https://community.openproject.com/wp/34431)\] -- Fixed: When changing booked time entry, entry is no longer displayed in time and costs report \[[#34432](https://community.openproject.com/wp/34432)\] -- Fixed: Logged time cannot be changed once error message is shown \[[#34433](https://community.openproject.com/wp/34433)\] -- Fixed: Translation missing in Roadmap (time tracking) \[[#34434](https://community.openproject.com/wp/34434)\] -- Fixed: Date picker for version disconnected / border missing \[[#34435](https://community.openproject.com/wp/34435)\] -- Fixed: Burndown chart not displayed (from backlogs or taskboard page) \[[#34437](https://community.openproject.com/wp/34437)\] -- Fixed: Text size on taskboard page too large \[[#34438](https://community.openproject.com/wp/34438)\] -- Fixed: Spacing on meeting page looks crammed \[[#34439](https://community.openproject.com/wp/34439)\] -- Fixed: Month / week toggler on calendar page is separated \[[#34440](https://community.openproject.com/wp/34440)\] -- Fixed: Text color (e.g. for news module on project overview page) is hard to read \[[#34441](https://community.openproject.com/wp/34441)\] -- Fixed: Added widgets on overview page are removed automatically on reload \[[#34442](https://community.openproject.com/wp/34442)\] -- Fixed: Wrong translation for "Update" in German \[[#34445](https://community.openproject.com/wp/34445)\] -- Fixed: Internal error when adding user to group \[[#34446](https://community.openproject.com/wp/34446)\] -- Fixed: Icon for SSO with Google not shown \[[#34458](https://community.openproject.com/wp/34458)\] -- Fixed: Missing background for backlog error messages \[[#34476](https://community.openproject.com/wp/34476)\] -- Fixed: Onboarding tour on edge broken \[[#34507](https://community.openproject.com/wp/34507)\] -- Fixed: Custom fields of type long text are wrongly formatted in project list \[[#34509](https://community.openproject.com/wp/34509)\] -- Fixed: Wrong default settings for Gantt chart query in project \[[#34511](https://community.openproject.com/wp/34511)\] -- Fixed: OpenProject Logo in header missing \[[#34529](https://community.openproject.com/wp/34529)\] -- Fixed: Cost report filtered by custom field list does return an empty list \[[#34530](https://community.openproject.com/wp/34530)\] -- Fixed: With global subproject filter disabled, subproject boards do not work \[[#34535](https://community.openproject.com/wp/34535)\] -- Fixed: Clicking with modifier on global search results no longer works \[[#34544](https://community.openproject.com/wp/34544)\] -- Fixed: Deleted work packages don't disappear in boards view \[[#34584](https://community.openproject.com/wp/34584)\] -- Fixed: Error 500 when bulk-editing work packages \[[#34588](https://community.openproject.com/wp/34588)\] -- Fixed: Year almost hidden in date picker for version \[[#34590](https://community.openproject.com/wp/34590)\] -- Fixed: Onboarding tour broken in multiple places \[[#34597](https://community.openproject.com/wp/34597)\] -- Fixed: Github Integration \[[#34598](https://community.openproject.com/wp/34598)\] -- Fixed: Google OpenID provider image not shown in login form \[[#34601](https://community.openproject.com/wp/34601)\] -- Fixed: Parent work package in manual scheduling mode without date cannot be scheduled from Gantt chart \[[#34710](https://community.openproject.com/wp/34710)\] -- Fixed: Menu too small/completely hidden on Roadmap \[[#34712](https://community.openproject.com/wp/34712)\] -- Fixed: QR code not displayed on 2FA device registration \[[#34793](https://community.openproject.com/wp/34793)\] -- Fixed: Internal error (500) when creating child work package of parent with only start or finish date set \[[#34797](https://community.openproject.com/wp/34797)\] -- Fixed: Text changes from German (Projekt kopieren) to English (Copy project) while loading \[[#34817](https://community.openproject.com/wp/34817)\] -- Fixed: 500er Bug when Drag and Drop position in Gantt chart \[[#34836](https://community.openproject.com/wp/34836)\] -- Fixed: Error messages in copy project modal (e.g. boards) not localized \[[#34843](https://community.openproject.com/wp/34843)\] -- Fixed: Work package description containing work package attribute macro not displayed at all \[[#34852](https://community.openproject.com/wp/34852)\] -- Fixed: Invalid or missing translation for format of project customfield in administration \[[#34863](https://community.openproject.com/wp/34863)\] -- Fixed: On mobile the project side menu can get stuck / cut off when scrolling \[[#34868](https://community.openproject.com/wp/34868)\] -- Fixed: Missing localization for "Subproject" and "Parent-Child" board heading \[[#34870](https://community.openproject.com/wp/34870)\] -- Changed: Allow PDFs to be inlined \[[#24343](https://community.openproject.com/wp/24343)\] -- Changed: Image size on Wiki \[[#24760](https://community.openproject.com/wp/24760)\] -- Changed: Project copying: Clarify which work packages are invalid and where not copied \[[#26366](https://community.openproject.com/wp/26366)\] -- Changed: Direct-to-S3 file uploads \[[#27157](https://community.openproject.com/wp/27157)\] -- Changed: Filter by budget in cost reports \[[#29481](https://community.openproject.com/wp/29481)\] -- Changed: Add option to copy grids (boards, dashboards) \[[#30585](https://community.openproject.com/wp/30585)\] -- Changed: Add details view to boards view \[[#30918](https://community.openproject.com/wp/30918)\] -- Changed: Keep order of manually sorted work packages when copied to new project \[[#31317](https://community.openproject.com/wp/31317)\] -- Changed: Re-enable displaying of grouped sum rows \[[#31617](https://community.openproject.com/wp/31617)\] -- Changed: Rename the module Cost reports to Time and costs \[[#31728](https://community.openproject.com/wp/31728)\] -- Changed: Replace system settings tab by sub menu entries \[[#32051](https://community.openproject.com/wp/32051)\] -- Changed: Flexible width of edit field of widget title \[[#32176](https://community.openproject.com/wp/32176)\] -- Changed: Add scheduling mode to work package in back end (Database, Contracts, API) \[[#32877](https://community.openproject.com/wp/32877)\] -- Changed: Adhere to scheduling mode when scheduling \[[#32878](https://community.openproject.com/wp/32878)\] -- Changed: Display scheduling mode in work package table \[[#32879](https://community.openproject.com/wp/32879)\] -- Changed: Display scheduling mode in work package view (full & split) \[[#32880](https://community.openproject.com/wp/32880)\] -- Changed: Show work package's children duration bar on Gantt charts \[[#32881](https://community.openproject.com/wp/32881)\] -- Changed: New seed data for "Demo project" - work packages \[[#32882](https://community.openproject.com/wp/32882)\] -- Changed: Add descendant's start/end date to work package representer \[[#32883](https://community.openproject.com/wp/32883)\] -- Changed: Add an option to add "Unassigned" column to assignee board \[[#33074](https://community.openproject.com/wp/33074)\] -- Changed: Remove "Schedule manually" attribute from work package form configuration \[[#33473](https://community.openproject.com/wp/33473)\] -- Changed: Update release teaser block \[[#33571](https://community.openproject.com/wp/33571)\] -- Changed: Allow sorting of project custom fields shown in "View all projects" \[[#33580](https://community.openproject.com/wp/33580)\] -- Changed: Allow setting dates of manually scheduled parent \[[#33609](https://community.openproject.com/wp/33609)\] -- Changed: Journalize scheduling mode changes \[[#33649](https://community.openproject.com/wp/33649)\] -- Changed: Make the project member invitation more appealing \[[#33654](https://community.openproject.com/wp/33654)\] -- Changed: Allow adding invited users to groups \[[#33657](https://community.openproject.com/wp/33657)\] -- Changed: Make tables scrollable with sticky header \[[#33674](https://community.openproject.com/wp/33674)\] -- Changed: Move "required disk storage" to the end of the projects table \[[#33675](https://community.openproject.com/wp/33675)\] -- Changed: Reduce complexity of boolean filters \[[#33677](https://community.openproject.com/wp/33677)\] -- Changed: Add "projects" to the global Modules menu \[[#33680](https://community.openproject.com/wp/33680)\] -- Changed: Extend Date picker to show two months next to each other \[[#33683](https://community.openproject.com/wp/33683)\] -- Changed: Extend Date picker to show "Today" link \[[#33684](https://community.openproject.com/wp/33684)\] -- Changed: Ability to filter views: Only show work packages from specified subproject, but not from father project \[[#33763](https://community.openproject.com/wp/33763)\] -- Changed: Custom help text for project attributes \[[#33830](https://community.openproject.com/wp/33830)\] -- Changed: Create subproject boards \[[#33864](https://community.openproject.com/wp/33864)\] -- Changed: Create subtasks boards (Parent-Child board) \[[#33865](https://community.openproject.com/wp/33865)\] -- Changed: Fine tune the design of the new date picker for the automatic scheduling mode \[[#33882](https://community.openproject.com/wp/33882)\] -- Changed: Combine time and cost tracking and reporting module \[[#33918](https://community.openproject.com/wp/33918)\] -- Changed: Prevent losing dates when adding the first child work package to an automatically scheduled work package \[[#33925](https://community.openproject.com/wp/33925)\] -- Changed: Calculate work packages group sums in database so we can re-enable performant group sums \[[#33935](https://community.openproject.com/wp/33935)\] -- Changed: Re-Add ## and ### capability to OpenProject \[[#33962](https://community.openproject.com/wp/33962)\] -- Changed: Allow rescheduling of manually scheduled parent work package (clamps) in gantt view \[[#34014](https://community.openproject.com/wp/34014)\] -- Changed: http redirect_uri from localhost domain \[[#34025](https://community.openproject.com/wp/34025)\] -- Changed: Gantt chart: Make row's background translucent when hovered \[[#34028](https://community.openproject.com/wp/34028)\] -- Changed: change icons for manual scheduling mode \[[#34058](https://community.openproject.com/wp/34058)\] -- Changed: Improve board creation modal \[[#34070](https://community.openproject.com/wp/34070)\] -- Changed: Hide derived (Start/Finish) Date from work package forms \[[#34122](https://community.openproject.com/wp/34122)\] -- Changed: Extend search autocompleter with useful information \[[#34132](https://community.openproject.com/wp/34132)\] -- Changed: [all projects overview] (Add option to) show status-text in expanded view. \[[#34191](https://community.openproject.com/wp/34191)\] -- Changed: Map board subtasks columns when copying projects \[[#34238](https://community.openproject.com/wp/34238)\] -- Changed: Having meetings as a linkable resource \[[#34256](https://community.openproject.com/wp/34256)\] -- Changed: What's new teaser OpenProject BIM 11.0 \[[#34514](https://community.openproject.com/wp/34514)\] -- Changed: New seed data for demo project - boards \[[#34526](https://community.openproject.com/wp/34526)\] -- Changed: Change text in the Action board creation modal \[[#34847](https://community.openproject.com/wp/34847)\] -- Epic: Switch between automatic and manual scheduling mode \[[#25624](https://community.openproject.com/wp/25624)\] -- Epic: Time tracking and cost control 2.0 \[[#32125](https://community.openproject.com/wp/32125)\] -- Epic: Wiki Macro functionality to allow retrieving work package and project attributes \[[#33648](https://community.openproject.com/wp/33648)\] -- Epic: Basic portfoliomanagement for project list \[[#34167](https://community.openproject.com/wp/34167)\] -- Epic: Projekt Templates \[[#34468](https://community.openproject.com/wp/34468)\] +- Fixed: Journal data is not removed upon work package deletion \[[#22048](https://community.openproject.org/wp/22048)\] +- Fixed: warning when data will be discarded \[[#25683](https://community.openproject.org/wp/25683)\] +- Fixed: WYSIWYG editor incorrectly interprets underscores in function names as italics \[[#28889](https://community.openproject.org/wp/28889)\] +- Fixed: The cost reports plugin is hidden unless the time tracking module is active \[[#30350](https://community.openproject.org/wp/30350)\] +- Fixed: Position of work package attribute changes when starting editing \[[#31614](https://community.openproject.org/wp/31614)\] +- Fixed: Work package no longer included in filter "Estimated time: none" when removing value for Estimated time \[[#32111](https://community.openproject.org/wp/32111)\] +- Fixed: Custom action lists archived projects as options \[[#32131](https://community.openproject.org/wp/32131)\] +- Fixed: Wrong display of work package widgets on project overview \[[#32457](https://community.openproject.org/wp/32457)\] +- Fixed: News create - undefined method `journaled_attributes' for nil:NilClass: \[[#33038](https://community.openproject.org/wp/33038)\] +- Fixed: OP 10.4.x: Wrong message "Installation is already using MySQL, skipping postgres addon" \[[#33066](https://community.openproject.org/wp/33066)\] +- Fixed: Cannot create plugins \[[#33213](https://community.openproject.org/wp/33213)\] +- Fixed: Cannot drag & drop work package outside of currently displayed browser window \[[#33247](https://community.openproject.org/wp/33247)\] +- Fixed: No default order for time entry api \[[#33328](https://community.openproject.org/wp/33328)\] +- Fixed: Add-list modal of version board is sometimes empty \[[#33346](https://community.openproject.org/wp/33346)\] +- Fixed: Mails do not respect OS dark mode \[[#33382](https://community.openproject.org/wp/33382)\] +- Fixed: Unit cost for units < 1 are off by order of magnitude \[[#33383](https://community.openproject.org/wp/33383)\] +- Fixed: Overview activity does not update automatically in split screen \[[#33405](https://community.openproject.org/wp/33405)\] +- Fixed: Date fields of closed work packages are highlighted red \[[#33457](https://community.openproject.org/wp/33457)\] +- Fixed: Filter get lost after deleting search string from text filter \[[#33465](https://community.openproject.org/wp/33465)\] +- Fixed: Printing the wrong value in the report \[[#33496](https://community.openproject.org/wp/33496)\] +- Fixed: Selected board in the left sidebar loses color highlighting \[[#33514](https://community.openproject.org/wp/33514)\] +- Fixed: Unsolicited logout on community.openproject.org every day \[[#33575](https://community.openproject.org/wp/33575)\] +- Fixed: Image removed from work package description when adding image to comment \[[#33578](https://community.openproject.org/wp/33578)\] +- Fixed: No German translation for Cost reports \[[#33584](https://community.openproject.org/wp/33584)\] +- Fixed: Type Form Configuration Not Saved \[[#33592](https://community.openproject.org/wp/33592)\] +- Fixed: ATOM feed link for all activities is not created as intended \[[#33650](https://community.openproject.org/wp/33650)\] +- Fixed: Mark priority as mandatory and remove "empty" option \[[#33678](https://community.openproject.org/wp/33678)\] +- Fixed: Work packages missing/duplicates when displayed on several pages \[[#33679](https://community.openproject.org/wp/33679)\] +- Fixed: Remapping oauth users fails if email or login contains upper case letters \[[#33687](https://community.openproject.org/wp/33687)\] +- Fixed: wiki after navigate on item in sidebar, the sidebar reset to top and lose the view of focus item \[[#33690](https://community.openproject.org/wp/33690)\] +- Fixed: Autologin breaks in conjunction with auth stages (e.g. consent, 2FA, recaptcha) \[[#33696](https://community.openproject.org/wp/33696)\] +- Fixed: Back button does not work when coming from Boards \[[#33747](https://community.openproject.org/wp/33747)\] +- Fixed: Missing padding in "Log time" widget \[[#33749](https://community.openproject.org/wp/33749)\] +- Fixed: Users can set the default work package status to read-only \[[#33750](https://community.openproject.org/wp/33750)\] +- Fixed: "New Board" modal is missing a header text \[[#33753](https://community.openproject.org/wp/33753)\] +- Fixed: WP still shown after deleting it \[[#33756](https://community.openproject.org/wp/33756)\] +- Fixed: Errors on project custom values are not displayed upon saving a project \[[#33766](https://community.openproject.org/wp/33766)\] +- Fixed: Cannot create user through API with auth_source, but no password \[[#33869](https://community.openproject.org/wp/33869)\] +- Fixed: Another error during form configuration \[[#33892](https://community.openproject.org/wp/33892)\] +- Fixed: Parent's due date can be edited in automatic scheduling mode \[[#33901](https://community.openproject.org/wp/33901)\] +- Fixed: Cost report layout broken \[[#33910](https://community.openproject.org/wp/33910)\] +- Fixed: Work package graph displays unnecessary scrollbar \[[#33911](https://community.openproject.org/wp/33911)\] +- Fixed: Custom action button not removed when condition is no longer met \[[#33912](https://community.openproject.org/wp/33912)\] +- Fixed: Inconsistent upper and lower case in "Remaining Hours" when compared with "Estimated time" \[[#33927](https://community.openproject.org/wp/33927)\] +- Fixed: Documents layout broken \[[#33930](https://community.openproject.org/wp/33930)\] +- Fixed: Problem with watchers \[[#33936](https://community.openproject.org/wp/33936)\] +- Fixed: Selected dates in date picker not highlighted across months \[[#33957](https://community.openproject.org/wp/33957)\] +- Fixed: ScrollIntoView previous element \[[#33966](https://community.openproject.org/wp/33966)\] +- Fixed: Users without permissions can see budgets in work package dropdown / internal error \[[#33981](https://community.openproject.org/wp/33981)\] +- Fixed: Work package on edge not shown correctly / cannot be edited \[[#33982](https://community.openproject.org/wp/33982)\] +- Fixed: Budgets module shown for users without permission "View budgets" \[[#33983](https://community.openproject.org/wp/33983)\] +- Fixed: Impossible to deactivate a project through the API \[[#33987](https://community.openproject.org/wp/33987)\] +- Fixed: Hide resizer when the wp detail page is shown in full view \[[#33988](https://community.openproject.org/wp/33988)\] +- Fixed: Changes in widget titles are not saved sometime \[[#33998](https://community.openproject.org/wp/33998)\] +- Fixed: Cannot copy projects with user CF \[[#34000](https://community.openproject.org/wp/34000)\] +- Fixed: "An internal error has occurred" displayed when file size exceeded on direct upload \[[#34016](https://community.openproject.org/wp/34016)\] +- Fixed: Drag and drop parent/child \[[#34021](https://community.openproject.org/wp/34021)\] +- Fixed: Gantt chart: phases doesn't have background color on hover \[[#34074](https://community.openproject.org/wp/34074)\] +- Fixed: Gantt chart: children not allowed to move out of its parent's date range \[[#34076](https://community.openproject.org/wp/34076)\] +- Fixed: Filters does not accept user id for principal in API memberships \[[#34108](https://community.openproject.org/wp/34108)\] +- Fixed: Order of work packages in XLS, PDF, CSV export differs from order in OpenProject \[[#34112](https://community.openproject.org/wp/34112)\] +- Fixed: Checkboxes in table not displayed correctly in WYSIWYG editor \[[#34113](https://community.openproject.org/wp/34113)\] +- Fixed: Archived projects not available via the API \[[#34120](https://community.openproject.org/wp/34120)\] +- Fixed: Gantt charts: rows misaligned when scrolling to bottom \[[#34127](https://community.openproject.org/wp/34127)\] +- Fixed: Logged time is always one hour instead of the entered value \[[#34130](https://community.openproject.org/wp/34130)\] +- Fixed: Cost types: Unable to add a new cost type \[[#34144](https://community.openproject.org/wp/34144)\] +- Fixed: Cost Types: rate not saved when a new type is created \[[#34145](https://community.openproject.org/wp/34145)\] +- Fixed: Time entry modal form can send form multiple times when clicked quickly several times \[[#34163](https://community.openproject.org/wp/34163)\] +- Fixed: I18n: Settings label not found in /settings/plugin/costs \[[#34188](https://community.openproject.org/wp/34188)\] +- Fixed: [all projects overview] Todo-list: checkboxes are preceded by bullets \[[#34190](https://community.openproject.org/wp/34190)\] +- Fixed: Quick filter not applied for externally configured queries \[[#34239](https://community.openproject.org/wp/34239)\] +- Fixed: Gantt Chart: Back-end - Front-end discrepancies when dragging a work package produces an error \[[#34252](https://community.openproject.org/wp/34252)\] +- Fixed: "Undefined" shown when editing cost entry in "Log unit cost" screen \[[#34257](https://community.openproject.org/wp/34257)\] +- Fixed: All-in-one docker image on dev branch no longer works \[[#34272](https://community.openproject.org/wp/34272)\] +- Fixed: Error displayed when deleting work package with logged time \[[#34283](https://community.openproject.org/wp/34283)\] +- Fixed: Wiki side menu cuts of too high / doesn't display bottom wiki pages \[[#34284](https://community.openproject.org/wp/34284)\] +- Fixed: Internal error when uploading attachment(s) to "Documents" module \[[#34285](https://community.openproject.org/wp/34285)\] +- Fixed: Two identical / very similar error message shown in custom field create screen \[[#34289](https://community.openproject.org/wp/34289)\] +- Fixed: Not possible to scroll page while move custom field in form configuration \[[#34290](https://community.openproject.org/wp/34290)\] +- Fixed: Date "null - null" shown when editing date of newly created work packages \[[#34291](https://community.openproject.org/wp/34291)\] +- Fixed: Typo and strange wording on board creation screen \[[#34292](https://community.openproject.org/wp/34292)\] +- Fixed: No translation / wrong translation for "Settings" \[[#34293](https://community.openproject.org/wp/34293)\] +- Fixed: Date picker in cost types settings (administration) opens in weird location \[[#34297](https://community.openproject.org/wp/34297)\] +- Fixed: Missing translations on copy project loading (and error) screen \[[#34298](https://community.openproject.org/wp/34298)\] +- Fixed: Budget positions disappear from budget when editing \[[#34299](https://community.openproject.org/wp/34299)\] +- Fixed: "Fixed date" in Budget not translated \[[#34300](https://community.openproject.org/wp/34300)\] +- Fixed: Work packages table: dropped element disappears when back-end error \[[#34332](https://community.openproject.org/wp/34332)\] +- Fixed: Link to a particular activity doesn't work \[[#34341](https://community.openproject.org/wp/34341)\] +- Fixed: Broken error message when creating task on backlogs page \[[#34345](https://community.openproject.org/wp/34345)\] +- Fixed: Date picker modal is cut off when switching from manual scheduling mode \[[#34346](https://community.openproject.org/wp/34346)\] +- Fixed: Internal error shown when uploading document to attribute help text (projects) \[[#34352](https://community.openproject.org/wp/34352)\] +- Fixed: Help text for custom fields (projects) not shown in project settings \[[#34353](https://community.openproject.org/wp/34353)\] +- Fixed: Date settings are not applied for date picker or calendar \[[#34356](https://community.openproject.org/wp/34356)\] +- Fixed: Unclear warning message displayed when filtered value for assignee board does not match any member \[[#34358](https://community.openproject.org/wp/34358)\] +- Fixed: Tasks added to subproject action board disappear automatically after adding \[[#34359](https://community.openproject.org/wp/34359)\] +- Fixed: Entry "Time and costs" not highlighted when selecting from side menu \[[#34373](https://community.openproject.org/wp/34373)\] +- Fixed: Project date custom fields takes a lot of space (more than other fields) \[[#34380](https://community.openproject.org/wp/34380)\] +- Fixed: Widget content is lost / widget collapsed (custom text) \[[#34381](https://community.openproject.org/wp/34381)\] +- Fixed: Default value of a custom field not passed \[[#34420](https://community.openproject.org/wp/34420)\] +- Fixed: Focus not set on project name when creating new project \[[#34424](https://community.openproject.org/wp/34424)\] +- Fixed: Low contrast for filter icon \[[#34425](https://community.openproject.org/wp/34425)\] +- Fixed: Broken success message shown when logging into OpenProject \[[#34427](https://community.openproject.org/wp/34427)\] +- Fixed: Project members not added when selecting multiple users from "Members" menu \[[#34428](https://community.openproject.org/wp/34428)\] +- Fixed: Assignee and author field cut off even though there is enough space \[[#34431](https://community.openproject.org/wp/34431)\] +- Fixed: When changing booked time entry, entry is no longer displayed in time and costs report \[[#34432](https://community.openproject.org/wp/34432)\] +- Fixed: Logged time cannot be changed once error message is shown \[[#34433](https://community.openproject.org/wp/34433)\] +- Fixed: Translation missing in Roadmap (time tracking) \[[#34434](https://community.openproject.org/wp/34434)\] +- Fixed: Date picker for version disconnected / border missing \[[#34435](https://community.openproject.org/wp/34435)\] +- Fixed: Burndown chart not displayed (from backlogs or taskboard page) \[[#34437](https://community.openproject.org/wp/34437)\] +- Fixed: Text size on taskboard page too large \[[#34438](https://community.openproject.org/wp/34438)\] +- Fixed: Spacing on meeting page looks crammed \[[#34439](https://community.openproject.org/wp/34439)\] +- Fixed: Month / week toggler on calendar page is separated \[[#34440](https://community.openproject.org/wp/34440)\] +- Fixed: Text color (e.g. for news module on project overview page) is hard to read \[[#34441](https://community.openproject.org/wp/34441)\] +- Fixed: Added widgets on overview page are removed automatically on reload \[[#34442](https://community.openproject.org/wp/34442)\] +- Fixed: Wrong translation for "Update" in German \[[#34445](https://community.openproject.org/wp/34445)\] +- Fixed: Internal error when adding user to group \[[#34446](https://community.openproject.org/wp/34446)\] +- Fixed: Icon for SSO with Google not shown \[[#34458](https://community.openproject.org/wp/34458)\] +- Fixed: Missing background for backlog error messages \[[#34476](https://community.openproject.org/wp/34476)\] +- Fixed: Onboarding tour on edge broken \[[#34507](https://community.openproject.org/wp/34507)\] +- Fixed: Custom fields of type long text are wrongly formatted in project list \[[#34509](https://community.openproject.org/wp/34509)\] +- Fixed: Wrong default settings for Gantt chart query in project \[[#34511](https://community.openproject.org/wp/34511)\] +- Fixed: OpenProject Logo in header missing \[[#34529](https://community.openproject.org/wp/34529)\] +- Fixed: Cost report filtered by custom field list does return an empty list \[[#34530](https://community.openproject.org/wp/34530)\] +- Fixed: With global subproject filter disabled, subproject boards do not work \[[#34535](https://community.openproject.org/wp/34535)\] +- Fixed: Clicking with modifier on global search results no longer works \[[#34544](https://community.openproject.org/wp/34544)\] +- Fixed: Deleted work packages don't disappear in boards view \[[#34584](https://community.openproject.org/wp/34584)\] +- Fixed: Error 500 when bulk-editing work packages \[[#34588](https://community.openproject.org/wp/34588)\] +- Fixed: Year almost hidden in date picker for version \[[#34590](https://community.openproject.org/wp/34590)\] +- Fixed: Onboarding tour broken in multiple places \[[#34597](https://community.openproject.org/wp/34597)\] +- Fixed: Github Integration \[[#34598](https://community.openproject.org/wp/34598)\] +- Fixed: Google OpenID provider image not shown in login form \[[#34601](https://community.openproject.org/wp/34601)\] +- Fixed: Parent work package in manual scheduling mode without date cannot be scheduled from Gantt chart \[[#34710](https://community.openproject.org/wp/34710)\] +- Fixed: Menu too small/completely hidden on Roadmap \[[#34712](https://community.openproject.org/wp/34712)\] +- Fixed: QR code not displayed on 2FA device registration \[[#34793](https://community.openproject.org/wp/34793)\] +- Fixed: Internal error (500) when creating child work package of parent with only start or finish date set \[[#34797](https://community.openproject.org/wp/34797)\] +- Fixed: Text changes "Copy project" from German to English while loading \[[#34817](https://community.openproject.org/wp/34817)\] +- Fixed: 500er Bug when Drag and Drop position in Gantt chart \[[#34836](https://community.openproject.org/wp/34836)\] +- Fixed: Error messages in copy project modal (e.g. boards) not localized \[[#34843](https://community.openproject.org/wp/34843)\] +- Fixed: Work package description containing work package attribute macro not displayed at all \[[#34852](https://community.openproject.org/wp/34852)\] +- Fixed: Invalid or missing translation for format of project custom field in administration \[[#34863](https://community.openproject.org/wp/34863)\] +- Fixed: On mobile the project side menu can get stuck / cut off when scrolling \[[#34868](https://community.openproject.org/wp/34868)\] +- Fixed: Missing localization for "Subproject" and "Parent-Child" board heading \[[#34870](https://community.openproject.org/wp/34870)\] +- Changed: Allow PDFs to be inlined \[[#24343](https://community.openproject.org/wp/24343)\] +- Changed: Image size on Wiki \[[#24760](https://community.openproject.org/wp/24760)\] +- Changed: Project copying: Clarify which work packages are invalid and where not copied \[[#26366](https://community.openproject.org/wp/26366)\] +- Changed: Direct-to-S3 file uploads \[[#27157](https://community.openproject.org/wp/27157)\] +- Changed: Filter by budget in cost reports \[[#29481](https://community.openproject.org/wp/29481)\] +- Changed: Add option to copy grids (boards, dashboards) \[[#30585](https://community.openproject.org/wp/30585)\] +- Changed: Add details view to boards view \[[#30918](https://community.openproject.org/wp/30918)\] +- Changed: Keep order of manually sorted work packages when copied to new project \[[#31317](https://community.openproject.org/wp/31317)\] +- Changed: Re-enable displaying of grouped sum rows \[[#31617](https://community.openproject.org/wp/31617)\] +- Changed: Rename the module Cost reports to Time and costs \[[#31728](https://community.openproject.org/wp/31728)\] +- Changed: Replace system settings tab by sub menu entries \[[#32051](https://community.openproject.org/wp/32051)\] +- Changed: Flexible width of edit field of widget title \[[#32176](https://community.openproject.org/wp/32176)\] +- Changed: Add scheduling mode to work package in back end (Database, Contracts, API) \[[#32877](https://community.openproject.org/wp/32877)\] +- Changed: Adhere to scheduling mode when scheduling \[[#32878](https://community.openproject.org/wp/32878)\] +- Changed: Display scheduling mode in work package table \[[#32879](https://community.openproject.org/wp/32879)\] +- Changed: Display scheduling mode in work package view (full & split) \[[#32880](https://community.openproject.org/wp/32880)\] +- Changed: Show work package's children duration bar on Gantt charts \[[#32881](https://community.openproject.org/wp/32881)\] +- Changed: New seed data for "Demo project" - work packages \[[#32882](https://community.openproject.org/wp/32882)\] +- Changed: Add descendant's start/end date to work package representer \[[#32883](https://community.openproject.org/wp/32883)\] +- Changed: Add an option to add "Unassigned" column to assignee board \[[#33074](https://community.openproject.org/wp/33074)\] +- Changed: Remove "Schedule manually" attribute from work package form configuration \[[#33473](https://community.openproject.org/wp/33473)\] +- Changed: Update release teaser block \[[#33571](https://community.openproject.org/wp/33571)\] +- Changed: Allow sorting of project custom fields shown in "View all projects" \[[#33580](https://community.openproject.org/wp/33580)\] +- Changed: Allow setting dates of manually scheduled parent \[[#33609](https://community.openproject.org/wp/33609)\] +- Changed: Journalize scheduling mode changes \[[#33649](https://community.openproject.org/wp/33649)\] +- Changed: Make the project member invitation more appealing \[[#33654](https://community.openproject.org/wp/33654)\] +- Changed: Allow adding invited users to groups \[[#33657](https://community.openproject.org/wp/33657)\] +- Changed: Make tables scrollable with sticky header \[[#33674](https://community.openproject.org/wp/33674)\] +- Changed: Move "required disk storage" to the end of the projects table \[[#33675](https://community.openproject.org/wp/33675)\] +- Changed: Reduce complexity of boolean filters \[[#33677](https://community.openproject.org/wp/33677)\] +- Changed: Add "projects" to the global Modules menu \[[#33680](https://community.openproject.org/wp/33680)\] +- Changed: Extend Date picker to show two months next to each other \[[#33683](https://community.openproject.org/wp/33683)\] +- Changed: Extend Date picker to show "Today" link \[[#33684](https://community.openproject.org/wp/33684)\] +- Changed: Ability to filter views: Only show work packages from specified subproject, but not from father project \[[#33763](https://community.openproject.org/wp/33763)\] +- Changed: Custom help text for project attributes \[[#33830](https://community.openproject.org/wp/33830)\] +- Changed: Create subproject boards \[[#33864](https://community.openproject.org/wp/33864)\] +- Changed: Create subtasks boards (Parent-Child board) \[[#33865](https://community.openproject.org/wp/33865)\] +- Changed: Fine tune the design of the new date picker for the automatic scheduling mode \[[#33882](https://community.openproject.org/wp/33882)\] +- Changed: Combine time and cost tracking and reporting module \[[#33918](https://community.openproject.org/wp/33918)\] +- Changed: Prevent losing dates when adding the first child work package to an automatically scheduled work package \[[#33925](https://community.openproject.org/wp/33925)\] +- Changed: Calculate work packages group sums in database so we can re-enable performant group sums \[[#33935](https://community.openproject.org/wp/33935)\] +- Changed: Re-Add ## and ### capability to OpenProject \[[#33962](https://community.openproject.org/wp/33962)\] +- Changed: Allow rescheduling of manually scheduled parent work package (clamps) in gantt view \[[#34014](https://community.openproject.org/wp/34014)\] +- Changed: http redirect_uri from localhost domain \[[#34025](https://community.openproject.org/wp/34025)\] +- Changed: Gantt chart: Make row's background translucent when hovered \[[#34028](https://community.openproject.org/wp/34028)\] +- Changed: change icons for manual scheduling mode \[[#34058](https://community.openproject.org/wp/34058)\] +- Changed: Improve board creation modal \[[#34070](https://community.openproject.org/wp/34070)\] +- Changed: Hide derived (Start/Finish) Date from work package forms \[[#34122](https://community.openproject.org/wp/34122)\] +- Changed: Extend search autocompleter with useful information \[[#34132](https://community.openproject.org/wp/34132)\] +- Changed: [all projects overview] (Add option to) show status-text in expanded view. \[[#34191](https://community.openproject.org/wp/34191)\] +- Changed: Map board subtasks columns when copying projects \[[#34238](https://community.openproject.org/wp/34238)\] +- Changed: Having meetings as a linkable resource \[[#34256](https://community.openproject.org/wp/34256)\] +- Changed: What's new teaser OpenProject BIM 11.0 \[[#34514](https://community.openproject.org/wp/34514)\] +- Changed: New seed data for demo project - boards \[[#34526](https://community.openproject.org/wp/34526)\] +- Changed: Change text in the Action board creation modal \[[#34847](https://community.openproject.org/wp/34847)\] +- Epic: Switch between automatic and manual scheduling mode \[[#25624](https://community.openproject.org/wp/25624)\] +- Epic: Time tracking and cost control 2.0 \[[#32125](https://community.openproject.org/wp/32125)\] +- Epic: Wiki Macro functionality to allow retrieving work package and project attributes \[[#33648](https://community.openproject.org/wp/33648)\] +- Epic: Basic portfolio management for project list \[[#34167](https://community.openproject.org/wp/34167)\] +- Epic: Project Templates \[[#34468](https://community.openproject.org/wp/34468)\] ## Installation and Updates @@ -333,7 +333,7 @@ Special thanks go to all OpenProject contributors without whom this release woul - Special thanks for reporting and finding bugs go to: - Marc Vollmer, Andy Shilton, Christian Forgács, L B, Gábor Sift, Thyago Sanabio, Daniel Narberhaus, Harpan Budi Santoso, Çağlar Yeşilyurt, Rajiv Ranjan Sinha, Freddy Trotin, xin meng, Kris M, schermi schermi, Nick Bailey, Adam Vanko, Hartwin Leen, Sergey Anikin, Petros Christopoulos, Oscar Meier, Bert Regelink, Carsten Klein, Dagyo Lee, Jonatan Zint, Gio @ Enuan, Peter Pof, Sergey Shalikin, Benoit PETIT-DEMOULIERE + Marc Vollmer, Andy Shilton, Christian Forgács, L B, Gábor Sift, Thyago Sanabio, Daniel Narberhaus, Harpan Budi Santoso, Çağlar Yeşilyurt, Rajiv Ranjan Sinha, Freddy Trotin, Xin Meng, Kris M, Schermi Schermi, Nick Bailey, Adam Vanko, Hartwin Leen, Sergey Anikin, Petros Christopoulos, Oscar Meier, Bert Regelink, Carsten Klein, Dagyo Lee, Jonatan Zint, Gio @ Enuan, Peter Pof, Sergey Shalikin, Benoit Petit-Demouliere ## What’s next? diff --git a/docs/release-notes/11/11-0-1/README.md b/docs/release-notes/11/11-0-1/README.md index 81e900fd08c6..9e64fedf160a 100644 --- a/docs/release-notes/11/11-0-1/README.md +++ b/docs/release-notes/11/11-0-1/README.md @@ -8,26 +8,26 @@ release_date: 2020-10-28 # OpenProject 11.0.1 -We released [OpenProject 11.0.1](https://community.openproject.com/versions/1453). +We released [OpenProject 11.0.1](https://community.openproject.org/versions/1453). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Gantt chart: styles conflict between last active work package and hovered work package \[[#34126](https://community.openproject.com/wp/34126)\] -- Fixed: Displaced datepicker for custom fields in the project dashboard \[[#34253](https://community.openproject.com/wp/34253)\] -- Fixed: Date field for version cannot be set / edited from Backlogs page anymore \[[#34436](https://community.openproject.com/wp/34436)\] -- Fixed: Gantt chart and table scroll independently (e.g. when creating subtask) \[[#34828](https://community.openproject.com/wp/34828)\] -- Fixed: Error message when copying boards not scrollable \[[#34842](https://community.openproject.com/wp/34842)\] -- Fixed: Burndown button shown on task board that just reloads page \[[#34880](https://community.openproject.com/wp/34880)\] -- Fixed: Datepicker doesn't work on Firefox \[[#34910](https://community.openproject.com/wp/34910)\] -- Fixed: Highlighting in date picker incorrect \[[#34929](https://community.openproject.com/wp/34929)\] -- Fixed: Migration to 11.0.0 fails for users having had MySQL \[[#34933](https://community.openproject.com/wp/34933)\] -- Fixed: Settingpage "API": Page not found \[[#34938](https://community.openproject.com/wp/34938)\] -- Fixed: User language is not updating through api \[[#34964](https://community.openproject.com/wp/34964)\] -- Fixed: Filter on CF string brakes form in split screen. \[[#34987](https://community.openproject.com/wp/34987)\] -- Fixed: API Settings Page Broken - ActionController::RoutingError (uninitialized constant Settings::ApiController \[[#34994](https://community.openproject.com/wp/34994)\] -- Fixed: Repo Management Not Working \[[#35011](https://community.openproject.com/wp/35011)\] +- Fixed: Gantt chart: styles conflict between last active work package and hovered work package \[[#34126](https://community.openproject.org/wp/34126)\] +- Fixed: Displaced datepicker for custom fields in the project dashboard \[[#34253](https://community.openproject.org/wp/34253)\] +- Fixed: Date field for version cannot be set / edited from Backlogs page anymore \[[#34436](https://community.openproject.org/wp/34436)\] +- Fixed: Gantt chart and table scroll independently (e.g. when creating subtask) \[[#34828](https://community.openproject.org/wp/34828)\] +- Fixed: Error message when copying boards not scrollable \[[#34842](https://community.openproject.org/wp/34842)\] +- Fixed: Burndown button shown on task board that just reloads page \[[#34880](https://community.openproject.org/wp/34880)\] +- Fixed: Datepicker doesn't work on Firefox \[[#34910](https://community.openproject.org/wp/34910)\] +- Fixed: Highlighting in date picker incorrect \[[#34929](https://community.openproject.org/wp/34929)\] +- Fixed: Migration to 11.0.0 fails for users having had MySQL \[[#34933](https://community.openproject.org/wp/34933)\] +- Fixed: Settings page "API": Page not found \[[#34938](https://community.openproject.org/wp/34938)\] +- Fixed: User language is not updating through api \[[#34964](https://community.openproject.org/wp/34964)\] +- Fixed: Filter on CF string brakes form in split screen. \[[#34987](https://community.openproject.org/wp/34987)\] +- Fixed: API Settings Page Broken - ActionController::RoutingError (uninitialized constant Settings::ApiController \[[#34994](https://community.openproject.org/wp/34994)\] +- Fixed: Repo Management Not Working \[[#35011](https://community.openproject.org/wp/35011)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-0-2/README.md b/docs/release-notes/11/11-0-2/README.md index 251b2ebaa15d..15cab67fa87d 100644 --- a/docs/release-notes/11/11-0-2/README.md +++ b/docs/release-notes/11/11-0-2/README.md @@ -8,16 +8,16 @@ release_date: 2020-11-06 # OpenProject 11.0.2 -We released [OpenProject 11.0.2](https://community.openproject.com/versions/1454). +We released [OpenProject 11.0.2](https://community.openproject.org/versions/1454). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Typos / missing words in German translation when deleting user \[[#35072](https://community.openproject.com/wp/35072)\] -- Fixed: Default docker-compose.yml is has tag 10 \[[#35093](https://community.openproject.com/wp/35093)\] -- Fixed: Copied wiki attachments have original author while it should be the copying user \[[#35126](https://community.openproject.com/wp/35126)\] -- Fixed: Slashes in wiki page titles break "Activity" view \[[#35132](https://community.openproject.com/wp/35132)\] +- Fixed: Typos / missing words in German translation when deleting user \[[#35072](https://community.openproject.org/wp/35072)\] +- Fixed: Default docker-compose.yml is has tag 10 \[[#35093](https://community.openproject.org/wp/35093)\] +- Fixed: Copied wiki attachments have original author while it should be the copying user \[[#35126](https://community.openproject.org/wp/35126)\] +- Fixed: Slashes in wiki page titles break "Activity" view \[[#35132](https://community.openproject.org/wp/35132)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-0-3/README.md b/docs/release-notes/11/11-0-3/README.md index ba5ab369c883..f4add900766a 100644 --- a/docs/release-notes/11/11-0-3/README.md +++ b/docs/release-notes/11/11-0-3/README.md @@ -8,15 +8,15 @@ release_date: 2020-11-16 # OpenProject 11.0.3 -We released [OpenProject 11.0.3](https://community.openproject.com/versions/1456). +We released [OpenProject 11.0.3](https://community.openproject.org/versions/1456). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Bulk edit: Custom field long text cut off \[[#34829](https://community.openproject.com/wp/34829)\] -- Fixed: "Estimates and time" not translated to German when not logged in on community.openproject.com \[[#35009](https://community.openproject.com/wp/35009)\] -- Fixed: IFC viewer can't load models when OP installed on subpath \[[#35129](https://community.openproject.com/wp/35129)\] -- Fixed: Elder BIM instances get "OpenProject" theme instead of the "OpenProject BIM" theme after migration. \[[#35131](https://community.openproject.com/wp/35131)\] -- Fixed: Transitive Relations embedded in work package representer -> poor performance \[[#35168](https://community.openproject.com/wp/35168)\] -- Fixed: LDAP Group sync deletes users when removed from group \[[#35265](https://community.openproject.com/wp/35265)\] +- Fixed: Bulk edit: Custom field long text cut off \[[#34829](https://community.openproject.org/wp/34829)\] +- Fixed: "Estimates and time" not translated to German when not logged in on community.openproject.org \[[#35009](https://community.openproject.org/wp/35009)\] +- Fixed: IFC viewer can't load models when OP installed on subpath \[[#35129](https://community.openproject.org/wp/35129)\] +- Fixed: Elder BIM instances get "OpenProject" theme instead of the "OpenProject BIM" theme after migration. \[[#35131](https://community.openproject.org/wp/35131)\] +- Fixed: Transitive Relations embedded in work package representer -> poor performance \[[#35168](https://community.openproject.org/wp/35168)\] +- Fixed: LDAP Group sync deletes users when removed from group \[[#35265](https://community.openproject.org/wp/35265)\] diff --git a/docs/release-notes/11/11-0-4/README.md b/docs/release-notes/11/11-0-4/README.md index 58f09ed623ce..7ba80b1c9e5f 100644 --- a/docs/release-notes/11/11-0-4/README.md +++ b/docs/release-notes/11/11-0-4/README.md @@ -8,17 +8,17 @@ release_date: 2020-12-03 # OpenProject 11.0.4 -We released [OpenProject 11.0.4](https://community.openproject.com/versions/1458). +We released [OpenProject 11.0.4](https://community.openproject.org/versions/1458). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Budgets Fail to Copy due to Missing Superclass Method \[[#34966](https://community.openproject.com/wp/34966)\] -- Fixed: Selected design / theme lost when switching to "Backlogs" module \[[#34968](https://community.openproject.com/wp/34968)\] -- Fixed: Initially seeded homepage grid cannot be edited \[[#35266](https://community.openproject.com/wp/35266)\] -- Fixed: [Translation][German] Administration>User&Permissions>Roles \[[#35363](https://community.openproject.com/wp/35363)\] -- Fixed: Internal error (500) on meeting history page when clicking on previous version link \[[#35433](https://community.openproject.com/wp/35433)\] +- Fixed: Budgets Fail to Copy due to Missing Superclass Method \[[#34966](https://community.openproject.org/wp/34966)\] +- Fixed: Selected design / theme lost when switching to "Backlogs" module \[[#34968](https://community.openproject.org/wp/34968)\] +- Fixed: Initially seeded homepage grid cannot be edited \[[#35266](https://community.openproject.org/wp/35266)\] +- Fixed: [Translation][German] Administration>User&Permissions>Roles \[[#35363](https://community.openproject.org/wp/35363)\] +- Fixed: Internal error (500) on meeting history page when clicking on previous version link \[[#35433](https://community.openproject.org/wp/35433)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-1-0/README.md b/docs/release-notes/11/11-1-0/README.md index 4a402a246479..e333a2a1e582 100644 --- a/docs/release-notes/11/11-1-0/README.md +++ b/docs/release-notes/11/11-1-0/README.md @@ -11,7 +11,7 @@ release_date: 2020-12-17 Release date: 2020-12-17 -We released [OpenProject 11.1.0](https://community.openproject.com/versions/1424). +We released [OpenProject 11.1.0](https://community.openproject.org/versions/1424). This new release will bring many new features and bug fixes that will improve classical as well as agile project management. ## Improved styling of the WYSIWYG text editor @@ -58,32 +58,32 @@ There are a lot more things we packed into 11.1 to tell you about. ### Bug fixes and changes in 11.1 -- Changed: @ mention should show user name in the editor \[[#32645](https://community.openproject.com/wp/32645)\] -- Changed: Update CK Editor 5 to version 23.0.0 \[[#34595](https://community.openproject.com/wp/34595)\] -- Changed: Display project's milestones in Gantt chart aggregated in single row \[[#34943](https://community.openproject.com/wp/34943)\] -- Changed: Add custom classes to the CKEditor elements \[[#35104](https://community.openproject.com/wp/35104)\] -- Changed: Change icon and text in menu item in project list \[[#35436](https://community.openproject.com/wp/35436)\] -- Fixed: Wrong default settings for Gantt chart button in project list \[[#34312](https://community.openproject.com/wp/34312)\] -- Fixed: Locked work packages do not copy on project copy \[[#34496](https://community.openproject.com/wp/34496)\] -- Fixed: Boards view doesn't keep the list order (order of the columns) \[[#35004](https://community.openproject.com/wp/35004)\] -- Fixed: caption is copied into the description and multiplied \[[#35123](https://community.openproject.com/wp/35123)\] -- Fixed: Copy budget: Manually set cost are set back to cost deduced from number of units \[[#35484](https://community.openproject.com/wp/35484)\] -- Fixed: "Translation missing" shown in administration > groups \[[#35578](https://community.openproject.com/wp/35578)\] -- Fixed: In WYSIWYG editor preview formatting not correctly applied \[[#35593](https://community.openproject.com/wp/35593)\] -- Fixed: Internal error in project when adding "." in title of wiki page \[[#35594](https://community.openproject.com/wp/35594)\] -- Fixed: Missing lines under headings in WYSIWYG editor \[[#35603](https://community.openproject.com/wp/35603)\] -- Fixed: WYSIWYG table: Tiny column when adding to the left of header column / formatting header not applied in edit \[[#35610](https://community.openproject.com/wp/35610)\] -- Fixed: Links in table of content not functional when macro in same row as toc \[[#35611](https://community.openproject.com/wp/35611)\] -- Fixed: 500er server error when opening query \[[#35620](https://community.openproject.com/wp/35620)\] -- Fixed: 500 on accessing user specific activity page \[[#35621](https://community.openproject.com/wp/35621)\] -- Fixed: "no end date" instead of "no finish date" in work package form \[[#35624](https://community.openproject.com/wp/35624)\] -- Fixed: Code-Snippets are shown nested within each other after update to 11.1 \[[#35628](https://community.openproject.com/wp/35628)\] -- Fixed: Images are left-aligned after update to OpenProject 11.1 \[[#35629](https://community.openproject.com/wp/35629)\] -- Fixed: Internal error when selecting user link on qa-edge \[[#35640](https://community.openproject.com/wp/35640)\] -- Fixed: Line breaks within words in table cells \[[#35644](https://community.openproject.com/wp/35644)\] -- Fixed: Typo in DPA email \[[#35653](https://community.openproject.com/wp/35653)\] -- Fixed: Typo in DPA text in OpenProject \[[#35654](https://community.openproject.com/wp/35654)\] -- Fixed: Cannot set nummerated headings without duplicating nummeration in table of contents \[[#35656](https://community.openproject.com/wp/35656)\] +- Changed: @ mention should show user name in the editor \[[#32645](https://community.openproject.org/wp/32645)\] +- Changed: Update CK Editor 5 to version 23.0.0 \[[#34595](https://community.openproject.org/wp/34595)\] +- Changed: Display project's milestones in Gantt chart aggregated in single row \[[#34943](https://community.openproject.org/wp/34943)\] +- Changed: Add custom classes to the CKEditor elements \[[#35104](https://community.openproject.org/wp/35104)\] +- Changed: Change icon and text in menu item in project list \[[#35436](https://community.openproject.org/wp/35436)\] +- Fixed: Wrong default settings for Gantt chart button in project list \[[#34312](https://community.openproject.org/wp/34312)\] +- Fixed: Locked work packages do not copy on project copy \[[#34496](https://community.openproject.org/wp/34496)\] +- Fixed: Boards view doesn't keep the list order (order of the columns) \[[#35004](https://community.openproject.org/wp/35004)\] +- Fixed: caption is copied into the description and multiplied \[[#35123](https://community.openproject.org/wp/35123)\] +- Fixed: Copy budget: Manually set cost are set back to cost deduced from number of units \[[#35484](https://community.openproject.org/wp/35484)\] +- Fixed: "Translation missing" shown in administration > groups \[[#35578](https://community.openproject.org/wp/35578)\] +- Fixed: In WYSIWYG editor preview formatting not correctly applied \[[#35593](https://community.openproject.org/wp/35593)\] +- Fixed: Internal error in project when adding "." in title of wiki page \[[#35594](https://community.openproject.org/wp/35594)\] +- Fixed: Missing lines under headings in WYSIWYG editor \[[#35603](https://community.openproject.org/wp/35603)\] +- Fixed: WYSIWYG table: Tiny column when adding to the left of header column / formatting header not applied in edit \[[#35610](https://community.openproject.org/wp/35610)\] +- Fixed: Links in table of content not functional when macro in same row as toc \[[#35611](https://community.openproject.org/wp/35611)\] +- Fixed: 500er server error when opening query \[[#35620](https://community.openproject.org/wp/35620)\] +- Fixed: 500 on accessing user specific activity page \[[#35621](https://community.openproject.org/wp/35621)\] +- Fixed: "no end date" instead of "no finish date" in work package form \[[#35624](https://community.openproject.org/wp/35624)\] +- Fixed: Code-Snippets are shown nested within each other after update to 11.1 \[[#35628](https://community.openproject.org/wp/35628)\] +- Fixed: Images are left-aligned after update to OpenProject 11.1 \[[#35629](https://community.openproject.org/wp/35629)\] +- Fixed: Internal error when selecting user link on qa-edge \[[#35640](https://community.openproject.org/wp/35640)\] +- Fixed: Line breaks within words in table cells \[[#35644](https://community.openproject.org/wp/35644)\] +- Fixed: Typo in DPA email \[[#35653](https://community.openproject.org/wp/35653)\] +- Fixed: Typo in DPA text in OpenProject \[[#35654](https://community.openproject.org/wp/35654)\] +- Fixed: Cannot set numerated headings without duplicating numeration in table of contents \[[#35656](https://community.openproject.org/wp/35656)\] ## Installation and Updates @@ -120,4 +120,4 @@ Special thanks go to all OpenProject contributors without whom this release woul ## What’s next? -We are continuously developing new features and improvements for OpenProject. If you’d like to preview what’s coming in the next release, be sure to check out our [development roadmap](https://community.openproject.com/projects/openproject/work_packages?query_id=918). +We are continuously developing new features and improvements for OpenProject. If you’d like to preview what’s coming in the next release, be sure to check out our [development roadmap](https://community.openproject.org/projects/openproject/work_packages?query_id=918). diff --git a/docs/release-notes/11/11-1-1/README.md b/docs/release-notes/11/11-1-1/README.md index 235a2198aae7..e4976ab06713 100644 --- a/docs/release-notes/11/11-1-1/README.md +++ b/docs/release-notes/11/11-1-1/README.md @@ -8,16 +8,16 @@ release_date: 2021-01-06 # OpenProject 11.1.1 -We released [OpenProject 11.1.1](https://community.openproject.com/versions/1463). +We released [OpenProject 11.1.1](https://community.openproject.org/versions/1463). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Week number is wrong after November \[[#35095](https://community.openproject.com/wp/35095)\] -- Fixed: Deleted user associated to planned labor costs lead to 500 on Budget \[[#35670](https://community.openproject.com/wp/35670)\] -- Fixed: Renamed column updated_on is still referenced for settings \[[#35673](https://community.openproject.com/wp/35673)\] -- Fixed: Newrelic gem incorrectly loaded on installations resulting in unnecessary logs \[[#35776](https://community.openproject.com/wp/35776)\] +- Fixed: Week number is wrong after November \[[#35095](https://community.openproject.org/wp/35095)\] +- Fixed: Deleted user associated to planned labor costs lead to 500 on Budget \[[#35670](https://community.openproject.org/wp/35670)\] +- Fixed: Renamed column updated_on is still referenced for settings \[[#35673](https://community.openproject.org/wp/35673)\] +- Fixed: Newrelic gem incorrectly loaded on installations resulting in unnecessary logs \[[#35776](https://community.openproject.org/wp/35776)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-1-2/README.md b/docs/release-notes/11/11-1-2/README.md index 022805f55582..9620fe0160ae 100644 --- a/docs/release-notes/11/11-1-2/README.md +++ b/docs/release-notes/11/11-1-2/README.md @@ -8,23 +8,23 @@ release_date: 2021-01-21 # OpenProject 11.1.2 -We released [OpenProject 11.1.2](https://community.openproject.com/versions/1466). +We released [OpenProject 11.1.2](https://community.openproject.org/versions/1466). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Add table option not displayed properly when at bottom of page \[[#31502](https://community.openproject.com/wp/31502)\] -- Fixed: .png images keep disappearing from description and from attachments \[[#35180](https://community.openproject.com/wp/35180)\] -- Fixed: Internal error when setting start / end date in work package \[[#35352](https://community.openproject.com/wp/35352)\] -- Fixed: Summary view in work package module shows vertical instead of horizontal words \[[#35679](https://community.openproject.com/wp/35679)\] -- Fixed: Wrong journal entry \[[#35682](https://community.openproject.com/wp/35682)\] -- Fixed: Relative URL installations with Docker broken \[[#35775](https://community.openproject.com/wp/35775)\] -- Fixed: Cannot edit markdown content with work package links in certain scenarios \[[#35786](https://community.openproject.com/wp/35786)\] -- Fixed: 500 on deletion of used document category \[[#35827](https://community.openproject.com/wp/35827)\] -- Fixed: Uninitialized constant Net::LDAP::LdapError \[[#35829](https://community.openproject.com/wp/35829)\] -- Fixed: Incoming email: Priority is not overridable by default \[[#35949](https://community.openproject.com/wp/35949)\] -- Fixed: Conflicting modifications error when uploading images in WP description \[[#35957](https://community.openproject.com/wp/35957)\] +- Fixed: Add table option not displayed properly when at bottom of page \[[#31502](https://community.openproject.org/wp/31502)\] +- Fixed: .png images keep disappearing from description and from attachments \[[#35180](https://community.openproject.org/wp/35180)\] +- Fixed: Internal error when setting start / end date in work package \[[#35352](https://community.openproject.org/wp/35352)\] +- Fixed: Summary view in work package module shows vertical instead of horizontal words \[[#35679](https://community.openproject.org/wp/35679)\] +- Fixed: Wrong journal entry \[[#35682](https://community.openproject.org/wp/35682)\] +- Fixed: Relative URL installations with Docker broken \[[#35775](https://community.openproject.org/wp/35775)\] +- Fixed: Cannot edit markdown content with work package links in certain scenarios \[[#35786](https://community.openproject.org/wp/35786)\] +- Fixed: 500 on deletion of used document category \[[#35827](https://community.openproject.org/wp/35827)\] +- Fixed: Uninitialized constant Net::LDAP::LdapError \[[#35829](https://community.openproject.org/wp/35829)\] +- Fixed: Incoming email: Priority is not overridable by default \[[#35949](https://community.openproject.org/wp/35949)\] +- Fixed: Conflicting modifications error when uploading images in WP description \[[#35957](https://community.openproject.org/wp/35957)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-1-3/README.md b/docs/release-notes/11/11-1-3/README.md index ead072b84b03..2bb876b17aed 100644 --- a/docs/release-notes/11/11-1-3/README.md +++ b/docs/release-notes/11/11-1-3/README.md @@ -8,17 +8,17 @@ release_date: 2021-02-11 # OpenProject 11.1.3 -We released [OpenProject 11.1.3](https://community.openproject.com/versions/1469). +We released [OpenProject 11.1.3](https://community.openproject.org/versions/1469). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Filter gets removed (ERIK@Staging) \[[#34003](https://community.openproject.com/wp/34003)\] -- Fixed: S3 presigned URL cached for 7 days does not work with IAM roles and is a security issue \[[#35739](https://community.openproject.com/wp/35739)\] -- Fixed: Images directly uploaded to s3 are not displayed within new tab \[[#36018](https://community.openproject.com/wp/36018)\] -- Fixed: Selecting "Atom" in export menu throws cryptic error \[[#36052](https://community.openproject.com/wp/36052)\] -- Fixed: Creating new synchronized groups from filters raises error if group name too long \[[#36081](https://community.openproject.com/wp/36081)\] +- Fixed: Filter gets removed (ERIK@Staging) \[[#34003](https://community.openproject.org/wp/34003)\] +- Fixed: S3 presigned URL cached for 7 days does not work with IAM roles and is a security issue \[[#35739](https://community.openproject.org/wp/35739)\] +- Fixed: Images directly uploaded to s3 are not displayed within new tab \[[#36018](https://community.openproject.org/wp/36018)\] +- Fixed: Selecting "Atom" in export menu throws cryptic error \[[#36052](https://community.openproject.org/wp/36052)\] +- Fixed: Creating new synchronized groups from filters raises error if group name too long \[[#36081](https://community.openproject.org/wp/36081)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-1-4/README.md b/docs/release-notes/11/11-1-4/README.md index 79c2343e1228..9c9bdb458c17 100644 --- a/docs/release-notes/11/11-1-4/README.md +++ b/docs/release-notes/11/11-1-4/README.md @@ -8,11 +8,11 @@ release_date: 2021-02-15 # OpenProject 11.1.4 -We released [OpenProject 11.1.4](https://community.openproject.com/versions/1470). +We released [OpenProject 11.1.4](https://community.openproject.org/versions/1470). The release contains an important bug fix and we urge you to update to the newest version. #### Bug fixes and changes -- Fixed: Some settings can be written without authorization \[[#36254](https://community.openproject.com/wp/36254)\] +- Fixed: Some settings can be written without authorization \[[#36254](https://community.openproject.org/wp/36254)\] diff --git a/docs/release-notes/11/11-2-0/README.md b/docs/release-notes/11/11-2-0/README.md index beb7d2d57361..fe510b9edd37 100644 --- a/docs/release-notes/11/11-2-0/README.md +++ b/docs/release-notes/11/11-2-0/README.md @@ -10,7 +10,7 @@ release_date: 2021-03-09 Release date: 2021-03-09 -We released [OpenProject 11.2.0](https://community.openproject.com/versions/1461). +We released [OpenProject 11.2.0](https://community.openproject.org/versions/1461). This new release will bring many new features and bug fixes that will improve classical as well as agile project management. ## Placeholder users (Enterprise add-on) @@ -50,49 +50,49 @@ Furthermore, with 11.2 we have implemented various UI and UX improvements for O ### All bug fixes and changes -- Changed: Make the cost reporting navigation consistent with the other modules \[[#32928](https://community.openproject.com/wp/32928)\] -- Changed: Add work package filter for child work packages \[[#33163](https://community.openproject.com/wp/33163)\] -- Changed: Swap background colors of sum rows and group rows \[[#34711](https://community.openproject.com/wp/34711)\] -- Changed: Backend: Introduce the concept of "placeholder users" in data layer, API, services, contracts \[[#35505](https://community.openproject.com/wp/35505)\] -- Changed: Backend: Disable all notifications for placeholder users \[[#35506](https://community.openproject.com/wp/35506)\] -- Changed: Backend: Add global permission for creating users (and invite) \[[#35507](https://community.openproject.com/wp/35507)\] -- Changed: Backend: Add global permission for creating and editing placeholder users \[[#35508](https://community.openproject.com/wp/35508)\] -- Changed: Backend: Add global permission for modifying users \[[#35533](https://community.openproject.com/wp/35533)\] -- Changed: Backend: Don't count placeholder users in user limits of plans/subscriptions \[[#35535](https://community.openproject.com/wp/35535)\] -- Changed: Backend: Show and manage placeholder users in user administration \[[#35536](https://community.openproject.com/wp/35536)\] -- Changed: Frontend: Show placeholder user in user type drop downs \[[#35571](https://community.openproject.com/wp/35571)\] -- Changed: Backend: Delete placeholder user \[[#35648](https://community.openproject.com/wp/35648)\] -- Changed: Add group show page similar to users \[[#35815](https://community.openproject.com/wp/35815)\] -- Changed: Remove setting "Allow assignment to groups" \[[#36056](https://community.openproject.com/wp/36056)\] -- Changed: Accommodate placeholder users in project members administration \[[#36136](https://community.openproject.com/wp/36136)\] -- Changed: Add work package filter by id \[[#36358](https://community.openproject.com/wp/36358)\] -- Fixed: OAuth login has CSP issues when user already had authorized the app \[[#34554](https://community.openproject.com/wp/34554)\] -- Fixed: Unclear error message when subproject column for action board cannot be displayed due to missing permissions \[[#34840](https://community.openproject.com/wp/34840)\] -- Fixed: Impossible to enter time with dots \[[#34922](https://community.openproject.com/wp/34922)\] -- Fixed: Cannot sort user columns (in administration) \[[#35012](https://community.openproject.com/wp/35012)\] -- Fixed: create new child returns version error (duplicate usage of type for backlogs sprint and task) \[[#35157](https://community.openproject.com/wp/35157)\] -- Fixed: Taskboard story height to be increased. Assignee and Story name out of box \[[#35735](https://community.openproject.com/wp/35735)\] -- Fixed: PDF export opens in same tab \[[#36051](https://community.openproject.com/wp/36051)\] -- Fixed: LDAP connection retrieves at max 1000 elements regardless of server limit \[[#36206](https://community.openproject.com/wp/36206)\] -- Fixed: Deletion of users and groups is incomplete and results in corrupted data \[[#36238](https://community.openproject.com/wp/36238)\] -- Fixed: Breadcrumbs missing for both users and placeholder users administration pages when not admin \[[#36250](https://community.openproject.com/wp/36250)\] -- Fixed: Section header "Custom fields" was removed in user details in administration \[[#36257](https://community.openproject.com/wp/36257)\] -- Fixed: Error "Project filter has invalid values" shown when filtering by Parent on global WP page \[[#36287](https://community.openproject.com/wp/36287)\] -- Fixed: Error "Project filter has invalid values" shown when filtering by Parent on My page \[[#36288](https://community.openproject.com/wp/36288)\] -- Fixed: Empty authentication section shown for some users in administration (for users who have global role to view / edit / create users) \[[#36294](https://community.openproject.com/wp/36294)\] -- Fixed: Error 500 when accessing "Member" list in project while user name display format is set to email \[[#36297](https://community.openproject.com/wp/36297)\] -- Fixed: Role "Create and edit users" can see GDPR and billing although not allowed to \[[#36298](https://community.openproject.com/wp/36298)\] -- Fixed: Role "Create and edit users" can not change user name \[[#36299](https://community.openproject.com/wp/36299)\] -- Fixed: Internal error when accessing project work package page after deleting placeholder user \[[#36300](https://community.openproject.com/wp/36300)\] -- Fixed: Translation missing for placeholder Enterprise Edition page \[[#36302](https://community.openproject.com/wp/36302)\] -- Fixed: Logged hours not visible in widget on My Page for languages other than English \[[#36304](https://community.openproject.com/wp/36304)\] -- Fixed: Grouping by assignee through settings menu does not work \[[#36318](https://community.openproject.com/wp/36318)\] -- Fixed: Work package alignment incorrect when updating work package values / opening details view \[[#36330](https://community.openproject.com/wp/36330)\] -- Fixed: Wrong error message when trying to log time for a placeholder user \[[#36353](https://community.openproject.com/wp/36353)\] -- Fixed: Cannot create work package if a version custom field is configured \[[#36395](https://community.openproject.com/wp/36395)\] -- Fixed: Buttons and queries not working after filtering for custom field \[[#36440](https://community.openproject.com/wp/36440)\] -- Fixed: Trying to sort placeholder users by name leads to Error 500 \[[#36517](https://community.openproject.com/wp/36517)\] -- Epic: Support for placeholder users that do not have an email address yet \[[#35933](https://community.openproject.com/wp/35933)\] +- Changed: Make the cost reporting navigation consistent with the other modules \[[#32928](https://community.openproject.org/wp/32928)\] +- Changed: Add work package filter for child work packages \[[#33163](https://community.openproject.org/wp/33163)\] +- Changed: Swap background colors of sum rows and group rows \[[#34711](https://community.openproject.org/wp/34711)\] +- Changed: Backend: Introduce the concept of "placeholder users" in data layer, API, services, contracts \[[#35505](https://community.openproject.org/wp/35505)\] +- Changed: Backend: Disable all notifications for placeholder users \[[#35506](https://community.openproject.org/wp/35506)\] +- Changed: Backend: Add global permission for creating users (and invite) \[[#35507](https://community.openproject.org/wp/35507)\] +- Changed: Backend: Add global permission for creating and editing placeholder users \[[#35508](https://community.openproject.org/wp/35508)\] +- Changed: Backend: Add global permission for modifying users \[[#35533](https://community.openproject.org/wp/35533)\] +- Changed: Backend: Don't count placeholder users in user limits of plans/subscriptions \[[#35535](https://community.openproject.org/wp/35535)\] +- Changed: Backend: Show and manage placeholder users in user administration \[[#35536](https://community.openproject.org/wp/35536)\] +- Changed: Frontend: Show placeholder user in user type drop downs \[[#35571](https://community.openproject.org/wp/35571)\] +- Changed: Backend: Delete placeholder user \[[#35648](https://community.openproject.org/wp/35648)\] +- Changed: Add group show page similar to users \[[#35815](https://community.openproject.org/wp/35815)\] +- Changed: Remove setting "Allow assignment to groups" \[[#36056](https://community.openproject.org/wp/36056)\] +- Changed: Accommodate placeholder users in project members administration \[[#36136](https://community.openproject.org/wp/36136)\] +- Changed: Add work package filter by id \[[#36358](https://community.openproject.org/wp/36358)\] +- Fixed: OAuth login has CSP issues when user already had authorized the app \[[#34554](https://community.openproject.org/wp/34554)\] +- Fixed: Unclear error message when subproject column for action board cannot be displayed due to missing permissions \[[#34840](https://community.openproject.org/wp/34840)\] +- Fixed: Impossible to enter time with dots \[[#34922](https://community.openproject.org/wp/34922)\] +- Fixed: Cannot sort user columns (in administration) \[[#35012](https://community.openproject.org/wp/35012)\] +- Fixed: create new child returns version error (duplicate usage of type for backlogs sprint and task) \[[#35157](https://community.openproject.org/wp/35157)\] +- Fixed: Taskboard story height to be increased. Assignee and Story name out of box \[[#35735](https://community.openproject.org/wp/35735)\] +- Fixed: PDF export opens in same tab \[[#36051](https://community.openproject.org/wp/36051)\] +- Fixed: LDAP connection retrieves at max 1000 elements regardless of server limit \[[#36206](https://community.openproject.org/wp/36206)\] +- Fixed: Deletion of users and groups is incomplete and results in corrupted data \[[#36238](https://community.openproject.org/wp/36238)\] +- Fixed: Breadcrumbs missing for both users and placeholder users administration pages when not admin \[[#36250](https://community.openproject.org/wp/36250)\] +- Fixed: Section header "Custom fields" was removed in user details in administration \[[#36257](https://community.openproject.org/wp/36257)\] +- Fixed: Error "Project filter has invalid values" shown when filtering by Parent on global WP page \[[#36287](https://community.openproject.org/wp/36287)\] +- Fixed: Error "Project filter has invalid values" shown when filtering by Parent on My page \[[#36288](https://community.openproject.org/wp/36288)\] +- Fixed: Empty authentication section shown for some users in administration (for users who have global role to view / edit / create users) \[[#36294](https://community.openproject.org/wp/36294)\] +- Fixed: Error 500 when accessing "Member" list in project while user name display format is set to email \[[#36297](https://community.openproject.org/wp/36297)\] +- Fixed: Role "Create and edit users" can see GDPR and billing although not allowed to \[[#36298](https://community.openproject.org/wp/36298)\] +- Fixed: Role "Create and edit users" can not change user name \[[#36299](https://community.openproject.org/wp/36299)\] +- Fixed: Internal error when accessing project work package page after deleting placeholder user \[[#36300](https://community.openproject.org/wp/36300)\] +- Fixed: Translation missing for placeholder Enterprise Edition page \[[#36302](https://community.openproject.org/wp/36302)\] +- Fixed: Logged hours not visible in widget on My Page for languages other than English \[[#36304](https://community.openproject.org/wp/36304)\] +- Fixed: Grouping by assignee through settings menu does not work \[[#36318](https://community.openproject.org/wp/36318)\] +- Fixed: Work package alignment incorrect when updating work package values / opening details view \[[#36330](https://community.openproject.org/wp/36330)\] +- Fixed: Wrong error message when trying to log time for a placeholder user \[[#36353](https://community.openproject.org/wp/36353)\] +- Fixed: Cannot create work package if a version custom field is configured \[[#36395](https://community.openproject.org/wp/36395)\] +- Fixed: Buttons and queries not working after filtering for custom field \[[#36440](https://community.openproject.org/wp/36440)\] +- Fixed: Trying to sort placeholder users by name leads to Error 500 \[[#36517](https://community.openproject.org/wp/36517)\] +- Epic: Support for placeholder users that do not have an email address yet \[[#35933](https://community.openproject.org/wp/35933)\] ## Installation and Updates diff --git a/docs/release-notes/11/11-2-1/README.md b/docs/release-notes/11/11-2-1/README.md index 16565d5f7830..14f000344fd3 100644 --- a/docs/release-notes/11/11-2-1/README.md +++ b/docs/release-notes/11/11-2-1/README.md @@ -10,24 +10,24 @@ release_date: 2021-03-23 Release date: 2021-03-23 -We released [OpenProject 11.2.1](https://community.openproject.com/versions/1472). +We released [OpenProject 11.2.1](https://community.openproject.org/versions/1472). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Inbound Emails - Email headers not handled correctly \[[#35834](https://community.openproject.com/wp/35834)\] -- Fixed: Configuration and display of days in My spent time widget on my Page do not match \[[#35920](https://community.openproject.com/wp/35920)\] -- Fixed: All data lost when switching from details view to fullscreen view while creating a work package \[[#35968](https://community.openproject.com/wp/35968)\] -- Fixed: missing translation "ja.js.units.hour.one" \[[#36269](https://community.openproject.com/wp/36269)\] -- Fixed: Internal Error when Wiki entry contains single "!" \[[#36345](https://community.openproject.com/wp/36345)\] -- Fixed: Missing word in deletion confirmation for placeholder users \[[#36516](https://community.openproject.com/wp/36516)\] -- Fixed: Cannot select assignee on WP create when filtering for multi-select custom field of type list \[[#36607](https://community.openproject.com/wp/36607)\] -- Fixed: Error message in wrong language \[[#36688](https://community.openproject.com/wp/36688)\] +- Fixed: Inbound Emails - Email headers not handled correctly \[[#35834](https://community.openproject.org/wp/35834)\] +- Fixed: Configuration and display of days in My spent time widget on my Page do not match \[[#35920](https://community.openproject.org/wp/35920)\] +- Fixed: All data lost when switching from details view to fullscreen view while creating a work package \[[#35968](https://community.openproject.org/wp/35968)\] +- Fixed: missing translation "ja.js.units.hour.one" \[[#36269](https://community.openproject.org/wp/36269)\] +- Fixed: Internal Error when Wiki entry contains single "!" \[[#36345](https://community.openproject.org/wp/36345)\] +- Fixed: Missing word in deletion confirmation for placeholder users \[[#36516](https://community.openproject.org/wp/36516)\] +- Fixed: Cannot select assignee on WP create when filtering for multi-select custom field of type list \[[#36607](https://community.openproject.org/wp/36607)\] +- Fixed: Error message in wrong language \[[#36688](https://community.openproject.org/wp/36688)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. Special thanks for reporting and finding bugs go to -Benjamin Tey, wataru shoji +Benjamin Tey, Wataru Shoji diff --git a/docs/release-notes/11/11-2-2/README.md b/docs/release-notes/11/11-2-2/README.md index faad80f436af..0cfd6b7ff0b3 100644 --- a/docs/release-notes/11/11-2-2/README.md +++ b/docs/release-notes/11/11-2-2/README.md @@ -10,16 +10,16 @@ release_date: 2021-03-24 Release date: 2021-03-24 -We released [OpenProject 11.2.2](https://community.openproject.com/versions/1473). +We released [OpenProject 11.2.2](https://community.openproject.org/versions/1473). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Column filter in Action Boards (e.g. Assignee, status, version, ...) is case sensitive \[[#35744](https://community.openproject.com/wp/35744)\] -- Fixed: Create new role: "Check all" / "Uncheck all" for new role not working \[[#36291](https://community.openproject.com/wp/36291)\] -- Fixed: Missing localization string for "Derived estimated hours" \[[#36712](https://community.openproject.com/wp/36712)\] -- Fixed: Serious Problem: Openproject not running after Upgrade to 11.2.1 – rake aborted! NoMethodError: undefined method `patch_gem_version' for OpenProject::Patches:Module \[[#36717](https://community.openproject.com/wp/36717)\] +- Fixed: Column filter in Action Boards (e.g. Assignee, status, version, ...) is case sensitive \[[#35744](https://community.openproject.org/wp/35744)\] +- Fixed: Create new role: "Check all" / "Uncheck all" for new role not working \[[#36291](https://community.openproject.org/wp/36291)\] +- Fixed: Missing localization string for "Derived estimated hours" \[[#36712](https://community.openproject.org/wp/36712)\] +- Fixed: Serious Problem: OpenProject not running after Upgrade to 11.2.1 – rake aborted! NoMethodError: undefined method `patch_gem_version' for OpenProject::Patches:Module \[[#36717](https://community.openproject.org/wp/36717)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-2-3/README.md b/docs/release-notes/11/11-2-3/README.md index 45e92c3c7b8a..575d5534bc57 100644 --- a/docs/release-notes/11/11-2-3/README.md +++ b/docs/release-notes/11/11-2-3/README.md @@ -10,18 +10,18 @@ release_date: 2021-04-23 Release date: 2021-04-23 -We released [OpenProject 11.2.3](https://community.openproject.com/versions/1474). +We released [OpenProject 11.2.3](https://community.openproject.org/versions/1474). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Task "Start Date in less than" filter does not include dates in the past. \[[#34513](https://community.openproject.com/wp/34513)\] -- Fixed: MimeMagic deprecated \[[#36725](https://community.openproject.com/wp/36725)\] -- Fixed: date entry of custom date field cannot be deleted \[[#36727](https://community.openproject.com/wp/36727)\] -- Fixed: Assign random password broken if "Number of most recently used passwords banned for reuse" enabled \[[#36746](https://community.openproject.com/wp/36746)\] -- Fixed: Work package table and Gantt not aligned \[[#36764](https://community.openproject.com/wp/36764)\] -- Fixed: BIM group seed data is always applied \[[#36796](https://community.openproject.com/wp/36796)\] +- Fixed: Task "Start Date in less than" filter does not include dates in the past. \[[#34513](https://community.openproject.org/wp/34513)\] +- Fixed: MimeMagic deprecated \[[#36725](https://community.openproject.org/wp/36725)\] +- Fixed: date entry of custom date field cannot be deleted \[[#36727](https://community.openproject.org/wp/36727)\] +- Fixed: Assign random password broken if "Number of most recently used passwords banned for reuse" enabled \[[#36746](https://community.openproject.org/wp/36746)\] +- Fixed: Work package table and Gantt not aligned \[[#36764](https://community.openproject.org/wp/36764)\] +- Fixed: BIM group seed data is always applied \[[#36796](https://community.openproject.org/wp/36796)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-2-4/README.md b/docs/release-notes/11/11-2-4/README.md index 9cdf2a712ddc..c0b0bd3bd074 100644 --- a/docs/release-notes/11/11-2-4/README.md +++ b/docs/release-notes/11/11-2-4/README.md @@ -10,24 +10,24 @@ release_date: 2021-05-10 Release date: 2021-05-10 -We released [OpenProject 11.2.4](https://community.openproject.com/versions/1476). +We released [OpenProject 11.2.4](https://community.openproject.org/versions/1476). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Pagination in search results \[[#35045](https://community.openproject.com/wp/35045)\] -- Fixed: Images in Dashboard are stretched in Safari \[[#36547](https://community.openproject.com/wp/36547)\] -- Fixed: Docker[ proxy apache2]: Report 502 if the file is uploaded \[[#36685](https://community.openproject.com/wp/36685)\] -- Fixed: Refresh problem after archiving projects \[[#36978](https://community.openproject.com/wp/36978)\] -- Fixed: Delayed request with system user fails due to temporary admin permissions \[[#37010](https://community.openproject.com/wp/37010)\] -- Fixed: Umlauts in project name break exports \[[#37014](https://community.openproject.com/wp/37014)\] -- Fixed: Setting sync users in synchronized group does not work without on-the-fly LDAP \[[#37036](https://community.openproject.com/wp/37036)\] -- Fixed: BIM seeder overrides custom design \[[#37037](https://community.openproject.com/wp/37037)\] +- Fixed: Pagination in search results \[[#35045](https://community.openproject.org/wp/35045)\] +- Fixed: Images in Dashboard are stretched in Safari \[[#36547](https://community.openproject.org/wp/36547)\] +- Fixed: Docker[ proxy apache2]: Report 502 if the file is uploaded \[[#36685](https://community.openproject.org/wp/36685)\] +- Fixed: Refresh problem after archiving projects \[[#36978](https://community.openproject.org/wp/36978)\] +- Fixed: Delayed request with system user fails due to temporary admin permissions \[[#37010](https://community.openproject.org/wp/37010)\] +- Fixed: Umlauts in project name break exports \[[#37014](https://community.openproject.org/wp/37014)\] +- Fixed: Setting sync users in synchronized group does not work without on-the-fly LDAP \[[#37036](https://community.openproject.org/wp/37036)\] +- Fixed: BIM seeder overrides custom design \[[#37037](https://community.openproject.org/wp/37037)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. Special thanks for reporting and finding bugs go to -Sébastien VITA, Björn Schümann, song kechao, Maximilian Hippler +Sébastien VITA, Björn Schümann, Song Kechao, Maximilian Hippler diff --git a/docs/release-notes/11/11-3-0/README.md b/docs/release-notes/11/11-3-0/README.md index d8eeb22c9f23..3bbf6d9b53a6 100644 --- a/docs/release-notes/11/11-3-0/README.md +++ b/docs/release-notes/11/11-3-0/README.md @@ -10,7 +10,7 @@ release_date: 2021-06-03 Release date: 2021-06-03 -We released [OpenProject 11.3.0](https://community.openproject.com/versions/1468). +We released [OpenProject 11.3.0](https://community.openproject.org/versions/1468). This new release will bring many new features and bug fixes that will improve classical as well as agile project management. @@ -28,7 +28,7 @@ In the header navigation we have introduced a **new button to create a project, A new user invite process has been introduced. A modal window allows **much easier creation of new users, groups or placeholder users**, assigning roles and adding them to a project. Add a personal invitation message, e.g. an explanation for the invitation or a bit of information regarding the project, which will be sent to the users to help them get started. -![Intive-user](Intive-user.png) +![Invite user](Intive-user.png) The invite process can be started directly from the new "+" create button in the header navigation. @@ -86,115 +86,115 @@ Users now have the option to **create backups of their OpenProject installation* ## All new features, bug fixes and changes -- Epic: CRUD operations for groups in API v3 \[[#18812](https://community.openproject.com/wp/18812)\] -- Epic: Enhanced integration with GitHub pull requests \[[#36132](https://community.openproject.com/wp/36132)\] -- Epic: Support for placeholder users that do not have an email address yet (part 2) \[[#36308](https://community.openproject.com/wp/36308)\] -- Epic: Multi-selection for project custom fields of type list \[[#36382](https://community.openproject.com/wp/36382)\] -- Changed: User avatars in user select menus \[[#30226](https://community.openproject.com/wp/30226)\] -- Changed: Allow adding users to Group via API v3 \[[#33686](https://community.openproject.com/wp/33686)\] -- Changed: Copy project via API v3 \[[#34444](https://community.openproject.com/wp/34444)\] -- Changed: Frontend: Extend user type drop down menu with "invite" option \[[#35520](https://community.openproject.com/wp/35520)\] -- Changed: Frontend: Create invite/add user modal \[[#35521](https://community.openproject.com/wp/35521)\] -- Changed: Backend: Seed new "Creating and editing placeholder users" permissions \[[#35523](https://community.openproject.com/wp/35523)\] -- Changed: Frontend: Create + button in header \[[#35527](https://community.openproject.com/wp/35527)\] -- Changed: Improve locale setting strategy (dates calculation) \[[#35664](https://community.openproject.com/wp/35664)\] -- Changed: Backend: Add API endpoint for permissions \[[#36009](https://community.openproject.com/wp/36009)\] -- Changed: Backend: Send notification on adding a user to a project \[[#36019](https://community.openproject.com/wp/36019)\] -- Changed: Link a manually created Pull Request to a work package \[[#36153](https://community.openproject.com/wp/36153)\] -- Changed: Implement a new integration system \[[#36185](https://community.openproject.com/wp/36185)\] -- Changed: Add new GitHub plugin tab enabling users to copy git actions \[[#36204](https://community.openproject.com/wp/36204)\] -- Changed: Provide different fallback avatars for users, groups, and placeholder users \[[#36243](https://community.openproject.com/wp/36243)\] -- Changed: API V3 Endpoints for placeholder users \[[#36296](https://community.openproject.com/wp/36296)\] -- Changed: Copy git commands from the new GitHub work package tab \[[#36305](https://community.openproject.com/wp/36305)\] -- Changed: Support required custom fields when inviting users via the modal \[[#36324](https://community.openproject.com/wp/36324)\] -- Changed: Introduce visible scope to placeholder users and apply to API \[[#36348](https://community.openproject.com/wp/36348)\] -- Changed: Create project filter for "public" status \[[#36415](https://community.openproject.com/wp/36415)\] -- Changed: Form/schema endpoint for User resource \[[#36467](https://community.openproject.com/wp/36467)\] -- Changed: Allow multi select custom fields in the backend (Administration, API, project list view and filters, ...) \[[#36511](https://community.openproject.com/wp/36511)\] -- Changed: Replace project forms by Angular/formly (Create and update + widgets) \[[#36512](https://community.openproject.com/wp/36512)\] -- Changed: Allow multi select in angular/formly based project forms (create and update + details widget) \[[#36513](https://community.openproject.com/wp/36513)\] -- Changed: Add quick add menu to onboarding tour \[[#36593](https://community.openproject.com/wp/36593)\] -- Changed: Extend APIv3 schema representers with location to attributes \[[#36791](https://community.openproject.com/wp/36791)\] -- Changed: Extend APIv3 schema representers with optional description \[[#36795](https://community.openproject.com/wp/36795)\] -- Changed: Have project status as full resource \[[#37023](https://community.openproject.com/wp/37023)\] -- Changed: Replace remaining project forms by Angular \[[#37026](https://community.openproject.com/wp/37026)\] -- Changed: Hide "Active" field from project settings \[[#37078](https://community.openproject.com/wp/37078)\] -- Changed: Show bulb before options in project status field \[[#37079](https://community.openproject.com/wp/37079)\] -- Changed: Use autocompleters for select fields in project form \[[#37080](https://community.openproject.com/wp/37080)\] -- Changed: Add copy project form to APIv3 \[[#37091](https://community.openproject.com/wp/37091)\] -- Changed: Attribute help text on dynamic form \[[#37092](https://community.openproject.com/wp/37092)\] -- Changed: Improve design of checkboxes in formly forms \[[#37105](https://community.openproject.com/wp/37105)\] -- Changed: Improve design of Github tab \[[#37108](https://community.openproject.com/wp/37108)\] -- Changed: Allow inviting users from project member administration for non admins \[[#37126](https://community.openproject.com/wp/37126)\] -- Changed: Handle duplicate project identifiers in the backend \[[#37140](https://community.openproject.com/wp/37140)\] -- Fixed: Unable to enter Boards module when work package module is disabled \[[#34794](https://community.openproject.com/wp/34794)\] -- Fixed: Editing project settings removes link to parent project for certain permission constellations \[[#35510](https://community.openproject.com/wp/35510)\] -- Fixed: Wrong date and time in work package activity \[[#35636](https://community.openproject.com/wp/35636)\] -- Fixed: Create two same projects with same project identifier \[[#35999](https://community.openproject.com/wp/35999)\] -- Fixed: Admins cannot create new projects, if user custom field for projects active and there are many projects \[[#36164](https://community.openproject.com/wp/36164)\] -- Fixed: Gantt chart header might appear in a different locale \[[#36346](https://community.openproject.com/wp/36346)\] -- Fixed: Default work package type can't be changed \[[#36350](https://community.openproject.com/wp/36350)\] -- Fixed: "Get a personal demo" link is broken \[[#36425](https://community.openproject.com/wp/36425)\] -- Fixed: Finish registration modal (user info + consent) too narrow - cannot continue \[[#36461](https://community.openproject.com/wp/36461)\] -- Fixed: Crowdin translations are returning incorrectly empty strings \[[#36470](https://community.openproject.com/wp/36470)\] -- Fixed: Project member table shows email despite "Hide my email address" in users profile \[[#36518](https://community.openproject.com/wp/36518)\] -- Fixed: No paragraphs in work package comments \[[#36723](https://community.openproject.com/wp/36723)\] -- Fixed: IFC import from Bricscad is not visible in viewer \[[#36858](https://community.openproject.com/wp/36858)\] -- Fixed: Wiki: after navigation in left sidebar, the sidebar is always set to top (first item) instead of scrolling to the selected (focus) item (regression in OP 11.2) \[[#36937](https://community.openproject.com/wp/36937)\] -- Fixed: Layout differences between WP comment editing and showing \[[#36989](https://community.openproject.com/wp/36989)\] -- Fixed: Avatar/User/Timestamp group layout broken \[[#37106](https://community.openproject.com/wp/37106)\] -- Fixed: Fallback avatar initials not vertically centered in header \[[#37112](https://community.openproject.com/wp/37112)\] -- Fixed: UX: Role drop down cut off when opened in invite modal \[[#37114](https://community.openproject.com/wp/37114)\] -- Fixed: Invite modal: I18n string missing for "no roles found" \[[#37115](https://community.openproject.com/wp/37115)\] -- Fixed: WP export does not include estimated time value for parent work packages \[[#37124](https://community.openproject.com/wp/37124)\] -- Fixed: Unassigning a template when creating project is ignored \[[#37153](https://community.openproject.com/wp/37153)\] -- Fixed: Plus-sign within create-button not centered \[[#37155](https://community.openproject.com/wp/37155)\] -- Fixed: Float custom fields with value 0 are shown as empty \[[#37157](https://community.openproject.com/wp/37157)\] -- Fixed: Copy settings should be hidden when selecting a template \[[#37158](https://community.openproject.com/wp/37158)\] -- Fixed: Avatar shrunk down when custom avatar used \[[#37159](https://community.openproject.com/wp/37159)\] -- Fixed: Loading of capabilities is broken when there are more than 1000 capabilities \[[#37160](https://community.openproject.com/wp/37160)\] -- Fixed: User welcome screen too big / layout broken \[[#37165](https://community.openproject.com/wp/37165)\] -- Fixed: Wrong / outdated webinar video link in user invite email \[[#37166](https://community.openproject.com/wp/37166)\] -- Fixed: Link to administration shown for non-admin users (leads to 400) \[[#37168](https://community.openproject.com/wp/37168)\] -- Fixed: Internal error when trying to invite user to project without permission \[[#37169](https://community.openproject.com/wp/37169)\] -- Fixed: User invite modal includes archived projects \[[#37184](https://community.openproject.com/wp/37184)\] -- Fixed: Users only having the "add_subproject" permission cannot create subprojects \[[#37195](https://community.openproject.com/wp/37195)\] -- Fixed: Used strings in error message are inconsistent / not matching \[[#37197](https://community.openproject.com/wp/37197)\] -- Fixed: Layout for "Change password" modal broken \[[#37251](https://community.openproject.com/wp/37251)\] -- Fixed: In work package user dropdowns email address is shown even though format is set to show first name last name \[[#37257](https://community.openproject.com/wp/37257)\] -- Fixed: Layout for board creation modal broken \[[#37258](https://community.openproject.com/wp/37258)\] -- Fixed: Layout for "Add column" modal for action board broken \[[#37259](https://community.openproject.com/wp/37259)\] -- Fixed: Dropdown fields too large / text not centered \[[#37261](https://community.openproject.com/wp/37261)\] -- Fixed: Layout log time / log unit cost wrong \[[#37262](https://community.openproject.com/wp/37262)\] -- Fixed: Cannot close version when backlog / wiki is activated \[[#37263](https://community.openproject.com/wp/37263)\] -- Fixed: Missing translation in "Create backup" warning menu \[[#37264](https://community.openproject.com/wp/37264)\] -- Fixed: Commands for GitHub integration crammed in German language settings \[[#37265](https://community.openproject.com/wp/37265)\] -- Fixed: Option "Overview" on copy project form not localized \[[#37266](https://community.openproject.com/wp/37266)\] -- Fixed: Layout for attribute help text broken \[[#37268](https://community.openproject.com/wp/37268)\] -- Fixed: Arrows not working on some dynamic inputs \[[#37273](https://community.openproject.com/wp/37273)\] -- Fixed: Manually executed LDAP group sync doesn't have permissions to add to group \[[#37275](https://community.openproject.com/wp/37275)\] -- Fixed: Principal Component fails on system users \[[#37278](https://community.openproject.com/wp/37278)\] -- Fixed: Auth header SSO does not set last_login date \[[#37290](https://community.openproject.com/wp/37290)\] -- Fixed: Typo in source string when inviting user and lacking permission \[[#37291](https://community.openproject.com/wp/37291)\] -- Fixed: Kanban board of type "subproject" shows archived projects / error when selected \[[#37295](https://community.openproject.com/wp/37295)\] -- Fixed: Error message suggests that multiple errors are shown when creating a project even though only one error (name) occurs \[[#37299](https://community.openproject.com/wp/37299)\] -- Fixed: Darkened background when opening date picker for work packages \[[#37301](https://community.openproject.com/wp/37301)\] -- Fixed: Shortcut "p" (to open project dropdown list) not working \[[#37305](https://community.openproject.com/wp/37305)\] -- Fixed: "(None)" option missing for parent project drop down select \[[#37398](https://community.openproject.com/wp/37398)\] -- Fixed: Multi-select fields do not adjust height (cannot see values) \[[#37404](https://community.openproject.com/wp/37404)\] -- Fixed: OpenProject backup completes partially with file permission errors \[[#37440](https://community.openproject.com/wp/37440)\] -- Fixed: Github user avatar not rendered correctly \[[#37444](https://community.openproject.com/wp/37444)\] -- Fixed: Password confirmation during backup token reset not working \[[#37445](https://community.openproject.com/wp/37445)\] -- Fixed: Several problem with the header in mobile view \[[#37452](https://community.openproject.com/wp/37452)\] -- Fixed: allowedValues for project user custom fields result in 400 bad request \[[#37453](https://community.openproject.com/wp/37453)\] -- Fixed: Date can't be removed \[[#37459](https://community.openproject.com/wp/37459)\] -- Fixed: Invite user should use project of work package, not current project \[[#37463](https://community.openproject.com/wp/37463)\] -- Fixed: Changing a project's status together with the project's parent loses change to status \[[#37464](https://community.openproject.com/wp/37464)\] -- Fixed: Option "public" for projects shown as required even though not required \[[#37502](https://community.openproject.com/wp/37502)\] -- Fixed: WP delete modal: Alignment, truncation, spacing issue \[[#37503](https://community.openproject.com/wp/37503)\] -- Fixed: Can scroll outside of WP list (white space) when date picker opened and scrolling \[[#37509](https://community.openproject.com/wp/37509)\] -- Fixed: Copy WP does not work (404) \[[#37510](https://community.openproject.com/wp/37510)\] -- Fixed: Quick-add menu not showing on smaller screens \[[#37539](https://community.openproject.com/wp/37539)\] +- Epic: CRUD operations for groups in API v3 \[[#18812](https://community.openproject.org/wp/18812)\] +- Epic: Enhanced integration with GitHub pull requests \[[#36132](https://community.openproject.org/wp/36132)\] +- Epic: Support for placeholder users that do not have an email address yet (part 2) \[[#36308](https://community.openproject.org/wp/36308)\] +- Epic: Multi-selection for project custom fields of type list \[[#36382](https://community.openproject.org/wp/36382)\] +- Changed: User avatars in user select menus \[[#30226](https://community.openproject.org/wp/30226)\] +- Changed: Allow adding users to Group via API v3 \[[#33686](https://community.openproject.org/wp/33686)\] +- Changed: Copy project via API v3 \[[#34444](https://community.openproject.org/wp/34444)\] +- Changed: Frontend: Extend user type drop down menu with "invite" option \[[#35520](https://community.openproject.org/wp/35520)\] +- Changed: Frontend: Create invite/add user modal \[[#35521](https://community.openproject.org/wp/35521)\] +- Changed: Backend: Seed new "Creating and editing placeholder users" permissions \[[#35523](https://community.openproject.org/wp/35523)\] +- Changed: Frontend: Create + button in header \[[#35527](https://community.openproject.org/wp/35527)\] +- Changed: Improve locale setting strategy (dates calculation) \[[#35664](https://community.openproject.org/wp/35664)\] +- Changed: Backend: Add API endpoint for permissions \[[#36009](https://community.openproject.org/wp/36009)\] +- Changed: Backend: Send notification on adding a user to a project \[[#36019](https://community.openproject.org/wp/36019)\] +- Changed: Link a manually created Pull Request to a work package \[[#36153](https://community.openproject.org/wp/36153)\] +- Changed: Implement a new integration system \[[#36185](https://community.openproject.org/wp/36185)\] +- Changed: Add new GitHub plugin tab enabling users to copy git actions \[[#36204](https://community.openproject.org/wp/36204)\] +- Changed: Provide different fallback avatars for users, groups, and placeholder users \[[#36243](https://community.openproject.org/wp/36243)\] +- Changed: API V3 Endpoints for placeholder users \[[#36296](https://community.openproject.org/wp/36296)\] +- Changed: Copy git commands from the new GitHub work package tab \[[#36305](https://community.openproject.org/wp/36305)\] +- Changed: Support required custom fields when inviting users via the modal \[[#36324](https://community.openproject.org/wp/36324)\] +- Changed: Introduce visible scope to placeholder users and apply to API \[[#36348](https://community.openproject.org/wp/36348)\] +- Changed: Create project filter for "public" status \[[#36415](https://community.openproject.org/wp/36415)\] +- Changed: Form/schema endpoint for User resource \[[#36467](https://community.openproject.org/wp/36467)\] +- Changed: Allow multi select custom fields in the backend (Administration, API, project list view and filters, ...) \[[#36511](https://community.openproject.org/wp/36511)\] +- Changed: Replace project forms by Angular/formly (Create and update + widgets) \[[#36512](https://community.openproject.org/wp/36512)\] +- Changed: Allow multi select in angular/formly based project forms (create and update + details widget) \[[#36513](https://community.openproject.org/wp/36513)\] +- Changed: Add quick add menu to onboarding tour \[[#36593](https://community.openproject.org/wp/36593)\] +- Changed: Extend APIv3 schema representers with location to attributes \[[#36791](https://community.openproject.org/wp/36791)\] +- Changed: Extend APIv3 schema representers with optional description \[[#36795](https://community.openproject.org/wp/36795)\] +- Changed: Have project status as full resource \[[#37023](https://community.openproject.org/wp/37023)\] +- Changed: Replace remaining project forms by Angular \[[#37026](https://community.openproject.org/wp/37026)\] +- Changed: Hide "Active" field from project settings \[[#37078](https://community.openproject.org/wp/37078)\] +- Changed: Show bulb before options in project status field \[[#37079](https://community.openproject.org/wp/37079)\] +- Changed: Use autocompleters for select fields in project form \[[#37080](https://community.openproject.org/wp/37080)\] +- Changed: Add copy project form to APIv3 \[[#37091](https://community.openproject.org/wp/37091)\] +- Changed: Attribute help text on dynamic form \[[#37092](https://community.openproject.org/wp/37092)\] +- Changed: Improve design of checkboxes in formly forms \[[#37105](https://community.openproject.org/wp/37105)\] +- Changed: Improve design of Github tab \[[#37108](https://community.openproject.org/wp/37108)\] +- Changed: Allow inviting users from project member administration for non admins \[[#37126](https://community.openproject.org/wp/37126)\] +- Changed: Handle duplicate project identifiers in the backend \[[#37140](https://community.openproject.org/wp/37140)\] +- Fixed: Unable to enter Boards module when work package module is disabled \[[#34794](https://community.openproject.org/wp/34794)\] +- Fixed: Editing project settings removes link to parent project for certain permission constellations \[[#35510](https://community.openproject.org/wp/35510)\] +- Fixed: Wrong date and time in work package activity \[[#35636](https://community.openproject.org/wp/35636)\] +- Fixed: Create two same projects with same project identifier \[[#35999](https://community.openproject.org/wp/35999)\] +- Fixed: Admins cannot create new projects, if user custom field for projects active and there are many projects \[[#36164](https://community.openproject.org/wp/36164)\] +- Fixed: Gantt chart header might appear in a different locale \[[#36346](https://community.openproject.org/wp/36346)\] +- Fixed: Default work package type can't be changed \[[#36350](https://community.openproject.org/wp/36350)\] +- Fixed: "Get a personal demo" link is broken \[[#36425](https://community.openproject.org/wp/36425)\] +- Fixed: Finish registration modal (user info + consent) too narrow - cannot continue \[[#36461](https://community.openproject.org/wp/36461)\] +- Fixed: Crowdin translations are returning incorrectly empty strings \[[#36470](https://community.openproject.org/wp/36470)\] +- Fixed: Project member table shows email despite "Hide my email address" in users profile \[[#36518](https://community.openproject.org/wp/36518)\] +- Fixed: No paragraphs in work package comments \[[#36723](https://community.openproject.org/wp/36723)\] +- Fixed: IFC import from Bricscad is not visible in viewer \[[#36858](https://community.openproject.org/wp/36858)\] +- Fixed: Wiki: after navigation in left sidebar, the sidebar is always set to top (first item) instead of scrolling to the selected (focus) item (regression in OP 11.2) \[[#36937](https://community.openproject.org/wp/36937)\] +- Fixed: Layout differences between WP comment editing and showing \[[#36989](https://community.openproject.org/wp/36989)\] +- Fixed: Avatar/User/Timestamp group layout broken \[[#37106](https://community.openproject.org/wp/37106)\] +- Fixed: Fallback avatar initials not vertically centered in header \[[#37112](https://community.openproject.org/wp/37112)\] +- Fixed: UX: Role drop down cut off when opened in invite modal \[[#37114](https://community.openproject.org/wp/37114)\] +- Fixed: Invite modal: I18n string missing for "no roles found" \[[#37115](https://community.openproject.org/wp/37115)\] +- Fixed: WP export does not include estimated time value for parent work packages \[[#37124](https://community.openproject.org/wp/37124)\] +- Fixed: Unassigning a template when creating project is ignored \[[#37153](https://community.openproject.org/wp/37153)\] +- Fixed: Plus-sign within create-button not centered \[[#37155](https://community.openproject.org/wp/37155)\] +- Fixed: Float custom fields with value 0 are shown as empty \[[#37157](https://community.openproject.org/wp/37157)\] +- Fixed: Copy settings should be hidden when selecting a template \[[#37158](https://community.openproject.org/wp/37158)\] +- Fixed: Avatar shrunk down when custom avatar used \[[#37159](https://community.openproject.org/wp/37159)\] +- Fixed: Loading of capabilities is broken when there are more than 1000 capabilities \[[#37160](https://community.openproject.org/wp/37160)\] +- Fixed: User welcome screen too big / layout broken \[[#37165](https://community.openproject.org/wp/37165)\] +- Fixed: Wrong / outdated webinar video link in user invite email \[[#37166](https://community.openproject.org/wp/37166)\] +- Fixed: Link to administration shown for non-admin users (leads to 400) \[[#37168](https://community.openproject.org/wp/37168)\] +- Fixed: Internal error when trying to invite user to project without permission \[[#37169](https://community.openproject.org/wp/37169)\] +- Fixed: User invite modal includes archived projects \[[#37184](https://community.openproject.org/wp/37184)\] +- Fixed: Users only having the "add_subproject" permission cannot create subprojects \[[#37195](https://community.openproject.org/wp/37195)\] +- Fixed: Used strings in error message are inconsistent / not matching \[[#37197](https://community.openproject.org/wp/37197)\] +- Fixed: Layout for "Change password" modal broken \[[#37251](https://community.openproject.org/wp/37251)\] +- Fixed: In work package user dropdowns email address is shown even though format is set to show first name last name \[[#37257](https://community.openproject.org/wp/37257)\] +- Fixed: Layout for board creation modal broken \[[#37258](https://community.openproject.org/wp/37258)\] +- Fixed: Layout for "Add column" modal for action board broken \[[#37259](https://community.openproject.org/wp/37259)\] +- Fixed: Dropdown fields too large / text not centered \[[#37261](https://community.openproject.org/wp/37261)\] +- Fixed: Layout log time / log unit cost wrong \[[#37262](https://community.openproject.org/wp/37262)\] +- Fixed: Cannot close version when backlog / wiki is activated \[[#37263](https://community.openproject.org/wp/37263)\] +- Fixed: Missing translation in "Create backup" warning menu \[[#37264](https://community.openproject.org/wp/37264)\] +- Fixed: Commands for GitHub integration crammed in German language settings \[[#37265](https://community.openproject.org/wp/37265)\] +- Fixed: Option "Overview" on copy project form not localized \[[#37266](https://community.openproject.org/wp/37266)\] +- Fixed: Layout for attribute help text broken \[[#37268](https://community.openproject.org/wp/37268)\] +- Fixed: Arrows not working on some dynamic inputs \[[#37273](https://community.openproject.org/wp/37273)\] +- Fixed: Manually executed LDAP group sync doesn't have permissions to add to group \[[#37275](https://community.openproject.org/wp/37275)\] +- Fixed: Principal Component fails on system users \[[#37278](https://community.openproject.org/wp/37278)\] +- Fixed: Auth header SSO does not set last_login date \[[#37290](https://community.openproject.org/wp/37290)\] +- Fixed: Typo in source string when inviting user and lacking permission \[[#37291](https://community.openproject.org/wp/37291)\] +- Fixed: Kanban board of type "subproject" shows archived projects / error when selected \[[#37295](https://community.openproject.org/wp/37295)\] +- Fixed: Error message suggests that multiple errors are shown when creating a project even though only one error (name) occurs \[[#37299](https://community.openproject.org/wp/37299)\] +- Fixed: Darkened background when opening date picker for work packages \[[#37301](https://community.openproject.org/wp/37301)\] +- Fixed: Shortcut "p" (to open project dropdown list) not working \[[#37305](https://community.openproject.org/wp/37305)\] +- Fixed: "(None)" option missing for parent project drop down select \[[#37398](https://community.openproject.org/wp/37398)\] +- Fixed: Multi-select fields do not adjust height (cannot see values) \[[#37404](https://community.openproject.org/wp/37404)\] +- Fixed: OpenProject backup completes partially with file permission errors \[[#37440](https://community.openproject.org/wp/37440)\] +- Fixed: Github user avatar not rendered correctly \[[#37444](https://community.openproject.org/wp/37444)\] +- Fixed: Password confirmation during backup token reset not working \[[#37445](https://community.openproject.org/wp/37445)\] +- Fixed: Several problem with the header in mobile view \[[#37452](https://community.openproject.org/wp/37452)\] +- Fixed: allowedValues for project user custom fields result in 400 bad request \[[#37453](https://community.openproject.org/wp/37453)\] +- Fixed: Date can't be removed \[[#37459](https://community.openproject.org/wp/37459)\] +- Fixed: Invite user should use project of work package, not current project \[[#37463](https://community.openproject.org/wp/37463)\] +- Fixed: Changing a project's status together with the project's parent loses change to status \[[#37464](https://community.openproject.org/wp/37464)\] +- Fixed: Option "public" for projects shown as required even though not required \[[#37502](https://community.openproject.org/wp/37502)\] +- Fixed: WP delete modal: Alignment, truncation, spacing issue \[[#37503](https://community.openproject.org/wp/37503)\] +- Fixed: Can scroll outside of WP list (white space) when date picker opened and scrolling \[[#37509](https://community.openproject.org/wp/37509)\] +- Fixed: Copy WP does not work (404) \[[#37510](https://community.openproject.org/wp/37510)\] +- Fixed: Quick-add menu not showing on smaller screens \[[#37539](https://community.openproject.org/wp/37539)\] ## Installation and Updates diff --git a/docs/release-notes/11/11-3-1/README.md b/docs/release-notes/11/11-3-1/README.md index b2de90d4348a..7c0b10da5d89 100644 --- a/docs/release-notes/11/11-3-1/README.md +++ b/docs/release-notes/11/11-3-1/README.md @@ -10,14 +10,14 @@ release_date: 2021-06-08 Release date: 2021-06-08 -We released [OpenProject 11.3.1](https://community.openproject.com/versions/1479). +We released [OpenProject 11.3.1](https://community.openproject.org/versions/1479). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Search autocompleter n+1 loads schemas -> slow \[[#34884](https://community.openproject.com/wp/34884)\] -- Fixed: "Click here to open [...] in fullscreenview" not working \[[#37555](https://community.openproject.com/wp/37555)\] -- Fixed: Work package hierarchy breadcrumb links not working \[[#37575](https://community.openproject.com/wp/37575)\] -- Fixed: UIM: Not enough space in drop down when user already member \[[#37578](https://community.openproject.com/wp/37578)\] -- Fixed: Error "Identifier is invalid" when creating a project that starts with a digit \[[#37583](https://community.openproject.com/wp/37583)\] +- Fixed: Search autocompleter n+1 loads schemas -> slow \[[#34884](https://community.openproject.org/wp/34884)\] +- Fixed: "Click here to open [...] in fullscreen view" not working \[[#37555](https://community.openproject.org/wp/37555)\] +- Fixed: Work package hierarchy breadcrumb links not working \[[#37575](https://community.openproject.org/wp/37575)\] +- Fixed: UIM: Not enough space in drop down when user already member \[[#37578](https://community.openproject.org/wp/37578)\] +- Fixed: Error "Identifier is invalid" when creating a project that starts with a digit \[[#37583](https://community.openproject.org/wp/37583)\] diff --git a/docs/release-notes/11/11-3-2/README.md b/docs/release-notes/11/11-3-2/README.md index 13f682505cad..ccf754fa6502 100644 --- a/docs/release-notes/11/11-3-2/README.md +++ b/docs/release-notes/11/11-3-2/README.md @@ -10,15 +10,15 @@ release_date: 2021-06-10 Release date: 2021-06-10 -We released [OpenProject 11.3.2](https://community.openproject.com/versions/1480). +We released [OpenProject 11.3.2](https://community.openproject.org/versions/1480). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Not possible to create or edit projects if relative url root configured \[[#37571](https://community.openproject.com/wp/37571)\] -- Fixed: Internal server error on custom fields view when using Slovene language \[[#37607](https://community.openproject.com/wp/37607)\] -- Fixed: Not possible to invite users via modal if relative url root configured \[[#37618](https://community.openproject.com/wp/37618)\] +- Fixed: Not possible to create or edit projects if relative url root configured \[[#37571](https://community.openproject.org/wp/37571)\] +- Fixed: Internal server error on custom fields view when using Slovene language \[[#37607](https://community.openproject.org/wp/37607)\] +- Fixed: Not possible to invite users via modal if relative url root configured \[[#37618](https://community.openproject.org/wp/37618)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-3-3/README.md b/docs/release-notes/11/11-3-3/README.md index bc7ae84211b3..5f7e9a364428 100644 --- a/docs/release-notes/11/11-3-3/README.md +++ b/docs/release-notes/11/11-3-3/README.md @@ -10,7 +10,7 @@ release_date: 2021-07-20 Release date: 2021-07-20 -We released [OpenProject 11.3.3](https://community.openproject.com/versions/1484). +We released [OpenProject 11.3.3](https://community.openproject.org/versions/1484). The release contains several bug fixes and we recommend updating to the newest version. ### Security issues @@ -34,10 +34,10 @@ Please see the advisory for [CVE-2021-36390](https://github.com/opf/openproject/ #### Bug fixes and changes -- Fixed: Database migration fails on upgrade from 11.2.2 to 11.3.X \[[#37687](https://community.openproject.com/wp/37687)\] -- Fixed: Renaming a group removes all group members \[[#38017](https://community.openproject.com/wp/38017)\] -- Fixed: Fix catastrophic backtracking in MessagesController#quote regular expression \[[#38021](https://community.openproject.com/wp/38021)\] -- Fixed: Public-facing docker AIO container vulnerable to HOST header injection by default \[[#38067](https://community.openproject.com/wp/38067)\] +- Fixed: Database migration fails on upgrade from 11.2.2 to 11.3.X \[[#37687](https://community.openproject.org/wp/37687)\] +- Fixed: Renaming a group removes all group members \[[#38017](https://community.openproject.org/wp/38017)\] +- Fixed: Fix catastrophic backtracking in MessagesController#quote regular expression \[[#38021](https://community.openproject.org/wp/38021)\] +- Fixed: Public-facing docker AIO container vulnerable to HOST header injection by default \[[#38067](https://community.openproject.org/wp/38067)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-3-4/README.md b/docs/release-notes/11/11-3-4/README.md index 389d95758a0c..3a078080edc8 100644 --- a/docs/release-notes/11/11-3-4/README.md +++ b/docs/release-notes/11/11-3-4/README.md @@ -10,11 +10,11 @@ release_date: 2021-07-29 Release date: 2021-07-29 -We released [OpenProject 11.3.4](https://community.openproject.com/versions/1488). +We released [OpenProject 11.3.4](https://community.openproject.org/versions/1488). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -This release contains only one fix for Centos 7 and Centos 8 packaged installations that are unable to access the PostgeSQL package source. +This release contains only one fix for Centos 7 and Centos 8 packaged installations that are unable to access the PostgreSQL package source. It does not contain any other fixes diff --git a/docs/release-notes/11/11-3-5/README.md b/docs/release-notes/11/11-3-5/README.md index 9290a361fe33..42e7c5314404 100644 --- a/docs/release-notes/11/11-3-5/README.md +++ b/docs/release-notes/11/11-3-5/README.md @@ -10,15 +10,15 @@ release_date: 2021-09-13 Release date: 2021-09-13 -We released [OpenProject 11.3.5](https://community.openproject.com/versions/1490). +We released [OpenProject 11.3.5](https://community.openproject.org/versions/1490). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: User email validation regular expression insufficient \[[#38325](https://community.openproject.com/wp/38325)\] -- Fixed: Inherited role memberhips are not cleaned up if user is removed from a group via LDAP sync \[[#38614](https://community.openproject.com/wp/38614)\] -- Fixed: Release notes for 11-3-4 is empty \[[#38678](https://community.openproject.com/wp/38678)\] +- Fixed: User email validation regular expression insufficient \[[#38325](https://community.openproject.org/wp/38325)\] +- Fixed: Inherited role memberships are not cleaned up if user is removed from a group via LDAP sync \[[#38614](https://community.openproject.org/wp/38614)\] +- Fixed: Release notes for 11-3-4 is empty \[[#38678](https://community.openproject.org/wp/38678)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-4-0/README.md b/docs/release-notes/11/11-4-0/README.md index 59919d639e2c..d2690f702a75 100644 --- a/docs/release-notes/11/11-4-0/README.md +++ b/docs/release-notes/11/11-4-0/README.md @@ -10,7 +10,7 @@ release_date: 2021-10-04 Release date: 2021-10-04 -We released [OpenProject 11.4.0](https://community.openproject.com/versions/1485). +We released [OpenProject 11.4.0](https://community.openproject.org/versions/1485). The release contains several bug fixes and we recommend updating to the newest version. @@ -21,22 +21,22 @@ OpenProject 11.4.0 adds packaged installation support for Debian 11 "Bullseye". #### Bug fixes and changes -- Fixed: Work package exports fail when column "BCF snapshot" active \[[#33448](https://community.openproject.com/wp/33448)\] -- Fixed: Regression: On touch devices, Select, Info and Erase buttons don't work. \[[#38005](https://community.openproject.com/wp/38005)\] -- Fixed: Expired enterprise edition locking users out of OpenProject and all enterprise add-ons \[[#38588](https://community.openproject.com/wp/38588)\] -- Fixed: Unable to export workpackages - undefined method `bcf_thumbnail' \[[#38673](https://community.openproject.com/wp/38673)\] -- Fixed: Wiki menu item scrolling does not work with two main wiki items \[[#38878](https://community.openproject.com/wp/38878)\] -- Fixed: Imminent user limit warning shown prematurely \[[#38893](https://community.openproject.com/wp/38893)\] -- Fixed: Custom S3 compatible upload providers blocked by CSP \[[#38900](https://community.openproject.com/wp/38900)\] -- Fixed: [Github Integration] Webhook fails for pull_request event without body \[[#38919](https://community.openproject.com/wp/38919)\] -- Fixed: IFC upload not working since attachment whitelisting \[[#38954](https://community.openproject.com/wp/38954)\] -- Fixed: BIM seed are missing snapshots \[[#39009](https://community.openproject.com/wp/39009)\] -- Fixed: Regression: Typing S while focus in viewer opens the OP global search \[[#39029](https://community.openproject.com/wp/39029)\] -- Changed: Outgoing webhook for attachment create events \[[#37891](https://community.openproject.com/wp/37891)\] -- Changed: Amend clipping plane direction \[[#37894](https://community.openproject.com/wp/37894)\] -- Changed: Refresh button \[[#38028](https://community.openproject.com/wp/38028)\] -- Changed: BCF module: Change default order to ID DESC. \[[#38032](https://community.openproject.com/wp/38032)\] -- Changed: Integrate latest Xeokit version v2.3.1 \[[#38981](https://community.openproject.com/wp/38981)\] +- Fixed: Work package exports fail when column "BCF snapshot" active \[[#33448](https://community.openproject.org/wp/33448)\] +- Fixed: Regression: On touch devices, Select, Info and Erase buttons don't work. \[[#38005](https://community.openproject.org/wp/38005)\] +- Fixed: Expired enterprise edition locking users out of OpenProject and all enterprise add-ons \[[#38588](https://community.openproject.org/wp/38588)\] +- Fixed: Unable to export work packages - undefined method `bcf_thumbnail' \[[#38673](https://community.openproject.org/wp/38673)\] +- Fixed: Wiki menu item scrolling does not work with two main wiki items \[[#38878](https://community.openproject.org/wp/38878)\] +- Fixed: Imminent user limit warning shown prematurely \[[#38893](https://community.openproject.org/wp/38893)\] +- Fixed: Custom S3 compatible upload providers blocked by CSP \[[#38900](https://community.openproject.org/wp/38900)\] +- Fixed: [Github Integration] Webhook fails for pull_request event without body \[[#38919](https://community.openproject.org/wp/38919)\] +- Fixed: IFC upload not working since attachment whitelisting \[[#38954](https://community.openproject.org/wp/38954)\] +- Fixed: BIM seed are missing snapshots \[[#39009](https://community.openproject.org/wp/39009)\] +- Fixed: Regression: Typing S while focus in viewer opens the OP global search \[[#39029](https://community.openproject.org/wp/39029)\] +- Changed: Outgoing webhook for attachment create events \[[#37891](https://community.openproject.org/wp/37891)\] +- Changed: Amend clipping plane direction \[[#37894](https://community.openproject.org/wp/37894)\] +- Changed: Refresh button \[[#38028](https://community.openproject.org/wp/38028)\] +- Changed: BCF module: Change default order to ID DESC. \[[#38032](https://community.openproject.org/wp/38032)\] +- Changed: Integrate latest Xeokit version v2.3.1 \[[#38981](https://community.openproject.org/wp/38981)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/11/11-4-1/README.md b/docs/release-notes/11/11-4-1/README.md index 2521a3787a0f..f6a601959351 100644 --- a/docs/release-notes/11/11-4-1/README.md +++ b/docs/release-notes/11/11-4-1/README.md @@ -10,23 +10,23 @@ release_date: 2021-10-20 Release date: 2021-10-20 -We released [OpenProject 11.4.1](https://community.openproject.com/versions/1491). +We released [OpenProject 11.4.1](https://community.openproject.org/versions/1491). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Today's Date line does not show up on My Page work package tables \[[#35748](https://community.openproject.com/wp/35748)\] -- Fixed: openproject configure tries to install postgresql 10 on upgrade, while 13 is already deployed \[[#39086](https://community.openproject.com/wp/39086)\] -- Fixed: Cannot add or remove users from group \[[#39090](https://community.openproject.com/wp/39090)\] -- Fixed: LDAP groups filter does not save synchronized group \[[#39120](https://community.openproject.com/wp/39120)\] -- Fixed: LDAP synchronized group finds only case-matching users \[[#39121](https://community.openproject.com/wp/39121)\] -- Fixed: Unnecessary deprecation warning shown on startup \[[#39125](https://community.openproject.com/wp/39125)\] -- Fixed: Cannot upload files with less common extensions (content type missing) \[[#39126](https://community.openproject.com/wp/39126)\] -- Fixed: Attachment whitelist feature not working with direct uploads enabled \[[#39130](https://community.openproject.com/wp/39130)\] -- Fixed: Revit bridge service in frontend distorts viewpoint data \[[#39135](https://community.openproject.com/wp/39135)\] -- Fixed: Help text modal text cut off \[[#39171](https://community.openproject.com/wp/39171)\] -- Fixed: Switching from "viewer" to "viewer and cards" fails to load viewer \[[#39184](https://community.openproject.com/wp/39184)\] +- Fixed: Today's Date line does not show up on My Page work package tables \[[#35748](https://community.openproject.org/wp/35748)\] +- Fixed: openproject configure tries to install postgresql 10 on upgrade, while 13 is already deployed \[[#39086](https://community.openproject.org/wp/39086)\] +- Fixed: Cannot add or remove users from group \[[#39090](https://community.openproject.org/wp/39090)\] +- Fixed: LDAP groups filter does not save synchronized group \[[#39120](https://community.openproject.org/wp/39120)\] +- Fixed: LDAP synchronized group finds only case-matching users \[[#39121](https://community.openproject.org/wp/39121)\] +- Fixed: Unnecessary deprecation warning shown on startup \[[#39125](https://community.openproject.org/wp/39125)\] +- Fixed: Cannot upload files with less common extensions (content type missing) \[[#39126](https://community.openproject.org/wp/39126)\] +- Fixed: Attachment whitelist feature not working with direct uploads enabled \[[#39130](https://community.openproject.org/wp/39130)\] +- Fixed: Revit bridge service in frontend distorts viewpoint data \[[#39135](https://community.openproject.org/wp/39135)\] +- Fixed: Help text modal text cut off \[[#39171](https://community.openproject.org/wp/39171)\] +- Fixed: Switching from "viewer" to "viewer and cards" fails to load viewer \[[#39184](https://community.openproject.org/wp/39184)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-0/README.md b/docs/release-notes/12/12-0-0/README.md index c7fe03fb4025..00b61e9f4ab0 100644 --- a/docs/release-notes/12/12-0-0/README.md +++ b/docs/release-notes/12/12-0-0/README.md @@ -10,7 +10,7 @@ release_date: 2021-11-15 Release date: 2021-11-15 -We released [OpenProject 12.0.0](https://community.openproject.com/versions/1478). +We released [OpenProject 12.0.0](https://community.openproject.org/versions/1478). This release will change the way how you work with OpenProject. We have introduced the concept of in-app notifications. A new notification center in OpenProject will display changes in your projects directly in the application. This reduces the flood of emails in your inbox significantly. Additionally, you can add daily email summaries to keep up to date about latest updates and changes. ## Introducing in-app notifications @@ -63,7 +63,7 @@ With OpenProject 12.0 it is now possible to export the project list with all pro ## Change of roles and permissions settings -With 12.0 we have added more granular rights for projects, for example the addtional right to configure the project overview page. This way you can even better assign certain permissions to a role in a project. +With 12.0 we have added more granular rights for projects, for example the additional right to configure the project overview page. This way you can even better assign certain permissions to a role in a project. ![project permissions](image-20211111095046645.png) @@ -77,136 +77,136 @@ OpenProject 12.0 will deprecate PostgreSQL versions < 13. This will result in a ## All bug fixes and changes in 12.0 -- Changed: Send daily email summaries (email digest) \[[#1899](https://community.openproject.com/wp/1899)\] -- Changed: Allow author to mute email notification by making him a watcher \[[#27706](https://community.openproject.com/wp/27706)\] -- Changed: Remove custom fields for "Work package priorities" and "Document categories" \[[#29419](https://community.openproject.com/wp/29419)\] -- Changed: Allow downloading IFC models \[[#35272](https://community.openproject.com/wp/35272)\] -- Changed: Show additional information (project name, status, ...) in work package auto completers \[[#35635](https://community.openproject.com/wp/35635)\] -- Changed: Change content of Project member invitation email \[[#36175](https://community.openproject.com/wp/36175)\] -- Changed: Dynamic form: Flat model structure (_links) \[[#37472](https://community.openproject.com/wp/37472)\] -- Changed: Disable author becoming watcher on project copy \[[#37799](https://community.openproject.com/wp/37799)\] -- Changed: Remove option to get notified about changes that I make myself \[[#37824](https://community.openproject.com/wp/37824)\] -- Changed: [IAN center] Make In App Notification Center responsive to mobile sizes \[[#37870](https://community.openproject.com/wp/37870)\] -- Changed: API v3 notifications api bulk confirming notifications \[[#37872](https://community.openproject.com/wp/37872)\] -- Changed: [IAN center] Clarify current magic limit of 250 items while we have no pagination \[[#37874](https://community.openproject.com/wp/37874)\] -- Changed: Automatically open the next notification after reading another notification \[[#38129](https://community.openproject.com/wp/38129)\] -- Changed: Grouping events by work package in notification dashboard \[[#38137](https://community.openproject.com/wp/38137)\] -- Changed: Link from notifications dashboard to personal notification settings \[[#38139](https://community.openproject.com/wp/38139)\] -- Changed: Create in-app notifications for the first event and not after the aggregation time of x minutes, \[[#38333](https://community.openproject.com/wp/38333)\] -- Changed: Work package type is missing in work package auto-completion \[[#38334](https://community.openproject.com/wp/38334)\] -- Changed: Show unread notifications in Activity tab \[[#38339](https://community.openproject.com/wp/38339)\] -- Changed: Work packages split view in notifications dashboard \[[#38340](https://community.openproject.com/wp/38340)\] -- Changed: New update notification reasons to better filter the relevant updates \[[#38341](https://community.openproject.com/wp/38341)\] -- Changed: Sidebar in Notification center with project filter \[[#38520](https://community.openproject.com/wp/38520)\] -- Changed: Re-name ordering settings in activity tab to "Oldest first/Newest first" \[[#38549](https://community.openproject.com/wp/38549)\] -- Changed: Notification main list view \[[#38592](https://community.openproject.com/wp/38592)\] -- Changed: Migration plan for new notifcation settings and call to action for user to use it \[[#38595](https://community.openproject.com/wp/38595)\] -- Changed: new images for renamed ordering settings to "Oldest first/Newest first" \[[#38605](https://community.openproject.com/wp/38605)\] -- Changed: Empty states in notification center \[[#38610](https://community.openproject.com/wp/38610)\] -- Changed: Involvement filters in the sidebar of notification center \[[#38642](https://community.openproject.com/wp/38642)\] -- Changed: Loading indicator when loading "all" notifications \[[#38648](https://community.openproject.com/wp/38648)\] -- Changed: New UI for notification row \[[#38650](https://community.openproject.com/wp/38650)\] -- Changed: Notification settings: account-level defaults \[[#38671](https://community.openproject.com/wp/38671)\] -- Changed: Email design - Daily Reminders \[[#38690](https://community.openproject.com/wp/38690)\] -- Changed: Email design - Mention email \[[#38692](https://community.openproject.com/wp/38692)\] -- Changed: Scroll to oldest unread activity in the activity tab \[[#38693](https://community.openproject.com/wp/38693)\] -- Changed: Email reminder settings (user account) \[[#38700](https://community.openproject.com/wp/38700)\] -- Changed: Highlight selected notification in the center \[[#38794](https://community.openproject.com/wp/38794)\] -- Changed: Separate between the reason "Assignee" and "Accountable" in notification row (mail and UI) \[[#38824](https://community.openproject.com/wp/38824)\] -- Changed: BCF API Comments Service \[[#38833](https://community.openproject.com/wp/38833)\] -- Changed: Show meaningful content on accessing non existing notifications/WorkPackage \[[#38842](https://community.openproject.com/wp/38842)\] -- Changed: Show banner when new notifications arrived while being in the notifications center \[[#38933](https://community.openproject.com/wp/38933)\] -- Changed: Consolidate details from notification row in reminder mail \[[#38948](https://community.openproject.com/wp/38948)\] -- Changed: Avoid sending member update notifications/mails upon copying a project if disabled \[[#39084](https://community.openproject.com/wp/39084)\] -- Changed: Optimise mobile view of Notification Center \[[#39148](https://community.openproject.com/wp/39148)\] -- Changed: Reset email footer \[[#39502](https://community.openproject.com/wp/39502)\] -- Changed: Send out email informing all users of the changes to the notification \[[#39607](https://community.openproject.com/wp/39607)\] -- Epic: In-app notifications \[[#26688](https://community.openproject.com/wp/26688)\] -- Fixed: Use CKEditor5 watchdog feature to prevent crashes from being unnoticabble \[[#32643](https://community.openproject.com/wp/32643)\] -- Fixed: Issue with check on length of Custom Fields \[[#34042](https://community.openproject.com/wp/34042)\] -- Fixed: Buttons on form configuration displayed on left instead of right side \[[#34288](https://community.openproject.com/wp/34288)\] -- Fixed: Spelling mistake in the Guided Tour \[[#34304](https://community.openproject.com/wp/34304)\] -- Fixed: Wording mistakes in Guided Tour \[[#34308](https://community.openproject.com/wp/34308)\] -- Fixed: Grammar mistake in Administration -> Webhooks \[[#34313](https://community.openproject.com/wp/34313)\] -- Fixed: Row break in status selector on cards after spaces \[[#34322](https://community.openproject.com/wp/34322)\] -- Fixed: Entering dates in Gantt chart fails when mouse leaves the row \[[#34453](https://community.openproject.com/wp/34453)\] -- Fixed: Wrong link to notification settings \[[#34591](https://community.openproject.com/wp/34591)\] -- Fixed: Dead links and unsuitable heading in Administration -> Plugins \[[#34825](https://community.openproject.com/wp/34825)\] -- Fixed: Wrong symbol (prohibition sign) when hovering over "Spent time" in the work packages details view \[[#34832](https://community.openproject.com/wp/34832)\] -- Fixed: meeting time is wrong for members in different time zone \[[#34901](https://community.openproject.com/wp/34901)\] -- Fixed: Grouping work package table by bool custom field fails \[[#34904](https://community.openproject.com/wp/34904)\] -- Fixed: Week number is wrong after November \[[#35095](https://community.openproject.com/wp/35095)\] -- Fixed: Highlighting in date picker still incorrect \[[#35107](https://community.openproject.com/wp/35107)\] -- Fixed: Error loading list on board (e.g. Status board) for users who don't have access to filtered projects \[[#35563](https://community.openproject.com/wp/35563)\] -- Fixed: Unnecessary requests (3 - 4 times too many) on loading the board \[[#36236](https://community.openproject.com/wp/36236)\] -- Fixed: Boards list not ordered \[[#36277](https://community.openproject.com/wp/36277)\] -- Fixed: Can't delete old project: CostObject to Budget migration doesn't update journalable_type \[[#36411](https://community.openproject.com/wp/36411)\] -- Fixed: Users who are not allowed to see cost rates book unit costs at 0.00 \[[#37449](https://community.openproject.com/wp/37449)\] -- Fixed: Header is reintroduced in pdf export of cost report \[[#37451](https://community.openproject.com/wp/37451)\] -- Fixed: auth source SSO does not trigger authentication stages \[[#37553](https://community.openproject.com/wp/37553)\] -- Fixed: custom fields of type "list" for area "spent time" cant be edited \[[#37654](https://community.openproject.com/wp/37654)\] -- Fixed: Layout of search suggestions ugly on medium sized screens \[[#37666](https://community.openproject.com/wp/37666)\] -- Fixed: Layout for reset form configuration form broken \[[#37682](https://community.openproject.com/wp/37682)\] -- Fixed: My spent time widget configuration modal styling broken \[[#37705](https://community.openproject.com/wp/37705)\] -- Fixed: Error 439 then insert " in a search field \[[#37729](https://community.openproject.com/wp/37729)\] -- Fixed: Xeokit viewer crashes when slicing planes tool is active \[[#37765](https://community.openproject.com/wp/37765)\] -- Fixed: Work package in inconsistent state when deleting value already set to work package \[[#37775](https://community.openproject.com/wp/37775)\] -- Fixed: Error with Budget \[[#37859](https://community.openproject.com/wp/37859)\] -- Fixed: Missing cancel button on project create page prevents me from going back \[[#37938](https://community.openproject.com/wp/37938)\] -- Fixed: Pagination style is lost \[[#37939](https://community.openproject.com/wp/37939)\] -- Fixed: Migrations for 11.4.0 run very long \[[#37940](https://community.openproject.com/wp/37940)\] -- Fixed: Mouseover effect on column header in notification setting \[[#38022](https://community.openproject.com/wp/38022)\] -- Fixed: Work package with attachment is journaled before destruction \[[#38079](https://community.openproject.com/wp/38079)\] -- Fixed: Poor performance of work package table for work package with larger attachments \[[#38080](https://community.openproject.com/wp/38080)\] -- Fixed: Attachment webhook does not trigger for direct uploads \[[#38085](https://community.openproject.com/wp/38085)\] -- Fixed: Save button in editCostType form is too big \[[#38099](https://community.openproject.com/wp/38099)\] -- Fixed: Google logo in "login with Google" button is too big \[[#38106](https://community.openproject.com/wp/38106)\] -- Fixed: Link to Mail settings in notification settings wrong \[[#38110](https://community.openproject.com/wp/38110)\] -- Fixed: No "Today" option offered for start date when first setting start and finish date \[[#38121](https://community.openproject.com/wp/38121)\] -- Fixed: Wrong languages in daily email summaries \[[#38128](https://community.openproject.com/wp/38128)\] -- Fixed: Opening Author filter provokes barrage of /api/v3/principals requests -> 429 \[[#38140](https://community.openproject.com/wp/38140)\] -- Fixed: Can't fill in required custom fields when creating child work package \[[#38144](https://community.openproject.com/wp/38144)\] -- Fixed: Style regressions in the top menu bar \[[#38314](https://community.openproject.com/wp/38314)\] -- Fixed: Wrong spacing between parent selector and work package subject in work package details view \[[#38335](https://community.openproject.com/wp/38335)\] -- Fixed: Onboarding tour does not start when closing the language section modal \[[#38337](https://community.openproject.com/wp/38337)\] -- Fixed: Order of Wiki-Pages in the configuration pane is by edit timestamp \[[#38361](https://community.openproject.com/wp/38361)\] -- Fixed: Back button is misplaced on mobile \[[#38518](https://community.openproject.com/wp/38518)\] -- Fixed: Migration of journable_type "CostObject" -> "Budget" may fail \[[#38525](https://community.openproject.com/wp/38525)\] -- Fixed: Context menu icon in Subject header of the work package table misplaced \[[#38562](https://community.openproject.com/wp/38562)\] -- Fixed: [Wiki] Special Characters in Wiki Page Title breaks Search \[[#38606](https://community.openproject.com/wp/38606)\] -- Fixed: Missing user in activity for multi select user custom field \[[#38631](https://community.openproject.com/wp/38631)\] -- Fixed: Order of list custom fields not kept \[[#38639](https://community.openproject.com/wp/38639)\] -- Fixed: Type and subject not aligned when the user is not logged in \[[#38663](https://community.openproject.com/wp/38663)\] -- Fixed: Deep link anchors create the wrong URL \[[#38702](https://community.openproject.com/wp/38702)\] -- Fixed: Comments number flicker \[[#38704](https://community.openproject.com/wp/38704)\] -- Fixed: Auth source sso searches for login case sensitive \[[#38706](https://community.openproject.com/wp/38706)\] -- Fixed: Highlighting of ng-select breaks when matching multiple words \[[#38713](https://community.openproject.com/wp/38713)\] -- Fixed: Unable to move task on taskboard if story added late to the sprint \[[#38716](https://community.openproject.com/wp/38716)\] -- Fixed: activity tab of workpackage is empty after searching "@username scope=all" and opening via hyperlink from the result list \[[#38739](https://community.openproject.com/wp/38739)\] -- Fixed: Not providing full GPL licence \[[#38789](https://community.openproject.com/wp/38789)\] -- Fixed: Watchers dropdown is cut off \[[#38793](https://community.openproject.com/wp/38793)\] -- Fixed: Unclear error message when deleting work package type \[[#38812](https://community.openproject.com/wp/38812)\] -- Fixed: Unprocessable Entity when saving user preferences on edge \[[#38835](https://community.openproject.com/wp/38835)\] -- Fixed: Infinite loading of children \[[#38843](https://community.openproject.com/wp/38843)\] -- Fixed: Unexpected Behavior when editing Colors and Assigning to Work Package Types \[[#38887](https://community.openproject.com/wp/38887)\] -- Fixed: Links in consent form open in same tab / word missing in error message \[[#38905](https://community.openproject.com/wp/38905)\] -- Fixed: Cannot remove work package watcher when long watcher entry already exists \[[#38909](https://community.openproject.com/wp/38909)\] -- Fixed: Color contrast on status button is too low \[[#38927](https://community.openproject.com/wp/38927)\] -- Fixed: Viewpoint files in exported BCF XML artifact must end with .bcfv \[[#38960](https://community.openproject.com/wp/38960)\] -- Fixed: Loading BCF viewpoint of other camera type leaves ortho toggle out of sync \[[#38965](https://community.openproject.com/wp/38965)\] -- Fixed: Highlighting of selected card is broken in Boards module \[[#39056](https://community.openproject.com/wp/39056)\] -- Fixed: Übersetzungsfehler / Satzfehler beim Versand von Besprechungsprotokollen \[[#39072](https://community.openproject.com/wp/39072)\] -- Fixed: During Installation in Debian 11 BIM version not selectable \[[#39113](https://community.openproject.com/wp/39113)\] -- Fixed: Fix GET viewpoint endpoint in BCF API \[[#39144](https://community.openproject.com/wp/39144)\] -- Fixed: Email content not centred when deleting a project \[[#39188](https://community.openproject.com/wp/39188)\] -- Fixed: Wrong Russian translate for customfields and menu item \[[#39437](https://community.openproject.com/wp/39437)\] -- Fixed: Highlighting in project table is broken \[[#39449](https://community.openproject.com/wp/39449)\] -- Fixed: Wrong error message about missing external authentication source when changing a password \[[#39460](https://community.openproject.com/wp/39460)\] -- Fixed: Work package create and add forms have only one column even though there is enough space \[[#39543](https://community.openproject.com/wp/39543)\] -- Fixed: Selecting a row from the search auto completion with the cursor and enter does not open the work package (triggers a triggers a fulltext search instead) \[[#39562](https://community.openproject.com/wp/39562)\] -- Fixed: Invalid users can not be deleted \[[#39780](https://community.openproject.com/wp/39780)\] -- Fixed: Box to change parent is too big in WP view \[[#39797](https://community.openproject.com/wp/39797)\] -- Fixed: Announcement Mail is not localized \[[#39835](https://community.openproject.com/wp/39835)\] +- Changed: Send daily email summaries (email digest) \[[#1899](https://community.openproject.org/wp/1899)\] +- Changed: Allow author to mute email notification by making him a watcher \[[#27706](https://community.openproject.org/wp/27706)\] +- Changed: Remove custom fields for "Work package priorities" and "Document categories" \[[#29419](https://community.openproject.org/wp/29419)\] +- Changed: Allow downloading IFC models \[[#35272](https://community.openproject.org/wp/35272)\] +- Changed: Show additional information (project name, status, ...) in work package auto completers \[[#35635](https://community.openproject.org/wp/35635)\] +- Changed: Change content of Project member invitation email \[[#36175](https://community.openproject.org/wp/36175)\] +- Changed: Dynamic form: Flat model structure (_links) \[[#37472](https://community.openproject.org/wp/37472)\] +- Changed: Disable author becoming watcher on project copy \[[#37799](https://community.openproject.org/wp/37799)\] +- Changed: Remove option to get notified about changes that I make myself \[[#37824](https://community.openproject.org/wp/37824)\] +- Changed: [IAN center] Make In App Notification Center responsive to mobile sizes \[[#37870](https://community.openproject.org/wp/37870)\] +- Changed: API v3 notifications api bulk confirming notifications \[[#37872](https://community.openproject.org/wp/37872)\] +- Changed: [IAN center] Clarify current magic limit of 250 items while we have no pagination \[[#37874](https://community.openproject.org/wp/37874)\] +- Changed: Automatically open the next notification after reading another notification \[[#38129](https://community.openproject.org/wp/38129)\] +- Changed: Grouping events by work package in notification dashboard \[[#38137](https://community.openproject.org/wp/38137)\] +- Changed: Link from notifications dashboard to personal notification settings \[[#38139](https://community.openproject.org/wp/38139)\] +- Changed: Create in-app notifications for the first event and not after the aggregation time of x minutes, \[[#38333](https://community.openproject.org/wp/38333)\] +- Changed: Work package type is missing in work package auto-completion \[[#38334](https://community.openproject.org/wp/38334)\] +- Changed: Show unread notifications in Activity tab \[[#38339](https://community.openproject.org/wp/38339)\] +- Changed: Work packages split view in notifications dashboard \[[#38340](https://community.openproject.org/wp/38340)\] +- Changed: New update notification reasons to better filter the relevant updates \[[#38341](https://community.openproject.org/wp/38341)\] +- Changed: Sidebar in Notification center with project filter \[[#38520](https://community.openproject.org/wp/38520)\] +- Changed: Re-name ordering settings in activity tab to "Oldest first/Newest first" \[[#38549](https://community.openproject.org/wp/38549)\] +- Changed: Notification main list view \[[#38592](https://community.openproject.org/wp/38592)\] +- Changed: Migration plan for new notification settings and call to action for user to use it \[[#38595](https://community.openproject.org/wp/38595)\] +- Changed: new images for renamed ordering settings to "Oldest first/Newest first" \[[#38605](https://community.openproject.org/wp/38605)\] +- Changed: Empty states in notification center \[[#38610](https://community.openproject.org/wp/38610)\] +- Changed: Involvement filters in the sidebar of notification center \[[#38642](https://community.openproject.org/wp/38642)\] +- Changed: Loading indicator when loading "all" notifications \[[#38648](https://community.openproject.org/wp/38648)\] +- Changed: New UI for notification row \[[#38650](https://community.openproject.org/wp/38650)\] +- Changed: Notification settings: account-level defaults \[[#38671](https://community.openproject.org/wp/38671)\] +- Changed: Email design - Daily Reminders \[[#38690](https://community.openproject.org/wp/38690)\] +- Changed: Email design - Mention email \[[#38692](https://community.openproject.org/wp/38692)\] +- Changed: Scroll to oldest unread activity in the activity tab \[[#38693](https://community.openproject.org/wp/38693)\] +- Changed: Email reminder settings (user account) \[[#38700](https://community.openproject.org/wp/38700)\] +- Changed: Highlight selected notification in the center \[[#38794](https://community.openproject.org/wp/38794)\] +- Changed: Separate between the reason "Assignee" and "Accountable" in notification row (mail and UI) \[[#38824](https://community.openproject.org/wp/38824)\] +- Changed: BCF API Comments Service \[[#38833](https://community.openproject.org/wp/38833)\] +- Changed: Show meaningful content on accessing non existing notifications/WorkPackage \[[#38842](https://community.openproject.org/wp/38842)\] +- Changed: Show banner when new notifications arrived while being in the notifications center \[[#38933](https://community.openproject.org/wp/38933)\] +- Changed: Consolidate details from notification row in reminder mail \[[#38948](https://community.openproject.org/wp/38948)\] +- Changed: Avoid sending member update notifications/mails upon copying a project if disabled \[[#39084](https://community.openproject.org/wp/39084)\] +- Changed: Optimize mobile view of Notification Center \[[#39148](https://community.openproject.org/wp/39148)\] +- Changed: Reset email footer \[[#39502](https://community.openproject.org/wp/39502)\] +- Changed: Send out email informing all users of the changes to the notification \[[#39607](https://community.openproject.org/wp/39607)\] +- Epic: In-app notifications \[[#26688](https://community.openproject.org/wp/26688)\] +- Fixed: Use CKEditor5 watchdog feature to prevent crashes from being unnoticeable \[[#32643](https://community.openproject.org/wp/32643)\] +- Fixed: Issue with check on length of Custom Fields \[[#34042](https://community.openproject.org/wp/34042)\] +- Fixed: Buttons on form configuration displayed on left instead of right side \[[#34288](https://community.openproject.org/wp/34288)\] +- Fixed: Spelling mistake in the Guided Tour \[[#34304](https://community.openproject.org/wp/34304)\] +- Fixed: Wording mistakes in Guided Tour \[[#34308](https://community.openproject.org/wp/34308)\] +- Fixed: Grammar mistake in Administration -> Webhooks \[[#34313](https://community.openproject.org/wp/34313)\] +- Fixed: Row break in status selector on cards after spaces \[[#34322](https://community.openproject.org/wp/34322)\] +- Fixed: Entering dates in Gantt chart fails when mouse leaves the row \[[#34453](https://community.openproject.org/wp/34453)\] +- Fixed: Wrong link to notification settings \[[#34591](https://community.openproject.org/wp/34591)\] +- Fixed: Dead links and unsuitable heading in Administration -> Plugins \[[#34825](https://community.openproject.org/wp/34825)\] +- Fixed: Wrong symbol (prohibition sign) when hovering over "Spent time" in the work packages details view \[[#34832](https://community.openproject.org/wp/34832)\] +- Fixed: meeting time is wrong for members in different time zone \[[#34901](https://community.openproject.org/wp/34901)\] +- Fixed: Grouping work package table by bool custom field fails \[[#34904](https://community.openproject.org/wp/34904)\] +- Fixed: Week number is wrong after November \[[#35095](https://community.openproject.org/wp/35095)\] +- Fixed: Highlighting in date picker still incorrect \[[#35107](https://community.openproject.org/wp/35107)\] +- Fixed: Error loading list on board (e.g. Status board) for users who don't have access to filtered projects \[[#35563](https://community.openproject.org/wp/35563)\] +- Fixed: Unnecessary requests (3 - 4 times too many) on loading the board \[[#36236](https://community.openproject.org/wp/36236)\] +- Fixed: Boards list not ordered \[[#36277](https://community.openproject.org/wp/36277)\] +- Fixed: Can't delete old project: CostObject to Budget migration doesn't update journalable_type \[[#36411](https://community.openproject.org/wp/36411)\] +- Fixed: Users who are not allowed to see cost rates book unit costs at 0.00 \[[#37449](https://community.openproject.org/wp/37449)\] +- Fixed: Header is reintroduced in pdf export of cost report \[[#37451](https://community.openproject.org/wp/37451)\] +- Fixed: auth source SSO does not trigger authentication stages \[[#37553](https://community.openproject.org/wp/37553)\] +- Fixed: custom fields of type "list" for area "spent time" cant be edited \[[#37654](https://community.openproject.org/wp/37654)\] +- Fixed: Layout of search suggestions ugly on medium sized screens \[[#37666](https://community.openproject.org/wp/37666)\] +- Fixed: Layout for reset form configuration form broken \[[#37682](https://community.openproject.org/wp/37682)\] +- Fixed: My spent time widget configuration modal styling broken \[[#37705](https://community.openproject.org/wp/37705)\] +- Fixed: Error 439 then insert " in a search field \[[#37729](https://community.openproject.org/wp/37729)\] +- Fixed: Xeokit viewer crashes when slicing planes tool is active \[[#37765](https://community.openproject.org/wp/37765)\] +- Fixed: Work package in inconsistent state when deleting value already set to work package \[[#37775](https://community.openproject.org/wp/37775)\] +- Fixed: Error with Budget \[[#37859](https://community.openproject.org/wp/37859)\] +- Fixed: Missing cancel button on project create page prevents me from going back \[[#37938](https://community.openproject.org/wp/37938)\] +- Fixed: Pagination style is lost \[[#37939](https://community.openproject.org/wp/37939)\] +- Fixed: Migrations for 11.4.0 run very long \[[#37940](https://community.openproject.org/wp/37940)\] +- Fixed: Mouseover effect on column header in notification setting \[[#38022](https://community.openproject.org/wp/38022)\] +- Fixed: Work package with attachment is journaled before destruction \[[#38079](https://community.openproject.org/wp/38079)\] +- Fixed: Poor performance of work package table for work package with larger attachments \[[#38080](https://community.openproject.org/wp/38080)\] +- Fixed: Attachment webhook does not trigger for direct uploads \[[#38085](https://community.openproject.org/wp/38085)\] +- Fixed: Save button in editCostType form is too big \[[#38099](https://community.openproject.org/wp/38099)\] +- Fixed: Google logo in "login with Google" button is too big \[[#38106](https://community.openproject.org/wp/38106)\] +- Fixed: Link to Mail settings in notification settings wrong \[[#38110](https://community.openproject.org/wp/38110)\] +- Fixed: No "Today" option offered for start date when first setting start and finish date \[[#38121](https://community.openproject.org/wp/38121)\] +- Fixed: Wrong languages in daily email summaries \[[#38128](https://community.openproject.org/wp/38128)\] +- Fixed: Opening Author filter provokes barrage of /api/v3/principals requests -> 429 \[[#38140](https://community.openproject.org/wp/38140)\] +- Fixed: Can't fill in required custom fields when creating child work package \[[#38144](https://community.openproject.org/wp/38144)\] +- Fixed: Style regressions in the top menu bar \[[#38314](https://community.openproject.org/wp/38314)\] +- Fixed: Wrong spacing between parent selector and work package subject in work package details view \[[#38335](https://community.openproject.org/wp/38335)\] +- Fixed: Onboarding tour does not start when closing the language section modal \[[#38337](https://community.openproject.org/wp/38337)\] +- Fixed: Order of Wiki-Pages in the configuration pane is by edit timestamp \[[#38361](https://community.openproject.org/wp/38361)\] +- Fixed: Back button is misplaced on mobile \[[#38518](https://community.openproject.org/wp/38518)\] +- Fixed: Migration of journalable_type "CostObject" -> "Budget" may fail \[[#38525](https://community.openproject.org/wp/38525)\] +- Fixed: Context menu icon in Subject header of the work package table misplaced \[[#38562](https://community.openproject.org/wp/38562)\] +- Fixed: [Wiki] Special Characters in Wiki Page Title breaks Search \[[#38606](https://community.openproject.org/wp/38606)\] +- Fixed: Missing user in activity for multi select user custom field \[[#38631](https://community.openproject.org/wp/38631)\] +- Fixed: Order of list custom fields not kept \[[#38639](https://community.openproject.org/wp/38639)\] +- Fixed: Type and subject not aligned when the user is not logged in \[[#38663](https://community.openproject.org/wp/38663)\] +- Fixed: Deep link anchors create the wrong URL \[[#38702](https://community.openproject.org/wp/38702)\] +- Fixed: Comments number flicker \[[#38704](https://community.openproject.org/wp/38704)\] +- Fixed: Auth source sso searches for login case sensitive \[[#38706](https://community.openproject.org/wp/38706)\] +- Fixed: Highlighting of ng-select breaks when matching multiple words \[[#38713](https://community.openproject.org/wp/38713)\] +- Fixed: Unable to move task on taskboard if story added late to the sprint \[[#38716](https://community.openproject.org/wp/38716)\] +- Fixed: activity tab of work package is empty after searching "@username scope=all" and opening via hyperlink from the result list \[[#38739](https://community.openproject.org/wp/38739)\] +- Fixed: Not providing full GPL license \[[#38789](https://community.openproject.org/wp/38789)\] +- Fixed: Watchers dropdown is cut off \[[#38793](https://community.openproject.org/wp/38793)\] +- Fixed: Unclear error message when deleting work package type \[[#38812](https://community.openproject.org/wp/38812)\] +- Fixed: Unprocessable Entity when saving user preferences on edge \[[#38835](https://community.openproject.org/wp/38835)\] +- Fixed: Infinite loading of children \[[#38843](https://community.openproject.org/wp/38843)\] +- Fixed: Unexpected Behavior when editing Colors and Assigning to Work Package Types \[[#38887](https://community.openproject.org/wp/38887)\] +- Fixed: Links in consent form open in same tab / word missing in error message \[[#38905](https://community.openproject.org/wp/38905)\] +- Fixed: Cannot remove work package watcher when long watcher entry already exists \[[#38909](https://community.openproject.org/wp/38909)\] +- Fixed: Color contrast on status button is too low \[[#38927](https://community.openproject.org/wp/38927)\] +- Fixed: Viewpoint files in exported BCF XML artifact must end with .bcfv \[[#38960](https://community.openproject.org/wp/38960)\] +- Fixed: Loading BCF viewpoint of other camera type leaves ortho toggle out of sync \[[#38965](https://community.openproject.org/wp/38965)\] +- Fixed: Highlighting of selected card is broken in Boards module \[[#39056](https://community.openproject.org/wp/39056)\] +- Fixed: Translation errors/sentence errors when sending meeting minutes \[[#39072](https://community.openproject.org/wp/39072)\] +- Fixed: During Installation in Debian 11 BIM version not selectable \[[#39113](https://community.openproject.org/wp/39113)\] +- Fixed: Fix GET viewpoint endpoint in BCF API \[[#39144](https://community.openproject.org/wp/39144)\] +- Fixed: Email content not centred when deleting a project \[[#39188](https://community.openproject.org/wp/39188)\] +- Fixed: Wrong Russian translate for custom fields and menu item \[[#39437](https://community.openproject.org/wp/39437)\] +- Fixed: Highlighting in project table is broken \[[#39449](https://community.openproject.org/wp/39449)\] +- Fixed: Wrong error message about missing external authentication source when changing a password \[[#39460](https://community.openproject.org/wp/39460)\] +- Fixed: Work package create and add forms have only one column even though there is enough space \[[#39543](https://community.openproject.org/wp/39543)\] +- Fixed: Selecting a row from the search auto completion with the cursor and enter does not open the work package (triggers a triggers a fulltext search instead) \[[#39562](https://community.openproject.org/wp/39562)\] +- Fixed: Invalid users can not be deleted \[[#39780](https://community.openproject.org/wp/39780)\] +- Fixed: Box to change parent is too big in WP view \[[#39797](https://community.openproject.org/wp/39797)\] +- Fixed: Announcement Mail is not localized \[[#39835](https://community.openproject.org/wp/39835)\] ## Installation and Updates diff --git a/docs/release-notes/12/12-0-1/README.md b/docs/release-notes/12/12-0-1/README.md index 14dec65d9ee7..e496bdc06871 100644 --- a/docs/release-notes/12/12-0-1/README.md +++ b/docs/release-notes/12/12-0-1/README.md @@ -10,17 +10,17 @@ release_date: 2021-11-17 Release date: 2021-11-17 -We released [OpenProject 12.0.1](https://community.openproject.com/versions/1496). +We released [OpenProject 12.0.1](https://community.openproject.org/versions/1496). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Getting 500 internal server error while clicking the project meeting module \[[#39853](https://community.openproject.com/wp/39853)\] -- Fixed: Members menu in wrong place (shown above wiki pages) \[[#39857](https://community.openproject.com/wp/39857)\] -- Fixed: Error message shows every letter as bullet point \[[#39880](https://community.openproject.com/wp/39880)\] -- Fixed: Updating IFC Models fails. \[[#39901](https://community.openproject.com/wp/39901)\] -- Fixed: Auto-unlocking editing of locked wiki pages no longer works (500 server error) \[[#40124](https://community.openproject.com/wp/40124)\] +- Fixed: Getting 500 internal server error while clicking the project meeting module \[[#39853](https://community.openproject.org/wp/39853)\] +- Fixed: Members menu in wrong place (shown above wiki pages) \[[#39857](https://community.openproject.org/wp/39857)\] +- Fixed: Error message shows every letter as bullet point \[[#39880](https://community.openproject.org/wp/39880)\] +- Fixed: Updating IFC Models fails. \[[#39901](https://community.openproject.org/wp/39901)\] +- Fixed: Auto-unlocking editing of locked wiki pages no longer works (500 server error) \[[#40124](https://community.openproject.org/wp/40124)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-10/README.md b/docs/release-notes/12/12-0-10/README.md index bf82792b9520..b5676d8a515c 100644 --- a/docs/release-notes/12/12-0-10/README.md +++ b/docs/release-notes/12/12-0-10/README.md @@ -10,7 +10,7 @@ release_date: 2022-03-16 Release date: 2022-03-16 -We released [OpenProject 12.0.10](https://community.openproject.com/versions/1512). +We released [OpenProject 12.0.10](https://community.openproject.org/versions/1512). The release contains several bug fixes and we recommend updating to the newest version. ##### Localization issues @@ -21,9 +21,9 @@ This has been fixed and is the primary reason for this release. #### Bug fixes and changes -- Fixed: Several Translation Errors [DE] \[[#41414](https://community.openproject.com/wp/41414)\] -- Fixed: LOCALE env used for seeding is too generic \[[#41427](https://community.openproject.com/wp/41427)\] -- Fixed: Broken translation in russian/german language after upgrade to actual release \[[#41434](https://community.openproject.com/wp/41434)\] +- Fixed: Several Translation Errors [DE] \[[#41414](https://community.openproject.org/wp/41414)\] +- Fixed: LOCALE env used for seeding is too generic \[[#41427](https://community.openproject.org/wp/41427)\] +- Fixed: Broken translation in russian/german language after upgrade to actual release \[[#41434](https://community.openproject.org/wp/41434)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-2/README.md b/docs/release-notes/12/12-0-2/README.md index 44e3cfc8ba8c..7d76b44480cb 100644 --- a/docs/release-notes/12/12-0-2/README.md +++ b/docs/release-notes/12/12-0-2/README.md @@ -10,21 +10,21 @@ release_date: 2021-11-24 Release date: 2021-11-24 -We released [OpenProject 12.0.2](https://community.openproject.com/versions/1497). +We released [OpenProject 12.0.2](https://community.openproject.org/versions/1497). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: On global work package page all types are shown - even those in projects not accessible to users \[[#37869](https://community.openproject.com/wp/37869)\] -- Fixed: New email design breaks with some mobile clients \[[#39821](https://community.openproject.com/wp/39821)\] -- Fixed: Mobile (iOS): Notification center is cut off and scrolls infinitely \[[#39849](https://community.openproject.com/wp/39849)\] -- Fixed: Broken Logo in Mail \[[#39906](https://community.openproject.com/wp/39906)\] -- Fixed: Duplicate requests for relations column leading to slow work package table rendering \[[#39959](https://community.openproject.com/wp/39959)\] -- Fixed: Attribute help text not deleted when custom field is deleted \[[#40027](https://community.openproject.com/wp/40027)\] -- Fixed: Updating profile hide my mail sets value to invalid number \[[#40053](https://community.openproject.com/wp/40053)\] -- Fixed: Can't upload BCF files as normal attachments to work packages via FOG \[[#40112](https://community.openproject.com/wp/40112)\] -- Changed: Improve error logging of SAML \[[#39899](https://community.openproject.com/wp/39899)\] +- Fixed: On global work package page all types are shown - even those in projects not accessible to users \[[#37869](https://community.openproject.org/wp/37869)\] +- Fixed: New email design breaks with some mobile clients \[[#39821](https://community.openproject.org/wp/39821)\] +- Fixed: Mobile (iOS): Notification center is cut off and scrolls infinitely \[[#39849](https://community.openproject.org/wp/39849)\] +- Fixed: Broken Logo in Mail \[[#39906](https://community.openproject.org/wp/39906)\] +- Fixed: Duplicate requests for relations column leading to slow work package table rendering \[[#39959](https://community.openproject.org/wp/39959)\] +- Fixed: Attribute help text not deleted when custom field is deleted \[[#40027](https://community.openproject.org/wp/40027)\] +- Fixed: Updating profile hide my mail sets value to invalid number \[[#40053](https://community.openproject.org/wp/40053)\] +- Fixed: Can't upload BCF files as normal attachments to work packages via FOG \[[#40112](https://community.openproject.org/wp/40112)\] +- Changed: Improve error logging of SAML \[[#39899](https://community.openproject.org/wp/39899)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-3/README.md b/docs/release-notes/12/12-0-3/README.md index 04de8cf40931..8ca68a225249 100644 --- a/docs/release-notes/12/12-0-3/README.md +++ b/docs/release-notes/12/12-0-3/README.md @@ -10,18 +10,18 @@ release_date: 2021-12-08 Release date: 2021-12-08 -We released [OpenProject 12.0.3](https://community.openproject.com/versions/1498). +We released [OpenProject 12.0.3](https://community.openproject.org/versions/1498). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Wiki Link List in content formatting issue \[[#40016](https://community.openproject.com/wp/40016)\] -- Fixed: Translation error when changing permissions \[[#40056](https://community.openproject.com/wp/40056)\] -- Fixed: WP is not disabled in the background when a modal is open \[[#40141](https://community.openproject.com/wp/40141)\] -- Fixed: Dropdown menu empty when adding new element to parent child board \[[#40154](https://community.openproject.com/wp/40154)\] -- Fixed: Optional header sso does not log in plain user \[[#40240](https://community.openproject.com/wp/40240)\] -- Fixed: Auth source SSO redirects to my page on login \[[#40248](https://community.openproject.com/wp/40248)\] +- Fixed: Wiki Link List in content formatting issue \[[#40016](https://community.openproject.org/wp/40016)\] +- Fixed: Translation error when changing permissions \[[#40056](https://community.openproject.org/wp/40056)\] +- Fixed: WP is not disabled in the background when a modal is open \[[#40141](https://community.openproject.org/wp/40141)\] +- Fixed: Dropdown menu empty when adding new element to parent child board \[[#40154](https://community.openproject.org/wp/40154)\] +- Fixed: Optional header sso does not log in plain user \[[#40240](https://community.openproject.org/wp/40240)\] +- Fixed: Auth source SSO redirects to my page on login \[[#40248](https://community.openproject.org/wp/40248)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-4/README.md b/docs/release-notes/12/12-0-4/README.md index 594c0b68fe32..29f49a2c0762 100644 --- a/docs/release-notes/12/12-0-4/README.md +++ b/docs/release-notes/12/12-0-4/README.md @@ -10,13 +10,13 @@ release_date: 2021-12-14 Release date: 2021-12-14 -We released [OpenProject 12.0.4](https://community.openproject.com/versions/1502). +We released [OpenProject 12.0.4](https://community.openproject.org/versions/1502). The release contains several bug fixes and we recommend updating to the newest version. ### CVE-2021-43830 -OpenProject versions >= 12.0.0 are vulnerable to a SQL injection in the budgets module. For authenticated users with the "Edit budgets" permission, the request to reassign work packages to another budget unsufficiently sanitizes user input in the reassign_to_id parameter. +OpenProject versions >= 12.0.0 are vulnerable to a SQL injection in the budgets module. For authenticated users with the "Edit budgets" permission, the request to reassign work packages to another budget insufficiently sanitizes user input in the reassign_to_id parameter. #### Patches @@ -29,8 +29,8 @@ If you are unable to upgrade in a timely fashion, the following patch can be app This security issue was responsibly disclosed by [Daniel Santos](https://github.com/bananabr) (Twitter [@bananabr](https://twitter.com/bananabr)). Thank you for reaching out to us and your help in identifying this issue. If you have a security vulnerability you would like to disclose, please see our [statement on security](../../../security-and-privacy/statement-on-security/). ### Bug fixes and changes -- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40314](https://community.openproject.com/wp/40314)\] -- Fixed: Change of View within OpenProject triggers reload of Viewer \[[#40315](https://community.openproject.com/wp/40315)\] +- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40314](https://community.openproject.org/wp/40314)\] +- Fixed: Change of View within OpenProject triggers reload of Viewer \[[#40315](https://community.openproject.org/wp/40315)\] ### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-5/README.md b/docs/release-notes/12/12-0-5/README.md index 240a08c210a5..873a6c68962b 100644 --- a/docs/release-notes/12/12-0-5/README.md +++ b/docs/release-notes/12/12-0-5/README.md @@ -10,25 +10,25 @@ release_date: 2022-01-11 Release date: 2022-01-11 -We released [OpenProject 12.0.5](https://community.openproject.com/versions/1503). +We released [OpenProject 12.0.5](https://community.openproject.org/versions/1503). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Uploaded IFC Model can't be set as Standard Model \[[#40187](https://community.openproject.com/wp/40187)\] -- Fixed: Git "View Differences" results in 500 error in Repository module. \[[#40191](https://community.openproject.com/wp/40191)\] -- Fixed: Impossible to identify errors when bulk moving / updating project \[[#40265](https://community.openproject.com/wp/40265)\] -- Fixed: wrong position of "slice edit" - context menu \[[#40282](https://community.openproject.com/wp/40282)\] -- Fixed: Incorrect label causes screenreader problems \[[#40296](https://community.openproject.com/wp/40296)\] -- Fixed: Member updated mails cannot be surpressed \[[#40316](https://community.openproject.com/wp/40316)\] -- Fixed: Try to open OpenProject API: Failed to load API definition. \[[#40352](https://community.openproject.com/wp/40352)\] -- Fixed: Remote attachments cache isn't cleared \[[#40356](https://community.openproject.com/wp/40356)\] -- Fixed: Form configuration query can not be edited if invalid \[[#40374](https://community.openproject.com/wp/40374)\] -- Fixed: Seeding with relative URL root creates invalid welcome text \[[#40376](https://community.openproject.com/wp/40376)\] -- Fixed: Users created from synchronized group have no notification settings \[[#40433](https://community.openproject.com/wp/40433)\] -- Fixed: Unpaginated api/v3/relations end point \[[#40434](https://community.openproject.com/wp/40434)\] -- Fixed: Header-based SSO does not allow entering missing attributes \[[#40511](https://community.openproject.com/wp/40511)\] +- Fixed: Uploaded IFC Model can't be set as Standard Model \[[#40187](https://community.openproject.org/wp/40187)\] +- Fixed: Git "View Differences" results in 500 error in Repository module. \[[#40191](https://community.openproject.org/wp/40191)\] +- Fixed: Impossible to identify errors when bulk moving / updating project \[[#40265](https://community.openproject.org/wp/40265)\] +- Fixed: wrong position of "slice edit" - context menu \[[#40282](https://community.openproject.org/wp/40282)\] +- Fixed: Incorrect label causes screenreader problems \[[#40296](https://community.openproject.org/wp/40296)\] +- Fixed: Member updated mails cannot be suppressed \[[#40316](https://community.openproject.org/wp/40316)\] +- Fixed: Try to open OpenProject API: Failed to load API definition. \[[#40352](https://community.openproject.org/wp/40352)\] +- Fixed: Remote attachments cache isn't cleared \[[#40356](https://community.openproject.org/wp/40356)\] +- Fixed: Form configuration query can not be edited if invalid \[[#40374](https://community.openproject.org/wp/40374)\] +- Fixed: Seeding with relative URL root creates invalid welcome text \[[#40376](https://community.openproject.org/wp/40376)\] +- Fixed: Users created from synchronized group have no notification settings \[[#40433](https://community.openproject.org/wp/40433)\] +- Fixed: Unpaginated api/v3/relations end point \[[#40434](https://community.openproject.org/wp/40434)\] +- Fixed: Header-based SSO does not allow entering missing attributes \[[#40511](https://community.openproject.org/wp/40511)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-6/README.md b/docs/release-notes/12/12-0-6/README.md index 84e60fd8955b..5186deb4f6c4 100644 --- a/docs/release-notes/12/12-0-6/README.md +++ b/docs/release-notes/12/12-0-6/README.md @@ -10,25 +10,25 @@ release_date: 2022-01-17 Release date: 2022-01-17 -We released [OpenProject 12.0.6](https://community.openproject.com/versions/1504). +We released [OpenProject 12.0.6](https://community.openproject.org/versions/1504). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Notification center empty state showing during loading \[[#39828](https://community.openproject.com/wp/39828)\] -- Fixed: Notification images are cached for years without invalidation means - old images shown \[[#40143](https://community.openproject.com/wp/40143)\] -- Fixed: Memory leak in work package split screen \[[#40164](https://community.openproject.com/wp/40164)\] -- Fixed: Check and update the notifications API documentation \[[#40196](https://community.openproject.com/wp/40196)\] -- Fixed: 429 OK Error on Administration > Users \[[#40213](https://community.openproject.com/wp/40213)\] -- Fixed: Disable send_notifications on instantiating new project from template \[[#40348](https://community.openproject.com/wp/40348)\] -- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40373](https://community.openproject.com/wp/40373)\] -- Fixed: no "Example" for Host name in "Administration->General" \[[#40396](https://community.openproject.com/wp/40396)\] -- Fixed: Don't receive email reminder \[[#40512](https://community.openproject.com/wp/40512)\] -- Fixed: Only last N projects available for parent project selection \[[#40580](https://community.openproject.com/wp/40580)\] -- Fixed: Change labels in Russian (expletive) \[[#40581](https://community.openproject.com/wp/40581)\] -- Fixed: Dropdown menu of parent child board not showing all WPs \[[#40647](https://community.openproject.com/wp/40647)\] -- Fixed: Backup feature does not work with relative URL root \[[#40656](https://community.openproject.com/wp/40656)\] +- Fixed: Notification center empty state showing during loading \[[#39828](https://community.openproject.org/wp/39828)\] +- Fixed: Notification images are cached for years without invalidation means - old images shown \[[#40143](https://community.openproject.org/wp/40143)\] +- Fixed: Memory leak in work package split screen \[[#40164](https://community.openproject.org/wp/40164)\] +- Fixed: Check and update the notifications API documentation \[[#40196](https://community.openproject.org/wp/40196)\] +- Fixed: 429 OK Error on Administration > Users \[[#40213](https://community.openproject.org/wp/40213)\] +- Fixed: Disable send_notifications on instantiating new project from template \[[#40348](https://community.openproject.org/wp/40348)\] +- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40373](https://community.openproject.org/wp/40373)\] +- Fixed: no "Example" for Host name in "Administration->General" \[[#40396](https://community.openproject.org/wp/40396)\] +- Fixed: Don't receive email reminder \[[#40512](https://community.openproject.org/wp/40512)\] +- Fixed: Only last N projects available for parent project selection \[[#40580](https://community.openproject.org/wp/40580)\] +- Fixed: Change labels in Russian (expletive) \[[#40581](https://community.openproject.org/wp/40581)\] +- Fixed: Dropdown menu of parent child board not showing all WPs \[[#40647](https://community.openproject.org/wp/40647)\] +- Fixed: Backup feature does not work with relative URL root \[[#40656](https://community.openproject.org/wp/40656)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-7/README.md b/docs/release-notes/12/12-0-7/README.md index 814ac4dbe038..fd9de592d31d 100644 --- a/docs/release-notes/12/12-0-7/README.md +++ b/docs/release-notes/12/12-0-7/README.md @@ -10,7 +10,7 @@ release_date: 2022-01-26 Release date: 2022-01-26 -We released [OpenProject 12.0.7](https://community.openproject.com/versions/1506). +We released [OpenProject 12.0.7](https://community.openproject.org/versions/1506). The release contains several bug fixes and we recommend updating to the newest version. ### API default max page sizes @@ -20,7 +20,7 @@ There is now a separate setting for the max API size that will be used for these ### Russian expletive translations -OpenProject relis on community translations for some languages that we cannot provide translations for ourselves. It was brought to our attention that the Russian translations partially contain expletive languages. Thanks to community contributors Sergey and Christina, these translations were fixed on crowdin and could now be included into the release. +OpenProject relies on community translations for some languages that we cannot provide translations for ourselves. It was brought to our attention that the Russian translations partially contain expletive languages. Thanks to community contributors Sergey and Christina, these translations were fixed on crowdin and could now be included into the release. We need your help to improve and extend translations of OpenProject into your native language. To get more information, please see our [Translating OpenProject guide](../../../development/translate-openproject/) and our [project on crowdin.com](https://crowdin.com/project/openproject), where you can provide and help approve translations from your browser. If you wish to become a proofreader for your language, please reach out to [info@openproject.com](mailto:info@openproject.com) @@ -32,19 +32,19 @@ If you were using custom plugins, the build of the OpenProject frontend failed d #### Bug fixes and changes -- Fixed: Custom plugins not working with 11.0.1 \[[#35103](https://community.openproject.com/wp/35103)\] -- Fixed: [Repository] GIT Referencing and time tracking not work in branch \[[#39796](https://community.openproject.com/wp/39796)\] -- Fixed: Disable send_notifications on instantiating new project from template \[[#40348](https://community.openproject.com/wp/40348)\] -- Fixed: Only last N projects available for parent project selection \[[#40580](https://community.openproject.com/wp/40580)\] -- Fixed: Change labels in Russian (expletive) \[[#40581](https://community.openproject.com/wp/40581)\] -- Fixed: Dropdown menu of parent child board not showing all WPs \[[#40647](https://community.openproject.com/wp/40647)\] -- Fixed: Unread, no longer visible notifications still showing up in total \[[#40747](https://community.openproject.com/wp/40747)\] -- Fixed: Synchronized group creation error \[[#40750](https://community.openproject.com/wp/40750)\] -- Fixed: Plugin Installation: Angular fronted doesn't compile \[[#40781](https://community.openproject.com/wp/40781)\] -- Fixed: Date picker is displayed in wrong spot \[[#40789](https://community.openproject.com/wp/40789)\] -- Fixed: Wiki not available anymore \[[#40790](https://community.openproject.com/wp/40790)\] -- Fixed: Custom fields disappearing after attachment upload \[[#40826](https://community.openproject.com/wp/40826)\] -- Changed: Add separate APIv3 page size limit \[[#40816](https://community.openproject.com/wp/40816)\] +- Fixed: Custom plugins not working with 11.0.1 \[[#35103](https://community.openproject.org/wp/35103)\] +- Fixed: [Repository] GIT Referencing and time tracking not work in branch \[[#39796](https://community.openproject.org/wp/39796)\] +- Fixed: Disable send_notifications on instantiating new project from template \[[#40348](https://community.openproject.org/wp/40348)\] +- Fixed: Only last N projects available for parent project selection \[[#40580](https://community.openproject.org/wp/40580)\] +- Fixed: Change labels in Russian (expletive) \[[#40581](https://community.openproject.org/wp/40581)\] +- Fixed: Dropdown menu of parent child board not showing all WPs \[[#40647](https://community.openproject.org/wp/40647)\] +- Fixed: Unread, no longer visible notifications still showing up in total \[[#40747](https://community.openproject.org/wp/40747)\] +- Fixed: Synchronized group creation error \[[#40750](https://community.openproject.org/wp/40750)\] +- Fixed: Plugin Installation: Angular fronted doesn't compile \[[#40781](https://community.openproject.org/wp/40781)\] +- Fixed: Date picker is displayed in wrong spot \[[#40789](https://community.openproject.org/wp/40789)\] +- Fixed: Wiki not available anymore \[[#40790](https://community.openproject.org/wp/40790)\] +- Fixed: Custom fields disappearing after attachment upload \[[#40826](https://community.openproject.org/wp/40826)\] +- Changed: Add separate APIv3 page size limit \[[#40816](https://community.openproject.org/wp/40816)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-8/README.md b/docs/release-notes/12/12-0-8/README.md index a016b9de6bb0..e292ac425881 100644 --- a/docs/release-notes/12/12-0-8/README.md +++ b/docs/release-notes/12/12-0-8/README.md @@ -10,16 +10,16 @@ release_date: 2022-02-23 Release date: 2022-02-23 -We released [OpenProject 12.0.8](https://community.openproject.com/versions/1507). +We released [OpenProject 12.0.8](https://community.openproject.org/versions/1507). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Work package title input shrinks when inputting something in FF \[[#39833](https://community.openproject.com/wp/39833)\] -- Fixed: dropdown to select project in notification settings is limited to objects per page options \[[#40934](https://community.openproject.com/wp/40934)\] -- Fixed: Cannot log time entries when recent work package was removed and time entry assigned to project \[[#41015](https://community.openproject.com/wp/41015)\] -- Fixed: Small display bug \[[#41034](https://community.openproject.com/wp/41034)\] +- Fixed: Work package title input shrinks when inputting something in FF \[[#39833](https://community.openproject.org/wp/39833)\] +- Fixed: dropdown to select project in notification settings is limited to objects per page options \[[#40934](https://community.openproject.org/wp/40934)\] +- Fixed: Cannot log time entries when recent work package was removed and time entry assigned to project \[[#41015](https://community.openproject.org/wp/41015)\] +- Fixed: Small display bug \[[#41034](https://community.openproject.org/wp/41034)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-0-9/README.md b/docs/release-notes/12/12-0-9/README.md index a2169b87a732..b55214a53098 100644 --- a/docs/release-notes/12/12-0-9/README.md +++ b/docs/release-notes/12/12-0-9/README.md @@ -10,12 +10,12 @@ release_date: 2022-03-14 Release date: 2022-03-14 -We released [OpenProject 12.0.9](https://community.openproject.com/versions/1511). +We released [OpenProject 12.0.9](https://community.openproject.org/versions/1511). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Possible to create invalid project identifier when creating project \[[#41228](https://community.openproject.com/wp/41228)\] -- Fixed: Internal PostgreSQL error when updating query order with invalid IDs \[[#41310](https://community.openproject.com/wp/41310)\] -- Fixed: Work package table relation column values not complete \[[#41315](https://community.openproject.com/wp/41315)\] +- Fixed: Possible to create invalid project identifier when creating project \[[#41228](https://community.openproject.org/wp/41228)\] +- Fixed: Internal PostgreSQL error when updating query order with invalid IDs \[[#41310](https://community.openproject.org/wp/41310)\] +- Fixed: Work package table relation column values not complete \[[#41315](https://community.openproject.org/wp/41315)\] diff --git a/docs/release-notes/12/12-1-0/README.md b/docs/release-notes/12/12-1-0/README.md index 51efae0d81b7..8c457b75608c 100644 --- a/docs/release-notes/12/12-1-0/README.md +++ b/docs/release-notes/12/12-1-0/README.md @@ -10,7 +10,7 @@ release_date: 2022-05-03 Release date: 2022-05-03 -We released [OpenProject 12.1.0](https://community.openproject.com/versions/1493). +We released [OpenProject 12.1.0](https://community.openproject.org/versions/1493). This release will introduce a new module, the team planner. With this Enterprise add-on, you can visually assign work packages in a weekly or bi-weekly planning calendar view to your team, and keep an eye on everybody’s workload. Also, we are proud to give the basic agile boards to the Community version of OpenProject with 12.1. Now, making it possible to create agile boards also in the free Community version. @@ -19,7 +19,7 @@ As always, the release contains many more improvements and bug fixes and we reco ## Team planner (Enterprise add-on) -A new team planner module (Enterprise add-on) allows you to visually assign tasks to team members to get an overview of who is working on what. You can display in a weekly or bi-weekly view all work packages assigend to your team. +A new team planner module (Enterprise add-on) allows you to visually assign tasks to team members to get an overview of who is working on what. You can display in a weekly or bi-weekly view all work packages assigned to your team. ![openproject-team-planner-view](openproject-team-planner-view.gif) @@ -33,7 +33,7 @@ Also, you can include work packages from multiple projects with the new “Inclu ## Agile boards for the Community version -We want to give an important feature to the Community version. Now, that we have implemented with the team planner a new Enterprpise feature, we also want to give something to the Community. We decided to release the basic agile boards for the Community. Making it possible to also create agile boards with the free of charge Community version of OpenProject. +We want to give an important feature to the Community version. Now, that we have implemented with the team planner a new Enterprise feature, we also want to give something to the Community. We decided to release the basic agile boards for the Community. Making it possible to also create agile boards with the free of charge Community version of OpenProject. These flexible basic agile boards allow you to set up any kind of agile board you need. Freely configure the lists (columns) which should be displayed and add and move cards between these lists. The basic boards do not update the work package attributes when moving cards between the lists. @@ -66,155 +66,155 @@ We added a new “Files” tab in the work package details. This way, you will h #### List of all bug fixes and changes -- Epic: Introduce module specific queries (e.g. for calendar, team planner and BCF module) \[[#30583](https://community.openproject.com/wp/30583)\] -- Epic: Team planner \[[#39784](https://community.openproject.com/wp/39784)\] -- Epic: Include projects filter component for work package module, calendar and team planner \[[#40330](https://community.openproject.com/wp/40330)\] -- Changed: Extend the current project status \[[#34708](https://community.openproject.com/wp/34708)\] -- Changed: Update and verify all help/docs links from application help menu and start page \[[#35029](https://community.openproject.com/wp/35029)\] -- Changed: Save different views in calendar module \[[#36322](https://community.openproject.com/wp/36322)\] -- Changed: Remove custom links to notification settings in email foooter \[[#39133](https://community.openproject.com/wp/39133)\] -- Changed: Drag and drop of work packages in calendar module and team planner module \[[#39486](https://community.openproject.com/wp/39486)\] -- Changed: Left-side search pane to add existing work packages to team planner \[[#40031](https://community.openproject.com/wp/40031)\] -- Changed: Seed data for new team planner module \[[#40195](https://community.openproject.com/wp/40195)\] -- Changed: Email settings (SMTP etc.) are hard to find \[[#40215](https://community.openproject.com/wp/40215)\] -- Changed: API to CRUD links between files (i.e. Nextcloud) and work packages in OpenProject \[[#40228](https://community.openproject.com/wp/40228)\] -- Changed: What's new teaser block updated with team planner \[[#40257](https://community.openproject.com/wp/40257)\] -- Changed: Show closed work packages by default in calendar and team planner \[[#40319](https://community.openproject.com/wp/40319)\] -- Changed: Make assignee column narrower (it is is currently too wide) \[[#40532](https://community.openproject.com/wp/40532)\] -- Changed: Switch to change between one week and two weeks view \[[#40533](https://community.openproject.com/wp/40533)\] -- Changed: Multiple file storages per OP instance \[[#40536](https://community.openproject.com/wp/40536)\] -- Changed: Global roles for groups \[[#40546](https://community.openproject.com/wp/40546)\] -- Changed: Add right-click work packages context menu to the calendar/team planner \[[#40755](https://community.openproject.com/wp/40755)\] -- Changed: Add a format to display lastname and firstname without space \[[#40759](https://community.openproject.com/wp/40759)\] -- Changed: Load the first team planner when clicking on the menu item \[[#40767](https://community.openproject.com/wp/40767)\] -- Changed: Updates to the two-week view \[[#40801](https://community.openproject.com/wp/40801)\] -- Changed: Hover, Clicked and Disabled states for cards in the Add Existing pane \[[#40810](https://community.openproject.com/wp/40810)\] -- Changed: Team planner animation \[[#40856](https://community.openproject.com/wp/40856)\] -- Changed: Decrease team planner toolbar when split screen is opened \[[#40863](https://community.openproject.com/wp/40863)\] -- Changed: Make Add Existing panel narrower than is currently implemented (and make sure its shadow is not cut off) \[[#40864](https://community.openproject.com/wp/40864)\] -- Changed: Removing work packages from the team planner \[[#40883](https://community.openproject.com/wp/40883)\] -- Changed: Updated design for cards in Add Existing pane \[[#40886](https://community.openproject.com/wp/40886)\] -- Changed: Add order by name per hierarchy to projects API \[[#40930](https://community.openproject.com/wp/40930)\] -- Changed: Signaling included properties of the projects API \[[#40931](https://community.openproject.com/wp/40931)\] -- Changed: Updated placement and design of the create button in the sidebar \[[#40958](https://community.openproject.com/wp/40958)\] -- Changed: Replace work strips on the team planner calendar with full cards \[[#40962](https://community.openproject.com/wp/40962)\] -- Changed: Change scrolling behavior of team planner \[[#40981](https://community.openproject.com/wp/40981)\] -- Changed: Show "Start trial" button in EE upsale templates \[[#40990](https://community.openproject.com/wp/40990)\] -- Changed: Add team planner to onboarding tour \[[#41050](https://community.openproject.com/wp/41050)\] -- Changed: Empty team planner view needs some more love \[[#41073](https://community.openproject.com/wp/41073)\] -- Changed: The date indicators must update when dragging a card in the planner horizontally \[[#41075](https://community.openproject.com/wp/41075)\] -- Changed: When the split screen is open, allow users to also select on cards in the Add Existing pane to change the contents of the split screen \[[#41080](https://community.openproject.com/wp/41080)\] -- Changed: "Include projects": behaviour specific to the Team Planner \[[#41086](https://community.openproject.com/wp/41086)\] -- Changed: New image/gif for add Existing pane in team planner \[[#41100](https://community.openproject.com/wp/41100)\] -- Changed: On closing the split screen, the previously open card should go from selected (blue) to normal state \[[#41113](https://community.openproject.com/wp/41113)\] -- Changed: Include projects - Select all sub-projects \[[#41135](https://community.openproject.com/wp/41135)\] -- Changed: Updated hover behaviour for cards (to make the icons legible when they overlap with attributes) \[[#41137](https://community.openproject.com/wp/41137)\] -- Changed: Add index page to Team Planner ("Team planners") to maintain consistency with the Boards module \[[#41138](https://community.openproject.com/wp/41138)\] -- Changed: Display a loading skeleton before actual content is fully loaded \[[#41199](https://community.openproject.com/wp/41199)\] -- Changed: Include projects - Loading skeleton view \[[#41213](https://community.openproject.com/wp/41213)\] -- Changed: Include projects - Mobile dialog \[[#41224](https://community.openproject.com/wp/41224)\] -- Changed: Display a small loading indicator after each modification to avoid the user immediately making a second, conflicting modification \[[#41235](https://community.openproject.com/wp/41235)\] -- Changed: Add index page for calendar module \[[#41278](https://community.openproject.com/wp/41278)\] -- Changed: Files Tab in work package details \[[#41340](https://community.openproject.com/wp/41340)\] -- Changed: Add Basic Board to onboarding tour for Community edition. \[[#41405](https://community.openproject.com/wp/41405)\] -- Changed: Change permission for role MEMBER in default demo data \[[#41477](https://community.openproject.com/wp/41477)\] -- Changed: Publish Basic boards for Community version \[[#41511](https://community.openproject.com/wp/41511)\] -- Changed: Make existing advanced boards not accessible when you don't have an EE token any more \[[#41516](https://community.openproject.com/wp/41516)\] -- Changed: Move WP with associated FileLinks \[[#41523](https://community.openproject.com/wp/41523)\] -- Changed: Ensure deleting a project deletes all file links of all work packages of that project \[[#41525](https://community.openproject.com/wp/41525)\] -- Changed: Regular LDAP users synchronization of all active users \[[#41677](https://community.openproject.com/wp/41677)\] -- Changed: Add feature flag to activate/deactivate file storages module \[[#41690](https://community.openproject.com/wp/41690)\] -- Changed: Heading not correctly aligned in Team planner \[[#41710](https://community.openproject.com/wp/41710)\] -- Changed: Seed (migrate) team planner permissions \[[#41899](https://community.openproject.com/wp/41899)\] -- Changed: Add packaged installation support for Ubuntu 22.04 \[[#42069](https://community.openproject.com/wp/42069)\] -- Fixed: Missing translation in custom fields administration \[[#38057](https://community.openproject.com/wp/38057)\] -- Fixed: [Navigation] Breadcrumbs changes from "Relations" to "Activity" \[[#38531](https://community.openproject.com/wp/38531)\] -- Fixed: Minor spelling change for work package filter \[[#38533](https://community.openproject.com/wp/38533)\] -- Fixed: Mobile: When clicking on WP tabs ("Activity", "Watchers", ...) jump to top of page \[[#39848](https://community.openproject.com/wp/39848)\] -- Fixed: Internal error when trying to set milestone as parent wp \[[#39856](https://community.openproject.com/wp/39856)\] -- Fixed: Multiple indexes found on journal columns when migrating from 11.4.1 to 12.0.1 \[[#40028](https://community.openproject.com/wp/40028)\] -- Fixed: Tab info does not update when closing the split screen \[[#40033](https://community.openproject.com/wp/40033)\] -- Fixed: Various E-Mail clients don't support embedded images \[[#40122](https://community.openproject.com/wp/40122)\] -- Fixed: Save query modal does not submit on enter \[[#40134](https://community.openproject.com/wp/40134)\] -- Fixed: "Add Viewpoint Button" is missing after switching from table view to model & cards \[[#40186](https://community.openproject.com/wp/40186)\] -- Fixed: Check and update the notifications API documentation \[[#40196](https://community.openproject.com/wp/40196)\] -- Fixed: Opening viewpoints from gallery does not work on mobile \[[#40267](https://community.openproject.com/wp/40267)\] -- Fixed: Empty state is visible during team planner query reload \[[#40323](https://community.openproject.com/wp/40323)\] -- Fixed: Tooltip on team planner and calendar doesn't close sometimes \[[#40325](https://community.openproject.com/wp/40325)\] -- Fixed: OpenAPI Specs not OpenAPI 3.0 compatible \[[#40397](https://community.openproject.com/wp/40397)\] -- Fixed: Team planner not correctly redrawn after closing a split view (empty areas) \[[#40531](https://community.openproject.com/wp/40531)\] -- Fixed: Today column is not highlighted in the team planner \[[#40859](https://community.openproject.com/wp/40859)\] -- Fixed: An empty team planner has visual anomalies (extra lines, wrong colour) \[[#40860](https://community.openproject.com/wp/40860)\] -- Fixed: Wrong progress value in parent task \[[#40867](https://community.openproject.com/wp/40867)\] -- Fixed: Error 500 when creating a new OpenID provider \[[#40893](https://community.openproject.com/wp/40893)\] -- Fixed: Users can't select public template projects in new project dialog \[[#40918](https://community.openproject.com/wp/40918)\] -- Fixed: Meeting Time in iCalendar is wrong \[[#40941](https://community.openproject.com/wp/40941)\] -- Fixed: Toolbar icons should be rendered in the "old" style and not the new rounded style (which is a work in progress) \[[#40957](https://community.openproject.com/wp/40957)\] -- Fixed: [Docker] - Gitlab integration plugin \[[#40959](https://community.openproject.com/wp/40959)\] -- Fixed: Project dropdown no longer autofocused \[[#40978](https://community.openproject.com/wp/40978)\] -- Fixed: Not possible to copy work package to another project \[[#41005](https://community.openproject.com/wp/41005)\] -- Fixed: Changed calendar styles applied to time entries component \[[#41013](https://community.openproject.com/wp/41013)\] -- Fixed: Text in "Add existing" pane needs smaller font-size \[[#41068](https://community.openproject.com/wp/41068)\] -- Fixed: Status description missing from project XLS export \[[#41071](https://community.openproject.com/wp/41071)\] -- Fixed: Toolbar: Placement and spacing of butons and date need adjusting \[[#41079](https://community.openproject.com/wp/41079)\] -- Fixed: Inconsistencies and an anomaly with borders on team planner calendar \[[#41081](https://community.openproject.com/wp/41081)\] -- Fixed: Configure boards modal has empty tab header \[[#41103](https://community.openproject.com/wp/41103)\] -- Fixed: Drag handle hover area is inconsistent / too sensitive \[[#41108](https://community.openproject.com/wp/41108)\] -- Fixed: Cards in the same assignee row disappear and change display order when changing dates using the drag handle \[[#41111](https://community.openproject.com/wp/41111)\] -- Fixed: Date indicator on the right edge of cards does not always render properly \[[#41118](https://community.openproject.com/wp/41118)\] -- Fixed: For work packages whose start/end dates are set by children, the date indicators are shown when they should not be \[[#41119](https://community.openproject.com/wp/41119)\] -- Fixed: New cards disappear behind cards in the first row \[[#41209](https://community.openproject.com/wp/41209)\] -- Fixed: Filter error message when using "Add existing" and having included unrelated projects \[[#41218](https://community.openproject.com/wp/41218)\] -- Fixed: Add Existing panel: Anomalies with the way the search bar is rendered \[[#41231](https://community.openproject.com/wp/41231)\] -- Fixed: Shortening a card to less than 1 day (reverse stretch) results in temporary disappearance \[[#41234](https://community.openproject.com/wp/41234)\] -- Fixed: Caching of filter representer link survived patch version level \[[#41237](https://community.openproject.com/wp/41237)\] -- Fixed: Multiple group memberships in project result in insufficient roles applied \[[#41255](https://community.openproject.com/wp/41255)\] -- Fixed: Include projects - Frontend refinements \[[#41263](https://community.openproject.com/wp/41263)\] -- Fixed: Existing cards not being displayed on initial load \[[#41305](https://community.openproject.com/wp/41305)\] -- Fixed: Teamplanner crashes when dropping a wp from the add existing pane \[[#41413](https://community.openproject.com/wp/41413)\] -- Fixed: Cannot select all projects in work package table \[[#41437](https://community.openproject.com/wp/41437)\] -- Fixed: Attribute help text opens when clicking ng-select dropdown \[[#41442](https://community.openproject.com/wp/41442)\] -- Fixed: API responses inconsistent between Bearer tokens and API tokens \[[#41480](https://community.openproject.com/wp/41480)\] -- Fixed: Create new task on my page not possible: Project not shown in pulldown list \[[#41533](https://community.openproject.com/wp/41533)\] -- Fixed: Include projects - Action bar has no round corners \[[#41582](https://community.openproject.com/wp/41582)\] -- Fixed: Fix capitalisation in two places (minor) in the Team Planner \[[#41647](https://community.openproject.com/wp/41647)\] -- Fixed: Comments linked to another package are not shown correctly \[[#41649](https://community.openproject.com/wp/41649)\] -- Fixed: APIv3 projects API signalling - Duplicated projects returned \[[#41673](https://community.openproject.com/wp/41673)\] -- Fixed: Include projects number is wrong moving from projects page to gantt view \[[#41680](https://community.openproject.com/wp/41680)\] -- Fixed: Toolbars in Team planner not correctly aligned \[[#41711](https://community.openproject.com/wp/41711)\] -- Fixed: Redundant heading in file section (files + attachments) \[[#41712](https://community.openproject.com/wp/41712)\] -- Fixed: Toolbar missing or cut off in work packages module on iOS \[[#41713](https://community.openproject.com/wp/41713)\] -- Fixed: Clicking on files tab scrolls up on iOS \[[#41714](https://community.openproject.com/wp/41714)\] -- Fixed: Wrong string in Team planner for Assignee \[[#41716](https://community.openproject.com/wp/41716)\] -- Fixed: Redundant and inconsistent translations strings for buttons in sidebar \[[#41717](https://community.openproject.com/wp/41717)\] -- Fixed: Filter autocompleters do not reduce the possible selections when typing \[[#41718](https://community.openproject.com/wp/41718)\] -- Fixed: Inconsistent date markers on some cards in Team planner \[[#41723](https://community.openproject.com/wp/41723)\] -- Fixed: Optimisations needed to "Add assignee" button \[[#41726](https://community.openproject.com/wp/41726)\] -- Fixed: Wiki updated notification: "Updated by" is shown to always be the "author" \[[#41728](https://community.openproject.com/wp/41728)\] -- Fixed: Cards on Team Planner jump after they are saved when multiple work packages were moved \[[#41730](https://community.openproject.com/wp/41730)\] -- Fixed: Formattable columns in project list are weirdly cut off \[[#41822](https://community.openproject.com/wp/41822)\] -- Fixed: Project export formattable columns are formatted \[[#41823](https://community.openproject.com/wp/41823)\] -- Fixed: No option to export project description \[[#41824](https://community.openproject.com/wp/41824)\] -- Fixed: Wrong German translation for "Delete" action for work packages \[[#41839](https://community.openproject.com/wp/41839)\] -- Fixed: German translation missing in German notification settings \[[#41842](https://community.openproject.com/wp/41842)\] -- Fixed: Changing host_name option in "System Settings" leads to exception \[[#41844](https://community.openproject.com/wp/41844)\] -- Fixed: No hover on button "Add assignee" in Team planner or "Create new work package" in list view \[[#41853](https://community.openproject.com/wp/41853)\] -- Fixed: Query disappearing from search and not visible \[[#41897](https://community.openproject.com/wp/41897)\] -- Fixed: booking of additional licences is not poosible \[[#41901](https://community.openproject.com/wp/41901)\] -- Fixed: Team planner - add existing - no indication on no matching result \[[#41925](https://community.openproject.com/wp/41925)\] -- Fixed: Autofocus for sign in form OpenProject missing \[[#41929](https://community.openproject.com/wp/41929)\] -- Fixed: Comment numbers are cut off on mobile \[[#41942](https://community.openproject.com/wp/41942)\] -- Fixed: Calendar widget on overview page not useful \[[#42013](https://community.openproject.com/wp/42013)\] -- Fixed: Attachments got lost from description \[[#42041](https://community.openproject.com/wp/42041)\] -- Fixed: Space added before text in check lists in work package description with every save \[[#42050](https://community.openproject.com/wp/42050)\] -- Fixed: main project dropdownlist will show only 250 projects (from 580) \[[#42058](https://community.openproject.com/wp/42058)\] -- Fixed: Row breaks in project selector for "Included projects" \[[#42062](https://community.openproject.com/wp/42062)\] -- Fixed: Different translations strings for "Included projects" and "Projects" \[[#42063](https://community.openproject.com/wp/42063)\] -- Fixed: Wrong indention for module "Team planers" in sidebar \[[#42065](https://community.openproject.com/wp/42065)\] -- Fixed: Indention for projects on root level in "Included projects" selector \[[#42066](https://community.openproject.com/wp/42066)\] -- Fixed: Tiny shift of checkboxes in the "Inlcude project" selector \[[#42068](https://community.openproject.com/wp/42068)\] -- Fixed: Search results below include projects modal \[[#42090](https://community.openproject.com/wp/42090)\] -- Fixed: Include projects - Toggle button is not rounded \[[#42171](https://community.openproject.com/wp/42171)\] +- Epic: Introduce module specific queries (e.g. for calendar, team planner and BCF module) \[[#30583](https://community.openproject.org/wp/30583)\] +- Epic: Team planner \[[#39784](https://community.openproject.org/wp/39784)\] +- Epic: Include projects filter component for work package module, calendar and team planner \[[#40330](https://community.openproject.org/wp/40330)\] +- Changed: Extend the current project status \[[#34708](https://community.openproject.org/wp/34708)\] +- Changed: Update and verify all help/docs links from application help menu and start page \[[#35029](https://community.openproject.org/wp/35029)\] +- Changed: Save different views in calendar module \[[#36322](https://community.openproject.org/wp/36322)\] +- Changed: Remove custom links to notification settings in email footer \[[#39133](https://community.openproject.org/wp/39133)\] +- Changed: Drag and drop of work packages in calendar module and team planner module \[[#39486](https://community.openproject.org/wp/39486)\] +- Changed: Left-side search pane to add existing work packages to team planner \[[#40031](https://community.openproject.org/wp/40031)\] +- Changed: Seed data for new team planner module \[[#40195](https://community.openproject.org/wp/40195)\] +- Changed: Email settings (SMTP etc.) are hard to find \[[#40215](https://community.openproject.org/wp/40215)\] +- Changed: API to CRUD links between files (i.e. Nextcloud) and work packages in OpenProject \[[#40228](https://community.openproject.org/wp/40228)\] +- Changed: What's new teaser block updated with team planner \[[#40257](https://community.openproject.org/wp/40257)\] +- Changed: Show closed work packages by default in calendar and team planner \[[#40319](https://community.openproject.org/wp/40319)\] +- Changed: Make assignee column narrower (it is is currently too wide) \[[#40532](https://community.openproject.org/wp/40532)\] +- Changed: Switch to change between one week and two weeks view \[[#40533](https://community.openproject.org/wp/40533)\] +- Changed: Multiple file storages per OP instance \[[#40536](https://community.openproject.org/wp/40536)\] +- Changed: Global roles for groups \[[#40546](https://community.openproject.org/wp/40546)\] +- Changed: Add right-click work packages context menu to the calendar/team planner \[[#40755](https://community.openproject.org/wp/40755)\] +- Changed: Add a format to display lastname and firstname without space \[[#40759](https://community.openproject.org/wp/40759)\] +- Changed: Load the first team planner when clicking on the menu item \[[#40767](https://community.openproject.org/wp/40767)\] +- Changed: Updates to the two-week view \[[#40801](https://community.openproject.org/wp/40801)\] +- Changed: Hover, Clicked and Disabled states for cards in the Add Existing pane \[[#40810](https://community.openproject.org/wp/40810)\] +- Changed: Team planner animation \[[#40856](https://community.openproject.org/wp/40856)\] +- Changed: Decrease team planner toolbar when split screen is opened \[[#40863](https://community.openproject.org/wp/40863)\] +- Changed: Make Add Existing panel narrower than is currently implemented (and make sure its shadow is not cut off) \[[#40864](https://community.openproject.org/wp/40864)\] +- Changed: Removing work packages from the team planner \[[#40883](https://community.openproject.org/wp/40883)\] +- Changed: Updated design for cards in Add Existing pane \[[#40886](https://community.openproject.org/wp/40886)\] +- Changed: Add order by name per hierarchy to projects API \[[#40930](https://community.openproject.org/wp/40930)\] +- Changed: Signaling included properties of the projects API \[[#40931](https://community.openproject.org/wp/40931)\] +- Changed: Updated placement and design of the create button in the sidebar \[[#40958](https://community.openproject.org/wp/40958)\] +- Changed: Replace work strips on the team planner calendar with full cards \[[#40962](https://community.openproject.org/wp/40962)\] +- Changed: Change scrolling behavior of team planner \[[#40981](https://community.openproject.org/wp/40981)\] +- Changed: Show "Start trial" button in EE upsale templates \[[#40990](https://community.openproject.org/wp/40990)\] +- Changed: Add team planner to onboarding tour \[[#41050](https://community.openproject.org/wp/41050)\] +- Changed: Empty team planner view needs some more love \[[#41073](https://community.openproject.org/wp/41073)\] +- Changed: The date indicators must update when dragging a card in the planner horizontally \[[#41075](https://community.openproject.org/wp/41075)\] +- Changed: When the split screen is open, allow users to also select on cards in the Add Existing pane to change the contents of the split screen \[[#41080](https://community.openproject.org/wp/41080)\] +- Changed: "Include projects": behavior specific to the Team Planner \[[#41086](https://community.openproject.org/wp/41086)\] +- Changed: New image/gif for add Existing pane in team planner \[[#41100](https://community.openproject.org/wp/41100)\] +- Changed: On closing the split screen, the previously open card should go from selected (blue) to normal state \[[#41113](https://community.openproject.org/wp/41113)\] +- Changed: Include projects - Select all sub-projects \[[#41135](https://community.openproject.org/wp/41135)\] +- Changed: Updated hover behavior for cards (to make the icons legible when they overlap with attributes) \[[#41137](https://community.openproject.org/wp/41137)\] +- Changed: Add index page to Team Planner ("Team planners") to maintain consistency with the Boards module \[[#41138](https://community.openproject.org/wp/41138)\] +- Changed: Display a loading skeleton before actual content is fully loaded \[[#41199](https://community.openproject.org/wp/41199)\] +- Changed: Include projects - Loading skeleton view \[[#41213](https://community.openproject.org/wp/41213)\] +- Changed: Include projects - Mobile dialog \[[#41224](https://community.openproject.org/wp/41224)\] +- Changed: Display a small loading indicator after each modification to avoid the user immediately making a second, conflicting modification \[[#41235](https://community.openproject.org/wp/41235)\] +- Changed: Add index page for calendar module \[[#41278](https://community.openproject.org/wp/41278)\] +- Changed: Files Tab in work package details \[[#41340](https://community.openproject.org/wp/41340)\] +- Changed: Add Basic Board to onboarding tour for Community edition. \[[#41405](https://community.openproject.org/wp/41405)\] +- Changed: Change permission for role MEMBER in default demo data \[[#41477](https://community.openproject.org/wp/41477)\] +- Changed: Publish Basic boards for Community version \[[#41511](https://community.openproject.org/wp/41511)\] +- Changed: Make existing advanced boards not accessible when you don't have an EE token any more \[[#41516](https://community.openproject.org/wp/41516)\] +- Changed: Move WP with associated FileLinks \[[#41523](https://community.openproject.org/wp/41523)\] +- Changed: Ensure deleting a project deletes all file links of all work packages of that project \[[#41525](https://community.openproject.org/wp/41525)\] +- Changed: Regular LDAP users synchronization of all active users \[[#41677](https://community.openproject.org/wp/41677)\] +- Changed: Add feature flag to activate/deactivate file storages module \[[#41690](https://community.openproject.org/wp/41690)\] +- Changed: Heading not correctly aligned in Team planner \[[#41710](https://community.openproject.org/wp/41710)\] +- Changed: Seed (migrate) team planner permissions \[[#41899](https://community.openproject.org/wp/41899)\] +- Changed: Add packaged installation support for Ubuntu 22.04 \[[#42069](https://community.openproject.org/wp/42069)\] +- Fixed: Missing translation in custom fields administration \[[#38057](https://community.openproject.org/wp/38057)\] +- Fixed: [Navigation] Breadcrumbs changes from "Relations" to "Activity" \[[#38531](https://community.openproject.org/wp/38531)\] +- Fixed: Minor spelling change for work package filter \[[#38533](https://community.openproject.org/wp/38533)\] +- Fixed: Mobile: When clicking on WP tabs ("Activity", "Watchers", ...) jump to top of page \[[#39848](https://community.openproject.org/wp/39848)\] +- Fixed: Internal error when trying to set milestone as parent wp \[[#39856](https://community.openproject.org/wp/39856)\] +- Fixed: Multiple indexes found on journal columns when migrating from 11.4.1 to 12.0.1 \[[#40028](https://community.openproject.org/wp/40028)\] +- Fixed: Tab info does not update when closing the split screen \[[#40033](https://community.openproject.org/wp/40033)\] +- Fixed: Various E-Mail clients don't support embedded images \[[#40122](https://community.openproject.org/wp/40122)\] +- Fixed: Save query modal does not submit on enter \[[#40134](https://community.openproject.org/wp/40134)\] +- Fixed: "Add Viewpoint Button" is missing after switching from table view to model & cards \[[#40186](https://community.openproject.org/wp/40186)\] +- Fixed: Check and update the notifications API documentation \[[#40196](https://community.openproject.org/wp/40196)\] +- Fixed: Opening viewpoints from gallery does not work on mobile \[[#40267](https://community.openproject.org/wp/40267)\] +- Fixed: Empty state is visible during team planner query reload \[[#40323](https://community.openproject.org/wp/40323)\] +- Fixed: Tooltip on team planner and calendar doesn't close sometimes \[[#40325](https://community.openproject.org/wp/40325)\] +- Fixed: OpenAPI Specs not OpenAPI 3.0 compatible \[[#40397](https://community.openproject.org/wp/40397)\] +- Fixed: Team planner not correctly redrawn after closing a split view (empty areas) \[[#40531](https://community.openproject.org/wp/40531)\] +- Fixed: Today column is not highlighted in the team planner \[[#40859](https://community.openproject.org/wp/40859)\] +- Fixed: An empty team planner has visual anomalies (extra lines, wrong color) \[[#40860](https://community.openproject.org/wp/40860)\] +- Fixed: Wrong progress value in parent task \[[#40867](https://community.openproject.org/wp/40867)\] +- Fixed: Error 500 when creating a new OpenID provider \[[#40893](https://community.openproject.org/wp/40893)\] +- Fixed: Users can't select public template projects in new project dialog \[[#40918](https://community.openproject.org/wp/40918)\] +- Fixed: Meeting Time in iCalendar is wrong \[[#40941](https://community.openproject.org/wp/40941)\] +- Fixed: Toolbar icons should be rendered in the "old" style and not the new rounded style (which is a work in progress) \[[#40957](https://community.openproject.org/wp/40957)\] +- Fixed: [Docker] - Gitlab integration plugin \[[#40959](https://community.openproject.org/wp/40959)\] +- Fixed: Project dropdown no longer autofocused \[[#40978](https://community.openproject.org/wp/40978)\] +- Fixed: Not possible to copy work package to another project \[[#41005](https://community.openproject.org/wp/41005)\] +- Fixed: Changed calendar styles applied to time entries component \[[#41013](https://community.openproject.org/wp/41013)\] +- Fixed: Text in "Add existing" pane needs smaller font-size \[[#41068](https://community.openproject.org/wp/41068)\] +- Fixed: Status description missing from project XLS export \[[#41071](https://community.openproject.org/wp/41071)\] +- Fixed: Toolbar: Placement and spacing of buttons and date need adjusting \[[#41079](https://community.openproject.org/wp/41079)\] +- Fixed: Inconsistencies and an anomaly with borders on team planner calendar \[[#41081](https://community.openproject.org/wp/41081)\] +- Fixed: Configure boards modal has empty tab header \[[#41103](https://community.openproject.org/wp/41103)\] +- Fixed: Drag handle hover area is inconsistent / too sensitive \[[#41108](https://community.openproject.org/wp/41108)\] +- Fixed: Cards in the same assignee row disappear and change display order when changing dates using the drag handle \[[#41111](https://community.openproject.org/wp/41111)\] +- Fixed: Date indicator on the right edge of cards does not always render properly \[[#41118](https://community.openproject.org/wp/41118)\] +- Fixed: For work packages whose start/end dates are set by children, the date indicators are shown when they should not be \[[#41119](https://community.openproject.org/wp/41119)\] +- Fixed: New cards disappear behind cards in the first row \[[#41209](https://community.openproject.org/wp/41209)\] +- Fixed: Filter error message when using "Add existing" and having included unrelated projects \[[#41218](https://community.openproject.org/wp/41218)\] +- Fixed: Add Existing panel: Anomalies with the way the search bar is rendered \[[#41231](https://community.openproject.org/wp/41231)\] +- Fixed: Shortening a card to less than 1 day (reverse stretch) results in temporary disappearance \[[#41234](https://community.openproject.org/wp/41234)\] +- Fixed: Caching of filter representer link survived patch version level \[[#41237](https://community.openproject.org/wp/41237)\] +- Fixed: Multiple group memberships in project result in insufficient roles applied \[[#41255](https://community.openproject.org/wp/41255)\] +- Fixed: Include projects - Frontend refinements \[[#41263](https://community.openproject.org/wp/41263)\] +- Fixed: Existing cards not being displayed on initial load \[[#41305](https://community.openproject.org/wp/41305)\] +- Fixed: Teamplanner crashes when dropping a wp from the add existing pane \[[#41413](https://community.openproject.org/wp/41413)\] +- Fixed: Cannot select all projects in work package table \[[#41437](https://community.openproject.org/wp/41437)\] +- Fixed: Attribute help text opens when clicking ng-select dropdown \[[#41442](https://community.openproject.org/wp/41442)\] +- Fixed: API responses inconsistent between Bearer tokens and API tokens \[[#41480](https://community.openproject.org/wp/41480)\] +- Fixed: Create new task on my page not possible: Project not shown in pulldown list \[[#41533](https://community.openproject.org/wp/41533)\] +- Fixed: Include projects - Action bar has no round corners \[[#41582](https://community.openproject.org/wp/41582)\] +- Fixed: Fix capitalization in two places (minor) in the Team Planner \[[#41647](https://community.openproject.org/wp/41647)\] +- Fixed: Comments linked to another package are not shown correctly \[[#41649](https://community.openproject.org/wp/41649)\] +- Fixed: APIv3 projects API signalling - Duplicated projects returned \[[#41673](https://community.openproject.org/wp/41673)\] +- Fixed: Include projects number is wrong moving from projects page to gantt view \[[#41680](https://community.openproject.org/wp/41680)\] +- Fixed: Toolbars in Team planner not correctly aligned \[[#41711](https://community.openproject.org/wp/41711)\] +- Fixed: Redundant heading in file section (files + attachments) \[[#41712](https://community.openproject.org/wp/41712)\] +- Fixed: Toolbar missing or cut off in work packages module on iOS \[[#41713](https://community.openproject.org/wp/41713)\] +- Fixed: Clicking on files tab scrolls up on iOS \[[#41714](https://community.openproject.org/wp/41714)\] +- Fixed: Wrong string in Team planner for Assignee \[[#41716](https://community.openproject.org/wp/41716)\] +- Fixed: Redundant and inconsistent translations strings for buttons in sidebar \[[#41717](https://community.openproject.org/wp/41717)\] +- Fixed: Filter autocompleters do not reduce the possible selections when typing \[[#41718](https://community.openproject.org/wp/41718)\] +- Fixed: Inconsistent date markers on some cards in Team planner \[[#41723](https://community.openproject.org/wp/41723)\] +- Fixed: Optimizations needed to "Add assignee" button \[[#41726](https://community.openproject.org/wp/41726)\] +- Fixed: Wiki updated notification: "Updated by" is shown to always be the "author" \[[#41728](https://community.openproject.org/wp/41728)\] +- Fixed: Cards on Team Planner jump after they are saved when multiple work packages were moved \[[#41730](https://community.openproject.org/wp/41730)\] +- Fixed: Formattable columns in project list are weirdly cut off \[[#41822](https://community.openproject.org/wp/41822)\] +- Fixed: Project export formattable columns are formatted \[[#41823](https://community.openproject.org/wp/41823)\] +- Fixed: No option to export project description \[[#41824](https://community.openproject.org/wp/41824)\] +- Fixed: Wrong German translation for "Delete" action for work packages \[[#41839](https://community.openproject.org/wp/41839)\] +- Fixed: German translation missing in German notification settings \[[#41842](https://community.openproject.org/wp/41842)\] +- Fixed: Changing host_name option in "System Settings" leads to exception \[[#41844](https://community.openproject.org/wp/41844)\] +- Fixed: No hover on button "Add assignee" in Team planner or "Create new work package" in list view \[[#41853](https://community.openproject.org/wp/41853)\] +- Fixed: Query disappearing from search and not visible \[[#41897](https://community.openproject.org/wp/41897)\] +- Fixed: booking of additional licenses is not possible \[[#41901](https://community.openproject.org/wp/41901)\] +- Fixed: Team planner - add existing - no indication on no matching result \[[#41925](https://community.openproject.org/wp/41925)\] +- Fixed: Autofocus for sign in form OpenProject missing \[[#41929](https://community.openproject.org/wp/41929)\] +- Fixed: Comment numbers are cut off on mobile \[[#41942](https://community.openproject.org/wp/41942)\] +- Fixed: Calendar widget on overview page not useful \[[#42013](https://community.openproject.org/wp/42013)\] +- Fixed: Attachments got lost from description \[[#42041](https://community.openproject.org/wp/42041)\] +- Fixed: Space added before text in check lists in work package description with every save \[[#42050](https://community.openproject.org/wp/42050)\] +- Fixed: main project dropdown list will show only 250 projects (from 580) \[[#42058](https://community.openproject.org/wp/42058)\] +- Fixed: Row breaks in project selector for "Included projects" \[[#42062](https://community.openproject.org/wp/42062)\] +- Fixed: Different translations strings for "Included projects" and "Projects" \[[#42063](https://community.openproject.org/wp/42063)\] +- Fixed: Wrong indention for module "Team planers" in sidebar \[[#42065](https://community.openproject.org/wp/42065)\] +- Fixed: Indention for projects on root level in "Included projects" selector \[[#42066](https://community.openproject.org/wp/42066)\] +- Fixed: Tiny shift of checkboxes in the "Include project" selector \[[#42068](https://community.openproject.org/wp/42068)\] +- Fixed: Search results below include projects modal \[[#42090](https://community.openproject.org/wp/42090)\] +- Fixed: Include projects - Toggle button is not rounded \[[#42171](https://community.openproject.org/wp/42171)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-1-1/README.md b/docs/release-notes/12/12-1-1/README.md index f3ef4ba60415..76aeb23b01c5 100644 --- a/docs/release-notes/12/12-1-1/README.md +++ b/docs/release-notes/12/12-1-1/README.md @@ -10,25 +10,25 @@ release_date: 2022-05-04 Release date: 2022-05-04 -We released [OpenProject 12.1.1](https://community.openproject.com/versions/1548). +We released [OpenProject 12.1.1](https://community.openproject.org/versions/1548). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Click on Include projects filter is flickering \[[#42196](https://community.openproject.com/wp/42196)\] -- Fixed: Unprefixed E-Mail settings ignored \[[#42209](https://community.openproject.com/wp/42209)\] -- Fixed: Crowdin downloaded translation strings do not match branch \[[#42215](https://community.openproject.com/wp/42215)\] -- Fixed: auth_source_sso configuration not overwritable via ENV \[[#42216](https://community.openproject.com/wp/42216)\] -- Fixed: Problems by using the timesheet \[[#42217](https://community.openproject.com/wp/42217)\] -- Fixed: Zero added to previous rates when adding a rate in the rate history with Spanish language selected \[[#42219](https://community.openproject.com/wp/42219)\] -- Fixed: Inconsistent scrollbars in Include project modal \[[#42225](https://community.openproject.com/wp/42225)\] -- Fixed: Psych::DisallowedClass: Tried to load unspecified class: URI::Generic while upgrading from 12.01 to 12.10 \[[#42226](https://community.openproject.com/wp/42226)\] -- Fixed: regression: log time - search for work package not working anymore \[[#42229](https://community.openproject.com/wp/42229)\] -- Fixed: Add project settings looks broken in notification settings \[[#42237](https://community.openproject.com/wp/42237)\] -- Fixed: translation of "today" is missing - german \[[#42242](https://community.openproject.com/wp/42242)\] -- Fixed: IFC conversion fails (libhostfxr.so not found) \[[#42245](https://community.openproject.com/wp/42245)\] -- Fixed: Roles cannot be edited with french language \[[#42246](https://community.openproject.com/wp/42246)\] +- Fixed: Click on Include projects filter is flickering \[[#42196](https://community.openproject.org/wp/42196)\] +- Fixed: Unprefixed E-Mail settings ignored \[[#42209](https://community.openproject.org/wp/42209)\] +- Fixed: Crowdin downloaded translation strings do not match branch \[[#42215](https://community.openproject.org/wp/42215)\] +- Fixed: auth_source_sso configuration not overwritable via ENV \[[#42216](https://community.openproject.org/wp/42216)\] +- Fixed: Problems by using the timesheet \[[#42217](https://community.openproject.org/wp/42217)\] +- Fixed: Zero added to previous rates when adding a rate in the rate history with Spanish language selected \[[#42219](https://community.openproject.org/wp/42219)\] +- Fixed: Inconsistent scrollbars in Include project modal \[[#42225](https://community.openproject.org/wp/42225)\] +- Fixed: Psych::DisallowedClass: Tried to load unspecified class: URI::Generic while upgrading from 12.01 to 12.10 \[[#42226](https://community.openproject.org/wp/42226)\] +- Fixed: regression: log time - search for work package not working anymore \[[#42229](https://community.openproject.org/wp/42229)\] +- Fixed: Add project settings looks broken in notification settings \[[#42237](https://community.openproject.org/wp/42237)\] +- Fixed: translation of "today" is missing - german \[[#42242](https://community.openproject.org/wp/42242)\] +- Fixed: IFC conversion fails (libhostfxr.so not found) \[[#42245](https://community.openproject.org/wp/42245)\] +- Fixed: Roles cannot be edited with french language \[[#42246](https://community.openproject.org/wp/42246)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-1-2/README.md b/docs/release-notes/12/12-1-2/README.md index bec6380a1f9a..af5a431c1a5e 100644 --- a/docs/release-notes/12/12-1-2/README.md +++ b/docs/release-notes/12/12-1-2/README.md @@ -10,21 +10,21 @@ release_date: 2022-05-11 Release date: 2022-05-11 -We released [OpenProject 12.1.2](https://community.openproject.com/versions/1549). +We released [OpenProject 12.1.2](https://community.openproject.org/versions/1549). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Audio of OpenProject video is played when opening the export project modal \[[#41924](https://community.openproject.com/wp/41924)\] -- Fixed: Wrong row break in Include Project modal for German \[[#42224](https://community.openproject.com/wp/42224)\] -- Fixed: Work package views created in projects are shown on global work package page \[[#42249](https://community.openproject.com/wp/42249)\] -- Fixed: Search field does not open on mobile \[[#42250](https://community.openproject.com/wp/42250)\] -- Fixed: Audio plays when I want to export a wiki page \[[#42252](https://community.openproject.com/wp/42252)\] -- Fixed: Project filter is reset to "Include all sub-projects" when saving the view \[[#42277](https://community.openproject.com/wp/42277)\] -- Fixed: Global Basic Auth not working anymore \[[#42284](https://community.openproject.com/wp/42284)\] -- Fixed: SMTP setting issues in packager installation \[[#42299](https://community.openproject.com/wp/42299)\] -- Fixed: LDAP User Synchronisation doesn't work \[[#42312](https://community.openproject.com/wp/42312)\] +- Fixed: Audio of OpenProject video is played when opening the export project modal \[[#41924](https://community.openproject.org/wp/41924)\] +- Fixed: Wrong row break in Include Project modal for German \[[#42224](https://community.openproject.org/wp/42224)\] +- Fixed: Work package views created in projects are shown on global work package page \[[#42249](https://community.openproject.org/wp/42249)\] +- Fixed: Search field does not open on mobile \[[#42250](https://community.openproject.org/wp/42250)\] +- Fixed: Audio plays when I want to export a wiki page \[[#42252](https://community.openproject.org/wp/42252)\] +- Fixed: Project filter is reset to "Include all sub-projects" when saving the view \[[#42277](https://community.openproject.org/wp/42277)\] +- Fixed: Global Basic Auth not working anymore \[[#42284](https://community.openproject.org/wp/42284)\] +- Fixed: SMTP setting issues in packager installation \[[#42299](https://community.openproject.org/wp/42299)\] +- Fixed: LDAP User Synchronization doesn't work \[[#42312](https://community.openproject.org/wp/42312)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-1-3/README.md b/docs/release-notes/12/12-1-3/README.md index f33d962648db..574aa5062534 100644 --- a/docs/release-notes/12/12-1-3/README.md +++ b/docs/release-notes/12/12-1-3/README.md @@ -10,7 +10,7 @@ release_date: 2022-05-12 Release date: 2022-05-12 -We released [OpenProject 12.1.3](https://community.openproject.com/versions/1550). +We released [OpenProject 12.1.3](https://community.openproject.org/versions/1550). The release contains several bug fixes and we recommend updating to the newest version. ## Settings regression @@ -27,9 +27,9 @@ To read how to do this, please see [reporting a bug in OpenProject](../../../dev #### Bug fixes and changes -- Fixed: "openproject configure" reports errors \[[#42349](https://community.openproject.com/wp/42349)\] -- Fixed: Scheduled LDAP User Synchronisation doesn't work \[[#42351](https://community.openproject.com/wp/42351)\] -- Fixed: [Packager] configure fails when sendmail was configured for emails \[[#42352](https://community.openproject.com/wp/42352)\] +- Fixed: "openproject configure" reports errors \[[#42349](https://community.openproject.org/wp/42349)\] +- Fixed: Scheduled LDAP User Synchronization doesn't work \[[#42351](https://community.openproject.org/wp/42351)\] +- Fixed: [Packager] configure fails when sendmail was configured for emails \[[#42352](https://community.openproject.org/wp/42352)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-1-4/README.md b/docs/release-notes/12/12-1-4/README.md index f337e9e6f8b5..3d12c67e3553 100644 --- a/docs/release-notes/12/12-1-4/README.md +++ b/docs/release-notes/12/12-1-4/README.md @@ -10,7 +10,7 @@ release_date: 2022-05-17 Release date: 2022-05-17 -We released [OpenProject 12.1.4](https://community.openproject.com/versions/1551). +We released [OpenProject 12.1.4](https://community.openproject.org/versions/1551). The release contains several bug fixes and we recommend updating to the newest version. **Centos 7 support** @@ -19,16 +19,16 @@ This version restores support for OpenProject packages on centos 7. A PostgreSQL #### Bug fixes and changes -- Fixed: Removal of the new SPOT buttons because of consistency \[[#42251](https://community.openproject.com/wp/42251)\] -- Fixed: Falsche Projektzuordnung im Teamplaner \[[#42271](https://community.openproject.com/wp/42271)\] -- Fixed: Create form crashes when inviting placeholder user into "assigned to" or "responsible" \[[#42348](https://community.openproject.com/wp/42348)\] -- Fixed: openproject configure fails Ubuntu 20.04 \[[#42375](https://community.openproject.com/wp/42375)\] -- Fixed: Project clone with global basic auth not working \[[#42377](https://community.openproject.com/wp/42377)\] -- Fixed: Project include modal doesn't close when clicking the create button \[[#42380](https://community.openproject.com/wp/42380)\] -- Fixed: Installation packages broken for centos 7 \[[#42384](https://community.openproject.com/wp/42384)\] -- Fixed: starttls_auto forced to true since Ruby 3 upgrade \[[#42385](https://community.openproject.com/wp/42385)\] -- Fixed: LDAP user synchronization - administrator flag is overwritten \[[#42396](https://community.openproject.com/wp/42396)\] -- Fixed: Project filter is not applied in embedded table \[[#42397](https://community.openproject.com/wp/42397)\] +- Fixed: Removal of the new SPOT buttons because of consistency \[[#42251](https://community.openproject.org/wp/42251)\] +- Fixed: Incorrect project assignment in the team planner \[[#42271](https://community.openproject.org/wp/42271)\] +- Fixed: Create form crashes when inviting placeholder user into "assigned to" or "responsible" \[[#42348](https://community.openproject.org/wp/42348)\] +- Fixed: openproject configure fails Ubuntu 20.04 \[[#42375](https://community.openproject.org/wp/42375)\] +- Fixed: Project clone with global basic auth not working \[[#42377](https://community.openproject.org/wp/42377)\] +- Fixed: Project include modal doesn't close when clicking the create button \[[#42380](https://community.openproject.org/wp/42380)\] +- Fixed: Installation packages broken for centos 7 \[[#42384](https://community.openproject.org/wp/42384)\] +- Fixed: starttls_auto forced to true since Ruby 3 upgrade \[[#42385](https://community.openproject.org/wp/42385)\] +- Fixed: LDAP user synchronization - administrator flag is overwritten \[[#42396](https://community.openproject.org/wp/42396)\] +- Fixed: Project filter is not applied in embedded table \[[#42397](https://community.openproject.org/wp/42397)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-1-5/README.md b/docs/release-notes/12/12-1-5/README.md index 322ef95181f9..72c35d354a46 100644 --- a/docs/release-notes/12/12-1-5/README.md +++ b/docs/release-notes/12/12-1-5/README.md @@ -10,26 +10,26 @@ release_date: 2022-06-08 Release date: 2022-06-08 -We released [OpenProject 12.1.5](https://community.openproject.com/versions/1552). +We released [OpenProject 12.1.5](https://community.openproject.org/versions/1552). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Order of work packages in XLS, PDF, CSV export differs from order in OpenProject \[[#34971](https://community.openproject.com/wp/34971)\] -- Fixed: API notification error on work package query page \[[#40506](https://community.openproject.com/wp/40506)\] -- Fixed: Custom fields in project settings not sorted \[[#41074](https://community.openproject.com/wp/41074)\] -- Fixed: openproject configure removes configuration file(s) \[[#41292](https://community.openproject.com/wp/41292)\] -- Fixed: Special Characters in Comments not "translated" in Activity View \[[#42194](https://community.openproject.com/wp/42194)\] -- Fixed: Problems by using the timesheet \[[#42217](https://community.openproject.com/wp/42217)\] -- Fixed: "hostname ... does not match the server certificate" after Update to 12.1.1 \[[#42304](https://community.openproject.com/wp/42304)\] -- Fixed: Form configuration is accessible without EE token \[[#42398](https://community.openproject.com/wp/42398)\] -- Fixed: "Project" is not translated in invite user modal \[[#42479](https://community.openproject.com/wp/42479)\] -- Fixed: Provide a way to disable user status changes from LDAP user sync \[[#42485](https://community.openproject.com/wp/42485)\] -- Fixed: Permission to avoid editing project overview page not working \[[#42732](https://community.openproject.com/wp/42732)\] -- Fixed: SSO logout URL is ignored since upgrade to OpenProject 12 \[[#42735](https://community.openproject.com/wp/42735)\] -- Fixed: Dutch translation additional project status on the project overview page \[[#42754](https://community.openproject.com/wp/42754)\] -- Fixed: OpenID Connect providers can no longer be set via env \[[#42810](https://community.openproject.com/wp/42810)\] +- Fixed: Order of work packages in XLS, PDF, CSV export differs from order in OpenProject \[[#34971](https://community.openproject.org/wp/34971)\] +- Fixed: API notification error on work package query page \[[#40506](https://community.openproject.org/wp/40506)\] +- Fixed: Custom fields in project settings not sorted \[[#41074](https://community.openproject.org/wp/41074)\] +- Fixed: openproject configure removes configuration file(s) \[[#41292](https://community.openproject.org/wp/41292)\] +- Fixed: Special Characters in Comments not "translated" in Activity View \[[#42194](https://community.openproject.org/wp/42194)\] +- Fixed: Problems by using the timesheet \[[#42217](https://community.openproject.org/wp/42217)\] +- Fixed: "hostname ... does not match the server certificate" after Update to 12.1.1 \[[#42304](https://community.openproject.org/wp/42304)\] +- Fixed: Form configuration is accessible without EE token \[[#42398](https://community.openproject.org/wp/42398)\] +- Fixed: "Project" is not translated in invite user modal \[[#42479](https://community.openproject.org/wp/42479)\] +- Fixed: Provide a way to disable user status changes from LDAP user sync \[[#42485](https://community.openproject.org/wp/42485)\] +- Fixed: Permission to avoid editing project overview page not working \[[#42732](https://community.openproject.org/wp/42732)\] +- Fixed: SSO logout URL is ignored since upgrade to OpenProject 12 \[[#42735](https://community.openproject.org/wp/42735)\] +- Fixed: Dutch translation additional project status on the project overview page \[[#42754](https://community.openproject.org/wp/42754)\] +- Fixed: OpenID Connect providers can no longer be set via env \[[#42810](https://community.openproject.org/wp/42810)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-1-6/README.md b/docs/release-notes/12/12-1-6/README.md index 358a64a02bd0..0763a848636c 100644 --- a/docs/release-notes/12/12-1-6/README.md +++ b/docs/release-notes/12/12-1-6/README.md @@ -10,20 +10,20 @@ release_date: 2022-07-12 Release date: 2022-07-12 -We released [OpenProject 12.1.6](https://community.openproject.com/versions/1586). +We released [OpenProject 12.1.6](https://community.openproject.org/versions/1586). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: EE Trial creation not possible from form configuration \[[#42806](https://community.openproject.com/wp/42806)\] -- Fixed: Deleting a user only locks the user \[[#42882](https://community.openproject.com/wp/42882)\] -- Fixed: Filtering of work packages does not work any longer by ID \[[#42883](https://community.openproject.com/wp/42883)\] -- Fixed: Danger zone: Spaces are collapsed into one in the expected value \[[#42886](https://community.openproject.com/wp/42886)\] -- Fixed: Session authentication with warden not triggered \[[#42949](https://community.openproject.com/wp/42949)\] -- Fixed: Invalid SMTP configuration breaks project copy \[[#42962](https://community.openproject.com/wp/42962)\] -- Fixed: Include projects mistake \[[#43034](https://community.openproject.com/wp/43034)\] -- Fixed: dots of Ü are missing in notification list \[[#43086](https://community.openproject.com/wp/43086)\] +- Fixed: EE Trial creation not possible from form configuration \[[#42806](https://community.openproject.org/wp/42806)\] +- Fixed: Deleting a user only locks the user \[[#42882](https://community.openproject.org/wp/42882)\] +- Fixed: Filtering of work packages does not work any longer by ID \[[#42883](https://community.openproject.org/wp/42883)\] +- Fixed: Danger zone: Spaces are collapsed into one in the expected value \[[#42886](https://community.openproject.org/wp/42886)\] +- Fixed: Session authentication with warden not triggered \[[#42949](https://community.openproject.org/wp/42949)\] +- Fixed: Invalid SMTP configuration breaks project copy \[[#42962](https://community.openproject.org/wp/42962)\] +- Fixed: Include projects mistake \[[#43034](https://community.openproject.org/wp/43034)\] +- Fixed: dots of Ü are missing in notification list \[[#43086](https://community.openproject.org/wp/43086)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-2-0/README.md b/docs/release-notes/12/12-2-0/README.md index e004252c82be..ead3cc3aa554 100644 --- a/docs/release-notes/12/12-2-0/README.md +++ b/docs/release-notes/12/12-2-0/README.md @@ -10,11 +10,11 @@ release_date: 2022-08-15 Release date: 2022-08-15 -We have now released [OpenProject 12.2.0](https://community.openproject.com/versions/1494). +We have now released [OpenProject 12.2.0](https://community.openproject.org/versions/1494). This new release brings the long-awaited **Nextcloud integration**. No more spending hours searching for the right version of the right file! With OpenProject 12.2, you can easily find your project-related files (stored in Nextcloud) directly from the relevant work packages and always have the correct version at your fingertips. Data sovereignty remains a strong common ground between Nextcloud and OpenProject and this integration strengthens our collaboration while improving the productivity of our users. -Addtionally, this release introduces **improvements to the date picker**, the possibility to **log time for other users** and mark work packages with notifications as read outside of notification center. +Additionally, this release introduces **improvements to the date picker**, the possibility to **log time for other users** and mark work packages with notifications as read outside of notification center. As always, this release also contains many more improvements and bug fixes. We recommend updating to the newest version as soon as possible. @@ -84,93 +84,93 @@ For more information, please see the respective installation pages: ## List of all bug fixes and changes -- Changed: Log time for other users \[[#21754](https://community.openproject.com/wp/21754)\] -- Changed: Send out an email reply if an incoming email could not be processed correctly \[[#35823](https://community.openproject.com/wp/35823)\] -- Changed: Make the empty notification inbox nicer \[[#40148](https://community.openproject.com/wp/40148)\] -- Changed: Show the project hierarchy in the project selector \[[#40286](https://community.openproject.com/wp/40286)\] -- Changed: OAuth settings of Nextcloud in OpenProject \[[#40375](https://community.openproject.com/wp/40375)\] -- Changed: Unify Enterprise edition pages \[[#40774](https://community.openproject.com/wp/40774)\] -- Changed: Keep cached file data up to date \[[#40892](https://community.openproject.com/wp/40892)\] -- Changed: Apply style changes to new date picker \[[#41814](https://community.openproject.com/wp/41814)\] -- Changed: List file links in Files tab \[[#41905](https://community.openproject.com/wp/41905)\] -- Changed: Navigation bar project selection \[[#41948](https://community.openproject.com/wp/41948)\] -- Changed: Date picker modal (without duration and non-working days) \[[#42047](https://community.openproject.com/wp/42047)\] -- Changed: Add packaged installation support for Ubuntu 22.04 \[[#42069](https://community.openproject.com/wp/42069)\] -- Changed: Show banner information in new date picker \[[#42184](https://community.openproject.com/wp/42184)\] -- Changed: Change date selection logic in new date picker \[[#42185](https://community.openproject.com/wp/42185)\] -- Changed: Link to digital accessiblity statement from ADDITIONAL RESOURCES \[[#42298](https://community.openproject.com/wp/42298)\] -- Changed: New attachments style on the work package creation form \[[#42369](https://community.openproject.com/wp/42369)\] -- Changed: Enable feature flags by default in the development environment \[[#42414](https://community.openproject.com/wp/42414)\] -- Changed: Enable feature flag for storages module on pull preview \[[#42628](https://community.openproject.com/wp/42628)\] -- Changed: Map available icons in the files list to relevant file types (in attachments/Nextcloud links) \[[#42884](https://community.openproject.com/wp/42884)\] -- Changed: Include work package for which relations are shown when following the "show relations" link \[[#42898](https://community.openproject.com/wp/42898)\] -- Changed: Access project dropdown entries via arrow keys \[[#43118](https://community.openproject.com/wp/43118)\] -- Changed: Show alert when storage is not added to any project \[[#43185](https://community.openproject.com/wp/43185)\] -- Changed: Update NEW FEATURES teaser block on application start page \[[#43485](https://community.openproject.com/wp/43485)\] -- Changed: Persist OpenProject notifications to avoid loss of information \[[#43518](https://community.openproject.com/wp/43518)\] -- Fixed: Circular dependency can be created \[[#34928](https://community.openproject.com/wp/34928)\] -- Fixed: Sorting via "projects" doesn't work \[[#37149](https://community.openproject.com/wp/37149)\] -- Fixed: Quick-add menu not showing on smaller screens \[[#37539](https://community.openproject.com/wp/37539)\] -- Fixed: Default status is shown multiple times in new board \[[#40858](https://community.openproject.com/wp/40858)\] -- Fixed: "expected at least one error" - Work package errors in dependent work packages not displayed \[[#40921](https://community.openproject.com/wp/40921)\] -- Fixed: Openproject docker installation uses port 3000 as the outward-facing port but documentation says 8080 \[[#41287](https://community.openproject.com/wp/41287)\] -- Fixed: Deleted users are not properly anonymized in tagged messages \[[#41499](https://community.openproject.com/wp/41499)\] -- Fixed: Cannot inline-create a work package on views that filter by WP ID \[[#41667](https://community.openproject.com/wp/41667)\] -- Fixed: In team planner and calendar, the sidebar should not use the word "views" \[[#41830](https://community.openproject.com/wp/41830)\] -- Fixed: Distances in work package details tabs inconsistent \[[#41845](https://community.openproject.com/wp/41845)\] -- Fixed: Blank Email reminders page when creating account manually \[[#41851](https://community.openproject.com/wp/41851)\] -- Fixed: Cannot add attachment to existing comment \[[#41940](https://community.openproject.com/wp/41940)\] -- Fixed: Closed cards in the team planner behave strangely \[[#42413](https://community.openproject.com/wp/42413)\] -- Fixed: Project appearing twice in Dropdown List if Project Member has two or more roles \[[#42477](https://community.openproject.com/wp/42477)\] -- Fixed: Date picker gets cut when there is no scroll \[[#42748](https://community.openproject.com/wp/42748)\] -- Fixed: Packager builds failing since gem bump \[[#42871](https://community.openproject.com/wp/42871)\] -- Fixed: Custom action button in combination with parallel changes leads to conflicting modification error \[[#42878](https://community.openproject.com/wp/42878)\] -- Fixed: Attachments are assigned to the wrong Work Package \[[#42933](https://community.openproject.com/wp/42933)\] -- Fixed: Navigation Link Not Working \[[#42984](https://community.openproject.com/wp/42984)\] -- Fixed: Unable to create child work package \[[#42988](https://community.openproject.com/wp/42988)\] -- Fixed: Size of dropdowns in work-package list too small especially for project hierarchy \[[#43083](https://community.openproject.com/wp/43083)\] -- Fixed: Internal server error when navigating to the work package module (page size) \[[#43120](https://community.openproject.com/wp/43120)\] -- Fixed: webhook is not working \[[#43129](https://community.openproject.com/wp/43129)\] -- Fixed: Split screen persistent with empty state switching toggle from All to Unread \[[#43146](https://community.openproject.com/wp/43146)\] -- Fixed: Missing plural in user settings -> access tokens \[[#43151](https://community.openproject.com/wp/43151)\] -- Fixed: Fix storage admin breadcrumbs \[[#43153](https://community.openproject.com/wp/43153)\] -- Fixed: Two English language \[[#43192](https://community.openproject.com/wp/43192)\] -- Fixed: Remove OAuth cookie after successful authorization against Nextcloud \[[#43193](https://community.openproject.com/wp/43193)\] -- Fixed: Project export confusingly uses "Work packages export limit" setting \[[#43202](https://community.openproject.com/wp/43202)\] -- Fixed: Mobile: The right margin for the files list is not correct \[[#43207](https://community.openproject.com/wp/43207)\] -- Fixed: Double click to open work packages in the Team Planner \[[#43222](https://community.openproject.com/wp/43222)\] -- Fixed: Able to set a follower starting before its predecessor \[[#43223](https://community.openproject.com/wp/43223)\] -- Fixed: Migration::MigrationUtils::PermissionAdder.add not idempotent \[[#43231](https://community.openproject.com/wp/43231)\] -- Fixed: imap ssl settings are evaluated as booleans when they are strings \[[#43237](https://community.openproject.com/wp/43237)\] -- Fixed: Work Package Releation entry not styling type properly \[[#43239](https://community.openproject.com/wp/43239)\] -- Fixed: Work packages in Gantt chart in light grey hard to see \[[#43240](https://community.openproject.com/wp/43240)\] -- Fixed: Work package types with colour white are not visible in emails \[[#43247](https://community.openproject.com/wp/43247)\] -- Fixed: Can not find users with the user creation/invitation form \[[#43257](https://community.openproject.com/wp/43257)\] -- Fixed: The list style in the "Nextcloud" section is not correct \[[#43259](https://community.openproject.com/wp/43259)\] -- Fixed: Remove hover effect on files list when there is a connection error to Nextcloud \[[#43260](https://community.openproject.com/wp/43260)\] -- Fixed: The space between the form and the buttons on the 2nd and 3rd step of Nextcloud OAuth settings is not correct \[[#43263](https://community.openproject.com/wp/43263)\] -- Fixed: Can not access the main actions on work package on mobile from the details view \[[#43296](https://community.openproject.com/wp/43296)\] -- Fixed: Mobile: The right margin for activity comments is not correct \[[#43304](https://community.openproject.com/wp/43304)\] -- Fixed: Wrong positioning of workers in notification \[[#43306](https://community.openproject.com/wp/43306)\] -- Fixed: (Mobile) Clicking on notification row does not scroll to activity \[[#43311](https://community.openproject.com/wp/43311)\] -- Fixed: Project name overflows header on mobile \[[#43314](https://community.openproject.com/wp/43314)\] -- Fixed: Info boxes in the Administration are not shown correctly \[[#43320](https://community.openproject.com/wp/43320)\] -- Fixed: Nextcloud: Validation error in New storage - Host field \[[#43323](https://community.openproject.com/wp/43323)\] -- Fixed: Project field limited to 30 items \[[#43386](https://community.openproject.com/wp/43386)\] -- Fixed: Start date automatically entered by default on new work packages \[[#43429](https://community.openproject.com/wp/43429)\] -- Fixed: There is no empty status in the Project Select when search criteria is not met \[[#43479](https://community.openproject.com/wp/43479)\] -- Fixed: Focus status on the Project Selector has no background \[[#43482](https://community.openproject.com/wp/43482)\] -- Fixed: Invalid link/href returned by API \[[#43486](https://community.openproject.com/wp/43486)\] -- Fixed: Show better error for dependent result for StoragesController Create action \[[#43487](https://community.openproject.com/wp/43487)\] -- Fixed: Date picker not working as expected for UTC time hour minus \[[#43504](https://community.openproject.com/wp/43504)\] -- Fixed: "No SSL" option in packaged installation of 12.2 does not work \[[#43530](https://community.openproject.com/wp/43530)\] -- Fixed: Focus and selection different for project selection component \[[#43544](https://community.openproject.com/wp/43544)\] -- Fixed: First greyed out item is selected in project dropdown \[[#43545](https://community.openproject.com/wp/43545)\] -- Fixed: Time entry widget column translations missing \[[#43558](https://community.openproject.com/wp/43558)\] -- Fixed: Disable LDAP user status synchronization by default \[[#43561](https://community.openproject.com/wp/43561)\] -- Fixed: Datepicker jumps with negative time zone \[[#43562](https://community.openproject.com/wp/43562)\] -- Epic: Files tab that shows linked files in Nextcloud \[[#40203](https://community.openproject.com/wp/40203)\] -- Epic: Settings connection between Nextcloud and OpenProject (OAuth) \[[#42072](https://community.openproject.com/wp/42072)\] +- Changed: Log time for other users \[[#21754](https://community.openproject.org/wp/21754)\] +- Changed: Send out an email reply if an incoming email could not be processed correctly \[[#35823](https://community.openproject.org/wp/35823)\] +- Changed: Make the empty notification inbox nicer \[[#40148](https://community.openproject.org/wp/40148)\] +- Changed: Show the project hierarchy in the project selector \[[#40286](https://community.openproject.org/wp/40286)\] +- Changed: OAuth settings of Nextcloud in OpenProject \[[#40375](https://community.openproject.org/wp/40375)\] +- Changed: Unify Enterprise edition pages \[[#40774](https://community.openproject.org/wp/40774)\] +- Changed: Keep cached file data up to date \[[#40892](https://community.openproject.org/wp/40892)\] +- Changed: Apply style changes to new date picker \[[#41814](https://community.openproject.org/wp/41814)\] +- Changed: List file links in Files tab \[[#41905](https://community.openproject.org/wp/41905)\] +- Changed: Navigation bar project selection \[[#41948](https://community.openproject.org/wp/41948)\] +- Changed: Date picker modal (without duration and non-working days) \[[#42047](https://community.openproject.org/wp/42047)\] +- Changed: Add packaged installation support for Ubuntu 22.04 \[[#42069](https://community.openproject.org/wp/42069)\] +- Changed: Show banner information in new date picker \[[#42184](https://community.openproject.org/wp/42184)\] +- Changed: Change date selection logic in new date picker \[[#42185](https://community.openproject.org/wp/42185)\] +- Changed: Link to digital accessibility statement from ADDITIONAL RESOURCES \[[#42298](https://community.openproject.org/wp/42298)\] +- Changed: New attachments style on the work package creation form \[[#42369](https://community.openproject.org/wp/42369)\] +- Changed: Enable feature flags by default in the development environment \[[#42414](https://community.openproject.org/wp/42414)\] +- Changed: Enable feature flag for storages module on pull preview \[[#42628](https://community.openproject.org/wp/42628)\] +- Changed: Map available icons in the files list to relevant file types (in attachments/Nextcloud links) \[[#42884](https://community.openproject.org/wp/42884)\] +- Changed: Include work package for which relations are shown when following the "show relations" link \[[#42898](https://community.openproject.org/wp/42898)\] +- Changed: Access project dropdown entries via arrow keys \[[#43118](https://community.openproject.org/wp/43118)\] +- Changed: Show alert when storage is not added to any project \[[#43185](https://community.openproject.org/wp/43185)\] +- Changed: Update NEW FEATURES teaser block on application start page \[[#43485](https://community.openproject.org/wp/43485)\] +- Changed: Persist OpenProject notifications to avoid loss of information \[[#43518](https://community.openproject.org/wp/43518)\] +- Fixed: Circular dependency can be created \[[#34928](https://community.openproject.org/wp/34928)\] +- Fixed: Sorting via "projects" doesn't work \[[#37149](https://community.openproject.org/wp/37149)\] +- Fixed: Quick-add menu not showing on smaller screens \[[#37539](https://community.openproject.org/wp/37539)\] +- Fixed: Default status is shown multiple times in new board \[[#40858](https://community.openproject.org/wp/40858)\] +- Fixed: "expected at least one error" - Work package errors in dependent work packages not displayed \[[#40921](https://community.openproject.org/wp/40921)\] +- Fixed: OpenProject docker installation uses port 3000 as the outward-facing port but documentation says 8080 \[[#41287](https://community.openproject.org/wp/41287)\] +- Fixed: Deleted users are not properly anonymized in tagged messages \[[#41499](https://community.openproject.org/wp/41499)\] +- Fixed: Cannot inline-create a work package on views that filter by WP ID \[[#41667](https://community.openproject.org/wp/41667)\] +- Fixed: In team planner and calendar, the sidebar should not use the word "views" \[[#41830](https://community.openproject.org/wp/41830)\] +- Fixed: Distances in work package details tabs inconsistent \[[#41845](https://community.openproject.org/wp/41845)\] +- Fixed: Blank Email reminders page when creating account manually \[[#41851](https://community.openproject.org/wp/41851)\] +- Fixed: Cannot add attachment to existing comment \[[#41940](https://community.openproject.org/wp/41940)\] +- Fixed: Closed cards in the team planner behave strangely \[[#42413](https://community.openproject.org/wp/42413)\] +- Fixed: Project appearing twice in Dropdown List if Project Member has two or more roles \[[#42477](https://community.openproject.org/wp/42477)\] +- Fixed: Date picker gets cut when there is no scroll \[[#42748](https://community.openproject.org/wp/42748)\] +- Fixed: Packager builds failing since gem bump \[[#42871](https://community.openproject.org/wp/42871)\] +- Fixed: Custom action button in combination with parallel changes leads to conflicting modification error \[[#42878](https://community.openproject.org/wp/42878)\] +- Fixed: Attachments are assigned to the wrong Work Package \[[#42933](https://community.openproject.org/wp/42933)\] +- Fixed: Navigation Link Not Working \[[#42984](https://community.openproject.org/wp/42984)\] +- Fixed: Unable to create child work package \[[#42988](https://community.openproject.org/wp/42988)\] +- Fixed: Size of dropdowns in work-package list too small especially for project hierarchy \[[#43083](https://community.openproject.org/wp/43083)\] +- Fixed: Internal server error when navigating to the work package module (page size) \[[#43120](https://community.openproject.org/wp/43120)\] +- Fixed: webhook is not working \[[#43129](https://community.openproject.org/wp/43129)\] +- Fixed: Split screen persistent with empty state switching toggle from All to Unread \[[#43146](https://community.openproject.org/wp/43146)\] +- Fixed: Missing plural in user settings -> access tokens \[[#43151](https://community.openproject.org/wp/43151)\] +- Fixed: Fix storage admin breadcrumbs \[[#43153](https://community.openproject.org/wp/43153)\] +- Fixed: Two English language \[[#43192](https://community.openproject.org/wp/43192)\] +- Fixed: Remove OAuth cookie after successful authorization against Nextcloud \[[#43193](https://community.openproject.org/wp/43193)\] +- Fixed: Project export confusingly uses "Work packages export limit" setting \[[#43202](https://community.openproject.org/wp/43202)\] +- Fixed: Mobile: The right margin for the files list is not correct \[[#43207](https://community.openproject.org/wp/43207)\] +- Fixed: Double click to open work packages in the Team Planner \[[#43222](https://community.openproject.org/wp/43222)\] +- Fixed: Able to set a follower starting before its predecessor \[[#43223](https://community.openproject.org/wp/43223)\] +- Fixed: Migration::MigrationUtils::PermissionAdder.add not idempotent \[[#43231](https://community.openproject.org/wp/43231)\] +- Fixed: imap ssl settings are evaluated as booleans when they are strings \[[#43237](https://community.openproject.org/wp/43237)\] +- Fixed: Work Package Relation entry not styling type properly \[[#43239](https://community.openproject.org/wp/43239)\] +- Fixed: Work packages in Gantt chart in light grey hard to see \[[#43240](https://community.openproject.org/wp/43240)\] +- Fixed: Work package types with color white are not visible in emails \[[#43247](https://community.openproject.org/wp/43247)\] +- Fixed: Can not find users with the user creation/invitation form \[[#43257](https://community.openproject.org/wp/43257)\] +- Fixed: The list style in the "Nextcloud" section is not correct \[[#43259](https://community.openproject.org/wp/43259)\] +- Fixed: Remove hover effect on files list when there is a connection error to Nextcloud \[[#43260](https://community.openproject.org/wp/43260)\] +- Fixed: The space between the form and the buttons on the 2nd and 3rd step of Nextcloud OAuth settings is not correct \[[#43263](https://community.openproject.org/wp/43263)\] +- Fixed: Can not access the main actions on work package on mobile from the details view \[[#43296](https://community.openproject.org/wp/43296)\] +- Fixed: Mobile: The right margin for activity comments is not correct \[[#43304](https://community.openproject.org/wp/43304)\] +- Fixed: Wrong positioning of workers in notification \[[#43306](https://community.openproject.org/wp/43306)\] +- Fixed: (Mobile) Clicking on notification row does not scroll to activity \[[#43311](https://community.openproject.org/wp/43311)\] +- Fixed: Project name overflows header on mobile \[[#43314](https://community.openproject.org/wp/43314)\] +- Fixed: Info boxes in the Administration are not shown correctly \[[#43320](https://community.openproject.org/wp/43320)\] +- Fixed: Nextcloud: Validation error in New storage - Host field \[[#43323](https://community.openproject.org/wp/43323)\] +- Fixed: Project field limited to 30 items \[[#43386](https://community.openproject.org/wp/43386)\] +- Fixed: Start date automatically entered by default on new work packages \[[#43429](https://community.openproject.org/wp/43429)\] +- Fixed: There is no empty status in the Project Select when search criteria is not met \[[#43479](https://community.openproject.org/wp/43479)\] +- Fixed: Focus status on the Project Selector has no background \[[#43482](https://community.openproject.org/wp/43482)\] +- Fixed: Invalid link/href returned by API \[[#43486](https://community.openproject.org/wp/43486)\] +- Fixed: Show better error for dependent result for StoragesController Create action \[[#43487](https://community.openproject.org/wp/43487)\] +- Fixed: Date picker not working as expected for UTC time hour minus \[[#43504](https://community.openproject.org/wp/43504)\] +- Fixed: "No SSL" option in packaged installation of 12.2 does not work \[[#43530](https://community.openproject.org/wp/43530)\] +- Fixed: Focus and selection different for project selection component \[[#43544](https://community.openproject.org/wp/43544)\] +- Fixed: First greyed out item is selected in project dropdown \[[#43545](https://community.openproject.org/wp/43545)\] +- Fixed: Time entry widget column translations missing \[[#43558](https://community.openproject.org/wp/43558)\] +- Fixed: Disable LDAP user status synchronization by default \[[#43561](https://community.openproject.org/wp/43561)\] +- Fixed: Datepicker jumps with negative time zone \[[#43562](https://community.openproject.org/wp/43562)\] +- Epic: Files tab that shows linked files in Nextcloud \[[#40203](https://community.openproject.org/wp/40203)\] +- Epic: Settings connection between Nextcloud and OpenProject (OAuth) \[[#42072](https://community.openproject.org/wp/42072)\] #### Contributions A big thanks to community members for reporting bugs, helping us identify issues and providing fixes. diff --git a/docs/release-notes/12/12-2-1/README.md b/docs/release-notes/12/12-2-1/README.md index 7ca8901a6d7f..d6846be35b16 100644 --- a/docs/release-notes/12/12-2-1/README.md +++ b/docs/release-notes/12/12-2-1/README.md @@ -10,7 +10,7 @@ release_date: 2022-08-18 Release date: 2022-08-18 -We released [OpenProject 12.2.1](https://community.openproject.com/versions/1594). +We released [OpenProject 12.2.1](https://community.openproject.org/versions/1594). The release contains a critical bug fixes that resolves a data corruption issue and we urge updating to the newest version. Please see the details below for more information. @@ -25,7 +25,7 @@ When aggregating an activity (the user edits the same object within the first 5 This error manifests itself as: - Being unable to access the notification center (page stays blank). -- Being unable to see activities in work package [#43773](https://community.openproject.com/wp/43773). +- Being unable to see activities in work package [#43773](https://community.openproject.org/wp/43773). - Getting internal errors trying to update an existing work package. @@ -54,14 +54,14 @@ For more information on this setting and how to configure it for your installati ## All bug fixes -- Fixed: Wrong html title while selecting filters in notification center \[[#43122](https://community.openproject.com/wp/43122)\] -- Fixed: Outdated app description for the OpenProject app in the Nextcloud App Store \[[#43715](https://community.openproject.com/wp/43715)\] -- Fixed: Error message on subprojects boards \[[#43755](https://community.openproject.com/wp/43755)\] -- Fixed: New HTTPS flag is poorly documented and breaks quick start docker containers \[[#43759](https://community.openproject.com/wp/43759)\] -- Fixed: Wrong days highlighted as weekend in Gantt diagram \[[#43762](https://community.openproject.com/wp/43762)\] -- Fixed: Open Project Docker Installation \[[#43767](https://community.openproject.com/wp/43767)\] -- Fixed: Unable to see activities in work package \[[#43773](https://community.openproject.com/wp/43773)\] -- Fixed: Timeline shows bar at wrong time after collapsing a group \[[#43775](https://community.openproject.com/wp/43775)\] +- Fixed: Wrong html title while selecting filters in notification center \[[#43122](https://community.openproject.org/wp/43122)\] +- Fixed: Outdated app description for the OpenProject app in the Nextcloud App Store \[[#43715](https://community.openproject.org/wp/43715)\] +- Fixed: Error message on subprojects boards \[[#43755](https://community.openproject.org/wp/43755)\] +- Fixed: New HTTPS flag is poorly documented and breaks quick start docker containers \[[#43759](https://community.openproject.org/wp/43759)\] +- Fixed: Wrong days highlighted as weekend in Gantt diagram \[[#43762](https://community.openproject.org/wp/43762)\] +- Fixed: Open Project Docker Installation \[[#43767](https://community.openproject.org/wp/43767)\] +- Fixed: Unable to see activities in work package \[[#43773](https://community.openproject.org/wp/43773)\] +- Fixed: Timeline shows bar at wrong time after collapsing a group \[[#43775](https://community.openproject.org/wp/43775)\] diff --git a/docs/release-notes/12/12-2-2/README.md b/docs/release-notes/12/12-2-2/README.md index b7ee4cab38e0..e42d96324c6c 100644 --- a/docs/release-notes/12/12-2-2/README.md +++ b/docs/release-notes/12/12-2-2/README.md @@ -10,7 +10,7 @@ release_date: 2022-08-31 Release date: 2022-08-31 -We released [OpenProject 12.2.2](https://community.openproject.com/versions/1597). +We released [OpenProject 12.2.2](https://community.openproject.org/versions/1597). The release contains several bug fixes and we recommend updating to the newest version. @@ -23,21 +23,21 @@ When upgrading to 12.2.1, a migration was added to restore some deleted historic For a few customers, this migration appears to have been unsuccessful to restore all affected journal entries. This resulted in the migration to fail and being unable to continue with the update. As we could not reproduce this issue as of now, you can choose to ignore the missing journals if you're affected. -When you update to OpenProject 12.2.2 and the migration fails again, it will output steps on how to force the migration to complete. Doing that will output a debug log of all relevant information on these journals. Please help us identifying this issue by posting this log in this ticket: https://community.openproject.com/wp/43876, or reaching out to support@openproject.org. +When you update to OpenProject 12.2.2 and the migration fails again, it will output steps on how to force the migration to complete. Doing that will output a debug log of all relevant information on these journals. Please help us identifying this issue by posting this log in this ticket: https://community.openproject.org/wp/43876, or reaching out to support@openproject.org. #### Bug fixes and changes -- Fixed: Wrong link for "Documents added" email notification \[[#41114](https://community.openproject.com/wp/41114)\] -- Fixed: Bulk copy error when Assignee value set 'nobody' \[[#43145](https://community.openproject.com/wp/43145)\] -- Fixed: Impossible to deselect all days when choosing days to receive mail reminders \[[#43158](https://community.openproject.com/wp/43158)\] -- Fixed: Error message "Assigned to invalid" syntactically wrong \[[#43514](https://community.openproject.com/wp/43514)\] -- Fixed: Graphics bugs on mobile \[[#43555](https://community.openproject.com/wp/43555)\] -- Fixed: New project selector does not work correctly \[[#43720](https://community.openproject.com/wp/43720)\] -- Fixed: Error 500 (undefined method `getutc') when opening activities \[[#43771](https://community.openproject.com/wp/43771)\] -- Fixed: Wiki unacessible if last menu item got lost \[[#43841](https://community.openproject.com/wp/43841)\] -- Fixed: Unable to set LDAP filter string through rake task ldap:register \[[#43848](https://community.openproject.com/wp/43848)\] -- Fixed: Upgrade 12.1.4 to 12.2.1 fails: pending database migration \[[#43876](https://community.openproject.com/wp/43876)\] -- Fixed: System 'read only' field \[[#43893](https://community.openproject.com/wp/43893)\] +- Fixed: Wrong link for "Documents added" email notification \[[#41114](https://community.openproject.org/wp/41114)\] +- Fixed: Bulk copy error when Assignee value set 'nobody' \[[#43145](https://community.openproject.org/wp/43145)\] +- Fixed: Impossible to deselect all days when choosing days to receive mail reminders \[[#43158](https://community.openproject.org/wp/43158)\] +- Fixed: Error message "Assigned to invalid" syntactically wrong \[[#43514](https://community.openproject.org/wp/43514)\] +- Fixed: Graphics bugs on mobile \[[#43555](https://community.openproject.org/wp/43555)\] +- Fixed: New project selector does not work correctly \[[#43720](https://community.openproject.org/wp/43720)\] +- Fixed: Error 500 (undefined method `getutc') when opening activities \[[#43771](https://community.openproject.org/wp/43771)\] +- Fixed: Wiki accessible if last menu item got lost \[[#43841](https://community.openproject.org/wp/43841)\] +- Fixed: Unable to set LDAP filter string through rake task ldap:register \[[#43848](https://community.openproject.org/wp/43848)\] +- Fixed: Upgrade 12.1.4 to 12.2.1 fails: pending database migration \[[#43876](https://community.openproject.org/wp/43876)\] +- Fixed: System 'read only' field \[[#43893](https://community.openproject.org/wp/43893)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-2-3/README.md b/docs/release-notes/12/12-2-3/README.md index 1cc5a3433c6d..3ce5cf4355b8 100644 --- a/docs/release-notes/12/12-2-3/README.md +++ b/docs/release-notes/12/12-2-3/README.md @@ -10,15 +10,15 @@ release_date: 2022-09-12 Release date: 2022-09-12 -We released [OpenProject 12.2.3](https://community.openproject.com/versions/1598). +We released [OpenProject 12.2.3](https://community.openproject.org/versions/1598). The release contains several bug fixes and we recommend updating to the newest version. ### Fixed: Installing custom plugins in packaged installations Newer bundler versions would prevent custom plugins being installed in packaged installation. -This has been fixed in this released version. For more information, please see [#44058](https://community.openproject.com/wp/44058) +This has been fixed in this released version. For more information, please see [#44058](https://community.openproject.org/wp/44058) #### Bug fixes and changes -- Fixed: RPM/DEB installation fails with a custom gemfile \[[#44058](https://community.openproject.com/wp/44058)\] +- Fixed: RPM/DEB installation fails with a custom gemfile \[[#44058](https://community.openproject.org/wp/44058)\] diff --git a/docs/release-notes/12/12-2-4/README.md b/docs/release-notes/12/12-2-4/README.md index 61eae1a52f4c..a06fd2eef3e9 100644 --- a/docs/release-notes/12/12-2-4/README.md +++ b/docs/release-notes/12/12-2-4/README.md @@ -10,7 +10,7 @@ release_date: 2022-09-15 Release date: 2022-09-15 -We released [OpenProject 12.2.4](https://community.openproject.com/versions/1599). +We released [OpenProject 12.2.4](https://community.openproject.org/versions/1599). The release contains several bug fixes and we recommend updating to the newest version. @@ -23,17 +23,17 @@ That migration would fail for some customers that have some invalid journal refe A migration was added to this release to do just that, and ensure that the 12.2.2 migration can successfully be ran. -For more information on that change, please see the discussion in [Bug #44132](https://community.openproject.com/wp/44132) +For more information on that change, please see the discussion in [Bug #44132](https://community.openproject.org/wp/44132) #### Bug fixes and changes -- Fixed: Remaining hours sum not well formed \[[#43833](https://community.openproject.com/wp/43833)\] -- Fixed: Destroy journals with invalid data_type associations \[[#44132](https://community.openproject.com/wp/44132)\] -- Fixed: Internal error / Illegal instruction error \[[#44155](https://community.openproject.com/wp/44155)\] -- Fixed: Dragging images to CKEditor on Grid custom texts not working with direct upload \[[#44156](https://community.openproject.com/wp/44156)\] +- Fixed: Remaining hours sum not well formed \[[#43833](https://community.openproject.org/wp/43833)\] +- Fixed: Destroy journals with invalid data_type associations \[[#44132](https://community.openproject.org/wp/44132)\] +- Fixed: Internal error / Illegal instruction error \[[#44155](https://community.openproject.org/wp/44155)\] +- Fixed: Dragging images to CKEditor on Grid custom texts not working with direct upload \[[#44156](https://community.openproject.org/wp/44156)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-2-5/README.md b/docs/release-notes/12/12-2-5/README.md index e62c707e1cfc..4dcbf89eb736 100644 --- a/docs/release-notes/12/12-2-5/README.md +++ b/docs/release-notes/12/12-2-5/README.md @@ -10,7 +10,7 @@ release_date: 2022-10-04 Release date: 2022-10-04 -We released [OpenProject 12.2.5](https://community.openproject.com/versions/1602). +We released [OpenProject 12.2.5](https://community.openproject.org/versions/1602). The release contains several bug fixes and we recommend updating to the newest version. @@ -28,5 +28,5 @@ To aid in the discovery of these users, you can use the following rake task to p Please note that these affected users are not automatically removed in this patch release, due to the system not knowing if are expected to be members. -- Fixed: User from synchronized group not removed in OpenProject group after removed in LDAP \[[#41256](https://community.openproject.com/wp/41256)\] -- Fixed: When adding users to a group, existing users are shown in the autocompleter \[[#43892](https://community.openproject.com/wp/43892)\] +- Fixed: User from synchronized group not removed in OpenProject group after removed in LDAP \[[#41256](https://community.openproject.org/wp/41256)\] +- Fixed: When adding users to a group, existing users are shown in the autocompleter \[[#43892](https://community.openproject.org/wp/43892)\] diff --git a/docs/release-notes/12/12-3-0/README.md b/docs/release-notes/12/12-3-0/README.md index 7530ad9ca9cb..24fe1d53170b 100644 --- a/docs/release-notes/12/12-3-0/README.md +++ b/docs/release-notes/12/12-3-0/README.md @@ -10,7 +10,7 @@ release_date: 2022-10-10 Release date: 2022-10-10 -We have now released [OpenProject 12.3.0](https://community.openproject.com/versions/1514). +We have now released [OpenProject 12.3.0](https://community.openproject.org/versions/1514). This release **improves the scheduling of work packages significantly** and will consequently save you a lot of time and make your scheduling more accurate. @@ -20,7 +20,7 @@ OpenProject 12.3 also adds [duration](../../../user-guide/work-packages/set-chan With the introduction of the work week and duration, consequently also the [date picker got improved](../../../user-guide/work-packages/set-change-dates/#working-days). You will now see the duration as well as a switch to consider "Working days only" for your planning. -Addtionally, this release launches **meaningful tool tips to the most essential actions**, and **when copying a project, all file links attached to work packages will be copied as well**. +Additionally, this release launches **meaningful tool tips to the most essential actions**, and **when copying a project, all file links attached to work packages will be copied as well**. As always, this release also contains many more improvements and bug fixes. We recommend updating to the newest version as soon as possible. @@ -74,43 +74,43 @@ The new and additional tool tips in the OpenProject application will make the na ## List of all bug fixes and changes -- Epic: Define weekly work schedule (weekends) [#18416](https://community.openproject.com/wp/18416) -- Epic: Duration (deriving duration from dates, deriving dates from duration, updated datepicker, duration field elsewhere) [#31992](https://community.openproject.com/wp/31992) -- Fixed: Quick-add menu not showing on smaller screens [#37539](https://community.openproject.com/wp/37539) -- Fixed: Attachments are not going to be copied, when using "Copy to other project" function [#43005](https://community.openproject.com/wp/43005) -- Fixed: Filters are not working after adding a custom field with default value [#43085](https://community.openproject.com/wp/43085) -- Fixed: BIM edition unavailable on Ubuntu 22.04 packaged installation [#43531](https://community.openproject.com/wp/43531) -- Fixed: Can't delete WPs from board view [#43761](https://community.openproject.com/wp/43761) -- Fixed: Insufficient contrast ratio between activity font color and background [#43874](https://community.openproject.com/wp/43874) -- Fixed: SystemStackError (stack level too deep) when trying to assign new parent or children to a work package [#43894](https://community.openproject.com/wp/43894) -- Fixed: Strange arrangement of files when creating a new work package [#44052](https://community.openproject.com/wp/44052) -- Fixed: CKEditor not wrapping the words at the end of the sentence (edit and view mode) [#44125](https://community.openproject.com/wp/44125) -- Fixed: File storage OAuth setting fields should not get translated [#44146](https://community.openproject.com/wp/44146) -- Fixed: Log out user when delete work package from board [#44161](https://community.openproject.com/wp/44161) -- Fixed: Work packages can have start_dates > due_dates [#44243](https://community.openproject.com/wp/44243) -- Fixed: Backup failed: pg_dump: password authentication failed for user "openproject" [#44251](https://community.openproject.com/wp/44251) - -- Fixed: "Group by" options in Cost report are broken [#44265](https://community.openproject.com/wp/44265) -- Fixed: Files list: inconsistencies in spacing and colours [#44266](https://community.openproject.com/wp/44266) -- Fixed: API call for custom_options does not work custom fieleds in time_entries [#44281](https://community.openproject.com/wp/44281) -- Fixed: Email Reminder: Daily reminders can only be configured to be delivered at a full hour. [#44300](https://community.openproject.com/wp/44300) -- Changed: Cleanup placeholders of editable attributes [#40133](https://community.openproject.com/wp/40133) -- Changed: Updated date picker drop modal (including duration and non-working days) [#41341](https://community.openproject.com/wp/41341) -- Changed: Copying a project shall also copy file links attached to all work packages [#41530](https://community.openproject.com/wp/41530) -- Changed: Administration page for changing the global work schedule - Weekends only [#42316](https://community.openproject.com/wp/42316) -- Changed: Add meaningful tooltips to the most essential actions [#43299](https://community.openproject.com/wp/43299) -- Changed: Hide time stamp and avatar when there are hover actions [#43308](https://community.openproject.com/wp/43308) -- Changed: Use a disabled mouse style and tooltip for inactive files [#43399](https://community.openproject.com/wp/43399) -- Changed: Update work package table view for duration [#43636](https://community.openproject.com/wp/43636) -- Changed: Update gantt chart for duration and non-working days [#43637](https://community.openproject.com/wp/43637) -- Changed: Update team planner and calendar for duration and non-working days [#43638](https://community.openproject.com/wp/43638) -- Changed: Delete/Unlink modal [#43663](https://community.openproject.com/wp/43663) -- Changed: Add information toast to the Nextcloud Setup Documentation [#43851](https://community.openproject.com/wp/43851) -- Changed: Disregard distance (not lag) between related work packages when scheduling FS-related work packages [#44053](https://community.openproject.com/wp/44053) -- Changed: Add packaged installation support for SLES 15 [#44117](https://community.openproject.com/wp/44117) -- Changed: Replace toggles for scheduling mode and working days with on/off-switches [#44147](https://community.openproject.com/wp/44147) -- Changed: New release teaser block for 12.3 [#44212](https://community.openproject.com/wp/44212) -- Changed: Add the Switch component and Switch Field pattern to the design system [#44213](https://community.openproject.com/wp/44213) +- Epic: Define weekly work schedule (weekends) [#18416](https://community.openproject.org/wp/18416) +- Epic: Duration (deriving duration from dates, deriving dates from duration, updated datepicker, duration field elsewhere) [#31992](https://community.openproject.org/wp/31992) +- Fixed: Quick-add menu not showing on smaller screens [#37539](https://community.openproject.org/wp/37539) +- Fixed: Attachments are not going to be copied, when using "Copy to other project" function [#43005](https://community.openproject.org/wp/43005) +- Fixed: Filters are not working after adding a custom field with default value [#43085](https://community.openproject.org/wp/43085) +- Fixed: BIM edition unavailable on Ubuntu 22.04 packaged installation [#43531](https://community.openproject.org/wp/43531) +- Fixed: Can't delete WPs from board view [#43761](https://community.openproject.org/wp/43761) +- Fixed: Insufficient contrast ratio between activity font color and background [#43874](https://community.openproject.org/wp/43874) +- Fixed: SystemStackError (stack level too deep) when trying to assign new parent or children to a work package [#43894](https://community.openproject.org/wp/43894) +- Fixed: Strange arrangement of files when creating a new work package [#44052](https://community.openproject.org/wp/44052) +- Fixed: CKEditor not wrapping the words at the end of the sentence (edit and view mode) [#44125](https://community.openproject.org/wp/44125) +- Fixed: File storage OAuth setting fields should not get translated [#44146](https://community.openproject.org/wp/44146) +- Fixed: Log out user when delete work package from board [#44161](https://community.openproject.org/wp/44161) +- Fixed: Work packages can have start_dates > due_dates [#44243](https://community.openproject.org/wp/44243) +- Fixed: Backup failed: pg_dump: password authentication failed for user "openproject" [#44251](https://community.openproject.org/wp/44251) + +- Fixed: "Group by" options in Cost report are broken [#44265](https://community.openproject.org/wp/44265) +- Fixed: Files list: inconsistencies in spacing and colors [#44266](https://community.openproject.org/wp/44266) +- Fixed: API call for custom_options does not work custom fields in time_entries [#44281](https://community.openproject.org/wp/44281) +- Fixed: Email Reminder: Daily reminders can only be configured to be delivered at a full hour. [#44300](https://community.openproject.org/wp/44300) +- Changed: Cleanup placeholders of editable attributes [#40133](https://community.openproject.org/wp/40133) +- Changed: Updated date picker drop modal (including duration and non-working days) [#41341](https://community.openproject.org/wp/41341) +- Changed: Copying a project shall also copy file links attached to all work packages [#41530](https://community.openproject.org/wp/41530) +- Changed: Administration page for changing the global work schedule - Weekends only [#42316](https://community.openproject.org/wp/42316) +- Changed: Add meaningful tooltips to the most essential actions [#43299](https://community.openproject.org/wp/43299) +- Changed: Hide time stamp and avatar when there are hover actions [#43308](https://community.openproject.org/wp/43308) +- Changed: Use a disabled mouse style and tooltip for inactive files [#43399](https://community.openproject.org/wp/43399) +- Changed: Update work package table view for duration [#43636](https://community.openproject.org/wp/43636) +- Changed: Update gantt chart for duration and non-working days [#43637](https://community.openproject.org/wp/43637) +- Changed: Update team planner and calendar for duration and non-working days [#43638](https://community.openproject.org/wp/43638) +- Changed: Delete/Unlink modal [#43663](https://community.openproject.org/wp/43663) +- Changed: Add information toast to the Nextcloud Setup Documentation [#43851](https://community.openproject.org/wp/43851) +- Changed: Disregard distance (not lag) between related work packages when scheduling FS-related work packages [#44053](https://community.openproject.org/wp/44053) +- Changed: Add packaged installation support for SLES 15 [#44117](https://community.openproject.org/wp/44117) +- Changed: Replace toggles for scheduling mode and working days with on/off-switches [#44147](https://community.openproject.org/wp/44147) +- Changed: New release teaser block for 12.3 [#44212](https://community.openproject.org/wp/44212) +- Changed: Add the Switch component and Switch Field pattern to the design system [#44213](https://community.openproject.org/wp/44213) ### Contributions diff --git a/docs/release-notes/12/12-3-1/README.md b/docs/release-notes/12/12-3-1/README.md index 171c3e2c0d05..fe2967b8d35f 100644 --- a/docs/release-notes/12/12-3-1/README.md +++ b/docs/release-notes/12/12-3-1/README.md @@ -10,33 +10,33 @@ release_date: 2022-10-24 Release date: 2022-10-24 -We released [OpenProject 12.3.1](https://community.openproject.com/versions/1605). +We released [OpenProject 12.3.1](https://community.openproject.org/versions/1605). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40373](https://community.openproject.com/wp/40373)\] -- Fixed: Attachments are not going to be copied, when using "Copy to other project" function \[[#43005](https://community.openproject.com/wp/43005)\] -- Fixed: Custom fields are enabled on project creation \[[#43763](https://community.openproject.com/wp/43763)\] -- Fixed: "Reorder values alphabetically" does not work reliably \[[#43832](https://community.openproject.com/wp/43832)\] -- Fixed: Time and costs: Project filter set to "is not (includes subprojects)" not working as expected \[[#44217](https://community.openproject.com/wp/44217)\] -- Fixed: Unchecking 'Display subprojects work packages on main projects by default' causes WP Export list to be empty \[[#44248](https://community.openproject.com/wp/44248)\] -- Fixed: Datepicker modal jumps up when in parent toggling manual scheduling \[[#44330](https://community.openproject.com/wp/44330)\] -- Fixed: "Logged by" column is showing the wrong value ("Deleted user") in the cost report \[[#44352](https://community.openproject.com/wp/44352)\] -- Fixed: Duplicate cancel buttons in mobile modals \[[#44398](https://community.openproject.com/wp/44398)\] -- Fixed: Update dates on Gantt chart based on its duration \[[#44405](https://community.openproject.com/wp/44405)\] -- Fixed: After moving a work package card on the calendar, update dates based on its duration \[[#44406](https://community.openproject.com/wp/44406)\] -- Fixed: Datepicker (mobile): number keyboard does not include all necessary characters on iOS \[[#44420](https://community.openproject.com/wp/44420)\] -- Fixed: Not possible to disable direct uploads \[[#44492](https://community.openproject.com/wp/44492)\] -- Fixed: Date-picker and time logging should not be blocked on non-working days \[[#44496](https://community.openproject.com/wp/44496)\] -- Fixed: Tokens not cleaned up on user deletion \[[#44500](https://community.openproject.com/wp/44500)\] -- Fixed: Creating work package starting on a non-working day should not be possible \[[#44509](https://community.openproject.com/wp/44509)\] -- Fixed: Email reminders should be enabled by default for Monday-Friday \[[#44526](https://community.openproject.com/wp/44526)\] -- Fixed: Removed project members remain in invitation list when copying meetings \[[#44536](https://community.openproject.com/wp/44536)\] -- Fixed: Feature Teaser not translated into German \[[#44582](https://community.openproject.com/wp/44582)\] -- Fixed: "missing translation" pop-up message on a newly created cloud instance \[[#44583](https://community.openproject.com/wp/44583)\] -- Fixed: OpenProject upgrade fails with "column roles.assignable does not exist" error during AddStoragesPermissionsToRoles migration \[[#44616](https://community.openproject.com/wp/44616)\] +- Fixed: Frontend including editor and time logging unusable when there are many activities \[[#40373](https://community.openproject.org/wp/40373)\] +- Fixed: Attachments are not going to be copied, when using "Copy to other project" function \[[#43005](https://community.openproject.org/wp/43005)\] +- Fixed: Custom fields are enabled on project creation \[[#43763](https://community.openproject.org/wp/43763)\] +- Fixed: "Reorder values alphabetically" does not work reliably \[[#43832](https://community.openproject.org/wp/43832)\] +- Fixed: Time and costs: Project filter set to "is not (includes subprojects)" not working as expected \[[#44217](https://community.openproject.org/wp/44217)\] +- Fixed: Unchecking 'Display subprojects work packages on main projects by default' causes WP Export list to be empty \[[#44248](https://community.openproject.org/wp/44248)\] +- Fixed: Datepicker modal jumps up when in parent toggling manual scheduling \[[#44330](https://community.openproject.org/wp/44330)\] +- Fixed: "Logged by" column is showing the wrong value ("Deleted user") in the cost report \[[#44352](https://community.openproject.org/wp/44352)\] +- Fixed: Duplicate cancel buttons in mobile modals \[[#44398](https://community.openproject.org/wp/44398)\] +- Fixed: Update dates on Gantt chart based on its duration \[[#44405](https://community.openproject.org/wp/44405)\] +- Fixed: After moving a work package card on the calendar, update dates based on its duration \[[#44406](https://community.openproject.org/wp/44406)\] +- Fixed: Datepicker (mobile): number keyboard does not include all necessary characters on iOS \[[#44420](https://community.openproject.org/wp/44420)\] +- Fixed: Not possible to disable direct uploads \[[#44492](https://community.openproject.org/wp/44492)\] +- Fixed: Date-picker and time logging should not be blocked on non-working days \[[#44496](https://community.openproject.org/wp/44496)\] +- Fixed: Tokens not cleaned up on user deletion \[[#44500](https://community.openproject.org/wp/44500)\] +- Fixed: Creating work package starting on a non-working day should not be possible \[[#44509](https://community.openproject.org/wp/44509)\] +- Fixed: Email reminders should be enabled by default for Monday-Friday \[[#44526](https://community.openproject.org/wp/44526)\] +- Fixed: Removed project members remain in invitation list when copying meetings \[[#44536](https://community.openproject.org/wp/44536)\] +- Fixed: Feature Teaser not translated into German \[[#44582](https://community.openproject.org/wp/44582)\] +- Fixed: "missing translation" pop-up message on a newly created cloud instance \[[#44583](https://community.openproject.org/wp/44583)\] +- Fixed: OpenProject upgrade fails with "column roles.assignable does not exist" error during AddStoragesPermissionsToRoles migration \[[#44616](https://community.openproject.org/wp/44616)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-3-2/README.md b/docs/release-notes/12/12-3-2/README.md index b1ac7f10e2aa..f804c2af4255 100644 --- a/docs/release-notes/12/12-3-2/README.md +++ b/docs/release-notes/12/12-3-2/README.md @@ -10,16 +10,16 @@ release_date: 2022-10-26 Release date: 2022-10-26 -We released [OpenProject 12.3.2](https://community.openproject.com/versions/1608). +We released [OpenProject 12.3.2](https://community.openproject.org/versions/1608). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Multiples Identicals Webhooks are sent for each WP change applied, not considering the Aggregated WorkPackage Journal \[[#44158](https://community.openproject.com/wp/44158)\] -- Fixed: Moving a week-days-only WP on Gantt chart and falling its end-date to a non-working date is not possible \[[#44501](https://community.openproject.com/wp/44501)\] -- Fixed: Migration to 12.3.1 fails with Key columns "user_id" and "id" are of incompatible types: numeric and bigint. \[[#44634](https://community.openproject.com/wp/44634)\] -- Fixed: rake assets:precompile fails with NameError: uninitialized constant ActiveRecord::ConnectionAdapters::PostgreSQLAdapter \[[#44635](https://community.openproject.com/wp/44635)\] +- Fixed: Multiple identical Webhooks are sent for each WP change applied, not considering the Aggregated WorkPackage Journal \[[#44158](https://community.openproject.org/wp/44158)\] +- Fixed: Moving a week-days-only WP on Gantt chart and falling its end-date to a non-working date is not possible \[[#44501](https://community.openproject.org/wp/44501)\] +- Fixed: Migration to 12.3.1 fails with Key columns "user_id" and "id" are of incompatible types: numeric and bigint. \[[#44634](https://community.openproject.org/wp/44634)\] +- Fixed: rake assets:precompile fails with NameError: uninitialized constant ActiveRecord::ConnectionAdapters::PostgreSQLAdapter \[[#44635](https://community.openproject.org/wp/44635)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-3-3/README.md b/docs/release-notes/12/12-3-3/README.md index e4fe9325eafd..87ea226a4666 100644 --- a/docs/release-notes/12/12-3-3/README.md +++ b/docs/release-notes/12/12-3-3/README.md @@ -10,18 +10,18 @@ release_date: 2022-11-23 Release date: 2022-11-23 -We released [OpenProject 12.3.3](https://community.openproject.com/versions/1609). +We released [OpenProject 12.3.3](https://community.openproject.org/versions/1609). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Gantt calendar weeks not according to settings \[[#41327](https://community.openproject.com/wp/41327)\] -- Fixed: BIM edition unavailable on Ubuntu 22.04 packaged installation \[[#43531](https://community.openproject.com/wp/43531)\] -- Fixed: Move workpackage in other project error \[[#43553](https://community.openproject.com/wp/43553)\] -- Fixed: Unable to set User Default Timezone in `configuration.yml` \[[#44737](https://community.openproject.com/wp/44737)\] -- Fixed: Initial Installation fails if `welcome_text` is set in `configuration.yml` \[[#44755](https://community.openproject.com/wp/44755)\] -- Fixed: OAuth login POST doesn't work on mobile Safari due to CSP \[[#44772](https://community.openproject.com/wp/44772)\] +- Fixed: Gantt calendar weeks not according to settings \[[#41327](https://community.openproject.org/wp/41327)\] +- Fixed: BIM edition unavailable on Ubuntu 22.04 packaged installation \[[#43531](https://community.openproject.org/wp/43531)\] +- Fixed: Move work package in other project error \[[#43553](https://community.openproject.org/wp/43553)\] +- Fixed: Unable to set User Default Timezone in `configuration.yml` \[[#44737](https://community.openproject.org/wp/44737)\] +- Fixed: Initial Installation fails if `welcome_text` is set in `configuration.yml` \[[#44755](https://community.openproject.org/wp/44755)\] +- Fixed: OAuth login POST doesn't work on mobile Safari due to CSP \[[#44772](https://community.openproject.org/wp/44772)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-3-4/README.md b/docs/release-notes/12/12-3-4/README.md index 1f4914ae5e29..ed626dd832dc 100644 --- a/docs/release-notes/12/12-3-4/README.md +++ b/docs/release-notes/12/12-3-4/README.md @@ -10,10 +10,10 @@ release_date: 2022-12-02 Release date: 2022-12-02 -We released [OpenProject 12.3.4](https://community.openproject.com/versions/1613). +We released [OpenProject 12.3.4](https://community.openproject.org/versions/1613). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Chrome v108 freezes up on work package create and show page \[[#45169](https://community.openproject.com/wp/45169)\] +- Fixed: Chrome v108 freezes up on work package create and show page \[[#45169](https://community.openproject.org/wp/45169)\] diff --git a/docs/release-notes/12/12-4-0/README.md b/docs/release-notes/12/12-4-0/README.md index acb04083b579..6bbd4f56746d 100644 --- a/docs/release-notes/12/12-4-0/README.md +++ b/docs/release-notes/12/12-4-0/README.md @@ -10,7 +10,7 @@ release_date: 2022-12-05 Release date: 2022-12-05 -We released [OpenProject 12.4.0](https://community.openproject.com/versions/1595). +We released [OpenProject 12.4.0](https://community.openproject.org/versions/1595). This release launches a long awaited feature of **date alerts for upcoming due dates (start or finish date)** and **reminders for overdue tasks**. @@ -36,7 +36,7 @@ In case of overdue work packages, if a reminder is set to be sent for example ev Date alerts are an Enterprise add-on and only available in the [Enterprise on-premises and Enterprise cloud](https://www.openproject.org/enterprise-edition) version of OpenProject. -## 2-factor Authetication (2FA) for the community ediiton +## 2-factor Authentication (2FA) for the community edition With OpenProject 12.4 users who have OpenProject community edition installed can activate 2-factor authentication. We strongly recommend that you make use of this option and increase your account security. @@ -66,7 +66,7 @@ It is now possible to choose between a full 1-week view, a 2-week view or only t ## OpenProject Helm Charts -Starting with OpenProject 12.4 offical [OpenProject Helm charts](../../../installation-and-operations/installation/helm-chart) are available. +Starting with OpenProject 12.4 official [OpenProject Helm charts](../../../installation-and-operations/installation/helm-chart) are available. ![openproject helm charts](openproject-helm-charts.jpg) @@ -88,29 +88,29 @@ It is now possible to bulk edit the subject field for multiple work packages. Se ### List of all bug fixes and changes -- Epic: Notification date alerts for upcoming and overdue tasks - EE \[[#7693](https://community.openproject.com/wp/7693)\] -- Epic: Cross-application main menu for dPhoenixSuite/Sovereign Administrative Work Place \[[#44297](https://community.openproject.com/wp/44297)\] -- Fixed: Wrong right margin in the side menu new team planner button \[[#43253](https://community.openproject.com/wp/43253)\] -- Fixed: Option "Create new" shown for related work package tables when permission to create WP is missing \[[#43834](https://community.openproject.com/wp/43834)\] -- Fixed: Cannot properly assign roles to global admins \[[#43858](https://community.openproject.com/wp/43858)\] -- Fixed: notifications API returns error as an array not string \[[#43908](https://community.openproject.com/wp/43908)\] -- Fixed: [Project-Template] Rename checkbox labels under copy options \[[#43909](https://community.openproject.com/wp/43909)\] -- Fixed: Missing option to select BIM edition \[[#44236](https://community.openproject.com/wp/44236)\] -- Fixed: Wrong icon for history in Wiki history and Meeting history \[[#44745](https://community.openproject.com/wp/44745)\] -- Fixed: Parent of predecessor work package not available to be set as parent of following work package \[[#44827](https://community.openproject.com/wp/44827)\] -- Fixed: Endpoint PATCH /api/v3/my_preferences does not update preferences \[[#44845](https://community.openproject.com/wp/44845)\] -- Fixed: Error when switching to milestone type and current date configured as start date \[[#44900](https://community.openproject.com/wp/44900)\] -- Fixed: Misalignment in Project specific settings table \[[#44932](https://community.openproject.com/wp/44932)\] -- Fixed: Backup failed with message "undefined method 'body'.." if attachment is unavailable \[[#44939](https://community.openproject.com/wp/44939)\] -- Fixed: Admin sidebar enterprise badge is misaligned \[[#44990](https://community.openproject.com/wp/44990)\] -- Fixed: Text in the Enterprise Edition administration page still includes 2FA as EE Feature \[[#44991](https://community.openproject.com/wp/44991)\] -- Changed: List up to 3 people in a notification card \[[#43294](https://community.openproject.com/wp/43294)\] -- Changed: Cannot self-notify via @mention \[[#43846](https://community.openproject.com/wp/43846)\] -- Changed: Make 2FA available in the community edition \[[#44327](https://community.openproject.com/wp/44327)\] -- Changed: Trap focus within a modal dialogue when tabbing to cycling through interactive elements \[[#44344](https://community.openproject.com/wp/44344)\] -- Changed: Helm charts for OpenProject \[[#44360](https://community.openproject.com/wp/44360)\] -- Changed: Bulk edit of the work-package field "subject" \[[#44386](https://community.openproject.com/wp/44386)\] -- Changed: Team planner: add "Work week" option to visible time scale \[[#44702](https://community.openproject.com/wp/44702)\] +- Epic: Notification date alerts for upcoming and overdue tasks - EE \[[#7693](https://community.openproject.org/wp/7693)\] +- Epic: Cross-application main menu for dPhoenixSuite/Sovereign Administrative Work Place \[[#44297](https://community.openproject.org/wp/44297)\] +- Fixed: Wrong right margin in the side menu new team planner button \[[#43253](https://community.openproject.org/wp/43253)\] +- Fixed: Option "Create new" shown for related work package tables when permission to create WP is missing \[[#43834](https://community.openproject.org/wp/43834)\] +- Fixed: Cannot properly assign roles to global admins \[[#43858](https://community.openproject.org/wp/43858)\] +- Fixed: notifications API returns error as an array not string \[[#43908](https://community.openproject.org/wp/43908)\] +- Fixed: [Project-Template] Rename checkbox labels under copy options \[[#43909](https://community.openproject.org/wp/43909)\] +- Fixed: Missing option to select BIM edition \[[#44236](https://community.openproject.org/wp/44236)\] +- Fixed: Wrong icon for history in Wiki history and Meeting history \[[#44745](https://community.openproject.org/wp/44745)\] +- Fixed: Parent of predecessor work package not available to be set as parent of following work package \[[#44827](https://community.openproject.org/wp/44827)\] +- Fixed: Endpoint PATCH /api/v3/my_preferences does not update preferences \[[#44845](https://community.openproject.org/wp/44845)\] +- Fixed: Error when switching to milestone type and current date configured as start date \[[#44900](https://community.openproject.org/wp/44900)\] +- Fixed: Misalignment in Project specific settings table \[[#44932](https://community.openproject.org/wp/44932)\] +- Fixed: Backup failed with message "undefined method 'body'.." if attachment is unavailable \[[#44939](https://community.openproject.org/wp/44939)\] +- Fixed: Admin sidebar enterprise badge is misaligned \[[#44990](https://community.openproject.org/wp/44990)\] +- Fixed: Text in the Enterprise Edition administration page still includes 2FA as EE Feature \[[#44991](https://community.openproject.org/wp/44991)\] +- Changed: List up to 3 people in a notification card \[[#43294](https://community.openproject.org/wp/43294)\] +- Changed: Cannot self-notify via @mention \[[#43846](https://community.openproject.org/wp/43846)\] +- Changed: Make 2FA available in the community edition \[[#44327](https://community.openproject.org/wp/44327)\] +- Changed: Trap focus within a modal dialogue when tabbing to cycling through interactive elements \[[#44344](https://community.openproject.org/wp/44344)\] +- Changed: Helm charts for OpenProject \[[#44360](https://community.openproject.org/wp/44360)\] +- Changed: Bulk edit of the work-package field "subject" \[[#44386](https://community.openproject.org/wp/44386)\] +- Changed: Team planner: add "Work week" option to visible time scale \[[#44702](https://community.openproject.org/wp/44702)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-4-1/README.md b/docs/release-notes/12/12-4-1/README.md index 16f77880e7a0..b1c2f2065493 100644 --- a/docs/release-notes/12/12-4-1/README.md +++ b/docs/release-notes/12/12-4-1/README.md @@ -10,27 +10,27 @@ release_date: 2022-12-14 Release date: 2022-12-14 -We released [OpenProject 12.4.1](https://community.openproject.com/versions/1612). +We released [OpenProject 12.4.1](https://community.openproject.org/versions/1612). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Margin under road map caption when version is overdue \[[#41676](https://community.openproject.com/wp/41676)\] -- Fixed: Issues with project selection on mobile \[[#44440](https://community.openproject.com/wp/44440)\] -- Fixed: Typo in translation source string \[[#45071](https://community.openproject.com/wp/45071)\] -- Fixed: Can not sort project CF in Administration \[[#45099](https://community.openproject.com/wp/45099)\] -- Fixed: Centos7 fails with "undefined symbol: PQconninfo" due to outdated postgresql-libs shared library \[[#45101](https://community.openproject.com/wp/45101)\] -- Fixed: Labels are not fully visible for date alerts in DE, FR, ES \[[#45163](https://community.openproject.com/wp/45163)\] -- Fixed: Work package wrongfully displayed as child candidate \[[#45171](https://community.openproject.com/wp/45171)\] -- Fixed: Member shown twice when filtering by group when in multiple groups \[[#45331](https://community.openproject.com/wp/45331)\] -- Fixed: Custom Fields in WP View (Full and Side) are scrubbed \[[#45343](https://community.openproject.com/wp/45343)\] -- Fixed: In Activity page, "subprojects" is checked when navigating between pages \[[#45348](https://community.openproject.com/wp/45348)\] -- Fixed: Can not delete files from WiKi pages \[[#45385](https://community.openproject.com/wp/45385)\] -- Fixed: Missing Translation for duration activity changes \[[#45391](https://community.openproject.com/wp/45391)\] -- Fixed: Bad Spacing between versions in Roadmap page \[[#45392](https://community.openproject.com/wp/45392)\] -- Fixed: Login and email missing during AzureAD OpenID Connect registration \[[#45415](https://community.openproject.com/wp/45415)\] -- Fixed: xeokit-metadata fails to find dotnet-runtime in Ubuntu 22.04 \[[#45442](https://community.openproject.com/wp/45442)\] +- Fixed: Margin under road map caption when version is overdue \[[#41676](https://community.openproject.org/wp/41676)\] +- Fixed: Issues with project selection on mobile \[[#44440](https://community.openproject.org/wp/44440)\] +- Fixed: Typo in translation source string \[[#45071](https://community.openproject.org/wp/45071)\] +- Fixed: Can not sort project CF in Administration \[[#45099](https://community.openproject.org/wp/45099)\] +- Fixed: Centos7 fails with "undefined symbol: PQconninfo" due to outdated postgresql-libs shared library \[[#45101](https://community.openproject.org/wp/45101)\] +- Fixed: Labels are not fully visible for date alerts in DE, FR, ES \[[#45163](https://community.openproject.org/wp/45163)\] +- Fixed: Work package wrongfully displayed as child candidate \[[#45171](https://community.openproject.org/wp/45171)\] +- Fixed: Member shown twice when filtering by group when in multiple groups \[[#45331](https://community.openproject.org/wp/45331)\] +- Fixed: Custom Fields in WP View (Full and Side) are scrubbed \[[#45343](https://community.openproject.org/wp/45343)\] +- Fixed: In Activity page, "subprojects" is checked when navigating between pages \[[#45348](https://community.openproject.org/wp/45348)\] +- Fixed: Can not delete files from WiKi pages \[[#45385](https://community.openproject.org/wp/45385)\] +- Fixed: Missing Translation for duration activity changes \[[#45391](https://community.openproject.org/wp/45391)\] +- Fixed: Bad Spacing between versions in Roadmap page \[[#45392](https://community.openproject.org/wp/45392)\] +- Fixed: Login and email missing during AzureAD OpenID Connect registration \[[#45415](https://community.openproject.org/wp/45415)\] +- Fixed: xeokit-metadata fails to find dotnet-runtime in Ubuntu 22.04 \[[#45442](https://community.openproject.org/wp/45442)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-4-2/README.md b/docs/release-notes/12/12-4-2/README.md index 328785fef55d..9f8880f1e8e5 100644 --- a/docs/release-notes/12/12-4-2/README.md +++ b/docs/release-notes/12/12-4-2/README.md @@ -10,25 +10,25 @@ release_date: 2023-01-16 Release date: 2023-01-16 -We released [OpenProject 12.4.2](https://community.openproject.com/versions/1614). +We released [OpenProject 12.4.2](https://community.openproject.org/versions/1614). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Password confirmation dialog doesn't work when using ENTER instead of clicking on Confirm \[[#44499](https://community.openproject.com/wp/44499)\] -- Fixed: File picker does not load directory listing when OAuth token is expired \[[#44916](https://community.openproject.com/wp/44916)\] -- Fixed: Activated checkbox in PDF export \[[#44940](https://community.openproject.com/wp/44940)\] -- Fixed: Change "Log time" step to 0.25h instead of 0.01h \[[#45091](https://community.openproject.com/wp/45091)\] -- Fixed: dots of Ü are missing in search autocomplete (Umlauts) \[[#45218](https://community.openproject.com/wp/45218)\] -- Fixed: Copying projects slow if groups with a lot of users are members in a lot of projects \[[#45224](https://community.openproject.com/wp/45224)\] -- Fixed: Help menu entries overlapping for non-English language settings \[[#45434](https://community.openproject.com/wp/45434)\] -- Fixed: Messy rendering of webhook show page \[[#45438](https://community.openproject.com/wp/45438)\] -- Fixed: Spacing issue in date alert dropdown \[[#45443](https://community.openproject.com/wp/45443)\] -- Fixed: Attributes that span both columns have too much spacing between label and input \[[#45445](https://community.openproject.com/wp/45445)\] -- Fixed: The finish date slider for a task via the gannt chart is not accurate \[[#45536](https://community.openproject.com/wp/45536)\] -- Fixed: Date alert creation job timing out \[[#45591](https://community.openproject.com/wp/45591)\] -- Fixed: New custom field with default value breaks comments \[[#45724](https://community.openproject.com/wp/45724)\] +- Fixed: Password confirmation dialog doesn't work when using ENTER instead of clicking on Confirm \[[#44499](https://community.openproject.org/wp/44499)\] +- Fixed: File picker does not load directory listing when OAuth token is expired \[[#44916](https://community.openproject.org/wp/44916)\] +- Fixed: Activated checkbox in PDF export \[[#44940](https://community.openproject.org/wp/44940)\] +- Fixed: Change "Log time" step to 0.25h instead of 0.01h \[[#45091](https://community.openproject.org/wp/45091)\] +- Fixed: dots of Ü are missing in search autocomplete (Umlauts) \[[#45218](https://community.openproject.org/wp/45218)\] +- Fixed: Copying projects slow if groups with a lot of users are members in a lot of projects \[[#45224](https://community.openproject.org/wp/45224)\] +- Fixed: Help menu entries overlapping for non-English language settings \[[#45434](https://community.openproject.org/wp/45434)\] +- Fixed: Messy rendering of webhook show page \[[#45438](https://community.openproject.org/wp/45438)\] +- Fixed: Spacing issue in date alert dropdown \[[#45443](https://community.openproject.org/wp/45443)\] +- Fixed: Attributes that span both columns have too much spacing between label and input \[[#45445](https://community.openproject.org/wp/45445)\] +- Fixed: The finish date slider for a task via the gantt chart is not accurate \[[#45536](https://community.openproject.org/wp/45536)\] +- Fixed: Date alert creation job timing out \[[#45591](https://community.openproject.org/wp/45591)\] +- Fixed: New custom field with default value breaks comments \[[#45724](https://community.openproject.org/wp/45724)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-4-3/README.md b/docs/release-notes/12/12-4-3/README.md index ac557f0f486b..5aae7b63c54c 100644 --- a/docs/release-notes/12/12-4-3/README.md +++ b/docs/release-notes/12/12-4-3/README.md @@ -10,16 +10,16 @@ release_date: 2023-01-30 Release date: 2023-01-30 -We released [OpenProject 12.4.3](https://community.openproject.com/versions/1621). +We released [OpenProject 12.4.3](https://community.openproject.org/versions/1621). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Custom field in cost report show "not found" after custom filed's value \[[#34978](https://community.openproject.com/wp/34978)\] -- Fixed: Race condition with outdated OAuth access token \[[#45799](https://community.openproject.com/wp/45799)\] -- Fixed: Notifications API are still showing errors in case of not authorized / other errors \[[#45854](https://community.openproject.com/wp/45854)\] -- Fixed: Administration: Permissions report page doesn't work in french in 12.4.1 \[[#45892](https://community.openproject.com/wp/45892)\] +- Fixed: Custom field in cost report show "not found" after custom filed's value \[[#34978](https://community.openproject.org/wp/34978)\] +- Fixed: Race condition with outdated OAuth access token \[[#45799](https://community.openproject.org/wp/45799)\] +- Fixed: Notifications API are still showing errors in case of not authorized / other errors \[[#45854](https://community.openproject.org/wp/45854)\] +- Fixed: Administration: Permissions report page doesn't work in french in 12.4.1 \[[#45892](https://community.openproject.org/wp/45892)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-4-4/README.md b/docs/release-notes/12/12-4-4/README.md index b2a4d48b6fdc..c1c7eca14751 100644 --- a/docs/release-notes/12/12-4-4/README.md +++ b/docs/release-notes/12/12-4-4/README.md @@ -10,17 +10,17 @@ release_date: 2023-02-15 Release date: 2023-02-15 -We released [OpenProject 12.4.4](https://community.openproject.com/versions/1623). +We released [OpenProject 12.4.4](https://community.openproject.org/versions/1623). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Deleting tmp/cache works when called manually but never by scheduled jobs \[[#44182](https://community.openproject.com/wp/44182)\] -- Fixed: Not possible to delete favicon and touch icon \[[#45997](https://community.openproject.com/wp/45997)\] -- Fixed: Sendmail not working in 12.4.3 \[[#46152](https://community.openproject.com/wp/46152)\] -- Fixed: Prevent OAuth refresh token race condition. \[[#46195](https://community.openproject.com/wp/46195)\] -- Fixed: Click started in modal, but dragged outside closes the modal \[[#46217](https://community.openproject.com/wp/46217)\] +- Fixed: Deleting tmp/cache works when called manually but never by scheduled jobs \[[#44182](https://community.openproject.org/wp/44182)\] +- Fixed: Not possible to delete favicon and touch icon \[[#45997](https://community.openproject.org/wp/45997)\] +- Fixed: Sendmail not working in 12.4.3 \[[#46152](https://community.openproject.org/wp/46152)\] +- Fixed: Prevent OAuth refresh token race condition. \[[#46195](https://community.openproject.org/wp/46195)\] +- Fixed: Click started in modal, but dragged outside closes the modal \[[#46217](https://community.openproject.org/wp/46217)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-4-5/README.md b/docs/release-notes/12/12-4-5/README.md index 12625d455bec..495ce66a92ac 100644 --- a/docs/release-notes/12/12-4-5/README.md +++ b/docs/release-notes/12/12-4-5/README.md @@ -10,11 +10,11 @@ release_date: 2023-02-23 Release date: 2023-02-23 -We released [OpenProject 12.4.5](https://community.openproject.com/versions/1657). +We released [OpenProject 12.4.5](https://community.openproject.org/versions/1657). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Timeout when bulk editing work package assignees across projects \[[#46284](https://community.openproject.com/wp/46284)\] -- Fixed: Groups can no longer have their notifications suppressed \[[#46330](https://community.openproject.com/wp/46330)\] +- Fixed: Timeout when bulk editing work package assignees across projects \[[#46284](https://community.openproject.org/wp/46284)\] +- Fixed: Groups can no longer have their notifications suppressed \[[#46330](https://community.openproject.org/wp/46330)\] diff --git a/docs/release-notes/12/12-5-0/README.md b/docs/release-notes/12/12-5-0/README.md index c9dca9f36417..1645c6e640cf 100644 --- a/docs/release-notes/12/12-5-0/README.md +++ b/docs/release-notes/12/12-5-0/README.md @@ -10,7 +10,7 @@ release_date: 2023-03-20 Release date: 2023-03-20 -We have released [OpenProject 12.5.0](https://community.openproject.com/versions/1611). +We have released [OpenProject 12.5.0](https://community.openproject.org/versions/1611). This new release is again packed with many new collaboration features, improvements and bug fixes. Version 12.5 brings the anticipated collaboration features for the **Nextcloud integration to the OpenProject side**. Nextcloud and OpenProject now offer users of both services a way to manage their projects and share files seamlessly and without disruption. @@ -112,107 +112,107 @@ With OpenProject 12.5, we are happy to announce that another Enterprise add-on w ### List of all bug fixes and changes -- Changed: Archive project via project settings by non admins \[[#3897](https://community.openproject.com/wp/3897)\] -- Changed: Change filter for default view: Latest activity \[[#29086](https://community.openproject.com/wp/29086)\] -- Changed: Work packages: Add finish date filter with additional overdue task check \[[#37145](https://community.openproject.com/wp/37145)\] -- Changed: Add print menu item to context menu of a wiki page \[[#37851](https://community.openproject.com/wp/37851)\] -- Changed: Update the list of operators available when filtering using multi-select attributes \[[#42012](https://community.openproject.com/wp/42012)\] -- Changed: Standardise date pickers outside of the main work package date field \[[#42358](https://community.openproject.com/wp/42358)\] -- Changed: Include nextcloud and attachments empty status drag and drop area \[[#43576](https://community.openproject.com/wp/43576)\] -- Changed: Make attachment lists and file link lists drop zones \[[#43577](https://community.openproject.com/wp/43577)\] -- Changed: Upload or link Nextcloud files from within the work package creation form \[[#43578](https://community.openproject.com/wp/43578)\] -- Changed: File picker \[[#43654](https://community.openproject.com/wp/43654)\] -- Changed: Location picker \[[#43655](https://community.openproject.com/wp/43655)\] -- Changed: Upload files to Nextcloud from within OpenProject \[[#43656](https://community.openproject.com/wp/43656)\] -- Changed: Link existing Nextcloud files from within OpenProject \[[#43657](https://community.openproject.com/wp/43657)\] -- Changed: [wiki] Be able to link work-package views \[[#43913](https://community.openproject.com/wp/43913)\] -- Changed: Helm charts for OpenProject \[[#44360](https://community.openproject.com/wp/44360)\] -- Changed: Show number of pull requests in the tab header \[[#44820](https://community.openproject.com/wp/44820)\] -- Changed: Remove hint that files have moved to the Files tab \[[#44902](https://community.openproject.com/wp/44902)\] -- Changed: Update text for empty Notification center \[[#44910](https://community.openproject.com/wp/44910)\] -- Changed: Keep state of Activity tab when switching forth and back to another tab \[[#45060](https://community.openproject.com/wp/45060)\] -- Changed: Update styling of User Activity \[[#45344](https://community.openproject.com/wp/45344)\] -- Changed: Update styling of detailed work package macro \[[#45455](https://community.openproject.com/wp/45455)\] -- Changed: Provide meaningful help when upload to Nextcloud fails due to file size \[[#45938](https://community.openproject.com/wp/45938)\] -- Changed: Remove Select All and Open Storage interaction elements from file pickers \[[#45963](https://community.openproject.com/wp/45963)\] -- Changed: Update NEW FEATURES teaser block on application start page \[[#45991](https://community.openproject.com/wp/45991)\] -- Changed: Update labels for project activity filters \[[#46123](https://community.openproject.com/wp/46123)\] -- Changed: Update date picker and associated components to use current theme colours \[[#46171](https://community.openproject.com/wp/46171)\] -- Changed: Hide previous and next month days in single datepicker \[[#46189](https://community.openproject.com/wp/46189)\] -- Changed: Accessibility for the new date pickers \[[#46211](https://community.openproject.com/wp/46211)\] -- Changed: Basic drop-down date picker for date fields that are already input fields \[[#46236](https://community.openproject.com/wp/46236)\] -- Changed: Datepicker: Update colours of mini calendar so non-working days are visible in all modes \[[#46237](https://community.openproject.com/wp/46237)\] -- Changed: Resolve conflict with files with the same name when upload \[[#46254](https://community.openproject.com/wp/46254)\] -- Changed: Release "Advanced filters" from Enterprise to Community \[[#46797](https://community.openproject.com/wp/46797)\] -- Changed: Use native date fields on basic single and range datepickers \[[#46814](https://community.openproject.com/wp/46814)\] -- Fixed: Misleading warning message when closing meeting agenda \[[#34533](https://community.openproject.com/wp/34533)\] -- Fixed: Confirmation message in previous language when changing language in My Account \[[#34594](https://community.openproject.com/wp/34594)\] -- Fixed: External auth providers treated as self registration \[[#42390](https://community.openproject.com/wp/42390)\] -- Fixed: WP Table View is scrolling itself when changing attributes \[[#42989](https://community.openproject.com/wp/42989)\] -- Fixed: Backlog error \[[#43225](https://community.openproject.com/wp/43225)\] -- Fixed: [AppSignal] incompatible character encodings: ASCII-8BIT and UTF-8 \[[#43898](https://community.openproject.com/wp/43898)\] -- Fixed: Notification center sometimes displays the activity log of the wrong work package in split screen \[[#44198](https://community.openproject.com/wp/44198)\] -- Fixed: File picker modal height changes when navigating the file structure \[[#44917](https://community.openproject.com/wp/44917)\] -- Fixed: Different font weight for date alert settings compared to other notification settings \[[#44959](https://community.openproject.com/wp/44959)\] -- Fixed: Concept and navigation changes on the file picker modal \[[#44965](https://community.openproject.com/wp/44965)\] -- Fixed: File picker: Directories with spaces don't load correctly \[[#44973](https://community.openproject.com/wp/44973)\] -- Fixed: Avatar blinking on team planner \[[#44992](https://community.openproject.com/wp/44992)\] -- Fixed: Missing images in Netxtcloud integration user guide \[[#45240](https://community.openproject.com/wp/45240)\] -- Fixed: WP-Grid does not highlight cards when initially loading \[[#45451](https://community.openproject.com/wp/45451)\] -- Fixed: WP-Table highlighting configuration misses all attributes highlighted hint \[[#45453](https://community.openproject.com/wp/45453)\] -- Fixed: WP-Grid does not align assignee avatar and dates over columns \[[#45454](https://community.openproject.com/wp/45454)\] -- Fixed: Confusing message that user was deleted, even though they will be locked and deleted asynchronously \[[#45459](https://community.openproject.com/wp/45459)\] -- Fixed: bundle install on current "dev" HEAD \[[#45489](https://community.openproject.com/wp/45489)\] -- Fixed: Too much spacing between the label and help text button \[[#45561](https://community.openproject.com/wp/45561)\] -- Fixed: Work package view layout breaks with long 'text' custom field values \[[#45566](https://community.openproject.com/wp/45566)\] -- Fixed: When TOTP fails due to clock skew, error is not easily discoverable \[[#45586](https://community.openproject.com/wp/45586)\] -- Fixed: Notifications not sent for new work packages when creating project from template \[[#45701](https://community.openproject.com/wp/45701)\] -- Fixed: Hover effect blue color is missing for NC empty drag and drop area \[[#45708](https://community.openproject.com/wp/45708)\] -- Fixed: Edit Time-Entries from Widget "VERBUCHTE ZEIT (LETZTE 7 TAGE)" doesn't work \[[#45742](https://community.openproject.com/wp/45742)\] -- Fixed: Uncaught (in promise): ReferenceError: toggle_disabled_state is not defined \[[#45766](https://community.openproject.com/wp/45766)\] -- Fixed: OIDC post_logout_redirect_uri does not work \[[#45775](https://community.openproject.com/wp/45775)\] -- Fixed: Project list dropdown actions cut-off \[[#45827](https://community.openproject.com/wp/45827)\] -- Fixed: Unnecessary comma in the text when there are no file storages set up for a project \[[#45858](https://community.openproject.com/wp/45858)\] -- Fixed: Erroneous behavior on Notification center page when there are +99 notifications and we mark all as read \[[#45912](https://community.openproject.com/wp/45912)\] -- Fixed: Remove unnecessary title attributes from list items in file and location picker modals \[[#45947](https://community.openproject.com/wp/45947)\] -- Fixed: Tool tips for list items not perceivable as such \[[#45956](https://community.openproject.com/wp/45956)\] -- Fixed: Switching to manual scheduling does not make dates in the calendar selectable \[[#45962](https://community.openproject.com/wp/45962)\] -- Fixed: Use Primary/Main colour for folder file type and storage icons \[[#45964](https://community.openproject.com/wp/45964)\] -- Fixed: Setting definitions validations access nonloaded constants \[[#45965](https://community.openproject.com/wp/45965)\] -- Fixed: When several users are mentioned via @, not all users receive notification \[[#45999](https://community.openproject.com/wp/45999)\] -- Fixed: Missing translation for error message when multiple files are dragged and dropped \[[#46009](https://community.openproject.com/wp/46009)\] -- Fixed: There is no empty status for empty folders \[[#46057](https://community.openproject.com/wp/46057)\] -- Fixed: English language displayed multiple times in available languages \[[#46067](https://community.openproject.com/wp/46067)\] -- Fixed: Adding new type to lot of projects with custom fields times out \[[#46118](https://community.openproject.com/wp/46118)\] -- Fixed: Bottom round corners on the modal are not rounded \[[#46144](https://community.openproject.com/wp/46144)\] -- Fixed: Loading animation not centred on mobile \[[#46148](https://community.openproject.com/wp/46148)\] -- Fixed: Standard date picker small regression issues \[[#46156](https://community.openproject.com/wp/46156)\] -- Fixed: Date picker on Non-working days: not enough spacing between the date field and the calendar + arrows \[[#46159](https://community.openproject.com/wp/46159)\] -- Fixed: White space added to page when datepicker opens to bottom \[[#46164](https://community.openproject.com/wp/46164)\] -- Fixed: "Create new account" modal does no longer have the scrollbar so Create button is not entirely visible \[[#46172](https://community.openproject.com/wp/46172)\] -- Fixed: [AppSignal] "No route matches" error in projects/identifier controller \[[#46176](https://community.openproject.com/wp/46176)\] -- Fixed: Errors on Buy now teaser vs. Manage subscription button \[[#46204](https://community.openproject.com/wp/46204)\] -- Fixed: Fix hover effect on days in the new date picker \[[#46221](https://community.openproject.com/wp/46221)\] -- Fixed: Wrong hover color on month selector arrow in new date picker \[[#46228](https://community.openproject.com/wp/46228)\] -- Fixed: Error on filtering of work packages \[[#46249](https://community.openproject.com/wp/46249)\] -- Fixed: Activities are not Listing \[[#46278](https://community.openproject.com/wp/46278)\] -- Fixed: Wrong text references in the non working days admin page \[[#46305](https://community.openproject.com/wp/46305)\] -- Fixed: Backlogs: Default export card configuration invalid and page does not show up \[[#46308](https://community.openproject.com/wp/46308)\] -- Fixed: Login back URL not working correctly for notification details \[[#46348](https://community.openproject.com/wp/46348)\] -- Fixed: Project filter "Created on" not accessible for all users \[[#46350](https://community.openproject.com/wp/46350)\] -- Fixed: Wiki: Anchor or chain URL incorrect \[[#46351](https://community.openproject.com/wp/46351)\] -- Fixed: date picker: selected dates in mini calendar don't have a hover (primary dark) \[[#46436](https://community.openproject.com/wp/46436)\] -- Fixed: Gateway timeout when copying work package with many descendants \[[#46476](https://community.openproject.com/wp/46476)\] -- Fixed: Project filter in work package form configuration allows no typeahead \[[#46477](https://community.openproject.com/wp/46477)\] -- Fixed: inconsistent modals on iOS \[[#46495](https://community.openproject.com/wp/46495)\] -- Fixed: Date picker: Left border of the selected date cut off when in first column \[[#46648](https://community.openproject.com/wp/46648)\] -- Fixed: Dropdown menu three dots without long texts \[[#46652](https://community.openproject.com/wp/46652)\] -- Fixed: manual scheduling is not retained when reopening the date picker in a milestone. \[[#46721](https://community.openproject.com/wp/46721)\] -- Fixed: Toggling working days in milestone enables previously disabled related dates \[[#46789](https://community.openproject.com/wp/46789)\] -- Epic: Instance-wide public holidays (non-working days) \[[#41226](https://community.openproject.com/wp/41226)\] -- Epic: Add and remove links to files in Nextcloud in the work packages details view \[[#41351](https://community.openproject.com/wp/41351)\] -- Epic: Show changes of project attributes in project activity view \[[#43852](https://community.openproject.com/wp/43852)\] -- Epic: Cross-application main menu for dPhoenixSuite/Sovereign Administrative Work Place \[[#44297](https://community.openproject.com/wp/44297)\] +- Changed: Archive project via project settings by non admins \[[#3897](https://community.openproject.org/wp/3897)\] +- Changed: Change filter for default view: Latest activity \[[#29086](https://community.openproject.org/wp/29086)\] +- Changed: Work packages: Add finish date filter with additional overdue task check \[[#37145](https://community.openproject.org/wp/37145)\] +- Changed: Add print menu item to context menu of a wiki page \[[#37851](https://community.openproject.org/wp/37851)\] +- Changed: Update the list of operators available when filtering using multi-select attributes \[[#42012](https://community.openproject.org/wp/42012)\] +- Changed: Standardize date pickers outside of the main work package date field \[[#42358](https://community.openproject.org/wp/42358)\] +- Changed: Include nextcloud and attachments empty status drag and drop area \[[#43576](https://community.openproject.org/wp/43576)\] +- Changed: Make attachment lists and file link lists drop zones \[[#43577](https://community.openproject.org/wp/43577)\] +- Changed: Upload or link Nextcloud files from within the work package creation form \[[#43578](https://community.openproject.org/wp/43578)\] +- Changed: File picker \[[#43654](https://community.openproject.org/wp/43654)\] +- Changed: Location picker \[[#43655](https://community.openproject.org/wp/43655)\] +- Changed: Upload files to Nextcloud from within OpenProject \[[#43656](https://community.openproject.org/wp/43656)\] +- Changed: Link existing Nextcloud files from within OpenProject \[[#43657](https://community.openproject.org/wp/43657)\] +- Changed: [wiki] Be able to link work-package views \[[#43913](https://community.openproject.org/wp/43913)\] +- Changed: Helm charts for OpenProject \[[#44360](https://community.openproject.org/wp/44360)\] +- Changed: Show number of pull requests in the tab header \[[#44820](https://community.openproject.org/wp/44820)\] +- Changed: Remove hint that files have moved to the Files tab \[[#44902](https://community.openproject.org/wp/44902)\] +- Changed: Update text for empty Notification center \[[#44910](https://community.openproject.org/wp/44910)\] +- Changed: Keep state of Activity tab when switching forth and back to another tab \[[#45060](https://community.openproject.org/wp/45060)\] +- Changed: Update styling of User Activity \[[#45344](https://community.openproject.org/wp/45344)\] +- Changed: Update styling of detailed work package macro \[[#45455](https://community.openproject.org/wp/45455)\] +- Changed: Provide meaningful help when upload to Nextcloud fails due to file size \[[#45938](https://community.openproject.org/wp/45938)\] +- Changed: Remove Select All and Open Storage interaction elements from file pickers \[[#45963](https://community.openproject.org/wp/45963)\] +- Changed: Update NEW FEATURES teaser block on application start page \[[#45991](https://community.openproject.org/wp/45991)\] +- Changed: Update labels for project activity filters \[[#46123](https://community.openproject.org/wp/46123)\] +- Changed: Update date picker and associated components to use current theme colors \[[#46171](https://community.openproject.org/wp/46171)\] +- Changed: Hide previous and next month days in single datepicker \[[#46189](https://community.openproject.org/wp/46189)\] +- Changed: Accessibility for the new date pickers \[[#46211](https://community.openproject.org/wp/46211)\] +- Changed: Basic drop-down date picker for date fields that are already input fields \[[#46236](https://community.openproject.org/wp/46236)\] +- Changed: Datepicker: Update colors of mini calendar so non-working days are visible in all modes \[[#46237](https://community.openproject.org/wp/46237)\] +- Changed: Resolve conflict with files with the same name when upload \[[#46254](https://community.openproject.org/wp/46254)\] +- Changed: Release "Advanced filters" from Enterprise to Community \[[#46797](https://community.openproject.org/wp/46797)\] +- Changed: Use native date fields on basic single and range datepickers \[[#46814](https://community.openproject.org/wp/46814)\] +- Fixed: Misleading warning message when closing meeting agenda \[[#34533](https://community.openproject.org/wp/34533)\] +- Fixed: Confirmation message in previous language when changing language in My Account \[[#34594](https://community.openproject.org/wp/34594)\] +- Fixed: External auth providers treated as self registration \[[#42390](https://community.openproject.org/wp/42390)\] +- Fixed: WP Table View is scrolling itself when changing attributes \[[#42989](https://community.openproject.org/wp/42989)\] +- Fixed: Backlog error \[[#43225](https://community.openproject.org/wp/43225)\] +- Fixed: [AppSignal] incompatible character encodings: ASCII-8BIT and UTF-8 \[[#43898](https://community.openproject.org/wp/43898)\] +- Fixed: Notification center sometimes displays the activity log of the wrong work package in split screen \[[#44198](https://community.openproject.org/wp/44198)\] +- Fixed: File picker modal height changes when navigating the file structure \[[#44917](https://community.openproject.org/wp/44917)\] +- Fixed: Different font weight for date alert settings compared to other notification settings \[[#44959](https://community.openproject.org/wp/44959)\] +- Fixed: Concept and navigation changes on the file picker modal \[[#44965](https://community.openproject.org/wp/44965)\] +- Fixed: File picker: Directories with spaces don't load correctly \[[#44973](https://community.openproject.org/wp/44973)\] +- Fixed: Avatar blinking on team planner \[[#44992](https://community.openproject.org/wp/44992)\] +- Fixed: Missing images in Nextcloud integration user guide \[[#45240](https://community.openproject.org/wp/45240)\] +- Fixed: WP-Grid does not highlight cards when initially loading \[[#45451](https://community.openproject.org/wp/45451)\] +- Fixed: WP-Table highlighting configuration misses all attributes highlighted hint \[[#45453](https://community.openproject.org/wp/45453)\] +- Fixed: WP-Grid does not align assignee avatar and dates over columns \[[#45454](https://community.openproject.org/wp/45454)\] +- Fixed: Confusing message that user was deleted, even though they will be locked and deleted asynchronously \[[#45459](https://community.openproject.org/wp/45459)\] +- Fixed: bundle install on current "dev" HEAD \[[#45489](https://community.openproject.org/wp/45489)\] +- Fixed: Too much spacing between the label and help text button \[[#45561](https://community.openproject.org/wp/45561)\] +- Fixed: Work package view layout breaks with long 'text' custom field values \[[#45566](https://community.openproject.org/wp/45566)\] +- Fixed: When TOTP fails due to clock skew, error is not easily discoverable \[[#45586](https://community.openproject.org/wp/45586)\] +- Fixed: Notifications not sent for new work packages when creating project from template \[[#45701](https://community.openproject.org/wp/45701)\] +- Fixed: Hover effect blue color is missing for NC empty drag and drop area \[[#45708](https://community.openproject.org/wp/45708)\] +- Fixed: Edit Time-Entries from Widget "TIME BOOKED (LAST 7 DAYS)" doesn't work \[[#45742](https://community.openproject.org/wp/45742)\] +- Fixed: Uncaught (in promise): ReferenceError: toggle_disabled_state is not defined \[[#45766](https://community.openproject.org/wp/45766)\] +- Fixed: OIDC post_logout_redirect_uri does not work \[[#45775](https://community.openproject.org/wp/45775)\] +- Fixed: Project list dropdown actions cut-off \[[#45827](https://community.openproject.org/wp/45827)\] +- Fixed: Unnecessary comma in the text when there are no file storages set up for a project \[[#45858](https://community.openproject.org/wp/45858)\] +- Fixed: Erroneous behavior on Notification center page when there are +99 notifications and we mark all as read \[[#45912](https://community.openproject.org/wp/45912)\] +- Fixed: Remove unnecessary title attributes from list items in file and location picker modals \[[#45947](https://community.openproject.org/wp/45947)\] +- Fixed: Tool tips for list items not perceivable as such \[[#45956](https://community.openproject.org/wp/45956)\] +- Fixed: Switching to manual scheduling does not make dates in the calendar selectable \[[#45962](https://community.openproject.org/wp/45962)\] +- Fixed: Use Primary/Main color for folder file type and storage icons \[[#45964](https://community.openproject.org/wp/45964)\] +- Fixed: Setting definitions validations access non-loaded constants \[[#45965](https://community.openproject.org/wp/45965)\] +- Fixed: When several users are mentioned via @, not all users receive notification \[[#45999](https://community.openproject.org/wp/45999)\] +- Fixed: Missing translation for error message when multiple files are dragged and dropped \[[#46009](https://community.openproject.org/wp/46009)\] +- Fixed: There is no empty status for empty folders \[[#46057](https://community.openproject.org/wp/46057)\] +- Fixed: English language displayed multiple times in available languages \[[#46067](https://community.openproject.org/wp/46067)\] +- Fixed: Adding new type to lot of projects with custom fields times out \[[#46118](https://community.openproject.org/wp/46118)\] +- Fixed: Bottom round corners on the modal are not rounded \[[#46144](https://community.openproject.org/wp/46144)\] +- Fixed: Loading animation not centred on mobile \[[#46148](https://community.openproject.org/wp/46148)\] +- Fixed: Standard date picker small regression issues \[[#46156](https://community.openproject.org/wp/46156)\] +- Fixed: Date picker on Non-working days: not enough spacing between the date field and the calendar + arrows \[[#46159](https://community.openproject.org/wp/46159)\] +- Fixed: White space added to page when datepicker opens to bottom \[[#46164](https://community.openproject.org/wp/46164)\] +- Fixed: "Create new account" modal does no longer have the scrollbar so Create button is not entirely visible \[[#46172](https://community.openproject.org/wp/46172)\] +- Fixed: [AppSignal] "No route matches" error in projects/identifier controller \[[#46176](https://community.openproject.org/wp/46176)\] +- Fixed: Errors on Buy now teaser vs. Manage subscription button \[[#46204](https://community.openproject.org/wp/46204)\] +- Fixed: Fix hover effect on days in the new date picker \[[#46221](https://community.openproject.org/wp/46221)\] +- Fixed: Wrong hover color on month selector arrow in new date picker \[[#46228](https://community.openproject.org/wp/46228)\] +- Fixed: Error on filtering of work packages \[[#46249](https://community.openproject.org/wp/46249)\] +- Fixed: Activities are not Listing \[[#46278](https://community.openproject.org/wp/46278)\] +- Fixed: Wrong text references in the non working days admin page \[[#46305](https://community.openproject.org/wp/46305)\] +- Fixed: Backlogs: Default export card configuration invalid and page does not show up \[[#46308](https://community.openproject.org/wp/46308)\] +- Fixed: Login back URL not working correctly for notification details \[[#46348](https://community.openproject.org/wp/46348)\] +- Fixed: Project filter "Created on" not accessible for all users \[[#46350](https://community.openproject.org/wp/46350)\] +- Fixed: Wiki: Anchor or chain URL incorrect \[[#46351](https://community.openproject.org/wp/46351)\] +- Fixed: date picker: selected dates in mini calendar don't have a hover (primary dark) \[[#46436](https://community.openproject.org/wp/46436)\] +- Fixed: Gateway timeout when copying work package with many descendants \[[#46476](https://community.openproject.org/wp/46476)\] +- Fixed: Project filter in work package form configuration allows no typeahead \[[#46477](https://community.openproject.org/wp/46477)\] +- Fixed: inconsistent modals on iOS \[[#46495](https://community.openproject.org/wp/46495)\] +- Fixed: Date picker: Left border of the selected date cut off when in first column \[[#46648](https://community.openproject.org/wp/46648)\] +- Fixed: Dropdown menu three dots without long texts \[[#46652](https://community.openproject.org/wp/46652)\] +- Fixed: manual scheduling is not retained when reopening the date picker in a milestone. \[[#46721](https://community.openproject.org/wp/46721)\] +- Fixed: Toggling working days in milestone enables previously disabled related dates \[[#46789](https://community.openproject.org/wp/46789)\] +- Epic: Instance-wide public holidays (non-working days) \[[#41226](https://community.openproject.org/wp/41226)\] +- Epic: Add and remove links to files in Nextcloud in the work packages details view \[[#41351](https://community.openproject.org/wp/41351)\] +- Epic: Show changes of project attributes in project activity view \[[#43852](https://community.openproject.org/wp/43852)\] +- Epic: Cross-application main menu for dPhoenixSuite/Sovereign Administrative Work Place \[[#44297](https://community.openproject.org/wp/44297)\] ## Credits and contributions A very special thank you goes to the following sponsors for features and improvements of this release: diff --git a/docs/release-notes/12/12-5-1/README.md b/docs/release-notes/12/12-5-1/README.md index c34a28e7fa22..df2de60d02ab 100644 --- a/docs/release-notes/12/12-5-1/README.md +++ b/docs/release-notes/12/12-5-1/README.md @@ -10,11 +10,11 @@ release_date: 2023-03-20 Release date: 2023-03-20 -We released [OpenProject 12.5.1](https://community.openproject.com/versions/1692). +We released [OpenProject 12.5.1](https://community.openproject.org/versions/1692). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Changing non working days in Polish fails \[[#47020](https://community.openproject.com/wp/47020)\] -- Fixed: Unable to login via oauth provider (e.g. Azure) \[[#47044](https://community.openproject.com/wp/47044)\] +- Fixed: Changing non working days in Polish fails \[[#47020](https://community.openproject.org/wp/47020)\] +- Fixed: Unable to login via oauth provider (e.g. Azure) \[[#47044](https://community.openproject.org/wp/47044)\] diff --git a/docs/release-notes/12/12-5-2/README.md b/docs/release-notes/12/12-5-2/README.md index 36c85d3e38a4..a9b1220b88a2 100644 --- a/docs/release-notes/12/12-5-2/README.md +++ b/docs/release-notes/12/12-5-2/README.md @@ -10,21 +10,21 @@ release_date: 2023-03-28 Release date: 2023-03-28 -We released [OpenProject 12.5.2](https://community.openproject.com/versions/1693). +We released [OpenProject 12.5.2](https://community.openproject.org/versions/1693). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: [AppSignal] incompatible character encodings: ASCII-8BIT and UTF-8 \[[#43898](https://community.openproject.com/wp/43898)\] -- Fixed: Missing deletion confirmation for subprojects \[[#45935](https://community.openproject.com/wp/45935)\] -- Fixed: Green button turns to black on hover \[[#47026](https://community.openproject.com/wp/47026)\] -- Fixed: Time log entries too coarse \[[#47027](https://community.openproject.com/wp/47027)\] -- Fixed: Burndown charts empty since 12.5 \[[#47079](https://community.openproject.com/wp/47079)\] -- Fixed: Direct download of a storage file fails \[[#47113](https://community.openproject.com/wp/47113)\] -- Fixed: Fix direct uploads when Nextcloud configured without pretty URLs \[[#47152](https://community.openproject.com/wp/47152)\] -- Fixed: Swagger UI is not rendering for API docs \[[#47157](https://community.openproject.com/wp/47157)\] -- Changed: Add hint if Nextcloud App "OpenProject Integration" needs upgrade for 12.5 \[[#47021](https://community.openproject.com/wp/47021)\] +- Fixed: [AppSignal] incompatible character encodings: ASCII-8BIT and UTF-8 \[[#43898](https://community.openproject.org/wp/43898)\] +- Fixed: Missing deletion confirmation for subprojects \[[#45935](https://community.openproject.org/wp/45935)\] +- Fixed: Green button turns to black on hover \[[#47026](https://community.openproject.org/wp/47026)\] +- Fixed: Time log entries too coarse \[[#47027](https://community.openproject.org/wp/47027)\] +- Fixed: Burndown charts empty since 12.5 \[[#47079](https://community.openproject.org/wp/47079)\] +- Fixed: Direct download of a storage file fails \[[#47113](https://community.openproject.org/wp/47113)\] +- Fixed: Fix direct uploads when Nextcloud configured without pretty URLs \[[#47152](https://community.openproject.org/wp/47152)\] +- Fixed: Swagger UI is not rendering for API docs \[[#47157](https://community.openproject.org/wp/47157)\] +- Changed: Add hint if Nextcloud App "OpenProject Integration" needs upgrade for 12.5 \[[#47021](https://community.openproject.org/wp/47021)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-5-3/README.md b/docs/release-notes/12/12-5-3/README.md index 9667fe8aebf1..bc0bc8935d87 100644 --- a/docs/release-notes/12/12-5-3/README.md +++ b/docs/release-notes/12/12-5-3/README.md @@ -10,23 +10,23 @@ release_date: 2023-04-24 Release date: 2023-04-24 -We released [OpenProject 12.5.3](https://community.openproject.com/versions/1694). +We released [OpenProject 12.5.3](https://community.openproject.org/versions/1694). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Titles of related work packages are unecessarily truncated. Full titles are not accessible. \[[#44828](https://community.openproject.com/wp/44828)\] -- Fixed: Date picker: selected dates in mini calendar don't have a hover (primary dark) \[[#46436](https://community.openproject.com/wp/46436)\] -- Fixed: Non-working Days/Holidays selection with 12.5 update \[[#47057](https://community.openproject.com/wp/47057)\] -- Fixed: Project filter values drop down cut off \[[#47072](https://community.openproject.com/wp/47072)\] -- Fixed: In projects filter selected values keep being suggested \[[#47074](https://community.openproject.com/wp/47074)\] -- Fixed: Acitivity page not working correctly \[[#47203](https://community.openproject.com/wp/47203)\] -- Fixed: XLS export of work package with description cannot be opened by Excel if the description contains a table \[[#47513](https://community.openproject.com/wp/47513)\] -- Fixed: Cannot archive a project that has archived sub-projects \[[#47599](https://community.openproject.com/wp/47599)\] -- Fixed: 'TypeError: can't cast Array' during db:migrate \[[#47620](https://community.openproject.com/wp/47620)\] -- Fixed: Anyone can sign up using Google even if user registration is disabled \[[#47622](https://community.openproject.com/wp/47622)\] -- Fixed: inbound emails uses "move_on_success" and "move_on_failure" error \[[#47633](https://community.openproject.com/wp/47633)\] +- Fixed: Titles of related work packages are unnecessarily truncated. Full titles are not accessible. \[[#44828](https://community.openproject.org/wp/44828)\] +- Fixed: Date picker: selected dates in mini calendar don't have a hover (primary dark) \[[#46436](https://community.openproject.org/wp/46436)\] +- Fixed: Non-working Days/Holidays selection with 12.5 update \[[#47057](https://community.openproject.org/wp/47057)\] +- Fixed: Project filter values drop down cut off \[[#47072](https://community.openproject.org/wp/47072)\] +- Fixed: In projects filter selected values keep being suggested \[[#47074](https://community.openproject.org/wp/47074)\] +- Fixed: Activity page not working correctly \[[#47203](https://community.openproject.org/wp/47203)\] +- Fixed: XLS export of work package with description cannot be opened by Excel if the description contains a table \[[#47513](https://community.openproject.org/wp/47513)\] +- Fixed: Cannot archive a project that has archived sub-projects \[[#47599](https://community.openproject.org/wp/47599)\] +- Fixed: 'TypeError: can't cast Array' during db:migrate \[[#47620](https://community.openproject.org/wp/47620)\] +- Fixed: Anyone can sign up using Google even if user registration is disabled \[[#47622](https://community.openproject.org/wp/47622)\] +- Fixed: inbound emails uses "move_on_success" and "move_on_failure" error \[[#47633](https://community.openproject.org/wp/47633)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-5-4/README.md b/docs/release-notes/12/12-5-4/README.md index 660f429945dc..8d546c2f59a2 100644 --- a/docs/release-notes/12/12-5-4/README.md +++ b/docs/release-notes/12/12-5-4/README.md @@ -10,12 +10,12 @@ release_date: 2023-05-02 Release date: 2023-05-02 -We released [OpenProject 12.5.4](https://community.openproject.com/versions/1728). +We released [OpenProject 12.5.4](https://community.openproject.org/versions/1728). The release contains two security related bug fixes and we recommend updating to the newest version. -### CVE-2023-31140: Invalidation of existing sessions when 2FA activated \[[#48035](https://community.openproject.com/wp/48035)\] +### CVE-2023-31140: Invalidation of existing sessions when 2FA activated \[[#48035](https://community.openproject.org/wp/48035)\] When a user registers and confirms their first two-factor authentication (2FA) device for an account, existing logged in sessions for that user account are not terminated. Likewise, if an administrators creates a mobile phone 2FA device on behalf of a user, their existing sessions are not terminated. The issue has been resolved in OpenProject version 12.5.4 by actively terminating sessions of user accounts having registered and confirmed a 2FA device. @@ -27,7 +27,7 @@ For more information, [please see our security advisory](https://github.com/opf/ As a workaround, users who register the first 2FA device on their account can manually log out to terminate all other active sessions. This is the default behavior of OpenProject but might be disabled [through a configuration option](../../../installation-and-operations/configuration/#setting-session-options). Double check that this option is not overridden if you plan to employ the workaround. -### Invalidation of password reset link when user changes password in the meantime \[[#48036](https://community.openproject.com/wp/48036)\] +### Invalidation of password reset link when user changes password in the meantime \[[#48036](https://community.openproject.org/wp/48036)\] When a user requests a password reset, an email is sent with a link to confirm and reset the password. If the user changes the password in an active session in the meantime, the password reset link was not invalidated and continued to be usable for the duration of its validity period. @@ -39,12 +39,12 @@ This security related issue was responsibly disclosed by [Vaishnavi Pardeshi](ma #### Bug fixes and changes -- Fixed: Google reCAPTCHA v2 and V3 changed implementation \[[#44115](https://community.openproject.com/wp/44115)\] -- Fixed: User activity: Previous link removes user parameter from URL \[[#47855](https://community.openproject.com/wp/47855)\] -- Fixed: Work package HTML titles needlessly truncated \[[#47876](https://community.openproject.com/wp/47876)\] -- Fixed: Wrong spacing in Firefox when using line breaks in user content tables \[[#48027](https://community.openproject.com/wp/48027)\] -- Fixed: Previously Created Session Continue Being Valid After 2FA Activation \[[#48035](https://community.openproject.com/wp/48035)\] -- Fixed: Forgotten password link does not expire when user changes password in the meantime \[[#48036](https://community.openproject.com/wp/48036)\] +- Fixed: Google reCAPTCHA v2 and V3 changed implementation \[[#44115](https://community.openproject.org/wp/44115)\] +- Fixed: User activity: Previous link removes user parameter from URL \[[#47855](https://community.openproject.org/wp/47855)\] +- Fixed: Work package HTML titles needlessly truncated \[[#47876](https://community.openproject.org/wp/47876)\] +- Fixed: Wrong spacing in Firefox when using line breaks in user content tables \[[#48027](https://community.openproject.org/wp/48027)\] +- Fixed: Previously Created Session Continue Being Valid After 2FA Activation \[[#48035](https://community.openproject.org/wp/48035)\] +- Fixed: Forgotten password link does not expire when user changes password in the meantime \[[#48036](https://community.openproject.org/wp/48036)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-5-5/README.md b/docs/release-notes/12/12-5-5/README.md index 6c9baebaf503..1a1837a06536 100644 --- a/docs/release-notes/12/12-5-5/README.md +++ b/docs/release-notes/12/12-5-5/README.md @@ -10,18 +10,18 @@ release_date: 2023-05-16 Release date: 2023-05-16 -We released [OpenProject 12.5.5](https://community.openproject.com/versions/1761). +We released [OpenProject 12.5.5](https://community.openproject.org/versions/1761). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: API v3 Group List Api sometimes misses embedded members field \[[#42303](https://community.openproject.com/wp/42303)\] -- Fixed: Wrong date format for the Slovenian language \[[#48032](https://community.openproject.com/wp/48032)\] -- Fixed: MyProjectPageToGrid migration fails \[[#48122](https://community.openproject.com/wp/48122)\] -- Fixed: Missing translation for "Comment added" on work package activity tracking \[[#48157](https://community.openproject.com/wp/48157)\] -- Fixed: Links from the welcome text stop working when text is edited \[[#48158](https://community.openproject.com/wp/48158)\] -- Fixed: Document not listing project name under My Page \[[#48177](https://community.openproject.com/wp/48177)\] +- Fixed: API v3 Group List Api sometimes misses embedded members field \[[#42303](https://community.openproject.org/wp/42303)\] +- Fixed: Wrong date format for the Slovenian language \[[#48032](https://community.openproject.org/wp/48032)\] +- Fixed: MyProjectPageToGrid migration fails \[[#48122](https://community.openproject.org/wp/48122)\] +- Fixed: Missing translation for "Comment added" on work package activity tracking \[[#48157](https://community.openproject.org/wp/48157)\] +- Fixed: Links from the welcome text stop working when text is edited \[[#48158](https://community.openproject.org/wp/48158)\] +- Fixed: Document not listing project name under My Page \[[#48177](https://community.openproject.org/wp/48177)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-5-6/README.md b/docs/release-notes/12/12-5-6/README.md index bda95d02300a..32cbb43d1f4a 100644 --- a/docs/release-notes/12/12-5-6/README.md +++ b/docs/release-notes/12/12-5-6/README.md @@ -10,7 +10,7 @@ release_date: 2023-06-01 Release date: 2023-06-01 -We released [OpenProject 12.5.6](https://community.openproject.com/versions/1794). +We released [OpenProject 12.5.6](https://community.openproject.org/versions/1794). The release contains a security related bug fix and we recommend updating to the newest version. ### CVE-2023-31140: Project identifier information leakage through robots.txt @@ -23,7 +23,7 @@ For more information, [please see our security advisory](https://github.com/opf/ **Patches** -You can download the following patchfile to apply the patch to any OpenProject version > 10.0: https://patch-diff.githubusercontent.com/raw/opf/openproject/pull/12708.patch +You can download the following patch file to apply the patch to any OpenProject version > 10.0: https://patch-diff.githubusercontent.com/raw/opf/openproject/pull/12708.patch **Workaround** If you are unable to update or apply the provided patch, mark any public project as non-public for the time being and give anyone in need of access to the project a membership. @@ -32,13 +32,13 @@ If you are unable to update or apply the provided patch, mark any public project #### Bug fixes and changes -- Changed: Add packaged installation support for SLES 15 \[[#44117](https://community.openproject.com/wp/44117)\] -- Changed: Allow URL behind the application logo to be configurable \[[#48251](https://community.openproject.com/wp/48251)\] -- Fixed: Moving in Kanban board having a "is not" project filter changes the project of the work packages \[[#44895](https://community.openproject.com/wp/44895)\] -- Fixed: Upgrade migration error "smtp_openssl_verify_mode is not writable" \[[#48125](https://community.openproject.com/wp/48125)\] -- Fixed: OpenProject officially supports Debian 9 while Postgres does not anymore. \[[#48245](https://community.openproject.com/wp/48245)\] -- Fixed: robots.txt leaks public project identifiers \[[#48338](https://community.openproject.com/wp/48338)\] -- Fixed: Unchecked copy options are still copied in the new project \[[#48351](https://community.openproject.com/wp/48351)\] +- Changed: Add packaged installation support for SLES 15 \[[#44117](https://community.openproject.org/wp/44117)\] +- Changed: Allow URL behind the application logo to be configurable \[[#48251](https://community.openproject.org/wp/48251)\] +- Fixed: Moving in Kanban board having a "is not" project filter changes the project of the work packages \[[#44895](https://community.openproject.org/wp/44895)\] +- Fixed: Upgrade migration error "smtp_openssl_verify_mode is not writable" \[[#48125](https://community.openproject.org/wp/48125)\] +- Fixed: OpenProject officially supports Debian 9 while Postgres does not anymore. \[[#48245](https://community.openproject.org/wp/48245)\] +- Fixed: robots.txt leaks public project identifiers \[[#48338](https://community.openproject.org/wp/48338)\] +- Fixed: Unchecked copy options are still copied in the new project \[[#48351](https://community.openproject.org/wp/48351)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-5-7/README.md b/docs/release-notes/12/12-5-7/README.md index cf71956d9f39..ce4cf2166bd0 100644 --- a/docs/release-notes/12/12-5-7/README.md +++ b/docs/release-notes/12/12-5-7/README.md @@ -10,15 +10,15 @@ release_date: 2023-06-14 Release date: 2023-06-14 -We released [OpenProject 12.5.7](https://community.openproject.com/versions/1796). +We released [OpenProject 12.5.7](https://community.openproject.org/versions/1796). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Changed: Quick-Wins to make blue boxes easier to understand \[[#44340](https://community.openproject.com/wp/44340)\] -- Fixed: Milestone cannot be dragged left-right on the calendar \[[#48334](https://community.openproject.com/wp/48334)\] -- Fixed: Docker linux/arm64 image raise "/app/docker/prod/gosu: cannot execute binary file: Exec format error" \[[#48395](https://community.openproject.com/wp/48395)\] +- Changed: Quick-Wins to make blue boxes easier to understand \[[#44340](https://community.openproject.org/wp/44340)\] +- Fixed: Milestone cannot be dragged left-right on the calendar \[[#48334](https://community.openproject.org/wp/48334)\] +- Fixed: Docker linux/arm64 image raise "/app/docker/prod/gosu: cannot execute binary file: Exec format error" \[[#48395](https://community.openproject.org/wp/48395)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/12/12-5-8/README.md b/docs/release-notes/12/12-5-8/README.md index 28b4db46d366..7fb10cfe53be 100644 --- a/docs/release-notes/12/12-5-8/README.md +++ b/docs/release-notes/12/12-5-8/README.md @@ -10,24 +10,24 @@ release_date: 2023-07-18 Release date: 2023-07-18 -We released [OpenProject 12.5.8](https://community.openproject.com/versions/1829). +We released [OpenProject 12.5.8](https://community.openproject.org/versions/1829). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: After calling "Create project copy" API endpoint, the Job Status API should return the new projects id, not only its identifier \[[#37783](https://community.openproject.com/wp/37783)\] -- Fixed: Entries in summary emails not clickable in Outlook (links not working) \[[#40157](https://community.openproject.com/wp/40157)\] -- Fixed: Custom project attribute triggers error when selected during project creation \[[#46827](https://community.openproject.com/wp/46827)\] -- Fixed: Preview of linked WP is cut off in split view when close to the edge \[[#46837](https://community.openproject.com/wp/46837)\] -- Fixed: Selected date (number) not visible when matches with Today \[[#47145](https://community.openproject.com/wp/47145)\] -- Fixed: Opening of CKEditor sporadicallly taking 10s+ when trying to comment on work packages \[[#47795](https://community.openproject.com/wp/47795)\] -- Fixed: Projects tab of group administration should not offer adding to archived projects \[[#48263](https://community.openproject.com/wp/48263)\] -- Fixed: Grape responds with text/plain 303 redirect to a JSON api \[[#48622](https://community.openproject.com/wp/48622)\] -- Fixed: Meeting Minutes double submit causes lock version error \[[#49061](https://community.openproject.com/wp/49061)\] -- Fixed: Cost reports XLS export results in timeout of web request \[[#49083](https://community.openproject.com/wp/49083)\] -- Fixed: Internal error occurs when invalid project is set to template \[[#49116](https://community.openproject.com/wp/49116)\] -- Changed: Allow internal login even if omniauth direct provider selected \[[#47930](https://community.openproject.com/wp/47930)\] +- Fixed: After calling "Create project copy" API endpoint, the Job Status API should return the new projects id, not only its identifier \[[#37783](https://community.openproject.org/wp/37783)\] +- Fixed: Entries in summary emails not clickable in Outlook (links not working) \[[#40157](https://community.openproject.org/wp/40157)\] +- Fixed: Custom project attribute triggers error when selected during project creation \[[#46827](https://community.openproject.org/wp/46827)\] +- Fixed: Preview of linked WP is cut off in split view when close to the edge \[[#46837](https://community.openproject.org/wp/46837)\] +- Fixed: Selected date (number) not visible when matches with Today \[[#47145](https://community.openproject.org/wp/47145)\] +- Fixed: Opening of CKEditor sporadically taking 10s+ when trying to comment on work packages \[[#47795](https://community.openproject.org/wp/47795)\] +- Fixed: Projects tab of group administration should not offer adding to archived projects \[[#48263](https://community.openproject.org/wp/48263)\] +- Fixed: Grape responds with text/plain 303 redirect to a JSON api \[[#48622](https://community.openproject.org/wp/48622)\] +- Fixed: Meeting Minutes double submit causes lock version error \[[#49061](https://community.openproject.org/wp/49061)\] +- Fixed: Cost reports XLS export results in timeout of web request \[[#49083](https://community.openproject.org/wp/49083)\] +- Fixed: Internal error occurs when invalid project is set to template \[[#49116](https://community.openproject.org/wp/49116)\] +- Changed: Allow internal login even if omniauth direct provider selected \[[#47930](https://community.openproject.org/wp/47930)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-0-0/README.md b/docs/release-notes/13-0-0/README.md index 9b439a0ffe0b..25bb77be64d7 100644 --- a/docs/release-notes/13-0-0/README.md +++ b/docs/release-notes/13-0-0/README.md @@ -10,7 +10,7 @@ release_date: 2023-08-21 Release date: 2023-08-21 -We have released [OpenProject 13.0.0](https://community.openproject.com/versions/1656). +We have released [OpenProject 13.0.0](https://community.openproject.org/versions/1656). This version comes with a large number of new features, collaboration enhancements, and bug fixes. Among the highly anticipated project management features is the introduction of Baseline comparison. Nextcloud project folders will come with automatically managed permissions and the ability to set up project templates with a pre-defined folder structure and file templates linked to work packages. Subscribe to your OpenProject calendar, and generate work plans via the new PDF export. @@ -30,7 +30,7 @@ The functionality **Show changes since Yesterday** is part of the free of charge ## Nextcloud project folders with automatically managed permissions -With OpenProject 13.0 the Nexcloud integration has been enhanced with project folders. A new project folder is now set up in Nextcloud for a project, named after the project in OpenProject and automatically granting access to all project members. +With OpenProject 13.0 the Nextcloud integration has been enhanced with project folders. A new project folder is now set up in Nextcloud for a project, named after the project in OpenProject and automatically granting access to all project members. Project folders allow setting up project templates with a pre-defined folder structure, including document templates. Links to files in work packages are copied and updated accordingly. ![OpenProject Nextcloud integration](openproject-nextcloud-integration.png) @@ -51,7 +51,7 @@ You can now have all your OpenProject calendars with all important work packages With 13.0 we have added a new global menu to access all global modules for your projects. This provides a useful and intuitive overview of project information (e.g. for work packages, boards, team planners, or meetings) on a project-overarching level. You can create new elements for these respective modules directly from these global pages and assign them to a project. -![Openproject global modules overview](openproject-global-modules.png) +![OpenProject global modules overview](openproject-global-modules.png) ## Time tracking button We added a button that allows you to easily record the time spent on a work package. Pressing the button on the work package will start the timer. Your avatar in the header navigation will show the active time tracking. Clicking the button again will stop the time tracking and you can log the time spent on the work package. @@ -77,142 +77,142 @@ We are happy to announce that we have released the multi-select custom fields fo ### List of all bug fixes and changes -- Epic: Share project calendars using the iCalendar format \[[#15339](https://community.openproject.com/wp/15339)\] -- Epic: Baseline: show changes in the work packages table \[[#26448](https://community.openproject.com/wp/26448)\] -- Epic: Allow localized seeding of all seed data \[[#36933](https://community.openproject.com/wp/36933)\] -- Epic: Project folders for file storages \[[#41400](https://community.openproject.com/wp/41400)\] -- Epic: Template folder and file structure for shared project folders \[[#41545](https://community.openproject.com/wp/41545)\] -- Epic: PDF export of work plans \[[#46226](https://community.openproject.com/wp/46226)\] -- Epic: Global index pages for meetings, boards, team planner and calendar \[[#47850](https://community.openproject.com/wp/47850)\] -- Epic: Add a global sidebar for global modules: meetings, team planner, boards, work packages, news, costs and calendars \[[#48142](https://community.openproject.com/wp/48142)\] -- Epic: Create meetings, team planner and boards outside of a project from their global index pages \[[#48160](https://community.openproject.com/wp/48160)\] -- Epic: Introduce Primer DS \[[#48863](https://community.openproject.com/wp/48863)\] -- Changed: External Links new Tab \[[#29009](https://community.openproject.com/wp/29009)\] -- Changed: Button to start and stop Time Tracking \[[#29151](https://community.openproject.com/wp/29151)\] -- Changed: Allow saving formattable fields (Work package descriptions, comments, custom fields) with CTRL/CMD + ENTER \[[#33375](https://community.openproject.com/wp/33375)\] -- Changed: [Gantt-Chart] Scroll to Today's Position in non-auto-zoom mode \[[#40167](https://community.openproject.com/wp/40167)\] -- Changed: Activity tab details for links to Nextcloud files \[[#42368](https://community.openproject.com/wp/42368)\] -- Changed: Add packaged installation support for RHEL 9 \[[#44725](https://community.openproject.com/wp/44725)\] -- Changed: Add premium/enterprise feature icon also in the Project settings \[[#44963](https://community.openproject.com/wp/44963)\] -- Changed: Project status activity tracking \[[#44986](https://community.openproject.com/wp/44986)\] -- Changed: Project member navigates to project storage \[[#46242](https://community.openproject.com/wp/46242)\] -- Changed: Project member is directed to project folder \[[#46318](https://community.openproject.com/wp/46318)\] -- Changed: Project admin chooses between manual and automatic project folder \[[#46327](https://community.openproject.com/wp/46327)\] -- Changed: Project admin configures new project storage together with project folder \[[#46328](https://community.openproject.com/wp/46328)\] -- Changed: Automatic repair of missing or wrong permissions for project folders \[[#46329](https://community.openproject.com/wp/46329)\] -- Changed: Project members experience a fully automatically managed project folder \[[#46331](https://community.openproject.com/wp/46331)\] -- Changed: Journalise and display work package date changes caused by relations/children in the Activity tab \[[#46481](https://community.openproject.com/wp/46481)\] -- Changed: Show changes frontend \[[#46674](https://community.openproject.com/wp/46674)\] -- Changed: Project activity: improve and extend how additional attributes are displayed \[[#46805](https://community.openproject.com/wp/46805)\] -- Changed: Add helper text to project member module \[[#46816](https://community.openproject.com/wp/46816)\] -- Changed: Non-working day settings: Move the arrows closer to the year \[[#46885](https://community.openproject.com/wp/46885)\] -- Changed: Release "Multi-select custom fields" from Enterprise to Community \[[#47002](https://community.openproject.com/wp/47002)\] -- Changed: Reorganise some admin settings to have the calendar settings together \[[#47341](https://community.openproject.com/wp/47341)\] -- Changed: Access tokens settings improvement \[[#47512](https://community.openproject.com/wp/47512)\] -- Changed: Define mockups for non-Enterprise users for baseline comparison \[[#47725](https://community.openproject.com/wp/47725)\] -- Changed: Change Support link in application and re-name it from Professional support to Enterprise support \[[#47914](https://community.openproject.com/wp/47914)\] -- Changed: New loading indicator for OpenProject application \[[#48211](https://community.openproject.com/wp/48211)\] -- Changed: Remove length constraints of time entry comment \[[#48244](https://community.openproject.com/wp/48244)\] -- Changed: Danger zone when deactivating a storage on a project \[[#48413](https://community.openproject.com/wp/48413)\] -- Changed: Update and replace icons related to Baseline \[[#48418](https://community.openproject.com/wp/48418)\] -- Changed: Sums table in work plan pdf export \[[#48420](https://community.openproject.com/wp/48420)\] -- Changed: Custom logo for the pdf export of work plans \[[#48421](https://community.openproject.com/wp/48421)\] -- Changed: The subject in the index of the PDF export is not a link (like the section number) \[[#48504](https://community.openproject.com/wp/48504)\] -- Changed: Support Emojis in the editor: inserted by typing identifiers based on Unicode Short Names preceded by a colon (:) \[[#48583](https://community.openproject.com/wp/48583)\] -- Changed: Automatic time tracking for work packages (start/stop buttons) \[[#48641](https://community.openproject.com/wp/48641)\] -- Changed: Manage long query titles in footer of pdf export \[[#48647](https://community.openproject.com/wp/48647)\] -- Changed: Filter attributes table in the pdf export \[[#48649](https://community.openproject.com/wp/48649)\] -- Changed: Show relevant attributes in file name of pdf export \[[#48652](https://community.openproject.com/wp/48652)\] -- Changed: Add export time into footer \[[#48653](https://community.openproject.com/wp/48653)\] -- Changed: Add copy to clipboard button to work packages \[[#48729](https://community.openproject.com/wp/48729)\] -- Changed: Add support for multi-value Version custom fields \[[#48745](https://community.openproject.com/wp/48745)\] -- Changed: User interface for activating feature flags within the administration \[[#48815](https://community.openproject.com/wp/48815)\] -- Changed: Indent third level in index \[[#48816](https://community.openproject.com/wp/48816)\] -- Changed: Cover page for pdf reports \[[#48857](https://community.openproject.com/wp/48857)\] -- Changed: Add PDF Export of work plans to our documentation \[[#48862](https://community.openproject.com/wp/48862)\] -- Changed: Add support for packaged installation on Debian 12 \[[#48986](https://community.openproject.com/wp/48986)\] -- Changed: Add support for packaged installation on Centos / RHEL 9 \[[#48987](https://community.openproject.com/wp/48987)\] -- Changed: Fine-tuning of single work package pdf export \[[#49210](https://community.openproject.com/wp/49210)\] -- Changed: Delete project folders on project's storage deletion. \[[#49228](https://community.openproject.com/wp/49228)\] -- Changed: Delete project folders on project deletion \[[#49229](https://community.openproject.com/wp/49229)\] -- Changed: Delete project folders on storage deletion \[[#49234](https://community.openproject.com/wp/49234)\] -- Changed: iCalendar flow improvements and naming \[[#49247](https://community.openproject.com/wp/49247)\] -- Changed: Update NEW FEATURES teaser on application start page \[[#49301](https://community.openproject.com/wp/49301)\] -- Changed: Project folder health status \[[#49397](https://community.openproject.com/wp/49397)\] -- Fixed: Time and costs xls export should use configured date format in the file name \[[#35554](https://community.openproject.com/wp/35554)\] -- Fixed: [Global search] Searchable custom fields only searchable from within a project scope and not globally \[[#35804](https://community.openproject.com/wp/35804)\] -- Fixed: Confusing error shown when wiki page was edited in the meantime \[[#40427](https://community.openproject.com/wp/40427)\] -- Fixed: 500 error on force user language \[[#41275](https://community.openproject.com/wp/41275)\] -- Fixed: Cannot delete archived protected (on docker) \[[#41527](https://community.openproject.com/wp/41527)\] -- Fixed: Webhooks Documentation should be at the API and not in the Email and notifications \[[#44906](https://community.openproject.com/wp/44906)\] -- Fixed: No info about changes in activity when use checkbox in the custom field \[[#45011](https://community.openproject.com/wp/45011)\] -- Fixed: Time zone not saved to the selected value (time zone is the same but city is different) \[[#45745](https://community.openproject.com/wp/45745)\] -- Fixed: Azure endpoints are not using Microsoft Graph API, preventing email claims being shown in userinfo \[[#45832](https://community.openproject.com/wp/45832)\] -- Fixed: Budget does not get updated if we click fast on Submit after changing the number of units \[[#46301](https://community.openproject.com/wp/46301)\] -- Fixed: GitHub pull requests comments can have wrong link \[[#46316](https://community.openproject.com/wp/46316)\] -- Fixed: Filtering with two timestamps for custom field values wrongfully requires a work package to match at both timestamps \[[#46841](https://community.openproject.com/wp/46841)\] -- Fixed: Visibility check by project applied to current project instead of at timestamp \[[#46883](https://community.openproject.com/wp/46883)\] -- Fixed: Date picker changes position while we change year \[[#47122](https://community.openproject.com/wp/47122)\] -- Fixed: Storage links must be placed between "wiki" and "members". \[[#47507](https://community.openproject.com/wp/47507)\] -- Fixed: Files tab doesn't cache user info \[[#47518](https://community.openproject.com/wp/47518)\] -- Fixed: Status colored circles are no longer showing in Relations tab after 12.5 upgrade \[[#47610](https://community.openproject.com/wp/47610)\] -- Fixed: Move work package form fields to the bottom of label in very narrow screens (mobile) \[[#47680](https://community.openproject.com/wp/47680)\] -- Fixed: Configuration request fails for login_required=true \[[#47784](https://community.openproject.com/wp/47784)\] -- Fixed: Budget name does not update in Work Packages view upon Budget name change \[[#48048](https://community.openproject.com/wp/48048)\] -- Fixed: Baseline time zone label not vertically centered \[[#48239](https://community.openproject.com/wp/48239)\] -- Fixed: GitHub integration reference uses author instead of commenter \[[#48246](https://community.openproject.com/wp/48246)\] -- Fixed: Work package in query without timestamps have cached timestamps url parameter \[[#48248](https://community.openproject.com/wp/48248)\] -- Fixed: Archived subprojects appear in the subproject widget \[[#48327](https://community.openproject.com/wp/48327)\] -- Fixed: My Page: My spent time hows incorrect non-working days \[[#48328](https://community.openproject.com/wp/48328)\] -- Fixed: Error 500 on versions when Wiki page is linked \[[#48336](https://community.openproject.com/wp/48336)\] -- Fixed: Opening work packages in github tab from table with active baseline causes an internal error \[[#48362](https://community.openproject.com/wp/48362)\] -- Fixed: PDF export reports faulty interface usage \[[#48393](https://community.openproject.com/wp/48393)\] -- Fixed: Focus state is not present when editing a date or duration in date pickers \[[#48435](https://community.openproject.com/wp/48435)\] -- Fixed: crowdin source file for bim is not sent / retrieved from crowdin \[[#48450](https://community.openproject.com/wp/48450)\] -- Fixed: Error message "Timestamps contain forbidden values: oneDayAgo" for non-enterprise plan \[[#48566](https://community.openproject.com/wp/48566)\] -- Fixed: Work package moved out of project not returned \[[#48592](https://community.openproject.com/wp/48592)\] -- Fixed: Clear filter button is missing on Time and costs page \[[#48633](https://community.openproject.com/wp/48633)\] -- Fixed: Link to project missing in error message when deleting work package type \[[#48642](https://community.openproject.com/wp/48642)\] -- Fixed: Style picture caption in PDF export \[[#48650](https://community.openproject.com/wp/48650)\] -- Fixed: +Member button missing on Members widget of the copied project \[[#48720](https://community.openproject.com/wp/48720)\] -- Fixed: Unable to edit CF as Value is required \[[#48725](https://community.openproject.com/wp/48725)\] -- Fixed: Baseline date picker in configuration modal almost hidden \[[#48865](https://community.openproject.com/wp/48865)\] -- Fixed: Change to assignee from unset to set is not displayed \[[#48866](https://community.openproject.com/wp/48866)\] -- Fixed: task page - tab selection is not available to assistive technologies \[[#48922](https://community.openproject.com/wp/48922)\] -- Fixed: Missing StorageType leads to server error in storage creation form \[[#48965](https://community.openproject.com/wp/48965)\] -- Fixed: Premium feature icon for Team planners visible on QA Edge \[[#49067](https://community.openproject.com/wp/49067)\] -- Fixed: Unable to clear/remove project on Move WP to another project form \[[#49109](https://community.openproject.com/wp/49109)\] -- Fixed: Missing link in Meetings Location \[[#49144](https://community.openproject.com/wp/49144)\] -- Fixed: Changed dates are misaligned with the other dates \[[#49245](https://community.openproject.com/wp/49245)\] -- Fixed: Enterprise edition screen unstructured \[[#49287](https://community.openproject.com/wp/49287)\] -- Fixed: In Notification center sidebar, "Reason" and "Unread by project" filters cannot be closed upon click on arrow \[[#49289](https://community.openproject.com/wp/49289)\] -- Fixed: Sidebar cannot be scrolled \[[#49313](https://community.openproject.com/wp/49313)\] -- Fixed: Custom fields missing in table view and full screen view \[[#49391](https://community.openproject.com/wp/49391)\] -- Fixed: Missing "s" on Admin Settings > Emails and notification \[[#49408](https://community.openproject.com/wp/49408)\] -- Fixed: Switching from custom view to built in view does not reset the baseline functionality \[[#49410](https://community.openproject.com/wp/49410)\] -- Fixed: (Dutch) Language incorrect. It says "blokeren" instead of "blokkeren". \[[#49412](https://community.openproject.com/wp/49412)\] -- Fixed: PDF export of descriptions - HTML in table with header column \[[#49425](https://community.openproject.com/wp/49425)\] -- Fixed: Existing file links wrongfully associated to next updating user \[[#49452](https://community.openproject.com/wp/49452)\] -- Fixed: Saving email reminder settings fails when different date alert project overrides exist \[[#49487](https://community.openproject.com/wp/49487)\] -- Fixed: Work Packages Title and Description lost when clicking the expand Button \[[#49565](https://community.openproject.com/wp/49565)\] -- Fixed: Selected values are multiplied on CF multi-select \[[#49569](https://community.openproject.com/wp/49569)\] -- Fixed: (Mobile) "More" icon is no longer visible in vertical orientation \[[#49571](https://community.openproject.com/wp/49571)\] -- Fixed: (Mobile) Baseline mode indicator's left border not visible \[[#49572](https://community.openproject.com/wp/49572)\] -- Fixed: Hide automatically manged project folders if project has been archived. \[[#49579](https://community.openproject.com/wp/49579)\] -- Fixed: Seeding in another language does not translate role names, document categories, and color names \[[#49581](https://community.openproject.com/wp/49581)\] -- Fixed: Seeding in French fails because of database constraint on name length \[[#49583](https://community.openproject.com/wp/49583)\] -- Fixed: Sorting by project in global meetings index page raises a 500 error \[[#49585](https://community.openproject.com/wp/49585)\] -- Fixed: Error on custom action button when baseline is ON \[[#49588](https://community.openproject.com/wp/49588)\] -- Fixed: My activity page: Activities are shifted left, too close to Projects \[[#49595](https://community.openproject.com/wp/49595)\] -- Fixed: Cannot change the graph on Overview page from bar to something else \[[#49596](https://community.openproject.com/wp/49596)\] -- Fixed: Selected type chart is not fully visible - it's cut off \[[#49597](https://community.openproject.com/wp/49597)\] -- Fixed: Translation missing for tooltip on +Storage button \[[#49606](https://community.openproject.com/wp/49606)\] -- Fixed: PDF Export report fails with with an empty table \[[#49607](https://community.openproject.com/wp/49607)\] -- Fixed: Export modal can't handle temporary request failures \[[#49609](https://community.openproject.com/wp/49609)\] -- Fixed: Access to project folders for non members and admins. \[[#49623](https://community.openproject.com/wp/49623)\] -- Fixed: Nextcloud/Administration link is stripped when host has a subpath \[[#49630](https://community.openproject.com/wp/49630)\] -- Fixed: Sums table only shows total sum \[[#49690](https://community.openproject.com/wp/49690)\] -- Fixed: Pictures are not exported \[[#49692](https://community.openproject.com/wp/49692)\] +- Epic: Share project calendars using the iCalendar format \[[#15339](https://community.openproject.org/wp/15339)\] +- Epic: Baseline: show changes in the work packages table \[[#26448](https://community.openproject.org/wp/26448)\] +- Epic: Allow localized seeding of all seed data \[[#36933](https://community.openproject.org/wp/36933)\] +- Epic: Project folders for file storages \[[#41400](https://community.openproject.org/wp/41400)\] +- Epic: Template folder and file structure for shared project folders \[[#41545](https://community.openproject.org/wp/41545)\] +- Epic: PDF export of work plans \[[#46226](https://community.openproject.org/wp/46226)\] +- Epic: Global index pages for meetings, boards, team planner and calendar \[[#47850](https://community.openproject.org/wp/47850)\] +- Epic: Add a global sidebar for global modules: meetings, team planner, boards, work packages, news, costs and calendars \[[#48142](https://community.openproject.org/wp/48142)\] +- Epic: Create meetings, team planner and boards outside of a project from their global index pages \[[#48160](https://community.openproject.org/wp/48160)\] +- Epic: Introduce Primer DS \[[#48863](https://community.openproject.org/wp/48863)\] +- Changed: External Links new Tab \[[#29009](https://community.openproject.org/wp/29009)\] +- Changed: Button to start and stop Time Tracking \[[#29151](https://community.openproject.org/wp/29151)\] +- Changed: Allow saving formattable fields (Work package descriptions, comments, custom fields) with CTRL/CMD + ENTER \[[#33375](https://community.openproject.org/wp/33375)\] +- Changed: [Gantt-Chart] Scroll to Today's Position in non-auto-zoom mode \[[#40167](https://community.openproject.org/wp/40167)\] +- Changed: Activity tab details for links to Nextcloud files \[[#42368](https://community.openproject.org/wp/42368)\] +- Changed: Add packaged installation support for RHEL 9 \[[#44725](https://community.openproject.org/wp/44725)\] +- Changed: Add premium/enterprise feature icon also in the Project settings \[[#44963](https://community.openproject.org/wp/44963)\] +- Changed: Project status activity tracking \[[#44986](https://community.openproject.org/wp/44986)\] +- Changed: Project member navigates to project storage \[[#46242](https://community.openproject.org/wp/46242)\] +- Changed: Project member is directed to project folder \[[#46318](https://community.openproject.org/wp/46318)\] +- Changed: Project admin chooses between manual and automatic project folder \[[#46327](https://community.openproject.org/wp/46327)\] +- Changed: Project admin configures new project storage together with project folder \[[#46328](https://community.openproject.org/wp/46328)\] +- Changed: Automatic repair of missing or wrong permissions for project folders \[[#46329](https://community.openproject.org/wp/46329)\] +- Changed: Project members experience a fully automatically managed project folder \[[#46331](https://community.openproject.org/wp/46331)\] +- Changed: Journalize and display work package date changes caused by relations/children in the Activity tab \[[#46481](https://community.openproject.org/wp/46481)\] +- Changed: Show changes frontend \[[#46674](https://community.openproject.org/wp/46674)\] +- Changed: Project activity: improve and extend how additional attributes are displayed \[[#46805](https://community.openproject.org/wp/46805)\] +- Changed: Add helper text to project member module \[[#46816](https://community.openproject.org/wp/46816)\] +- Changed: Non-working day settings: Move the arrows closer to the year \[[#46885](https://community.openproject.org/wp/46885)\] +- Changed: Release "Multi-select custom fields" from Enterprise to Community \[[#47002](https://community.openproject.org/wp/47002)\] +- Changed: Reorganize some admin settings to have the calendar settings together \[[#47341](https://community.openproject.org/wp/47341)\] +- Changed: Access tokens settings improvement \[[#47512](https://community.openproject.org/wp/47512)\] +- Changed: Define mockups for non-Enterprise users for baseline comparison \[[#47725](https://community.openproject.org/wp/47725)\] +- Changed: Change Support link in application and re-name it from Professional support to Enterprise support \[[#47914](https://community.openproject.org/wp/47914)\] +- Changed: New loading indicator for OpenProject application \[[#48211](https://community.openproject.org/wp/48211)\] +- Changed: Remove length constraints of time entry comment \[[#48244](https://community.openproject.org/wp/48244)\] +- Changed: Danger zone when deactivating a storage on a project \[[#48413](https://community.openproject.org/wp/48413)\] +- Changed: Update and replace icons related to Baseline \[[#48418](https://community.openproject.org/wp/48418)\] +- Changed: Sums table in work plan pdf export \[[#48420](https://community.openproject.org/wp/48420)\] +- Changed: Custom logo for the pdf export of work plans \[[#48421](https://community.openproject.org/wp/48421)\] +- Changed: The subject in the index of the PDF export is not a link (like the section number) \[[#48504](https://community.openproject.org/wp/48504)\] +- Changed: Support Emojis in the editor: inserted by typing identifiers based on Unicode Short Names preceded by a colon (:) \[[#48583](https://community.openproject.org/wp/48583)\] +- Changed: Automatic time tracking for work packages (start/stop buttons) \[[#48641](https://community.openproject.org/wp/48641)\] +- Changed: Manage long query titles in footer of pdf export \[[#48647](https://community.openproject.org/wp/48647)\] +- Changed: Filter attributes table in the pdf export \[[#48649](https://community.openproject.org/wp/48649)\] +- Changed: Show relevant attributes in file name of pdf export \[[#48652](https://community.openproject.org/wp/48652)\] +- Changed: Add export time into footer \[[#48653](https://community.openproject.org/wp/48653)\] +- Changed: Add copy to clipboard button to work packages \[[#48729](https://community.openproject.org/wp/48729)\] +- Changed: Add support for multi-value Version custom fields \[[#48745](https://community.openproject.org/wp/48745)\] +- Changed: User interface for activating feature flags within the administration \[[#48815](https://community.openproject.org/wp/48815)\] +- Changed: Indent third level in index \[[#48816](https://community.openproject.org/wp/48816)\] +- Changed: Cover page for pdf reports \[[#48857](https://community.openproject.org/wp/48857)\] +- Changed: Add PDF Export of work plans to our documentation \[[#48862](https://community.openproject.org/wp/48862)\] +- Changed: Add support for packaged installation on Debian 12 \[[#48986](https://community.openproject.org/wp/48986)\] +- Changed: Add support for packaged installation on Centos / RHEL 9 \[[#48987](https://community.openproject.org/wp/48987)\] +- Changed: Fine-tuning of single work package pdf export \[[#49210](https://community.openproject.org/wp/49210)\] +- Changed: Delete project folders on project's storage deletion. \[[#49228](https://community.openproject.org/wp/49228)\] +- Changed: Delete project folders on project deletion \[[#49229](https://community.openproject.org/wp/49229)\] +- Changed: Delete project folders on storage deletion \[[#49234](https://community.openproject.org/wp/49234)\] +- Changed: iCalendar flow improvements and naming \[[#49247](https://community.openproject.org/wp/49247)\] +- Changed: Update NEW FEATURES teaser on application start page \[[#49301](https://community.openproject.org/wp/49301)\] +- Changed: Project folder health status \[[#49397](https://community.openproject.org/wp/49397)\] +- Fixed: Time and costs xls export should use configured date format in the file name \[[#35554](https://community.openproject.org/wp/35554)\] +- Fixed: [Global search] Searchable custom fields only searchable from within a project scope and not globally \[[#35804](https://community.openproject.org/wp/35804)\] +- Fixed: Confusing error shown when wiki page was edited in the meantime \[[#40427](https://community.openproject.org/wp/40427)\] +- Fixed: 500 error on force user language \[[#41275](https://community.openproject.org/wp/41275)\] +- Fixed: Cannot delete archived protected (on docker) \[[#41527](https://community.openproject.org/wp/41527)\] +- Fixed: Webhooks Documentation should be at the API and not in the Email and notifications \[[#44906](https://community.openproject.org/wp/44906)\] +- Fixed: No info about changes in activity when use checkbox in the custom field \[[#45011](https://community.openproject.org/wp/45011)\] +- Fixed: Time zone not saved to the selected value (time zone is the same but city is different) \[[#45745](https://community.openproject.org/wp/45745)\] +- Fixed: Azure endpoints are not using Microsoft Graph API, preventing email claims being shown in userinfo \[[#45832](https://community.openproject.org/wp/45832)\] +- Fixed: Budget does not get updated if we click fast on Submit after changing the number of units \[[#46301](https://community.openproject.org/wp/46301)\] +- Fixed: GitHub pull requests comments can have wrong link \[[#46316](https://community.openproject.org/wp/46316)\] +- Fixed: Filtering with two timestamps for custom field values wrongfully requires a work package to match at both timestamps \[[#46841](https://community.openproject.org/wp/46841)\] +- Fixed: Visibility check by project applied to current project instead of at timestamp \[[#46883](https://community.openproject.org/wp/46883)\] +- Fixed: Date picker changes position while we change year \[[#47122](https://community.openproject.org/wp/47122)\] +- Fixed: Storage links must be placed between "wiki" and "members". \[[#47507](https://community.openproject.org/wp/47507)\] +- Fixed: Files tab doesn't cache user info \[[#47518](https://community.openproject.org/wp/47518)\] +- Fixed: Status colored circles are no longer showing in Relations tab after 12.5 upgrade \[[#47610](https://community.openproject.org/wp/47610)\] +- Fixed: Move work package form fields to the bottom of label in very narrow screens (mobile) \[[#47680](https://community.openproject.org/wp/47680)\] +- Fixed: Configuration request fails for login_required=true \[[#47784](https://community.openproject.org/wp/47784)\] +- Fixed: Budget name does not update in Work Packages view upon Budget name change \[[#48048](https://community.openproject.org/wp/48048)\] +- Fixed: Baseline time zone label not vertically centered \[[#48239](https://community.openproject.org/wp/48239)\] +- Fixed: GitHub integration reference uses author instead of commenter \[[#48246](https://community.openproject.org/wp/48246)\] +- Fixed: Work package in query without timestamps have cached timestamps url parameter \[[#48248](https://community.openproject.org/wp/48248)\] +- Fixed: Archived subprojects appear in the subproject widget \[[#48327](https://community.openproject.org/wp/48327)\] +- Fixed: My Page: My spent time hows incorrect non-working days \[[#48328](https://community.openproject.org/wp/48328)\] +- Fixed: Error 500 on versions when Wiki page is linked \[[#48336](https://community.openproject.org/wp/48336)\] +- Fixed: Opening work packages in github tab from table with active baseline causes an internal error \[[#48362](https://community.openproject.org/wp/48362)\] +- Fixed: PDF export reports faulty interface usage \[[#48393](https://community.openproject.org/wp/48393)\] +- Fixed: Focus state is not present when editing a date or duration in date pickers \[[#48435](https://community.openproject.org/wp/48435)\] +- Fixed: crowdin source file for bim is not sent / retrieved from crowdin \[[#48450](https://community.openproject.org/wp/48450)\] +- Fixed: Error message "Timestamps contain forbidden values: oneDayAgo" for non-enterprise plan \[[#48566](https://community.openproject.org/wp/48566)\] +- Fixed: Work package moved out of project not returned \[[#48592](https://community.openproject.org/wp/48592)\] +- Fixed: Clear filter button is missing on Time and costs page \[[#48633](https://community.openproject.org/wp/48633)\] +- Fixed: Link to project missing in error message when deleting work package type \[[#48642](https://community.openproject.org/wp/48642)\] +- Fixed: Style picture caption in PDF export \[[#48650](https://community.openproject.org/wp/48650)\] +- Fixed: +Member button missing on Members widget of the copied project \[[#48720](https://community.openproject.org/wp/48720)\] +- Fixed: Unable to edit CF as Value is required \[[#48725](https://community.openproject.org/wp/48725)\] +- Fixed: Baseline date picker in configuration modal almost hidden \[[#48865](https://community.openproject.org/wp/48865)\] +- Fixed: Change to assignee from unset to set is not displayed \[[#48866](https://community.openproject.org/wp/48866)\] +- Fixed: task page - tab selection is not available to assistive technologies \[[#48922](https://community.openproject.org/wp/48922)\] +- Fixed: Missing StorageType leads to server error in storage creation form \[[#48965](https://community.openproject.org/wp/48965)\] +- Fixed: Premium feature icon for Team planners visible on QA Edge \[[#49067](https://community.openproject.org/wp/49067)\] +- Fixed: Unable to clear/remove project on Move WP to another project form \[[#49109](https://community.openproject.org/wp/49109)\] +- Fixed: Missing link in Meetings Location \[[#49144](https://community.openproject.org/wp/49144)\] +- Fixed: Changed dates are misaligned with the other dates \[[#49245](https://community.openproject.org/wp/49245)\] +- Fixed: Enterprise edition screen unstructured \[[#49287](https://community.openproject.org/wp/49287)\] +- Fixed: In Notification center sidebar, "Reason" and "Unread by project" filters cannot be closed upon click on arrow \[[#49289](https://community.openproject.org/wp/49289)\] +- Fixed: Sidebar cannot be scrolled \[[#49313](https://community.openproject.org/wp/49313)\] +- Fixed: Custom fields missing in table view and full screen view \[[#49391](https://community.openproject.org/wp/49391)\] +- Fixed: Missing "s" on Admin Settings > Emails and notification \[[#49408](https://community.openproject.org/wp/49408)\] +- Fixed: Switching from custom view to built in view does not reset the baseline functionality \[[#49410](https://community.openproject.org/wp/49410)\] +- Fixed: (Dutch) Language incorrect. It says "blokeren" instead of "blokkeren". \[[#49412](https://community.openproject.org/wp/49412)\] +- Fixed: PDF export of descriptions - HTML in table with header column \[[#49425](https://community.openproject.org/wp/49425)\] +- Fixed: Existing file links wrongfully associated to next updating user \[[#49452](https://community.openproject.org/wp/49452)\] +- Fixed: Saving email reminder settings fails when different date alert project overrides exist \[[#49487](https://community.openproject.org/wp/49487)\] +- Fixed: Work Packages Title and Description lost when clicking the expand Button \[[#49565](https://community.openproject.org/wp/49565)\] +- Fixed: Selected values are multiplied on CF multi-select \[[#49569](https://community.openproject.org/wp/49569)\] +- Fixed: (Mobile) "More" icon is no longer visible in vertical orientation \[[#49571](https://community.openproject.org/wp/49571)\] +- Fixed: (Mobile) Baseline mode indicator's left border not visible \[[#49572](https://community.openproject.org/wp/49572)\] +- Fixed: Hide automatically manged project folders if project has been archived. \[[#49579](https://community.openproject.org/wp/49579)\] +- Fixed: Seeding in another language does not translate role names, document categories, and color names \[[#49581](https://community.openproject.org/wp/49581)\] +- Fixed: Seeding in French fails because of database constraint on name length \[[#49583](https://community.openproject.org/wp/49583)\] +- Fixed: Sorting by project in global meetings index page raises a 500 error \[[#49585](https://community.openproject.org/wp/49585)\] +- Fixed: Error on custom action button when baseline is ON \[[#49588](https://community.openproject.org/wp/49588)\] +- Fixed: My activity page: Activities are shifted left, too close to Projects \[[#49595](https://community.openproject.org/wp/49595)\] +- Fixed: Cannot change the graph on Overview page from bar to something else \[[#49596](https://community.openproject.org/wp/49596)\] +- Fixed: Selected type chart is not fully visible - it's cut off \[[#49597](https://community.openproject.org/wp/49597)\] +- Fixed: Translation missing for tooltip on +Storage button \[[#49606](https://community.openproject.org/wp/49606)\] +- Fixed: PDF Export report fails with with an empty table \[[#49607](https://community.openproject.org/wp/49607)\] +- Fixed: Export modal can't handle temporary request failures \[[#49609](https://community.openproject.org/wp/49609)\] +- Fixed: Access to project folders for non members and admins. \[[#49623](https://community.openproject.org/wp/49623)\] +- Fixed: Nextcloud/Administration link is stripped when host has a subpath \[[#49630](https://community.openproject.org/wp/49630)\] +- Fixed: Sums table only shows total sum \[[#49690](https://community.openproject.org/wp/49690)\] +- Fixed: Pictures are not exported \[[#49692](https://community.openproject.org/wp/49692)\] ### Credits and contributions diff --git a/docs/release-notes/13-0-1/README.md b/docs/release-notes/13-0-1/README.md index f01b5beb76b6..40a4ef78cbd3 100644 --- a/docs/release-notes/13-0-1/README.md +++ b/docs/release-notes/13-0-1/README.md @@ -10,22 +10,22 @@ release_date: 2023-08-29 Release date: 2023-08-29 -We released [OpenProject 13.0.1](https://community.openproject.com/versions/1865). +We released [OpenProject 13.0.1](https://community.openproject.org/versions/1865). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Copy to clipboard icon wrong \[[#49721](https://community.openproject.com/wp/49721)\] -- Fixed: Shared calendar return 404 when using a parent filter \[[#49726](https://community.openproject.com/wp/49726)\] -- Fixed: Identity providers sign in icons overlap with the text or not enough spacing between them \[[#49749](https://community.openproject.com/wp/49749)\] -- Fixed: Not enough spacing between the information box and the heading on LDAP page \[[#49752](https://community.openproject.com/wp/49752)\] -- Fixed: Required custom field list with default value prevents comments \[[#49765](https://community.openproject.com/wp/49765)\] -- Fixed: Error during upgrade to 13.0.0 \[[#49771](https://community.openproject.com/wp/49771)\] -- Fixed: Blank page after login on iphone \[[#49774](https://community.openproject.com/wp/49774)\] -- Fixed: Error on creating version board (with multiple versions) \[[#49782](https://community.openproject.com/wp/49782)\] -- Fixed: CF multiselect list with default values does not show default values on work package creation \[[#49784](https://community.openproject.com/wp/49784)\] -- Fixed: Chinese zh-CN locale is not up to date \[[#49795](https://community.openproject.com/wp/49795)\] +- Fixed: Copy to clipboard icon wrong \[[#49721](https://community.openproject.org/wp/49721)\] +- Fixed: Shared calendar return 404 when using a parent filter \[[#49726](https://community.openproject.org/wp/49726)\] +- Fixed: Identity providers sign in icons overlap with the text or not enough spacing between them \[[#49749](https://community.openproject.org/wp/49749)\] +- Fixed: Not enough spacing between the information box and the heading on LDAP page \[[#49752](https://community.openproject.org/wp/49752)\] +- Fixed: Required custom field list with default value prevents comments \[[#49765](https://community.openproject.org/wp/49765)\] +- Fixed: Error during upgrade to 13.0.0 \[[#49771](https://community.openproject.org/wp/49771)\] +- Fixed: Blank page after login on iphone \[[#49774](https://community.openproject.org/wp/49774)\] +- Fixed: Error on creating version board (with multiple versions) \[[#49782](https://community.openproject.org/wp/49782)\] +- Fixed: CF multiselect list with default values does not show default values on work package creation \[[#49784](https://community.openproject.org/wp/49784)\] +- Fixed: Chinese zh-CN locale is not up to date \[[#49795](https://community.openproject.org/wp/49795)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-0-2/README.md b/docs/release-notes/13-0-2/README.md index 302e64439c9d..a4fa65275526 100644 --- a/docs/release-notes/13-0-2/README.md +++ b/docs/release-notes/13-0-2/README.md @@ -10,7 +10,7 @@ release_date: 2023-09-07 Release date: 2023-09-07 -We released [OpenProject 13.0.2](https://community.openproject.com/versions/1868). +We released [OpenProject 13.0.2](https://community.openproject.org/versions/1868). This release contains several bug fixes. One of them we consider of high importance. We recommend updating to the newest version. @@ -27,22 +27,22 @@ This only affects those users that have granted OpenProject access to their Next #### Bug fixes and changes -- Fixed: [AppSignal] Performance MessagesController#show \[[#47871](https://community.openproject.com/wp/47871)\] -- Fixed: Number of wp no longer shown in bars on the graph \[[#49767](https://community.openproject.com/wp/49767)\] -- Fixed: Not optimal texts for activity entry for migrated file links \[[#49770](https://community.openproject.com/wp/49770)\] -- Fixed: Description in a box having too little height when the browser window's width is decreased \[[#49831](https://community.openproject.com/wp/49831)\] -- Fixed: "share_calendars" permission does not register dependencies and contract actions \[[#49833](https://community.openproject.com/wp/49833)\] -- Fixed: OAuth remapping of existing users using case sensitive login match while user registration does not \[[#49834](https://community.openproject.com/wp/49834)\] -- Fixed: Users SEEM to be able to reset password for invited, not yet activated accounts \[[#49836](https://community.openproject.com/wp/49836)\] -- Fixed: Fix untranslated strings \[[#49848](https://community.openproject.com/wp/49848)\] -- Fixed: Switch branch in repository doesn't do anything \[[#49852](https://community.openproject.com/wp/49852)\] -- Fixed: `packager:postinstall` task fails, if `OPENPROJECT_HOST__NAME` is set in environment \[[#49867](https://community.openproject.com/wp/49867)\] -- Fixed: Eager loading for API not working in parts leading to degraded performance \[[#49915](https://community.openproject.com/wp/49915)\] -- Fixed: Docker instance: No svn present in v13? \[[#49930](https://community.openproject.com/wp/49930)\] -- Fixed: Add in all reported missing translations \[[#49937](https://community.openproject.com/wp/49937)\] -- Fixed: Accidentaly granting access to Nextcloud project folders that are no members of the project \[[#49956](https://community.openproject.com/wp/49956)\] -- Changed: Forbid user to enable misconfigured storages for a project. \[[#49218](https://community.openproject.com/wp/49218)\] -- Changed: Remove the "show" view for a storage's settings page \[[#49676](https://community.openproject.com/wp/49676)\] +- Fixed: [AppSignal] Performance MessagesController#show \[[#47871](https://community.openproject.org/wp/47871)\] +- Fixed: Number of wp no longer shown in bars on the graph \[[#49767](https://community.openproject.org/wp/49767)\] +- Fixed: Not optimal texts for activity entry for migrated file links \[[#49770](https://community.openproject.org/wp/49770)\] +- Fixed: Description in a box having too little height when the browser window's width is decreased \[[#49831](https://community.openproject.org/wp/49831)\] +- Fixed: "share_calendars" permission does not register dependencies and contract actions \[[#49833](https://community.openproject.org/wp/49833)\] +- Fixed: OAuth remapping of existing users using case sensitive login match while user registration does not \[[#49834](https://community.openproject.org/wp/49834)\] +- Fixed: Users SEEM to be able to reset password for invited, not yet activated accounts \[[#49836](https://community.openproject.org/wp/49836)\] +- Fixed: Fix untranslated strings \[[#49848](https://community.openproject.org/wp/49848)\] +- Fixed: Switch branch in repository doesn't do anything \[[#49852](https://community.openproject.org/wp/49852)\] +- Fixed: `packager:postinstall` task fails, if `OPENPROJECT_HOST__NAME` is set in environment \[[#49867](https://community.openproject.org/wp/49867)\] +- Fixed: Eager loading for API not working in parts leading to degraded performance \[[#49915](https://community.openproject.org/wp/49915)\] +- Fixed: Docker instance: No svn present in v13? \[[#49930](https://community.openproject.org/wp/49930)\] +- Fixed: Add in all reported missing translations \[[#49937](https://community.openproject.org/wp/49937)\] +- Fixed: Accidentally granting access to Nextcloud project folders that are no members of the project \[[#49956](https://community.openproject.org/wp/49956)\] +- Changed: Forbid user to enable misconfigured storages for a project. \[[#49218](https://community.openproject.org/wp/49218)\] +- Changed: Remove the "show" view for a storage's settings page \[[#49676](https://community.openproject.org/wp/49676)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-0-3/README.md b/docs/release-notes/13-0-3/README.md index d1280edccdb8..764ad484bb1a 100644 --- a/docs/release-notes/13-0-3/README.md +++ b/docs/release-notes/13-0-3/README.md @@ -10,14 +10,14 @@ release_date: 2023-09-12 Release date: 2023-09-12 -We released [OpenProject 13.0.3](https://community.openproject.com/versions/1901). +We released [OpenProject 13.0.3](https://community.openproject.org/versions/1901). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Enterprise Trial automatic activation does not work \[[#49781](https://community.openproject.com/wp/49781)\] -- Fixed: Fix untranslated strings \[[#49848](https://community.openproject.com/wp/49848)\] -- Fixed: Layout of work package status and type selectors are broken once a status or type was changed \[[#49858](https://community.openproject.com/wp/49858)\] -- Fixed: Inconsistent pluralization of global permissions and wrong capitalization of "Global Role" \[[#49989](https://community.openproject.com/wp/49989)\] -- Fixed: 500 error when creating a news title longer than 60 characters \[[#50020](https://community.openproject.com/wp/50020)\] +- Fixed: Enterprise Trial automatic activation does not work \[[#49781](https://community.openproject.org/wp/49781)\] +- Fixed: Fix untranslated strings \[[#49848](https://community.openproject.org/wp/49848)\] +- Fixed: Layout of work package status and type selectors are broken once a status or type was changed \[[#49858](https://community.openproject.org/wp/49858)\] +- Fixed: Inconsistent pluralization of global permissions and wrong capitalization of "Global Role" \[[#49989](https://community.openproject.org/wp/49989)\] +- Fixed: 500 error when creating a news title longer than 60 characters \[[#50020](https://community.openproject.org/wp/50020)\] diff --git a/docs/release-notes/13-0-4/README.md b/docs/release-notes/13-0-4/README.md index 2235722a15eb..f7a5cd68b511 100644 --- a/docs/release-notes/13-0-4/README.md +++ b/docs/release-notes/13-0-4/README.md @@ -10,18 +10,18 @@ release_date: 2023-09-26 Release date: 2023-09-26 -We released [OpenProject 13.0.4](https://community.openproject.com/versions/1902). +We released [OpenProject 13.0.4](https://community.openproject.org/versions/1902). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: PDF export does not contain custom fields and some core values \[[#49948](https://community.openproject.com/wp/49948)\] -- Fixed: Poor performance of work package autocompleter and /api/v3/work_packages in some scenarios \[[#50102](https://community.openproject.com/wp/50102)\] -- Fixed: Poor performance of /api/v3/time_entries \[[#50130](https://community.openproject.com/wp/50130)\] -- Fixed: Poor performance of mentions autocompleter \[[#50144](https://community.openproject.com/wp/50144)\] -- Fixed: DATABASE_URL environment variable is not validated before usage \[[#50152](https://community.openproject.com/wp/50152)\] -- Fixed: Work package activity not shown when using Polish language \[[#50197](https://community.openproject.com/wp/50197)\] +- Fixed: PDF export does not contain custom fields and some core values \[[#49948](https://community.openproject.org/wp/49948)\] +- Fixed: Poor performance of work package autocompleter and /api/v3/work_packages in some scenarios \[[#50102](https://community.openproject.org/wp/50102)\] +- Fixed: Poor performance of /api/v3/time_entries \[[#50130](https://community.openproject.org/wp/50130)\] +- Fixed: Poor performance of mentions autocompleter \[[#50144](https://community.openproject.org/wp/50144)\] +- Fixed: DATABASE_URL environment variable is not validated before usage \[[#50152](https://community.openproject.org/wp/50152)\] +- Fixed: Work package activity not shown when using Polish language \[[#50197](https://community.openproject.org/wp/50197)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-0-5/README.md b/docs/release-notes/13-0-5/README.md index 583a0f9f2a0e..1c82961b01f1 100644 --- a/docs/release-notes/13-0-5/README.md +++ b/docs/release-notes/13-0-5/README.md @@ -10,22 +10,22 @@ release_date: 2023-10-10 Release date: 2023-10-10 -We released [OpenProject 13.0.5](https://community.openproject.com/versions/1904). +We released [OpenProject 13.0.5](https://community.openproject.org/versions/1904). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: get 500 error when open wiki page in every project \[[#40500](https://community.openproject.com/wp/40500)\] -- Fixed: [AppSignal] Performance VersionsController#index \[[#47872](https://community.openproject.com/wp/47872)\] -- Fixed: File Drag and Drop \[[#49507](https://community.openproject.com/wp/49507)\] -- Fixed: Improve discoverablility of the "Permissions report" \[[#50106](https://community.openproject.com/wp/50106)\] -- Fixed: Inconsistent labels for "Global roles" and "Project" in user tab \[[#50108](https://community.openproject.com/wp/50108)\] -- Fixed: Nextcloud integration Error: The automatically managed project folder was not yet found. \[[#50117](https://community.openproject.com/wp/50117)\] -- Fixed: Failed to migrate from 12 to 13 due to `Locale zh is not supported` error \[[#50216](https://community.openproject.com/wp/50216)\] -- Fixed: Migration from before removal of WikiContent fails \[[#50218](https://community.openproject.com/wp/50218)\] -- Fixed: Copying projects with Nextcloud project folders does not recreate file links to folders \[[#50295](https://community.openproject.com/wp/50295)\] -- Fixed: Help text incorrectly cached for non admins \[[#50299](https://community.openproject.com/wp/50299)\] +- Fixed: get 500 error when open wiki page in every project \[[#40500](https://community.openproject.org/wp/40500)\] +- Fixed: [AppSignal] Performance VersionsController#index \[[#47872](https://community.openproject.org/wp/47872)\] +- Fixed: File Drag and Drop \[[#49507](https://community.openproject.org/wp/49507)\] +- Fixed: Improve discoverability of the "Permissions report" \[[#50106](https://community.openproject.org/wp/50106)\] +- Fixed: Inconsistent labels for "Global roles" and "Project" in user tab \[[#50108](https://community.openproject.org/wp/50108)\] +- Fixed: Nextcloud integration Error: The automatically managed project folder was not yet found. \[[#50117](https://community.openproject.org/wp/50117)\] +- Fixed: Failed to migrate from 12 to 13 due to `Locale zh is not supported` error \[[#50216](https://community.openproject.org/wp/50216)\] +- Fixed: Migration from before removal of WikiContent fails \[[#50218](https://community.openproject.org/wp/50218)\] +- Fixed: Copying projects with Nextcloud project folders does not recreate file links to folders \[[#50295](https://community.openproject.org/wp/50295)\] +- Fixed: Help text incorrectly cached for non admins \[[#50299](https://community.openproject.org/wp/50299)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-0-6/README.md b/docs/release-notes/13-0-6/README.md index a85b9c9bcd6b..5ddb6cb57b73 100644 --- a/docs/release-notes/13-0-6/README.md +++ b/docs/release-notes/13-0-6/README.md @@ -10,10 +10,10 @@ release_date: 2023-10-13 Release date: 2023-10-13 -We released [OpenProject 13.0.6](https://community.openproject.com/versions/1937). +We released [OpenProject 13.0.6](https://community.openproject.org/versions/1937). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Project storage members page can be accessed without a session. \[[#50519](https://community.openproject.com/wp/50519)\] +- Fixed: Project storage members page can be accessed without a session. \[[#50519](https://community.openproject.org/wp/50519)\] diff --git a/docs/release-notes/13-0-7/README.md b/docs/release-notes/13-0-7/README.md index e51224bec30f..87939a8200de 100644 --- a/docs/release-notes/13-0-7/README.md +++ b/docs/release-notes/13-0-7/README.md @@ -10,14 +10,14 @@ release_date: 2023-10-23 Release date: 2023-10-23 -We released [OpenProject 13.0.7](https://community.openproject.com/versions/1938). +We released [OpenProject 13.0.7](https://community.openproject.org/versions/1938). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: File Drag and Drop \[[#49507](https://community.openproject.com/wp/49507)\] -- Fixed: Help icon not shown when having a custom help link setting \[[#50666](https://community.openproject.com/wp/50666)\] +- Fixed: File Drag and Drop \[[#49507](https://community.openproject.org/wp/49507)\] +- Fixed: Help icon not shown when having a custom help link setting \[[#50666](https://community.openproject.org/wp/50666)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-0-8/README.md b/docs/release-notes/13-0-8/README.md index 42a5800f4725..6d022b851874 100644 --- a/docs/release-notes/13-0-8/README.md +++ b/docs/release-notes/13-0-8/README.md @@ -10,17 +10,17 @@ release_date: 2023-12-05 Release date: 2023-12-05 -We released [OpenProject 13.0.8](https://community.openproject.com/versions/1942). +We released [OpenProject 13.0.8](https://community.openproject.org/versions/1942). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Logging time using "My spent time" widget returns previous day (likely time zone issue) \[[#49779](https://community.openproject.com/wp/49779)\] -- Fixed: Internal server error upon login via Microsoft Entra ID (AzureAD) \[[#50167](https://community.openproject.com/wp/50167)\] -- Fixed: IFC conversion fails (libhostfxr.so not found) (reintroduced bug) \[[#50172](https://community.openproject.com/wp/50172)\] -- Fixed: +Custom field button moved left (instead of being on the right) of the Custom fields page in Project settings \[[#50285](https://community.openproject.com/wp/50285)\] -- Fixed: Make Nextcloud synchronization more stable in 13.0. \[[#51265](https://community.openproject.com/wp/51265)\] +- Fixed: Logging time using "My spent time" widget returns previous day (likely time zone issue) \[[#49779](https://community.openproject.org/wp/49779)\] +- Fixed: Internal server error upon login via Microsoft Entra ID (AzureAD) \[[#50167](https://community.openproject.org/wp/50167)\] +- Fixed: IFC conversion fails (libhostfxr.so not found) (reintroduced bug) \[[#50172](https://community.openproject.org/wp/50172)\] +- Fixed: +Custom field button moved left (instead of being on the right) of the Custom fields page in Project settings \[[#50285](https://community.openproject.org/wp/50285)\] +- Fixed: Make Nextcloud synchronization more stable in 13.0. \[[#51265](https://community.openproject.org/wp/51265)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-1-0/README.md b/docs/release-notes/13-1-0/README.md index 7a11778c757a..afdb6da968e8 100644 --- a/docs/release-notes/13-1-0/README.md +++ b/docs/release-notes/13-1-0/README.md @@ -10,7 +10,7 @@ release_date: 2023-12-13 Release date: 2023-12-13 -We released [OpenProject 13.1.0](https://community.openproject.com/versions/1486). +We released [OpenProject 13.1.0](https://community.openproject.org/versions/1486). It brings significant enhancements in our **Meetings module** and various minor adjustments, such as the integration of **Primer design system** and the introduction of a **high contrast mode** to enhance OpenProject's accessibility. @@ -76,72 +76,72 @@ For more information, please see [#51333](https://community.openproject.org/proj ## List of all bug fixes and changes -- Epic: Share work packages with external users and groups that are not member of the project team \[[#31150](https://community.openproject.com/wp/31150)\] -- Epic: Link work packages with files and folders in OneDrive/SharePoint \[[#36057](https://community.openproject.com/wp/36057)\] -- Epic: Dynamic meetings and agenda items linked to work packages \[[#37297](https://community.openproject.com/wp/37297)\] -- Epic: File Storages - Administration settings with Primer \[[#49841](https://community.openproject.com/wp/49841)\] -- Changed: Allow attachment upload on read-only work packages \[[#29203](https://community.openproject.com/wp/29203)\] -- Changed: Allow filtering of "empty" date fields (start/finish/custom) \[[#39455](https://community.openproject.com/wp/39455)\] -- Changed: Meeting module: Modes and permission levels \[[#49334](https://community.openproject.com/wp/49334)\] -- Changed: Workflow for sharing work packages \[[#49482](https://community.openproject.com/wp/49482)\] -- Changed: Upload custom picture for cover page of pdf export \[[#49684](https://community.openproject.com/wp/49684)\] -- Changed: Meetings tab on work package page \[[#49951](https://community.openproject.com/wp/49951)\] -- Changed: PDF export (single work package): Include all attributes and fields according to the work package type form configuration \[[#49977](https://community.openproject.com/wp/49977)\] -- Changed: Make the seed data in the teaser sections "Welcome to OpenProejct" more robust for user that do not have the correct permissions \[[#50070](https://community.openproject.com/wp/50070)\] -- Changed: Skip project selection step in onboarding tour \[[#50073](https://community.openproject.com/wp/50073)\] -- Changed: Activate meeting module and one meeting "weekly" to the seed data \[[#50132](https://community.openproject.com/wp/50132)\] -- Changed: Update project deletion danger zone to include project folders as a dependent relation \[[#50233](https://community.openproject.com/wp/50233)\] -- Changed: [API] Add storage filter to project and project storage collection \[[#50234](https://community.openproject.com/wp/50234)\] -- Changed: Ensuring connection and permissions on project folder while redirecting users to Nextcloud/OneDrive from project menu. \[[#50437](https://community.openproject.com/wp/50437)\] -- Changed: Optionally allow locked/closed versions for custom field \[[#50526](https://community.openproject.com/wp/50526)\] -- Changed: Hide the sidebar in all tappable screens (tablet and mobile) \[[#50652](https://community.openproject.com/wp/50652)\] -- Changed: Revise permissions for seeded roles \[[#50827](https://community.openproject.com/wp/50827)\] -- Changed: Equals All (&=) operator for user action filter on project collection \[[#50910](https://community.openproject.com/wp/50910)\] -- Changed: Present the storage health information on the admin page \[[#50921](https://community.openproject.com/wp/50921)\] -- Changed: Show work package's meeting tab count \[[#51012](https://community.openproject.com/wp/51012)\] -- Changed: Mobile, the participant section should move to details section \[[#51015](https://community.openproject.com/wp/51015)\] -- Changed: Show identity_url in users edit form \[[#51027](https://community.openproject.com/wp/51027)\] -- Changed: Update strings for user role/status line in share work package modal \[[#51165](https://community.openproject.com/wp/51165)\] -- Changed: openDesk: Navigation quick wins \[[#51264](https://community.openproject.com/wp/51264)\] -- Changed: Add Enterprise Banner and checks for OneDrive/SharePoint file storage integration \[[#51305](https://community.openproject.com/wp/51305)\] -- Changed: Move the custom Help Texts to Community edition \[[#51306](https://community.openproject.com/wp/51306)\] -- Changed: Redirect uri flow \[[#51372](https://community.openproject.com/wp/51372)\] -- Changed: Display since when a failure state is occurring \[[#51423](https://community.openproject.com/wp/51423)\] -- Fixed: Unable to mention User when name display is lastname, firstname \[[#43856](https://community.openproject.com/wp/43856)\] -- Fixed: Total progress does not change color \[[#44859](https://community.openproject.com/wp/44859)\] -- Fixed: Work-package relationship are lost when copying \[[#45533](https://community.openproject.com/wp/45533)\] -- Fixed: No reCAPTCHA during user registration \[[#47796](https://community.openproject.com/wp/47796)\] -- Fixed: Work package can be only once modified in the calendar on Overview page, error on 2nd time \[[#48333](https://community.openproject.com/wp/48333)\] -- Fixed: Save Team Planner view as 2 weeks view not only 1 week view. \[[#48355](https://community.openproject.com/wp/48355)\] -- Fixed: Roadmap: Cannot deselect subprojects on roadmap page \[[#49135](https://community.openproject.com/wp/49135)\] -- Fixed: Work Package Roles shown as options in "Assignee's role" filter \[[#49987](https://community.openproject.com/wp/49987)\] -- Fixed: Wiki: embedded work package table: filter on (deleted) subprojects prevents editing \[[#50080](https://community.openproject.com/wp/50080)\] -- Fixed: Breadcrumb and menu structure is inconsistent for user administration \[[#50109](https://community.openproject.com/wp/50109)\] -- Fixed: When disabling the default `admin` user, after an update two `admin` users exists in the database. \[[#50208](https://community.openproject.com/wp/50208)\] -- Fixed: Missing space between avatars and usernames in Administration -> Users \[[#50213](https://community.openproject.com/wp/50213)\] -- Fixed: Custom export cover background overlay color won't return to the default one after deleting \[[#50219](https://community.openproject.com/wp/50219)\] -- Fixed: Custom actions still shown on WP page after switching from Enterprise free trial to Community \[[#50237](https://community.openproject.com/wp/50237)\] -- Fixed: Unexpected default value for limit_self_registration option of omniauth providers \[[#50432](https://community.openproject.com/wp/50432)\] -- Fixed: Attribute help text icon overlaps with the field \[[#50436](https://community.openproject.com/wp/50436)\] -- Fixed: Removing "use_graph_api" in azure form does not unset it \[[#50448](https://community.openproject.com/wp/50448)\] -- Fixed: Global and Admin hamburger menu is missing \[[#50758](https://community.openproject.com/wp/50758)\] -- Fixed: iCalender are not updated automatically \[[#50768](https://community.openproject.com/wp/50768)\] -- Fixed: Default activity assigned in project where it is inactive breaks time tracking button \[[#50784](https://community.openproject.com/wp/50784)\] -- Fixed: Starting Guided Tour (from the Scrum project) does not work for non-admin \[[#50881](https://community.openproject.com/wp/50881)\] -- Fixed: PDF Export not using default export filename sanitation \[[#50912](https://community.openproject.com/wp/50912)\] -- Fixed: [Error 500] occurs when switching to "ALL" result when searching for "meeting" word in Chinese/Korean/Japanese language in all projects \[[#50972](https://community.openproject.com/wp/50972)\] -- Fixed: In the global calendar create form invalid projects are selectable \[[#50995](https://community.openproject.com/wp/50995)\] -- Fixed: In work packages list, selecting first option of "group by" does not work \[[#51135](https://community.openproject.com/wp/51135)\] -- Fixed: No free sorting of enumerations \[[#51183](https://community.openproject.com/wp/51183)\] -- Fixed: Primer checkboxes lack a background in High Contrast Mode \[[#51275](https://community.openproject.com/wp/51275)\] -- Fixed: Edit project storage leads to project folder for one drive storages \[[#51319](https://community.openproject.com/wp/51319)\] -- Fixed: Disk shown on checkmark list's second level \[[#51401](https://community.openproject.com/wp/51401)\] -- Fixed: Date field on work package too narrow \[[#51402](https://community.openproject.com/wp/51402)\] -- Fixed: Nextcloud storage not displayed in Files tab for users with edit rights \[[#51404](https://community.openproject.com/wp/51404)\] -- Fixed: Upon submitting the general info the storage view component is nested \[[#51411](https://community.openproject.com/wp/51411)\] -- Fixed: Lines not aligned with text on the login screen \[[#51412](https://community.openproject.com/wp/51412)\] -- Fixed: Search not working on some meetings (possibly because of agenda items containing macros) \[[#51426](https://community.openproject.com/wp/51426)\] -- Fixed: Overview page suggests some information (e.g. custom fields, status, description) not set when they are hidden \[[#51431](https://community.openproject.com/wp/51431)\] +- Epic: Share work packages with external users and groups that are not member of the project team \[[#31150](https://community.openproject.org/wp/31150)\] +- Epic: Link work packages with files and folders in OneDrive/SharePoint \[[#36057](https://community.openproject.org/wp/36057)\] +- Epic: Dynamic meetings and agenda items linked to work packages \[[#37297](https://community.openproject.org/wp/37297)\] +- Epic: File Storages - Administration settings with Primer \[[#49841](https://community.openproject.org/wp/49841)\] +- Changed: Allow attachment upload on read-only work packages \[[#29203](https://community.openproject.org/wp/29203)\] +- Changed: Allow filtering of "empty" date fields (start/finish/custom) \[[#39455](https://community.openproject.org/wp/39455)\] +- Changed: Meeting module: Modes and permission levels \[[#49334](https://community.openproject.org/wp/49334)\] +- Changed: Workflow for sharing work packages \[[#49482](https://community.openproject.org/wp/49482)\] +- Changed: Upload custom picture for cover page of pdf export \[[#49684](https://community.openproject.org/wp/49684)\] +- Changed: Meetings tab on work package page \[[#49951](https://community.openproject.org/wp/49951)\] +- Changed: PDF export (single work package): Include all attributes and fields according to the work package type form configuration \[[#49977](https://community.openproject.org/wp/49977)\] +- Changed: Make the seed data in the teaser sections "Welcome to OpenProject" more robust for user that do not have the correct permissions \[[#50070](https://community.openproject.org/wp/50070)\] +- Changed: Skip project selection step in onboarding tour \[[#50073](https://community.openproject.org/wp/50073)\] +- Changed: Activate meeting module and one meeting "weekly" to the seed data \[[#50132](https://community.openproject.org/wp/50132)\] +- Changed: Update project deletion danger zone to include project folders as a dependent relation \[[#50233](https://community.openproject.org/wp/50233)\] +- Changed: [API] Add storage filter to project and project storage collection \[[#50234](https://community.openproject.org/wp/50234)\] +- Changed: Ensuring connection and permissions on project folder while redirecting users to Nextcloud/OneDrive from project menu. \[[#50437](https://community.openproject.org/wp/50437)\] +- Changed: Optionally allow locked/closed versions for custom field \[[#50526](https://community.openproject.org/wp/50526)\] +- Changed: Hide the sidebar in all tappable screens (tablet and mobile) \[[#50652](https://community.openproject.org/wp/50652)\] +- Changed: Revise permissions for seeded roles \[[#50827](https://community.openproject.org/wp/50827)\] +- Changed: Equals All (&=) operator for user action filter on project collection \[[#50910](https://community.openproject.org/wp/50910)\] +- Changed: Present the storage health information on the admin page \[[#50921](https://community.openproject.org/wp/50921)\] +- Changed: Show work package's meeting tab count \[[#51012](https://community.openproject.org/wp/51012)\] +- Changed: Mobile, the participant section should move to details section \[[#51015](https://community.openproject.org/wp/51015)\] +- Changed: Show identity_url in users edit form \[[#51027](https://community.openproject.org/wp/51027)\] +- Changed: Update strings for user role/status line in share work package modal \[[#51165](https://community.openproject.org/wp/51165)\] +- Changed: openDesk: Navigation quick wins \[[#51264](https://community.openproject.org/wp/51264)\] +- Changed: Add Enterprise Banner and checks for OneDrive/SharePoint file storage integration \[[#51305](https://community.openproject.org/wp/51305)\] +- Changed: Move the custom Help Texts to Community edition \[[#51306](https://community.openproject.org/wp/51306)\] +- Changed: Redirect uri flow \[[#51372](https://community.openproject.org/wp/51372)\] +- Changed: Display since when a failure state is occurring \[[#51423](https://community.openproject.org/wp/51423)\] +- Fixed: Unable to mention User when name display is lastname, firstname \[[#43856](https://community.openproject.org/wp/43856)\] +- Fixed: Total progress does not change color \[[#44859](https://community.openproject.org/wp/44859)\] +- Fixed: Work-package relationship are lost when copying \[[#45533](https://community.openproject.org/wp/45533)\] +- Fixed: No reCAPTCHA during user registration \[[#47796](https://community.openproject.org/wp/47796)\] +- Fixed: Work package can be only once modified in the calendar on Overview page, error on 2nd time \[[#48333](https://community.openproject.org/wp/48333)\] +- Fixed: Save Team Planner view as 2 weeks view not only 1 week view. \[[#48355](https://community.openproject.org/wp/48355)\] +- Fixed: Roadmap: Cannot deselect subprojects on roadmap page \[[#49135](https://community.openproject.org/wp/49135)\] +- Fixed: Work Package Roles shown as options in "Assignee's role" filter \[[#49987](https://community.openproject.org/wp/49987)\] +- Fixed: Wiki: embedded work package table: filter on (deleted) subprojects prevents editing \[[#50080](https://community.openproject.org/wp/50080)\] +- Fixed: Breadcrumb and menu structure is inconsistent for user administration \[[#50109](https://community.openproject.org/wp/50109)\] +- Fixed: When disabling the default `admin` user, after an update two `admin` users exists in the database. \[[#50208](https://community.openproject.org/wp/50208)\] +- Fixed: Missing space between avatars and usernames in Administration -> Users \[[#50213](https://community.openproject.org/wp/50213)\] +- Fixed: Custom export cover background overlay color won't return to the default one after deleting \[[#50219](https://community.openproject.org/wp/50219)\] +- Fixed: Custom actions still shown on WP page after switching from Enterprise free trial to Community \[[#50237](https://community.openproject.org/wp/50237)\] +- Fixed: Unexpected default value for limit_self_registration option of omniauth providers \[[#50432](https://community.openproject.org/wp/50432)\] +- Fixed: Attribute help text icon overlaps with the field \[[#50436](https://community.openproject.org/wp/50436)\] +- Fixed: Removing "use_graph_api" in azure form does not unset it \[[#50448](https://community.openproject.org/wp/50448)\] +- Fixed: Global and Admin hamburger menu is missing \[[#50758](https://community.openproject.org/wp/50758)\] +- Fixed: iCalender are not updated automatically \[[#50768](https://community.openproject.org/wp/50768)\] +- Fixed: Default activity assigned in project where it is inactive breaks time tracking button \[[#50784](https://community.openproject.org/wp/50784)\] +- Fixed: Starting Guided Tour (from the Scrum project) does not work for non-admin \[[#50881](https://community.openproject.org/wp/50881)\] +- Fixed: PDF Export not using default export filename sanitation \[[#50912](https://community.openproject.org/wp/50912)\] +- Fixed: [Error 500] occurs when switching to "ALL" result when searching for "meeting" word in Chinese/Korean/Japanese language in all projects \[[#50972](https://community.openproject.org/wp/50972)\] +- Fixed: In the global calendar create form invalid projects are selectable \[[#50995](https://community.openproject.org/wp/50995)\] +- Fixed: In work packages list, selecting first option of "group by" does not work \[[#51135](https://community.openproject.org/wp/51135)\] +- Fixed: No free sorting of enumerations \[[#51183](https://community.openproject.org/wp/51183)\] +- Fixed: Primer checkboxes lack a background in High Contrast Mode \[[#51275](https://community.openproject.org/wp/51275)\] +- Fixed: Edit project storage leads to project folder for one drive storages \[[#51319](https://community.openproject.org/wp/51319)\] +- Fixed: Disk shown on checkmark list's second level \[[#51401](https://community.openproject.org/wp/51401)\] +- Fixed: Date field on work package too narrow \[[#51402](https://community.openproject.org/wp/51402)\] +- Fixed: Nextcloud storage not displayed in Files tab for users with edit rights \[[#51404](https://community.openproject.org/wp/51404)\] +- Fixed: Upon submitting the general info the storage view component is nested \[[#51411](https://community.openproject.org/wp/51411)\] +- Fixed: Lines not aligned with text on the login screen \[[#51412](https://community.openproject.org/wp/51412)\] +- Fixed: Search not working on some meetings (possibly because of agenda items containing macros) \[[#51426](https://community.openproject.org/wp/51426)\] +- Fixed: Overview page suggests some information (e.g. custom fields, status, description) not set when they are hidden \[[#51431](https://community.openproject.org/wp/51431)\] ### Contributions A very special thank you goes to our sponsors for features and improvements of this release: diff --git a/docs/release-notes/13-1-1/README.md b/docs/release-notes/13-1-1/README.md index 8cab3d77257c..ac0d344a7e16 100644 --- a/docs/release-notes/13-1-1/README.md +++ b/docs/release-notes/13-1-1/README.md @@ -10,21 +10,21 @@ release_date: 2023-12-20 Release date: 2023-12-20 -We released [OpenProject 13.1.1](https://community.openproject.com/versions/1980). +We released [OpenProject 13.1.1](https://community.openproject.org/versions/1980). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Inconsistent hrefs in wp shared mail \[[#51480](https://community.openproject.com/wp/51480)\] -- Fixed: Slow notification polling \[[#51622](https://community.openproject.com/wp/51622)\] -- Fixed: Error from rails at openproject configure : Rails couldn't infer whether you are using multiple databases from your database.yml and can't generate the tasks for the non-primary databases. \[[#51625](https://community.openproject.com/wp/51625)\] -- Fixed: Share modal has two close options \[[#51652](https://community.openproject.com/wp/51652)\] -- Fixed: Missing translation ` wrote:` when quoting in work package activity \[[#51656](https://community.openproject.com/wp/51656)\] -- Fixed: Very slow Project.visible scope for administrators \[[#51659](https://community.openproject.com/wp/51659)\] -- Fixed: Meeting agenda create Form Buttons overlap on mobile \[[#51687](https://community.openproject.com/wp/51687)\] -- Fixed: Time and costs \[[#51700](https://community.openproject.com/wp/51700)\] -- Fixed: Pasting into autocompleter does not work initially \[[#51730](https://community.openproject.com/wp/51730)\] +- Fixed: Inconsistent hrefs in wp shared mail \[[#51480](https://community.openproject.org/wp/51480)\] +- Fixed: Slow notification polling \[[#51622](https://community.openproject.org/wp/51622)\] +- Fixed: Error from rails at openproject configure : Rails couldn't infer whether you are using multiple databases from your database.yml and can't generate the tasks for the non-primary databases. \[[#51625](https://community.openproject.org/wp/51625)\] +- Fixed: Share modal has two close options \[[#51652](https://community.openproject.org/wp/51652)\] +- Fixed: Missing translation ` wrote:` when quoting in work package activity \[[#51656](https://community.openproject.org/wp/51656)\] +- Fixed: Very slow Project.visible scope for administrators \[[#51659](https://community.openproject.org/wp/51659)\] +- Fixed: Meeting agenda create Form Buttons overlap on mobile \[[#51687](https://community.openproject.org/wp/51687)\] +- Fixed: Time and costs \[[#51700](https://community.openproject.org/wp/51700)\] +- Fixed: Pasting into autocompleter does not work initially \[[#51730](https://community.openproject.org/wp/51730)\] #### Contributions A big thanks to community members for reporting bugs and helping us identifying and providing fixes. diff --git a/docs/release-notes/13-1-2/README.md b/docs/release-notes/13-1-2/README.md index 6c0911b5fdcf..bac3acd811fa 100644 --- a/docs/release-notes/13-1-2/README.md +++ b/docs/release-notes/13-1-2/README.md @@ -10,7 +10,7 @@ release_date: 2023-12-22 Release date: 2023-12-22 -We released [OpenProject 13.1.2](https://community.openproject.com/versions/1982). +We released [OpenProject 13.1.2](https://community.openproject.org/versions/1982). The release contains several bug fixes and we recommend updating to the newest version. @@ -19,7 +19,7 @@ The release contains several bug fixes and we recommend updating to the newest v -- Fixed: Unnecessary bullet displayed for TODO checkboxes in wp comments \[[#45469](https://community.openproject.com/wp/45469)\] -- Fixed: Black text invisible on some darker colors in the Task modal of the Task board \[[#49934](https://community.openproject.com/wp/49934)\] -- Fixed: White space at the end of page when scrolling a wiki page \[[#51680](https://community.openproject.com/wp/51680)\] -- Fixed: Migration from 12.x to 13.1 fails for installations already having file links in the database \[[#51801](https://community.openproject.com/wp/51801)\] +- Fixed: Unnecessary bullet displayed for TODO checkboxes in wp comments \[[#45469](https://community.openproject.org/wp/45469)\] +- Fixed: Black text invisible on some darker colors in the Task modal of the Task board \[[#49934](https://community.openproject.org/wp/49934)\] +- Fixed: White space at the end of page when scrolling a wiki page \[[#51680](https://community.openproject.org/wp/51680)\] +- Fixed: Migration from 12.x to 13.1 fails for installations already having file links in the database \[[#51801](https://community.openproject.org/wp/51801)\] diff --git a/docs/release-notes/13-2-0/README.md b/docs/release-notes/13-2-0/README.md index a343906f8c93..e9175494a301 100644 --- a/docs/release-notes/13-2-0/README.md +++ b/docs/release-notes/13-2-0/README.md @@ -10,9 +10,9 @@ release_date: 2024-01-17 Release date: 2024-01-17 -We released [OpenProject 13.2.0](https://community.openproject.com/versions/1979). +We released [OpenProject 13.2.0](https://community.openproject.org/versions/1979). -Among other features, it brings improvements for the **OneDrive/SharePoint integration**, now also allowing **Manual project folders**. In addition to that, both OneDrive/SharePoint and Nextcloud integrations were improved by **showing deleted files in OpenProject work packages**. +Among other features, it brings improvements for the **OneDrive/SharePoint integration**, now also allowing **manual project folders**. In addition to that, both OneDrive/SharePoint and Nextcloud integrations were improved by **showing deleted files in OpenProject work packages**. We also added the option to **filter the project member list**, allowing project administrators to easily filter through the project member lists based on various roles, groups and shares. Instance administrators can now also allow for users to **change work package status without the rights to edit a work package**. @@ -27,7 +27,7 @@ Finally, **several fields were renamed**: As always, this release contains several bug fixes and we recommend updating to the newest version. -## Manual project folders for OneDrive/SharePoint storages (Enterprise Add-On) +## Manual project folders for OneDrive/SharePoint storages (Enterprise add-on) With OpenProject 13.2, manual project folders have become available for OneDrive/SharePoint storage, further improving access to essential project files. @@ -90,30 +90,30 @@ Please note that **% Complete** does not adjust automatically when the values of -- Bugfix: "Spent time" is not translated on overview page \[[#42646](https://community.openproject.com/wp/42646)\] -- Bugfix: Notifications view is cut off on Samsung Galaxy S21 \[[#44221](https://community.openproject.com/wp/44221)\] -- Bugfix: Project "Members" list names groups that are irrelevant for the project \[[#47613](https://community.openproject.com/wp/47613)\] -- Bugfix: Dismiss action of the primer banner is not translated \[[#51360](https://community.openproject.com/wp/51360)\] -- Bugfix: In mobile view, the primer banner does not take the full width \[[#51370](https://community.openproject.com/wp/51370)\] -- Bugfix: Can not add invited users to existing groups \[[#51679](https://community.openproject.com/wp/51679)\] -- Bugfix: Project.visible scope slower than it should be \[[#51706](https://community.openproject.com/wp/51706)\] -- Bugfix: Ongoing meetings are not visible via the Meetings tab in work packages \[[#51715](https://community.openproject.com/wp/51715)\] -- Bugfix: The Access Token expiry date not updated on refresh for FileStorage tokens \[[#51749](https://community.openproject.com/wp/51749)\] -- Bugfix: Work package share permissions not in Work package permission group \[[#52086](https://community.openproject.com/wp/52086)\] -- Bugfix: lockVersion missing in payload for API WP form when only having change_work_package_status permission \[[#52089](https://community.openproject.com/wp/52089)\] -- Bugfix: Status cannot be changed in backlogs when only having change_work_package_status permission \[[#52090](https://community.openproject.com/wp/52090)\] -- Bugfix: Primer tooltips are cut off in OpenProject \[[#52099](https://community.openproject.com/wp/52099)\] -- Bugfix: Remaining hours field not renamed in backlogs forms \[[#52107](https://community.openproject.com/wp/52107)\] -- Bugfix: Estimated time is not updated when a sub-WP is delete. \[[#52125](https://community.openproject.com/wp/52125)\] -- Feature: Shared with users can become assignee of the work package \[[#49527](https://community.openproject.com/wp/49527)\] -- Feature: Allow status change without Edit WP rights \[[#50849](https://community.openproject.com/wp/50849)\] -- Feature: Change calculation and name of Work and Remaining work \[[#50953](https://community.openproject.com/wp/50953)\] -- Feature: Gantt: shorten menu and add "Show relations" action \[[#51170](https://community.openproject.com/wp/51170)\] -- Feature: Enable manual project folders for OneDrive/SharePoint storages \[[#51362](https://community.openproject.com/wp/51362)\] -- Feature: Filter project member list \[[#51484](https://community.openproject.com/wp/51484)\] -- Feature: Use the new defaults on the project index page for page header and sidebar \[[#51678](https://community.openproject.com/wp/51678)\] -- Feature: Teaser the share feature in the Community edition \[[#51704](https://community.openproject.com/wp/51704)\] -- Feature: Show file links of files that are not available to the user in the cloud storage \[[#52013](https://community.openproject.com/wp/52013)\] +- Bugfix: "Spent time" is not translated on overview page \[[#42646](https://community.openproject.org/wp/42646)\] +- Bugfix: Notifications view is cut off on Samsung Galaxy S21 \[[#44221](https://community.openproject.org/wp/44221)\] +- Bugfix: Project "Members" list names groups that are irrelevant for the project \[[#47613](https://community.openproject.org/wp/47613)\] +- Bugfix: Dismiss action of the primer banner is not translated \[[#51360](https://community.openproject.org/wp/51360)\] +- Bugfix: In mobile view, the primer banner does not take the full width \[[#51370](https://community.openproject.org/wp/51370)\] +- Bugfix: Can not add invited users to existing groups \[[#51679](https://community.openproject.org/wp/51679)\] +- Bugfix: Project.visible scope slower than it should be \[[#51706](https://community.openproject.org/wp/51706)\] +- Bugfix: Ongoing meetings are not visible via the Meetings tab in work packages \[[#51715](https://community.openproject.org/wp/51715)\] +- Bugfix: The Access Token expiry date not updated on refresh for FileStorage tokens \[[#51749](https://community.openproject.org/wp/51749)\] +- Bugfix: Work package share permissions not in Work package permission group \[[#52086](https://community.openproject.org/wp/52086)\] +- Bugfix: lockVersion missing in payload for API WP form when only having change_work_package_status permission \[[#52089](https://community.openproject.org/wp/52089)\] +- Bugfix: Status cannot be changed in backlogs when only having change_work_package_status permission \[[#52090](https://community.openproject.org/wp/52090)\] +- Bugfix: Primer tooltips are cut off in OpenProject \[[#52099](https://community.openproject.org/wp/52099)\] +- Bugfix: Remaining hours field not renamed in backlogs forms \[[#52107](https://community.openproject.org/wp/52107)\] +- Bugfix: Estimated time is not updated when a sub-WP is delete. \[[#52125](https://community.openproject.org/wp/52125)\] +- Feature: Shared with users can become assignee of the work package \[[#49527](https://community.openproject.org/wp/49527)\] +- Feature: Allow status change without Edit WP rights \[[#50849](https://community.openproject.org/wp/50849)\] +- Feature: Change calculation and name of Work and Remaining work \[[#50953](https://community.openproject.org/wp/50953)\] +- Feature: Gantt: shorten menu and add "Show relations" action \[[#51170](https://community.openproject.org/wp/51170)\] +- Feature: Enable manual project folders for OneDrive/SharePoint storages \[[#51362](https://community.openproject.org/wp/51362)\] +- Feature: Filter project member list \[[#51484](https://community.openproject.org/wp/51484)\] +- Feature: Use the new defaults on the project index page for page header and sidebar \[[#51678](https://community.openproject.org/wp/51678)\] +- Feature: Teaser the share feature in the Community edition \[[#51704](https://community.openproject.org/wp/51704)\] +- Feature: Show file links of files that are not available to the user in the cloud storage \[[#52013](https://community.openproject.org/wp/52013)\] diff --git a/docs/release-notes/13-2-1/README.md b/docs/release-notes/13-2-1/README.md new file mode 100644 index 000000000000..7c5bcb386386 --- /dev/null +++ b/docs/release-notes/13-2-1/README.md @@ -0,0 +1,56 @@ +--- +title: OpenProject 13.2.1 +sidebar_navigation: + title: 13.2.1 +release_version: 13.2.1 +release_date: 2024-01-31 +--- + +# OpenProject 13.2.1 + +Release date: 2024-01-31 + +We released [OpenProject 13.2.1](https://community.openproject.com/versions/1991). +The release contains several bug fixes and we recommend updating to the newest version. + + + +## Bug fixes and changes + + + + +- Bugfix: Underscore is treated as wildcard in search filter \[[#33574](https://community.openproject.com/wp/33574)\] +- Bugfix: Custom actions buttons look inactive until we hover over them and click \[[#45677](https://community.openproject.com/wp/45677)\] +- Bugfix: Remove custom field from all type configurations leaves them active in project, shown in bulk edit \[[#49619](https://community.openproject.com/wp/49619)\] +- Bugfix: Columns in task board not in sync for more than one task (column width not working) \[[#49788](https://community.openproject.com/wp/49788)\] +- Bugfix: IFC conversion fails (libhostfxr.so not found) (reintroduced bug) \[[#50172](https://community.openproject.com/wp/50172)\] +- Bugfix: Please refrain from overwriting logrotate settings with every single update \[[#50477](https://community.openproject.com/wp/50477)\] +- Bugfix: Work packages get lost when Teamplanner's time frame switch from Work week to 2 weeks \[[#50895](https://community.openproject.com/wp/50895)\] +- Bugfix: Can't pay for the Subscription after my trial period has ended \[[#51230](https://community.openproject.com/wp/51230)\] +- Bugfix: Checkboxes are not correclty displayed in the CkEditor \[[#51247](https://community.openproject.com/wp/51247)\] +- Bugfix: Error 500 when trying to view a budget with a running WP timer \[[#51460](https://community.openproject.com/wp/51460)\] +- Bugfix: /opt/openproject/lib/redmine/imap.rb:53:in `new': DEPRECATED: Call Net::IMAP.new with keyword options (StructuredWarnings::StandardWarning) \[[#51799](https://community.openproject.com/wp/51799)\] +- Bugfix: Renaming Work Package Views/ Boards : Edit Lock Issue \[[#51851](https://community.openproject.com/wp/51851)\] +- Bugfix: Date is not correct on the boards cards due to time zone difference \[[#51858](https://community.openproject.com/wp/51858)\] +- Bugfix: Enterprise icon is inconsistently aligned in the sidebar \[[#52097](https://community.openproject.com/wp/52097)\] +- Bugfix: Files tab shows bad error message on request timeout to remote storage \[[#52181](https://community.openproject.com/wp/52181)\] +- Bugfix: OIDC backchannel logout broken as retained session values are not available in the user_logged_in_hook \[[#52185](https://community.openproject.com/wp/52185)\] +- Bugfix: PDF export fails with "undefined method `sourcepos'" \[[#52193](https://community.openproject.com/wp/52193)\] +- Bugfix: Roadmap progress is overflowing \[[#52232](https://community.openproject.com/wp/52232)\] +- Bugfix: Work package "+ Create" button drop down only opening every second time \[[#52260](https://community.openproject.com/wp/52260)\] +- Bugfix: Creating Work Package - Mentions not working anymore \[[#52298](https://community.openproject.com/wp/52298)\] +- Bugfix: remaining hours cropped on task board view \[[#52362](https://community.openproject.com/wp/52362)\] +- Bugfix: Work packages: Create child fails if milestone is first selected type \[[#52373](https://community.openproject.com/wp/52373)\] +- Bugfix: Copying project fails when work package with children is copied \[[#52384](https://community.openproject.com/wp/52384)\] +- Bugfix: Dynamic meeting HTML titles missing \[[#52389](https://community.openproject.com/wp/52389)\] + + + + +#### Contributions +A big thanks to community members for reporting bugs and helping us identifying and providing fixes. + +Special thanks for reporting and finding bugs go to + +Pawlik Wini, Arved Kampe, Thomas Wiemann, Jeffrey McDole, Tom Gugel, Oleksii Borysenko, René Schodder, Sreekanth Gopalakris, Various Interactive, Kajetan Ignaszczak diff --git a/docs/release-notes/3/3-0-11/README.md b/docs/release-notes/3/3-0-11/README.md index d0c2b42f425d..cde3912336d8 100644 --- a/docs/release-notes/3/3-0-11/README.md +++ b/docs/release-notes/3/3-0-11/README.md @@ -28,7 +28,7 @@ the story points in the work package page With the integration of the repository-authentication plugin into OpenProject ([#14783](https://community.openproject.org/work_packages/14783 "Port whole functionality of openproject-repository_authentication into the core (closed)")), -it is now once again possible to manage authentication and authorisation +it is now once again possible to manage authentication and authorization of SVN repositories with OpenProject. The same will be allowed for Git repositories with OpenProject 4.0 ([#3708](https://community.openproject.org/work_packages/3708 "Release OpenProject 4.0 (closed)")). diff --git a/docs/release-notes/3/3-0-3/README.md b/docs/release-notes/3/3-0-3/README.md index bb6fe8b0c688..077715105c3f 100644 --- a/docs/release-notes/3/3-0-3/README.md +++ b/docs/release-notes/3/3-0-3/README.md @@ -14,7 +14,7 @@ and bring you [3.0.3](https://github.com/opf/openproject/tree/v3.0.3) with this issue resolved. If you want to know more about the vulnerability check out Rafael -França’s +França's [blog post](https://weblog.rubyonrails.org/2014/5/6/Rails_3_2_18_4_0_5_and_4_1_1_have_been_released/) about the Rails release. @@ -52,6 +52,6 @@ variable to configure the session store. See if you want to know how to do that exactly. And here is the full changelog -[3.0.3](https://community.openproject.com/versions/313) +[3.0.3](https://community.openproject.org/versions/313) diff --git a/docs/release-notes/3/3-0-4/README.md b/docs/release-notes/3/3-0-4/README.md index fded5e01072d..5f73a60e6d04 100644 --- a/docs/release-notes/3/3-0-4/README.md +++ b/docs/release-notes/3/3-0-4/README.md @@ -28,4 +28,4 @@ file or other configurations anymore. Regardless of whether you are using passenger or any other application server. For a full list of fixes we made please see the -[changelog v 3.0.4](https://community.openproject.com/versions/316) +[changelog v 3.0.4](https://community.openproject.org/versions/316) diff --git a/docs/release-notes/3/3-0-8/README.md b/docs/release-notes/3/3-0-8/README.md index cc7131a95385..093b974c6a94 100644 --- a/docs/release-notes/3/3-0-8/README.md +++ b/docs/release-notes/3/3-0-8/README.md @@ -22,7 +22,7 @@ that for this to happen you need to have [delayed job running](https://github.com/collectiveidea/delayed_job). For a complete list of changes to OpenProject, please refer to the -[version’s packages](https://community.openproject.com/projects/openproject/roadmap). +[version’s packages](https://community.openproject.org/projects/openproject/roadmap). However, this is only half of the truth. With the OpenProject 3.0.8 release we chose to alter our release process. While the changes for the diff --git a/docs/release-notes/5/5-0-0/README.md b/docs/release-notes/5/5-0-0/README.md index 0e905ac3554b..67bb3b18d004 100644 --- a/docs/release-notes/5/5-0-0/README.md +++ b/docs/release-notes/5/5-0-0/README.md @@ -13,7 +13,7 @@ OpenProject 5.0 extends the work package split screen functionality and allows users to create work packages from the work package table via the work package split screen -([#17549](https://community.openproject.com/wp/17549)). +([#17549](https://community.openproject.org/wp/17549)). Attachments can now be more easily added by using the drag and drop area on the work package split screen. @@ -25,7 +25,7 @@ on the work package split screen. The existing work package screen has been replaced by a new responsive work package screen, making it possible to quickly switch from the work package page to the full screen view -([#16364](https://community.openproject.com/wp/16364)). +([#16364](https://community.openproject.org/wp/16364)). Similar to the work package split screen, the work package full screen contains information which can be accessed via different tabs while @@ -41,12 +41,12 @@ package. - It is possible to edit and comment in one step in the work package split screen - ([#20208](https://community.openproject.com/wp/20208)). + ([#20208](https://community.openproject.org/wp/20208)). - Watcher behavior changed: User receive an email notification when they have been added as watchers. - Repository revisions are shown in the activity tab on the work package split screen - ([#15422](https://community.openproject.com/wp/15422)). + ([#15422](https://community.openproject.org/wp/15422)). @@ -70,8 +70,8 @@ within a short time period are aggregated. Work package updates by the same user within this time period are shown as one activity entry. Email notifications are sent based on these aggregated -activities ([#20694](https://community.openproject.com/wp/20694), -[#21035](https://community.openproject.com/wp/21035)). +activities ([#20694](https://community.openproject.org/wp/20694), +[#21035](https://community.openproject.org/wp/21035)). @@ -84,7 +84,7 @@ the “OpenProject 5.0 upgrade guide”. With OpenProject 5.0 the repository functionality has been significantly improved -([#20218](https://community.openproject.com/wp/20218)): +([#20218](https://community.openproject.org/wp/20218)): When deleting a project, the associated repository is deleted automatically as well. @@ -130,7 +130,7 @@ are a lot of projects. The My Account page has been restructured and the settings are spread out across different sections -([#19753](https://community.openproject.com/wp/19753)). +([#19753](https://community.openproject.org/wp/19753)). Profile images can be set in my account section (local avatar plugin). @@ -140,7 +140,7 @@ Profile images can be set in my account section (local avatar plugin). The project and user creation has been simplified and only shows the most important information -([#20884](https://community.openproject.com/wp/20884)). +([#20884](https://community.openproject.org/wp/20884)). The create project screen only shows the project name and required custom fields. @@ -158,17 +158,17 @@ have been deprecated and removed with OpenProject 5.0: - The field “Homepage” in the project settings has been removed to reduce complexity. Instead a custom field or the project description can be used to contain the homepage information - ([#1928](https://community.openproject.com/wp/1928)). + ([#1928](https://community.openproject.org/wp/1928)). - The field “Summary” in the project settings has been removed to reduce complexity. Instead of the summary the first row of the project description is shown on the project list. - Project dependencies have been removed from OpenProject since they didn’t serve a significant purpose. Additionally, the “second grouping criterion” has been removed from the timelines filters - ([#21509](https://community.openproject.com/wp/21509)). + ([#21509](https://community.openproject.org/wp/21509)). - The column “Set current rate” has been removed from the project member table - ([#21501](https://community.openproject.com/wp/21501)). + ([#21501](https://community.openproject.org/wp/21501)). A user’s hourly rate can be set in the user administration. The **copy** and **duplicate** functionality on the work package @@ -182,20 +182,20 @@ included in OpenProject 5.0: - The custom fields have been moved to a separate tab in the project settings - ([#20841](https://community.openproject.com/wp/20841)). + ([#20841](https://community.openproject.org/wp/20841)). - Status reports are no longer a separate menu entry in the side menu but they have been moved to the timeline - toolbar ([#21822](https://community.openproject.com/wp/21822)). + toolbar ([#21822](https://community.openproject.org/wp/21822)). ## Improved design OpenProject 5.0 includes several design improvements. For example, the button styling has been improved -([#19675](https://community.openproject.com/wp/19675)). +([#19675](https://community.openproject.org/wp/19675)). The notification and alert messages for work packages have been re-styled -([#18623](https://community.openproject.com/wp/18623)) +([#18623](https://community.openproject.org/wp/18623)) and the layout has been improved in many other places as well. ## Additional functionalities for API v3 @@ -211,7 +211,7 @@ Please note that the API v3 is still a draft. Rails – the main framework used for OpenProject – has been updated to Rails 4.2 -([#20045](https://community.openproject.com/wp/20045)). +([#20045](https://community.openproject.org/wp/20045)). This ensures the technical reliability and allows future improvements. diff --git a/docs/release-notes/5/5-0-17/README.md b/docs/release-notes/5/5-0-17/README.md index 1c0c3c5ec1f6..cd117b95ca06 100644 --- a/docs/release-notes/5/5-0-17/README.md +++ b/docs/release-notes/5/5-0-17/README.md @@ -11,37 +11,37 @@ OpenProject 5.0.17 contains several bug fixes: - The work package attribute “Estimated time” could not be set back to zero once set - ([#22829](https://community.openproject.com/wp/22829)). + ([#22829](https://community.openproject.org/wp/22829)). - The documents widget on MyPage could not be removed once added - ([#22814](https://community.openproject.com/wp/22814)). + ([#22814](https://community.openproject.org/wp/22814)). - On small screens the login button was not displayed - ([#22945](https://community.openproject.com/wp/22945)). + ([#22945](https://community.openproject.org/wp/22945)). - Several design bugs existed - ([#22833](https://community.openproject.com/wp/22833), - [#22836](https://community.openproject.com/wp/22836), - [#22876](https://community.openproject.com/wp/22876), - [#22906](https://community.openproject.com/wp/22906), - [#22907](https://community.openproject.com/wp/22907), - [#22936](https://community.openproject.com/wp/22936)). + ([#22833](https://community.openproject.org/wp/22833), + [#22836](https://community.openproject.org/wp/22836), + [#22876](https://community.openproject.org/wp/22876), + [#22906](https://community.openproject.org/wp/22906), + [#22907](https://community.openproject.org/wp/22907), + [#22936](https://community.openproject.org/wp/22936)). - Several accessibility errors - existed ([#22935](https://community.openproject.com/wp/22935), - [#22948](https://community.openproject.com/wp/22948), - [#22957](https://community.openproject.com/wp/22957)). + existed ([#22935](https://community.openproject.org/wp/22935), + [#22948](https://community.openproject.org/wp/22948), + [#22957](https://community.openproject.org/wp/22957)). In addition, there are several design and usability improvements: - Several buttons for quick actions have been added to the project page - ([#22808](https://community.openproject.com/wp/22808)). + ([#22808](https://community.openproject.org/wp/22808)). - The design and usability of the wiki page has been improved - ([#22887](https://community.openproject.com/wp/22887)). + ([#22887](https://community.openproject.org/wp/22887)). - In order to offer a better user experience for mobile users, the tabs on the work package page are displayed at the bottom of the page on small screens - ([#22953](https://community.openproject.com/wp/22953)). + ([#22953](https://community.openproject.org/wp/22953)). For further information on the release, please refer to the -[Changelog v.5.0.17](https://community.openproject.com/versions/805) +[Changelog v.5.0.17](https://community.openproject.org/versions/805) or take a look at [GitHub](https://github.com/opf/openproject/tree/v5.0.17). diff --git a/docs/release-notes/5/5-0-18/README.md b/docs/release-notes/5/5-0-18/README.md index 146761b2261c..38598704e95d 100644 --- a/docs/release-notes/5/5-0-18/README.md +++ b/docs/release-notes/5/5-0-18/README.md @@ -11,41 +11,41 @@ OpenProject 5.0.18 contains several bug fixes: - The wiki toolbar did not work. This has been fixed - ([#23050](https://community.openproject.com/wp/23050)). + ([#23050](https://community.openproject.org/wp/23050)). - When a project contains no members the button to add a member on the project overview was not displayed. Also the link on the button was wrong. This has been fixed - ([#22970](https://community.openproject.com/wp/22970)). + ([#22970](https://community.openproject.org/wp/22970)). - Some of the links on the landing page were wrong and have been corrected - ([#22967](https://community.openproject.com/wp/22967)). + ([#22967](https://community.openproject.org/wp/22967)). - An error preventing exported PDFs to be opened on Mac OS X El Capitan has been fixed - ([#22730](https://community.openproject.com/wp/22730)). + ([#22730](https://community.openproject.org/wp/22730)). - Gravatars were not properly loaded. This has been fixed - ([#5120](https://community.openproject.com/wp/5120)). + ([#5120](https://community.openproject.org/wp/5120)). In addition, there are several design and usability improvements: - The styling for the documents module was missing. This has been fixed - ([#23158](https://community.openproject.com/wp/23158)). + ([#23158](https://community.openproject.org/wp/23158)). - Several improvements have been made to responsive / mobile layouts - ([#22953](https://community.openproject.com/wp/22953), - [#22944](https://community.openproject.com/wp/22944)). + ([#22953](https://community.openproject.org/wp/22953), + [#22944](https://community.openproject.org/wp/22944)). - Several design errors have been fixed - ([#23109](https://community.openproject.com/wp/23109), - [#23104](https://community.openproject.com/wp/23104), - [#23052](https://community.openproject.com/wp/23052), - [#23046](https://community.openproject.com/wp/23046), - [#22997](https://community.openproject.com/wp/22997)). + ([#23109](https://community.openproject.org/wp/23109), + [#23104](https://community.openproject.org/wp/23104), + [#23052](https://community.openproject.org/wp/23052), + [#23046](https://community.openproject.org/wp/23046), + [#22997](https://community.openproject.org/wp/22997)). - Many accessibility improvements have been made. The textbox above a forum does now render textile. It’s therefore possible to e.g. include links or references -([#23180](https://community.openproject.com/wp/23180)). +([#23180](https://community.openproject.org/wp/23180)). For further information on the release, please refer to the -[Changelog v.5.0.18](https://community.openproject.com/versions/806) +[Changelog v.5.0.18](https://community.openproject.org/versions/806) or take a look at [GitHub](https://github.com/opf/openproject/tree/v5.0.18). diff --git a/docs/release-notes/5/5-0-19/README.md b/docs/release-notes/5/5-0-19/README.md index b7c5fde97668..d319b134f9fb 100644 --- a/docs/release-notes/5/5-0-19/README.md +++ b/docs/release-notes/5/5-0-19/README.md @@ -12,28 +12,28 @@ OpenProject 5.0.19 contains several bug fixes: - An error has been resolved which prevented the assignment of work packages to groups when editing a work package - ([#23099](https://community.openproject.com/wp/23099)). + ([#23099](https://community.openproject.org/wp/23099)). - An error in the calculation of the progress of work packages with children has been fixed - ([#23251](https://community.openproject.com/wp/23251)). + ([#23251](https://community.openproject.org/wp/23251)). - The burndown chart on the backlogs page was broken when a language other than English was selected. This has been fixed - ([#23253](https://community.openproject.com/wp/23253)). + ([#23253](https://community.openproject.org/wp/23253)). - The context menu on the backlogs page did not disappear when an entry was selected. This has been resolved - ([#22837](https://community.openproject.com/wp/22837)). + ([#22837](https://community.openproject.org/wp/22837)). - It was not possible to delete files attached to a budget. This has been fixed - ([#23110](https://community.openproject.com/wp/23110)). + ([#23110](https://community.openproject.org/wp/23110)). - When creating or editing budgets and assigning groups for the planned labor costs, “Deleted user” was shown instead of the group name. This has been resolved - ([#23057](https://community.openproject.com/wp/23057)). + ([#23057](https://community.openproject.org/wp/23057)). - A security error has been fixed which allowed Angular injections in texts - ([#23073](https://community.openproject.com/wp/23073)). + ([#23073](https://community.openproject.org/wp/23073)). For further information on the release, please refer to the -[Changelog v.5.0.19](https://community.openproject.com/versions/810) +[Changelog v.5.0.19](https://community.openproject.org/versions/810) or take a look at [GitHub](https://github.com/opf/openproject/tree/v5.0.19). diff --git a/docs/release-notes/6/6-0-0/README.md b/docs/release-notes/6/6-0-0/README.md index 74a23bf4c235..748d114bc620 100644 --- a/docs/release-notes/6/6-0-0/README.md +++ b/docs/release-notes/6/6-0-0/README.md @@ -13,7 +13,7 @@ package page. ## Inline create for work packages -OpenProject 6.0 adds the ability to rapidly create a list of work packages (e.g. tasks) via the work package table ([#13702](https://community.openproject.com/wp/13702)). +OpenProject 6.0 adds the ability to rapidly create a list of work packages (e.g. tasks) via the work package table ([#13702](https://community.openproject.org/wp/13702)). As a result, you can now easily and swiftly create task table. @@ -22,7 +22,7 @@ As a result, you can now easily and swiftly create task table. ## Inline edit in work package table With OpenProject 6.0 it is possible to use inline editing to swiftly update work packages (such as tasks, features, milestones) directly from -the work package table ([#18404](https://community.openproject.com/wp/18404)). +the work package table ([#18404](https://community.openproject.org/wp/18404)). It is no longer necessary to open a separate split screen view. Note, that all links (except for ID) have been removed from the work package @@ -102,5 +102,5 @@ permalinks for all your pages will be generated automatically. OpenProject 6.0 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following -list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22type%22,%22status%22,%22subject%22,%22assigned_to%22%5D,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22fixed_version_id%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22666%22%7D,%7B%22n%22:%22type_id%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%221%22%7D,%7B%22n%22:%22subproject_id%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22%7D%5D,%22pa%22:1,%22pp%22:20%7D). +list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22type%22,%22status%22,%22subject%22,%22assigned_to%22%5D,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22fixed_version_id%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22666%22%7D,%7B%22n%22:%22type_id%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%221%22%7D,%7B%22n%22:%22subproject_id%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22%7D%5D,%22pa%22:1,%22pp%22:20%7D). diff --git a/docs/release-notes/6/6-0-1/README.md b/docs/release-notes/6/6-0-1/README.md index b13d7a355ee3..22f93f535a26 100644 --- a/docs/release-notes/6/6-0-1/README.md +++ b/docs/release-notes/6/6-0-1/README.md @@ -21,13 +21,13 @@ Starting with [OpenProject 6.0.0](https://www.openproject.org/blog/openproject-6-0-released/), titles were allowed to contain arbitrary characters and were linked to using escaped links. -([#20151](https://community.openproject.com/wp/20151)). +([#20151](https://community.openproject.org/wp/20151)). That change caused those links with spaces to wiki pages to break after the migration to OpenProject 6.0.0, since they now linked to a new page (with actual spaces in its title, since that was allowed now). This bug was fixed in -[#23674](https://community.openproject.com/wp/23674) alongside +[#23674](https://community.openproject.org/wp/23674) alongside a more permanent change to how wiki titles are produced. Titles may still contain arbitrary characters now, but are processed into a permalink (URL slug) upon saving. @@ -42,47 +42,47 @@ automatically. - Activity on work package was not instantly updated when making changes to a work package - ([#23675](https://community.openproject.com/wp/23675)). + ([#23675](https://community.openproject.org/wp/23675)). - Copy function was missing from fullscreen work package page - ([#23685](https://community.openproject.com/wp/23685)). + ([#23685](https://community.openproject.org/wp/23685)). - Type and status could not be selected when copying a work package - ([#23690](https://community.openproject.com/wp/23690)). + ([#23690](https://community.openproject.org/wp/23690)). - Custom field of type “List” could not be changed (always switched back to previous value) - ([#23696](https://community.openproject.com/wp/23696)). + ([#23696](https://community.openproject.org/wp/23696)). - Grouped versions from other projects (inherited) in work package table were not displayed correctly - ([#23697](https://community.openproject.com/wp/23697)). + ([#23697](https://community.openproject.org/wp/23697)). - Work package export (XLS, PDF, CSV) ignored filters, sorting and grouping - ([#23713](https://community.openproject.com/wp/23713)). + ([#23713](https://community.openproject.org/wp/23713)). - Collapsing groups in work package page did not collapse related rows - ([#23718](https://community.openproject.com/wp/23718)). + ([#23718](https://community.openproject.org/wp/23718)). - Inherited versions were lost when making changes in the work package table - ([#23719](https://community.openproject.com/wp/23719)). + ([#23719](https://community.openproject.org/wp/23719)). - Custom fields were not displayed in queries - ([#23725](https://community.openproject.com/wp/23725)). + ([#23725](https://community.openproject.org/wp/23725)). - Timeline graph was not displayed when timeline was embedded (e.g. on overview page) - ([#23689](https://community.openproject.com/wp/23689)). + ([#23689](https://community.openproject.org/wp/23689)). - Sorting of cost type was not working - ([#23213](https://community.openproject.com/wp/23213)). + ([#23213](https://community.openproject.org/wp/23213)). - Various design errors - ([#23645](https://community.openproject.com/wp/23645), \#[23650](https://community.openproject.com/wp/23650), - [#23653](https://community.openproject.com/wp/23653), - [#23660](https://community.openproject.com/wp/23660), - [#23664](https://community.openproject.com/wp/23664), - [#23710](https://community.openproject.com/wp/23710)) + ([#23645](https://community.openproject.org/wp/23645), \#[23650](https://community.openproject.org/wp/23650), + [#23653](https://community.openproject.org/wp/23653), + [#23660](https://community.openproject.org/wp/23660), + [#23664](https://community.openproject.org/wp/23664), + [#23710](https://community.openproject.org/wp/23710)) - Several accessibility improvements. Thanks a lot to Guillaume Ferry and Willy Gardiol for [reporting bugs](../../../development/report-a-bug/). For further information on the release, please refer to the -[Changelog v.6.0.1](https://community.openproject.com/versions/807) +[Changelog v.6.0.1](https://community.openproject.org/versions/807) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.0.1). diff --git a/docs/release-notes/6/6-0-2/README.md b/docs/release-notes/6/6-0-2/README.md index b580b13fd353..888abae7873f 100644 --- a/docs/release-notes/6/6-0-2/README.md +++ b/docs/release-notes/6/6-0-2/README.md @@ -12,28 +12,28 @@ - An error message was displayed when all work package filters were removed - ([#23739](https://community.openproject.com/wp/23739)). + ([#23739](https://community.openproject.org/wp/23739)). - Multiple empty options were displayed in work package select fields - ([#23775](https://community.openproject.com/wp/23775)). + ([#23775](https://community.openproject.org/wp/23775)). - Adding images to the work package description sometimes didn’t work - ([#23750](https://community.openproject.com/wp/23750)). + ([#23750](https://community.openproject.org/wp/23750)). - The text formatting toolbar was missing when editing news - ([#23740](https://community.openproject.com/wp/23740)). + ([#23740](https://community.openproject.org/wp/23740)). - Some groups were collapsed when grouping an already grouped list by another attribute - ([#23720](https://community.openproject.com/wp/23720)). + ([#23720](https://community.openproject.org/wp/23720)). - No warning message was shown when leaving a work package type with entered description - ([#23746](https://community.openproject.com/wp/23746)). + ([#23746](https://community.openproject.org/wp/23746)). - Checking / unchecking checkboxes of one row / column in the workflow edit screen not working - ([#23694](https://community.openproject.com/wp/23694)). + ([#23694](https://community.openproject.org/wp/23694)). - Several design errors have been fixed - ([#23594](https://community.openproject.com/wp/23594), - [#23742](https://community.openproject.com/wp/23742), - [#23743](https://community.openproject.com/wp/23743), - [#23768](https://community.openproject.com/wp/23768), - [#23651](https://community.openproject.com/wp/23651)). + ([#23594](https://community.openproject.org/wp/23594), + [#23742](https://community.openproject.org/wp/23742), + [#23743](https://community.openproject.org/wp/23743), + [#23768](https://community.openproject.org/wp/23768), + [#23651](https://community.openproject.org/wp/23651)). Additionally, the performance of the work package table has been improved: Scrolling and hovering over large work package tables works faster than before. @@ -43,7 +43,7 @@ Thanks a lot to the community, in particular Marc Vollmer, for bugs](../../../development/report-a-bug/)! For further information on the release, please refer to the -[Changelog v.6.0.2](https://community.openproject.com/versions/814) +[Changelog v.6.0.2](https://community.openproject.org/versions/814) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.0.2). diff --git a/docs/release-notes/6/6-0-3/README.md b/docs/release-notes/6/6-0-3/README.md index cbce7e445aa2..a92ed032765e 100644 --- a/docs/release-notes/6/6-0-3/README.md +++ b/docs/release-notes/6/6-0-3/README.md @@ -18,19 +18,19 @@ CVEs: **The following bugs have been fixed in OpenProject 6.0.3:** - The help and profile dropdown changed rapidly when hovering over - them ([#23745](https://community.openproject.com/wp/23745)). + them ([#23745](https://community.openproject.org/wp/23745)). - Safari did not display the pagination buttons on the work package page - ([#23785](https://community.openproject.com/wp/23785)). + ([#23785](https://community.openproject.org/wp/23785)). - The projects-menu did not properly display all projects in some cases - ([#23774](https://community.openproject.com/wp/23774)). + ([#23774](https://community.openproject.org/wp/23774)). - Several design errors have been fixes - ([#23778](https://community.openproject.com/wp/23778), - [#23801](https://community.openproject.com/wp/23801)). + ([#23778](https://community.openproject.org/wp/23778), + [#23801](https://community.openproject.org/wp/23801)). - Additionally, the performance on the work package page has been slightly improved - ([#23781](https://community.openproject.com/wp/23781)). + ([#23781](https://community.openproject.org/wp/23781)). We strongly recommend the upgrade. @@ -39,7 +39,7 @@ Frank Schmid and Marc Vollmer, for [reporting multiple bugs](../../../development/report-a-bug/)! For further information on the release, please refer to the -[Changelog v.6.0.3](https://community.openproject.com/versions/815) +[Changelog v.6.0.3](https://community.openproject.org/versions/815) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.0.3). diff --git a/docs/release-notes/6/6-0-4/README.md b/docs/release-notes/6/6-0-4/README.md index f1b8ae6e660e..afdbd4cad55a 100644 --- a/docs/release-notes/6/6-0-4/README.md +++ b/docs/release-notes/6/6-0-4/README.md @@ -15,45 +15,45 @@ OpenProject 6.0.4 contains several bug and accessibility fixes. - The *+ New Project* button was displayed even to users who didn’t have the permission to create new work packages - ([#23881](https://community.openproject.com/wp/23881)). + ([#23881](https://community.openproject.org/wp/23881)). - Work package attribute were sometimes not saved properly when multiple attributes were changed in quick succession - ([#23589](https://community.openproject.com/wp/23859)). + ([#23589](https://community.openproject.org/wp/23859)). - In the work package split screen the subject was not updated when it was changed in the work package table - ([#23879](https://community.openproject.com/wp/23879)). + ([#23879](https://community.openproject.org/wp/23879)). - The project list on the work package screen appeared to be ordered randomly. It’s now sorted alphabetically - ([#23786](https://community.openproject.com/wp/23786)). + ([#23786](https://community.openproject.org/wp/23786)). - The global setting to display work packages from subprojects in main projects did not work - ([#23814](https://community.openproject.com/wp/23814)). + ([#23814](https://community.openproject.org/wp/23814)). - The *Cancel* button on wiki pages was missing - ([#23829](https://community.openproject.com/wp/23829)). + ([#23829](https://community.openproject.org/wp/23829)). - The link to add additional work package attachments on the wiki page redirected users to the landing page instead - ([#23820](https://community.openproject.com/wp/23820)). + ([#23820](https://community.openproject.org/wp/23820)). - Wiki menu items were showing the slug instead of the title - ([#23818](https://community.openproject.com/wp/23818)). + ([#23818](https://community.openproject.org/wp/23818)). - The *Send for review* button on the meeting page did not work when a timezone was set - ([#23758](https://community.openproject.com/wp/23758)). + ([#23758](https://community.openproject.org/wp/23758)). - Cost reports grouped by year and months were displayed in the wrong order - ([#23773](https://community.openproject.com/wp/23773)). + ([#23773](https://community.openproject.org/wp/23773)). - Several styling errors have been fixed - ([#23808](https://community.openproject.com/wp/23808), - [#23834](https://community.openproject.com/wp/23834)). + ([#23808](https://community.openproject.org/wp/23808), + [#23834](https://community.openproject.org/wp/23834)). - Several missing translations have been added (e.g. - [#23877](https://community.openproject.com/wp/23877)). + [#23877](https://community.openproject.org/wp/23877)). Thanks a lot to the community, in particular to Marc Vollmer, for [reporting bugs](../../../development/report-a-bug/)! For further information on the release, please refer to the -[Changelog v.6.0.4](https://community.openproject.com/versions/816) +[Changelog v.6.0.4](https://community.openproject.org/versions/816) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.0.4). diff --git a/docs/release-notes/6/6-0-5/README.md b/docs/release-notes/6/6-0-5/README.md index a7457dc8b0fd..5237bfe94d9f 100644 --- a/docs/release-notes/6/6-0-5/README.md +++ b/docs/release-notes/6/6-0-5/README.md @@ -15,80 +15,80 @@ OpenProject 6.0.5 contains several bug fixes and improvements. - Work packages - Links in the parent column in the work package table were not correctly displayed but showed an error - ([#23865](https://community.openproject.com/wp/23865)). + ([#23865](https://community.openproject.org/wp/23865)). - The grouping of work packages was lost on export. - In work package custom fields the zero was displayed as not set (“-“) - ([#23975](https://community.openproject.com/wp/23975)). + ([#23975](https://community.openproject.org/wp/23975)). - The right-click context menu on the work package table did not disappear when clicking an a work package ID or on attribute fields - ([#24005](https://community.openproject.com/wp/24005)). + ([#24005](https://community.openproject.org/wp/24005)). - For users who were not allowed to make changes to work packages the attachment delete icon and the work package edit button was shown - ([#24032](https://community.openproject.com/wp/24032)). + ([#24032](https://community.openproject.org/wp/24032)). - Custom fields of type “Long text” could sometimes not be saved, showed distracting icons on hover and were not accessible - ([#24033](https://community.openproject.com/wp/24033)). + ([#24033](https://community.openproject.org/wp/24033)). - Curly braces in the work package description (e.g. to show code) were incorrectly displayed / escaped - ([#24050](https://community.openproject.com/wp/24050)). + ([#24050](https://community.openproject.org/wp/24050)). - It was not possible to set the default “Objects per page” for the work package table - ([#23846](https://community.openproject.com/wp/23846)). + ([#23846](https://community.openproject.org/wp/23846)). - There was a translation missing when displaying changes in the work package description - ([#23917](https://community.openproject.com/wp/23917)). + ([#23917](https://community.openproject.org/wp/23917)). - Wiki - An internal error occurred when renaming wiki pages to certain reserved names - ([#23961](https://community.openproject.com/wp/23961)). + ([#23961](https://community.openproject.org/wp/23961)). - The macro list on the wiki page showed wrong entries / was not correctly escaped - ([#23835](https://community.openproject.com/wp/23835)). + ([#23835](https://community.openproject.org/wp/23835)). - Users - New users who created a hosted OpenProject instance had wrong email settings - ([#23856](https://community.openproject.com/wp/23856)). + ([#23856](https://community.openproject.org/wp/23856)). - Repository - There was an instance when the Git repository was producing an error 500 - ([#23953](https://community.openproject.com/wp/23953)). + ([#23953](https://community.openproject.org/wp/23953)). - Repository commit which referenced work packages were not shown on the work package - ([#24026](https://community.openproject.com/wp/24026)). + ([#24026](https://community.openproject.org/wp/24026)). - Costs / Budgets - The actual costs for the different entries were not shown in a budget - ([#24017](https://community.openproject.com/wp/24017)). + ([#24017](https://community.openproject.org/wp/24017)). - Cost report - The scrollbar for the cost report table was missing which made it impossible to see large reports - ([#23991](https://community.openproject.com/wp/23991)). + ([#23991](https://community.openproject.org/wp/23991)). - An error occurred when using the cost report with Chinese language settings due to a missing translation - ([#23998](https://community.openproject.com/wp/23998)). + ([#23998](https://community.openproject.org/wp/23998)). - Backlogs - Clicking on an empty story point field in the backlogs to assign story points to a work package was not possible - ([#23994](https://community.openproject.com/wp/23994)). + ([#23994](https://community.openproject.org/wp/23994)). - Other - There were several design issues and improvements - ([#23868](https://community.openproject.com/wp/23868), - [#23916](https://community.openproject.com/wp/23916), - [#23925](https://community.openproject.com/wp/23925), - [#23948](https://community.openproject.com/wp/23948), - [#23977](https://community.openproject.com/wp/23977), - [#23978](https://community.openproject.com/wp/23978), - [#23980](https://community.openproject.com/wp/23980), - [#23989](https://community.openproject.com/wp/23989), - [#23992](https://community.openproject.com/wp/23992)). + ([#23868](https://community.openproject.org/wp/23868), + [#23916](https://community.openproject.org/wp/23916), + [#23925](https://community.openproject.org/wp/23925), + [#23948](https://community.openproject.org/wp/23948), + [#23977](https://community.openproject.org/wp/23977), + [#23978](https://community.openproject.org/wp/23978), + [#23980](https://community.openproject.org/wp/23980), + [#23989](https://community.openproject.org/wp/23989), + [#23992](https://community.openproject.org/wp/23992)). In addition the link to see and edit the logged time has been added to the work package table and work package page -([#24023](https://community.openproject.com/wp/24023)). +([#24023](https://community.openproject.org/wp/24023)). Thanks a lot to the community, in particular to Marc Vollmer, Frank Schmid, Melroy van den Berg, Richard Su, Mikhail Podshivalin, Tilo @@ -97,7 +97,7 @@ Berthold for [reporting bugs](../../../development/report-a-bug/)! For further information on the release, please refer to the -[Changelog v.6.0.5](https://community.openproject.com/versions/817) +[Changelog v.6.0.5](https://community.openproject.org/versions/817) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.0.5). diff --git a/docs/release-notes/6/6-1-0/README.md b/docs/release-notes/6/6-1-0/README.md index e7f4295de8cb..b2f34d1c62a0 100644 --- a/docs/release-notes/6/6-1-0/README.md +++ b/docs/release-notes/6/6-1-0/README.md @@ -15,7 +15,7 @@ project member table and improved work package relations. OpenProject 6.1 improves the project member table and adds filters to the project member -list ([#22859](https://community.openproject.com/wp/22859)). +list ([#22859](https://community.openproject.org/wp/22859)). This provides an easy way to quickly find, remove or edit the permissions of project members in large projects. @@ -27,7 +27,7 @@ permissions of project members in large projects. The work package relations tab has been improved: It has a clearer structure, allows to add existing children to a work package and adds new relation types -([#23709](https://community.openproject.com/wp/23709)). +([#23709](https://community.openproject.org/wp/23709)). Hierarchical relationships are immediately clear through a tree-structure. @@ -38,7 +38,7 @@ tree-structure. The work package table is now loaded more quickly and changes can be made faster -([#23780](https://community.openproject.com/wp/23780)). +([#23780](https://community.openproject.org/wp/23780)). ## Add meetings to calendar @@ -70,4 +70,4 @@ there is enough space. OpenProject 6.1 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the -[following list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22p%22:%22openproject%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22667%22%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22%7D%5D,%22pa%22:1,%22pp%22:20%7D). +[following list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22p%22:%22openproject%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22667%22%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22%7D%5D,%22pa%22:1,%22pp%22:20%7D). diff --git a/docs/release-notes/6/6-1-1/README.md b/docs/release-notes/6/6-1-1/README.md index 9ff523114464..c1cc0555b095 100644 --- a/docs/release-notes/6/6-1-1/README.md +++ b/docs/release-notes/6/6-1-1/README.md @@ -16,53 +16,53 @@ OpenProject 6.1.1 contains several bug fixes and improvements. - Work packages - Watchers could not be selected in projects with too many possible watchers - ([#24263](https://community.openproject.com/wp/24263)). + ([#24263](https://community.openproject.org/wp/24263)). - The wrong sum was shown for “Spent time” for work packages - ([#24349](https://community.openproject.com/wp/24349)). + ([#24349](https://community.openproject.org/wp/24349)). - The links in the relation tab caused a hard reload instead of simply showing the related work package - ([#24265](https://community.openproject.com/wp/24265)). + ([#24265](https://community.openproject.org/wp/24265)). - Textile \ and @ did not prevent code execution in the work package description. - The “Spent time” link on the work package table caused an error 404 in subfolder installations - ([#24427](https://community.openproject.com/wp/24427)). + ([#24427](https://community.openproject.org/wp/24427)). - Line breaks were not displayed in the work package description - ([#24428](https://community.openproject.com/wp/24428)). + ([#24428](https://community.openproject.org/wp/24428)). - Timeline - Timelines which were displayed in aggregation were not shown when loaded initially. - Projects - Projects could not be copied - ([#24323](https://community.openproject.com/wp/24323)). + ([#24323](https://community.openproject.org/wp/24323)). - Search - The search displayed only case-sensitive results - ([#24282](https://community.openproject.com/wp/24282)). + ([#24282](https://community.openproject.org/wp/24282)). - The pagination in the search results was broken - ([#24345](https://community.openproject.com/wp/24345)). + ([#24345](https://community.openproject.org/wp/24345)). - Other - A deprecation warning was displayed whenever a cronjob for incoming emails was invoked - ([#24306](https://community.openproject.com/wp/24306)). + ([#24306](https://community.openproject.org/wp/24306)). - Several design bugs have been fixed - ([#24263](https://community.openproject.com/wp/24263), - [#24274](https://community.openproject.com/wp/24274), - [#24286](https://community.openproject.com/wp/24286), - [#24289](https://community.openproject.com/wp/24289), - [#24297](https://community.openproject.com/wp/24297), - [#24301](https://community.openproject.com/wp/24301), - [#24334](https://community.openproject.com/wp/24334), - [#24335](https://community.openproject.com/wp/24335), - [#24339](https://community.openproject.com/wp/24339), - [#24372](https://community.openproject.com/wp/24372), - [#24373](https://community.openproject.com/wp/24373)). + ([#24263](https://community.openproject.org/wp/24263), + [#24274](https://community.openproject.org/wp/24274), + [#24286](https://community.openproject.org/wp/24286), + [#24289](https://community.openproject.org/wp/24289), + [#24297](https://community.openproject.org/wp/24297), + [#24301](https://community.openproject.org/wp/24301), + [#24334](https://community.openproject.org/wp/24334), + [#24335](https://community.openproject.org/wp/24335), + [#24339](https://community.openproject.org/wp/24339), + [#24372](https://community.openproject.org/wp/24372), + [#24373](https://community.openproject.org/wp/24373)). Thanks a lot to the community, in particular to Marc Vollmer, Markus Hillenbrand, Nicolai Daniel and Christophe Mornet for [reporting bugs](../../../development/report-a-bug/)! For further information on the release, please refer to the -[Changelog v.6.1.1](https://community.openproject.com/versions/821) +[Changelog v.6.1.1](https://community.openproject.org/versions/821) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.1.1). diff --git a/docs/release-notes/6/6-1-2/README.md b/docs/release-notes/6/6-1-2/README.md index 4ab8449939ec..bc6a41a8a751 100644 --- a/docs/release-notes/6/6-1-2/README.md +++ b/docs/release-notes/6/6-1-2/README.md @@ -14,20 +14,20 @@ recommend to update your OpenProject installation to this version. ## Features (5) - Added missing auth fields to user - endpoint [24503](https://community.openproject.com/wp/24503). + endpoint [24503](https://community.openproject.org/wp/24503). - Allow users to be uniquely identified by - login [24504](https://community.openproject.com/wp/24504). + login [24504](https://community.openproject.org/wp/24504). - Configuration option to hide login field during signup (email - only) [24505](https://community.openproject.com/wp/24505/relations). + only) [24505](https://community.openproject.org/wp/24505/relations). - Configuration option for registration footer - [24404](https://community.openproject.com/wp/24404). + [24404](https://community.openproject.org/wp/24404). - Remove length constraints of category - name [24446](https://community.openproject.com/wp/24446). + name [24446](https://community.openproject.org/wp/24446). ## Bug fixes (16) You can find a detailed list of the bug -fixes [here.](https://community.openproject.com/versions/822) +fixes [here.](https://community.openproject.org/versions/822) ## Credits diff --git a/docs/release-notes/6/6-1-3/README.md b/docs/release-notes/6/6-1-3/README.md index 11893294f4f5..bb044b8e5046 100644 --- a/docs/release-notes/6/6-1-3/README.md +++ b/docs/release-notes/6/6-1-3/README.md @@ -15,11 +15,11 @@ your OpenProject installation to this version. - Users who have multiple roles which grant the “View work packages” permission could not view all work packages in a project - ([#24509](https://community.openproject.com/wp/24509)). + ([#24509](https://community.openproject.org/wp/24509)). This error has been fixed. For further information on the release, please refer to the -[Changelog v.6.1.3](https://community.openproject.com/versions/826) +[Changelog v.6.1.3](https://community.openproject.org/versions/826) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.1.3). diff --git a/docs/release-notes/6/6-1-4/README.md b/docs/release-notes/6/6-1-4/README.md index f6fcdf326141..20c79203166d 100644 --- a/docs/release-notes/6/6-1-4/README.md +++ b/docs/release-notes/6/6-1-4/README.md @@ -16,22 +16,22 @@ your OpenProject installation to this ## Bug fixes (7) - Work package filter for subprojects not working - ([#24550](https://community.openproject.com/wp/24550)). + ([#24550](https://community.openproject.org/wp/24550)). - Last updated work package information is always shown in UTC - ([#24498](https://community.openproject.com/wp/24498)). + ([#24498](https://community.openproject.org/wp/24498)). - Design error on system settings page - ([#24497](https://community.openproject.com/wp/24497)). + ([#24497](https://community.openproject.org/wp/24497)). - Missing translation on workflow administration page - ([#24495](https://community.openproject.com/wp/24495)). + ([#24495](https://community.openproject.org/wp/24495)). - Very long custom field names break design on custom field settings page - ([#24407](https://community.openproject.com/wp/24407)). + ([#24407](https://community.openproject.org/wp/24407)). - Filter “Show all work packages” on MyPage did not work correctly. - Project filter was lost on the second page of the search results page. For further information on the release, please refer to the -[Changelog v.6.1.4](https://community.openproject.com/versions/827) +[Changelog v.6.1.4](https://community.openproject.org/versions/827) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.1.4). diff --git a/docs/release-notes/6/6-1-5/README.md b/docs/release-notes/6/6-1-5/README.md index eef5f1ca5eb9..1f6ca0355baa 100644 --- a/docs/release-notes/6/6-1-5/README.md +++ b/docs/release-notes/6/6-1-5/README.md @@ -14,7 +14,7 @@ your OpenProject installation to this version. ## Features (1) - The OpenProject Favicon was updated to a new color - ([#24459](https://community.openproject.com/wp/24459)). + ([#24459](https://community.openproject.org/wp/24459)). ## Bug fixes (11) @@ -22,32 +22,32 @@ your OpenProject installation to this version. caused an error. - The breadcrumb was partially hidden when following the link to activities - ([#24477](https://community.openproject.com/wp/24477)). + ([#24477](https://community.openproject.org/wp/24477)). - The work package toolbar menu was not visible on small screens - ([#24679](https://community.openproject.com/wp/24679)). + ([#24679](https://community.openproject.org/wp/24679)). - Work package split screen on mobile was not displayed correctly - ([#24699](https://community.openproject.com/wp/24699)). + ([#24699](https://community.openproject.org/wp/24699)). - An error message related to remaining hours was shown when editing child work packages - ([#24553](https://community.openproject.com/wp/24553)). + ([#24553](https://community.openproject.org/wp/24553)). - Sorting by date in time reports and cost reports did not work correctly - ([#24567](https://community.openproject.com/wp/24567)). + ([#24567](https://community.openproject.org/wp/24567)). - Duplicated wiki pages could not be removed - ([#24582](https://community.openproject.com/wp/24582)). + ([#24582](https://community.openproject.org/wp/24582)). - Error shown when editing a user and using a reverse proxy server - ([#24622](https://community.openproject.com/wp/24622)). + ([#24622](https://community.openproject.org/wp/24622)). - Inactive users were shown on the homescreen of the OpenProject instance - ([#24657](https://community.openproject.com/wp/24657)). + ([#24657](https://community.openproject.org/wp/24657)). - Links in the breadcrumb were missing - ([#24706](https://community.openproject.com/wp/24706), - [#24676](https://community.openproject.com/wp/24676)). + ([#24706](https://community.openproject.org/wp/24706), + [#24676](https://community.openproject.org/wp/24676)). - The PDF export showed an internal error when using certain font types. For further information on the release, please refer to the -[Changelog v.6.1.5](https://community.openproject.com/versions/828) +[Changelog v.6.1.5](https://community.openproject.org/versions/828) or take a look at [GitHub](https://github.com/opf/openproject/tree/v6.1.5). diff --git a/docs/release-notes/7/7-0-0/README.md b/docs/release-notes/7/7-0-0/README.md index fff1968c84ad..9e910673a942 100644 --- a/docs/release-notes/7/7-0-0/README.md +++ b/docs/release-notes/7/7-0-0/README.md @@ -16,7 +16,7 @@ table, multi-select custom fields and much more. ## New integrated Gantt chart / timeline OpenProject 7.0 introduces a new Gantt chart which is integrated in the -work package table ([#13785](https://community.openproject.com/wp/13785)). +work package table ([#13785](https://community.openproject.org/wp/13785)). The new timeline is much more interactive and user-friendly than the old timeline. @@ -27,7 +27,7 @@ timeline. You can display hierarchies on the work package table and collapse and expand them -([#24647](https://community.openproject.com/wp/24647)). +([#24647](https://community.openproject.org/wp/24647)). @@ -35,7 +35,7 @@ expand them With OpenProject 7.0 you can configure which attributes are displayed for a work package type -([#24123](https://community.openproject.com/wp/24123)). +([#24123](https://community.openproject.org/wp/24123)). You can therefore control which attributes are shown and which are hidden by default. @@ -47,7 +47,7 @@ hidden by default. The work package table now supports filtering based on fixed dates. This affects all date attributes (e.g. start / due date, created on / updated on) -([#22585](https://community.openproject.com/projects/telekom/work_packages/22585)). +([#22585](https://community.openproject.org/projects/telekom/work_packages/22585)). @@ -56,7 +56,7 @@ on) The header navigation in OpenProject is updated and displays the current project. Additionally, the logo has been centered and existing menus have been reordered -([#24465](https://community.openproject.com/projects/design/work_packages/24465)). +([#24465](https://community.openproject.org/projects/design/work_packages/24465)). @@ -64,7 +64,7 @@ have been reordered As an administrator you can archive and delete projects right from the project settings -([#24913](https://community.openproject.com/wp/24913)). +([#24913](https://community.openproject.org/wp/24913)). @@ -72,7 +72,7 @@ project settings With the zen mode on the work package table, you can maximize the available screen real estate by hiding the side and top navigation -([#18216](https://community.openproject.com/wp/18216)). +([#18216](https://community.openproject.org/wp/18216)). This provides a cleaner and larger user interface to work with. @@ -83,7 +83,7 @@ This provides a cleaner and larger user interface to work with. Users of the OpenProject [Enterprise on-premises](https://www.openproject.org/enterprise-edition/) and [Enterprise cloud](https://www.openproject.org/hosting/) can create multi-select custom fields -([#24793](https://community.openproject.com/wp/24793)). +([#24793](https://community.openproject.org/wp/24793)). With these custom fields you can select multiple values for work package custom fields at once and also filter based on them. @@ -96,8 +96,8 @@ Users of the OpenProject Enterprise cloud and Enterprise on-premises edition can their own company’s logo instead of the OpenProject logo. Additionally, you can change the colors by using a custom color scheme -([#18099](https://community.openproject.com/projects/gmbh/work_packages/18099), -[#24460](https://community.openproject.com/projects/gmbh/work_packages/24460)). +([#18099](https://community.openproject.org/projects/gmbh/work_packages/18099), +[#24460](https://community.openproject.org/projects/gmbh/work_packages/24460)). @@ -115,5 +115,5 @@ user experience for users accessing OpenProject on a mobile device. OpenProject 7.0 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following -list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22p%22:%22openproject%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22750%22%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%221%22%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). +list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22p%22:%22openproject%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22t%22:%22list_optional%22,%22v%22:%22750%22%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22t%22:%22list_model%22,%22v%22:%221%22%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22t%22:%22list_subprojects%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). diff --git a/docs/release-notes/7/7-0-1/README.md b/docs/release-notes/7/7-0-1/README.md index f361ae235985..03a070fc5a57 100644 --- a/docs/release-notes/7/7-0-1/README.md +++ b/docs/release-notes/7/7-0-1/README.md @@ -15,47 +15,47 @@ your OpenProject installation to this version. ## Bug fixes (15) - The page navigation in the forums was not displayed - ([#25463](https://community.openproject.com/wp/25463)) + ([#25463](https://community.openproject.org/wp/25463)) - The Zen mode raised a JS error on iOS - ([#25461](https://community.openproject.com/wp/25461)) + ([#25461](https://community.openproject.org/wp/25461)) - The mobile dropdown menus closed on click on a child menu item - ([#25460](https://community.openproject.com/wp/25460)) + ([#25460](https://community.openproject.org/wp/25460)) - Error on position attribute (cannot write read-only attributes) when copying work package - ([#25458](https://community.openproject.com/wp/25458)) + ([#25458](https://community.openproject.org/wp/25458)) - Work package inline-create fails when subproject filter is active - ([#25455](https://community.openproject.com/wp/25455)) + ([#25455](https://community.openproject.org/wp/25455)) - Show loading indicator earlier when switching queries through dropdown - ([#25454](https://community.openproject.com/wp/25454)) + ([#25454](https://community.openproject.org/wp/25454)) - Button text alignment for meeting and budget create button wrong - ([#25447](https://community.openproject.com/wp/25447)) + ([#25447](https://community.openproject.org/wp/25447)) - Costs (Budget) filter not applied on saved query - ([#25446](https://community.openproject.com/wp/25446)) + ([#25446](https://community.openproject.org/wp/25446)) - Project settings not accessible with a project user custom field - ([#25442](https://community.openproject.com/wp/25442)) + ([#25442](https://community.openproject.org/wp/25442)) - Version custom field of type “List” could not be assigned - ([#25439](https://community.openproject.com/wp/25439)) + ([#25439](https://community.openproject.org/wp/25439)) - Moving columns left/right while retaining default column set did not save - ([#25438](https://community.openproject.com/wp/25438)) + ([#25438](https://community.openproject.org/wp/25438)) - The drop down menu of the mobile create button opened in the wrong direction - ([#25433](https://community.openproject.com/wp/25433)) + ([#25433](https://community.openproject.org/wp/25433)) - Inline edit text inputs did not take up the entire possible width - ([#25430](https://community.openproject.com/wp/25430)) + ([#25430](https://community.openproject.org/wp/25430)) - Sums cannot be displayed on second query unless deactivated first - ([#25420](https://community.openproject.com/wp/25420)) + ([#25420](https://community.openproject.org/wp/25420)) - Subject and back button in fullscreen view were not aligned correctly - ([#25378](https://community.openproject.com/wp/25378)) + ([#25378](https://community.openproject.org/wp/25378)) Thanks a lot to the community, in particular to Mike Lewis and Harsha BS for reporting and fixing bugs! For further information on the release, please refer to the [Changelog -v7.0.1](https://community.openproject.com/versions/924) +v7.0.1](https://community.openproject.org/versions/924) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.0.1). diff --git a/docs/release-notes/7/7-0-2/README.md b/docs/release-notes/7/7-0-2/README.md index cd8ed8afeec9..7cbb7e49c550 100644 --- a/docs/release-notes/7/7-0-2/README.md +++ b/docs/release-notes/7/7-0-2/README.md @@ -17,24 +17,24 @@ We recommend the update to the current version. ## Bug fixes (6) - \[Firefox only\] Work packages subject only show three dots - ([#25520](https://community.openproject.com/wp/25520)) + ([#25520](https://community.openproject.org/wp/25520)) - Work packages in list cannot be selected next to subject (in hierarchy mode) - ([#25493](https://community.openproject.com/wp/25493)) + ([#25493](https://community.openproject.org/wp/25493)) - “View” link on repository page links to landing page - ([#25487](https://community.openproject.com/wp/25487)) + ([#25487](https://community.openproject.org/wp/25487)) - Custom colors for work package loading animation - ([#25481](https://community.openproject.com/wp/25481)) + ([#25481](https://community.openproject.org/wp/25481)) - Invalid SQL statement produced by watchers filter - ([#25480](https://community.openproject.com/wp/25480)) + ([#25480](https://community.openproject.org/wp/25480)) - Selectable versions for version filter not sorted - ([#25465](https://community.openproject.com/wp/25465)) + ([#25465](https://community.openproject.org/wp/25465)) Thanks a lot to the community, in particular to Peter Spiess-Knafl for reporting bugs! For further information on the release, please refer to the [Changelog -v7.0.2](https://community.openproject.com/versions/837) +v7.0.2](https://community.openproject.org/versions/837) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.0.2). diff --git a/docs/release-notes/7/7-0-3/README.md b/docs/release-notes/7/7-0-3/README.md index 298611c62d52..a8ac4b4b253a 100644 --- a/docs/release-notes/7/7-0-3/README.md +++ b/docs/release-notes/7/7-0-3/README.md @@ -19,23 +19,23 @@ news](https://www.openproject.org/blog/openproject-7-0-3-released/). - Boolean custom fields were set to true when copying a work package with such a field activated. - ([#25494](https://community.openproject.com/wp/25494)) + ([#25494](https://community.openproject.org/wp/25494)) - Filtering for boolean custom fields did not function properly. - ([#25570](https://community.openproject.com/wp/25570)) + ([#25570](https://community.openproject.org/wp/25570)) - The names of work packages have been escaped needlessly in the relations autocompleter. - ([#25534](https://community.openproject.com/wp/25534)) + ([#25534](https://community.openproject.org/wp/25534)) - The height of the query dropdown no longer exceeds the total available space when lots of queries are saved. - ([#25572](https://community.openproject.com/wp/25572)) + ([#25572](https://community.openproject.org/wp/25572)) - Bulk deleting work packages across more than one project failed with an error. - ([#25569](https://community.openproject.com/wp/25569)) + ([#25569](https://community.openproject.org/wp/25569)) - Removed an unnecessary horizontal scrollbar in the query dropdown. - ([#25593](https://community.openproject.com/wp/25593)) + ([#25593](https://community.openproject.org/wp/25593)) - Path parameters of the repository view are now preserved when the user needed to pass through the login screen first. - ([#25586](https://community.openproject.com/wp/25586)) + ([#25586](https://community.openproject.org/wp/25586)) We recommend the update to the current version. @@ -44,7 +44,7 @@ Seekurity SAS de C.V, Peter F, Jochen Gehlbach and Ole Odendahl for reporting bugs! For further information on the release, please refer to the [Changelog -v7.0.3](https://community.openproject.com/versions/839) +v7.0.3](https://community.openproject.org/versions/839) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.0.3). diff --git a/docs/release-notes/7/7-1-0/README.md b/docs/release-notes/7/7-1-0/README.md index 3bec1866fcf5..f8195403daca 100644 --- a/docs/release-notes/7/7-1-0/README.md +++ b/docs/release-notes/7/7-1-0/README.md @@ -16,52 +16,52 @@ bug fixes included. ## Features (4) - The style of the sidebar has been updated - ([#25556](https://community.openproject.com/wp/25556)). + ([#25556](https://community.openproject.org/wp/25556)). - The timeline zoom factor is now saved in queries: When you open a saved timeline query the same zoom level as before is shown - ([#25318](https://community.openproject.com/wp/25318)). + ([#25318](https://community.openproject.org/wp/25318)). - As a user of the [Enterprise cloud edition](https://www.openproject.org/hosting/) or [Enterprise on-premises edition](https://www.openproject.org/enterprise-edition/), you can now upload a custom favicon which is shown in the browser. You can also set a touch icon which is shown on smartphones (e.g. when setting a - bookmark)([#25517](https://community.openproject.com/wp/25517)). + bookmark)([#25517](https://community.openproject.org/wp/25517)). - Users of the OpenProject Enterprise cloud and Enterprise on-premises edition can now also set white headers and there are two additional configuration options: Setting the hover background color and the hover font color - ([#25275](https://community.openproject.com/wp/25275)). + ([#25275](https://community.openproject.org/wp/25275)). ## Bug fixes (20) - Deactivated groupings on the work package page were not properly saved in queries. This has been fixed. - ([#25606](https://community.openproject.com/wp/25606)) + ([#25606](https://community.openproject.org/wp/25606)) - When grouping by assignee while the author is shown as a column, the same groups were shown multiple times. This has been resolved. - ([#25605](https://community.openproject.com/wp/25605)) + ([#25605](https://community.openproject.org/wp/25605)) - In some cases type-specific attributes were not shown for work packages. This has been fixed. - ([#25594](https://community.openproject.com/wp/25594)) + ([#25594](https://community.openproject.org/wp/25594)) - Deep links to a repository page redirected back to the root repository page. This has been resolved. - We fixed an error prevented users from scrolling the work package query menu. - ([#25572](https://community.openproject.com/projects/telekom/work_packages/25572)) + ([#25572](https://community.openproject.org/projects/telekom/work_packages/25572)) - When filtering for Boolean work package custom fields incorrect results were shown. This has been resolved. - Bulk deleting work packages which contain time entries caused an error. This has been fixed. - ([#25569](https://community.openproject.com/wp/25569)) + ([#25569](https://community.openproject.org/wp/25569)) - Long text work package custom fields were not shown in correct size in work package fullscreen mode. This has been resolved. - Categories with long names caused rows in the work package table to span multiple lines. This has been fixed. - Exported work package CSV files could not be opened properly if the ID was displayed as the first column. This has been resolved. - ([#25536](https://community.openproject.com/wp/25536)) + ([#25536](https://community.openproject.org/wp/25536)) - Search results for work package relations showed HTML attributes. This has been fixed. - ([#25534](https://community.openproject.com/wp/25534)) + ([#25534](https://community.openproject.org/wp/25534)) - We fixed an error that caused work package attributes to sometimes not be saved properly when editing in quick succession. - There was an error that caused Boolean custom fields to always be @@ -76,10 +76,10 @@ bug fixes included. - When saving an query that has been added to the side menu, the new query was not shown as part of the side menu. We fixed this issue. - Several design bugs have been fixed - ([#25595](https://community.openproject.com/wp/25595), - [#25371](https://community.openproject.com/wp/25371), - [#25356](https://community.openproject.com/wp/25356), - [#25298](https://community.openproject.com/wp/25298)). + ([#25595](https://community.openproject.org/wp/25595), + [#25371](https://community.openproject.org/wp/25371), + [#25356](https://community.openproject.org/wp/25356), + [#25298](https://community.openproject.org/wp/25298)). ## Deprecations @@ -91,7 +91,7 @@ Thanks a lot to the community, in particular to Peter F, Jochen Gehlbach and Ole Odendahl for reporting bugs! For further information on the release, please refer to the [Changelog -v7.1.0](https://community.openproject.com/versions/836) +v7.1.0](https://community.openproject.org/versions/836) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.1.0). diff --git a/docs/release-notes/7/7-2-0/README.md b/docs/release-notes/7/7-2-0/README.md index e751ae86ade5..ccf204fb1c27 100644 --- a/docs/release-notes/7/7-2-0/README.md +++ b/docs/release-notes/7/7-2-0/README.md @@ -76,5 +76,5 @@ at the label shown next to the *Relations* tab. OpenProject 7.2 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following -list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22824%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). +list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22824%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). diff --git a/docs/release-notes/7/7-2-1/README.md b/docs/release-notes/7/7-2-1/README.md index 08d76ff397c0..176d6b119a67 100644 --- a/docs/release-notes/7/7-2-1/README.md +++ b/docs/release-notes/7/7-2-1/README.md @@ -14,28 +14,28 @@ OpenProject 7.2.1 contains several bug fixes. - Wrong query results were shown when switching away from a timeline query - \[[#26086](https://community.openproject.com/wp/26086)\] + \[[#26086](https://community.openproject.org/wp/26086)\] - Cost reports with custom field of type list were rendered using their internal ID, not their option text - \[[#26050](https://community.openproject.com/wp/26050)\] + \[[#26050](https://community.openproject.org/wp/26050)\] - With newer versions of Ruby 2.4., an internal error *LocalJumpError: unexpected return* when accessing the work package page has been - resolved. \[[#26128](https://community.openproject.com/wp/26128)\] + resolved. \[[#26128](https://community.openproject.org/wp/26128)\] ## Visual changes - The subject in work package show view was misaligned - \[[#26073](https://community.openproject.com/wp/26073)\] + \[[#26073](https://community.openproject.org/wp/26073)\] - Additional parent elements in the work package table are rendered only with a different font color, no longer with a opaque background color - \[[#26052](https://community.openproject.com/wp/26052)\] + \[[#26052](https://community.openproject.org/wp/26052)\] Thanks a lot to the community, in particular to Mark Brown for reporting bugs! For further information on the release, please refer to the [Changelog -v7.2.1](https://community.openproject.com/versions/843) +v7.2.1](https://community.openproject.org/versions/843) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.2.1). diff --git a/docs/release-notes/7/7-2-2/README.md b/docs/release-notes/7/7-2-2/README.md index 3f353bdfcbc5..ac6138dffd4e 100644 --- a/docs/release-notes/7/7-2-2/README.md +++ b/docs/release-notes/7/7-2-2/README.md @@ -12,38 +12,38 @@ - Row highlighting in the work package table and timeline view ceases to work after using the timeline. - \[[#26168](https://community.openproject.com/wp/26168)\] + \[[#26168](https://community.openproject.org/wp/26168)\] - A textile parsing error causes the description field of a work package to no longer be rendered. - \[[#26159](https://community.openproject.com/wp/26159)\] + \[[#26159](https://community.openproject.org/wp/26159)\] - Pending attachments can not be removed from a new work package form. - \[[#26117](https://community.openproject.com/wp/26117)\] + \[[#26117](https://community.openproject.org/wp/26117)\] - Summary field width in the news entry form suggested an allowed value of more than 256 characters. - \[[#26113](https://community.openproject.com/wp/26113)\] + \[[#26113](https://community.openproject.org/wp/26113)\] - Clicking an external link in a work package’s description works, but also shows an error notification in Firefox. - \[[#26163](https://community.openproject.com/wp/26163)\] + \[[#26163](https://community.openproject.org/wp/26163)\] - Usage of a non-transpiled ES6 value causes older browsers to display nothing at all, instead of an “This browser is unsupported” notification. - \[[#26153](https://community.openproject.com/wp/26153)\] + \[[#26153](https://community.openproject.org/wp/26153)\] ## Visual changes - Editing attributes in the table should no longer cause large changes to the column’s width. - \[[#26100](https://community.openproject.com/wp/26100)\] + \[[#26100](https://community.openproject.org/wp/26100)\] - The icons of regular and custom field attributes in the form configuration tab were not identical. - \[[#26129](https://community.openproject.com/wp/26129)\] + \[[#26129](https://community.openproject.org/wp/26129)\] Thanks a lot to the community, in particular to Frank Schmid, Markus Hillenbrand, and Marc Vollmer for reporting bugs! For further information on the 7.2.2 release, please refer to the [Changelog -v7.2.2](https://community.openproject.com/versions/846) +v7.2.2](https://community.openproject.org/versions/846) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.2.2). @@ -54,8 +54,8 @@ versions, please also upgrade your package source according to the [Download and Installation](https://www.openproject.org/download-and-installation/) page. For more information, please also see ticket -\[[#26144](https://community.openproject.com/wp/26144)\] and [this -forum post](https://community.openproject.com/topics/8114). +\[[#26144](https://community.openproject.org/wp/26144)\] and [this +forum post](https://community.openproject.org/topics/8114). diff --git a/docs/release-notes/7/7-2-3/README.md b/docs/release-notes/7/7-2-3/README.md index 1556028ed43b..3e3df0dfd416 100644 --- a/docs/release-notes/7/7-2-3/README.md +++ b/docs/release-notes/7/7-2-3/README.md @@ -23,7 +23,7 @@ If you want to filter for this exact behavior, a new filter named - **when filtering for a group**: Work packages assigned to this group, and any users within -Bug reference: [#26207](https://community.openproject.com/wp/26207) +Bug reference: [#26207](https://community.openproject.org/wp/26207) diff --git a/docs/release-notes/7/7-3-0/README.md b/docs/release-notes/7/7-3-0/README.md index a1e91fd8bc21..ffbff1cffa87 100644 --- a/docs/release-notes/7/7-3-0/README.md +++ b/docs/release-notes/7/7-3-0/README.md @@ -99,4 +99,4 @@ package to another project. OpenProject 7.3 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the -[following list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22841%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). +[following list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22841%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). diff --git a/docs/release-notes/7/7-3-1/README.md b/docs/release-notes/7/7-3-1/README.md index 7bafa3523715..5636481bcd45 100644 --- a/docs/release-notes/7/7-3-1/README.md +++ b/docs/release-notes/7/7-3-1/README.md @@ -12,11 +12,11 @@ - The settings button did not work in the work package fullscreen create form. - \[[#26393](https://community.openproject.com/wp/26393)\] + \[[#26393](https://community.openproject.org/wp/26393)\] - The wrong meeting time was shown. - \[[#26480](https://community.openproject.com/wp/26480)\] + \[[#26480](https://community.openproject.org/wp/26480)\] - An internal error occurred when exporting a budget as CSV. - \[[#26518](https://community.openproject.com/wp/26518)\] + \[[#26518](https://community.openproject.org/wp/26518)\] - The selected work package was not focused when navigating from the work package table to the fullscreen view and back. - Drag and drop for work package custom field values of type “List” @@ -30,15 +30,15 @@ - There was an additional hashtag shown in the work package breadcrumb. - \[[#26439](https://community.openproject.com/wp/26439)\] + \[[#26439](https://community.openproject.org/wp/26439)\] - There was not enough space between the work package status and type. - \[[#26508](https://community.openproject.com/wp/26508)\] + \[[#26508](https://community.openproject.org/wp/26508)\] Thanks a lot to the community, in particular to Frank Michler, Ottavio Campana and Rob Guinness for reporting bugs! For further information on the 7.3.1 release, please refer to the -[Changelog v7.3.1](https://community.openproject.com/versions/851) +[Changelog v7.3.1](https://community.openproject.org/versions/851) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.3.1). diff --git a/docs/release-notes/7/7-3-2/README.md b/docs/release-notes/7/7-3-2/README.md index 8ce61fe2d38d..41d41be17d16 100644 --- a/docs/release-notes/7/7-3-2/README.md +++ b/docs/release-notes/7/7-3-2/README.md @@ -12,15 +12,15 @@ - Multi-select values could not properly be selected. This affected for instance work package filters and multi-select custom fields. - \[[#26611](https://community.openproject.com/wp/26611)\] + \[[#26611](https://community.openproject.org/wp/26611)\] - The breadcrumb in the roles and permissions in the administration was not shown properly. - \[[#26563](https://community.openproject.com/wp/26563)\] + \[[#26563](https://community.openproject.org/wp/26563)\] Thanks a lot to the community, in particular to Chris Jornlin and Steve Manning for reporting bugs! For further information on the 7.3.2 release, please refer to -the [Changelog v7.3.2](https://community.openproject.com/versions/852) +the [Changelog v7.3.2](https://community.openproject.org/versions/852) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.3.2). diff --git a/docs/release-notes/7/7-4-0/README.md b/docs/release-notes/7/7-4-0/README.md index 66b75fc8bdaf..c21d63b23ab0 100644 --- a/docs/release-notes/7/7-4-0/README.md +++ b/docs/release-notes/7/7-4-0/README.md @@ -120,5 +120,5 @@ We optimized the mobile view for the work package view. OpenProject 7.4 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the -[following list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22g%22:%22%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22845%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). +[following list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:true,%22g%22:%22%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22845%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). diff --git a/docs/release-notes/7/7-4-1/README.md b/docs/release-notes/7/7-4-1/README.md index 591e4dc0d2d5..e72090bba8e5 100644 --- a/docs/release-notes/7/7-4-1/README.md +++ b/docs/release-notes/7/7-4-1/README.md @@ -12,12 +12,12 @@ - Synchronized LDAP groups were not properly removed when their associated OpenProject group is removed - \[[#27103](https://community.openproject.com/wp/27103)\] + \[[#27103](https://community.openproject.org/wp/27103)\] - Updates the nokogiri XML parser gem which addresses a Denial-of-Service attack (CVE-2017-15412) For further information on the 7.4.1 release, please refer to -the [Changelog v7.4.1](https://community.openproject.com/versions/855) +the [Changelog v7.4.1](https://community.openproject.org/versions/855) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.4.1). diff --git a/docs/release-notes/7/7-4-2/README.md b/docs/release-notes/7/7-4-2/README.md index 4b962b8b7315..f8100c1bf641 100644 --- a/docs/release-notes/7/7-4-2/README.md +++ b/docs/release-notes/7/7-4-2/README.md @@ -12,24 +12,24 @@ - Enterprise LDAP group synchronization changed to allow *memberOf* to yield members of an ldap group - [#](https://community.openproject.com/wp/24960 "In repository module (SVN) when clicking on a .js file representation is incorrect")[27271](https://community.openproject.com/wp/27271 "LDAP group synchronization with memberOf filter") + [#](https://community.openproject.org/wp/24960 "In repository module (SVN) when clicking on a .js file representation is incorrect")[27271](https://community.openproject.org/wp/27271 "LDAP group synchronization with memberOf filter") ## Bug fixes (5) - Invalid format render response when accessing a JavaScript file in the repository browser - [#24960](https://community.openproject.com/wp/24960 "In repository module (SVN) when clicking on a .js file representation is incorrect") + [#24960](https://community.openproject.org/wp/24960 "In repository module (SVN) when clicking on a .js file representation is incorrect") - Progress aggregation ignores multiple identical values in subtasks - [#27262](https://community.openproject.com/wp/27262) + [#27262](https://community.openproject.org/wp/27262) - Paragraphs in work package description are collapsed - [#27158](https://community.openproject.com/wp/27158) + [#27158](https://community.openproject.org/wp/27158) - Locked users shown as matches when adding watchers - [#27127](https://community.openproject.com/wp/27127) + [#27127](https://community.openproject.org/wp/27127) - Version sorting by name also sorts by their effective date For further information on the 7.4.2 release, please refer to -the [Changelog v7.4.2](https://community.openproject.com/versions/857) +the [Changelog v7.4.2](https://community.openproject.org/versions/857) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.4.2). diff --git a/docs/release-notes/7/7-4-3/README.md b/docs/release-notes/7/7-4-3/README.md index 8bc9e8c45da5..1631b2dc8d69 100644 --- a/docs/release-notes/7/7-4-3/README.md +++ b/docs/release-notes/7/7-4-3/README.md @@ -42,9 +42,9 @@ announcement](https://www.ruby-lang.org/en/news/2018/03/28/ruby-2-4-4-released/) ## Changes - A separate icon has been included for the Two-factor authentication - plugin ([#27150](https://community.openproject.com/wp/27150)) + plugin ([#27150](https://community.openproject.org/wp/27150)) - SMTP authentication *none* can now be configured through the system - settings. ([#27284](https://community.openproject.com/wp/27284)) + settings. ([#27284](https://community.openproject.org/wp/27284)) - For further information on the 7.4.3 release, please refer to - the [Changelog v7.4.3](https://community.openproject.com/versions/890) + the [Changelog v7.4.3](https://community.openproject.org/versions/890) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.4.3). diff --git a/docs/release-notes/7/7-4-4/README.md b/docs/release-notes/7/7-4-4/README.md index e43a50c45246..97b8f57cc9a3 100644 --- a/docs/release-notes/7/7-4-4/README.md +++ b/docs/release-notes/7/7-4-4/README.md @@ -13,29 +13,29 @@ following bug fixes: - Work package modification for regular users on MySQL-based - instances ([#27237](https://community.openproject.com/wp/27237)) + instances ([#27237](https://community.openproject.org/wp/27237)) - Child work packages were not deleted when the parent element is - deleted ([#27280](https://community.openproject.com/wp/27280)) + deleted ([#27280](https://community.openproject.org/wp/27280)) - The fuzzy project autocompletion has been corrected to provide better matching when a substring is matched - ([#27447](https://community.openproject.com/wp/27447)) + ([#27447](https://community.openproject.org/wp/27447)) - The GitHub integration plugin did not properly receive events due to a naming clash - ([#27448](https://community.openproject.com/wp/27448)) + ([#27448](https://community.openproject.org/wp/27448)) - Creating new wiki pages from a wiki link (e.g, *\[\[ Wiki page \]\] *) now retains the correct title instead of the generated - URL slug ([#27462](https://community.openproject.com/wp/27462)) + URL slug ([#27462](https://community.openproject.org/wp/27462)) - A subsequent search for documents in the global search disabled the documents search checkbox - ([#27479](https://community.openproject.com/wp/27479)) + ([#27479](https://community.openproject.org/wp/27479)) - The reset button for RSS tokens generated a new API token instead - ([#27498](https://community.openproject.com/wp/27498)) + ([#27498](https://community.openproject.org/wp/27498)) - Wiki start pages (titled *Wiki*) could not be renamed back if the name was changed at one point - ([#27576](https://community.openproject.com/wp/27576)) + ([#27576](https://community.openproject.org/wp/27576)) @@ -44,15 +44,15 @@ following bug - Meetings plugin: The *close* button of the show page now requires a confirmation before closing - ([#27336](https://community.openproject.com/wp/27336)) + ([#27336](https://community.openproject.org/wp/27336)) - The restriction to create a time entry with at maximum 1000 hours on a single work package has been lifted - ([#27457](https://community.openproject.com/wp/27457)) + ([#27457](https://community.openproject.org/wp/27457)) For more information, please see the [v7.4.4 version in our -community](https://community.openproject.com/versions/924) or take +community](https://community.openproject.org/versions/924) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.4.4). diff --git a/docs/release-notes/7/7-4-5/README.md b/docs/release-notes/7/7-4-5/README.md index 025ada5fb0d7..67b007fa0081 100644 --- a/docs/release-notes/7/7-4-5/README.md +++ b/docs/release-notes/7/7-4-5/README.md @@ -13,36 +13,36 @@ fixes. We recommend the update to the current version. - Fixed: Cookie *secure* flag was not applied in all cases even when SSL was enabled - ([#27763](https://community.openproject.com/wp/27763)) + ([#27763](https://community.openproject.org/wp/27763)) - Fixed: Calendar widget on *My page* overlapped the project dropdown - ([#27765](https://community.openproject.com/wp/27765)) + ([#27765](https://community.openproject.org/wp/27765)) - Fixed: Removed text formatting other than references in commit - messages ([#27769](https://community.openproject.com/wp/27769)) + messages ([#27769](https://community.openproject.org/wp/27769)) - Fixed: Flashing of content on *My account* on initial page load - ([#25795](https://community.openproject.com/wp/25795)) + ([#25795](https://community.openproject.org/wp/25795)) - Fixed: Chrome where the right column of a two-column work package layout (on larger screens) was not receiving any clicks - ([#27687](https://community.openproject.com/wp/27687)) + ([#27687](https://community.openproject.org/wp/27687)) - Fixed: Updating overridden labor and unit costs reset all other overridden costs to their calculated values - ([#](https://community.openproject.com/wp/27692)[27692](https://community.openproject.com/wp/27692)) + ([#](https://community.openproject.org/wp/27692)[27692](https://community.openproject.org/wp/27692)) - Fixed: Unable to update parent to previous sibling work package in shared hierarchy - ([#27746](https://community.openproject.com/wp/27746)) + ([#27746](https://community.openproject.org/wp/27746)) - Fixed: English language option displayed twice in the administration - ([#27696](https://community.openproject.com/wp/27696), - [#27751](https://community.openproject.com/wp/27751)) + ([#27696](https://community.openproject.org/wp/27696), + [#27751](https://community.openproject.org/wp/27751)) - Improved: Error messages when dependent work package is invalid (e.g., trying to save child with invalid parent) - Improved: Parent wiki pages can be selected when creating new wiki pages through content links - ([#26189](https://community.openproject.com/wp/26189)) + ([#26189](https://community.openproject.org/wp/26189)) For more information, please see the [v7.4.5 version in our -community](https://community.openproject.com/versions/990) or take +community](https://community.openproject.org/versions/990) or take a look at [GitHub](https://github.com/opf/openproject/tree/v7.4.5). diff --git a/docs/release-notes/7/7-4-6/README.md b/docs/release-notes/7/7-4-6/README.md index 6a07b528522b..70a8e85862b8 100644 --- a/docs/release-notes/7/7-4-6/README.md +++ b/docs/release-notes/7/7-4-6/README.md @@ -15,23 +15,23 @@ We recommend the update to the current version. OpenProject 7.4.6 packaged installation introduces support for Ubuntu 18.04. -([#27799](https://community.openproject.com/wp/27799)) +([#27799](https://community.openproject.org/wp/27799)) #### Bug fixes and changes - Fixed: Poor performance when adding several work packages to a large tree - ([#27878](https://community.openproject.com/wp/27878)) + ([#27878](https://community.openproject.org/wp/27878)) - Fixed: Saving filter-selected list Custom Field with single value results in error - ([#27833](https://community.openproject.com/wp/27833)) + ([#27833](https://community.openproject.org/wp/27833)) - Fixed: Progress calculation for parents in bulk edit was not applied - ([#27975](https://community.openproject.com/wp/27975)) + ([#27975](https://community.openproject.org/wp/27975)) - Fixed: CSS columns display in Chrome versions 65 to 66 due to backface-visibility - ([#27823](https://community.openproject.com/wp/27823)) + ([#27823](https://community.openproject.org/wp/27823)) - Improved: Performance on global activities page - ([#27582](https://community.openproject.com/wp/27582)) + ([#27582](https://community.openproject.org/wp/27582)) Special thanks go to all OpenProject contributors for [reporting bugs](../../../development/report-a-bug/) and helping diff --git a/docs/release-notes/7/7-4-7/README.md b/docs/release-notes/7/7-4-7/README.md index 10415730b13a..a6f73c695c37 100644 --- a/docs/release-notes/7/7-4-7/README.md +++ b/docs/release-notes/7/7-4-7/README.md @@ -21,14 +21,14 @@ export modal. - Fixed: \[2FA\] Device ID not transmitted when resending with different channel - \[[#28033](https://community.openproject.com/wp/28033)\] + \[[#28033](https://community.openproject.org/wp/28033)\] - Fixed: \[2FA\] MessageBird: Originator may not be longer than 11 - characters \[[#28034](https://community.openproject.com/wp/28034)\] + characters \[[#28034](https://community.openproject.org/wp/28034)\] - Fixed: \[2FA\] MessageBird: work-package-types/#work-package-form-configuration-premium-featureUser language may be - empty \[[#28035](https://community.openproject.com/wp/28035)\] + empty \[[#28035](https://community.openproject.org/wp/28035)\] - Fixed: \[Styling\] Prevent scrolling body when reaching bottom of project autocompleter - \[[#28039](https://community.openproject.com/wp/28039)\] + \[[#28039](https://community.openproject.org/wp/28039)\] diff --git a/docs/release-notes/8/8-0-0/README.md b/docs/release-notes/8/8-0-0/README.md index a544205e40a3..82f5f3fb61e2 100644 --- a/docs/release-notes/8/8-0-0/README.md +++ b/docs/release-notes/8/8-0-0/README.md @@ -28,7 +28,7 @@ Read below to get a detailed overview of what is new in OpenProject 8. ## WYSIWYG Markdown text editor A new WYSIWYG editor replaces the existing editor in OpenProject -([18039](https://community.openproject.com/wp/18039)). +([18039](https://community.openproject.org/wp/18039)). Based on CKEditor 5, the new editor makes it easy to create and format texts. Users do no longer have to remember textile syntax and can directly see the changes they make. No matter whether you want to add an @@ -46,8 +46,8 @@ pandoc. Navigating within OpenProject is now even easier: The new side navigation -([26824](https://community.openproject.com/wp/26824), -[27828](https://community.openproject.com/wp/27828)) +([26824](https://community.openproject.org/wp/26824), +[27828](https://community.openproject.org/wp/27828)) allows you to easily navigate within projects. To get additional screen real estate, just hide the entire side navigation. In addition, work package views and wiki pages are now much easier to find and navigate @@ -59,7 +59,7 @@ to. With OpenProject 8 you can easily embed work package views and the Gantt chart in wiki pages -([26233](https://community.openproject.com/wp/26233)). +([26233](https://community.openproject.org/wp/26233)). This way you can display key project information (such as the current milestone plan) directly in a wiki page or in the project overview page. @@ -70,7 +70,7 @@ milestone plan) directly in a wiki page or in the project overview page. Looking for a specific document or some text in that document? This is no problem with the new full text search capability for work package attachments -([26817](https://community.openproject.com/wp/26817)). +([26817](https://community.openproject.org/wp/26817)). You can either search by file name of the content of the file from the work package page. This allows you to quickly find all the work packages with certain attachments. @@ -81,7 +81,7 @@ with certain attachments. With OpenProject 8 you can model intelligent workflows using custom actions -([26612](https://community.openproject.com/wp/26612)). +([26612](https://community.openproject.org/wp/26612)). Simply select which actions should be triggered when you click a custom action button. You can e.g. change the assignee, status and priority of a work package with the click of a single button. This gives you a @@ -143,7 +143,7 @@ and ensures that OpenProject is future-proof. OpenProject 8.0 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following -list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:false,%22g%22:%22%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22818%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). +list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22%5D,%22tzl%22:%22days%22,%22hi%22:false,%22g%22:%22%22,%22t%22:%22parent:desc%22,%22f%22:%5B%7B%22n%22:%22version%22,%22o%22:%22%253D%22,%22v%22:%5B%22818%22%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22%253D%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:20%7D). ## Upgrading your installation to OpenProject 8.0. diff --git a/docs/release-notes/8/8-0-1/README.md b/docs/release-notes/8/8-0-1/README.md index 01eba4e16017..48945d49ac2d 100644 --- a/docs/release-notes/8/8-0-1/README.md +++ b/docs/release-notes/8/8-0-1/README.md @@ -10,60 +10,60 @@ # OpenProject 8.0.1 We released -[OpenProject 8.0.1](https://community.openproject.com/versions/1154). +[OpenProject 8.0.1](https://community.openproject.org/versions/1154). The release contains bug fixes from the 8.0 release. We recommend updating to the newest version. #### Bug fixes and changes - Fixed: Highlighting of timeline missing with highlighting mode none - \[[#28564](https://community.openproject.com/wp/28564)\] + \[[#28564](https://community.openproject.org/wp/28564)\] - Fixed: Jumping comment container when reverse activity sorting is activated - Fixed: Signed outgoing webhooks incorrectly set signature header - Fixed: A newline was added to WYSIWYG code blocks when editing a document that contained such blocks - \[[#28609](https://community.openproject.com/wp/28609)\] + \[[#28609](https://community.openproject.org/wp/28609)\] - Fixed: Repository statistics SVG reports were not rendered due to Content-Security-Policy forbidding SVG elements \[#28612\] - Fixed: Regression that did not detect work package links within - braces \[[#28578](https://community.openproject.com/wp/28578)\] + braces \[[#28578](https://community.openproject.org/wp/28578)\] - Fixed: Long-running databases of OpenProject run into PostgreSQL index error while migrating *planning\_element\_type\_colors* indexes to 8.0.0 - \[[#28556](https://community.openproject.com/wp/28556)\] + \[[#28556](https://community.openproject.org/wp/28556)\] - Fixed: Calendar filter toggles not working properly - \[[#28588](https://community.openproject.com/wp/28588)\] + \[[#28588](https://community.openproject.org/wp/28588)\] - Fixed: Repository unfolding directory tree not working properly - \[[#28613](https://community.openproject.com/wp/28613)\] + \[[#28613](https://community.openproject.org/wp/28613)\] - Fixed: Memory leak in repeated work package form requests - \[[#28611](https://community.openproject.com/wp/28611)\] + \[[#28611](https://community.openproject.org/wp/28611)\] - Fixed: Login dropdown labels were styled as buttons on hover - \[[#28616](https://community.openproject.com/wp/28616)\] + \[[#28616](https://community.openproject.org/wp/28616)\] - Fixed: Editing work package after submission with add\_work\_packages permission - \[[#28580](https://community.openproject.com/wp/28580)\] + \[[#28580](https://community.openproject.org/wp/28580)\] - Fixed: Fast click on subsequent query elements in the sidebar result in invalid table - \[[#28539](https://community.openproject.com/wp/28539)\] + \[[#28539](https://community.openproject.org/wp/28539)\] - Fixed: Two scrollbars in activity comments on narrow browser windows - \[[#28553](https://community.openproject.com/wp/28553) + \[[#28553](https://community.openproject.org/wp/28553) - Fixed: Can’t upload attachments on comments with add\_work\_packages - permission \[[#28541](https://community.openproject.com/wp/28541)\] + permission \[[#28541](https://community.openproject.org/wp/28541)\] - Fixed: Collapsing views on global work package page removes entries - \[[#28584](https://community.openproject.com/wp/28584)\] + \[[#28584](https://community.openproject.org/wp/28584)\] - Improved: Restored status column on subelements table of a work - package \[[#28526](https://community.openproject.com/wp/28526)\] + package \[[#28526](https://community.openproject.org/wp/28526)\] - Fixed: Type is invalid when creating new project - \[[#28543](https://community.openproject.com/wp/28543)\] + \[[#28543](https://community.openproject.org/wp/28543)\] #### Contributions diff --git a/docs/release-notes/8/8-0-2/README.md b/docs/release-notes/8/8-0-2/README.md index 85f92bc642d2..ee9d09ba74b6 100644 --- a/docs/release-notes/8/8-0-2/README.md +++ b/docs/release-notes/8/8-0-2/README.md @@ -10,7 +10,7 @@ # OpenProject 8.0.2 We released -[OpenProject 8.0.2](https://community.openproject.com/versions/1154). +[OpenProject 8.0.2](https://community.openproject.org/versions/1154). The release contains several bug fixes and we recommend updating to the newest version. @@ -18,24 +18,24 @@ newest version. - Fixed: Relations cannot be added when OpenProject is running on relative URL root - \[[#28639](https://community.openproject.com/wp/28639)\] + \[[#28639](https://community.openproject.org/wp/28639)\] - Fixed: Cannot select values for custom field filter - \[[#28739](https://community.openproject.com/wp/28739)\] + \[[#28739](https://community.openproject.org/wp/28739)\] - Fixed: Renaming custom field does not invalidate cache - \[[#28738](https://community.openproject.com/wp/28738)\] + \[[#28738](https://community.openproject.org/wp/28738)\] - Fixed: Top menu entries are misaligned in mobile views - \[[#28678](https://community.openproject.com/wp/28678)\] + \[[#28678](https://community.openproject.org/wp/28678)\] - Fixed: Unable to save Sub-Project with Custom Field of Version using parent Version - \[[#28421](https://community.openproject.com/wp/28421)\] + \[[#28421](https://community.openproject.org/wp/28421)\] - Fixed: Toolbar container styling corrected - \[[#28645](https://community.openproject.com/wp/28645)\] + \[[#28645](https://community.openproject.org/wp/28645)\] - Fixed: Content-Disposition was not set for AWS hosted attachments - for non-inlineable images. This resulted in SVGs being displayed + for non-inlinable images. This resulted in SVGs being displayed inline, which opens an SVG XSS attack vector on the AWS domain (NOT on the OpenProject domain). From this version onward, non-image files will receive a forced *attachment* content disposition to diff --git a/docs/release-notes/8/8-1-0/README.md b/docs/release-notes/8/8-1-0/README.md index 12bf42fa7711..489dd793f5bc 100644 --- a/docs/release-notes/8/8-1-0/README.md +++ b/docs/release-notes/8/8-1-0/README.md @@ -53,4 +53,4 @@ time. OpenProject 8.1 contains a large number of bugs fixes. For an extensive overview of bug fixes please refer to the [following -list](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22,%22version%22%5D,%22hi%22:true,%22g%22:%22%22,%22t%22:%22parent:asc%22,%22f%22:%5B%7B%22n%22:%22status%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22=%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22version%22,%22o%22:%22=%22,%22v%22:%5B%22989%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:100%7D). +list](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22:%5B%22id%22,%22subject%22,%22type%22,%22status%22,%22assignee%22,%22version%22%5D,%22hi%22:true,%22g%22:%22%22,%22t%22:%22parent:asc%22,%22f%22:%5B%7B%22n%22:%22status%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D,%7B%22n%22:%22type%22,%22o%22:%22=%22,%22v%22:%5B%221%22%5D%7D,%7B%22n%22:%22version%22,%22o%22:%22=%22,%22v%22:%5B%22989%22%5D%7D,%7B%22n%22:%22subprojectId%22,%22o%22:%22*%22,%22v%22:%5B%5D%7D%5D,%22pa%22:1,%22pp%22:100%7D). diff --git a/docs/release-notes/8/8-2-0/README.md b/docs/release-notes/8/8-2-0/README.md index ad194dfc7b79..d19e61c91df1 100644 --- a/docs/release-notes/8/8-2-0/README.md +++ b/docs/release-notes/8/8-2-0/README.md @@ -61,13 +61,13 @@ table](WorkPackage-Table-1024x457.png) ## Technical improvements and bug fixes The OpenProject API now allows you to update times in OpenProject -([#29003](https://community.openproject.com/wp/29003)) +([#29003](https://community.openproject.org/wp/29003)) and delete time entries -([#29029](https://community.openproject.com/wp/29029)), +([#29029](https://community.openproject.org/wp/29029)), OpenProject 8.2 contains a large number of smaller improvements and bug fixes. For an overview, please take a look at the [list of bug -fixes](https://community.openproject.com/projects/openproject/work_packages?query_props=%7B%22c%22%3A%5B%22id%22%2C%22subject%22%2C%22type%22%2C%22status%22%2C%22assignee%22%2C%22version%22%5D%2C%22hi%22%3Atrue%2C%22g%22%3A%22%22%2C%22t%22%3A%22parent%3Aasc%22%2C%22f%22%3A%5B%7B%22n%22%3A%22status%22%2C%22o%22%3A%22*%22%2C%22v%22%3A%5B%5D%7D%2C%7B%22n%22%3A%22version%22%2C%22o%22%3A%22%3D%22%2C%22v%22%3A%5B%221253%22%5D%7D%2C%7B%22n%22%3A%22type%22%2C%22o%22%3A%22%3D%22%2C%22v%22%3A%5B%221%22%5D%7D%2C%7B%22n%22%3A%22subprojectId%22%2C%22o%22%3A%22*%22%2C%22v%22%3A%5B%5D%7D%5D%2C%22pa%22%3A1%2C%22pp%22%3A20%7D). +fixes](https://community.openproject.org/projects/openproject/work_packages?query_props=%7B%22c%22%3A%5B%22id%22%2C%22subject%22%2C%22type%22%2C%22status%22%2C%22assignee%22%2C%22version%22%5D%2C%22hi%22%3Atrue%2C%22g%22%3A%22%22%2C%22t%22%3A%22parent%3Aasc%22%2C%22f%22%3A%5B%7B%22n%22%3A%22status%22%2C%22o%22%3A%22*%22%2C%22v%22%3A%5B%5D%7D%2C%7B%22n%22%3A%22version%22%2C%22o%22%3A%22%3D%22%2C%22v%22%3A%5B%221253%22%5D%7D%2C%7B%22n%22%3A%22type%22%2C%22o%22%3A%22%3D%22%2C%22v%22%3A%5B%221%22%5D%7D%2C%7B%22n%22%3A%22subprojectId%22%2C%22o%22%3A%22*%22%2C%22v%22%3A%5B%5D%7D%5D%2C%22pa%22%3A1%2C%22pp%22%3A20%7D). diff --git a/docs/release-notes/8/8-2-1/README.md b/docs/release-notes/8/8-2-1/README.md index 0acb11076cb0..82742229bdd5 100644 --- a/docs/release-notes/8/8-2-1/README.md +++ b/docs/release-notes/8/8-2-1/README.md @@ -10,7 +10,7 @@ # OpenProject 8.2.1 We released -[OpenProject 8.2.1](https://community.openproject.com/versions/1352). +[OpenProject 8.2.1](https://community.openproject.org/versions/1352). The release contains several bug fixes and we recommend updating to the newest version. @@ -19,39 +19,39 @@ newest version. - Fixed: Long heading in forum overlaps buttons - \[[#28839](https://community.openproject.com/wp/28839)\] + \[[#28839](https://community.openproject.org/wp/28839)\] - Fixed: Wrong error message when updating teaser element on Project Overview page - \[[#29011](https://community.openproject.com/wp/29011)\] + \[[#29011](https://community.openproject.org/wp/29011)\] - Fixed: Page not found displays old OpenProject favicon icon - \[[#29026](https://community.openproject.com/wp/29026)\] + \[[#29026](https://community.openproject.org/wp/29026)\] - Fixed: Incorrect spacings on WP full view (mobile) - \[[#29154](https://community.openproject.com/wp/29154)\] - - Fixed: Mobile notifications hidden by topbar - \[[#29171](https://community.openproject.com/wp/29171)\] + \[[#29154](https://community.openproject.org/wp/29154)\] + - Fixed: Mobile notifications hidden by top bar + \[[#29171](https://community.openproject.org/wp/29171)\] - Fixed: Missing colors for status selector and type indicator in Chrome pdf export - \[[#29175](https://community.openproject.com/wp/29175)\] + \[[#29175](https://community.openproject.org/wp/29175)\] - Fixed: Unnecessary truncation on work package page (split screen) - \[[#29191](https://community.openproject.com/wp/29191)\] - - Fixed: Cost reports: broken scrolling behaviour - \[[#29204](https://community.openproject.com/wp/29204)\] + \[[#29191](https://community.openproject.org/wp/29191)\] + - Fixed: Cost reports: broken scrolling behavior + \[[#29204](https://community.openproject.org/wp/29204)\] - Fixed: Title of default views changes after visiting a work package - full view \[[#29211](https://community.openproject.com/wp/29211)\] + full view \[[#29211](https://community.openproject.org/wp/29211)\] - Fixed: Two column layout not applied on page reload - \[[#29238](https://community.openproject.com/wp/29238)\] + \[[#29238](https://community.openproject.org/wp/29238)\] - Fixed: Work package table header not sticky on MS Edge, Opera, Safari - \[[#29239](https://community.openproject.com/wp/29239)\] + \[[#29239](https://community.openproject.org/wp/29239)\] - Fixed: Work package table hierarchy arrows incorrectly indented on MS - Edge \[[#29242](https://community.openproject.com/wp/29242)\] + Edge \[[#29242](https://community.openproject.org/wp/29242)\] - Changed: When creating version on “Backlogs” page redirect to Backlogs page (not project settings) - \[[#29182](https://community.openproject.com/wp/29182)\] + \[[#29182](https://community.openproject.org/wp/29182)\] - Changed: A security / update warning notification is shown by default for administrators on specific pages. [Please see the configuration diff --git a/docs/release-notes/8/8-3-0/README.md b/docs/release-notes/8/8-3-0/README.md index d28fbfb2a2bc..ffee8286f4a1 100644 --- a/docs/release-notes/8/8-3-0/README.md +++ b/docs/release-notes/8/8-3-0/README.md @@ -10,7 +10,7 @@ # OpenProject 8.3.0 We released -[OpenProject 8.3.0](https://community.openproject.com/versions/1319). +[OpenProject 8.3.0](https://community.openproject.org/versions/1319). The release contains several bug fixes and we recommend updating to the newest version. @@ -71,85 +71,85 @@ Administration \> OAuth applications. #### Bug fixes and changes - Feature: OAuth2 authorization flow - \[[#28952](https://community.openproject.com/wp/28952)\] + \[[#28952](https://community.openproject.org/wp/28952)\] - Feature: Global Search: Autocompletion on work package subjects - \[[#29218](https://community.openproject.com/wp/29218)\] + \[[#29218](https://community.openproject.org/wp/29218)\] - Feature: Auto completion for work package attributes - \[[#29257](https://community.openproject.com/wp/29257)\] + \[[#29257](https://community.openproject.org/wp/29257)\] - Feature: Migrate existing my page data - \[[#29357](https://community.openproject.com/wp/29357)\] + \[[#29357](https://community.openproject.org/wp/29357)\] - Feature: Global search defaults on work packages and shows a table - as result \[[#29388](https://community.openproject.com/wp/29388)\] + as result \[[#29388](https://community.openproject.org/wp/29388)\] - Feature: Better error reporting for bulk edit - \[[#29561](https://community.openproject.com/wp/29561)\] + \[[#29561](https://community.openproject.org/wp/29561)\] - Feature: Automatic calculation of work packages per pagination based on widget height - \[[#29467](https://community.openproject.com/wp/29467)\] + \[[#29467](https://community.openproject.org/wp/29467)\] - Changed: Draw work packages without end date up to the current date in timeline - \[[#25471](https://community.openproject.com/wp/25471)\] + \[[#25471](https://community.openproject.org/wp/25471)\] - Changed: Deactivate option “Use current date as start date for new work packages” by default - \[[#29468](https://community.openproject.com/wp/29468)\] + \[[#29468](https://community.openproject.org/wp/29468)\] - Changed: When sending iCalendar invitation, include email to user who sends out invitation - \[[#29485](https://community.openproject.com/wp/29485)\] + \[[#29485](https://community.openproject.org/wp/29485)\] - Changed: Projects are now being deleted in a background job. - Fixed: Problems when exporting in unified diff - \[[#26599](https://community.openproject.com/wp/26599)\] + \[[#26599](https://community.openproject.org/wp/26599)\] - Fixed: In repository module diff does not escape HTML tags that are present in the compared code - \[[#26614](https://community.openproject.com/wp/26614)\] + \[[#26614](https://community.openproject.org/wp/26614)\] - Fixed: Incompatible browsers warning not shown in IE11 and older FF - \[[#28484](https://community.openproject.com/wp/28484)\] + \[[#28484](https://community.openproject.org/wp/28484)\] - Fixed: Table menu in WYSIWYG editor is cut off on smaller screens - \[[#28815](https://community.openproject.com/wp/28815)\] + \[[#28815](https://community.openproject.org/wp/28815)\] - Fixed: Upgrading reverts protocol to HTTP - \[[#28954](https://community.openproject.com/wp/28954)\] + \[[#28954](https://community.openproject.org/wp/28954)\] - Fixed: Icon texts are not consistently used in tables - \[[#29072](https://community.openproject.com/wp/29072)\] + \[[#29072](https://community.openproject.org/wp/29072)\] - Fixed: Blank circles before work package’s type after upgrading to - 8.1 \[[#29082](https://community.openproject.com/wp/29082)\] + 8.1 \[[#29082](https://community.openproject.org/wp/29082)\] - Fixed: Dependencies for fulltext search in work package attachments not installed with packager installation - \[[#29085](https://community.openproject.com/wp/29085)\] + \[[#29085](https://community.openproject.org/wp/29085)\] - Fixed: Sorting doesn’t work with 8.1 when also using Hierarchy - \[[#29122](https://community.openproject.com/wp/29122)\] + \[[#29122](https://community.openproject.org/wp/29122)\] - Fixed: Very large custom field is killing web browser - \[[#29136](https://community.openproject.com/wp/29136)\] + \[[#29136](https://community.openproject.org/wp/29136)\] - Fixed: Delete projects in delayed job - \[[#29214](https://community.openproject.com/wp/29214)\] + \[[#29214](https://community.openproject.org/wp/29214)\] - Fixed: SVN fails to get changesets in subfolders which start at a revision greater than 1 - \[[#29402](https://community.openproject.com/wp/29402)\] + \[[#29402](https://community.openproject.org/wp/29402)\] - Fixed: “Set Parent” not translated in work package view - \[[#29447](https://community.openproject.com/wp/29447)\] + \[[#29447](https://community.openproject.org/wp/29447)\] - Fixed: WP content does not close right side gap - \[[#29448](https://community.openproject.com/wp/29448)\] + \[[#29448](https://community.openproject.org/wp/29448)\] - Fixed: Redundant type declaration in relations tab - \[[#29460](https://community.openproject.com/wp/29460)\] + \[[#29460](https://community.openproject.org/wp/29460)\] - Fixed: Better error handling on attachment max size exceeded - \[[#29461](https://community.openproject.com/wp/29461)\] + \[[#29461](https://community.openproject.org/wp/29461)\] - Fixed: Improve structure for news section - \[[#29464](https://community.openproject.com/wp/29464)\] + \[[#29464](https://community.openproject.org/wp/29464)\] - Fixed: Editor dropdown is cut off when opened to top - \[[#29482](https://community.openproject.com/wp/29482)\] + \[[#29482](https://community.openproject.org/wp/29482)\] - Fixed: Custom fields for groups throw error message when set - \[[#29486](https://community.openproject.com/wp/29486)\] + \[[#29486](https://community.openproject.org/wp/29486)\] - Fixed: Column shifts when opening autocompleter - \[[#29492](https://community.openproject.com/wp/29492)\] + \[[#29492](https://community.openproject.org/wp/29492)\] - Fixed: Gantt chart not properly aligned when using groups - \[[#29497](https://community.openproject.com/wp/29497)\] + \[[#29497](https://community.openproject.org/wp/29497)\] - Fixed: White space between first table row and header - \[[#29521](https://community.openproject.com/wp/29521)\] + \[[#29521](https://community.openproject.org/wp/29521)\] - Fixed: Different font sizes on WP page - \[[#29528](https://community.openproject.com/wp/29528)\] + \[[#29528](https://community.openproject.org/wp/29528)\] - Fixed: Cannot select category because font is invisible - \[[#29531](https://community.openproject.com/wp/29531)\] + \[[#29531](https://community.openproject.org/wp/29531)\] - Fixed: Search bar too long on mobile Safari browser - \[[#29553](https://community.openproject.com/wp/29553)\] + \[[#29553](https://community.openproject.org/wp/29553)\] - Fixed: Docker incoming-mails not logged - \[[#29575](https://community.openproject.com/wp/29575)\] + \[[#29575](https://community.openproject.org/wp/29575)\] #### Contributions diff --git a/docs/release-notes/8/8-3-1/README.md b/docs/release-notes/8/8-3-1/README.md index ffa9d44be844..d320236cae92 100644 --- a/docs/release-notes/8/8-3-1/README.md +++ b/docs/release-notes/8/8-3-1/README.md @@ -10,7 +10,7 @@ # OpenProject 8.3.1 We released -[OpenProject 8.3.1](https://community.openproject.com/versions/1355). +[OpenProject 8.3.1](https://community.openproject.org/versions/1355). The release contains several bug and security related fixes and we urge updating to the newest version. @@ -24,27 +24,27 @@ and CVE-2019-5420](https://weblog.rubyonrails.org/2019/3/13/Rails-4-2-5-1-5-1-6- - Fixed: Long Work Package titles not wrapped in Cost Reports - \[[#28766](https://community.openproject.com/wp/28766)\] + \[[#28766](https://community.openproject.org/wp/28766)\] - Fixed: Cannot sort by custom field of type “Float” if named “Position” - \[[#29655](https://community.openproject.com/wp/29655)\] + \[[#29655](https://community.openproject.org/wp/29655)\] - Fixed: WorkPackage search results load results thrice and are slow because of it - \[[#29715](https://community.openproject.com/wp/29715)\] + \[[#29715](https://community.openproject.org/wp/29715)\] - Fixed: Internal error when accessing budget detail view - \[[#29718](https://community.openproject.com/wp/29718)\] + \[[#29718](https://community.openproject.org/wp/29718)\] - Fixed: Search page loads slowly initially - \[[#29719](https://community.openproject.com/wp/29719)\] + \[[#29719](https://community.openproject.org/wp/29719)\] - Fixed: Manually set admin flag being unset by SAML authentication - \[[#29720](https://community.openproject.com/wp/29720)\] + \[[#29720](https://community.openproject.org/wp/29720)\] - Fixed: Gantt Zoom buttons are inverted - \[[#29721](https://community.openproject.com/wp/29721)\] + \[[#29721](https://community.openproject.org/wp/29721)\] - Fixed: Attachments deleted on work package update via email - \[[#29722](https://community.openproject.com/wp/29722)\] + \[[#29722](https://community.openproject.org/wp/29722)\] - Changed: Allow instances to define a legal notice link to be - rendered \[[#29697](https://community.openproject.com/wp/29697)\] + rendered \[[#29697](https://community.openproject.org/wp/29697)\] - Changed: Make Gravatar default image configurable again - \[[#29711](https://community.openproject.com/wp/29711)\] + \[[#29711](https://community.openproject.org/wp/29711)\] #### Contributions diff --git a/docs/release-notes/9/9-0-0/README.md b/docs/release-notes/9/9-0-0/README.md index f43cdb23160b..84d250602362 100644 --- a/docs/release-notes/9/9-0-0/README.md +++ b/docs/release-notes/9/9-0-0/README.md @@ -63,7 +63,7 @@ Creating work packages on the global work package table is now easier as well: W Filters and work package attributes are improved and support auto-completion. -For an overview of all new improvements, take a look at the [feature list](https://community.openproject.com/projects/openproject/work_packages?query_props={"c"%3A["id"%2C"subject"%2C"type"%2C"status"%2C"assignee"%2C"version"]%2C"hi"%3Atrue%2C"g"%3A""%2C"t"%3A"id%3Aasc"%2C"f"%3A[{"n"%3A"status"%2C"o"%3A"!"%2C"v"%3A["6"]}%2C{"n"%3A"version"%2C"o"%3A"%3D"%2C"v"%3A["853"]}%2C{"n"%3A"subprojectId"%2C"o"%3A"*"%2C"v"%3A[]}%2C{"n"%3A"type"%2C"o"%3A"%3D"%2C"v"%3A["6"%2C"8"]}]%2C"pa"%3A1%2C"pp"%3A100}). +For an overview of all new improvements, take a look at the [feature list](https://community.openproject.org/projects/openproject/work_packages?query_props={"c"%3A["id"%2C"subject"%2C"type"%2C"status"%2C"assignee"%2C"version"]%2C"hi"%3Atrue%2C"g"%3A""%2C"t"%3A"id%3Aasc"%2C"f"%3A[{"n"%3A"status"%2C"o"%3A"!"%2C"v"%3A["6"]}%2C{"n"%3A"version"%2C"o"%3A"%3D"%2C"v"%3A["853"]}%2C{"n"%3A"subprojectId"%2C"o"%3A"*"%2C"v"%3A[]}%2C{"n"%3A"type"%2C"o"%3A"%3D"%2C"v"%3A["6"%2C"8"]}]%2C"pa"%3A1%2C"pp"%3A100}). @@ -71,7 +71,7 @@ For an overview of all new improvements, take a look at the [feature list](https OpenProject 9.0 contains a large number of bugs fixes. -For an extensive overview of bug fixes please refer to the [following list](https://community.openproject.com/projects/openproject/work_packages?query_props={"c"%3A["id"%2C"subject"%2C"type"%2C"status"%2C"assignee"]%2C"hi"%3Afalse%2C"g"%3A""%2C"t"%3A"id%3Adesc"%2C"f"%3A[{"n"%3A"version"%2C"o"%3A"%3D"%2C"v"%3A["853"]}%2C{"n"%3A"type"%2C"o"%3A"%3D"%2C"v"%3A["1"]}%2C{"n"%3A"subprojectId"%2C"o"%3A"*"%2C"v"%3A[]}]%2C"pa"%3A1%2C"pp"%3A20}). +For an extensive overview of bug fixes please refer to the [following list](https://community.openproject.org/projects/openproject/work_packages?query_props={"c"%3A["id"%2C"subject"%2C"type"%2C"status"%2C"assignee"]%2C"hi"%3Afalse%2C"g"%3A""%2C"t"%3A"id%3Adesc"%2C"f"%3A[{"n"%3A"version"%2C"o"%3A"%3D"%2C"v"%3A["853"]}%2C{"n"%3A"type"%2C"o"%3A"%3D"%2C"v"%3A["1"]}%2C{"n"%3A"subprojectId"%2C"o"%3A"*"%2C"v"%3A[]}]%2C"pa"%3A1%2C"pp"%3A20}). diff --git a/docs/release-notes/9/9-0-1/README.md b/docs/release-notes/9/9-0-1/README.md index 5581bdb06117..bcfa6bda3033 100644 --- a/docs/release-notes/9/9-0-1/README.md +++ b/docs/release-notes/9/9-0-1/README.md @@ -8,23 +8,23 @@ release_date: 2019-06-07 -We released [OpenProject 9.0.1](https://community.openproject.com/versions/1368). +We released [OpenProject 9.0.1](https://community.openproject.org/versions/1368). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Fixed: Wiki TOC doesn't render headings properly [[#30245](https://community.openproject.com/wp/30245)] -- Fixed: Doubled files section in meeting agenda [[#30291](https://community.openproject.com/wp/30291)] -- Fixed: Row highlighted by 'Type' makes table text unreadable [[#30298](https://community.openproject.com/wp/30298)] -- Fixed: Cannot copy projects & wrong error message [[#30309](https://community.openproject.com/wp/30309)] -- Fixed: Dark background for getting started tour does not cover entire page [[#30314](https://community.openproject.com/wp/30314)] -- Fixed: JavaScript error when clicking on a link in My Page [[#30343](https://community.openproject.com/wp/30343)] -- Fixed: Highlighting for add relation in Gantt chart not applied properly [[#30354](https://community.openproject.com/wp/30354)] -- Changed: Styled scrollbars in WP views [[#30304](https://community.openproject.com/wp/30304)] -- Changed: Improve print view of cost report via CSS [[#30305](https://community.openproject.com/wp/30305)] -- Changed: Ensure PostgreSQL migration is finished before attachments are re-inserted [[#30352](https://community.openproject.com/wp/30352)] +- Fixed: Wiki TOC doesn't render headings properly [[#30245](https://community.openproject.org/wp/30245)] +- Fixed: Doubled files section in meeting agenda [[#30291](https://community.openproject.org/wp/30291)] +- Fixed: Row highlighted by 'Type' makes table text unreadable [[#30298](https://community.openproject.org/wp/30298)] +- Fixed: Cannot copy projects & wrong error message [[#30309](https://community.openproject.org/wp/30309)] +- Fixed: Dark background for getting started tour does not cover entire page [[#30314](https://community.openproject.org/wp/30314)] +- Fixed: JavaScript error when clicking on a link in My Page [[#30343](https://community.openproject.org/wp/30343)] +- Fixed: Highlighting for add relation in Gantt chart not applied properly [[#30354](https://community.openproject.org/wp/30354)] +- Changed: Styled scrollbars in WP views [[#30304](https://community.openproject.org/wp/30304)] +- Changed: Improve print view of cost report via CSS [[#30305](https://community.openproject.org/wp/30305)] +- Changed: Ensure PostgreSQL migration is finished before attachments are re-inserted [[#30352](https://community.openproject.org/wp/30352)] #### Contributions diff --git a/docs/release-notes/9/9-0-2/README.md b/docs/release-notes/9/9-0-2/README.md index 7d6f6e57b99b..ff58f926dce9 100644 --- a/docs/release-notes/9/9-0-2/README.md +++ b/docs/release-notes/9/9-0-2/README.md @@ -8,17 +8,17 @@ release_date: 2019-06-13 # OpenProject 9.0.2 -We released [OpenProject 9.0.2](https://community.openproject.com/versions/1359). -The release contains several bug fixes and we recommend updating to the newest version. If you're running OpenProject with a relative URL root (e.g., under domain.example.org/openproject), this update should fix [an installation issue related to Sass compilation](https://community.openproject.com/wp/30372) as well as [an error trying to use create new boards](https://community.openproject.com/wp/30370). +We released [OpenProject 9.0.2](https://community.openproject.org/versions/1359). +The release contains several bug fixes and we recommend updating to the newest version. If you're running OpenProject with a relative URL root (e.g., under domain.example.org/openproject), this update should fix [an installation issue related to Sass compilation](https://community.openproject.org/wp/30372) as well as [an error trying to use create new boards](https://community.openproject.org/wp/30370). #### Bug fixes and changes -- **Fixed**: Wiki TOC doesn't render headings properly [[#30245](https://community.openproject.com/wp/30245)] -- **Fixed**: Cannot create new boards in installations with relative_url_root set [[#30370](https://community.openproject.com/wp/30370)] -- **Fixed**: Sass compilation fails on packaged installations with relative_url_root set [[#30372](https://community.openproject.com/wp/30372)] -- **Fixed**: Chrome is logged out when accessing pages with images on S3 storage [[#28652](https://community.openproject.com/wp/28652)] -- **Fixed**: OpenProject logo on My page does not redirect to landing page [[#30376](https://community.openproject.com/wp/30376)] -- **Fixed**: The PDF export is cut off after the first page [[#29929](https://community.openproject.com/wp/29929)] +- **Fixed**: Wiki TOC doesn't render headings properly [[#30245](https://community.openproject.org/wp/30245)] +- **Fixed**: Cannot create new boards in installations with relative_url_root set [[#30370](https://community.openproject.org/wp/30370)] +- **Fixed**: Sass compilation fails on packaged installations with relative_url_root set [[#30372](https://community.openproject.org/wp/30372)] +- **Fixed**: Chrome is logged out when accessing pages with images on S3 storage [[#28652](https://community.openproject.org/wp/28652)] +- **Fixed**: OpenProject logo on My page does not redirect to landing page [[#30376](https://community.openproject.org/wp/30376)] +- **Fixed**: The PDF export is cut off after the first page [[#29929](https://community.openproject.org/wp/29929)] diff --git a/docs/release-notes/9/9-0-3/README.md b/docs/release-notes/9/9-0-3/README.md index 269f728f981e..98fa590c338f 100644 --- a/docs/release-notes/9/9-0-3/README.md +++ b/docs/release-notes/9/9-0-3/README.md @@ -8,42 +8,42 @@ release_date: 2019-07-23 # OpenProject 9.0.3 -We released [OpenProject 9.0.3](https://community.openproject.com/versions/1376). +We released [OpenProject 9.0.3](https://community.openproject.org/versions/1376). The release contains several bug fixes and we recommend updating to the newest version. #### Bug fixes and changes -- Changed: Searching for Custom Fields [[#29756](https://community.openproject.com/wp/29756)] -- Changed: Prevent collisions between users working on the same board [[#30403](https://community.openproject.com/wp/30403)] -- Changed: Do not send email notifications for changes in child work packages [[#30532](https://community.openproject.com/wp/30532)] -- Fixed: Version field flickers [[#30356](https://community.openproject.com/wp/30356)] -- Fixed: Missing translations for boards [[#30367](https://community.openproject.com/wp/30367)] -- Fixed: Work package description not updated after initial edit [[#30373](https://community.openproject.com/wp/30373)] -- Fixed: Parent work package in Gantt chart not displayed correctly [[#30388](https://community.openproject.com/wp/30388)] -- Fixed: Cannot delete date from work packages of a type that is a milestone [[#30390](https://community.openproject.com/wp/30390)] -- Fixed: Work packages in closed version suggest status editable but then nothing happens [[#30396](https://community.openproject.com/wp/30396)] -- Fixed: Wrong language is displayed in some date fields [[#30400](https://community.openproject.com/wp/30400)] -- Fixed: Project Paisy: Connecting functional document fails without error message [[#30404](https://community.openproject.com/wp/30404)] -- Fixed: Button Release to production not visible for Releasemanager [[#30405](https://community.openproject.com/wp/30405)] -- Fixed: Text references to SVN revisions don't create links [[#30415](https://community.openproject.com/wp/30415)] -- Fixed: User with :manage_boards but without :manage_public_queries can create faulty board columns [[#30426](https://community.openproject.com/wp/30426)] -- Fixed: Tag shown on My page for time tracking comments [[#30432](https://community.openproject.com/wp/30432)] -- Fixed: [Error 500] An error occurred on the page you were trying to access [[#30435](https://community.openproject.com/wp/30435)] -- Fixed: OmniAuth login link in top menu not styled properly. [[#30436](https://community.openproject.com/wp/30436)] -- Fixed: Board list not sorted alphabetically [[#30444](https://community.openproject.com/wp/30444)] -- Fixed: Not all multiples of 4096 bytes are folders [[#30450](https://community.openproject.com/wp/30450)] -- Fixed: Search work package hints are not links [[#30457](https://community.openproject.com/wp/30457)] -- Fixed: New API-backed attachments always use content disposition attachment [[#30492](https://community.openproject.com/wp/30492)] -- Fixed: Can not switch to hierarchy mode in work packages list [[#30514](https://community.openproject.com/wp/30514)] -- Fixed: Error when copying a work package [[#30518](https://community.openproject.com/wp/30518)] -- Fixed: Gantt chart: Jump when scheduling finish date of work package with only start date [[#30554](https://community.openproject.com/wp/30554)] -- Fixed: Comma and dot flipped for values in cost report and budgets (German language setting) [[#30574](https://community.openproject.com/wp/30574)] -- Fixed: Inline-create useless when only add_work_packages_permission present [[#30589](https://community.openproject.com/wp/30589)] -- Fixed: Cannot close Arbeitspaket [[#30590](https://community.openproject.com/wp/30590)] -- Fixed: "Login" instead of "Login name" used (causes problems with translations) [[#30591](https://community.openproject.com/wp/30591)] -- Fixed: Board links in sidebar broken [[#30595](https://community.openproject.com/wp/30595)] +- Changed: Searching for Custom Fields [[#29756](https://community.openproject.org/wp/29756)] +- Changed: Prevent collisions between users working on the same board [[#30403](https://community.openproject.org/wp/30403)] +- Changed: Do not send email notifications for changes in child work packages [[#30532](https://community.openproject.org/wp/30532)] +- Fixed: Version field flickers [[#30356](https://community.openproject.org/wp/30356)] +- Fixed: Missing translations for boards [[#30367](https://community.openproject.org/wp/30367)] +- Fixed: Work package description not updated after initial edit [[#30373](https://community.openproject.org/wp/30373)] +- Fixed: Parent work package in Gantt chart not displayed correctly [[#30388](https://community.openproject.org/wp/30388)] +- Fixed: Cannot delete date from work packages of a type that is a milestone [[#30390](https://community.openproject.org/wp/30390)] +- Fixed: Work packages in closed version suggest status editable but then nothing happens [[#30396](https://community.openproject.org/wp/30396)] +- Fixed: Wrong language is displayed in some date fields [[#30400](https://community.openproject.org/wp/30400)] +- Fixed: Project Paisy: Connecting functional document fails without error message [[#30404](https://community.openproject.org/wp/30404)] +- Fixed: Button Release to production not visible for Release manager [[#30405](https://community.openproject.org/wp/30405)] +- Fixed: Text references to SVN revisions don't create links [[#30415](https://community.openproject.org/wp/30415)] +- Fixed: User with :manage_boards but without :manage_public_queries can create faulty board columns [[#30426](https://community.openproject.org/wp/30426)] +- Fixed: Tag shown on My page for time tracking comments [[#30432](https://community.openproject.org/wp/30432)] +- Fixed: [Error 500] An error occurred on the page you were trying to access [[#30435](https://community.openproject.org/wp/30435)] +- Fixed: OmniAuth login link in top menu not styled properly. [[#30436](https://community.openproject.org/wp/30436)] +- Fixed: Board list not sorted alphabetically [[#30444](https://community.openproject.org/wp/30444)] +- Fixed: Not all multiples of 4096 bytes are folders [[#30450](https://community.openproject.org/wp/30450)] +- Fixed: Search work package hints are not links [[#30457](https://community.openproject.org/wp/30457)] +- Fixed: New API-backed attachments always use content disposition attachment [[#30492](https://community.openproject.org/wp/30492)] +- Fixed: Can not switch to hierarchy mode in work packages list [[#30514](https://community.openproject.org/wp/30514)] +- Fixed: Error when copying a work package [[#30518](https://community.openproject.org/wp/30518)] +- Fixed: Gantt chart: Jump when scheduling finish date of work package with only start date [[#30554](https://community.openproject.org/wp/30554)] +- Fixed: Comma and dot flipped for values in cost report and budgets (German language setting) [[#30574](https://community.openproject.org/wp/30574)] +- Fixed: Inline-create useless when only add_work_packages_permission present [[#30589](https://community.openproject.org/wp/30589)] +- Fixed: Cannot close work package [[#30590](https://community.openproject.org/wp/30590)] +- Fixed: "Login" instead of "Login name" used (causes problems with translations) [[#30591](https://community.openproject.org/wp/30591)] +- Fixed: Board links in sidebar broken [[#30595](https://community.openproject.org/wp/30595)] #### Contributions diff --git a/docs/release-notes/9/9-0-4/README.md b/docs/release-notes/9/9-0-4/README.md index 0d10d4696b05..639f489c27c0 100644 --- a/docs/release-notes/9/9-0-4/README.md +++ b/docs/release-notes/9/9-0-4/README.md @@ -20,4 +20,4 @@ Thanks to David Haintz from the SEC Consult Vulnerability Lab (https://www.sec-c #### Contributions -Thanks to David Haintz from [SEC Consult Vulnerability Lab](https://www.sec-consult.com/) for identifying and responsibly disclosing the identified issues. +Thanks to David Haintz from [SEC Consult Vulnerability Lab](https://www.sec-consult.com) for identifying and responsibly disclosing the identified issues. diff --git a/docs/release-notes/README.md b/docs/release-notes/README.md index 054dbf2c7969..c92449582c07 100644 --- a/docs/release-notes/README.md +++ b/docs/release-notes/README.md @@ -14,6 +14,13 @@ Stay up to date and get an overview of the new features included in the releases +## 13.2.1 + +Release date: 2024-01-31 + +[Release Notes](13-2-1/) + + ## 13.2.0 Release date: 2024-01-17 diff --git a/docs/security-and-privacy/processing-of-personal-data/README.md b/docs/security-and-privacy/processing-of-personal-data/README.md index 417be4729129..a0a2df031d43 100644 --- a/docs/security-and-privacy/processing-of-personal-data/README.md +++ b/docs/security-and-privacy/processing-of-personal-data/README.md @@ -170,7 +170,7 @@ Depending on the individual use and permissions of the user the following person - Assignment of a work package to a person - Change history - Person mentioned in a list or project schedule -- Person mentioned in an attributs or text field +- Person mentioned in an attribute or text field - Person mentioned in a linked file - Person mentioned in a linked pull request (i.e. GitHub) @@ -197,7 +197,7 @@ The data listed above is generated upon entering the application. When actually Logfiles are automatically removed based on a first-in-first-out mechanism. This is done to limit the disk space which ensures the server's operation and at the same time serves as a means to erase the log entries once they have served their purpose of supporting operations. By default the retention period is determined by the size of the logfile. Once the logfile reaches its storage limit, the oldest entries are removed. -As such, the log entries are not kept for a fixed period of time. If there are a lot of requests, old entries are removed faster then if there are less requests. Administrators of an OpenProject installation might decide to configure a different behaviour that factors in the age of the log entries. +As such, the log entries are not kept for a fixed period of time. If there are a lot of requests, old entries are removed faster then if there are less requests. Administrators of an OpenProject installation might decide to configure a different behavior that factors in the age of the log entries. #### Technical documentation @@ -388,7 +388,7 @@ flowchart LR #### Purpose -* Create a new work package by sending an email to a configured email adress. +* Create a new work package by sending an email to a configured email address. * Adding a comment to an existing work package by answering to an email notification. * Sending email notifications about updates in OpenProject (e.g [email reminder](../../system-admin-guide/emails-and-notifications/), meeting updates, project invitation, wiki notifications) @@ -642,9 +642,9 @@ OpenProject makes use of technical cookies to identity the browser client and/or | **Cookie name** | **Description** | **Expiry** | **Security flags** | **Implementation** | | ---------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ----------------------------------------------------- | ------------------------------------------------------------ | -| `_open_project_session` (name is configurable) | contains the information about the logged in user as well as information stored between requests on the user's choices (e.g. the filters for costs are in part stored there) | Session
+ configurable server-sideTTL | secure
httponly
Samesite=Lax
encrypted | [Code ref](https://github.com/opf/openproject/blob/release/13.0/config/initializers/session_store.rb#L34-L39) | -| `autologin` (name is configurable) | (Optional feature, requires opt-in under Administration > Authentication settings)
enables the user to automatically log in again after the session expired (e.g. because the browser was closed). It is set when the user checks the '*Stay logged in*' box in the login form.
| Cookie 1 year
+ server-side token N days (configurable) | secure
httponly
Samesite=Lax
encrypted | [Code ref](https://github.com/opf/openproject/blob/release/13.0/app/controllers/concerns/accounts/user_login.rb#L19C1-L29) | -| `op2fa_remember_token` | the presence of that cookie suppresses the need for the user to provide a second factor upon login for N days (configurable by administration) if the user selects to do so when entering the 2fa information. | N days (configurable) | secure
httponly
Samesite=Lax
encrypted | [Code ref](https://github.com/opf/openproject/blob/release/13.0/modules/two_factor_authentication/app/controllers/concerns/two_factor_authentication/remember_token.rb#L28-L34) | +| `_open_project_session` (name is configurable) | contains the information about the logged in user as well as information stored between requests on the user's choices (e.g. the filters for costs are in part stored there) | Session
+ configurable server-sideTTL | secure
httponly
Samesite=Lax
encrypted | [Code ref](https://github.com/opf/openproject/blob/release/13.0/config/initializers/session_store.rb#L34-L39) | +| `autologin` (name is configurable) | (Optional feature, requires opt-in under Administration > Authentication settings)
enables the user to automatically log in again after the session expired (e.g. because the browser was closed). It is set when the user checks the '*Stay logged in*' box in the login form.
| Cookie 1 year
+ server-side token N days (configurable) | secure
httponly
Samesite=Lax
encrypted | [Code ref](https://github.com/opf/openproject/blob/release/13.0/app/controllers/concerns/accounts/user_login.rb#L19C1-L29) | +| `op2fa_remember_token` | the presence of that cookie suppresses the need for the user to provide a second factor upon login for N days (configurable by administration) if the user selects to do so when entering the 2fa information. | N days (configurable) | secure
httponly
Samesite=Lax
encrypted | [Code ref](https://github.com/opf/openproject/blob/release/13.0/modules/two_factor_authentication/app/controllers/concerns/two_factor_authentication/remember_token.rb#L28-L34) | ## Deletion of personal data diff --git a/docs/system-admin-guide/authentication/ldap-authentication/README.md b/docs/system-admin-guide/authentication/ldap-authentication/README.md index 9bcf7aac1ee7..5cc1fa494a63 100644 --- a/docs/system-admin-guide/authentication/ldap-authentication/README.md +++ b/docs/system-admin-guide/authentication/ldap-authentication/README.md @@ -47,7 +47,7 @@ In the upper section, you have to specify the connection details of your LDAP se - **Verify SSL certificate**: By default, for STARTTLS and LDAPS, SSL certificate trust chains will be verified during connection. As many LDAP servers in our experience use self-signed certificates, checking this option without providing the SSL certificate will fail. However, we recommend you enable this checkbox for any LDAP connections used in production. - - **LDAP server SSL certificate**: If the LDAP server's certificate is not trusted on the system that the OpenProject server runs on, you have the option to specifiy one or multiple PEM-encoded X509 certificates. This certificate might be the LDAP server's own certificate, or an intermediate or root CA that you trust for the sake of this connection. + - **LDAP server SSL certificate**: If the LDAP server's certificate is not trusted on the system that the OpenProject server runs on, you have the option to specify one or multiple PEM-encoded X509 certificates. This certificate might be the LDAP server's own certificate, or an intermediate or root CA that you trust for the sake of this connection. #### LDAP system user credentials diff --git a/docs/system-admin-guide/authentication/oauth-applications/README.md b/docs/system-admin-guide/authentication/oauth-applications/README.md index 4116cbbe2b0b..9eba0bdc283c 100644 --- a/docs/system-admin-guide/authentication/oauth-applications/README.md +++ b/docs/system-admin-guide/authentication/oauth-applications/README.md @@ -26,7 +26,7 @@ You can configure the following options to add your OAuth application: `urn:ietf:wg:oauth:2.0:oob` Postman 9.6 and higher also provides a Web URL that you can use: `https://oauth.pstmn.io/v1/callback`. -3. Set the **Scopes** that the OAuth clien application will be +3. Set the **Scopes** that the OAuth client application will be able to access. Multiple selection is possible. If no scope is checked, per default **api_v3** is assumed. api_v3 is the standard OpenProject API, while diff --git a/docs/system-admin-guide/authentication/openid-providers/README.md b/docs/system-admin-guide/authentication/openid-providers/README.md index 521ce21b9d39..54baa3f65a9d 100644 --- a/docs/system-admin-guide/authentication/openid-providers/README.md +++ b/docs/system-admin-guide/authentication/openid-providers/README.md @@ -167,7 +167,7 @@ At the end of this step, you should have a copy of the Application client ID as Now, head over to OpenProject > Administration > OpenID providers. Click on "New OpenID provider", select the Azure type, enter the client ID and client Secret. -By default, OpenProject will use the Microsoft Graph API endpoint to perform userinfo requests. +By default, OpenProject will use the Microsoft Graph API endpoint to perform user info requests. For that, you will need to enter the correct tenant identifier for your Azure instance. To find the correct value for your instance, [please see this guide](https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc#find-your-apps-openid-configuration-document-uri). diff --git a/docs/system-admin-guide/authentication/recaptcha/README.md b/docs/system-admin-guide/authentication/recaptcha/README.md index 7d6493e165f3..30ad73f7df77 100644 --- a/docs/system-admin-guide/authentication/recaptcha/README.md +++ b/docs/system-admin-guide/authentication/recaptcha/README.md @@ -18,4 +18,4 @@ You can configure the following options: 3. Insert the **secret key**. 4. Press the blue **Apply** button to save your changes. -![Sys-admin-authentication-recaptcha](Sys-admin-authentication-recaptcha.png) +![Sysadmin authentication reCAPTCHA](Sys-admin-authentication-recaptcha.png) diff --git a/docs/system-admin-guide/authentication/saml/README.md b/docs/system-admin-guide/authentication/saml/README.md index f9ae3f5bd36d..bb3e15fef3ed 100644 --- a/docs/system-admin-guide/authentication/saml/README.md +++ b/docs/system-admin-guide/authentication/saml/README.md @@ -443,7 +443,7 @@ For ADFS, you need add OpenProject as a "relying part trust" entry within the AD - In the ADFS management snap-in, right click on`AD FS -> Relying Party Trusts` , and select `Add Relying Party Trust...` - Select **Claims aware** and hit Start - **Select Data Source**: Choose "Enter data about the relying party manually" and click Next -- **Specifiy Display Name**: Enter "OpenProject" or any arbitrary name for the OpenProject instance you want to identify +- **Specify Display Name**: Enter "OpenProject" or any arbitrary name for the OpenProject instance you want to identify - **Configure Certificate**: Skip this step, unless you explicitly want to enable assertion encryption, whose steps are documented for OpenProject above. - **Configure URL**: Check "Enable support for the SAML 2.0 WebSSO protocol" and enter the URL `https:///auth/saml` @@ -565,7 +565,7 @@ OPENPROJECT_SAML_SAML_IDP__SSO__SERVICE__URL="https:///r OPENPROJECT_SAML_SAML_IDP__CERT="" ``` -If you're unsure what the realm value is, go to the menu "Realm settings" and click on "Endpoints -> SAML 2.0 Identity Provider Metadata". This will include URLs for the `SingleSignOnSerivce` and `SingleLogoutService`. +If you're unsure what the realm value is, go to the menu "Realm settings" and click on "Endpoints -> SAML 2.0 Identity Provider Metadata". This will include URLs for the `SingleSignOnService` and `SingleLogoutService`. diff --git a/docs/system-admin-guide/backup/README.md b/docs/system-admin-guide/backup/README.md index 94ae3d970620..83e5e7908b39 100644 --- a/docs/system-admin-guide/backup/README.md +++ b/docs/system-admin-guide/backup/README.md @@ -43,7 +43,7 @@ After having requested the backup, you will receive an email notification with a If the user resetting (or creating) a backup token does not have a password, for instance because they authenticate using Google, the newly generated backup token will only be valid after an initial waiting period. -This is to make sure that no unauthorised user can get their hands on a backup even when accessing +This is to make sure that no unauthorized user can get their hands on a backup even when accessing a logged-in user's desktop. As a system administrator you can skip this period by running the following rake task on the server's terminal: diff --git a/docs/system-admin-guide/calendars-and-dates/README.md b/docs/system-admin-guide/calendars-and-dates/README.md index f0a4ca47074a..90e851163159 100644 --- a/docs/system-admin-guide/calendars-and-dates/README.md +++ b/docs/system-admin-guide/calendars-and-dates/README.md @@ -3,7 +3,7 @@ sidebar_navigation: title: Calendar and dates priority: 940 description: Configure working days, dates formats and calendar subscriptions -keywords: working non-working days work week dates calendars icalendar +keywords: working non-working days work week dates calendars ical icalendar --- # Calendar and dates @@ -59,7 +59,7 @@ We only recommend changing this setting if you are absolutely sure and you are a ### Effect on calendars -The non-working days defined here are coloured differently, generally with a darker background colour, on the [work package date picker](../../user-guide/work-packages/set-change-dates/#working-days-and-duration), [Gantt chart](../../user-guide/gantt-chart/) and the [Team planner](../../user-guide/team-planner/) and [calendar](../../user-guide/calendar/) modules. +The non-working days defined here are colored differently, generally with a darker background color, on the [work package date picker](../../user-guide/work-packages/set-change-dates/#working-days-and-duration), [Gantt chart](../../user-guide/gantt-chart/) and the [Team planner](../../user-guide/team-planner/) and [calendar](../../user-guide/calendar/) modules. ## Date format diff --git a/docs/system-admin-guide/custom-fields/README.md b/docs/system-admin-guide/custom-fields/README.md index 2781cc1bb043..4963ce43de11 100644 --- a/docs/system-admin-guide/custom-fields/README.md +++ b/docs/system-admin-guide/custom-fields/README.md @@ -63,7 +63,7 @@ To **edit an existing custom field** select the appropriate tab and click on the To **delete** a custom field, click on the delete icon next to the respective custom field in the list. -![Edit or delete a custom field in OpenProject adminstration](system-admin-edit-delete-custom-field.png) +![Edit or delete a custom field in OpenProject administration](system-admin-edit-delete-custom-field.png) diff --git a/docs/system-admin-guide/design/pdf-export-styles/README.md b/docs/system-admin-guide/design/pdf-export-styles/README.md index 7aac2bf2fb82..308466235fe2 100644 --- a/docs/system-admin-guide/design/pdf-export-styles/README.md +++ b/docs/system-admin-guide/design/pdf-export-styles/README.md @@ -596,14 +596,14 @@ overview: table: {} ``` -| Key | Description | Data type | -| - | - | - | -| `group_heading` | **Overview group heading**
Styling for the group lavel if grouping is activated
See [Overview group heading](#overview-group-heading) | object | -| `table` | **Overview table**
See [Overview table](#overview-table) | object | +| Key | Description | Data type | +|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-----------| +| `group_heading` | **Overview group heading**
Styling for the group label if grouping is activated
See [Overview group heading](#overview-group-heading) | object | +| `table` | **Overview table**
See [Overview table](#overview-table) | object | ## Overview group heading -Styling for the group lavel if grouping is activated +Styling for the group label if grouping is activated Key: `group_heading` diff --git a/docs/system-admin-guide/emails-and-notifications/README.md b/docs/system-admin-guide/emails-and-notifications/README.md index e018656dca80..39b9198c2090 100644 --- a/docs/system-admin-guide/emails-and-notifications/README.md +++ b/docs/system-admin-guide/emails-and-notifications/README.md @@ -21,7 +21,7 @@ Navigate to **Administration → Emails and notifications**. ![Administration setting email and notifications aggregation](admin-email-aggregation.png) -The setting **User actions aggregated within** specifies a time interval in which all notifications regarding a specific user's actions are bundled into one single notification. Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified timespan. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent. +The setting **User actions aggregated within** specifies a time interval in which all notifications regarding a specific user's actions are bundled into one single notification. Individual actions of a user (e.g. updating a work package twice) are aggregated into a single action if their age difference is less than the specified time span. They will be displayed as a single action within the application. This will also delay notifications by the same amount of time reducing the number of emails being sent. ## Email notifications settings diff --git a/docs/system-admin-guide/file-storages/README.md b/docs/system-admin-guide/file-storages/README.md index bab32cb69e74..5c36009d83d9 100644 --- a/docs/system-admin-guide/file-storages/README.md +++ b/docs/system-admin-guide/file-storages/README.md @@ -3,7 +3,7 @@ sidebar_navigation: title: File storages priority: 830 description: File storages in OpenProject. -keywords: file storages, nextcloud setup, nextcloud integration, onedrive setup, sharepoint setup, onedrive, sharepoint +keywords: file storages, Nextcloud setup, Nextcloud integration, OneDrive setup, Sharepoint setup, OneDrive, Sharepoint --- # File storages diff --git a/docs/system-admin-guide/integrations/excel-synchronization/README.md b/docs/system-admin-guide/integrations/excel-synchronization/README.md index 9b432a760949..e9576ea99dc8 100644 --- a/docs/system-admin-guide/integrations/excel-synchronization/README.md +++ b/docs/system-admin-guide/integrations/excel-synchronization/README.md @@ -46,7 +46,7 @@ You will then get the relations in your Excel file. Unfortunately, there is no way to create relation with translated terms via API at the moment. You have to use these terms instead: [Relation Edit Form API](../../../api/endpoints/relations/#relation-edit-form) -![allowd-values](image-20211014153150017.png) +![allowed values](image-20211014153150017.png) @@ -91,7 +91,7 @@ Unfortunately, there is no way to create relation with translated terms via API 9. Accept to start the synchronization. 10. You need to select a minimum of columns to start with the synchronization. For column selection, click in the header and open the drop down which opens next to the regular drop down icon: Select the following column headers at a minimum: - **Updatestatus** + **Update status** **Lock Version** **ID** **Subject** @@ -113,7 +113,7 @@ Copy and paste all data accordingly from your existing Excel list to this sheet. -**Download workpackages**: initially downloads all work packages from the selected project (and query). +**Download work packages**: initially downloads all work packages from the selected project (and query). **Upload / update work packages**: makes changes to the work packages, e.g. adding new work packages or changing any information. This option needs to be chosen in order to initially import and existing Excel list. **Show chosen project**: Opens the settings to adapt URL, API key, project or query ID. diff --git a/docs/system-admin-guide/integrations/nextcloud/README.md b/docs/system-admin-guide/integrations/nextcloud/README.md index 92b6af7924cb..f724f589b08a 100644 --- a/docs/system-admin-guide/integrations/nextcloud/README.md +++ b/docs/system-admin-guide/integrations/nextcloud/README.md @@ -117,7 +117,7 @@ In the page that appears, you will see new OAuth values that are once again gene OpenProject will need these values to be able to connect to your Nextcloud instance. -Much like in the previous step, you will need to copy these two generated values (**Nextcloud OAuth client ID** and **Nextcloud OAtuh client secret**) and paste them into OpenProject. +Much like in the previous step, you will need to copy these two generated values (**Nextcloud OAuth client ID** and **Nextcloud OAuth client secret**) and paste them into OpenProject. ![Nextcloud also generates OAuth values that need to be copied to OpenProject](3_2_04-NC_Step_3.png) @@ -135,11 +135,11 @@ As a last step, you will be asked if you want to use automatically managed folde In case you want to use this functionality you will be requested to enter a password. Switch back to Nextcloud and click on **Yes, I have copied these values**. This will open the last step of the process in Nextcloud, where you can also select if you want to use automatically managed folders. Click on **Setup OpenProject user, group and folder** to configure the folders and see the password. Once configured, you can copy the password back to OpenProject. -![Nextcloutd Automatically managed folders setup](nc-project_folders-active_default.png) +![Nextcloud Automatically managed folders setup](nc-project_folders-active_default.png) -![Nextcloutd Automatically managed folders](nc-project_folders-application_password.png) +![Nextcloud Automatically managed folders](nc-project_folders-application_password.png) -> **Important**: You will need to install the [Group folder](https://apps.nextcloud.com/apps/groupfolders) app in Nextcloudin order to have OpenProject automatically managed your Nextcloud folders. Each storage can only have one group folder with the same name. +> **Important**: You will need to install the [Group folder](https://apps.nextcloud.com/apps/groupfolders) app in Nextcloud in order to have OpenProject automatically managed your Nextcloud folders. Each storage can only have one group folder with the same name. At this point, you can click on **Done, complete setup** in both applications and your instance configuration will be completed. @@ -151,7 +151,7 @@ The **OpenProject Integration** page on your Nextcloud tab should also indicate The integration is now complete, and your OpenProject and Nextcloud instances are ready to share information. -Additional settings on this page also allow you, as an administrator, to define default settings for options that are available to each user. These can of course be overriden by a user to their liking: +Additional settings on this page also allow you, as an administrator, to define default settings for options that are available to each user. These can of course be overridden by a user to their liking: ![Admin settings to configure default settings for all users](NC_admin-defaults-user-options.png) diff --git a/docs/system-admin-guide/integrations/one-drive/drive-id-guide/README.md b/docs/system-admin-guide/integrations/one-drive/drive-id-guide/README.md index 565e86fa5739..85070c2676e1 100644 --- a/docs/system-admin-guide/integrations/one-drive/drive-id-guide/README.md +++ b/docs/system-admin-guide/integrations/one-drive/drive-id-guide/README.md @@ -63,7 +63,7 @@ found [here](https://developer.microsoft.com/en-us/graph/graph-explorer). - Click on the `Sign in` button in the top right corner. - Log in with your Microsoft account. - - Make sure to select the correct organisation to log in, as the graph explorer will try to specifically log into the + - Make sure to select the correct organization to log in, as the graph explorer will try to specifically log into the associated tenant. - After a successful login, the resolved tenant will be displayed for a sanity check. - Fetch the hostname of the tenant (e.g. `example.sharepoint.com`) diff --git a/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md b/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md index 7532d50c39c4..5de0dfea780a 100644 --- a/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md +++ b/docs/system-admin-guide/manage-work-packages/work-package-settings/README.md @@ -3,7 +3,7 @@ sidebar_navigation: title: Settings priority: 999 description: Work package settings in OpenProject. -keywords: work package settings, workpackage configuration +keywords: work package settings, work package configuration --- # Work package settings diff --git a/docs/system-admin-guide/system-settings/languages/README.md b/docs/system-admin-guide/system-settings/languages/README.md index baca096d93d8..7a7122956651 100644 --- a/docs/system-admin-guide/system-settings/languages/README.md +++ b/docs/system-admin-guide/system-settings/languages/README.md @@ -7,7 +7,7 @@ keywords: languages --- # Languages -The Languages page lets you select languages you would like to activate from the list of those that are available. These langauges are then available to individual users via their user settings and as the default language for the instance. +The Languages page lets you select languages you would like to activate from the list of those that are available. These languages are then available to individual users via their user settings and as the default language for the instance. ![System Languages](openproject-system-languages.png) diff --git a/docs/system-admin-guide/users-permissions/placeholder-users/README.md b/docs/system-admin-guide/users-permissions/placeholder-users/README.md index 36bc4d6452ed..c9ea51f09c5e 100644 --- a/docs/system-admin-guide/users-permissions/placeholder-users/README.md +++ b/docs/system-admin-guide/users-permissions/placeholder-users/README.md @@ -66,7 +66,7 @@ You can change a placeholder user's name and add it to a project if you click on On the **General** tab you can change the placeholder user's name. In order to be assigned to work packages and participate in a project, a placeholder user has to be a member of a project and needs to be added with a certain role to this project. -On the **Projects** tab, select a project from the drop-down list, choose the [**role(s)**](../roles-permissions) for the placeholder user in this project and click the blue **Add** button. +On the **Projects** tab, select a project from the drop-down list, choose the [role(s)](../roles-permissions) for the placeholder user in this project and click the blue **Add** button. ![add-placeholder-user-to-project](openproject-system-guide-ph-user-new-project.png) diff --git a/docs/system-admin-guide/users-permissions/roles-permissions/README.md b/docs/system-admin-guide/users-permissions/roles-permissions/README.md index 57cc3f8051fa..e13132f091b3 100644 --- a/docs/system-admin-guide/users-permissions/roles-permissions/README.md +++ b/docs/system-admin-guide/users-permissions/roles-permissions/README.md @@ -28,7 +28,7 @@ A user can have one or more roles which grant permissions on different levels. | Scope of the role | Permission examples | Customization options | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| Application-level: Full control of all aspects of the application | - Assign administration privileges to other users
- Create and restore backups in the web interface
- Create and configure an OAuth app
- Configure custom fields
- Archive projects/restore projects
- Configure global roles
- Configure project roles | Cannot be changed | +| Application-level: Full control of all aspects of the application | - Assign administration privileges to other users
- Create and restore backups in the web interface
- Create and configure an OAuth app
- Configure custom fields
- Archive projects/restore projects
- Configure global roles
- Configure project roles | Cannot be changed | ### Global role @@ -36,21 +36,21 @@ A user can have one or more roles which grant permissions on different levels. | Scope of the role | Permission examples | Customization options | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| Application-level: Permissions scoped to specific administrative tasks (not restricted to specific projects) | - Manage users
- Create projects | Administrators can create new global roles and assign global permissions to those role | +| Application-level: Permissions scoped to specific administrative tasks (not restricted to specific projects) | - Manage users
- Create projects | Administrators can create new global roles and assign global permissions to those role | ### Project role -**A project role** is a set of **permissions** that can be assigned to any project member. Multiple roles can be assigned to the same project member.
+**A project role** is a set of **permissions** that can be assigned to any project member. Multiple roles can be assigned to the same project member.
**Note:** If a module is not enabled in a project it is not shown to a user despite having a permission for it. | Scope of the role | Permission examples | Customization options | | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| Project-level: Permissions scoped to individual projects (a user can have different roles for individual projects) | - Create work packages (in a project)
- Delete wiki pages (in a specific project) | Create different project roles with individual permission sets | +| Project-level: Permissions scoped to individual projects (a user can have different roles for individual projects) | - Create work packages (in a project)
- Delete wiki pages (in a specific project) | Create different project roles with individual permission sets | ### Non-member -**Non member** is the default role of users of your OpenProject instance who have not been added to a project. This only applies if the project has been set as **[public](../../../user-guide/projects/#set-a-project-to-public)** in the project settings.
+**Non member** is the default role of users of your OpenProject instance who have not been added to a project. This only applies if the project has been set as [public](../../../user-guide/projects/#set-a-project-to-public) in the project settings.
**Note:** The *Non-member* role cannot be deleted. @@ -62,7 +62,7 @@ A user can have one or more roles which grant permissions on different levels. ### Anonymous -OpenProject allows to share project information with **anonymous** users which are not logged in. This is helpful to communicate projects goals and activities with a public community.
+OpenProject allows to share project information with **anonymous** users which are not logged in. This is helpful to communicate projects goals and activities with a public community.
**Note**: This only applies if you disabled the need for authentication for your instance and if the project is set as **public**. The *Anonymous* role cannot be deleted. @@ -95,19 +95,19 @@ To create the new role, click on the grey *Create* button at the bottom of the p Administrators can create new global roles in *Administration* > *Users and permissions* > *Roles and permissions*. In the creation form check the box **Global role**. The form now shows the available global permissions which can be assigned to the new global role: -- **[Create projects](../../../getting-started/projects/#create-a-new-project)** +- [Create projects](../../../getting-started/projects/#create-a-new-project) > **Note:** To create a subproject for an existing project it requires also the project permission "Create subprojects". -- **[Create backups](../../backup/)** +- [Create backups](../../backup/) -- **[Create users](../../users-permissions/users/#create-users)** +- [Create users](../../users-permissions/users/#create-users) -- **[Edit users](../users/)** +- [Edit users](../users/) > **Note:** This allows the *Administrator* to delegate the administration of users to other people that should not have full control of the entire OpenProject installation (Administrator). These users can edit attributes of any users, except administrators. This means they are able to impersonate another user by changing email address to match theirs. This is a security risk and should be considered with caution. -- **[Create, edit, and delete placeholder users](../placeholder-users/)** +- [Create, edit, and delete placeholder users](../placeholder-users/) > **Note**: Users with this global permission cannot automatically see and edit all placeholder user in all projects. It is restricted to the placeholder users in projects in which the user has the respective permission to see or edit project member. diff --git a/docs/system-admin-guide/users-permissions/users/README.md b/docs/system-admin-guide/users-permissions/users/README.md index ff65a5d4cee2..a1bd818edbb0 100644 --- a/docs/system-admin-guide/users-permissions/users/README.md +++ b/docs/system-admin-guide/users-permissions/users/README.md @@ -142,19 +142,19 @@ To create a new password for a user (e.g. if he/she lost it) navigate to the **A In order to see and work in a project, a user has to be a member of a project and needs to be added with a certain role to this project. -On the **Projects** tab, select the new project from the drop-down list, choose the [**roles**](../roles-permissions) for this project and click the blue **Add** button. +On the **Projects** tab, select the new project from the drop-down list, choose the [roles](../roles-permissions) for this project and click the blue **Add** button. -![Sys-admin-add-project](Sys-admin-add-project1.gif) +![Sysadmin add project](Sys-admin-add-project1.gif) ### Add users to groups On the **Groups** tab you can see the groups the user belongs to. If a group is shown, click the group name link. -![open-projet-user-groups](system_guide_user_groups.png) +![User groups](system_guide_user_groups.png) If no groups are shown (i.e. the user does not belong to any group, yet), click the **Manage groups** link to [edit groups](../groups). -![manage-groups](system_guide_manage_groups.png) +![Manage Groups](system_guide_manage_groups.png) **Please note**: The **Groups** tab is only shown if at least one user group exists in OpenProject. @@ -164,7 +164,7 @@ In order to add a global role to a user, at least one global role needs to be [c On the **Global roles** tab, select or de-select the global role(s) for this user. Click the **Add** button. -![Openproject-user-add-global-roles](openproject_system_guide_add_global_roles.png) +![Add global roles](openproject_system_guide_add_global_roles.png) ### Notification settings diff --git a/docs/use-cases/portfolio-management/README.md b/docs/use-cases/portfolio-management/README.md index 1feb2e59f51a..fb76ea586f5a 100644 --- a/docs/use-cases/portfolio-management/README.md +++ b/docs/use-cases/portfolio-management/README.md @@ -24,7 +24,7 @@ Step 2: You will get a list of all the projects that exist in your organization. You can then sort the project list by clicking on a column heading, for example by project status. -![Openproject sort project list by status](sort_by_status.png) +![OpenProject sort project list by status](sort_by_status.png) You can add a visual component to the overview by clicking on the **Open as Gantt view** button. @@ -38,7 +38,7 @@ Step 3: You can also configure this view using the button with the three dots at You will then be led to the **System settings** of the global Administration. If you scroll down the page, you can select which columns are to be displayed in the project list in the section **Settings for project overview list** (you will need to scroll down the page). Please save your changes via the blue **Save** button, at the bottom of the page. -![OpenProject settings for project overview list](openproject_settings_for_project_overview_list.png) +![Settings for project overview list](openproject_settings_for_project_overview_list.png) If you click on **Edit query** you can adjust the project overview when using the Gantt chart option. @@ -47,13 +47,13 @@ If you click on **Edit query** you can adjust the project overview when using th ### Exporting reports For creating custom project reports you can use the export function in the work packages view. -![Openproject reports export](openproject_export.png) +![Reports export](openproject_export.png) You can export the work packages in one of the following formats. -![Openproject export options](export_options.png) +![Export options](export_options.png) To export or print a Gantt chart use the print function (**CTRL+P**) and then save it as PDF. Only information displayed in the main screen area is included. None of the designs or side or top menus are in it. Please see here [how to print a Gantt chart in OpenProject](../../user-guide/gantt-chart/#how-to-print-a-gantt-chart). diff --git a/docs/use-cases/resource-management/README.md b/docs/use-cases/resource-management/README.md index c2bd57f5584f..07d5a12144c0 100644 --- a/docs/use-cases/resource-management/README.md +++ b/docs/use-cases/resource-management/README.md @@ -30,15 +30,15 @@ Step 4: You can add any filters necessary and sort or group the work packages by ![OpenProject sort work packages by assignee](openproject_sort_by_assignee.png) -Step 5: Save your adjusted view by clicking on the **Save** icon on the left (you can name this view before saving or re-name it later). ![Save adjusted openrpoject workpage view](openproject_save_wp_adjusted_view.png) +Step 5: Save your adjusted view by clicking on the **Save** icon on the left (you can name this view before saving or re-name it later). ![Save adjusted openproject work package view](openproject_save_wp_adjusted_view.png) This view will be saved and shown under your private work package filters (you can make it public and share with other team members). -![OpenProjec work package private filter](work_package_private_filter.png) +![OpenProject work package private filter](work_package_private_filter.png) ## Adding sums to the work packages view -You can also use the sum function. Select **[⋮]** -> ***Configure view*** -> ***Display settings*** -> and check the ***Display Sums*** box: +You can also use the sum function. Select **\[⋮\]** -> ***Configure view*** -> ***Display settings*** -> and check the ***Display Sums*** box: ![OpenProject work package configure view](openproject_configure_view.png) diff --git a/docs/use-cases/safe-framework/README.md b/docs/use-cases/safe-framework/README.md index 39750435c7d1..2478003c4bb5 100644 --- a/docs/use-cases/safe-framework/README.md +++ b/docs/use-cases/safe-framework/README.md @@ -9,7 +9,7 @@ keywords: safe, scaled agile, release train, program increment, ART backlog, roa # Implementing Scaled Agile Framework (SAFe) in OpenProject -OpenProject is a powerful project management tool that can adapt to a number of different frameworks and methodologies. Larger organisations who choose to implement the **Scaled Agile Framework (SAFe)** methodology can leverage the wide range of features and customisability that OpenProject offers to define, plan organise to deliver value to their end customers. +OpenProject is a powerful project management tool that can adapt to a number of different frameworks and methodologies. Larger organizations who choose to implement the **Scaled Agile Framework (SAFe)** methodology can leverage the wide range of features and customizability that OpenProject offers to define, plan organize to deliver value to their end customers. This guide contains the following sections: @@ -19,8 +19,8 @@ This guide contains the following sections: | [Setting up Agile Release Trains](#setting-up-agile-release-trains) | Configuring projects and using project templates to create and administer Agile Release Trains | | [Using versions to set Program Increments](#using-versions-to-set-program-increments) | Using versions in OpenProject to define Program Increments (PIs) and Iterations | | [Working with epics, features and stories](#working-with-epics-features-and-stories) | Configuring and using work packages for Epics, Capabilities, Enablers, Features and User Stories | -| [Organising work using table view, Gantt view](#organising-work-using-table-view-gantt-view) | Using table and Gantt views to visualise, sort, filter and group work packages and save custom views at all levels (agile team, Agile Release Train or Solution Train) | -| [Backlogs, Kanban and Team planner](#backlogs-kanban-and-team-planner) | Organising work and facilitating planning using Backlogs, Kanban boards and Team planner | +| [Organizing work using table view, Gantt view](#organizing-work-using-table-view-gantt-view) | Using table and Gantt views to visualize, sort, filter and group work packages and save custom views at all levels (agile team, Agile Release Train or Solution Train) | +| [Backlogs, Kanban and Team planner](#backlogs-kanban-and-team-planner) | Organizing work and facilitating planning using Backlogs, Kanban boards and Team planner | @@ -65,7 +65,7 @@ A project consists of a number of different elements: Different [members groups](../../system-admin-guide/users-permissions/groups/) can also be created at an instance level and entire groups added to projects as members. -To learn how to use the Work packages module to configure epics, features and user stories, see: [Organising work using table view, Gantt view](#organising-work-using-table-view-gantt-view) +To learn how to use the Work packages module to configure epics, features and user stories, see: [Organizing work using table view, Gantt view](#organizing-work-using-table-view-gantt-view) > **Demo:** View an [overview of an ART set up as a project](https://safe.openproject.com/projects/art-2-design/work_packages?query_id=58). @@ -73,17 +73,17 @@ To learn how to use the Work packages module to configure epics, features and us You can also use [project templates](../../user-guide/projects/project-templates/) and to make it easier to create news ARTs with the same structure, set of enabled modules, project structure or work package templates. Once a new ART is created using a template, it can then be modified in any way. -**Agile teams** *within* an Agile Release Train (ART) can either be organised as sub-projects of an ART or simply as saved custom views in a Team planner or Assignee-based Kanban board. To learn more, read [Backlogs, Kanban and Team planner](#backlogs-kanban-and-team-planner) below. +**Agile teams** *within* an Agile Release Train (ART) can either be organized as sub-projects of an ART or simply as saved custom views in a Team planner or Assignee-based Kanban board. To learn more, read [Backlogs, Kanban and Team planner](#backlogs-kanban-and-team-planner) below. ### Solution Trains -Project portfolios allow you to view, organise, sort and filter through all projects and their hierarchies. Since individual projects represent Agile Release trains, project porfolios can be used to access information at a **Solution train**-level. +Project portfolios allow you to view, organize, sort and filter through all projects and their hierarchies. Since individual projects represent Agile Release trains, project portfolios can be used to access information at a **Solution train**-level. ![All Features and User Stories across all teams](all_features_across_all_teams.png) > In a near future release, OpenProject will have dedicated project portfolio features. [View mockups.](https://www.figma.com/file/YCCMdJWkrtP9YSmf49Od0i/Project-lists?type=design&node-id=470%3A13037&mode=design&t=g1EZesuy0Jj0VZFD-1) > -> For the moment, **[global modules](../../user-guide/home/global-modules/)** give you an overview of content from all projects, including the ability to view and filter though a **project list**, and view, sort and filter **work packages at a global level**. +> For the moment, [global modules](../../user-guide/home/global-modules/) give you an overview of content from all projects, including the ability to view and filter though a **project list**, and view, sort and filter **work packages at a global level**. > **Demo:** [Solution train (project list)](https://safe.openproject.com/projects) > @@ -177,7 +177,7 @@ Progress can be viewed at a team label, at an ART-level or at a solution train l > **Demo:** [Progress overview at a PI level](https://safe.openproject.com/projects/safe-demo/work_packages?query_id=78) -## Organising work using table view, Gantt view +## Organizing work using table view, Gantt view OpenProject is a powerful tool that allows you to view work packages in a variety of different ways. @@ -187,17 +187,17 @@ The work package table view lets you view and edit work packages of all types (E ![Work package table view](work_package_table_view.png) -These tables are highly customisable and can be [configured](../../user-guide/work-packages/work-package-table-configuration/) to show precisely the information you need. Tables can also be **sorted** (for example by id, name, start dates, project, assignee, priority), **grouped** and **filtered** to create highly precise views. They can also show nested parent-children relations in **hierarchy view**. +These tables are highly customizable and can be [configured](../../user-guide/work-packages/work-package-table-configuration/) to show precisely the information you need. Tables can also be **sorted** (for example by id, name, start dates, project, assignee, priority), **grouped** and **filtered** to create highly precise views. They can also show nested parent-children relations in **hierarchy view**. > **Demo**: [A table view of all epics, features and stories in an ART](https://safe.openproject.com/projects/art-0-test-release-train/work_packages?query_id=29) Configured tables can be saved as private (for you only) or public views (for all project members) to easily access them later and share them with other team members. -Additionally, the [**Baseline** **comparison**](../../user-guide/work-packages/baseline-comparison/) feature allow lets you visualise changes to a table (in relation to the filter criteria) over a period of time, affording you yet another way to monitor progress and changes within your ART or agile team. +Additionally, the [Baseline comparison](../../user-guide/work-packages/baseline-comparison/) feature allow lets you visualize changes to a table (in relation to the filter criteria) over a period of time, affording you yet another way to monitor progress and changes within your ART or agile team. ### Gantt view -The **[Gantt chart](../../user-guide/gantt-chart/)** module allows you to quickly visualise planning at any level (Solution, ART or agile team) in a calendar view that also displays [work package relations](../../user-guide/work-packages/work-package-relations-hierarchies/). Like table view, it can be filtered to create custom views that can be saved. +The [Gantt chart](../../user-guide/gantt-chart/) module allows you to quickly visualize planning at any level (Solution, ART or agile team) in a calendar view that also displays [work package relations](../../user-guide/work-packages/work-package-relations-hierarchies/). Like table view, it can be filtered to create custom views that can be saved. ![Gantt view of one sprint in one ART](Gantt_view.png) @@ -210,7 +210,7 @@ The **Backlog** and **Kanban** are key tools in a scaled agile environment, not ### Backlog -The [**Backlog module**](../../user-guide/backlogs-scrum/work-with-backlogs/) displays all versions available to a particular project or ART in a two-column format. For each version (representing a Product increment, Iteration or a Feature or Story backlog), the module displays: +The [Backlog module](../../user-guide/backlogs-scrum/work-with-backlogs/) displays all versions available to a particular project or ART in a two-column format. For each version (representing a Product increment, Iteration or a Feature or Story backlog), the module displays: - Version name - Start and end dates @@ -218,17 +218,17 @@ The [**Backlog module**](../../user-guide/backlogs-scrum/work-with-backlogs/) di It also displays the *id*, *name*, *status* and *story points* for each work package contained in a version. -![Backlock view of one ART](Backlogs.png) +![Backlog view of one ART](Backlogs.png) -We recommend organising all relevant sprints on the left column and the backlog on the right column. Any epic, feature, story, enabler or capability can easier be dragged and dropped between versions or to and from the backlog. +We recommend organizing all relevant sprints on the left column and the backlog on the right column. Any epic, feature, story, enabler or capability can easier be dragged and dropped between versions or to and from the backlog. > **Demo**: [Backlog of an ART showing planned Sprints and a feature backlog](https://safe.openproject.com/projects/art-0-test-release-train/backlogs) ### Kanban -[**Kanban boards**](../../user-guide/agile-boards/) allow you to clearly visualise work items in a number of different ways. In OpenProject, dynamic boards can easily be created for a number of different fields. +[Kanban boards](../../user-guide/agile-boards/) allow you to clearly visualize work items in a number of different ways. In OpenProject, dynamic boards can easily be created for a number of different fields. -![Kanban board of one ART organised by status](Kanban_status.png) +![Kanban board of one ART organized by status](Kanban_status.png) For each ART, we recommend creating these dynamic Kanban boards: @@ -242,7 +242,7 @@ OpenProject boards are powerful and can be filtered for more control over what i ### Team planner -The [**Team planner module**](../../user-guide/team-planner/) allows you to visualise work packages assigned to particular team members in a week or two-week calendar view. It is a powerful tool to monitor work at a day-to-day level. +The [Team planner module](../../user-guide/team-planner/) allows you to visualize work packages assigned to particular team members in a week or two-week calendar view. It is a powerful tool to monitor work at a day-to-day level. ![Team planner view configured for one agile team](teamPlanner.png) @@ -254,6 +254,6 @@ At a Solution train level, it also allows you to view the work of members across ## Here for you -OpenProject is a powerful and highly-configurable tool that can be customised to fit the needs of your particular scaled agile implementation. Beyond the basics covered in this guide, OpenProject has many additional features and modules (such as [budgets](https://www.openproject.org/docs/user-guide/budgets/), [time and cost tracking](https://www.openproject.org/docs/user-guide/time-and-costs/), [wiki](https://www.openproject.org/docs/user-guide/wiki/), [meetings](https://www.openproject.org/docs/user-guide/meetings/) and [file storage integrations](https://www.openproject.org/docs/development/file-storage-integration/)) that further enable your agile teams to work efficiently and deliver value. +OpenProject is a powerful and highly-configurable tool that can be customized to fit the needs of your particular scaled agile implementation. Beyond the basics covered in this guide, OpenProject has many additional features and modules (such as [budgets](https://www.openproject.org/docs/user-guide/budgets/), [time and cost tracking](https://www.openproject.org/docs/user-guide/time-and-costs/), [wiki](https://www.openproject.org/docs/user-guide/wiki/), [meetings](https://www.openproject.org/docs/user-guide/meetings/) and [file storage integrations](https://www.openproject.org/docs/development/file-storage-integration/)) that further enable your agile teams to work efficiently and deliver value. If you have questions about how to [use](../../getting-started/) and [configure](../../system-admin-guide/) OpenProject to work for you, please [get in touch](https://www.openproject.org/contact/) or [start a free trial](https://start.openproject.com/) to see for yourself. diff --git a/docs/user-guide/agile-boards/README.md b/docs/user-guide/agile-boards/README.md index 40f248200aa3..b7c4d85110e1 100644 --- a/docs/user-guide/agile-boards/README.md +++ b/docs/user-guide/agile-boards/README.md @@ -68,7 +68,7 @@ Each list represents a status. That means that e.g. all work packages with the s When creating a new Status board a list with all work packages in the default status (usually this is the status "New") will be added automatically, while additional lists need to be added manually. Please note: You can't move work packages from or to every status. Please find out more about the work-flow logics restricting this here: [Allowed transitions between status](../../system-admin-guide/manage-work-packages/work-package-workflows/) -![creat status board](create-status-board.png) +![create status board](create-status-board.png) ### Assignee board Every list represents one assignee. You can choose regular users, [placeholder users](../../system-admin-guide/users-permissions/placeholder-users) and groups as assignees. When you move a card from one list to another, the assigned user is changed to the user that is selected for the list you moved the card to. @@ -158,7 +158,7 @@ A **double click on a card** will open the work package's **fullscreen view.** T ![back-to-boards-view-button](back-to-boards-view-button.png) -Clicking on **Open details view** (the blue "**i**") will open the work package's **[split screen view](../work-packages/work-package-views/#split-screen-view)**. You can close it by clicking on the **"x"** in its upper right corner. +Clicking on **Open details view** (the blue "**i**") will open the work package's [split screen view](../work-packages/work-package-views/#split-screen-view). You can close it by clicking on the **"x"** in its upper right corner. ![Close split screen button](close-split-screen.png) diff --git a/docs/user-guide/calendar/README.md b/docs/user-guide/calendar/README.md index 4a325a889dc0..3489d73ae41a 100644 --- a/docs/user-guide/calendar/README.md +++ b/docs/user-guide/calendar/README.md @@ -30,7 +30,7 @@ Once enabled, clicking on the **Calendars** entry on the left sidebar takes you - Click on an existing (saved) calendar to view it. -- You can change the visibility settings of any calendar by clicking on **[⋮] (more)** -> **Visibility settings.** +- You can change the visibility settings of any calendar by clicking on **\[⋮\] (more)** -> **Visibility settings.** - Any calendar that has the **Favored** option checked will be displayed under the **Favorite** heading in the sidebar to the left. @@ -77,7 +77,7 @@ You can make basic date modifications simply by manipulating the work package st ![Use drag handles to change start and finish dates](Calendar-dragHandle-modifyDate.png) -> **Note**: The calendar will highlight non-working days with a darker background colour. By default, a work package cannot be dragged or resized such that it begins or ends on these days unless the “Working days only” switch is turned off for that work package. To learn how to do this, refer to the documentation on [Working days and duration](../work-packages/set-change-dates/#working-days-and-duration). +> **Note**: The calendar will highlight non-working days with a darker background color. By default, a work package cannot be dragged or resized such that it begins or ends on these days unless the “Working days only” switch is turned off for that work package. To learn how to do this, refer to the documentation on [Working days and duration](../work-packages/set-change-dates/#working-days-and-duration). > > Work packages can also expand and retract in width depending on how many non-working days are spanned. For example, a 3-day task starting on Thursday and ending on Monday will spread across 5 calendar days. Dragging that same work package so that it starts on a Tuesday and ends on a Thursday means that it will spread across 3 calendar days. In both cases, the duration remains 3 days. @@ -115,7 +115,7 @@ This makes it possible for you to keep an eye on your project schedule from any To subscribe to a calendar: -1. Click on the **[⋮]** **(more) button** on the toolbar and select **Subscribe to calendar**. +1. Click on the **\[⋮\] (more) button** on the toolbar and select **Subscribe to calendar**. 2. In the modal that appears, give this calendar a unique name (you can only use it once). We recommend naming it based on where you will be subscribing to this calendar from ("personal phone" or "work tablet" for example). 3. Click on **Copy URL**. This creates the a [calendar token](../../getting-started/my-account/#access-tokens) and copies the calendar URL to your clipboard. 4. Paste this URL in your desired calendar client to subscribe. diff --git a/docs/user-guide/calendar/calendar-faq/README.md b/docs/user-guide/calendar/calendar-faq/README.md index eecce90bd220..810623f8f43f 100644 --- a/docs/user-guide/calendar/calendar-faq/README.md +++ b/docs/user-guide/calendar/calendar-faq/README.md @@ -28,4 +28,4 @@ Since the [12.3 release](https://www.openproject.org/docs/release-notes/12/12-3- ## Is there a limit for the number of work packages displayed in the calendar? -The limit is 100 and can't be changed at the moment. Find the respective feature request [here](https://community.openproject.com/wp/35062). +The limit is 100 and can't be changed at the moment. Find the respective feature request [here](https://community.openproject.org/wp/35062). diff --git a/docs/user-guide/file-management/nextcloud-integration/README.md b/docs/user-guide/file-management/nextcloud-integration/README.md index 41423c16ed86..29c0770f89da 100644 --- a/docs/user-guide/file-management/nextcloud-integration/README.md +++ b/docs/user-guide/file-management/nextcloud-integration/README.md @@ -8,27 +8,37 @@ keywords: integration, apps, Nextcloud, user # Nextcloud integration -You can use [Nextcloud](https://nextcloud.com/) as an integrated file storage in OpenProject. +You can use [Nextcloud](https://nextcloud.com) as an integrated file storage in OpenProject. This integration makes it possible for you to: - Link files and folders stored in Nextcloud with work packages in OpenProject - View, open and download files and folders linked to a work package via the **Files** tab - View all work packages linked to a file +- Create work packages directly in Nextcloud + +Additionally you can: + - View OpenProject notifications via the Nextcloud dashboard +- Pick and preview links to work packages in Nextcloud +- Search for work packages using Nextcloud's search bar + It is also possible to automatically create dedicated [project folders](../../projects/project-settings/file-storages/#project-folders), which makes documentation structure clearer and makes navigation more intuitive. -> **Important note**: To be able to use Nextcloud as a file storage in your project, the administrator of your instance should first have completed the [Nextcloud integration setup](../../../system-admin-guide/integrations/nextcloud). Then a project administrator can activate Nextcloud in the [**File storages**](../../projects/project-settings/file-storages/) for a project. +> **Important note**: To be able to use Nextcloud as a file storage in your project, the administrator of your instance should first have completed the [Nextcloud integration setup](../../../system-admin-guide/integrations/nextcloud). Then a project administrator can activate Nextcloud in the [File storages](../../projects/project-settings/file-storages/) for a project. -| Topic | Description | -| ------------------------------------------------------------ | :----------------------------------------------------------- | +| Topic | Description | +|-----------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------| | [Connect your OpenProject and Nextcloud accounts](#connect-your-openproject-and-nextcloud-accounts) | How to connect your Nextcloud and OpenProject accounts to be able to use this integration | -| [Link files and folders to work packages](#link-files-and-folders-to-work-packages) | How to link files and folders to work packages and view and download linked files | -| [Unlink files and folders](#remove-links) | How to remove the link between a work package and a Nextcloud file or folder | -| [Permissions and access control](#permissions-and-access-control) | Who has access to linked files and who doesn't | -| [Possible errors and troubleshooting](#possible-errors-and-troubleshooting) | Common errors and how to troubleshoot them | +| [Link files and folders to work packages](#link-files-and-folders-to-work-packages) | How to link files and folders to work packages and view and download linked files | +| [Unlink files and folders](#remove-links) | How to remove the link between a work package and a Nextcloud file or folder | +| [Nextcloud dashboard](#nextcloud-dashboard) | How to keep an eye on your OpenProject notifications | +| [Navigation and search in Nextcloud](#navigation-and-search-in-nextcloud) | How to search OpenProject work packages via the universal search bar | +| [Work package link preview in Nextcloud](#work-package-link-preview-in-nextcloud) | How to use the smart picker and see previews of work packages in text fields | +| [Permissions and access control](#permissions-and-access-control) | Who has access to linked files and who doesn't | +| [Possible errors and troubleshooting](#possible-errors-and-troubleshooting) | Common errors and how to troubleshoot them | ## Connect your OpenProject and Nextcloud accounts @@ -123,8 +133,6 @@ Respectively in order to download a file, hover over the **Download** icon in t If you click the **Folder** icon, the Nextcloud folder containing this file will open in a separate tab. - - ### In Nextcloud This video will give you an overview how to link files and folder from Nextcloud to OpenProject (English only). @@ -149,6 +157,24 @@ This linked file will then appear underneath the search bar. Doing so will also ![Show linked work packages in Nextcloud](NC_1_00-FileWPRelation.png) +#### Link multiple files to a work packages + +You can also **link multiple files** to a single OpenProject work package. To do that, select the files you want to link, click the *Actions* menu and select the respective option. +![Select multiple files in Nextcloud to link to a single work package in OpenProject](nc_select_multiple_files.png) + +A dialogue will open, allowing you to search for and then select an OpenProject work package to add all of the files to. The newly added files will become visible under the **Files** tab in the work package. + +![Select an OpenProject work package in Nextcloud](nc_select_wp_to_link.png) + +#### Create a new work package + +You can create a new OpenProject work package directly from Nextcloud file storage. To do this, select the file you want to link, choose the **OpenProject** tab and click on **+ Create and link a work package**. +![Create a new OpenProject work package from Nextcloud](nc_create_new_wp.png) + +A pop-up dialogue will open allowing you to specify the project, work package name and further details. Once you click **Create**, the new work package will be created in the specified project and the file will be linked to it. + +![Specify details of a new OpenProject work package created in Nextcloud](nc-new-work-package-created.png) + #### Remove links Once a work package is linked to a file, you can always unlink it by clicking on the **unlink** icon. @@ -229,7 +255,7 @@ If you see the words "No Nextcloud connection" in the Files tab in OpenProject, In rare occasions, it is possible for the integration to not be able to fetch all the details of all linked files. A simple page refresh should solve the issue. Should the error persist, please contact administrator of your OpenProject and Nextcloud instances. -![OpenProject file fatching error](1_0_03-Fetching_error.png) +![OpenProject file fetching error](1_0_03-Fetching_error.png) ### Project notifications are not displayed in Nextcloud diff --git a/docs/user-guide/file-management/nextcloud-integration/nc-new-work-package-created.png b/docs/user-guide/file-management/nextcloud-integration/nc-new-work-package-created.png new file mode 100644 index 000000000000..062391e426ef Binary files /dev/null and b/docs/user-guide/file-management/nextcloud-integration/nc-new-work-package-created.png differ diff --git a/docs/user-guide/file-management/nextcloud-integration/nc_create_new_wp.png b/docs/user-guide/file-management/nextcloud-integration/nc_create_new_wp.png new file mode 100644 index 000000000000..a189c134f9a2 Binary files /dev/null and b/docs/user-guide/file-management/nextcloud-integration/nc_create_new_wp.png differ diff --git a/docs/user-guide/file-management/nextcloud-integration/nc_select_multiple_files.png b/docs/user-guide/file-management/nextcloud-integration/nc_select_multiple_files.png new file mode 100644 index 000000000000..f17bedc2f6d2 Binary files /dev/null and b/docs/user-guide/file-management/nextcloud-integration/nc_select_multiple_files.png differ diff --git a/docs/user-guide/file-management/nextcloud-integration/nc_select_wp_to_link.png b/docs/user-guide/file-management/nextcloud-integration/nc_select_wp_to_link.png new file mode 100644 index 000000000000..d388e701ee9c Binary files /dev/null and b/docs/user-guide/file-management/nextcloud-integration/nc_select_wp_to_link.png differ diff --git a/docs/user-guide/file-management/one-drive-integration/README.md b/docs/user-guide/file-management/one-drive-integration/README.md index e1d0e7b98e44..cbc9132ca19b 100644 --- a/docs/user-guide/file-management/one-drive-integration/README.md +++ b/docs/user-guide/file-management/one-drive-integration/README.md @@ -17,7 +17,7 @@ This integration makes it possible for you to: - Link files and folders stored in OneDrive/SharePoint with work packages in OpenProject - View, open and download files and folders linked to a work package via the **Files** tab -> **Important note**: To be able to use OneDrive/SharePoint as a file storage in your project, the administrator of your instance should first have completed the [OneDrive/SharePoint integration setup](../../../system-admin-guide/integrations/one-drive). Then a project administrator can activate the integrated storage in the [**File storages**](../../projects/project-settings/file-storages/) for a project. +> **Important note**: To be able to use OneDrive/SharePoint as a file storage in your project, the administrator of your instance should first have completed the [OneDrive/SharePoint integration setup](../../../system-admin-guide/integrations/one-drive). Then a project administrator can activate the integrated storage in the [File storages](../../projects/project-settings/file-storages/) for a project. | Topic | Description | | ------------------------------------------------------------ | :----------------------------------------------------------- | diff --git a/docs/user-guide/gantt-chart/README.md b/docs/user-guide/gantt-chart/README.md index ef1c03b84500..83f8e753c291 100644 --- a/docs/user-guide/gantt-chart/README.md +++ b/docs/user-guide/gantt-chart/README.md @@ -3,7 +3,7 @@ sidebar_navigation: title: Gantt charts priority: 865 description: Create project timelines with Gantt charts in OpenProject -keywords: gantt chart, timeline, project plan, gantchart +keywords: gantt chart, timeline, project plan --- # Gantt charts @@ -41,7 +41,7 @@ Once you have selected the Gantt chart view, you can use the quick context menu. > **Note**: if you use the [work packages view](../work-packages/edit-work-package#update-a-work-package-in-a-work-package-table-view), the options in the quick context menu will differ slightly from the ones in the Gantt chart view. -![Quick context menu in OpenProjedt Gantt chart work packages view](gantt-context-menu.png) +![Quick context menu in OpenProject Gantt chart work packages view](gantt-context-menu.png) You can use any of the following options. @@ -72,7 +72,7 @@ To **change the order of an item** in the Gantt chart, click the **drag and drop To change the duration of a work package in the Gantt chart view, hover over the work package in the Gantt chart and use the little arrows on its ends to adjust the start date or finish date. This will shorten or prolong its duration. To move a work package on the time line just click on it and drag and drop it to the desired point of time. This will change its start and finish date. -> **Note**: The Gantt chart will highlight non-working days with a darker background colour when you are zoomed in to a level that shows individual days. By default, a work package cannot be dragged or resized such that it begins or ends on these days unless the "Working days only" switch is turned off for that work package. To learn how to do this, refer to the documentation on [Working days and duration](../work-packages/set-change-dates/#working-days-and-duration). +> **Note**: The Gantt chart will highlight non-working days with a darker background color when you are zoomed in to a level that shows individual days. By default, a work package cannot be dragged or resized such that it begins or ends on these days unless the "Working days only" switch is turned off for that work package. To learn how to do this, refer to the documentation on [Working days and duration](../work-packages/set-change-dates/#working-days-and-duration). > > Work packages can also expand and retract in width depending on how many non-working days are spanned (for example, a 3-day task starting on Thursday and ending on Monday will spread across 5 calendar days; dragging that same work package so that it starts on a Tuesday and ends on a Thursday means that it will spread across 3 calendar days. In both cases, the duration remains 3 days. @@ -80,14 +80,16 @@ To change the duration of a work package in the Gantt chart view, hover over the You can track dependencies of work packages (e.g. phases, milestones, tasks) in the Gantt chart. This way, you can get an easy overview of what needs to be done in which order, e.g. what tasks need to be completed to achieve a milestone. -To add a dependency, right-click on an element in the Gantt chart. +To add a dependency, right-click on an element in the Gantt chart, which will open a quick context menu. In the menu, choose **Add predecessor** or **Add follower**. Select the item to which you want to create a dependency. The precede and follow relation is marked with a small blue line in the Gantt chart. +The quickest way to remove a relation is to select **Show relations** from the quick context menu and removing the relation in the work package details view. -![dependencies-gantt-chart](dependencies-gantt-chart-1566556144225.gif) + +![dependencies-gantt-chart](gantt-chart.gif) When work packages have a precedes/follows relationship: diff --git a/docs/user-guide/gantt-chart/gantt-chart-faq/README.md b/docs/user-guide/gantt-chart/gantt-chart-faq/README.md index 61df1143e3d8..7383589fc5ba 100644 --- a/docs/user-guide/gantt-chart/gantt-chart-faq/README.md +++ b/docs/user-guide/gantt-chart/gantt-chart-faq/README.md @@ -14,12 +14,12 @@ Make sure that you remove the relations of the milestone to other work packages. ## When I am working in the Gantt chart, every change seems to take quite long. -We understand that the loading time when working in Gantt Chart is too long for you. The reason for this is that every single action is saved. So everything is fine with your installation. We have already taken up the point with us and already have first ideas for a technical solution. The respective feature request can be found [here](https://community.openproject.com/wp/34176). +We understand that the loading time when working in Gantt Chart is too long for you. The reason for this is that every single action is saved. So everything is fine with your installation. We have already taken up the point with us and already have first ideas for a technical solution. The respective feature request can be found [here](https://community.openproject.org/wp/34176). ## Can I export the Gantt? At the moment that's not possible, but you can use the print feature of your browser to print it as PDF (we optimized this for Google Chrome). Please find out more [here](../#how-to-print-a-gantt-chart). -The respective feature request can be found [here](https://community.openproject.com/wp/15444). +The respective feature request can be found [here](https://community.openproject.org/wp/15444). ## How can I build in a "buffer" (e.g. two weeks gap) between two consecutive work packages, so that even if the first one is postponed the second one always starts e.g. two weeks later? diff --git a/docs/user-guide/gantt-chart/gantt-chart.gif b/docs/user-guide/gantt-chart/gantt-chart.gif new file mode 100644 index 000000000000..2d194cbb4867 Binary files /dev/null and b/docs/user-guide/gantt-chart/gantt-chart.gif differ diff --git a/docs/user-guide/gantt-chart/scheduling/README.md b/docs/user-guide/gantt-chart/scheduling/README.md index 8ecbaf4c1d35..c4492753205d 100644 --- a/docs/user-guide/gantt-chart/scheduling/README.md +++ b/docs/user-guide/gantt-chart/scheduling/README.md @@ -11,7 +11,7 @@ keywords: Gantt chart, automatic scheduling, manual scheduling, start date, fini # Automatic and manual scheduling modes
-To schedule work packages in the Gantt chart there is an **automatic scheduling mode (default)** and a **manual scheduling mode** (new in [release 11.0](../../../release-notes/11/11-0-0)). To add dependencies between work packages you can set them as predecessor or follower in the Gantt chart. The automatic and manual scheduling modes influence the work packages' behaviour when changing dates of other related work packages. +To schedule work packages in the Gantt chart there is an **automatic scheduling mode (default)** and a **manual scheduling mode** (new in [release 11.0](../../../release-notes/11/11-0-0)). To add dependencies between work packages you can set them as predecessor or follower in the Gantt chart. The automatic and manual scheduling modes influence the work packages' behavior when changing dates of other related work packages.
As the scheduling mode only affects individual work packages you can combine manual scheduling mode (top-down planning) and automatic scheduling mode (bottom-up planning) within the same project. diff --git a/docs/user-guide/home/global-modules/README.md b/docs/user-guide/home/global-modules/README.md index 5bca15ca20e2..f433e00e0246 100644 --- a/docs/user-guide/home/global-modules/README.md +++ b/docs/user-guide/home/global-modules/README.md @@ -42,7 +42,7 @@ On the left you will have the following options: **Archived projects** will list all archived projects of which were a member or have the right to see. ->**Note:** You can also access the **Projects** global module by opening the [**Select a project** dropdown menu](https://www.openproject.org/docs/user-guide/projects/#projects-list ) and by clicking the **Projects list** button, or by clicking on the **Modules** button in the header next to the search bar and the selecting **Projects** in the menu that appears. +>**Note:** You can also access the **Projects** global module by opening the [Select a project dropdown menu](https://www.openproject.org/docs/user-guide/projects/#projects-list ) and by clicking the **Projects list** button, or by clicking on the **Modules** button in the header next to the search bar and the selecting **Projects** in the menu that appears. ## Activity @@ -60,13 +60,13 @@ You can adjust the view by using the filters on the left menu and clicking the * ## Work packages -The **Work packages** global module will show a work packages table from the projects of which you are a member or have the right to view, including public projects. You can select your **Favorite** and **Default** work package filters in the left side menu. Please note that if a view is marked as favorite it will be shown in the **Favourite** section, whether it is also saved as public or private or not. +The **Work packages** global module will show a work packages table from the projects of which you are a member or have the right to view, including public projects. You can select your **Favorite** and **Default** work package filters in the left side menu. Please note that if a view is marked as favorite it will be shown in the **Favorite** section, whether it is also saved as public or private or not. ![The Work packages global module](openproject_global_modules_work_packages.png) If you double-click to open one of the work packages in full screen view, the work package will highlight which project it belongs to at the top of the page. -![The project containing the current work package is highligted when opening it from outside the project](openproject_global_modules_work_packages_full_view.png) +![The project containing the current work package is highlighted when opening it from outside the project](openproject_global_modules_work_packages_full_view.png) ## Calendars diff --git a/docs/user-guide/keyboard-shortcuts-access-keys/README.md b/docs/user-guide/keyboard-shortcuts-access-keys/README.md index 0a825819322b..01ef67eec928 100644 --- a/docs/user-guide/keyboard-shortcuts-access-keys/README.md +++ b/docs/user-guide/keyboard-shortcuts-access-keys/README.md @@ -87,6 +87,6 @@ To quickly save changes in a rich text editor (for example a work package descri | Shortcut (Windows / Linux) | Shortcut (Mac) | Action | | -------------------------- | -------------- | ------------------------------------------------------------ | -| CTRL + ENTER | CMD + ENTER | **Save changes.**
For inline-editable fields, save the field and close it.
For pages with a full WYSIWYG (meetings, wiki pages), submit the form. | +| CTRL + ENTER | CMD + ENTER | **Save changes.**
For inline-editable fields, save the field and close it.
For pages with a full WYSIWYG (meetings, wiki pages), submit the form. | -Please also refer to documentation on [working in Rich text editor in OpenProject](../wysiwyg). \ No newline at end of file +Please also refer to documentation on [working in Rich text editor in OpenProject](../wysiwyg). diff --git a/docs/user-guide/meetings/classic-meetings/README.md b/docs/user-guide/meetings/classic-meetings/README.md index f7bd824409b3..f215533a9d0a 100644 --- a/docs/user-guide/meetings/classic-meetings/README.md +++ b/docs/user-guide/meetings/classic-meetings/README.md @@ -89,7 +89,7 @@ After creating a meeting, you can set up a **meeting agenda**. ## Create or edit meeting minutes -The **meeting minutes** are automatically created when closing the agenda in the details view of the meeting and selecting the [**Close**](#create-or-edit-the-meeting-agenda) option. +The **meeting minutes** are automatically created when closing the agenda in the details view of the meeting and selecting the [Close](#create-or-edit-the-meeting-agenda) option. The agenda is closed and copied to the meeting minutes page as a basis. You can start editing the minutes now. The same way as in the [wiki](../../wiki) pages, you can format the text, link minutes to work packages, documents and include [work package lists or other macros](../../wysiwyg/#embedding-of-work-package-attributes-and-project-attributes). diff --git a/docs/user-guide/meetings/dynamic-meetings/README.md b/docs/user-guide/meetings/dynamic-meetings/README.md index ea322a0e656d..81d98583f201 100644 --- a/docs/user-guide/meetings/dynamic-meetings/README.md +++ b/docs/user-guide/meetings/dynamic-meetings/README.md @@ -99,7 +99,7 @@ The durations of each agenda item are automatically summed up. If that sum excee There are two ways to add a work package to a meeting agenda. - **From the Meetings module**: using the **+ Add** button [add a work package agenda item](#create-or-edit-the-meeting-agenda) or -- **From a particular work package**: using the **+ Add to meeting** button on the [**Meetings** tab](../../work-packages/add-work-packages-to-meetings) +- **From a particular work package**: using the **+ Add to meeting** button on the [Meetings tab](../../work-packages/add-work-packages-to-meetings) You can add a work package to both upcoming or past meetings as long as the work package is marked **open**. diff --git a/docs/user-guide/notifications/README.md b/docs/user-guide/notifications/README.md index 51bf0ff59b17..64b295ec1114 100644 --- a/docs/user-guide/notifications/README.md +++ b/docs/user-guide/notifications/README.md @@ -56,7 +56,7 @@ You can filter or group notifications by using the two sets of predefined filter > **Info:** The **Mark all as read** button clears all _visible_ notification rows. If you have a very large number unread notifications, the oldest ones might not be visible on the page. In this case, you might have to click the button multiple times to clear your inbox completely. -(Area 4) If you would like to view your current notification preferences or modify them, click on the [**Notification settings**](./notification-settings) button. You can also access your settings via your Avatar in the top right corner > *My account* > *Notification settings*. +(Area 4) If you would like to view your current notification preferences or modify them, click on the [Notification settings](./notification-settings) button. You can also access your settings via your Avatar in the top right corner > *My account* > *Notification settings*. (Area 5) The split screen view lets you not only view work package activity as previously described, but also lets you access all other work package tabs, including overview, files, relations and watchers. diff --git a/docs/user-guide/notifications/notification-settings/README.md b/docs/user-guide/notifications/notification-settings/README.md index 1d6bbffca37c..1c8ae5964499 100644 --- a/docs/user-guide/notifications/notification-settings/README.md +++ b/docs/user-guide/notifications/notification-settings/README.md @@ -91,4 +91,4 @@ Once you do so, you will see a table with a column for that project and and the ## Email reminders -You can supplement these in-app notifications with email reminders, either at specific times of the day or immediately when someone mentions you. For more information, please read our guide on **[Email reminders](../../../getting-started/my-account#email-reminders)**. +You can supplement these in-app notifications with email reminders, either at specific times of the day or immediately when someone mentions you. For more information, please read our guide on [Email reminders](../../../getting-started/my-account#email-reminders). diff --git a/docs/user-guide/projects/README.md b/docs/user-guide/projects/README.md index 0c47c96851c7..aa50ef73ce8e 100644 --- a/docs/user-guide/projects/README.md +++ b/docs/user-guide/projects/README.md @@ -188,7 +188,7 @@ To change the order of the displayed [custom fields](../../system-admin-guide/cu To **display the work packages** of all your projects **in a Gantt chart** click on the **Open as Gantt view** icon on the upper right. This is a shortcut to quickly get to the report described in the [chapter below](#project-overarching-reports). The Gantt chart view can be configured in the [System settings](../../system-admin-guide/system-settings/project-system-settings) in the Administration. -![display all wprkpackages](display-all-workpackages.png) +![display all work packages](display-all-workpackages.png) ### Overall activity diff --git a/docs/user-guide/projects/project-settings/file-storages/README.md b/docs/user-guide/projects/project-settings/file-storages/README.md index d5e32a55ce4b..2222e7461b8a 100644 --- a/docs/user-guide/projects/project-settings/file-storages/README.md +++ b/docs/user-guide/projects/project-settings/file-storages/README.md @@ -9,12 +9,12 @@ keywords: file storages, project folder, storages > **Info**: Before a storage service can be added to a project, an administrator must first set up [Nextcloud integration](../../../../system-admin-guide/integrations/nextcloud/) or [OneDrive/SharePoint integration](../../../../system-admin-guide/integrations/one-drive/) with OpenProject. -| Topic | Description | -| ------------------------------------------------------------ | :------------------------------------------------ | -| [Activate File Storages module](#activate-file-storages-module) | Activate File Storages module in a project | -| [Add Nextcloud storage](#add-a-nextcloud-storage-to-a-project) | Add your Nextcloud storage to a project | -| [Nextcloud and project folders](#project-folders) | How to manage Nextcloud project folders | -| [Edit and delete Nextcloud storage](#edit-an-existing-nextcloud-storage) | Edit and delete an existing Nextcloud storage | +| Topic | Description | +|------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------| +| [Activate File Storages module](#activate-file-storages-module) | Activate File Storages module in a project | +| [Add Nextcloud storage](#add-a-nextcloud-storage-to-a-project) | Add your Nextcloud storage to a project | +| [Nextcloud and project folders](#project-folders) | How to manage Nextcloud project folders | +| [Edit and delete Nextcloud storage](#edit-an-existing-nextcloud-storage) | Edit and delete an existing Nextcloud storage | | [Add OneDrive/SharePoint storage to a project](#add-a-onedrivesharepoint-storage-to-a-project-enterprise-add-on) | Add your OneDrive/SharePoint storage to a project | ## Activate File Storages module @@ -45,7 +45,7 @@ If you have selected the OneDrive/SharePoint option in the previous step of stor Here you can choose which kind of OneDrive/SharePoint project folder will be the default folder for file uploads for this project when using SharePoint integration. -![Select OndeDrive/SharePoint folder type in OpenProject](onedrive-storage-add-folders.png) +![Select OneDrive/SharePoint folder type in OpenProject](onedrive-storage-add-folders.png) 1. **No specific folder**: By default, each user will start at the drive root when they upload a file or select files for linking. 2. **Existing folder with manually managed permissions**: Once you selected this option, you can designate an existing folder as the project folder for this project using the button **Select folder**. The permissions are however not automatically managed, **instead the folder and its content inherits the permissions as configured in the SharePoint site or drive**. The administrator needs to manually ensure relevant users have access. The selected folder can be used by multiple projects. diff --git a/docs/user-guide/projects/projects-faq/README.md b/docs/user-guide/projects/projects-faq/README.md index cf8b5d939aeb..7476dd7431f2 100644 --- a/docs/user-guide/projects/projects-faq/README.md +++ b/docs/user-guide/projects/projects-faq/README.md @@ -34,7 +34,7 @@ In OpenProject, you can work agilely according to Scrum ([backlogs](../../backlo Versions serve a double function: On the one hand, you can use them to plan your product releases, and on the other hand, you can use them to map the product backlog(s) and sprints required for Scrum. As soon as you have created at least one version in a project, the module "[Roadmap](../../roadmap)" is displayed on the left side in your project, which you can use to get an overview of the versions (intended primarily for releases). The [Backlogs module](../../backlogs-scrum) uses versions to map the product backlog or sprints. By using the backlog, however, some special rules occur: For example, tasks must be assigned to the same version as the associated (parent) work packages. -If you do not work according to Scrum we would recommend to deactivate the Backlogs module and use the [Boards module](../../agile-boards) instead. If you have activated the boards module you can create a version board. You can find an example [here](https://community.openproject.com/projects/openproject/boards/2077). +If you do not work according to Scrum we would recommend to deactivate the Backlogs module and use the [Boards module](../../agile-boards) instead. If you have activated the boards module you can create a version board. You can find an example [here](https://community.openproject.org/projects/openproject/boards/2077). ## Can I assign work packages in subprojects to versions of the parent project? diff --git a/docs/user-guide/repository/README.md b/docs/user-guide/repository/README.md index a7005fae9262..fa91fea23ba7 100644 --- a/docs/user-guide/repository/README.md +++ b/docs/user-guide/repository/README.md @@ -43,7 +43,7 @@ For Git, we recommend the [Pro Git guide](https://git-scm.com/book/en/v2). ## Reference work packages -In the commit message you can reference a workpackage ID (e.g. #1234). In the repository settings (Administration -> System settings -> Repository) you can define keywords that change the status of the referenced work package (e.g. fixes #1234 or closes #1234). +In the commit message you can reference a work package ID (e.g. #1234). In the repository settings (Administration -> System settings -> Repository) you can define keywords that change the status of the referenced work package (e.g. fixes #1234 or closes #1234). In any textile field you can reference revisions by putting an "r" in front of the revision number (e.g. r123). @@ -56,4 +56,4 @@ Please see our system admin guide [how to configure repositories in OpenProject] ## Repository integration -See our Installation and operations guide how to [integrate repositories in Openproject](../../installation-and-operations/configuration/repositories/#repository-integration-in-openproject). +See our Installation and operations guide how to [integrate repositories in OpenProject](../../installation-and-operations/configuration/repositories/#repository-integration-in-openproject). diff --git a/docs/user-guide/roadmap/README.md b/docs/user-guide/roadmap/README.md index 2afe6fe1c332..736eb6fc1edb 100644 --- a/docs/user-guide/roadmap/README.md +++ b/docs/user-guide/roadmap/README.md @@ -28,6 +28,6 @@ Clicking the title of a version allows you to evaluate further information of th The chart displays all work packages listed by a certain attribute. Select the drop-down list to change the attribute: -![roadmap-workpackage-details](1567423371954.png) +![roadmap work package details](1567423371954.png) > **Note**: A roadmap is only displayed in the project menu when at least one [version](../projects/) exists in a project. diff --git a/docs/user-guide/team-planner/README.md b/docs/user-guide/team-planner/README.md index 90fb7380641a..4cbb91a58903 100644 --- a/docs/user-guide/team-planner/README.md +++ b/docs/user-guide/team-planner/README.md @@ -11,7 +11,7 @@ The team planner module helps you get a complete overview of what each member of ![Example team planner showing a two-week view of work packages assigned to team members](TeamPlanner-12.4-twoWeeks.png) -Essentially, the team planner is a calendar view with an assignee column on the left side. Each work package assigned to a team member will appear as a card that spans a certain duration (start date to finish date). These cards can be moved, stretched, shortened or removed to organise the planning of your team. +Essentially, the team planner is a calendar view with an assignee column on the left side. Each work package assigned to a team member will appear as a card that spans a certain duration (start date to finish date). These cards can be moved, stretched, shortened or removed to organize the planning of your team. > **Note**: Team planner is an Enterprise add-on and can only be used with [Enterprise cloud](../../enterprise-guide/enterprise-cloud-guide/) or [Enterprise on-premises](../../enterprise-guide/enterprise-on-premises-guide/). An upgrade from the free community edition is easy and helps support OpenProject. @@ -20,7 +20,7 @@ To use this module, you must have the work packages module enabled. | Topic | Content | |------------------------------------------------------------------------------|:---------------------------------------------------------------------| | [Module overview](#module-overview) | See a list of all existing team planners or create a new one | -| [Team planner basics](#team-planner-basics) | Understanding the basics of how a team planner is organised | +| [Team planner basics](#team-planner-basics) | Understanding the basics of how a team planner is organized | | [Adding team members and work packages](#add-team-members-and-work-packages) | Add team members and schedule, reschedule and reassign work packages | | [Work package detail view](#work-package-details-view) | View or edit a specific work package | | [Removing a work package](#remove-a-work-package) | Removing (unscheduling) visible work packages | @@ -54,7 +54,7 @@ A team planner has a number of features numbered 1 to 8 in the above screenshot: 4. By default, the team planner will only show assigned work packages belonging to the current project. However, it is possible to also add assigned work packages belonging to other projects. You can make these work packages from other projects visible by using **Include projects** feature and selecting additional projects to be included in this view. 5. Use the **Filter** feature (same as in the [work packages](../work-packages/work-package-table-configuration/#filter-work-packages) module) to display only work packages that meet certain filter criteria. You could, for example, filter such that only work packages of certain types, certain status or certain custom field values are visible. 6. The **Fullscreen** button lets you view the team planner in fullscreen mode. -7. The **[⋮]** (more) button gives you additional options, such as saving, renaming and saving a copy (saving as), or deleting the team planner. This is also where you can modify the visibility options. +7. The **\[⋮\]** (more) button gives you additional options, such as saving, renaming and saving a copy (saving as), or deleting the team planner. This is also where you can modify the visibility options. 8. By default the team planner only shows the [work week](../../system-admin-guide/calendars-and-dates/#working-days) (week excluding the weekend and non-working days). Use the drop down to toggle between work week, 1-week and 2-week views. With the arrows you can navigate the weeks back and forth. The Today button brings you to the current week. > **Note**: The team planner will highlight non-working days in the calendar with a darker background color. By default, a work package cannot be dragged or resized such that it begins or ends on these days unless the "Working days only" switch is turned off for that work package. To learn how to do this, refer to the documentation on [Working days and duration](../work-packages/set-change-dates/#working-days-and-duration). diff --git a/docs/user-guide/time-and-costs/time-tracking/README.md b/docs/user-guide/time-and-costs/time-tracking/README.md index 2211d3f6093d..042869a99869 100644 --- a/docs/user-guide/time-and-costs/time-tracking/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/README.md @@ -74,7 +74,7 @@ If you navigate away from the work package in which you have a timer running, yo > > **Enable time logging** option must be [activated under system settings](../../../system-admin-guide/system-settings/repositories/) in order to log time via a commit message. -To log time via commit message **Repository** module must be activated and an SVN or Git repository needs to be configured. Once it is configured you can enter the following syntax into a commit message of your client (for example GitHub desktop client or a command line client) to log time: *refs #work package number @amount of hours*. For example refs #123 @2h will log 2 hours of spent timefor the work package number 123.![openproject_user_guide_log_time_commit_message](openproject_user_guide_log_time_commit_message.png) +To log time via commit message **Repository** module must be activated and an SVN or Git repository needs to be configured. Once it is configured you can enter the following syntax into a commit message of your client (for example GitHub desktop client or a command line client) to log time: *refs #work package number @amount of hours*. For example refs #123 @2h will log 2 hours of spent time for the work package number 123.![openproject_user_guide_log_time_commit_message](openproject_user_guide_log_time_commit_message.png) ## Log time via My Page diff --git a/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md b/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md index 44af5547d42e..9bf0a2d39599 100644 --- a/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/time-tracker-integration/README.md @@ -39,4 +39,4 @@ Time Tracker app is available in the Apple [AppStore](https://apps.apple.com/us/ 9. Once you have completed all the fields, press the Create button. 10. After creating the application, copy the Client ID and Base URL values for future reference and keep them secure. Copy Base URL from Auth URL field, it may look like this: `https://example.com` -![openproject_timetracker_configured](openproject_timetracker_configured.png) +![openproject time tracker configured](openproject_timetracker_configured.png) diff --git a/docs/user-guide/time-and-costs/time-tracking/timecamp-integration/README.md b/docs/user-guide/time-and-costs/time-tracking/timecamp-integration/README.md index 6ed499cc01d7..538576ab5a22 100644 --- a/docs/user-guide/time-and-costs/time-tracking/timecamp-integration/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/timecamp-integration/README.md @@ -40,7 +40,7 @@ This integration can be added for Google Chrome as [TimeCamp extension](https:// ![TimeCamp account with a new project which shows 2 tasks](project-with-2-tasks.png) - The time tracked in Openproject will later on appear in TimeCamp on the task that you select. + The time tracked in OpenProject will later on appear in TimeCamp on the task that you select. 3. [Log in to OpenProject](https://www.openproject.org/signin/), open a project and go to a work package. diff --git a/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md b/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md index ceb658b177e3..5aa3efdd4c6e 100644 --- a/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md +++ b/docs/user-guide/time-and-costs/time-tracking/toggl-integration/README.md @@ -22,7 +22,7 @@ This integration can be added for example for Google Chrome as [Toggl Track exte On the cogwheel of the Toggl Track extension you reach the **Settings**, from there chose **Integrations**. -For OpenProject domains that are located on openproject.com, which is the case for most of the Enterprise cloud instances, you are able to chose **Openproject - openproject.com** from the list of default integrations. +For OpenProject domains that are located on openproject.com, which is the case for most of the Enterprise cloud instances, you are able to chose **OpenProject - openproject.com** from the list of default integrations. For any other OpenProject Domains you need to exactly add the **Fully Qualified Domain Name** (including subdomain) to the **Custom URLs for Integration** and chose **OpenProject**. For example: community.openproject.org (wildcards are not supported by Toggl Track at the moment of writing) @@ -34,7 +34,7 @@ For any other OpenProject Domains you need to exactly add the **Fully Qualified If this add-in is installed and the **Integration URL** is configured, a **Start/Stop Timer button** is displayed on the work package details view, which can be used to record times from OpenProject into Toggl: -![toggl-button-openproject-workpackage-detail-view](toggl-button-openproject-workpackage-detail-view.png) +![toggl button openproject work package detail view](toggl-button-openproject-workpackage-detail-view.png) diff --git a/docs/user-guide/wiki/README.md b/docs/user-guide/wiki/README.md index 93c17125febd..119a64a1792b 100644 --- a/docs/user-guide/wiki/README.md +++ b/docs/user-guide/wiki/README.md @@ -35,7 +35,7 @@ Simply type in your text in the input field, highlight a text and select the for ![openproject_user_guide_wiki](openproject_user_guide_wiki.png) -### Linebreaks +### Line breaks Instead of creating a new paragraph with Enter, you can also press SHIFT+Enter to create a line break without creating a new paragraph. diff --git a/docs/user-guide/wiki/more-wiki-functions/README.md b/docs/user-guide/wiki/more-wiki-functions/README.md index 4bb50a1be38b..93b701d436cf 100644 --- a/docs/user-guide/wiki/more-wiki-functions/README.md +++ b/docs/user-guide/wiki/more-wiki-functions/README.md @@ -57,7 +57,7 @@ Please be aware that a deleted wiki page cannot easily be restored within the sy ## Show wiki page history -In some cases, you might want to know the latest change to a wiki page. You can get information on the type of change as well as on the author using the **History** option. To display it, choose **History** in the [**More** functions](#more-wiki-functions) drop-down menu on top of a wiki page. +In some cases, you might want to know the latest change to a wiki page. You can get information on the type of change as well as on the author using the **History** option. To display it, choose **History** in the [More functions](#more-wiki-functions) drop-down menu on top of a wiki page. ![wiki-history](image-20210429102421851.png) @@ -76,4 +76,4 @@ You can choose between **Atom** or **Markdown** export of your wiki page: ![wiki-export-options](1568277748319.png) -Alternatively, you can use your browser's print feature to **print a PDF** from a wiki page. \ No newline at end of file +Alternatively, you can use your browser's print feature to **print a PDF** from a wiki page. diff --git a/docs/user-guide/wiki/wiki-faq/README.md b/docs/user-guide/wiki/wiki-faq/README.md index e0e5b08f2039..6da137fd3325 100644 --- a/docs/user-guide/wiki/wiki-faq/README.md +++ b/docs/user-guide/wiki/wiki-faq/README.md @@ -10,7 +10,7 @@ keywords: wiki faq ### 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 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. +Yes, you can do both, you have to export the wiki or the wiki page as a Markdown (or Atom), than copy the Markdown 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. Unfortunately 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? diff --git a/docs/user-guide/work-packages/set-change-dates/README.md b/docs/user-guide/work-packages/set-change-dates/README.md index d65bd73328d0..e9dd1a114451 100644 --- a/docs/user-guide/work-packages/set-change-dates/README.md +++ b/docs/user-guide/work-packages/set-change-dates/README.md @@ -8,12 +8,12 @@ keywords: date picker start finish dates duration change modify update relations # Set and change dates and duration of work packages -| Feature | Documentation for | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| [Set start and finish dates](#set-start-and-finish-dates) | How to set start and finish dates, and how to change them | -| [Working days and duration](#working-days-and-duration) | How to set duration, and how it affects start and finish dates | -| [Scheduling mode](#scheduling-mode) | Enabling manual scheduling and what it does | -| [Information and warning ban ners](#information-and-warning-banners) | What the different warning and information banners mean | +| Feature | Documentation for | +|---------------------------------------------------------------------|----------------------------------------------------------------| +| [Set start and finish dates](#set-start-and-finish-dates) | How to set start and finish dates, and how to change them | +| [Working days and duration](#working-days-and-duration) | How to set duration, and how it affects start and finish dates | +| [Scheduling mode](#scheduling-mode) | Enabling manual scheduling and what it does | +| [Information and warning banners](#information-and-warning-banners) | What the different warning and information banners mean | ## Set start and finish dates @@ -46,7 +46,7 @@ You can also click on the **Today** link below the start and finish date fields 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 package 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 package 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 color. To confirm the selected dates, click on the **Save** button. The green message on top of the work package indicates a successful update. @@ -79,7 +79,7 @@ Work packages with *only* a start date or only a finish date are automatically c Certain work package types (such as Milestones) can only span one day and thus have only one date field: -![Milestones have datpickers with a single date field](milestone-datepicker.png) +![Milestones have datepickers with a single date field](milestone-datepicker.png) @@ -95,7 +95,7 @@ Starting with OpenProject 12.3, it is possible to manually input a duration for ![The "Working days only" switch on the datepicker](working-days-only-switch.png) -The **Working days only** switch is on by default, and the date picker skips over the weekend (or the days defined as non-working days) when scheduling work packages and deriving duration. In this mode, non-working days are marked with a darker colour and are not clickable. Work packages cannot start or finish on non-working days, and these days do not count towards the calculation of duration. +The **Working days only** switch is on by default, and the date picker skips over the weekend (or the days defined as non-working days) when scheduling work packages and deriving duration. In this mode, non-working days are marked with a darker color and are not clickable. Work packages cannot start or finish on non-working days, and these days do not count towards the calculation of duration. Switching **Working days only** off will turn the previously disabled non-working days into regular working days, and make them available for scheduling. The duration will now take these days into account. diff --git a/docs/user-guide/work-packages/share-work-packages/README.md b/docs/user-guide/work-packages/share-work-packages/README.md index 6564994312c0..94f93cc02e94 100644 --- a/docs/user-guide/work-packages/share-work-packages/README.md +++ b/docs/user-guide/work-packages/share-work-packages/README.md @@ -82,7 +82,7 @@ You (with the correct permissions) can always change or remove sharing options. Users with the edit role can update most of the attributes of a shared work package (e.g. 'Subject' and 'Description') and this includes the status. A change in status is governed by the workflows configured for the role the user has. An administrator will therefore have to setup the necessary workflows once. A message at the bottom of the screen will notify administrators of this: -![Message on unconfigured work package editor workflows](openproject_user_guide_sharing_configuration_message.png) +![Message on not configured work package editor workflows](openproject_user_guide_sharing_configuration_message.png) To do so, an administrator can follow the link in the message to get to the form for copying workflows. In that form, select the source type (e.g. 'Task') and source role (e.g. 'Member') to copy the workflow from. Afterwards, select the target (e.g. 'Task') and lastly the role which will be 'Work package editor' to copy the workflow for: diff --git a/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md b/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md index cdb4568f18ca..68960b9f4c3e 100644 --- a/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md +++ b/docs/user-guide/work-packages/work-package-relations-hierarchies/README.md @@ -94,7 +94,7 @@ Open a work package and select the tab *Relations*. Click on *+ Create new child Insert the name of the new work package and save the newly created work package by pressing *Enter*. You can make changes to the work package by clicking on the work package ID. -![create workpackage children](image-20200129144540902.png) +![create work package children](image-20200129144540902.png) For more information on the work package creation take a look at the guideline on [creating a work package](../create-work-package). diff --git a/docs/user-guide/work-packages/work-package-views/README.md b/docs/user-guide/work-packages/work-package-views/README.md index a635dd362767..9639dc4a4a04 100644 --- a/docs/user-guide/work-packages/work-package-views/README.md +++ b/docs/user-guide/work-packages/work-package-views/README.md @@ -2,7 +2,7 @@ sidebar_navigation: title: Work packages views priority: 999 -description: Different ways of organising and viewing work packages, including table, split screen, board and Gantt. +description: Different ways of organizing and viewing work packages, including table, split screen, board and Gantt. keywords: work packages views --- diff --git a/docs/user-guide/work-packages/work-packages-faq/README.md b/docs/user-guide/work-packages/work-packages-faq/README.md index f5038413b41a..88dea8a727cb 100644 --- a/docs/user-guide/work-packages/work-packages-faq/README.md +++ b/docs/user-guide/work-packages/work-packages-faq/README.md @@ -93,9 +93,9 @@ As an inherited change is always commented ("Updated automatically by...") they The "Position" attribute is provided by the Backlogs plugin and shows the position of a work package in the backlog. If you create e.g. a Feature and assign it to a sprint, the position of the feature in the sprint is shown in the "Position" attribute on the work package table. -### Can I restore a deleted workpackage? +### Can I restore a deleted work package? -There is no easy way to restore a deleted workpackage. Generally, you have the option to create and restore your own backups. +There is no easy way to restore a deleted work package. Generally, you have the option to create and restore your own backups. ## Filters and queries @@ -112,7 +112,7 @@ Tick the box next to "Public" when saving the work package view. We suggest tick This is not possible at the moment, but you can configure and save another view. -A [feature request](../../../development/submit-feature-idea/) to change this can be found [here](https://community.openproject.com/wp/31423). +A [feature request](../../../development/submit-feature-idea/) to change this can be found [here](https://community.openproject.org/wp/31423). ### I sorted my work package table and when I get back to my work package table it doesn't look the same way again. Why? @@ -126,7 +126,7 @@ There are two reasons for this: 1. Potentially, a lot of values are displayed in ### I have a parent work package with multiple children. In the work package table I don't see all of the children below the parent. Why? How can I change this? Please increase the number of displayed work packages per page [in the administration](../../../system-admin-guide/system-settings/general-settings/#general-system-settings). Then the probability of this phenomenon happening is lower. -This is a known behavior of OpenProject, but not trivial to solve. There's already a feature request for this [here](https://community.openproject.com/wp/34925). +This is a known behavior of OpenProject, but not trivial to solve. There's already a feature request for this [here](https://community.openproject.org/wp/34925). diff --git a/docs/user-guide/wysiwyg/README.md b/docs/user-guide/wysiwyg/README.md index b42f7ae7b982..61ce3afd6345 100644 --- a/docs/user-guide/wysiwyg/README.md +++ b/docs/user-guide/wysiwyg/README.md @@ -72,7 +72,7 @@ In supported resources of OpenProject where attachments are allowed, you can add The image will be automatically uploaded and stored as an attachment. You can adjust the image size in the editor using your mouse. -![resize-imagesshort](resize-imagesshort.gif) +![Resize Image](resize-imagesshort.gif) @@ -84,7 +84,7 @@ On top of that, OpenProject adds the following shortcut: | Shortcut (Windows / Linux) | Shortcut (Mac) | Action | | -------------------------- | -------------- | ------------------------------------------------------------ | -| CTRL + ENTER | CMD + ENTER | **Save changes.**
For inline-editable fields, save the field and close it.
For pages with a full WYSIWYG (meetings, wiki pages), submit the form. | +| CTRL + ENTER | CMD + ENTER | **Save changes.**
For inline-editable fields, save the field and close it.
For pages with a full WYSIWYG (meetings, wiki pages), submit the form. | ## Macros diff --git a/frontend/src/app/core/datetime/timezone.service.ts b/frontend/src/app/core/datetime/timezone.service.ts index 4b3fcb41a123..1106bce3b145 100644 --- a/frontend/src/app/core/datetime/timezone.service.ts +++ b/frontend/src/app/core/datetime/timezone.service.ts @@ -30,9 +30,7 @@ import { Injectable } from '@angular/core'; import { ConfigurationService } from 'core-app/core/config/configuration.service'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import * as moment from 'moment-timezone'; -import { - Moment, -} from 'moment'; +import { Moment } from 'moment'; @Injectable({ providedIn: 'root' }) export class TimezoneService { @@ -84,9 +82,9 @@ export class TimezoneService { return this.parseDate(date, 'YYYY-MM-DD'); } - public formattedDate(date:string):string { + public formattedDate(date:string, format = this.getDateFormat()):string { const d = this.parseDate(date); - return d.format(this.getDateFormat()); + return d.format(format); } /** diff --git a/frontend/src/app/core/path-helper/apiv3-paths.ts b/frontend/src/app/core/path-helper/apiv3-paths.ts index 14db6aa4c454..8a3bf707569f 100644 --- a/frontend/src/app/core/path-helper/apiv3-paths.ts +++ b/frontend/src/app/core/path-helper/apiv3-paths.ts @@ -1,4 +1,6 @@ import { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder'; +import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; +import { HalResource } from 'core-app/features/hal/resources/hal-resource'; export class ApiV3Paths { readonly apiV3Base:string; @@ -35,12 +37,18 @@ export class ApiV3Paths { * https://github.com/opf/commonmark-ckeditor-build/ * */ - public principals(workPackageId:string|number, term:string|null) { + public principals(workPackage:WorkPackageResource, term:string|null) { const filters:ApiV3FilterBuilder = new ApiV3FilterBuilder(); // Only real and activated users: filters.add('status', '!', ['3']); - // that are members of that project: - filters.add('mentionable_on_work_package', '=', [workPackageId.toString()]); + + if (!workPackage.id || workPackage.id === 'new') { + // that are members of that project: + filters.add('member', '=', [(workPackage.project as HalResource).id as string]); + } else { + // that are mentionable on the work package + filters.add('mentionable_on_work_package', '=', [workPackage.id.toString()]); + } // That are users: filters.add('type', '=', ['User', 'Group']); diff --git a/frontend/src/app/core/schemas/schema-cache.service.ts b/frontend/src/app/core/schemas/schema-cache.service.ts index eabbb5471fc9..e9c54acd5346 100644 --- a/frontend/src/app/core/schemas/schema-cache.service.ts +++ b/frontend/src/app/core/schemas/schema-cache.service.ts @@ -28,16 +28,10 @@ import { State } from '@openproject/reactivestates'; import { Injectable } from '@angular/core'; import { StateCacheService } from 'core-app/core/apiv3/cache/state-cache.service'; -import { - firstValueFrom, - Observable, -} from 'rxjs'; +import { firstValueFrom, Observable } from 'rxjs'; import { take } from 'rxjs/operators'; import { States } from 'core-app/core/states/states.service'; -import { - ISchemaProxy, - SchemaProxy, -} from 'core-app/features/hal/schemas/schema-proxy'; +import { ISchemaProxy, SchemaProxy } from 'core-app/features/hal/schemas/schema-proxy'; import { HalResourceService } from 'core-app/features/hal/services/hal-resource.service'; import { WorkPackageSchemaProxy } from 'core-app/features/hal/schemas/work-package-schema-proxy'; import { HalResource } from 'core-app/features/hal/resources/hal-resource'; @@ -71,6 +65,10 @@ export class SchemaCacheService extends StateCacheService { of(resource:HalResource):ISchemaProxy { const schema = this.state(resource).value as SchemaResource; + return this.proxied(resource, schema); + } + + proxied(resource:HalResource, schema:SchemaResource):ISchemaProxy { if (resource._type === 'WorkPackage') { return WorkPackageSchemaProxy.create(schema, resource); } diff --git a/frontend/src/app/features/backlogs/backlogs-page/styles/taskboard.sass b/frontend/src/app/features/backlogs/backlogs-page/styles/taskboard.sass index 969f504104e5..08d9968e79a1 100644 --- a/frontend/src/app/features/backlogs/backlogs-page/styles/taskboard.sass +++ b/frontend/src/app/features/backlogs/backlogs-page/styles/taskboard.sass @@ -121,8 +121,7 @@ background-color: #F8F6A5 border: none display: block - float: left - min-height: 84px + min-height: 100px margin: 5px padding: 5px position: relative @@ -142,9 +141,8 @@ border: none cursor: move display: block - float: left font-size: 10px - height: 80px + height: 85px padding: 5px margin: 5px 0px position: relative @@ -167,7 +165,7 @@ bottom: -5px color: #FFFFFF font-size: 9px - height: 13px + height: 18px padding-left: 5px padding-right: 5px position: absolute diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts index 6fff5bda4bc6..b45633cec452 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts @@ -1,5 +1,9 @@ import { Component, ElementRef, Injector, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core'; -import { Observable, Subscription } from 'rxjs'; +import { + EMPTY, + Observable, + Subscription, +} from 'rxjs'; import { QueryResource } from 'core-app/features/hal/resources/query-resource'; import { BoardListComponent } from 'core-app/features/boards/board/board-list/board-list.component'; import { StateService } from '@uirouter/core'; @@ -19,7 +23,12 @@ import { BoardPartitionedPageComponent } from 'core-app/features/boards/board/bo import { AddListModalComponent } from 'core-app/features/boards/board/add-list-modal/add-list-modal.component'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { BoardListCrossSelectionService } from 'core-app/features/boards/board/board-list/board-list-cross-selection.service'; -import { filter, tap } from 'rxjs/operators'; +import { + catchError, + filter, + finalize, + tap, +} from 'rxjs/operators'; import { BoardActionsRegistryService } from 'core-app/features/boards/board/board-actions/board-actions-registry.service'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service'; @@ -159,7 +168,21 @@ export class BoardListContainerComponent extends UntilDestroyedMixin implements } saveBoard(board:Board):void { - this.boardComponent.boardSaver.request(board); + this.Boards + .save(board) + .pipe( + catchError((error) => { + this.halNotification.handleRawError(error); + return EMPTY; + }), + finalize(() => { + this.boardComponent.toolbarDisabled = false; + this.boardComponent.cdRef.detectChanges(); + }), + ).subscribe(() => { + this.toastService.addSuccess(this.text.updateSuccessful); + }, + ); } private setupQueryUpdatedMonitoring(board:Board) { diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts index 5f942019a800..cc50a353861e 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts @@ -21,7 +21,12 @@ import { ZenModeButtonComponent } from 'core-app/features/work-packages/componen import { BoardsMenuButtonComponent } from 'core-app/features/boards/board/toolbar-menu/boards-menu-button.component'; import { RequestSwitchmap } from 'core-app/shared/helpers/rxjs/request-switchmap'; import { componentDestroyed } from '@w11k/ngx-componentdestroyed'; -import { finalize, take } from 'rxjs/operators'; +import { + catchError, + finalize, + take, + tap, +} from 'rxjs/operators'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; import { QueryResource } from 'core-app/features/hal/resources/query-resource'; @@ -30,6 +35,11 @@ import { BoardFiltersService } from 'core-app/features/boards/board/board-filter import { CardViewHandlerRegistry } from 'core-app/features/work-packages/components/wp-card-view/event-handler/card-view-handler-registry'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { OpTitleService } from 'core-app/core/html/op-title.service'; +import { + EMPTY, + Observable, + of, +} from 'rxjs'; export function boardCardViewHandlerFactory(injector:Injector) { return new CardViewHandlerRegistry(injector); @@ -111,18 +121,6 @@ export class BoardPartitionedPageComponent extends UntilDestroyedMixin { }, }; - // We remember when we want to update the board - boardSaver = new RequestSwitchmap( - (board:Board) => { - this.toolbarDisabled = true; - return this.Boards - .save(board) - .pipe( - finalize(() => (this.toolbarDisabled = false)), - ); - }, - ); - toolbarButtonComponents:ToolbarButtonComponentDefinition[] = [ { component: WorkPackageFilterButtonComponent, @@ -142,7 +140,8 @@ export class BoardPartitionedPageComponent extends UntilDestroyedMixin { }, ]; - constructor(readonly I18n:I18nService, + constructor( + readonly I18n:I18nService, readonly cdRef:ChangeDetectorRef, readonly $transitions:TransitionService, readonly state:StateService, @@ -152,7 +151,8 @@ export class BoardPartitionedPageComponent extends UntilDestroyedMixin { readonly apiV3Service:ApiV3Service, readonly boardFilters:BoardFiltersService, readonly Boards:BoardService, - readonly titleService:OpTitleService) { + readonly titleService:OpTitleService, + ) { super(); } @@ -160,15 +160,6 @@ export class BoardPartitionedPageComponent extends UntilDestroyedMixin { // Ensure board is being loaded this.Boards.loadAllBoards(); - this.boardSaver - .observe(componentDestroyed(this)) - .subscribe( - () => { - this.toastService.addSuccess(this.text.updateSuccessful); - }, - (error:unknown) => this.halNotification.handleRawError(error), - ); - this.removeTransitionSubscription = this.$transitions.onSuccess({}, (transition):any => { const toState = transition.to(); const params = transition.params('to'); @@ -216,7 +207,22 @@ export class BoardPartitionedPageComponent extends UntilDestroyedMixin { const params = { isNew: false, query_props: null }; this.state.go('.', params, { custom: { notify: false } }); - this.boardSaver.request(board); + this.toolbarDisabled = true; + this.Boards + .save(board) + .pipe( + catchError((error) => { + this.halNotification.handleRawError(error); + return EMPTY; + }), + finalize(() => { + this.toolbarDisabled = false; + this.cdRef.detectChanges(); + }), + ).subscribe(() => { + this.toastService.addSuccess(this.text.updateSuccessful); + }, + ); }); } diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index ffc68def7cd4..67c9b35811c4 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -1,7 +1,4 @@ -import { - Injectable, - Injector, -} from '@angular/core'; +import { Injectable, Injector } from '@angular/core'; import { CalendarOptions, DatesSetArg, @@ -22,11 +19,10 @@ import { splitViewRoute } from 'core-app/features/work-packages/routing/split-vi import { StateService } from '@uirouter/angular'; import { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource'; import { ToastService } from 'core-app/shared/components/toaster/toast.service'; +import { firstValueFrom, Observable } from 'rxjs'; import { - firstValueFrom, - Observable, -} from 'rxjs'; -import { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; + WorkPackageViewFiltersService, +} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; import { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service'; import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; @@ -40,19 +36,26 @@ import { import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { UIRouterGlobals } from '@uirouter/core'; import { TimezoneService } from 'core-app/core/datetime/timezone.service'; -import { WorkPackagesListChecksumService } from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service'; import { - EventReceiveArg, - EventResizeDoneArg, -} from '@fullcalendar/interaction'; -import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; + WorkPackagesListChecksumService, +} from 'core-app/features/work-packages/components/wp-list/wp-list-checksum.service'; +import { EventReceiveArg, EventResizeDoneArg } from '@fullcalendar/interaction'; +import { + HalResourceEditingService, +} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset'; import * as moment from 'moment'; -import { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service'; +import { + WorkPackageViewSelectionService, +} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service'; import { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling'; -import { uiStateLinkClass } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; +import { + uiStateLinkClass, +} from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { debugLog } from 'core-app/shared/helpers/debug_output'; -import { WorkPackageViewContextMenu } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; +import { + WorkPackageViewContextMenu, +} from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; import { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service'; import { OpCalendarService } from 'core-app/features/calendar/op-calendar.service'; import { WeekdayService } from 'core-app/core/days/weekday.service'; @@ -71,7 +74,7 @@ interface CalendarOptionsWithDayGrid extends CalendarOptions { @Injectable() export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { - static MAX_DISPLAYED = 100; + static MAX_DISPLAYED = 500; tooManyResultsText:string|null; @@ -207,6 +210,8 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { ...(oldQueryProps.f as QueryPropsFilter[]).filter((filter:QueryPropsFilter) => filter.n !== 'datesInterval'), OpWorkPackagesCalendarService.dateFilter(startDate, endDate), ], + pp: OpWorkPackagesCalendarService.MAX_DISPLAYED, + pa: 1, }; queryProps = JSON.stringify(newQueryProps); diff --git a/frontend/src/app/features/team-planner/team-planner/planner/event-view-lookup.service.ts b/frontend/src/app/features/team-planner/team-planner/planner/event-view-lookup.service.ts deleted file mode 100644 index 94612f914906..000000000000 --- a/frontend/src/app/features/team-planner/team-planner/planner/event-view-lookup.service.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { - EmbeddedViewRef, - Injectable, - OnDestroy, - TemplateRef, - ViewContainerRef, -} from '@angular/core'; -import { debugLog } from 'core-app/shared/helpers/debug_output'; - -/** - * View lookup service for injecting angular templates - * as fullcalendar event content. - * - * Based on the suggestion from Daniel Goldsmith - * in https://github.com/fullcalendar/fullcalendar-angular/issues/204 - * - */ -@Injectable() -export class EventViewLookupService implements OnDestroy { - /** Active templates currently rendered */ - private readonly activeViews = new Map>(); - - /** Remember detached views to be destroyed on destroyAll */ - private readonly detachedViews:EmbeddedViewRef[] = []; - - constructor(private viewContainerRef:ViewContainerRef) { - } - - /** - * Gets the view for the given ID, or creates one if there isn't one - * already. The template's context is set (or updated to, if the - * view has already been created) the given context values. - * @param template The template ref (get this from a @ViewChild of an - * ) - * @param id The unique ID for this instance of the view. Use this so that - * you don't keep around views for the same event. - * @param context The available variables for the . For - * example, if it looks like this: then - * your context should be an object with a `value` key. - */ - getView( - template:TemplateRef, id:string, context:unknown, - ):EmbeddedViewRef { - let view = this.activeViews.get(id); - if (view) { - debugLog('Returning active view %O', id); - view.detectChanges(); - return view; - } - - // Create a new view and move to active - debugLog('CREATING new view %O', id); - view = this.viewContainerRef.createEmbeddedView(template, context); - this.activeViews.set(id, view); - view.detectChanges(); - - return view; - } - - ngOnDestroy():void { - this.destroyAll(); - } - - /** - * Call this method if all views need to be cleaned up. This will happen - * when your parent component is destroyed (e.g., in ngOnDestroy), - * but it may also be needed if you are clearing just the area where the - * views have been placed. - */ - public destroyAll():void { - debugLog('Destroying all views'); - - Array - .from(this.activeViews.values()) - .forEach(this.destroyView.bind(this)); - - debugLog('Destroying %O active views', this.activeViews.size); - this.activeViews.clear(); - - this.destroyDetached(); - } - - /** - * Call this method if you want to clean detached views. - * This is safe to call outside of drag & drop operations. - * - */ - public destroyDetached():void { - debugLog('Destroying %O detached views', this.detachedViews.length); - - while (this.detachedViews.length) { - this.destroyView(this.detachedViews.pop() as EmbeddedViewRef); - } - } - - /** - * Mark a view to be destroyed. - * It will only be destroyed once +destroyAll+ is called. - * - * Ensure that destroyAll is called when, e.g., refreshing the calendar. - * - * @param id View ID - */ - public markForDestruction(id:string):void { - const view = this.activeViews.get(id); - if (!view) { - return; - } - - debugLog('Marking view %O to be destroyed', id); - this.activeViews.delete(id); - this.detachedViews.push(view); - } - - private destroyView(view:EmbeddedViewRef) { - const index = this.viewContainerRef.indexOf(view); - if (index !== -1) { - this.viewContainerRef.remove(index); - } - - view.destroy(); - } -} diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts index 108e5ea5cf19..2755041a09eb 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts @@ -37,18 +37,8 @@ import { TemplateRef, ViewChild, } from '@angular/core'; -import { - CalendarOptions, - DateSelectArg, - EventApi, - EventDropArg, - EventInput, -} from '@fullcalendar/core'; -import { - BehaviorSubject, - combineLatest, - Subject, -} from 'rxjs'; +import { CalendarOptions, DateSelectArg, EventApi, EventDropArg, EventInput } from '@fullcalendar/core'; +import { BehaviorSubject, combineLatest, Subject } from 'rxjs'; import { debounceTime, distinctUntilChanged, @@ -73,29 +63,31 @@ import interactionPlugin, { import { FullCalendarComponent } from '@fullcalendar/angular'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { ConfigurationService } from 'core-app/core/config/configuration.service'; -import { EventViewLookupService } from 'core-app/features/team-planner/team-planner/planner/event-view-lookup.service'; -import { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; +import { + WorkPackageViewFiltersService, +} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space'; import { CurrentProjectService } from 'core-app/core/current-project/current-project.service'; import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; import { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource'; import { PrincipalsResourceService } from 'core-app/core/state/principals/principals.service'; -import { - ApiV3ListFilter, - ApiV3ListParameters, -} from 'core-app/core/apiv3/paths/apiv3-list-resource.interface'; +import { ApiV3ListFilter, ApiV3ListParameters } from 'core-app/core/apiv3/paths/apiv3-list-resource.interface'; import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; import { HalResource } from 'core-app/features/hal/resources/hal-resource'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; import { OpCalendarService } from 'core-app/features/calendar/op-calendar.service'; -import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; +import { + HalResourceEditingService, +} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { CalendarDragDropService } from 'core-app/features/team-planner/team-planner/calendar-drag-drop.service'; import { StatusResource } from 'core-app/features/hal/resources/status-resource'; import { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset'; -import { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; +import { + KeepTabService, +} from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; import { HalError } from 'core-app/features/hal/services/hal-error'; import { ActionsService } from 'core-app/core/state/actions/actions.service'; import { @@ -104,10 +96,7 @@ import { teamPlannerPageRefresh, } from 'core-app/features/team-planner/team-planner/planner/team-planner.actions'; import { imagePath } from 'core-app/shared/helpers/images/path-helper'; -import { - skeletonEvents, - skeletonResources, -} from './loading-skeleton-data'; +import { skeletonEvents, skeletonResources } from './loading-skeleton-data'; import { CapabilitiesResourceService } from 'core-app/core/state/capabilities/capabilities.service'; import { ICapability } from 'core-app/core/state/capabilities/capability.model'; import { ToastService } from 'core-app/shared/components/toaster/toast.service'; @@ -118,10 +107,7 @@ import { RawOptionsFromRefiners } from '@fullcalendar/core/internal'; import { ViewOptionRefiners } from '@fullcalendar/common'; import { ResourceApi } from '@fullcalendar/resource'; import { DeviceService } from 'core-app/core/browser/device.service'; -import { - EffectCallback, - registerEffectCallbacks, -} from 'core-app/core/state/effects/effect-handler.decorator'; +import { EffectCallback, registerEffectCallbacks } from 'core-app/core/state/effects/effect-handler.decorator'; import { addBackgroundEvents, removeBackgroundEvents, @@ -136,9 +122,6 @@ export type TeamPlannerViewOptions = { [K in TeamPlannerViewOptionKey]:RawOption templateUrl: './team-planner.component.html', styleUrls: ['./team-planner.component.sass'], changeDetection: ChangeDetectionStrategy.OnPush, - providers: [ - EventViewLookupService, - ], }) export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, OnDestroy { @ViewChild(FullCalendarComponent) ucCalendar:FullCalendarComponent; @@ -377,7 +360,6 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, private wpTableFilters:WorkPackageViewFiltersService, private querySpace:IsolatedQuerySpace, private currentProject:CurrentProjectService, - private viewLookup:EventViewLookupService, private I18n:I18nService, readonly injector:Injector, readonly calendar:OpCalendarService, @@ -602,7 +584,7 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, ([workPackages, projectAssignables]) => { const events = this.mapToCalendarEvents(workPackages.elements, projectAssignables); - this.viewLookup.destroyDetached(); + this.workPackagesCalendar.warnOnTooManyResults(workPackages); this.removeExternalEvents(); diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html index 805f68ea95b7..57a000ef47b6 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html @@ -52,20 +52,20 @@ *ngIf="isNewResource(workPackage)">
+ [wrapperClasses]="'work-packages--type-selector'" + [fieldName]="'type'" + class="op-wp-single-card-content--type"> + fieldName="subject" + class="op-wp-single-card-content--subject -bold">
- + - {{startDate(workPackage)}} - + + + - - - {{endDate(workPackage)}} + - + + @@ -118,7 +130,7 @@ [workPackage]="workPackage" [small]="true" class="op-wp-single-card--content-status" - > + > - + containerType="single-view"> +
diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 7b6195bef3ad..d204c5f31b41 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -7,20 +7,29 @@ import { OnInit, Output, } from '@angular/core'; -import { uiStateLinkClass } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; +import { + uiStateLinkClass, +} from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; -import { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; import { - StateService, - UIRouterGlobals, -} from '@uirouter/core'; -import { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service'; -import { WorkPackageCardViewService } from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service'; + Highlighting, +} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; +import { StateService, UIRouterGlobals } from '@uirouter/core'; +import { + WorkPackageViewSelectionService, +} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service'; +import { + WorkPackageCardViewService, +} from 'core-app/features/work-packages/components/wp-card-view/services/wp-card-view.service'; import { I18nService } from 'core-app/core/i18n/i18n.service'; -import { CardHighlightingMode } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const'; +import { + CardHighlightingMode, +} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting-mode.const'; import { CardViewOrientation } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; -import { WorkPackageViewFocusService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service'; +import { + WorkPackageViewFocusService, +} from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-focus.service'; import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; import { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling'; import isNewResource from 'core-app/features/hal/helpers/is-new-resource'; @@ -30,9 +39,10 @@ import { combineLatest } from 'rxjs'; import { map } from 'rxjs/operators'; import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; import SpotDropAlignmentOption from 'core-app/spot/drop-alignment-options'; +import { getBaselineState } from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers'; import { - getBaselineState, -} from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers'; + CombinedDateDisplayField, +} from 'core-app/shared/components/fields/display/field-types/combined-date-display.field'; @Component({ selector: 'wp-single-card', @@ -99,16 +109,7 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen public tooltipPosition = SpotDropAlignmentOption.BottomLeft; - private dateTimeFormatYear = new Intl.DateTimeFormat(this.I18n.locale, { - year: 'numeric', - month: 'short', - day: 'numeric', - }); - - private dateTimeFormat = new Intl.DateTimeFormat(this.I18n.locale, { - month: 'short', - day: 'numeric', - }); + combinedDateDisplayField = CombinedDateDisplayField; constructor( readonly pathHelper:PathHelperService, @@ -206,50 +207,6 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen return wp.project?.name; } - public wpDates(wp:WorkPackageResource):string { - const { startDate, dueDate } = wp; - - if (startDate && dueDate) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore see https://github.com/microsoft/TypeScript/issues/46905 - // eslint-disable-next-line @typescript-eslint/no-unsafe-call - return String(this.dateTimeFormatYear.formatRange(new Date(startDate), new Date(dueDate))); - } - - if (!startDate && dueDate) { - return `– ${this.dateTimeFormatYear.format(new Date(dueDate))}`; - } - - if (startDate && !dueDate) { - return `${this.dateTimeFormatYear.format(new Date(startDate))} –`; - } - - return ''; - } - - startDate(wp:WorkPackageResource):string { - const { startDate } = wp; - if (!startDate) { - return ''; - } - - return this.dateTimeFormat.format(new Date(startDate)); - } - - endDate(wp:WorkPackageResource):string { - const { dueDate } = wp; - if (!dueDate) { - return ''; - } - - return this.dateTimeFormat.format(new Date(dueDate)); - } - - wpOverDueHighlighting(wp:WorkPackageResource):string { - const diff = this.timezoneService.daysFromToday(wp.dueDate); - return Highlighting.overdueDate(diff); - } - public fullWorkPackageLink(wp:WorkPackageResource):string { return this.$state.href('work-packages.show', { workPackageId: wp.id }); } diff --git a/frontend/src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component.ts b/frontend/src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component.ts index fb9cd88bfb47..a126f6360cb4 100644 --- a/frontend/src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-custom-actions/wp-custom-actions/wp-custom-action.component.ts @@ -26,26 +26,30 @@ // See COPYRIGHT and LICENSE files for more details. //++ -import { - ChangeDetectionStrategy, Component, HostListener, Input, -} from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, Input, OnInit } from '@angular/core'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { CustomActionResource } from 'core-app/features/hal/resources/custom-action-resource'; import { HalEventsService } from 'core-app/features/hal/services/hal-events.service'; -import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; +import { + HalResourceEditingService, +} from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceService } from 'core-app/features/hal/services/hal-resource.service'; import { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset'; -import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; -import { WorkPackageNotificationService } from 'core-app/features/work-packages/services/notifications/work-package-notification.service'; +import { + WorkPackageNotificationService, +} from 'core-app/features/work-packages/services/notifications/work-package-notification.service'; import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; -import { WorkPackagesActivityService } from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service'; +import { + WorkPackagesActivityService, +} from 'core-app/features/work-packages/components/wp-single-view-tabs/activity-panel/wp-activity.service'; +import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; @Component({ selector: 'wp-custom-action', templateUrl: './wp-custom-action.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) -export class WpCustomActionComponent { +export class WpCustomActionComponent extends UntilDestroyedMixin implements OnInit { @Input() workPackage:WorkPackageResource; @Input() action:CustomActionResource; @@ -53,12 +57,23 @@ export class WpCustomActionComponent { constructor( private halResourceService:HalResourceService, private apiV3Service:ApiV3Service, - private wpSchemaCacheService:SchemaCacheService, private wpActivity:WorkPackagesActivityService, private notificationService:WorkPackageNotificationService, private halEditing:HalResourceEditingService, private halEvents:HalEventsService, + private cdRef:ChangeDetectorRef, ) { + super(); + } + + ngOnInit() { + this + .halEvents + .events$ + .pipe( + this.untilDestroyed(), + ) + .subscribe(() => this.cdRef.detectChanges()); } private fetchAction() { @@ -103,11 +118,13 @@ export class WpCustomActionComponent { this.halEditing.stopEditing(savedWp); this.halEvents.push(savedWp, { eventType: 'updated' }); this.change.inFlight = false; + this.cdRef.detectChanges(); }); }, (errorResource) => { this.notificationService.handleRawError(errorResource, this.workPackage); this.change.inFlight = false; + this.cdRef.detectChanges(); }, ); } diff --git a/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts b/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts index 4448c227d72e..604f03ad9a27 100644 --- a/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts +++ b/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.ts @@ -218,7 +218,10 @@ export class PartitionedQuerySpacePageComponent extends WorkPackagesViewBase imp this.currentQuery!.name = val; this.wpListService .save(this.currentQuery) - .finally(() => { this.toolbarDisabled = false; }); + .finally(() => { + this.toolbarDisabled = false; + this.cdRef.detectChanges(); + }); } updateTitle(query?:QueryResource):void { diff --git a/frontend/src/app/shared/components/fields/display/display-field.component.ts b/frontend/src/app/shared/components/fields/display/display-field.component.ts index 4994cbdeb1ee..d6509e3ba8e3 100644 --- a/frontend/src/app/shared/components/fields/display/display-field.component.ts +++ b/frontend/src/app/shared/components/fields/display/display-field.component.ts @@ -1,18 +1,11 @@ -import { - ChangeDetectionStrategy, - Component, - ElementRef, - Injector, - Input, - OnInit, - ViewChild, -} from '@angular/core'; +import { ChangeDetectionStrategy, Component, ElementRef, Injector, Input, OnInit, ViewChild } from '@angular/core'; import { IFieldSchema } from 'core-app/shared/components/fields/field.base'; import { DisplayFieldService } from 'core-app/shared/components/fields/display/display-field.service'; import { HalResource } from 'core-app/features/hal/resources/hal-resource'; import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; import { Constructor } from '@angular/cdk/table'; import { DisplayField } from 'core-app/shared/components/fields/display/display-field.module'; +import { SchemaResource } from 'core-app/features/hal/resources/schema-resource'; @Component({ selector: 'display-field', @@ -32,16 +25,20 @@ export class DisplayFieldComponent implements OnInit { @ViewChild('displayFieldContainer') container:ElementRef; - constructor(private injector:Injector, + constructor( + private injector:Injector, private displayFieldService:DisplayFieldService, - private schemaCache:SchemaCacheService) { + private schemaCache:SchemaCacheService, + ) { } ngOnInit():void { void this.schemaCache .ensureLoaded(this.resource) .then((schema) => { - this.render(schema[this.fieldName]); + const proxied = this.schemaCache.proxied(this.resource, schema); + this.fieldName = this.attributeName(this.fieldName, proxied); + this.render(proxied[this.fieldName] as IFieldSchema); }); } @@ -76,6 +73,15 @@ export class DisplayFieldComponent implements OnInit { ); } + private attributeName(attribute:string, schema:SchemaResource):string { + if (schema.mappedName) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + return schema.mappedName(attribute) as string; + } + + return attribute; + } + private get displayFieldContext() { return { injector: this.injector, container: this.containerType, options: this.displayFieldOptions }; } diff --git a/frontend/src/app/shared/components/fields/display/field-types/combined-date-display.field.ts b/frontend/src/app/shared/components/fields/display/field-types/combined-date-display.field.ts index d169a99fc2d3..da2d111e9eb2 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/combined-date-display.field.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/combined-date-display.field.ts @@ -33,10 +33,60 @@ export class CombinedDateDisplayField extends DateDisplayField { placeholder: { startDate: this.I18n.t('js.label_no_start_date'), dueDate: this.I18n.t('js.label_no_due_date'), + date: this.I18n.t('js.label_no_date'), }, }; - public render(element:HTMLElement, displayText:string):void { + public render(element:HTMLElement):void { + if (this.name === 'date') { + this.renderSingleDate('date', element); + return; + } + + if (this.startDate && (this.startDate === this.dueDate)) { + this.renderSingleDate('dueDate', element); + return; + } + + if (!this.startDate && !this.dueDate) { + element.innerHTML = this.customPlaceholder(`${this.text.placeholder.startDate} - ${this.text.placeholder.dueDate}`); + return; + } + + this.renderDates(element); + } + + isEmpty():boolean { + return false; + } + + customPlaceholder(fallback:string):string { + if (typeof this.context.options.placeholder === 'string') { + return this.context.options.placeholder; + } + + return fallback; + } + + private get startDate():string|null { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return + return this.resource.startDate; + } + + private get dueDate():string|null { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return + return this.resource.dueDate; + } + + private renderSingleDate(field:'date'|'startDate'|'dueDate', element:HTMLElement):void { + element.innerHTML = ''; + + const dateElement = this.createDateDisplayField(field); + + element.appendChild(dateElement); + } + + private renderDates(element:HTMLElement):void { element.innerHTML = ''; const startDateElement = this.createDateDisplayField('startDate'); @@ -50,14 +100,15 @@ export class CombinedDateDisplayField extends DateDisplayField { element.appendChild(dueDateElement); } - private createDateDisplayField(date:'dueDate'|'startDate'):HTMLElement { + private createDateDisplayField(date:'dueDate'|'startDate'|'date'):HTMLElement { const dateElement = document.createElement('span'); const dateDisplayField = new DateDisplayField(date, this.context); - const text = this.resource[date] - ? this.timezoneService.formattedDate(this.resource[date]) - : this.text.placeholder[date]; - dateDisplayField.apply(this.resource, this.schema); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const text = this.resource[date] + ? dateDisplayField.valueString + : this.customPlaceholder(this.text.placeholder[date]); dateDisplayField.render(dateElement, text); return dateElement; diff --git a/frontend/src/app/shared/components/fields/display/field-types/date-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/date-display-field.module.ts index cbe798e1a3f9..01640ccb2fcf 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/date-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/date-display-field.module.ts @@ -26,8 +26,12 @@ // See COPYRIGHT and LICENSE files for more details. //++ -import { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; -import { HighlightableDisplayField } from 'core-app/shared/components/fields/display/field-types/highlightable-display-field.module'; +import { + Highlighting, +} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; +import { + HighlightableDisplayField, +} from 'core-app/shared/components/fields/display/field-types/highlightable-display-field.module'; import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { TimezoneService } from 'core-app/core/datetime/timezone.service'; @@ -75,7 +79,8 @@ export class DateDisplayField extends HighlightableDisplayField { public get valueString() { if (this.value) { - return this.timezoneService.formattedDate(this.value); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + return this.timezoneService.formattedDate(this.value, this.context.options.dateFormat); } return ''; } diff --git a/frontend/src/app/shared/components/fields/openproject-fields.module.ts b/frontend/src/app/shared/components/fields/openproject-fields.module.ts index 093e3e21cc1e..bbb87b76de54 100644 --- a/frontend/src/app/shared/components/fields/openproject-fields.module.ts +++ b/frontend/src/app/shared/components/fields/openproject-fields.module.ts @@ -131,6 +131,7 @@ import { FormsModule } from '@angular/forms'; EditFormPortalComponent, EditFormComponent, EditableAttributeFieldComponent, + DisplayFieldComponent, ], providers: [ { diff --git a/frontend/src/app/shared/components/op-context-menu/handlers/op-types-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/handlers/op-types-context-menu.directive.ts index 70645e47e6d6..fd3bcc55392a 100644 --- a/frontend/src/app/shared/components/op-context-menu/handlers/op-types-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/handlers/op-types-context-menu.directive.ts @@ -31,10 +31,14 @@ import { StateService } from '@uirouter/core'; import { OPContextMenuService } from 'core-app/shared/components/op-context-menu/op-context-menu.service'; import { Directive, ElementRef, Input } from '@angular/core'; import { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling'; -import { OpContextMenuTrigger } from 'core-app/shared/components/op-context-menu/handlers/op-context-menu-trigger.directive'; +import { + OpContextMenuTrigger, +} from 'core-app/shared/components/op-context-menu/handlers/op-context-menu-trigger.directive'; import { BrowserDetector } from 'core-app/core/browser/browser-detector.service'; import { WorkPackageCreateService } from 'core-app/features/work-packages/components/wp-new/wp-create.service'; -import { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; +import { + Highlighting, +} from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; import { TypeResource } from 'core-app/features/hal/resources/type-resource'; @Directive({ @@ -88,6 +92,11 @@ export class OpTypesContextMenuDirective extends OpContextMenuTrigger { } } + onClose(focus:boolean = false) { + this.isOpen = false; + super.onClose(focus); + } + public get locals():{ showAnchorRight?:boolean, contextMenuId?:string, items:OpContextMenuItem[] } { return { items: this.items, diff --git a/frontend/src/app/shared/components/sidemenu/sidemenu.component.html b/frontend/src/app/shared/components/sidemenu/sidemenu.component.html index 6885c55128cf..b7d527fc23c2 100644 --- a/frontend/src/app/shared/components/sidemenu/sidemenu.component.html +++ b/frontend/src/app/shared/components/sidemenu/sidemenu.component.html @@ -73,7 +73,7 @@ {{ item.title }} - + {{ item.count }}
diff --git a/frontend/src/assets/fonts/lato/Lato-Bold.woff b/frontend/src/assets/fonts/lato/Lato-Bold.woff deleted file mode 100644 index c6dff51f063c..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Bold.woff and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Bold.woff2 b/frontend/src/assets/fonts/lato/Lato-Bold.woff2 deleted file mode 100644 index bb195043cfc0..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Bold.woff2 and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-BoldItalic.woff b/frontend/src/assets/fonts/lato/Lato-BoldItalic.woff deleted file mode 100644 index 88ad05b9ff41..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-BoldItalic.woff and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-BoldItalic.woff2 b/frontend/src/assets/fonts/lato/Lato-BoldItalic.woff2 deleted file mode 100644 index c4e3d804b57b..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-BoldItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Italic.woff b/frontend/src/assets/fonts/lato/Lato-Italic.woff deleted file mode 100644 index 76114bc03362..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Italic.woff and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Italic.woff2 b/frontend/src/assets/fonts/lato/Lato-Italic.woff2 deleted file mode 100644 index 3404f37e2e31..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Italic.woff2 and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Light.woff b/frontend/src/assets/fonts/lato/Lato-Light.woff deleted file mode 100644 index 77b4e148f7f4..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Light.woff and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Light.woff2 b/frontend/src/assets/fonts/lato/Lato-Light.woff2 deleted file mode 100644 index ce49f82217ea..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Light.woff2 and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-LightItalic.woff b/frontend/src/assets/fonts/lato/Lato-LightItalic.woff deleted file mode 100644 index da3dfa30a456..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-LightItalic.woff and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-LightItalic.woff2 b/frontend/src/assets/fonts/lato/Lato-LightItalic.woff2 deleted file mode 100644 index 0c897ce40ca1..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-LightItalic.woff2 and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Regular.woff b/frontend/src/assets/fonts/lato/Lato-Regular.woff deleted file mode 100644 index ae1307ff5f4c..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Regular.woff and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/Lato-Regular.woff2 b/frontend/src/assets/fonts/lato/Lato-Regular.woff2 deleted file mode 100644 index 3bf9843328a6..000000000000 Binary files a/frontend/src/assets/fonts/lato/Lato-Regular.woff2 and /dev/null differ diff --git a/frontend/src/assets/fonts/lato/OFL.txt b/frontend/src/assets/fonts/lato/OFL.txt deleted file mode 100755 index 6d2c4160b08f..000000000000 --- a/frontend/src/assets/fonts/lato/OFL.txt +++ /dev/null @@ -1,94 +0,0 @@ -Copyright (c) 2010-2015, Łukasz Dziedzic (dziedzic@typoland.com), -with Reserved Font Name Lato. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/frontend/src/global_styles/content/_sidemenu.sass b/frontend/src/global_styles/content/_sidemenu.sass index 931ab0adaae9..059ab00bf74a 100644 --- a/frontend/src/global_styles/content/_sidemenu.sass +++ b/frontend/src/global_styles/content/_sidemenu.sass @@ -46,6 +46,7 @@ padding-left: 12px &--item-title + display: flex margin-right: auto overflow: hidden text-overflow: ellipsis diff --git a/frontend/src/global_styles/content/user-content/_list.sass b/frontend/src/global_styles/content/user-content/_list.sass index 10ef43aa6d78..eb2a0f2d48cf 100644 --- a/frontend/src/global_styles/content/user-content/_list.sass +++ b/frontend/src/global_styles/content/user-content/_list.sass @@ -26,19 +26,31 @@ ol.op-uc-list list-style: none list-style-type: decimal ol + &.op-uc-list_task-list + list-style: none list-style-type: lower-latin ol + &.op-uc-list_task-list + list-style: none list-style-type: lower-roman ol + &.op-uc-list_task-list + list-style: none list-style-type: upper-latin ol + &.op-uc-list_task-list + list-style: none list-style-type: upper-roman ul.op-uc-list &_task-list list-style: none list-style-type: disc ul + &.op-uc-list_task-list + list-style: none list-style-type: circle ul, ul ul + &.op-uc-list_task-list + list-style: none list-style-type: square diff --git a/frontend/src/global_styles/fonts/_index.sass b/frontend/src/global_styles/fonts/_index.sass index 3c6ddd074a33..a94a5d588ecd 100644 --- a/frontend/src/global_styles/fonts/_index.sass +++ b/frontend/src/global_styles/fonts/_index.sass @@ -1,3 +1,2 @@ -@import lato @import openproject_icon_font @import openproject_icon_font_face diff --git a/frontend/src/global_styles/fonts/_lato.sass b/frontend/src/global_styles/fonts/_lato.sass deleted file mode 100644 index 77924118ce96..000000000000 --- a/frontend/src/global_styles/fonts/_lato.sass +++ /dev/null @@ -1,63 +0,0 @@ -//-- copyright -// OpenProject is an open source project management software. -// Copyright (C) 2012-2024 the OpenProject GmbH -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License version 3. -// -// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -// Copyright (C) 2006-2013 Jean-Philippe Lang -// Copyright (C) 2010-2013 the ChiliProject Team -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -// See COPYRIGHT and LICENSE files for more details. -//++ - -@font-face - font-family: LatoLight - src: url('~assets/fonts/lato/Lato-Light.woff') format('woff'), url('~assets/fonts/lato/Lato-Light.woff2') format('woff2') - font-weight: normal - font-style: normal - -@font-face - font-family: LatoLight - src: url('~assets/fonts/lato/Lato-LightItalic.woff') format('woff'), url('~assets/fonts/lato/Lato-LightItalic.woff2') format('woff2') - font-weight: normal - font-style: italic - -@font-face - font-family: Lato - src: url('~assets/fonts/lato/Lato-Regular.woff') format('woff'), url('~assets/fonts/lato/Lato-Regular.woff2') format('woff2') - font-weight: normal - font-style: normal - -@font-face - font-family: Lato - src: url('~assets/fonts/lato/Lato-Italic.woff') format('woff'), url('~assets/fonts/lato/Lato-Italic.woff2') format('woff2') - font-weight: normal - font-style: italic - -@font-face - font-family: Lato - src: url('~assets/fonts/lato/Lato-Bold.woff') format('woff'), url('~assets/fonts/lato/Lato-Bold.woff2') format('woff2') - font-weight: var(--base-text-weight-bold) - font-style: normal - -@font-face - font-family: Lato - src: url('~assets/fonts/lato/Lato-BoldItalic.woff') format('woff'), url('~assets/fonts/lato/Lato-BoldItalic.woff2') format('woff2') - font-weight: var(--base-text-weight-bold) - font-style: italic diff --git a/frontend/src/stimulus/controllers/dynamic/backlogs/model.js b/frontend/src/stimulus/controllers/dynamic/backlogs/model.js index b9ecb9c81566..359a37e44a6d 100644 --- a/frontend/src/stimulus/controllers/dynamic/backlogs/model.js +++ b/frontend/src/stimulus/controllers/dynamic/backlogs/model.js @@ -304,14 +304,16 @@ RB.Model = (function ($) { }, handleClick: function (e) { - var field, model, j, editor; - - field = $(this); - model = field.parents('.model').first().data('this'); - j = model.$; - - if (!j.hasClass('editing') && !j.hasClass('dragging') && !j.hasClass('prevent_edit') && !$(e.target).hasClass('prevent_edit')) { - editor = model.edit(); + const field = $(this); + const model = field.parents('.model').first().data('this'); + const j = model.$; + + if (!j.hasClass('editing') + && !j.hasClass('dragging') + && !j.hasClass('prevent_edit') + && !$(e.target).hasClass('prevent_edit') + && e.target.closest('.editable').getAttribute('fieldeditable') !== 'false' ) { + const editor = model.edit(); var input = editor.find('.' + $(e.currentTarget).attr('fieldname') + '.editor'); input.focus(); diff --git a/frontend/src/vendor/ckeditor/ckeditor.js b/frontend/src/vendor/ckeditor/ckeditor.js index 8325f7b8206d..924341b9c23b 100644 --- a/frontend/src/vendor/ckeditor/ckeditor.js +++ b/frontend/src/vendor/ckeditor/ckeditor.js @@ -1,142327 +1,7 @@ -(function(d){ const l = d['en'] = d['en'] || {}; l.dictionary=Object.assign( l.dictionary||{}, {"%0 of %1":"%0 of %1","Align cell text to the bottom":"Align cell text to the bottom","Align cell text to the center":"Align cell text to the center","Align cell text to the left":"Align cell text to the left","Align cell text to the middle":"Align cell text to the middle","Align cell text to the right":"Align cell text to the right","Align cell text to the top":"Align cell text to the top","Align table to the left":"Align table to the left","Align table to the right":"Align table to the right",Alignment:"Alignment",Aquamarine:"Aquamarine",Background:"Background",Black:"Black","Block quote":"Block quote",Blue:"Blue",Bold:"Bold",Border:"Border","Break text":"Break text","Bulleted List":"Bulleted List","Bulleted list styles toolbar":"Bulleted list styles toolbar",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Caption for image: %0":"Caption for image: %0","Caption for the image":"Caption for the image","Cell properties":"Cell properties","Center table":"Center table","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Choose heading":"Choose heading",Circle:"Circle",Code:"Code",Color:"Color","Color picker":"Color picker",Column:"Column",Dashed:"Dashed",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero","Delete column":"Delete column","Delete row":"Delete row","Dim grey":"Dim grey",Dimensions:"Dimensions",Disc:"Disc",Dotted:"Dotted",Double:"Double",Downloadable:"Downloadable","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Edit link":"Edit link","Editor block content toolbar":"Editor block content toolbar","Editor contextual toolbar":"Editor contextual toolbar","Editor editing area: %0":"Editor editing area: %0","Editor toolbar":"Editor toolbar","Enter image caption":"Enter image caption","Enter table caption":"Enter table caption","Full size image":"Full size image",Green:"Green",Grey:"Grey",Groove:"Groove","Header column":"Header column","Header row":"Header row",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Height:"Height",HEX:"HEX","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Image resize list":"Image resize list","Image toolbar":"Image toolbar","image widget":"image widget","In line":"In line",Insert:"Insert","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert image":"Insert image","Insert image via URL":"Insert image via URL","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"Inset",Italic:"Italic","Justify cell text":"Justify cell text","Left aligned image":"Left aligned image","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Link:"Link","Link image":"Link image","Link URL":"Link URL","List properties":"List properties","Lower-latin":"Lower-latin","Lower–roman":"Lower–roman","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",Next:"Next",None:"None","Numbered List":"Numbered List","Numbered list styles toolbar":"Numbered list styles toolbar","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab",Orange:"Orange",Original:"Original",Outset:"Outset",Padding:"Padding",Paragraph:"Paragraph","Press Enter to type after or press Shift + Enter to type before the widget":"Press Enter to type after or press Shift + Enter to type before the widget",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Restore default":"Restore default","Reversed order":"Reversed order","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Editing area: %0",Ridge:"Ridge","Right aligned image":"Right aligned image",Row:"Row",Save:"Save","Select all":"Select all","Select column":"Select column","Select row":"Select row","Show more items":"Show more items","Side image":"Side image",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Square:"Square","Start at":"Start at","Start index must be greater than 0.":"Start index must be greater than 0.",Strikethrough:"Strikethrough",Style:"Style",Subscript:"Subscript",Superscript:"Superscript","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar","Text alternative":"Text alternative","The color is invalid. Try \"#FF0000\" or \"rgb(255,0,0)\" or \"red\".":"The color is invalid. Try \"#FF0000\" or \"rgb(255,0,0)\" or \"red\".","The value is invalid. Try \"10px\" or \"2em\" or simply \"2\".":"The value is invalid. Try \"10px\" or \"2em\" or simply \"2\".","This link has no URL":"This link has no URL","To-do List":"To-do List","Toggle caption off":"Toggle caption off","Toggle caption on":"Toggle caption on","Toggle the circle list style":"Toggle the circle list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the disc list style":"Toggle the disc list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the square list style":"Toggle the square list style","Toggle the upper–latin list style":"Toggle the upper–latin list style","Toggle the upper–roman list style":"Toggle the upper–roman list style",Turquoise:"Turquoise","Type or paste your content here.":"Type or paste your content here.","Type your title":"Type your title",Underline:"Underline",Undo:"Undo",Unlink:"Unlink",Update:"Update","Update image URL":"Update image URL","Upload failed":"Upload failed","Upload in progress":"Upload in progress","Upper-latin":"Upper-latin","Upper-roman":"Upper-roman","Vertical text alignment toolbar":"Vertical text alignment toolbar",White:"White","Widget toolbar":"Widget toolbar",Width:"Width","Wrap text":"Wrap text",Yellow:"Yellow"} );})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 of %1","Align cell text to the bottom":"Align cell text to the bottom","Align cell text to the center":"Align cell text to the center","Align cell text to the left":"Align cell text to the left","Align cell text to the middle":"Align cell text to the middle","Align cell text to the right":"Align cell text to the right","Align cell text to the top":"Align cell text to the top","Align table to the left":"Align table to the left","Align table to the right":"Align table to the right",Alignment:"Alignment",Aquamarine:"Aquamarine",Background:"Background",Black:"Black","Block quote":"Block quote",Blue:"Blue",Bold:"Bold",Border:"Border","Break text":"Break text","Bulleted List":"Bulleted List","Bulleted list styles toolbar":"Bulleted list styles toolbar",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Caption for image: %0":"Caption for image: %0","Caption for the image":"Caption for the image","Cell properties":"Cell properties","Center table":"Center table","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Choose heading":"Choose heading",Circle:"Circle",Code:"Code",Color:"Color","Color picker":"Color picker",Column:"Column",Dashed:"Dashed",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero","Delete column":"Delete column","Delete row":"Delete row","Dim grey":"Dim grey",Dimensions:"Dimensions",Disc:"Disc",Dotted:"Dotted",Double:"Double",Downloadable:"Downloadable","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Edit link":"Edit link","Editor block content toolbar":"Editor block content toolbar","Editor contextual toolbar":"Editor contextual toolbar","Editor editing area: %0":"Editor editing area: %0","Editor toolbar":"Editor toolbar","Enter image caption":"Enter image caption","Enter table caption":"Enter table caption","Full size image":"Full size image",Green:"Green",Grey:"Grey",Groove:"Groove","Header column":"Header column","Header row":"Header row",Heading:"Heading","Heading 1":"Heading 1","Heading 2":"Heading 2","Heading 3":"Heading 3","Heading 4":"Heading 4","Heading 5":"Heading 5","Heading 6":"Heading 6",Height:"Height",HEX:"HEX","Horizontal text alignment toolbar":"Horizontal text alignment toolbar","Image resize list":"Image resize list","Image toolbar":"Image toolbar","image widget":"image widget","In line":"In line",Insert:"Insert","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert image":"Insert image","Insert image via URL":"Insert image via URL","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table",Inset:"Inset",Italic:"Italic","Justify cell text":"Justify cell text","Left aligned image":"Left aligned image","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Link:"Link","Link image":"Link image","Link URL":"Link URL","List properties":"List properties","Lower-latin":"Lower-latin","Lower–roman":"Lower–roman","Merge cell down":"Merge cell down","Merge cell left":"Merge cell left","Merge cell right":"Merge cell right","Merge cell up":"Merge cell up","Merge cells":"Merge cells",Next:"Next",None:"None","Numbered List":"Numbered List","Numbered list styles toolbar":"Numbered list styles toolbar","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab",Orange:"Orange",Original:"Original",Outset:"Outset",Padding:"Padding",Paragraph:"Paragraph","Press Enter to type after or press Shift + Enter to type before the widget":"Press Enter to type after or press Shift + Enter to type before the widget",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Resize image":"Resize image","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Restore default":"Restore default","Reversed order":"Reversed order","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Editing area: %0",Ridge:"Ridge","Right aligned image":"Right aligned image",Row:"Row",Save:"Save","Select all":"Select all","Select column":"Select column","Select row":"Select row","Show more items":"Show more items","Side image":"Side image",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Square:"Square","Start at":"Start at","Start index must be greater than 0.":"Start index must be greater than 0.",Strikethrough:"Strikethrough",Style:"Style",Subscript:"Subscript",Superscript:"Superscript","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar","Text alternative":"Text alternative",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".','The value is invalid. Try "10px" or "2em" or simply "2".':'The value is invalid. Try "10px" or "2em" or simply "2".',"This link has no URL":"This link has no URL","To-do List":"To-do List","Toggle caption off":"Toggle caption off","Toggle caption on":"Toggle caption on","Toggle the circle list style":"Toggle the circle list style","Toggle the decimal list style":"Toggle the decimal list style","Toggle the decimal with leading zero list style":"Toggle the decimal with leading zero list style","Toggle the disc list style":"Toggle the disc list style","Toggle the lower–latin list style":"Toggle the lower–latin list style","Toggle the lower–roman list style":"Toggle the lower–roman list style","Toggle the square list style":"Toggle the square list style","Toggle the upper–latin list style":"Toggle the upper–latin list style","Toggle the upper–roman list style":"Toggle the upper–roman list style",Turquoise:"Turquoise","Type or paste your content here.":"Type or paste your content here.","Type your title":"Type your title",Underline:"Underline",Undo:"Undo",Unlink:"Unlink",Update:"Update","Update image URL":"Update image URL","Upload failed":"Upload failed","Upload in progress":"Upload in progress","Upper-latin":"Upper-latin","Upper-roman":"Upper-roman","Vertical text alignment toolbar":"Vertical text alignment toolbar",White:"White","Widget toolbar":"Widget toolbar",Width:"Width","Wrap text":"Wrap text",Yellow:"Yellow"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})), /*! - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. + * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else if(typeof exports === 'object') - exports["OPEditor"] = factory(); - else - root["OPEditor"] = factory(); -})(self, () => { -return /******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/augmentation.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/augmentation.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/index.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/index.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ UploadAdapter: () => (/* reexport safe */ _uploadadapter__WEBPACK_IMPORTED_MODULE_0__["default"]) -/* harmony export */ }); -/* harmony import */ var _uploadadapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uploadadapter */ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/uploadadapter.js"); -/* harmony import */ var _augmentation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./augmentation */ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/augmentation.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module adapter-ckfinder - */ - - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/uploadadapter.js": -/*!********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/uploadadapter.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ CKFinderUploadAdapter) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_upload__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/upload */ "./node_modules/ckeditor5/src/upload.js"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/utils.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/* globals XMLHttpRequest, FormData */ -/** - * @module adapter-ckfinder/uploadadapter - */ - - - -/** - * A plugin that enables file uploads in CKEditor 5 using the CKFinder server–side connector. - * - * See the {@glink features/file-management/ckfinder "CKFinder file manager integration"} guide to learn how to configure - * and use this feature as well as find out more about the full integration with the file manager - * provided by the {@link module:ckfinder/ckfinder~CKFinder} plugin. - * - * Check out the {@glink features/images/image-upload/image-upload comprehensive "Image upload overview"} guide to learn - * about other ways to upload images into CKEditor 5. - */ -class CKFinderUploadAdapter extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [ckeditor5_src_upload__WEBPACK_IMPORTED_MODULE_1__.FileRepository]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'CKFinderUploadAdapter'; - } - /** - * @inheritDoc - */ - init() { - const url = this.editor.config.get('ckfinder.uploadUrl'); - if (!url) { - return; - } - // Register CKFinderAdapter - this.editor.plugins.get(ckeditor5_src_upload__WEBPACK_IMPORTED_MODULE_1__.FileRepository).createUploadAdapter = loader => new UploadAdapter(loader, url, this.editor.t); - } -} -/** - * Upload adapter for CKFinder. - */ -class UploadAdapter { - /** - * Creates a new adapter instance. - */ - constructor(loader, url, t) { - this.loader = loader; - this.url = url; - this.t = t; - } - /** - * Starts the upload process. - * - * @see module:upload/filerepository~UploadAdapter#upload - */ - upload() { - return this.loader.file.then(file => { - return new Promise((resolve, reject) => { - this._initRequest(); - this._initListeners(resolve, reject, file); - this._sendRequest(file); - }); - }); - } - /** - * Aborts the upload process. - * - * @see module:upload/filerepository~UploadAdapter#abort - */ - abort() { - if (this.xhr) { - this.xhr.abort(); - } - } - /** - * Initializes the XMLHttpRequest object. - */ - _initRequest() { - const xhr = this.xhr = new XMLHttpRequest(); - xhr.open('POST', this.url, true); - xhr.responseType = 'json'; - } - /** - * Initializes XMLHttpRequest listeners. - * - * @param resolve Callback function to be called when the request is successful. - * @param reject Callback function to be called when the request cannot be completed. - * @param file File instance to be uploaded. - */ - _initListeners(resolve, reject, file) { - const xhr = this.xhr; - const loader = this.loader; - const t = this.t; - const genericError = t('Cannot upload file:') + ` ${file.name}.`; - xhr.addEventListener('error', () => reject(genericError)); - xhr.addEventListener('abort', () => reject()); - xhr.addEventListener('load', () => { - const response = xhr.response; - if (!response || !response.uploaded) { - return reject(response && response.error && response.error.message ? response.error.message : genericError); - } - resolve({ - default: response.url - }); - }); - // Upload progress when it's supported. - /* istanbul ignore else -- @preserve */ - if (xhr.upload) { - xhr.upload.addEventListener('progress', evt => { - if (evt.lengthComputable) { - loader.uploadTotal = evt.total; - loader.uploaded = evt.loaded; - } - }); - } - } - /** - * Prepares the data and sends the request. - * - * @param file File instance to be uploaded. - */ - _sendRequest(file) { - // Prepare form data. - const data = new FormData(); - data.append('upload', file); - data.append('ckCsrfToken', (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getCsrfToken)()); - // Send request. - this.xhr.send(data); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/utils.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/utils.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ getCookie: () => (/* binding */ getCookie), -/* harmony export */ getCsrfToken: () => (/* binding */ getCsrfToken), -/* harmony export */ setCookie: () => (/* binding */ setCookie) -/* harmony export */ }); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/* globals window, document */ -/** - * @module adapter-ckfinder/utils - */ -const TOKEN_COOKIE_NAME = 'ckCsrfToken'; -const TOKEN_LENGTH = 40; -const tokenCharset = 'abcdefghijklmnopqrstuvwxyz0123456789'; -/** - * Returns the CSRF token value. The value is a hash stored in `document.cookie` - * under the `ckCsrfToken` key. The CSRF token can be used to secure the communication - * between the web browser and the CKFinder server. - */ -function getCsrfToken() { - let token = getCookie(TOKEN_COOKIE_NAME); - if (!token || token.length != TOKEN_LENGTH) { - token = generateToken(TOKEN_LENGTH); - setCookie(TOKEN_COOKIE_NAME, token); - } - return token; -} -/** - * Returns the value of the cookie with a given name or `null` if the cookie is not found. - */ -function getCookie(name) { - name = name.toLowerCase(); - const parts = document.cookie.split(';'); - for (const part of parts) { - const pair = part.split('='); - const key = decodeURIComponent(pair[0].trim().toLowerCase()); - if (key === name) { - return decodeURIComponent(pair[1]); - } - } - return null; -} -/** - * Sets the value of the cookie with a given name. - */ -function setCookie(name, value) { - document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';path=/'; -} -/** - * Generates the CSRF token with the given length. - */ -function generateToken(length) { - let result = ''; - const randValues = new Uint8Array(length); - window.crypto.getRandomValues(randValues); - for (let j = 0; j < randValues.length; j++) { - const character = tokenCharset.charAt(randValues[j] % tokenCharset.length); - result += Math.random() > 0.5 ? character.toUpperCase() : character; - } - return result; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-autoformat/src/augmentation.js": -/*!*************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-autoformat/src/augmentation.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-autoformat/src/autoformat.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-autoformat/src/autoformat.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Autoformat) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/typing */ "./node_modules/ckeditor5/src/typing.js"); -/* harmony import */ var _blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blockautoformatediting */ "./node_modules/@ckeditor/ckeditor5-autoformat/src/blockautoformatediting.js"); -/* harmony import */ var _inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inlineautoformatediting */ "./node_modules/@ckeditor/ckeditor5-autoformat/src/inlineautoformatediting.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - - -/** - * Enables a set of predefined autoformatting actions. - * - * For a detailed overview, check the {@glink features/autoformat Autoformatting} feature guide - * and the {@glink api/autoformat package page}. - */ -class Autoformat extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_1__.Delete]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Autoformat'; - } - /** - * @inheritDoc - */ - afterInit() { - this._addListAutoformats(); - this._addBasicStylesAutoformats(); - this._addHeadingAutoformats(); - this._addBlockQuoteAutoformats(); - this._addCodeBlockAutoformats(); - this._addHorizontalLineAutoformats(); - } - /** - * Adds autoformatting related to the {@link module:list/list~List}. - * - * When typed: - * - `* ` or `- ` – A paragraph will be changed into a bulleted list. - * - `1. ` or `1) ` – A paragraph will be changed into a numbered list ("1" can be any digit or a list of digits). - * - `[] ` or `[ ] ` – A paragraph will be changed into a to-do list. - * - `[x] ` or `[ x ] ` – A paragraph will be changed into a checked to-do list. - */ - _addListAutoformats() { - const commands = this.editor.commands; - if (commands.get('bulletedList')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, /^[*-]\s$/, 'bulletedList'); - } - if (commands.get('numberedList')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, /^1[.|)]\s$/, 'numberedList'); - } - if (commands.get('todoList')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, /^\[\s?\]\s$/, 'todoList'); - } - if (commands.get('checkTodoList')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, /^\[\s?x\s?\]\s$/, () => { - this.editor.execute('todoList'); - this.editor.execute('checkTodoList'); - }); - } - } - /** - * Adds autoformatting related to the {@link module:basic-styles/bold~Bold}, - * {@link module:basic-styles/italic~Italic}, {@link module:basic-styles/code~Code} - * and {@link module:basic-styles/strikethrough~Strikethrough} - * - * When typed: - * - `**foobar**` – `**` characters are removed and `foobar` is set to bold, - * - `__foobar__` – `__` characters are removed and `foobar` is set to bold, - * - `*foobar*` – `*` characters are removed and `foobar` is set to italic, - * - `_foobar_` – `_` characters are removed and `foobar` is set to italic, - * - ``` `foobar` – ``` ` ``` characters are removed and `foobar` is set to code, - * - `~~foobar~~` – `~~` characters are removed and `foobar` is set to strikethrough. - */ - _addBasicStylesAutoformats() { - const commands = this.editor.commands; - if (commands.get('bold')) { - const boldCallback = getCallbackFunctionForInlineAutoformat(this.editor, 'bold'); - (0,_inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__["default"])(this.editor, this, /(?:^|\s)(\*\*)([^*]+)(\*\*)$/g, boldCallback); - (0,_inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__["default"])(this.editor, this, /(?:^|\s)(__)([^_]+)(__)$/g, boldCallback); - } - if (commands.get('italic')) { - const italicCallback = getCallbackFunctionForInlineAutoformat(this.editor, 'italic'); - // The italic autoformatter cannot be triggered by the bold markers, so we need to check the - // text before the pattern (e.g. `(?:^|[^\*])`). - (0,_inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__["default"])(this.editor, this, /(?:^|\s)(\*)([^*_]+)(\*)$/g, italicCallback); - (0,_inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__["default"])(this.editor, this, /(?:^|\s)(_)([^_]+)(_)$/g, italicCallback); - } - if (commands.get('code')) { - const codeCallback = getCallbackFunctionForInlineAutoformat(this.editor, 'code'); - (0,_inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__["default"])(this.editor, this, /(`)([^`]+)(`)$/g, codeCallback); - } - if (commands.get('strikethrough')) { - const strikethroughCallback = getCallbackFunctionForInlineAutoformat(this.editor, 'strikethrough'); - (0,_inlineautoformatediting__WEBPACK_IMPORTED_MODULE_3__["default"])(this.editor, this, /(~~)([^~]+)(~~)$/g, strikethroughCallback); - } - } - /** - * Adds autoformatting related to {@link module:heading/heading~Heading}. - * - * It is using a number at the end of the command name to associate it with the proper trigger: - * - * * `heading` with a `heading1` value will be executed when typing `#`, - * * `heading` with a `heading2` value will be executed when typing `##`, - * * ... up to `heading6` for `######`. - */ - _addHeadingAutoformats() { - const command = this.editor.commands.get('heading'); - if (command) { - command.modelElements - .filter(name => name.match(/^heading[1-6]$/)) - .forEach(modelName => { - const level = modelName[7]; - const pattern = new RegExp(`^(#{${level}})\\s$`); - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, pattern, () => { - // Should only be active if command is enabled and heading style associated with pattern is inactive. - if (!command.isEnabled || command.value === modelName) { - return false; - } - this.editor.execute('heading', { value: modelName }); - }); - }); - } - } - /** - * Adds autoformatting related to {@link module:block-quote/blockquote~BlockQuote}. - * - * When typed: - * * `> ` – A paragraph will be changed to a block quote. - */ - _addBlockQuoteAutoformats() { - if (this.editor.commands.get('blockQuote')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, /^>\s$/, 'blockQuote'); - } - } - /** - * Adds autoformatting related to {@link module:code-block/codeblock~CodeBlock}. - * - * When typed: - * - `` ``` `` – A paragraph will be changed to a code block. - */ - _addCodeBlockAutoformats() { - const editor = this.editor; - const selection = editor.model.document.selection; - if (editor.commands.get('codeBlock')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(editor, this, /^```$/, () => { - if (selection.getFirstPosition().parent.is('element', 'listItem')) { - return false; - } - this.editor.execute('codeBlock', { - usePreviousLanguageChoice: true - }); - }); - } - } - /** - * Adds autoformatting related to {@link module:horizontal-line/horizontalline~HorizontalLine}. - * - * When typed: - * - `` --- `` – Will be replaced with a horizontal line. - */ - _addHorizontalLineAutoformats() { - if (this.editor.commands.get('horizontalLine')) { - (0,_blockautoformatediting__WEBPACK_IMPORTED_MODULE_2__["default"])(this.editor, this, /^---$/, 'horizontalLine'); - } - } -} -/** - * Helper function for getting `inlineAutoformatEditing` callbacks that checks if command is enabled. - */ -function getCallbackFunctionForInlineAutoformat(editor, attributeKey) { - return (writer, rangesToFormat) => { - const command = editor.commands.get(attributeKey); - if (!command.isEnabled) { - return false; - } - const validRanges = editor.model.schema.getValidRanges(rangesToFormat, attributeKey); - for (const range of validRanges) { - writer.setAttribute(attributeKey, true, range); - } - // After applying attribute to the text, remove given attribute from the selection. - // This way user is able to type a text without attribute used by auto formatter. - writer.removeSelectionAttribute(attributeKey); - }; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-autoformat/src/blockautoformatediting.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-autoformat/src/blockautoformatediting.js ***! - \***********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ blockAutoformatEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_engine__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/engine */ "./node_modules/ckeditor5/src/engine.js"); -/* harmony import */ var ckeditor5_src_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/utils */ "./node_modules/ckeditor5/src/utils.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - -/** - * The block autoformatting engine. It allows to format various block patterns. For example, - * it can be configured to turn a paragraph starting with `*` and followed by a space into a list item. - * - * The autoformatting operation is integrated with the undo manager, - * so the autoformatting step can be undone if the user's intention was not to format the text. - * - * See the {@link module:autoformat/blockautoformatediting~blockAutoformatEditing `blockAutoformatEditing`} documentation - * to learn how to create custom block autoformatters. You can also use - * the {@link module:autoformat/autoformat~Autoformat} feature which enables a set of default autoformatters - * (lists, headings, bold and italic). - * - * @module autoformat/blockautoformatediting - */ -/** - * Creates a listener triggered on {@link module:engine/model/document~Document#event:change:data `change:data`} event in the document. - * Calls the callback when inserted text matches the regular expression or the command name - * if provided instead of the callback. - * - * Examples of usage: - * - * To convert a paragraph into heading 1 when `- ` is typed, using just the command name: - * - * ```ts - * blockAutoformatEditing( editor, plugin, /^\- $/, 'heading1' ); - * ``` - * - * To convert a paragraph into heading 1 when `- ` is typed, using just the callback: - * - * ```ts - * blockAutoformatEditing( editor, plugin, /^\- $/, ( context ) => { - * const { match } = context; - * const headingLevel = match[ 1 ].length; - * - * editor.execute( 'heading', { - * formatId: `heading${ headingLevel }` - * } ); - * } ); - * ``` - * - * @param editor The editor instance. - * @param plugin The autoformat plugin instance. - * @param pattern The regular expression to execute on just inserted text. The regular expression is tested against the text - * from the beginning until the caret position. - * @param callbackOrCommand The callback to execute or the command to run when the text is matched. - * In case of providing the callback, it receives the following parameter: - * * match RegExp.exec() result of matching the pattern to inserted text. - */ -function blockAutoformatEditing(editor, plugin, pattern, callbackOrCommand) { - let callback; - let command = null; - if (typeof callbackOrCommand == 'function') { - callback = callbackOrCommand; - } - else { - // We assume that the actual command name was provided. - command = editor.commands.get(callbackOrCommand); - callback = () => { - editor.execute(callbackOrCommand); - }; - } - editor.model.document.on('change:data', (evt, batch) => { - if (command && !command.isEnabled || !plugin.isEnabled) { - return; - } - const range = (0,ckeditor5_src_utils__WEBPACK_IMPORTED_MODULE_1__.first)(editor.model.document.selection.getRanges()); - if (!range.isCollapsed) { - return; - } - if (batch.isUndo || !batch.isLocal) { - return; - } - const changes = Array.from(editor.model.document.differ.getChanges()); - const entry = changes[0]; - // Typing is represented by only a single change. - if (changes.length != 1 || entry.type !== 'insert' || entry.name != '$text' || entry.length != 1) { - return; - } - const blockToFormat = entry.position.parent; - // Block formatting should be disabled in codeBlocks (#5800). - if (blockToFormat.is('element', 'codeBlock')) { - return; - } - // Only list commands and custom callbacks can be applied inside a list. - if (blockToFormat.is('element', 'listItem') && - typeof callbackOrCommand !== 'function' && - !['numberedList', 'bulletedList', 'todoList'].includes(callbackOrCommand)) { - return; - } - // In case a command is bound, do not re-execute it over an existing block style which would result in a style removal. - // Instead, just drop processing so that autoformat trigger text is not lost. E.g. writing "# " in a level 1 heading. - if (command && command.value === true) { - return; - } - const firstNode = blockToFormat.getChild(0); - const firstNodeRange = editor.model.createRangeOn(firstNode); - // Range is only expected to be within or at the very end of the first text node. - if (!firstNodeRange.containsRange(range) && !range.end.isEqual(firstNodeRange.end)) { - return; - } - const match = pattern.exec(firstNode.data.substr(0, range.end.offset)); - // ...and this text node's data match the pattern. - if (!match) { - return; - } - // Use enqueueChange to create new batch to separate typing batch from the auto-format changes. - editor.model.enqueueChange(writer => { - // Matched range. - const start = writer.createPositionAt(blockToFormat, 0); - const end = writer.createPositionAt(blockToFormat, match[0].length); - const range = new ckeditor5_src_engine__WEBPACK_IMPORTED_MODULE_0__.LiveRange(start, end); - const wasChanged = callback({ match }); - // Remove matched text. - if (wasChanged !== false) { - writer.remove(range); - const selectionRange = editor.model.document.selection.getFirstRange(); - const blockRange = writer.createRangeIn(blockToFormat); - // If the block is empty and the document selection has been moved when - // applying formatting (e.g. is now in newly created block). - if (blockToFormat.isEmpty && !blockRange.isEqual(selectionRange) && !blockRange.containsRange(selectionRange, true)) { - writer.remove(blockToFormat); - } - } - range.detach(); - editor.model.enqueueChange(() => { - const deletePlugin = editor.plugins.get('Delete'); - deletePlugin.requestUndoOnBackspace(); - }); - }); - }); -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-autoformat/src/index.js": -/*!******************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-autoformat/src/index.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Autoformat: () => (/* reexport safe */ _autoformat__WEBPACK_IMPORTED_MODULE_0__["default"]) -/* harmony export */ }); -/* harmony import */ var _autoformat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./autoformat */ "./node_modules/@ckeditor/ckeditor5-autoformat/src/autoformat.js"); -/* harmony import */ var _augmentation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./augmentation */ "./node_modules/@ckeditor/ckeditor5-autoformat/src/augmentation.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module autoformat - */ - - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-autoformat/src/inlineautoformatediting.js": -/*!************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-autoformat/src/inlineautoformatediting.js ***! - \************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ inlineAutoformatEditing) -/* harmony export */ }); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * Enables autoformatting mechanism for a given {@link module:core/editor/editor~Editor}. - * - * It formats the matched text by applying the given model attribute or by running the provided formatting callback. - * On every {@link module:engine/model/document~Document#event:change:data data change} in the model document - * the autoformatting engine checks the text on the left of the selection - * and executes the provided action if the text matches given criteria (regular expression or callback). - * - * @param editor The editor instance. - * @param plugin The autoformat plugin instance. - * @param testRegexpOrCallback The regular expression or callback to execute on text. - * Provided regular expression *must* have three capture groups. The first and the third capture group - * should match opening and closing delimiters. The second capture group should match the text to format. - * - * ```ts - * // Matches the `**bold text**` pattern. - * // There are three capturing groups: - * // - The first to match the starting `**` delimiter. - * // - The second to match the text to format. - * // - The third to match the ending `**` delimiter. - * inlineAutoformatEditing( editor, plugin, /(\*\*)([^\*]+?)(\*\*)$/g, formatCallback ); - * ``` - * - * When a function is provided instead of the regular expression, it will be executed with the text to match as a parameter. - * The function should return proper "ranges" to delete and format. - * - * ```ts - * { - * remove: [ - * [ 0, 1 ], // Remove the first letter from the given text. - * [ 5, 6 ] // Remove the 6th letter from the given text. - * ], - * format: [ - * [ 1, 5 ] // Format all letters from 2nd to 5th. - * ] - * } - * ``` - * - * @param formatCallback A callback to apply actual formatting. - * It should return `false` if changes should not be applied (e.g. if a command is disabled). - * - * ```ts - * inlineAutoformatEditing( editor, plugin, /(\*\*)([^\*]+?)(\*\*)$/g, ( writer, rangesToFormat ) => { - * const command = editor.commands.get( 'bold' ); - * - * if ( !command.isEnabled ) { - * return false; - * } - * - * const validRanges = editor.model.schema.getValidRanges( rangesToFormat, 'bold' ); - * - * for ( let range of validRanges ) { - * writer.setAttribute( 'bold', true, range ); - * } - * } ); - * ``` - */ -function inlineAutoformatEditing(editor, plugin, testRegexpOrCallback, formatCallback) { - let regExp; - let testCallback; - if (testRegexpOrCallback instanceof RegExp) { - regExp = testRegexpOrCallback; - } - else { - testCallback = testRegexpOrCallback; - } - // A test callback run on changed text. - testCallback = testCallback || (text => { - let result; - const remove = []; - const format = []; - while ((result = regExp.exec(text)) !== null) { - // There should be full match and 3 capture groups. - if (result && result.length < 4) { - break; - } - let { index, '1': leftDel, '2': content, '3': rightDel } = result; - // Real matched string - there might be some non-capturing groups so we need to recalculate starting index. - const found = leftDel + content + rightDel; - index += result[0].length - found.length; - // Start and End offsets of delimiters to remove. - const delStart = [ - index, - index + leftDel.length - ]; - const delEnd = [ - index + leftDel.length + content.length, - index + leftDel.length + content.length + rightDel.length - ]; - remove.push(delStart); - remove.push(delEnd); - format.push([index + leftDel.length, index + leftDel.length + content.length]); - } - return { - remove, - format - }; - }); - editor.model.document.on('change:data', (evt, batch) => { - if (batch.isUndo || !batch.isLocal || !plugin.isEnabled) { - return; - } - const model = editor.model; - const selection = model.document.selection; - // Do nothing if selection is not collapsed. - if (!selection.isCollapsed) { - return; - } - const changes = Array.from(model.document.differ.getChanges()); - const entry = changes[0]; - // Typing is represented by only a single change. - if (changes.length != 1 || entry.type !== 'insert' || entry.name != '$text' || entry.length != 1) { - return; - } - const focus = selection.focus; - const block = focus.parent; - const { text, range } = getTextAfterCode(model.createRange(model.createPositionAt(block, 0), focus), model); - const testOutput = testCallback(text); - const rangesToFormat = testOutputToRanges(range.start, testOutput.format, model); - const rangesToRemove = testOutputToRanges(range.start, testOutput.remove, model); - if (!(rangesToFormat.length && rangesToRemove.length)) { - return; - } - // Use enqueueChange to create new batch to separate typing batch from the auto-format changes. - model.enqueueChange(writer => { - // Apply format. - const hasChanged = formatCallback(writer, rangesToFormat); - // Strict check on `false` to have backward compatibility (when callbacks were returning `undefined`). - if (hasChanged === false) { - return; - } - // Remove delimiters - use reversed order to not mix the offsets while removing. - for (const range of rangesToRemove.reverse()) { - writer.remove(range); - } - model.enqueueChange(() => { - const deletePlugin = editor.plugins.get('Delete'); - deletePlugin.requestUndoOnBackspace(); - }); - }); - }); -} -/** - * Converts output of the test function provided to the inlineAutoformatEditing and converts it to the model ranges - * inside provided block. - */ -function testOutputToRanges(start, arrays, model) { - return arrays - .filter(array => (array[0] !== undefined && array[1] !== undefined)) - .map(array => { - return model.createRange(start.getShiftedBy(array[0]), start.getShiftedBy(array[1])); - }); -} -/** - * Returns the last text line after the last code element from the given range. - * It is similar to {@link module:typing/utils/getlasttextline.getLastTextLine `getLastTextLine()`}, - * but it ignores any text before the last `code`. - */ -function getTextAfterCode(range, model) { - let start = range.start; - const text = Array.from(range.getItems()).reduce((rangeText, node) => { - // Trim text to a last occurrence of an inline element and update range start. - if (!(node.is('$text') || node.is('$textProxy')) || node.getAttribute('code')) { - start = model.createPositionAfter(node); - return ''; - } - return rangeText + node.data; - }, ''); - return { text, range: model.createRange(start, range.end) }; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ AttributeCommand) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/attributecommand - */ - -/** - * An extension of the base {@link module:core/command~Command} class, which provides utilities for a command - * that toggles a single attribute on a text or an element. - * - * `AttributeCommand` uses {@link module:engine/model/document~Document#selection} - * to decide which nodes (if any) should be changed, and applies or removes the attribute from them. - * - * The command checks the {@link module:engine/model/model~Model#schema} to decide if it can be enabled - * for the current selection and to which nodes the attribute can be applied. - */ -class AttributeCommand extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Command { - /** - * @param attributeKey Attribute that will be set by the command. - */ - constructor(editor, attributeKey) { - super(editor); - this.attributeKey = attributeKey; - } - /** - * Updates the command's {@link #value} and {@link #isEnabled} based on the current selection. - */ - refresh() { - const model = this.editor.model; - const doc = model.document; - this.value = this._getValueFromFirstAllowedNode(); - this.isEnabled = model.schema.checkAttributeInSelection(doc.selection, this.attributeKey); - } - /** - * Executes the command — applies the attribute to the selection or removes it from the selection. - * - * If the command is active (`value == true`), it will remove attributes. Otherwise, it will set attributes. - * - * The execution result differs, depending on the {@link module:engine/model/document~Document#selection}: - * - * * If the selection is on a range, the command applies the attribute to all nodes in that range - * (if they are allowed to have this attribute by the {@link module:engine/model/schema~Schema schema}). - * * If the selection is collapsed in a non-empty node, the command applies the attribute to the - * {@link module:engine/model/document~Document#selection} itself (note that typed characters copy attributes from the selection). - * * If the selection is collapsed in an empty node, the command applies the attribute to the parent node of the selection (note - * that the selection inherits all attributes from a node if it is in an empty node). - * - * @fires execute - * @param options Command options. - * @param options.forceValue If set, it will force the command behavior. If `true`, - * the command will apply the attribute, otherwise the command will remove the attribute. - * If not set, the command will look for its current value to decide what it should do. - */ - execute(options = {}) { - const model = this.editor.model; - const doc = model.document; - const selection = doc.selection; - const value = (options.forceValue === undefined) ? !this.value : options.forceValue; - model.change(writer => { - if (selection.isCollapsed) { - if (value) { - writer.setSelectionAttribute(this.attributeKey, true); - } - else { - writer.removeSelectionAttribute(this.attributeKey); - } - } - else { - const ranges = model.schema.getValidRanges(selection.getRanges(), this.attributeKey); - for (const range of ranges) { - if (value) { - writer.setAttribute(this.attributeKey, value, range); - } - else { - writer.removeAttribute(this.attributeKey, range); - } - } - } - }); - } - /** - * Checks the attribute value of the first node in the selection that allows the attribute. - * For the collapsed selection returns the selection attribute. - * - * @returns The attribute value. - */ - _getValueFromFirstAllowedNode() { - const model = this.editor.model; - const schema = model.schema; - const selection = model.document.selection; - if (selection.isCollapsed) { - return selection.hasAttribute(this.attributeKey); - } - for (const range of selection.getRanges()) { - for (const item of range.getItems()) { - if (schema.checkAttribute(item, this.attributeKey)) { - return item.hasAttribute(this.attributeKey); - } - } - } - return false; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/augmentation.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/augmentation.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Bold) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _bold_boldediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bold/boldediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldediting.js"); -/* harmony import */ var _bold_boldui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bold/boldui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/bold - */ - - - -/** - * The bold feature. - * - * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide - * and the {@glink api/basic-styles package page}. - * - * This is a "glue" plugin which loads the {@link module:basic-styles/bold/boldediting~BoldEditing bold editing feature} - * and {@link module:basic-styles/bold/boldui~BoldUI bold UI feature}. - */ -class Bold extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_bold_boldediting__WEBPACK_IMPORTED_MODULE_1__["default"], _bold_boldui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Bold'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldediting.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldediting.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ BoldEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/bold/boldediting - */ - - -const BOLD = 'bold'; -/** - * The bold editing feature. - * - * It registers the `'bold'` command and introduces the `bold` attribute in the model which renders to the view - * as a `` element. - */ -class BoldEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'BoldEditing'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow bold attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: BOLD }); - editor.model.schema.setAttributeProperties(BOLD, { - isFormatting: true, - copyOnEnter: true - }); - // Build converter from model to view for data and editing pipelines. - editor.conversion.attributeToElement({ - model: BOLD, - view: 'strong', - upcastAlso: [ - 'b', - viewElement => { - const fontWeight = viewElement.getStyle('font-weight'); - if (!fontWeight) { - return null; - } - // Value of the `font-weight` attribute can be defined as a string or a number. - if (fontWeight == 'bold' || Number(fontWeight) >= 600) { - return { - name: true, - styles: ['font-weight'] - }; - } - return null; - } - ] - }); - // Create bold command. - editor.commands.add(BOLD, new _attributecommand__WEBPACK_IMPORTED_MODULE_1__["default"](editor, BOLD)); - // Set the Ctrl+B keystroke. - editor.keystrokes.set('CTRL+B', BOLD); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldui.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldui.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ BoldUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/bold/boldui - */ - - -const BOLD = 'bold'; -/** - * The bold UI feature. It introduces the Bold button. - */ -class BoldUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'BoldUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add bold button to feature components. - editor.ui.componentFactory.add(BOLD, locale => { - const command = editor.commands.get(BOLD); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Bold'), - icon: ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.icons.bold, - keystroke: 'CTRL+B', - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(BOLD); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/code.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Code) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _code_codeediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./code/codeediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeediting.js"); -/* harmony import */ var _code_codeui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./code/codeui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeui.js"); -/* harmony import */ var _theme_code_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../theme/code.css */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/code - */ - - - - -/** - * The code feature. - * - * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide - * and the {@glink api/basic-styles package page}. - * - * This is a "glue" plugin which loads the {@link module:basic-styles/code/codeediting~CodeEditing code editing feature} - * and {@link module:basic-styles/code/codeui~CodeUI code UI feature}. - */ -class Code extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_code_codeediting__WEBPACK_IMPORTED_MODULE_1__["default"], _code_codeui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Code'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeediting.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeediting.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ CodeEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/typing */ "./node_modules/ckeditor5/src/typing.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/code/codeediting - */ - - - -const CODE = 'code'; -const HIGHLIGHT_CLASS = 'ck-code_selected'; -/** - * The code editing feature. - * - * It registers the `'code'` command and introduces the `code` attribute in the model which renders to the view - * as a `` element. - */ -class CodeEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'CodeEditing'; - } - /** - * @inheritDoc - */ - static get requires() { - return [ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_1__.TwoStepCaretMovement]; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow code attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: CODE }); - editor.model.schema.setAttributeProperties(CODE, { - isFormatting: true, - copyOnEnter: false - }); - editor.conversion.attributeToElement({ - model: CODE, - view: 'code', - upcastAlso: { - styles: { - 'word-wrap': 'break-word' - } - } - }); - // Create code command. - editor.commands.add(CODE, new _attributecommand__WEBPACK_IMPORTED_MODULE_2__["default"](editor, CODE)); - // Enable two-step caret movement for `code` attribute. - editor.plugins.get(ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_1__.TwoStepCaretMovement).registerAttribute(CODE); - // Setup highlight over selected element. - (0,ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_1__.inlineHighlight)(editor, CODE, 'code', HIGHLIGHT_CLASS); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeui.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeui.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ CodeUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_icons_code_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../theme/icons/code.svg */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/code.svg"); -/* harmony import */ var _theme_code_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../theme/code.css */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/code/codeui - */ - - - - -const CODE = 'code'; -/** - * The code UI feature. It introduces the Code button. - */ -class CodeUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'CodeUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add code button to feature components. - editor.ui.componentFactory.add(CODE, locale => { - const command = editor.commands.get(CODE); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Code'), - icon: _theme_icons_code_svg__WEBPACK_IMPORTED_MODULE_2__["default"], - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(CODE); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/index.js": -/*!********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/index.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Bold: () => (/* reexport safe */ _bold__WEBPACK_IMPORTED_MODULE_0__["default"]), -/* harmony export */ BoldEditing: () => (/* reexport safe */ _bold_boldediting__WEBPACK_IMPORTED_MODULE_1__["default"]), -/* harmony export */ BoldUI: () => (/* reexport safe */ _bold_boldui__WEBPACK_IMPORTED_MODULE_2__["default"]), -/* harmony export */ Code: () => (/* reexport safe */ _code__WEBPACK_IMPORTED_MODULE_3__["default"]), -/* harmony export */ CodeEditing: () => (/* reexport safe */ _code_codeediting__WEBPACK_IMPORTED_MODULE_4__["default"]), -/* harmony export */ CodeUI: () => (/* reexport safe */ _code_codeui__WEBPACK_IMPORTED_MODULE_5__["default"]), -/* harmony export */ Italic: () => (/* reexport safe */ _italic__WEBPACK_IMPORTED_MODULE_6__["default"]), -/* harmony export */ ItalicEditing: () => (/* reexport safe */ _italic_italicediting__WEBPACK_IMPORTED_MODULE_7__["default"]), -/* harmony export */ ItalicUI: () => (/* reexport safe */ _italic_italicui__WEBPACK_IMPORTED_MODULE_8__["default"]), -/* harmony export */ Strikethrough: () => (/* reexport safe */ _strikethrough__WEBPACK_IMPORTED_MODULE_9__["default"]), -/* harmony export */ StrikethroughEditing: () => (/* reexport safe */ _strikethrough_strikethroughediting__WEBPACK_IMPORTED_MODULE_10__["default"]), -/* harmony export */ StrikethroughUI: () => (/* reexport safe */ _strikethrough_strikethroughui__WEBPACK_IMPORTED_MODULE_11__["default"]), -/* harmony export */ Subscript: () => (/* reexport safe */ _subscript__WEBPACK_IMPORTED_MODULE_12__["default"]), -/* harmony export */ SubscriptEditing: () => (/* reexport safe */ _subscript_subscriptediting__WEBPACK_IMPORTED_MODULE_13__["default"]), -/* harmony export */ SubscriptUI: () => (/* reexport safe */ _subscript_subscriptui__WEBPACK_IMPORTED_MODULE_14__["default"]), -/* harmony export */ Superscript: () => (/* reexport safe */ _superscript__WEBPACK_IMPORTED_MODULE_15__["default"]), -/* harmony export */ SuperscriptEditing: () => (/* reexport safe */ _superscript_superscriptediting__WEBPACK_IMPORTED_MODULE_16__["default"]), -/* harmony export */ SuperscriptUI: () => (/* reexport safe */ _superscript_superscriptui__WEBPACK_IMPORTED_MODULE_17__["default"]), -/* harmony export */ Underline: () => (/* reexport safe */ _underline__WEBPACK_IMPORTED_MODULE_18__["default"]), -/* harmony export */ UnderlineEditing: () => (/* reexport safe */ _underline_underlineediting__WEBPACK_IMPORTED_MODULE_19__["default"]), -/* harmony export */ UnderlineUI: () => (/* reexport safe */ _underline_underlineui__WEBPACK_IMPORTED_MODULE_20__["default"]) -/* harmony export */ }); -/* harmony import */ var _bold__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bold */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold.js"); -/* harmony import */ var _bold_boldediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bold/boldediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldediting.js"); -/* harmony import */ var _bold_boldui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./bold/boldui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldui.js"); -/* harmony import */ var _code__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./code */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code.js"); -/* harmony import */ var _code_codeediting__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./code/codeediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeediting.js"); -/* harmony import */ var _code_codeui__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./code/codeui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeui.js"); -/* harmony import */ var _italic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./italic */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic.js"); -/* harmony import */ var _italic_italicediting__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./italic/italicediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicediting.js"); -/* harmony import */ var _italic_italicui__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./italic/italicui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicui.js"); -/* harmony import */ var _strikethrough__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./strikethrough */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough.js"); -/* harmony import */ var _strikethrough_strikethroughediting__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./strikethrough/strikethroughediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughediting.js"); -/* harmony import */ var _strikethrough_strikethroughui__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./strikethrough/strikethroughui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughui.js"); -/* harmony import */ var _subscript__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./subscript */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript.js"); -/* harmony import */ var _subscript_subscriptediting__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./subscript/subscriptediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptediting.js"); -/* harmony import */ var _subscript_subscriptui__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./subscript/subscriptui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptui.js"); -/* harmony import */ var _superscript__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./superscript */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript.js"); -/* harmony import */ var _superscript_superscriptediting__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./superscript/superscriptediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptediting.js"); -/* harmony import */ var _superscript_superscriptui__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./superscript/superscriptui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptui.js"); -/* harmony import */ var _underline__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./underline */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline.js"); -/* harmony import */ var _underline_underlineediting__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./underline/underlineediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineediting.js"); -/* harmony import */ var _underline_underlineui__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./underline/underlineui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineui.js"); -/* harmony import */ var _augmentation__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./augmentation */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/augmentation.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles - */ - - - - - - - - - - - - - - - - - - - - - - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Italic) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _italic_italicediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./italic/italicediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicediting.js"); -/* harmony import */ var _italic_italicui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./italic/italicui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/italic - */ - - - -/** - * The italic feature. - * - * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide - * and the {@glink api/basic-styles package page}. - * - * This is a "glue" plugin which loads the {@link module:basic-styles/italic/italicediting~ItalicEditing} and - * {@link module:basic-styles/italic/italicui~ItalicUI} plugins. - */ -class Italic extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_italic_italicediting__WEBPACK_IMPORTED_MODULE_1__["default"], _italic_italicui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Italic'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicediting.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicediting.js ***! - \***********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ ItalicEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/italic/italicediting - */ - - -const ITALIC = 'italic'; -/** - * The italic editing feature. - * - * It registers the `'italic'` command, the Ctrl+I keystroke and introduces the `italic` attribute in the model - * which renders to the view as an `` element. - */ -class ItalicEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'ItalicEditing'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow italic attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: ITALIC }); - editor.model.schema.setAttributeProperties(ITALIC, { - isFormatting: true, - copyOnEnter: true - }); - editor.conversion.attributeToElement({ - model: ITALIC, - view: 'i', - upcastAlso: [ - 'em', - { - styles: { - 'font-style': 'italic' - } - } - ] - }); - // Create italic command. - editor.commands.add(ITALIC, new _attributecommand__WEBPACK_IMPORTED_MODULE_1__["default"](editor, ITALIC)); - // Set the Ctrl+I keystroke. - editor.keystrokes.set('CTRL+I', ITALIC); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicui.js": -/*!******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicui.js ***! - \******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ ItalicUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_icons_italic_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../theme/icons/italic.svg */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/italic.svg"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/italic/italicui - */ - - - -const ITALIC = 'italic'; -/** - * The italic UI feature. It introduces the Italic button. - */ -class ItalicUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'ItalicUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add bold button to feature components. - editor.ui.componentFactory.add(ITALIC, locale => { - const command = editor.commands.get(ITALIC); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Italic'), - icon: _theme_icons_italic_svg__WEBPACK_IMPORTED_MODULE_2__["default"], - keystroke: 'CTRL+I', - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(ITALIC); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough.js": -/*!****************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough.js ***! - \****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Strikethrough) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _strikethrough_strikethroughediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./strikethrough/strikethroughediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughediting.js"); -/* harmony import */ var _strikethrough_strikethroughui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./strikethrough/strikethroughui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/strikethrough - */ - - - -/** - * The strikethrough feature. - * - * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide - * and the {@glink api/basic-styles package page}. - * - * This is a "glue" plugin which loads the {@link module:basic-styles/strikethrough/strikethroughediting~StrikethroughEditing} and - * {@link module:basic-styles/strikethrough/strikethroughui~StrikethroughUI} plugins. - */ -class Strikethrough extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_strikethrough_strikethroughediting__WEBPACK_IMPORTED_MODULE_1__["default"], _strikethrough_strikethroughui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Strikethrough'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughediting.js": -/*!*************************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughediting.js ***! - \*************************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ StrikethroughEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/strikethrough/strikethroughediting - */ - - -const STRIKETHROUGH = 'strikethrough'; -/** - * The strikethrough editing feature. - * - * It registers the `'strikethrough'` command, the Ctrl+Shift+X keystroke and introduces the - * `strikethroughsthrough` attribute in the model which renders to the view - * as a `` element. - */ -class StrikethroughEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'StrikethroughEditing'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow strikethrough attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: STRIKETHROUGH }); - editor.model.schema.setAttributeProperties(STRIKETHROUGH, { - isFormatting: true, - copyOnEnter: true - }); - editor.conversion.attributeToElement({ - model: STRIKETHROUGH, - view: 's', - upcastAlso: [ - 'del', - 'strike', - { - styles: { - 'text-decoration': 'line-through' - } - } - ] - }); - // Create strikethrough command. - editor.commands.add(STRIKETHROUGH, new _attributecommand__WEBPACK_IMPORTED_MODULE_1__["default"](editor, STRIKETHROUGH)); - // Set the Ctrl+Shift+X keystroke. - editor.keystrokes.set('CTRL+SHIFT+X', 'strikethrough'); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughui.js": -/*!********************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughui.js ***! - \********************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ StrikethroughUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_icons_strikethrough_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../theme/icons/strikethrough.svg */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/strikethrough.svg"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/strikethrough/strikethroughui - */ - - - -const STRIKETHROUGH = 'strikethrough'; -/** - * The strikethrough UI feature. It introduces the Strikethrough button. - */ -class StrikethroughUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'StrikethroughUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add strikethrough button to feature components. - editor.ui.componentFactory.add(STRIKETHROUGH, locale => { - const command = editor.commands.get(STRIKETHROUGH); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Strikethrough'), - icon: _theme_icons_strikethrough_svg__WEBPACK_IMPORTED_MODULE_2__["default"], - keystroke: 'CTRL+SHIFT+X', - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(STRIKETHROUGH); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Subscript) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _subscript_subscriptediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscript/subscriptediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptediting.js"); -/* harmony import */ var _subscript_subscriptui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscript/subscriptui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/subscript - */ - - - -/** - * The subscript feature. - * - * It loads the {@link module:basic-styles/subscript/subscriptediting~SubscriptEditing} and - * {@link module:basic-styles/subscript/subscriptui~SubscriptUI} plugins. - */ -class Subscript extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_subscript_subscriptediting__WEBPACK_IMPORTED_MODULE_1__["default"], _subscript_subscriptui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Subscript'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptediting.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptediting.js ***! - \*****************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ SubscriptEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/subscript/subscriptediting - */ - - -const SUBSCRIPT = 'subscript'; -/** - * The subscript editing feature. - * - * It registers the `sub` command and introduces the `sub` attribute in the model which renders to the view - * as a `` element. - */ -class SubscriptEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'SubscriptEditing'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow sub attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: SUBSCRIPT }); - editor.model.schema.setAttributeProperties(SUBSCRIPT, { - isFormatting: true, - copyOnEnter: true - }); - // Build converter from model to view for data and editing pipelines. - editor.conversion.attributeToElement({ - model: SUBSCRIPT, - view: 'sub', - upcastAlso: [ - { - styles: { - 'vertical-align': 'sub' - } - } - ] - }); - // Create sub command. - editor.commands.add(SUBSCRIPT, new _attributecommand__WEBPACK_IMPORTED_MODULE_1__["default"](editor, SUBSCRIPT)); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptui.js": -/*!************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/subscript/subscriptui.js ***! - \************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ SubscriptUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../theme/icons/subscript.svg */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/subscript.svg"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/subscript/subscriptui - */ - - - -const SUBSCRIPT = 'subscript'; -/** - * The subscript UI feature. It introduces the Subscript button. - */ -class SubscriptUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'SubscriptUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add subscript button to feature components. - editor.ui.componentFactory.add(SUBSCRIPT, locale => { - const command = editor.commands.get(SUBSCRIPT); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Subscript'), - icon: _theme_icons_subscript_svg__WEBPACK_IMPORTED_MODULE_2__["default"], - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(SUBSCRIPT); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Superscript) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _superscript_superscriptediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./superscript/superscriptediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptediting.js"); -/* harmony import */ var _superscript_superscriptui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./superscript/superscriptui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/superscript - */ - - - -/** - * The superscript feature. - * - * It loads the {@link module:basic-styles/superscript/superscriptediting~SuperscriptEditing} and - * {@link module:basic-styles/superscript/superscriptui~SuperscriptUI} plugins. - */ -class Superscript extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_superscript_superscriptediting__WEBPACK_IMPORTED_MODULE_1__["default"], _superscript_superscriptui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Superscript'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptediting.js": -/*!*********************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptediting.js ***! - \*********************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ SuperscriptEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/superscript/superscriptediting - */ - - -const SUPERSCRIPT = 'superscript'; -/** - * The superscript editing feature. - * - * It registers the `super` command and introduces the `super` attribute in the model which renders to the view - * as a `` element. - */ -class SuperscriptEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'SuperscriptEditing'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow super attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: SUPERSCRIPT }); - editor.model.schema.setAttributeProperties(SUPERSCRIPT, { - isFormatting: true, - copyOnEnter: true - }); - // Build converter from model to view for data and editing pipelines. - editor.conversion.attributeToElement({ - model: SUPERSCRIPT, - view: 'sup', - upcastAlso: [ - { - styles: { - 'vertical-align': 'super' - } - } - ] - }); - // Create super command. - editor.commands.add(SUPERSCRIPT, new _attributecommand__WEBPACK_IMPORTED_MODULE_1__["default"](editor, SUPERSCRIPT)); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptui.js": -/*!****************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/superscript/superscriptui.js ***! - \****************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ SuperscriptUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../theme/icons/superscript.svg */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/superscript.svg"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/superscript/superscriptui - */ - - - -const SUPERSCRIPT = 'superscript'; -/** - * The superscript UI feature. It introduces the Superscript button. - */ -class SuperscriptUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'SuperscriptUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add superscript button to feature components. - editor.ui.componentFactory.add(SUPERSCRIPT, locale => { - const command = editor.commands.get(SUPERSCRIPT); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Superscript'), - icon: _theme_icons_superscript_svg__WEBPACK_IMPORTED_MODULE_2__["default"], - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(SUPERSCRIPT); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Underline) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _underline_underlineediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./underline/underlineediting */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineediting.js"); -/* harmony import */ var _underline_underlineui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./underline/underlineui */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/underline - */ - - - -/** - * The underline feature. - * - * For a detailed overview check the {@glink features/basic-styles Basic styles feature} guide - * and the {@glink api/basic-styles package page}. - * - * This is a "glue" plugin which loads the {@link module:basic-styles/underline/underlineediting~UnderlineEditing} and - * {@link module:basic-styles/underline/underlineui~UnderlineUI} plugins. - */ -class Underline extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_underline_underlineediting__WEBPACK_IMPORTED_MODULE_1__["default"], _underline_underlineui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'Underline'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineediting.js": -/*!*****************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineediting.js ***! - \*****************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ UnderlineEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _attributecommand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributecommand */ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/underline/underlineediting - */ - - -const UNDERLINE = 'underline'; -/** - * The underline editing feature. - * - * It registers the `'underline'` command, the Ctrl+U keystroke - * and introduces the `underline` attribute in the model which renders to the view as an `` element. - */ -class UnderlineEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'UnderlineEditing'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - // Allow strikethrough attribute on text nodes. - editor.model.schema.extend('$text', { allowAttributes: UNDERLINE }); - editor.model.schema.setAttributeProperties(UNDERLINE, { - isFormatting: true, - copyOnEnter: true - }); - editor.conversion.attributeToElement({ - model: UNDERLINE, - view: 'u', - upcastAlso: { - styles: { - 'text-decoration': 'underline' - } - } - }); - // Create underline command. - editor.commands.add(UNDERLINE, new _attributecommand__WEBPACK_IMPORTED_MODULE_1__["default"](editor, UNDERLINE)); - // Set the Ctrl+U keystroke. - editor.keystrokes.set('CTRL+U', 'underline'); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineui.js": -/*!************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-basic-styles/src/underline/underlineui.js ***! - \************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ UnderlineUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_icons_underline_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../theme/icons/underline.svg */ "./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/underline.svg"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module basic-styles/underline/underlineui - */ - - - -const UNDERLINE = 'underline'; -/** - * The underline UI feature. It introduces the Underline button. - */ -class UnderlineUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'UnderlineUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - // Add bold button to feature components. - editor.ui.componentFactory.add(UNDERLINE, locale => { - const command = editor.commands.get(UNDERLINE); - const view = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - view.set({ - label: t('Underline'), - icon: _theme_icons_underline_svg__WEBPACK_IMPORTED_MODULE_2__["default"], - keystroke: 'CTRL+U', - tooltip: true, - isToggleable: true - }); - view.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(view, 'execute', () => { - editor.execute(UNDERLINE); - editor.editing.view.focus(); - }); - return view; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-block-quote/src/augmentation.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-block-quote/src/augmentation.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquote.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquote.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ BlockQuote) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var _blockquoteediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blockquoteediting */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteediting.js"); -/* harmony import */ var _blockquoteui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blockquoteui */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteui.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module block-quote/blockquote - */ - - - -/** - * The block quote plugin. - * - * For more information about this feature check the {@glink api/block-quote package page}. - * - * This is a "glue" plugin which loads the {@link module:block-quote/blockquoteediting~BlockQuoteEditing block quote editing feature} - * and {@link module:block-quote/blockquoteui~BlockQuoteUI block quote UI feature}. - * - * @extends module:core/plugin~Plugin - */ -class BlockQuote extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get requires() { - return [_blockquoteediting__WEBPACK_IMPORTED_MODULE_1__["default"], _blockquoteui__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'BlockQuote'; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquotecommand.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquotecommand.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ BlockQuoteCommand) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/utils */ "./node_modules/ckeditor5/src/utils.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module block-quote/blockquotecommand - */ - - -/** - * The block quote command plugin. - * - * @extends module:core/command~Command - */ -class BlockQuoteCommand extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Command { - /** - * @inheritDoc - */ - refresh() { - this.value = this._getValue(); - this.isEnabled = this._checkEnabled(); - } - /** - * Executes the command. When the command {@link #value is on}, all top-most block quotes within - * the selection will be removed. If it is off, all selected blocks will be wrapped with - * a block quote. - * - * @fires execute - * @param options Command options. - * @param options.forceValue If set, it will force the command behavior. If `true`, the command will apply a block quote, - * otherwise the command will remove the block quote. If not set, the command will act basing on its current value. - */ - execute(options = {}) { - const model = this.editor.model; - const schema = model.schema; - const selection = model.document.selection; - const blocks = Array.from(selection.getSelectedBlocks()); - const value = (options.forceValue === undefined) ? !this.value : options.forceValue; - model.change(writer => { - if (!value) { - this._removeQuote(writer, blocks.filter(findQuote)); - } - else { - const blocksToQuote = blocks.filter(block => { - // Already quoted blocks needs to be considered while quoting too - // in order to reuse their elements. - return findQuote(block) || checkCanBeQuoted(schema, block); - }); - this._applyQuote(writer, blocksToQuote); - } - }); - } - /** - * Checks the command's {@link #value}. - */ - _getValue() { - const selection = this.editor.model.document.selection; - const firstBlock = (0,ckeditor5_src_utils__WEBPACK_IMPORTED_MODULE_1__.first)(selection.getSelectedBlocks()); - // In the current implementation, the block quote must be an immediate parent of a block element. - return !!(firstBlock && findQuote(firstBlock)); - } - /** - * Checks whether the command can be enabled in the current context. - * - * @returns Whether the command should be enabled. - */ - _checkEnabled() { - if (this.value) { - return true; - } - const selection = this.editor.model.document.selection; - const schema = this.editor.model.schema; - const firstBlock = (0,ckeditor5_src_utils__WEBPACK_IMPORTED_MODULE_1__.first)(selection.getSelectedBlocks()); - if (!firstBlock) { - return false; - } - return checkCanBeQuoted(schema, firstBlock); - } - /** - * Removes the quote from given blocks. - * - * If blocks which are supposed to be "unquoted" are in the middle of a quote, - * start it or end it, then the quote will be split (if needed) and the blocks - * will be moved out of it, so other quoted blocks remained quoted. - */ - _removeQuote(writer, blocks) { - // Unquote all groups of block. Iterate in the reverse order to not break following ranges. - getRangesOfBlockGroups(writer, blocks).reverse().forEach(groupRange => { - if (groupRange.start.isAtStart && groupRange.end.isAtEnd) { - writer.unwrap(groupRange.start.parent); - return; - } - // The group of blocks are at the beginning of an so let's move them left (out of the ). - if (groupRange.start.isAtStart) { - const positionBefore = writer.createPositionBefore(groupRange.start.parent); - writer.move(groupRange, positionBefore); - return; - } - // The blocks are in the middle of an so we need to split the after the last block - // so we move the items there. - if (!groupRange.end.isAtEnd) { - writer.split(groupRange.end); - } - // Now we are sure that groupRange.end.isAtEnd is true, so let's move the blocks right. - const positionAfter = writer.createPositionAfter(groupRange.end.parent); - writer.move(groupRange, positionAfter); - }); - } - /** - * Applies the quote to given blocks. - */ - _applyQuote(writer, blocks) { - const quotesToMerge = []; - // Quote all groups of block. Iterate in the reverse order to not break following ranges. - getRangesOfBlockGroups(writer, blocks).reverse().forEach(groupRange => { - let quote = findQuote(groupRange.start); - if (!quote) { - quote = writer.createElement('blockQuote'); - writer.wrap(groupRange, quote); - } - quotesToMerge.push(quote); - }); - // Merge subsequent elements. Reverse the order again because this time we want to go through - // the elements in the source order (due to how merge works – it moves the right element's content - // to the first element and removes the right one. Since we may need to merge a couple of subsequent `` elements - // we want to keep the reference to the first (furthest left) one. - quotesToMerge.reverse().reduce((currentQuote, nextQuote) => { - if (currentQuote.nextSibling == nextQuote) { - writer.merge(writer.createPositionAfter(currentQuote)); - return currentQuote; - } - return nextQuote; - }); - } -} -function findQuote(elementOrPosition) { - return elementOrPosition.parent.name == 'blockQuote' ? elementOrPosition.parent : null; -} -/** - * Returns a minimal array of ranges containing groups of subsequent blocks. - * - * content: abcdefgh - * blocks: [ a, b, d, f, g, h ] - * output ranges: [ab]c[d]e[fgh] - */ -function getRangesOfBlockGroups(writer, blocks) { - let startPosition; - let i = 0; - const ranges = []; - while (i < blocks.length) { - const block = blocks[i]; - const nextBlock = blocks[i + 1]; - if (!startPosition) { - startPosition = writer.createPositionBefore(block); - } - if (!nextBlock || block.nextSibling != nextBlock) { - ranges.push(writer.createRange(startPosition, writer.createPositionAfter(block))); - startPosition = null; - } - i++; - } - return ranges; -} -/** - * Checks whether can wrap the block. - */ -function checkCanBeQuoted(schema, block) { - // TMP will be replaced with schema.checkWrap(). - const isBQAllowed = schema.checkChild(block.parent, 'blockQuote'); - const isBlockAllowedInBQ = schema.checkChild(['$root', 'blockQuote'], block); - return isBQAllowed && isBlockAllowedInBQ; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteediting.js": -/*!*******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteediting.js ***! - \*******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ BlockQuoteEditing) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_enter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/enter */ "./node_modules/ckeditor5/src/enter.js"); -/* harmony import */ var ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ckeditor5/src/typing */ "./node_modules/ckeditor5/src/typing.js"); -/* harmony import */ var _blockquotecommand__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blockquotecommand */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquotecommand.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module block-quote/blockquoteediting - */ - - - - -/** - * The block quote editing. - * - * Introduces the `'blockQuote'` command and the `'blockQuote'` model element. - * - * @extends module:core/plugin~Plugin - */ -class BlockQuoteEditing extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'BlockQuoteEditing'; - } - /** - * @inheritDoc - */ - static get requires() { - return [ckeditor5_src_enter__WEBPACK_IMPORTED_MODULE_1__.Enter, ckeditor5_src_typing__WEBPACK_IMPORTED_MODULE_2__.Delete]; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const schema = editor.model.schema; - editor.commands.add('blockQuote', new _blockquotecommand__WEBPACK_IMPORTED_MODULE_3__["default"](editor)); - schema.register('blockQuote', { - inheritAllFrom: '$container' - }); - editor.conversion.elementToElement({ model: 'blockQuote', view: 'blockquote' }); - // Postfixer which cleans incorrect model states connected with block quotes. - editor.model.document.registerPostFixer(writer => { - const changes = editor.model.document.differ.getChanges(); - for (const entry of changes) { - if (entry.type == 'insert') { - const element = entry.position.nodeAfter; - if (!element) { - // We are inside a text node. - continue; - } - if (element.is('element', 'blockQuote') && element.isEmpty) { - // Added an empty blockQuote - remove it. - writer.remove(element); - return true; - } - else if (element.is('element', 'blockQuote') && !schema.checkChild(entry.position, element)) { - // Added a blockQuote in incorrect place. Unwrap it so the content inside is not lost. - writer.unwrap(element); - return true; - } - else if (element.is('element')) { - // Just added an element. Check that all children meet the scheme rules. - const range = writer.createRangeIn(element); - for (const child of range.getItems()) { - if (child.is('element', 'blockQuote') && - !schema.checkChild(writer.createPositionBefore(child), child)) { - writer.unwrap(child); - return true; - } - } - } - } - else if (entry.type == 'remove') { - const parent = entry.position.parent; - if (parent.is('element', 'blockQuote') && parent.isEmpty) { - // Something got removed and now blockQuote is empty. Remove the blockQuote as well. - writer.remove(parent); - return true; - } - } - } - return false; - }); - const viewDocument = this.editor.editing.view.document; - const selection = editor.model.document.selection; - const blockQuoteCommand = editor.commands.get('blockQuote'); - // Overwrite default Enter key behavior. - // If Enter key is pressed with selection collapsed in empty block inside a quote, break the quote. - this.listenTo(viewDocument, 'enter', (evt, data) => { - if (!selection.isCollapsed || !blockQuoteCommand.value) { - return; - } - const positionParent = selection.getLastPosition().parent; - if (positionParent.isEmpty) { - editor.execute('blockQuote'); - editor.editing.view.scrollToTheSelection(); - data.preventDefault(); - evt.stop(); - } - }, { context: 'blockquote' }); - // Overwrite default Backspace key behavior. - // If Backspace key is pressed with selection collapsed in first empty block inside a quote, break the quote. - this.listenTo(viewDocument, 'delete', (evt, data) => { - if (data.direction != 'backward' || !selection.isCollapsed || !blockQuoteCommand.value) { - return; - } - const positionParent = selection.getLastPosition().parent; - if (positionParent.isEmpty && !positionParent.previousSibling) { - editor.execute('blockQuote'); - editor.editing.view.scrollToTheSelection(); - data.preventDefault(); - evt.stop(); - } - }, { context: 'blockquote' }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteui.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteui.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ BlockQuoteUI) -/* harmony export */ }); -/* harmony import */ var ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ckeditor5/src/core */ "./node_modules/ckeditor5/src/core.js"); -/* harmony import */ var ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ckeditor5/src/ui */ "./node_modules/ckeditor5/src/ui.js"); -/* harmony import */ var _theme_blockquote_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../theme/blockquote.css */ "./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module block-quote/blockquoteui - */ - - - -/** - * The block quote UI plugin. - * - * It introduces the `'blockQuote'` button. - * - * @extends module:core/plugin~Plugin - */ -class BlockQuoteUI extends ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'BlockQuoteUI'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const t = editor.t; - editor.ui.componentFactory.add('blockQuote', locale => { - const command = editor.commands.get('blockQuote'); - const buttonView = new ckeditor5_src_ui__WEBPACK_IMPORTED_MODULE_1__.ButtonView(locale); - buttonView.set({ - label: t('Block quote'), - icon: ckeditor5_src_core__WEBPACK_IMPORTED_MODULE_0__.icons.quote, - tooltip: true, - isToggleable: true - }); - // Bind button model to command. - buttonView.bind('isOn', 'isEnabled').to(command, 'value', 'isEnabled'); - // Execute command. - this.listenTo(buttonView, 'execute', () => { - editor.execute('blockQuote'); - editor.editing.view.focus(); - }); - return buttonView; - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-block-quote/src/index.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-block-quote/src/index.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ BlockQuote: () => (/* reexport safe */ _blockquote__WEBPACK_IMPORTED_MODULE_0__["default"]), -/* harmony export */ BlockQuoteEditing: () => (/* reexport safe */ _blockquoteediting__WEBPACK_IMPORTED_MODULE_1__["default"]), -/* harmony export */ BlockQuoteUI: () => (/* reexport safe */ _blockquoteui__WEBPACK_IMPORTED_MODULE_2__["default"]) -/* harmony export */ }); -/* harmony import */ var _blockquote__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blockquote */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquote.js"); -/* harmony import */ var _blockquoteediting__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blockquoteediting */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteediting.js"); -/* harmony import */ var _blockquoteui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blockquoteui */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteui.js"); -/* harmony import */ var _augmentation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./augmentation */ "./node_modules/@ckeditor/ckeditor5-block-quote/src/augmentation.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module block-quote - */ - - - - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/augmentation.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/augmentation.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboard.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboard.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Clipboard) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _clipboardpipeline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clipboardpipeline */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js"); -/* harmony import */ var _dragdrop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dragdrop */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdrop.js"); -/* harmony import */ var _pasteplaintext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pasteplaintext */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/pasteplaintext.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/clipboard - */ - - - - -/** - * The clipboard feature. - * - * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide. - * - * This is a "glue" plugin which loads the following plugins: - * * {@link module:clipboard/clipboardpipeline~ClipboardPipeline} - * * {@link module:clipboard/dragdrop~DragDrop} - * * {@link module:clipboard/pasteplaintext~PastePlainText} - */ -class Clipboard extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'Clipboard'; - } - /** - * @inheritDoc - */ - static get requires() { - return [_clipboardpipeline__WEBPACK_IMPORTED_MODULE_1__["default"], _dragdrop__WEBPACK_IMPORTED_MODULE_2__["default"], _pasteplaintext__WEBPACK_IMPORTED_MODULE_3__["default"]]; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ ClipboardObserver) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-engine */ "./node_modules/@ckeditor/ckeditor5-engine/src/index.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/clipboardobserver - */ - - -/** - * Clipboard events observer. - * - * Fires the following events: - * - * * {@link module:engine/view/document~Document#event:clipboardInput}, - * * {@link module:engine/view/document~Document#event:paste}, - * * {@link module:engine/view/document~Document#event:copy}, - * * {@link module:engine/view/document~Document#event:cut}, - * * {@link module:engine/view/document~Document#event:drop}, - * * {@link module:engine/view/document~Document#event:dragover}, - * * {@link module:engine/view/document~Document#event:dragging}, - * * {@link module:engine/view/document~Document#event:dragstart}, - * * {@link module:engine/view/document~Document#event:dragend}, - * * {@link module:engine/view/document~Document#event:dragenter}, - * * {@link module:engine/view/document~Document#event:dragleave}. - * - * **Note**: This observer is not available by default (ckeditor5-engine does not add it on its own). - * To make it available, it needs to be added to {@link module:engine/view/document~Document} by using - * the {@link module:engine/view/view~View#addObserver `View#addObserver()`} method. Alternatively, you can load the - * {@link module:clipboard/clipboard~Clipboard} plugin which adds this observer automatically (because it uses it). - */ -class ClipboardObserver extends _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.DomEventObserver { - constructor(view) { - super(view); - this.domEventType = [ - 'paste', 'copy', 'cut', 'drop', 'dragover', 'dragstart', 'dragend', 'dragenter', 'dragleave' - ]; - const viewDocument = this.document; - this.listenTo(viewDocument, 'paste', handleInput('clipboardInput'), { priority: 'low' }); - this.listenTo(viewDocument, 'drop', handleInput('clipboardInput'), { priority: 'low' }); - this.listenTo(viewDocument, 'dragover', handleInput('dragging'), { priority: 'low' }); - function handleInput(type) { - return (evt, data) => { - data.preventDefault(); - const targetRanges = data.dropRange ? [data.dropRange] : null; - const eventInfo = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.EventInfo(viewDocument, type); - viewDocument.fire(eventInfo, { - dataTransfer: data.dataTransfer, - method: evt.name, - targetRanges, - target: data.target, - domEvent: data.domEvent - }); - // If CKEditor handled the input, do not bubble the original event any further. - // This helps external integrations recognize that fact and act accordingly. - // https://github.com/ckeditor/ckeditor5-upload/issues/92 - if (eventInfo.stop.called) { - data.stopPropagation(); - } - }; - } - } - onDomEvent(domEvent) { - const nativeDataTransfer = 'clipboardData' in domEvent ? domEvent.clipboardData : domEvent.dataTransfer; - const cacheFiles = domEvent.type == 'drop' || domEvent.type == 'paste'; - const evtData = { - dataTransfer: new _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.DataTransfer(nativeDataTransfer, { cacheFiles }) - }; - if (domEvent.type == 'drop' || domEvent.type == 'dragover') { - evtData.dropRange = getDropViewRange(this.view, domEvent); - } - this.fire(domEvent.type, domEvent, evtData); - } -} -function getDropViewRange(view, domEvent) { - const domDoc = domEvent.target.ownerDocument; - const x = domEvent.clientX; - const y = domEvent.clientY; - let domRange; - // Webkit & Blink. - if (domDoc.caretRangeFromPoint && domDoc.caretRangeFromPoint(x, y)) { - domRange = domDoc.caretRangeFromPoint(x, y); - } - // FF. - else if (domEvent.rangeParent) { - domRange = domDoc.createRange(); - domRange.setStart(domEvent.rangeParent, domEvent.rangeOffset); - domRange.collapse(true); - } - if (domRange) { - return view.domConverter.domRangeToView(domRange); - } - return null; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js": -/*!*****************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js ***! - \*****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ ClipboardPipeline) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _clipboardobserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clipboardobserver */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js"); -/* harmony import */ var _utils_plaintexttohtml__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/plaintexttohtml */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml.js"); -/* harmony import */ var _utils_normalizeclipboarddata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/normalizeclipboarddata */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/normalizeclipboarddata.js"); -/* harmony import */ var _utils_viewtoplaintext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/viewtoplaintext */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/viewtoplaintext.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/clipboardpipeline - */ - - - - - - -// Input pipeline events overview: -// -// ┌──────────────────────┐ ┌──────────────────────┐ -// │ view.Document │ │ view.Document │ -// │ paste │ │ drop │ -// └───────────┬──────────┘ └───────────┬──────────┘ -// │ │ -// └────────────────┌────────────────┘ -// │ -// ┌─────────V────────┐ -// │ view.Document │ Retrieves text/html or text/plain from data.dataTransfer -// │ clipboardInput │ and processes it to view.DocumentFragment. -// └─────────┬────────┘ -// │ -// ┌───────────V───────────┐ -// │ ClipboardPipeline │ Converts view.DocumentFragment to model.DocumentFragment. -// │ inputTransformation │ -// └───────────┬───────────┘ -// │ -// ┌──────────V──────────┐ -// │ ClipboardPipeline │ Calls model.insertContent(). -// │ contentInsertion │ -// └─────────────────────┘ -// -// -// Output pipeline events overview: -// -// ┌──────────────────────┐ ┌──────────────────────┐ -// │ view.Document │ │ view.Document │ Retrieves the selected model.DocumentFragment -// │ copy │ │ cut │ and converts it to view.DocumentFragment. -// └───────────┬──────────┘ └───────────┬──────────┘ -// │ │ -// └────────────────┌────────────────┘ -// │ -// ┌─────────V────────┐ -// │ view.Document │ Processes view.DocumentFragment to text/html and text/plain -// │ clipboardOutput │ and stores the results in data.dataTransfer. -// └──────────────────┘ -// -/** - * The clipboard pipeline feature. It is responsible for intercepting the `paste` and `drop` events and - * passing the pasted content through a series of events in order to insert it into the editor's content. - * It also handles the `cut` and `copy` events to fill the native clipboard with the serialized editor's data. - * - * # Input pipeline - * - * The behavior of the default handlers (all at a `low` priority): - * - * ## Event: `paste` or `drop` - * - * 1. Translates the event data. - * 2. Fires the {@link module:engine/view/document~Document#event:clipboardInput `view.Document#clipboardInput`} event. - * - * ## Event: `view.Document#clipboardInput` - * - * 1. If the `data.content` event field is already set (by some listener on a higher priority), it takes this content and fires the event - * from the last point. - * 2. Otherwise, it retrieves `text/html` or `text/plain` from `data.dataTransfer`. - * 3. Normalizes the raw data by applying simple filters on string data. - * 4. Processes the raw data to {@link module:engine/view/documentfragment~DocumentFragment `view.DocumentFragment`} with the - * {@link module:engine/controller/datacontroller~DataController#htmlProcessor `DataController#htmlProcessor`}. - * 5. Fires the {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:inputTransformation - * `ClipboardPipeline#inputTransformation`} event with the view document fragment in the `data.content` event field. - * - * ## Event: `ClipboardPipeline#inputTransformation` - * - * 1. Converts {@link module:engine/view/documentfragment~DocumentFragment `view.DocumentFragment`} from the `data.content` field to - * {@link module:engine/model/documentfragment~DocumentFragment `model.DocumentFragment`}. - * 2. Fires the {@link module:clipboard/clipboardpipeline~ClipboardPipeline#event:contentInsertion `ClipboardPipeline#contentInsertion`} - * event with the model document fragment in the `data.content` event field. - * **Note**: The `ClipboardPipeline#contentInsertion` event is fired within a model change block to allow other handlers - * to run in the same block without post-fixers called in between (i.e., the selection post-fixer). - * - * ## Event: `ClipboardPipeline#contentInsertion` - * - * 1. Calls {@link module:engine/model/model~Model#insertContent `model.insertContent()`} to insert `data.content` - * at the current selection position. - * - * # Output pipeline - * - * The behavior of the default handlers (all at a `low` priority): - * - * ## Event: `copy`, `cut` or `dragstart` - * - * 1. Retrieves the selected {@link module:engine/model/documentfragment~DocumentFragment `model.DocumentFragment`} by calling - * {@link module:engine/model/model~Model#getSelectedContent `model#getSelectedContent()`}. - * 2. Converts the model document fragment to {@link module:engine/view/documentfragment~DocumentFragment `view.DocumentFragment`}. - * 3. Fires the {@link module:engine/view/document~Document#event:clipboardOutput `view.Document#clipboardOutput`} event - * with the view document fragment in the `data.content` event field. - * - * ## Event: `view.Document#clipboardOutput` - * - * 1. Processes `data.content` to HTML and plain text with the - * {@link module:engine/controller/datacontroller~DataController#htmlProcessor `DataController#htmlProcessor`}. - * 2. Updates the `data.dataTransfer` data for `text/html` and `text/plain` with the processed data. - * 3. For the `cut` method, calls {@link module:engine/model/model~Model#deleteContent `model.deleteContent()`} - * on the current selection. - * - * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide. - */ -class ClipboardPipeline extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'ClipboardPipeline'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const view = editor.editing.view; - view.addObserver(_clipboardobserver__WEBPACK_IMPORTED_MODULE_2__["default"]); - this._setupPasteDrop(); - this._setupCopyCut(); - } - /** - * The clipboard paste pipeline. - */ - _setupPasteDrop() { - const editor = this.editor; - const model = editor.model; - const view = editor.editing.view; - const viewDocument = view.document; - // Pasting is disabled when selection is in non-editable place. - // Dropping is disabled in drag and drop handler. - this.listenTo(viewDocument, 'clipboardInput', (evt, data) => { - if (data.method == 'paste' && !editor.model.canEditAt(editor.model.document.selection)) { - evt.stop(); - } - }, { priority: 'highest' }); - this.listenTo(viewDocument, 'clipboardInput', (evt, data) => { - const dataTransfer = data.dataTransfer; - let content; - // Some feature could already inject content in the higher priority event handler (i.e., codeBlock). - if (data.content) { - content = data.content; - } - else { - let contentData = ''; - if (dataTransfer.getData('text/html')) { - contentData = (0,_utils_normalizeclipboarddata__WEBPACK_IMPORTED_MODULE_4__["default"])(dataTransfer.getData('text/html')); - } - else if (dataTransfer.getData('text/plain')) { - contentData = (0,_utils_plaintexttohtml__WEBPACK_IMPORTED_MODULE_3__["default"])(dataTransfer.getData('text/plain')); - } - content = this.editor.data.htmlProcessor.toView(contentData); - } - const eventInfo = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.EventInfo(this, 'inputTransformation'); - this.fire(eventInfo, { - content, - dataTransfer, - targetRanges: data.targetRanges, - method: data.method - }); - // If CKEditor handled the input, do not bubble the original event any further. - // This helps external integrations recognize this fact and act accordingly. - // https://github.com/ckeditor/ckeditor5-upload/issues/92 - if (eventInfo.stop.called) { - evt.stop(); - } - view.scrollToTheSelection(); - }, { priority: 'low' }); - this.listenTo(this, 'inputTransformation', (evt, data) => { - if (data.content.isEmpty) { - return; - } - const dataController = this.editor.data; - // Convert the pasted content into a model document fragment. - // The conversion is contextual, but in this case an "all allowed" context is needed - // and for that we use the $clipboardHolder item. - const modelFragment = dataController.toModel(data.content, '$clipboardHolder'); - if (modelFragment.childCount == 0) { - return; - } - evt.stop(); - // Fire content insertion event in a single change block to allow other handlers to run in the same block - // without post-fixers called in between (i.e., the selection post-fixer). - model.change(() => { - this.fire('contentInsertion', { - content: modelFragment, - method: data.method, - dataTransfer: data.dataTransfer, - targetRanges: data.targetRanges - }); - }); - }, { priority: 'low' }); - this.listenTo(this, 'contentInsertion', (evt, data) => { - data.resultRange = model.insertContent(data.content); - }, { priority: 'low' }); - } - /** - * The clipboard copy/cut pipeline. - */ - _setupCopyCut() { - const editor = this.editor; - const modelDocument = editor.model.document; - const view = editor.editing.view; - const viewDocument = view.document; - const onCopyCut = (evt, data) => { - const dataTransfer = data.dataTransfer; - data.preventDefault(); - const content = editor.data.toView(editor.model.getSelectedContent(modelDocument.selection)); - viewDocument.fire('clipboardOutput', { - dataTransfer, - content, - method: evt.name - }); - }; - this.listenTo(viewDocument, 'copy', onCopyCut, { priority: 'low' }); - this.listenTo(viewDocument, 'cut', (evt, data) => { - // Cutting is disabled when selection is in non-editable place. - // See: https://github.com/ckeditor/ckeditor5-clipboard/issues/26. - if (!editor.model.canEditAt(editor.model.document.selection)) { - data.preventDefault(); - } - else { - onCopyCut(evt, data); - } - }, { priority: 'low' }); - this.listenTo(viewDocument, 'clipboardOutput', (evt, data) => { - if (!data.content.isEmpty) { - data.dataTransfer.setData('text/html', this.editor.data.htmlProcessor.toData(data.content)); - data.dataTransfer.setData('text/plain', (0,_utils_viewtoplaintext__WEBPACK_IMPORTED_MODULE_5__["default"])(data.content)); - } - if (data.method == 'cut') { - editor.model.deleteContent(modelDocument.selection); - } - }, { priority: 'low' }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdrop.js": -/*!********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdrop.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ DragDrop) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-engine */ "./node_modules/@ckeditor/ckeditor5-engine/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ckeditor/ckeditor5-widget */ "./node_modules/@ckeditor/ckeditor5-widget/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _clipboardpipeline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clipboardpipeline */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js"); -/* harmony import */ var _clipboardobserver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clipboardobserver */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js"); -/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ "./node_modules/lodash-es/throttle.js"); -/* harmony import */ var _theme_clipboard_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../theme/clipboard.css */ "./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/dragdrop - */ - - - - - - - - -// Drag and drop events overview: -// -// ┌──────────────────┐ -// │ mousedown │ Sets the draggable attribute. -// └─────────┬────────┘ -// │ -// └─────────────────────┐ -// │ │ -// │ ┌─────────V────────┐ -// │ │ mouseup │ Dragging did not start, removes the draggable attribute. -// │ └──────────────────┘ -// │ -// ┌─────────V────────┐ Retrieves the selected model.DocumentFragment -// │ dragstart │ and converts it to view.DocumentFragment. -// └─────────┬────────┘ -// │ -// ┌─────────V────────┐ Processes view.DocumentFragment to text/html and text/plain -// │ clipboardOutput │ and stores the results in data.dataTransfer. -// └─────────┬────────┘ -// │ -// │ DOM dragover -// ┌────────────┐ -// │ │ -// ┌─────────V────────┐ │ -// │ dragging │ │ Updates the drop target marker. -// └─────────┬────────┘ │ -// │ │ -// ┌─────────────└────────────┘ -// │ │ │ -// │ ┌─────────V────────┐ │ -// │ │ dragleave │ │ Removes the drop target marker. -// │ └─────────┬────────┘ │ -// │ │ │ -// ┌───│─────────────┘ │ -// │ │ │ │ -// │ │ ┌─────────V────────┐ │ -// │ │ │ dragenter │ │ Focuses the editor view. -// │ │ └─────────┬────────┘ │ -// │ │ │ │ -// │ │ └────────────┘ -// │ │ -// │ └─────────────┐ -// │ │ │ -// │ │ ┌─────────V────────┐ -// └───┐ │ drop │ (The default handler of the clipboard pipeline). -// │ └─────────┬────────┘ -// │ │ -// │ ┌─────────V────────┐ Resolves the final data.targetRanges. -// │ │ clipboardInput │ Aborts if dropping on dragged content. -// │ └─────────┬────────┘ -// │ │ -// │ ┌─────────V────────┐ -// │ │ clipboardInput │ (The default handler of the clipboard pipeline). -// │ └─────────┬────────┘ -// │ │ -// │ ┌───────────V───────────┐ -// │ │ inputTransformation │ (The default handler of the clipboard pipeline). -// │ └───────────┬───────────┘ -// │ │ -// │ ┌──────────V──────────┐ -// │ │ contentInsertion │ Updates the document selection to drop range. -// │ └──────────┬──────────┘ -// │ │ -// │ ┌──────────V──────────┐ -// │ │ contentInsertion │ (The default handler of the clipboard pipeline). -// │ └──────────┬──────────┘ -// │ │ -// │ ┌──────────V──────────┐ -// │ │ contentInsertion │ Removes the content from the original range if the insertion was successful. -// │ └──────────┬──────────┘ -// │ │ -// └─────────────┐ -// │ -// ┌─────────V────────┐ -// │ dragend │ Removes the drop marker and cleans the state. -// └──────────────────┘ -// -/** - * The drag and drop feature. It works on top of the {@link module:clipboard/clipboardpipeline~ClipboardPipeline}. - * - * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide. - */ -class DragDrop extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'DragDrop'; - } - /** - * @inheritDoc - */ - static get requires() { - return [_clipboardpipeline__WEBPACK_IMPORTED_MODULE_4__["default"], _ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.Widget]; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const view = editor.editing.view; - this._draggedRange = null; - this._draggingUid = ''; - this._draggableElement = null; - this._updateDropMarkerThrottled = (0,lodash_es__WEBPACK_IMPORTED_MODULE_7__["default"])(targetRange => this._updateDropMarker(targetRange), 40); - this._removeDropMarkerDelayed = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.delay)(() => this._removeDropMarker(), 40); - this._clearDraggableAttributesDelayed = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.delay)(() => this._clearDraggableAttributes(), 40); - if (editor.plugins.has('DragDropExperimental')) { - this.forceDisabled('DragDropExperimental'); - return; - } - view.addObserver(_clipboardobserver__WEBPACK_IMPORTED_MODULE_5__["default"]); - view.addObserver(_ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.MouseObserver); - this._setupDragging(); - this._setupContentInsertionIntegration(); - this._setupClipboardInputIntegration(); - this._setupDropMarker(); - this._setupDraggableAttributeHandling(); - this.listenTo(editor, 'change:isReadOnly', (evt, name, isReadOnly) => { - if (isReadOnly) { - this.forceDisabled('readOnlyMode'); - } - else { - this.clearForceDisabled('readOnlyMode'); - } - }); - this.on('change:isEnabled', (evt, name, isEnabled) => { - if (!isEnabled) { - this._finalizeDragging(false); - } - }); - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isAndroid) { - this.forceDisabled('noAndroidSupport'); - } - } - /** - * @inheritDoc - */ - destroy() { - if (this._draggedRange) { - this._draggedRange.detach(); - this._draggedRange = null; - } - this._updateDropMarkerThrottled.cancel(); - this._removeDropMarkerDelayed.cancel(); - this._clearDraggableAttributesDelayed.cancel(); - return super.destroy(); - } - /** - * Drag and drop events handling. - */ - _setupDragging() { - const editor = this.editor; - const model = editor.model; - const modelDocument = model.document; - const view = editor.editing.view; - const viewDocument = view.document; - // The handler for the drag start; it is responsible for setting data transfer object. - this.listenTo(viewDocument, 'dragstart', (evt, data) => { - const selection = modelDocument.selection; - // Don't drag the editable element itself. - if (data.target && data.target.is('editableElement')) { - data.preventDefault(); - return; - } - // TODO we could clone this node somewhere and style it to match editing view but without handles, - // selection outline, WTA buttons, etc. - // data.dataTransfer._native.setDragImage( data.domTarget, 0, 0 ); - // Check if this is dragstart over the widget (but not a nested editable). - const draggableWidget = data.target ? findDraggableWidget(data.target) : null; - if (draggableWidget) { - const modelElement = editor.editing.mapper.toModelElement(draggableWidget); - this._draggedRange = _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.LiveRange.fromRange(model.createRangeOn(modelElement)); - // Disable toolbars so they won't obscure the drop area. - if (editor.plugins.has('WidgetToolbarRepository')) { - const widgetToolbarRepository = editor.plugins.get('WidgetToolbarRepository'); - widgetToolbarRepository.forceDisabled('dragDrop'); - } - } - // If this was not a widget we should check if we need to drag some text content. - else if (!viewDocument.selection.isCollapsed) { - const selectedElement = viewDocument.selection.getSelectedElement(); - if (!selectedElement || !(0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(selectedElement)) { - this._draggedRange = _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.LiveRange.fromRange(selection.getFirstRange()); - } - } - if (!this._draggedRange) { - data.preventDefault(); - return; - } - this._draggingUid = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.uid)(); - const canEditAtDraggedRange = this.isEnabled && editor.model.canEditAt(this._draggedRange); - data.dataTransfer.effectAllowed = canEditAtDraggedRange ? 'copyMove' : 'copy'; - data.dataTransfer.setData('application/ckeditor5-dragging-uid', this._draggingUid); - const draggedSelection = model.createSelection(this._draggedRange.toRange()); - const content = editor.data.toView(model.getSelectedContent(draggedSelection)); - viewDocument.fire('clipboardOutput', { - dataTransfer: data.dataTransfer, - content, - method: 'dragstart' - }); - if (!canEditAtDraggedRange) { - this._draggedRange.detach(); - this._draggedRange = null; - this._draggingUid = ''; - } - }, { priority: 'low' }); - // The handler for finalizing drag and drop. It should always be triggered after dragging completes - // even if it was completed in a different application. - // Note: This is not fired if source text node got removed while downcasting a marker. - this.listenTo(viewDocument, 'dragend', (evt, data) => { - this._finalizeDragging(!data.dataTransfer.isCanceled && data.dataTransfer.dropEffect == 'move'); - }, { priority: 'low' }); - // Dragging over the editable. - this.listenTo(viewDocument, 'dragenter', () => { - if (!this.isEnabled) { - return; - } - view.focus(); - }); - // Dragging out of the editable. - this.listenTo(viewDocument, 'dragleave', () => { - // We do not know if the mouse left the editor or just some element in it, so let us wait a few milliseconds - // to check if 'dragover' is not fired. - this._removeDropMarkerDelayed(); - }); - // Handler for moving dragged content over the target area. - this.listenTo(viewDocument, 'dragging', (evt, data) => { - if (!this.isEnabled) { - data.dataTransfer.dropEffect = 'none'; - return; - } - this._removeDropMarkerDelayed.cancel(); - const targetRange = findDropTargetRange(editor, data.targetRanges, data.target); - // Do not drop if target place is not editable. - if (!editor.model.canEditAt(targetRange)) { - data.dataTransfer.dropEffect = 'none'; - return; - } - // If this is content being dragged from another editor, moving out of current editor instance - // is not possible until 'dragend' event case will be fixed. - if (!this._draggedRange) { - data.dataTransfer.dropEffect = 'copy'; - } - // In Firefox it is already set and effect allowed remains the same as originally set. - if (!_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isGecko) { - if (data.dataTransfer.effectAllowed == 'copy') { - data.dataTransfer.dropEffect = 'copy'; - } - else if (['all', 'copyMove'].includes(data.dataTransfer.effectAllowed)) { - data.dataTransfer.dropEffect = 'move'; - } - } - /* istanbul ignore else -- @preserve */ - if (targetRange) { - this._updateDropMarkerThrottled(targetRange); - } - }, { priority: 'low' }); - } - /** - * Integration with the `clipboardInput` event. - */ - _setupClipboardInputIntegration() { - const editor = this.editor; - const view = editor.editing.view; - const viewDocument = view.document; - // Update the event target ranges and abort dropping if dropping over itself. - this.listenTo(viewDocument, 'clipboardInput', (evt, data) => { - if (data.method != 'drop') { - return; - } - const targetRange = findDropTargetRange(editor, data.targetRanges, data.target); - // The dragging markers must be removed after searching for the target range because sometimes - // the target lands on the marker itself. - this._removeDropMarker(); - /* istanbul ignore if -- @preserve */ - if (!targetRange || !editor.model.canEditAt(targetRange)) { - this._finalizeDragging(false); - evt.stop(); - return; - } - // Since we cannot rely on the drag end event, we must check if the local drag range is from the current drag and drop - // or it is from some previous not cleared one. - if (this._draggedRange && this._draggingUid != data.dataTransfer.getData('application/ckeditor5-dragging-uid')) { - this._draggedRange.detach(); - this._draggedRange = null; - this._draggingUid = ''; - } - // Do not do anything if some content was dragged within the same document to the same position. - const isMove = getFinalDropEffect(data.dataTransfer) == 'move'; - if (isMove && this._draggedRange && this._draggedRange.containsRange(targetRange, true)) { - this._finalizeDragging(false); - evt.stop(); - return; - } - // Override the target ranges with the one adjusted to the best one for a drop. - data.targetRanges = [editor.editing.mapper.toViewRange(targetRange)]; - }, { priority: 'high' }); - } - /** - * Integration with the `contentInsertion` event of the clipboard pipeline. - */ - _setupContentInsertionIntegration() { - const clipboardPipeline = this.editor.plugins.get(_clipboardpipeline__WEBPACK_IMPORTED_MODULE_4__["default"]); - clipboardPipeline.on('contentInsertion', (evt, data) => { - if (!this.isEnabled || data.method !== 'drop') { - return; - } - // Update the selection to the target range in the same change block to avoid selection post-fixing - // and to be able to clone text attributes for plain text dropping. - const ranges = data.targetRanges.map(viewRange => this.editor.editing.mapper.toModelRange(viewRange)); - this.editor.model.change(writer => writer.setSelection(ranges)); - }, { priority: 'high' }); - clipboardPipeline.on('contentInsertion', (evt, data) => { - if (!this.isEnabled || data.method !== 'drop') { - return; - } - // Remove dragged range content, remove markers, clean after dragging. - const isMove = getFinalDropEffect(data.dataTransfer) == 'move'; - // Whether any content was inserted (insertion might fail if the schema is disallowing some elements - // (for example an image caption allows only the content of a block but not blocks themselves. - // Some integrations might not return valid range (i.e., table pasting). - const isSuccess = !data.resultRange || !data.resultRange.isCollapsed; - this._finalizeDragging(isSuccess && isMove); - }, { priority: 'lowest' }); - } - /** - * Adds listeners that add the `draggable` attribute to the elements while the mouse button is down so the dragging could start. - */ - _setupDraggableAttributeHandling() { - const editor = this.editor; - const view = editor.editing.view; - const viewDocument = view.document; - // Add the 'draggable' attribute to the widget while pressing the selection handle. - // This is required for widgets to be draggable. In Chrome it will enable dragging text nodes. - this.listenTo(viewDocument, 'mousedown', (evt, data) => { - // The lack of data can be caused by editor tests firing fake mouse events. This should not occur - // in real-life scenarios but this greatly simplifies editor tests that would otherwise fail a lot. - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isAndroid || !data) { - return; - } - this._clearDraggableAttributesDelayed.cancel(); - // Check if this is a mousedown over the widget (but not a nested editable). - let draggableElement = findDraggableWidget(data.target); - // Note: There is a limitation that if more than a widget is selected (a widget and some text) - // and dragging starts on the widget, then only the widget is dragged. - // If this was not a widget then we should check if we need to drag some text content. - // In Chrome set a 'draggable' attribute on closest editable to allow immediate dragging of the selected text range. - // In Firefox this is not needed. In Safari it makes the whole editable draggable (not just textual content). - // Disabled in read-only mode because draggable="true" + contenteditable="false" results - // in not firing selectionchange event ever, which makes the selection stuck in read-only mode. - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isBlink && !draggableElement && !viewDocument.selection.isCollapsed) { - const selectedElement = viewDocument.selection.getSelectedElement(); - if (!selectedElement || !(0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(selectedElement)) { - const editableElement = viewDocument.selection.editableElement; - if (editableElement && !editableElement.isReadOnly) { - draggableElement = editableElement; - } - } - } - if (draggableElement) { - view.change(writer => { - writer.setAttribute('draggable', 'true', draggableElement); - }); - // Keep the reference to the model element in case the view element gets removed while dragging. - this._draggableElement = editor.editing.mapper.toModelElement(draggableElement); - } - }); - // Remove the draggable attribute in case no dragging started (only mousedown + mouseup). - this.listenTo(viewDocument, 'mouseup', () => { - if (!_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isAndroid) { - this._clearDraggableAttributesDelayed(); - } - }); - } - /** - * Removes the `draggable` attribute from the element that was used for dragging. - */ - _clearDraggableAttributes() { - const editing = this.editor.editing; - editing.view.change(writer => { - // Remove 'draggable' attribute. - if (this._draggableElement && this._draggableElement.root.rootName != '$graveyard') { - writer.removeAttribute('draggable', editing.mapper.toViewElement(this._draggableElement)); - } - this._draggableElement = null; - }); - } - /** - * Creates downcast conversion for the drop target marker. - */ - _setupDropMarker() { - const editor = this.editor; - // Drop marker conversion for hovering over widgets. - editor.conversion.for('editingDowncast').markerToHighlight({ - model: 'drop-target', - view: { - classes: ['ck-clipboard-drop-target-range'] - } - }); - // Drop marker conversion for in text drop target. - editor.conversion.for('editingDowncast').markerToElement({ - model: 'drop-target', - view: (data, { writer }) => { - const inText = editor.model.schema.checkChild(data.markerRange.start, '$text'); - if (!inText) { - return; - } - return writer.createUIElement('span', { class: 'ck ck-clipboard-drop-target-position' }, function (domDocument) { - const domElement = this.toDomElement(domDocument); - // Using word joiner to make this marker as high as text and also making text not break on marker. - domElement.append('\u2060', domDocument.createElement('span'), '\u2060'); - return domElement; - }); - } - }); - } - /** - * Updates the drop target marker to the provided range. - * - * @param targetRange The range to set the marker to. - */ - _updateDropMarker(targetRange) { - const editor = this.editor; - const markers = editor.model.markers; - editor.model.change(writer => { - if (markers.has('drop-target')) { - if (!markers.get('drop-target').getRange().isEqual(targetRange)) { - writer.updateMarker('drop-target', { range: targetRange }); - } - } - else { - writer.addMarker('drop-target', { - range: targetRange, - usingOperation: false, - affectsData: false - }); - } - }); - } - /** - * Removes the drop target marker. - */ - _removeDropMarker() { - const model = this.editor.model; - this._removeDropMarkerDelayed.cancel(); - this._updateDropMarkerThrottled.cancel(); - if (model.markers.has('drop-target')) { - model.change(writer => { - writer.removeMarker('drop-target'); - }); - } - } - /** - * Deletes the dragged content from its original range and clears the dragging state. - * - * @param moved Whether the move succeeded. - */ - _finalizeDragging(moved) { - const editor = this.editor; - const model = editor.model; - this._removeDropMarker(); - this._clearDraggableAttributes(); - if (editor.plugins.has('WidgetToolbarRepository')) { - const widgetToolbarRepository = editor.plugins.get('WidgetToolbarRepository'); - widgetToolbarRepository.clearForceDisabled('dragDrop'); - } - this._draggingUid = ''; - if (!this._draggedRange) { - return; - } - // Delete moved content. - if (moved && this.isEnabled) { - model.deleteContent(model.createSelection(this._draggedRange), { doNotAutoparagraph: true }); - } - this._draggedRange.detach(); - this._draggedRange = null; - } -} -/** - * Returns fixed selection range for given position and target element. - */ -function findDropTargetRange(editor, targetViewRanges, targetViewElement) { - const model = editor.model; - const mapper = editor.editing.mapper; - let range = null; - const targetViewPosition = targetViewRanges ? targetViewRanges[0].start : null; - // A UIElement is not a valid drop element, use parent (this could be a drop marker or any other UIElement). - if (targetViewElement.is('uiElement')) { - targetViewElement = targetViewElement.parent; - } - // Quick win if the target is a widget (but not a nested editable). - range = findDropTargetRangeOnWidget(editor, targetViewElement); - if (range) { - return range; - } - // The easiest part is over, now we need to move to the model space. - // Find target model element and position. - const targetModelElement = getClosestMappedModelElement(editor, targetViewElement); - const targetModelPosition = targetViewPosition ? mapper.toModelPosition(targetViewPosition) : null; - // There is no target position while hovering over an empty table cell. - // In Safari, target position can be empty while hovering over a widget (e.g., a page-break). - // Find the drop position inside the element. - if (!targetModelPosition) { - return findDropTargetRangeInElement(editor, targetModelElement); - } - // Check if target position is between blocks and adjust drop position to the next object. - // This is because while hovering over a root element next to a widget the target position can jump in crazy places. - range = findDropTargetRangeBetweenBlocks(editor, targetModelPosition, targetModelElement); - if (range) { - return range; - } - // Try fixing selection position. - // In Firefox, the target position lands before widgets but in other browsers it tends to land after a widget. - range = model.schema.getNearestSelectionRange(targetModelPosition, _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isGecko ? 'forward' : 'backward'); - if (range) { - return range; - } - // There is no valid selection position inside the current limit element so find a closest object ancestor. - // This happens if the model position lands directly in the element itself (view target element was a `
` - // so a nested editable, but view target position was directly in the `
` element). - return findDropTargetRangeOnAncestorObject(editor, targetModelPosition.parent); -} -/** - * Returns fixed selection range for a given position and a target element if it is over the widget but not over its nested editable. - */ -function findDropTargetRangeOnWidget(editor, targetViewElement) { - const model = editor.model; - const mapper = editor.editing.mapper; - // Quick win if the target is a widget. - if ((0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(targetViewElement)) { - return model.createRangeOn(mapper.toModelElement(targetViewElement)); - } - // Check if we are deeper over a widget (but not over a nested editable). - if (!targetViewElement.is('editableElement')) { - // Find a closest ancestor that is either a widget or an editable element... - const ancestor = targetViewElement.findAncestor(node => (0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(node) || node.is('editableElement')); - // ...and if the widget was closer then it is a drop target. - if ((0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(ancestor)) { - return model.createRangeOn(mapper.toModelElement(ancestor)); - } - } - return null; -} -/** - * Returns fixed selection range inside a model element. - */ -function findDropTargetRangeInElement(editor, targetModelElement) { - const model = editor.model; - const schema = model.schema; - const positionAtElementStart = model.createPositionAt(targetModelElement, 0); - return schema.getNearestSelectionRange(positionAtElementStart, 'forward'); -} -/** - * Returns fixed selection range for a given position and a target element if the drop is between blocks. - */ -function findDropTargetRangeBetweenBlocks(editor, targetModelPosition, targetModelElement) { - const model = editor.model; - // Check if target is between blocks. - if (!model.schema.checkChild(targetModelElement, '$block')) { - return null; - } - // Find position between blocks. - const positionAtElementStart = model.createPositionAt(targetModelElement, 0); - // Get the common part of the path (inside the target element and the target position). - const commonPath = targetModelPosition.path.slice(0, positionAtElementStart.path.length); - // Position between the blocks. - const betweenBlocksPosition = model.createPositionFromPath(targetModelPosition.root, commonPath); - const nodeAfter = betweenBlocksPosition.nodeAfter; - // Adjust drop position to the next object. - // This is because while hovering over a root element next to a widget the target position can jump in crazy places. - if (nodeAfter && model.schema.isObject(nodeAfter)) { - return model.createRangeOn(nodeAfter); - } - return null; -} -/** - * Returns a selection range on the ancestor object. - */ -function findDropTargetRangeOnAncestorObject(editor, element) { - const model = editor.model; - let currentElement = element; - while (currentElement) { - if (model.schema.isObject(currentElement)) { - return model.createRangeOn(currentElement); - } - currentElement = currentElement.parent; - } - /* istanbul ignore next -- @preserve */ - return null; -} -/** - * Returns the closest model element for the specified view element. - */ -function getClosestMappedModelElement(editor, element) { - const mapper = editor.editing.mapper; - const view = editor.editing.view; - const targetModelElement = mapper.toModelElement(element); - if (targetModelElement) { - return targetModelElement; - } - // Find mapped ancestor if the target is inside not mapped element (for example inline code element). - const viewPosition = view.createPositionBefore(element); - const viewElement = mapper.findMappedViewAncestor(viewPosition); - return mapper.toModelElement(viewElement); -} -/** - * Returns the drop effect that should be a result of dragging the content. - * This function is handling a quirk when checking the effect in the 'drop' DOM event. - */ -function getFinalDropEffect(dataTransfer) { - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isGecko) { - return dataTransfer.dropEffect; - } - return ['all', 'copyMove'].includes(dataTransfer.effectAllowed) ? 'move' : 'copy'; -} -/** - * Returns a widget element that should be dragged. - */ -function findDraggableWidget(target) { - // This is directly an editable so not a widget for sure. - if (target.is('editableElement')) { - return null; - } - // TODO: Let's have a isWidgetSelectionHandleDomElement() helper in ckeditor5-widget utils. - if (target.hasClass('ck-widget__selection-handle')) { - return target.findAncestor(_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget); - } - // Direct hit on a widget. - if ((0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(target)) { - return target; - } - // Find closest ancestor that is either a widget or an editable element... - const ancestor = target.findAncestor(node => (0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(node) || node.is('editableElement')); - // ...and if closer was the widget then enable dragging it. - if ((0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(ancestor)) { - return ancestor; - } - return null; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropblocktoolbar.js": -/*!********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropblocktoolbar.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ DragDropBlockToolbar) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _clipboardobserver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clipboardobserver */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/dragdropblocktoolbar - */ -/* istanbul ignore file -- @preserve */ - - - -/** - * Integration of an experimental block Drag and drop support with the block toolbar. - * - * @internal - */ -class DragDropBlockToolbar extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - constructor() { - super(...arguments); - /** - * Whether current dragging is started by block toolbar button dragging. - */ - this._isBlockDragging = false; - /** - * DOM Emitter. - */ - this._domEmitter = new ((0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.DomEmitterMixin)())(); - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'DragDropBlockToolbar'; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - this.listenTo(editor, 'change:isReadOnly', (evt, name, isReadOnly) => { - if (isReadOnly) { - this.forceDisabled('readOnlyMode'); - this._isBlockDragging = false; - } - else { - this.clearForceDisabled('readOnlyMode'); - } - }); - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.env.isAndroid) { - this.forceDisabled('noAndroidSupport'); - } - if (editor.plugins.has('BlockToolbar')) { - const blockToolbar = editor.plugins.get('BlockToolbar'); - const element = blockToolbar.buttonView.element; - element.setAttribute('draggable', 'true'); - this._domEmitter.listenTo(element, 'dragstart', (evt, data) => this._handleBlockDragStart(data)); - this._domEmitter.listenTo(_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.document, 'dragover', (evt, data) => this._handleBlockDragging(data)); - this._domEmitter.listenTo(_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.document, 'drop', (evt, data) => this._handleBlockDragging(data)); - this._domEmitter.listenTo(_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.document, 'dragend', () => this._handleBlockDragEnd(), { useCapture: true }); - } - } - /** - * @inheritDoc - */ - destroy() { - this._domEmitter.stopListening(); - return super.destroy(); - } - /** - * The `dragstart` event handler. - */ - _handleBlockDragStart(domEvent) { - if (!this.isEnabled) { - return; - } - const model = this.editor.model; - const selection = model.document.selection; - const blocks = Array.from(selection.getSelectedBlocks()); - const draggedRange = model.createRange(model.createPositionBefore(blocks[0]), model.createPositionAfter(blocks[blocks.length - 1])); - model.change(writer => writer.setSelection(draggedRange)); - this._isBlockDragging = true; - this.editor.editing.view.getObserver(_clipboardobserver__WEBPACK_IMPORTED_MODULE_2__["default"]).onDomEvent(domEvent); - } - /** - * The `dragover` and `drop` event handler. - */ - _handleBlockDragging(domEvent) { - if (!this.isEnabled || !this._isBlockDragging) { - return; - } - const clientX = domEvent.clientX + 100; - const clientY = domEvent.clientY; - const target = document.elementFromPoint(clientX, clientY); - if (!target || !target.closest('.ck-editor__editable')) { - return; - } - this.editor.editing.view.getObserver(_clipboardobserver__WEBPACK_IMPORTED_MODULE_2__["default"]).onDomEvent({ - ...domEvent, - type: domEvent.type, - dataTransfer: domEvent.dataTransfer, - target, - clientX, - clientY, - preventDefault: () => domEvent.preventDefault(), - stopPropagation: () => domEvent.stopPropagation() - }); - } - /** - * The `dragend` event handler. - */ - _handleBlockDragEnd() { - this._isBlockDragging = false; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropexperimental.js": -/*!********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropexperimental.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ DragDropExperimental) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-engine */ "./node_modules/@ckeditor/ckeditor5-engine/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @ckeditor/ckeditor5-widget */ "./node_modules/@ckeditor/ckeditor5-widget/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _clipboardpipeline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./clipboardpipeline */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js"); -/* harmony import */ var _clipboardobserver__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./clipboardobserver */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js"); -/* harmony import */ var _dragdroptarget__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dragdroptarget */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdroptarget.js"); -/* harmony import */ var _theme_clipboard_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../theme/clipboard.css */ "./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/dragdropexperimental - */ -/* istanbul ignore file -- @preserve */ - - - - - - - - -// Drag and drop events overview: -// -// ┌──────────────────┐ -// │ mousedown │ Sets the draggable attribute. -// └─────────┬────────┘ -// │ -// └─────────────────────┐ -// │ │ -// │ ┌─────────V────────┐ -// │ │ mouseup │ Dragging did not start, removes the draggable attribute. -// │ └──────────────────┘ -// │ -// ┌─────────V────────┐ Retrieves the selected model.DocumentFragment -// │ dragstart │ and converts it to view.DocumentFragment. -// └─────────┬────────┘ -// │ -// ┌─────────V────────┐ Processes view.DocumentFragment to text/html and text/plain -// │ clipboardOutput │ and stores the results in data.dataTransfer. -// └─────────┬────────┘ -// │ -// │ DOM dragover -// ┌────────────┐ -// │ │ -// ┌─────────V────────┐ │ -// │ dragging │ │ Updates the drop target marker. -// └─────────┬────────┘ │ -// │ │ -// ┌─────────────└────────────┘ -// │ │ │ -// │ ┌─────────V────────┐ │ -// │ │ dragleave │ │ Removes the drop target marker. -// │ └─────────┬────────┘ │ -// │ │ │ -// ┌───│─────────────┘ │ -// │ │ │ │ -// │ │ ┌─────────V────────┐ │ -// │ │ │ dragenter │ │ Focuses the editor view. -// │ │ └─────────┬────────┘ │ -// │ │ │ │ -// │ │ └────────────┘ -// │ │ -// │ └─────────────┐ -// │ │ │ -// │ │ ┌─────────V────────┐ -// └───┐ │ drop │ (The default handler of the clipboard pipeline). -// │ └─────────┬────────┘ -// │ │ -// │ ┌─────────V────────┐ Resolves the final data.targetRanges. -// │ │ clipboardInput │ Aborts if dropping on dragged content. -// │ └─────────┬────────┘ -// │ │ -// │ ┌─────────V────────┐ -// │ │ clipboardInput │ (The default handler of the clipboard pipeline). -// │ └─────────┬────────┘ -// │ │ -// │ ┌───────────V───────────┐ -// │ │ inputTransformation │ (The default handler of the clipboard pipeline). -// │ └───────────┬───────────┘ -// │ │ -// │ ┌──────────V──────────┐ -// │ │ contentInsertion │ Updates the document selection to drop range. -// │ └──────────┬──────────┘ -// │ │ -// │ ┌──────────V──────────┐ -// │ │ contentInsertion │ (The default handler of the clipboard pipeline). -// │ └──────────┬──────────┘ -// │ │ -// │ ┌──────────V──────────┐ -// │ │ contentInsertion │ Removes the content from the original range if the insertion was successful. -// │ └──────────┬──────────┘ -// │ │ -// └─────────────┐ -// │ -// ┌─────────V────────┐ -// │ dragend │ Removes the drop marker and cleans the state. -// └──────────────────┘ -// -/** - * The drag and drop feature. It works on top of the {@link module:clipboard/clipboardpipeline~ClipboardPipeline}. - * - * Read more about the clipboard integration in the {@glink framework/deep-dive/clipboard clipboard deep-dive} guide. - * - * @internal - */ -class DragDropExperimental extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - constructor() { - super(...arguments); - /** - * A delayed callback removing draggable attributes. - */ - this._clearDraggableAttributesDelayed = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.delay)(() => this._clearDraggableAttributes(), 40); - /** - * Whether the dragged content can be dropped only in block context. - */ - // TODO handle drag from other editor instance - // TODO configure to use block, inline or both - this._blockMode = false; - /** - * DOM Emitter. - */ - this._domEmitter = new ((0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.DomEmitterMixin)())(); - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'DragDropExperimental'; - } - /** - * @inheritDoc - */ - static get requires() { - return [_clipboardpipeline__WEBPACK_IMPORTED_MODULE_4__["default"], _ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.Widget, _dragdroptarget__WEBPACK_IMPORTED_MODULE_6__["default"]]; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const view = editor.editing.view; - this._draggedRange = null; - this._draggingUid = ''; - this._draggableElement = null; - view.addObserver(_clipboardobserver__WEBPACK_IMPORTED_MODULE_5__["default"]); - view.addObserver(_ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.MouseObserver); - this._setupDragging(); - this._setupContentInsertionIntegration(); - this._setupClipboardInputIntegration(); - this._setupDraggableAttributeHandling(); - this.listenTo(editor, 'change:isReadOnly', (evt, name, isReadOnly) => { - if (isReadOnly) { - this.forceDisabled('readOnlyMode'); - } - else { - this.clearForceDisabled('readOnlyMode'); - } - }); - this.on('change:isEnabled', (evt, name, isEnabled) => { - if (!isEnabled) { - this._finalizeDragging(false); - } - }); - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isAndroid) { - this.forceDisabled('noAndroidSupport'); - } - } - /** - * @inheritDoc - */ - destroy() { - if (this._draggedRange) { - this._draggedRange.detach(); - this._draggedRange = null; - } - if (this._previewContainer) { - this._previewContainer.remove(); - } - this._domEmitter.stopListening(); - this._clearDraggableAttributesDelayed.cancel(); - return super.destroy(); - } - /** - * Drag and drop events handling. - */ - _setupDragging() { - const editor = this.editor; - const model = editor.model; - const view = editor.editing.view; - const viewDocument = view.document; - const dragDropTarget = editor.plugins.get(_dragdroptarget__WEBPACK_IMPORTED_MODULE_6__["default"]); - // The handler for the drag start; it is responsible for setting data transfer object. - this.listenTo(viewDocument, 'dragstart', (evt, data) => { - // Don't drag the editable element itself. - if (data.target && data.target.is('editableElement')) { - data.preventDefault(); - return; - } - this._prepareDraggedRange(data.target); - if (!this._draggedRange) { - data.preventDefault(); - return; - } - this._draggingUid = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.uid)(); - data.dataTransfer.effectAllowed = this.isEnabled ? 'copyMove' : 'copy'; - data.dataTransfer.setData('application/ckeditor5-dragging-uid', this._draggingUid); - const draggedSelection = model.createSelection(this._draggedRange.toRange()); - const content = editor.data.toView(model.getSelectedContent(draggedSelection)); - viewDocument.fire('clipboardOutput', { - dataTransfer: data.dataTransfer, - content, - method: 'dragstart' - }); - this._updatePreview(data.dataTransfer); - data.stopPropagation(); - if (!this.isEnabled) { - this._draggedRange.detach(); - this._draggedRange = null; - this._draggingUid = ''; - } - }, { priority: 'low' }); - // The handler for finalizing drag and drop. It should always be triggered after dragging completes - // even if it was completed in a different application. - // Note: This is not fired if source text node got removed while downcasting a marker. - this.listenTo(viewDocument, 'dragend', (evt, data) => { - this._finalizeDragging(!data.dataTransfer.isCanceled && data.dataTransfer.dropEffect == 'move'); - }, { priority: 'low' }); - // Reset block dragging mode even if dropped outside the editable. - this._domEmitter.listenTo(_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.global.document, 'dragend', () => { - this._blockMode = false; - }, { useCapture: true }); - // Dragging over the editable. - this.listenTo(viewDocument, 'dragenter', () => { - if (!this.isEnabled) { - return; - } - view.focus(); - }); - // Dragging out of the editable. - this.listenTo(viewDocument, 'dragleave', () => { - // We do not know if the mouse left the editor or just some element in it, so let us wait a few milliseconds - // to check if 'dragover' is not fired. - dragDropTarget.removeDropMarkerDelayed(); - }); - // Handler for moving dragged content over the target area. - this.listenTo(viewDocument, 'dragging', (evt, data) => { - if (!this.isEnabled) { - data.dataTransfer.dropEffect = 'none'; - return; - } - const { clientX, clientY } = data.domEvent; - dragDropTarget.updateDropMarker(data.target, data.targetRanges, clientX, clientY, this._blockMode); - // If this is content being dragged from another editor, moving out of current editor instance - // is not possible until 'dragend' event case will be fixed. - if (!this._draggedRange) { - data.dataTransfer.dropEffect = 'copy'; - } - // In Firefox it is already set and effect allowed remains the same as originally set. - if (!_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isGecko) { - if (data.dataTransfer.effectAllowed == 'copy') { - data.dataTransfer.dropEffect = 'copy'; - } - else if (['all', 'copyMove'].includes(data.dataTransfer.effectAllowed)) { - data.dataTransfer.dropEffect = 'move'; - } - } - evt.stop(); - }, { priority: 'low' }); - } - /** - * Integration with the `clipboardInput` event. - */ - _setupClipboardInputIntegration() { - const editor = this.editor; - const view = editor.editing.view; - const viewDocument = view.document; - const dragDropTarget = editor.plugins.get(_dragdroptarget__WEBPACK_IMPORTED_MODULE_6__["default"]); - // Update the event target ranges and abort dropping if dropping over itself. - this.listenTo(viewDocument, 'clipboardInput', (evt, data) => { - if (data.method != 'drop') { - return; - } - const { clientX, clientY } = data.domEvent; - const targetRange = dragDropTarget.getFinalDropRange(data.target, data.targetRanges, clientX, clientY, this._blockMode); - /* istanbul ignore if -- @preserve */ - if (!targetRange) { - this._finalizeDragging(false); - evt.stop(); - return; - } - // Since we cannot rely on the drag end event, we must check if the local drag range is from the current drag and drop - // or it is from some previous not cleared one. - if (this._draggedRange && this._draggingUid != data.dataTransfer.getData('application/ckeditor5-dragging-uid')) { - this._draggedRange.detach(); - this._draggedRange = null; - this._draggingUid = ''; - } - // Do not do anything if some content was dragged within the same document to the same position. - const isMove = getFinalDropEffect(data.dataTransfer) == 'move'; - if (isMove && this._draggedRange && this._draggedRange.containsRange(targetRange, true)) { - this._finalizeDragging(false); - evt.stop(); - return; - } - // Override the target ranges with the one adjusted to the best one for a drop. - data.targetRanges = [editor.editing.mapper.toViewRange(targetRange)]; - }, { priority: 'high' }); - } - /** - * Integration with the `contentInsertion` event of the clipboard pipeline. - */ - _setupContentInsertionIntegration() { - const clipboardPipeline = this.editor.plugins.get(_clipboardpipeline__WEBPACK_IMPORTED_MODULE_4__["default"]); - clipboardPipeline.on('contentInsertion', (evt, data) => { - if (!this.isEnabled || data.method !== 'drop') { - return; - } - // Update the selection to the target range in the same change block to avoid selection post-fixing - // and to be able to clone text attributes for plain text dropping. - const ranges = data.targetRanges.map(viewRange => this.editor.editing.mapper.toModelRange(viewRange)); - this.editor.model.change(writer => writer.setSelection(ranges)); - }, { priority: 'high' }); - clipboardPipeline.on('contentInsertion', (evt, data) => { - if (!this.isEnabled || data.method !== 'drop') { - return; - } - // Remove dragged range content, remove markers, clean after dragging. - const isMove = getFinalDropEffect(data.dataTransfer) == 'move'; - // Whether any content was inserted (insertion might fail if the schema is disallowing some elements - // (for example an image caption allows only the content of a block but not blocks themselves. - // Some integrations might not return valid range (i.e., table pasting). - const isSuccess = !data.resultRange || !data.resultRange.isCollapsed; - this._finalizeDragging(isSuccess && isMove); - }, { priority: 'lowest' }); - } - /** - * Adds listeners that add the `draggable` attribute to the elements while the mouse button is down so the dragging could start. - */ - _setupDraggableAttributeHandling() { - const editor = this.editor; - const view = editor.editing.view; - const viewDocument = view.document; - // Add the 'draggable' attribute to the widget while pressing the selection handle. - // This is required for widgets to be draggable. In Chrome it will enable dragging text nodes. - this.listenTo(viewDocument, 'mousedown', (evt, data) => { - // The lack of data can be caused by editor tests firing fake mouse events. This should not occur - // in real-life scenarios but this greatly simplifies editor tests that would otherwise fail a lot. - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isAndroid || !data) { - return; - } - this._clearDraggableAttributesDelayed.cancel(); - // Check if this is a mousedown over the widget (but not a nested editable). - let draggableElement = findDraggableWidget(data.target); - // Note: There is a limitation that if more than a widget is selected (a widget and some text) - // and dragging starts on the widget, then only the widget is dragged. - // If this was not a widget then we should check if we need to drag some text content. - // In Chrome set a 'draggable' attribute on closest editable to allow immediate dragging of the selected text range. - // In Firefox this is not needed. In Safari it makes the whole editable draggable (not just textual content). - // Disabled in read-only mode because draggable="true" + contenteditable="false" results - // in not firing selectionchange event ever, which makes the selection stuck in read-only mode. - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isBlink && !editor.isReadOnly && !draggableElement && !viewDocument.selection.isCollapsed) { - const selectedElement = viewDocument.selection.getSelectedElement(); - if (!selectedElement || !(0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(selectedElement)) { - draggableElement = viewDocument.selection.editableElement; - } - } - if (draggableElement) { - view.change(writer => { - writer.setAttribute('draggable', 'true', draggableElement); - }); - // Keep the reference to the model element in case the view element gets removed while dragging. - this._draggableElement = editor.editing.mapper.toModelElement(draggableElement); - } - }); - // Remove the draggable attribute in case no dragging started (only mousedown + mouseup). - this.listenTo(viewDocument, 'mouseup', () => { - if (!_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isAndroid) { - this._clearDraggableAttributesDelayed(); - } - }); - } - /** - * Removes the `draggable` attribute from the element that was used for dragging. - */ - _clearDraggableAttributes() { - const editing = this.editor.editing; - editing.view.change(writer => { - // Remove 'draggable' attribute. - if (this._draggableElement && this._draggableElement.root.rootName != '$graveyard') { - writer.removeAttribute('draggable', editing.mapper.toViewElement(this._draggableElement)); - } - this._draggableElement = null; - }); - } - /** - * Deletes the dragged content from its original range and clears the dragging state. - * - * @param moved Whether the move succeeded. - */ - _finalizeDragging(moved) { - const editor = this.editor; - const model = editor.model; - const dragDropTarget = editor.plugins.get(_dragdroptarget__WEBPACK_IMPORTED_MODULE_6__["default"]); - dragDropTarget.removeDropMarker(); - this._clearDraggableAttributes(); - if (editor.plugins.has('WidgetToolbarRepository')) { - const widgetToolbarRepository = editor.plugins.get('WidgetToolbarRepository'); - widgetToolbarRepository.clearForceDisabled('dragDrop'); - } - this._draggingUid = ''; - if (this._previewContainer) { - this._previewContainer.remove(); - this._previewContainer = undefined; - } - if (!this._draggedRange) { - return; - } - // Delete moved content. - if (moved && this.isEnabled) { - model.deleteContent(model.createSelection(this._draggedRange), { doNotAutoparagraph: true }); - } - this._draggedRange.detach(); - this._draggedRange = null; - } - /** - * Sets the dragged source range based on event target and document selection. - */ - _prepareDraggedRange(target) { - const editor = this.editor; - const model = editor.model; - const selection = model.document.selection; - // Check if this is dragstart over the widget (but not a nested editable). - const draggableWidget = target ? findDraggableWidget(target) : null; - if (draggableWidget) { - const modelElement = editor.editing.mapper.toModelElement(draggableWidget); - this._draggedRange = _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.LiveRange.fromRange(model.createRangeOn(modelElement)); - this._blockMode = model.schema.isBlock(modelElement); - // Disable toolbars so they won't obscure the drop area. - if (editor.plugins.has('WidgetToolbarRepository')) { - const widgetToolbarRepository = editor.plugins.get('WidgetToolbarRepository'); - widgetToolbarRepository.forceDisabled('dragDrop'); - } - } - // If this was not a widget we should check if we need to drag some text content. - else if (!selection.isCollapsed || selection.getFirstPosition().parent.isEmpty) { - const blocks = Array.from(selection.getSelectedBlocks()); - if (blocks.length > 1) { - this._draggedRange = _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.LiveRange.fromRange(model.createRange(model.createPositionBefore(blocks[0]), model.createPositionAfter(blocks[blocks.length - 1]))); - model.change(writer => writer.setSelection(this._draggedRange.toRange())); - this._blockMode = true; - // TODO block mode for dragging from outside editor? or inline? or both? - } - else if (blocks.length == 1) { - const draggedRange = selection.getFirstRange(); - const blockRange = model.createRange(model.createPositionBefore(blocks[0]), model.createPositionAfter(blocks[0])); - if (draggedRange.start.isTouching(blockRange.start) && - draggedRange.end.isTouching(blockRange.end)) { - this._draggedRange = _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.LiveRange.fromRange(blockRange); - this._blockMode = true; - } - else { - this._draggedRange = _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.LiveRange.fromRange(selection.getFirstRange()); - this._blockMode = false; - } - } - } - } - /** - * Updates the dragged preview image. - */ - _updatePreview(dataTransfer) { - const view = this.editor.editing.view; - const editable = view.document.selection.editableElement; - const domEditable = view.domConverter.mapViewToDom(editable); - const computedStyle = _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.global.window.getComputedStyle(domEditable); - if (!this._previewContainer) { - this._previewContainer = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.createElement)(_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.global.document, 'div', { - style: 'position: fixed; left: -999999px;' - }); - _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.global.document.body.appendChild(this._previewContainer); - } - else { - this._previewContainer.removeChild(this._previewContainer.firstElementChild); - } - const preview = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.createElement)(_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.global.document, 'div'); - preview.className = 'ck ck-content'; - preview.style.width = computedStyle.width; - preview.innerHTML = dataTransfer.getData('text/html'); - dataTransfer.setDragImage(preview, 0, 0); - // TODO set x to make dragged widget stick to the mouse cursor - this._previewContainer.appendChild(preview); - } -} -/** - * Returns the drop effect that should be a result of dragging the content. - * This function is handling a quirk when checking the effect in the 'drop' DOM event. - */ -function getFinalDropEffect(dataTransfer) { - if (_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_3__.env.isGecko) { - return dataTransfer.dropEffect; - } - return ['all', 'copyMove'].includes(dataTransfer.effectAllowed) ? 'move' : 'copy'; -} -/** - * Returns a widget element that should be dragged. - */ -function findDraggableWidget(target) { - // This is directly an editable so not a widget for sure. - if (target.is('editableElement')) { - return null; - } - // TODO: Let's have a isWidgetSelectionHandleDomElement() helper in ckeditor5-widget utils. - if (target.hasClass('ck-widget__selection-handle')) { - return target.findAncestor(_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget); - } - // Direct hit on a widget. - if ((0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(target)) { - return target; - } - // Find closest ancestor that is either a widget or an editable element... - const ancestor = target.findAncestor(node => (0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(node) || node.is('editableElement')); - // ...and if closer was the widget then enable dragging it. - if ((0,_ckeditor_ckeditor5_widget__WEBPACK_IMPORTED_MODULE_2__.isWidget)(ancestor)) { - return ancestor; - } - return null; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdroptarget.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdroptarget.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ DragDropTarget) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _lineview__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lineview */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/lineview.js"); -/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es */ "./node_modules/lodash-es/throttle.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/dragdroptarget - */ -/* istanbul ignore file -- @preserve */ - - - - -/** - * Part of the Drag and Drop handling. Responsible for finding and displaying the drop target. - * - * @internal - */ -class DragDropTarget extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - constructor() { - super(...arguments); - /** - * A delayed callback removing the drop marker. - * - * @internal - */ - this.removeDropMarkerDelayed = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.delay)(() => this.removeDropMarker(), 40); - /** - * A throttled callback updating the drop marker. - */ - this._updateDropMarkerThrottled = (0,lodash_es__WEBPACK_IMPORTED_MODULE_3__["default"])(targetRange => this._updateDropMarker(targetRange), 40); - /** - * A throttled callback reconverting the drop parker. - */ - this._reconvertMarkerThrottled = (0,lodash_es__WEBPACK_IMPORTED_MODULE_3__["default"])(() => { - if (this.editor.model.markers.has('drop-target')) { - this.editor.editing.reconvertMarker('drop-target'); - } - }, 0); - /** - * The horizontal drop target line view. - */ - this._dropTargetLineView = new _lineview__WEBPACK_IMPORTED_MODULE_2__["default"](); - /** - * DOM Emitter. - */ - this._domEmitter = new ((0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.DomEmitterMixin)())(); - /** - * Map of document scrollable elements. - */ - this._scrollables = new Map(); - } - /** - * @inheritDoc - */ - static get pluginName() { - return 'DragDropTarget'; - } - /** - * @inheritDoc - */ - init() { - this._setupDropMarker(); - } - /** - * @inheritDoc - */ - destroy() { - this._domEmitter.stopListening(); - for (const { resizeObserver } of this._scrollables.values()) { - resizeObserver.destroy(); - } - this._updateDropMarkerThrottled.cancel(); - this.removeDropMarkerDelayed.cancel(); - this._reconvertMarkerThrottled.cancel(); - return super.destroy(); - } - /** - * Finds the drop target range and updates the drop marker. - * - * @internal - */ - updateDropMarker(targetViewElement, targetViewRanges, clientX, clientY, blockMode) { - this.removeDropMarkerDelayed.cancel(); - const targetRange = findDropTargetRange(this.editor, targetViewElement, targetViewRanges, clientX, clientY, blockMode); - /* istanbul ignore else -- @preserve */ - if (targetRange) { - this._updateDropMarkerThrottled(targetRange); - } - } - /** - * Finds the final drop target range. - * - * @internal - */ - getFinalDropRange(targetViewElement, targetViewRanges, clientX, clientY, blockMode) { - const targetRange = findDropTargetRange(this.editor, targetViewElement, targetViewRanges, clientX, clientY, blockMode); - // The dragging markers must be removed after searching for the target range because sometimes - // the target lands on the marker itself. - this.removeDropMarker(); - return targetRange; - } - /** - * Removes the drop target marker. - * - * @internal - */ - removeDropMarker() { - const model = this.editor.model; - this.removeDropMarkerDelayed.cancel(); - this._updateDropMarkerThrottled.cancel(); - this._dropTargetLineView.isVisible = false; - if (model.markers.has('drop-target')) { - model.change(writer => { - writer.removeMarker('drop-target'); - }); - } - } - /** - * Creates downcast conversion for the drop target marker. - */ - _setupDropMarker() { - const editor = this.editor; - editor.ui.view.body.add(this._dropTargetLineView); - // Drop marker conversion for hovering over widgets. - editor.conversion.for('editingDowncast').markerToHighlight({ - model: 'drop-target', - view: { - classes: ['ck-clipboard-drop-target-range'] - } - }); - // Drop marker conversion for in text and block drop target. - editor.conversion.for('editingDowncast').markerToElement({ - model: 'drop-target', - view: (data, { writer }) => { - // Inline drop. - if (editor.model.schema.checkChild(data.markerRange.start, '$text')) { - this._dropTargetLineView.isVisible = false; - return this._createDropTargetPosition(writer); - } - // Block drop. - else { - if (data.markerRange.isCollapsed) { - this._updateDropTargetLine(data.markerRange); - } - else { - this._dropTargetLineView.isVisible = false; - } - } - } - }); - } - /** - * Updates the drop target marker to the provided range. - * - * @param targetRange The range to set the marker to. - */ - _updateDropMarker(targetRange) { - const editor = this.editor; - const markers = editor.model.markers; - editor.model.change(writer => { - if (markers.has('drop-target')) { - if (!markers.get('drop-target').getRange().isEqual(targetRange)) { - writer.updateMarker('drop-target', { range: targetRange }); - } - } - else { - writer.addMarker('drop-target', { - range: targetRange, - usingOperation: false, - affectsData: false - }); - } - }); - } - /** - * Creates the UI element for vertical (in-line) drop target. - */ - _createDropTargetPosition(writer) { - return writer.createUIElement('span', { class: 'ck ck-clipboard-drop-target-position' }, function (domDocument) { - const domElement = this.toDomElement(domDocument); - // Using word joiner to make this marker as high as text and also making text not break on marker. - domElement.append('\u2060', domDocument.createElement('span'), '\u2060'); - return domElement; - }); - } - /** - * Updates the horizontal drop target line. - */ - _updateDropTargetLine(range) { - const editing = this.editor.editing; - const nodeBefore = range.start.nodeBefore; - const nodeAfter = range.start.nodeAfter; - const nodeParent = range.start.parent; - const viewElementBefore = nodeBefore ? editing.mapper.toViewElement(nodeBefore) : null; - const domElementBefore = viewElementBefore ? editing.view.domConverter.mapViewToDom(viewElementBefore) : null; - const viewElementAfter = nodeAfter ? editing.mapper.toViewElement(nodeAfter) : null; - const domElementAfter = viewElementAfter ? editing.view.domConverter.mapViewToDom(viewElementAfter) : null; - const viewElementParent = editing.mapper.toViewElement(nodeParent); - const domElementParent = editing.view.domConverter.mapViewToDom(viewElementParent); - const domScrollableRect = this._getScrollableRect(viewElementParent); - const { scrollX, scrollY } = _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.window; - const rectBefore = domElementBefore ? new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.Rect(domElementBefore) : null; - const rectAfter = domElementAfter ? new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.Rect(domElementAfter) : null; - const rectParent = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.Rect(domElementParent).excludeScrollbarsAndBorders(); - const above = rectBefore ? rectBefore.bottom : rectParent.top; - const below = rectAfter ? rectAfter.top : rectParent.bottom; - const parentStyle = _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.window.getComputedStyle(domElementParent); - const top = (above <= below ? (above + below) / 2 : below); - if (domScrollableRect.top < top && top < domScrollableRect.bottom) { - const left = rectParent.left + parseFloat(parentStyle.paddingLeft); - const right = rectParent.right - parseFloat(parentStyle.paddingRight); - const leftClamped = Math.max(left + scrollX, domScrollableRect.left); - const rightClamped = Math.min(right + scrollX, domScrollableRect.right); - this._dropTargetLineView.set({ - isVisible: true, - left: leftClamped, - top: top + scrollY, - width: rightClamped - leftClamped - }); - } - else { - this._dropTargetLineView.isVisible = false; - } - } - /** - * Finds the closest scrollable element rect for the given view element. - */ - _getScrollableRect(viewElement) { - const rootName = viewElement.root.rootName; - let domScrollable; - if (this._scrollables.has(rootName)) { - domScrollable = this._scrollables.get(rootName).domElement; - } - else { - const domElement = this.editor.editing.view.domConverter.mapViewToDom(viewElement); - domScrollable = findScrollableElement(domElement); - this._domEmitter.listenTo(domScrollable, 'scroll', this._reconvertMarkerThrottled, { usePassive: true }); - const resizeObserver = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.ResizeObserver(domScrollable, this._reconvertMarkerThrottled); - this._scrollables.set(rootName, { - domElement: domScrollable, - resizeObserver - }); - } - return new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.Rect(domScrollable).excludeScrollbarsAndBorders(); - } -} -/** - * Returns fixed selection range for given position and target element. - */ -function findDropTargetRange(editor, targetViewElement, targetViewRanges, clientX, clientY, blockMode) { - const model = editor.model; - const mapper = editor.editing.mapper; - const targetModelElement = getClosestMappedModelElement(editor, targetViewElement); - let modelElement = targetModelElement; - while (modelElement) { - if (!blockMode) { - if (model.schema.checkChild(modelElement, '$text')) { - const targetViewPosition = targetViewRanges ? targetViewRanges[0].start : null; - const targetModelPosition = targetViewPosition ? mapper.toModelPosition(targetViewPosition) : null; - if (targetModelPosition) { - if (model.schema.checkChild(targetModelPosition, '$text')) { - return model.createRange(targetModelPosition); - } - else if (targetViewPosition) { - // This is the case of dropping inside a span wrapper of an inline image. - return findDropTargetRangeForElement(editor, getClosestMappedModelElement(editor, targetViewPosition.parent), clientX, clientY); - } - } - } - else if (model.schema.isInline(modelElement)) { - return findDropTargetRangeForElement(editor, modelElement, clientX, clientY); - } - } - if (model.schema.isBlock(modelElement)) { - return findDropTargetRangeForElement(editor, modelElement, clientX, clientY); - } - else if (model.schema.checkChild(modelElement, '$block')) { - const childNodes = Array.from(modelElement.getChildren()) - .filter((node) => node.is('element') && !isFloatingElement(editor, node)); - let startIndex = 0; - let endIndex = childNodes.length; - while (startIndex < endIndex - 1) { - const middleIndex = Math.floor((startIndex + endIndex) / 2); - const side = findElementSide(editor, childNodes[middleIndex], clientX, clientY); - if (side == 'before') { - endIndex = middleIndex; - } - else { - startIndex = middleIndex; - } - } - return findDropTargetRangeForElement(editor, childNodes[startIndex], clientX, clientY); - } - modelElement = modelElement.parent; - } - console.warn('none:', targetModelElement.name); - return null; -} -/** - * Returns true for elements with floating style set. - */ -function isFloatingElement(editor, modelElement) { - const mapper = editor.editing.mapper; - const domConverter = editor.editing.view.domConverter; - const viewElement = mapper.toViewElement(modelElement); - const domElement = domConverter.mapViewToDom(viewElement); - return _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.window.getComputedStyle(domElement).float != 'none'; -} -/** - * Returns target range relative to the given element. - */ -function findDropTargetRangeForElement(editor, modelElement, clientX, clientY) { - const model = editor.model; - return model.createRange(model.createPositionAt(modelElement, findElementSide(editor, modelElement, clientX, clientY))); -} -/** - * Resolves whether drop marker should be before or after the given element. - */ -function findElementSide(editor, modelElement, clientX, clientY) { - const mapper = editor.editing.mapper; - const domConverter = editor.editing.view.domConverter; - const viewElement = mapper.toViewElement(modelElement); - const domElement = domConverter.mapViewToDom(viewElement); - const rect = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.Rect(domElement); - if (editor.model.schema.isInline(modelElement)) { - return clientX < (rect.left + rect.right) / 2 ? 'before' : 'after'; - } - else { - return clientY < (rect.top + rect.bottom) / 2 ? 'before' : 'after'; - } -} -/** - * Returns the closest model element for the specified view element. - */ -function getClosestMappedModelElement(editor, element) { - const mapper = editor.editing.mapper; - const view = editor.editing.view; - const targetModelElement = mapper.toModelElement(element); - if (targetModelElement) { - return targetModelElement; - } - // Find mapped ancestor if the target is inside not mapped element (for example inline code element). - const viewPosition = view.createPositionBefore(element); - const viewElement = mapper.findMappedViewAncestor(viewPosition); - return mapper.toModelElement(viewElement); -} -/** - * Returns the closest scrollable ancestor DOM element. - * - * It is assumed that `domNode` is attached to the document. - */ -function findScrollableElement(domNode) { - let domElement = domNode; - do { - domElement = domElement.parentElement; - const overflow = _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.global.window.getComputedStyle(domElement).overflowY; - if (overflow == 'auto' || overflow == 'scroll') { - break; - } - } while (domElement.tagName != 'BODY'); - return domElement; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/index.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/index.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Clipboard: () => (/* reexport safe */ _clipboard__WEBPACK_IMPORTED_MODULE_0__["default"]), -/* harmony export */ ClipboardPipeline: () => (/* reexport safe */ _clipboardpipeline__WEBPACK_IMPORTED_MODULE_1__["default"]), -/* harmony export */ DragDrop: () => (/* reexport safe */ _dragdrop__WEBPACK_IMPORTED_MODULE_2__["default"]), -/* harmony export */ DragDropBlockToolbar: () => (/* reexport safe */ _dragdropblocktoolbar__WEBPACK_IMPORTED_MODULE_6__["default"]), -/* harmony export */ DragDropExperimental: () => (/* reexport safe */ _dragdropexperimental__WEBPACK_IMPORTED_MODULE_4__["default"]), -/* harmony export */ DragDropTarget: () => (/* reexport safe */ _dragdroptarget__WEBPACK_IMPORTED_MODULE_5__["default"]), -/* harmony export */ PastePlainText: () => (/* reexport safe */ _pasteplaintext__WEBPACK_IMPORTED_MODULE_3__["default"]) -/* harmony export */ }); -/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clipboard */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboard.js"); -/* harmony import */ var _clipboardpipeline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clipboardpipeline */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js"); -/* harmony import */ var _dragdrop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dragdrop */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdrop.js"); -/* harmony import */ var _pasteplaintext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pasteplaintext */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/pasteplaintext.js"); -/* harmony import */ var _dragdropexperimental__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dragdropexperimental */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropexperimental.js"); -/* harmony import */ var _dragdroptarget__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dragdroptarget */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdroptarget.js"); -/* harmony import */ var _dragdropblocktoolbar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dragdropblocktoolbar */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropblocktoolbar.js"); -/* harmony import */ var _augmentation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./augmentation */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/augmentation.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard - */ - - - - - - - - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/lineview.js": -/*!********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/lineview.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ LineView) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-ui */ "./node_modules/@ckeditor/ckeditor5-ui/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/lineview - */ -/* istanbul ignore file -- @preserve */ - - -const toPx = (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_1__.toUnit)('px'); -/** - * The horizontal drop target line view. - */ -class LineView extends _ckeditor_ckeditor5_ui__WEBPACK_IMPORTED_MODULE_0__.View { - /** - * @inheritDoc - */ - constructor() { - super(); - const bind = this.bindTemplate; - this.set({ - isVisible: false, - left: null, - top: null, - width: null - }); - this.setTemplate({ - tag: 'div', - attributes: { - class: [ - 'ck', - 'ck-clipboard-drop-target-line', - bind.if('isVisible', 'ck-hidden', value => !value) - ], - style: { - left: bind.to('left', left => toPx(left)), - top: bind.to('top', top => toPx(top)), - width: bind.to('width', width => toPx(width)) - } - } - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/pasteplaintext.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/pasteplaintext.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ PastePlainText) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-core */ "./node_modules/@ckeditor/ckeditor5-core/src/index.js"); -/* harmony import */ var _clipboardobserver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clipboardobserver */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js"); -/* harmony import */ var _clipboardpipeline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clipboardpipeline */ "./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/pasteplaintext - */ - - - -/** - * The plugin detects the user's intention to paste plain text. - * - * For example, it detects the Ctrl/Cmd + Shift + V keystroke. - */ -class PastePlainText extends _ckeditor_ckeditor5_core__WEBPACK_IMPORTED_MODULE_0__.Plugin { - /** - * @inheritDoc - */ - static get pluginName() { - return 'PastePlainText'; - } - /** - * @inheritDoc - */ - static get requires() { - return [_clipboardpipeline__WEBPACK_IMPORTED_MODULE_2__["default"]]; - } - /** - * @inheritDoc - */ - init() { - const editor = this.editor; - const model = editor.model; - const view = editor.editing.view; - const viewDocument = view.document; - const selection = model.document.selection; - let shiftPressed = false; - view.addObserver(_clipboardobserver__WEBPACK_IMPORTED_MODULE_1__["default"]); - this.listenTo(viewDocument, 'keydown', (evt, data) => { - shiftPressed = data.shiftKey; - }); - editor.plugins.get(_clipboardpipeline__WEBPACK_IMPORTED_MODULE_2__["default"]).on('contentInsertion', (evt, data) => { - // Plain text can be determined based on the event flag (#7799) or auto-detection (#1006). If detected, - // preserve selection attributes on pasted items. - if (!shiftPressed && !isPlainTextFragment(data.content, model.schema)) { - return; - } - model.change(writer => { - // Formatting attributes should be preserved. - const textAttributes = Array.from(selection.getAttributes()) - .filter(([key]) => model.schema.getAttributeProperties(key).isFormatting); - if (!selection.isCollapsed) { - model.deleteContent(selection, { doNotAutoparagraph: true }); - } - // Also preserve other attributes if they survived the content deletion (because they were not fully selected). - // For example linkHref is not a formatting attribute but it should be preserved if pasted text was in the middle - // of a link. - textAttributes.push(...selection.getAttributes()); - const range = writer.createRangeIn(data.content); - for (const item of range.getItems()) { - if (item.is('$textProxy')) { - writer.setAttributes(textAttributes, item); - } - } - }); - }); - } -} -/** - * Returns true if specified `documentFragment` represents a plain text. - */ -function isPlainTextFragment(documentFragment, schema) { - if (documentFragment.childCount > 1) { - return false; - } - const child = documentFragment.getChild(0); - if (schema.isObject(child)) { - return false; - } - return Array.from(child.getAttributeKeys()).length == 0; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/normalizeclipboarddata.js": -/*!****************************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/normalizeclipboarddata.js ***! - \****************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ normalizeClipboardData) -/* harmony export */ }); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/utils/normalizeclipboarddata - */ -/** - * Removes some popular browser quirks out of the clipboard data (HTML). - * Removes all HTML comments. These are considered an internal thing and it makes little sense if they leak into the editor data. - * - * @param data The HTML data to normalize. - * @returns Normalized HTML. - */ -function normalizeClipboardData(data) { - return data - .replace(/(\s+)<\/span>/g, (fullMatch, spaces) => { - // Handle the most popular and problematic case when even a single space becomes an nbsp;. - // Decode those to normal spaces. Read more in https://github.com/ckeditor/ckeditor5-clipboard/issues/2. - if (spaces.length == 1) { - return ' '; - } - return spaces; - }) - // Remove all HTML comments. - .replace(//g, ''); -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml.js ***! - \*********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ plainTextToHtml) -/* harmony export */ }); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module clipboard/utils/plaintexttohtml - */ -/** - * Converts plain text to its HTML-ized version. - * - * @param text The plain text to convert. - * @returns HTML generated from the plain text. - */ -function plainTextToHtml(text) { - text = text - // Encode <>. - .replace(//g, '>') - // Creates a paragraph for each double line break. - .replace(/\r?\n\r?\n/g, '

') - // Creates a line break for each single line break. - .replace(/\r?\n/g, '
') - // Replace tabs with four spaces. - .replace(/\t/g, '    ') - // Preserve trailing spaces (only the first and last one – the rest is handled below). - .replace(/^\s/, ' ') - .replace(/\s$/, ' ') - // Preserve other subsequent spaces now. - .replace(/\s\s/g, '  '); - if (text.includes('

') || text.includes('
')) { - // If we created paragraphs above, add the trailing ones. - text = `

${text}

`; - } - // TODO: - // * What about '\nfoo' vs ' foo'? - return text; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/viewtoplaintext.js": -/*!*********************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/viewtoplaintext.js ***! - \*********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ viewToPlainText) -/* harmony export */ }); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -// Elements which should not have empty-line padding. -// Most `view.ContainerElement` want to be separate by new-line, but some are creating one structure -// together (like `
  • `) so it is better to separate them by only one "\n". -const smallPaddingElements = ['figcaption', 'li']; -/** - * Converts {@link module:engine/view/item~Item view item} and all of its children to plain text. - * - * @param viewItem View item to convert. - * @returns Plain text representation of `viewItem`. - */ -function viewToPlainText(viewItem) { - let text = ''; - if (viewItem.is('$text') || viewItem.is('$textProxy')) { - // If item is `Text` or `TextProxy` simple take its text data. - text = viewItem.data; - } - else if (viewItem.is('element', 'img') && viewItem.hasAttribute('alt')) { - // Special case for images - use alt attribute if it is provided. - text = viewItem.getAttribute('alt'); - } - else if (viewItem.is('element', 'br')) { - // A soft break should be converted into a single line break (#8045). - text = '\n'; - } - else { - // Other elements are document fragments, attribute elements or container elements. - // They don't have their own text value, so convert their children. - let prev = null; - for (const child of viewItem.getChildren()) { - const childText = viewToPlainText(child); - // Separate container element children with one or more new-line characters. - if (prev && (prev.is('containerElement') || child.is('containerElement'))) { - if (smallPaddingElements.includes(prev.name) || - smallPaddingElements.includes(child.name)) { - text += '\n'; - } - else { - text += '\n\n'; - } - } - text += childText; - prev = child; - } - } - return text; -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/augmentation.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/augmentation.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/command.js": -/*!**************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/command.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Command) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module core/command - */ - -/** - * Base class for the CKEditor commands. - * - * Commands are the main way to manipulate the editor contents and state. They are mostly used by UI elements (or by other - * commands) to make changes in the model. Commands are available in every part of the code that has access to - * the {@link module:core/editor/editor~Editor editor} instance. - * - * Instances of registered commands can be retrieved from {@link module:core/editor/editor~Editor#commands `editor.commands`}. - * The easiest way to execute a command is through {@link module:core/editor/editor~Editor#execute `editor.execute()`}. - * - * By default, commands are disabled when the editor is in the {@link module:core/editor/editor~Editor#isReadOnly read-only} mode - * but commands with the {@link module:core/command~Command#affectsData `affectsData`} flag set to `false` will not be disabled. - */ -class Command extends (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.ObservableMixin)() { - /** - * Creates a new `Command` instance. - * - * @param editor The editor on which this command will be used. - */ - constructor(editor) { - super(); - this.editor = editor; - this.set('value', undefined); - this.set('isEnabled', false); - this._affectsData = true; - this._isEnabledBasedOnSelection = true; - this._disableStack = new Set(); - this.decorate('execute'); - // By default, every command is refreshed when changes are applied to the model. - this.listenTo(this.editor.model.document, 'change', () => { - this.refresh(); - }); - this.listenTo(editor, 'change:isReadOnly', () => { - this.refresh(); - }); - // By default, commands are disabled if the selection is in non-editable place or editor is in read-only mode. - this.on('set:isEnabled', evt => { - if (!this.affectsData) { - return; - } - // Checking `editor.isReadOnly` is needed for all commands that have `_isEnabledBasedOnSelection == false`. - // E.g. undo does not base on selection, but affects data and should be disabled when the editor is in read-only mode. - if (editor.isReadOnly || this._isEnabledBasedOnSelection && !editor.model.canEditAt(editor.model.document.selection)) { - evt.return = false; - evt.stop(); - } - }, { priority: 'highest' }); - this.on('execute', evt => { - if (!this.isEnabled) { - evt.stop(); - } - }, { priority: 'high' }); - } - /** - * A flag indicating whether a command execution changes the editor data or not. - * - * Commands with `affectsData` set to `false` will not be automatically disabled in - * the {@link module:core/editor/editor~Editor#isReadOnly read-only mode} and - * {@glink features/read-only#related-features other editor modes} with restricted user write permissions. - * - * **Note:** You do not have to set it for your every command. It is `true` by default. - * - * @default true - */ - get affectsData() { - return this._affectsData; - } - set affectsData(affectsData) { - this._affectsData = affectsData; - } - /** - * Refreshes the command. The command should update its {@link #isEnabled} and {@link #value} properties - * in this method. - * - * This method is automatically called when - * {@link module:engine/model/document~Document#event:change any changes are applied to the document}. - */ - refresh() { - this.isEnabled = true; - } - /** - * Disables the command. - * - * Command may be disabled by multiple features or algorithms (at once). When disabling a command, unique id should be passed - * (e.g. the feature name). The same identifier should be used when {@link #clearForceDisabled enabling back} the command. - * The command becomes enabled only after all features {@link #clearForceDisabled enabled it back}. - * - * Disabling and enabling a command: - * - * ```ts - * command.isEnabled; // -> true - * command.forceDisabled( 'MyFeature' ); - * command.isEnabled; // -> false - * command.clearForceDisabled( 'MyFeature' ); - * command.isEnabled; // -> true - * ``` - * - * Command disabled by multiple features: - * - * ```ts - * command.forceDisabled( 'MyFeature' ); - * command.forceDisabled( 'OtherFeature' ); - * command.clearForceDisabled( 'MyFeature' ); - * command.isEnabled; // -> false - * command.clearForceDisabled( 'OtherFeature' ); - * command.isEnabled; // -> true - * ``` - * - * Multiple disabling with the same identifier is redundant: - * - * ```ts - * command.forceDisabled( 'MyFeature' ); - * command.forceDisabled( 'MyFeature' ); - * command.clearForceDisabled( 'MyFeature' ); - * command.isEnabled; // -> true - * ``` - * - * **Note:** some commands or algorithms may have more complex logic when it comes to enabling or disabling certain commands, - * so the command might be still disabled after {@link #clearForceDisabled} was used. - * - * @param id Unique identifier for disabling. Use the same id when {@link #clearForceDisabled enabling back} the command. - */ - forceDisabled(id) { - this._disableStack.add(id); - if (this._disableStack.size == 1) { - this.on('set:isEnabled', forceDisable, { priority: 'highest' }); - this.isEnabled = false; - } - } - /** - * Clears forced disable previously set through {@link #forceDisabled}. See {@link #forceDisabled}. - * - * @param id Unique identifier, equal to the one passed in {@link #forceDisabled} call. - */ - clearForceDisabled(id) { - this._disableStack.delete(id); - if (this._disableStack.size == 0) { - this.off('set:isEnabled', forceDisable); - this.refresh(); - } - } - /** - * Executes the command. - * - * A command may accept parameters. They will be passed from {@link module:core/editor/editor~Editor#execute `editor.execute()`} - * to the command. - * - * The `execute()` method will automatically abort when the command is disabled ({@link #isEnabled} is `false`). - * This behavior is implemented by a high priority listener to the {@link #event:execute} event. - * - * In order to see how to disable a command from "outside" see the {@link #isEnabled} documentation. - * - * This method may return a value, which would be forwarded all the way down to the - * {@link module:core/editor/editor~Editor#execute `editor.execute()`}. - * - * @fires execute - */ - execute(...args) { return undefined; } - /** - * Destroys the command. - */ - destroy() { - this.stopListening(); - } -} -/** - * Helper function that forces command to be disabled. - */ -function forceDisable(evt) { - evt.return = false; - evt.stop(); -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/commandcollection.js": -/*!************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/commandcollection.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ CommandCollection) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module core/commandcollection - */ - -/** - * Collection of commands. Its instance is available in {@link module:core/editor/editor~Editor#commands `editor.commands`}. - */ -class CommandCollection { - /** - * Creates collection instance. - */ - constructor() { - this._commands = new Map(); - } - /** - * Registers a new command. - * - * @param commandName The name of the command. - */ - add(commandName, command) { - this._commands.set(commandName, command); - } - /** - * Retrieves a command from the collection. - * - * @param commandName The name of the command. - */ - get(commandName) { - return this._commands.get(commandName); - } - /** - * Executes a command. - * - * @param commandName The name of the command. - * @param commandParams Command parameters. - * @returns The value returned by the {@link module:core/command~Command#execute `command.execute()`}. - */ - execute(commandName, ...commandParams) { - const command = this.get(commandName); - if (!command) { - /** - * Command does not exist. - * - * @error commandcollection-command-not-found - * @param commandName Name of the command. - */ - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('commandcollection-command-not-found', this, { commandName }); - } - return command.execute(...commandParams); - } - /** - * Returns iterator of command names. - */ - *names() { - yield* this._commands.keys(); - } - /** - * Returns iterator of command instances. - */ - *commands() { - yield* this._commands.values(); - } - /** - * Iterable interface. - * - * Returns `[ commandName, commandInstance ]` pairs. - */ - [Symbol.iterator]() { - return this._commands[Symbol.iterator](); - } - /** - * Destroys all collection commands. - */ - destroy() { - for (const command of this.commands()) { - command.destroy(); - } - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/context.js": -/*!**************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/context.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Context) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _plugincollection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./plugincollection */ "./node_modules/@ckeditor/ckeditor5-core/src/plugincollection.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module core/context - */ - - -/** - * Provides a common, higher-level environment for solutions that use multiple {@link module:core/editor/editor~Editor editors} - * or plugins that work outside the editor. Use it instead of {@link module:core/editor/editor~Editor.create `Editor.create()`} - * in advanced application integrations. - * - * All configuration options passed to a context will be used as default options for the editor instances initialized in that context. - * - * {@link module:core/contextplugin~ContextPlugin Context plugins} passed to a context instance will be shared among all - * editor instances initialized in this context. These will be the same plugin instances for all the editors. - * - * **Note:** The context can only be initialized with {@link module:core/contextplugin~ContextPlugin context plugins} - * (e.g. [comments](https://ckeditor.com/collaboration/comments/)). Regular {@link module:core/plugin~Plugin plugins} require an - * editor instance to work and cannot be added to a context. - * - * **Note:** You can add a context plugin to an editor instance, though. - * - * If you are using multiple editor instances on one page and use any context plugins, create a context to share the configuration and - * plugins among these editors. Some plugins will use the information about all existing editors to better integrate between them. - * - * If you are using plugins that do not require an editor to work (e.g. [comments](https://ckeditor.com/collaboration/comments/)), - * enable and configure them using the context. - * - * If you are using only a single editor on each page, use {@link module:core/editor/editor~Editor.create `Editor.create()`} instead. - * In such a case, a context instance will be created by the editor instance in a transparent way. - * - * See {@link ~Context.create `Context.create()`} for usage examples. - */ -class Context { - /** - * Creates a context instance with a given configuration. - * - * Usually not to be used directly. See the static {@link module:core/context~Context.create `create()`} method. - * - * @param config The context configuration. - */ - constructor(config) { - /** - * Reference to the editor which created the context. - * Null when the context was created outside of the editor. - * - * It is used to destroy the context when removing the editor that has created the context. - */ - this._contextOwner = null; - this.config = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.Config(config, this.constructor.defaultConfig); - const availablePlugins = this.constructor.builtinPlugins; - this.config.define('plugins', availablePlugins); - this.plugins = new _plugincollection__WEBPACK_IMPORTED_MODULE_1__["default"](this, availablePlugins); - const languageConfig = this.config.get('language') || {}; - this.locale = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.Locale({ - uiLanguage: typeof languageConfig === 'string' ? languageConfig : languageConfig.ui, - contentLanguage: this.config.get('language.content') - }); - this.t = this.locale.t; - this.editors = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.Collection(); - } - /** - * Loads and initializes plugins specified in the configuration. - * - * @returns A promise which resolves once the initialization is completed, providing an array of loaded plugins. - */ - initPlugins() { - const plugins = this.config.get('plugins') || []; - const substitutePlugins = this.config.get('substitutePlugins') || []; - // Plugins for substitution should be checked as well. - for (const Plugin of plugins.concat(substitutePlugins)) { - if (typeof Plugin != 'function') { - /** - * Only a constructor function is allowed as a {@link module:core/contextplugin~ContextPlugin context plugin}. - * - * @error context-initplugins-constructor-only - */ - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('context-initplugins-constructor-only', null, { Plugin }); - } - if (Plugin.isContextPlugin !== true) { - /** - * Only a plugin marked as a {@link module:core/contextplugin~ContextPlugin.isContextPlugin context plugin} - * is allowed to be used with a context. - * - * @error context-initplugins-invalid-plugin - */ - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('context-initplugins-invalid-plugin', null, { Plugin }); - } - } - return this.plugins.init(plugins, [], substitutePlugins); - } - /** - * Destroys the context instance and all editors used with the context, - * releasing all resources used by the context. - * - * @returns A promise that resolves once the context instance is fully destroyed. - */ - destroy() { - return Promise.all(Array.from(this.editors, editor => editor.destroy())) - .then(() => this.plugins.destroy()); - } - /** - * Adds a reference to the editor which is used with this context. - * - * When the given editor has created the context, the reference to this editor will be stored - * as a {@link ~Context#_contextOwner}. - * - * This method should only be used by the editor. - * - * @internal - * @param isContextOwner Stores the given editor as a context owner. - */ - _addEditor(editor, isContextOwner) { - if (this._contextOwner) { - /** - * Cannot add multiple editors to the context which is created by the editor. - * - * @error context-addeditor-private-context - */ - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('context-addeditor-private-context'); - } - this.editors.add(editor); - if (isContextOwner) { - this._contextOwner = editor; - } - } - /** - * Removes a reference to the editor which was used with this context. - * When the context was created by the given editor, the context will be destroyed. - * - * This method should only be used by the editor. - * - * @internal - * @return A promise that resolves once the editor is removed from the context or when the context was destroyed. - */ - _removeEditor(editor) { - if (this.editors.has(editor)) { - this.editors.remove(editor); - } - if (this._contextOwner === editor) { - return this.destroy(); - } - return Promise.resolve(); - } - /** - * Returns the context configuration which will be copied to the editors created using this context. - * - * The configuration returned by this method has the plugins configuration removed — plugins are shared with all editors - * through another mechanism. - * - * This method should only be used by the editor. - * - * @internal - * @returns Configuration as a plain object. - */ - _getEditorConfig() { - const result = {}; - for (const name of this.config.names()) { - if (!['plugins', 'removePlugins', 'extraPlugins'].includes(name)) { - result[name] = this.config.get(name); - } - } - return result; - } - /** - * Creates and initializes a new context instance. - * - * ```ts - * const commonConfig = { ... }; // Configuration for all the plugins and editors. - * const editorPlugins = [ ... ]; // Regular plugins here. - * - * Context - * .create( { - * // Only context plugins here. - * plugins: [ ... ], - * - * // Configure the language for all the editors (it cannot be overwritten). - * language: { ... }, - * - * // Configuration for context plugins. - * comments: { ... }, - * ... - * - * // Default configuration for editor plugins. - * toolbar: { ... }, - * image: { ... }, - * ... - * } ) - * .then( context => { - * const promises = []; - * - * promises.push( ClassicEditor.create( - * document.getElementById( 'editor1' ), - * { - * editorPlugins, - * context - * } - * ) ); - * - * promises.push( ClassicEditor.create( - * document.getElementById( 'editor2' ), - * { - * editorPlugins, - * context, - * toolbar: { ... } // You can overwrite the configuration of the context. - * } - * ) ); - * - * return Promise.all( promises ); - * } ); - * ``` - * - * @param config The context configuration. - * @returns A promise resolved once the context is ready. The promise resolves with the created context instance. - */ - static create(config) { - return new Promise(resolve => { - const context = new this(config); - resolve(context.initPlugins().then(() => context)); - }); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/contextplugin.js": -/*!********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/contextplugin.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ ContextPlugin) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module core/contextplugin - */ - -/** - * The base class for {@link module:core/context~Context} plugin classes. - * - * A context plugin can either be initialized for an {@link module:core/editor/editor~Editor editor} or for - * a {@link module:core/context~Context context}. In other words, it can either - * work within one editor instance or with one or more editor instances that use a single context. - * It is the context plugin's role to implement handling for both modes. - * - * There are a few rules for interaction between the editor plugins and context plugins: - * - * * A context plugin can require another context plugin. - * * An {@link module:core/plugin~Plugin editor plugin} can require a context plugin. - * * A context plugin MUST NOT require an {@link module:core/plugin~Plugin editor plugin}. - */ -class ContextPlugin extends (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.ObservableMixin)() { - /** - * Creates a new plugin instance. - */ - constructor(context) { - super(); - this.context = context; - } - /** - * @inheritDoc - */ - destroy() { - this.stopListening(); - } - /** - * @inheritDoc - */ - static get isContextPlugin() { - return true; - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/editingkeystrokehandler.js": -/*!******************************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/editingkeystrokehandler.js ***! - \******************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ EditingKeystrokeHandler) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module core/editingkeystrokehandler - */ - -/** - * A keystroke handler for editor editing. Its instance is available - * in {@link module:core/editor/editor~Editor#keystrokes} so plugins - * can register their keystrokes. - * - * E.g. an undo plugin would do this: - * - * ```ts - * editor.keystrokes.set( 'Ctrl+Z', 'undo' ); - * editor.keystrokes.set( 'Ctrl+Shift+Z', 'redo' ); - * editor.keystrokes.set( 'Ctrl+Y', 'redo' ); - * ``` - */ -class EditingKeystrokeHandler extends _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.KeystrokeHandler { - /** - * Creates an instance of the keystroke handler. - */ - constructor(editor) { - super(); - this.editor = editor; - } - /** - * Registers a handler for the specified keystroke. - * - * The handler can be specified as a command name or a callback. - * - * @param keystroke Keystroke defined in a format accepted by - * the {@link module:utils/keyboard~parseKeystroke} function. - * @param callback If a string is passed, then the keystroke will - * {@link module:core/editor/editor~Editor#execute execute a command}. - * If a function, then it will be called with the - * {@link module:engine/view/observer/keyobserver~KeyEventData key event data} object and - * a `cancel()` helper to both `preventDefault()` and `stopPropagation()` of the event. - * @param options Additional options. - * @param options.priority The priority of the keystroke callback. The higher the priority value - * the sooner the callback will be executed. Keystrokes having the same priority - * are called in the order they were added. - */ - set(keystroke, callback, options = {}) { - if (typeof callback == 'string') { - const commandName = callback; - callback = (evtData, cancel) => { - this.editor.execute(commandName); - cancel(); - }; - } - super.set(keystroke, callback, options); - } -} - - -/***/ }), - -/***/ "./node_modules/@ckeditor/ckeditor5-core/src/editor/editor.js": -/*!********************************************************************!*\ - !*** ./node_modules/@ckeditor/ckeditor5-core/src/editor/editor.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Editor) -/* harmony export */ }); -/* harmony import */ var _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ckeditor/ckeditor5-utils */ "./node_modules/@ckeditor/ckeditor5-utils/src/index.js"); -/* harmony import */ var _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @ckeditor/ckeditor5-engine */ "./node_modules/@ckeditor/ckeditor5-engine/src/index.js"); -/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context */ "./node_modules/@ckeditor/ckeditor5-core/src/context.js"); -/* harmony import */ var _plugincollection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../plugincollection */ "./node_modules/@ckeditor/ckeditor5-core/src/plugincollection.js"); -/* harmony import */ var _commandcollection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../commandcollection */ "./node_modules/@ckeditor/ckeditor5-core/src/commandcollection.js"); -/* harmony import */ var _editingkeystrokehandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../editingkeystrokehandler */ "./node_modules/@ckeditor/ckeditor5-core/src/editingkeystrokehandler.js"); -/** - * @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ -/** - * @module core/editor/editor - */ - - - - - - -/** - * The class representing a basic, generic editor. - * - * Check out the list of its subclasses to learn about specific editor implementations. - * - * All editor implementations (like {@link module:editor-classic/classiceditor~ClassicEditor} or - * {@link module:editor-inline/inlineeditor~InlineEditor}) should extend this class. They can add their - * own methods and properties. - * - * When you are implementing a plugin, this editor represents the API - * which your plugin can expect to get when using its {@link module:core/plugin~Plugin#editor} property. - * - * This API should be sufficient in order to implement the "editing" part of your feature - * (schema definition, conversion, commands, keystrokes, etc.). - * It does not define the editor UI, which is available only if - * the specific editor implements also the {@link ~Editor#ui} property - * (as most editor implementations do). - */ -class Editor extends (0,_ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.ObservableMixin)() { - /** - * Creates a new instance of the editor class. - * - * Usually, not to be used directly. See the static {@link module:core/editor/editor~Editor.create `create()`} method. - * - * @param config The editor configuration. - */ - constructor(config = {}) { - super(); - const constructor = this.constructor; - // Prefer the language passed as the argument to the constructor instead of the constructor's `defaultConfig`, if both are set. - const language = config.language || (constructor.defaultConfig && constructor.defaultConfig.language); - this._context = config.context || new _context__WEBPACK_IMPORTED_MODULE_2__["default"]({ language }); - this._context._addEditor(this, !config.context); - // Clone the plugins to make sure that the plugin array will not be shared - // between editors and make the watchdog feature work correctly. - const availablePlugins = Array.from(constructor.builtinPlugins || []); - this.config = new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.Config(config, constructor.defaultConfig); - this.config.define('plugins', availablePlugins); - this.config.define(this._context._getEditorConfig()); - this.plugins = new _plugincollection__WEBPACK_IMPORTED_MODULE_3__["default"](this, availablePlugins, this._context.plugins); - this.locale = this._context.locale; - this.t = this.locale.t; - this._readOnlyLocks = new Set(); - this.commands = new _commandcollection__WEBPACK_IMPORTED_MODULE_4__["default"](); - this.set('state', 'initializing'); - this.once('ready', () => (this.state = 'ready'), { priority: 'high' }); - this.once('destroy', () => (this.state = 'destroyed'), { priority: 'high' }); - this.model = new _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.Model(); - this.on('change:isReadOnly', () => { - this.model.document.isReadOnly = this.isReadOnly; - }); - const stylesProcessor = new _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.StylesProcessor(); - this.data = new _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.DataController(this.model, stylesProcessor); - this.editing = new _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.EditingController(this.model, stylesProcessor); - this.editing.view.document.bind('isReadOnly').to(this); - this.conversion = new _ckeditor_ckeditor5_engine__WEBPACK_IMPORTED_MODULE_1__.Conversion([this.editing.downcastDispatcher, this.data.downcastDispatcher], this.data.upcastDispatcher); - this.conversion.addAlias('dataDowncast', this.data.downcastDispatcher); - this.conversion.addAlias('editingDowncast', this.editing.downcastDispatcher); - this.keystrokes = new _editingkeystrokehandler__WEBPACK_IMPORTED_MODULE_5__["default"](this); - this.keystrokes.listenTo(this.editing.view.document); - } - /** - * Defines whether the editor is in the read-only mode. - * - * In read-only mode the editor {@link #commands commands} are disabled so it is not possible - * to modify the document by using them. Also, the editable element(s) become non-editable. - * - * In order to make the editor read-only, you need to call the {@link #enableReadOnlyMode} method: - * - * ```ts - * editor.enableReadOnlyMode( 'feature-id' ); - * ``` - * - * Later, to turn off the read-only mode, call {@link #disableReadOnlyMode}: - * - * ```ts - * editor.disableReadOnlyMode( 'feature-id' ); - * ``` - * - * @readonly - * @observable - */ - get isReadOnly() { - return this._readOnlyLocks.size > 0; - } - set isReadOnly(value) { - /** - * The {@link module:core/editor/editor~Editor#isReadOnly Editor#isReadOnly} property is read-only since version `34.0.0` - * and can be set only using {@link module:core/editor/editor~Editor#enableReadOnlyMode `Editor#enableReadOnlyMode( lockId )`} and - * {@link module:core/editor/editor~Editor#disableReadOnlyMode `Editor#disableReadOnlyMode( lockId )`}. - * - * Usage before version `34.0.0`: - * - * ```ts - * editor.isReadOnly = true; - * editor.isReadOnly = false; - * ``` - * - * Usage since version `34.0.0`: - * - * ```ts - * editor.enableReadOnlyMode( 'my-feature-id' ); - * editor.disableReadOnlyMode( 'my-feature-id' ); - * ``` - * - * @error editor-isreadonly-has-no-setter - */ - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('editor-isreadonly-has-no-setter'); - } - /** - * Turns on the read-only mode in the editor. - * - * Editor can be switched to or out of the read-only mode by many features, under various circumstances. The editor supports locking - * mechanism for the read-only mode. It enables easy control over the read-only mode when many features wants to turn it on or off at - * the same time, without conflicting with each other. It guarantees that you will not make the editor editable accidentally (which - * could lead to errors). - * - * Each read-only mode request is identified by a unique id (also called "lock"). If multiple plugins requested to turn on the - * read-only mode, then, the editor will become editable only after all these plugins turn the read-only mode off (using the same ids). - * - * Note, that you cannot force the editor to disable the read-only mode if other plugins set it. - * - * After the first `enableReadOnlyMode()` call, the {@link #isReadOnly `isReadOnly` property} will be set to `true`: - * - * ```ts - * editor.isReadOnly; // `false`. - * editor.enableReadOnlyMode( 'my-feature-id' ); - * editor.isReadOnly; // `true`. - * ``` - * - * You can turn off the read-only mode ("clear the lock") using the {@link #disableReadOnlyMode `disableReadOnlyMode()`} method: - * - * ```ts - * editor.enableReadOnlyMode( 'my-feature-id' ); - * // ... - * editor.disableReadOnlyMode( 'my-feature-id' ); - * editor.isReadOnly; // `false`. - * ``` - * - * All "locks" need to be removed to enable editing: - * - * ```ts - * editor.enableReadOnlyMode( 'my-feature-id' ); - * editor.enableReadOnlyMode( 'my-other-feature-id' ); - * // ... - * editor.disableReadOnlyMode( 'my-feature-id' ); - * editor.isReadOnly; // `true`. - * editor.disableReadOnlyMode( 'my-other-feature-id' ); - * editor.isReadOnly; // `false`. - * ``` - * - * @param lockId A unique ID for setting the editor to the read-only state. - */ - enableReadOnlyMode(lockId) { - if (typeof lockId !== 'string' && typeof lockId !== 'symbol') { - /** - * The lock ID is missing or it is not a string or symbol. - * - * @error editor-read-only-lock-id-invalid - */ - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('editor-read-only-lock-id-invalid', null, { lockId }); - } - if (this._readOnlyLocks.has(lockId)) { - return; - } - this._readOnlyLocks.add(lockId); - if (this._readOnlyLocks.size === 1) { - // Manually fire the `change:isReadOnly` event as only getter is provided. - this.fire('change:isReadOnly', 'isReadOnly', true, false); - } - } - /** - * Removes the read-only lock from the editor with given lock ID. - * - * When no lock is present on the editor anymore, then the {@link #isReadOnly `isReadOnly` property} will be set to `false`. - * - * @param lockId The lock ID for setting the editor to the read-only state. - */ - disableReadOnlyMode(lockId) { - if (typeof lockId !== 'string' && typeof lockId !== 'symbol') { - throw new _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError('editor-read-only-lock-id-invalid', null, { lockId }); - } - if (!this._readOnlyLocks.has(lockId)) { - return; - } - this._readOnlyLocks.delete(lockId); - if (this._readOnlyLocks.size === 0) { - // Manually fire the `change:isReadOnly` event as only getter is provided. - this.fire('change:isReadOnly', 'isReadOnly', false, true); - } - } - /** - * Loads and initializes plugins specified in the configuration. - * - * @returns A promise which resolves once the initialization is completed, providing an array of loaded plugins. - */ - initPlugins() { - const config = this.config; - const plugins = config.get('plugins'); - const removePlugins = config.get('removePlugins') || []; - const extraPlugins = config.get('extraPlugins') || []; - const substitutePlugins = config.get('substitutePlugins') || []; - return this.plugins.init(plugins.concat(extraPlugins), removePlugins, substitutePlugins); - } - /** - * Destroys the editor instance, releasing all resources used by it. - * - * **Note** The editor cannot be destroyed during the initialization phase so if it is called - * while the editor {@link #state is being initialized}, it will wait for the editor initialization before destroying it. - * - * @fires destroy - * @returns A promise that resolves once the editor instance is fully destroyed. - */ - destroy() { - let readyPromise = Promise.resolve(); - if (this.state == 'initializing') { - readyPromise = new Promise(resolve => this.once('ready', resolve)); - } - return readyPromise - .then(() => { - this.fire('destroy'); - this.stopListening(); - this.commands.destroy(); - }) - .then(() => this.plugins.destroy()) - .then(() => { - this.model.destroy(); - this.data.destroy(); - this.editing.destroy(); - this.keystrokes.destroy(); - }) - // Remove the editor from the context. - // When the context was created by this editor, the context will be destroyed. - .then(() => this._context._removeEditor(this)); - } - /** - * Executes the specified command with given parameters. - * - * Shorthand for: - * - * ```ts - * editor.commands.get( commandName ).execute( ... ); - * ``` - * - * @param commandName The name of the command to execute. - * @param commandParams Command parameters. - * @returns The value returned by the {@link module:core/commandcollection~CommandCollection#execute `commands.execute()`}. - */ - execute(commandName, ...commandParams) { - try { - return this.commands.execute(commandName, ...commandParams); - } - catch (err) { - // @if CK_DEBUG // throw err; - /* istanbul ignore next -- @preserve */ - _ckeditor_ckeditor5_utils__WEBPACK_IMPORTED_MODULE_0__.CKEditorError.rethrowUnexpectedError(err, this); - } - } - /** - * Focuses the editor. - * - * **Note** To explicitly focus the editing area of the editor, use the - * {@link module:engine/view/view~View#focus `editor.editing.view.focus()`} method of the editing view. - * - * Check out the {@glink framework/deep-dive/ui/focus-tracking#focus-in-the-editor-ui Focus in the editor UI} section - * of the {@glink framework/deep-dive/ui/focus-tracking Deep dive into focus tracking} guide to learn more. - */ - focus() { - this.editing.view.focus(); - } - /* istanbul ignore next -- @preserve */ - /** - * Creates and initializes a new editor instance. - * - * This is an abstract method. Every editor type needs to implement its own initialization logic. - * - * See the `create()` methods of the existing editor types to learn how to use them: - * - * * {@link module:editor-classic/classiceditor~ClassicEditor.create `ClassicEditor.create()`} - * * {@link module:editor-balloon/ballooneditor~BalloonEditor.create `BalloonEditor.create()`} - * * {@link module:editor-decoupled/decouplededitor~DecoupledEditor.create `DecoupledEditor.create()`} - * * {@link module:editor-inline/inlineeditor~InlineEditor.create `InlineEditor.create()`} - */ - static create(...args) { - throw new Error('This is an abstract method.'); - } -} -/** - * This error is thrown when trying to pass a `