diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8cc06c753..928b0ec96 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -112,7 +112,7 @@ "ms-python.flake8", // Flake8 linter for Python to enforce code quality "ms-python.python", // Official Microsoft Python extension with IntelliSense, debugging, and Jupyter support "ms-vscode-remote.vscode-remote-extensionpack", // Remote Development Pack for SSH, WSL, and Containers - "Oracle.oracle-java", // Oracle Java extension with additional features for Java development + // "Oracle.oracle-java", // Oracle Java extension with additional features for Java development "streetsidesoftware.code-spell-checker", // Spell checker for code to avoid typos "vmware.vscode-boot-dev-pack", // Developer tools for Spring Boot by VMware "vscjava.vscode-java-pack", // Java Extension Pack with essential Java tools for VS Code diff --git a/.github/workflows/PR-Demo-Comment.yml b/.github/workflows/PR-Demo-Comment-with-react.yml similarity index 66% rename from .github/workflows/PR-Demo-Comment.yml rename to .github/workflows/PR-Demo-Comment-with-react.yml index 113e690d9..c551728d2 100644 --- a/.github/workflows/PR-Demo-Comment.yml +++ b/.github/workflows/PR-Demo-Comment-with-react.yml @@ -6,13 +6,15 @@ on: permissions: contents: read + issues: write # Required for adding reactions to comments + pull-requests: read # Required for reading PR information jobs: check-comment: runs-on: ubuntu-latest permissions: + issues: write pull-requests: read - issues: read if: | github.event.issue.pull_request && ( @@ -34,13 +36,22 @@ jobs: pr_number: ${{ steps.get-pr.outputs.pr_number }} pr_repository: ${{ steps.get-pr-info.outputs.repository }} pr_ref: ${{ steps.get-pr-info.outputs.ref }} + comment_id: ${{ github.event.comment.id }} steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit + # Generate GitHub App token + - name: Generate GitHub App Token + id: generate-token + uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 + with: + app-id: ${{ secrets.GH_APP_ID }} + private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + - name: Get PR data id: get-pr uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 @@ -73,19 +84,48 @@ jobs: core.setOutput('repository', repository); core.setOutput('ref', pr.head.ref); + - name: Add 'in_progress' reaction to comment + id: add-eyes-reaction + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + github-token: ${{ steps.generate-token.outputs.token }} + script: | + console.log(`Adding eyes reaction to comment ID: ${context.payload.comment.id}`); + try { + const { data: reaction } = await github.rest.reactions.createForIssueComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: context.payload.comment.id, + content: 'eyes' + }); + console.log(`Added reaction with ID: ${reaction.id}`); + return { success: true, id: reaction.id }; + } catch (error) { + console.error(`Failed to add reaction: ${error.message}`); + console.error(error); + return { success: false, error: error.message }; + } + deploy-pr: needs: check-comment runs-on: ubuntu-latest permissions: - pull-requests: write + contents: read issues: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit + - name: Generate GitHub App Token + id: generate-token + uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 + with: + app-id: ${{ secrets.GH_APP_ID }} + private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} + - name: Checkout PR uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: @@ -137,6 +177,7 @@ jobs: sudo chmod 600 ../private.key - name: Deploy to VPS + id: deploy run: | # First create the docker-compose content locally cat > docker-compose.yml << 'EOF' @@ -180,10 +221,51 @@ jobs: docker-compose up -d ENDSSH + - name: Add success reaction to comment + if: success() + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + github-token: ${{ steps.generate-token.outputs.token }} + script: | + console.log(`Adding rocket reaction to comment ID: ${{ needs.check-comment.outputs.comment_id }}`); + try { + const { data: reaction } = await github.rest.reactions.createForIssueComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: ${{ needs.check-comment.outputs.comment_id }}, + content: 'rocket' + }); + console.log(`Added rocket reaction with ID: ${reaction.id}`); + } catch (error) { + console.error(`Failed to add reaction: ${error.message}`); + console.error(error); + } + + - name: Add failure reaction to comment + if: failure() + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + github-token: ${{ steps.generate-token.outputs.token }} + script: | + console.log(`Adding -1 reaction to comment ID: ${{ needs.check-comment.outputs.comment_id }}`); + try { + const { data: reaction } = await github.rest.reactions.createForIssueComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: ${{ needs.check-comment.outputs.comment_id }}, + content: '-1' + }); + console.log(`Added -1 reaction with ID: ${reaction.id}`); + } catch (error) { + console.error(`Failed to add reaction: ${error.message}`); + console.error(error); + } + - name: Post deployment URL to PR if: success() uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: + github-token: ${{ steps.generate-token.outputs.token }} script: | const { GITHUB_REPOSITORY } = process.env; const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/'); diff --git a/.github/workflows/PR-Demo-cleanup.yml b/.github/workflows/PR-Demo-cleanup.yml index affe32d45..bcb547588 100644 --- a/.github/workflows/PR-Demo-cleanup.yml +++ b/.github/workflows/PR-Demo-cleanup.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/auto-labeler.yml b/.github/workflows/auto-labeler.yml index 3056543c0..2bd50d8d4 100644 --- a/.github/workflows/auto-labeler.yml +++ b/.github/workflows/auto-labeler.yml @@ -13,7 +13,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ea5f3f07c..243f856f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -106,7 +106,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -141,4 +141,5 @@ jobs: run: | chmod +x ./testing/test_webpages.sh chmod +x ./testing/test.sh + chmod +x ./testing/test_disabledEndpoints.sh ./testing/test.sh diff --git a/.github/workflows/check_properties.yml b/.github/workflows/check_properties.yml index 91bdcffae..84531e094 100644 --- a/.github/workflows/check_properties.yml +++ b/.github/workflows/check_properties.yml @@ -18,7 +18,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 2ab9979a9..2eece92fe 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -17,11 +17,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: "Checkout Repository" uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: "Dependency Review" - uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 + uses: actions/dependency-review-action@ce3cf9537a52e8119d91fd484ab5b8a807627bf8 # v4.6.0 diff --git a/.github/workflows/licenses-update.yml b/.github/workflows/licenses-update.yml index ee3c5ee7e..3d3e47860 100644 --- a/.github/workflows/licenses-update.yml +++ b/.github/workflows/licenses-update.yml @@ -18,13 +18,13 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: Generate GitHub App Token id: generate-token - uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 + uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 with: app-id: ${{ secrets.GH_APP_ID }} private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} diff --git a/.github/workflows/manage-label.yml b/.github/workflows/manage-label.yml index 0da55134a..63a3f7b7d 100644 --- a/.github/workflows/manage-label.yml +++ b/.github/workflows/manage-label.yml @@ -15,7 +15,7 @@ jobs: issues: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml index 8d1577242..8dc38895d 100644 --- a/.github/workflows/multiOSReleases.yml +++ b/.github/workflows/multiOSReleases.yml @@ -4,6 +4,11 @@ on: workflow_dispatch: release: types: [created] + inputs: + test_mode: + description: "Run in test mode (skips release step)" + required: false + default: "false" permissions: contents: read @@ -16,7 +21,7 @@ jobs: versionMac: ${{ steps.versionNumberMac.outputs.versionNumberMac }} steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -51,7 +56,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -101,7 +106,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -139,7 +144,7 @@ jobs: contents: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -170,17 +175,35 @@ jobs: STIRLING_PDF_DESKTOP_UI: true BROWSER_OPEN: true + - name: ☕ Set up JDK (x86_64) + if: matrix.os == 'macos-latest' + run: | + curl -L -o jdk.tar.gz https://cdn.azul.com/zulu/bin/zulu17.56.15-ca-jdk17.0.14-macosx_x64.tar.gz + mkdir -p zulu17 + tar -xzf jdk.tar.gz -C zulu17 --strip-components=1 + echo "JAVA_HOME=$PWD/zulu17" >> $GITHUB_ENV + echo "$PWD/zulu17/bin" >> $GITHUB_PATH + + - name: Verify JDK architecture + if: matrix.os == 'macos-latest' + run: file $JAVA_HOME/bin/java + + - name: Build project and run jpackage (x86_64) + if: matrix.os == 'macos-latest' + run: arch -x86_64 ./gradlew jpackageMacX64 + # Rename and collect artifacts based on OS - name: Prepare artifacts id: prepare shell: bash run: | + ls -lah ./build/jpackage/ mkdir ./binaries if [ "${{ matrix.os }}" = "windows-latest" ]; then mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.version }}.exe" "./binaries/Stirling-PDF-win-installer.exe" elif [ "${{ matrix.os }}" = "macos-latest" ]; then mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-installer.dmg" - mv "./build/jpackage/Stirling-PDF-x86_64-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-x86_64-installer.dmg" + mv "./build/jpackage/x86_64/Stirling-PDF (x86_64)-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-x86_64-installer.dmg" else mv "./build/jpackage/stirling-pdf_${{ needs.read_versions.outputs.version }}-1_amd64.deb" "./binaries/Stirling-PDF-linux-installer.deb" fi @@ -211,7 +234,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -263,16 +286,18 @@ jobs: name: ${{ matrix.platform }}signed path: | ./Stirling-PDF-${{ matrix.platform }}installer.* + ./Stirling-PDF-${{ matrix.platform }}x86_64-installer.* !cosign.* create-release: + if: github.event_name != 'workflow_dispatch' || github.event.inputs.test_mode != 'true' needs: [read_versions, sign_verify, sign_verify-portable] runs-on: ubuntu-latest permissions: contents: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/pre_commit.yml b/.github/workflows/pre_commit.yml index 64d165378..ad39a1b9a 100644 --- a/.github/workflows/pre_commit.yml +++ b/.github/workflows/pre_commit.yml @@ -16,13 +16,13 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: Generate GitHub App Token id: generate-token - uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 + uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 with: app-id: ${{ secrets.GH_APP_ID }} private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index 509ad1a9c..433002997 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -18,7 +18,7 @@ jobs: id-token: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml index 735a3fb66..735f69138 100644 --- a/.github/workflows/releaseArtifacts.yml +++ b/.github/workflows/releaseArtifacts.yml @@ -23,7 +23,7 @@ jobs: version: ${{ steps.versionNumber.outputs.versionNumber }} steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -83,7 +83,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -161,7 +161,7 @@ jobs: file_suffix: "" steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index dacb04de9..4e50b7325 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -74,6 +74,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 + uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15 with: sarif_file: results.sarif diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index a313cd753..3220da581 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 06d45934b..24375021c 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -16,7 +16,7 @@ jobs: pull-requests: write steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index c5405c1c5..fa80b0c2b 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.github/workflows/sync_files.yml b/.github/workflows/sync_files.yml index e09f2e9ae..a47d3ee60 100644 --- a/.github/workflows/sync_files.yml +++ b/.github/workflows/sync_files.yml @@ -24,13 +24,13 @@ jobs: committer: ${{ steps.committer.outputs.committer }} steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: Generate GitHub App Token id: generate-token - uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 + uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 with: app-id: ${{ secrets.GH_APP_ID }} private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} @@ -57,13 +57,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit - name: Generate GitHub App Token id: generate-token - uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 + uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 with: app-id: ${{ vars.GH_APP_ID }} private-key: ${{ secrets.GH_APP_PRIVATE_KEY }} diff --git a/.github/workflows/testdriver.yml b/.github/workflows/testdriver.yml index 3c6c216ef..dd65ccec3 100644 --- a/.github/workflows/testdriver.yml +++ b/.github/workflows/testdriver.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -105,7 +105,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit @@ -134,7 +134,7 @@ jobs: steps: - name: Harden Runner - uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 + uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1 with: egress-policy: audit diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ab19860d8..432bd0248 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -6,7 +6,7 @@ "ms-python.flake8", // Flake8 linter for Python to enforce code quality "ms-python.python", // Official Microsoft Python extension with IntelliSense, debugging, and Jupyter support "ms-vscode-remote.vscode-remote-extensionpack", // Remote Development Pack for SSH, WSL, and Containers - "Oracle.oracle-java", // Oracle Java extension with additional features for Java development + // "Oracle.oracle-java", // Oracle Java extension with additional features for Java development "streetsidesoftware.code-spell-checker", // Spell checker for code to avoid typos "vmware.vscode-boot-dev-pack", // Developer tools for Spring Boot by VMware "vscjava.vscode-java-pack", // Java Extension Pack with essential Java tools for VS Code diff --git a/Dockerfile b/Dockerfile index a042ae0cc..6a854f35e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -92,4 +92,4 @@ EXPOSE 8080/tcp # Set user and run command ENTRYPOINT ["tini", "--", "/scripts/init.sh"] -CMD ["sh", "-c", "java -Dfile.encoding=UTF-8 -jar /app.jar & /opt/venv/bin/unoserver --port 2003 --interface 0.0.0.0"] \ No newline at end of file +CMD ["sh", "-c", "java -Dfile.encoding=UTF-8 -jar /app.jar & /opt/venv/bin/unoserver --port 2003 --interface 127.0.0.1"] diff --git a/Dockerfile.fat b/Dockerfile.fat index cb02a1cd0..2dbf4ba4f 100644 --- a/Dockerfile.fat +++ b/Dockerfile.fat @@ -5,7 +5,7 @@ COPY build.gradle . COPY settings.gradle . COPY gradlew . COPY gradle gradle/ -RUN ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube || return 0 +RUN ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube || return 0 # Set the working directory WORKDIR /app @@ -101,4 +101,4 @@ RUN echo "@main https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/a EXPOSE 8080/tcp # Set user and run command ENTRYPOINT ["tini", "--", "/scripts/init.sh"] -CMD ["sh", "-c", "java -Dfile.encoding=UTF-8 -jar /app.jar & /opt/venv/bin/unoserver --port 2003 --interface 0.0.0.0"] +CMD ["sh", "-c", "java -Dfile.encoding=UTF-8 -jar /app.jar & /opt/venv/bin/unoserver --port 2003 --interface 127.0.0.1"] diff --git a/README.md b/README.md index 8ce8b9da2..3f392c7a1 100644 --- a/README.md +++ b/README.md @@ -116,46 +116,46 @@ Stirling-PDF currently supports 39 languages! | Language | Progress | | -------------------------------------------- | -------------------------------------- | -| Arabic (العربية) (ar_AR) | ![86%](https://geps.dev/progress/86) | -| Azerbaijani (Azərbaycan Dili) (az_AZ) | ![85%](https://geps.dev/progress/85) | -| Basque (Euskara) (eu_ES) | ![49%](https://geps.dev/progress/49) | -| Bulgarian (Български) (bg_BG) | ![95%](https://geps.dev/progress/95) | -| Catalan (Català) (ca_CA) | ![92%](https://geps.dev/progress/92) | -| Croatian (Hrvatski) (hr_HR) | ![83%](https://geps.dev/progress/83) | -| Czech (Česky) (cs_CZ) | ![94%](https://geps.dev/progress/94) | -| Danish (Dansk) (da_DK) | ![82%](https://geps.dev/progress/82) | -| Dutch (Nederlands) (nl_NL) | ![81%](https://geps.dev/progress/81) | +| Arabic (العربية) (ar_AR) | ![84%](https://geps.dev/progress/84) | +| Azerbaijani (Azərbaycan Dili) (az_AZ) | ![83%](https://geps.dev/progress/83) | +| Basque (Euskara) (eu_ES) | ![48%](https://geps.dev/progress/48) | +| Bulgarian (Български) (bg_BG) | ![93%](https://geps.dev/progress/93) | +| Catalan (Català) (ca_CA) | ![90%](https://geps.dev/progress/90) | +| Croatian (Hrvatski) (hr_HR) | ![81%](https://geps.dev/progress/81) | +| Czech (Česky) (cs_CZ) | ![92%](https://geps.dev/progress/92) | +| Danish (Dansk) (da_DK) | ![80%](https://geps.dev/progress/80) | +| Dutch (Nederlands) (nl_NL) | ![80%](https://geps.dev/progress/80) | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | -| French (Français) (fr_FR) | ![94%](https://geps.dev/progress/94) | -| German (Deutsch) (de_DE) | ![96%](https://geps.dev/progress/96) | -| Greek (Ελληνικά) (el_GR) | ![93%](https://geps.dev/progress/93) | -| Hindi (हिंदी) (hi_IN) | ![94%](https://geps.dev/progress/94) | -| Hungarian (Magyar) (hu_HU) | ![91%](https://geps.dev/progress/91) | -| Indonesian (Bahasa Indonesia) (id_ID) | ![83%](https://geps.dev/progress/83) | -| Irish (Gaeilge) (ga_IE) | ![94%](https://geps.dev/progress/94) | +| French (Français) (fr_FR) | ![92%](https://geps.dev/progress/92) | +| German (Deutsch) (de_DE) | ![95%](https://geps.dev/progress/95) | +| Greek (Ελληνικά) (el_GR) | ![92%](https://geps.dev/progress/92) | +| Hindi (हिंदी) (hi_IN) | ![92%](https://geps.dev/progress/92) | +| Hungarian (Magyar) (hu_HU) | ![89%](https://geps.dev/progress/89) | +| Indonesian (Bahasa Indonesia) (id_ID) | ![81%](https://geps.dev/progress/81) | +| Irish (Gaeilge) (ga_IE) | ![92%](https://geps.dev/progress/92) | | Italian (Italiano) (it_IT) | ![98%](https://geps.dev/progress/98) | -| Japanese (日本語) (ja_JP) | ![91%](https://geps.dev/progress/91) | -| Korean (한국어) (ko_KR) | ![94%](https://geps.dev/progress/94) | -| Norwegian (Norsk) (no_NB) | ![88%](https://geps.dev/progress/88) | -| Persian (فارسی) (fa_IR) | ![90%](https://geps.dev/progress/90) | -| Polish (Polski) (pl_PL) | ![98%](https://geps.dev/progress/98) | -| Portuguese (Português) (pt_PT) | ![93%](https://geps.dev/progress/93) | -| Portuguese Brazilian (Português) (pt_BR) | ![96%](https://geps.dev/progress/96) | -| Romanian (Română) (ro_RO) | ![77%](https://geps.dev/progress/77) | -| Russian (Русский) (ru_RU) | ![96%](https://geps.dev/progress/96) | -| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![62%](https://geps.dev/progress/62) | -| Simplified Chinese (简体中文) (zh_CN) | ![95%](https://geps.dev/progress/95) | -| Slovakian (Slovensky) (sk_SK) | ![71%](https://geps.dev/progress/71) | -| Slovenian (Slovenščina) (sl_SI) | ![93%](https://geps.dev/progress/93) | -| Spanish (Español) (es_ES) | ![96%](https://geps.dev/progress/96) | -| Swedish (Svenska) (sv_SE) | ![89%](https://geps.dev/progress/89) | -| Thai (ไทย) (th_TH) | ![82%](https://geps.dev/progress/82) | -| Tibetan (བོད་ཡིག་) (zh_BO) | ![91%](https://geps.dev/progress/91) | -| Traditional Chinese (繁體中文) (zh_TW) | ![97%](https://geps.dev/progress/97) | -| Turkish (Türkçe) (tr_TR) | ![79%](https://geps.dev/progress/79) | -| Ukrainian (Українська) (uk_UA) | ![99%](https://geps.dev/progress/99) | -| Vietnamese (Tiếng Việt) (vi_VN) | ![76%](https://geps.dev/progress/76) | +| Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) | +| Korean (한국어) (ko_KR) | ![93%](https://geps.dev/progress/93) | +| Norwegian (Norsk) (no_NB) | ![87%](https://geps.dev/progress/87) | +| Persian (فارسی) (fa_IR) | ![88%](https://geps.dev/progress/88) | +| Polish (Polski) (pl_PL) | ![96%](https://geps.dev/progress/96) | +| Portuguese (Português) (pt_PT) | ![91%](https://geps.dev/progress/91) | +| Portuguese Brazilian (Português) (pt_BR) | ![94%](https://geps.dev/progress/94) | +| Romanian (Română) (ro_RO) | ![76%](https://geps.dev/progress/76) | +| Russian (Русский) (ru_RU) | ![94%](https://geps.dev/progress/94) | +| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![60%](https://geps.dev/progress/60) | +| Simplified Chinese (简体中文) (zh_CN) | ![93%](https://geps.dev/progress/93) | +| Slovakian (Slovensky) (sk_SK) | ![69%](https://geps.dev/progress/69) | +| Slovenian (Slovenščina) (sl_SI) | ![95%](https://geps.dev/progress/95) | +| Spanish (Español) (es_ES) | ![94%](https://geps.dev/progress/94) | +| Swedish (Svenska) (sv_SE) | ![88%](https://geps.dev/progress/88) | +| Thai (ไทย) (th_TH) | ![80%](https://geps.dev/progress/80) | +| Tibetan (བོད་ཡིག་) (zh_BO) | ![89%](https://geps.dev/progress/89) | +| Traditional Chinese (繁體中文) (zh_TW) | ![95%](https://geps.dev/progress/95) | +| Turkish (Türkçe) (tr_TR) | ![77%](https://geps.dev/progress/77) | +| Ukrainian (Українська) (uk_UA) | ![97%](https://geps.dev/progress/97) | +| Vietnamese (Tiếng Việt) (vi_VN) | ![74%](https://geps.dev/progress/74) | ## Stirling PDF Enterprise diff --git a/build.gradle b/build.gradle index 9871d9980..c9ffd61f7 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ ext { } group = "stirling.software" -version = "0.45.1" +version = "0.45.4" java { // 17 is lowest but we support and recommend 21 @@ -164,14 +164,12 @@ jpackage { appVersion = getMacVersion(project.version.toString()) icon = "src/main/resources/static/favicon.icns" type = "dmg" - macPackageIdentifier = "com.stirling.software.pdf" - macPackageName = "Stirling-PDF_aarch64" + macPackageIdentifier = "Stirling-PDF" + macPackageName = "Stirling-PDF" macAppCategory = "public.app-category.productivity" macSign = false // Enable signing macAppStore = false // Not targeting App Store initially -// -// //installDir = "Applications" -// + // // Add license and other documentation to DMG // /*macDmgContent = [ // "README.md", @@ -230,6 +228,8 @@ tasks.register('jpackageMacX64') { group = 'distribution' description = 'Packages app for MacOS x86_64' + println "Running jpackageMacX64 task" + if (OperatingSystem.current().isMacOsX()) { println "MacOS detected. Downloading temp JRE." dependsOn("downloadTempJre") @@ -250,16 +250,16 @@ tasks.register('jpackageMacX64') { def result = exec { commandLine 'jpackage', '--type', 'dmg', - '--name', 'Stirling-PDF-x86_64', + '--name', 'Stirling-PDF (x86_64)', '--input', 'build/libs', '--main-jar', "Stirling-PDF-${project.version}.jar", - '--main-class', 'stirling.software.SPDF.SPDFApplication', + '--main-class', 'org.springframework.boot.loader.launch.JarLauncher', '--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"), - '--dest', 'build/jpackage', + '--dest', 'build/jpackage/x86_64', '--icon', 'src/main/resources/static/favicon.icns', '--app-version', getMacVersion(project.version.toString()), - '--mac-package-name', 'Stirling-PDF', - '--mac-package-identifier', 'com.stirling.software.pdf', + '--mac-package-name', 'Stirling-PDF (x86_64)', + '--mac-package-identifier', 'Stirling-PDF (x86_64)', '--mac-app-category', 'public.app-category.productivity' standardOutput = outputStream errorOutput = errorStream @@ -270,16 +270,16 @@ tasks.register('jpackageMacX64') { def stderr = errorStream.toString("UTF-8") if (!stdout.isBlank()) { - println "📝 jpackage stdout:\n$stdout" + println "jpackage stdout:\n$stdout" } if (result.exitValue != 0) { - throw new GradleException("❌ jpackage failed with exit code ${result.exitValue}.\n\n$stderr") + throw new GradleException("jpackage failed with exit code ${result.exitValue}.\n\n$stderr") } } } -jpackage.finalizedBy(jpackageMacX64) +//jpackage.finalizedBy(jpackageMacX64) tasks.register('downloadTempJre') { group = 'distribution' @@ -322,7 +322,7 @@ tasks.register('cleanTempJre') { def path = project.ext.tempJrePath if (path && new File("$path").exists()) { - println "🧹 Cleaning up temporary JRE: $path" + println "Cleaning up temporary JRE: $path" new File("$path").parentFile.deleteDir() } } @@ -543,12 +543,22 @@ compileJava { } task writeVersion { - def propsFile = file("src/main/resources/version.properties") - def props = new Properties() - props.setProperty("version", version) - props.store(propsFile.newWriter(), null) + def propsFile = file("$projectDir/src/main/resources/version.properties") + def propsDir = propsFile.parentFile + + doLast { + if (!propsDir.exists()) { + propsDir.mkdirs() + } + + def props = new Properties() + props.setProperty("version", version) + props.store(propsFile.newWriter(), null) + } } +processResources.dependsOn(writeVersion) + swaggerhubUpload { // dependsOn = generateOpenApiDocs // Depends on your task generating Swagger docs api = "Stirling-PDF" // The name of your API on SwaggerHub diff --git a/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml b/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml new file mode 100644 index 000000000..729684681 --- /dev/null +++ b/exampleYmlFiles/docker-compose-latest-fat-endpoints-disabled.yml @@ -0,0 +1,35 @@ + +services: + stirling-pdf: + container_name: Stirling-PDF-Fat-Disable-Endpoints + image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest-fat + deploy: + resources: + limits: + memory: 4G + healthcheck: + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - ./stirling/latest/data:/usr/share/tessdata:rw + - ./stirling/latest/config:/configs:rw + - ./stirling/latest/logs:/logs:rw + - ../testing/allEndpointsRemovedSettings.yml:/configs/settings.yml:rw + environment: + DOCKER_ENABLE_SECURITY: "true" + SECURITY_ENABLELOGIN: "false" + PUID: 1002 + PGID: 1002 + UMASK: "022" + SYSTEM_DEFAULTLOCALE: en-US + UI_APPNAME: Stirling-PDF + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest-fat with all Endpoints Disabled + UI_APPNAMENAVBAR: Stirling-PDF Latest-fat + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + restart: on-failure:5 diff --git a/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java b/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java index f1df7d340..a83b17090 100644 --- a/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java +++ b/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java @@ -11,6 +11,7 @@ import stirling.software.SPDF.EE.KeygenLicenseVerifier.License; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.ApplicationProperties.EnterpriseEdition; import stirling.software.SPDF.model.ApplicationProperties.Premium; +import stirling.software.SPDF.model.ApplicationProperties.Premium.ProFeatures.GoogleDrive; @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) @@ -43,6 +44,17 @@ public class EEAppConfig { return applicationProperties.getPremium().getProFeatures().isSsoAutoLogin(); } + @Bean(name = "GoogleDriveEnabled") + public boolean googleDriveEnabled() { + return runningProOrHigher() + && applicationProperties.getPremium().getProFeatures().getGoogleDrive().isEnabled(); + } + + @Bean(name = "GoogleDriveConfig") + public GoogleDrive googleDriveConfig() { + return applicationProperties.getPremium().getProFeatures().getGoogleDrive(); + } + // TODO: Remove post migration public void migrateEnterpriseSettingsToPremium(ApplicationProperties applicationProperties) { EnterpriseEdition enterpriseEdition = applicationProperties.getEnterpriseEdition(); diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index f36b2c722..08da2fa3c 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -45,6 +45,10 @@ public class EndpointConfiguration { } } + public Map getEndpointStatuses() { + return endpointStatuses; + } + public boolean isEndpointEnabled(String endpoint) { if (endpoint.startsWith("/")) { endpoint = endpoint.substring(1); diff --git a/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java b/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java index e2dbb62b6..aa3fce4c7 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java @@ -23,7 +23,29 @@ public class EndpointInterceptor implements HandlerInterceptor { HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); - if (!endpointConfiguration.isEndpointEnabled(requestURI)) { + boolean isEnabled; + + // Extract the specific endpoint name (e.g: /api/v1/general/remove-pages -> remove-pages) + if (requestURI.contains("/api/v1") && requestURI.split("/").length > 4) { + + String[] requestURIParts = requestURI.split("/"); + String requestEndpoint; + + // Endpoint: /api/v1/convert/pdf/img becomes pdf-to-img + if ("convert".equals(requestURIParts[3]) && requestURIParts.length > 5) { + requestEndpoint = requestURIParts[4] + "-to-" + requestURIParts[5]; + } else { + requestEndpoint = requestURIParts[4]; + } + + log.debug("Request endpoint: {}", requestEndpoint); + isEnabled = endpointConfiguration.isEndpointEnabled(requestEndpoint); + log.debug("Is endpoint enabled: {}", isEnabled); + } else { + isEnabled = endpointConfiguration.isEndpointEnabled(requestURI); + } + + if (!isEnabled) { response.sendError(HttpServletResponse.SC_FORBIDDEN, "This endpoint is disabled"); return false; } diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index f3627d499..464676710 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -475,6 +475,12 @@ public class UserService implements UserServiceInterface { @Override public long getTotalUsersCount() { - return userRepository.count(); + // Count all users in the database + long userCount = userRepository.count(); + // Exclude the internal API user from the count + if (findByUsernameIgnoreCase(Role.INTERNAL_API_USER.getRoleId()).isPresent()) { + userCount -= 1; + } + return userCount; } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java index dce5bdb26..25c198a8a 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java @@ -1,10 +1,12 @@ package stirling.software.SPDF.controller.api; import java.io.IOException; +import java.util.Map; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.SPDF.config.InstallationPathConfig; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.utils.GeneralUtils; @@ -23,9 +26,13 @@ import stirling.software.SPDF.utils.GeneralUtils; public class SettingsController { private final ApplicationProperties applicationProperties; + private final EndpointConfiguration endpointConfiguration; - public SettingsController(ApplicationProperties applicationProperties) { + public SettingsController( + ApplicationProperties applicationProperties, + EndpointConfiguration endpointConfiguration) { this.applicationProperties = applicationProperties; + this.endpointConfiguration = endpointConfiguration; } @PostMapping("/update-enable-analytics") @@ -41,4 +48,10 @@ public class SettingsController { applicationProperties.getSystem().setEnableAnalytics(enabled); return ResponseEntity.ok("Updated"); } + + @GetMapping("/get-endpoints-status") + @Hidden + public ResponseEntity> getDisabledEndpoints() { + return ResponseEntity.ok(endpointConfiguration.getEndpointStatuses()); + } } diff --git a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java index c34c107b6..d42429619 100644 --- a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java +++ b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java @@ -395,6 +395,7 @@ public class ApplicationProperties { // TODO: Remove post migration @Data + @Deprecated(since = "0.45.0") public static class EnterpriseEdition { private boolean enabled; @ToString.Exclude private String key; @@ -431,6 +432,7 @@ public class ApplicationProperties { public static class ProFeatures { private boolean ssoAutoLogin; private CustomMetadata customMetadata = new CustomMetadata(); + private GoogleDrive googleDrive = new GoogleDrive(); @Data public static class CustomMetadata { @@ -449,6 +451,26 @@ public class ApplicationProperties { : producer; } } + + @Data + public static class GoogleDrive { + private boolean enabled; + private String clientId; + private String apiKey; + private String appId; + + public String getClientId() { + return clientId == null || clientId.trim().isEmpty() ? "" : clientId; + } + + public String getApiKey() { + return apiKey == null || apiKey.trim().isEmpty() ? "" : apiKey; + } + + public String getAppId() { + return appId == null || appId.trim().isEmpty() ? "" : appId; + } + } } @Data diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 760bfe4ca..bddd3c479 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -90,6 +90,7 @@ legal.terms=شروط الاستخدام legal.accessibility=إمكانية الوصول legal.cookie=سياسة ملفات تعريف الارتباط legal.impressum=بيان الهوية +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=تفعيل الإحصائيات analytics.disable=تعطيل الإحصائيات analytics.settings=يمكنك تغيير إعدادات الإحصائيات في ملف config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_az_AZ.properties b/src/main/resources/messages_az_AZ.properties index c23b9b619..e4273ce4d 100644 --- a/src/main/resources/messages_az_AZ.properties +++ b/src/main/resources/messages_az_AZ.properties @@ -90,6 +90,7 @@ legal.terms=Qaydalar və Şərtlər legal.accessibility=Əlçatanlıq legal.cookie=Kuki Siyasəti legal.impressum=Təəssürat +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Analitikanı aktivləşdir analytics.disable=Analitikanı deaktivləşdir analytics.settings=Analitikanın parametrlərini config/settings.yml faylından dəyişə bilərsiniz. + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 3db6b1dc9..94193dcc8 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -90,6 +90,7 @@ legal.terms=Правила и условия legal.accessibility=Достъпност legal.cookie=Политика за бисквитки legal.impressum=Отпечатък +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Активиране на анализа analytics.disable=Деактивиране на анализа analytics.settings=Можете да промените настройките за анализ във config/settings.yml файла + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Версия validateSignature.cert.keyUsage=Предназначение на ключа за използване validateSignature.cert.selfSigned=Самостоятелно подписан validateSignature.cert.bits=битове + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index acd5d8381..8fa20708c 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -90,6 +90,7 @@ legal.terms=Termes i condicions legal.accessibility=Accessibilitat legal.cookie=Política de galetes legal.impressum=Avís Legal +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Habilita analítiques analytics.disable=Desactiva analítiques analytics.settings=Pots canviar la configuració de les analítiques al fitxer config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Versió validateSignature.cert.keyUsage=Ús de la clau validateSignature.cert.selfSigned=Autofirmat validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index 0296ba483..3d3a2b20e 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -90,6 +90,7 @@ legal.terms=Podmínky použití legal.accessibility=Přístupnost legal.cookie=Zásady používání cookies legal.impressum=Tiráž +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Povolit analytiku analytics.disable=Zakázat analytiku analytics.settings=Nastavení analytiky můžete změnit v souboru config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Verze validateSignature.cert.keyUsage=Použití klíče validateSignature.cert.selfSigned=Podepsaný sám sebou validateSignature.cert.bits=bitů + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index 60265b608..e0f5da421 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -90,6 +90,7 @@ legal.terms=Vilkår og betingelser legal.accessibility=Adgangsnævnteglen legal.cookie=Cokiebelejring legal.impressum=Angivelse af ansvar +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Aktivér analytics analytics.disable=Deaktiver analytics analytics.settings=Du kan ændre analytics-indstillingerne i config/settings.yml-filen + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 987f0e4a6..b86d8bddd 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -90,6 +90,7 @@ legal.terms=AGB legal.accessibility=Barrierefreiheit legal.cookie=Cookie-Richtlinie legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Analytics aktivieren analytics.disable=Analytics deaktivieren analytics.settings=Sie können die Einstellungen für die Analytics in der config/settings.yml Datei bearbeiten + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Schlüsselverwendung validateSignature.cert.selfSigned=Selbstsigniert validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index f264174b1..14d7d6f84 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -90,6 +90,7 @@ legal.terms=Όροι και προϋποθέσεις legal.accessibility=Προσβασιμότητα legal.cookie=Πολιτική cookies legal.impressum=Ταυτότητα +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Ενεργοποίηση analytics analytics.disable=Απενεργοποίηση analytics analytics.settings=Μπορείτε να αλλάξετε τις ρυθμίσεις για τα analytics στο αρχείο config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Έκδοση validateSignature.cert.keyUsage=Χρήση κλειδιού validateSignature.cert.selfSigned=Αυτο-υπογεγραμμένο validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 4d66707ed..5b7efbab4 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -93,6 +93,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -138,6 +139,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1402,3 +1404,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index b86372f8d..e2a2eeb75 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -93,6 +93,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -138,6 +139,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1402,3 +1404,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 500577bc3..596b15d62 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -90,6 +90,7 @@ legal.terms=Términos y Condiciones legal.accessibility=Accesibilidad legal.cookie=Política de Cookies legal.impressum=Impresión +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Habilitar analíticas analytics.disable=Deshabilitar analíticas analytics.settings=Puede cambiar la configuración de analíticas en el archivo config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Versión validateSignature.cert.keyUsage=Uso de la llave validateSignature.cert.selfSigned=Autofirmado validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 48ee142ef..60e665517 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -90,6 +90,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_fa_IR.properties b/src/main/resources/messages_fa_IR.properties index 7e1ed9f91..a0f75e248 100644 --- a/src/main/resources/messages_fa_IR.properties +++ b/src/main/resources/messages_fa_IR.properties @@ -90,6 +90,7 @@ legal.terms=شرایط و ضوابط legal.accessibility=دسترسی legal.cookie=سیاست کوکی‌ها legal.impressum=توضیحات قانونی +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=فعال کردن تحلیل‌ها analytics.disable=غیرفعال کردن تحلیل‌ها analytics.settings=می‌توانید تنظیمات مربوط به تحلیل‌ها را در فایل config/settings.yml تغییر دهید + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=نسخه validateSignature.cert.keyUsage=کاربرد کلید validateSignature.cert.selfSigned=با امضای خود validateSignature.cert.bits=بیت‌ها + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index dd32bb384..5bec54b94 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -90,6 +90,7 @@ legal.terms=Conditions Générales legal.accessibility=Accessibilité legal.cookie=Politique des Cookies legal.impressum=Mentions Légales +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Activer les analyses analytics.disable=Désactiver les analyses analytics.settings=Vous pouvez modifier les paramètres des analyses dans le fichier config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Usage de la clé validateSignature.cert.selfSigned=Auto-signé validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index a7a4c89c3..802e2cba9 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -90,6 +90,7 @@ legal.terms=Téarmaí agus Coinníollacha legal.accessibility=Inrochtaineacht legal.cookie=Polasaí Fianán legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Cumasaigh anailísíocht analytics.disable=Díchumasaigh anailísíocht analytics.settings=Is féidir leat na socruithe don anailísíocht a athrú sa chomhad config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Leagan validateSignature.cert.keyUsage=Úsáid Eochrach validateSignature.cert.selfSigned=Féin-Sínithe validateSignature.cert.bits=giotáin + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 02d66d648..7a49aeeba 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -90,6 +90,7 @@ legal.terms=नियम और शर्तें legal.accessibility=सुलभता legal.cookie=कुकी नीति legal.impressum=इम्प्रेसम +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=विश्लेषण सक्षम करें analytics.disable=विश्लेषण अक्षम करें analytics.settings=आप config/settings.yml फ़ाइल में विश्लेषण के लिए सेटिंग्स बदल सकते हैं + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=संस्करण validateSignature.cert.keyUsage=कुंजी उपयोग validateSignature.cert.selfSigned=स्व-हस्ताक्षरित validateSignature.cert.bits=बिट्स + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index e1ad0ee46..dabb71a78 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -90,6 +90,7 @@ legal.terms=Uspe sodržine legal.accessibility=Dostupnost legal.cookie=Politika kolačića legal.impressum=Vedro ishoda +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Omogući analitike analytics.disable=Onemogući analitike analytics.settings=Možete promijeniti postavke za analitike u datoteci config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 34f9b2693..76c4f4f1a 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -90,6 +90,7 @@ legal.terms=Felhasználási feltételek legal.accessibility=Akadálymentesítési nyilatkozat legal.cookie=Süti szabályzat legal.impressum=Impresszum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Analitika engedélyezése analytics.disable=Analitika letiltása analytics.settings=Az analitikai beállításokat a config/settings.yml fájlban módosíthatja + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Verzió validateSignature.cert.keyUsage=Kulcshasználat validateSignature.cert.selfSigned=Önaláírt validateSignature.cert.bits=bit + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index 09190c199..fed3c5bcd 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -90,6 +90,7 @@ legal.terms=Syarat dan Ketentuan legal.accessibility=Aksesibilitas legal.cookie=Kebijakan Kuki legal.impressum=Impresum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Aktifkan analitik analytics.disable=Nonaktifkan analitik analytics.settings=Anda dapat mengubah pengaturan untuk analitik di berkas config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 2d82b0ae2..d61f3afdd 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -83,13 +83,14 @@ loading=Caricamento... addToDoc=Aggiungi al documento reset=Resetta apply=Applica -noFileSelected=No file selected. Please upload one. +noFileSelected=Nessun file selezionato. Caricane uno. legal.privacy=Informativa sulla privacy legal.terms=Termini e Condizioni legal.accessibility=Accessibilità legal.cookie=Informativa sui cookie legal.impressum=Informazioni legali +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Abilita analytics analytics.disable=Disabilita analytics analytics.settings=È possibile modificare le impostazioni per analitycs nel file config/settings.yml + ############# # NAVBAR # ############# @@ -734,10 +736,10 @@ sanitizePDF.title=Pulire PDF sanitizePDF.header=Pulisci un file PDF sanitizePDF.selectText.1=Rimuovi le azioni JavaScript sanitizePDF.selectText.2=Rimuovi i file incorporati -sanitizePDF.selectText.3=Remove XMP metadata +sanitizePDF.selectText.3=Rimuovi i metadati XMP sanitizePDF.selectText.4=Rimuovi collegamenti sanitizePDF.selectText.5=Rimuovi i font -sanitizePDF.selectText.6=Remove Document Info Metadata +sanitizePDF.selectText.6=Rimuovi metadati delle informazioni del documento sanitizePDF.submit=Pulisci PDF @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Versione validateSignature.cert.keyUsage=Utilizzo della chiave validateSignature.cert.selfSigned=Autofirmato validateSignature.cert.bits=bit + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=Come utilizziamo i cookie +cookieBanner.popUp.description.1=Utilizziamo cookie e altre tecnologie per migliorare l'esperienza utente di Stirling PDF, aiutandoci a perfezionare i nostri strumenti e a continuare a sviluppare funzionalità che amerai. +cookieBanner.popUp.description.2=Se preferisci non farlo, cliccando su "No grazie" verranno abilitati solo i cookie essenziali, necessari per il corretto funzionamento del sito. +cookieBanner.popUp.acceptAllBtn=Acconsento +cookieBanner.popUp.acceptNecessaryBtn=No grazie +cookieBanner.popUp.showPreferencesBtn=Gestisci preferenze +cookieBanner.preferencesModal.title=Gestore delle preferenze per il consenso +cookieBanner.preferencesModal.acceptAllBtn=Accetta tutto +cookieBanner.preferencesModal.acceptNecessaryBtn=Rifiuta tutto +cookieBanner.preferencesModal.savePreferencesBtn=Salva preferenze +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Servizio|Servizi +cookieBanner.preferencesModal.subtitle=Utilizzo dei cookie +cookieBanner.preferencesModal.description.1=Stirling PDF utilizza cookie e tecnologie simili per migliorare la tua esperienza e comprendere come vengono utilizzati i nostri strumenti. Questo ci aiuta a migliorare le prestazioni, a sviluppare le funzionalità che ti interessano e a fornire supporto continuo ai nostri utenti. +cookieBanner.preferencesModal.description.2=Stirling PDF non può e non potrà mai tracciare o accedere al contenuto dei documenti che utilizzi. +cookieBanner.preferencesModal.description.3=La tua privacy e la tua fiducia sono al centro del nostro operato. +cookieBanner.preferencesModal.necessary.title.1=Cookie strettamente necessari +cookieBanner.preferencesModal.necessary.title.2=Sempre abilitati +cookieBanner.preferencesModal.necessary.description=Questi cookie sono essenziali per il corretto funzionamento del sito web. Abilitano funzionalità fondamentali come l'impostazione delle preferenze sulla privacy, l'accesso e la compilazione di moduli, motivo per cui non possono essere disattivati. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=Questi cookie ci aiutano a capire come vengono utilizzati i nostri strumenti, così possiamo concentrarci sullo sviluppo delle funzionalità che la nostra community apprezza di più. Non preoccuparti: Stirling PDF non può e non traccerà mai il contenuto dei documenti con cui lavori. + diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 8022c4f4b..3eab85878 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -90,6 +90,7 @@ legal.terms=利用規約 legal.accessibility=アクセシビリティ legal.cookie=Cookieポリシー legal.impressum=著作権利者情報 +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=分析を有効にする analytics.disable=分析を無効にする analytics.settings=config/settings.ymlファイルでアナリティクスの設定を変更できます。 + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=バージョン validateSignature.cert.keyUsage=キーの使用法 validateSignature.cert.selfSigned=自己署名 validateSignature.cert.bits=ビット + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 2a6a1ce06..b3804f416 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -90,6 +90,7 @@ legal.terms=이용약관 legal.accessibility=접근성 legal.cookie=쿠키 정책 legal.impressum=법적 고지 +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=분석 활성화 analytics.disable=분석 비활성화 analytics.settings=config/settings.yml 파일에서 분석 설정을 변경할 수 있습니다 + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=버전 validateSignature.cert.keyUsage=키 용도 validateSignature.cert.selfSigned=자체 서명 validateSignature.cert.bits=비트 + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index fec3f735e..c07c4b668 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -90,6 +90,7 @@ legal.terms=Voorwaarden van gebruik legal.accessibility=Toegankelijkheid legal.cookie=Cookiesbeleid legal.impressum=Imprint +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 4bd58c73f..82db0b7a5 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -90,6 +90,7 @@ legal.terms=Vilkår og betingelser legal.accessibility=Tilgjengelighet legal.cookie=Informasjonskapsler legal.impressum=Juridisk informasjon +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Aktiver analyse analytics.disable=Deaktiver analyse analytics.settings=Du kan endre innstillingene for analyse i config/settings.yml filen + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Versjon validateSignature.cert.keyUsage=Nøkkelbruk validateSignature.cert.selfSigned=Selv-signert validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index c973e9283..2963b8465 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -90,6 +90,7 @@ legal.terms=Zasady i Postanowienia legal.accessibility=Dostępność legal.cookie=Polityka plików cookie legal.impressum=Impresja +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Włącz analitykę analytics.disable=Wyłącz analitykę analytics.settings=Możesz zmienić ustawienia analityki w pliku config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Wersja validateSignature.cert.keyUsage=Zastosowanie klucza validateSignature.cert.selfSigned=Samopodpisany validateSignature.cert.bits=bity + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index faacbf40f..471e0177d 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -90,6 +90,7 @@ legal.terms=Termos e Condições legal.accessibility=Acessibilidade legal.cookie=Política de Cookies legal.impressum=Informações legais +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Habilitar coleta de dados analytics.disable=Desabilitar coleta de dados analytics.settings=Você pode alterar as configurações de coleta de dados no arquivo config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Versão validateSignature.cert.keyUsage=Uso da chave validateSignature.cert.selfSigned=Autoassinados validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 2e5f4c2a5..88de5abf7 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -93,6 +93,7 @@ legal.terms=Termos e Condições legal.accessibility=Acessibilidade legal.cookie=Política de Cookies legal.impressum=Aviso Legal +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -138,6 +139,7 @@ analytics.enable=Ativar análises analytics.disable=Desativar análises analytics.settings=Pode alterar as definições para análises no ficheiro config/settings.yml + ############# # NAVBAR # ############# @@ -1402,3 +1404,29 @@ validateSignature.cert.version=Versão validateSignature.cert.keyUsage=Utilização da Chave validateSignature.cert.selfSigned=Auto-Assinado validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index b3bdb32af..8428c21c6 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -90,6 +90,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 635be5bbf..80ecb6c5f 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -90,6 +90,7 @@ legal.terms=Условия использования legal.accessibility=Доступность legal.cookie=Политика использования файлов cookie legal.impressum=Выходные данные +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Включить аналитику analytics.disable=Отключить аналитику analytics.settings=Вы можете изменить настройки аналитики в файле config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Версия validateSignature.cert.keyUsage=Использование ключа validateSignature.cert.selfSigned=Самоподписанный validateSignature.cert.bits=бит + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 213df6ce8..2b6f58897 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -90,6 +90,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_sl_SI.properties b/src/main/resources/messages_sl_SI.properties index 6d687ad0e..c89f0f8fc 100644 --- a/src/main/resources/messages_sl_SI.properties +++ b/src/main/resources/messages_sl_SI.properties @@ -90,6 +90,7 @@ legal.terms=Določila in pogoji legal.accessibility=Dostopnost legal.cookie=Pravilnik o piškotkih legal.impressum=Impresum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Omogoči analitiko analytics.disable=Onemogoči analitiko analytics.settings=Nastavitve za analitiko lahko spremenite v datoteki config/settings.yml + ############# # NAVBAR # ############# @@ -234,29 +236,29 @@ adminUserSettings.totalUsers=Skupno število uporabnikov: adminUserSettings.lastRequest=Zadnja zahteva adminUserSettings.usage=View Usage -endpointStatistics.title=Endpoint Statistics -endpointStatistics.header=Endpoint Statistics -endpointStatistics.top10=Top 10 -endpointStatistics.top20=Top 20 -endpointStatistics.all=All -endpointStatistics.refresh=Refresh -endpointStatistics.includeHomepage=Include Homepage ('/') -endpointStatistics.includeLoginPage=Include Login Page ('/login') -endpointStatistics.totalEndpoints=Total Endpoints -endpointStatistics.totalVisits=Total Visits -endpointStatistics.showing=Showing -endpointStatistics.selectedVisits=Selected Visits -endpointStatistics.endpoint=Endpoint -endpointStatistics.visits=Visits -endpointStatistics.percentage=Percentage -endpointStatistics.loading=Loading... -endpointStatistics.failedToLoad=Failed to load endpoint data. Please try refreshing. -endpointStatistics.home=Home -endpointStatistics.login=Login -endpointStatistics.top=Top -endpointStatistics.numberOfVisits=Number of Visits -endpointStatistics.visitsTooltip=Visits: {0} ({1}% of total) -endpointStatistics.retry=Retry +endpointStatistics.title=Statistika končne točke +endpointStatistics.header=Statistika končne točke +endpointStatistics.top10=10 najboljših +endpointStatistics.top20=20 najboljših +endpointStatistics.all=Vse +endpointStatistics.refresh=Osveži +endpointStatistics.includeHomepage=Vključi domačo stran ('/') +endpointStatistics.includeLoginPage=Vključi prijavno stran ('/login') +endpointStatistics.totalEndpoints=Skupno končnih točk +endpointStatistics.totalVisits=Skupno število obiskov +endpointStatistics.showing=Prikaz +endpointStatistics.selectedVisits=Izbrani obiski +endpointStatistics.endpoint=Končna točka +endpointStatistics.visits=Obiski +endpointStatistics.percentage=Odstotek +endpointStatistics.loading=Nalaganje... +endpointStatistics.failedToLoad=Nalaganje podatkov končne točke ni uspelo. Poskusite osvežiti. +endpointStatistics.home=Domača stran +endpointStatistics.login=Prijava +endpointStatistics.top=Na vrh +endpointStatistics.numberOfVisits=Število obiskov +endpointStatistics.visitsTooltip=Obiski: {0} ({1}% vseh) +endpointStatistics.retry=Poskusi znova database.title=Uvoz/izvoz baze podatkov database.header=Uvoz/izvoz baze podatkov @@ -291,14 +293,14 @@ home.viewPdf.title=View/Edit PDF home.viewPdf.desc=Oglejte si, komentirajte, dodajte besedilo ali slike viewPdf.tags=ogled, branje, opomba, besedilo, slika -home.setFavorites=Set Favourites -home.hideFavorites=Hide Favourites -home.showFavorites=Show Favourites -home.legacyHomepage=Old homepage -home.newHomePage=Try our new homepage! -home.alphabetical=Alphabetical -home.globalPopularity=Global Popularity -home.sortBy=Sort by: +home.setFavorites=Nastavi priljubljene +home.hideFavorites=Skrij priljubljene +home.showFavorites=Prikaži priljubljene +home.legacyHomepage=Stara domača stran +home.newHomePage=Preizkusite našo novo domačo stran! +home.alphabetical=Abecedno +home.globalPopularity=Globalna priljubljenost +home.sortBy=Razvrsti po: home.multiTool.title=PDF Multi Tool home.multiTool.desc=Spoji, zavrti, prerazporedi, razdeli in odstrani strani @@ -552,7 +554,7 @@ splitPdfByChapters.tags=razdeli,poglavja,zaznamki,organiziraj home.validateSignature.title=Preveri podpis PDF home.validateSignature.desc=Preveri digitalne podpise in potrdila v dokumentih PDF -validateSignature.tags=podpis,verify,validate,pdf,certificate,digitalni podpis,Validate Signature,Validate certificate +validateSignature.tags=podpis,preveri,validiraj,pdf,certificate,digitalni podpis,Preveri podpis,Preveri certifikat #replace-invert-color replace-color.title=Napredne barvne možnosti @@ -787,7 +789,7 @@ autoSplitPDF.selectText.3=Naložite eno veliko optično prebrano datoteko PDF in autoSplitPDF.selectText.4=Ločilne strani so samodejno zaznane in odstranjene, kar zagotavlja čist končni dokument. autoSplitPDF.formPrompt=Pošljite PDF, ki vsebuje razdelilnike strani Stirling-PDF: autoSplitPDF.duplexMode=Dupleksni način (skeniranje spredaj in zadaj) -autoSplitPDF.dividerDownload2=Prenesi 'Auto Splitter Divider (z navodili).pdf' +autoSplitPDF.dividerDownload2=Prenesi 'Samodejni razdelilnik (z navodili).pdf' autoSplitPDF.submit=Pošlji @@ -886,8 +888,8 @@ sign.last=Zadnja stran sign.next=Naslednja stran sign.previous=Prejšnja stran sign.maintainRatio=Preklopi ohranjanje razmerja stranic -sign.undo=Undo -sign.redo=Redo +sign.undo=Razveljavi +sign.redo=Ponovi #repair repair.title=Popravilo @@ -958,8 +960,8 @@ compress.title=Stisnite compress.header=Stisnite PDF compress.credit=Ta storitev uporablja qpdf za stiskanje/optimizacijo PDF. compress.grayscale.label=Uporabi sivinsko lestvico za stiskanje -compress.selectText.1=Compression Settings -compress.selectText.1.1=1-3 PDF compression,
4-6 lite image compression,
7-9 intense image compression Will dramatically reduce image quality +compress.selectText.1=Nastavitve stiskanja +compress.selectText.1.1=1-3 stiskanje PDF,
4-6 enostavno stiskanje slik,
7-9 intenzivno stiskanje slik Bo dramatično zmanjšalo kakovost slike compress.selectText.2=Raven optimizacije: compress.selectText.4=Samodejni način - Samodejno prilagodi kakovost, da dobi PDF na natančno velikost compress.selectText.5=Pričakovana velikost PDF (npr. 25 MB, 10,8 MB, 25 KB) @@ -1307,15 +1309,15 @@ survey.please=Prosimo, razmislite o sodelovanju v naši anketi, če želite pris survey.disabled=(Pojavno okno ankete bo v naslednjih posodobitvah onemogočeno, vendar na voljo na dnu strani) survey.button=Izpolnite anketo survey.dontShowAgain=Ne prikaži več -survey.meeting.1=If you're using Stirling PDF at work, we'd love to speak to you. We're offering technical support sessions in exchange for a 15 minute user discovery session. -survey.meeting.2=This is a chance to: -survey.meeting.3=Get help with deployment, integrations, or troubleshooting -survey.meeting.4=Provide direct feedback on performance, edge cases, and feature gaps -survey.meeting.5=Help us refine Stirling PDF for real-world enterprise use -survey.meeting.6=If you're interested, you can book time with our team directly. (English speaking only) -survey.meeting.7=Looking forward to digging into your use cases and making Stirling PDF even better! -survey.meeting.notInterested=Not a business and/or interested in a meeting? -survey.meeting.button=Book meeting +survey.meeting.1=Če v službi uporabljate Stirling PDF, bi radi govorili z vami. Ponujamo seje tehnične podpore v zameno za 15-minutno sejo odkrivanja uporabnikov. +survey.meeting.2=To je priložnost za: +survey.meeting.3=Poiščite pomoč pri uvajanju, integracijah ali odpravljanju težav +survey.meeting.4=Zagotovite neposredne povratne informacije o zmogljivosti, robnih primerih in vrzeli v funkcijah +survey.meeting.5=Pomagajte nam izboljšati Stirling PDF za uporabo v podjetju v resničnem svetu +survey.meeting.6=Če ste zainteresirani, si lahko rezervirate čas neposredno pri naši ekipi. (samo angleško govoreči) +survey.meeting.7=Veselimo se poglobitve v vaše primere uporabe in izboljšanja Stirling PDF-ja! +survey.meeting.notInterested=Niste podjetje in/ali vas zanima srečanje? +survey.meeting.button=Rezerviraj srečanje #error error.sorry=Oprostite za težavo! @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Različica validateSignature.cert.keyUsage=Uporaba ključa validateSignature.cert.selfSigned=Samopodpisano validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index eb64b6da5..f6be28a70 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -90,6 +90,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index 33e826ca6..4b30e224e 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -90,6 +90,7 @@ legal.terms=Villkor och betingelser legal.accessibility=Gängeshållbarhet legal.cookie=Cockiropfer legal.impressum=Riksdagens utskott för teknikfrihet +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Aktivera analys analytics.disable=Avaktivera analys analytics.settings=Du kan ändra analysinställningarna i config/settings.yml-filen + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index 1871591f6..ba14ea0eb 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -90,6 +90,7 @@ legal.terms=ข้อกำหนดการใช้งาน legal.accessibility=ความเข้าถึง legal.cookie=นโยบายคุกกี้ legal.impressum=ปฏิญญา +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=เปิดการวิเคราะห์ analytics.disable=ปิดการวิเคราะห์ analytics.settings=คุณสามารถเปลี่ยนแปลงการตั้งค่าการวิเคราะห์ในไฟล์ config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index dafcaffb4..abd23a72c 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -90,6 +90,7 @@ legal.terms=Şartlar ve koşullar legal.accessibility=Erişilebilirlik legal.cookie=Çerez Politikası legal.impressum=Hakkımızda +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index cbdc3e944..e03266248 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -90,6 +90,7 @@ legal.terms=Правила та умови legal.accessibility=Доступність legal.cookie=Політика використання файлів cookie legal.impressum=Вихідні дані +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Увімкнути аналітику analytics.disable=Вимкнути аналітику analytics.settings=Ви можете змінити параметри аналітики у файлі config/settings.yml + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Версія validateSignature.cert.keyUsage=Використання ключа validateSignature.cert.selfSigned=Самоподписанный validateSignature.cert.bits=біт + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index d92404082..198faef89 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -90,6 +90,7 @@ legal.terms=Terms and Conditions legal.accessibility=Accessibility legal.cookie=Cookie Policy legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=Enable analytics analytics.disable=Disable analytics analytics.settings=You can change the settings for analytics in the config/settings.yml file + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=Version validateSignature.cert.keyUsage=Key Usage validateSignature.cert.selfSigned=Self-Signed validateSignature.cert.bits=bits + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_zh_BO.properties b/src/main/resources/messages_zh_BO.properties index fc238d11b..1c2959b97 100644 --- a/src/main/resources/messages_zh_BO.properties +++ b/src/main/resources/messages_zh_BO.properties @@ -90,6 +90,7 @@ legal.terms=བེད་སྤྱོད་ཆ་རྐྱེན། legal.accessibility=བེད་སྤྱོད་ནུས་པ། legal.cookie=Cookie སྲིད་བྱུས། legal.impressum=པར་འདེབས་བདག་དབང་། +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=དཔྱད་ཞིབ་སྤྱོད་འགོ་འཛ analytics.disable=དཔྱད་ཞིབ་སྤྱོད་མཚམས་འཇོག analytics.settings=དཔྱད་ཞིབ་ཀྱི་སྒྲིག་འགོད་ config/settings.yml ཡིག་ཆའི་ནང་བསྒྱུར་བཅོས་བྱེད་ཆོག + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=པར་གཞི། validateSignature.cert.keyUsage=ལྡེ་མིག་བེད་སྤྱོད། validateSignature.cert.selfSigned=རང་མིང་རྟགས། validateSignature.cert.bits=གནས། + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 2937ec42a..c0545d126 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -90,6 +90,7 @@ legal.terms=服务条款 legal.accessibility=无障碍 legal.cookie=Cookie 政策 legal.impressum=Impressum +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=启用分析功能 analytics.disable=禁用分析功能 analytics.settings=您可以在 config/settings.yml 文件中变更分析功能的设定 + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=版本 validateSignature.cert.keyUsage=密钥用途 validateSignature.cert.selfSigned=自签名 validateSignature.cert.bits=比特 + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 5a79c0b29..fe0790026 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -90,6 +90,7 @@ legal.terms=使用條款 legal.accessibility=無障礙性聲明 legal.cookie=Cookie 政策 legal.impressum=版本說明 +legal.showCookieBanner=Cookie Preferences ############### # Pipeline # @@ -135,6 +136,7 @@ analytics.enable=啟用分析功能 analytics.disable=停用分析功能 analytics.settings=您可以在 config/settings.yml 檔案中變更分析功能的設定 + ############# # NAVBAR # ############# @@ -1399,3 +1401,29 @@ validateSignature.cert.version=版本 validateSignature.cert.keyUsage=金鑰用途 validateSignature.cert.selfSigned=自我簽署 validateSignature.cert.bits=位元 + +#################### +# Cookie banner # +#################### +cookieBanner.popUp.title=How we use Cookies +cookieBanner.popUp.description.1=We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love. +cookieBanner.popUp.description.2=If you’d rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly. +cookieBanner.popUp.acceptAllBtn=Okay +cookieBanner.popUp.acceptNecessaryBtn=No Thanks +cookieBanner.popUp.showPreferencesBtn=Manage preferences +cookieBanner.preferencesModal.title=Consent Preferences Center +cookieBanner.preferencesModal.acceptAllBtn=Accept all +cookieBanner.preferencesModal.acceptNecessaryBtn=Reject all +cookieBanner.preferencesModal.savePreferencesBtn=Save preferences +cookieBanner.preferencesModal.closeIconLabel=Close modal +cookieBanner.preferencesModal.serviceCounterLabel=Service|Services +cookieBanner.preferencesModal.subtitle=Cookie Usage +cookieBanner.preferencesModal.description.1=Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users. +cookieBanner.preferencesModal.description.2=Stirling PDF cannot—and will never—track or access the content of the documents you use. +cookieBanner.preferencesModal.description.3=Your privacy and trust are at the core of what we do. +cookieBanner.preferencesModal.necessary.title.1=Strictly Necessary Cookies +cookieBanner.preferencesModal.necessary.title.2=Always Enabled +cookieBanner.preferencesModal.necessary.description=These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they can’t be turned off. +cookieBanner.preferencesModal.analytics.title=Analytics +cookieBanner.preferencesModal.analytics.description=These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with. + diff --git a/src/main/resources/settings.yml.template b/src/main/resources/settings.yml.template index 19a2961d7..1c3ee32ae 100644 --- a/src/main/resources/settings.yml.template +++ b/src/main/resources/settings.yml.template @@ -10,7 +10,6 @@ # If you want to override with environment parameter follow parameter naming SECURITY_INITIALLOGIN_USERNAME # ############################################################################################################# - security: enableLogin: false # set to 'true' to enable login csrfDisabled: false # set to 'true' to disable CSRF protection (not recommended for production) @@ -61,7 +60,6 @@ security: privateKey: classpath:saml-private-key.key # Your private key. Generated from your keypair spCert: classpath:saml-public-cert.crt # Your signing certificate. Generated from your keypair - premium: key: 00000000-0000-0000-0000-000000000000 enabled: false # Enable license key checks for pro/enterprise features @@ -72,6 +70,11 @@ premium: author: username creator: Stirling-PDF producer: Stirling-PDF + googleDrive: + enabled: false + clientId: '' + apiKey: '' + appId: '' legal: termsAndConditions: https://www.stirlingpdf.com/terms-and-conditions # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder @@ -102,14 +105,12 @@ system: name: postgres # set the name of your database. Should match the name of the database you create customPaths: pipeline: - watchedFoldersDir: "" #Defaults to /pipeline/watchedFolders - finishedFoldersDir: "" #Defaults to /pipeline/finishedFolders + watchedFoldersDir: '' #Defaults to /pipeline/watchedFolders + finishedFoldersDir: '' #Defaults to /pipeline/finishedFolders operations: - weasyprint: "" #Defaults to /opt/venv/bin/weasyprint - unoconvert: "" #Defaults to /opt/venv/bin/unoconvert - fileUploadLimit: "" # Defaults to "". No limit when string is empty. Set a number, between 0 and 999, followed by one of the following strings to set a limit. "KB", "MB", "GB". - - + weasyprint: '' #Defaults to /opt/venv/bin/weasyprint + unoconvert: '' #Defaults to /opt/venv/bin/unoconvert + fileUploadLimit: '' # Defaults to "". No limit when string is empty. Set a number, between 0 and 999, followed by one of the following strings to set a limit. "KB", "MB", "GB". ui: appName: '' # application's visible name @@ -131,7 +132,7 @@ AutomaticallyGenerated: appVersion: 0.35.0 processExecutor: - sessionLimit: # Process executor instances limits + sessionLimit: # Process executor instances limits libreOfficeSessionLimit: 1 pdfToHtmlSessionLimit: 1 qpdfSessionLimit: 4 @@ -140,7 +141,7 @@ processExecutor: weasyPrintSessionLimit: 16 installAppSessionLimit: 1 calibreSessionLimit: 1 - timeoutMinutes: # Process executor timeout in minutes + timeoutMinutes: # Process executor timeout in minutes libreOfficetimeoutMinutes: 30 pdfToHtmltimeoutMinutes: 20 pythonOpenCvtimeoutMinutes: 30 diff --git a/src/main/resources/static/css/cookieconsent.css b/src/main/resources/static/css/cookieconsent.css new file mode 100644 index 000000000..fdcc6ba6c --- /dev/null +++ b/src/main/resources/static/css/cookieconsent.css @@ -0,0 +1 @@ +#cc-main{background:transparent;color:var(--cc-primary-color);font-family:var(--cc-font-family);font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.15;position:relative;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;position:fixed;z-index:var(--cc-z-index)}#cc-main :after,#cc-main :before,#cc-main a,#cc-main button,#cc-main div,#cc-main h2,#cc-main input,#cc-main p,#cc-main span{all:unset;box-sizing:border-box}#cc-main .pm__badge,#cc-main button{all:initial;box-sizing:border-box;color:unset;visibility:unset}#cc-main .pm__badge,#cc-main a,#cc-main button,#cc-main input{-webkit-appearance:none;appearance:none;cursor:pointer;font-family:inherit;font-size:100%;line-height:normal;margin:0;outline:revert;outline-offset:2px;overflow:hidden}#cc-main table,#cc-main tbody,#cc-main td,#cc-main th,#cc-main thead,#cc-main tr{all:revert;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}:root{--cc-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--cc-modal-border-radius:.5rem;--cc-btn-border-radius:.4rem;--cc-modal-transition-duration:.25s;--cc-link-color:var(--cc-btn-primary-bg);--cc-modal-margin:1rem;--cc-z-index:2147483647;--cc-bg:#fff;--cc-primary-color:#2c2f31;--cc-secondary-color:#5e6266;--cc-btn-primary-bg:#30363c;--cc-btn-primary-color:#fff;--cc-btn-primary-border-color:var(--cc-btn-primary-bg);--cc-btn-primary-hover-bg:#000;--cc-btn-primary-hover-color:#fff;--cc-btn-primary-hover-border-color:var(--cc-btn-primary-hover-bg);--cc-btn-secondary-bg:#eaeff2;--cc-btn-secondary-color:var(--cc-primary-color);--cc-btn-secondary-border-color:var(--cc-btn-secondary-bg);--cc-btn-secondary-hover-bg:#d4dae0;--cc-btn-secondary-hover-color:#000;--cc-btn-secondary-hover-border-color:#d4dae0;--cc-separator-border-color:#f0f4f7;--cc-toggle-on-bg:var(--cc-btn-primary-bg);--cc-toggle-off-bg:#667481;--cc-toggle-on-knob-bg:#fff;--cc-toggle-off-knob-bg:var(--cc-toggle-on-knob-bg);--cc-toggle-enabled-icon-color:var(--cc-bg);--cc-toggle-disabled-icon-color:var(--cc-bg);--cc-toggle-readonly-bg:#d5dee2;--cc-toggle-readonly-knob-bg:#fff;--cc-toggle-readonly-knob-icon-color:var(--cc-toggle-readonly-bg);--cc-section-category-border:var(--cc-cookie-category-block-bg);--cc-cookie-category-block-bg:#f0f4f7;--cc-cookie-category-block-border:#f0f4f7;--cc-cookie-category-block-hover-bg:#e9eff4;--cc-cookie-category-block-hover-border:#e9eff4;--cc-cookie-category-expanded-block-bg:transparent;--cc-cookie-category-expanded-block-hover-bg:#dee4e9;--cc-overlay-bg:rgba(0,0,0,.65);--cc-webkit-scrollbar-bg:var(--cc-section-category-border);--cc-webkit-scrollbar-hover-bg:var(--cc-btn-primary-hover-bg);--cc-footer-bg:var(--cc-btn-secondary-bg);--cc-footer-color:var(--cc-secondary-color);--cc-footer-border-color:#e4eaed;--cc-pm-toggle-border-radius:4em}#cc-main.cc--rtl{direction:rtl}#cc-main .cm__title,#cc-main a,#cc-main b,#cc-main em,#cc-main strong{font-weight:600}#cc-main button>span{pointer-events:none}#cc-main .cc__link,#cc-main a{background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0 1px;font-weight:600;position:relative;transition:background-size .25s,color .25s ease}#cc-main .cc__link:hover,#cc-main a:hover{background-size:100% 1px;color:var(--cc-primary-color)}#cc-main .cc__link{color:var(--cc-link-color)}#cc-main .cm__desc,#cc-main .pm__body{overscroll-behavior:auto contain;scrollbar-width:thin}@media screen and (min-width:640px){#cc-main ::-webkit-scrollbar,#cc-main ::-webkit-scrollbar-thumb,#cc-main ::-webkit-scrollbar-track{all:revert}#cc-main ::-webkit-scrollbar-thumb{-webkit-background-clip:padding-box;background-clip:padding-box;background:var(--cc-toggle-readonly-bg);border:.25rem solid var(--cc-bg);border-radius:1rem}#cc-main ::-webkit-scrollbar-thumb:hover{background:var(--cc-toggle-off-bg)}#cc-main ::-webkit-scrollbar{background:transparent;width:12px}}html.disable--interaction.show--consent,html.disable--interaction.show--consent body{height:auto!important;overflow:hidden!important}@media (prefers-reduced-motion){#cc-main{--cc-modal-transition-duration:0s}}.cc--darkmode{--cc-bg:#161a1c;--cc-primary-color:#ebf3f6;--cc-secondary-color:#aebbc5;--cc-btn-primary-bg:#c2d0e0;--cc-btn-primary-color:var(--cc-bg);--cc-btn-primary-border-color:var(--cc-btn-primary-bg);--cc-btn-primary-hover-bg:#98a7b6;--cc-btn-primary-hover-color:#000;--cc-btn-primary-hover-border-color:var(--cc-btn-primary-hover-bg);--cc-btn-secondary-bg:#242c31;--cc-btn-secondary-color:var(--cc-primary-color);--cc-btn-secondary-border-color:var(--cc-btn-secondary-bg);--cc-btn-secondary-hover-bg:#353d43;--cc-btn-secondary-hover-color:#fff;--cc-btn-secondary-hover-border-color:var(--cc-btn-secondary-hover-bg);--cc-separator-border-color:#222a30;--cc-toggle-on-bg:var(--cc-btn-primary-bg);--cc-toggle-off-bg:#525f6b;--cc-toggle-on-knob-bg:var(--cc-btn-primary-color);--cc-toggle-off-knob-bg:var(--cc-btn-primary-color);--cc-toggle-enabled-icon-color:var(--cc-btn-primary-color);--cc-toggle-disabled-icon-color:var(--cc-btn-primary-color);--cc-toggle-readonly-bg:#343e45;--cc-toggle-readonly-knob-bg:#5f6b72;--cc-toggle-readonly-knob-icon-color:var(--cc-toggle-readonly-bg);--cc-section-category-border:#1e2428;--cc-cookie-category-block-bg:#1e2428;--cc-cookie-category-block-border:var(--cc-section-category-border);--cc-cookie-category-block-hover-bg:#242c31;--cc-cookie-category-block-hover-border:#232a2f;--cc-cookie-category-expanded-block-bg:transparent;--cc-cookie-category-expanded-block-hover-bg:var(--cc-toggle-readonly-bg);--cc-overlay-bg:rgba(0,0,0,.65);--cc-webkit-scrollbar-bg:var(--cc-section-category-border);--cc-webkit-scrollbar-hover-bg:var(--cc-btn-primary-hover-bg);--cc-footer-bg:#0c0e0f;--cc-footer-color:var(--cc-secondary-color);--cc-footer-border-color:#060809}.cc--darkmode #cc-main{color-scheme:dark}#cc-main .cm{background:var(--cc-bg);border-radius:var(--cc-modal-border-radius);box-shadow:0 .625em 1.875em rgba(0,0,2,.3);display:flex;flex-direction:column;max-width:24rem;opacity:0;overflow:hidden;position:fixed;transform:translateY(1.6em);visibility:hidden;z-index:1}#cc-main .cm--top{top:var(--cc-modal-margin)}#cc-main .cm--middle{top:50%;transform:translateY(calc(-50% + 1.6em))}#cc-main .cm--bottom{bottom:var(--cc-modal-margin)}#cc-main .cm--center{left:var(--cc-modal-margin);margin:0 auto;right:var(--cc-modal-margin);width:unset}#cc-main .cm--left{left:var(--cc-modal-margin);margin-right:var(--cc-modal-margin)}#cc-main .cm--right{margin-left:var(--cc-modal-margin);right:var(--cc-modal-margin)}#cc-main .cm__body{display:flex;flex-direction:column;justify-content:space-between;position:relative}#cc-main .cm__btns,#cc-main .cm__links{padding:1rem 1.3rem;width:unset}#cc-main .cm__texts{display:flex;flex:1;flex-direction:column;justify-content:center;padding:1rem 0 0}#cc-main .cm__desc,#cc-main .cm__title{padding:0 1.3rem}#cc-main .cm__title{font-size:1.05em}#cc-main .cm__title+.cm__desc{margin-top:1.1em}#cc-main .cm__desc{color:var(--cc-secondary-color);font-size:.9em;line-height:1.5;max-height:40vh;overflow-x:visible;overflow-y:auto;padding-bottom:1em}#cc-main .cm__btns{border-top:1px solid var(--cc-separator-border-color);display:flex;flex-direction:column;justify-content:center}#cc-main .cm__btn-group{display:grid;grid-auto-columns:minmax(0,1fr)}#cc-main .cm__btn+.cm__btn,#cc-main .cm__btn-group+.cm__btn-group{margin-top:.375rem}#cc-main .cm--flip .cm__btn+.cm__btn,#cc-main .cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem;margin-top:0}#cc-main .cm--inline .cm__btn+.cm__btn{margin-left:.375rem;margin-top:0}#cc-main .cm--inline.cm--flip .cm__btn+.cm__btn{margin-bottom:0;margin-left:0;margin-right:.375rem}#cc-main .cm--inline.cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem;margin-right:0}#cc-main .cm--wide .cm__btn+.cm__btn,#cc-main .cm--wide .cm__btn-group+.cm__btn-group{margin-left:.375rem;margin-top:0}#cc-main .cm--wide.cm--flip .cm__btn+.cm__btn,#cc-main .cm--wide.cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:0;margin-right:.375rem}#cc-main .cm--bar:not(.cm--inline) .cm__btn-group--uneven,#cc-main .cm--wide .cm__btn-group--uneven{display:flex;flex:1;justify-content:space-between}#cc-main .cm--bar:not(.cm--inline).cm--flip .cm__btn-group--uneven,#cc-main .cm--wide.cm--flip .cm__btn-group--uneven{flex-direction:row-reverse}#cc-main .cm__btn{background:var(--cc-btn-primary-bg);border:1px solid var(--cc-btn-primary-border-color);border-radius:var(--cc-btn-border-radius);color:var(--cc-btn-primary-color);font-size:.82em;font-weight:600;min-height:42px;padding:.5em 1em;text-align:center}#cc-main .cm__btn:hover{background:var(--cc-btn-primary-hover-bg);border-color:var(--cc-btn-primary-hover-border-color);color:var(--cc-btn-primary-hover-color)}#cc-main .cm__btn--secondary{background:var(--cc-btn-secondary-bg);border-color:var(--cc-btn-secondary-border-color);color:var(--cc-btn-secondary-color)}#cc-main .cm__btn--secondary:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color);color:var(--cc-btn-secondary-hover-color)}#cc-main .cm__btn--close{border-radius:0;border-bottom-left-radius:var(--cc-btn-border-radius);border-right:none;border-top:none;display:none;font-size:1em;height:42px;min-width:auto!important;overflow:hidden;padding:0!important;position:absolute;right:0;top:0;width:42px}#cc-main .cm__btn--close svg{stroke:var(--cc-btn-primary-color);transform:scale(.5);transition:stroke .15s ease}#cc-main .cm__btn--close:hover svg{stroke:var(--cc-btn-primary-hover-color)}#cc-main .cm__btn--close.cm__btn--secondary svg{stroke:var(--cc-btn-secondary-color)}#cc-main .cm__btn--close.cm__btn--secondary:hover svg{stroke:var(--cc-btn-secondary-hover-color)}#cc-main .cm__btn--close+.cm__texts .cm__title{padding-right:3rem}#cc-main .cm--inline .cm__btn-group{grid-auto-flow:column}#cc-main .cm__footer{background:var(--cc-footer-bg);border-top:1px solid var(--cc-footer-border-color);color:var(--cc-footer-color);padding:.4em 0 .5em}#cc-main .cm__links{display:flex;flex-direction:row;padding-bottom:0;padding-top:0}#cc-main .cm__link-group{display:flex;flex-direction:row;font-size:.8em;width:100%}#cc-main .cm__link-group>*+*{margin-left:1.3rem}#cc-main .cm--flip .cm__btn:last-child{grid-row:1}#cc-main .cm--inline.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--box .cm__btn--close{display:block}#cc-main .cm--box.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cm--box.cm--wide{max-width:36em}#cc-main .cm--box.cm--wide .cm__btns{flex-direction:row;justify-content:space-between}#cc-main .cm--box.cm--wide .cm__btn-group{grid-auto-flow:column}#cc-main .cm--box.cm--wide .cm__btn{min-width:120px;padding-left:1.8em;padding-right:1.8em}#cc-main .cm--box.cm--wide.cm--flip .cm__btns{flex-direction:row-reverse}#cc-main .cm--box.cm--wide.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--cloud{max-width:54em;width:unset}#cc-main .cm--cloud .cm__body{flex-direction:row}#cc-main .cm--cloud .cm__texts{flex:1}#cc-main .cm--cloud .cm__desc{max-height:9.4em}#cc-main .cm--cloud .cm__btns{border-left:1px solid var(--cc-separator-border-color);border-top:none;max-width:23em}#cc-main .cm--cloud .cm__btn-group{flex-direction:column}#cc-main .cm--cloud .cm__btn{min-width:19em}#cc-main .cm--cloud.cm--flip .cm__btn-group,#cc-main .cm--cloud.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cm--cloud.cm--inline .cm__btn-group{flex-direction:row}#cc-main .cm--cloud.cm--inline .cm__btn{min-width:10em}#cc-main .cm--cloud.cm--inline.cm--flip .cm__btn-group{flex-direction:row-reverse}#cc-main .cm--bar{border-radius:0;left:0;margin:0;max-width:unset;opacity:1;right:0;transform:translateY(0);width:100vw;--cc-modal-transition-duration:.35s}#cc-main .cm--bar.cm--top{top:0;transform:translateY(-100%)}#cc-main .cm--bar.cm--bottom{bottom:0;transform:translateY(100%)}#cc-main .cm--bar .cm__body,#cc-main .cm--bar .cm__links{margin:0 auto;max-width:55em;width:100%}#cc-main .cm--bar .cm__body{padding:.5em 0 .9em}#cc-main .cm--bar .cm__btns{border-top:none;flex-direction:row;justify-content:space-between}#cc-main .cm--bar .cm__btn-group{grid-auto-flow:column}#cc-main .cm--bar:not(.cm--inline) .cm__btn+.cm__btn,#cc-main .cm--bar:not(.cm--inline) .cm__btn-group+.cm__btn-group{margin-left:.375rem;margin-top:0}#cc-main .cm--bar .cm__btn{min-width:120px;padding-left:2em;padding-right:2em}#cc-main .cm--bar.cm--flip:not(.cm--inline) .cm__btn+.cm__btn,#cc-main .cm--bar.cm--flip:not(.cm--inline) .cm__btn-group+.cm__btn-group{margin-bottom:0;margin-left:0;margin-right:.375rem}#cc-main .cm--bar.cm--flip .cm__btns{flex-direction:row-reverse}#cc-main .cm--bar.cm--flip .cm__btn:last-child{grid-column:1}#cc-main .cm--bar.cm--inline .cm__body,#cc-main .cm--bar.cm--inline .cm__links{max-width:74em}#cc-main .cm--bar.cm--inline .cm__body{flex-direction:row;padding:0}#cc-main .cm--bar.cm--inline .cm__btns{flex-direction:column;justify-content:center;max-width:23em}#cc-main .cm--bar.cm--inline.cm--flip .cm__btns{flex-direction:column-reverse}#cc-main .cc--anim .cm,#cc-main .cc--anim.cm-wrapper:before{transition:opacity var(--cc-modal-transition-duration) ease,visibility var(--cc-modal-transition-duration) ease,transform var(--cc-modal-transition-duration) ease}#cc-main .cc--anim .cm__btn,#cc-main .cc--anim .cm__close{transition:background-color .15s ease,border-color .15s ease,color .15s ease}.disable--interaction #cc-main .cm-wrapper:before{background:var(--cc-overlay-bg);bottom:0;content:"";left:0;opacity:0;position:fixed;right:0;top:0;visibility:hidden;z-index:0}.show--consent #cc-main .cc--anim .cm{opacity:1;transform:translateY(0);visibility:visible!important}.show--consent #cc-main .cc--anim .cm--middle{transform:translateY(-50%)}.show--consent #cc-main .cc--anim .cm--bar{transform:translateY(0)}.show--consent #cc-main .cc--anim.cm-wrapper:before{opacity:1;visibility:visible}#cc-main.cc--rtl .cm__btn--close{border-bottom-left-radius:unset;border-bottom-right-radius:var(--cc-btn-border-radius);left:0;right:unset}#cc-main.cc--rtl .cm__btn--close+.cm__texts .cm__title{padding-left:3rem!important;padding-right:1.3rem}#cc-main.cc--rtl .cm--inline .cm__btn+.cm__btn{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .cm--inline.cm--flip .cm__btn+.cm__btn{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar .cm__btn-group+.cm__btn-group,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide .cm__btn-group+.cm__btn-group{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .cm:not(.cm--inline).cm--bar.cm--flip .cm__btn+.cm__btn,#cc-main.cc--rtl .cm:not(.cm--inline).cm--wide.cm--flip .cm__btn+.cm__btn{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .cm__link-group>*+*{margin-left:0;margin-right:1.3rem}@media screen and (max-width:640px){#cc-main{--cc-modal-margin:.5em}#cc-main .cm{max-width:none!important;width:auto!important}#cc-main .cm__body{flex-direction:column!important;padding:0!important}#cc-main .cm__btns,#cc-main .cm__desc,#cc-main .cm__links,#cc-main .cm__title{padding-left:1.1rem!important;padding-right:1.1rem!important}#cc-main .cm__btns{border-left:none!important;border-top:1px solid var(--cc-separator-border-color)!important;flex-direction:column!important;max-width:none!important;min-width:auto!important}#cc-main .cm__btn+.cm__btn,#cc-main .cm__btn-group+.cm__btn-group{margin:.375rem 0 0!important}#cc-main .cm--flip .cm__btn+.cm__btn,#cc-main .cm--flip .cm__btn-group+.cm__btn-group{margin-bottom:.375rem!important;margin-top:0!important}#cc-main .cm__btn-group{display:flex!important;flex-direction:column!important;min-width:auto!important}#cc-main .cm__btn{flex:auto!important}#cc-main .cm__link-group{justify-content:center!important}#cc-main .cm--flip .cm__btn-group,#cc-main .cm--flip .cm__btns{flex-direction:column-reverse!important}}#cc-main .pm-wrapper{position:relative;z-index:2}#cc-main .pm{background:var(--cc-bg);border-radius:var(--cc-modal-border-radius);box-shadow:0 .625em 1.875em rgba(0,0,2,.3);display:flex;flex-direction:column;opacity:0;overflow:hidden;position:fixed;visibility:hidden;width:100%;width:unset;z-index:1}#cc-main svg{fill:none;width:100%}#cc-main .pm__body,#cc-main .pm__footer,#cc-main .pm__header{padding:1em 1.4em}#cc-main .pm__header{align-items:center;border-bottom:1px solid var(--cc-separator-border-color);display:flex;justify-content:space-between}#cc-main .pm__title{align-items:center;display:flex;flex:1;font-weight:600;margin-right:2em}#cc-main .pm__close-btn{background:var(--cc-btn-secondary-bg);border:1px solid var(--cc-btn-secondary-border-color);border-radius:var(--cc-btn-border-radius);height:40px;position:relative;transition:all .15s ease;width:40px}#cc-main .pm__close-btn span{display:flex;height:100%;width:100%}#cc-main .pm__close-btn svg{stroke:var(--cc-btn-secondary-color);transform:scale(.5);transition:stroke .15s ease}#cc-main .pm__close-btn:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color)}#cc-main .pm__close-btn:hover svg{stroke:var(--cc-btn-secondary-hover-color)}#cc-main .pm__body{flex:1;overflow-y:auto;overflow-y:overlay}#cc-main .pm__section,#cc-main .pm__section--toggle{border-radius:var(--cc-btn-border-radius);display:flex;flex-direction:column;margin-bottom:.5em}#cc-main .pm__section--toggle .pm__section-desc-wrapper{border:1px solid var(--cc-cookie-category-block-border);border-radius:var(--cc-btn-border-radius);border-top:none;border-top-left-radius:0;border-top-right-radius:0;display:none;margin-top:0!important;overflow:hidden}#cc-main .pm__section{border:1px solid var(--cc-separator-border-color);padding:1em;transition:background-color .25s ease,border-color .25s ease}#cc-main .pm__section:first-child{border:none;margin-bottom:2em;margin-top:0;padding:0;transition:none}#cc-main .pm__section:not(:first-child):hover{background:var(--cc-cookie-category-block-bg);border-color:var(--cc-cookie-category-block-border)}#cc-main .pm__section-toggles+.pm__section{margin-top:2em}#cc-main .pm__section--toggle{background:var(--cc-cookie-category-block-bg);border-top:none;margin-bottom:.375rem}#cc-main .pm__section--toggle .pm__section-title{align-items:center;background:var(--cc-cookie-category-block-bg);border:1px solid var(--cc-cookie-category-block-border);display:flex;justify-content:space-between;min-height:58px;padding:1.1em 5.4em 1.1em 1.2em;position:relative;transition:background-color .25s ease,border-color .25s ease;width:100%}#cc-main .pm__section--toggle .pm__section-title:hover{background:var(--cc-cookie-category-block-hover-bg);border-color:var(--cc-cookie-category-block-hover-border)}#cc-main .pm__section--toggle .pm__section-desc{margin-top:0;padding:1em}#cc-main .pm__section--toggle.is-expanded{--cc-cookie-category-block-bg:var(--cc-cookie-category-expanded-block-bg);--cc-cookie-category-block-border:var(--cc-cookie-category-expanded-block-hover-bg)}#cc-main .pm__section--toggle.is-expanded .pm__section-title{border-bottom-left-radius:0;border-bottom-right-radius:0}#cc-main .pm__section--toggle.is-expanded .pm__section-arrow svg{transform:scale(.5) rotate(180deg)}#cc-main .pm__section--toggle.is-expanded .pm__section-desc-wrapper{display:flex}#cc-main .pm__section--expandable .pm__section-title{cursor:pointer;padding-left:3.4em}#cc-main .pm__section--expandable .pm__section-arrow{background:var(--cc-toggle-readonly-bg);border-radius:100%;display:flex;height:20px;justify-content:center;left:18px;pointer-events:none;position:absolute;width:20px}#cc-main .pm__section--expandable .pm__section-arrow svg{stroke:var(--cc-btn-secondary-color);transform:scale(.5)}#cc-main .pm__section-title-wrapper{align-items:center;display:flex;position:relative}#cc-main .pm__section-title-wrapper+.pm__section-desc-wrapper{margin-top:.85em}#cc-main .pm__section-title{border-radius:var(--cc-btn-border-radius);font-size:.95em;font-weight:600}#cc-main .pm__badge{align-items:center;background:var(--cc-btn-secondary-bg);border-radius:5em;color:var(--cc-secondary-color);display:flex;flex:none;font-size:.8em;font-weight:600;height:23px;justify-content:center;margin-left:1em;min-width:23px;overflow:hidden;padding:0 .6em 1px;position:relative;text-align:center;white-space:nowrap;width:auto}#cc-main .pm__service-counter{background:var(--cc-btn-primary-bg);color:var(--cc-btn-primary-color);padding:0;width:23px}#cc-main .pm__service-counter[data-counterlabel]{padding:0 .6em 1px;width:auto}#cc-main .section__toggle,#cc-main .section__toggle-wrapper,#cc-main .toggle__icon,#cc-main .toggle__label{border-radius:var(--cc-pm-toggle-border-radius);height:23px;transform:translateZ(0);width:50px}#cc-main .section__toggle-wrapper{cursor:pointer;position:absolute;right:18px;z-index:1}#cc-main .toggle-service{height:19px;position:relative;right:0;width:42px}#cc-main .toggle-service .section__toggle,#cc-main .toggle-service .toggle__icon,#cc-main .toggle-service .toggle__label{height:19px;width:42px}#cc-main .toggle-service .toggle__icon{position:relative}#cc-main .toggle-service .toggle__icon-circle{height:19px;width:19px}#cc-main .toggle-service .section__toggle:checked~.toggle__icon .toggle__icon-circle{transform:translateX(23px)}#cc-main .pm__section--toggle:nth-child(2) .section__toggle-wrapper:after{display:none!important}#cc-main .section__toggle{border:0;cursor:pointer;display:block;left:0;margin:0;position:absolute;top:0}#cc-main .section__toggle:disabled{cursor:not-allowed}#cc-main .toggle__icon{background:var(--cc-toggle-off-bg);box-shadow:0 0 0 1px var(--cc-toggle-off-bg);display:flex;flex-direction:row;pointer-events:none;position:absolute;transition:all .25s ease}#cc-main .toggle__icon-circle{background:var(--cc-toggle-off-knob-bg);border:none;border-radius:var(--cc-pm-toggle-border-radius);box-shadow:0 1px 2px rgba(24,32,3,.36);display:block;height:23px;left:0;position:absolute;top:0;transition:transform .25s ease,background-color .25s ease;width:23px}#cc-main .toggle__icon-off,#cc-main .toggle__icon-on{height:100%;position:absolute;transition:opacity .15s ease;width:100%}#cc-main .toggle__icon-on{opacity:0;transform:rotate(45deg)}#cc-main .toggle__icon-on svg{stroke:var(--cc-toggle-on-bg);transform:scale(.55) rotate(-45deg)}#cc-main .toggle__icon-off{opacity:1}#cc-main .toggle__icon-off svg{stroke:var(--cc-toggle-off-bg);transform:scale(.55)}#cc-main .section__toggle:checked~.toggle__icon{background:var(--cc-toggle-on-bg);box-shadow:0 0 0 1px var(--cc-toggle-on-bg)}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-circle{background-color:var(--cc-toggle-on-knob-bg);transform:translateX(27px)}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-on{opacity:1}#cc-main .section__toggle:checked~.toggle__icon .toggle__icon-off{opacity:0}#cc-main .section__toggle:checked:disabled~.toggle__icon{background:var(--cc-toggle-readonly-bg);box-shadow:0 0 0 1px var(--cc-toggle-readonly-bg)}#cc-main .section__toggle:checked:disabled~.toggle__icon .toggle__icon-circle{background:var(--cc-toggle-readonly-knob-bg);box-shadow:none}#cc-main .section__toggle:checked:disabled~.toggle__icon svg{stroke:var(--cc-toggle-readonly-knob-icon-color)}#cc-main .toggle__label{opacity:0;overflow:hidden;pointer-events:none;position:absolute;top:0;z-index:-1}#cc-main .pm__section-desc-wrapper{color:var(--cc-secondary-color);display:flex;flex-direction:column;font-size:.9em}#cc-main .pm__section-desc-wrapper>:not(:last-child){border-bottom:1px solid var(--cc-cookie-category-block-border)}#cc-main .pm__section-services{display:flex;flex-direction:column}#cc-main .pm__service{align-items:center;display:flex;justify-content:space-between;padding:.4em 1.2em;position:relative;transition:background-color .15s ease}#cc-main .pm__service:hover{background-color:var(--cc-cookie-category-block-hover-bg)}#cc-main .pm__service-header{align-items:center;display:flex;margin-right:1em;width:100%}#cc-main .pm__service-icon{border:2px solid;border-radius:100%;height:8px;margin-left:6px;margin-right:20px;margin-top:1px;min-width:8px}#cc-main .pm__service-title{font-size:.95em;width:100%;word-break:break-word}#cc-main .pm__section-desc{line-height:1.5em}#cc-main .pm__section-table{border-collapse:collapse;font-size:.9em;margin:0;overflow:hidden;padding:0;text-align:left;width:100%}#cc-main .pm__table-caption{text-align:left}#cc-main .pm__table-caption,#cc-main .pm__table-head>tr{border-bottom:1px dashed var(--cc-separator-border-color);color:var(--cc-primary-color);font-weight:600}#cc-main .pm__table-tr{transition:background-color .15s ease}#cc-main .pm__table-tr:hover{background:var(--cc-cookie-category-block-hover-bg)}#cc-main .pm__table-caption,#cc-main .pm__table-td,#cc-main .pm__table-th{padding:.625em .625em .625em 1.2em;vertical-align:top}#cc-main .pm__footer{border-top:1px solid var(--cc-separator-border-color);display:flex;justify-content:space-between}#cc-main .pm__btn-group{display:flex}#cc-main .pm__btn+.pm__btn,#cc-main .pm__btn-group+.pm__btn-group{margin-left:.375rem}#cc-main .pm--flip .pm__btn+.pm__btn,#cc-main .pm--flip .pm__btn-group+.pm__btn-group{margin-left:0;margin-right:.375rem}#cc-main .pm__btn{background:var(--cc-btn-primary-bg);border:1px solid var(--cc-btn-primary-border-color);border-radius:var(--cc-btn-border-radius);color:var(--cc-btn-primary-color);flex:auto;font-size:.82em;font-weight:600;min-height:42px;min-width:110px;padding:.5em 1.5em;text-align:center;transition:background-color .15s ease,border-color .15s ease,color .15s ease}#cc-main .pm__btn:hover{background:var(--cc-btn-primary-hover-bg);border-color:var(--cc-btn-primary-hover-border-color);color:var(--cc-btn-primary-hover-color)}#cc-main .pm__btn--secondary{background:var(--cc-btn-secondary-bg);border-color:var(--cc-btn-secondary-border-color);color:var(--cc-btn-secondary-color)}#cc-main .pm__btn--secondary:hover{background:var(--cc-btn-secondary-hover-bg);border-color:var(--cc-btn-secondary-hover-border-color);color:var(--cc-btn-secondary-hover-color)}#cc-main .pm--box{height:calc(100% - 2em);left:var(--cc-modal-margin);margin:0 auto;max-height:37.5em;max-width:43em;right:var(--cc-modal-margin);top:50%;transform:translateY(calc(-50% + 1.6em))}#cc-main .pm--box.pm--flip .pm__btn-group,#cc-main .pm--box.pm--flip .pm__footer{flex-direction:row-reverse}#cc-main .pm--bar{border-radius:0;bottom:0;height:100%;margin:0;max-height:none;max-width:29em;opacity:1;top:0;width:100%;--cc-modal-transition-duration:.35s}#cc-main .pm--bar .pm__section-table,#cc-main .pm--bar .pm__table-body,#cc-main .pm--bar .pm__table-td,#cc-main .pm--bar .pm__table-th,#cc-main .pm--bar .pm__table-tr{display:block}#cc-main .pm--bar .pm__table-head{display:none}#cc-main .pm--bar .pm__table-caption{display:block}#cc-main .pm--bar .pm__table-tr:not(:last-child){border-bottom:1px solid var(--cc-separator-border-color)}#cc-main .pm--bar .pm__table-td{display:flex;justify-content:space-between}#cc-main .pm--bar .pm__table-td:before{color:var(--cc-primary-color);content:attr(data-column);flex:1;font-weight:600;min-width:100px;overflow:hidden;padding-right:2em;text-overflow:ellipsis}#cc-main .pm--bar .pm__table-td>div{flex:3}#cc-main .pm--bar:not(.pm--wide) .pm__body,#cc-main .pm--bar:not(.pm--wide) .pm__footer,#cc-main .pm--bar:not(.pm--wide) .pm__header{padding:1em 1.3em}#cc-main .pm--bar:not(.pm--wide) .pm__btn-group,#cc-main .pm--bar:not(.pm--wide) .pm__footer{flex-direction:column}#cc-main .pm--bar:not(.pm--wide) .pm__btn+.pm__btn,#cc-main .pm--bar:not(.pm--wide) .pm__btn-group+.pm__btn-group{margin:.375rem 0 0}#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn-group,#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__footer{flex-direction:column-reverse}#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn+.pm__btn,#cc-main .pm--bar:not(.pm--wide).pm--flip .pm__btn-group+.pm__btn-group{margin-bottom:.375rem;margin-top:0}#cc-main .pm--bar:not(.pm--wide) .pm__badge{display:none}#cc-main .pm--bar.pm--left{left:0;transform:translateX(-100%)}#cc-main .pm--bar.pm--right{right:0;transform:translateX(100%)}#cc-main .pm--bar.pm--wide{max-width:35em}#cc-main .pm--bar.pm--wide .pm__body,#cc-main .pm--bar.pm--wide .pm__footer,#cc-main .pm--bar.pm--wide .pm__header{padding:1em 1.4em}#cc-main .pm--bar.pm--wide.pm--flip .pm__btn-group,#cc-main .pm--bar.pm--wide.pm--flip .pm__footer{flex-direction:row-reverse}#cc-main .pm-overlay{background:var(--cc-overlay-bg);bottom:0;content:"";left:0;opacity:0;position:fixed;right:0;top:0;visibility:hidden;z-index:1}#cc-main .cc--anim .pm,#cc-main .cc--anim .pm-overlay{transition:opacity var(--cc-modal-transition-duration) ease,visibility var(--cc-modal-transition-duration) ease,transform var(--cc-modal-transition-duration) ease}.show--preferences #cc-main .cc--anim .pm{opacity:1;visibility:visible!important}.show--preferences #cc-main .cc--anim .pm--box{transform:translateY(-50%)}.show--preferences #cc-main .cc--anim .pm--bar{transform:translateX(0)}.show--preferences #cc-main .cc--anim .pm-overlay{opacity:1;visibility:visible}#cc-main.cc--rtl .pm__service-header{margin-left:1em;margin-right:0}#cc-main.cc--rtl .pm__section-arrow{left:unset;right:18px}#cc-main.cc--rtl .section__toggle-wrapper{left:18px;right:unset;transform-origin:left}#cc-main.cc--rtl .toggle-service{left:0}#cc-main.cc--rtl .pm__service-icon{margin-left:20px;margin-right:5px}#cc-main.cc--rtl .pm__section--toggle .pm__section-title{padding-left:5.4em;padding-right:1.2em}#cc-main.cc--rtl .pm__section--expandable .pm__section-title{padding-right:3.4em}#cc-main.cc--rtl .pm__badge{margin-left:unset;margin-right:1em}#cc-main.cc--rtl .toggle__icon-circle{transform:translateX(27px)}#cc-main.cc--rtl .toggle-service .toggle__icon-circle{transform:translateX(23px)}#cc-main.cc--rtl .section__toggle:checked~.toggle__icon .toggle__icon-circle{transform:translateX(0)}#cc-main.cc--rtl .pm__table-td,#cc-main.cc--rtl .pm__table-th{padding-left:unset;padding-right:1.2em;text-align:right}#cc-main.cc--rtl .pm__table-td{padding-left:unset;padding-right:1.2em}#cc-main.cc--rtl .pm__table-td:before{padding-left:2em;padding-right:unset}#cc-main.cc--rtl .pm__btn+.pm__btn,#cc-main.cc--rtl .pm__btn-group+.pm__btn-group{margin-left:0;margin-right:.375rem}#cc-main.cc--rtl .pm--flip .pm__btn+.pm__btn,#cc-main.cc--rtl .pm--flip .pm__btn-group+.pm__btn-group{margin-left:.375rem;margin-right:0}#cc-main.cc--rtl .pm--flip.pm--bar:not(.pm--wide) .pm__btn+.pm__btn,#cc-main.cc--rtl .pm--flip.pm--bar:not(.pm--wide) .pm__btn-group+.pm__btn-group{margin-left:0}@media screen and (max-width:640px){#cc-main .pm{border-radius:0;bottom:0;height:auto;left:0;max-height:100%;max-width:none!important;right:0;top:0;transform:translateY(1.6em)}#cc-main .pm__body,#cc-main .pm__footer,#cc-main .pm__header{padding:.9em!important}#cc-main .pm__badge{display:none}#cc-main .pm__section-table,#cc-main .pm__table-body,#cc-main .pm__table-caption,#cc-main .pm__table-td,#cc-main .pm__table-th,#cc-main .pm__table-tr{display:block}#cc-main .pm__table-head{display:none}#cc-main .pm__table-tr:not(:last-child){border-bottom:1px solid var(--cc-separator-border-color)}#cc-main .pm__table-td{display:flex;justify-content:space-between}#cc-main .pm__table-td:before{color:var(--cc-primary-color);content:attr(data-column);flex:1;font-weight:600;min-width:100px;overflow:hidden;padding-right:2em;text-overflow:ellipsis}#cc-main .pm__table-td>div{flex:3}#cc-main .pm__btn-group,#cc-main .pm__footer{flex-direction:column!important}#cc-main .pm__btn-group{display:flex!important}#cc-main .pm__btn+.pm__btn,#cc-main .pm__btn-group+.pm__btn-group{margin:.375rem 0 0!important}#cc-main .pm--flip .pm__btn+.pm__btn,#cc-main .pm--flip .pm__btn-group+.pm__btn-group{margin-bottom:.375rem!important;margin-top:0!important}#cc-main .pm--flip .pm__btn-group,#cc-main .pm--flip .pm__footer{flex-direction:column-reverse!important}.show--preferences #cc-main .cc--anim .pm{transform:translateY(0)!important}} \ No newline at end of file diff --git a/src/main/resources/static/css/cookieconsentCustomisation.css b/src/main/resources/static/css/cookieconsentCustomisation.css new file mode 100644 index 000000000..a28b1e89b --- /dev/null +++ b/src/main/resources/static/css/cookieconsentCustomisation.css @@ -0,0 +1,79 @@ +.cc--darkmode{ + --cc-bg: var(--md-sys-color-inverse-on-surface); + --cc-primary-color: var(--md-sys-color-on-surface); + --cc-secondary-color: var(--md-sys-color-on-surface); + + --cc-btn-primary-bg: var(--md-sys-color-secondary); + --cc-btn-primary-color: var(--cc-bg); + --cc-btn-primary-border-color: var(--cc-btn-primary-bg); + --cc-btn-primary-hover-bg: var(--md-sys-color-surface-3); + --cc-btn-primary-hover-color: var(--md-sys-color-on-secondary-container); + --cc-btn-primary-hover-border-color: var(--md-sys-color-surface-3); + + --cc-btn-secondary-bg: var(--md-sys-color-surface-3); + --cc-btn-secondary-color: var(--md-sys-color-on-secondary-container); + --cc-btn-secondary-border-color: var(--md-sys-color-surface-3); + --cc-btn-secondary-hover-bg:var(--md-sys-color-secondary); + --cc-btn-secondary-hover-color: var(--cc-bg); + --cc-btn-secondary-hover-border-color: var(--md-sys-color-secondary); + + --cc-separator-border-color: var(--md-sys-color-outline); + + --cc-toggle-on-bg: var(--cc-btn-primary-bg); + --cc-toggle-off-bg: var(--md-sys-color-outline); + --cc-toggle-on-knob-bg: var(--cc-btn-primary-color); + --cc-toggle-off-knob-bg: var(--cc-btn-primary-color); + + --cc-toggle-enabled-icon-color: var(--cc-btn-primary-color); + --cc-toggle-disabled-icon-color: var(--cc-btn-primary-color); + + --cc-toggle-readonly-bg: var(--md-sys-color-surface); + --cc-toggle-readonly-knob-bg: var(--md-sys-color-outline); + --cc-toggle-readonly-knob-icon-color: var(--cc-toggle-readonly-bg); + + --cc-section-category-border: var(--md-sys-color-outline); + + --cc-cookie-category-block-bg: var(--cc-btn-secondary-bg); + --cc-cookie-category-block-border: var(--cc-btn-secondary-bg); + --cc-cookie-category-block-hover-bg: var(--cc-btn-secondary-bg); + --cc-cookie-category-block-hover-border: var(--cc-btn-secondary-bg); + + --cc-cookie-category-expanded-block-bg: var(--cc-btn-secondary-bg); + --cc-cookie-category-expanded-block-hover-bg: var(--cc-toggle-readonly-bg); + + /* --cc-overlay-bg: rgba(0, 0, 0, 0.65); + --cc-webkit-scrollbar-bg: var(--cc-section-category-border); + --cc-webkit-scrollbar-hover-bg: var(--cc-btn-primary-hover-bg); +*/ + --cc-footer-bg: var(--cc-bg); + --cc-footer-color: var(--cc-primary-color); + --cc-footer-border-color: var(--cc-bg); +} +.cm__body{ + max-width: 90% !important; + flex-direction: row !important; + align-items: center !important; + +} + +.cm__desc{ + max-width: 70rem !important; +} + +.cm__btns{ + flex-direction: row-reverse !important; + gap:10px !important; + padding-top: 3.4rem !important; +} + +@media only screen and (max-width: 1400px) { + .cm__body{ + max-width: 90% !important; + flex-direction: column !important; + align-items: normal !important; + } + + .cm__btns{ + padding-top: 1rem !important; + } +} \ No newline at end of file diff --git a/src/main/resources/static/css/dragdrop.css b/src/main/resources/static/css/dragdrop.css index 688cbca4a..8f3304562 100644 --- a/src/main/resources/static/css/dragdrop.css +++ b/src/main/resources/static/css/dragdrop.css @@ -59,17 +59,21 @@ html[dir="rtl"] .drag-manager_draghover img { background-color: #ffffff10; transition: width 0.1s; animation: end-drop-expand 0.3s ease; - display: flex; align-items: center; justify-content: center; margin-left:16px; border-radius: 8px; - } .drag-manager_endpoint svg { width: 50px; height: 50px; + + display: block; + position: absolute; + left: 50%; + top: 50%; + translate: -50% -50%; } .drag-manager_endpoint.drag-manager_draghover { diff --git a/src/main/resources/static/css/fileSelect.css b/src/main/resources/static/css/fileSelect.css index afb0b075f..88bef91d5 100644 --- a/src/main/resources/static/css/fileSelect.css +++ b/src/main/resources/static/css/fileSelect.css @@ -271,3 +271,28 @@ align-items: center; z-index: 9999; } + +.google-drive-button { + width: 2.5rem; + pointer-events: auto; + cursor: pointer; + transition-duration: 0.4s; + border-radius: 0.5rem; + box-shadow: 0 0 5px var(--md-sys-color-on-surface-variant); + background-color: var(--md-sys-color-on-surface-container-high) +} + +.horizontal-divider { + width: 85%; + border-top: 1px dashed; + padding: 0px; + margin: 10px; +} + +.google-drive-button img { + width:100% +} + +.google-drive-button:hover { + background-color: var(--md-sys-color-on-surface-variant) +} diff --git a/src/main/resources/static/css/footer.css b/src/main/resources/static/css/footer.css index 9b97efa42..4a85e7566 100644 --- a/src/main/resources/static/css/footer.css +++ b/src/main/resources/static/css/footer.css @@ -35,4 +35,5 @@ .footer-link { text-decoration: none; + cursor: pointer; } diff --git a/src/main/resources/static/css/multi-tool.css b/src/main/resources/static/css/multi-tool.css index a540b9d0a..92d7699b2 100644 --- a/src/main/resources/static/css/multi-tool.css +++ b/src/main/resources/static/css/multi-tool.css @@ -85,18 +85,14 @@ label { flex-direction: column; padding: 1rem; border-radius: 25px; - overflow-y: clip; - overflow-x: auto; min-height: 275px; margin: 0 0 30px 0; } #pages-container { - gap: 0px; - display: flex; - flex-wrap: wrap; - margin-left: -15px; - margin-right: -15px; + margin: 0 auto; + width: 95%; + font-size: 0; } /* width */ @@ -121,18 +117,20 @@ label { background: var(--scroll-bar-thumb-hover); } + .page-container { + display: inline-block; + list-style-type: none; + width: 250px; height: 250px; - display: flex; - align-items: center; - flex-direction: column-reverse; - aspect-ratio: 1; + line-height: 50px; + margin: 15px 25px; + box-sizing: border-box; text-align: center; + aspect-ratio: 1; position: relative; user-select: none; transition: width 1s linear; - margin-top: 16px; - margin-bottom: 16px; } .page-container.split-before { @@ -196,9 +194,8 @@ label { } .page-container img { - /* max-width: calc(100% - 15px); */ + max-width: calc(100% - 15px); max-height: calc(100% - 15px); - max-width: 237px; display: block; position: absolute; left: 50%; @@ -217,6 +214,7 @@ label { position: absolute; top: 5px; left: 5px; + line-height: normal; color: var(--md-sys-color-on-secondary); background-color: rgba(162, 201, 255, 0.8); padding: 6px 8px; @@ -294,6 +292,13 @@ label { .checkbox-label { font-size: medium; } + .btn { position: relative; } + +@media only screen and (max-width: 767px) { #pages-container { width:300px; } } +@media only screen and (min-width: 768px) and (max-width: 991px) { #pages-container { width: 600px; } } +@media only screen and (min-width: 992px) and (max-width: 1199px) { #pages-container { width: 900px; } } +@media only screen and (min-width: 1200px) and (max-width: 1399px) { #pages-container { width: 900px; } } +@media only screen and (min-width: 1399px) { #pages-container { width: 1200px; } } \ No newline at end of file diff --git a/src/main/resources/static/css/navbar.css b/src/main/resources/static/css/navbar.css index e1d2ad491..f9b3f3072 100644 --- a/src/main/resources/static/css/navbar.css +++ b/src/main/resources/static/css/navbar.css @@ -89,6 +89,22 @@ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); /* Auto-fill columns, with a minimum width of 180px */ } +.scalable-languages-container:not(:has(> :nth-child(4))) .lang-dropdown-item-wrapper:last-child { + border: 0px !important +} + +.scalable-languages-container:has(> *:nth-child(1)) { + --count: 1; +} + +.scalable-languages-container:has(> *:nth-child(2)) { + --count: 2; +} + +.scalable-languages-container:has(> *:nth-child(3)) { + --count: 3; +} + html[dir="ltr"] .lang-dropdown-item-wrapper { border-right: 2px solid var(--md-nav-color-on-seperator); } @@ -99,8 +115,8 @@ html[dir="rtl"] .lang-dropdown-item-wrapper { /* Responsive adjustments */ @media (min-width: 1200px){ - .lang_dropdown-mw{ - min-width: 800px + .lang-dropdown-item-wrapper .dropdown-item { + min-width: 200px } } @@ -108,7 +124,9 @@ html[dir="rtl"] .lang-dropdown-item-wrapper { .scalable-languages-container { grid-template-columns: repeat(2, 1fr); } - + .scalable-languages-container:not(:has(> :nth-child(2))){ + grid-template-columns: repeat(var(--count), 1fr) !important; + } .scalable-languages-container .lang-dropdown-item-wrapper:nth-child(2n) { border: 0px } @@ -118,15 +136,23 @@ html[dir="rtl"] .lang-dropdown-item-wrapper { .scalable-languages-container { grid-template-columns: repeat(3, 1fr); } + .scalable-languages-container:not(:has(> :nth-child(3))){ + grid-template-columns: repeat(var(--count), 1fr) !important; + } .scalable-languages-container .lang-dropdown-item-wrapper:nth-child(3n) { border: 0px + } } -} + @media (min-width: 901px) { .scalable-languages-container { grid-template-columns: repeat(4, 1fr); } + .scalable-languages-container:not(:has(> :nth-child(4))){ + grid-template-columns: repeat(var(--count), 1fr) !important; + } + .scalable-languages-container .lang-dropdown-item-wrapper:nth-child(4n) { border: 0px } @@ -215,13 +241,13 @@ span.icon-text::after { .dropdown-menu.scrollable-y { overflow-y: scroll; - height: 360px; + max-height: 360px; } /* Dropdown Scrollbar*/ .scrollable-y { overflow-y: scroll; - height: 190px; + max-height: 190px; overscroll-behavior: contain; } diff --git a/src/main/resources/static/css/pdfActions.css b/src/main/resources/static/css/pdfActions.css index 8d69d792e..bde4e5bac 100644 --- a/src/main/resources/static/css/pdfActions.css +++ b/src/main/resources/static/css/pdfActions.css @@ -1,8 +1,12 @@ .pdf-actions_button-container { z-index: 4; - display: flex; opacity: 0; transition: opacity 0.1s linear; + + position: absolute !important; + bottom: 0px; + left: 50%; + transform: translate(-50%, 0%); } .pdf-actions_container:hover .pdf-actions_button-container { @@ -42,17 +46,43 @@ /* "insert pdf" buttons that appear on the right when hover */ .pdf-actions_insert-file-button-container { + display:flex; + flex-direction: column; + gap: 10px; translate: 0 -50%; - width: 80px; height: 100%; - + width: 100px; + padding-left: 30px; + padding-right:30px; + justify-content: center; z-index: 3; opacity: 0; - transition: opacity 0.2s; + transition: opacity 0.4s; + } -.pdf-actions_insert-file-button-container button .material-symbols-rounded { - vertical-align: top; +.pdf-actions_insert-file-button-container.left { + left: -50px; +} + +.pdf-actions_insert-file-button-container.right { + right: -50px; +} + +html[dir="ltr"] .pdf-actions_insert-file-button-container.right { + display: none; +} + +html[dir="rtl"] .pdf-actions_insert-file-button-container.left { + display: none; +} + +html[dir="ltr"] .pdf-actions_container:last-child>.pdf-actions_insert-file-button-container.right { + display: flex; +} + +html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-button-container.left { + display: flex; } .pdf-actions_insert-file-button-container.left button, @@ -65,70 +95,11 @@ vertical-align: sub; } -.pdf-actions_insert-file-button { - padding: 0; - vertical-align: sub; -} - -.pdf-actions_insert-file-button-container.left { - left: -20px; -} - -.pdf-actions_insert-file-button-container.right { - right: -20px; -} - -html[dir="ltr"] .pdf-actions_insert-file-button-container.right { - display: none; -} - -html[dir="rtl"] .pdf-actions_insert-file-button-container.left { - display: none; -} - -.pdf-actions_insert-file-button-container.left .pdf-actions_insert-file-button { - left: 0; - translate: 0 -50%; -} - -.pdf-actions_insert-file-button-container.right .pdf-actions_insert-file-button { - right: 0; - translate: 0 -50%; -} - -html[dir="ltr"] .pdf-actions_container:last-child>.pdf-actions_insert-file-button-container.right { - display: block; -} - -html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-button-container.left { - display: block; -} - .pdf-actions_insert-file-button-container:hover { opacity: 1; transition: opacity 0.05s; } -.pdf-actions_insert-file-button { - position: absolute; - top: 50%; - right: 50%; - translate: 50% -50%; - aspect-ratio: 1; - border-radius: 100px; - z-index: 4; -} - -.pdf-actions_split-file-button { - position: absolute; - top: 25%; - right: 50%; - translate: 0 -50%; - aspect-ratio: 1; - border-radius: 100px; - z-index: 3; -} - .pdf-actions_checkbox { position: absolute; top: 5px; @@ -143,13 +114,4 @@ html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-butto .hidden { display: none; -} -.pdf-actions_insert-file-blank-button { - position: absolute; - top: 75%; - right: 50%; - translate: 0% -50%; - aspect-ratio: 1; - border-radius: 100px; - z-index: 5; -} +} \ No newline at end of file diff --git a/src/main/resources/static/css/redact.css b/src/main/resources/static/css/redact.css index 5eaf12eb7..bc59dda44 100644 --- a/src/main/resources/static/css/redact.css +++ b/src/main/resources/static/css/redact.css @@ -172,26 +172,6 @@ html { height: 0; } -#apply-redaction { - height: var(--toolButton-height); - width: var(--toolButton-width); - - border-radius: var(--toolButton-border-radius); -} - -#apply-redaction[disabled=true], #apply-redaction:disabled:not([disabled=false]) { - color: rgb(147, 149, 153); - box-shadow: none !important; -} - -#apply-redaction:is(:hover):not([disabled=true], :disabled:not([disabled=false])) { - cursor: pointer; - background-color: rgba(6, 114, 197, 0.82); - color: rgb(14, 12, 12); - outline:rgba(6, 114, 197, 0.82) !important; - border-color: rgba(6, 114, 197, 0.82) !important; -} - .toolbar-btn-hover:hover { cursor: pointer; background-color: rgba(6, 114, 197, 0.82) !important; @@ -200,15 +180,6 @@ html { border-color: rgba(6, 114, 197, 0.82) !important; } -#apply-redaction-icon { - font-size: var(--toolButton-icon-font-size); -} - -#apply-redaction > span { - user-select: none; - pointer-events: none; -} - #pageRedactColor, input[data-for=pageRedactColor] { flex: 1; padding: 1px; diff --git a/src/main/resources/static/images/google-drive.svg b/src/main/resources/static/images/google-drive.svg new file mode 100644 index 000000000..03b2f2129 --- /dev/null +++ b/src/main/resources/static/images/google-drive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/static/js/fileInput.js b/src/main/resources/static/js/fileInput.js index 9f05fe13d..a67ff1fd6 100644 --- a/src/main/resources/static/js/fileInput.js +++ b/src/main/resources/static/js/fileInput.js @@ -35,6 +35,7 @@ function setupFileInput(chooser) { const pdfPrompt = chooser.getAttribute('data-bs-pdf-prompt'); const inputContainerId = chooser.getAttribute('data-bs-element-container-id'); const showUploads = chooser.getAttribute('data-bs-show-uploads') === "true"; + const name = chooser.getAttribute('data-bs-unique-id') const noFileSelectedPrompt = chooser.getAttribute('data-bs-no-file-selected'); let inputContainer = document.getElementById(inputContainerId); @@ -87,6 +88,21 @@ function setupFileInput(chooser) { overlay = false; } + const googleDriveFileListener = function (e) { + const googleDriveFiles = e.detail; + + const fileInput = document.getElementById(elementId); + if (fileInput?.hasAttribute('multiple')) { + pushFileListTo(googleDriveFiles, allFiles); + } else if (fileInput) { + allFiles = [googleDriveFiles[0]]; + } + + const dataTransfer = new DataTransfer(); + allFiles.forEach((file) => dataTransfer.items.add(file)); + fileInput.files = dataTransfer.files; + fileInput.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: { source: 'drag-drop' } })); + } const dropListener = function (e) { e.preventDefault(); @@ -137,6 +153,7 @@ function setupFileInput(chooser) { document.body.addEventListener('dragenter', dragenterListener); document.body.addEventListener('dragleave', dragleaveListener); document.body.addEventListener('drop', dropListener); + document.body.addEventListener(name + 'GoogleDriveDrivePicked', googleDriveFileListener); $('#' + elementId).on('change', async function (e) { let element = e.target; diff --git a/src/main/resources/static/js/googleFilePicker.js b/src/main/resources/static/js/googleFilePicker.js new file mode 100644 index 000000000..833cf950b --- /dev/null +++ b/src/main/resources/static/js/googleFilePicker.js @@ -0,0 +1,158 @@ +const SCOPES = "https://www.googleapis.com/auth/drive.readonly"; +const SESSION_STORAGE_ID = "googleDrivePickerAccessToken"; + +let tokenClient; +let accessToken = sessionStorage.getItem(SESSION_STORAGE_ID); + +let isScriptExecuted = false; +if (!isScriptExecuted) { + isScriptExecuted = true; + document.addEventListener("DOMContentLoaded", function () { + document.querySelectorAll(".google-drive-button").forEach(setupGoogleDrivePicker); + }); +} + +function gisLoaded() { + tokenClient = google.accounts.oauth2.initTokenClient({ + client_id: window.stirlingPDF.GoogleDriveClientId, + scope: SCOPES, + callback: "", // defined later + }); +} + +// add more as needed. +// Google picker is limited on what mimeTypes are supported +// Wild card are not supported +const expandableMimeTypes = { + "image/*" : ["image/jpeg", "image/png","image/svg+xml" ] +} + +function fileInputToGooglePickerMimeTypes(accept) { + + if(accept == null || accept == "" || accept.includes("*/*")){ + + // Setting null will accept all supported mimetypes + return null; + } + + let mimeTypes = []; + accept.split(',').forEach(part => { + if(!(part in expandableMimeTypes)){ + mimeTypes.push(part); + return; + } + + expandableMimeTypes[part].forEach(mimeType => { + mimeTypes.push(mimeType); + }); + }); + + const mimeString = mimeTypes.join(",").replace(/\s+/g, ''); + console.log([accept, "became", mimeString]); + return mimeString; +} + +/** + * Callback after api.js is loaded. + */ +function gapiLoaded() { + gapi.load("client:picker", initializePicker); +} + +/** + * Callback after the API client is loaded. Loads the + * discovery doc to initialize the API. + */ +async function initializePicker() { + await gapi.client.load("https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"); +} + +function setupGoogleDrivePicker(picker) { + + const name = picker.getAttribute('data-name'); + const accept = picker.getAttribute('data-accept'); + const multiple = picker.getAttribute('data-multiple') === "true"; + const mimeTypes = fileInputToGooglePickerMimeTypes(accept); + + picker.addEventListener("click", onGoogleDriveButtonClick); + + function onGoogleDriveButtonClick(e) { + e.stopPropagation(); + + tokenClient.callback = (response) => { + if (response.error !== undefined) { + throw response; + } + accessToken = response.access_token; + sessionStorage.setItem(SESSION_STORAGE_ID, accessToken); + createGooglePicker(); + }; + + tokenClient.requestAccessToken({ prompt: accessToken === null ? "consent" : "" }); + } + + /** + * Sign out the user upon button click. + */ + function signOut() { + if (accessToken) { + sessionStorage.removeItem(SESSION_STORAGE_ID); + google.accounts.oauth2.revoke(accessToken); + accessToken = null; + } + } + + function createGooglePicker() { + let builder = new google.picker.PickerBuilder() + .setDeveloperKey(window.stirlingPDF.GoogleDriveApiKey) + .setAppId(window.stirlingPDF.GoogleDriveAppId) + .setOAuthToken(accessToken) + .addView( + new google.picker.DocsView() + .setIncludeFolders(true) + .setMimeTypes(mimeTypes) + ) + .addView( + new google.picker.DocsView() + .setIncludeFolders(true) + .setEnableDrives(true) + .setMimeTypes(mimeTypes) + ) + .setCallback(pickerCallback); + + if(multiple) { + builder.enableFeature(google.picker.Feature.MULTISELECT_ENABLED); + } + const picker = builder.build(); + + picker.setVisible(true); + } + + /** + * Displays the file details of the user's selection. + * @param {object} data - Containers the user selection from the picker + */ + async function pickerCallback(data) { + if (data.action === google.picker.Action.PICKED) { + const files = await Promise.all( + data[google.picker.Response.DOCUMENTS].map(async (pickedFile) => { + const fileId = pickedFile[google.picker.Document.ID]; + console.log(fileId); + const res = await gapi.client.drive.files.get({ + fileId: fileId, + alt: "media", + }); + + let file = new File([new Uint8Array(res.body.length).map((_, i) => res.body.charCodeAt(i))], pickedFile.name, { + type: pickedFile.mimeType, + lastModified: pickedFile.lastModified, + endings: pickedFile.endings, + }); + return file; + }) + ); + + document.body.dispatchEvent(new CustomEvent(name+"GoogleDriveDrivePicked", { detail: files })); + } + } +} diff --git a/src/main/resources/static/js/multitool/PdfActionsManager.js b/src/main/resources/static/js/multitool/PdfActionsManager.js index 80df8d310..1ef2978e9 100644 --- a/src/main/resources/static/js/multitool/PdfActionsManager.js +++ b/src/main/resources/static/js/multitool/PdfActionsManager.js @@ -194,21 +194,21 @@ class PdfActionsManager { ); const insertFileButton = document.createElement("button"); - insertFileButton.classList.add("btn", "btn-primary", "pdf-actions_insert-file-button"); + insertFileButton.classList.add("btn", "btn-primary"); moveUp.setAttribute('title', window.translations.addFile); insertFileButton.innerHTML = `add`; insertFileButton.onclick = this.insertFileButtonCallback; insertFileButtonContainer.appendChild(insertFileButton); const splitFileButton = document.createElement("button"); - splitFileButton.classList.add("btn", "btn-primary", "pdf-actions_split-file-button"); + splitFileButton.classList.add("btn", "btn-primary"); splitFileButton.setAttribute('title', window.translations.split); splitFileButton.innerHTML = `cut`; splitFileButton.onclick = this.splitFileButtonCallback; insertFileButtonContainer.appendChild(splitFileButton); const insertFileBlankButton = document.createElement("button"); - insertFileBlankButton.classList.add("btn", "btn-primary", "pdf-actions_insert-file-blank-button"); + insertFileBlankButton.classList.add("btn", "btn-primary"); insertFileBlankButton.setAttribute('title', window.translations.insertPageBreak); insertFileBlankButton.innerHTML = `insert_page_break`; insertFileBlankButton.onclick = this.insertFileBlankButtonCallback; @@ -225,7 +225,7 @@ class PdfActionsManager { ); const insertFileButtonRight = document.createElement("button"); - insertFileButtonRight.classList.add("btn", "btn-primary", "pdf-actions_insert-file-button"); + insertFileButtonRight.classList.add("btn", "btn-primary"); insertFileButtonRight.innerHTML = `add`; insertFileButtonRight.onclick = () => addFiles(); insertFileButtonRightContainer.appendChild(insertFileButtonRight); diff --git a/src/main/resources/static/js/pipeline.js b/src/main/resources/static/js/pipeline.js index 1d6e61a12..7633a6bbd 100644 --- a/src/main/resources/static/js/pipeline.js +++ b/src/main/resources/static/js/pipeline.js @@ -153,22 +153,32 @@ document.getElementById("submitConfigBtn").addEventListener("click", function () let apiDocs = {}; let apiSchemas = {}; let operationSettings = {}; +let operationStatus = {}; fetchWithCsrf("v1/api-docs") .then((response) => response.json()) .then((data) => { apiDocs = data.paths; apiSchemas = data.components.schemas; - let operationsDropdown = document.getElementById("operationsDropdown"); + return fetchWithCsrf("api/v1/settings/get-endpoints-status") + .then((response) => response.json()) + .then((data) => { + operationStatus = data; + }) + .catch((error) => { + console.error("Error:", error); + }); + }) + .then(() => { const ignoreOperations = ["/api/v1/pipeline/handleData", "/api/v1/pipeline/operationToIgnore"]; // Add the operations you want to ignore here - + let operationsDropdown = document.getElementById("operationsDropdown"); operationsDropdown.innerHTML = ""; let operationsByTag = {}; // Group operations by tags - Object.keys(data.paths).forEach((operationPath) => { - let operation = data.paths[operationPath].post; + Object.keys(apiDocs).forEach((operationPath) => { + let operation = apiDocs[operationPath].post; if (!operation || !operation.description) { console.log(operationPath); } @@ -209,13 +219,19 @@ fetchWithCsrf("v1/api-docs") } operationPathDisplay = operationPathDisplay.replaceAll(" ", "-"); option.textContent = operationPathDisplay; - option.value = operationPath; // Keep the value with slashes for querying - group.appendChild(option); + + if (!(operationPathDisplay in operationStatus)) { + option.value = operationPath; // Keep the value with slashes for querying + group.appendChild(option); + } }); operationsDropdown.appendChild(group); } }); + }) + .catch((error) => { + console.error("Error:", error); }); document.getElementById('deletePipelineBtn').addEventListener('click', function(event) { diff --git a/src/main/resources/static/js/redact.js b/src/main/resources/static/js/redact.js index 5a09a1a58..c5411470a 100644 --- a/src/main/resources/static/js/redact.js +++ b/src/main/resources/static/js/redact.js @@ -206,8 +206,6 @@ window.addEventListener('load', (e) => { let redactionsPaletteContainer = document.getElementById('redactionsPaletteContainer'); - let applyRedactionBtn = document.getElementById('apply-redaction'); - let redactedPagesDetails = { numbers: new Set(), ranges: new Set(), @@ -249,7 +247,6 @@ window.addEventListener('load', (e) => { displayFieldErrorMessages(input, errors); } else { pageBasedRedactionOverlay.classList.add('d-none'); - applyRedactionBtn.removeAttribute('disabled'); input.classList.remove('is-valid'); let totalPagesCount = PDFViewerApplication.pdfViewer.pagesCount; @@ -320,19 +317,28 @@ window.addEventListener('load', (e) => { redactionsPaletteContainer.onclick = (e) => redactionsPalette.click(); + function clearSelection() { + if (window.getSelection) { + if (window.getSelection().empty) { + // Chrome + window.getSelection().empty(); + } else if (window.getSelection().removeAllRanges) { + // Firefox + window.getSelection().removeAllRanges(); + } + } else if (document.selection) { + // IE? + document.selection.empty(); + } + } + viewer.onmouseup = (e) => { if (redactionMode !== RedactionModes.TEXT) return; const containsText = window.getSelection() && window.getSelection().toString() != ''; - applyRedactionBtn.disabled = !containsText; - }; - - applyRedactionBtn.onclick = (e) => { - if (redactionMode !== RedactionModes.TEXT) { - applyRedactionBtn.disabled = true; - return; + if(containsText){ + redactTextSelection(); + clearSelection(); } - redactTextSelection(); - applyRedactionBtn.disabled = true; }; redactionsPaletteInput.onchange = (e) => { @@ -413,41 +419,28 @@ window.addEventListener('load', (e) => { }; initDraw(layer, redactionsContainer); + enableTextRedactionMode(); function _handleTextSelectionRedactionBtnClick(e) { if (textSelectionRedactionBtn.classList.contains('toggled')) { resetTextSelection(); } else { - resetDrawRedactions(); - textSelectionRedactionBtn.classList.add('toggled'); - redactionMode = RedactionModes.TEXT; - const containsText = window.getSelection() && window.getSelection().toString() != ''; - applyRedactionBtn.disabled = !containsText; - applyRedactionBtn.classList.remove('d-none'); + enableTextRedactionMode(); } } + function enableTextRedactionMode() { + if(!textSelectionRedactionBtn.classList.contains('toggled')){ + textSelectionRedactionBtn.classList.add('toggled'); + } + resetDrawRedactions(); + redactionMode = RedactionModes.TEXT; + }; + function resetTextSelection() { textSelectionRedactionBtn.classList.remove('toggled'); redactionMode = RedactionModes.NONE; clearSelection(); - applyRedactionBtn.disabled = true; - applyRedactionBtn.classList.add('d-none'); - } - - function clearSelection() { - if (window.getSelection) { - if (window.getSelection().empty) { - // Chrome - window.getSelection().empty(); - } else if (window.getSelection().removeAllRanges) { - // Firefox - window.getSelection().removeAllRanges(); - } - } else if (document.selection) { - // IE? - document.selection.empty(); - } } function _handleDrawRedactionBtnClick(e) { @@ -791,7 +784,6 @@ window.addEventListener('load', (e) => { } _setRedactionsInput(redactions); - applyRedactionBtn.disabled = true; } function _scaleToDisplay(value) { diff --git a/src/main/resources/static/js/thirdParty/cookieconsent-config.js b/src/main/resources/static/js/thirdParty/cookieconsent-config.js new file mode 100644 index 000000000..719918484 --- /dev/null +++ b/src/main/resources/static/js/thirdParty/cookieconsent-config.js @@ -0,0 +1,65 @@ +import './cookieconsent.umd.js'; + +// Enable dark mode +document.documentElement.classList.add('cc--darkmode'); + +CookieConsent.run({ + guiOptions: { + consentModal: { + layout: "bar", + position: "bottom", + equalWeightButtons: true, + flipButtons: true + }, + preferencesModal: { + layout: "box", + position: "right", + equalWeightButtons: true, + flipButtons: true + } + }, + categories: { + necessary: { + readOnly: true + }, + analytics: {} + }, + language: { + default: "en", + translations: { + en: { + consentModal: { + title: cookieBannerPopUpTitle, + description: cookieBannerPopUpDescription1 + "
" + cookieBannerPopUpDescription2, + acceptAllBtn: cookieBannerPopUpAcceptAllBtn, + acceptNecessaryBtn: cookieBannerPopUpAcceptNecessaryBtn, + showPreferencesBtn: cookieBannerPopUpShowPreferencesBtn, + }, + preferencesModal: { + title: cookieBannerPreferencesModalTitle, + acceptAllBtn: cookieBannerPreferencesModalAcceptAllBtn, + acceptNecessaryBtn: cookieBannerPreferencesModalAcceptNecessaryBtn, + savePreferencesBtn: cookieBannerPreferencesModalSavePreferencesBtn, + closeIconLabel: cookieBannerPreferencesModalCloseIconLabel, + serviceCounterLabel: cookieBannerPreferencesModalServiceCounterLabel, + sections: [ + { + title: cookieBannerPreferencesModalSubtitle, + description: cookieBannerPreferencesModalDescription1 + "

