Merge branch 'dev' into use_jemalloc
@@ -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,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,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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, ...)
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,6 +27,7 @@ jobs:
|
||||
labels:
|
||||
- runs-on
|
||||
- runner=32cpu-linux-x64
|
||||
- family=m7
|
||||
- run-id=${{ github.run_id }}
|
||||
timeout-minutes: 40
|
||||
env:
|
||||
|
||||
@@ -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,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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 @@
|
||||
3.3.3
|
||||
3.3.4
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,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,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.
|
||||
|
||||
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 27 KiB |
@@ -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 |
|
Before Width: | Height: | Size: 24 KiB |
@@ -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.
|
||||
|
||||
@@ -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) 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.
|
||||
|
||||
@@ -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
|
||||
@@ -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 %>
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||