mirror of
https://github.com/opf/openproject.git
synced 2026-06-13 19:20:00 +00:00
Merge dev into release merge branch
Resolve Backlogs sprint conflicts by porting the release assignability changes onto the renamed Sprint model.
This commit is contained in:
@@ -85,7 +85,7 @@ jobs:
|
||||
echo "✓ docker_tags: ${{ steps.extract_version.outputs.docker_tags }}"
|
||||
echo "✓ registry_image: ${{ steps.extract_version.outputs.registry_image }}"
|
||||
- name: Cache NPM
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: |
|
||||
frontend/node_modules
|
||||
@@ -93,7 +93,7 @@ jobs:
|
||||
key: nodejs-x64-${{ hashFiles('**/package-lock.json') }}
|
||||
restore-keys: nodejs-x64-
|
||||
- name: Cache angular
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: frontend/.angular
|
||||
key: angular-${{ github.ref }}
|
||||
|
||||
@@ -48,7 +48,7 @@ jobs:
|
||||
compose_files: docker-compose.pullpreview.yml
|
||||
provider: hetzner
|
||||
region: fsn1
|
||||
instance_type: cx53
|
||||
instance_type: cpx42
|
||||
ports: 80,443
|
||||
default_port: 443
|
||||
ttl: 10d
|
||||
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Cache DOCKER
|
||||
id: cache_docker
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: cache/docker
|
||||
# Note: no restore keys since whenever the files below change, we want to rebuild the full image from scratch
|
||||
@@ -47,28 +47,28 @@ jobs:
|
||||
if: steps.cache_docker.outputs.cache-hit == 'true'
|
||||
run: docker load -i cache/docker/image.tar
|
||||
- name: Cache GEM
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: cache/bundle
|
||||
key: gem-trixie-${{ hashFiles('.ruby-version') }}-${{ hashFiles('Gemfile.lock') }}
|
||||
restore-keys: |
|
||||
gem-trixie-${{ hashFiles('.ruby-version') }}-
|
||||
- name: Cache NPM
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: cache/node
|
||||
key: node-${{ hashFiles('package.json', 'frontend/package-lock.json') }}
|
||||
restore-keys: |
|
||||
node-
|
||||
- name: Cache ANGULAR
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: cache/angular
|
||||
key: angular-${{ hashFiles('package.json', 'frontend/package-lock.json') }}
|
||||
restore-keys: |
|
||||
angular-
|
||||
- name: Cache TEST RUNTIME
|
||||
uses: runs-on/cache@v4
|
||||
uses: runs-on/cache@v5
|
||||
with:
|
||||
path: cache/runtime-logs
|
||||
key: runtime-logs-${{ github.head_ref || github.ref }}-${{ github.sha }}
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
|
||||
- name: Add comment if versions differ
|
||||
if: steps.version-check.outputs.version_mismatch == 'true'
|
||||
uses: marocchino/sticky-pull-request-comment@v2
|
||||
uses: marocchino/sticky-pull-request-comment@v3
|
||||
with:
|
||||
header: version-mismatch-comment
|
||||
message: |
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
- 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
|
||||
uses: marocchino/sticky-pull-request-comment@v3
|
||||
with:
|
||||
header: version-mismatch-comment
|
||||
delete: true
|
||||
|
||||
+12
-5
@@ -60,7 +60,8 @@ Layout/MultilineOperationIndentation:
|
||||
Enabled: false
|
||||
|
||||
Lint/AmbiguousBlockAssociation:
|
||||
AllowedMethods: [change]
|
||||
AllowedMethods:
|
||||
- change
|
||||
|
||||
Lint/AmbiguousOperator:
|
||||
Enabled: false
|
||||
@@ -147,9 +148,9 @@ Naming/PredicatePrefix:
|
||||
|
||||
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
|
||||
- "\\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
|
||||
|
||||
OpenProject/AddPreviewForViewComponent:
|
||||
Include:
|
||||
@@ -181,6 +182,10 @@ Rails/DynamicFindBy:
|
||||
- find_by_login
|
||||
- find_by_mail
|
||||
- find_by_plaintext_value
|
||||
- find_by_rss_key
|
||||
- find_by_unique
|
||||
- find_by_unique!
|
||||
- find_by_api_key
|
||||
|
||||
# Allow reorder to prevent find each cop triggering
|
||||
Rails/FindEach:
|
||||
@@ -333,6 +338,7 @@ RSpec/SpecFilePathFormat:
|
||||
CustomTransform:
|
||||
OpenIDConnect: openid_connect
|
||||
OAuthClients: oauth_clients
|
||||
XWiki: xwiki
|
||||
XWikiProviders: xwiki_providers
|
||||
EnforcedInflector: active_support
|
||||
IgnoreMethods: true
|
||||
@@ -402,7 +408,8 @@ Style/FormatString:
|
||||
Enabled: false
|
||||
|
||||
Style/FormatStringToken:
|
||||
AllowedMethods: [redirect]
|
||||
AllowedMethods:
|
||||
- redirect
|
||||
|
||||
Style/FrozenStringLiteralComment:
|
||||
Enabled: true
|
||||
|
||||
@@ -124,10 +124,10 @@ gem "sys-filesystem", "~> 1.5.0", require: false
|
||||
gem "bcrypt", "~> 3.1.22"
|
||||
|
||||
gem "multi_json", "~> 1.20.0"
|
||||
gem "oj", "~> 3.16.16"
|
||||
gem "oj", "~> 3.17.0"
|
||||
|
||||
gem "daemons"
|
||||
gem "good_job", "~> 4.14.2" # update should be done manually in sync with saas-openproject version.
|
||||
gem "good_job", "~> 4.18.1" # update should be done manually in sync with saas-openproject version.
|
||||
|
||||
gem "rack-protection", "~> 3.2.0"
|
||||
|
||||
@@ -161,7 +161,7 @@ gem "ttfunk", "~> 1.7.0" # remove after https://github.com/prawnpdf/prawn/issues
|
||||
# prawn implicitly depends on matrix gem no longer in ruby core with 3.1
|
||||
gem "matrix", "~> 0.4.3"
|
||||
|
||||
gem "mcp", "~> 0.10.0"
|
||||
gem "mcp", "~> 0.14.0"
|
||||
|
||||
gem "meta-tags", "~> 2.23.0"
|
||||
|
||||
@@ -237,10 +237,10 @@ gem "yabeda-rails"
|
||||
|
||||
# opentelemetry
|
||||
gem "opentelemetry-exporter-otlp", "~> 0.33.0", require: false
|
||||
gem "opentelemetry-instrumentation-all", "~> 0.91.0", require: false
|
||||
gem "opentelemetry-instrumentation-all", "~> 0.93.0", require: false
|
||||
gem "opentelemetry-sdk", "~> 1.10", require: false
|
||||
|
||||
gem "view_component", "~> 4.6.0"
|
||||
gem "view_component", "~> 4.8.0"
|
||||
# Lookbook
|
||||
gem "lookbook", "2.3.14"
|
||||
|
||||
@@ -384,7 +384,7 @@ group :development, :test do
|
||||
gem "active_record_doctor", "~> 2.0.1"
|
||||
end
|
||||
|
||||
gem "bootsnap", "~> 1.23.0", require: false
|
||||
gem "bootsnap", "~> 1.24.0", require: false
|
||||
|
||||
# API gems
|
||||
gem "grape", "~> 3.2.0"
|
||||
@@ -405,7 +405,7 @@ gem "disposable", "~> 0.6.2"
|
||||
gem "dentaku", "~> 3.5"
|
||||
|
||||
# Used for more powerful counter caches
|
||||
gem "counter_culture", "~> 3.11"
|
||||
gem "counter_culture", "~> 3.13"
|
||||
|
||||
group :postgres do
|
||||
gem "pg", "~> 1.6.2"
|
||||
|
||||
+244
-245
@@ -356,8 +356,8 @@ GEM
|
||||
awesome_nested_set (3.9.0)
|
||||
activerecord (>= 4.0.0, < 8.2)
|
||||
aws-eventstream (1.4.0)
|
||||
aws-partitions (1.1238.0)
|
||||
aws-sdk-core (3.244.0)
|
||||
aws-partitions (1.1242.0)
|
||||
aws-sdk-core (3.246.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
@@ -365,10 +365,10 @@ GEM
|
||||
bigdecimal
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
logger
|
||||
aws-sdk-kms (1.123.0)
|
||||
aws-sdk-kms (1.124.0)
|
||||
aws-sdk-core (~> 3, >= 3.244.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.219.0)
|
||||
aws-sdk-s3 (1.220.0)
|
||||
aws-sdk-core (~> 3, >= 3.244.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
@@ -377,12 +377,12 @@ GEM
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.12.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
axe-core-api (4.11.2)
|
||||
axe-core-api (4.11.3)
|
||||
dumb_delegator
|
||||
ostruct
|
||||
virtus
|
||||
axe-core-rspec (4.11.2)
|
||||
axe-core-api (= 4.11.2)
|
||||
axe-core-rspec (4.11.3)
|
||||
axe-core-api (= 4.11.3)
|
||||
dumb_delegator
|
||||
ostruct
|
||||
virtus
|
||||
@@ -400,9 +400,9 @@ GEM
|
||||
erubi (~> 1.4)
|
||||
parser (>= 2.4)
|
||||
smart_properties
|
||||
bigdecimal (4.1.1)
|
||||
bigdecimal (4.1.2)
|
||||
bindata (2.5.1)
|
||||
bootsnap (1.23.0)
|
||||
bootsnap (1.24.1)
|
||||
msgpack (~> 1.2)
|
||||
brakeman (8.0.4)
|
||||
racc
|
||||
@@ -462,14 +462,14 @@ GEM
|
||||
cose (1.3.1)
|
||||
cbor (~> 0.5.9)
|
||||
openssl-signature_algorithm (~> 1.0)
|
||||
counter_culture (3.13.0)
|
||||
counter_culture (3.13.1)
|
||||
activerecord (>= 4.2)
|
||||
activesupport (>= 4.2)
|
||||
crack (1.0.1)
|
||||
bigdecimal
|
||||
rexml
|
||||
crass (1.0.6)
|
||||
css_parser (2.0.0)
|
||||
css_parser (2.1.0)
|
||||
addressable
|
||||
csv (3.3.5)
|
||||
cuprite (0.17)
|
||||
@@ -517,7 +517,7 @@ GEM
|
||||
concurrent-ruby (~> 1.0)
|
||||
dry-core (~> 1.1)
|
||||
zeitwerk (~> 2.6)
|
||||
dry-monads (1.9.0)
|
||||
dry-monads (1.10.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
dry-core (~> 1.1)
|
||||
zeitwerk (~> 2.6)
|
||||
@@ -558,7 +558,7 @@ GEM
|
||||
activemodel
|
||||
equivalent-xml (0.6.0)
|
||||
nokogiri (>= 1.4.3)
|
||||
erb (6.0.3)
|
||||
erb (6.0.4)
|
||||
erb_lint (0.9.0)
|
||||
activesupport
|
||||
better_html (>= 2.0.1)
|
||||
@@ -603,7 +603,7 @@ GEM
|
||||
ffi (1.17.4-x86_64-linux-gnu)
|
||||
ffi (1.17.4-x86_64-linux-musl)
|
||||
flamegraph (0.9.5)
|
||||
fog-aws (3.33.1)
|
||||
fog-aws (3.33.2)
|
||||
base64 (>= 0.2, < 0.4)
|
||||
fog-core (~> 2.6)
|
||||
fog-json (~> 1.1)
|
||||
@@ -613,7 +613,7 @@ GEM
|
||||
excon (~> 1.0)
|
||||
formatador (>= 0.2, < 2.0)
|
||||
mime-types
|
||||
fog-json (1.2.0)
|
||||
fog-json (1.3.0)
|
||||
fog-core
|
||||
multi_json (~> 1.10)
|
||||
fog-xml (0.1.5)
|
||||
@@ -633,7 +633,7 @@ GEM
|
||||
glob (0.4.0)
|
||||
globalid (1.3.0)
|
||||
activesupport (>= 6.1)
|
||||
good_job (4.14.2)
|
||||
good_job (4.18.1)
|
||||
activejob (>= 6.1.0)
|
||||
activerecord (>= 6.1.0)
|
||||
concurrent-ruby (>= 1.3.1)
|
||||
@@ -648,7 +648,7 @@ GEM
|
||||
mini_mime (~> 1.1)
|
||||
representable (~> 3.0)
|
||||
retriable (~> 3.1)
|
||||
google-apis-gmail_v1 (0.47.0)
|
||||
google-apis-gmail_v1 (0.48.0)
|
||||
google-apis-core (>= 0.15.0, < 2.a)
|
||||
google-cloud-env (2.3.1)
|
||||
base64 (~> 0.2)
|
||||
@@ -685,7 +685,7 @@ GEM
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
grape (3.2.0)
|
||||
grape (3.2.1)
|
||||
activesupport (>= 7.2)
|
||||
dry-configurable
|
||||
dry-types (>= 1.1)
|
||||
@@ -745,16 +745,16 @@ GEM
|
||||
nokogiri (>= 1.6)
|
||||
interception (0.5)
|
||||
io-console (0.8.2)
|
||||
irb (1.17.0)
|
||||
irb (1.18.0)
|
||||
pp (>= 0.6.0)
|
||||
prism (>= 1.3.0)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
iso8601 (0.13.0)
|
||||
jmespath (1.6.2)
|
||||
job-iteration (1.13.0)
|
||||
job-iteration (1.13.1)
|
||||
activejob (>= 7.0)
|
||||
json (2.19.3)
|
||||
json (2.19.5)
|
||||
json-jwt (1.17.0)
|
||||
activesupport (>= 4.2)
|
||||
aes_key_wrap
|
||||
@@ -828,7 +828,7 @@ GEM
|
||||
marcel (1.0.4)
|
||||
markly (0.16.0)
|
||||
matrix (0.4.3)
|
||||
mcp (0.10.0)
|
||||
mcp (0.14.0)
|
||||
json-schema (>= 4.1)
|
||||
messagebird-rest (5.0.0)
|
||||
jwt (< 4)
|
||||
@@ -838,21 +838,21 @@ GEM
|
||||
mime-types (3.7.0)
|
||||
logger
|
||||
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
||||
mime-types-data (3.2026.0407)
|
||||
mime-types-data (3.2026.0414)
|
||||
mini_magick (5.3.1)
|
||||
logger
|
||||
mini_mime (1.1.5)
|
||||
minitest (6.0.4)
|
||||
minitest (6.0.6)
|
||||
drb (~> 2.0)
|
||||
prism (~> 1.5)
|
||||
msgpack (1.8.0)
|
||||
multi_json (1.20.1)
|
||||
mustermann (3.1.0)
|
||||
mustermann (4.0.0)
|
||||
mustermann-grape (1.1.0)
|
||||
mustermann (>= 1.0.0)
|
||||
net-http (0.9.1)
|
||||
uri (>= 0.11.1)
|
||||
net-imap (0.6.3)
|
||||
net-imap (0.6.4)
|
||||
date
|
||||
net-protocol
|
||||
net-ldap (0.20.0)
|
||||
@@ -865,23 +865,23 @@ GEM
|
||||
net-smtp (0.5.1)
|
||||
net-protocol
|
||||
nio4r (2.7.5)
|
||||
nokogiri (1.19.2-aarch64-linux-gnu)
|
||||
nokogiri (1.19.3-aarch64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-aarch64-linux-musl)
|
||||
nokogiri (1.19.3-aarch64-linux-musl)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-arm-linux-gnu)
|
||||
nokogiri (1.19.3-arm-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-arm-linux-musl)
|
||||
nokogiri (1.19.3-arm-linux-musl)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-arm64-darwin)
|
||||
nokogiri (1.19.3-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-x86_64-darwin)
|
||||
nokogiri (1.19.3-x86_64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-x86_64-linux-gnu)
|
||||
nokogiri (1.19.3-x86_64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.19.2-x86_64-linux-musl)
|
||||
nokogiri (1.19.3-x86_64-linux-musl)
|
||||
racc (~> 1.4)
|
||||
oj (3.16.17)
|
||||
oj (3.17.0)
|
||||
bigdecimal (>= 3.0)
|
||||
ostruct (>= 0.2)
|
||||
okcomputer (1.19.1)
|
||||
@@ -929,155 +929,155 @@ GEM
|
||||
opentelemetry-common (~> 0.20)
|
||||
opentelemetry-sdk (~> 1.10)
|
||||
opentelemetry-semantic_conventions
|
||||
opentelemetry-helpers-mysql (0.5.0)
|
||||
opentelemetry-helpers-mysql (0.6.0)
|
||||
opentelemetry-api (~> 1.7)
|
||||
opentelemetry-common (~> 0.21)
|
||||
opentelemetry-helpers-sql (0.3.0)
|
||||
opentelemetry-helpers-sql (0.4.0)
|
||||
opentelemetry-api (~> 1.7)
|
||||
opentelemetry-helpers-sql-processor (0.4.0)
|
||||
opentelemetry-helpers-sql-processor (0.5.0)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-common (~> 0.21)
|
||||
opentelemetry-instrumentation-action_mailer (0.6.1)
|
||||
opentelemetry-instrumentation-action_mailer (0.8.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-action_pack (0.16.0)
|
||||
opentelemetry-instrumentation-action_pack (0.18.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.29)
|
||||
opentelemetry-instrumentation-action_view (0.11.2)
|
||||
opentelemetry-instrumentation-action_view (0.13.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-active_job (0.10.1)
|
||||
opentelemetry-instrumentation-active_job (0.12.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-active_model_serializers (0.24.0)
|
||||
opentelemetry-instrumentation-active_model_serializers (0.25.0)
|
||||
opentelemetry-instrumentation-active_support (>= 0.7.0)
|
||||
opentelemetry-instrumentation-active_record (0.11.1)
|
||||
opentelemetry-instrumentation-active_record (0.13.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-active_storage (0.3.1)
|
||||
opentelemetry-instrumentation-active_storage (0.5.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-active_support (0.10.1)
|
||||
opentelemetry-instrumentation-active_support (0.12.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-all (0.91.0)
|
||||
opentelemetry-instrumentation-active_model_serializers (~> 0.24.0)
|
||||
opentelemetry-instrumentation-anthropic (~> 0.4.0)
|
||||
opentelemetry-instrumentation-aws_lambda (~> 0.6.0)
|
||||
opentelemetry-instrumentation-aws_sdk (~> 0.11.0)
|
||||
opentelemetry-instrumentation-bunny (~> 0.24.0)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.24.0)
|
||||
opentelemetry-instrumentation-dalli (~> 0.29.2)
|
||||
opentelemetry-instrumentation-delayed_job (~> 0.25.1)
|
||||
opentelemetry-instrumentation-ethon (~> 0.28.0)
|
||||
opentelemetry-instrumentation-excon (~> 0.28.0)
|
||||
opentelemetry-instrumentation-faraday (~> 0.32.0)
|
||||
opentelemetry-instrumentation-grape (~> 0.6.0)
|
||||
opentelemetry-instrumentation-graphql (~> 0.31.2)
|
||||
opentelemetry-instrumentation-grpc (~> 0.4.1)
|
||||
opentelemetry-instrumentation-gruf (~> 0.5.0)
|
||||
opentelemetry-instrumentation-http (~> 0.29.0)
|
||||
opentelemetry-instrumentation-http_client (~> 0.28.0)
|
||||
opentelemetry-instrumentation-httpx (~> 0.7.0)
|
||||
opentelemetry-instrumentation-koala (~> 0.23.0)
|
||||
opentelemetry-instrumentation-lmdb (~> 0.25.0)
|
||||
opentelemetry-instrumentation-mongo (~> 0.25.0)
|
||||
opentelemetry-instrumentation-mysql2 (~> 0.33.0)
|
||||
opentelemetry-instrumentation-net_http (~> 0.28.0)
|
||||
opentelemetry-instrumentation-pg (~> 0.35.0)
|
||||
opentelemetry-instrumentation-que (~> 0.12.0)
|
||||
opentelemetry-instrumentation-racecar (~> 0.6.1)
|
||||
opentelemetry-instrumentation-rack (~> 0.30.0)
|
||||
opentelemetry-instrumentation-rails (~> 0.40.0)
|
||||
opentelemetry-instrumentation-rake (~> 0.5.0)
|
||||
opentelemetry-instrumentation-rdkafka (~> 0.9.0)
|
||||
opentelemetry-instrumentation-redis (~> 0.28.0)
|
||||
opentelemetry-instrumentation-resque (~> 0.8.0)
|
||||
opentelemetry-instrumentation-restclient (~> 0.27.0)
|
||||
opentelemetry-instrumentation-ruby_kafka (~> 0.24.0)
|
||||
opentelemetry-instrumentation-sidekiq (~> 0.28.1)
|
||||
opentelemetry-instrumentation-sinatra (~> 0.29.0)
|
||||
opentelemetry-instrumentation-trilogy (~> 0.67.0)
|
||||
opentelemetry-instrumentation-anthropic (0.4.0)
|
||||
opentelemetry-instrumentation-all (0.93.0)
|
||||
opentelemetry-instrumentation-active_model_serializers (~> 0.25.0)
|
||||
opentelemetry-instrumentation-anthropic (~> 0.5.0)
|
||||
opentelemetry-instrumentation-aws_lambda (~> 0.7.0)
|
||||
opentelemetry-instrumentation-aws_sdk (~> 0.12.0)
|
||||
opentelemetry-instrumentation-bunny (~> 0.25.0)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.25.0)
|
||||
opentelemetry-instrumentation-dalli (~> 0.30.0)
|
||||
opentelemetry-instrumentation-delayed_job (~> 0.26.0)
|
||||
opentelemetry-instrumentation-ethon (~> 0.29.0)
|
||||
opentelemetry-instrumentation-excon (~> 0.29.0)
|
||||
opentelemetry-instrumentation-faraday (~> 0.33.0)
|
||||
opentelemetry-instrumentation-grape (~> 0.7.0)
|
||||
opentelemetry-instrumentation-graphql (~> 0.32.0)
|
||||
opentelemetry-instrumentation-grpc (~> 0.5.0)
|
||||
opentelemetry-instrumentation-gruf (~> 0.6.0)
|
||||
opentelemetry-instrumentation-http (~> 0.30.0)
|
||||
opentelemetry-instrumentation-http_client (~> 0.29.0)
|
||||
opentelemetry-instrumentation-httpx (~> 0.8.0)
|
||||
opentelemetry-instrumentation-koala (~> 0.24.0)
|
||||
opentelemetry-instrumentation-lmdb (~> 0.26.0)
|
||||
opentelemetry-instrumentation-mongo (~> 0.26.0)
|
||||
opentelemetry-instrumentation-mysql2 (~> 0.34.0)
|
||||
opentelemetry-instrumentation-net_http (~> 0.29.0)
|
||||
opentelemetry-instrumentation-pg (~> 0.36.0)
|
||||
opentelemetry-instrumentation-que (~> 0.13.0)
|
||||
opentelemetry-instrumentation-racecar (~> 0.7.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.31.0)
|
||||
opentelemetry-instrumentation-rails (~> 0.42.0)
|
||||
opentelemetry-instrumentation-rake (~> 0.6.0)
|
||||
opentelemetry-instrumentation-rdkafka (~> 0.10.0)
|
||||
opentelemetry-instrumentation-redis (~> 0.29.0)
|
||||
opentelemetry-instrumentation-resque (~> 0.9.0)
|
||||
opentelemetry-instrumentation-restclient (~> 0.28.0)
|
||||
opentelemetry-instrumentation-ruby_kafka (~> 0.25.0)
|
||||
opentelemetry-instrumentation-sidekiq (~> 0.29.0)
|
||||
opentelemetry-instrumentation-sinatra (~> 0.30.0)
|
||||
opentelemetry-instrumentation-trilogy (~> 0.68.0)
|
||||
opentelemetry-instrumentation-anthropic (0.5.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-aws_lambda (0.6.0)
|
||||
opentelemetry-instrumentation-aws_lambda (0.7.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-aws_sdk (0.11.0)
|
||||
opentelemetry-instrumentation-aws_sdk (0.12.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-base (0.25.0)
|
||||
opentelemetry-instrumentation-base (0.26.0)
|
||||
opentelemetry-api (~> 1.7)
|
||||
opentelemetry-common (~> 0.21)
|
||||
opentelemetry-registry (~> 0.1)
|
||||
opentelemetry-instrumentation-bunny (0.24.0)
|
||||
opentelemetry-instrumentation-bunny (0.25.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-concurrent_ruby (0.24.0)
|
||||
opentelemetry-instrumentation-concurrent_ruby (0.25.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-dalli (0.29.2)
|
||||
opentelemetry-instrumentation-dalli (0.30.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-delayed_job (0.25.1)
|
||||
opentelemetry-instrumentation-delayed_job (0.26.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-ethon (0.28.0)
|
||||
opentelemetry-instrumentation-ethon (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-excon (0.28.0)
|
||||
opentelemetry-instrumentation-excon (0.29.1)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-faraday (0.32.0)
|
||||
opentelemetry-instrumentation-faraday (0.33.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-grape (0.6.0)
|
||||
opentelemetry-instrumentation-grape (0.7.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.29)
|
||||
opentelemetry-instrumentation-graphql (0.31.2)
|
||||
opentelemetry-instrumentation-graphql (0.32.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-grpc (0.4.1)
|
||||
opentelemetry-instrumentation-grpc (0.5.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-gruf (0.5.0)
|
||||
opentelemetry-instrumentation-gruf (0.6.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-http (0.29.0)
|
||||
opentelemetry-instrumentation-http (0.30.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-http_client (0.28.0)
|
||||
opentelemetry-instrumentation-http_client (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-httpx (0.7.0)
|
||||
opentelemetry-instrumentation-httpx (0.8.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-koala (0.23.0)
|
||||
opentelemetry-instrumentation-koala (0.24.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-lmdb (0.25.0)
|
||||
opentelemetry-instrumentation-lmdb (0.26.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-mongo (0.25.1)
|
||||
opentelemetry-instrumentation-mongo (0.26.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-mysql2 (0.33.0)
|
||||
opentelemetry-instrumentation-mysql2 (0.34.0)
|
||||
opentelemetry-helpers-mysql
|
||||
opentelemetry-helpers-sql
|
||||
opentelemetry-helpers-sql-processor
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-net_http (0.28.0)
|
||||
opentelemetry-instrumentation-net_http (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-pg (0.35.0)
|
||||
opentelemetry-instrumentation-pg (0.36.0)
|
||||
opentelemetry-helpers-sql
|
||||
opentelemetry-helpers-sql-processor
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-que (0.12.0)
|
||||
opentelemetry-instrumentation-que (0.13.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-racecar (0.6.1)
|
||||
opentelemetry-instrumentation-racecar (0.7.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-rack (0.30.0)
|
||||
opentelemetry-instrumentation-rack (0.31.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-rails (0.40.0)
|
||||
opentelemetry-instrumentation-action_mailer (~> 0.6)
|
||||
opentelemetry-instrumentation-action_pack (~> 0.15)
|
||||
opentelemetry-instrumentation-action_view (~> 0.11)
|
||||
opentelemetry-instrumentation-active_job (~> 0.10)
|
||||
opentelemetry-instrumentation-active_record (~> 0.11)
|
||||
opentelemetry-instrumentation-active_storage (~> 0.3)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.23)
|
||||
opentelemetry-instrumentation-rake (0.5.0)
|
||||
opentelemetry-instrumentation-rails (0.42.0)
|
||||
opentelemetry-instrumentation-action_mailer (~> 0.7)
|
||||
opentelemetry-instrumentation-action_pack (~> 0.17)
|
||||
opentelemetry-instrumentation-action_view (~> 0.12)
|
||||
opentelemetry-instrumentation-active_job (~> 0.11)
|
||||
opentelemetry-instrumentation-active_record (~> 0.12)
|
||||
opentelemetry-instrumentation-active_storage (~> 0.4)
|
||||
opentelemetry-instrumentation-active_support (~> 0.11)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.25)
|
||||
opentelemetry-instrumentation-rake (0.6.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-rdkafka (0.9.0)
|
||||
opentelemetry-instrumentation-rdkafka (0.10.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-redis (0.28.0)
|
||||
opentelemetry-instrumentation-redis (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-resque (0.8.0)
|
||||
opentelemetry-instrumentation-resque (0.9.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-restclient (0.27.0)
|
||||
opentelemetry-instrumentation-restclient (0.28.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-ruby_kafka (0.24.0)
|
||||
opentelemetry-instrumentation-ruby_kafka (0.25.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-sidekiq (0.28.1)
|
||||
opentelemetry-instrumentation-sidekiq (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-sinatra (0.29.0)
|
||||
opentelemetry-instrumentation-sinatra (0.30.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.29)
|
||||
opentelemetry-instrumentation-trilogy (0.67.0)
|
||||
opentelemetry-instrumentation-trilogy (0.68.0)
|
||||
opentelemetry-helpers-mysql
|
||||
opentelemetry-helpers-sql
|
||||
opentelemetry-helpers-sql-processor
|
||||
@@ -1096,16 +1096,16 @@ GEM
|
||||
optimist (3.2.1)
|
||||
os (1.1.4)
|
||||
ostruct (0.6.3)
|
||||
ox (2.14.23)
|
||||
ox (2.14.25)
|
||||
bigdecimal (>= 3.0)
|
||||
pagy (43.5.1)
|
||||
pagy (43.5.3)
|
||||
json
|
||||
uri
|
||||
yaml
|
||||
paper_trail (17.0.0)
|
||||
activerecord (>= 7.1)
|
||||
request_store (~> 1.4)
|
||||
parallel (2.0.1)
|
||||
parallel (2.1.0)
|
||||
parallel_tests (4.10.1)
|
||||
parallel
|
||||
parser (3.3.11.1)
|
||||
@@ -1198,8 +1198,8 @@ GEM
|
||||
multi_json
|
||||
puma (7.2.0)
|
||||
nio4r (~> 2.0)
|
||||
puma-plugin-statsd (2.7.0)
|
||||
puma (>= 5.0, < 8)
|
||||
puma-plugin-statsd (2.8.0)
|
||||
puma (>= 5.0, < 9)
|
||||
raabro (1.4.0)
|
||||
racc (1.8.1)
|
||||
rack (2.2.23)
|
||||
@@ -1269,13 +1269,12 @@ GEM
|
||||
zeitwerk (~> 2.6)
|
||||
rainbow (3.1.1)
|
||||
rake (13.4.2)
|
||||
rake-compiler-dock (1.11.0)
|
||||
rake-compiler-dock (1.12.0)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rb_sys (0.9.126)
|
||||
json (>= 2)
|
||||
rake-compiler-dock (= 1.11.0)
|
||||
rb_sys (0.9.127)
|
||||
rake-compiler-dock (= 1.12.0)
|
||||
rbtrace (0.5.3)
|
||||
ffi (>= 1.0.6)
|
||||
msgpack (>= 0.4.3)
|
||||
@@ -1349,9 +1348,9 @@ GEM
|
||||
rubocop-ast (1.49.1)
|
||||
parser (>= 3.3.7.2)
|
||||
prism (~> 1.7)
|
||||
rubocop-capybara (2.22.1)
|
||||
rubocop-capybara (2.23.0)
|
||||
lint_roller (~> 1.1)
|
||||
rubocop (~> 1.72, >= 1.72.1)
|
||||
rubocop (~> 1.81)
|
||||
rubocop-factory_bot (2.28.0)
|
||||
lint_roller (~> 1.1)
|
||||
rubocop (~> 1.72, >= 1.72.1)
|
||||
@@ -1421,7 +1420,7 @@ GEM
|
||||
multi_json (~> 1.10)
|
||||
simpleidn (0.2.3)
|
||||
smart_properties (1.17.0)
|
||||
spreadsheet (1.3.4)
|
||||
spreadsheet (1.3.5)
|
||||
bigdecimal
|
||||
logger
|
||||
ruby-ole
|
||||
@@ -1477,7 +1476,7 @@ GEM
|
||||
turbo-rails (>= 1.3.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
tzinfo-data (1.2026.1)
|
||||
tzinfo-data (1.2026.2)
|
||||
tzinfo (>= 1.0.0)
|
||||
uber (0.1.0)
|
||||
unicode-display_width (3.2.0)
|
||||
@@ -1493,7 +1492,7 @@ GEM
|
||||
public_suffix
|
||||
vcr (6.4.0)
|
||||
vernier (1.10.0)
|
||||
view_component (4.6.0)
|
||||
view_component (4.8.0)
|
||||
actionview (>= 7.1.0)
|
||||
activesupport (>= 7.1.0)
|
||||
concurrent-ruby (~> 1)
|
||||
@@ -1554,7 +1553,7 @@ GEM
|
||||
railties
|
||||
yabeda (~> 0.8)
|
||||
yaml (0.4.0)
|
||||
yard (0.9.42)
|
||||
yard (0.9.43)
|
||||
zeitwerk (2.7.5)
|
||||
|
||||
PLATFORMS
|
||||
@@ -1587,7 +1586,7 @@ DEPENDENCIES
|
||||
aws-sdk-s3 (~> 1.217)
|
||||
axe-core-rspec
|
||||
bcrypt (~> 3.1.22)
|
||||
bootsnap (~> 1.23.0)
|
||||
bootsnap (~> 1.24.0)
|
||||
brakeman (~> 8.0.1)
|
||||
browser (~> 6.2.0)
|
||||
budgets!
|
||||
@@ -1604,7 +1603,7 @@ DEPENDENCIES
|
||||
compare-xml (~> 0.66)
|
||||
connection_pool (~> 3.0.2)
|
||||
costs!
|
||||
counter_culture (~> 3.11)
|
||||
counter_culture (~> 3.13)
|
||||
csv (~> 3.3)
|
||||
cuprite (~> 0.17.0)
|
||||
daemons
|
||||
@@ -1631,7 +1630,7 @@ DEPENDENCIES
|
||||
friendly_id (~> 5.6.0)
|
||||
fuubar (~> 2.5.0)
|
||||
globalid (~> 1.3)
|
||||
good_job (~> 4.14.2)
|
||||
good_job (~> 4.18.1)
|
||||
google-apis-gmail_v1
|
||||
googleauth
|
||||
grape (~> 3.2.0)
|
||||
@@ -1657,7 +1656,7 @@ DEPENDENCIES
|
||||
mail (= 2.9.0)
|
||||
markly (~> 0.15)
|
||||
matrix (~> 0.4.3)
|
||||
mcp (~> 0.10.0)
|
||||
mcp (~> 0.14.0)
|
||||
md_to_pdf!
|
||||
meta-tags (~> 2.23.0)
|
||||
mini_magick (~> 5.3.0)
|
||||
@@ -1665,7 +1664,7 @@ DEPENDENCIES
|
||||
my_page!
|
||||
net-ldap (~> 0.20.0)
|
||||
nokogiri (~> 1.19.2)
|
||||
oj (~> 3.16.16)
|
||||
oj (~> 3.17.0)
|
||||
okcomputer (~> 1.19.1)
|
||||
omniauth!
|
||||
omniauth-openid-connect!
|
||||
@@ -1699,7 +1698,7 @@ DEPENDENCIES
|
||||
openproject-wikis!
|
||||
openproject-xls_export!
|
||||
opentelemetry-exporter-otlp (~> 0.33.0)
|
||||
opentelemetry-instrumentation-all (~> 0.91.0)
|
||||
opentelemetry-instrumentation-all (~> 0.93.0)
|
||||
opentelemetry-sdk (~> 1.10)
|
||||
overviews!
|
||||
ox
|
||||
@@ -1783,7 +1782,7 @@ DEPENDENCIES
|
||||
validate_url
|
||||
vcr
|
||||
vernier
|
||||
view_component (~> 4.6.0)
|
||||
view_component (~> 4.8.0)
|
||||
warden (~> 1.2)
|
||||
warden-basic_auth (~> 0.2.1)
|
||||
webmock (~> 3.26)
|
||||
@@ -1829,22 +1828,22 @@ CHECKSUMS
|
||||
auto_strip_attributes (2.6.0) sha256=a7e2e0cf744de2bcd947fd68014220702bcc88c81274c1cd9ce6f7316aae39b0
|
||||
awesome_nested_set (3.9.0) sha256=3ce99e816550f97f4de118e621630070aacf24928b920fe4a68846578a8daaed
|
||||
aws-eventstream (1.4.0) sha256=116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b
|
||||
aws-partitions (1.1238.0) sha256=fa3d1bdea6d7e7619e8cee22ebce8a569d2119296d3ec8c5f9b9b7c81fb0602c
|
||||
aws-sdk-core (3.244.0) sha256=3e458c078b0c5bdee95bc370c3a483374b3224cf730c1f9f0faf849a5d9a18ea
|
||||
aws-sdk-kms (1.123.0) sha256=d405f37e82f8fa32045ca8980be266c0b45b37aaf2012afe0254321a1e811f20
|
||||
aws-sdk-s3 (1.219.0) sha256=6a755d7377978525758b3c29185ca6a10128ce2b07555ca37c4549de10c2f1c7
|
||||
aws-partitions (1.1242.0) sha256=58886ab5484ccf9287a8d55e603c3c0fb004241dfb4c0c7690b67d18e4c39352
|
||||
aws-sdk-core (3.246.0) sha256=393864ec8948560e69fcccc2e4d256b40c7028eb98930608dd295279e3c4ddcc
|
||||
aws-sdk-kms (1.124.0) sha256=40d00ab706d7e49fd620270bd0dcb546f266295abdd49b54fec2611e2a41f37c
|
||||
aws-sdk-s3 (1.220.0) sha256=237fda5e6ac7ecdd9c848e27187bfdc370edad5c5a141aeec389fb450fa28c7c
|
||||
aws-sdk-sns (1.113.0) sha256=15fe37d010e86f4c28b4c2f2133c463ce5c14189ec3673a1f43c30dfee511b0f
|
||||
aws-sigv4 (1.12.1) sha256=6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00
|
||||
axe-core-api (4.11.2) sha256=c05c342941e0c29f17b00268302457da9e7b644f753c8bbab274d0083319344f
|
||||
axe-core-rspec (4.11.2) sha256=50c5a5f1b4b991da6857c5df4d6645dfac285a84c7f7f904a6ef23e53f4895eb
|
||||
axe-core-api (4.11.3) sha256=f5f6e802743644a50e2d8ef24c22aefbb6df49dd169024ff0144b47f37e652ba
|
||||
axe-core-rspec (4.11.3) sha256=246c8d443517354e9a9962a10a8cc456bcef4c617516c0924b051a9af9d7da99
|
||||
axiom-types (0.1.1) sha256=c1ff113f3de516fa195b2db7e0a9a95fd1b08475a502ff660d04507a09980383
|
||||
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
|
||||
bcrypt (3.1.22) sha256=1f0072e88c2d705d94aff7f2c5cb02eb3f1ec4b8368671e19112527489f29032
|
||||
benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c
|
||||
better_html (2.2.0) sha256=e68ab66ab09696b708333bbf35e8aa3c107500ba7892f528e2111624bdd8cf76
|
||||
bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca
|
||||
bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
|
||||
bindata (2.5.1) sha256=53186a1ec2da943d4cb413583d680644eb810aacbf8902497aac8f191fad9e58
|
||||
bootsnap (1.23.0) sha256=c1254f458d58558b58be0f8eb8f6eec2821456785b7cdd1e16248e2020d3f214
|
||||
bootsnap (1.24.1) sha256=d7faea1dc24aa5b22dacc049c9236b64ebf60b14dd49c615e15d8402375d39ef
|
||||
brakeman (8.0.4) sha256=7bf921fa9638544835df9aa7b3e720a9a72c0267f34f92135955edd80d4dcf6f
|
||||
browser (6.2.0) sha256=281d5295788825c9396427c292c2d2be0a5c91875c93c390fde6e5d61a5ace2d
|
||||
budgets (1.0.0)
|
||||
@@ -1877,10 +1876,10 @@ CHECKSUMS
|
||||
cookiejar (0.3.4) sha256=11b16acfc4baf7a0f463c21a6212005e04e25f5554d4d9f24d97f3492dfda0df
|
||||
cose (1.3.1) sha256=d5d4dbcd6b035d513edc4e1ab9bc10e9ce13b4011c96e3d1b8fe5e6413fd6de5
|
||||
costs (1.0.0)
|
||||
counter_culture (3.13.0) sha256=a2cde20642ddd27aec9ff0c09b73fa5b4fd729da368079e67c177bface3148bf
|
||||
counter_culture (3.13.1) sha256=c297961933d9a9b96683fc298d68fde44039eca7c5876a2b05c3b180fe1c6328
|
||||
crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e
|
||||
crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
|
||||
css_parser (2.0.0) sha256=af5c759a127b125b635006a6c6c2e05b96a1ebdeec21b3c415fd5f09ec714a0a
|
||||
css_parser (2.1.0) sha256=bfb7c9cf3896426b53337e34b4ad391c3cfe8c2f2c839e72f2cdccf615fb5247
|
||||
csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f
|
||||
cuprite (0.17) sha256=b140d5dc70d08b97ad54bcf45cd95d0bd430e291e9dffe76fff851fddd57c12b
|
||||
daemons (1.4.1) sha256=8fc76d76faec669feb5e455d72f35bd4c46dc6735e28c420afb822fac1fa9a1d
|
||||
@@ -1903,7 +1902,7 @@ CHECKSUMS
|
||||
dry-inflector (1.3.1) sha256=7fb0c2bb04f67638f25c52e7ba39ab435d922a3a5c3cd196120f63accb682dcc
|
||||
dry-initializer (3.2.0) sha256=37d59798f912dc0a1efe14a4db4a9306989007b302dcd5f25d0a2a20c166c4e3
|
||||
dry-logic (1.6.0) sha256=da6fedbc0f90fc41f9b0cc7e6f05f5d529d1efaef6c8dcc8e0733f685745cea2
|
||||
dry-monads (1.9.0) sha256=9348a67b5c862c7a876342dbd94737fdf3fb3c17978382cf6801a85b27215816
|
||||
dry-monads (1.10.0) sha256=68c90d77617c6ce88d60704fc3b233907e6320974152fe75ad947f968006ca39
|
||||
dry-schema (1.16.0) sha256=cd3aaeabc0f1af66ec82a29096d4c4fb92a0a58b9dae29a22b1bbceb78985727
|
||||
dry-types (1.9.1) sha256=baebeecdb9f8395d6c9d227b62011279440943e3ef2468fe8ccc1ba11467f178
|
||||
dry-validation (1.11.1) sha256=70900bb5a2d911c8aab566d3e360c6bff389b8bf92ea8e04885ce51c41ff8085
|
||||
@@ -1913,7 +1912,7 @@ CHECKSUMS
|
||||
em-synchrony (1.0.6) sha256=6e7470a684d9bbc00d61d552911b65711540bd89e95c157156f5aacdd6f306ca
|
||||
email_validator (2.2.4) sha256=5ab238095bec7aef9389f230e9e0c64c5081cdf91f19d6c5cecee0a93af20604
|
||||
equivalent-xml (0.6.0) sha256=8919761efa848ad0846369ff8be1f646b17e5061698c4867b09829000cc3f487
|
||||
erb (6.0.3) sha256=e43685a8a0a0ea6a924871b2162e8953ef73147ce46b75b36d1f6774fd286e91
|
||||
erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9
|
||||
erb_lint (0.9.0) sha256=dfb5e40ad839e8d1f0d56ca85ec9a7ac4c9cd966ec281138282f35b323ca7c31
|
||||
erblint-github (1.0.1) sha256=9f28f7dc381a0dc68a0093ef7af3424ed9d2bb2b3e39bdc8e8cba86a0d31f2d0
|
||||
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
|
||||
@@ -1937,9 +1936,9 @@ CHECKSUMS
|
||||
ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d
|
||||
ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e
|
||||
flamegraph (0.9.5) sha256=a683020637ffa0e14a72640fa41babf14d926bfeaed87e31907cfd06ab2de8dc
|
||||
fog-aws (3.33.1) sha256=20c7336ed978be6cbf2765844c53f30676288af98f1cb49945aa7b7b45a799a5
|
||||
fog-aws (3.33.2) sha256=bd9c1b045f19daad8942d65d7e9c9c7c1cd144beeabde63e34df7c58a9bb0f5b
|
||||
fog-core (2.6.0) sha256=3fe08aa83a23cddce42f4ba412040c08f890d7ff04c175c0ee59119371245be6
|
||||
fog-json (1.2.0) sha256=dd4f5ab362dbc72b687240bba9d2dd841d5dfe888a285797533f85c03ea548fe
|
||||
fog-json (1.3.0) sha256=8c2e4feb221c14f92ceeffb0aa5c8b6e8dd7c614a9141dfe7905f2dffebea217
|
||||
fog-xml (0.1.5) sha256=52b9fea10701461dd3eaf9d9839702169b418dbbf50426786b9b74fade373bd6
|
||||
formatador (1.2.3) sha256=19fa898133c2c26cdbb5d09f6998c1e137ad9427a046663e55adfe18b950d894
|
||||
friendly_id (5.6.0) sha256=28e221cd53fbd21586321164c1c6fd0c9ba8dde13969cb2363679f44726bb0c3
|
||||
@@ -1948,9 +1947,9 @@ CHECKSUMS
|
||||
fuubar (2.5.1) sha256=b272a7804b282661c7fab583a3764f92543cb482c365ae39c685cd218fdd4880
|
||||
glob (0.4.0) sha256=893dc9e2d24abe13dda907ce0cda576f680ff382f2a6cf9e543f98ecbe29238c
|
||||
globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11
|
||||
good_job (4.14.2) sha256=f38f164346aee724bbfbdaed73e1a0bd382cc6354146029e0adcc619245ab6d1
|
||||
good_job (4.18.1) sha256=cdd3f764752c47ab5d52b71d6e09097572c51c0a48cabb86157d403ac5269972
|
||||
google-apis-core (1.0.2) sha256=ba4579aaadc902d6cc7bc8db88f566ab00f5e31ea87ab41e9f9a032c470f2629
|
||||
google-apis-gmail_v1 (0.47.0) sha256=3064434b6da55b85e2828ce4bb0f4d04e8cfd187a4ab262ceb1dcb01f98e49ef
|
||||
google-apis-gmail_v1 (0.48.0) sha256=561534bb3d93610032720d0459153c432dc8e47e7096a1250fbe0ee8dcc6540c
|
||||
google-cloud-env (2.3.1) sha256=0faac01eb27be78c2591d64433663b1a114f8f7af55a4f819755426cac9178e7
|
||||
google-logging-utils (0.2.0) sha256=675462b4ea5affa825a3442694ca2d75d0069455a1d0956127207498fca3df7b
|
||||
google-protobuf (4.34.1) sha256=347181542b8d659c60f028fa3791c9cccce651a91ad27782dbc5c5e374796cdc
|
||||
@@ -1962,7 +1961,7 @@ CHECKSUMS
|
||||
google-protobuf (4.34.1-x86_64-linux-musl) sha256=8c0e91436fbe504ffc64f0bd621f2e69adbcce8ed2c58439d7a21117069cfdd7
|
||||
googleapis-common-protos-types (1.22.0) sha256=f97492b77bd6da0018c860d5004f512fe7cd165554d7019a8f4df6a56fbfc4c7
|
||||
googleauth (1.16.2) sha256=15009502e2e38af71948cda918f230e27d327f6882a1e47967a5a4664930a638
|
||||
grape (3.2.0) sha256=2aeeb020e5605f6314ce8ca8d30d90c9ee8f26bc959c5b34db7b8486764e4d2c
|
||||
grape (3.2.1) sha256=448072f55904e5a4dca2e3781f0a373942514be65402cafb6177f5bc73db1b94
|
||||
grape_logging (3.0.0) sha256=7b62d984ce96df15d120508668debe307e6a59ac1c511f1d9b5f3b4bea793e13
|
||||
gravatar_image_tag (1.2.0) sha256=eb5630fea846b711e713b934a0178fb9785f02f4eb9ced8d6faa4d537c40fdcf
|
||||
grids (1.0.0)
|
||||
@@ -1988,11 +1987,11 @@ CHECKSUMS
|
||||
inline_svg (1.10.0) sha256=5b652934236fd9f8adc61f3fd6e208b7ca3282698b19f28659971da84bf9a10f
|
||||
interception (0.5) sha256=a53818d636752a8df90d8c1bb2f7b6e13a7b828543cb02b50fbde98b849d7907
|
||||
io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc
|
||||
irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae
|
||||
irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3
|
||||
iso8601 (0.13.0) sha256=298c2b15b7be5fa95a1372813d36a2257656cd8e906dfbc1f5cb409851425aa2
|
||||
jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1
|
||||
job-iteration (1.13.0) sha256=3300844e81309fbd06fd2310d6aa8e1f43bf30fe03a3fc5067580b62f456b7e1
|
||||
json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646
|
||||
job-iteration (1.13.1) sha256=af4d5ac624c35ed2f32ed78de92d4673f0a93212105b96d46877b8422e3ff5a3
|
||||
json (2.19.5) sha256=218a18553e4801d579ca7e0f5bc72bafd776d7397238a1fb4e74db5b0a812c59
|
||||
json-jwt (1.17.0) sha256=6ff99026b4c54281a9431179f76ceb81faa14772d710ef6169785199caadc4cc
|
||||
json-schema (6.2.0) sha256=e8bff46ed845a22c1ab2bd0d7eccf831c01fe23bb3920caa4c74db4306813666
|
||||
json_schemer (2.5.0) sha256=2f01fb4cce721a4e08dd068fc2030cffd0702a7f333f1ea2be6e8991f00ae396
|
||||
@@ -2014,37 +2013,37 @@ CHECKSUMS
|
||||
marcel (1.0.4) sha256=0d5649feb64b8f19f3d3468b96c680bae9746335d02194270287868a661516a4
|
||||
markly (0.16.0) sha256=6f70d79e385b1efc9e171f74c81628826259039fe6c778e03c3924c71dac5511
|
||||
matrix (0.4.3) sha256=a0d5ab7ddcc1973ff690ab361b67f359acbb16958d1dc072b8b956a286564c5b
|
||||
mcp (0.10.0) sha256=09b9231eb16dff75cc7b8a95817c8acfcf4d1cab8d34f350671e43e765242b57
|
||||
mcp (0.14.0) sha256=9e3ca2e6b5e568739e8c07090982829896f2e4d884ffbb668d06f0fe758489e1
|
||||
md_to_pdf (0.2.6)
|
||||
messagebird-rest (5.0.0) sha256=da4cc1efba3d5e4aa021fad07426c2cb6b326ce5670da5104bb8f6056a39d59c
|
||||
meta-tags (2.23.0) sha256=ffe78b5bee398de4ff5ac3316f5a786049538a651643b8476def06c3acc762c1
|
||||
method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5
|
||||
mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
|
||||
mime-types-data (3.2026.0407) sha256=909395cf029731355136527aa11bf58ea0655ee782359ccbf32c66238a8cadb3
|
||||
mime-types-data (3.2026.0414) sha256=461c4c655373a44bd6c5fe54bcf5b7776026ea96e808144b1ec465c4b99148cc
|
||||
mini_magick (5.3.1) sha256=29395dfd76badcabb6403ee5aff6f681e867074f8f28ce08d78661e9e4a351c4
|
||||
mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
|
||||
minitest (6.0.4) sha256=df1304664589d40f46089247fdc451f866b0ce0d7cae1457a15fc1eb7d48dca1
|
||||
minitest (6.0.6) sha256=153ea36d1d987a62942382b61075745042a2b3123b1cd48f4c3675af9cc7d6f1
|
||||
msgpack (1.8.0) sha256=e64ce0212000d016809f5048b48eb3a65ffb169db22238fb4b72472fecb2d732
|
||||
multi_json (1.20.1) sha256=2f3934e805cc45ef91b551a1f89d0e9191abd06a5e04a2ef09a6a036c452ca6d
|
||||
mustermann (3.1.0) sha256=e73b006ffb7f743eae9303a7d6622e0dd9e1e5522718a2139c006085878768b9
|
||||
mustermann (4.0.0) sha256=91f67411bb208d1d93c41e6128cb3b0f8ddd9ec7c45966f1007e1c43c08040d7
|
||||
mustermann-grape (1.1.0) sha256=8d258a986004c8f01ce4c023c0b037c168a9ed889cf5778068ad54398fa458c5
|
||||
my_page (1.0.0)
|
||||
net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
|
||||
net-imap (0.6.3) sha256=9bab75f876596d09ee7bf911a291da478e0cd6badc54dfb82874855ccc82f2ad
|
||||
net-imap (0.6.4) sha256=9a5598c67a3022c284d98430ef1d4948e7dbdb62596f61081ea8ca933270a02b
|
||||
net-ldap (0.20.0) sha256=b2080b350753a9ac4930869ded8e61a1d2151c01e03b0bf07b4675cbd9ce5372
|
||||
net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
|
||||
net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
|
||||
net-smtp (0.5.1) sha256=ed96a0af63c524fceb4b29b0d352195c30d82dd916a42f03c62a3a70e5b70736
|
||||
nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
|
||||
nokogiri (1.19.2-aarch64-linux-gnu) sha256=c34d5c8208025587554608e98fd88ab125b29c80f9352b821964e9a5d5cfbd19
|
||||
nokogiri (1.19.2-aarch64-linux-musl) sha256=7f6b4b0202d507326841a4f790294bf75098aef50c7173443812e3ac5cb06515
|
||||
nokogiri (1.19.2-arm-linux-gnu) sha256=b7fa1139016f3dc850bda1260988f0d749934a939d04ef2da13bec060d7d5081
|
||||
nokogiri (1.19.2-arm-linux-musl) sha256=61114d44f6742ff72194a1b3020967201e2eb982814778d130f6471c11f9828c
|
||||
nokogiri (1.19.2-arm64-darwin) sha256=58d8ea2e31a967b843b70487a44c14c8ba1866daa1b9da9be9dbdf1b43dee205
|
||||
nokogiri (1.19.2-x86_64-darwin) sha256=7d9af11fda72dfaa2961d8c4d5380ca0b51bc389dc5f8d4b859b9644f195e7a4
|
||||
nokogiri (1.19.2-x86_64-linux-gnu) sha256=fa8feca882b73e871a9845f3817a72e9734c8e974bdc4fbad6e4bc6e8076b94f
|
||||
nokogiri (1.19.2-x86_64-linux-musl) sha256=93128448e61a9383a30baef041bf1f5817e22f297a1d400521e90294445069a8
|
||||
oj (3.16.17) sha256=a6688f666143632a1ef11a8d80c8d631b1112733c7da698ffafa4a22a8488244
|
||||
nokogiri (1.19.3-aarch64-linux-gnu) sha256=46b89e5d7b9e844c2ee360794240c6ea2a4e6fa0c5892a4ed487db621224b639
|
||||
nokogiri (1.19.3-aarch64-linux-musl) sha256=8392dfdcd21be7a94dbbe9ccc138dea01b97b24cb2dc02a114ca98bfb1d9a0b7
|
||||
nokogiri (1.19.3-arm-linux-gnu) sha256=3919d5ffc334ad778a4a9eb88fda7dcb8b1fb58c8a52ac640c6dcd2f038e774f
|
||||
nokogiri (1.19.3-arm-linux-musl) sha256=9ce1cb6346bb9c67b1550eb537aa183ead91e4b6eadb2f36ade02d8dd2a79fb6
|
||||
nokogiri (1.19.3-arm64-darwin) sha256=71b9bd424b1b7abc18b05052a1a3cfd3627abdca62be280854cc411791357e42
|
||||
nokogiri (1.19.3-x86_64-darwin) sha256=77f3fba57d46c53ab31e62fc6c28f705109d1bf6264356c76f132b2be5728d4d
|
||||
nokogiri (1.19.3-x86_64-linux-gnu) sha256=2f5078620fe12e83669b5b17311b32532a8153d02eee7ad06948b926d6080976
|
||||
nokogiri (1.19.3-x86_64-linux-musl) sha256=248c906d2166eca5efb56d52fdee5f9a1f51d69a72e2b64fdac647b4ce39ea3f
|
||||
oj (3.17.0) sha256=5684b2127fb70e650fae90df521b91336ff8e55e2e1011ed80eb0283beac5360
|
||||
okcomputer (1.19.1) sha256=7df770e768434816d228407f0786563827cbf34cb379933578829720cb4f1e77
|
||||
omniauth (1.9.2)
|
||||
omniauth-openid-connect (0.5.0)
|
||||
@@ -2085,55 +2084,55 @@ CHECKSUMS
|
||||
opentelemetry-api (1.9.0) sha256=d24065dd26583babd8d498d38ea35f74dfa193fb7102512e6e161649440079fb
|
||||
opentelemetry-common (0.24.0) sha256=f1647b233b8ac667feeb74d66a65b702008d9ab55aae825c220b4fe2c14fa773
|
||||
opentelemetry-exporter-otlp (0.33.0) sha256=6e9ce38e393c7eb9aea3fb57b128174a0066767bf495f4fd9e63d7607e0b2ad3
|
||||
opentelemetry-helpers-mysql (0.5.0) sha256=8c2a5d5428aec271a7d2e25c158d06d4d8a914143b5004305964d1fcbc176eca
|
||||
opentelemetry-helpers-sql (0.3.0) sha256=4bb08017d6a16dd41c4d1c53c7fd30f9c5bb691195d8b458933724627b3f37f9
|
||||
opentelemetry-helpers-sql-processor (0.4.0) sha256=ec238d7a2887219bd247dc31d0eb8a1a03d414a899963b68e14bb9f4d18b23f4
|
||||
opentelemetry-instrumentation-action_mailer (0.6.1) sha256=8384866bdb066ae14b9a1fe686ffaf1f23468326a35af64390c0395fcd471057
|
||||
opentelemetry-instrumentation-action_pack (0.16.0) sha256=f4d54806b96dff89af31fb971fe5b1f79dd41fcc46489ed7c5340a47ee12a7f9
|
||||
opentelemetry-instrumentation-action_view (0.11.2) sha256=e6a099015d672dabc19993d6fca99ef1e7210361ef21549a6e2076a67719fafc
|
||||
opentelemetry-instrumentation-active_job (0.10.1) sha256=aea1311224c20d064a8f218a44299171152dc36eeb531b9eba84bed8b3942a89
|
||||
opentelemetry-instrumentation-active_model_serializers (0.24.0) sha256=8fe81e44167d17e45d9acfa588d20140c7640c323e58aca99e266de1bb3fce15
|
||||
opentelemetry-instrumentation-active_record (0.11.1) sha256=1b083f34eea0449f8d6f4370b3fb4b935757fac6e4e538e67bb98211809e7c92
|
||||
opentelemetry-instrumentation-active_storage (0.3.1) sha256=f89b0fef54921f17c0c4c38a6e0926d29afabd0ac98436fcdbb8bde85dfde89e
|
||||
opentelemetry-instrumentation-active_support (0.10.1) sha256=82ea98367158797e33c6de96581f10aa4fe8adf0ebec832dcff5fd04c59bc57d
|
||||
opentelemetry-instrumentation-all (0.91.0) sha256=b077ce47da94e70e167157206034405f37ed0a4641d12ca8180a4b655c5727e2
|
||||
opentelemetry-instrumentation-anthropic (0.4.0) sha256=0040e0d97e9a66ef32cc35612ff28d7310d4ec1cd2f949805a2017f00f4d2de0
|
||||
opentelemetry-instrumentation-aws_lambda (0.6.0) sha256=1a3161393cfe9bc9eddd81a0668d076c38a0a2c3d5df40e95d02f5a8fcd3334c
|
||||
opentelemetry-instrumentation-aws_sdk (0.11.0) sha256=67a21e754ddf51e2bb8c3e46e116aa9158d8db800f34c2a9b1e0da5a6ca911e3
|
||||
opentelemetry-instrumentation-base (0.25.0) sha256=642a3a7f08354e6e969423327a4fa67ed2cca7ac6fe5ee09e55b17d1c576da27
|
||||
opentelemetry-instrumentation-bunny (0.24.0) sha256=1ec484e48a5f42a1d0c33e8e6bc7e9e78dd80f3ed9d63520b8a22ba564aa2585
|
||||
opentelemetry-instrumentation-concurrent_ruby (0.24.0) sha256=229bd8b72000c59de693609bb637b8a9114992f5e0ab03730d7fd7ef91f7d1d2
|
||||
opentelemetry-instrumentation-dalli (0.29.2) sha256=21b82772ced1529288c7f08285d44d5690de11f3d275e24558a062f39a270f4f
|
||||
opentelemetry-instrumentation-delayed_job (0.25.1) sha256=47f35b10d2bfd9ac7c2bbbe10dea095a2e25db2a84f5351860ead969d180c3ec
|
||||
opentelemetry-instrumentation-ethon (0.28.0) sha256=5ab5eb0733fec27300047f1f0906453171732c663d0484968ce0582026256b2d
|
||||
opentelemetry-instrumentation-excon (0.28.0) sha256=00bfd0bce489d5f924ab81c440098e99b6e4234f8968f942ce0753e2a326b99b
|
||||
opentelemetry-instrumentation-faraday (0.32.0) sha256=21f78858c4d8986a9b89a330bc1f6ef03007d6893d009865b4539269f686cdfd
|
||||
opentelemetry-instrumentation-grape (0.6.0) sha256=bc6f0ac3416b42bf096032ab79193326d6b50b12e8ccbcf028a78a4df492d057
|
||||
opentelemetry-instrumentation-graphql (0.31.2) sha256=a4455f225427f8f9058247c8c0b351b8932567913c35ef049f7958801d401b1f
|
||||
opentelemetry-instrumentation-grpc (0.4.1) sha256=5ffa2bb1d5ec69bcd1fe23e1d8c1a563a00351ce052fe9d76885cc43f21ebc87
|
||||
opentelemetry-instrumentation-gruf (0.5.0) sha256=ee21be36e312e71b847c9a87168225625890121140a364b68d3668e0df58dacd
|
||||
opentelemetry-instrumentation-http (0.29.0) sha256=c2981f22dac791f1768595c08b5338d29ad57bd98e23e9a2c0df7a1dc54122f1
|
||||
opentelemetry-instrumentation-http_client (0.28.0) sha256=f6dadfed166d75d5632ae0b3521ed6a491080972923031489b85711e6d58fcb8
|
||||
opentelemetry-instrumentation-httpx (0.7.0) sha256=3928185b62066cf6d8fe3b011dc5587ba53b09a5c7b573e36481b8d713d6aa03
|
||||
opentelemetry-instrumentation-koala (0.23.0) sha256=8f324b50a2a64fd4994bb2b105a4cb0c80b64ec05cf5487d2daa906c650bc6f9
|
||||
opentelemetry-instrumentation-lmdb (0.25.0) sha256=1e4d66d583ea242d4f72051062971f5af1ea353484d224abbd0aabdd1ce5f5cb
|
||||
opentelemetry-instrumentation-mongo (0.25.1) sha256=b66a8544bb0c60ab032ecd224333d50138f2b280d2d394c508d2ff8ca3fb94b9
|
||||
opentelemetry-instrumentation-mysql2 (0.33.0) sha256=b49b7957d5eef59e046e73be3ca370518965d61495745b4cb7ece3ef5470bcf9
|
||||
opentelemetry-instrumentation-net_http (0.28.0) sha256=63b00c1c8fcfba15cd293ece8383d19bbc35e9b5cc04056b3e95799be11026f5
|
||||
opentelemetry-instrumentation-pg (0.35.0) sha256=65a6e78bd45282b56021f1ee1b88b9fd318abf6812c32bd740465e6b9997aad4
|
||||
opentelemetry-instrumentation-que (0.12.0) sha256=3b7a84341f6af5a04f8c57860aeba4033f87c855d40c611a2fc40dde849944fb
|
||||
opentelemetry-instrumentation-racecar (0.6.1) sha256=833f6611906fb661f577e841d4ec52549474d32b4e8edea8048162348d35b845
|
||||
opentelemetry-instrumentation-rack (0.30.0) sha256=30a54f7b44d4b91839622a20eb0b25a7c47084b37c2b03cfc149bfc4ef62303c
|
||||
opentelemetry-instrumentation-rails (0.40.0) sha256=f794d477e8b48d9167ac1dbaf71dfc88e2a5647f76394cab7d1dfc6d5217b983
|
||||
opentelemetry-instrumentation-rake (0.5.0) sha256=fa6bd019078975ac8a67eaea06294e4fe6707e6770d8ced88d74dc573b0a01ef
|
||||
opentelemetry-instrumentation-rdkafka (0.9.0) sha256=f3beb56828c584d7d91a2c46f6e5a2ef82289b1d4445b1eb5bc13b80ab6aca89
|
||||
opentelemetry-instrumentation-redis (0.28.0) sha256=8721957d1c527dd22bd564d17f3a8db252081abb302be189511282d023693900
|
||||
opentelemetry-instrumentation-resque (0.8.0) sha256=559edde9d6273dd757ae5149ed36e26d147b63028d084121203f51c8cff805e5
|
||||
opentelemetry-instrumentation-restclient (0.27.0) sha256=1abe208f5f43eff8648fa3ec3393c021bcbf30512f0fd69e4edbe8345ac3f899
|
||||
opentelemetry-instrumentation-ruby_kafka (0.24.0) sha256=257e891f4ce630ba3e0669408d497b44afcc493cd49aed09343d5a51fa8952c2
|
||||
opentelemetry-instrumentation-sidekiq (0.28.1) sha256=abc85d62996a5362e7a9fd7af9f6c709d01ce04795514d12fee5126335ae97ae
|
||||
opentelemetry-instrumentation-sinatra (0.29.0) sha256=08595fec08d198df581d96aceb4b27998b84431e44a679950af7d00ab6559bdb
|
||||
opentelemetry-instrumentation-trilogy (0.67.0) sha256=40394d3071d92aa418ef5aedab8e74f7683c0566c285a5418f75ca0586fd025f
|
||||
opentelemetry-helpers-mysql (0.6.0) sha256=7eeb5e6950c434775a8cf28b5fde4defc12e8b865c86479ce3119fcf593d9337
|
||||
opentelemetry-helpers-sql (0.4.0) sha256=b10e8c3a2cca28a98af951bbb3e4efdc59e68b25ba0825e055574af543420afb
|
||||
opentelemetry-helpers-sql-processor (0.5.0) sha256=b199241bc9451fcbd9f00b2f454830af19d4ca27c2219ea379c9b0d53cd0e0f1
|
||||
opentelemetry-instrumentation-action_mailer (0.8.0) sha256=bd3e423f0179834d51804b86aaaecf723a6fe4cc952a19f98e0b6e16ba755da2
|
||||
opentelemetry-instrumentation-action_pack (0.18.0) sha256=90ba2c826b15539f7d02a4f37898592a41317e5c02785a7c2e7a8f782cbd5681
|
||||
opentelemetry-instrumentation-action_view (0.13.0) sha256=5b855610d1143972c527d4482d238ecc3d343c8d59e3c1390bad4056317f1568
|
||||
opentelemetry-instrumentation-active_job (0.12.0) sha256=cb3f36fd385cd0806d601d9307116146b6a249f2c0a28c279c2574a40e0db992
|
||||
opentelemetry-instrumentation-active_model_serializers (0.25.0) sha256=98bb004f38781aff425f1fc52636eafd0e7b32d5479957f343e361f946786ad7
|
||||
opentelemetry-instrumentation-active_record (0.13.0) sha256=239fceaae5a42e82dd9dd87bc63b1888bea32058dac0779b5ea36110fcb3a299
|
||||
opentelemetry-instrumentation-active_storage (0.5.0) sha256=39920d405fd111cd98c01a90a24b19413f4cb5bc8de2a24d7882f785e8f02c19
|
||||
opentelemetry-instrumentation-active_support (0.12.0) sha256=29a2cbdcb3aad4a42f4c9e829dab11167b71ed8a5205ad54587fe4d59d8ee704
|
||||
opentelemetry-instrumentation-all (0.93.0) sha256=e1f918add0d5ec48502cb2fbb49c122457fc2bd2cb54ee85e2db872308bfcb24
|
||||
opentelemetry-instrumentation-anthropic (0.5.0) sha256=a6b1e1f324d35323d4714a7f204c9d34c46da07529877a725829420a4a44bb13
|
||||
opentelemetry-instrumentation-aws_lambda (0.7.0) sha256=50e5a32c454f2d38ecb53cc94e77dc646b33c47294cc6e6363e7c226097fa132
|
||||
opentelemetry-instrumentation-aws_sdk (0.12.0) sha256=e2f48bf471cefe4d4bd9cfdafabffce65790b73381040e82d337933ac8bfb366
|
||||
opentelemetry-instrumentation-base (0.26.0) sha256=fdec8bff9a8de04d113bd4e8d490b17414c92d6c79dd457dfa079c97ba922be0
|
||||
opentelemetry-instrumentation-bunny (0.25.0) sha256=a8b20b7b4cdbfcfd64036b41c160061b164da2938aa7a7621849ee9f7ecb81b8
|
||||
opentelemetry-instrumentation-concurrent_ruby (0.25.0) sha256=722912e7078e3025a84a25d0b6085702417598c58187c19a762234702cbf7b2d
|
||||
opentelemetry-instrumentation-dalli (0.30.0) sha256=5e2fc0ef1f7eb684c6a987789ad0bad22ea9350376e134cd7c803e5eb02776ee
|
||||
opentelemetry-instrumentation-delayed_job (0.26.0) sha256=98beac35860800e3235b7b79bed9e53af07f601733f5a0020ce9db2f906ce79c
|
||||
opentelemetry-instrumentation-ethon (0.29.0) sha256=878135c550d01e2900348a92e9ca8e508e131d9d59d0e698c6a021fc7723181f
|
||||
opentelemetry-instrumentation-excon (0.29.1) sha256=7a9f1c52f6c804e81db5b8e06ea7cbcd3c1dae803e46407727ce9f62e7fed3c6
|
||||
opentelemetry-instrumentation-faraday (0.33.0) sha256=f4320bece35997b8ce2ba520eaf52499b89a0c048fce9ce0a10c1ae5d783f801
|
||||
opentelemetry-instrumentation-grape (0.7.0) sha256=1b7dddd8e2baad62de6cd20fc924089fb5b8953e23ba41b83b4116ad5bcc03bf
|
||||
opentelemetry-instrumentation-graphql (0.32.0) sha256=c3af73b42ac5ac873476f2c4c4cf46de2fb81bb74612cea61214a9911708afaa
|
||||
opentelemetry-instrumentation-grpc (0.5.0) sha256=09bd9ccbedea4668e80546a24dbc1b148fd3775658228050f7378fc0e03b863d
|
||||
opentelemetry-instrumentation-gruf (0.6.0) sha256=b2a2455b2c622962fc27a943572ee0c660297206bc5eb51b61095d5eb37eae0c
|
||||
opentelemetry-instrumentation-http (0.30.0) sha256=36d2639eab81d386b25e99e0d91fe31888a255159a1213b9648e8359751055c8
|
||||
opentelemetry-instrumentation-http_client (0.29.0) sha256=92363f0aa7a4286cb02e551c483078a2d5323e9f4ca2b706f2066834f7793d3d
|
||||
opentelemetry-instrumentation-httpx (0.8.0) sha256=694b6e3eb6df04f1534d7713b5bd67ab5c2e2f2d5438f2c972542b1617378fec
|
||||
opentelemetry-instrumentation-koala (0.24.0) sha256=70acc5e23bec54de26f3741e35056523cf9746329e7789f5be99ba1424b955f9
|
||||
opentelemetry-instrumentation-lmdb (0.26.0) sha256=e032b0a95c2df84e8f23a3c9b24af2ffa4f75ec3b3a72171951ef16ace490cd7
|
||||
opentelemetry-instrumentation-mongo (0.26.0) sha256=511407dd4fe06cb11be54b40b0a38f684aba1fc0569a5f6982c013e07e370ffd
|
||||
opentelemetry-instrumentation-mysql2 (0.34.0) sha256=3c38c7ac7251d2ac3f7fc744f0f0efb05459635b74232d264727874e9e8552b8
|
||||
opentelemetry-instrumentation-net_http (0.29.0) sha256=fae5eb6a794bbf87fb15752343b74d5cfd2bb830353f42cab3483fd2f3f84fe7
|
||||
opentelemetry-instrumentation-pg (0.36.0) sha256=f7346f8c4377c053ca2720ac112eacef884840e3f97621ec6f553f3cb23baec7
|
||||
opentelemetry-instrumentation-que (0.13.0) sha256=95e04b8c17e89eaa446f5dff7975cf72c2e74f7e1e84717be47facf510613112
|
||||
opentelemetry-instrumentation-racecar (0.7.0) sha256=93a991917687aa0a6e785ccd8d0de5746af110122552b2bf1e3abe12ab04584a
|
||||
opentelemetry-instrumentation-rack (0.31.0) sha256=bae9f424a2bb1dde2aa5e2c7e02dbbb80c972e7f4964ab820431229f276e0bfc
|
||||
opentelemetry-instrumentation-rails (0.42.0) sha256=5ea3808373ca73ee9fa4ecf337471bad1c28e98ea64460b89ab225f5b6eaf8b3
|
||||
opentelemetry-instrumentation-rake (0.6.0) sha256=71746e4e172560f8ccf1d3c91354196f5aa0fd9b0c477d6ff17a451cef901822
|
||||
opentelemetry-instrumentation-rdkafka (0.10.0) sha256=ad1a4aa78c0ab43c1f130d961f54e1d6ac20c674b0180b87d4364770b81ec209
|
||||
opentelemetry-instrumentation-redis (0.29.0) sha256=5f855d31ff7f72f79ef97e846655eaf31455a5c9549578725918196df09545ec
|
||||
opentelemetry-instrumentation-resque (0.9.0) sha256=c79de5ed739ebe8acc9e13f0c69d6b2b81266806a3b3fec6cb6a8ef8151a0e05
|
||||
opentelemetry-instrumentation-restclient (0.28.0) sha256=749b76d46c85a78882d924ba2edeff408f50def33099a67d95d88ddc4fa10307
|
||||
opentelemetry-instrumentation-ruby_kafka (0.25.0) sha256=33ceccd5cef4f648e652fa45896d0b014da1a71b3a80f17064829ee5aa84e285
|
||||
opentelemetry-instrumentation-sidekiq (0.29.0) sha256=b1d2a0cb9041a5e14239fe7c94d99e3dd07f870e2759460ab63592d7cdd8aadc
|
||||
opentelemetry-instrumentation-sinatra (0.30.0) sha256=b67301153420f43264a0c68cdb3ca5bd77467cf5054e57b83a2bf891aaaa0361
|
||||
opentelemetry-instrumentation-trilogy (0.68.0) sha256=24b31efdf21a08644ad26038b574f4b0876195b1502f3f64b1065eff3fe0f588
|
||||
opentelemetry-registry (0.5.0) sha256=726ca58ada93a23efaa5f7bb81b8ab7a8a1e14602935c9c65dfa2e597a19fb4f
|
||||
opentelemetry-sdk (1.11.0) sha256=427c6708f4732105ffa46c11afecb91807085c59e92538eaa6cf46b97b1850c6
|
||||
opentelemetry-semantic_conventions (1.37.0) sha256=1e2dc5ad649e19ba2fb0fa7c6f9303e5cdd8d3952511415cb07efe28a0f8f4c3
|
||||
@@ -2141,10 +2140,10 @@ CHECKSUMS
|
||||
os (1.1.4) sha256=57816d6a334e7bd6aed048f4b0308226c5fb027433b67d90a9ab435f35108d3f
|
||||
ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
|
||||
overviews (1.0.0)
|
||||
ox (2.14.23) sha256=4a9aedb4d6c78c5ebac1d7287dc7cc6808e14a8831d7adb727438f6a1b461b66
|
||||
pagy (43.5.1) sha256=ca5aaa6d65d21eee67a48fe8801d022d07ee72afbc5bea6a9e21b13a27b7c0b9
|
||||
ox (2.14.25) sha256=c938bcfce4d8ff2bd2bdbffe1277222a76c0a6e62078d6854bd4d40f34f2f7db
|
||||
pagy (43.5.3) sha256=f9d73e690648d484706661dcb815647775cf8330fcc5c6e62ec87b9df431290b
|
||||
paper_trail (17.0.0) sha256=1c2842061d3874ca7015908e821e2aa14f9b982af2acb2a7974713bf79021c85
|
||||
parallel (2.0.1) sha256=337782d3e39f4121e67563bf91dd8ece67f48923d90698614773a0ec9a5b2c7d
|
||||
parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
|
||||
parallel_tests (4.10.1) sha256=df05458c691462b210f7a41fc2651d4e4e8a881e8190e6d1e122c92c07735d70
|
||||
parser (3.3.11.1) sha256=d17ace7aabe3e72c3cc94043714be27cc6f852f104d81aa284c2281aecc65d54
|
||||
pdf-core (0.9.0) sha256=4f368b2f12b57ec979872d4bf4bd1a67e8648e0c81ab89801431d2fc89f4e0bb
|
||||
@@ -2178,7 +2177,7 @@ CHECKSUMS
|
||||
public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623
|
||||
puffing-billy (4.0.4) sha256=87015b0c41e0722b2171a0c5aa8130fd3f58aa1c016a1dc6dc569b2028aa846f
|
||||
puma (7.2.0) sha256=bf8ef4ab514a4e6d4554cb4326b2004eba5036ae05cf765cfe51aba9706a72a8
|
||||
puma-plugin-statsd (2.7.0) sha256=04f243a7233f4d06ec0e26f1a3522bce18a5910ae711763fabff22681bdad08b
|
||||
puma-plugin-statsd (2.8.0) sha256=e515445f93232b6b3571a23b832f93a776d4ce0fc8a5edee798013b82f3488f3
|
||||
raabro (1.4.0) sha256=d4fa9ff5172391edb92b242eed8be802d1934b1464061ae5e70d80962c5da882
|
||||
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
|
||||
rack (2.2.23) sha256=a8fe9d7e07064770b8ec123663fded8a59ef7e2b6db5cda7173d45a5718ab69c
|
||||
@@ -2200,10 +2199,10 @@ CHECKSUMS
|
||||
railties (8.1.3) sha256=913eb0e0cb520aac687ffd74916bd726d48fa21f47833c6292576ef6a286de22
|
||||
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
|
||||
rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
|
||||
rake-compiler-dock (1.11.0) sha256=eab51f2cd533eb35cea6b624a75281f047123e70a64c58b607471bb49428f8c2
|
||||
rake-compiler-dock (1.12.0) sha256=f13205c2738f3d2053afcd03491a9e4541b22a59a0bfc53fc8bc883bd8188023
|
||||
rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe
|
||||
rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e
|
||||
rb_sys (0.9.126) sha256=ba958e0b8b4b89eeae0b3d24b64c809eb2c37e0ab0773a49e9b1c2e22c95aef8
|
||||
rb_sys (0.9.127) sha256=e9f90df3bb0577472d26d96127d5b5774b98f44de881e7d36aeefd28d6337847
|
||||
rbtrace (0.5.3) sha256=c432292f305d9ab12fd47d9722e0d5210d983758a951fe6107c36cc955cb923f
|
||||
rbtree3 (0.7.1) sha256=ab60ead728a5491b70df4f4065e180b18dbab5319f817ce1dbf5dd906f26d8ba
|
||||
rdoc (7.2.0) sha256=8650f76cd4009c3b54955eb5d7e3a075c60a57276766ebf36f9085e8c9f23192
|
||||
@@ -2232,7 +2231,7 @@ CHECKSUMS
|
||||
rspec-wait (1.0.2) sha256=865f921239325d3d26fc10ded4bdd485d8b58bcaaad1a28dd85ed15266b5a912
|
||||
rubocop (1.86.1) sha256=44415f3f01d01a21e01132248d2fd0867572475b566ca188a0a42133a08d4531
|
||||
rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
|
||||
rubocop-capybara (2.22.1) sha256=ced88caef23efea53f46e098ff352f8fc1068c649606ca75cb74650970f51c0c
|
||||
rubocop-capybara (2.23.0) sha256=f9ea1ba3a7561ee8e88cf76fc378ce517ce5327155f305ee7b5c2500e5aee357
|
||||
rubocop-factory_bot (2.28.0) sha256=4b17fc02124444173317e131759d195b0d762844a71a29fe8139c1105d92f0cb
|
||||
rubocop-openproject (0.4.0) sha256=ce56d9e591f9be5a4d98125b10a73564b0557a5e408f97918f9630fb15ae66ae
|
||||
rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
|
||||
@@ -2261,7 +2260,7 @@ CHECKSUMS
|
||||
signet (0.21.0) sha256=d617e9fbf24928280d39dcfefba9a0372d1c38187ffffd0a9283957a10a8cd5b
|
||||
simpleidn (0.2.3) sha256=08ce96f03fa1605286be22651ba0fc9c0b2d6272c9b27a260bc88be05b0d2c29
|
||||
smart_properties (1.17.0) sha256=f9323f8122e932341756ddec8e0ac9ec6e238408a7661508be99439ca6d6384b
|
||||
spreadsheet (1.3.4) sha256=0aefd6f3dfdc8b43528109f7fbd54db54f85ce5920429413d48305906bc59253
|
||||
spreadsheet (1.3.5) sha256=cd83ea66803d9cae4ac258dfe16cd8c2b85da33eec18a6d7b48fd4a45840ab7d
|
||||
spring (4.4.2) sha256=22f61bacd8dc8595cedcdc738de46d7fc18be4d7a770986760344c924f485ce7
|
||||
spring-commands-rspec (1.0.4) sha256=6202e54fa4767452e3641461a83347645af478bf45dddcca9737b43af0dd1a2c
|
||||
spring-commands-rubocop (0.4.0) sha256=3e677a2c8a27ae8a986f04bfb69e66d5d55b017541e8be93bf0dc48a7f5690c1
|
||||
@@ -2293,7 +2292,7 @@ CHECKSUMS
|
||||
turbo_power (0.7.0) sha256=ad95d147e0fa761d0023ad9ca00528c7b7ddf6bba8ca2e23755d5b21b290d967
|
||||
turbo_tests (2.2.0)
|
||||
tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
|
||||
tzinfo-data (1.2026.1) sha256=4ea36519ae5ae2cf0fad471207a519be006daf42e3b2359ee9e9c53f113609fd
|
||||
tzinfo-data (1.2026.2) sha256=7db0d3d3d53b8d7601fc183fccc8c6d056a3004e14eb59ea995bf6aec4ae10bc
|
||||
uber (0.1.0) sha256=5beeb407ff807b5db994f82fa9ee07cfceaa561dad8af20be880bc67eba935dc
|
||||
unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
|
||||
unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
|
||||
@@ -2303,7 +2302,7 @@ CHECKSUMS
|
||||
validate_url (1.0.15) sha256=72fe164c0713d63a9970bd6700bea948babbfbdcec392f2342b6704042f57451
|
||||
vcr (6.4.0) sha256=077ac92cc16efc5904eb90492a18153b5e6ca5398046d8a249a7c96a9ea24ae6
|
||||
vernier (1.10.0) sha256=5b1dc57012e08ed23e14f4d2943540140d454aa8434c7c35e7eb97befd4969bf
|
||||
view_component (4.6.0) sha256=aabbcc68ab4af8a0135bd3f488e1a4132180cb611aa2565f86cb6e9135f4ed7e
|
||||
view_component (4.8.0) sha256=0a1b716cce87f8f6799d7aefb57911ef6eee5ef8214466a7ca22c421853f7309
|
||||
virtus (2.0.0) sha256=8841dae4eb7fcc097320ba5ea516bf1839e5d056c61ee27138aa4bddd6e3d1c2
|
||||
warden (1.2.9) sha256=46684f885d35a69dbb883deabf85a222c8e427a957804719e143005df7a1efd0
|
||||
warden-basic_auth (0.2.1) sha256=bfc752e0109c0182c3e69e930284c5e1e81e7b4a354aeb2b5914ead1391f3c6e
|
||||
@@ -2323,7 +2322,7 @@ CHECKSUMS
|
||||
yabeda-puma-plugin (0.9.0) sha256=b78673ecc7ee30bc50691ddc41b7022c1c1801843900d5101418f4a14b550bc8
|
||||
yabeda-rails (0.11.0) sha256=afa2581bd44c8f419cb3f2bbf9f6fb40f817c30476f7caf5d1c55c48d69a5b29
|
||||
yaml (0.4.0) sha256=240e69d1e6ce3584d6085978719a0faa6218ae426e034d8f9b02fb54d3471942
|
||||
yard (0.9.42) sha256=4e2be01f8623556093497731d44c801e600d7c9759ec7a35a2dd5dd83bbbba68
|
||||
yard (0.9.43) sha256=cf8733a8f0485df2a162927e9b5f182215a61f6d22de096b8f402c726a1c5821
|
||||
zeitwerk (2.7.5) sha256=d8da92128c09ea6ec62c949011b00ed4a20242b255293dd66bf41545398f73dd
|
||||
|
||||
RUBY VERSION
|
||||
|
||||
@@ -60,6 +60,8 @@ module My
|
||||
end
|
||||
|
||||
def expires_on
|
||||
return I18n.t(:label_never) if client_token.expires_in.blank?
|
||||
|
||||
helpers.format_time(client_token.updated_at + client_token.expires_in.seconds)
|
||||
end
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
++#%>
|
||||
|
||||
<%= render(Primer::BaseComponent.new(tag: :span, **@system_arguments)) do %>
|
||||
<%= leading_visual_icon %>
|
||||
<%= content %>
|
||||
<%= render(Primer::BaseComponent.new(tag: :span, display: :inline_flex, align_items: :center)) do %>
|
||||
<%= leading_visual_icon %>
|
||||
<%= content %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
module OpPrimer
|
||||
class InlineMacroComponent < Primer::Component
|
||||
renders_one :leading_visual_icon, ->(icon:, color: :muted) do
|
||||
Primer::Beta::Octicon.new(icon:, color:, mr: 2, vertical_align: :middle)
|
||||
Primer::Beta::Octicon.new(icon:, color:, size: :xsmall, mr: 2)
|
||||
end
|
||||
|
||||
def initialize(**system_arguments)
|
||||
|
||||
@@ -1,7 +1,2 @@
|
||||
@media screen
|
||||
.op-inline-macro
|
||||
display: inline
|
||||
background: var(--bgColor-muted)
|
||||
border: 1px solid transparent
|
||||
border-radius: var(--borderRadius-medium)
|
||||
padding: 4px 8px
|
||||
.op-inline-macro
|
||||
@include macro--text-style
|
||||
|
||||
@@ -55,7 +55,7 @@ class UserFilterComponent < IndividualPrincipalBaseFilterComponent
|
||||
end
|
||||
|
||||
def base_query
|
||||
Queries::Users::UserQuery
|
||||
UserQuery
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
icon: :"screen-full",
|
||||
tag: :a,
|
||||
classes: "hidden-for-small-laptops",
|
||||
href: work_package_path(work_package.id, full_screen_tab),
|
||||
href: work_package_path(work_package.display_id, full_screen_tab),
|
||||
target: "_top",
|
||||
scheme: :invisible,
|
||||
test_selector: "wp-details-tab-component--full-screen",
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
font_size: @font_size,
|
||||
color: :muted
|
||||
)
|
||||
) { "##{@work_package.id}" }
|
||||
) { @work_package.formatted_id }
|
||||
end
|
||||
|
||||
if @show_status
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
<%= helpers.angular_component_tag "opce-wp-split-create",
|
||||
inputs: { projectIdentifier: @project_identifier } %>
|
||||
+7
-8
@@ -1,3 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
#-- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) the OpenProject GmbH
|
||||
@@ -26,13 +28,10 @@
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
#++
|
||||
|
||||
class VersionSetting < ApplicationRecord
|
||||
belongs_to :project
|
||||
belongs_to :version
|
||||
class WorkPackages::SplitCreateComponent < ApplicationComponent
|
||||
def initialize(project_identifier:)
|
||||
super
|
||||
|
||||
validates_presence_of :project
|
||||
|
||||
DISPLAY_NONE = 1
|
||||
DISPLAY_LEFT = 2
|
||||
DISPLAY_RIGHT = 3
|
||||
@project_identifier = project_identifier
|
||||
end
|
||||
end
|
||||
@@ -32,7 +32,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
blankslate.with_heading(tag: :h2).with_content(t("admin.workflows.blankslate.title"))
|
||||
blankslate.with_description_content(t("admin.workflows.blankslate.description"))
|
||||
blankslate.with_primary_action(
|
||||
href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_id: @role.id),
|
||||
href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_ids: @roles.map(&:id)),
|
||||
scheme: :secondary,
|
||||
data: { controller: "async-dialog" }
|
||||
) do |button|
|
||||
|
||||
@@ -32,9 +32,9 @@ module Workflows
|
||||
class BlankslateComponent < ApplicationComponent
|
||||
include OpPrimer::ComponentHelpers
|
||||
|
||||
def initialize(role:, type:, tab:)
|
||||
def initialize(roles:, type:, tab:)
|
||||
super
|
||||
@role = role
|
||||
@roles = roles
|
||||
@type = type
|
||||
@tab = tab
|
||||
end
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
module Workflows::PageHeaders
|
||||
class EditComponent < BaseComponent
|
||||
options :tabs, :role
|
||||
options :tabs, :roles
|
||||
|
||||
def type = model
|
||||
|
||||
@@ -49,7 +49,7 @@ module Workflows::PageHeaders
|
||||
mobile_icon: :copy,
|
||||
mobile_label: t(:button_copy),
|
||||
size: :medium,
|
||||
href: new_workflow_copy_path(type, source_role_id: role&.id),
|
||||
href: new_workflow_copy_path(type, source_role_id: roles&.first&.id),
|
||||
aria: { label: helpers.t(:button_copy) },
|
||||
title: helpers.t(:button_copy)
|
||||
) do |button|
|
||||
|
||||
@@ -42,7 +42,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
Workflows::StatusFormComponent.new(
|
||||
all_statuses: @all_statuses,
|
||||
current_statuses: @current_statuses,
|
||||
role: @role,
|
||||
roles: @roles,
|
||||
type: @type,
|
||||
tab: @tab
|
||||
)
|
||||
|
||||
@@ -35,11 +35,11 @@ module Workflows
|
||||
|
||||
DIALOG_ID = "workflows-status-dialog"
|
||||
|
||||
def initialize(all_statuses:, current_statuses:, role:, type:, tab:)
|
||||
def initialize(all_statuses:, current_statuses:, roles:, type:, tab:)
|
||||
super
|
||||
@all_statuses = all_statuses
|
||||
@current_statuses = current_statuses
|
||||
@role = role
|
||||
@roles = roles
|
||||
@type = type
|
||||
@tab = tab
|
||||
end
|
||||
|
||||
@@ -29,7 +29,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
|
||||
<%=
|
||||
primer_form_with(
|
||||
url: helpers.confirm_statuses_workflow_tab_path(@type, @tab, role_id: @role.id),
|
||||
url: helpers.confirm_statuses_workflow_tab_path(@type, @tab, role_ids: @roles.map(&:id)),
|
||||
method: :post,
|
||||
id: FORM_ID,
|
||||
data: { turbo_frame: "workflow-table" }
|
||||
@@ -39,7 +39,6 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
f,
|
||||
all_statuses: @all_statuses,
|
||||
current_statuses: @current_statuses,
|
||||
role: @role,
|
||||
type: @type,
|
||||
tab: @tab,
|
||||
dialog_id:
|
||||
|
||||
@@ -32,11 +32,11 @@ module Workflows
|
||||
class StatusFormComponent < ApplicationComponent
|
||||
FORM_ID = "status-selection-form"
|
||||
|
||||
def initialize(all_statuses:, current_statuses:, role:, type:, tab:)
|
||||
def initialize(all_statuses:, current_statuses:, roles:, type:, tab:)
|
||||
super
|
||||
@all_statuses = all_statuses
|
||||
@current_statuses = current_statuses
|
||||
@role = role
|
||||
@roles = roles
|
||||
@type = type
|
||||
@tab = tab
|
||||
end
|
||||
|
||||
@@ -32,21 +32,39 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
render Primer::OpenProject::SubHeader.new do |subheader|
|
||||
if @type && @available_roles.any?
|
||||
subheader.with_filter_component do
|
||||
render(Primer::Alpha::ActionMenu.new(select_variant: :single)) do |menu|
|
||||
menu.with_show_button(scheme: :secondary) do |button|
|
||||
render(
|
||||
Primer::Alpha::SelectPanel.new(
|
||||
select_variant: :multiple,
|
||||
fetch_strategy: :local,
|
||||
title: t("admin.workflows.role_selector.title"),
|
||||
data: data_attributes
|
||||
)
|
||||
) do |panel|
|
||||
panel.with_show_button(scheme: :secondary) do |button|
|
||||
button.with_trailing_visual_icon(icon: :"triangle-down")
|
||||
@role ? t("admin.workflows.role_selector.label", role: @role.name) : t("admin.workflows.role_selector.no_role")
|
||||
if @roles.many?
|
||||
t("admin.workflows.role_selector.roles", count: @roles.size)
|
||||
elsif @roles.one?
|
||||
t("admin.workflows.role_selector.label", role: @roles.first.name)
|
||||
else
|
||||
t("admin.workflows.role_selector.no_role")
|
||||
end
|
||||
end
|
||||
@available_roles.each do |available_role|
|
||||
menu.with_item(
|
||||
panel.with_item(
|
||||
label: available_role.name,
|
||||
active: available_role == @role,
|
||||
tag: :a,
|
||||
href: helpers.edit_workflow_tab_path(@type, @tab, role_id: available_role.id),
|
||||
content_arguments: { data: { "admin--workflow-checkbox-state-confirmation-trigger": "click",
|
||||
turbo_action: "advance" } }
|
||||
active: @roles.include?(available_role),
|
||||
item_id: available_role.id
|
||||
)
|
||||
end
|
||||
panel.with_footer(show_divider: true) do
|
||||
render(
|
||||
Primer::Beta::Button.new(
|
||||
scheme: :primary,
|
||||
data: { action: "click->admin--workflow-role-select#apply" }
|
||||
)
|
||||
) { t(:button_apply) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -56,7 +74,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
scheme: :secondary,
|
||||
leading_icon: :plus,
|
||||
label: t("admin.workflows.status_button"),
|
||||
href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_id: @role&.id, status_ids: @statuses.pluck(:id).presence),
|
||||
href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_ids: @roles.map(&:id), status_ids: @statuses.pluck(:id).presence),
|
||||
data: { controller: "async-dialog" }
|
||||
) do
|
||||
t("admin.workflows.status_button")
|
||||
@@ -67,7 +85,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
<% if @statuses.any? %>
|
||||
<%= form_tag(
|
||||
workflow_tab_path(@type),
|
||||
id: "workflow_form",
|
||||
id: form_id,
|
||||
method: :patch,
|
||||
autocomplete: "off",
|
||||
data: {
|
||||
@@ -76,7 +94,9 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
}
|
||||
) do %>
|
||||
<%= hidden_field_tag "type_id", @type.id %>
|
||||
<%= hidden_field_tag "role_id", @role.id %>
|
||||
<% @roles.each do |role| %>
|
||||
<%= hidden_field_tag "role_ids[]", role.id %>
|
||||
<% end %>
|
||||
<%= hidden_field_tag "tab", @tab %>
|
||||
|
||||
<%= helpers.render_tabs helpers.workflow_tabs(@type) %>
|
||||
@@ -94,7 +114,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
Primer::OpenProject::FeedbackDialog.new(
|
||||
title: t("admin.workflows.leave_confirmation.title"),
|
||||
data: {
|
||||
"admin--workflow-checkbox-state-target": "confirmationDialog",
|
||||
"admin--workflow-checkbox-state-target": "confirmationDialog"
|
||||
}
|
||||
)
|
||||
) do |dialog|
|
||||
@@ -118,6 +138,6 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
%>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= render Workflows::BlankslateComponent.new(role: @role, type: @type, tab: @tab) %>
|
||||
<%= render Workflows::BlankslateComponent.new(roles: @roles, type: @type, tab: @tab) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -33,14 +33,29 @@ module Workflows
|
||||
include OpTurbo::Streamable
|
||||
include OpPrimer::ComponentHelpers
|
||||
|
||||
def initialize(tab:, role:, type:, available_roles:, statuses:, has_status_changes:)
|
||||
FORM_ID = "workflow_form"
|
||||
|
||||
def initialize(tab:, roles:, type:, available_roles:, statuses:, has_status_changes:)
|
||||
super
|
||||
@tab = tab
|
||||
@role = role
|
||||
@roles = roles
|
||||
@type = type
|
||||
@available_roles = available_roles
|
||||
@statuses = statuses
|
||||
@has_status_changes = has_status_changes
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def form_id = FORM_ID
|
||||
|
||||
def data_attributes
|
||||
{
|
||||
controller: "admin--workflow-role-select",
|
||||
"admin--workflow-role-select-base-url-value": helpers.edit_workflow_tab_path(@type, @tab),
|
||||
"admin--workflow-role-select-current-role-ids-value": @roles.map(&:id),
|
||||
"admin--workflow-role-select-admin--workflow-checkbox-state-outlet": "##{form_id}"
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -46,7 +46,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
# The reason this is done here is because the submit is not a DELETE, and GET form submissions
|
||||
# strip url params
|
||||
dialog.with_additional_details do
|
||||
concat(hidden_field_tag(:role_id, @role.id))
|
||||
@roles.each { |role| concat(hidden_field_tag("role_ids[]", role.id)) }
|
||||
@status_ids.each { |id| concat(hidden_field_tag("status_ids[]", id)) }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -35,9 +35,9 @@ module Workflows
|
||||
|
||||
DIALOG_ID = "workflows-status-removal-dialog"
|
||||
|
||||
def initialize(role:, type:, tab:, status_ids:, removed_count:)
|
||||
def initialize(roles:, type:, tab:, status_ids:, removed_count:)
|
||||
super
|
||||
@role = role
|
||||
@roles = roles
|
||||
@type = type
|
||||
@tab = tab
|
||||
@status_ids = Array(status_ids).flatten.map(&:to_i)
|
||||
|
||||
@@ -35,6 +35,7 @@ module CustomActions
|
||||
|
||||
validates :work_package_id, presence: true
|
||||
validate :work_package_visible
|
||||
validate :custom_action_conditions_fulfilled
|
||||
|
||||
private
|
||||
|
||||
@@ -45,5 +46,17 @@ module CustomActions
|
||||
errors.add(:work_package_id, :does_not_exist)
|
||||
end
|
||||
end
|
||||
|
||||
def custom_action_conditions_fulfilled
|
||||
return unless model.work_package_id
|
||||
return unless options[:custom_action]
|
||||
|
||||
work_package = WorkPackage.visible(user).find_by(id: model.work_package_id)
|
||||
return unless work_package
|
||||
|
||||
unless options[:custom_action].conditions_fulfilled?(work_package, user)
|
||||
errors.add(:base, :error_unauthorized)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -36,7 +36,10 @@ module OAuthClients
|
||||
validates :client_id, presence: true, length: { maximum: 255 }
|
||||
|
||||
attribute :client_secret, writable: true
|
||||
validates :client_secret, presence: true, length: { maximum: 255 }
|
||||
validates :client_secret, presence: true, if: :client_secret_required?
|
||||
validates :client_secret, length: { maximum: 255 }
|
||||
|
||||
def client_secret_required? = true
|
||||
|
||||
attribute :integration_type, writable: true
|
||||
validates :integration_type, presence: true
|
||||
|
||||
@@ -102,13 +102,11 @@ module Users
|
||||
errors.add(:identity_url, :error_readonly) if model.user_auth_provider_links.any?(&:changed?)
|
||||
end
|
||||
|
||||
# rubocop:disable Rails/DynamicFindBy
|
||||
def existing_auth_source
|
||||
if ldap_auth_source_id && LdapAuthSource.find_by_unique(ldap_auth_source_id).nil?
|
||||
errors.add :auth_source, :error_not_found
|
||||
end
|
||||
end
|
||||
# rubocop:enable Rails/DynamicFindBy
|
||||
|
||||
def can_create_or_manage_users?
|
||||
user.allowed_globally?(:manage_user) || user.allowed_globally?(:create_user)
|
||||
|
||||
@@ -52,7 +52,7 @@ module My
|
||||
|
||||
token = cookies[OpenProject::Configuration["autologin_cookie_name"]]
|
||||
if token
|
||||
@current_token = @autologin_tokens.find_by_plaintext_value(token) # rubocop:disable Rails/DynamicFindBy
|
||||
@current_token = @autologin_tokens.find_by_plaintext_value(token)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -77,19 +77,20 @@ class OAuthClientsController < ApplicationController
|
||||
storage_id = params.fetch(:storage_id)
|
||||
oauth_client = OAuthClient.find_by(client_id:, integration_id: storage_id)
|
||||
|
||||
handle_absent_oauth_client unless oauth_client
|
||||
return handle_absent_oauth_client unless oauth_client
|
||||
|
||||
storage = oauth_client.integration
|
||||
# check if the origin is the same
|
||||
integration = oauth_client.integration
|
||||
destination_url = destination_url(params.fetch(:destination_url, ""))
|
||||
auth_state = ::Storages::Adapters::Authentication.authorization_state(storage:, user: User.current)
|
||||
configuration = integration.oauth_configuration
|
||||
connection = ::OAuthClients::ConnectionManager.new(user: User.current, configuration:)
|
||||
.get_access_token
|
||||
|
||||
if auth_state == :connected
|
||||
if connection.success?
|
||||
redirect_to(destination_url)
|
||||
else
|
||||
nonce = SecureRandom.uuid
|
||||
cookies["oauth_state_#{nonce}"] = { value: { href: destination_url, storageId: storage_id }.to_json, expires: 1.hour }
|
||||
redirect_to(storage.oauth_configuration.authorization_uri(state: nonce), allow_other_host: true)
|
||||
redirect_to(configuration.authorization_uri(state: nonce), allow_other_host: true)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -38,27 +38,37 @@ class Workflows::TabsController < ApplicationController
|
||||
before_action :set_type
|
||||
before_action :set_tab
|
||||
before_action :set_eligible_roles
|
||||
before_action :set_role
|
||||
before_action :set_roles
|
||||
|
||||
def edit
|
||||
unless turbo_frame_request?
|
||||
redirect_to edit_workflow_path(@type, role_id: params[:role_id], tab: @tab)
|
||||
redirect_to edit_workflow_path(@type, role_ids: params[:role_ids], tab: @tab)
|
||||
return
|
||||
end
|
||||
|
||||
statuses_for_form
|
||||
|
||||
if @type && @role && @statuses.any?
|
||||
if @type && @roles.any? && @statuses.any?
|
||||
workflows_for_form
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
call = Workflows::BulkUpdateService
|
||||
.new(role: @role, type: @type, tab: @tab)
|
||||
.call(permitted_status_params)
|
||||
def update # rubocop:disable Metrics/AbcSize
|
||||
success = false
|
||||
Workflow.transaction do
|
||||
success = true
|
||||
base_params = permitted_status_params
|
||||
indeterminate = permitted_indeterminate_params
|
||||
@roles.each do |role|
|
||||
role_params = indeterminate.empty? ? base_params : role_specific_params(base_params, indeterminate, role)
|
||||
result = Workflows::BulkUpdateService.new(role:, type: @type, tab: @tab)
|
||||
.call(role_params)
|
||||
success = false unless result.success?
|
||||
end
|
||||
raise ActiveRecord::Rollback unless success
|
||||
end
|
||||
|
||||
if call.success?
|
||||
if success
|
||||
render_flash_message_via_turbo_stream(
|
||||
message: I18n.t(:notice_successful_update),
|
||||
scheme: :success
|
||||
@@ -69,7 +79,7 @@ class Workflows::TabsController < ApplicationController
|
||||
update_via_turbo_stream(
|
||||
component: Workflows::StatusMatrixFormComponent.new(
|
||||
tab: @tab,
|
||||
role: @role,
|
||||
roles: @roles,
|
||||
type: @type,
|
||||
available_roles: @eligible_roles,
|
||||
statuses:,
|
||||
@@ -92,8 +102,8 @@ class Workflows::TabsController < ApplicationController
|
||||
all_statuses = Status.order(:position)
|
||||
current_statuses = if params[:status_ids].present?
|
||||
Status.where(id: params[:status_ids].map(&:to_i)).order(:position)
|
||||
elsif @type && @role
|
||||
statuses_for_role_and_type
|
||||
elsif @type && @roles.any?
|
||||
statuses_for_roles_and_type
|
||||
else
|
||||
Status.none
|
||||
end
|
||||
@@ -101,7 +111,7 @@ class Workflows::TabsController < ApplicationController
|
||||
respond_with_dialog Workflows::StatusDialogComponent.new(
|
||||
all_statuses:,
|
||||
current_statuses:,
|
||||
role: @role,
|
||||
roles: @roles,
|
||||
type: @type,
|
||||
tab: @tab
|
||||
)
|
||||
@@ -114,7 +124,7 @@ class Workflows::TabsController < ApplicationController
|
||||
|
||||
if removed_count > 0
|
||||
respond_with_dialog Workflows::StatusRemovalDangerDialogComponent.new(
|
||||
role: @role,
|
||||
roles: @roles,
|
||||
type: @type,
|
||||
tab: @tab,
|
||||
status_ids: current_status_ids,
|
||||
@@ -125,7 +135,7 @@ class Workflows::TabsController < ApplicationController
|
||||
update_via_turbo_stream(
|
||||
component: Workflows::StatusMatrixFormComponent.new(
|
||||
tab: @tab,
|
||||
role: @role,
|
||||
roles: @roles,
|
||||
type: @type,
|
||||
available_roles: @eligible_roles,
|
||||
statuses:,
|
||||
@@ -150,8 +160,9 @@ class Workflows::TabsController < ApplicationController
|
||||
@eligible_roles = Workflow.eligible_roles.order(:builtin, :position)
|
||||
end
|
||||
|
||||
def set_role
|
||||
@role = @eligible_roles.find(params[:role_id])
|
||||
def set_roles
|
||||
@roles = @eligible_roles.where(id: params[:role_ids])
|
||||
@roles = [@eligible_roles.first] if @roles.empty?
|
||||
end
|
||||
|
||||
def statuses_for_form
|
||||
@@ -159,8 +170,8 @@ class Workflows::TabsController < ApplicationController
|
||||
@has_status_changes = false
|
||||
@statuses = if @type && params[:status_ids].present?
|
||||
statuses_from_params
|
||||
elsif @type && @role
|
||||
statuses_for_role_and_type
|
||||
elsif @type && @roles.any?
|
||||
statuses_for_roles_and_type
|
||||
elsif @type
|
||||
@type.statuses
|
||||
else
|
||||
@@ -170,18 +181,19 @@ class Workflows::TabsController < ApplicationController
|
||||
|
||||
def statuses_from_params
|
||||
status_ids = params[:status_ids].map(&:to_i)
|
||||
saved_ids = statuses_for_role_and_type.pluck(:id)
|
||||
saved_ids = statuses_for_roles_and_type.pluck(:id)
|
||||
@added_status_ids = status_ids - saved_ids
|
||||
@has_status_changes = @added_status_ids.any? || (saved_ids - status_ids).any?
|
||||
Status.where(id: status_ids).order(:position)
|
||||
end
|
||||
|
||||
def statuses_for_role_and_type
|
||||
@type.statuses(role: @role, tab: @tab)
|
||||
def statuses_for_roles_and_type
|
||||
status_ids = @roles.map { |role| @type.statuses(role:, tab: @tab).pluck(:id) }.flatten.uniq
|
||||
Status.where(id: status_ids)
|
||||
end
|
||||
|
||||
def workflows_for_form
|
||||
workflows = Workflow.where(role_id: @role.id, type_id: @type.id)
|
||||
workflows = Workflow.where(role_id: @roles.map(&:id), type_id: @type.id)
|
||||
@workflows = {}
|
||||
@workflows["always"] = workflows.select { |w| !w.author && !w.assignee }
|
||||
@workflows["author"] = workflows.select(&:author)
|
||||
@@ -189,10 +201,40 @@ class Workflows::TabsController < ApplicationController
|
||||
end
|
||||
|
||||
def permitted_status_params
|
||||
return {} if params["status"].blank?
|
||||
status_params("status")
|
||||
end
|
||||
|
||||
params["status"]
|
||||
def permitted_indeterminate_params
|
||||
status_params("indeterminate_status")
|
||||
end
|
||||
|
||||
def status_params(key)
|
||||
return {} if params[key].blank?
|
||||
|
||||
params[key]
|
||||
.to_unsafe_h
|
||||
.select { |key, value| /\A\d+\z/.match?(key) && value.keys.all? { /\A\d+\z/.match?(it) } }
|
||||
.select { |k, value| /\A\d+\z/.match?(k) && value.keys.all? { /\A\d+\z/.match?(it) } }
|
||||
end
|
||||
|
||||
def role_specific_params(base_params, indeterminate, role)
|
||||
params = base_params.deep_dup
|
||||
indeterminate.each do |old_id, new_ids|
|
||||
new_ids.each_key do |new_id|
|
||||
# Restore from DB so that it isn't overwritten by indeterminate state (unchecked)
|
||||
had_transition = Workflow.exists?(
|
||||
role_id: role.id,
|
||||
type_id: @type.id,
|
||||
old_status_id: old_id.to_i,
|
||||
new_status_id: new_id.to_i,
|
||||
author: @tab == "author",
|
||||
assignee: @tab == "assignee"
|
||||
)
|
||||
if had_transition
|
||||
params[old_id] ||= {}
|
||||
params[old_id][new_id] = "1"
|
||||
end
|
||||
end
|
||||
end
|
||||
params
|
||||
end
|
||||
end
|
||||
|
||||
@@ -38,7 +38,7 @@ class WorkflowsController < ApplicationController
|
||||
before_action :find_types, only: %i[index]
|
||||
|
||||
before_action :find_type, only: %i[edit]
|
||||
before_action :find_optional_role, only: %i[edit]
|
||||
before_action :find_optional_roles, only: %i[edit]
|
||||
|
||||
def index; end
|
||||
|
||||
@@ -56,16 +56,14 @@ class WorkflowsController < ApplicationController
|
||||
@types = ::Type.order(:position)
|
||||
end
|
||||
|
||||
def find_role
|
||||
@role = eligible_roles.find(params[:role_id])
|
||||
end
|
||||
|
||||
def find_type
|
||||
@type = ::Type.find(params[:type_id])
|
||||
end
|
||||
|
||||
def find_optional_role
|
||||
@role = eligible_roles.find_by(id: params[:role_id]) || eligible_roles.order(:builtin, :position).first
|
||||
def find_optional_roles
|
||||
ordered = eligible_roles.order(:builtin, :position)
|
||||
@roles = ordered.where(id: params[:role_ids])
|
||||
@roles = [ordered.first] if @roles.empty?
|
||||
end
|
||||
|
||||
def eligible_roles
|
||||
|
||||
@@ -51,19 +51,42 @@ module Settings
|
||||
f.select_list(
|
||||
name: :new_project_user_role_id,
|
||||
label: I18n.t(:setting_new_project_user_role_id),
|
||||
caption: I18n.t(:setting_new_project_user_role_id_caption),
|
||||
input_width: :medium,
|
||||
include_blank: I18n.t(:actionview_instancetag_blank_option)
|
||||
include_blank: false
|
||||
) do |select|
|
||||
ProjectRole.givable.each do |role|
|
||||
select.option(
|
||||
value: role.id.to_s,
|
||||
label: role.name,
|
||||
selected: Setting.new_project_user_role_id == role.id
|
||||
)
|
||||
end
|
||||
build_new_project_user_role_options(select)
|
||||
end
|
||||
|
||||
f.submit
|
||||
end
|
||||
|
||||
# Adds the role options to the new_project_user_role_id select. Roles that pass the
|
||||
# `assignable_to_project_creator` filter are listed first; the currently configured role is
|
||||
# always included even when it has lost required permissions (with a label suffix), so the
|
||||
# admin can see and change the current selection.
|
||||
def build_new_project_user_role_options(select)
|
||||
assignable = ProjectRole.assignable_to_project_creator.to_a
|
||||
assignable.each { |role| add_assignable_role_option(select, role) }
|
||||
|
||||
configured = ProjectRole.givable.find_by(id: Setting.new_project_user_role_id)
|
||||
add_non_qualifying_role_option(select, configured) if configured && assignable.exclude?(configured)
|
||||
end
|
||||
|
||||
def add_assignable_role_option(select, role)
|
||||
select.option(
|
||||
value: role.id.to_s,
|
||||
label: role.name,
|
||||
selected: Setting.new_project_user_role_id == role.id
|
||||
)
|
||||
end
|
||||
|
||||
def add_non_qualifying_role_option(select, role)
|
||||
select.option(
|
||||
value: role.id.to_s,
|
||||
label: I18n.t(:label_role_missing_permissions, role: role.name),
|
||||
selected: true
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -30,18 +30,16 @@
|
||||
|
||||
module Workflows
|
||||
class StatusSelectForm < ApplicationForm
|
||||
def initialize(all_statuses:, current_statuses:, role:, type:, tab:, dialog_id:)
|
||||
def initialize(all_statuses:, current_statuses:, type:, tab:, dialog_id:)
|
||||
super()
|
||||
@all_statuses = all_statuses
|
||||
@current_statuses = current_statuses
|
||||
@role = role
|
||||
@type = type
|
||||
@tab = tab
|
||||
@dialog_id = dialog_id
|
||||
end
|
||||
|
||||
form do |f|
|
||||
f.hidden(name: :role_id, value: @role.id)
|
||||
f.hidden(name: :type_id, value: @type.id)
|
||||
f.hidden(name: :tab, value: @tab || "always")
|
||||
@current_statuses.each { |status| f.hidden(name: "original_status_ids[]", value: status.id) }
|
||||
|
||||
@@ -33,6 +33,14 @@ module WorkPackages::SplitViewHelper
|
||||
params[:work_package_split_view].present?
|
||||
end
|
||||
|
||||
def render_work_package_split_create?
|
||||
params[:work_package_split_create].present?
|
||||
end
|
||||
|
||||
def split_create_instance
|
||||
WorkPackages::SplitCreateComponent.new(project_identifier: params[:project_id])
|
||||
end
|
||||
|
||||
def split_view_instance
|
||||
WorkPackages::SplitViewComponent.new(id: params[:work_package_id],
|
||||
tab: params[:tab],
|
||||
|
||||
@@ -37,7 +37,7 @@ module WorkflowHelper
|
||||
].map do |tab|
|
||||
tab.merge(
|
||||
partial: "workflows/form",
|
||||
path: edit_workflow_tab_path(type, tab[:name], params.permit(:role_id)),
|
||||
path: edit_workflow_tab_path(type, tab[:name], params.permit(role_ids: [])),
|
||||
data: { "admin--workflow-checkbox-state-confirmation-trigger": "click",
|
||||
turbo_frame: "workflow-table",
|
||||
turbo_action: "advance" }
|
||||
|
||||
@@ -36,7 +36,7 @@ class OAuthClientToken < ApplicationRecord
|
||||
validates :user, uniqueness: { scope: :oauth_client }
|
||||
|
||||
validates :access_token, presence: true
|
||||
validates :refresh_token, presence: true
|
||||
validates :refresh_token, presence: true, if: -> { expires_in.present? }
|
||||
|
||||
scope :for_user_and_client, ->(user, client) { where(user:, oauth_client: client) }
|
||||
end
|
||||
|
||||
+6
-14
@@ -28,20 +28,12 @@
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
#++
|
||||
|
||||
module OpenProject::Backlogs::Patches::API::V3::Utilities::ResourceLinkGeneratorPatch
|
||||
extend ActiveSupport::Concern
|
||||
class OrderedPersistedQueryEntity < ApplicationRecord
|
||||
belongs_to :persisted_query, optional: false
|
||||
belongs_to :entity, polymorphic: true, optional: false
|
||||
|
||||
included do
|
||||
singleton_class.prepend(ClassMethods)
|
||||
end
|
||||
validates :position, presence: true
|
||||
validates :entity_id, uniqueness: { scope: %i[persisted_query_id entity_type] }
|
||||
|
||||
module ClassMethods
|
||||
private
|
||||
|
||||
def determine_path_method(record)
|
||||
return :sprint if record.is_a?(Agile::Sprint)
|
||||
|
||||
super
|
||||
end
|
||||
end
|
||||
default_scope { order(position: :asc) }
|
||||
end
|
||||
@@ -0,0 +1,79 @@
|
||||
# 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 PersistedQuery < ApplicationRecord
|
||||
include Queries::BaseQuery
|
||||
include Queries::Serialization::Hash
|
||||
include ::Scopes::Scoped
|
||||
|
||||
belongs_to :project, optional: true
|
||||
belongs_to :principal, optional: true, inverse_of: :persisted_queries
|
||||
|
||||
has_many :views, class_name: "PersistedView",
|
||||
as: :query,
|
||||
dependent: :restrict_with_error,
|
||||
inverse_of: :query
|
||||
|
||||
has_many :ordered_entities, -> { order(position: :asc) },
|
||||
class_name: "OrderedPersistedQueryEntity",
|
||||
dependent: :destroy,
|
||||
inverse_of: :persisted_query
|
||||
|
||||
validates :name, length: { maximum: 255, allow_nil: true }
|
||||
|
||||
def self.inherited(subclass)
|
||||
super
|
||||
subclass.serialize :filters, coder: Queries::Serialization::Filters.new(subclass)
|
||||
subclass.serialize :orders, coder: Queries::Serialization::Orders.new(subclass)
|
||||
subclass.serialize :selects, coder: Queries::Serialization::Selects.new(subclass)
|
||||
end
|
||||
|
||||
def self.register_query(&)
|
||||
Queries::Register.register(self, &)
|
||||
end
|
||||
|
||||
def user
|
||||
principal if principal.is_a?(User)
|
||||
end
|
||||
|
||||
def user=(user)
|
||||
self.principal = user
|
||||
end
|
||||
|
||||
# Returns the query results, bypassing filters and orders when the query has
|
||||
# manually-added entities — in that case they are returned in the order
|
||||
# stored on the join records.
|
||||
def results
|
||||
return super if ordered_entities.empty?
|
||||
|
||||
entity_ids = ordered_entities.pluck(:entity_id)
|
||||
self.class.model.where(id: entity_ids).in_order_of(:id, entity_ids)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,75 @@
|
||||
# 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 PersistedView < ApplicationRecord
|
||||
belongs_to :project, optional: true
|
||||
belongs_to :principal, optional: true, inverse_of: :persisted_views
|
||||
belongs_to :query, polymorphic: true, optional: true
|
||||
|
||||
belongs_to :parent, class_name: "PersistedView", optional: true
|
||||
has_many :children, class_name: "PersistedView", foreign_key: "parent_id", dependent: :destroy, inverse_of: :parent
|
||||
|
||||
acts_as_favoritable
|
||||
|
||||
enum :category, {
|
||||
work_package: "work_package",
|
||||
project: "project",
|
||||
resource_management: "resource_management"
|
||||
}, validate: { allow_nil: true }
|
||||
|
||||
validates :name, presence: true, length: { maximum: 255 }
|
||||
|
||||
scope :public_views, -> { where(public: true) }
|
||||
scope :private_views, ->(principal: User.current) { where(public: false, principal:) }
|
||||
|
||||
scope :visible, (lambda do |principal: User.current|
|
||||
public_views.or(private_views(principal:))
|
||||
end)
|
||||
|
||||
after_destroy :destroy_query_if_orphaned
|
||||
|
||||
# Returns the query of this view or, if not set, the query of the parent view.
|
||||
def effective_query
|
||||
query || parent&.effective_query
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# When this view is destroyed, also destroy its query unless another public
|
||||
# view still references it. Views belonging to the same owner that are also
|
||||
# going away (e.g. during user deletion) do not count as "still referencing"
|
||||
# since only public views keep a query alive.
|
||||
def destroy_query_if_orphaned
|
||||
return if query.nil?
|
||||
return if PersistedView.exists?(query:, public: true)
|
||||
|
||||
query.destroy!
|
||||
end
|
||||
end
|
||||
@@ -77,6 +77,9 @@ class Principal < ApplicationRecord
|
||||
inverse_of: :principal
|
||||
has_many :auth_providers, through: :user_auth_provider_links
|
||||
|
||||
has_many :persisted_views, inverse_of: :principal, dependent: :nullify
|
||||
has_many :persisted_queries, inverse_of: :principal, dependent: :nullify
|
||||
|
||||
has_paper_trail
|
||||
|
||||
scopes :like,
|
||||
|
||||
@@ -41,7 +41,7 @@ module Principals::Scopes
|
||||
def ordered_by_name(desc: false)
|
||||
direction = desc ? "DESC" : "ASC"
|
||||
|
||||
order_case = Arel.sql <<~SQL
|
||||
order_case = Arel.sql(<<~SQL.squish)
|
||||
CASE
|
||||
WHEN users.type = 'User' THEN LOWER(#{user_concat_sql})
|
||||
WHEN users.type != 'User' THEN LOWER(users.lastname)
|
||||
|
||||
@@ -29,6 +29,20 @@
|
||||
# ++
|
||||
|
||||
class ProjectRole < Role
|
||||
# Permissions a role must grant in order to be assignable as the default
|
||||
# role for a non-admin user who creates a project. Without these, the
|
||||
# creator cannot complete project setup (filling out the PIR, adding
|
||||
# members, etc.).
|
||||
PERMISSIONS_FOR_PROJECT_CREATOR = %i[
|
||||
view_project
|
||||
|
||||
view_project_attributes
|
||||
edit_project_attributes
|
||||
|
||||
view_members
|
||||
manage_members
|
||||
].freeze
|
||||
|
||||
has_many :custom_fields_roles,
|
||||
foreign_key: "role_id",
|
||||
dependent: :restrict_with_error,
|
||||
@@ -39,6 +53,20 @@ class ProjectRole < Role
|
||||
.where(type: "ProjectRole")
|
||||
end
|
||||
|
||||
# Roles eligible to be granted to a non-admin user upon project creation.
|
||||
# Restricted to givable roles that include all PERMISSIONS_FOR_PROJECT_CREATOR.
|
||||
def self.assignable_to_project_creator
|
||||
permissions = PERMISSIONS_FOR_PROJECT_CREATOR.map(&:to_s)
|
||||
|
||||
role_ids = RolePermission
|
||||
.where(permission: permissions)
|
||||
.group(:role_id)
|
||||
.having("COUNT(DISTINCT permission) = ?", permissions.size)
|
||||
.select(:role_id)
|
||||
|
||||
givable.where(id: role_ids)
|
||||
end
|
||||
|
||||
# Return the builtin 'non member' role. If the role doesn't exist,
|
||||
# it will be created on the fly.
|
||||
def self.non_member
|
||||
@@ -66,9 +94,12 @@ class ProjectRole < Role
|
||||
end
|
||||
|
||||
def self.in_new_project
|
||||
givable
|
||||
assignable_to_project_creator
|
||||
.except(:order)
|
||||
.order(Arel.sql("COALESCE(#{Setting.new_project_user_role_id.to_i} = id, false) DESC, position"))
|
||||
.reorder(Arel.sql(
|
||||
"COALESCE(#{Setting.new_project_user_role_id.to_i} = #{quoted_table_name}.id, false) DESC, " \
|
||||
"#{quoted_table_name}.position"
|
||||
))
|
||||
.first
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,18 +31,20 @@
|
||||
module Projects::Identifier
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
IDENTIFIER_MAX_LENGTH = 100
|
||||
CLASSIC_IDENTIFIER_MAX_LENGTH = 100
|
||||
SEMANTIC_IDENTIFIER_MAX_LENGTH = 10
|
||||
RESERVED_IDENTIFIERS = %w[new menu queries filters identifier_update_dialog identifier_suggestion].freeze
|
||||
# Classic identifier format: lowercase letters, digits, hyphens, underscores — but not all-numeric.
|
||||
CLASSIC_IDENTIFIER_FORMAT = /\A(?!\d+\z)[a-z0-9\-_]+\z/
|
||||
# Semantic identifier format is covered by validate_identifier_semantic_format via multiple validators
|
||||
|
||||
RESERVED_IDENTIFIERS = %w[new menu queries filters identifier_update_dialog identifier_suggestion].freeze
|
||||
|
||||
included do
|
||||
extend FriendlyId
|
||||
|
||||
normalizes :identifier, with: OpenProject::RemoveInvisibleCharacters
|
||||
|
||||
### ID generators
|
||||
# Generators
|
||||
# There are two supported formats:
|
||||
# 1. slug identifiers (e.g. "project_one"), generated by acts_as_url
|
||||
# * work package ID = global ID (e.g. "#123")
|
||||
@@ -52,7 +54,7 @@ module Projects::Identifier
|
||||
url_attribute: :identifier,
|
||||
sync_url: false, # Don't update identifier when name changes
|
||||
only_when_blank: true, # Only generate when identifier not set
|
||||
limit: IDENTIFIER_MAX_LENGTH,
|
||||
limit: CLASSIC_IDENTIFIER_MAX_LENGTH,
|
||||
blacklist: RESERVED_IDENTIFIERS,
|
||||
adapter: OpenProject::ActsAsUrl::Adapter::OpActiveRecord, # use a custom adapter able to handle edge cases
|
||||
skip_if: -> { Setting::WorkPackageIdentifier.semantic? }
|
||||
@@ -62,28 +64,13 @@ module Projects::Identifier
|
||||
on: :create,
|
||||
if: -> { Setting::WorkPackageIdentifier.semantic? && identifier.blank? }
|
||||
|
||||
### ID validators
|
||||
# Shared validators for all identifier formats
|
||||
# Validators
|
||||
validates :identifier,
|
||||
presence: true,
|
||||
uniqueness: { case_sensitive: false },
|
||||
length: { maximum: IDENTIFIER_MAX_LENGTH },
|
||||
if: ->(p) { p.persisted? || p.identifier.present? }
|
||||
|
||||
# Validators for the numeric (legacy) identifier format (e.g. "my-project", "project_one")
|
||||
validate :identifier_numeric_format,
|
||||
if: ->(p) { p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.classic? }
|
||||
|
||||
# Validators for the semantic (alphanumeric) identifier format (e.g. "PROJ1")
|
||||
validate :identifier_alphanumeric_format,
|
||||
if: ->(p) { p.identifier_changed? && p.identifier.present? && Setting::WorkPackageIdentifier.semantic? }
|
||||
|
||||
validate :identifier_not_reserved, if: -> { identifier.present? }
|
||||
|
||||
# Complements the uniqueness validation above: once an identifier has been used by a
|
||||
# project, it remains reserved for that project even after the project moves to a new
|
||||
# identifier. This prevents another project from claiming a "retired" identifier.
|
||||
validate :identifier_not_historically_reserved, if: ->(p) { p.identifier_changed? }
|
||||
validate :validate_identifier, if: ->(p) { p.identifier_changed? && p.identifier.present? }
|
||||
|
||||
friendly_id :identifier, use: %i[finders history], slug_column: :identifier
|
||||
|
||||
@@ -96,23 +83,61 @@ module Projects::Identifier
|
||||
def unset_slug_if_invalid; end
|
||||
end
|
||||
|
||||
# Domain-named scopes for the FriendlyId::Slug relation returned by Project.identifier_slugs.
|
||||
# Lets callers compose against verbs like .historically_reserved / .for_identifier / .upcased_values
|
||||
# instead of raw SQL fragments — keeping FriendlyId::Slug column knowledge in one place.
|
||||
module IdentifierSlugScopes
|
||||
# Slugs that are no longer used as any active project's identifier, but remain reserved
|
||||
# because FriendlyId still owns them — so they cannot be reused by another project.
|
||||
def historically_reserved
|
||||
where("LOWER(slug) NOT IN (SELECT LOWER(identifier) FROM projects)")
|
||||
end
|
||||
|
||||
# Slugs whose lowercase form equals the lowercased input.
|
||||
def for_identifier(value)
|
||||
where("LOWER(slug) = ?", value.downcase)
|
||||
end
|
||||
|
||||
# Excludes the given project's own slug history. No-op when project is nil.
|
||||
def excluding_project(project)
|
||||
project ? where.not(sluggable_id: project) : self
|
||||
end
|
||||
|
||||
def upcased_values = pluck(Arel.sql("UPPER(slug)"))
|
||||
def downcased_values = pluck(Arel.sql("LOWER(slug)"))
|
||||
# Verbatim values, no case folding. Named `raw_values` to avoid colliding
|
||||
# with `ActiveRecord::Relation#values` (an internal Rails method).
|
||||
def raw_values = pluck(:slug)
|
||||
end
|
||||
|
||||
class_methods do
|
||||
def classic_identifier_format?(str)
|
||||
str.match?(CLASSIC_IDENTIFIER_FORMAT)
|
||||
end
|
||||
|
||||
def suggest_identifier(name)
|
||||
if Setting::WorkPackageIdentifier.semantic?
|
||||
# FriendlyId's :history module records a row on every save, so this relation contains
|
||||
# both currently-used identifiers and historically-reserved ones. Compose with
|
||||
# `.historically_reserved` to filter to the latter. The name aligns with FriendlyId's
|
||||
# `project.slugs` association for vocabulary consistency.
|
||||
def identifier_slugs
|
||||
FriendlyId::Slug.where(sluggable_type: name).extending(IdentifierSlugScopes)
|
||||
end
|
||||
|
||||
def suggest_identifier(name, mode: Setting[:work_packages_identifier])
|
||||
if mode == Setting::WorkPackageIdentifier::SEMANTIC
|
||||
exclude = ProjectIdentifiers::IdentifierAutofix::ProblematicIdentifiers.reserved_identifiers
|
||||
ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator
|
||||
.suggest_identifier(name, exclude:)
|
||||
else # This should closely enough emulate Project models' usage of acts_as_url
|
||||
name.to_url.first(IDENTIFIER_MAX_LENGTH).presence ||
|
||||
"project-#{SecureRandom.alphanumeric(5).downcase}"
|
||||
else
|
||||
ProjectIdentifiers::ClassicIdentifierSuggestionGenerator.new.suggest_identifier(name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def suggest_identifier(mode: Setting[:work_packages_identifier])
|
||||
self.class.suggest_identifier(name, mode:)
|
||||
end
|
||||
|
||||
# Override the `validation_context` getter to include the `default_validation_context` when the
|
||||
# context is `:saving_custom_fields`. This is required, because the `acts_as_url` plugin from
|
||||
# `stringex` defines a callback on the `:create` context for initialising the `identifier` field.
|
||||
@@ -133,15 +158,26 @@ module Projects::Identifier
|
||||
|
||||
private
|
||||
|
||||
# Contains only a-z, 0-9, dashes and underscores but cannot consist of numbers only
|
||||
# as that would clash with the numeric id.
|
||||
def identifier_numeric_format
|
||||
unless identifier.match?(CLASSIC_IDENTIFIER_FORMAT)
|
||||
errors.add(:identifier, :invalid)
|
||||
def validate_identifier
|
||||
validate_identifier_not_reserved_keyword
|
||||
|
||||
if Setting::WorkPackageIdentifier.semantic? || Array(validation_context).include?(:semantic_conversion)
|
||||
validate_identifier_semantic_format
|
||||
else
|
||||
validate_identifier_classic_format
|
||||
end
|
||||
|
||||
validate_identifier_not_historically_reserved
|
||||
end
|
||||
|
||||
def validate_identifier_classic_format
|
||||
errors.add(:identifier, :invalid) unless self.class.classic_identifier_format?(identifier)
|
||||
if identifier.length > CLASSIC_IDENTIFIER_MAX_LENGTH
|
||||
errors.add(:identifier, :too_long, count: CLASSIC_IDENTIFIER_MAX_LENGTH)
|
||||
end
|
||||
end
|
||||
|
||||
def identifier_alphanumeric_format
|
||||
def validate_identifier_semantic_format
|
||||
errors.add(:identifier, :must_start_with_letter) unless identifier.match?(/\A[A-Z]/)
|
||||
errors.add(:identifier, :no_special_characters) unless identifier.match?(/\A[A-Z0-9_]*\z/)
|
||||
if identifier.length > SEMANTIC_IDENTIFIER_MAX_LENGTH
|
||||
@@ -149,8 +185,8 @@ module Projects::Identifier
|
||||
end
|
||||
end
|
||||
|
||||
def identifier_not_reserved
|
||||
if RESERVED_IDENTIFIERS.include?(identifier&.downcase)
|
||||
def validate_identifier_not_reserved_keyword
|
||||
if RESERVED_IDENTIFIERS.include?(identifier.downcase)
|
||||
errors.add(:identifier, :exclusion)
|
||||
end
|
||||
end
|
||||
@@ -158,17 +194,18 @@ module Projects::Identifier
|
||||
# Checks friendly_id_slugs for any project that previously used this identifier and
|
||||
# has since changed it. It allows a project to switch back to an identifier it has
|
||||
# used before. Uses LOWER() because slugs may be stored in a different case than the
|
||||
# incoming identifier (e.g. old lowercase slug vs new uppercase alphanumeric identifier).
|
||||
def identifier_not_historically_reserved
|
||||
# incoming identifier (e.g. old lowercase slug vs new uppercase semantic identifier).
|
||||
def validate_identifier_not_historically_reserved
|
||||
return if errors.any? { |error| error.attribute == :identifier && error.type == :taken }
|
||||
|
||||
already_existing = FriendlyId::Slug
|
||||
.where("LOWER(slug) = LOWER(?)", identifier)
|
||||
.where(sluggable_type: self.class.to_s)
|
||||
.where.not(sluggable_id: id)
|
||||
.exists?
|
||||
errors.add(:identifier, :taken, value: identifier) if identifier_used_by_other_project_in_past?
|
||||
end
|
||||
|
||||
errors.add(:identifier, :taken, value: identifier) if already_existing
|
||||
def identifier_used_by_other_project_in_past?
|
||||
self.class.identifier_slugs
|
||||
.for_identifier(identifier)
|
||||
.where.not(sluggable_id: id)
|
||||
.exists?
|
||||
end
|
||||
|
||||
def generate_semantic_identifier
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
# 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 Queries::Users
|
||||
::Queries::Register.register(UserQuery) do
|
||||
filter Filters::NameFilter
|
||||
filter Filters::AnyNameAttributeFilter
|
||||
filter Filters::GroupFilter
|
||||
filter Filters::StatusFilter
|
||||
filter Filters::LoginFilter
|
||||
filter Filters::BlockedFilter
|
||||
|
||||
order Orders::DefaultOrder
|
||||
order Orders::NameOrder
|
||||
order Orders::GroupOrder
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,64 @@
|
||||
# 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 UserCardView < PersistedView
|
||||
SECONDARY_INFO = %w[role email login none].freeze
|
||||
TAG_SOURCES = %w[groups roles none].freeze
|
||||
CARD_SIZES = %w[compact default expanded].freeze
|
||||
|
||||
store_attribute :options, :secondary_info, :string, default: "role"
|
||||
store_attribute :options, :show_status_badge, :boolean, default: true
|
||||
store_attribute :options, :show_email, :boolean, default: false
|
||||
store_attribute :options, :tag_source, :string, default: "groups"
|
||||
store_attribute :options, :tag_limit, :integer, default: 3
|
||||
store_attribute :options, :card_size, :string, default: "default"
|
||||
store_attribute :options, :columns_per_row, :integer, default: 3
|
||||
|
||||
validates :secondary_info, inclusion: { in: SECONDARY_INFO }
|
||||
validates :tag_source, inclusion: { in: TAG_SOURCES }
|
||||
validates :card_size, inclusion: { in: CARD_SIZES }
|
||||
validates :tag_limit, numericality: { only_integer: true, in: 0..10 }
|
||||
validates :columns_per_row, numericality: { only_integer: true, in: 1..4 }
|
||||
|
||||
validate :query_must_be_user_query
|
||||
|
||||
def results
|
||||
effective_query&.results
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def query_must_be_user_query
|
||||
resolved = effective_query
|
||||
return if resolved.nil? || resolved.is_a?(UserQuery)
|
||||
|
||||
errors.add(:query, :invalid)
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,53 @@
|
||||
# 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 UserQuery < PersistedQuery
|
||||
def self.model
|
||||
User
|
||||
end
|
||||
|
||||
def default_scope
|
||||
# Excludes the SystemUser, DeletedUser, AnonymousUser STI descendants of User.
|
||||
User.user
|
||||
end
|
||||
|
||||
register_query do
|
||||
filter Queries::Users::Filters::NameFilter
|
||||
filter Queries::Users::Filters::AnyNameAttributeFilter
|
||||
filter Queries::Users::Filters::GroupFilter
|
||||
filter Queries::Users::Filters::StatusFilter
|
||||
filter Queries::Users::Filters::LoginFilter
|
||||
filter Queries::Users::Filters::BlockedFilter
|
||||
|
||||
order Queries::Users::Orders::DefaultOrder
|
||||
order Queries::Users::Orders::NameOrder
|
||||
order Queries::Users::Orders::GroupOrder
|
||||
end
|
||||
end
|
||||
@@ -88,6 +88,27 @@ module WorkPackage::SemanticIdentifier
|
||||
identifier.presence || id
|
||||
end
|
||||
|
||||
# Returns the identifier formatted for inline UI display.
|
||||
# Semantic mode: "PROJ-42" (no prefix — self-describing)
|
||||
# Classic mode: "#42" (hash-prefixed)
|
||||
def formatted_id
|
||||
did = display_id
|
||||
did.is_a?(String) && did.match?(/[A-Za-z]/) ? did : "##{did}"
|
||||
end
|
||||
|
||||
# Override ActiveRecord's default `to_param` so Rails URL helpers
|
||||
# (work_package_path, polymorphic_path, form_for, etc.) automatically
|
||||
# produce semantic-id URLs in semantic mode. In classic mode display_id
|
||||
# returns the integer primary key, so this is behaviourally identical
|
||||
# to the inherited `id&.to_s`.
|
||||
#
|
||||
# API v3 deliberately bypasses this by passing `id:` kwargs explicitly
|
||||
# (see lib/api/v3/work_packages/work_package_representer.rb) so HAL
|
||||
# self-links remain numeric and stable for API consumers.
|
||||
def to_param
|
||||
display_id&.to_s
|
||||
end
|
||||
|
||||
# Allocates the next semantic identifier in the current project and assigns it to the WP.
|
||||
# Also writes alias rows for every identifier the project has ever used (including "ghost" aliases).
|
||||
#
|
||||
|
||||
@@ -118,7 +118,7 @@ module WorkPackages::Costs
|
||||
reassign_to = ::WorkPackage
|
||||
.joins(:project)
|
||||
.merge(Project.allowed_to(user, :edit_cost_entries))
|
||||
.find_by_id(ids)
|
||||
.find_by(id: ids)
|
||||
|
||||
if reassign_to.nil?
|
||||
work_packages.each do |wp|
|
||||
|
||||
@@ -37,7 +37,7 @@ module McpResources
|
||||
default_description "Access users of this OpenProject instance."
|
||||
|
||||
def read(id:)
|
||||
user = ::User.visible(current_user).find_by_unique(id) # rubocop:disable Rails/DynamicFindBy
|
||||
user = ::User.visible(current_user).find_by_unique(id)
|
||||
return nil if user.nil?
|
||||
|
||||
API::V3::Users::UserRepresenter.create(user, current_user:)
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
# 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 ProjectIdentifiers
|
||||
# Generates a unique classic-format (acts_as_url-style) identifier from a project name,
|
||||
# mirroring acts_as_url's own duplicate loop: appends -1, -2, … until a free slug is found.
|
||||
#
|
||||
# Instantiate once to load the taken-identifier set from the DB, then call +suggest_identifier+.
|
||||
class ClassicIdentifierSuggestionGenerator
|
||||
FALLBACK_BASE = "project"
|
||||
|
||||
def initialize(project: nil)
|
||||
@exclude = taken_identifiers(project:)
|
||||
end
|
||||
|
||||
# Returns the most-recent classic-format slug from the project's FriendlyId history,
|
||||
# or nil if none exists. Availability is not checked — callers must handle conflicts.
|
||||
def restore_identifier(project)
|
||||
project.slugs
|
||||
.order(created_at: :desc)
|
||||
.pluck(:slug)
|
||||
.find { |slug| Project.classic_identifier_format?(slug) }
|
||||
end
|
||||
|
||||
# Generates a unique classic-format identifier from +name+, mirroring acts_as_url's
|
||||
# duplicate loop: appends -1, -2, … until a slug not in the taken set is found.
|
||||
# Falls back to a randomised +FALLBACK_BASE+ slug when +name+ produces a blank slug.
|
||||
def suggest_identifier(name)
|
||||
base = slugify(name) || fallback_base
|
||||
|
||||
candidate = base
|
||||
n = 1
|
||||
loop do
|
||||
return candidate if @exclude.exclude?(candidate.downcase)
|
||||
|
||||
candidate = "#{base}-#{n}"
|
||||
n += 1
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def slugify(name)
|
||||
name.to_url.first(Projects::Identifier::CLASSIC_IDENTIFIER_MAX_LENGTH).presence
|
||||
end
|
||||
|
||||
def fallback_base
|
||||
"#{FALLBACK_BASE}-#{SecureRandom.alphanumeric(5).downcase}"
|
||||
end
|
||||
|
||||
def taken_identifiers(project: nil)
|
||||
current = Project.unscoped.pluck(:identifier).compact.to_set(&:downcase)
|
||||
historical = Project.identifier_slugs.excluding_project(project).downcased_values.to_set
|
||||
reserved = Projects::Identifier::RESERVED_IDENTIFIERS.to_set
|
||||
current | historical | reserved
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -71,23 +71,17 @@ module ProjectIdentifiers
|
||||
end
|
||||
|
||||
def assign_semantic_identifier
|
||||
# Re-instantiate inside the lock so the exclusion set reflects all
|
||||
# identifiers committed since this job started.
|
||||
detector = ProjectIdentifiers::IdentifierAutofix::ProblematicIdentifiers.new
|
||||
generator = ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator
|
||||
|
||||
# Prefer restoring the project's last known semantic identifier (from
|
||||
# FriendlyId history) so that existing WP identifiers remain valid and
|
||||
# aliases need no update. Fall back to generating a fresh suggestion.
|
||||
new_identifier = project.previous_semantic_identifier ||
|
||||
generator.suggest_identifier(project.name, exclude: detector.exclusion_set)
|
||||
project.suggest_identifier(mode: Setting::WorkPackageIdentifier::SEMANTIC)
|
||||
|
||||
raise "Generated identifier is blank for project #{project.id}" if new_identifier.blank?
|
||||
|
||||
project.identifier = new_identifier
|
||||
# Bypass validation, because we're technically still in classic mode, so the model would be applying
|
||||
# validation for classic identifiers.
|
||||
project.save!(validate: false)
|
||||
# Save with the validation context that allows to save semantic ID while system is in classic mode
|
||||
project.save!(context: :semantic_conversion)
|
||||
end
|
||||
|
||||
def reset_stale_identifiers
|
||||
|
||||
@@ -53,7 +53,7 @@ module ProjectIdentifiers
|
||||
def generate_suggestions(analysis)
|
||||
ProjectIdentifierSuggestionGenerator.call(
|
||||
preview_projects(analysis.scope),
|
||||
exclude: analysis.exclusion_set.to_set(&:upcase)
|
||||
exclude: analysis.reserved_identifiers_for_admin_preview.to_set(&:upcase)
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ module ProjectIdentifiers
|
||||
#
|
||||
# == Performance notes
|
||||
#
|
||||
# * +#exclusion_set+ loads all non-problematic identifiers and historical slugs
|
||||
# * +#reserved_identifiers_for_admin_preview+ loads all non-problematic identifiers and historical slugs
|
||||
# into memory. Fine for a one-off admin migration; if this ever becomes a hot
|
||||
# path, consider a DB-backed exclusion check instead.
|
||||
#
|
||||
@@ -47,11 +47,15 @@ module ProjectIdentifiers
|
||||
#
|
||||
#
|
||||
class ProblematicIdentifiers
|
||||
# Returns all project identifiers (current and historical) tracked by
|
||||
# FriendlyId's slug history. Useful as an exclusion set when generating
|
||||
# new identifiers, since any slug that was ever in use must not be reused.
|
||||
# Returns a Set of uppercased identifiers that must not be reused.
|
||||
# Combines all FriendlyId slug history for projects (current and historical slugs)
|
||||
# with system-reserved keywords from Projects::Identifier::RESERVED_IDENTIFIERS.
|
||||
def self.reserved_identifiers
|
||||
FriendlyId::Slug.where(sluggable_type: Project.name).pluck(:slug).to_set
|
||||
Project.identifier_slugs.upcased_values.to_set | model_reserved_identifiers
|
||||
end
|
||||
|
||||
def self.model_reserved_identifiers
|
||||
Projects::Identifier::RESERVED_IDENTIFIERS.to_set(&:upcase)
|
||||
end
|
||||
|
||||
# Priority-ordered format rules for identifier classification.
|
||||
@@ -77,7 +81,7 @@ module ProjectIdentifiers
|
||||
end
|
||||
|
||||
def self.max_identifier_length
|
||||
ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max]
|
||||
Projects::Identifier::SEMANTIC_IDENTIFIER_MAX_LENGTH
|
||||
end
|
||||
|
||||
def scope
|
||||
@@ -96,20 +100,17 @@ module ProjectIdentifiers
|
||||
end
|
||||
|
||||
# Returns a Set of identifiers that must not be suggested for new assignments.
|
||||
# Combines currently active identifiers from non-problematic projects with
|
||||
# historically reserved identifiers from FriendlyId slug history.
|
||||
def exclusion_set
|
||||
historical_identifiers | in_use_identifiers
|
||||
# Unions currently active identifiers (non-problematic projects), historical FriendlyId slugs,
|
||||
# and system-reserved keywords — the full exclusion set used by #collision_error_reason.
|
||||
# Uses instance-level memoization so the same loaded sets power both this method and collision checks.
|
||||
def reserved_identifiers_for_admin_preview
|
||||
historical_identifiers | current_identifiers | self.class.model_reserved_identifiers
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def historical_identifiers
|
||||
@historical_identifiers ||= FriendlyId::Slug
|
||||
.where(sluggable_type: Project.name)
|
||||
.where("LOWER(slug) NOT IN (SELECT LOWER(identifier) FROM projects)")
|
||||
.pluck(:slug)
|
||||
.to_set
|
||||
@historical_identifiers ||= Project.identifier_slugs.historically_reserved.upcased_values.to_set
|
||||
end
|
||||
|
||||
def exceeds_max_length = Project.where("length(identifier) > ?", self.class.max_identifier_length)
|
||||
@@ -118,17 +119,18 @@ module ProjectIdentifiers
|
||||
def not_fully_uppercased = Project.where("identifier != UPPER(identifier)")
|
||||
|
||||
def collision_error_reason(identifier)
|
||||
if in_use_identifiers.include?(identifier)
|
||||
if self.class.model_reserved_identifiers.include?(identifier)
|
||||
:reserved_by_system
|
||||
elsif current_identifiers.include?(identifier)
|
||||
:in_use
|
||||
elsif historical_identifiers.include?(identifier)
|
||||
:reserved
|
||||
:used_in_past
|
||||
end
|
||||
end
|
||||
|
||||
def in_use_identifiers
|
||||
@in_use_identifiers ||= Project.where.not(id: scope.select(:id)).pluck(:identifier).to_set
|
||||
def current_identifiers
|
||||
@current_identifiers ||= Project.where.not(id: scope.select(:id)).pluck(:identifier).to_set
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -51,18 +51,9 @@ module ProjectIdentifiers
|
||||
attr_reader :project
|
||||
|
||||
def restore_classic_identifier
|
||||
classic = previous_classic_identifier.presence || Project.suggest_identifier(project.name)
|
||||
generator = ProjectIdentifiers::ClassicIdentifierSuggestionGenerator.new
|
||||
classic = generator.restore_identifier(project) || generator.suggest_identifier(project.name)
|
||||
project.update!(identifier: classic)
|
||||
end
|
||||
|
||||
# Returns the most-recent FriendlyId slug for this project that is in classic
|
||||
# acts_as_url format (lowercase letters, digits, hyphens, underscores; not
|
||||
# all-numeric), or nil if no such slug exists.
|
||||
def previous_classic_identifier
|
||||
project.slugs
|
||||
.order(created_at: :desc)
|
||||
.pluck(:slug)
|
||||
.find { |slug| Project.classic_identifier_format?(slug) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -41,7 +41,12 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom" do
|
||||
xml.entry do
|
||||
xml.title "#{work_package.project.name} - #{work_package.type.name} ##{work_package.id}: #{work_package.subject}"
|
||||
xml.link "rel" => "alternate", "href" => work_package_url(work_package)
|
||||
xml.id url_for(controller: "/work_packages", action: "show", id: work_package, journal_id: change,
|
||||
# RFC 4287 §4.2.6.1: atom:id MUST NOT change over time. Feed readers
|
||||
# key entry deduplication on its byte value, so flipping the URL
|
||||
# across a work_packages_identifier mode change would re-surface every
|
||||
# historical entry as new in subscribers' readers. Pin to the numeric
|
||||
# primary key to keep the id stable.
|
||||
xml.id url_for(controller: "/work_packages", action: "show", id: work_package.id, journal_id: change,
|
||||
only_path: false)
|
||||
xml.updated change.created_at.xmlschema
|
||||
xml.author do
|
||||
|
||||
@@ -32,16 +32,29 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
<%=
|
||||
render Primer::OpenProject::PageHeader.new do |header|
|
||||
header.with_title { @role.name }
|
||||
header.with_breadcrumbs([{ href: admin_index_path, text: t("label_administration") },
|
||||
{ href: admin_settings_users_path, text: t(:label_user_and_permission) },
|
||||
{ href: roles_path, text: t(:label_role_and_permissions) },
|
||||
@role.name])
|
||||
header.with_breadcrumbs(
|
||||
[{ href: admin_index_path, text: t("label_administration") },
|
||||
{ href: admin_settings_users_path, text: t(:label_user_and_permission) },
|
||||
{ href: roles_path, text: t(:label_role_and_permissions) },
|
||||
@role.name]
|
||||
)
|
||||
end
|
||||
%>
|
||||
|
||||
<%= labelled_tabular_form_for @role, :url => { :action => 'update' }, :html => {:id => 'role_form'}, :as => :role do |f| %>
|
||||
<%= hidden_field_tag :id, @role.id %>
|
||||
<%= render partial: 'form', locals: { f: f , role: @role } %>
|
||||
<br/>
|
||||
<%= styled_button_tag t(:button_save), class: '-with-icon icon-checkmark' %>
|
||||
<% if @role.is_a?(ProjectRole) && Setting.new_project_user_role_id.to_i == @role.id %>
|
||||
<%= render(Primer::Alpha::Banner.new(scheme: :warning, icon: :alert, mb: 3)) do %>
|
||||
<p><%= t("roles.edit.default_for_new_projects_warning") %></p>
|
||||
<ul>
|
||||
<% ProjectRole::PERMISSIONS_FOR_PROJECT_CREATOR.each do |permission| %>
|
||||
<li><%= t("permission_#{permission}") %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<%= labelled_tabular_form_for @role, url: { action: "update" }, html: { id: "role_form" }, as: :role do |f| %>
|
||||
<%= hidden_field_tag :id, @role.id %>
|
||||
<%= render partial: "form", locals: { f: f, role: @role } %>
|
||||
<br>
|
||||
<%= styled_button_tag t(:button_save), class: "-with-icon icon-checkmark" %>
|
||||
<% end %>
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
<%= turbo_frame_tag "content-bodyRight" do %>
|
||||
<%= render(split_create_instance) %>
|
||||
<% end %>
|
||||
@@ -187,9 +187,11 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
<% end %>
|
||||
</th>
|
||||
<% @statuses.each do |new_status| -%>
|
||||
<% transition_saved = workflows.any? { it.old_status_id == old_status.id && it.new_status_id == new_status.id }
|
||||
newly_added_status = @added_status_ids.include?(old_status.id) || @added_status_ids.include?(new_status.id) %>
|
||||
<% transition_role_ids = workflows.select { it.old_status_id == old_status.id && it.new_status_id == new_status.id }.map(&:role_id).uniq
|
||||
newly_added_status = @added_status_ids.include?(old_status.id) || @added_status_ids.include?(new_status.id)
|
||||
some_roles = !transition_role_ids.empty? && transition_role_ids.size < @roles.size && !newly_added_status %>
|
||||
<td>
|
||||
<%= hidden_field_tag "indeterminate_status[#{old_status.id}][#{new_status.id}]", "1" if some_roles %>
|
||||
<%=
|
||||
render(Primer::BaseComponent.new(tag: :div, display: :flex, align_items: :center, mx: 1)) do
|
||||
render(
|
||||
@@ -198,13 +200,14 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
name: "status[#{old_status.id}][#{new_status.id}]",
|
||||
id: "status_#{old_status.id}_#{new_status.id}", # See BUG https://github.com/primer/view_components/issues/3811
|
||||
value: name,
|
||||
checked: transition_saved || newly_added_status,
|
||||
checked: !some_roles && (transition_role_ids.any? || newly_added_status),
|
||||
label: t(".matrix_checkbox_label", old_status: old_status.name, new_status: new_status.name),
|
||||
visually_hide_label: true,
|
||||
data: {
|
||||
checkable_target: "checkbox",
|
||||
old_status: old_status.id,
|
||||
new_status: new_status.id
|
||||
new_status: new_status.id,
|
||||
indeterminate: (true if some_roles)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
@@ -28,9 +28,9 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
++#%>
|
||||
<% html_title t(:label_administration), t(:label_workflow_plural), @type.name -%>
|
||||
<% content_for :content_header do %>
|
||||
<%= render Workflows::PageHeaders::EditComponent.new(@type, role: @role, tabs: workflow_tabs(@type)) %>
|
||||
<%= render Workflows::PageHeaders::EditComponent.new(@type, roles: @roles, tabs: workflow_tabs(@type)) %>
|
||||
<% end %>
|
||||
|
||||
<% if @type && @role %>
|
||||
<%= turbo_frame_tag "workflow-table", src: edit_workflow_tab_path(@type, @current_tab, role_id: @role.id, status_ids: params[:status_ids]) %>
|
||||
<% if @type && @roles.any? %>
|
||||
<%= turbo_frame_tag "workflow-table", src: edit_workflow_tab_path(@type, @current_tab, role_ids: @roles.map(&:id), status_ids: params[:status_ids]) %>
|
||||
<% end %>
|
||||
|
||||
@@ -61,7 +61,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
<td><%= h type %></td>
|
||||
<% roles.each do |role, count| -%>
|
||||
<td>
|
||||
<%= link_to((count > 0 ? count : content_tag(:span, "", class: "icon-close icon-context icon-button")), edit_workflow_path(type, role_id: role), title: t(:button_edit)) %>
|
||||
<%= link_to((count > 0 ? count : content_tag(:span, "", class: "icon-close icon-context icon-button")), edit_workflow_path(type, role_ids: [role]), title: t(:button_edit)) %>
|
||||
</td>
|
||||
<% end -%>
|
||||
</tr>
|
||||
|
||||
@@ -28,8 +28,8 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
++#%>
|
||||
|
||||
<%= turbo_frame_tag "workflow-table", data: { turbo_cache: false } do %>
|
||||
<%= render Workflows::StatusMatrixFormComponent.new(tab: @tab, role: @role, type: @type, available_roles: @eligible_roles, statuses: @statuses, has_status_changes: @has_status_changes) %>
|
||||
<%= render Workflows::StatusMatrixFormComponent.new(tab: @tab, roles: @roles, type: @type, available_roles: @eligible_roles, statuses: @statuses, has_status_changes: @has_status_changes) %>
|
||||
<%= turbo_stream.replace(Workflows::PageHeaders::EditComponent.wrapper_key) do %>
|
||||
<%= render Workflows::PageHeaders::EditComponent.new(@type, role: @role, tabs: workflow_tabs(@type)) %>
|
||||
<%= render Workflows::PageHeaders::EditComponent.new(@type, roles: @roles, tabs: workflow_tabs(@type)) %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -67,6 +67,9 @@ class Principals::DeleteJob < ApplicationJob
|
||||
def delete_associated(principal)
|
||||
delete_notifications(principal)
|
||||
delete_private_queries(principal)
|
||||
delete_private_persisted_views(principal)
|
||||
nullify_persisted_query_principals(principal)
|
||||
delete_user_ordered_query_entities(principal)
|
||||
delete_tokens(principal)
|
||||
delete_favorites(principal)
|
||||
end
|
||||
@@ -84,6 +87,30 @@ class Principals::DeleteJob < ApplicationJob
|
||||
CostQuery.where(user_id: principal.id, is_public: false).delete_all
|
||||
end
|
||||
|
||||
# Private persisted views belong to their owner and are removed with them.
|
||||
# Public views are kept, but their principal reference is nullified so the
|
||||
# view becomes "ownerless" rather than pointing at the soon-to-be-deleted
|
||||
# user. Destroying the private views also triggers the view's after_destroy
|
||||
# hook, which cleans up queries that are no longer referenced by any public
|
||||
# view.
|
||||
def delete_private_persisted_views(principal)
|
||||
PersistedView.where(principal_id: principal.id, public: false).destroy_all
|
||||
PersistedView.where(principal_id: principal.id, public: true).update_all(principal_id: nil)
|
||||
end
|
||||
|
||||
# Queries have no public/private flag — their visibility is derived from the
|
||||
# views that reference them. Any query still reachable after the view
|
||||
# cleanup above stays; we just drop the owner pointer.
|
||||
def nullify_persisted_query_principals(principal)
|
||||
PersistedQuery.where(principal_id: principal.id).update_all(principal_id: nil)
|
||||
end
|
||||
|
||||
# Manually curated entries that point at the deleted user are dropped — a
|
||||
# list of "Deleted user, Deleted user, …" is worse than just removing them.
|
||||
def delete_user_ordered_query_entities(principal)
|
||||
OrderedPersistedQueryEntity.where(entity: principal).delete_all
|
||||
end
|
||||
|
||||
def delete_favorites(principal)
|
||||
Favorite.where(user_id: principal.id).delete_all
|
||||
end
|
||||
|
||||
+8
-1
@@ -13,6 +13,10 @@ fi
|
||||
|
||||
COMPOSE_FILE=docker-compose.yml
|
||||
|
||||
if [ -f docker-compose.override.yml ]; then
|
||||
COMPOSE_FILE="$COMPOSE_FILE -f docker-compose.override.yml"
|
||||
fi
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: bin/compose <command> [args*]"
|
||||
echo
|
||||
@@ -21,6 +25,7 @@ if [ $# -eq 0 ]; then
|
||||
echo " reset - Resets everything by removing all containers and deleting all volumes. You need to run \`setup\` again afterwards. "
|
||||
echo " start - Starts both backend and frontend in the background. Access via http://localhost:3000/ by default."
|
||||
echo " run - Starts the frontend in the background and backend in the foreground. Useful for debugging using pry."
|
||||
echo " restart [service] - Restarts one or all running services."
|
||||
echo " rspec - Runs rspec inside the \`backend-test\` container which will be started if it's not running yet."
|
||||
echo " * - Everything else will be passed straight to \`docker-compose\`."
|
||||
echo
|
||||
@@ -54,6 +59,8 @@ elif [[ "$@" = "run" ]]; then
|
||||
elif [[ "$1" = "setup" ]]; then
|
||||
$DOCKER_COMPOSE -f $COMPOSE_FILE run backend setup
|
||||
yes no | $DOCKER_COMPOSE -f $COMPOSE_FILE run frontend npm install
|
||||
elif [[ "$1" = "restart" ]]; then
|
||||
$DOCKER_COMPOSE -f $COMPOSE_FILE restart "${@:2}"
|
||||
elif [[ "$1" = "reset" ]]; then
|
||||
$DOCKER_COMPOSE -f $COMPOSE_FILE down && docker volume rm `docker volume ls -q | grep ${PWD##*/}_`
|
||||
elif [[ "$1" = "rspec" ]]; then
|
||||
@@ -84,5 +91,5 @@ elif [[ "$1" = "rspec" ]]; then
|
||||
|
||||
$DOCKER_COMPOSE -f $COMPOSE_FILE exec backend-test bundle exec rspec "${@:2}"
|
||||
else
|
||||
$DOCKER_COMPOSE -f $COMPOSE_FILE $*
|
||||
$DOCKER_COMPOSE -f $COMPOSE_FILE "$@"
|
||||
fi
|
||||
|
||||
@@ -38,7 +38,7 @@ development:
|
||||
adapter: postgresql
|
||||
encoding: unicode
|
||||
database: openproject_development
|
||||
pool: 5
|
||||
pool: 100
|
||||
username: openproject_development
|
||||
password:
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ Rails.application.config.after_initialize do
|
||||
# Configure CSP directives
|
||||
policy.default_src(*default_src)
|
||||
policy.base_uri("'self'")
|
||||
policy.font_src(*assets_src, "data:", "'self'")
|
||||
policy.font_src(*assets_src, "data:")
|
||||
policy.form_action(*form_action)
|
||||
policy.frame_src(*frame_src, "'self'")
|
||||
policy.frame_ancestors("'self'")
|
||||
|
||||
@@ -28,12 +28,33 @@
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
#++
|
||||
|
||||
config = Rails.env.production? && Rails.application.config.database_configuration[Rails.env]
|
||||
pool_size = config && [OpenProject::Configuration.web_max_threads + 1, config["pool"].to_i].max
|
||||
if Rails.env.production?
|
||||
config = Rails.application.config.database_configuration[Rails.env]
|
||||
pool_size = config && [OpenProject::Configuration.web_max_threads + 1, config["pool"].to_i].max
|
||||
|
||||
# make sure we have enough connections in the pool for each thread and then some
|
||||
if pool_size && pool_size > ActiveRecord::Base.connection_pool.size
|
||||
Rails.logger.info { "Increasing database pool size to #{pool_size} to match max threads" }
|
||||
# make sure we have enough connections in the pool for each thread and then some
|
||||
if pool_size && pool_size > ActiveRecord::Base.connection_pool.size
|
||||
Rails.logger.info { "Increasing database pool size to #{pool_size} to match max threads" }
|
||||
|
||||
ActiveRecord::Base.establish_connection config.merge(pool: pool_size)
|
||||
ActiveRecord::Base.establish_connection config.merge(pool: pool_size)
|
||||
end
|
||||
end
|
||||
|
||||
# Log a warning if we encounter an under-provisioned dev setup
|
||||
if Rails.env.local?
|
||||
utility_connections = 1 + GoodJob::SharedExecutor::MAX_THREADS # based on GoodJob documentation
|
||||
required_pool_size = OpenProject::Configuration.web_max_threads +
|
||||
OpenProject::Configuration.good_job_max_threads +
|
||||
utility_connections
|
||||
|
||||
if ActiveRecord::Base.connection_pool.size < required_pool_size
|
||||
Rails.logger.warn do
|
||||
"DB pool size of #{ActiveRecord::Base.connection_pool.size} is too small and could cause problems. " \
|
||||
"The recommended sizing is at least #{required_pool_size} " \
|
||||
"(#{OpenProject::Configuration.web_max_threads} for web_max_threads + " \
|
||||
"#{OpenProject::Configuration.good_job_max_threads} for web_max_threads + " \
|
||||
"#{utility_connections} for GoodJob utility connections). " \
|
||||
"Please adjust the pool parameter in database.yml or \"?pool=N\" parameter in DATABASE_URL."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -419,7 +419,8 @@ af:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ af:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ af:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ af:
|
||||
type: Soort
|
||||
version: Weergawe
|
||||
watcher: Dophouer
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ af:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Rolle
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ af:
|
||||
setting_mail_handler_body_delimiter_regex: Stomp eposse af wat ooreenstem met hierdie "regular expression"
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -443,7 +443,8 @@ ar:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
zero: "... %{count} more projects"
|
||||
@@ -492,8 +493,16 @@ ar:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
zero: "%{count} roles selected"
|
||||
one: "%{count} role selected"
|
||||
two: "%{count} roles selected"
|
||||
few: "%{count} roles selected"
|
||||
many: "%{count} roles selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1170,6 +1179,8 @@ ar:
|
||||
no_results_title_text: لا يوجد حالياً أخبار لتقدم.
|
||||
no_results_content_text: أضف عنصر أخبار
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2080,6 +2091,29 @@ ar:
|
||||
type: النّوع
|
||||
version: الإصدار
|
||||
watcher: المشاهد
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: يجب أن تقبل.
|
||||
@@ -4461,6 +4495,7 @@ ar:
|
||||
label_role_new: دور جديد
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: دور
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: تعيين دور للأعضاء الجدد
|
||||
label_scm: اختصاراً لِ:"Supply Chain Management" إدارة سلسة الإمداد
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5411,6 +5446,9 @@ ar:
|
||||
setting_mail_handler_body_delimiter_regex: حذف رسائل البريد الإلكتروني المطابقة لهذا التعبير الاعتيادي
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: الدور الممنوح لمستخدم غير مسؤول الذي يقوم بإنشاء مشروع
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ az:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ az:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ az:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ az:
|
||||
type: Type
|
||||
version: Version
|
||||
watcher: Watcher
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ az:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ az:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -431,7 +431,8 @@ be:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -476,8 +477,14 @@ be:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
few: "%{count} roles selected"
|
||||
many: "%{count} roles selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1140,6 +1147,8 @@ be:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2040,6 +2049,29 @@ be:
|
||||
type: Type
|
||||
version: Version
|
||||
watcher: Watcher
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4341,6 +4373,7 @@ be:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5289,6 +5322,9 @@ be:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ bg:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ bg:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ bg:
|
||||
no_results_title_text: Няма новини за докладване.
|
||||
no_results_content_text: Добави новина
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ bg:
|
||||
type: Тип
|
||||
version: Версия
|
||||
watcher: Наблюдател
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: трябва да бъде одобрено.
|
||||
@@ -4217,6 +4247,7 @@ bg:
|
||||
label_role_new: Нова роля
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Роли
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5151,6 +5182,9 @@ bg:
|
||||
setting_mail_handler_body_delimiter_regex: Съкрати мейл адресите от една област
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ ca:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ ca:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1109,6 +1114,8 @@ ca:
|
||||
no_results_title_text: Actualment no hi ha cap novetat per a informar.
|
||||
no_results_content_text: Afegir una notícia
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -1999,6 +2006,29 @@ ca:
|
||||
type: Classe
|
||||
version: Versió
|
||||
watcher: Observador
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: hauran de ser acceptats.
|
||||
@@ -4216,6 +4246,7 @@ ca:
|
||||
label_role_new: Nou rol
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Rols
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assignar rols als nous membres
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5144,6 +5175,9 @@ ca:
|
||||
setting_mail_handler_body_delimiter_regex: Trunca els missatges de correu electrònic que coincideixen amb aquesta expressió regular
|
||||
setting_mail_handler_ignore_filenames: Ignora els fitxers adjunts del correu electrònic
|
||||
setting_new_project_user_role_id: Rol donat per un usuari no-admin que crea un projecte
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ ckb-IR:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ ckb-IR:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ ckb-IR:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ ckb-IR:
|
||||
type: Type
|
||||
version: Version
|
||||
watcher: Watcher
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ ckb-IR:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ ckb-IR:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -431,7 +431,8 @@ cs:
|
||||
error_special_characters: Speciální znaky nejsou povoleny
|
||||
error_not_fully_uppercased: Musí být napsán velkými písmeny
|
||||
error_in_use: Již se používá jako identifikátor jiného projektu
|
||||
error_reserved: Již se dříve používal jako identifikátor jiného projektu
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Potřebuje ruční revizi
|
||||
remaining_projects:
|
||||
one: "... 1 další projekt"
|
||||
@@ -476,8 +477,14 @@ cs:
|
||||
ignore: Ignorovat změny
|
||||
save: Uložit změny a pokračovat
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Vybrat roli
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
few: "%{count} roles selected"
|
||||
many: "%{count} roles selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: Nejsou nakonfigurovány žádné stavové přechody
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1140,6 +1147,8 @@ cs:
|
||||
no_results_title_text: V současné době neexistují žádné zprávy k zobrazení.
|
||||
no_results_content_text: Přidat příspěvek
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -1800,7 +1809,7 @@ cs:
|
||||
enabled_modules: Povolené moduly
|
||||
identifier: Identifikátor
|
||||
latest_activity_at: Poslední aktivita
|
||||
parent: Nadřazený projekt
|
||||
parent: Podprojekt
|
||||
project_creation_wizard_enabled: Project initiation request
|
||||
public_value:
|
||||
title: Viditelnost
|
||||
@@ -2042,6 +2051,29 @@ cs:
|
||||
type: Typ
|
||||
version: Verze
|
||||
watcher: Sledující
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: musí být přijato.
|
||||
@@ -2212,7 +2244,7 @@ cs:
|
||||
message:
|
||||
cannot_move_message_to_forum_of_different_project: A message cannot be moved to a forum of a different project.
|
||||
notifications:
|
||||
at_least_one_channel: Pro odesílání notifikací musí být specifikován alespoň jeden kanál
|
||||
at_least_one_channel: Alespoň jeden kanál pro odesílání oznámení musí být specifikován.
|
||||
attributes:
|
||||
read_ian:
|
||||
read_on_creation: 'nelze nastavit na pravdivé při vytváření oznámení '
|
||||
@@ -2522,11 +2554,11 @@ cs:
|
||||
member: Člen
|
||||
news: Novinky
|
||||
notification:
|
||||
one: Notifikace
|
||||
few: Notifikací
|
||||
many: Notifikací
|
||||
other: Notifikace
|
||||
placeholder_user: Placeholder uživatel
|
||||
one: Oznámení
|
||||
few: Oznámení
|
||||
many: Oznámení
|
||||
other: Oznámení
|
||||
placeholder_user: placeholder uživatel
|
||||
project:
|
||||
one: Projekt
|
||||
few: Projekty
|
||||
@@ -3617,7 +3649,7 @@ cs:
|
||||
ai: Umělá Inteligence (AI)
|
||||
aggregation: Agregace
|
||||
api_and_webhooks: API & Webhooky
|
||||
mail_notification: E-mailové notifikace
|
||||
mail_notification: E-mailová upozornění
|
||||
mails_and_notifications: E-maily a oznámení
|
||||
mcp_configurations: Protokol MCP (Model Context Protocol)
|
||||
quick_add:
|
||||
@@ -3779,7 +3811,7 @@ cs:
|
||||
by_project: Nepřečteno dle projektu
|
||||
by_reason: Důvod
|
||||
inbox: Doručená pošta
|
||||
send_notifications: Pro tuto akci odeslat notifikaci
|
||||
send_notifications: Odeslat oznámení pro tuto akci
|
||||
work_packages:
|
||||
subject:
|
||||
created: Pracovní balíček byl vytvořen.
|
||||
@@ -4244,9 +4276,9 @@ cs:
|
||||
label_permissions: Práva
|
||||
label_permissions_report: Přehled oprávnění
|
||||
label_personalize_page: Přizpůsobit tuto stránku
|
||||
label_placeholder_user: Placeholder uživatel
|
||||
label_placeholder_user: placeholder uživatel
|
||||
label_placeholder_user_new: ''
|
||||
label_placeholder_user_plural: Placeholder uživatelé
|
||||
label_placeholder_user_plural: placeholder uživatelé
|
||||
label_planning: Plánování
|
||||
label_please_login: Přihlaste se prosím
|
||||
label_plugins: Pluginy
|
||||
@@ -4271,7 +4303,7 @@ cs:
|
||||
label_project_attribute_plural: Atributy projektu
|
||||
label_project_attribute_manage_link: Správa atributů produktu
|
||||
label_project_count: Celkový počet projektů
|
||||
label_project_copy_notifications: Během kopírování projektu odeslat notifikace e-mailem
|
||||
label_project_copy_notifications: Během kopie projektu odeslat oznámení e-mailem
|
||||
label_project_initiation_export_pdf: Export PDF for %{project_creation_name}
|
||||
label_project_latest: Nejnovější projekty
|
||||
label_project_default_type: Povolit prázdný typ
|
||||
@@ -4343,6 +4375,7 @@ cs:
|
||||
label_role_new: Nová role
|
||||
label_role_grantable: Udělitelná role
|
||||
label_role_plural: Role
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Přiřadit roli novým členům
|
||||
label_scm: SCM
|
||||
label_scroll_left: Rolovat vlevo
|
||||
@@ -4432,7 +4465,7 @@ cs:
|
||||
label_version_new: Nová verze
|
||||
label_version_edit: Upravit verzi
|
||||
label_version_plural: Verze
|
||||
label_version_sharing_descendants: S podprojekty
|
||||
label_version_sharing_descendants: S Podprojekty
|
||||
label_version_sharing_hierarchy: S hierarchií projektu
|
||||
label_version_sharing_none: Není sdíleno
|
||||
label_version_sharing_system: Se všemi projekty
|
||||
@@ -4570,28 +4603,28 @@ cs:
|
||||
digests:
|
||||
including_mention_singular: včetně zmínky
|
||||
including_mention_plural: včetně %{number_mentioned} zmínění
|
||||
unread_notification_singular: 1 nepřečtená notifikace
|
||||
unread_notification_plural: "%{number_unread} nepřečtených notifikací"
|
||||
unread_notification_singular: 1 nepřečtené oznámení
|
||||
unread_notification_plural: "%{number_unread} nepřečtených oznámení"
|
||||
you_have: Máte
|
||||
logo_alt_text: Logo
|
||||
mention:
|
||||
subject: "%{user_name} vás zmínil v #%{id} - %{subject}"
|
||||
notification:
|
||||
center: Centrum notifikací
|
||||
center: Centrum oznámení
|
||||
see_in_center: Zobrazit komentář v oznamovacím centru
|
||||
settings: Změnit nastavení e-mailu
|
||||
salutation: Dobrý den, %{user},
|
||||
salutation_full_name: Jméno a příjmení
|
||||
work_packages:
|
||||
created_at: 'Vytvořeno v %{timestamp} uživatelem %{user} '
|
||||
login_to_see_all: Přihlaste se pro zobrazení všech notifikací.
|
||||
login_to_see_all: Přihlaste se pro zobrazení všech oznámení.
|
||||
mentioned: Byli jste <b>zmíněni v komentáři</b>
|
||||
mentioned_by: "%{user} vás zmínil v komentáři OpenProject"
|
||||
more_to_see:
|
||||
one: Existuje ještě 1 pracovní balíček s notifikací.
|
||||
few: Existuje ještě %{count} pracovních balíčků s notifikacema.
|
||||
many: Existuje ještě %{count} pracovních balíčků s notifikacema.
|
||||
other: Existuje ještě %{count} pracovních balíčků s notifikacema.
|
||||
one: Máte ještě 1 pracovní balíček s notifikací.
|
||||
few: Existuje ještě %{count} pracovních balíčků s oznámeními.
|
||||
many: Máte ještě %{count} pracovních balíčků s notifikacemi.
|
||||
other: Existuje ještě %{count} pracovních balíčků s oznámeními.
|
||||
open_in_browser: Otevřít v prohlížeči
|
||||
reason:
|
||||
watched: Sledováno
|
||||
@@ -4600,7 +4633,7 @@ cs:
|
||||
mentioned: Zmíněné
|
||||
shared: Sdílené
|
||||
subscribed: vše
|
||||
prefix: 'Obdrženo z důvodu nastavení notifikací: %{reason}'
|
||||
prefix: 'Obdrženo z důvodu nastavení oznámení: %{reason}'
|
||||
date_alert_start_date: Upozornění na datum
|
||||
date_alert_due_date: Upozornění na datum
|
||||
reminder: Připomínka
|
||||
@@ -4913,7 +4946,7 @@ cs:
|
||||
permission_move_work_packages: Přesun pracovních balíčků
|
||||
permission_protect_wiki_pages: Ochrana stránky wiki
|
||||
permission_rename_wiki_pages: Přejmenovat stránky wiki
|
||||
permission_save_queries: Uložit zobrazení
|
||||
permission_save_queries: Uložit pohled
|
||||
permission_search_project: Hledat projekt
|
||||
permission_select_custom_fields: Vybrat vlastní pole
|
||||
permission_select_project_custom_fields: Vyberte atributy projektu
|
||||
@@ -5291,6 +5324,9 @@ cs:
|
||||
setting_mail_handler_body_delimiter_regex: Zkrátit e-maily odpovídající tomuto regexu
|
||||
setting_mail_handler_ignore_filenames: Ignorované přílohy e-mailů
|
||||
setting_new_project_user_role_id: Role přiřazená uživateli bez práv administrátora, který projekt vytvořil
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Text notifikace
|
||||
setting_password_active_rules: Password requirements
|
||||
@@ -5441,7 +5477,7 @@ cs:
|
||||
enable_subscriptions_text_html: Umožňuje uživatelům s nezbytnými oprávněními přihlásit se do OpenProject kalendářů a získat přístup k informacím o pracovním balíčku prostřednictvím externího klienta kalendáře. <strong>Poznámka:</strong> Před povolením si prosím přečtěte <a href="%{link}" target="_blank">podrobnosti o odběru</a>.
|
||||
language_name_being_default: "%{language_name} (výchozí)"
|
||||
notifications:
|
||||
events_explanation: Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože notifikace pro ně mohou být nastavena speciálně pro každého uživatele.
|
||||
events_explanation: Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože oznámení pro ně mohou být nastavena speciálně pro každého uživatele.
|
||||
delay_minutes_explanation: Odesílání e-mailu může být pozdrženo, aby bylo uživatelům s nakonfigurovaným v oznámení aplikace před odesláním pošty potvrzeno oznámení. Uživatelé, kteří si přečtou oznámení v aplikaci, nedostanou e-mail pro již přečtené oznámení.
|
||||
other: Ostatní
|
||||
passwords: Hesla
|
||||
@@ -5646,7 +5682,7 @@ cs:
|
||||
text_destroy_what_to_do: Co chcete udělat?
|
||||
text_diff_truncated: "... Toto rozlišení bylo zkráceno, protože přesahuje maximální velikost, kterou lze zobrazit."
|
||||
text_email_delivery_not_configured: |-
|
||||
Doručení e-mailu není nakonfigurováno a notifikace jsou zakázány.
|
||||
Doručení e-mailu není nakonfigurováno a oznámení jsou zakázána.
|
||||
Nakonfigurujte váš SMTP server pro jejich povolení.
|
||||
text_enumeration_category_reassign_to: 'Přiřadit je k této hodnotě:'
|
||||
text_enumeration_destroy_question: "%{count} objektů je přiřazeno k této hodnotě."
|
||||
|
||||
@@ -419,7 +419,8 @@ da:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ da:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1109,6 +1114,8 @@ da:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -1999,6 +2006,29 @@ da:
|
||||
type: Type
|
||||
version: Version
|
||||
watcher: Tilsynsførende
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: skal accepteres.
|
||||
@@ -4218,6 +4248,7 @@ da:
|
||||
label_role_new: Ny rolle
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Rollee
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: Versionskontrolsystem
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5150,6 +5181,9 @@ da:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Rolle givet til bruger der opretter projekt uden at være administrator
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -87,11 +87,11 @@ de:
|
||||
type_token_text: Ihr Enterprise-Token-Text
|
||||
token_placeholder: Enterprise-Token Text hier einfügen
|
||||
token_caption: Weitere Informationen über die Aktivierung der Enterprise Edition finden Sie in unserer [Dokumentation](docs_url).
|
||||
add_token: Enterprise-Edition Support Token hochladen
|
||||
add_token: Enterprise edition Support Token hochladen
|
||||
replace_token: Aktuellen Enterprise edition Support Token ersetzen
|
||||
order: Enterprise on-premises bestellen
|
||||
paste: Enterprise-Edition Support Token hier einfügen
|
||||
required_for_feature: Dieses Add-on ist nur mit einem aktiven Enterprise-Edition Support-Token verfügbar.
|
||||
paste: Enterprise edition Support Token hier einfügen
|
||||
required_for_feature: Dieses Add-on ist nur mit einem aktiven Enterprise edition Support-Token verfügbar.
|
||||
enterprise_link: Klicken Sie hier für weitere Informationen.
|
||||
start_trial: Kostenlose Testversion starten
|
||||
book_now: Jetzt buchen
|
||||
@@ -419,7 +419,8 @@ de:
|
||||
error_special_characters: Sonderzeichen sind nicht erlaubt
|
||||
error_not_fully_uppercased: Muss in Großbuchstaben sein
|
||||
error_in_use: Bereits als aktive Kennung für ein anderes Projekt verwendet
|
||||
error_reserved: Reserviert durch eine frühere Kennung eines anderen Projekts
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Benötigt manuelle Überprüfung
|
||||
remaining_projects:
|
||||
one: "... 1 weiteres Projekt"
|
||||
@@ -460,8 +461,12 @@ de:
|
||||
ignore: Änderungen ignorieren
|
||||
save: Änderungen speichern und fortfahren
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Rolle: %{role}'
|
||||
no_role: Rolle auswählen
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: Keine Statusübergänge konfiguriert
|
||||
description: Status hinzufügen, um mit der Konfiguration von Arbeitsabläufen für diese Rolle zu beginnen
|
||||
@@ -1109,6 +1114,8 @@ de:
|
||||
no_results_title_text: Es gibt aktuell keine Neuigkeiten.
|
||||
no_results_content_text: Neuigkeit hinzufügen
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Alle %{module} Berechtigungen zuweisen
|
||||
section_uncheck_all_label: Alle %{module} Berechtigungen zuweisen
|
||||
@@ -1342,10 +1349,10 @@ de:
|
||||
tab: Titel konfigurieren
|
||||
manually_editable_subjects:
|
||||
label: Manuell bearbeitbare Titel
|
||||
caption: Nutzer:innen können die Titel der Arbeitspakete ohne Einschränkungen manuell eingeben und bearbeiten.
|
||||
caption: Benutzer können die Titel der Arbeitspakete ohne Einschränkungen manuell eingeben und bearbeiten.
|
||||
automatically_generated_subjects:
|
||||
label: Automatisch generierte Titel
|
||||
caption: Definieren Sie ein Schema aus referenzierten Attributen und Freitext für die automatische Generierung von Arbeitspakettiteln. Nutzer:innen können diese nicht manuell editieren.
|
||||
caption: Definieren Sie ein Schema aus referenzierten Attributen und Freitext für die automatische Generierung von Arbeitspakettiteln. Nutzer können diese nicht manuell editieren.
|
||||
token:
|
||||
label_with_context: "%{attribute_context}: %{attribute_label}"
|
||||
context:
|
||||
@@ -1446,7 +1453,7 @@ de:
|
||||
manual_with_children: Hat Unteraufgaben aber ihre Startdaten werden ignoriert.
|
||||
title:
|
||||
automatic_mobile: Automatisch geplant.
|
||||
automatic_with_children: Unteraufgaben bestimmen Termine.
|
||||
automatic_with_children: Die Termine sind durch untergeordnete Arbeitspakete bestimmt.
|
||||
automatic_with_predecessor: Der Anfangstermin wird von einem Vorgänger festgelegt.
|
||||
manual_mobile: Manuell geplant.
|
||||
manually_scheduled: Manuell geplant – Daten unabhängig von Beziehungen.
|
||||
@@ -1549,7 +1556,7 @@ de:
|
||||
label_child_plural: Unteraufgaben
|
||||
new_child: Neue Unteraufgabe
|
||||
new_child_description: Erstellt ein zugehöriges Arbeitspaket als Unteraufgabe des aktuellen (übergeordneten) Arbeitspakets
|
||||
child: Unteraufgabe
|
||||
child: Kind
|
||||
child_description: Macht das zugehörige Arbeitspaket zu einer Unteraufgabe des aktuellen (übergeordneten) Arbeitspakets
|
||||
parent: Übergeordnetes Arbeitspaket
|
||||
parent_description: Wandelt das verknüpfte in ein übergeordnetes Arbeitspaket dieses Arbeitspakets um
|
||||
@@ -1809,7 +1816,7 @@ de:
|
||||
column_names: Spalten
|
||||
relations_to_type_column: Beziehungen zu %{type}
|
||||
relations_of_type_column: 'Beziehungen der Art: %{type}'
|
||||
child_work_packages: Unteraufgaben
|
||||
child_work_packages: Kinder
|
||||
group_by: Gruppiere Ergebnisse nach
|
||||
sort_by: Ergebnisse sortieren nach
|
||||
filters: Filter
|
||||
@@ -1996,6 +2003,29 @@ de:
|
||||
type: Typ
|
||||
version: Version
|
||||
watcher: Beobachter
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Gespeicherte Abfrage
|
||||
entity: Entität
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Ansichten
|
||||
filters: Filter
|
||||
orders: Sortierungen
|
||||
selects: Ausgewählte Attribute
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Abfrage
|
||||
parent: Übergeordnete Ansicht
|
||||
public: Öffentlich
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: muss akzeptiert werden.
|
||||
@@ -2355,7 +2385,7 @@ de:
|
||||
status_transition_invalid: ist ungültig, da kein valider Übergang vom alten zum neuen Status für die aktuelle Rolle des Nutzers existiert.
|
||||
status_invalid_in_type: ist ungültig, da der aktuelle Status nicht in diesem Typ vorhanden ist.
|
||||
type:
|
||||
cannot_be_milestone_due_to_children: kann kein Meilenstein werden, da dieses Arbeitspaket Unteraufgaben besitzt.
|
||||
cannot_be_milestone_due_to_children: kann kein Meilenstein werden, da dieses Arbeitspaket Unterelemente besitzt.
|
||||
priority_id:
|
||||
only_active_priorities_allowed: muss aktiv sein.
|
||||
category:
|
||||
@@ -3174,7 +3204,7 @@ de:
|
||||
error_custom_option_not_found: Option ist nicht vorhanden.
|
||||
error_enterprise_plan_needed: Sie benötigen den Enterprise-Plan %{plan}, um diese Aktion durchzuführen.
|
||||
error_enterprise_activation_user_limit: Ihr Konto konnte nicht aktiviert werden (Nutzerlimit erreicht). Bitte kontaktieren Sie Ihren Administrator um Zugriff zu erhalten.
|
||||
error_enterprise_token_invalid_domain: Die Enterprise-Edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected}).
|
||||
error_enterprise_token_invalid_domain: Die Enterprise edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected}).
|
||||
error_failed_to_delete_entry: Fehler beim Löschen dieses Eintrags.
|
||||
error_in_dependent: 'Fehler beim Versuch, abhängiges Objekt zu ändern: %{dependent_class} #%{related_id} - %{related_subject}: %{error}'
|
||||
error_in_new_dependent: 'Fehler beim Versuch, abhängiges Objekt zu erstellen: %{dependent_class} - %{related_subject}: %{error}'
|
||||
@@ -3461,7 +3491,7 @@ de:
|
||||
dates:
|
||||
working: "%{date} ist jetzt ein Arbeitstag"
|
||||
non_working: "%{date} ist jetzt ein arbeitsfreier Tag"
|
||||
progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-bezogen gesetzt
|
||||
progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-basiert gesetzt
|
||||
status_excluded_from_totals_set_to_false_message: jetzt in den Gesamtwerten der Hierarchie enthalten
|
||||
status_excluded_from_totals_set_to_true_message: jetzt von den Hierarchie-Gesamtwerten ausgeschlossen
|
||||
status_percent_complete_changed: "% abgeschlossen von %{old_value}% auf %{new_value} % geändert"
|
||||
@@ -3864,7 +3894,7 @@ de:
|
||||
label_enumerations: Aufzählungen
|
||||
label_enterprise: Enterprise
|
||||
label_enterprise_active_users: "%{current}/%{limit} gebuchte aktive Nutzer"
|
||||
label_enterprise_edition: Enterprise Edition
|
||||
label_enterprise_edition: Enterprise edition
|
||||
label_enterprise_support: Enterprise Support
|
||||
label_environment: Umgebung
|
||||
label_estimates_and_progress: Schätzungen und Fortschritt
|
||||
@@ -4213,6 +4243,7 @@ de:
|
||||
label_role_new: Neue Rolle
|
||||
label_role_grantable: Zuweisbare Rolle
|
||||
label_role_plural: Rollen
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Rolle für neue Mitglieder zuweisen
|
||||
label_scm: Versionskontrollsystem
|
||||
label_scroll_left: Nach links scrollen
|
||||
@@ -4982,7 +5013,7 @@ de:
|
||||
Erhöhen Sie diesen Wert zur Verbesserung der Performance, da die Erfassung des genutzten Festplattenspeichers Ressourcen-intensiv ist.
|
||||
oauth_application_details_html: 'Der Client Geheimcode wird nach dem Schließen dieses Fensters nicht mehr zugänglich sein. Bitte kopieren Sie diese Werte in die Nextcloud OpenProject Integrationseinstellungen:'
|
||||
oauth_application_details_link_text: Zu den Einstellungen gehen
|
||||
setup_documentation_details: 'Wenn Sie Hilfe bei der Konfiguration eines neuen Dateispeichers benötigen, konsultieren Sie bitte die Dokumentation: '
|
||||
setup_documentation_details: 'Wenn Sie Hilfe bei der Konfiguration eines neuen Datei-Speichers benötigen, konsultieren Sie bitte die Dokumentation: '
|
||||
setup_documentation_details_link_text: Dateispeicher einrichten
|
||||
show_warning_details: Um diesen Dateispeicher nutzen zu können, müssen Sie das Modul und den spezifischen Speicher in den Projekteinstellungen jedes gewünschten Projekts aktivieren.
|
||||
subversion:
|
||||
@@ -5153,6 +5184,9 @@ de:
|
||||
setting_mail_handler_body_delimiter_regex: Schneide E-Mails nach Zeile ab, die diesem regulären Ausdruck entspricht
|
||||
setting_mail_handler_ignore_filenames: Ignorierte E-Mail-Anhänge
|
||||
setting_new_project_user_role_id: Rolle, die einem Nicht-Administrator zugeordnet wird, der ein Projekt erstellt
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Benachrichtigung an den Autor senden, wenn ein neues Projekt erstellt wird
|
||||
setting_new_project_notification_text: Benachrichtigungstext
|
||||
setting_password_active_rules: Password requirements
|
||||
@@ -5692,7 +5726,7 @@ de:
|
||||
warning_user_limit_reached_admin_html: 'Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte [aktualisieren Sie Ihr Abonnement](upgrade_url) um sicherzustellen, dass externe Benutzer auf diese Instanz zugreifen können.
|
||||
|
||||
'
|
||||
warning_user_limit_reached_instructions: 'Du hast dein Nutzerlimit erreicht (%{current}/%{max} active users). Bitte kontaktiere sales@openproject.com um deinen Enterprise Edition Plan upzugraden und weitere Nutzer hinzuzufügen.
|
||||
warning_user_limit_reached_instructions: 'Du hast dein Nutzerlimit erreicht (%{current}/%{max} active users). Bitte kontaktiere sales@openproject.com um deinen Enterprise edition Plan upzugraden und weitere Nutzer hinzuzufügen.
|
||||
|
||||
'
|
||||
warning_protocol_mismatch_html: ''
|
||||
|
||||
@@ -419,7 +419,8 @@ el:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ el:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1109,6 +1114,8 @@ el:
|
||||
no_results_title_text: Δεν υπάρχουν προς το παρόν νέα για αναφορά.
|
||||
no_results_content_text: Προσθέστε ένα στοιχείο νέων
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -1999,6 +2006,29 @@ el:
|
||||
type: Τύπος
|
||||
version: Έκδοση
|
||||
watcher: Παρατηρητής
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: πρέπει να γίνει αποδεκτό.
|
||||
@@ -4218,6 +4248,7 @@ el:
|
||||
label_role_new: Νέος ρόλος
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Ρόλοι
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Ανάθεση ρόλων σε νέα μέλη
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5152,6 +5183,9 @@ el:
|
||||
setting_mail_handler_body_delimiter_regex: Περικοπή των email που ταιριάζουμε με αυτό το regex
|
||||
setting_mail_handler_ignore_filenames: Συνημμένα mail που αγνοήθηκαν
|
||||
setting_new_project_user_role_id: Ο ρόλος δόθηκε σε μη-διαχειριστή χρήστη ο οποίος δημιουργεί ένα έργο
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ eo:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ eo:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ eo:
|
||||
no_results_title_text: Nun estas neniu novaĵo por informi.
|
||||
no_results_content_text: Aldoni novan eron
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ eo:
|
||||
type: Tipo
|
||||
version: Versio
|
||||
watcher: Atentanto
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: devas esti akceptita.
|
||||
@@ -4219,6 +4249,7 @@ eo:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roloj
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ eo:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ es:
|
||||
error_special_characters: No se permiten caracteres especiales
|
||||
error_not_fully_uppercased: Debe estar en mayúsculas
|
||||
error_in_use: Ya está en uso como identificador activo de otro proyecto
|
||||
error_reserved: Reservado por el historial de identificadores de otro proyecto
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Necesita revisión manual
|
||||
remaining_projects:
|
||||
one: "... 1 proyecto más"
|
||||
@@ -460,8 +461,12 @@ es:
|
||||
ignore: Descartar cambios
|
||||
save: Guardar cambios y continuar
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Rol: %{role}'
|
||||
no_role: Seleccionar rol
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No hay transiciones de estado configuradas
|
||||
description: Añade estados para empezar a configurar los flujos de trabajo de este rol
|
||||
@@ -1107,6 +1112,8 @@ es:
|
||||
no_results_title_text: No hay noticias sobre las que informar por el momento.
|
||||
no_results_content_text: Añadir un elemento de noticias
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Asignar todos los permisos de %{module}
|
||||
section_uncheck_all_label: Quitar todos los permisos de %{module}
|
||||
@@ -1448,7 +1455,7 @@ es:
|
||||
automatic_with_children: Fechas determinadas por paquetes de trabajo secundarios.
|
||||
automatic_with_predecessor: La fecha de inicio la fija un predecesor.
|
||||
manual_mobile: Programado manualmente.
|
||||
manually_scheduled: Programado manualmente. No afectadas por relaciones.
|
||||
manually_scheduled: Programado manualmente. Fechas no afectadas por relaciones.
|
||||
blankslate:
|
||||
title: Sin predecesores
|
||||
description: Para activar la programación automática, este paquete de trabajo debe tener al menos un predecesor. Entonces se programará automáticamente para que comience después del predecesor más cercano.
|
||||
@@ -1995,6 +2002,29 @@ es:
|
||||
type: Tipo
|
||||
version: Versión
|
||||
watcher: Observador
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: debe ser aceptado.
|
||||
@@ -4210,6 +4240,7 @@ es:
|
||||
label_role_new: Nuevo rol
|
||||
label_role_grantable: Rol otorgable
|
||||
label_role_plural: Perfiles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Asignar rol a nuevos miembros
|
||||
label_scm: SCM
|
||||
label_scroll_left: Desplazar hacia la izquierda
|
||||
@@ -5142,6 +5173,9 @@ es:
|
||||
setting_mail_handler_body_delimiter_regex: Truncar correos que coincidan con esta expresión regular
|
||||
setting_mail_handler_ignore_filenames: Archivos adjuntos de email ignorados
|
||||
setting_new_project_user_role_id: Papel ortorgado a usuario no administrador que crea un proyecto
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Enviar notificación al autor al crear un nuevo proyecto
|
||||
setting_new_project_notification_text: Texto de la notificación
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ et:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ et:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ et:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ et:
|
||||
type: Tüüp
|
||||
version: Versioon
|
||||
watcher: Jälgija
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ et:
|
||||
label_role_new: Uus roll
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Rollid
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: Lähtekoodi haldusvahendid
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5155,6 +5186,9 @@ et:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Projekti looja vaikimisi roll oma loodud projektis
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ eu:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ eu:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ eu:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ eu:
|
||||
type: Type
|
||||
version: Bertsioa
|
||||
watcher: Watcher
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ eu:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ eu:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ fa:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ fa:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ fa:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ fa:
|
||||
type: نوع
|
||||
version: نسخه
|
||||
watcher: ناظر
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ fa:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: نقشها
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ fa:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ fi:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ fi:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ fi:
|
||||
no_results_title_text: Tällä hetkellä ei ole uutisia.
|
||||
no_results_content_text: Lisää uutinen
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ fi:
|
||||
type: Tyyppi
|
||||
version: Versio
|
||||
watcher: Seuraajat
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: täytyy olla hyväksytty.
|
||||
@@ -4217,6 +4247,7 @@ fi:
|
||||
label_role_new: Uusi rooli
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roolit
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Määritä rooli uusille jäsenille
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5155,6 +5186,9 @@ fi:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Rooli joka annetaan projektin luojalle, joka ei ole hallinnoija (admin)
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ fil:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ fil:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ fil:
|
||||
no_results_title_text: Sa kasalukuyan ay walang mga balita para ma-ireport.
|
||||
no_results_content_text: Magdagdag ng bagong news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ fil:
|
||||
type: Uri
|
||||
version: Bersyon
|
||||
watcher: Tagapagmasid
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: kailangang tanggapin.
|
||||
@@ -4219,6 +4249,7 @@ fil:
|
||||
label_role_new: Bagong tungkulin
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Ang mga tungkulin
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Magtalaga ng tungkulin ss mga bagong miyembro
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5153,6 +5184,9 @@ fil:
|
||||
setting_mail_handler_body_delimiter_regex: Ang nga truncate email ay nagkakatugma sa regex na ito
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Ibinigay na tungkulin para sa non-admin na gumagamit isa sa mga lumilikha ng proyekto
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ fr:
|
||||
error_special_characters: Caractères spéciaux non autorisés
|
||||
error_not_fully_uppercased: Doit être en majuscules
|
||||
error_in_use: Déjà utilisé comme alias actif d'un autre projet
|
||||
error_reserved: Réservé par l'historique des alias d'un autre projet
|
||||
error_used_in_past: Réservé par l'historique des alias d'un autre projet
|
||||
error_reserved_by_system: Réservé comme mot-clé du système
|
||||
error_unknown: Nécessite une vérification manuelle
|
||||
remaining_projects:
|
||||
one: "... 1 projet supplémentaire"
|
||||
@@ -460,8 +461,12 @@ fr:
|
||||
ignore: Ignorer les changements
|
||||
save: Enregistrer les modifications et continuer
|
||||
role_selector:
|
||||
title: Sélectionner les rôles
|
||||
label: 'Rôle : %{role}'
|
||||
no_role: Sélectionner un rôle
|
||||
roles:
|
||||
one: "%{count} rôle sélectionné"
|
||||
other: "%{count} rôles sélectionnés"
|
||||
blankslate:
|
||||
title: Aucune transition de statut configurée
|
||||
description: Ajouter des statuts pour commencer à configurer des workflows pour ce rôle
|
||||
@@ -1110,6 +1115,8 @@ fr:
|
||||
no_results_title_text: Il n'y a actuellement aucune actualité à publier.
|
||||
no_results_content_text: Ajouter une actualité
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Attribuer toutes les autorisations %{module}
|
||||
section_uncheck_all_label: Désattribuer toutes les autorisations %{module}
|
||||
@@ -1993,6 +2000,29 @@ fr:
|
||||
type: Type
|
||||
version: Version
|
||||
watcher: Observateur
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Requête persistante
|
||||
entity: Entité
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Nom
|
||||
views: Affichages
|
||||
filters: Filtres
|
||||
orders: Commandes
|
||||
selects: Sélectionne
|
||||
persisted_view:
|
||||
name: Nom
|
||||
query: Requête
|
||||
parent: Vue parente
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Informations secondaires
|
||||
show_status_badge: Afficher le badge d'état
|
||||
show_email: Afficher l'adresse électronique
|
||||
tag_source: Source des étiquettes
|
||||
tag_limit: Limite des étiquettes
|
||||
card_size: Taille des cartes
|
||||
columns_per_row: Colonne par ligne
|
||||
errors:
|
||||
messages:
|
||||
accepted: doi(ven)t être accepté(e)(s).
|
||||
@@ -4212,6 +4242,7 @@ fr:
|
||||
label_role_new: Nouveau rôle
|
||||
label_role_grantable: Rôle admissible
|
||||
label_role_plural: Rôles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assigner un rôle aux nouveaux membres
|
||||
label_scm: SCM
|
||||
label_scroll_left: Défilement vers la gauche
|
||||
@@ -5148,6 +5179,9 @@ fr:
|
||||
setting_mail_handler_body_delimiter_regex: Tronquer les e-mails correspondant à cette expression régulière
|
||||
setting_mail_handler_ignore_filenames: Pièces jointes du courrier ignorées
|
||||
setting_new_project_user_role_id: Rôle donné à un utilisateur non administrateur qui crée un projet
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Envoyer une notification à l'auteur lors de la création d'un nouveau projet
|
||||
setting_new_project_notification_text: Texte de la notification
|
||||
setting_password_active_rules: Exigences relatives au mot de passe
|
||||
|
||||
@@ -431,7 +431,8 @@ he:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -476,8 +477,14 @@ he:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
two: "%{count} roles selected"
|
||||
many: "%{count} roles selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1140,6 +1147,8 @@ he:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: להוסיף פריט חדשות
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2040,6 +2049,29 @@ he:
|
||||
type: סוג
|
||||
version: גירסה
|
||||
watcher: צופה
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4341,6 +4373,7 @@ he:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: תפקידים
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5289,6 +5322,9 @@ he:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ hi:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ hi:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1110,6 +1115,8 @@ hi:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2000,6 +2007,29 @@ hi:
|
||||
type: प्रकार
|
||||
version: संस्करण
|
||||
watcher: वॉचर
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: must be accepted.
|
||||
@@ -4219,6 +4249,7 @@ hi:
|
||||
label_role_new: New role
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: भूमिकाएं
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assign role to new members
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5157,6 +5188,9 @@ hi:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -425,7 +425,8 @@ hr:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -468,8 +469,13 @@ hr:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
few: "%{count} roles selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1125,6 +1131,8 @@ hr:
|
||||
no_results_title_text: Nema novih vijesti.
|
||||
no_results_content_text: Nova vijest
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2020,6 +2028,29 @@ hr:
|
||||
type: Tip
|
||||
version: Verzija
|
||||
watcher: Nadglednik
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: mora biti prihvaćeno.
|
||||
@@ -4278,6 +4309,7 @@ hr:
|
||||
label_role_new: Nova rola
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Role
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Dodijeli uloge novim korisnicima
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5219,6 +5251,9 @@ hr:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role given to a non-admin user who creates a project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ hu:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
one: "... 1 more project"
|
||||
@@ -460,8 +461,12 @@ hu:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1116,6 +1121,8 @@ hu:
|
||||
no_results_title_text: Nincs megjeleníthető hír.
|
||||
no_results_content_text: Hír hozzáadása
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -2024,6 +2031,29 @@ hu:
|
||||
type: Típus
|
||||
version: Verzió
|
||||
watcher: Megfigyelő
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: el kell fogadni.
|
||||
@@ -4283,6 +4313,7 @@ hu:
|
||||
label_role_new: Új szerepkör
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Szerepkörök
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Szerep hozzárendelése az új tagokhoz
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5245,6 +5276,9 @@ hu:
|
||||
setting_mail_handler_body_delimiter_regex: E-mailek csonkítása a megegyező kifejezéssel
|
||||
setting_mail_handler_ignore_filenames: Összes melléklet figyelmen kívül hagyva
|
||||
setting_new_project_user_role_id: Szerepkör a nem admin felhasználónak, aki létrehoz egy projektet,
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -413,7 +413,8 @@ id:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
other: "... %{count} more projects"
|
||||
@@ -452,8 +453,11 @@ id:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1094,6 +1098,8 @@ id:
|
||||
no_results_title_text: There is currently no news to report.
|
||||
no_results_content_text: Add a news item
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -1984,6 +1990,29 @@ id:
|
||||
type: Tipe
|
||||
version: Versi
|
||||
watcher: Pemantau
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: harus disetujui.
|
||||
@@ -4169,6 +4198,7 @@ id:
|
||||
label_role_new: Role baru
|
||||
label_role_grantable: Grantable role
|
||||
label_role_plural: Roles
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Menetapkan role kepada anggota baru
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scroll left
|
||||
@@ -5092,6 +5122,9 @@ id:
|
||||
setting_mail_handler_body_delimiter_regex: Truncate emails matching this regex
|
||||
setting_mail_handler_ignore_filenames: Ignored mail attachments
|
||||
setting_new_project_user_role_id: Role yang diberikan kepada user non-admin yang membuat Project
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -419,7 +419,8 @@ it:
|
||||
error_special_characters: I caratteri speciali non sono consentiti
|
||||
error_not_fully_uppercased: Deve essere maiuscolo
|
||||
error_in_use: Già in uso come identificatore attivo di un altro progetto
|
||||
error_reserved: Riservato dalla cronologia degli identificatori di un altro progetto
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Necessita di controllo manuale
|
||||
remaining_projects:
|
||||
one: "... 1 altro progetto"
|
||||
@@ -460,8 +461,12 @@ it:
|
||||
ignore: Ignora le modifiche
|
||||
save: Salva le modifiche e continua
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Ruolo: %{role}'
|
||||
no_role: Seleziona il ruolo
|
||||
roles:
|
||||
one: "%{count} role selected"
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: Nessuna transizione di stato configurata
|
||||
description: Aggiungi stati per iniziare a configurare i flussi di lavoro per questo ruolo
|
||||
@@ -1109,6 +1114,8 @@ it:
|
||||
no_results_title_text: Al momento non c'è nessuna notizia da segnalare.
|
||||
no_results_content_text: Aggiungi una notizia
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assegna tutti i permessi di %{module}
|
||||
section_uncheck_all_label: Annulla l'assegnazione di tutti i permessi di %{module}
|
||||
@@ -1998,6 +2005,29 @@ it:
|
||||
type: Tipo
|
||||
version: Versione
|
||||
watcher: Osservatore
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: deve essere accettato.
|
||||
@@ -4219,6 +4249,7 @@ it:
|
||||
label_role_new: Nuovo ruolo
|
||||
label_role_grantable: Ruolo ammissibile
|
||||
label_role_plural: Ruoli
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: Assegna ruolo ai nuovi membri
|
||||
label_scm: SCM
|
||||
label_scroll_left: Scorri a sinistra
|
||||
@@ -5155,6 +5186,9 @@ it:
|
||||
setting_mail_handler_body_delimiter_regex: Troncare le email che corrispondono a questa espressione regolare
|
||||
setting_mail_handler_ignore_filenames: Allegati email ignorati
|
||||
setting_new_project_user_role_id: Ruolo assegnato ad un utente non amministratore che crea un progetto
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Invia una notifica all'autore quando crea un nuovo progetto
|
||||
setting_new_project_notification_text: Testo della notifica
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -339,13 +339,13 @@ ja:
|
||||
success: MCP configuration was updated successfully.
|
||||
scim_clients:
|
||||
authentication_methods:
|
||||
sso: IDプロバイダーからのJWT
|
||||
oauth2_client: OAuth 2.0クライアント認証情報
|
||||
sso: アイデンティティプロバイダからのJWT
|
||||
oauth2_client: OAuth 2.0 クライアント資格情報
|
||||
oauth2_token: 静的アクセストークン
|
||||
created_client_credentials_dialog_component:
|
||||
title: クライアント認証情報の作成
|
||||
heading: クライアント認証情報が生成されました
|
||||
one_time_hint: クライアント・シークレットが表示されるのはこの時だけです。必ずコピーしてください。
|
||||
title: クライアントの資格情報が作成されました
|
||||
heading: クライアントの資格情報が生成されました
|
||||
one_time_hint: クライアントのシークレットが表示される唯一の時間です。今すぐコピーしてください。
|
||||
created_token_dialog_component:
|
||||
title: トークンを作成しました
|
||||
heading: トークンが生成されました
|
||||
@@ -358,21 +358,21 @@ ja:
|
||||
edit:
|
||||
label_delete_scim_client: SCIM クライアントを削除
|
||||
form:
|
||||
auth_provider_description: これは、SCIM プロバイダによって追加されたユーザが OpenProject で認証するために使用するサービスです。
|
||||
authentication_method_description_html: これは SCIM クライアントが OpenProject で認証する方法です。OAuth トークンに<code>scim_v2</code>スコープが含まれていることを確認してください。
|
||||
description: これらの設定オプションの詳細については、[SCIMクライアントの設定に関する文書](docs_url)を参照してください。
|
||||
auth_provider_description: これは、SCIMプロバイダが追加したユーザーがOpenProjectでの認証に使用するサービスです。
|
||||
authentication_method_description_html: これは SCIM クライアントが OpenProject で認証する方法です。OAuth トークンに <code>scim_v2</code> スコープが含まれていることを確認してください。
|
||||
description: 設定オプションの詳細については、[SCIM クライアントの設定に関するドキュメント](docs_url)を参照してください。
|
||||
jwt_sub_description: 例えば、Keycloakの場合、これはSCIMクライアントに関連付けられたサービスアカウントのUUIDです。あなたのユースケースにあった Subject claim を見つける方法については [ドキュメント](docs_url) を参照してください。
|
||||
name_description: このクライアントが設定された理由を他の管理者が理解しやすい名前を選んでください。
|
||||
name_description: 他の管理者がこのクライアントが設定された理由を理解するのに役立つ名前を選択してください。
|
||||
index:
|
||||
description: ここで設定された SCIM クライアントは、OpenProject SCIM サーバ API と対話し、ユーザアカウントやグループのプロビジョニング、更新、デプロビジョニングを行うことができます。
|
||||
label_create_button: SCIMクライアントの追加
|
||||
description: ここで設定されたSCIMクライアントは、OpenProjectのSCIMサーバー APIと相互作用して、ユーザーアカウントとグループのプロビジョニング、更新、およびデプロビジョニングを行うことができます。
|
||||
label_create_button: SCIMクライアントを追加
|
||||
new:
|
||||
title: 新しいSCIMクライアント
|
||||
revoke_static_token_dialog_component:
|
||||
confirm_button: 取り消す
|
||||
title: 静的トークンの失効
|
||||
heading: このトークンを本当に取り消しますか?
|
||||
description: このトークンを使っている SCIM クライアントは、OpenProject の SCIM サーバ API にアクセスできなくなります。
|
||||
title: 静的トークンを取り消す
|
||||
heading: このトークンを取り消してもよろしいですか?
|
||||
description: このトークンを使用する SCIM クライアントは、OpenProject の SCIM サーバ API にアクセスできなくなります。
|
||||
table_component:
|
||||
blank_slate:
|
||||
title: SCIMクライアントがまだ設定されていません
|
||||
@@ -413,7 +413,8 @@ ja:
|
||||
error_special_characters: Special characters not allowed
|
||||
error_not_fully_uppercased: Must be uppercase
|
||||
error_in_use: Already in use as another project's active handle
|
||||
error_reserved: Reserved by another project's handle history
|
||||
error_used_in_past: Reserved by another project's handle history
|
||||
error_reserved_by_system: Reserved as a system keyword
|
||||
error_unknown: Needs manual review
|
||||
remaining_projects:
|
||||
other: "... %{count} more projects"
|
||||
@@ -452,8 +453,11 @@ ja:
|
||||
ignore: Ignore changes
|
||||
save: Save changes and continue
|
||||
role_selector:
|
||||
title: Select roles
|
||||
label: 'Role: %{role}'
|
||||
no_role: Select role
|
||||
roles:
|
||||
other: "%{count} roles selected"
|
||||
blankslate:
|
||||
title: No status transitions configured
|
||||
description: Add statuses to start configuring workflows for this role
|
||||
@@ -1043,26 +1047,26 @@ ja:
|
||||
other: また、 %{shared_work_packages_link} はこのユーザーと共有されています。
|
||||
remove_project_membership_or_work_package_shares_too: 直接のメンバーとしてのユーザーだけを削除したい(および共有を維持したい)、またはワークパッケージの共有も削除しますか?
|
||||
will_remove_all_user_access_priveleges: このメンバーを削除すると、プロジェクトへのユーザーのすべてのアクセス権が削除されます。ユーザーはまだサイトの一部として存在します。
|
||||
will_remove_all_group_access_priveleges: このメンバを削除すると、プロジェクトに対するグループのすべてのアクセス権が削除されます。グループはサイトの一部としてまだ存在します。
|
||||
cannot_delete_inherited_membership: このプロジェクトのメンバーであるグループに所属しているため、このメンバーを削除することはできません。
|
||||
cannot_delete_inherited_membership_note_admin_html: "%{administration_settings_link}で、プロジェクトのメンバーとしてグループを削除することも、特定のメンバーをグループから削除することもできます。"
|
||||
cannot_delete_inherited_membership_note_non_admin: プロジェクトのメンバーとしてグループを削除するか、管理者に連絡してこの特定のメンバーをグループから削除することができます。
|
||||
will_remove_all_group_access_priveleges: このメンバーを削除すると、グループのすべてのアクセス権がプロジェクトに削除されます。グループはサイトの一部として存在します。
|
||||
cannot_delete_inherited_membership: このメンバーはこのプロジェクトのメンバーであるグループに属しているため、削除できません。
|
||||
cannot_delete_inherited_membership_note_admin_html: プロジェクトのメンバーとしてグループを削除するか、 %{administration_settings_link} のグループからこの特定のメンバーを削除することができます。
|
||||
cannot_delete_inherited_membership_note_non_admin: プロジェクトのメンバーとしてグループを削除するか、管理者に問い合わせてグループから特定のメンバーを削除することができます。
|
||||
delete_work_package_shares_dialog:
|
||||
title: ワーク・パッケージ・シェアの破棄
|
||||
title: ワークパッケージの共有の取り消し
|
||||
shared_with_this_user_html:
|
||||
other: "%{all_shared_work_packages_link} はこのユーザーと共有されています。"
|
||||
shared_with_this_group_html:
|
||||
other: "%{all_shared_work_packages_link} はこのグループと共有されています。"
|
||||
shared_with_permission_html:
|
||||
other: "%{shared_work_packages_link} のみが %{shared_role_name} 権限と共有されています。"
|
||||
revoke_all_or_with_role: すべての共有ワークパッケージ、または %{shared_role_name} 権限を持つワークパッケージのみへのアクセス権を剥奪しますか?
|
||||
will_not_affect_inherited_shares: "(これは、そのグループと共有しているワークパッケージには影響しません)。"
|
||||
cannot_remove_inherited: グループで共有されたワークパッケージの共有は削除できません。
|
||||
cannot_remove_inherited_with_role: ロール %{shared_role_name} で共有されるワークパッケージは、グループを介して共有され、削除することはできません。
|
||||
cannot_remove_inherited_note_admin_html: "%{administration_settings_link}、グループへの共有を取り消すか、グループからこの特定のメンバーを削除することができます。"
|
||||
cannot_remove_inherited_note_non_admin: グループへの共有を取り消すか、管理者に連絡して特定のメンバーをグループから削除することができます。
|
||||
will_revoke_directly_granted_access: このアクションは、グループと共有されているワークパッケージ以外の、すべてのワークパッケージへのアクセス権を剥奪する。
|
||||
will_revoke_access_to_all: このアクションは、すべてのアクセス権を剥奪する。
|
||||
revoke_all_or_with_role: 共有されたワークパッケージ、または %{shared_role_name} 権限を持つワークパッケージのみへのアクセスを取り消しますか?
|
||||
will_not_affect_inherited_shares: "(これはグループと共有されているワークパッケージには影響しません)。"
|
||||
cannot_remove_inherited: グループ間で共有されるワークパッケージは削除できません。
|
||||
cannot_remove_inherited_with_role: ワークパッケージとロール %{shared_role_name} が共有されているため、削除できません。
|
||||
cannot_remove_inherited_note_admin_html: あなたは、グループへの共有を取り消すか、 %{administration_settings_link} のグループからこの特定のメンバーを削除することができます。
|
||||
cannot_remove_inherited_note_non_admin: 共有をグループに取り消すか、管理者に問い合わせてグループから特定のメンバーを削除することができます。
|
||||
will_revoke_directly_granted_access: このアクションは、すべてのユーザーへのアクセスを取り消しますが、グループと共有されているワークパッケージです。
|
||||
will_revoke_access_to_all: このアクションは、すべてのユーザーへのアクセスを取り消します。
|
||||
my:
|
||||
access_token:
|
||||
dialog:
|
||||
@@ -1086,7 +1090,7 @@ ja:
|
||||
no_results_title_text: 現在、有効なアクセス トークンはありません。
|
||||
notice_api_token_revoked: APIトークンが削除されました。新しいトークンを作成するには、APIセクションの作成ボタンを使用してください。
|
||||
notice_rss_token_revoked: RSSトークンが削除されました。新しいトークンを作成するには、RSSセクションのリンクを使用してください。
|
||||
notice_ical_token_revoked: プロジェクト "%{project_name}" のカレンダー "%{calendar_name}" の iCalendar トークン "%{token_name}" が失効しました。このトークンを持つiCalendar URLは無効になりました。
|
||||
notice_ical_token_revoked: プロジェクト "%{token_name}" のカレンダー "%{calendar_name}" の iCalendar トークン "%{project_name}" が取り消されました。 このトークンのiCalendar URLは無効です。
|
||||
password_confirmation_dialog:
|
||||
confirmation_required: You need to enter your account password to confirm this change.
|
||||
title: Confirm your password to continue
|
||||
@@ -1095,6 +1099,8 @@ ja:
|
||||
no_results_title_text: 現在、報告するニュースはありません。
|
||||
no_results_content_text: ニュース項目を追加
|
||||
roles:
|
||||
edit:
|
||||
default_for_new_projects_warning: 'This role is configured as the default role given to non-admin users who create a project. Do not remove the following permissions, otherwise project creators will be unable to complete the setup of their newly created projects:'
|
||||
permissions:
|
||||
section_check_all_label: Assign all %{module} permissions
|
||||
section_uncheck_all_label: Unassign all %{module} permissions
|
||||
@@ -1109,7 +1115,7 @@ ja:
|
||||
force_password_change_hint: The user must set a new password on their next login. Automatically enabled when sending credentials via email.
|
||||
send_information_hint: Emails the password in plain text. When checked, the user will be required to change their password on first login.
|
||||
autologins:
|
||||
prompt: ログインしたまま %{num_days}
|
||||
prompt: "%{num_days} のログインを維持"
|
||||
sessions:
|
||||
session_name: "%{browser_name} %{browser_version} の %{os_name}"
|
||||
browser: ブラウザ
|
||||
@@ -1123,17 +1129,17 @@ ja:
|
||||
current: Current (this device)
|
||||
title: セッション管理
|
||||
instructions: You are logged in to your account through the following devices. Revoke sessions that you do not recognise or from devices you do not control.
|
||||
may_not_delete_current: 現在のセッションを削除することはできません。
|
||||
may_not_delete_current: 現在のセッションは削除できません。
|
||||
deletion_warning: Are you sure you want to revoke this session? You will be logged out on this device.
|
||||
groups:
|
||||
member_in_these_groups: このユーザーは現在以下のグループのメンバーです:
|
||||
no_results_title_text: このユーザーは現在どのグループのメンバーでもありません。
|
||||
summary_with_more_html: Member of %{names} and %{count_link}.
|
||||
more: "%{count} もっと見る"
|
||||
more: "%{count} 以上"
|
||||
summary_html: Member of %{names}.
|
||||
memberships:
|
||||
no_results_title_text: このユーザは現在プロジェクトのメンバーではありません。
|
||||
open_profile: プロフィール
|
||||
open_profile: プロファイルを開く
|
||||
invite_user_modal:
|
||||
invite: 招待
|
||||
title:
|
||||
@@ -1250,7 +1256,7 @@ ja:
|
||||
right_to_manage_members_missing: 'プレースホルダーユーザを削除する権限がありません。 プレースホルダー ユーザーがメンバーであるすべてのプロジェクトのメンバーを管理する権利はありません。
|
||||
|
||||
'
|
||||
delete_tooltip: プレースホルダー・ユーザーの削除
|
||||
delete_tooltip: プレースホルダー ユーザーを削除
|
||||
deletion_info:
|
||||
heading_html: Delete placeholder user %{name}
|
||||
data_consequences: 'プレースホルダー ユーザのすべての発生(担当者、担当者、その他のユーザ値など)は、「削除されたユーザー」というアカウントに再割り当てられます。 削除されたすべてのアカウントのデータがこのアカウントに再割り当てられるため、ユーザーが作成したデータと別の削除されたアカウントのデータを区別することはできません。
|
||||
@@ -1269,11 +1275,11 @@ ja:
|
||||
reactions:
|
||||
action_title: リアクト
|
||||
add_reaction: リアクションを追加
|
||||
react_with: "%{reaction} と リアクト"
|
||||
and_user: および %{user}
|
||||
react_with: "%{reaction} で反応する"
|
||||
and_user: と %{user}
|
||||
and_others:
|
||||
other: と %{count} その他
|
||||
reaction_by: "%{reaction} によって"
|
||||
reaction_by: "%{reaction} による"
|
||||
reportings:
|
||||
index:
|
||||
no_results_title_text: 現在、ステータス報告はありません。
|
||||
@@ -1283,19 +1289,20 @@ ja:
|
||||
status_color_text: |
|
||||
このステータスの色を割り当てたり変更する場合にクリックします。
|
||||
ステータスボタンに表示され、テーブル内のワークパッケージを強調表示するために使用できます。
|
||||
status_default_text: 新しいワークパッケージは、デフォルトでこのタイプに設定される。読み取り専用にはできない。
|
||||
status_default_text: 新しいワークパッケージはデフォルトでこのタイプに設定されています。読み取り専用にすることはできません。
|
||||
status_excluded_from_totals_text: |-
|
||||
このステータスを持つワークパッケージを、階層内の「作業」、「
|
||||
残作業」、「完了率」の合計から除外するには、このオプションをオンにします。
|
||||
このオプションをオンにすると、このステータスのワークパッケージを合計作業量、
|
||||
残作業量、および階層構造で完了させることができます。
|
||||
status_percent_complete_text_html: |-
|
||||
In [status-based progress calculation mode](setting_url), the % Complete of a work
|
||||
package is automatically set to this value when this status is selected.
|
||||
Ignored in work-based mode.
|
||||
status_readonly_html: |
|
||||
このステータスを持つワークパッケージを読み取り専用としてマークするには、このオプションをチェックする。
|
||||
ステータス以外の属性は変更できません。
|
||||
ワークパッケージを読み取り専用としてマークするには、このオプションをオンにしてください。
|
||||
ステータスを除いて変更することはできません。
|
||||
|
||||
<br>
|
||||
<strong>注意</strong>: 継承された値 (子やリレーションなど) は適用されます。
|
||||
<strong>メモ</strong>: 継承された値 (例えば、子や関連) が適用されます。
|
||||
index:
|
||||
no_results_title_text: 現在、ワークパッケージのステータスはありません。
|
||||
no_results_content_text: 新しいステータスを追加
|
||||
@@ -1305,7 +1312,7 @@ ja:
|
||||
is_readonly: 読み取り専用
|
||||
excluded_from_totals: 合計から除外
|
||||
themes:
|
||||
dark: 暗い
|
||||
dark: ダーク
|
||||
light: ライト
|
||||
sync_with_os: 自動(OSのテーマ設定に追従)
|
||||
types:
|
||||
@@ -1468,15 +1475,15 @@ ja:
|
||||
could_not_be_saved: '次のワークパッケージを保存できませんでした:'
|
||||
none_could_be_saved: "%{total} ワークパッケージのどれも更新できませんでした。"
|
||||
x_out_of_y_could_be_saved: "%{failing} の %{total} ワークパッケージのうち、 %{success} を更新できませんでした。"
|
||||
selected_because_descendants: "%{selected} のワークパッケージが選択されたが、合計 %{total} のワークパッケージが影響を受け、その中には子孫も含まれる。"
|
||||
descendant: 選択された子孫
|
||||
selected_because_descendants: "%{selected} ワークパッケージが選択されている間、合計で %{total} ワークパッケージが子孫を含む影響を受けます。"
|
||||
descendant: 選択された子孫です
|
||||
move:
|
||||
no_common_statuses_exists: 選択されたすべてのワークパッケージに利用できるステータスはありません。 それらの状態は変更できません。
|
||||
unsupported_for_multiple_projects: 複数のプロジェクトからのワークパッケージの一括移動 / コピーはサポートされていません
|
||||
current_type_not_available_in_target_project: 'ワークパッケージの現在のタイプがターゲットプロジェクトで有効になっていません。変更しない場合は、ターゲットプロジェクトでタイプを有効にしてください。そうでない場合は、リストからターゲットプロジェクトで使用可能なタイプを選択してください。
|
||||
current_type_not_available_in_target_project: 'ターゲット プロジェクトで現在のワークパッケージのタイプが有効になっていません。 変更を行わないようにしたい場合は、対象プロジェクトのタイプを有効にしてください。 それ以外の場合は、リストからターゲット プロジェクトで使用可能なタイプを選択します。
|
||||
|
||||
'
|
||||
bulk_current_type_not_available_in_target_project: 'ワークパッケージの現在のタイプがターゲットプロジェクトで有効になっていません。変更しない場合は、ターゲットプロジェクトでタイプを有効にしてください。そうでない場合は、リストからターゲットプロジェクトで使用可能なタイプを選択してください。
|
||||
bulk_current_type_not_available_in_target_project: '現在のタイプのワークパッケージはターゲット プロジェクトで有効になっていません。 変更を行わないようにしたい場合は、対象プロジェクトのタイプを有効にしてください。 それ以外の場合は、リストからターゲット プロジェクトで使用可能なタイプを選択します。
|
||||
|
||||
'
|
||||
sharing:
|
||||
@@ -1502,9 +1509,9 @@ ja:
|
||||
no_results_title_text: 現在、有効なバージョンはありません。
|
||||
work_package_relations_tab:
|
||||
index:
|
||||
action_bar_title: 他のワークパッケージとのリレーションを追加して、それらの間にリンクを作成する。
|
||||
no_results_title_text: 現在、利用可能な関係はない。
|
||||
blankslate_heading: 関係なし
|
||||
action_bar_title: 他のワークパッケージにリレーションを追加して、その間にリンクを作成します。
|
||||
no_results_title_text: 現在利用可能なリレーションはありません。
|
||||
blankslate_heading: リレーションなし
|
||||
blankslate_description: このワークパッケージにはまだリレーションがありません。
|
||||
label_add_child_button: 子要素
|
||||
label_add_x: "%{x} を追加"
|
||||
@@ -1982,6 +1989,29 @@ ja:
|
||||
type: タイプ
|
||||
version: バージョン
|
||||
watcher: ウォッチャー
|
||||
ordered_persisted_query_entity:
|
||||
persisted_query: Persisted query
|
||||
entity: Entity
|
||||
position: Position
|
||||
persisted_query:
|
||||
name: Name
|
||||
views: Views
|
||||
filters: Filters
|
||||
orders: Orders
|
||||
selects: Selects
|
||||
persisted_view:
|
||||
name: Name
|
||||
query: Query
|
||||
parent: Parent view
|
||||
public: Public
|
||||
user_card_view:
|
||||
secondary_info: Secondary info
|
||||
show_status_badge: Show status badge
|
||||
show_email: Show email
|
||||
tag_source: Tag source
|
||||
tag_limit: Tag limit
|
||||
card_size: Card size
|
||||
columns_per_row: Columns per row
|
||||
errors:
|
||||
messages:
|
||||
accepted: は受諾しなければなりません。
|
||||
@@ -4160,6 +4190,7 @@ ja:
|
||||
label_role_new: 新しいロール
|
||||
label_role_grantable: 権限のある役割
|
||||
label_role_plural: ロール
|
||||
label_role_missing_permissions: "%{role} (missing required permissions)"
|
||||
label_role_search: 新しいメンバーに役割を割り当てる
|
||||
label_scm: バージョン管理システム
|
||||
label_scroll_left: 左にスクロール
|
||||
@@ -5087,6 +5118,9 @@ ja:
|
||||
setting_mail_handler_body_delimiter_regex: この正規表現に一致するメールを切り捨てる
|
||||
setting_mail_handler_ignore_filenames: 無視するメールの添付ファイル
|
||||
setting_new_project_user_role_id: システム管理者以外のプロジェクト作成者に設定するロール
|
||||
setting_new_project_user_role_id_caption: 'Only roles that include the permissions to edit project attributes and to manage members are listed, so that the creator can complete the project setup.
|
||||
|
||||
'
|
||||
setting_new_project_send_confirmation_email: Send notification to author when creating a new project
|
||||
setting_new_project_notification_text: Notification text
|
||||
setting_password_active_rules: Password requirements
|
||||
|
||||
@@ -109,7 +109,7 @@ ca:
|
||||
button_save: Desa
|
||||
button_settings: Configuració
|
||||
button_uncheck_all: Desmarca-ho tot
|
||||
button_update: Actualitzar
|
||||
button_update: Actualitza
|
||||
button_export-atom: Descarregar Atom
|
||||
button_generate_pdf: Generate PDF
|
||||
button_create: Crear
|
||||
|
||||
@@ -143,7 +143,7 @@ de:
|
||||
description_available_columns: Verfügbare Spalten
|
||||
description_current_position: 'Sie sind hier: '
|
||||
description_select_work_package: 'Arbeitspaket #%{id} auswählen'
|
||||
description_subwork_package: 'Unteraufgabe von Arbeitspaket #%{id}'
|
||||
description_subwork_package: 'Kind von Arbeitspaket #%{id}'
|
||||
editor:
|
||||
revisions: Lokale Änderungen anzeigen
|
||||
no_revisions: Keine lokalen Änderungen gefunden
|
||||
@@ -460,7 +460,7 @@ de:
|
||||
label_total_progress: "%{percent}% Gesamtfortschritt"
|
||||
label_total_amount: 'Gesamt: %{amount}'
|
||||
label_updated_on: aktualisiert am
|
||||
label_value_derived_from_children: "(aggregierter Wert von Unteraufgaben)"
|
||||
label_value_derived_from_children: "(aggregierter Wert von Kindelementen)"
|
||||
label_children_derived_duration: Aggregierte Dauer der Unteraufgaben
|
||||
label_warning: Warnung
|
||||
label_work_package: Arbeitspaket
|
||||
@@ -790,7 +790,7 @@ de:
|
||||
title: Neues Arbeitspaket
|
||||
header: 'Neu: %{type}'
|
||||
header_no_type: Neues Arbeitspaket (Typ noch nicht gesetzt)
|
||||
header_with_parent: 'Neu: %{type} (Unteraufgabe von %{parent_type} #%{id})'
|
||||
header_with_parent: 'Neu: %{type} (Kind von %{parent_type} #%{id})'
|
||||
button: Erstellen
|
||||
duplicate:
|
||||
title: Arbeitspaket duplizieren
|
||||
|
||||
@@ -34,12 +34,12 @@ ja:
|
||||
draggable_hint: |
|
||||
埋め込み画像または添付ファイルをエディタにドラッグします。
|
||||
ドラッグしつづけると閉じているエディタ領域が開きます。
|
||||
quarantined_hint: ウイルスが発見されたように、ファイルは隔離されています。ダウンロードできません。
|
||||
quarantined_hint: ウイルスが発見されたため,ファイルは隔離されています。ダウンロードできません。
|
||||
autocomplete_ng_select:
|
||||
add_tag: アイテムを追加
|
||||
add_tag: 項目を追加
|
||||
clear_all: すべてクリア
|
||||
loading: 読み込み中...
|
||||
not_found: アイテムが見つかりません
|
||||
not_found: 見つかりませんでした
|
||||
type_to_search: 検索キーワードを入力
|
||||
autocomplete_select:
|
||||
placeholder:
|
||||
@@ -71,7 +71,7 @@ ja:
|
||||
button_back_to_list_view: リスト表示に戻る
|
||||
button_cancel: キャンセル
|
||||
button_close: 閉じる
|
||||
button_change_project: 別のプロジェクトに移動
|
||||
button_change_project: 他のプロジェクトに移る
|
||||
button_check_all: 全てを選択
|
||||
button_configure-form: フォームを設定
|
||||
button_confirm: 確認
|
||||
@@ -79,7 +79,7 @@ ja:
|
||||
button_copy: コピー
|
||||
button_copy_to_clipboard: クリップボードにコピー
|
||||
button_copy_link_to_clipboard: クリップボードにリンクをコピー
|
||||
button_copy_to_other_project: 別のプロジェクトで複製
|
||||
button_copy_to_other_project: 別のプロジェクトで複製する
|
||||
button_custom-fields: カスタムフィールド
|
||||
button_delete: 削除
|
||||
button_delete_watcher: ウォッチャーを削除
|
||||
@@ -101,7 +101,7 @@ ja:
|
||||
button_open_fullscreen: 全画面表示を開く
|
||||
button_show_cards: カードビュー表示
|
||||
button_show_list: リストビュー表示
|
||||
button_show_table: テーブルビューを表示
|
||||
button_show_table: テーブル表示
|
||||
button_show_gantt: ガントビューを表示
|
||||
button_show_fullscreen: 全画面表示
|
||||
button_more_actions: その他の操作
|
||||
@@ -111,7 +111,7 @@ ja:
|
||||
button_uncheck_all: 全てを選択解除
|
||||
button_update: 更新
|
||||
button_export-atom: Atomをダウンロード
|
||||
button_generate_pdf: PDFを生成
|
||||
button_generate_pdf: PDF作成
|
||||
button_create: 作成
|
||||
card:
|
||||
add_new: 新規カード追加
|
||||
@@ -145,8 +145,8 @@ ja:
|
||||
description_select_work_package: 'ワークパッケージを選択 #%{id}'
|
||||
description_subwork_package: 'ワークパッケージの子 #%{id}'
|
||||
editor:
|
||||
revisions: ローカルの変更を表示
|
||||
no_revisions: ローカルの変更は見つかりませんでした
|
||||
revisions: ローカルの修正を表示
|
||||
no_revisions: ローカルでの修正は見つからず
|
||||
preview: プレビューモードの切り替え
|
||||
source_code: Markdown ソースモードの切り替え
|
||||
error_saving_failed: '次のエラーで文書を保存するのに失敗しました: %{error}'
|
||||
@@ -159,7 +159,7 @@ ja:
|
||||
attribute_reference:
|
||||
macro_help_tooltip: このテキストセグメントはマクロによって動的にレンダリングされています。
|
||||
not_found: 要求されたリソースが見つかりませんでした
|
||||
nested_macro: このマクロは %{model} %{id} を再帰的に参照しています。
|
||||
nested_macro: このマクロは %{model} %{id}を再帰的に参照している。
|
||||
invalid_attribute: 選択した属性 '%{name}' は存在しません。
|
||||
child_pages:
|
||||
button: 子ページへのリンク
|
||||
@@ -216,10 +216,10 @@ ja:
|
||||
calendar:
|
||||
empty_state_header: 休業日
|
||||
empty_state_description: 休業日が定義されていません。「休業日を追加」ボタンをクリックして日付を追加してください。
|
||||
new_date: "(新規)"
|
||||
new_date: "(新)"
|
||||
add_non_working_day: 休業日を追加
|
||||
already_added_error: この日付の非作業日はすでに存在します。それぞれの日付に1つの非作業日が作成されます。
|
||||
change_button: 保存してスケジュールを変更
|
||||
already_added_error: この日付の非営業日はすでに存在します。一意の日付に対して作成できる非営業日は1つだけです。
|
||||
change_button: 保存して再スケジュール
|
||||
change_title: 営業日を変更する
|
||||
removed_title: 以下の日を非稼働日リストから削除します:
|
||||
change_description: 営業日とみなす曜日を変更すると、このサイト内のすべてのプロジェクトのすべてのワークパッケージの開始日と終了日に影響を与える可能性があります。
|
||||
@@ -301,14 +301,14 @@ ja:
|
||||
ical_sharing_modal:
|
||||
title: カレンダーを購読する
|
||||
inital_setup_error_message: データ取得中にエラーが発生しました。
|
||||
description: URL(iCalendar)を使って外部クライアントでこのカレンダーを購読し、そこから最新のワークパッケージ情報を見ることができます。
|
||||
warning: このURLを他のユーザーと共有しないでください。このリンクがあれば、誰でもアカウントやパスワードなしでワークパッケージの詳細を見ることができます。
|
||||
token_name_label: どこで使うのですか?
|
||||
description: URL(iCalendar)を使用して、外部クライアントでこのカレンダーを購読し、そこから最新のワークパッケージ情報を表示することができます。
|
||||
warning: このURLを他のユーザーと共有しないでください。このリンクを持つ誰でもアカウントやパスワードなしでワークパッケージの詳細を表示することができます。
|
||||
token_name_label: どこで使うのですか??
|
||||
token_name_placeholder: 名前を入力してください。例:"電話"
|
||||
token_name_description_text: If you subscribe to this calendar from multiple devices, this name will help you distinguish between them in your <a href="%{myAccessTokensUrl}" target="_blank">access tokens</a> list.
|
||||
copy_url_label: URLをコピー
|
||||
ical_generation_error_text: カレンダー URL の生成中にエラーが発生しました。
|
||||
success_message: URL "%{name}" は正常にクリップボードにコピーされました。サブスクリプションを完了するためにカレンダークライアントに貼り付けてください。
|
||||
ical_generation_error_text: カレンダーのURL生成時にエラーが発生しました。
|
||||
success_message: URL "%{name}" がクリップボードにコピーされました。カレンダークライアントに貼り付けて購読を完了してください。
|
||||
label_activate: 有効にする
|
||||
label_assignee: 担当者
|
||||
label_assignee_alt_text: This work package is assigned to %{name}
|
||||
@@ -321,7 +321,7 @@ ja:
|
||||
label_add_row_before: 前に行を追加
|
||||
label_add_selected_columns: 選択した列を追加
|
||||
label_added_by: 追加した人
|
||||
label_added_time_by: <a href="%{authorLink}">%{author}</a> が %{age} に追加しました
|
||||
label_added_time_by: 追加 <a href="%{authorLink}">%{author}</a> %{age}
|
||||
label_ago: "○日前"
|
||||
label_all: 全て
|
||||
label_all_projects: すべてのプロジェクト
|
||||
@@ -432,7 +432,7 @@ ja:
|
||||
label_repository_plural: リポジトリ
|
||||
label_resize_project_menu: Resize project menu
|
||||
label_save_as: 名前をつけて保存
|
||||
label_search_columns: 列を検索
|
||||
label_search_columns: 列を検索する
|
||||
label_select_watcher: ウォッチャーを選択...
|
||||
label_selected_filter_list: 選択されたフィルタ
|
||||
label_show_attributes: すべての属性を表示
|
||||
@@ -470,8 +470,8 @@ ja:
|
||||
label_watch_work_package: ワークパッケージをウォッチ
|
||||
label_watcher_added_successfully: ウォッチャーが正常に追加されました !
|
||||
label_watcher_deleted_successfully: ウォッチャーが正常に削除されました !
|
||||
label_work_package_details_you_are_here: あなたは %{tab} %{type} %{subject} のタブにいます。
|
||||
label_work_package_context_menu: ワークパッケージのコンテキスト メニュー
|
||||
label_work_package_details_you_are_here: あなたは %{type} %{subject}の %{tab} タブを表示しています。
|
||||
label_work_package_context_menu: ワークパッケージのコンテキストメニュー
|
||||
label_unwatch: ウォッチしない
|
||||
label_unwatch_work_package: ワークパッケージのウォッチを削除
|
||||
label_uploaded_by: アップロードした人
|
||||
@@ -502,7 +502,7 @@ ja:
|
||||
label_version_plural: バージョン
|
||||
label_view_has_changed: このビューには未保存の変更があります。 クリックすると保存します。
|
||||
help_texts:
|
||||
show_modal: ヘルプテキストを表示
|
||||
show_modal: ヘルプテキストを表示する
|
||||
onboarding:
|
||||
buttons:
|
||||
skip: スキップ
|
||||
@@ -510,7 +510,7 @@ ja:
|
||||
got_it: 了承
|
||||
steps:
|
||||
help_menu: ヘルプ(?)メニューは、<b>その他のヘルプリソースを</b>提供します。ここでは、ユーザーガイド、役立つハウツービデオなどを見つけることができます。 <br> OpenProjectでの作業をお楽しみください!
|
||||
members: 新しい <b>メンバー</b> をプロジェクトに招待します。
|
||||
members: 新しい<b>メンバーを</b>プロジェクトに招待する。
|
||||
quick_add_button: ヘッダーナビゲーションにあるプラス(+)アイコンをクリックして、<b>新規プロジェクトを作成</b>したり、<b>同僚を招待</b>したりできます。
|
||||
sidebar_arrow: プロジェクトの<b>メインメニューに</b>戻るには、左上の矢印を使います。
|
||||
welcome: 3分間のイントロダクションツアーで、最も<b>重要な</b>機能を学びましょう。 <br> 最後までステップを完了することをお勧めします。ツアーはいつでも再開できます。
|
||||
@@ -587,12 +587,12 @@ ja:
|
||||
title: 通知設定
|
||||
pagination:
|
||||
no_other_page: このページだけです。
|
||||
pages_skipped: ページがスキップされました。
|
||||
pages_skipped: ページスキップ。
|
||||
page_navigation: ページネーション・ナビゲーション
|
||||
per_page_navigation: ページ毎のアイテム選択
|
||||
pages:
|
||||
page_number: ページ %{number}
|
||||
show_per_page: ページあたり %{number} を表示
|
||||
show_per_page: ページごとに %{number}
|
||||
placeholders:
|
||||
default: "-"
|
||||
subject: ここにタイトルを入力します
|
||||
@@ -602,7 +602,7 @@ ja:
|
||||
project:
|
||||
autocompleter:
|
||||
label: プロジェクト名の入力補完
|
||||
click_to_switch_to_project: 'プロジェクト: %{projectname}'
|
||||
click_to_switch_to_project: プロジェクト: %{projectname}
|
||||
context: プロジェクトのコンテキスト
|
||||
not_available: プロジェクトなし
|
||||
required_outside_context: 'ワークパッケージを作成するプロジェクトを選択して、すべての属性を確認してください。 上記で有効になっているタイプのプロジェクトのみ選択できます。
|
||||
@@ -1087,7 +1087,7 @@ ja:
|
||||
toggle_title: ベースライン
|
||||
clear: クリア
|
||||
apply: 適用
|
||||
header_description: 過去のいずれかの時点からこのリストに加えられた変更を強調する。
|
||||
header_description: 過去の選択した時点からこのリストに加えられた変更をハイライト
|
||||
show_changes_since: 以降の変更を表示する
|
||||
help_description: ベースラインの基準タイムゾーン。
|
||||
time_description: '現地時間: %{datetime}'
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
button_save: Lagre
|
||||
button_settings: Innstillinger
|
||||
button_uncheck_all: Avmerk alle
|
||||
button_update: Oppdater
|
||||
button_update: Oppdatèr
|
||||
button_export-atom: Last ned Atom
|
||||
button_generate_pdf: Generate PDF
|
||||
button_create: Opprett
|
||||
|
||||
@@ -109,7 +109,7 @@ ro:
|
||||
button_save: Salvează
|
||||
button_settings: Setări
|
||||
button_uncheck_all: Deselectează tot
|
||||
button_update: Actualizează
|
||||
button_update: Actualizare
|
||||
button_export-atom: Descarcă Atom
|
||||
button_generate_pdf: Generează PDF
|
||||
button_create: Creează
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user