" + cookieBannerPreferencesModalDescription2 + " " + cookieBannerPreferencesModalDescription3 + "" + }, + { + title:cookieBannerPreferencesModalNecessaryTitle1 + "" + cookieBannerPreferencesModalNecessaryTitle2 + "", + description: cookieBannerPreferencesModalNecessaryDescription, + linkedCategory: "necessary" + }, + { + title: cookieBannerPreferencesModalAnalyticsTitle, + description: cookieBannerPreferencesModalAnalyticsDescription, + linkedCategory: "analytics" + } + ] + } + } + } + } +}); diff --git a/src/main/resources/static/js/thirdParty/cookieconsent.umd.js b/src/main/resources/static/js/thirdParty/cookieconsent.umd.js new file mode 100644 index 000000000..7f85a316a --- /dev/null +++ b/src/main/resources/static/js/thirdParty/cookieconsent.umd.js @@ -0,0 +1,7 @@ +/*! +* CookieConsent 3.1.0 +* https://github.com/orestbida/cookieconsent +* Author Orest Bida +* Released under the MIT License +*/ +var e,t;e=this,t=function(e){'use strict';const t='opt-in',o='opt-out',n='show--consent',s='show--preferences',a='disable--interaction',c='data-category',r='div',i='button',l='aria-hidden',d='btn-group',f='click',_='data-role',u='consentModal',p='preferencesModal';class g{constructor(){this.t={mode:t,revision:0,autoShow:!0,lazyHtmlGeneration:!0,autoClearCookies:!0,manageScriptTags:!0,hideFromBots:!0,cookie:{name:'cc_cookie',expiresAfterDays:182,domain:'',path:'/',secure:!0,sameSite:'Lax'}},this.o={i:{},l:'',_:{},u:{},p:{},m:[],v:!1,h:null,C:null,S:null,M:'',T:!0,D:!1,k:!1,A:!1,N:!1,H:[],V:!1,j:!0,I:[],L:!1,F:'',P:!1,O:[],R:[],B:[],$:[],G:!1,J:!1,U:!1,q:[],K:[],W:[],X:{},Y:{},Z:{},ee:{},te:{},oe:[]},this.ne={se:{},ae:{}},this.ce={},this.re={ie:'cc:onFirstConsent',le:'cc:onConsent',de:'cc:onChange',fe:'cc:onModalShow',_e:'cc:onModalHide',ue:'cc:onModalReady'}}}const m=new g,b=(e,t)=>e.indexOf(t),v=(e,t)=>-1!==b(e,t),y=e=>Array.isArray(e),h=e=>'string'==typeof e,C=e=>!!e&&'object'==typeof e&&!y(e),w=e=>'function'==typeof e,S=e=>Object.keys(e),x=e=>Array.from(new Set(e)),M=()=>document.activeElement,T=e=>e.preventDefault(),D=(e,t)=>e.querySelectorAll(t),k=e=>e.dispatchEvent(new Event('change')),E=e=>{const t=document.createElement(e);return e===i&&(t.type=e),t},A=(e,t,o)=>e.setAttribute(t,o),N=(e,t,o)=>{e.removeAttribute(o?'data-'+t:t)},H=(e,t,o)=>e.getAttribute(o?'data-'+t:t),V=(e,t)=>e.appendChild(t),j=(e,t)=>e.classList.add(t),I=(e,t)=>j(e,'cm__'+t),L=(e,t)=>j(e,'pm__'+t),F=(e,t)=>e.classList.remove(t),P=e=>{if('object'!=typeof e)return e;if(e instanceof Date)return new Date(e.getTime());let t=Array.isArray(e)?[]:{};for(let o in e){let n=e[o];t[o]=P(n)}return t},O=()=>{const e={},{O:t,X:o,Y:n}=m.o;for(const s of t)e[s]=G(n[s],S(o[s]));return e},R=(e,t)=>dispatchEvent(new CustomEvent(e,{detail:t})),B=(e,t,o,n)=>{e.addEventListener(t,o),n&&m.o.m.push({pe:e,ge:t,me:o})},$=()=>{const e=m.t.cookie.expiresAfterDays;return w(e)?e(m.o.F):e},G=(e,t)=>{const o=e||[],n=t||[];return o.filter((e=>!v(n,e))).concat(n.filter((e=>!v(o,e))))},J=e=>{m.o.R=x(e),m.o.F=(()=>{let e='custom';const{R:t,O:o,B:n}=m.o,s=t.length;return s===o.length?e='all':s===n.length&&(e='necessary'),e})()},U=(e,t,o,n)=>{const s='accept-',{show:a,showPreferences:c,hide:r,hidePreferences:i,acceptCategory:l}=t,d=e||document,_=e=>D(d,`[data-cc="${e}"]`),u=(e,t)=>{T(e),l(t),i(),r()},p=_('show-preferencesModal'),g=_('show-consentModal'),b=_(s+'all'),v=_(s+'necessary'),y=_(s+'custom'),h=m.t.lazyHtmlGeneration;for(const e of p)A(e,'aria-haspopup','dialog'),B(e,f,(e=>{T(e),c()})),h&&(B(e,'mouseenter',(e=>{T(e),m.o.N||o(t,n)}),!0),B(e,'focus',(()=>{m.o.N||o(t,n)})));for(let e of g)A(e,'aria-haspopup','dialog'),B(e,f,(e=>{T(e),a(!0)}),!0);for(let e of b)B(e,f,(e=>{u(e,'all')}),!0);for(let e of y)B(e,f,(e=>{u(e)}),!0);for(let e of v)B(e,f,(e=>{u(e,[])}),!0)},z=(e,t)=>{e&&(t&&(e.tabIndex=-1),e.focus(),t&&e.removeAttribute('tabindex'))},q=(e,t)=>{const o=n=>{n.target.removeEventListener('transitionend',o),'opacity'===n.propertyName&&'1'===getComputedStyle(e).opacity&&z((e=>1===e?m.ne.be:m.ne.ve)(t))};B(e,'transitionend',o)};let K;const Q=e=>{clearTimeout(K),e?j(m.ne.ye,a):K=setTimeout((()=>{F(m.ne.ye,a)}),500)},W=['M 19.5 4.5 L 4.5 19.5 M 4.5 4.501 L 19.5 19.5','M 3.572 13.406 L 8.281 18.115 L 20.428 5.885','M 21.999 6.94 L 11.639 17.18 L 2.001 6.82 '],X=(e=0,t=1.5)=>``,Y=e=>{const t=m.ne,o=m.o;(e=>{const n=e===t.he,s=o.i.disablePageInteraction?t.ye:n?t.Ce:t.ye;B(s,'keydown',(t=>{if('Tab'!==t.key||!(n?o.k&&!o.A:o.A))return;const s=M(),a=n?o.q:o.K;0!==a.length&&(t.shiftKey?s!==a[0]&&e.contains(s)||(T(t),z(a[1])):s!==a[1]&&e.contains(s)||(T(t),z(a[0])))}),!0)})(e)},Z=['[href]',i,'input','details','[tabindex]'].map((e=>e+':not([tabindex="-1"])')).join(','),ee=e=>{const{o:t,ne:o}=m,n=(e,t)=>{const o=D(e,Z);t[0]=o[0],t[1]=o[o.length-1]};1===e&&t.D&&n(o.he,t.q),2===e&&t.N&&n(o.we,t.K)},te=(e,t,o)=>{const{de:n,le:s,ie:a,_e:c,ue:r,fe:i}=m.ce,l=m.re;if(t){const n={modalName:t};return e===l.fe?w(i)&&i(n):e===l._e?w(c)&&c(n):(n.modal=o,w(r)&&r(n)),R(e,n)}const d={cookie:m.o.p};e===l.ie?w(a)&&a(P(d)):e===l.le?w(s)&&s(P(d)):(d.changedCategories=m.o.I,d.changedServices=m.o.ee,w(n)&&n(P(d))),R(e,P(d))},oe=(e,t)=>{try{return e()}catch(e){return!t&&console.warn('CookieConsent:',e),!1}},ne=e=>{const{Y:t,ee:o,O:n,X:s,oe:a,p:r,I:i}=m.o;for(const e of n){const n=o[e]||t[e]||[];for(const o of n){const n=s[e][o];if(!n)continue;const{onAccept:a,onReject:c}=n;!n.Se&&v(t[e],o)?(n.Se=!0,w(a)&&a()):n.Se&&!v(t[e],o)&&(n.Se=!1,w(c)&&c())}}if(!m.t.manageScriptTags)return;const l=a,d=e||r.categories||[],f=(e,n)=>{if(n>=e.length)return;const s=a[n];if(s.xe)return f(e,n+1);const r=s.Me,l=s.Te,_=s.De,u=v(d,l),p=!!_&&v(t[l],_);if(!_&&!s.ke&&u||!_&&s.ke&&!u&&v(i,l)||_&&!s.ke&&p||_&&s.ke&&!p&&v(o[l]||[],_)){s.xe=!0;const t=H(r,'type',!0);N(r,'type',!!t),N(r,c);let o=H(r,'src',!0);o&&N(r,'src',!0);const a=E('script');a.textContent=r.innerHTML;for(const{nodeName:e}of r.attributes)A(a,e,r[e]||H(r,e));t&&(a.type=t),o?a.src=o:o=r.src;const i=!!o&&(!t||['text/javascript','module'].includes(t));if(i&&(a.onload=a.onerror=()=>{f(e,++n)}),r.replaceWith(a),i)return}f(e,++n)};f(l,0)},se='bottom',ae='left',ce='center',re='right',ie='inline',le='wide',de='pm--',fe=['middle','top',se],_e=[ae,ce,re],ue={box:{Ee:[le,ie],Ae:fe,Ne:_e,He:se,Ve:re},cloud:{Ee:[ie],Ae:fe,Ne:_e,He:se,Ve:ce},bar:{Ee:[ie],Ae:fe.slice(1),Ne:[],He:se,Ve:''}},pe={box:{Ee:[],Ae:[],Ne:[],He:'',Ve:''},bar:{Ee:[le],Ae:[],Ne:[ae,re],He:'',Ve:ae}},ge=e=>{const t=m.o.i.guiOptions,o=t&&t.consentModal,n=t&&t.preferencesModal;0===e&&me(m.ne.he,ue,o,'cm--','box','cm'),1===e&&me(m.ne.we,pe,n,de,'box','pm')},me=(e,t,o,n,s,a)=>{e.className=a;const c=o&&o.layout,r=o&&o.position,i=o&&o.flipButtons,l=!o||!1!==o.equalWeightButtons,d=c&&c.split(' ')||[],f=d[0],_=d[1],u=f in t?f:s,p=t[u],g=v(p.Ee,_)&&_,b=r&&r.split(' ')||[],y=b[0],h=n===de?b[0]:b[1],C=v(p.Ae,y)?y:p.He,w=v(p.Ne,h)?h:p.Ve,S=t=>{t&&j(e,n+t)};S(u),S(g),S(C),S(w),i&&S('flip');const x=a+'__btn--secondary';if('cm'===a){const{je:e,Ie:t}=m.ne;e&&(l?F(e,x):j(e,x)),t&&(l?F(t,x):j(t,x))}else{const{Le:e}=m.ne;e&&(l?F(e,x):j(e,x))}},be=(e,t)=>{const o=m.o,n=m.ne,{hide:s,hidePreferences:a,acceptCategory:c}=e,u=e=>{c(e),a(),s()},g=o.u&&o.u.preferencesModal;if(!g)return;const b=g.title,v=g.closeIconLabel,y=g.acceptAllBtn,w=g.acceptNecessaryBtn,x=g.savePreferencesBtn,M=g.sections||[],T=y||w||x;if(n.Fe)n.Pe=E(r),L(n.Pe,'body');else{n.Fe=E(r),j(n.Fe,'pm-wrapper');const e=E('div');j(e,'pm-overlay'),V(n.Fe,e),B(e,f,a),n.we=E(r),j(n.we,'pm'),A(n.we,'role','dialog'),A(n.we,l,!0),A(n.we,'aria-modal',!0),A(n.we,'aria-labelledby','pm__title'),B(n.ye,'keydown',(e=>{27===e.keyCode&&a()}),!0),n.Oe=E(r),L(n.Oe,'header'),n.Re=E('h2'),L(n.Re,'title'),n.Re.id='pm__title',n.Be=E(i),L(n.Be,'close-btn'),A(n.Be,'aria-label',g.closeIconLabel||''),B(n.Be,f,a),n.$e=E('span'),n.$e.innerHTML=X(),V(n.Be,n.$e),n.Ge=E(r),L(n.Ge,'body'),n.Je=E(r),L(n.Je,'footer');var D=E(r);j(D,'btns');var k=E(r),N=E(r);L(k,d),L(N,d),V(n.Je,k),V(n.Je,N),V(n.Oe,n.Re),V(n.Oe,n.Be),n.ve=E(r),A(n.ve,'tabIndex',-1),V(n.we,n.ve),V(n.we,n.Oe),V(n.we,n.Ge),T&&V(n.we,n.Je),V(n.Fe,n.we)}let H;b&&(n.Re.innerHTML=b,v&&A(n.Be,'aria-label',v)),M.forEach(((e,t)=>{const s=e.title,a=e.description,c=e.linkedCategory,d=c&&o.P[c],_=e.cookieTable,u=_&&_.body,p=_&&_.caption,m=u&&u.length>0,b=!!d,v=b&&o.X[c],y=C(v)&&S(v)||[],w=b&&(!!a||!!m||S(v).length>0);var x=E(r);if(L(x,'section'),w||a){var M=E(r);L(M,'section-desc-wrapper')}let T=y.length;if(w&&T>0){const e=E(r);L(e,'section-services');for(const t of y){const o=v[t],n=o&&o.label||t,s=E(r),a=E(r),i=E(r),l=E(r);L(s,'service'),L(l,'service-title'),L(a,'service-header'),L(i,'service-icon');const f=ve(n,t,d,!0,c);l.innerHTML=n,V(a,i),V(a,l),V(s,a),V(s,f),V(e,s)}V(M,e)}if(s){var D=E(r),k=E(b?i:r);if(L(D,'section-title-wrapper'),L(k,'section-title'),k.innerHTML=s,V(D,k),b){const e=E('span');e.innerHTML=X(2,3.5),L(e,'section-arrow'),V(D,e),x.className+='--toggle';const t=ve(s,c,d);let o=g.serviceCounterLabel;if(T>0&&h(o)){let e=E('span');L(e,'badge'),L(e,'service-counter'),A(e,l,!0),A(e,'data-servicecounter',T),o&&(o=o.split('|'),o=o.length>1&&T>1?o[1]:o[0],A(e,'data-counterlabel',o)),e.innerHTML=T+(o?' '+o:''),V(k,e)}if(w){L(x,'section--expandable');var N=c+'-desc';A(k,'aria-expanded',!1),A(k,'aria-controls',N)}V(D,t)}else A(k,'role','heading'),A(k,'aria-level','3');V(x,D)}if(a){var I=E('p');L(I,'section-desc'),I.innerHTML=a,V(M,I)}if(w&&(A(M,l,'true'),M.id=N,((e,t,o)=>{B(k,f,(()=>{t.classList.contains('is-expanded')?(F(t,'is-expanded'),A(o,'aria-expanded','false'),A(e,l,'true')):(j(t,'is-expanded'),A(o,'aria-expanded','true'),A(e,l,'false'))}))})(M,x,k),m)){const e=E('table'),o=E('thead'),s=E('tbody');if(p){const t=E('caption');L(t,'table-caption'),t.innerHTML=p,e.appendChild(t)}L(e,'section-table'),L(o,'table-head'),L(s,'table-body');const a=_.headers,c=S(a),i=n.Ue.createDocumentFragment(),l=E('tr');for(const e of c){const o=a[e],n=E('th');n.id='cc__row-'+o+t,A(n,'scope','col'),L(n,'table-th'),n.innerHTML=o,V(i,n)}V(l,i),V(o,l);const d=n.Ue.createDocumentFragment();for(const e of u){const o=E('tr');L(o,'table-tr');for(const n of c){const s=a[n],c=e[n],i=E('td'),l=E(r);L(i,'table-td'),A(i,'data-column',s),A(i,'headers','cc__row-'+s+t),l.insertAdjacentHTML('beforeend',c),V(i,l),V(o,i)}V(d,o)}V(s,d),V(e,o),V(e,s),V(M,e)}(w||a)&&V(x,M);const P=n.Pe||n.Ge;b?(H||(H=E(r),L(H,'section-toggles')),H.appendChild(x)):H=null,V(P,H||x)})),y&&(n.ze||(n.ze=E(i),L(n.ze,'btn'),A(n.ze,_,'all'),V(k,n.ze),B(n.ze,f,(()=>u('all')))),n.ze.innerHTML=y),w&&(n.Le||(n.Le=E(i),L(n.Le,'btn'),A(n.Le,_,'necessary'),V(k,n.Le),B(n.Le,f,(()=>u([])))),n.Le.innerHTML=w),x&&(n.qe||(n.qe=E(i),L(n.qe,'btn'),L(n.qe,'btn--secondary'),A(n.qe,_,'save'),V(N,n.qe),B(n.qe,f,(()=>u()))),n.qe.innerHTML=x),n.Pe&&(n.we.replaceChild(n.Pe,n.Ge),n.Ge=n.Pe),ge(1),o.N||(o.N=!0,te(m.re.ue,p,n.we),t(e),V(n.Ce,n.Fe),Y(n.we),setTimeout((()=>j(n.Fe,'cc--anim')),100)),ee(2)};function ve(e,t,o,n,s){const a=m.o,r=m.ne,i=E('label'),d=E('input'),_=E('span'),u=E('span'),p=E('span'),g=E('span'),b=E('span');if(g.innerHTML=X(1,3),b.innerHTML=X(0,3),d.type='checkbox',j(i,'section__toggle-wrapper'),j(d,'section__toggle'),j(g,'toggle__icon-on'),j(b,'toggle__icon-off'),j(_,'toggle__icon'),j(u,'toggle__icon-circle'),j(p,'toggle__label'),A(_,l,'true'),n?(j(i,'toggle-service'),A(d,c,s),r.ae[s][t]=d):r.se[t]=d,n?(e=>{B(d,'change',(()=>{const t=r.ae[e],o=r.se[e];a.Z[e]=[];for(let o in t){const n=t[o];n.checked&&a.Z[e].push(n.value)}o.checked=a.Z[e].length>0}))})(s):(e=>{B(d,f,(()=>{const t=r.ae[e],o=d.checked;a.Z[e]=[];for(let n in t)t[n].checked=o,o&&a.Z[e].push(n)}))})(t),d.value=t,p.textContent=e.replace(/<.*>.*<\/.*>/gm,''),V(u,b),V(u,g),V(_,u),a.T)(o.readOnly||o.enabled)&&(d.checked=!0);else if(n){const e=a.Y[s];d.checked=o.readOnly||v(e,t)}else v(a.R,t)&&(d.checked=!0);return o.readOnly&&(d.disabled=!0),V(i,d),V(i,_),V(i,p),i}const ye=()=>{const e=E('span');return m.ne.Ke||(m.ne.Ke=e),e},he=(e,t)=>{const o=m.o,n=m.ne,{hide:s,showPreferences:a,acceptCategory:c}=e,p=o.u&&o.u.consentModal;if(!p)return;const g=p.acceptAllBtn,b=p.acceptNecessaryBtn,v=p.showPreferencesBtn,y=p.closeIconLabel,h=p.footer,C=p.label,w=p.title,S=e=>{s(),c(e)};if(!n.Qe){n.Qe=E(r),n.he=E(r),n.We=E(r),n.Xe=E(r),n.Ye=E(r),j(n.Qe,'cm-wrapper'),j(n.he,'cm'),I(n.We,'body'),I(n.Xe,'texts'),I(n.Ye,'btns'),A(n.he,'role','dialog'),A(n.he,'aria-modal','true'),A(n.he,l,'false'),A(n.he,'aria-describedby','cm__desc'),C?A(n.he,'aria-label',C):w&&A(n.he,'aria-labelledby','cm__title');const e='box',t=o.i.guiOptions,s=t&&t.consentModal,a=(s&&s.layout||e).split(' ')[0]===e;w&&y&&a&&(n.Ie||(n.Ie=E(i),n.Ie.innerHTML=X(),I(n.Ie,'btn'),I(n.Ie,'btn--close'),B(n.Ie,f,(()=>{S([])})),V(n.We,n.Ie)),A(n.Ie,'aria-label',y)),V(n.We,n.Xe),(g||b||v)&&V(n.We,n.Ye),n.be=E(r),A(n.be,'tabIndex',-1),V(n.he,n.be),V(n.he,n.We),V(n.Qe,n.he)}w&&(n.Ze||(n.Ze=E('h2'),n.Ze.className=n.Ze.id='cm__title',V(n.Xe,n.Ze)),n.Ze.innerHTML=w);let x=p.description;if(x&&(o.V&&(x=x.replace('{{revisionMessage}}',o.j?'':p.revisionMessage||'')),n.et||(n.et=E('p'),n.et.className=n.et.id='cm__desc',V(n.Xe,n.et)),n.et.innerHTML=x),g&&(n.tt||(n.tt=E(i),V(n.tt,ye()),I(n.tt,'btn'),A(n.tt,_,'all'),B(n.tt,f,(()=>{S('all')}))),n.tt.firstElementChild.innerHTML=g),b&&(n.je||(n.je=E(i),V(n.je,ye()),I(n.je,'btn'),A(n.je,_,'necessary'),B(n.je,f,(()=>{S([])}))),n.je.firstElementChild.innerHTML=b),v&&(n.ot||(n.ot=E(i),V(n.ot,ye()),I(n.ot,'btn'),I(n.ot,'btn--secondary'),A(n.ot,_,'show'),B(n.ot,'mouseenter',(()=>{o.N||be(e,t)})),B(n.ot,f,a)),n.ot.firstElementChild.innerHTML=v),n.nt||(n.nt=E(r),I(n.nt,d),g&&V(n.nt,n.tt),b&&V(n.nt,n.je),(g||b)&&V(n.We,n.nt),V(n.Ye,n.nt)),n.ot&&!n.st&&(n.st=E(r),n.je&&n.tt?(I(n.st,d),V(n.st,n.ot),V(n.Ye,n.st)):(V(n.nt,n.ot),I(n.nt,d+'--uneven'))),h){if(!n.ct){let e=E(r),t=E(r);n.ct=E(r),I(e,'footer'),I(t,'links'),I(n.ct,'link-group'),V(t,n.ct),V(e,t),V(n.he,e)}n.ct.innerHTML=h}ge(0),o.D||(o.D=!0,te(m.re.ue,u,n.he),t(e),V(n.Ce,n.Qe),Y(n.he),setTimeout((()=>j(n.Qe,'cc--anim')),100)),ee(1),U(n.We,e,be,t)},Ce=e=>{if(!h(e))return null;if(e in m.o._)return e;let t=e.slice(0,2);return t in m.o._?t:null},we=()=>m.o.l||m.o.i.language.default,Se=e=>{e&&(m.o.l=e)},xe=async e=>{const t=m.o;let o=Ce(e)?e:we(),n=t._[o];if(h(n)?n=await(async e=>{try{const t=await fetch(e);return await t.json()}catch(e){return console.error(e),!1}})(n):w(n)&&(n=await n()),!n)throw`Could not load translation for the '${o}' language`;return t.u=n,Se(o),!0},Me=()=>{let e=m.o.i.language.rtl,t=m.ne.Ce;e&&t&&(y(e)||(e=[e]),v(e,m.o.l)?j(t,'cc--rtl'):F(t,'cc--rtl'))},Te=()=>{const e=m.ne;if(e.Ce)return;e.Ce=E(r),e.Ce.id='cc-main',e.Ce.setAttribute('data-nosnippet',''),Me();let t=m.o.i.root;t&&h(t)&&(t=document.querySelector(t)),(t||e.Ue.body).appendChild(e.Ce)},De=e=>oe((()=>localStorage.removeItem(e))),ke=(e,t)=>{if(t instanceof RegExp)return e.filter((e=>t.test(e)));{const o=b(e,t);return o>-1?[e[o]]:[]}},Ee=e=>{const{hostname:t,protocol:o}=location,{name:n,path:s,domain:a,sameSite:c,useLocalStorage:r,secure:i}=m.t.cookie,l=e?(()=>{const e=m.o.S,t=e?new Date-e:0;return 864e5*$()-t})():864e5*$(),d=new Date;d.setTime(d.getTime()+l),m.o.p.expirationTime=d.getTime();const f=JSON.stringify(m.o.p);let _=n+'='+encodeURIComponent(f)+(0!==l?'; expires='+d.toUTCString():'')+'; Path='+s+'; SameSite='+c;v(t,'.')&&(_+='; Domain='+a),i&&'https:'===o&&(_+='; Secure'),r?((e,t)=>{oe((()=>localStorage.setItem(e,t)))})(n,f):document.cookie=_,m.o.p},Ae=(e,t,o)=>{if(0===e.length)return;const n=o||m.t.cookie.domain,s=t||m.t.cookie.path,a='www.'===n.slice(0,4),c=a&&n.substring(4),r=(e,t)=>{t&&'.'!==t.slice(0,1)&&(t='.'+t),document.cookie=e+'=; path='+s+(t?'; domain='+t:'')+'; expires=Thu, 01 Jan 1970 00:00:01 GMT;'};for(const t of e)r(t,o),o||r(t,n),a&&r(t,c)},Ne=e=>{const t=e||m.t.cookie.name,o=m.t.cookie.useLocalStorage;return((e,t)=>{let o;return o=oe((()=>JSON.parse(t?e:decodeURIComponent(e))),!0)||{},o})(o?(n=t,oe((()=>localStorage.getItem(n)))||''):He(t,!0),o);var n},He=(e,t)=>{const o=document.cookie.match('(^|;)\\s*'+e+'\\s*=\\s*([^;]+)');return o?t?o.pop():e:''},Ve=e=>{const t=document.cookie.split(/;\s*/),o=[];for(const n of t){let t=n.split('=')[0];e?oe((()=>{e.test(t)&&o.push(t)})):o.push(t)}return o},je=(e,n=[])=>{((e,t)=>{const{O:o,R:n,B:s,N:a,Z:c,$:r,X:i}=m.o;let l=[];if(e){y(e)?l.push(...e):h(e)&&(l='all'===e?o:[e]);for(const e of o)c[e]=v(l,e)?S(i[e]):[]}else l=[...n,...r],a&&(l=(()=>{const e=m.ne.se;if(!e)return[];let t=[];for(let o in e)e[o].checked&&t.push(o);return t})());l=l.filter((e=>!v(o,e)||!v(t,e))),l.push(...s),J(l)})(e,n),(()=>{const e=m.o,{Z:t,B:o,Y:n,X:s,O:a}=e,c=a;e.te=P(n);for(const a of c){const c=s[a],r=S(c),i=t[a]&&t[a].length>0,l=v(o,a);if(0!==r.length){if(n[a]=[],l)n[a].push(...r);else if(i){const e=t[a];n[a].push(...e)}else n[a]=e.Z[a];n[a]=x(n[a])}}})(),(()=>{const e=m.o;e.I=m.t.mode===o&&e.T?G(e.$,e.R):G(e.R,e.p.categories);let n=e.I.length>0,s=!1;for(const t of e.O)e.ee[t]=G(e.Y[t],e.te[t]),e.ee[t].length>0&&(s=!0);const a=m.ne.se;for(const t in a)a[t].checked=v(e.R,t);for(const t of e.O){const o=m.ne.ae[t],n=e.Y[t];for(const e in o)o[e].checked=v(n,e)}e.C||(e.C=new Date),e.M||(e.M=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)))),e.p={categories:P(e.R),revision:m.t.revision,data:e.h,consentTimestamp:e.C.toISOString(),consentId:e.M,services:P(e.Y),languageCode:m.o.l},e.S&&(e.p.lastConsentTimestamp=e.S.toISOString());let c=!1;const r=n||s;(e.T||r)&&(e.T&&(e.T=!1,c=!0),e.S=e.S?new Date:e.C,e.p.lastConsentTimestamp=e.S.toISOString(),Ee(),m.t.autoClearCookies&&(c||r)&&(e=>{const t=m.o,o=Ve(),n=(e=>{const t=m.o;return(e?t.O:t.I).filter((e=>{const o=t.P[e];return!!o&&!o.readOnly&&!!o.autoClear}))})(e);for(const e in t.ee)for(const n of t.ee[e]){const s=t.X[e][n].cookies;if(!v(t.Y[e],n)&&s)for(const e of s){const t=ke(o,e.name);Ae(t,e.path,e.domain)}}for(const s of n){const n=t.P[s].autoClear,a=n&&n.cookies||[],c=v(t.I,s),r=!v(t.R,s),i=c&&r;if(e?r:i){n.reloadPage&&i&&(t.L=!0);for(const e of a){const t=ke(o,e.name);Ae(t,e.path,e.domain)}}}})(c),ne()),c&&(te(m.re.ie),te(m.re.le),m.t.mode===t)||(r&&te(m.re.de),e.L&&(e.L=!1,location.reload()))})()},Ie=e=>{const t=m.o.T?[]:m.o.R;return v(t,e)},Le=(e,t)=>{const o=m.o.T?[]:m.o.Y[t]||[];return v(o,e)},Fe=(e,t,o)=>{let n=[];const s=e=>{if(h(e)){let t=He(e);''!==t&&n.push(t)}else n.push(...Ve(e))};if(y(e))for(let t of e)s(t);else s(e);Ae(n,t,o)},Pe=e=>{const{ne:t,o:o}=m;if(!o.k){if(!o.D){if(!e)return;he($e,Te)}o.k=!0,o.J=M(),o.v&&Q(!0),q(t.he,1),j(t.ye,n),A(t.he,l,'false'),setTimeout((()=>{z(m.ne.be)}),100),te(m.re.fe,u)}},Oe=()=>{const{ne:e,o:t,re:o}=m;t.k&&(t.k=!1,t.v&&Q(),z(e.Ke,!0),F(e.ye,n),A(e.he,l,'true'),z(t.J),t.J=null,te(o._e,u))},Re=()=>{const e=m.o;e.A||(e.N||be($e,Te),e.A=!0,e.k?e.U=M():e.J=M(),q(m.ne.we,2),j(m.ne.ye,s),A(m.ne.we,l,'false'),setTimeout((()=>{z(m.ne.ve)}),100),te(m.re.fe,p))},Be=()=>{const e=m.o;e.A&&(e.A=!1,(()=>{const e=Je(),t=m.o.P,o=m.ne.se,n=m.ne.ae,s=e=>v(m.o.$,e);for(const a in o){const c=!!t[a].readOnly;o[a].checked=c||(e?Ie(a):s(a));for(const t in n[a])n[a][t].checked=c||(e?Le(t,a):s(a))}})(),z(m.ne.$e,!0),F(m.ne.ye,s),A(m.ne.we,l,'true'),e.k?(z(e.U),e.U=null):(z(e.J),e.J=null),te(m.re._e,p))};var $e={show:Pe,hide:Oe,showPreferences:Re,hidePreferences:Be,acceptCategory:je};const Ge=(e,t)=>{const o=Ne(t);return e?o[e]:o},Je=()=>!m.o.T;e.acceptCategory=je,e.acceptService=(e,t)=>{const{O:o,X:n}=m.o;if(!(e&&t&&h(t)&&v(o,t)&&0!==S(n[t]).length))return!1;((e,t)=>{const o=m.o,{X:n,Z:s,N:a}=o,c=m.ne.ae[t]||{},r=m.ne.se[t]||{},i=S(n[t]);if(s[t]=[],h(e)){if('all'===e){if(s[t].push(...i),a)for(let e in c)c[e].checked=!0,k(c[e])}else if(v(i,e)&&s[t].push(e),a)for(let t in c)c[t].checked=e===t,k(c[t])}else if(y(e))for(let o of i){const n=v(e,o);n&&s[t].push(o),a&&(c[o].checked=n,k(c[o]))}const l=0===s[t].length;o.R=l?o.R.filter((e=>e!==t)):x([...o.R,t]),a&&(r.checked=!l,k(r))})(e,t),je()},e.acceptedCategory=Ie,e.acceptedService=Le,e.eraseCookies=Fe,e.getConfig=e=>{const t=m.t,o=m.o.i;return e?t[e]||o[e]:{...t,...o,cookie:{...t.cookie}}},e.getCookie=Ge,e.getUserPreferences=()=>{const{F:e,Y:t}=m.o,{accepted:o,rejected:n}=(()=>{const{T:e,R:t,O:o}=m.o;return{accepted:t,rejected:e?[]:o.filter((e=>!v(t,e)))}})();return P({acceptType:e,acceptedCategories:o,rejectedCategories:n,acceptedServices:t,rejectedServices:O()})},e.hide=Oe,e.hidePreferences=Be,e.loadScript=(e,t)=>{let o=document.querySelector('script[src="'+e+'"]');return new Promise((n=>{if(o)return n(!0);if(o=E('script'),C(t))for(const e in t)A(o,e,t[e]);o.onload=()=>n(!0),o.onerror=()=>{o.remove(),n(!1)},o.src=e,V(document.head,o)}))},e.reset=e=>{const{Ce:t,ye:o}=m.ne,{name:c,path:r,domain:i,useLocalStorage:l}=m.t.cookie;e&&(l?De(c):Fe(c,r,i));for(const{pe:e,ge:t,me:o}of m.o.m)e.removeEventListener(t,o);t&&t.remove(),o&&o.classList.remove(a,s,n);const d=new g;for(const e in m)m[e]=d[e];window._ccRun=!1},e.run=async e=>{const{o:t,t:n,re:s}=m,a=window;if(!a._ccRun){if(a._ccRun=!0,(e=>{const{ne:t,t:n,o:s}=m,a=n,r=s,{cookie:i}=a,l=m.ce,d=e.cookie,f=e.categories,_=S(f)||[],u=navigator,p=document;t.Ue=p,t.ye=p.documentElement,i.domain=location.hostname,r.i=e,r.P=f,r.O=_,r._=e.language.translations,r.v=!!e.disablePageInteraction,l.ie=e.onFirstConsent,l.le=e.onConsent,l.de=e.onChange,l._e=e.onModalHide,l.fe=e.onModalShow,l.ue=e.onModalReady;const{mode:g,autoShow:b,lazyHtmlGeneration:y,autoClearCookies:h,revision:w,manageScriptTags:x,hideFromBots:M}=e;g===o&&(a.mode=g),'boolean'==typeof h&&(a.autoClearCookies=h),'boolean'==typeof x&&(a.manageScriptTags=x),'number'==typeof w&&w>=0&&(a.revision=w,r.V=!0),'boolean'==typeof b&&(a.autoShow=b),'boolean'==typeof y&&(a.lazyHtmlGeneration=y),!1===M&&(a.hideFromBots=!1),!0===a.hideFromBots&&u&&(r.G=u.userAgent&&/bot|crawl|spider|slurp|teoma/i.test(u.userAgent)||u.webdriver),C(d)&&(a.cookie={...i,...d}),a.autoClearCookies,r.V,a.manageScriptTags,(e=>{const{P:t,X:o,Y:n,Z:s,B:a}=m.o;for(let c of e){const e=t[c],r=e.services||{},i=C(r)&&S(r)||[];o[c]={},n[c]=[],s[c]=[],e.readOnly&&(a.push(c),n[c]=i),m.ne.ae[c]={};for(let e of i){const t=r[e];t.Se=!1,o[c][e]=t}}})(_),(()=>{if(!m.t.manageScriptTags)return;const e=m.o,t=D(document,'script['+c+']');for(const o of t){let t=H(o,c),n=o.dataset.service||'',s=!1;if(t&&'!'===t.charAt(0)&&(t=t.slice(1),s=!0),'!'===n.charAt(0)&&(n=n.slice(1),s=!0),v(e.O,t)&&(e.oe.push({Me:o,xe:!1,ke:s,Te:t,De:n}),n)){const o=e.X[t];o[n]||(o[n]={Se:!1})}}})(),Se((()=>{const e=m.o.i.language.autoDetect;if(e){const t={browser:navigator.language,document:document.documentElement.lang},o=Ce(t[e]);if(o)return o}return we()})())})(e),t.G)return;(()=>{const e=m.o,t=m.t,n=Ne(),{categories:s,services:a,consentId:c,consentTimestamp:r,lastConsentTimestamp:i,data:l,revision:d}=n,f=y(s);e.p=n,e.M=c;const _=!!c&&h(c);e.C=r,e.C&&(e.C=new Date(r)),e.S=i,e.S&&(e.S=new Date(i)),e.h=void 0!==l?l:null,e.V&&_&&d!==t.revision&&(e.j=!1),e.T=!(_&&e.j&&e.C&&e.S&&f),t.cookie.useLocalStorage&&!e.T&&(e.T=(new Date).getTime()>(n.expirationTime||0),e.T&&De(t.cookie.name)),e.T,(()=>{const e=m.o;for(const t of e.O){const n=e.P[t];if(n.readOnly||n.enabled){e.$.push(t);const n=e.X[t]||{};for(let s in n)e.Z[t].push(s),e.i.mode===o&&e.Y[t].push(s)}}})(),e.T?t.mode===o&&(e.R=[...e.$]):(e.Y={...e.Y,...a},e.Z={...e.Y},J([...e.B,...s]))})();const i=Je();if(!await xe())return!1;if(U(null,r=$e,be,Te),m.o.T&&he(r,Te),m.t.lazyHtmlGeneration||be(r,Te),n.autoShow&&!i&&Pe(!0),i)return ne(),te(s.le);n.mode===o&&ne(t.$)}var r},e.setCookieData=e=>{let t,o=e.value,n=e.mode,s=!1;const a=m.o;if('update'===n){a.h=t=Ge('data');const e=typeof t==typeof o;if(e&&'object'==typeof t){!t&&(t={});for(let e in o)t[e]!==o[e]&&(t[e]=o[e],s=!0)}else!e&&t||t===o||(t=o,s=!0)}else t=o,s=!0;return s&&(a.h=t,a.p.data=t,Ee(!0)),s},e.setLanguage=async(e,t)=>{if(!Ce(e))return!1;const o=m.o;return!(e===we()&&!0!==t||!await xe(e)||(Se(e),o.D&&he($e,Te),o.N&&be($e,Te),Me(),0))},e.show=Pe,e.showPreferences=Re,e.validConsent=Je,e.validCookie=e=>''!==He(e,!0)},'object'==typeof exports&&'undefined'!=typeof module?t(exports):'function'==typeof define&&define.amd?define(['exports'],t):t((e='undefined'!=typeof globalThis?globalThis:e||self).CookieConsent={}); diff --git a/src/main/resources/templates/fragments/common.html b/src/main/resources/templates/fragments/common.html index 01d8f4232..6ba5e710b 100644 --- a/src/main/resources/templates/fragments/common.html +++ b/src/main/resources/templates/fragments/common.html @@ -66,7 +66,8 @@ - + + @@ -80,9 +81,42 @@ - - - @@ -232,8 +267,9 @@ loading: '[[#{loading}]]' };
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ google drive
@@ -265,4 +307,16 @@
+ +
+ + + + + +
\ No newline at end of file diff --git a/src/main/resources/templates/fragments/footer.html b/src/main/resources/templates/fragments/footer.html index bcb6e74d1..a3c99e46a 100644 --- a/src/main/resources/templates/fragments/footer.html +++ b/src/main/resources/templates/fragments/footer.html @@ -1,16 +1,19 @@