Merge branch 'dev' into use_jemalloc

This commit is contained in:
Alexander
2024-09-17 21:20:32 +03:00
committed by GitHub
10996 changed files with 106677 additions and 60934 deletions
+8 -1
View File
@@ -22,11 +22,18 @@ browserslist
!/docs/api/apiv3/tags
!/docs/api/apiv3/components
# Ignore spec/** folders
spec/**
# Allow factories in case we use lookbook
!spec/factories
!spec/factories/**
!spec/support
!spec/support/**
extra
features
help
log/*.log
spec
/tmp
frontend/.angular/cache
frontend/node_modules
+1 -1
View File
@@ -1,6 +1,6 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2020 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -1,6 +1,6 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2020 the OpenProject GmbH
# Copyright (C) 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.
+4 -6
View File
@@ -1,14 +1,12 @@
# .git-blame-ignore-revs
# lint with rubocop --autocorrect (safe cops only)
48a4f1b6adb1e847a90a61f2ab277f28bcd77608
# Update copyright information for 2023
21a696ef9b170e14ad2daf53364a4c2113822c2f
# Update copyright information for 2024
c795874f7f281297bbd3bad2fdb58b24cb4ce624
# rubocop autocorrections
48a4f1b6adb1e847a90a61f2ab277f28bcd77608
f3c99ee5dded81ad55f2b6f3706216d5fa765677
5c72ea0046a6b5230bf456f55a296ed6fd579535
9e4934cd0a468f46d8f0fc0f11ebc2d4216f789c
6678cab48d443b5782fa93b171d62093819ee4fc
fa5d03eae00bc8931f99598a74ffd76e0cbca3da
b10e6d718cc49e3574837d97fab268e3ecb3fcbd
# accidental merge
7787e457a37d8d1ef5b6d0c2e326bdc42338ac7b
3b2121f7333f0ce7f3515b29c760c0580c31a245
+6
View File
@@ -21,3 +21,9 @@ updates:
target-branch: "dev"
open-pull-requests-limit: 3
versioning-strategy: lockfile-only
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
target-branch: "dev"
open-pull-requests-limit: 3
+23
View File
@@ -0,0 +1,23 @@
# Ticket
<!-- Provide the link to respective work package -->
<!-- Contributors: Please check our PR guide: https://www.openproject.org/docs/development/code-review-guidelines/#preparing-your-pull-request before opening a PR. -->
<!-- Reviewers: Please check our Review guide: https://www.openproject.org/docs/development/code-review-guidelines/#reviewing -->
# What are you trying to accomplish?
<!-- Provide a description of the changes. -->
## Screenshots
<!-- Provide before/after screenshots, videos, or graphs for any visual changes; otherwise, remove this section -->
# What approach did you choose and why?
<!-- This section is a place for you to describe your thought process in making these changes.
List any tradeoffs you made to take on or pay down tech debt.
Describe any alternative approaches you considered and why you discarded them. -->
# Merge checklist
- [ ] Added/updated tests
- [ ] Added/updated documentation in Lookbook (patterns, previews, etc)
- [ ] Tested major browsers (Chrome, Firefox, Edge, ...)
+2 -2
View File
@@ -25,7 +25,7 @@ jobs:
RUBY_GC_HEAP_INIT_SLOTS: 100000
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@v1
@@ -44,6 +44,6 @@ jobs:
--output output.sarif.json
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: output.sarif.json
+2 -2
View File
@@ -41,7 +41,7 @@ jobs:
- dev
- "${{ needs.setup.outputs.latest_release_branch }}"
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ matrix.branch }}
fetch-depth: 1
@@ -65,7 +65,7 @@ jobs:
bundle exec script/i18n/generate_seeders_i18n_source_file
fi
- name: "Crowdin: upload sources and download translations"
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
# Upload current source files
upload_sources: true
+2 -2
View File
@@ -17,8 +17,8 @@ jobs:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3.3'
- uses: MeilCli/danger-action@v5
ruby-version: '3.3.4'
- uses: MeilCli/danger-action@v6
with:
danger_file: 'Dangerfile'
danger_id: 'danger-pr'
+23 -11
View File
@@ -85,10 +85,11 @@ jobs:
./docker/prod/setup/precompile-assets.sh
# public/assets will be saved as artifact, so temporarily copying config file there as well
cp config/frontend_assets.manifest.json public/assets/frontend_assets.manifest.json
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
path: public/
name: public-assets-${{ github.sha }}
overwrite: true
outputs:
version: ${{ steps.extract_version.outputs.version }}
checkout_ref: ${{ steps.extract_version.outputs.checkout_ref }}
@@ -106,22 +107,27 @@ jobs:
matrix:
include:
- platform: linux/amd64
digest: amd64-slim
bim_support: true
target: slim
runner: runner=4cpu-linux-x64
- platform: linux/arm64/v8
digest: arm64-slim
bim_support: false
target: slim
runner: runner=4cpu-linux-arm64
- platform: linux/amd64
digest: amd64-aio
bim_support: true
target: all-in-one
runner: runner=4cpu-linux-x64
- platform: linux/arm64/v8
digest: arm64-aio
bim_support: false
target: all-in-one
runner: runner=4cpu-linux-arm64
- platform: linux/ppc64le
digest: ppc-aio
bim_support: false
target: all-in-one
runner: runner=4cpu-linux-x64
@@ -134,7 +140,7 @@ jobs:
run: |
cp ./docker/prod/Dockerfile ./Dockerfile
- name: Download precompiled public assets
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: public-assets-${{ github.sha }}
path: public/
@@ -164,7 +170,7 @@ jobs:
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
context: git
labels: |
@@ -177,7 +183,7 @@ jobs:
${{ env.REGISTRY_IMAGE }}
- name: Build image
id: build
uses: docker/build-push-action@v4
uses: docker/build-push-action@v6
with:
context: .
platforms: ${{ matrix.platform }}
@@ -209,7 +215,7 @@ jobs:
wget -O- --retry-on-http-error=503,502 --retry-connrefused http://localhost:8080/api/v3
- name: Push image
id: push
uses: docker/build-push-action@v4
uses: docker/build-push-action@v6
with:
context: .
platforms: ${{ matrix.platform }}
@@ -226,9 +232,9 @@ jobs:
digest="${{ steps.push.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: digests-${{ matrix.target }}
name: digests-${{ matrix.target }}-${{ matrix.digest }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
@@ -241,10 +247,16 @@ jobs:
- setup
- build
steps:
- name: Download digests
uses: actions/download-artifact@v3
- name: Merge digests
uses: actions/upload-artifact/merge@v4
with:
name: digests-${{ matrix.target }}
pattern: "digests-${{ matrix.target }}-*"
overwrite: true
name: "merged-digests-${{ matrix.target }}-${{ github.run_number }}-${{ github.run_attempt }}"
- name: Download digests
uses: actions/download-artifact@v4
with:
name: "merged-digests-${{ matrix.target }}-${{ github.run_number }}-${{ github.run_attempt }}"
path: /tmp/digests
- name: Set suffix
id: set_suffix
@@ -256,7 +268,7 @@ jobs:
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
labels: |
+2 -2
View File
@@ -14,10 +14,10 @@ jobs:
name: eslint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: '18.13'
cache: npm
+44
View File
@@ -0,0 +1,44 @@
name: i18n-inconsistency-check
on:
push:
branches:
- dev
- release/*
paths-ignore:
- 'docs/**'
- 'help/**'
pull_request:
types: [opened, reopened, synchronize]
paths-ignore:
- 'docs/**'
- 'help/**'
- 'packaging/**'
- '.pkgr.yml'
permissions:
contents: read
jobs:
i18n-tasks:
permissions:
contents: read
if: github.repository == 'opf/openproject'
name: I18n inconsistency check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@v1
- name: Setup i18n-tasks
run: |
gem install i18n-tasks
- name: Run inconsistent translations check
run: |
i18n-tasks \
check-consistent-interpolations \
--config config/i18n-tasks-all-files.yml
+2 -2
View File
@@ -18,11 +18,11 @@ jobs:
if: github.repository == 'opf/openproject'
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- uses: actions/setup-node@v2
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: ./script/api/validate_spec
+1 -1
View File
@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Generate .env.pullpreview file
run: |
echo "OPENPROJECT_SEED_ADMIN_USER_PASSWORD_RESET=false" >> .env.pullpreview
+1 -3
View File
@@ -9,10 +9,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Fetch head commit of base branch
run: git fetch --depth 1 origin ${{ github.event.pull_request.base.sha }}
- uses: ruby/setup-ruby@v1
- uses: opf/action-rubocop@master
- uses: reviewdog/action-rubocop@v2
with:
github_token: ${{ secrets.github_token }}
rubocop_version: gemfile
+1
View File
@@ -27,6 +27,7 @@ jobs:
labels:
- runs-on
- runner=32cpu-linux-x64
- family=m7
- run-id=${{ github.run_id }}
timeout-minutes: 40
env:
+47
View File
@@ -0,0 +1,47 @@
name: Check work package version
on:
pull_request:
types: [labeled, synchronize]
permissions:
contents: read # to fetch code (actions/checkout)
pull-requests: write # to comment on the PR
jobs:
check-pr:
if: contains(github.event.pull_request.labels.*.name, 'needs review')
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
- name: Verify linked version matches core version
id: version-check
run: ./script/ci/version_check.sh "${{ github.event.pull_request.body }}"
- name: Add comment if versions differ
if: steps.version-check.outputs.version_mismatch == 'true'
uses: marocchino/sticky-pull-request-comment@v2
with:
header: version-mismatch-comment
message: |
The provided work package version does not match the core version:
- Work package URL: ${{ steps.version-check.outputs.wp_url }}
- Work package version: ${{steps.version-check.outputs.wp_version}}
- Core version: ${{steps.version-check.outputs.core_version}}
Please make sure that:
- The work package version OR your pull request target branch is correct
- name: Version check passed
if: steps.version-check.outputs.version_mismatch != 'true'
uses: marocchino/sticky-pull-request-comment@v2
with:
header: version-mismatch-comment
delete: true
+1 -1
View File
@@ -1,6 +1,6 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2022 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -49,7 +49,7 @@ wizards:
- https://github.com/pkgr/addon-legacy-installer.git
- ./packaging/addons/openproject-edition
- https://github.com/pkgr/addon-postgres
- https://github.com/pkgr/addon-apache2.git
- https://github.com/pkgr/addon-apache2.git#set-host-header
- ./packaging/addons/repositories
- https://github.com/pkgr/addon-memcached.git
- ./packaging/addons/openproject
+21 -1
View File
@@ -143,7 +143,7 @@ Naming/VariableNumber:
AllowedPatterns:
- '\w_20\d\d' # allow dates like christmas_2022 or date_2034_04_12
- '\w\d++(_\d++)+' # allow hierarchical data like child1_2_5 (second + in regex is possessive qualifier)
- 'custom_field_\d+' # allow custom field method names to be called with send :custom_field_1001
# There are valid cases in which to use methods like:
# * update_all
# * touch_all
@@ -208,6 +208,17 @@ Rails/DynamicFindBy:
- 'spec/features/**/*.rb'
- 'spec/support/**/*.rb'
- 'modules/*/spec/features/**/*.rb'
Whitelist:
- find_by_login
# Allow reorder to prevent find each cop triggering
Rails/FindEach:
AllowedMethods:
- order
- reorder
- limit
- select
- lock
# We have config.active_record.belongs_to_required_by_default = false ,
# which means, we do have to declare presence validators on belongs_to relations.
@@ -236,6 +247,8 @@ RSpec/DescribeMethod:
# Don't force the second argument of describe
# to match the exact file name
RSpec/SpecFilePathFormat:
CustomTransform:
OAuthClients: oauth_clients
IgnoreMethods: true
# Prevent "fit" or similar to be committed
@@ -459,3 +472,10 @@ Style/HashTransformValues:
Performance/Casecmp:
Enabled: false
OpenProject/AddPreviewForViewComponent:
Include:
- app/components/op_turbo/**.rb
- app/components/op_primer/**.rb
- app/components/open_project/**.rb
- app/components/concerns/**.rb
+1 -1
View File
@@ -1 +1 @@
3.3.3
3.3.4
+1 -1
View File
@@ -1,5 +1,5 @@
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
+22 -16
View File
@@ -1,6 +1,6 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -61,9 +61,9 @@ gem "friendly_id", "~> 5.5.0"
gem "acts_as_list", "~> 1.2.0"
gem "acts_as_tree", "~> 2.9.0"
gem "awesome_nested_set", "~> 3.6.0"
gem "awesome_nested_set", "~> 3.7.0"
gem "closure_tree", "~> 7.4.0"
gem "rubytree", "~> 2.0.0"
gem "rubytree", "~> 2.1.0"
# Only used in down migrations now.
# Is to be removed once the referencing migrations have been squashed.
gem "typed_dag", "~> 2.0.2", require: false
@@ -158,14 +158,14 @@ gem "structured_warnings", "~> 0.4.0"
gem "airbrake", "~> 13.0.0", require: false
gem "markly", "~> 0.10" # another markdown parser like commonmarker, but with AST support used in PDF export
gem "md_to_pdf", git: "https://github.com/opf/md-to-pdf", ref: "32603f09a249999a00e8ca23eb17215b46a26c0f"
gem "md_to_pdf", git: "https://github.com/opf/md-to-pdf", ref: "fe05b4f8bae8fd46f4fa93b8e0adee6295ef7388"
gem "prawn", "~> 2.4"
gem "ttfunk", "~> 1.7.0" # remove after https://github.com/prawnpdf/prawn/issues/1346 resolved.
# prawn implicitly depends on matrix gem no longer in ruby core with 3.1
gem "matrix", "~> 0.4.2"
gem "meta-tags", "~> 2.21.0"
gem "meta-tags", "~> 2.22.0"
gem "paper_trail", "~> 15.1.0"
@@ -204,29 +204,32 @@ gem "plaintext", "~> 0.3.2"
gem "ruby-progressbar", "~> 1.13.0", require: false
gem "mini_magick", "~> 4.13.0", require: false
gem "mini_magick", "~> 5.0.1", require: false
gem "validate_url"
# Storages support code
gem "dry-auto_inject"
gem "dry-container"
gem "dry-monads"
gem "dry-validation"
# ActiveRecord extension which adds typecasting to store accessors
gem "store_attribute", "~> 1.0"
# Appsignal integration
gem "appsignal", "~> 3.8.1", require: false
gem "appsignal", "~> 3.10.0", require: false
gem "view_component"
# Lookbook
gem "lookbook", "~> 2.3.0"
# Require factory_bot for usage with openproject plugins testing
gem "factory_bot", "~> 6.4.0", require: false
gem "factory_bot", "~> 6.5.0", require: false
# require factory_bot_rails for convenience in core development
gem "factory_bot_rails", "~> 6.4.0", require: false
gem "turbo_power", "~> 0.6.2"
gem "turbo-rails", "~> 2.0.0"
gem "httpx"
@@ -238,13 +241,13 @@ group :test do
# Test prof provides factories from code
# and other niceties
gem "test-prof", "~> 1.3.0"
gem "test-prof", "~> 1.4.0"
gem "turbo_tests", github: "opf/turbo_tests", ref: "with-patches"
gem "rack_session_access"
gem "rspec", "~> 3.13.0"
# also add to development group, so 'spec' rake task gets loaded
gem "rspec-rails", "~> 6.1.0", group: :development
gem "rspec-rails", "~> 7.0.0", group: :development
# Retry failures within the same environment
gem "retriable", "~> 3.1.1"
@@ -272,7 +275,7 @@ group :test do
gem "selenium-devtools"
gem "selenium-webdriver", "~> 4.20"
gem "fuubar", "~> 2.5.0"
gem "fuubar", "~> 2.5.0", require: false
gem "timecop", "~> 0.9.0"
# Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
@@ -319,6 +322,9 @@ group :development, :test do
gem "ruby-prof", require: false
gem "stackprof", require: false
# Output a stack trace anytime, useful when a process is stuck
gem "rbtrace"
# REPL with debug commands
gem "debug"
@@ -342,10 +348,10 @@ group :development, :test do
gem "erblint-github", require: false
# Brakeman scanner
gem "brakeman", "~> 6.1.0"
gem "brakeman", "~> 6.2.0"
# i18n-tasks helps find and manage missing and unused translations.
gem "i18n-tasks", "~> 1.0.13"
gem "i18n-tasks", "~> 1.0.13", require: false
end
gem "bootsnap", "~> 1.18.0", require: false
@@ -390,6 +396,6 @@ gemfiles.each do |file|
send(:eval_gemfile, file) if File.readable?(file)
end
gem "openproject-octicons", "~>19.15.0"
gem "openproject-octicons_helper", "~>19.15.0"
gem "openproject-primer_view_components", "~>0.36.0"
gem "openproject-octicons", "~>19.18.0"
gem "openproject-octicons_helper", "~>19.18.0"
gem "openproject-primer_view_components", "~>0.47.0"
+221 -184
View File
@@ -8,10 +8,10 @@ GIT
GIT
remote: https://github.com/opf/md-to-pdf
revision: 32603f09a249999a00e8ca23eb17215b46a26c0f
ref: 32603f09a249999a00e8ca23eb17215b46a26c0f
revision: fe05b4f8bae8fd46f4fa93b8e0adee6295ef7388
ref: fe05b4f8bae8fd46f4fa93b8e0adee6295ef7388
specs:
md_to_pdf (0.1.1)
md_to_pdf (0.1.2)
color_conversion (~> 0.1)
front_matter_parser (~> 1.0)
json-schema (~> 4.3)
@@ -206,7 +206,7 @@ PATH
remote: modules/two_factor_authentication
specs:
openproject-two_factor_authentication (1.0.0)
aws-sdk-sns (~> 1.77.0)
aws-sdk-sns (~> 1.82.0)
messagebird-rest (~> 1.4.2)
rotp (~> 6.1)
webauthn (~> 3.0)
@@ -226,35 +226,35 @@ GEM
remote: https://rubygems.org/
specs:
Ascii85 (1.1.1)
actioncable (7.1.3.4)
actionpack (= 7.1.3.4)
activesupport (= 7.1.3.4)
actioncable (7.1.4)
actionpack (= 7.1.4)
activesupport (= 7.1.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.1.3.4)
actionpack (= 7.1.3.4)
activejob (= 7.1.3.4)
activerecord (= 7.1.3.4)
activestorage (= 7.1.3.4)
activesupport (= 7.1.3.4)
actionmailbox (7.1.4)
actionpack (= 7.1.4)
activejob (= 7.1.4)
activerecord (= 7.1.4)
activestorage (= 7.1.4)
activesupport (= 7.1.4)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.1.3.4)
actionpack (= 7.1.3.4)
actionview (= 7.1.3.4)
activejob (= 7.1.3.4)
activesupport (= 7.1.3.4)
actionmailer (7.1.4)
actionpack (= 7.1.4)
actionview (= 7.1.4)
activejob (= 7.1.4)
activesupport (= 7.1.4)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2)
actionpack (7.1.3.4)
actionview (= 7.1.3.4)
activesupport (= 7.1.3.4)
actionpack (7.1.4)
actionview (= 7.1.4)
activesupport (= 7.1.4)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
@@ -265,31 +265,31 @@ GEM
actionpack-xml_parser (2.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
actiontext (7.1.3.4)
actionpack (= 7.1.3.4)
activerecord (= 7.1.3.4)
activestorage (= 7.1.3.4)
activesupport (= 7.1.3.4)
actiontext (7.1.4)
actionpack (= 7.1.4)
activerecord (= 7.1.4)
activestorage (= 7.1.4)
activesupport (= 7.1.4)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.1.3.4)
activesupport (= 7.1.3.4)
actionview (7.1.4)
activesupport (= 7.1.4)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (7.1.3.4)
activesupport (= 7.1.3.4)
activejob (7.1.4)
activesupport (= 7.1.4)
globalid (>= 0.3.6)
activemodel (7.1.3.4)
activesupport (= 7.1.3.4)
activemodel (7.1.4)
activesupport (= 7.1.4)
activemodel-serializers-xml (1.0.2)
activemodel (> 5.x)
activesupport (> 5.x)
builder (~> 3.1)
activerecord (7.1.3.4)
activemodel (= 7.1.3.4)
activesupport (= 7.1.3.4)
activerecord (7.1.4)
activemodel (= 7.1.4)
activesupport (= 7.1.4)
timeout (>= 0.4.0)
activerecord-import (1.7.0)
activerecord (>= 4.2)
@@ -302,13 +302,13 @@ GEM
multi_json (~> 1.11, >= 1.11.2)
rack (>= 2.0.8, < 4)
railties (>= 6.1)
activestorage (7.1.3.4)
actionpack (= 7.1.3.4)
activejob (= 7.1.3.4)
activerecord (= 7.1.3.4)
activesupport (= 7.1.3.4)
activestorage (7.1.4)
actionpack (= 7.1.4)
activejob (= 7.1.4)
activerecord (= 7.1.4)
activesupport (= 7.1.4)
marcel (~> 1.0)
activesupport (7.1.3.4)
activesupport (7.1.4)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -318,7 +318,7 @@ GEM
minitest (>= 5.1)
mutex_m
tzinfo (~> 2.0)
acts_as_list (1.2.1)
acts_as_list (1.2.2)
activerecord (>= 6.1)
activesupport (>= 6.1)
acts_as_tree (2.9.1)
@@ -332,39 +332,39 @@ GEM
airbrake-ruby (6.2.2)
rbtree3 (~> 0.6)
android_key_attestation (0.3.0)
appsignal (3.8.1)
appsignal (3.10.0)
rack
ast (2.4.2)
attr_required (1.0.2)
auto_strip_attributes (2.6.0)
activerecord (>= 4.0)
awesome_nested_set (3.6.0)
activerecord (>= 4.0.0, < 7.2)
awesome_nested_set (3.7.0)
activerecord (>= 4.0.0, < 8.0)
awrence (1.2.1)
aws-eventstream (1.3.0)
aws-partitions (1.950.0)
aws-sdk-core (3.201.0)
aws-partitions (1.974.0)
aws-sdk-core (3.205.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.88.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-kms (1.91.0)
aws-sdk-core (~> 3, >= 3.205.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.156.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sdk-s3 (1.162.0)
aws-sdk-core (~> 3, >= 3.205.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sdk-sns (1.77.0)
aws-sdk-core (~> 3, >= 3.197.0)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.8.0)
aws-sdk-sns (1.82.0)
aws-sdk-core (~> 3, >= 3.201.0)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.9.1)
aws-eventstream (~> 1, >= 1.0.2)
axe-core-api (4.9.1)
axe-core-api (4.10.0)
dumb_delegator
virtus
axe-core-rspec (4.9.1)
axe-core-api (= 4.9.1)
axe-core-rspec (4.10.0)
axe-core-api (= 4.10.0)
dumb_delegator
virtus
axiom-types (0.1.1)
@@ -382,9 +382,9 @@ GEM
smart_properties
bigdecimal (3.1.8)
bindata (2.5.0)
bootsnap (1.18.3)
bootsnap (1.18.4)
msgpack (~> 1.2)
brakeman (6.1.2)
brakeman (6.2.1)
racc
browser (6.0.0)
builder (3.3.0)
@@ -411,7 +411,8 @@ GEM
fog-aws
cbor (0.5.9.8)
cgi (0.4.1)
childprocess (5.0.0)
childprocess (5.1.0)
logger (~> 1.5)
climate_control (1.2.0)
closure_tree (7.4.0)
activerecord (>= 4.2.10)
@@ -419,16 +420,16 @@ GEM
coderay (1.1.3)
coercible (1.0.0)
descendants_tracker (~> 0.0.1)
color_conversion (0.1.1)
color_conversion (0.1.2)
colored2 (4.0.0)
commonmarker (1.1.4)
commonmarker (1.1.5)
rb_sys (~> 0.9)
compare-xml (0.66)
nokogiri (~> 1.8)
concurrent-ruby (1.3.3)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
cookiejar (0.3.4)
cose (1.3.0)
cose (1.3.1)
cbor (~> 0.5.9)
openssl-signature_algorithm (~> 1.0)
crack (1.0.0)
@@ -466,12 +467,19 @@ GEM
dotenv (= 3.1.2)
railties (>= 6.1)
drb (2.2.1)
dry-auto_inject (1.0.1)
dry-core (~> 1.0)
zeitwerk (~> 2.6)
dry-configurable (1.2.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
dry-container (0.11.0)
concurrent-ruby (~> 1.0)
dry-core (1.0.1)
concurrent-ruby (~> 1.0)
zeitwerk (~> 2.6)
dry-inflector (1.0.0)
dry-inflector (1.1.0)
dry-initializer (3.1.1)
dry-logic (1.5.0)
concurrent-ruby (~> 1.0)
dry-core (~> 1.0, < 2)
@@ -480,6 +488,14 @@ GEM
concurrent-ruby (~> 1.0)
dry-core (~> 1.0, < 2)
zeitwerk (~> 2.6)
dry-schema (1.13.4)
concurrent-ruby (~> 1.0)
dry-configurable (~> 1.0, >= 1.0.1)
dry-core (~> 1.0, < 2)
dry-initializer (~> 3.0)
dry-logic (>= 1.4, < 2)
dry-types (>= 1.7, < 2)
zeitwerk (~> 2.6)
dry-types (1.7.2)
bigdecimal (~> 3.0)
concurrent-ruby (~> 1.0)
@@ -487,6 +503,12 @@ GEM
dry-inflector (~> 1.0)
dry-logic (~> 1.4)
zeitwerk (~> 2.6)
dry-validation (1.10.0)
concurrent-ruby (~> 1.0)
dry-core (~> 1.0, < 2)
dry-initializer (~> 3.0)
dry-schema (>= 1.12, < 2)
zeitwerk (~> 2.6)
dumb_delegator (1.0.0)
em-http-request (1.1.7)
addressable (>= 2.3.4)
@@ -494,7 +516,8 @@ GEM
em-socksify (>= 0.3)
eventmachine (>= 1.0.3)
http_parser.rb (>= 0.6.0)
em-socksify (0.3.2)
em-socksify (0.3.3)
base64
eventmachine (>= 1.0.0.beta.4)
em-synchrony (1.0.6)
eventmachine (>= 1.0.0.beta.1)
@@ -502,12 +525,12 @@ GEM
activemodel
equivalent-xml (0.6.0)
nokogiri (>= 1.4.3)
erb_lint (0.5.0)
erb_lint (0.6.0)
activesupport
better_html (>= 2.0.1)
parser (>= 2.7.1.4)
rainbow
rubocop
rubocop (>= 1)
smart_properties
erblint-github (1.0.1)
erubi (1.13.0)
@@ -516,17 +539,18 @@ GEM
tzinfo
eventmachine (1.2.7)
eventmachine_httpserver (0.2.1)
excon (0.110.0)
factory_bot (6.4.6)
excon (0.111.0)
factory_bot (6.5.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.4.3)
factory_bot (~> 6.4)
railties (>= 5.0.0)
faraday (2.9.2)
faraday (2.10.1)
faraday-net_http (>= 2.0, < 3.2)
logger
faraday-follow_redirects (0.3.0)
faraday (>= 1, < 3)
faraday-net_http (3.1.0)
faraday-net_http (3.1.1)
net-http
fastimage (2.3.1)
ferrum (0.15)
@@ -536,11 +560,12 @@ GEM
websocket-driver (~> 0.7)
ffi (1.17.0)
flamegraph (0.9.5)
fog-aws (3.23.0)
fog-aws (3.27.0)
base64 (~> 0.2.0)
fog-core (~> 2.1)
fog-json (~> 1.1)
fog-xml (~> 0.1)
fog-core (2.4.0)
fog-core (2.5.0)
builder
excon (~> 0.71)
formatador (>= 0.2, < 2.0)
@@ -555,7 +580,7 @@ GEM
friendly_id (5.5.1)
activerecord (>= 4.0.0)
front_matter_parser (1.0.1)
fugit (1.11.0)
fugit (1.11.1)
et-orbi (~> 1, >= 1.2.11)
raabro (~> 1.4)
fuubar (2.5.1)
@@ -576,14 +601,14 @@ GEM
fugit (>= 1.1)
railties (>= 6.0.0)
thor (>= 0.14.1)
google-apis-core (0.15.0)
google-apis-core (0.15.1)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 1.9)
httpclient (>= 2.8.1, < 3.a)
httpclient (>= 2.8.3, < 3.a)
mini_mime (~> 1.0)
mutex_m
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
google-apis-gmail_v1 (0.41.0)
google-apis-core (>= 0.15.0, < 2.a)
google-cloud-env (2.1.1)
@@ -595,7 +620,7 @@ GEM
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
grape (2.1.2)
grape (2.1.3)
activesupport (>= 6)
dry-types (>= 1.1)
mustermann-grape (~> 1.1.0)
@@ -606,21 +631,22 @@ GEM
rack
gravatar_image_tag (1.2.0)
hana (1.3.7)
hashdiff (1.1.0)
hashdiff (1.1.1)
hashery (2.1.2)
hashie (3.6.0)
highline (3.0.1)
highline (3.1.1)
reline
html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
htmlbeautifier (1.4.3)
htmldiff (0.0.1)
htmlentities (4.3.4)
http-2-next (1.0.3)
http-2 (1.0.1)
http_parser.rb (0.6.0)
httpclient (2.8.3)
httpx (1.2.6)
http-2-next (>= 1.0.3)
httpx (1.3.1)
http-2 (>= 1.0.0)
i18n (1.14.5)
concurrent-ruby (~> 1.0)
i18n-js (4.2.3)
@@ -636,13 +662,13 @@ GEM
rails-i18n
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
icalendar (2.10.1)
icalendar (2.10.2)
ice_cube (~> 0.16)
ice_cube (0.16.4)
ice_cube (0.17.0)
ice_nine (0.11.2)
interception (0.5)
io-console (0.7.2)
irb (1.13.2)
irb (1.14.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
iso8601 (0.13.0)
@@ -655,7 +681,7 @@ GEM
bindata
faraday (~> 2.0)
faraday-follow_redirects
json-schema (4.3.0)
json-schema (4.3.1)
addressable (>= 2.8)
json_schemer (2.3.0)
bigdecimal
@@ -673,7 +699,7 @@ GEM
launchy (3.0.1)
addressable (~> 2.8)
childprocess (~> 5.0)
lefthook (1.6.18)
lefthook (1.7.15)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (3.0.0)
@@ -688,7 +714,7 @@ GEM
omniauth (~> 1.1)
omniauth-openid-connect (>= 0.2.1)
rails (>= 3.2.21)
logger (1.6.0)
logger (1.6.1)
lograge (0.14.0)
actionpack (>= 4)
activesupport (>= 4)
@@ -715,29 +741,29 @@ GEM
net-pop
net-smtp
marcel (1.0.4)
markly (0.10.0)
markly (0.12.1)
matrix (0.4.2)
messagebird-rest (1.4.2)
meta-tags (2.21.0)
actionpack (>= 6.0.0, < 7.2)
meta-tags (2.22.0)
actionpack (>= 6.0.0, < 8.1)
method_source (1.1.0)
mime-types (3.5.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2024.0604)
mini_magick (4.13.1)
mime-types-data (3.2024.0903)
mini_magick (5.0.1)
mini_mime (1.1.5)
mini_portile2 (2.8.7)
minitest (5.24.1)
minitest (5.25.1)
msgpack (1.7.2)
multi_json (1.15.0)
mustermann (3.0.0)
mustermann (3.0.3)
ruby2_keywords (~> 0.0.1)
mustermann-grape (1.1.0)
mustermann (>= 1.0.0)
mutex_m (0.2.0)
net-http (0.4.1)
uri
net-imap (0.4.13)
net-imap (0.4.14)
date
net-protocol
net-ldap (0.19.0)
@@ -748,11 +774,12 @@ GEM
net-smtp (0.5.0)
net-protocol
nio4r (2.7.3)
nokogiri (1.16.6)
nokogiri (1.16.7)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oj (3.16.4)
oj (3.16.6)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
okcomputer (1.18.5)
omniauth-saml (1.10.3)
omniauth (~> 1.3, >= 1.3.2)
@@ -771,30 +798,32 @@ GEM
validate_email
validate_url
webfinger (~> 2.0)
openproject-octicons (19.15.0)
openproject-octicons_helper (19.15.0)
openproject-octicons (19.18.0)
openproject-octicons_helper (19.18.0)
actionview
openproject-octicons (= 19.15.0)
openproject-octicons (= 19.18.0)
railties
openproject-primer_view_components (0.36.0)
openproject-primer_view_components (0.47.0)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
openproject-octicons (>= 19.15.0)
openproject-octicons (>= 19.17.0)
view_component (>= 3.1, < 4.0)
openproject-token (4.0.0)
activemodel
openssl (3.2.0)
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
optimist (3.1.0)
os (1.1.4)
ostruct (0.6.0)
ox (2.14.18)
paper_trail (15.1.0)
activerecord (>= 6.1)
request_store (~> 1.4)
parallel (1.25.1)
parallel_tests (4.7.1)
parallel (1.26.3)
parallel_tests (4.7.2)
parallel
parser (3.3.3.0)
parser (3.3.5.0)
ast (~> 2.4.1)
racc
pdf-core (0.9.0)
@@ -806,7 +835,7 @@ GEM
hashery (~> 2.0)
ruby-rc4
ttfunk
pg (1.5.6)
pg (1.5.8)
plaintext (0.3.4)
activesupport (> 2.2.1)
nokogiri (~> 1.10, >= 1.10.4)
@@ -832,7 +861,7 @@ GEM
pry (>= 0.12.0)
psych (5.1.2)
stringio
public_suffix (6.0.0)
public_suffix (6.0.1)
puffing-billy (4.0.0)
addressable (~> 2.5)
em-http-request (~> 1.1, >= 1.1.0)
@@ -846,7 +875,7 @@ GEM
puma-plugin-statsd (2.6.0)
puma (>= 5.0, < 7)
raabro (1.4.0)
racc (1.8.0)
racc (1.8.1)
rack (2.2.9)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
@@ -875,20 +904,20 @@ GEM
rackup (1.0.0)
rack (< 3)
webrick
rails (7.1.3.4)
actioncable (= 7.1.3.4)
actionmailbox (= 7.1.3.4)
actionmailer (= 7.1.3.4)
actionpack (= 7.1.3.4)
actiontext (= 7.1.3.4)
actionview (= 7.1.3.4)
activejob (= 7.1.3.4)
activemodel (= 7.1.3.4)
activerecord (= 7.1.3.4)
activestorage (= 7.1.3.4)
activesupport (= 7.1.3.4)
rails (7.1.4)
actioncable (= 7.1.4)
actionmailbox (= 7.1.4)
actionmailer (= 7.1.4)
actionpack (= 7.1.4)
actiontext (= 7.1.4)
actionview (= 7.1.4)
activejob (= 7.1.4)
activemodel (= 7.1.4)
activerecord (= 7.1.4)
activestorage (= 7.1.4)
activesupport (= 7.1.4)
bundler (>= 1.15.0)
railties (= 7.1.3.4)
railties (= 7.1.4)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -903,9 +932,9 @@ GEM
rails-i18n (7.0.9)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.1.3.4)
actionpack (= 7.1.3.4)
activesupport (= 7.1.3.4)
railties (7.1.4)
actionpack (= 7.1.4)
activesupport (= 7.1.4)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
@@ -916,7 +945,11 @@ GEM
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
rb_sys (0.9.97)
rb_sys (0.9.102)
rbtrace (0.5.1)
ffi (>= 1.0.6)
msgpack (>= 0.4.3)
optimist (>= 3.0.0)
rbtree3 (0.7.1)
rdoc (6.7.0)
psych (>= 4.0.0)
@@ -927,7 +960,7 @@ GEM
redis-client (0.22.2)
connection_pool
regexp_parser (2.9.2)
reline (0.5.9)
reline (0.5.10)
io-console (~> 0.5)
representable (3.2.0)
declarative (< 0.1.0)
@@ -939,8 +972,7 @@ GEM
actionpack (>= 5.2)
railties (>= 5.2)
retriable (3.1.2)
rexml (3.3.1)
strscan
rexml (3.3.7)
rinku (2.0.6)
roar (1.2.0)
representable (~> 3.1)
@@ -950,18 +982,18 @@ GEM
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.0)
rspec-core (3.13.1)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.1)
rspec-expectations (3.13.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (6.1.3)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-rails (7.0.1)
actionpack (>= 7.0)
activesupport (>= 7.0)
railties (>= 7.0)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
@@ -969,18 +1001,17 @@ GEM
rspec-retry (0.6.2)
rspec-core (> 3.3)
rspec-support (3.13.1)
rubocop (1.64.1)
rubocop (1.66.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.31.1, < 2.0)
regexp_parser (>= 2.4, < 3.0)
rubocop-ast (>= 1.32.2, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.3)
rubocop-ast (1.32.3)
parser (>= 3.3.1.0)
rubocop-capybara (2.21.0)
rubocop (~> 1.41)
@@ -988,15 +1019,15 @@ GEM
rubocop (~> 1.61)
rubocop-openproject (0.1.0)
rubocop
rubocop-performance (1.21.1)
rubocop-performance (1.22.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.25.1)
rubocop-rails (2.26.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop (>= 1.52.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (3.0.2)
rubocop-rspec (3.0.5)
rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61)
@@ -1009,22 +1040,22 @@ GEM
ruby-prof (1.7.0)
ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5)
ruby-saml (1.16.0)
ruby-saml (1.17.0)
nokogiri (>= 1.13.10)
rexml
ruby2_keywords (0.0.5)
rubytree (2.0.3)
rubytree (2.1.0)
json (~> 2.0, > 2.3.1)
rubyzip (2.3.2)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
sanitize (6.1.1)
sanitize (6.1.3)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
secure_headers (6.5.0)
selenium-devtools (0.126.0)
selenium-devtools (0.128.0)
selenium-webdriver (~> 4.2)
selenium-webdriver (4.22.0)
selenium-webdriver (4.24.0)
base64 (~> 0.2)
logger (~> 1.4)
rexml (~> 3.2, >= 3.2.5)
@@ -1032,7 +1063,7 @@ GEM
websocket (~> 1.0)
semantic (1.6.1)
shoulda-context (2.0.0)
shoulda-matchers (6.2.0)
shoulda-matchers (6.4.0)
activesupport (>= 5.2.0)
signet (0.19.0)
addressable (~> 2.8)
@@ -1049,21 +1080,20 @@ GEM
spring (>= 0.9.1)
spring-commands-rubocop (0.4.0)
spring (>= 1.0)
sprockets (3.7.3)
sprockets (3.7.4)
base64
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.5.1)
sprockets-rails (3.5.2)
actionpack (>= 6.1)
activesupport (>= 6.1)
sprockets (>= 3.0.0)
ssrf_filter (1.0.8)
stackprof (0.2.26)
store_attribute (1.2.0)
activerecord (>= 6.0)
store_attribute (1.3.0)
activerecord (>= 6.1)
stringex (2.8.6)
stringio (3.1.1)
strscan (3.1.0)
structured_warnings (0.4.0)
svg-graph (2.2.2)
swd (2.0.3)
@@ -1076,39 +1106,42 @@ GEM
table_print (1.5.7)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
test-prof (1.3.3.1)
test-prof (1.4.2)
text-hyphen (1.5.0)
thor (1.3.1)
thor (1.3.2)
thread_safe (0.3.6)
timecop (0.9.10)
timeout (0.4.1)
tpm-key_attestation (0.12.0)
tpm-key_attestation (0.12.1)
bindata (~> 2.4)
openssl (> 2.0)
openssl-signature_algorithm (~> 1.0)
trailblazer-option (0.1.2)
ttfunk (1.7.0)
turbo-rails (2.0.5)
turbo-rails (2.0.6)
actionpack (>= 6.0.0)
activejob (>= 6.0.0)
railties (>= 6.0.0)
turbo_power (0.6.2)
turbo-rails (>= 1.3.0)
typed_dag (2.0.2)
rails (>= 5.0.4)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2024.1)
tzinfo-data (1.2024.2)
tzinfo (>= 1.0.0)
uber (0.1.0)
unicode-display_width (2.5.0)
uri (0.13.0)
unicode-display_width (2.6.0)
uri (0.13.1)
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
vcr (6.2.0)
view_component (3.12.1)
vcr (6.3.1)
base64
view_component (3.14.0)
activesupport (>= 5.2.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
@@ -1138,7 +1171,7 @@ GEM
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.8.1)
websocket (1.2.10)
websocket (1.2.11)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
@@ -1148,8 +1181,8 @@ GEM
zeitwerk (>= 2.6)
xpath (3.2.0)
nokogiri (~> 1.8)
yard (0.9.36)
zeitwerk (2.6.16)
yard (0.9.37)
zeitwerk (2.6.18)
PLATFORMS
ruby
@@ -1164,15 +1197,15 @@ DEPENDENCIES
acts_as_tree (~> 2.9.0)
addressable (~> 2.8.0)
airbrake (~> 13.0.0)
appsignal (~> 3.8.1)
appsignal (~> 3.10.0)
auto_strip_attributes (~> 2.5)
awesome_nested_set (~> 3.6.0)
awesome_nested_set (~> 3.7.0)
aws-sdk-core (~> 3.107)
aws-sdk-s3 (~> 1.91)
axe-core-rspec
bcrypt (~> 3.1.6)
bootsnap (~> 1.18.0)
brakeman (~> 6.1.0)
brakeman (~> 6.2.0)
browser (~> 6.0.0)
budgets!
capybara (~> 3.40.0)
@@ -1197,14 +1230,16 @@ DEPENDENCIES
disposable (~> 0.6.2)
doorkeeper (~> 5.7.0)
dotenv-rails
dry-auto_inject
dry-container
dry-monads
dry-validation
email_validator (~> 2.2.3)
equivalent-xml (~> 0.6)
erb_lint
erblint-github
escape_utils (~> 1.3)
factory_bot (~> 6.4.0)
factory_bot (~> 6.5.0)
factory_bot_rails (~> 6.4.0)
ffi (~> 1.15)
flamegraph
@@ -1236,8 +1271,8 @@ DEPENDENCIES
markly (~> 0.10)
matrix (~> 0.4.2)
md_to_pdf!
meta-tags (~> 2.21.0)
mini_magick (~> 4.13.0)
meta-tags (~> 2.22.0)
mini_magick (~> 5.0.1)
multi_json (~> 1.15.0)
my_page!
net-ldap (~> 0.19.0)
@@ -1263,10 +1298,10 @@ DEPENDENCIES
openproject-job_status!
openproject-ldap_groups!
openproject-meeting!
openproject-octicons (~> 19.15.0)
openproject-octicons_helper (~> 19.15.0)
openproject-octicons (~> 19.18.0)
openproject-octicons_helper (~> 19.18.0)
openproject-openid_connect!
openproject-primer_view_components (~> 0.36.0)
openproject-primer_view_components (~> 0.47.0)
openproject-recaptcha!
openproject-reporting!
openproject-storages!
@@ -1300,6 +1335,7 @@ DEPENDENCIES
rails (~> 7.1.3)
rails-controller-testing (~> 1.0.2)
rails-i18n (~> 7.0.0)
rbtrace
rdoc (>= 2.4.2)
redis (~> 5.2.0)
request_store (~> 1.7.0)
@@ -1309,7 +1345,7 @@ DEPENDENCIES
roar (~> 1.2.0)
rouge (~> 4.3.0)
rspec (~> 3.13.0)
rspec-rails (~> 6.1.0)
rspec-rails (~> 7.0.0)
rspec-retry (~> 0.6.1)
rubocop
rubocop-capybara
@@ -1322,7 +1358,7 @@ DEPENDENCIES
ruby-duration (~> 3.2.0)
ruby-prof
ruby-progressbar (~> 1.13.0)
rubytree (~> 2.0.0)
rubytree (~> 2.1.0)
sanitize (~> 6.1.0)
secure_headers (~> 6.5.0)
selenium-devtools
@@ -1342,10 +1378,11 @@ DEPENDENCIES
svg-graph (~> 2.2.0)
sys-filesystem (~> 1.5.0)
table_print (~> 1.5.6)
test-prof (~> 1.3.0)
test-prof (~> 1.4.0)
timecop (~> 0.9.0)
ttfunk (~> 1.7.0)
turbo-rails (~> 2.0.0)
turbo_power (~> 0.6.2)
turbo_tests!
typed_dag (~> 2.0.2)
tzinfo-data (~> 1.2024.1)
@@ -1359,7 +1396,7 @@ DEPENDENCIES
with_advisory_lock (~> 5.1.0)
RUBY VERSION
ruby 3.3.3p89
ruby 3.3.4p94
BUNDLED WITH
2.5.13
+1 -1
View File
@@ -1,6 +1,6 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env rake
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

+21
View File
@@ -0,0 +1,21 @@
<svg width="190" height="179" viewBox="0 0 190 179" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.2081 159.67C24.7427 159.67 27.6081 156.804 27.6081 153.27C27.6081 149.735 24.7427 146.87 21.2081 146.87C17.6735 146.87 14.8081 149.735 14.8081 153.27C14.8081 156.804 17.6735 159.67 21.2081 159.67Z" fill="#308720"/>
<path d="M21.2081 126.667C24.7427 126.667 27.6081 123.802 27.6081 120.267C27.6081 116.733 24.7427 113.867 21.2081 113.867C17.6735 113.867 14.8081 116.733 14.8081 120.267C14.8081 123.802 17.6735 126.667 21.2081 126.667Z" fill="#308720"/>
<path d="M21.2081 93.2659C24.7427 93.2659 27.6081 90.4005 27.6081 86.8659C27.6081 83.3313 24.7427 80.4659 21.2081 80.4659C17.6735 80.4659 14.8081 83.3313 14.8081 86.8659C14.8081 90.4005 17.6735 93.2659 21.2081 93.2659Z" fill="#308720"/>
<path d="M170.142 150.462H90.4443C89.6993 150.462 88.9848 150.758 88.458 151.284C87.9312 151.811 87.6353 152.526 87.6353 153.271C87.6353 154.016 87.9312 154.73 88.458 155.257C88.9848 155.784 89.6993 156.08 90.4443 156.08H170.142C170.887 156.08 171.602 155.784 172.129 155.257C172.655 154.73 172.951 154.016 172.951 153.271C172.951 152.526 172.655 151.811 172.129 151.284C171.602 150.758 170.887 150.462 170.142 150.462Z" fill="#2F6EB4"/>
<path d="M46.3139 156.078C47.8647 156.078 49.1219 154.82 49.1219 153.27C49.1219 151.719 47.8647 150.462 46.3139 150.462C44.763 150.462 43.5059 151.719 43.5059 153.27C43.5059 154.82 44.763 156.078 46.3139 156.078Z" fill="#2F6EB4"/>
<path d="M57.5026 156.038C59.0334 155.79 60.0729 154.347 59.8244 152.816C59.5759 151.286 58.1336 150.246 56.6028 150.495C55.072 150.743 54.0325 152.185 54.281 153.716C54.5294 155.247 55.9718 156.286 57.5026 156.038Z" fill="#2F6EB4"/>
<path d="M67.7785 156.078C69.3293 156.078 70.5865 154.82 70.5865 153.27C70.5865 151.719 69.3293 150.462 67.7785 150.462C66.2276 150.462 64.9705 151.719 64.9705 153.27C64.9705 154.82 66.2276 156.078 67.7785 156.078Z" fill="#2F6EB4"/>
<path d="M87.6362 120.268C87.6394 121.01 87.9354 121.72 88.4598 122.244C88.9842 122.769 89.6946 123.065 90.4362 123.068H170.142C170.887 123.068 171.602 122.772 172.129 122.245C172.655 121.718 172.951 121.004 172.951 120.259C172.951 119.514 172.655 118.799 172.129 118.273C171.602 117.746 170.887 117.45 170.142 117.45H90.4442C90.0748 117.45 89.7091 117.524 89.368 117.666C89.0269 117.808 88.7171 118.015 88.4563 118.277C88.1955 118.539 87.9889 118.849 87.8482 119.191C87.7075 119.533 87.6354 119.899 87.6362 120.268Z" fill="#2F6EB4"/>
<path d="M46.3139 123.075C47.8647 123.075 49.1219 121.818 49.1219 120.267C49.1219 118.717 47.8647 117.459 46.3139 117.459C44.763 117.459 43.5059 118.717 43.5059 120.267C43.5059 121.818 44.763 123.075 46.3139 123.075Z" fill="#2F6EB4"/>
<path d="M57.0458 123.075C58.5966 123.075 59.8538 121.818 59.8538 120.267C59.8538 118.717 58.5966 117.459 57.0458 117.459C55.495 117.459 54.2378 118.717 54.2378 120.267C54.2378 121.818 55.495 123.075 57.0458 123.075Z" fill="#2F6EB4"/>
<path d="M67.7785 123.075C69.3293 123.075 70.5865 121.818 70.5865 120.267C70.5865 118.717 69.3293 117.459 67.7785 117.459C66.2276 117.459 64.9705 118.717 64.9705 120.267C64.9705 121.818 66.2276 123.075 67.7785 123.075Z" fill="#2F6EB4"/>
<path d="M189.91 97.5578V76.1738C189.908 74.37 189.191 72.6406 187.917 71.3642C186.642 70.0879 184.914 69.3685 183.11 69.3638H174.2C173.935 69.3638 173.681 69.4691 173.493 69.6567C173.305 69.8442 173.2 70.0986 173.2 70.3638C173.2 70.629 173.305 70.8833 173.493 71.0709C173.681 71.2584 173.935 71.3638 174.2 71.3638H183.1C184.374 71.368 185.594 71.8764 186.493 72.7779C187.393 73.6793 187.899 74.9003 187.9 76.1738V97.5578C187.899 98.8312 187.393 100.052 186.493 100.954C185.594 101.855 184.374 102.364 183.1 102.368H150.654C150.389 102.368 150.135 102.473 149.947 102.661C149.759 102.848 149.654 103.103 149.654 103.368C149.654 103.633 149.759 103.887 149.947 104.075C150.135 104.262 150.389 104.368 150.654 104.368H183.1C184.372 104.371 185.591 104.878 186.49 105.778C187.39 106.677 187.896 107.896 187.9 109.168V130.358C187.899 131.687 187.37 132.96 186.43 133.9C185.491 134.84 184.217 135.368 182.888 135.37H7.0881C5.75932 135.368 4.48542 134.84 3.54583 133.9C2.60624 132.96 2.07769 131.687 2.0761 130.358V109.176C2.07979 107.904 2.58669 106.685 3.48607 105.786C4.38544 104.886 5.6042 104.379 6.8761 104.376H110.84C111.105 104.376 111.36 104.27 111.547 104.083C111.735 103.895 111.84 103.641 111.84 103.376C111.84 103.111 111.735 102.856 111.547 102.669C111.36 102.481 111.105 102.376 110.84 102.376H6.9001C5.62663 102.372 4.40667 101.863 3.50713 100.962C2.60758 100.06 2.10168 98.8392 2.1001 97.5658V76.1738C2.10168 74.9003 2.60758 73.6793 3.50713 72.7779C4.40667 71.8764 5.62663 71.368 6.9001 71.3638H86.4661C86.7313 71.3638 86.9857 71.2584 87.1732 71.0709C87.3607 70.8833 87.4661 70.629 87.4661 70.3638C87.4661 70.0986 87.3607 69.8442 87.1732 69.6567C86.9857 69.4691 86.7313 69.3638 86.4661 69.3638H6.9001C5.09636 69.3685 3.368 70.0879 2.0935 71.3642C0.818994 72.6406 0.102208 74.37 0.100098 76.1738V97.5578C0.101141 98.7244 0.401616 99.8713 0.972761 100.889C1.54391 101.906 2.3666 102.759 3.3621 103.368C2.36778 103.975 1.54579 104.827 0.974693 105.842C0.403593 106.858 0.102468 108.003 0.100098 109.168V130.358C0.0997743 131.568 0.412739 132.758 1.00854 133.811C1.60435 134.865 2.4627 135.746 3.5001 136.37C2.46297 136.994 1.60483 137.875 1.00906 138.928C0.413295 139.982 0.100165 141.172 0.100098 142.382V163.362C0.102215 165.221 0.841657 167.003 2.1562 168.318C3.47075 169.632 5.25305 170.372 7.1121 170.374H18.5241V172.812C18.5241 174.403 19.1562 175.929 20.2815 177.054C21.4067 178.18 22.9328 178.812 24.5241 178.812H41.2221C42.8134 178.812 44.3395 178.18 45.4647 177.054C46.59 175.929 47.2221 174.403 47.2221 172.812V170.374H142.788V172.812C142.788 174.403 143.42 175.929 144.545 177.054C145.671 178.18 147.197 178.812 148.788 178.812H165.486C167.077 178.812 168.604 178.18 169.729 177.054C170.854 175.929 171.486 174.403 171.486 172.812V170.374H182.898C184.757 170.372 186.539 169.632 187.854 168.318C189.169 167.003 189.908 165.221 189.91 163.362V142.382C189.91 141.172 189.597 139.982 189.001 138.928C188.405 137.875 187.547 136.994 186.51 136.37C187.548 135.746 188.406 134.865 189.002 133.811C189.597 132.758 189.91 131.568 189.91 130.358V109.176C189.908 108.011 189.607 106.866 189.036 105.85C188.464 104.835 187.642 103.983 186.648 103.376C187.645 102.767 188.468 101.912 189.039 100.893C189.611 99.8743 189.91 98.7258 189.91 97.5578ZM187.91 142.382V163.362C187.909 164.691 187.38 165.964 186.44 166.904C185.501 167.844 184.227 168.372 182.898 168.374H7.0981C5.76932 168.372 4.49542 167.844 3.55583 166.904C2.61624 165.964 2.08769 164.691 2.0861 163.362V142.382C2.08821 141.053 2.61694 139.78 3.55642 138.84C4.49589 137.901 5.76948 137.372 7.0981 137.37H182.898C184.227 137.372 185.5 137.901 186.44 138.84C187.379 139.78 187.908 141.053 187.91 142.382Z" fill="#2F6EB4"/>
<path d="M90.4443 89.6738H98.1463C98.272 89.6746 98.3956 89.6417 98.5042 89.5784C98.6128 89.5152 98.7025 89.4239 98.7638 89.3142C98.8251 89.2045 98.8558 89.0803 98.8527 88.9546C98.8497 88.8289 98.8129 88.7064 98.7463 88.5998L96.0743 84.3818C96.0113 84.2822 95.9242 84.2001 95.8211 84.1431C95.718 84.0861 95.6021 84.0561 95.4843 84.0558H90.4443C89.6993 84.0558 88.9848 84.3517 88.458 84.8785C87.9312 85.4053 87.6353 86.1198 87.6353 86.8648C87.6353 87.6098 87.9312 88.3243 88.458 88.8511C88.9848 89.3779 89.6993 89.6738 90.4443 89.6738Z" fill="#2F6EB4"/>
<path d="M163.304 89.6737H170.142C170.887 89.6737 171.602 89.3777 172.129 88.8509C172.655 88.3241 172.951 87.6096 172.951 86.8646C172.951 86.1197 172.655 85.4052 172.129 84.8784C171.602 84.3516 170.887 84.0556 170.142 84.0556H165.984C165.865 84.0544 165.747 84.0837 165.642 84.1408C165.537 84.1978 165.448 84.2807 165.384 84.3816L162.712 88.5997C162.645 88.7062 162.607 88.829 162.603 88.9552C162.599 89.0815 162.63 89.2063 162.691 89.3166C162.753 89.4269 162.843 89.5185 162.952 89.5817C163.062 89.6449 163.186 89.6774 163.312 89.6757L163.304 89.6737Z" fill="#2F6EB4"/>
<path d="M46.3139 89.674C47.8647 89.674 49.1219 88.4168 49.1219 86.866C49.1219 85.3152 47.8647 84.058 46.3139 84.058C44.763 84.058 43.5059 85.3152 43.5059 86.866C43.5059 88.4168 44.763 89.674 46.3139 89.674Z" fill="#2F6EB4"/>
<path d="M57.0458 89.674C58.5966 89.674 59.8538 88.4168 59.8538 86.866C59.8538 85.3152 58.5966 84.058 57.0458 84.058C55.495 84.058 54.2378 85.3152 54.2378 86.866C54.2378 88.4168 55.495 89.674 57.0458 89.674Z" fill="#2F6EB4"/>
<path d="M67.7785 89.674C69.3293 89.674 70.5865 88.4168 70.5865 86.866C70.5865 85.3152 69.3293 84.058 67.7785 84.058C66.2276 84.058 64.9705 85.3152 64.9705 86.866C64.9705 88.4168 66.2276 89.674 67.7785 89.674Z" fill="#2F6EB4"/>
<path d="M130.8 46.6456C129.681 46.6454 128.595 47.0177 127.711 47.7036C126.828 48.3896 126.198 49.3503 125.921 50.4339C125.645 51.5176 125.737 52.6626 126.183 53.6882C126.629 54.7138 127.404 55.5615 128.386 56.0976V61.1516C128.377 61.4794 128.433 61.8057 128.552 62.1113C128.671 62.4168 128.85 62.6954 129.079 62.9305C129.307 63.1657 129.58 63.3526 129.882 63.4802C130.184 63.6079 130.509 63.6737 130.837 63.6737C131.165 63.6737 131.489 63.6079 131.791 63.4802C132.093 63.3526 132.367 63.1657 132.595 62.9305C132.824 62.6954 133.003 62.4168 133.122 62.1113C133.241 61.8057 133.297 61.4794 133.288 61.1516V56.0556C134.249 55.5042 135.001 54.6513 135.428 53.6291C135.854 52.6069 135.932 51.4724 135.649 50.4015C135.365 49.3307 134.736 48.3832 133.86 47.706C132.983 47.0287 131.908 46.6595 130.8 46.6556V46.6456Z" fill="#308720"/>
<path d="M179.162 8.95569C147.975 -2.73731 113.608 -2.73731 82.4204 8.95569C82.4204 85.2477 130.8 109.448 130.8 109.448C130.8 109.448 179.172 85.2477 179.172 8.95569H179.162ZM130.762 20.9157H130.838C140.172 20.9557 147.752 28.3917 147.752 37.5297H143.02C143.02 30.9837 137.538 25.6577 130.79 25.6377C124.044 25.6577 118.56 30.9837 118.56 37.5297H113.838C113.838 28.3997 121.42 20.9557 130.752 20.9157H130.762ZM152.326 67.1437C152.326 67.7802 152.074 68.3907 151.623 68.8408C151.173 69.2908 150.563 69.5437 149.926 69.5437H111.662C111.026 69.5437 110.415 69.2908 109.965 68.8408C109.515 68.3907 109.262 67.7802 109.262 67.1437V42.7997C109.262 42.1632 109.515 41.5527 109.965 41.1026C110.415 40.6525 111.026 40.3997 111.662 40.3997H149.918C150.555 40.3997 151.165 40.6525 151.615 41.1026C152.066 41.5527 152.318 42.1632 152.318 42.7997L152.326 67.1437Z" fill="#308720"/>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

+5 -1
View File
@@ -1,7 +1,11 @@
@import "shares/modal_body_component"
@import "shares/invite_user_form_component"
@import "work_packages/details/tab_component"
@import "work_packages/progress/modal_body_component"
@import "work_packages/split_view_component"
@import "open_project/common/attribute_component"
@import "open_project/common/submenu_component"
@import "filter/filters_component"
@import "projects/row_component"
@import "settings/project_custom_fields/project_custom_field_mapping/new_project_mapping_component"
@import "op_primer/border_box_table_component"
@import "work_packages/exports/modal_dialog_component"
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2023 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -29,7 +29,7 @@ See COPYRIGHT and LICENSE files for more details.
<% helpers.html_title t(:label_administration), @title %>
<%= render(Primer::OpenProject::PageHeader.new(border_bottom: 0)) do |header|
<%= render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title { t(:"attributes.attachments") }
header.with_breadcrumbs([{ href: admin_index_path, text: t("label_administration") },
{ href: admin_settings_storages_path, text: t("project_module_storages") },
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -0,0 +1,65 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 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.
++#%>
<%=
render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title { t(:label_backup) }
header.with_breadcrumbs([{ href: admin_index_path, text: t(:label_administration) },
t(:label_backup)])
header.with_action_button(tag: :a,
scheme: button_scheme,
mobile_label: button_title,
mobile_icon: button_icon,
size: :medium,
href: reset_token_admin_backups_path,
aria: { label: button_title },
title: button_title) do |button|
button.with_leading_visual_icon(icon: button_icon)
button_title
end
if @backup_token.present?
header.with_action_button(tag: :a,
scheme: :danger,
mobile_icon: :trash,
mobile_label: t("backup.label_delete_token"),
size: :medium,
href: delete_token_admin_backups_path,
aria: { label: I18n.t("backup.label_delete_token") },
data: {
confirm: I18n.t(:text_are_you_sure),
method: :post
},
title: I18n.t(:button_delete)) do |button|
button.with_leading_visual_icon(icon: :trash)
t("backup.label_delete_token")
end
end
end
%>
@@ -0,0 +1,61 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
# ++
module Admin
module Backups
class ShowPageHeaderComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
include ApplicationHelper
def initialize(backup_token:)
super
@backup_token = backup_token
end
def breadcrumb_items
[{ href: admin_index_path, text: t(:label_administration) },
t(:label_backup)]
end
def button_title
button_action = @backup_token.present? ? "reset" : "create"
t("backup.label_#{button_action}_token")
end
def button_icon
@backup_token.present? ? :"op-reload" : :plus
end
def button_scheme
@backup_token.present? ? :default : :primary
end
end
end
end
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -30,20 +30,20 @@ See COPYRIGHT and LICENSE files for more details.
<%=
component_wrapper do
primer_form_with(
class: "op-new-project-mapping-form",
model: @project_mapping,
url: link_admin_settings_project_custom_field_path(@project_custom_field),
model: ,
url:,
data: { turbo: true },
method: :post
) do |form|
concat(render(Primer::Alpha::Dialog::Body.new(
id: DIALOG_BODY_ID, test_selector: DIALOG_BODY_ID, aria: { label: title },
id: dialog_body_id, test_selector: dialog_body_id, aria: { label: title },
style: "min-height: 300px"
)) do
render(Projects::CustomFields::CustomFieldMappingForm.new(form, project_mapping: @project_mapping))
render(Projects::CustomFields::CustomFieldMappingForm.new(form, project_mapping: @custom_field_project_mapping))
end)
concat(render(Primer::Alpha::Dialog::Footer.new(show_divider: false)) do
concat(render(Primer::ButtonComponent.new(data: { 'close-dialog-id': DIALOG_ID })) { cancel_button_text })
concat(render(Primer::ButtonComponent.new(data: { 'close-dialog-id': dialog_id })) { cancel_button_text })
concat(render(Primer::ButtonComponent.new(scheme: :primary, type: :submit)) { submit_button_text })
end)
end
@@ -0,0 +1,70 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
#++
module Admin
module CustomFields
module CustomFieldProjects
class NewCustomFieldProjectsFormModalComponent < ApplicationComponent
include OpTurbo::Streamable
DIALOG_ID = "new-custom-field-projects-modal".freeze
DIALOG_BODY_ID = "new-custom-field-projects-modal-body".freeze
def initialize(custom_field_project_mapping:, custom_field:, **)
@custom_field_project_mapping = custom_field_project_mapping
@custom_field = custom_field
super(@custom_field_project_mapping, **)
end
private
def url
url_helpers.custom_field_projects_path(@custom_field)
end
def dialog_id = DIALOG_ID
def dialog_body_id = DIALOG_BODY_ID
attr_reader :custom_field_project_mapping, :custom_field
def title
I18n.t(:label_add_projects)
end
def cancel_button_text
I18n.t("button_cancel")
end
def submit_button_text
I18n.t("button_add")
end
end
end
end
end
@@ -0,0 +1,18 @@
<%=
render(
Primer::Alpha::Dialog.new(
id: dialog_id,
title:,
test_selector: dialog_id,
size: :large
)
) do |dialog|
dialog.with_header(
show_divider: false,
visually_hide_title: false,
variant: :large
)
render(form_modal_component)
end
%>
@@ -0,0 +1,64 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
#++
module Admin
module CustomFields
module CustomFieldProjects
class NewCustomFieldProjectsModalComponent < ApplicationComponent
include OpTurbo::Streamable
def initialize(custom_field_project_mapping:, custom_field:, **)
@custom_field_project_mapping = custom_field_project_mapping
@custom_field = custom_field
super(@custom_field_project_mapping, **)
end
def render?
!custom_field.is_for_all?
end
private
attr_reader :custom_field_project_mapping, :custom_field
def dialog_id = NewCustomFieldProjectsFormModalComponent::DIALOG_ID
def dialog_body_id = NewCustomFieldProjectsFormModalComponent::DIALOG_BODY_ID
def title
I18n.t(:label_add_projects)
end
def form_modal_component
Admin::CustomFields::CustomFieldProjects::NewCustomFieldProjectsFormModalComponent.new(
custom_field_project_mapping:, custom_field:
)
end
end
end
end
end
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -0,0 +1,45 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
#++
module Admin
module CustomFields
module CustomFieldProjects
class RowComponent < Projects::RowComponent
include OpTurbo::Streamable
def wrapper_uniq_by
"project-#{project.id}"
end
def more_menu_items
[]
end
end
end
end
end
@@ -0,0 +1,62 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
#++
module Admin
module CustomFields
module CustomFieldProjects
class TableComponent < Projects::TableComponent
include OpTurbo::Streamable
def columns
@columns ||= query.selects.reject { |select| select.is_a?(Queries::Selects::NotExistingSelect) }
end
def sortable?
false
end
# @override optional_pagination_options are passed to the pagination_options
# which are passed to #pagination_links_full in pagination_helper.rb
#
# In Turbo streamable components, we need to be able to specify the url_for(action:) so that links are
# generated in the context of the component index action, instead of any turbo stream actions performing
# partial updates on the page.
#
# params[:url_for_action] is passed to the pagination_options making it's way down to any pagination links
# that are generated via link_to which calls url_for which uses the params[:url_for_action] to specify
# the controller action that link_to should use.
#
def optional_pagination_options
return super unless params[:url_for_action]
super.merge(params: { action: params[:url_for_action] })
end
end
end
end
end
@@ -0,0 +1,52 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 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.
++#%>
<%=
render(Primer::OpenProject::PageHeader.new(test_selector: "custom-fields--page-header")) do |header|
header.with_title { @custom_field.name }
header.with_breadcrumbs(breadcrumbs_items)
header.with_tab_nav(label: nil, test_selector: :custom_field_detail_header) do |tab_nav|
tab_nav.with_tab(
selected: tab_selected?(:edit),
href: edit_custom_field_path(@custom_field)
) do |tab|
tab.with_text { t(:label_details) }
end
tab_nav.with_tab(
selected: tab_selected?(:custom_field_projects),
href: custom_field_projects_path(@custom_field)
) do |tab|
tab.with_text { t(:label_project_plural) }
end
end
end
%>
@@ -0,0 +1,57 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
#++
module Admin
module CustomFields
class EditFormHeaderComponent < ApplicationComponent
TAB_NAVS = %i[
edit
custom_field_projects
].freeze
def initialize(custom_field:, selected:, **)
@custom_field = custom_field
@selected = selected
super(custom_field, **)
end
def tab_selected?(tab_name)
TAB_NAVS.include?(tab_name) && tab_name == @selected
end
private
def breadcrumbs_items
[{ href: admin_index_path, text: t(:label_administration) },
{ href: custom_fields_path, text: t(:label_custom_field_plural) },
{ href: custom_fields_path(tab: @custom_field.type), text: I18n.t(@custom_field.type_name) },
@custom_field.name]
end
end
end
end
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -26,14 +26,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See COPYRIGHT and LICENSE files for more details.
++#%>
<%= breadcrumb_toolbar(@placeholder_user.new_record? ? t(:label_placeholder_user_new) : @placeholder_user.name) do %>
<% unless @placeholder_user.new_record? %>
<li class="toolbar-item">
<%= link_to placeholder_user_path(@placeholder_user), class: 'button' do %>
<%= op_icon('button--icon icon-user') %>
<span class="button--text"><%= t(:label_profile) %></span>
<% end %>
</li>
<%= render partial: 'placeholder_users/toolbar_delete' %>
<% end %>
<% end %>
<%=
render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title { I18n.t(:"attribute_help_texts.label_plural") }
header.with_breadcrumbs(breadcrumb_items, selected_item_font_weight: :normal)
header.with_tab_nav(label: nil) do |tab_nav|
@tabs.each do |tab|
tab_nav.with_tab(selected: currently_selected_tab == tab, href: tab[:path]) do |t|
t.with_text { I18n.t(tab[:label]) }
end
end
end if @tabs.present?
end
%>
@@ -0,0 +1,50 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
# ++
class AttributeHelpTexts::IndexPageHeaderComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
include ApplicationHelper
include TabsHelper
def initialize(tabs: nil)
super
@tabs = tabs
end
def breadcrumb_items
[{ href: admin_index_path, text: t("label_administration") },
I18n.t("menus.breadcrumb.nested_element", section_header: t(:"attribute_help_texts.label_plural"),
title: I18n.t(currently_selected_tab[:label].to_s)).html_safe]
end
def currently_selected_tab
@currently_selected_tab ||= selected_tab(@tabs)
end
end
@@ -0,0 +1,52 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 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.
++#%>
<%=
render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title { @color.name }
header.with_breadcrumbs(breadcrumb_items)
if @color.persisted?
header.with_action_button(tag: :a,
scheme: :danger,
mobile_icon: :trash,
mobile_label: t(:button_delete),
size: :medium,
href: color_path(@color),
aria: { label: I18n.t(:button_delete) },
data: {
confirm: I18n.t(:text_are_you_sure),
method: :delete
},
title: I18n.t(:button_delete)) do |button|
button.with_leading_visual_icon(icon: :trash)
t(:button_delete)
end
end
end
%>
@@ -0,0 +1,49 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
# ++
module Colors
class EditPageHeaderComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
include ApplicationHelper
def initialize(color:)
super
@color = color
end
def breadcrumb_items
[
{ href: admin_index_path, text: t(:label_administration) },
{ href: colors_path, text: t(:label_color_plural) },
@color.name
]
end
end
end
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -32,6 +32,8 @@ module OpTurbo
class MissingComponentWrapper < StandardError; end
# rubocop:enable OpenProject/AddPreviewForViewComponent
INLINE_ACTIONS = %i[dialog flash].freeze
extend ActiveSupport::Concern
class_methods do
@@ -43,7 +45,7 @@ module OpTurbo
included do
def render_as_turbo_stream(view_context:, action: :update)
case action
when :update, :dialog
when :update, *INLINE_ACTIONS
@inner_html_only = true
template = render_in(view_context)
when :replace
@@ -56,7 +58,7 @@ module OpTurbo
raise ArgumentError, "Unsupported action #{action}"
end
if action != :dialog && !wrapped?
if INLINE_ACTIONS.exclude?(action) && !wrapped?
raise MissingComponentWrapper,
"Wrap your component in a `component_wrapper` block in order to use turbo-stream methods"
end
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -26,18 +26,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
See COPYRIGHT and LICENSE files for more details.
++#%>
<%=
render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title { I18n.t(:label_custom_field_plural) }
header.with_breadcrumbs(breadcrumb_items, selected_item_font_weight: :normal)
<%= toolbar title: title do %>
<li class="toolbar-item hidden-for-tablet">
<%= link_to({ action: 'copy' }, class: 'button') do %>
<%= op_icon('button--icon icon-copy') %>
<span class="button--text"><%= t(:button_copy) %></span>
<% end %>
</li>
<li class="toolbar-item">
<%= link_to({ action: 'show' }, class: 'button') do %>
<%= op_icon('button--icon icon-info1') %>
<span class="button--text"><%= t(:label_workflow_summary) %></span>
<% end %>
</li>
<% end %>
header.with_tab_nav(label: nil, test_selector: "custom-fields--tab-nav") do |tab_nav|
@tabs.each do |tab|
tab_nav.with_tab(selected: currently_selected_tab == tab, href: tab[:path]) do |t|
t.with_text { I18n.t(tab[:label]) }
end
end
end if @tabs.present?
end
%>
@@ -0,0 +1,50 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
# ++
class CustomFields::IndexPageHeaderComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
include ApplicationHelper
include TabsHelper
def initialize(tabs: nil)
super
@tabs = tabs
end
def breadcrumb_items
[{ href: admin_index_path, text: t("label_administration") },
I18n.t("menus.breadcrumb.nested_element", section_header: t(:label_custom_field_plural),
title: I18n.t(currently_selected_tab[:label].to_s)).html_safe]
end
def currently_selected_tab
@currently_selected_tab ||= selected_tab(@tabs)
end
end
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,8 +1,10 @@
<%= render(Primer::Beta::Button.new(scheme: :secondary,
<%= component_wrapper tag: "turbo-frame" do %>
<%= render(Primer::Beta::Button.new(scheme: :secondary,
disabled:,
data: { "filter--filters-form-target": "filterFormToggle",
action: "filter--filters-form#toggleDisplayFilters" },
test_selector: "filter-component-toggle")) do |button| %>
<% button.with_trailing_visual_counter(count: filters_count, test_selector: "filters-button-counter") %>
<%= t(:label_filter) %>
<% button.with_trailing_visual_counter(count: filters_count, test_selector: "filters-button-counter") %>
<%= t(:label_filter) %>
<% end %>
<% end %>
@@ -2,7 +2,7 @@
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2010-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -31,11 +31,17 @@ module Filter
# rubocop:disable OpenProject/AddPreviewForViewComponent
class FilterButtonComponent < ApplicationComponent
# rubocop:enable OpenProject/AddPreviewForViewComponent
include OpTurbo::Streamable
options :query
options :disabled
def filters_count
@filters_count ||= query.filters.count
end
def wrapper_key
"filter-button"
end
end
end
@@ -17,8 +17,8 @@
<% autocomplete_filter = additional_options.key?(:autocomplete_options) %>
<li class="advanced-filters--filter <%= filter_active ? '' : 'hidden' %>"
filter-name="<%= filter.name %>"
filter-type="<%= filter.type %>"
data-filter-name="<%= filter.name %>"
data-filter-type="<%= filter.type %>"
data-filter--filters-form-target="filter">
<label class='advanced-filters--filter-name' for="<%= filter.name %>">
<%= filter.human_name %>
@@ -113,15 +113,5 @@
<%= submit_tag t('button_apply'), class: 'button -small -primary', name: nil %>
</li>
</ul>
<% unless EnterpriseToken.allows_to?(:custom_fields_in_projects_list)%>
<%=
helpers.angular_component_tag 'op-enterprise-banner',
inputs: {
collapsible: true,
textMessage: t('ee.upsale.project_filters.description_html'),
moreInfoLink: OpenProject::Static::Links.links[:enterprise_docs][:custom_field_projects][:href],
}
%>
<% end %>
</fieldset>
<% end %>
+4 -3
View File
@@ -2,7 +2,7 @@
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2010-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -51,7 +51,7 @@ module Filter
def allowed_filters
query
.available_filters
.available_advanced_filters
end
protected
@@ -65,7 +65,8 @@ module Filter
# @return [Hash] the additional attributes for the filter, that will be yielded in the each_filter method
def additional_filter_attributes(filter)
case filter
when Queries::Filters::Shared::ProjectFilter
when Queries::Filters::Shared::ProjectFilter::Required,
Queries::Filters::Shared::ProjectFilter::Optional
{
autocomplete_options: {
component: "opce-project-autocompleter",
@@ -0,0 +1,71 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 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.
++#%>
<%=
render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title { @group.name }
header.with_breadcrumbs(breadcrumb_items)
header.with_action_button(tag: :a,
mobile_icon: :person,
mobile_label: t(:label_profile),
size: :medium,
href: show_group_path(@group),
aria: { label: I18n.t(:label_profile) },
title: I18n.t(:label_profile)) do |button|
button.with_leading_visual_icon(icon: :person)
t(:label_profile)
end
if @current_user.admin?
header.with_action_button(tag: :a,
scheme: :danger,
mobile_icon: :trash,
mobile_label: t(:button_delete),
size: :medium,
href: group_path(@group),
aria: { label: I18n.t(:button_delete) },
data: {
confirm: t(:text_are_you_sure),
method: :delete,
},
title: I18n.t(:button_delete)) do |button|
button.with_leading_visual_icon(icon: :trash)
t(:button_delete)
end
end
header.with_tab_nav(label: nil) do |tab_nav|
@tabs.each do |tab|
tab_nav.with_tab(selected: selected_tab(@tabs) == tab, href: tab[:path]) do |t|
t.with_text { I18n.t("js.#{tab[:label]}") }
end
end
end if @tabs.present?
end
%>
@@ -0,0 +1,51 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
# ++
module Groups
class EditPageHeaderComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
include ApplicationHelper
include TabsHelper
def initialize(group:, current_user:, tabs: nil)
super
@group = group
@tabs = tabs
@current_user = current_user
end
def breadcrumb_items
[{ href: admin_index_path, text: t("label_administration") },
{ href: admin_settings_users_path, text: t(:label_user_and_permission) },
{ href: groups_path, text: t(:label_group_plural) },
@group.name]
end
end
end
@@ -0,0 +1,64 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 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.
++#%>
<%=
render(Primer::OpenProject::PageHeader.new) do |header|
header.with_title(test_selector: "groups--title") { @group.name }
header.with_breadcrumbs(breadcrumb_items)
if @current_user.admin?
header.with_action_button(tag: :a,
mobile_icon: :pencil,
mobile_label: t(:button_edit),
size: :medium,
href: edit_group_path(@group),
aria: { label: I18n.t(:button_edit) },
data: { "test-selector": "groups--edit-group-button" },
title: I18n.t(:button_edit)) do |button|
button.with_leading_visual_icon(icon: :pencil)
t(:button_edit)
end
header.with_action_button(tag: :a,
scheme: :danger,
mobile_icon: :trash,
mobile_label: t(:button_delete),
size: :medium,
href: group_path(@group),
aria: { label: I18n.t(:button_delete) },
data: {
confirm: t(:text_are_you_sure),
method: :delete,
},
title: I18n.t(:button_delete)) do |button|
button.with_leading_visual_icon(icon: :trash)
t(:button_delete)
end
end
end
%>
@@ -0,0 +1,47 @@
# frozen_string_literal: true
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 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.
# ++
module Groups
class ShowPageHeaderComponent < ApplicationComponent
include OpPrimer::ComponentHelpers
include ApplicationHelper
def initialize(group:, current_user:)
super
@group = group
@current_user = current_user
end
def breadcrumb_items
[{ href: groups_path, text: t(:label_group_plural) },
@group.name]
end
end
end
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,13 +2,13 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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-2017 Jean-Philippe Lang
# 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
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2010-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
# -- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2010-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -1,6 +1,6 @@
<%#-- copyright
OpenProject is an open source project management software.
Copyright (C) 2012-2024 the OpenProject GmbH
Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
+1 -1
View File
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.
@@ -2,7 +2,7 @@
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) 2012-2024 the OpenProject GmbH
# Copyright (C) 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.

Some files were not shown because too many files have changed in this diff Show More