├── .eslintrc.cjs ├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── appstore-build-publish.yml │ ├── lint-eslint.yml │ ├── lint-info-xml.yml │ ├── lint-php-cs.yml │ ├── lint-php.yml │ ├── node.yml │ ├── pr-feedback.yml │ └── psalm-matrix.yml ├── .gitignore ├── .l10nignore ├── .nextcloudignore ├── .php-cs-fixer.dist.php ├── .tx └── config ├── AUTHORS.md ├── CHANGELOG.md ├── COPYING ├── README.md ├── appinfo ├── info.xml └── routes.php ├── composer.json ├── composer.lock ├── css └── dashboard.css ├── img ├── add.svg ├── app-dark.svg ├── app.svg ├── rename.svg ├── screenshot1.jpg └── sound-border.svg ├── krankerl.toml ├── l10n ├── .gitkeep ├── ar.js ├── ar.json ├── ast.js ├── ast.json ├── bg.js ├── bg.json ├── ca.js ├── ca.json ├── cs.js ├── cs.json ├── da.js ├── da.json ├── de.js ├── de.json ├── de_DE.js ├── de_DE.json ├── el.js ├── el.json ├── en_GB.js ├── en_GB.json ├── es.js ├── es.json ├── es_EC.js ├── es_EC.json ├── et_EE.js ├── et_EE.json ├── eu.js ├── eu.json ├── fa.js ├── fa.json ├── fi.js ├── fi.json ├── fr.js ├── fr.json ├── ga.js ├── ga.json ├── gl.js ├── gl.json ├── he.js ├── he.json ├── hr.js ├── hr.json ├── hu.js ├── hu.json ├── id.js ├── id.json ├── is.js ├── is.json ├── it.js ├── it.json ├── ja.js ├── ja.json ├── ka.js ├── ka.json ├── ko.js ├── ko.json ├── lt_LT.js ├── lt_LT.json ├── lv.js ├── lv.json ├── mk.js ├── mk.json ├── nb.js ├── nb.json ├── nl.js ├── nl.json ├── nn_NO.js ├── nn_NO.json ├── oc.js ├── oc.json ├── pl.js ├── pl.json ├── pt_BR.js ├── pt_BR.json ├── pt_PT.js ├── pt_PT.json ├── ro.js ├── ro.json ├── ru.js ├── ru.json ├── sc.js ├── sc.json ├── si.js ├── si.json ├── sk.js ├── sk.json ├── sl.js ├── sl.json ├── sr.js ├── sr.json ├── sv.js ├── sv.json ├── th.js ├── th.json ├── tr.js ├── tr.json ├── ug.js ├── ug.json ├── uk.js ├── uk.json ├── uz.js ├── uz.json ├── vi.js ├── vi.json ├── zh_CN.js ├── zh_CN.json ├── zh_HK.js ├── zh_HK.json ├── zh_TW.js └── zh_TW.json ├── lib ├── AppInfo │ └── Application.php ├── BackgroundJob │ └── CheckOpenTickets.php ├── Controller │ ├── ConfigController.php │ └── ZammadAPIController.php ├── Dashboard │ └── ZammadWidget.php ├── Listener │ └── ZammadReferenceListener.php ├── Migration │ └── Version030000Date20241003141518.php ├── Notification │ └── Notifier.php ├── Reference │ └── ZammadReferenceProvider.php ├── Search │ ├── ZammadSearchProvider.php │ └── ZammadSearchResultEntry.php ├── Service │ └── ZammadAPIService.php └── Settings │ ├── Admin.php │ ├── AdminSection.php │ ├── Personal.php │ └── PersonalSection.php ├── makefile ├── package-lock.json ├── package.json ├── psalm.xml ├── src ├── adminSettings.js ├── components │ ├── AdminSettings.vue │ ├── PersonalSettings.vue │ └── icons │ │ ├── CommentIcon.vue │ │ └── ZammadIcon.vue ├── dashboard.js ├── personalSettings.js ├── reference.js ├── utils.js └── views │ ├── Dashboard.vue │ └── ReferenceZammadWidget.vue ├── stylelint.config.cjs ├── templates ├── adminSettings.php └── personalSettings.php ├── tests ├── psalm-baseline.xml └── stub.phpstub └── vite.config.ts /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | globals: { 3 | appVersion: true 4 | }, 5 | parserOptions: { 6 | requireConfigFile: false 7 | }, 8 | extends: [ 9 | '@nextcloud' 10 | ], 11 | rules: { 12 | 'jsdoc/require-jsdoc': 'off', 13 | 'jsdoc/tag-lines': 'off', 14 | 'vue/first-attribute-linebreak': 'off', 15 | 'import/extensions': 'off' 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | /appinfo/info.xml @marcelklehr @julien-nc 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: composer 4 | directory: "/" 5 | schedule: 6 | interval: weekly 7 | day: saturday 8 | time: "03:00" 9 | timezone: Europe/Paris 10 | open-pull-requests-limit: 10 11 | - package-ecosystem: npm 12 | directory: "/" 13 | schedule: 14 | interval: weekly 15 | day: saturday 16 | time: "03:00" 17 | timezone: Europe/Paris 18 | open-pull-requests-limit: 10 19 | - package-ecosystem: "github-actions" 20 | directory: "/" 21 | schedule: 22 | interval: weekly 23 | day: saturday 24 | time: "03:00" 25 | timezone: Europe/Paris 26 | open-pull-requests-limit: 10 27 | -------------------------------------------------------------------------------- /.github/workflows/lint-eslint.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint eslint 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-eslint-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | changes: 22 | runs-on: ubuntu-latest-low 23 | permissions: 24 | contents: read 25 | pull-requests: read 26 | 27 | outputs: 28 | src: ${{ steps.changes.outputs.src}} 29 | 30 | steps: 31 | - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 32 | id: changes 33 | continue-on-error: true 34 | with: 35 | filters: | 36 | src: 37 | - '.github/workflows/**' 38 | - 'src/**' 39 | - 'appinfo/info.xml' 40 | - 'package.json' 41 | - 'package-lock.json' 42 | - 'tsconfig.json' 43 | - '.eslintrc.*' 44 | - '.eslintignore' 45 | - '**.js' 46 | - '**.ts' 47 | - '**.vue' 48 | 49 | lint: 50 | runs-on: ubuntu-latest 51 | 52 | needs: changes 53 | if: needs.changes.outputs.src != 'false' 54 | 55 | name: NPM lint 56 | 57 | steps: 58 | - name: Checkout 59 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 60 | 61 | - name: Read package.json node and npm engines version 62 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 63 | id: versions 64 | with: 65 | fallbackNode: '^20' 66 | fallbackNpm: '^10' 67 | 68 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 69 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 70 | with: 71 | node-version: ${{ steps.versions.outputs.nodeVersion }} 72 | 73 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 74 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' 75 | 76 | - name: Install dependencies 77 | env: 78 | CYPRESS_INSTALL_BINARY: 0 79 | PUPPETEER_SKIP_DOWNLOAD: true 80 | run: npm ci 81 | 82 | - name: Lint 83 | run: npm run lint 84 | 85 | summary: 86 | permissions: 87 | contents: none 88 | runs-on: ubuntu-latest-low 89 | needs: [changes, lint] 90 | 91 | if: always() 92 | 93 | # This is the summary, we just avoid to rename it so that branch protection rules still match 94 | name: eslint 95 | 96 | steps: 97 | - name: Summary status 98 | run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi 99 | -------------------------------------------------------------------------------- /.github/workflows/lint-info-xml.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint info.xml 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-info-xml-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | xml-linters: 22 | runs-on: ubuntu-latest-low 23 | 24 | name: info.xml lint 25 | steps: 26 | - name: Checkout 27 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 28 | 29 | - name: Download schema 30 | run: wget https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd 31 | 32 | - name: Lint info.xml 33 | uses: ChristophWurst/xmllint-action@36f2a302f84f8c83fceea0b9c59e1eb4a616d3c1 # v1.2 34 | with: 35 | xml-file: ./appinfo/info.xml 36 | xml-schema-file: ./info.xsd 37 | -------------------------------------------------------------------------------- /.github/workflows/lint-php-cs.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint php-cs 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-php-cs-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | lint: 22 | runs-on: ubuntu-latest 23 | 24 | name: php-cs 25 | 26 | steps: 27 | - name: Checkout 28 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 29 | 30 | - name: Get php version 31 | id: versions 32 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 33 | 34 | - name: Set up php${{ steps.versions.outputs.php-available }} 35 | uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0 36 | with: 37 | php-version: ${{ steps.versions.outputs.php-available }} 38 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite 39 | coverage: none 40 | ini-file: development 41 | env: 42 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 43 | 44 | - name: Install dependencies 45 | run: | 46 | composer remove nextcloud/ocp --dev 47 | composer i 48 | 49 | - name: Lint 50 | run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) 51 | -------------------------------------------------------------------------------- /.github/workflows/lint-php.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint php 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-php-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | matrix: 22 | runs-on: ubuntu-latest-low 23 | outputs: 24 | php-versions: ${{ steps.versions.outputs.php-versions }} 25 | steps: 26 | - name: Checkout app 27 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 28 | - name: Get version matrix 29 | id: versions 30 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0 31 | 32 | php-lint: 33 | runs-on: ubuntu-latest 34 | needs: matrix 35 | strategy: 36 | matrix: 37 | php-versions: ${{fromJson(needs.matrix.outputs.php-versions)}} 38 | 39 | name: php-lint 40 | 41 | steps: 42 | - name: Checkout 43 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 44 | 45 | - name: Set up php ${{ matrix.php-versions }} 46 | uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0 47 | with: 48 | php-version: ${{ matrix.php-versions }} 49 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite 50 | coverage: none 51 | ini-file: development 52 | env: 53 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 54 | 55 | - name: Lint 56 | run: composer run lint 57 | 58 | summary: 59 | permissions: 60 | contents: none 61 | runs-on: ubuntu-latest-low 62 | needs: php-lint 63 | 64 | if: always() 65 | 66 | name: php-lint-summary 67 | 68 | steps: 69 | - name: Summary status 70 | run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi 71 | -------------------------------------------------------------------------------- /.github/workflows/node.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Node 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: node-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | changes: 22 | runs-on: ubuntu-latest-low 23 | permissions: 24 | contents: read 25 | pull-requests: read 26 | 27 | outputs: 28 | src: ${{ steps.changes.outputs.src}} 29 | 30 | steps: 31 | - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 32 | id: changes 33 | continue-on-error: true 34 | with: 35 | filters: | 36 | src: 37 | - '.github/workflows/**' 38 | - 'src/**' 39 | - 'appinfo/info.xml' 40 | - 'package.json' 41 | - 'package-lock.json' 42 | - 'tsconfig.json' 43 | - '**.js' 44 | - '**.ts' 45 | - '**.vue' 46 | 47 | build: 48 | runs-on: ubuntu-latest 49 | 50 | needs: changes 51 | if: needs.changes.outputs.src != 'false' 52 | 53 | name: NPM build 54 | steps: 55 | - name: Checkout 56 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 57 | 58 | - name: Read package.json node and npm engines version 59 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 60 | id: versions 61 | with: 62 | fallbackNode: '^20' 63 | fallbackNpm: '^10' 64 | 65 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 66 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 67 | with: 68 | node-version: ${{ steps.versions.outputs.nodeVersion }} 69 | 70 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 71 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' 72 | 73 | - name: Install dependencies & build 74 | env: 75 | CYPRESS_INSTALL_BINARY: 0 76 | PUPPETEER_SKIP_DOWNLOAD: true 77 | run: | 78 | npm ci 79 | npm run build --if-present 80 | 81 | - name: Check webpack build changes 82 | run: | 83 | bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" 84 | 85 | - name: Show changes on failure 86 | if: failure() 87 | run: | 88 | git status 89 | git --no-pager diff 90 | exit 1 # make it red to grab attention 91 | 92 | summary: 93 | permissions: 94 | contents: none 95 | runs-on: ubuntu-latest-low 96 | needs: [changes, build] 97 | 98 | if: always() 99 | 100 | # This is the summary, we just avoid to rename it so that branch protection rules still match 101 | name: node 102 | 103 | steps: 104 | - name: Summary status 105 | run: if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi 106 | -------------------------------------------------------------------------------- /.github/workflows/pr-feedback.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | # SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-FileCopyrightText: 2023 Marcel Klehr 8 | # SPDX-FileCopyrightText: 2023 Joas Schilling <213943+nickvergessen@users.noreply.github.com> 9 | # SPDX-FileCopyrightText: 2023 Daniel Kesselberg 10 | # SPDX-FileCopyrightText: 2023 Florian Steffens 11 | # SPDX-License-Identifier: MIT 12 | 13 | name: 'Ask for feedback on PRs' 14 | on: 15 | schedule: 16 | - cron: '30 1 * * *' 17 | 18 | permissions: 19 | contents: read 20 | pull-requests: write 21 | 22 | jobs: 23 | pr-feedback: 24 | if: ${{ github.repository_owner == 'nextcloud' }} 25 | runs-on: ubuntu-latest 26 | steps: 27 | - name: The get-github-handles-from-website action 28 | uses: marcelklehr/get-github-handles-from-website-action@06b2239db0a48fe1484ba0bfd966a3ab81a08308 # v1.0.1 29 | id: scrape 30 | with: 31 | website: 'https://nextcloud.com/team/' 32 | 33 | - name: Get blocklist 34 | id: blocklist 35 | run: | 36 | blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -) 37 | echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT" 38 | 39 | - uses: marcelklehr/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4 40 | with: 41 | feedback-message: | 42 | Hello there, 43 | Thank you so much for taking the time and effort to create a pull request to our Nextcloud project. 44 | 45 | We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. 46 | 47 | Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 48 | 49 | Thank you for contributing to Nextcloud and we hope to hear from you soon! 50 | 51 | (If you believe you should not receive this message, you can add yourself to the [blocklist](https://github.com/nextcloud/.github/blob/master/non-community-usernames.txt).) 52 | days-before-feedback: 14 53 | start-date: '2024-04-30' 54 | exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }}' 55 | exempt-bots: true 56 | -------------------------------------------------------------------------------- /.github/workflows/psalm-matrix.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Static analysis 10 | 11 | on: 12 | pull_request: 13 | push: 14 | branches: 15 | - master 16 | - main 17 | - stable* 18 | 19 | concurrency: 20 | group: psalm-${{ github.head_ref || github.run_id }} 21 | cancel-in-progress: true 22 | 23 | jobs: 24 | matrix: 25 | runs-on: ubuntu-latest-low 26 | outputs: 27 | ocp-matrix: ${{ steps.versions.outputs.ocp-matrix }} 28 | steps: 29 | - name: Checkout app 30 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 31 | - name: Get version matrix 32 | id: versions 33 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 34 | 35 | static-analysis: 36 | runs-on: ubuntu-latest 37 | needs: matrix 38 | strategy: 39 | # do not stop on another job's failure 40 | fail-fast: false 41 | matrix: ${{ fromJson(needs.matrix.outputs.ocp-matrix) }} 42 | 43 | name: static-psalm-analysis ${{ matrix.ocp-version }} 44 | steps: 45 | - name: Checkout 46 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 47 | 48 | - name: Set up php${{ matrix.php-versions }} 49 | uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0 50 | with: 51 | php-version: ${{ matrix.php-versions }} 52 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite 53 | coverage: none 54 | ini-file: development 55 | env: 56 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 57 | 58 | - name: Install dependencies 59 | run: | 60 | composer remove nextcloud/ocp --dev 61 | composer i 62 | 63 | 64 | - name: Install dependencies 65 | run: composer require --dev 'nextcloud/ocp:${{ matrix.ocp-version }}' --ignore-platform-reqs --with-dependencies 66 | 67 | - name: Run coding standards check 68 | run: composer run psalm 69 | 70 | summary: 71 | runs-on: ubuntu-latest-low 72 | needs: static-analysis 73 | 74 | if: always() 75 | 76 | name: static-psalm-analysis-summary 77 | 78 | steps: 79 | - name: Summary status 80 | run: if ${{ needs.static-analysis.result != 'success' }}; then exit 1; fi 81 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | js/ 2 | .code-workspace 3 | .DS_Store 4 | .idea/ 5 | .vscode/ 6 | .vscode-upload.json 7 | .*.sw* 8 | node_modules 9 | /vendor 10 | /.php-cs-fixer.cache 11 | -------------------------------------------------------------------------------- /.l10nignore: -------------------------------------------------------------------------------- 1 | # compiled vue templates 2 | js/ 3 | -------------------------------------------------------------------------------- /.nextcloudignore: -------------------------------------------------------------------------------- 1 | .git 2 | .github 3 | .gitignore 4 | .tx 5 | .vscode 6 | .php-cs-fixer.* 7 | /.codecov.yml 8 | /.eslintrc.js 9 | /.gitattributes 10 | /.gitignore 11 | /.l10nignore 12 | /.nextcloudignore 13 | /.travis.yml 14 | /.pre-commit-config.yaml 15 | /babel.config.js 16 | /build 17 | /CODE_OF_CONDUCT.md 18 | /composer.* 19 | /node_modules 20 | /screenshots 21 | /src 22 | /vendor/bin 23 | /jest.config.js 24 | /Makefile 25 | /makefile 26 | /krankerl.toml 27 | /package-lock.json 28 | /package.json 29 | /postcss.config.js 30 | /psalm.xml 31 | /pyproject.toml 32 | /renovate.json 33 | /stylelint.config.js 34 | /webpack.config.js 35 | /webpack.js 36 | tests 37 | -------------------------------------------------------------------------------- /.php-cs-fixer.dist.php: -------------------------------------------------------------------------------- 1 | getFinder() 11 | ->in(__DIR__ . '/lib'); 12 | return $config; 13 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi 4 | 5 | [o:nextcloud:p:nextcloud:r:integration_zammad] 6 | file_filter = translationfiles//integration_zammad.po 7 | source_file = translationfiles/templates/integration_zammad.pot 8 | source_lang = en 9 | type = PO 10 | 11 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | # Authors 2 | 3 | * Julien Veyssier (Developper) 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Zammad integration into Nextcloud 2 | 3 | 🦜 Interact with your tickets in Nextcloud! 4 | 5 | This app provides a dashboard widget to see your main Zammad notifications, a search provider for tickets and notifications for new open tickets. 6 | 7 | ## 🔧 Configuration 8 | 9 | ### User settings 10 | 11 | The account configuration happens in the "Connected accounts" user settings section. It requires to create a personal access token in your Zammad settings. 12 | 13 | A link to the "Connected accounts" user settings section will be displayed in the widget for users who didn't configure a Zammad account. 14 | 15 | ### Admin settings 16 | 17 | There also is a "Connected accounts" **admin** settings section if you want to allow your Nextcloud users to use OAuth to authenticate to a specific Zammad instance. 18 | 19 | ## **🛠️ State of maintenance** 20 | 21 | While there are many things that could be done to further improve this app, the app is currently maintained with **limited effort**. This means: 22 | 23 | - The main functionality works for the majority of the use cases 24 | - We will ensure that the app will continue to work like this for future releases and we will fix bugs that we classify as 'critical' 25 | - We will not invest further development resources ourselves in advancing the app with new features 26 | - We do review and enthusiastically welcome community PR's 27 | 28 | We would be more than excited if you would like to collaborate with us. We will merge pull requests for new features and fixes. We also would love to welcome co-maintainers. 29 | 30 | If there is a strong business case for any development of this app, we will consider your wishes for our roadmap. Please [contact your account manager](https://nextcloud.com/enterprise/) to talk about the possibilities. 31 | -------------------------------------------------------------------------------- /appinfo/info.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | integration_zammad 4 | Zammad integration 5 | Integration of Zammad user support/ticketing solution 6 | 8 | 3.0.1 9 | agpl 10 | Julien Veyssier 11 | Zammad 12 | 13 | https://github.com/nextcloud/integration_zammad 14 | 15 | integration 16 | dashboard 17 | https://github.com/nextcloud/integration_zammad 18 | https://github.com/nextcloud/integration_zammad/issues 19 | https://github.com/nextcloud/integration_zammad/raw/main/img/screenshot1.jpg 20 | 21 | 22 | 23 | 24 | OCA\Zammad\BackgroundJob\CheckOpenTickets 25 | 26 | 27 | OCA\Zammad\Settings\Admin 28 | OCA\Zammad\Settings\AdminSection 29 | OCA\Zammad\Settings\Personal 30 | OCA\Zammad\Settings\PersonalSection 31 | 32 | 33 | -------------------------------------------------------------------------------- /appinfo/routes.php: -------------------------------------------------------------------------------- 1 | 9 | * @copyright Julien Veyssier 2020 10 | */ 11 | 12 | return [ 13 | 'routes' => [ 14 | ['name' => 'config#oauthRedirect', 'url' => '/oauth-redirect', 'verb' => 'GET'], 15 | ['name' => 'config#setConfig', 'url' => '/config', 'verb' => 'PUT'], 16 | ['name' => 'config#setSensitiveConfig', 'url' => '/sensitive-config', 'verb' => 'PUT'], 17 | ['name' => 'config#setAdminConfig', 'url' => '/admin-config', 'verb' => 'PUT'], 18 | ['name' => 'config#setSensitiveAdminConfig', 'url' => '/sensitive-admin-config', 'verb' => 'PUT'], 19 | ['name' => 'zammadAPI#getNotifications', 'url' => '/notifications', 'verb' => 'GET'], 20 | ['name' => 'zammadAPI#getZammadUrl', 'url' => '/url', 'verb' => 'GET'], 21 | ['name' => 'zammadAPI#getZammadAvatar', 'url' => '/avatar/{imageId}', 'verb' => 'GET'], 22 | ] 23 | ]; 24 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": { 3 | "php": ">=8.1" 4 | }, 5 | "scripts": { 6 | "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l", 7 | "cs:check": "php-cs-fixer fix --dry-run --diff", 8 | "cs:fix": "php-cs-fixer fix", 9 | "psalm": "psalm.phar --no-cache", 10 | "psalm:update-baseline": "psalm.phar --threads=1 --update-baseline", 11 | "psalm:update-baseline:force": "psalm.phar --threads=1 --update-baseline --set-baseline=tests/psalm-baseline.xml" 12 | }, 13 | "require-dev": { 14 | "friendsofphp/php-cs-fixer": "^3", 15 | "nextcloud/coding-standard": "^1", 16 | "psalm/phar": "6.7.x", 17 | "nextcloud/ocp": "dev-master", 18 | "guzzlehttp/guzzle": "^7.5.1" 19 | }, 20 | "config": { 21 | "platform": { 22 | "php": "8.1" 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /css/dashboard.css: -------------------------------------------------------------------------------- 1 | .icon-zammad { 2 | background-image: url(./../img/app-dark.svg); 3 | filter: var(--background-invert-if-dark); 4 | } 5 | 6 | body.theme--dark .icon-zammad { 7 | background-image: url(./../img/app.svg); 8 | } 9 | -------------------------------------------------------------------------------- /img/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 54 | 55 | -------------------------------------------------------------------------------- /img/app-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /img/app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /img/rename.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 55 | 56 | -------------------------------------------------------------------------------- /img/screenshot1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextcloud/integration_zammad/09a5e208c6253f74e5874e55a285e3f346a5f5f0/img/screenshot1.jpg -------------------------------------------------------------------------------- /img/sound-border.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /krankerl.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | before_cmds = [ 3 | "npm ci", 4 | "npm run build", 5 | ] 6 | -------------------------------------------------------------------------------- /l10n/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nextcloud/integration_zammad/09a5e208c6253f74e5874e55a285e3f346a5f5f0/l10n/.gitkeep -------------------------------------------------------------------------------- /l10n/ast.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Failed to save Zammad options" : "Nun se puen guardar les opciones de Zammad", 5 | "Access token" : "Pase d'accesu", 6 | "Failed to get Zammad notifications" : "Nun se puen consiguir los avisos de Zammad", 7 | "Account manager" : "Xestor de cuentes", 8 | "Unknown error" : "Error desconocíu", 9 | "Comments" : "Comentarios" 10 | }, 11 | "nplurals=2; plural=(n != 1);"); 12 | -------------------------------------------------------------------------------- /l10n/ast.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Failed to save Zammad options" : "Nun se puen guardar les opciones de Zammad", 3 | "Access token" : "Pase d'accesu", 4 | "Failed to get Zammad notifications" : "Nun se puen consiguir los avisos de Zammad", 5 | "Account manager" : "Xestor de cuentes", 6 | "Unknown error" : "Error desconocíu", 7 | "Comments" : "Comentarios" 8 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 9 | } -------------------------------------------------------------------------------- /l10n/ca.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "S'ha produït un error en obtenir testimoni d'accés OAuth.", 6 | "Error during OAuth exchanges" : "Error durant els intercanvis d'OAuth", 7 | "Zammad notifications" : "Notificacions de Zammad", 8 | "Bad HTTP method" : "Mètode HTTP incorrecte", 9 | "Bad credentials" : "Credencials dolentes", 10 | "OAuth access token refused" : "S'ha rebutjat el testimoni d'accés oAuth", 11 | "Connected accounts" : "Comptes connectats", 12 | "Zammad integration" : "Integració de Zammad", 13 | "Failed to save Zammad admin options" : "No s'han pogut desar les opcions d'administració de Zammad", 14 | "Zammad instance address" : "Adreça de la instància Zammad", 15 | "Zammad address" : "Adreça de Zammad", 16 | "Application ID" : "ID de l'aplicació", 17 | "ID of your application" : "ID de la vostra aplicació", 18 | "Application secret" : "Secret de l'aplicació", 19 | "Client secret of your application" : "Secret del client de la vostra aplicació", 20 | "OAuth access token could not be obtained:" : "No s'ha pogut obtenir el testimoni d'accés oAuth:", 21 | "Incorrect access token" : "Testimoni d'accés incorrecte", 22 | "Failed to save Zammad options" : "No s'han pogut desar les opcions de Zammad", 23 | "https://my.zammad.org" : "https://my.zammad.org", 24 | "Access token" : "Testimoni d'aplicació", 25 | "Zammad access token" : "Testimoni d'accés de Zammad", 26 | "Connect to Zammad" : "Connectar-se a Zammad", 27 | "Connected as {user}" : "S'ha connectat com a {user}", 28 | "Disconnect from Zammad" : "Desconnectar-se de Zammad", 29 | "Enable unified search for tickets" : "Habilita la cerca unificada de peticions", 30 | "Enable notifications for open tickets" : "Activar les notificacions de peticions obertes", 31 | "Enable navigation link" : "Habilita l'enllaç de navegació", 32 | "No Zammad account connected" : "No s'ha connectat el compte de Zammad", 33 | "Error connecting to Zammad" : "S'ha produït un error en connectar a Zammad", 34 | "No Zammad notifications!" : "No hi ha notificacions de Zammad!", 35 | "Account manager" : "Gestor de comptes", 36 | "Unknown error" : "Error desconegut", 37 | "by {creator}" : "per {creator}", 38 | "Comments" : "Comentaris", 39 | "Click to expand comment" : "Feu clic per ampliar el comentari" 40 | }, 41 | "nplurals=2; plural=(n != 1);"); 42 | -------------------------------------------------------------------------------- /l10n/ca.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "S'ha produït un error en obtenir testimoni d'accés OAuth.", 4 | "Error during OAuth exchanges" : "Error durant els intercanvis d'OAuth", 5 | "Zammad notifications" : "Notificacions de Zammad", 6 | "Bad HTTP method" : "Mètode HTTP incorrecte", 7 | "Bad credentials" : "Credencials dolentes", 8 | "OAuth access token refused" : "S'ha rebutjat el testimoni d'accés oAuth", 9 | "Connected accounts" : "Comptes connectats", 10 | "Zammad integration" : "Integració de Zammad", 11 | "Failed to save Zammad admin options" : "No s'han pogut desar les opcions d'administració de Zammad", 12 | "Zammad instance address" : "Adreça de la instància Zammad", 13 | "Zammad address" : "Adreça de Zammad", 14 | "Application ID" : "ID de l'aplicació", 15 | "ID of your application" : "ID de la vostra aplicació", 16 | "Application secret" : "Secret de l'aplicació", 17 | "Client secret of your application" : "Secret del client de la vostra aplicació", 18 | "OAuth access token could not be obtained:" : "No s'ha pogut obtenir el testimoni d'accés oAuth:", 19 | "Incorrect access token" : "Testimoni d'accés incorrecte", 20 | "Failed to save Zammad options" : "No s'han pogut desar les opcions de Zammad", 21 | "https://my.zammad.org" : "https://my.zammad.org", 22 | "Access token" : "Testimoni d'aplicació", 23 | "Zammad access token" : "Testimoni d'accés de Zammad", 24 | "Connect to Zammad" : "Connectar-se a Zammad", 25 | "Connected as {user}" : "S'ha connectat com a {user}", 26 | "Disconnect from Zammad" : "Desconnectar-se de Zammad", 27 | "Enable unified search for tickets" : "Habilita la cerca unificada de peticions", 28 | "Enable notifications for open tickets" : "Activar les notificacions de peticions obertes", 29 | "Enable navigation link" : "Habilita l'enllaç de navegació", 30 | "No Zammad account connected" : "No s'ha connectat el compte de Zammad", 31 | "Error connecting to Zammad" : "S'ha produït un error en connectar a Zammad", 32 | "No Zammad notifications!" : "No hi ha notificacions de Zammad!", 33 | "Account manager" : "Gestor de comptes", 34 | "Unknown error" : "Error desconegut", 35 | "by {creator}" : "per {creator}", 36 | "Comments" : "Comentaris", 37 | "Click to expand comment" : "Feu clic per ampliar el comentari" 38 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 39 | } -------------------------------------------------------------------------------- /l10n/da.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "Fejl under OAuth-udvekslinger", 5 | "Bad HTTP method" : "Dårlig HTTP metode", 6 | "Bad credentials" : "Forkerte legitimationsoplysninger", 7 | "OAuth access token refused" : "OAuth adgangsnøgle afvist", 8 | "Connected accounts" : "Forbundne konti", 9 | "OAuth access token could not be obtained:" : "OAuth adgangsnøgle kunne ikke skaffes:", 10 | "Access token" : "Adgangstoken", 11 | "Connected as {user}" : "Forbundet som {user}", 12 | "Enable navigation link" : "Aktiver navigationslink", 13 | "Account manager" : "Konto bestyrer", 14 | "Unknown error" : "Ukendt fejl", 15 | "by {creator}" : "af {creator}", 16 | "Comments" : "Kommentarer" 17 | }, 18 | "nplurals=2; plural=(n != 1);"); 19 | -------------------------------------------------------------------------------- /l10n/da.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "Fejl under OAuth-udvekslinger", 3 | "Bad HTTP method" : "Dårlig HTTP metode", 4 | "Bad credentials" : "Forkerte legitimationsoplysninger", 5 | "OAuth access token refused" : "OAuth adgangsnøgle afvist", 6 | "Connected accounts" : "Forbundne konti", 7 | "OAuth access token could not be obtained:" : "OAuth adgangsnøgle kunne ikke skaffes:", 8 | "Access token" : "Adgangstoken", 9 | "Connected as {user}" : "Forbundet som {user}", 10 | "Enable navigation link" : "Aktiver navigationslink", 11 | "Account manager" : "Konto bestyrer", 12 | "Unknown error" : "Ukendt fejl", 13 | "by {creator}" : "af {creator}", 14 | "Comments" : "Kommentarer" 15 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 16 | } -------------------------------------------------------------------------------- /l10n/el.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Σφάλμα κατά τη λήψη διακριτικού πρόσβασης OAuth.", 6 | "Error during OAuth exchanges" : "Σφάλμα κατά την ανταλλαγή OAuth", 7 | "Zammad notifications" : "Ειδοποιήσεις Zammad", 8 | "Bad HTTP method" : "Κακή μέθοδος HTTP", 9 | "Bad credentials" : "Εσφαλμένα διαπιστευτήρια", 10 | "OAuth access token refused" : "Το διακριτικό πρόσβασης OAuth απορρίφθηκε", 11 | "Connected accounts" : "Συνδεδεμένοι λογαριασμοί", 12 | "Zammad integration" : "Ενσωμάτωση Zammad", 13 | "Integration of Zammad user support/ticketing solution" : "Ενσωμάτωση της λύσης υποστήριξης χρηστών/εισιτηρίων Zammad", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Η ενσωμάτωση του Zammad παρέχει ένα widget πίνακα ελέγχου που εμφανίζει τις σημαντικές σας ειδοποιήσεις, έναν πάροχο αναζήτησης για εισιτήρια και ειδοποιήσεις για νέα ανοιχτά εισιτήρια.", 15 | "Zammad admin options saved" : "Οι επιλογές του διαχειριστή Zammad αποθηκεύτηκαν", 16 | "Failed to save Zammad admin options" : "Αποτυχία αποθήκευσης επιλογών διαχειριστή του Zammad", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Εάν θέλετε να επιτρέψετε στους χρήστες του Nextcloud να χρησιμοποιούν το OAuth για έλεγχο ταυτότητας σε μια εγκατάσταση Zammad, δημιουργήστε μια εφαρμογή στις ρυθμίσεις διαχειριστή Zammad και τοποθετήστε το αναγνωριστικό εφαρμογής (AppId) και το μυστικό παρακάτω.", 18 | "Make sure you set the \"Callback URL\" to" : "Βεβαιωθείτε ότι έχετε ορίσει το «Callback URL» σε", 19 | "Zammad instance address" : "Διεύθυνση εγκατάστασης Zammad", 20 | "Zammad address" : "Διεύθυνση Zammad", 21 | "Application ID" : "Αναγνωριστικό εφαρμογής", 22 | "ID of your application" : "Αναγνωριστικό της εφαρμογής σας", 23 | "Application secret" : "Μυστικό εφαρμογής", 24 | "Client secret of your application" : "Μυστικό πελάτη της εφαρμογής σας", 25 | "Successfully connected to Zammad!" : "Επιτυχής σύνδεση στο Zammad!", 26 | "OAuth access token could not be obtained:" : "Δεν ήταν δυνατή η λήψη διακριτικού πρόσβασης OAuth:", 27 | "Zammad options saved" : "Οι επιλογές του Zammad αποθηκεύτηκαν", 28 | "Incorrect access token" : "Λανθασμένο διακριτικό πρόσβασης", 29 | "Failed to save Zammad options" : "Αποτυχία αποθήκευσης επιλογών του Zammad", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Για να δημιουργήσετε μόνοι σας ένα διακριτικό πρόσβασης, μεταβείτε στην ενότητα «Διακριτικό πρόσβασης» της σελίδας προφίλ Zammad.", 31 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Δημιουργήστε ένα \"Προσωπικό διακριτικό πρόσβασης\" και δώστε του δικαιώματα \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" και \"USER_PREFERENCES -> NOTIFICATIONS\".", 32 | "https://my.zammad.org" : "https://my.zammad.org", 33 | "Access token" : "Διακριτικό πρόσβασης", 34 | "Zammad access token" : "Διακριτικό πρόσβασης Zammad", 35 | "Connect to Zammad" : "Σύνδεση στο Zammad", 36 | "Connected as {user}" : "Συνδεδεμένος ως {user}", 37 | "Disconnect from Zammad" : "Αποσύνδεση από το Zammad", 38 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Προειδοποίηση, όλα όσα πληκτρολογείτε στη γραμμή αναζήτησης θα σταλούν στην εγκατάσταση Zammad.", 39 | "Enable unified search for tickets" : "Ενεργοποίηση ενοποιημένης αναζήτησης εισιτηρίων", 40 | "Enable notifications for open tickets" : "Ενεργοποίηση ειδοποιήσεων για ανοιχτά εισιτήρια", 41 | "Enable navigation link" : "Ενεργοποίηση συνδέσμου πλοήγησης", 42 | "No Zammad account connected" : "Κανένας συνδεδεμένος λογαριασμός Zammad", 43 | "Error connecting to Zammad" : "Σφάλμα σύνδεσης στο Zammad", 44 | "No Zammad notifications!" : "Καμία ειδοποίηση Zammad!", 45 | "Failed to get Zammad notifications" : "Αποτυχία λήψης ειδοποιήσεων του Zammad", 46 | "Unknown error" : "Άγνωστο σφάλμα", 47 | "Comments" : "Σχόλια", 48 | "Click to expand comment" : "Κλικ για επέκταση σχολίου" 49 | }, 50 | "nplurals=2; plural=(n != 1);"); 51 | -------------------------------------------------------------------------------- /l10n/el.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Σφάλμα κατά τη λήψη διακριτικού πρόσβασης OAuth.", 4 | "Error during OAuth exchanges" : "Σφάλμα κατά την ανταλλαγή OAuth", 5 | "Zammad notifications" : "Ειδοποιήσεις Zammad", 6 | "Bad HTTP method" : "Κακή μέθοδος HTTP", 7 | "Bad credentials" : "Εσφαλμένα διαπιστευτήρια", 8 | "OAuth access token refused" : "Το διακριτικό πρόσβασης OAuth απορρίφθηκε", 9 | "Connected accounts" : "Συνδεδεμένοι λογαριασμοί", 10 | "Zammad integration" : "Ενσωμάτωση Zammad", 11 | "Integration of Zammad user support/ticketing solution" : "Ενσωμάτωση της λύσης υποστήριξης χρηστών/εισιτηρίων Zammad", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Η ενσωμάτωση του Zammad παρέχει ένα widget πίνακα ελέγχου που εμφανίζει τις σημαντικές σας ειδοποιήσεις, έναν πάροχο αναζήτησης για εισιτήρια και ειδοποιήσεις για νέα ανοιχτά εισιτήρια.", 13 | "Zammad admin options saved" : "Οι επιλογές του διαχειριστή Zammad αποθηκεύτηκαν", 14 | "Failed to save Zammad admin options" : "Αποτυχία αποθήκευσης επιλογών διαχειριστή του Zammad", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Εάν θέλετε να επιτρέψετε στους χρήστες του Nextcloud να χρησιμοποιούν το OAuth για έλεγχο ταυτότητας σε μια εγκατάσταση Zammad, δημιουργήστε μια εφαρμογή στις ρυθμίσεις διαχειριστή Zammad και τοποθετήστε το αναγνωριστικό εφαρμογής (AppId) και το μυστικό παρακάτω.", 16 | "Make sure you set the \"Callback URL\" to" : "Βεβαιωθείτε ότι έχετε ορίσει το «Callback URL» σε", 17 | "Zammad instance address" : "Διεύθυνση εγκατάστασης Zammad", 18 | "Zammad address" : "Διεύθυνση Zammad", 19 | "Application ID" : "Αναγνωριστικό εφαρμογής", 20 | "ID of your application" : "Αναγνωριστικό της εφαρμογής σας", 21 | "Application secret" : "Μυστικό εφαρμογής", 22 | "Client secret of your application" : "Μυστικό πελάτη της εφαρμογής σας", 23 | "Successfully connected to Zammad!" : "Επιτυχής σύνδεση στο Zammad!", 24 | "OAuth access token could not be obtained:" : "Δεν ήταν δυνατή η λήψη διακριτικού πρόσβασης OAuth:", 25 | "Zammad options saved" : "Οι επιλογές του Zammad αποθηκεύτηκαν", 26 | "Incorrect access token" : "Λανθασμένο διακριτικό πρόσβασης", 27 | "Failed to save Zammad options" : "Αποτυχία αποθήκευσης επιλογών του Zammad", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Για να δημιουργήσετε μόνοι σας ένα διακριτικό πρόσβασης, μεταβείτε στην ενότητα «Διακριτικό πρόσβασης» της σελίδας προφίλ Zammad.", 29 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Δημιουργήστε ένα \"Προσωπικό διακριτικό πρόσβασης\" και δώστε του δικαιώματα \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" και \"USER_PREFERENCES -> NOTIFICATIONS\".", 30 | "https://my.zammad.org" : "https://my.zammad.org", 31 | "Access token" : "Διακριτικό πρόσβασης", 32 | "Zammad access token" : "Διακριτικό πρόσβασης Zammad", 33 | "Connect to Zammad" : "Σύνδεση στο Zammad", 34 | "Connected as {user}" : "Συνδεδεμένος ως {user}", 35 | "Disconnect from Zammad" : "Αποσύνδεση από το Zammad", 36 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Προειδοποίηση, όλα όσα πληκτρολογείτε στη γραμμή αναζήτησης θα σταλούν στην εγκατάσταση Zammad.", 37 | "Enable unified search for tickets" : "Ενεργοποίηση ενοποιημένης αναζήτησης εισιτηρίων", 38 | "Enable notifications for open tickets" : "Ενεργοποίηση ειδοποιήσεων για ανοιχτά εισιτήρια", 39 | "Enable navigation link" : "Ενεργοποίηση συνδέσμου πλοήγησης", 40 | "No Zammad account connected" : "Κανένας συνδεδεμένος λογαριασμός Zammad", 41 | "Error connecting to Zammad" : "Σφάλμα σύνδεσης στο Zammad", 42 | "No Zammad notifications!" : "Καμία ειδοποίηση Zammad!", 43 | "Failed to get Zammad notifications" : "Αποτυχία λήψης ειδοποιήσεων του Zammad", 44 | "Unknown error" : "Άγνωστο σφάλμα", 45 | "Comments" : "Σχόλια", 46 | "Click to expand comment" : "Κλικ για επέκταση σχολίου" 47 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 48 | } -------------------------------------------------------------------------------- /l10n/en_GB.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Error getting OAuth access token.", 6 | "Error during OAuth exchanges" : "Error during OAuth exchanges", 7 | "Zammad notifications" : "Zammad notifications", 8 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["You have %n open ticket in Zammad.","You have %n open tickets in Zammad."], 9 | "Zammad tickets" : "Zammad tickets", 10 | "closed %1$s" : "closed %1$s", 11 | "updated %1$s" : "updated %1$s", 12 | "Bad HTTP method" : "Bad HTTP method", 13 | "Bad credentials" : "Bad credentials", 14 | "OAuth access token refused" : "OAuth access token refused", 15 | "Connected accounts" : "Connected accounts", 16 | "Zammad integration" : "Zammad integration", 17 | "Integration of Zammad user support/ticketing solution" : "Integration of Zammad user support/ticketing solution", 18 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets.", 19 | "Zammad admin options saved" : "Zammad admin options saved", 20 | "Failed to save Zammad admin options" : "Failed to save Zammad admin options", 21 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below.", 22 | "Make sure you set the \"Callback URL\" to" : "Make sure you set the \"Callback URL\" to", 23 | "Zammad instance address" : "Zammad instance address", 24 | "Zammad address" : "Zammad address", 25 | "Application ID" : "Application ID", 26 | "ID of your application" : "ID of your application", 27 | "Application secret" : "Application secret", 28 | "Client secret of your application" : "Client secret of your application", 29 | "Enable Zammad link previews" : "Enable Zammad link previews", 30 | "Successfully connected to Zammad!" : "Successfully connected to Zammad!", 31 | "OAuth access token could not be obtained:" : "OAuth access token could not be obtained:", 32 | "Zammad options saved" : "Zammad options saved", 33 | "Incorrect access token" : "Incorrect access token", 34 | "Failed to save Zammad options" : "Failed to save Zammad options", 35 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page.", 36 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions.", 37 | "https://my.zammad.org" : "https://my.zammad.org", 38 | "Access token" : "Access token", 39 | "Zammad access token" : "Zammad access token", 40 | "Connect to Zammad" : "Connect to Zammad", 41 | "Connected as {user}" : "Connected as {user}", 42 | "Disconnect from Zammad" : "Disconnect from Zammad", 43 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Warning, everything you type in the search bar will be sent to your Zammad instance.", 44 | "Enable unified search for tickets" : "Enable unified search for tickets", 45 | "Enable notifications for open tickets" : "Enable notifications for open tickets", 46 | "Enable navigation link" : "Enable navigation link", 47 | "No Zammad account connected" : "No Zammad account connected", 48 | "Error connecting to Zammad" : "Error connecting to Zammad", 49 | "No Zammad notifications!" : "No Zammad notifications!", 50 | "Failed to get Zammad notifications" : "Failed to get Zammad notifications", 51 | "Account manager" : "Account manager", 52 | "Subscription ends" : "Subscription ends", 53 | "created {relativeDate}" : "created {relativeDate}", 54 | "closed {relativeDate}" : "closed {relativeDate}", 55 | "updated {relativeDate}" : "updated {relativeDate}", 56 | "Zammad API error" : "Zammad API error", 57 | "Unknown error" : "Unknown error", 58 | "Zammad connected accounts settings" : "Zammad connected accounts settings", 59 | "Ticket#{number}" : "Ticket#{number}", 60 | "by {creator}" : "by {creator}", 61 | "Comments" : "Comments", 62 | "internal" : "internal", 63 | "Click to expand comment" : "Click to expand comment" 64 | }, 65 | "nplurals=2; plural=(n != 1);"); 66 | -------------------------------------------------------------------------------- /l10n/en_GB.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Error getting OAuth access token.", 4 | "Error during OAuth exchanges" : "Error during OAuth exchanges", 5 | "Zammad notifications" : "Zammad notifications", 6 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["You have %n open ticket in Zammad.","You have %n open tickets in Zammad."], 7 | "Zammad tickets" : "Zammad tickets", 8 | "closed %1$s" : "closed %1$s", 9 | "updated %1$s" : "updated %1$s", 10 | "Bad HTTP method" : "Bad HTTP method", 11 | "Bad credentials" : "Bad credentials", 12 | "OAuth access token refused" : "OAuth access token refused", 13 | "Connected accounts" : "Connected accounts", 14 | "Zammad integration" : "Zammad integration", 15 | "Integration of Zammad user support/ticketing solution" : "Integration of Zammad user support/ticketing solution", 16 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets.", 17 | "Zammad admin options saved" : "Zammad admin options saved", 18 | "Failed to save Zammad admin options" : "Failed to save Zammad admin options", 19 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below.", 20 | "Make sure you set the \"Callback URL\" to" : "Make sure you set the \"Callback URL\" to", 21 | "Zammad instance address" : "Zammad instance address", 22 | "Zammad address" : "Zammad address", 23 | "Application ID" : "Application ID", 24 | "ID of your application" : "ID of your application", 25 | "Application secret" : "Application secret", 26 | "Client secret of your application" : "Client secret of your application", 27 | "Enable Zammad link previews" : "Enable Zammad link previews", 28 | "Successfully connected to Zammad!" : "Successfully connected to Zammad!", 29 | "OAuth access token could not be obtained:" : "OAuth access token could not be obtained:", 30 | "Zammad options saved" : "Zammad options saved", 31 | "Incorrect access token" : "Incorrect access token", 32 | "Failed to save Zammad options" : "Failed to save Zammad options", 33 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page.", 34 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions.", 35 | "https://my.zammad.org" : "https://my.zammad.org", 36 | "Access token" : "Access token", 37 | "Zammad access token" : "Zammad access token", 38 | "Connect to Zammad" : "Connect to Zammad", 39 | "Connected as {user}" : "Connected as {user}", 40 | "Disconnect from Zammad" : "Disconnect from Zammad", 41 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Warning, everything you type in the search bar will be sent to your Zammad instance.", 42 | "Enable unified search for tickets" : "Enable unified search for tickets", 43 | "Enable notifications for open tickets" : "Enable notifications for open tickets", 44 | "Enable navigation link" : "Enable navigation link", 45 | "No Zammad account connected" : "No Zammad account connected", 46 | "Error connecting to Zammad" : "Error connecting to Zammad", 47 | "No Zammad notifications!" : "No Zammad notifications!", 48 | "Failed to get Zammad notifications" : "Failed to get Zammad notifications", 49 | "Account manager" : "Account manager", 50 | "Subscription ends" : "Subscription ends", 51 | "created {relativeDate}" : "created {relativeDate}", 52 | "closed {relativeDate}" : "closed {relativeDate}", 53 | "updated {relativeDate}" : "updated {relativeDate}", 54 | "Zammad API error" : "Zammad API error", 55 | "Unknown error" : "Unknown error", 56 | "Zammad connected accounts settings" : "Zammad connected accounts settings", 57 | "Ticket#{number}" : "Ticket#{number}", 58 | "by {creator}" : "by {creator}", 59 | "Comments" : "Comments", 60 | "internal" : "internal", 61 | "Click to expand comment" : "Click to expand comment" 62 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 63 | } -------------------------------------------------------------------------------- /l10n/et_EE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "closed %1$s" : "suletud %1$s", 5 | "updated %1$s" : "uuendatud %1$s", 6 | "Bad HTTP method" : "Vigane HTTP-meetod", 7 | "Bad credentials" : "Vale kasutajanimi, salasõna või tunnusluba", 8 | "Connected accounts" : "Ühendatud kasutajakontod", 9 | "Application ID" : "Rakenduse tunnus", 10 | "Application secret" : "Rakenduse saladus", 11 | "Access token" : "Tunnusluba", 12 | "Connected as {user}" : "Ühendatud kui {user}", 13 | "Account manager" : "Kliendihaldur", 14 | "created {relativeDate}" : "loodud {relativeDate}", 15 | "closed {relativeDate}" : "suletud {relativeDate}", 16 | "updated {relativeDate}" : "uuendatud {relativeDate}", 17 | "Unknown error" : "Tundmatu viga", 18 | "by {creator}" : "kasutajalt {creator}", 19 | "Comments" : "Kommentaarid" 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/et_EE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "closed %1$s" : "suletud %1$s", 3 | "updated %1$s" : "uuendatud %1$s", 4 | "Bad HTTP method" : "Vigane HTTP-meetod", 5 | "Bad credentials" : "Vale kasutajanimi, salasõna või tunnusluba", 6 | "Connected accounts" : "Ühendatud kasutajakontod", 7 | "Application ID" : "Rakenduse tunnus", 8 | "Application secret" : "Rakenduse saladus", 9 | "Access token" : "Tunnusluba", 10 | "Connected as {user}" : "Ühendatud kui {user}", 11 | "Account manager" : "Kliendihaldur", 12 | "created {relativeDate}" : "loodud {relativeDate}", 13 | "closed {relativeDate}" : "suletud {relativeDate}", 14 | "updated {relativeDate}" : "uuendatud {relativeDate}", 15 | "Unknown error" : "Tundmatu viga", 16 | "by {creator}" : "kasutajalt {creator}", 17 | "Comments" : "Kommentaarid" 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/fa.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "خطا در دریافت نشانه دسترسی OAuth.", 6 | "Error during OAuth exchanges" : "خطا در هنگام تبادل OAuth", 7 | "Zammad notifications" : "Zammad notifications", 8 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["You have %n open ticket in Zammad.","You have %n open tickets in Zammad."], 9 | "Zammad tickets" : "Zammad tickets", 10 | "closed %1$s" : "closed %1$s", 11 | "updated %1$s" : "updated %1$s", 12 | "Bad HTTP method" : "روش HTTP بد", 13 | "Bad credentials" : "اعتبارنامه بد", 14 | "OAuth access token refused" : "نشانه دسترسی OAuth رد شد", 15 | "Connected accounts" : "حساب‌های متصل", 16 | "Zammad integration" : "Zammad integration", 17 | "Integration of Zammad user support/ticketing solution" : "Integration of Zammad user support/ticketing solution", 18 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets.", 19 | "Zammad admin options saved" : "Zammad admin options saved", 20 | "Failed to save Zammad admin options" : "Failed to save Zammad admin options", 21 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below.", 22 | "Make sure you set the \"Callback URL\" to" : "Make sure you set the \"Callback URL\" to", 23 | "Zammad instance address" : "Zammad instance address", 24 | "Zammad address" : "Zammad address", 25 | "Application ID" : "Application ID", 26 | "ID of your application" : "شناسه درخواست شما", 27 | "Application secret" : "Application secret", 28 | "Client secret of your application" : "Client secret of your application", 29 | "Enable Zammad link previews" : "Enable Zammad link previews", 30 | "Successfully connected to Zammad!" : "Successfully connected to Zammad!", 31 | "OAuth access token could not be obtained:" : "نشانه دسترسی OAuth بدست نیامد:", 32 | "Zammad options saved" : "Zammad options saved", 33 | "Incorrect access token" : "Incorrect access token", 34 | "Failed to save Zammad options" : "Failed to save Zammad options", 35 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions.", 36 | "https://my.zammad.org" : "https://my.zammad.org", 37 | "Access token" : "Access token", 38 | "Zammad access token" : "Zammad access token", 39 | "Connect to Zammad" : "Connect to Zammad", 40 | "Connected as {user}" : "متصل به عنوان {user}", 41 | "Disconnect from Zammad" : "Disconnect from Zammad", 42 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Warning, everything you type in the search bar will be sent to your Zammad instance.", 43 | "Enable unified search for tickets" : "جستجوی یکپارچه برای بلیط ها را فعال کنید", 44 | "Enable notifications for open tickets" : "اعلان‌ها را برای بلیط‌های باز فعال کنید", 45 | "Enable navigation link" : "Enable navigation link", 46 | "No Zammad account connected" : "No Zammad account connected", 47 | "Error connecting to Zammad" : "Error connecting to Zammad", 48 | "No Zammad notifications!" : "No Zammad notifications!", 49 | "Failed to get Zammad notifications" : "Failed to get Zammad notifications", 50 | "Account manager" : "Account manager", 51 | "Subscription ends" : "Subscription ends", 52 | "created {relativeDate}" : "created {relativeDate}", 53 | "closed {relativeDate}" : "closed {relativeDate}", 54 | "updated {relativeDate}" : "updated {relativeDate}", 55 | "Zammad API error" : "Zammad API error", 56 | "Unknown error" : "خطای ناشناخته", 57 | "Ticket#{number}" : "Ticket#{number}", 58 | "by {creator}" : "by {creator}", 59 | "Comments" : "نظرات", 60 | "internal" : "internal", 61 | "Click to expand comment" : "Click to expand comment" 62 | }, 63 | "nplurals=2; plural=(n > 1);"); 64 | -------------------------------------------------------------------------------- /l10n/fa.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "خطا در دریافت نشانه دسترسی OAuth.", 4 | "Error during OAuth exchanges" : "خطا در هنگام تبادل OAuth", 5 | "Zammad notifications" : "Zammad notifications", 6 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["You have %n open ticket in Zammad.","You have %n open tickets in Zammad."], 7 | "Zammad tickets" : "Zammad tickets", 8 | "closed %1$s" : "closed %1$s", 9 | "updated %1$s" : "updated %1$s", 10 | "Bad HTTP method" : "روش HTTP بد", 11 | "Bad credentials" : "اعتبارنامه بد", 12 | "OAuth access token refused" : "نشانه دسترسی OAuth رد شد", 13 | "Connected accounts" : "حساب‌های متصل", 14 | "Zammad integration" : "Zammad integration", 15 | "Integration of Zammad user support/ticketing solution" : "Integration of Zammad user support/ticketing solution", 16 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets.", 17 | "Zammad admin options saved" : "Zammad admin options saved", 18 | "Failed to save Zammad admin options" : "Failed to save Zammad admin options", 19 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below.", 20 | "Make sure you set the \"Callback URL\" to" : "Make sure you set the \"Callback URL\" to", 21 | "Zammad instance address" : "Zammad instance address", 22 | "Zammad address" : "Zammad address", 23 | "Application ID" : "Application ID", 24 | "ID of your application" : "شناسه درخواست شما", 25 | "Application secret" : "Application secret", 26 | "Client secret of your application" : "Client secret of your application", 27 | "Enable Zammad link previews" : "Enable Zammad link previews", 28 | "Successfully connected to Zammad!" : "Successfully connected to Zammad!", 29 | "OAuth access token could not be obtained:" : "نشانه دسترسی OAuth بدست نیامد:", 30 | "Zammad options saved" : "Zammad options saved", 31 | "Incorrect access token" : "Incorrect access token", 32 | "Failed to save Zammad options" : "Failed to save Zammad options", 33 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions.", 34 | "https://my.zammad.org" : "https://my.zammad.org", 35 | "Access token" : "Access token", 36 | "Zammad access token" : "Zammad access token", 37 | "Connect to Zammad" : "Connect to Zammad", 38 | "Connected as {user}" : "متصل به عنوان {user}", 39 | "Disconnect from Zammad" : "Disconnect from Zammad", 40 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Warning, everything you type in the search bar will be sent to your Zammad instance.", 41 | "Enable unified search for tickets" : "جستجوی یکپارچه برای بلیط ها را فعال کنید", 42 | "Enable notifications for open tickets" : "اعلان‌ها را برای بلیط‌های باز فعال کنید", 43 | "Enable navigation link" : "Enable navigation link", 44 | "No Zammad account connected" : "No Zammad account connected", 45 | "Error connecting to Zammad" : "Error connecting to Zammad", 46 | "No Zammad notifications!" : "No Zammad notifications!", 47 | "Failed to get Zammad notifications" : "Failed to get Zammad notifications", 48 | "Account manager" : "Account manager", 49 | "Subscription ends" : "Subscription ends", 50 | "created {relativeDate}" : "created {relativeDate}", 51 | "closed {relativeDate}" : "closed {relativeDate}", 52 | "updated {relativeDate}" : "updated {relativeDate}", 53 | "Zammad API error" : "Zammad API error", 54 | "Unknown error" : "خطای ناشناخته", 55 | "Ticket#{number}" : "Ticket#{number}", 56 | "by {creator}" : "by {creator}", 57 | "Comments" : "نظرات", 58 | "internal" : "internal", 59 | "Click to expand comment" : "Click to expand comment" 60 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 61 | } -------------------------------------------------------------------------------- /l10n/fi.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Virhe haettaessa OAuth-käyttöpolettia.", 6 | "Error during OAuth exchanges" : "Virhe OAuth-tunnistautumisessa", 7 | "Zammad notifications" : "Zammad-ilmoitukset", 8 | "Bad HTTP method" : "Virheellinen HTTP-metodi", 9 | "Bad credentials" : "Virheelliset kirjautumistiedot", 10 | "OAuth access token refused" : "OAuth-valtuutus hylätty", 11 | "Connected accounts" : "Yhdistetyt tilit", 12 | "Zammad integration" : "Zammad-integraatio", 13 | "Zammad instance address" : "Zammad-instanssin osoite", 14 | "Zammad address" : "Zammad-osoite", 15 | "Application ID" : "Sovelluksen ID", 16 | "Application secret" : "Sovelluksen salaisuus", 17 | "Incorrect access token" : "Virheellinen käyttöpoletti", 18 | "Access token" : "Käyttöpoletti", 19 | "Zammad access token" : "Zammad-käyttöpoletti", 20 | "Connect to Zammad" : "Yhdistä Zammadiin", 21 | "Connected as {user}" : "Yhdistetty käyttäjänä {user}", 22 | "Disconnect from Zammad" : "Katkaise yhteys Zammadiin", 23 | "Enable navigation link" : "Näytä navigointipalkissa", 24 | "No Zammad account connected" : "Zammad-tiliä ei ole yhdistetty", 25 | "Error connecting to Zammad" : "Virhe yhdistäessä Zammadiin", 26 | "No Zammad notifications!" : "Ei Zammad-ilmoituksia!", 27 | "Account manager" : "Asiakkuuspäällikkö", 28 | "created {relativeDate}" : "luotu {relativeDate}", 29 | "closed {relativeDate}" : "suljettu {relativeDate}", 30 | "updated {relativeDate}" : "päivitetty {relativeDate}", 31 | "Unknown error" : "Tuntematon virhe", 32 | "by {creator}" : "tehnyt {creator}", 33 | "Comments" : "Kommentit", 34 | "Click to expand comment" : "Napsauta laajentaaksesi kommentin" 35 | }, 36 | "nplurals=2; plural=(n != 1);"); 37 | -------------------------------------------------------------------------------- /l10n/fi.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Virhe haettaessa OAuth-käyttöpolettia.", 4 | "Error during OAuth exchanges" : "Virhe OAuth-tunnistautumisessa", 5 | "Zammad notifications" : "Zammad-ilmoitukset", 6 | "Bad HTTP method" : "Virheellinen HTTP-metodi", 7 | "Bad credentials" : "Virheelliset kirjautumistiedot", 8 | "OAuth access token refused" : "OAuth-valtuutus hylätty", 9 | "Connected accounts" : "Yhdistetyt tilit", 10 | "Zammad integration" : "Zammad-integraatio", 11 | "Zammad instance address" : "Zammad-instanssin osoite", 12 | "Zammad address" : "Zammad-osoite", 13 | "Application ID" : "Sovelluksen ID", 14 | "Application secret" : "Sovelluksen salaisuus", 15 | "Incorrect access token" : "Virheellinen käyttöpoletti", 16 | "Access token" : "Käyttöpoletti", 17 | "Zammad access token" : "Zammad-käyttöpoletti", 18 | "Connect to Zammad" : "Yhdistä Zammadiin", 19 | "Connected as {user}" : "Yhdistetty käyttäjänä {user}", 20 | "Disconnect from Zammad" : "Katkaise yhteys Zammadiin", 21 | "Enable navigation link" : "Näytä navigointipalkissa", 22 | "No Zammad account connected" : "Zammad-tiliä ei ole yhdistetty", 23 | "Error connecting to Zammad" : "Virhe yhdistäessä Zammadiin", 24 | "No Zammad notifications!" : "Ei Zammad-ilmoituksia!", 25 | "Account manager" : "Asiakkuuspäällikkö", 26 | "created {relativeDate}" : "luotu {relativeDate}", 27 | "closed {relativeDate}" : "suljettu {relativeDate}", 28 | "updated {relativeDate}" : "päivitetty {relativeDate}", 29 | "Unknown error" : "Tuntematon virhe", 30 | "by {creator}" : "tehnyt {creator}", 31 | "Comments" : "Kommentit", 32 | "Click to expand comment" : "Napsauta laajentaaksesi kommentin" 33 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 34 | } -------------------------------------------------------------------------------- /l10n/he.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error getting OAuth access token." : "שגיאה בקבלת אסימון גישה מסוג OAuth.", 5 | "Error during OAuth exchanges" : "שגיאה במהלך החלפות OAuth", 6 | "Bad HTTP method" : "שגיאה במתודת HTTP", 7 | "Bad credentials" : "פרטי גישה שגויים", 8 | "OAuth access token refused" : "אסימון הגישה ב־OAuth סורב", 9 | "Connected accounts" : "חשבונות מקושרים", 10 | "Incorrect access token" : "אסימון הגישה שגוי", 11 | "Enable navigation link" : "הפעלת קישור ניווט", 12 | "Unknown error" : "שגיאה בלתי ידועה", 13 | "Comments" : "תגובות" 14 | }, 15 | "nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"); 16 | -------------------------------------------------------------------------------- /l10n/he.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error getting OAuth access token." : "שגיאה בקבלת אסימון גישה מסוג OAuth.", 3 | "Error during OAuth exchanges" : "שגיאה במהלך החלפות OAuth", 4 | "Bad HTTP method" : "שגיאה במתודת HTTP", 5 | "Bad credentials" : "פרטי גישה שגויים", 6 | "OAuth access token refused" : "אסימון הגישה ב־OAuth סורב", 7 | "Connected accounts" : "חשבונות מקושרים", 8 | "Incorrect access token" : "אסימון הגישה שגוי", 9 | "Enable navigation link" : "הפעלת קישור ניווט", 10 | "Unknown error" : "שגיאה בלתי ידועה", 11 | "Comments" : "תגובות" 12 | },"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;" 13 | } -------------------------------------------------------------------------------- /l10n/hr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Pogreška pri dohvaćanju tokena za pristup OAuth.", 6 | "Error during OAuth exchanges" : "Pogreška tijekom razmjene radi autentifikacije OAuth", 7 | "Zammad notifications" : "Zammad obavijesti", 8 | "Bad HTTP method" : "Pogrešna metoda HTTP-a", 9 | "Bad credentials" : "Pogrešne vjerodajnice", 10 | "OAuth access token refused" : "Odbijen token za pristup OAuth", 11 | "Connected accounts" : "Povezani računi", 12 | "Zammad integration" : "Zammad integracija", 13 | "Integration of Zammad user support/ticketing solution" : "Integracija rješenja za podršku korisnicima / upravljanje problemima Zammad", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Integracija sa sustavom Zammad omogućuje stavljanje widgeta na nadzornu ploču koji prikazuje važne obavijesti,\n\tpretraživač prijavljenih problema i obavijesti o novootvorenim prijavama.", 15 | "Zammad admin options saved" : "Administratorske postavke Zammada su spremljene", 16 | "Failed to save Zammad admin options" : "Spremanje administratorskih postavki Zammada nije uspjelo", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Ako svojim korisnicima Nextclouda želite omogućiti autentifikaciju u instancu Zammada putem aplikacije OAuth, stvorite aplikaciju u administratorskim postavkama sustava Zammad i unesite ID (AppId) i tajni ključ u nastavku.", 18 | "Make sure you set the \"Callback URL\" to" : "Obavezno postavite „URL povratnog poziva“ na", 19 | "Zammad instance address" : "Adresa instance Zammada", 20 | "Zammad address" : "Adresa Zammada", 21 | "Application ID" : "ID aplikacije", 22 | "ID of your application" : "ID vaše aplikacije", 23 | "Application secret" : "Tajni ključ aplikacije", 24 | "Client secret of your application" : "Tajni ključ klijenta vaše aplikacije", 25 | "Successfully connected to Zammad!" : "Uspješno povezivanje sa Zammadom!", 26 | "OAuth access token could not be obtained:" : "Nije moguće dohvatiti token za pristup OAuth:", 27 | "Zammad options saved" : "Postavke Zammada su spremljene", 28 | "Incorrect access token" : "Pogrešan token za pristup", 29 | "Failed to save Zammad options" : "Spremanje postavki Zammada nije uspjelo", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Kako biste sami stvorili token za pristup idite na odjeljak „Pristup tokenima“ na stranici svojeg profila na Zammadu.", 31 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Stvorite „Osobni token za pristup“ i dodijelite mu dopuštenja „TICKET -> AGENT“, „ADMIN -> OBJECT“ i „USER_PREFERENCES -> NOTIFICATIONS“.", 32 | "https://my.zammad.org" : "https://my.zammad.org", 33 | "Access token" : "Token za pristup", 34 | "Zammad access token" : "Zammad token za pristup", 35 | "Connect to Zammad" : "Poveži se sa Zammadom", 36 | "Connected as {user}" : "Povezan kao {user}", 37 | "Disconnect from Zammad" : "Odspoji se sa Zammada", 38 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Upozorenje, sve što upišete u traku za pretraživanje bit će poslano vašoj instanci Zammada.", 39 | "Enable unified search for tickets" : "Omogući objedinjeno pretraživanje prijava", 40 | "Enable notifications for open tickets" : "Omogući obavijesti za otvorene prijave", 41 | "Enable navigation link" : "Omogući navigacijsku poveznicu", 42 | "No Zammad account connected" : "Nema povezanih Zammad računa", 43 | "Error connecting to Zammad" : "Pogreška pri povezivanju sa Zammadom", 44 | "No Zammad notifications!" : "Nema Zammad obavijesti!", 45 | "Failed to get Zammad notifications" : "Dohvaćanje Zammad obavijesti nije uspjelo", 46 | "Unknown error" : "Nepoznata pogreška", 47 | "Comments" : "Komentari" 48 | }, 49 | "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); 50 | -------------------------------------------------------------------------------- /l10n/hr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Pogreška pri dohvaćanju tokena za pristup OAuth.", 4 | "Error during OAuth exchanges" : "Pogreška tijekom razmjene radi autentifikacije OAuth", 5 | "Zammad notifications" : "Zammad obavijesti", 6 | "Bad HTTP method" : "Pogrešna metoda HTTP-a", 7 | "Bad credentials" : "Pogrešne vjerodajnice", 8 | "OAuth access token refused" : "Odbijen token za pristup OAuth", 9 | "Connected accounts" : "Povezani računi", 10 | "Zammad integration" : "Zammad integracija", 11 | "Integration of Zammad user support/ticketing solution" : "Integracija rješenja za podršku korisnicima / upravljanje problemima Zammad", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Integracija sa sustavom Zammad omogućuje stavljanje widgeta na nadzornu ploču koji prikazuje važne obavijesti,\n\tpretraživač prijavljenih problema i obavijesti o novootvorenim prijavama.", 13 | "Zammad admin options saved" : "Administratorske postavke Zammada su spremljene", 14 | "Failed to save Zammad admin options" : "Spremanje administratorskih postavki Zammada nije uspjelo", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Ako svojim korisnicima Nextclouda želite omogućiti autentifikaciju u instancu Zammada putem aplikacije OAuth, stvorite aplikaciju u administratorskim postavkama sustava Zammad i unesite ID (AppId) i tajni ključ u nastavku.", 16 | "Make sure you set the \"Callback URL\" to" : "Obavezno postavite „URL povratnog poziva“ na", 17 | "Zammad instance address" : "Adresa instance Zammada", 18 | "Zammad address" : "Adresa Zammada", 19 | "Application ID" : "ID aplikacije", 20 | "ID of your application" : "ID vaše aplikacije", 21 | "Application secret" : "Tajni ključ aplikacije", 22 | "Client secret of your application" : "Tajni ključ klijenta vaše aplikacije", 23 | "Successfully connected to Zammad!" : "Uspješno povezivanje sa Zammadom!", 24 | "OAuth access token could not be obtained:" : "Nije moguće dohvatiti token za pristup OAuth:", 25 | "Zammad options saved" : "Postavke Zammada su spremljene", 26 | "Incorrect access token" : "Pogrešan token za pristup", 27 | "Failed to save Zammad options" : "Spremanje postavki Zammada nije uspjelo", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Kako biste sami stvorili token za pristup idite na odjeljak „Pristup tokenima“ na stranici svojeg profila na Zammadu.", 29 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Stvorite „Osobni token za pristup“ i dodijelite mu dopuštenja „TICKET -> AGENT“, „ADMIN -> OBJECT“ i „USER_PREFERENCES -> NOTIFICATIONS“.", 30 | "https://my.zammad.org" : "https://my.zammad.org", 31 | "Access token" : "Token za pristup", 32 | "Zammad access token" : "Zammad token za pristup", 33 | "Connect to Zammad" : "Poveži se sa Zammadom", 34 | "Connected as {user}" : "Povezan kao {user}", 35 | "Disconnect from Zammad" : "Odspoji se sa Zammada", 36 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Upozorenje, sve što upišete u traku za pretraživanje bit će poslano vašoj instanci Zammada.", 37 | "Enable unified search for tickets" : "Omogući objedinjeno pretraživanje prijava", 38 | "Enable notifications for open tickets" : "Omogući obavijesti za otvorene prijave", 39 | "Enable navigation link" : "Omogući navigacijsku poveznicu", 40 | "No Zammad account connected" : "Nema povezanih Zammad računa", 41 | "Error connecting to Zammad" : "Pogreška pri povezivanju sa Zammadom", 42 | "No Zammad notifications!" : "Nema Zammad obavijesti!", 43 | "Failed to get Zammad notifications" : "Dohvaćanje Zammad obavijesti nije uspjelo", 44 | "Unknown error" : "Nepoznata pogreška", 45 | "Comments" : "Komentari" 46 | },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" 47 | } -------------------------------------------------------------------------------- /l10n/id.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "Terjadi kesalahan saat penukaran OAuth", 5 | "Bad HTTP method" : "Metode HTTP tidak benar", 6 | "Bad credentials" : "Kredensial tidak benar", 7 | "OAuth access token refused" : "Token akses OAuth ditolak", 8 | "Connected accounts" : "Akun terhubung", 9 | "Application ID" : "ID aplikasi", 10 | "Application secret" : "Rahasia aplikasi", 11 | "Incorrect access token" : "Token akses tidak benar", 12 | "Connected as {user}" : "Terhubung sebagai {user}", 13 | "Enable navigation link" : "Aktifkan tautan navigasi", 14 | "created {relativeDate}" : "dibuat {relativeDate}", 15 | "closed {relativeDate}" : "ditutup {relativeDate}", 16 | "updated {relativeDate}" : "diperbarui {relativeDate}", 17 | "Unknown error" : "Kesalahan tidak diketahui", 18 | "by {creator}" : "oleh {creator}", 19 | "Comments" : "Komentar", 20 | "Click to expand comment" : "Klik untuk membuka komentar" 21 | }, 22 | "nplurals=1; plural=0;"); 23 | -------------------------------------------------------------------------------- /l10n/id.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "Terjadi kesalahan saat penukaran OAuth", 3 | "Bad HTTP method" : "Metode HTTP tidak benar", 4 | "Bad credentials" : "Kredensial tidak benar", 5 | "OAuth access token refused" : "Token akses OAuth ditolak", 6 | "Connected accounts" : "Akun terhubung", 7 | "Application ID" : "ID aplikasi", 8 | "Application secret" : "Rahasia aplikasi", 9 | "Incorrect access token" : "Token akses tidak benar", 10 | "Connected as {user}" : "Terhubung sebagai {user}", 11 | "Enable navigation link" : "Aktifkan tautan navigasi", 12 | "created {relativeDate}" : "dibuat {relativeDate}", 13 | "closed {relativeDate}" : "ditutup {relativeDate}", 14 | "updated {relativeDate}" : "diperbarui {relativeDate}", 15 | "Unknown error" : "Kesalahan tidak diketahui", 16 | "by {creator}" : "oleh {creator}", 17 | "Comments" : "Komentar", 18 | "Click to expand comment" : "Klik untuk membuka komentar" 19 | },"pluralForm" :"nplurals=1; plural=0;" 20 | } -------------------------------------------------------------------------------- /l10n/is.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "Villa í OAuth-samskiptum", 5 | "Bad credentials" : "Gölluð auðkenni", 6 | "OAuth access token refused" : "OAuth-aðgangsteikni hafnað", 7 | "Connected accounts" : "Tengdir aðgangar", 8 | "Incorrect access token" : "Rangt aðgangsteikn", 9 | "Connected as {user}" : "Tengt sem {user}", 10 | "Enable navigation link" : "Virkja flakktengil", 11 | "Unknown error" : "Óþekkt villa", 12 | "Comments" : "Athugasemdir", 13 | "Click to expand comment" : "Smelltu til að fella út athugasemd" 14 | }, 15 | "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); 16 | -------------------------------------------------------------------------------- /l10n/is.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "Villa í OAuth-samskiptum", 3 | "Bad credentials" : "Gölluð auðkenni", 4 | "OAuth access token refused" : "OAuth-aðgangsteikni hafnað", 5 | "Connected accounts" : "Tengdir aðgangar", 6 | "Incorrect access token" : "Rangt aðgangsteikn", 7 | "Connected as {user}" : "Tengt sem {user}", 8 | "Enable navigation link" : "Virkja flakktengil", 9 | "Unknown error" : "Óþekkt villa", 10 | "Comments" : "Athugasemdir", 11 | "Click to expand comment" : "Smelltu til að fella út athugasemd" 12 | },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" 13 | } -------------------------------------------------------------------------------- /l10n/it.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Errore durante il recupero del token di accesso OAuth.", 6 | "Error during OAuth exchanges" : "Errore durante le negoziazioni OAuth", 7 | "Zammad notifications" : "Notifiche Zammad", 8 | "Bad HTTP method" : "Metodo HTTP non corretto", 9 | "Bad credentials" : "Credenziali non valide", 10 | "OAuth access token refused" : "Token di accesso OAuth rifiutato", 11 | "Connected accounts" : "Account connessi", 12 | "Zammad integration" : "Integrazione Zammad", 13 | "Integration of Zammad user support/ticketing solution" : "Integrazione della soluzione di supporto utente/gestione ticket di Zammad", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "L'integrazione di Zammad fornisce un widget del cruscotto che mostra le tue notifiche importanti,\n\tun motore di ricerca per ticket e notifiche per i nuovi ticket aperti.", 15 | "Zammad admin options saved" : "Opzioni amministrative di Zammad salvate", 16 | "Failed to save Zammad admin options" : "Salvataggio delle opzioni amministrative di Zammad non riuscito", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Se desideri consentire ai tuoi utenti Nextcloud di utilizzare OAuth per autenticarsi su un'istanza Zammad, crea un'applicazione nelle impostazioni di amministrazione di Zammad e inserisci l'ID dell'applicazione (AppId) e il segreto di seguito.", 18 | "Make sure you set the \"Callback URL\" to" : "Assicurati di impostare \"URL di callback\" a", 19 | "Zammad instance address" : "Indirizzo istanza Zammad", 20 | "Zammad address" : "Indirizzo Zammad", 21 | "Application ID" : "ID applicazione", 22 | "ID of your application" : "ID della tua applicazione", 23 | "Application secret" : "Segreto applicazione", 24 | "Client secret of your application" : "Segreto del client della tua applicazione", 25 | "Successfully connected to Zammad!" : "Connesso correttamente a Zammad!", 26 | "OAuth access token could not be obtained:" : "Il token di accesso OAuth non può essere ottenuto:", 27 | "Zammad options saved" : "Opzioni di Zammad salvate", 28 | "Incorrect access token" : "Token di accesso non corretto", 29 | "Failed to save Zammad options" : "Salvataggio delle opzioni di Zammad non riuscito", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Per creare tu stesso un token di accesso, vai alla sezione \"Token di accesso\" della pagina del tuo profilo Zammad.", 31 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Crea un \"token di accesso personale\" e dagli i permessi \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" e \"USER_PREFERENCES -> NOTIFICATIONS\".", 32 | "https://my.zammad.org" : "https://mio.zammad.org", 33 | "Access token" : "Token di accesso", 34 | "Zammad access token" : "Token di accesso di Zammad", 35 | "Connect to Zammad" : "Connetti a Zammad", 36 | "Connected as {user}" : "Connesso come {user}", 37 | "Disconnect from Zammad" : "Disconnetti da Zammad", 38 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Avviso, tutto ciò che digiti nella barra di ricerca sarà inviato alla tua istanza Zammad.", 39 | "Enable unified search for tickets" : "Abilita la ricerca unificata dei ticket", 40 | "Enable notifications for open tickets" : "Abilita le notifiche per i ticket aperti", 41 | "Enable navigation link" : "Abilita collegamento di navigazione", 42 | "No Zammad account connected" : "Nessun account Zammad connesso", 43 | "Error connecting to Zammad" : "Errore durante la connessione a Zammad", 44 | "No Zammad notifications!" : "Nessuna notifica Zammad!", 45 | "Failed to get Zammad notifications" : "Impossibile ricevere le notifiche di Zammad", 46 | "Unknown error" : "Errore sconosciuto", 47 | "Ticket#{number}" : "Biglietto#{number}", 48 | "Comments" : "Commenti", 49 | "internal" : "interno", 50 | "Click to expand comment" : "Fai clic per espandere il commento" 51 | }, 52 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 53 | -------------------------------------------------------------------------------- /l10n/it.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Errore durante il recupero del token di accesso OAuth.", 4 | "Error during OAuth exchanges" : "Errore durante le negoziazioni OAuth", 5 | "Zammad notifications" : "Notifiche Zammad", 6 | "Bad HTTP method" : "Metodo HTTP non corretto", 7 | "Bad credentials" : "Credenziali non valide", 8 | "OAuth access token refused" : "Token di accesso OAuth rifiutato", 9 | "Connected accounts" : "Account connessi", 10 | "Zammad integration" : "Integrazione Zammad", 11 | "Integration of Zammad user support/ticketing solution" : "Integrazione della soluzione di supporto utente/gestione ticket di Zammad", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "L'integrazione di Zammad fornisce un widget del cruscotto che mostra le tue notifiche importanti,\n\tun motore di ricerca per ticket e notifiche per i nuovi ticket aperti.", 13 | "Zammad admin options saved" : "Opzioni amministrative di Zammad salvate", 14 | "Failed to save Zammad admin options" : "Salvataggio delle opzioni amministrative di Zammad non riuscito", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Se desideri consentire ai tuoi utenti Nextcloud di utilizzare OAuth per autenticarsi su un'istanza Zammad, crea un'applicazione nelle impostazioni di amministrazione di Zammad e inserisci l'ID dell'applicazione (AppId) e il segreto di seguito.", 16 | "Make sure you set the \"Callback URL\" to" : "Assicurati di impostare \"URL di callback\" a", 17 | "Zammad instance address" : "Indirizzo istanza Zammad", 18 | "Zammad address" : "Indirizzo Zammad", 19 | "Application ID" : "ID applicazione", 20 | "ID of your application" : "ID della tua applicazione", 21 | "Application secret" : "Segreto applicazione", 22 | "Client secret of your application" : "Segreto del client della tua applicazione", 23 | "Successfully connected to Zammad!" : "Connesso correttamente a Zammad!", 24 | "OAuth access token could not be obtained:" : "Il token di accesso OAuth non può essere ottenuto:", 25 | "Zammad options saved" : "Opzioni di Zammad salvate", 26 | "Incorrect access token" : "Token di accesso non corretto", 27 | "Failed to save Zammad options" : "Salvataggio delle opzioni di Zammad non riuscito", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Per creare tu stesso un token di accesso, vai alla sezione \"Token di accesso\" della pagina del tuo profilo Zammad.", 29 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Crea un \"token di accesso personale\" e dagli i permessi \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" e \"USER_PREFERENCES -> NOTIFICATIONS\".", 30 | "https://my.zammad.org" : "https://mio.zammad.org", 31 | "Access token" : "Token di accesso", 32 | "Zammad access token" : "Token di accesso di Zammad", 33 | "Connect to Zammad" : "Connetti a Zammad", 34 | "Connected as {user}" : "Connesso come {user}", 35 | "Disconnect from Zammad" : "Disconnetti da Zammad", 36 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Avviso, tutto ciò che digiti nella barra di ricerca sarà inviato alla tua istanza Zammad.", 37 | "Enable unified search for tickets" : "Abilita la ricerca unificata dei ticket", 38 | "Enable notifications for open tickets" : "Abilita le notifiche per i ticket aperti", 39 | "Enable navigation link" : "Abilita collegamento di navigazione", 40 | "No Zammad account connected" : "Nessun account Zammad connesso", 41 | "Error connecting to Zammad" : "Errore durante la connessione a Zammad", 42 | "No Zammad notifications!" : "Nessuna notifica Zammad!", 43 | "Failed to get Zammad notifications" : "Impossibile ricevere le notifiche di Zammad", 44 | "Unknown error" : "Errore sconosciuto", 45 | "Ticket#{number}" : "Biglietto#{number}", 46 | "Comments" : "Commenti", 47 | "internal" : "interno", 48 | "Click to expand comment" : "Fai clic per espandere il commento" 49 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 50 | } -------------------------------------------------------------------------------- /l10n/ja.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "OAuth通信中のエラー", 5 | "Zammad notifications" : "Zammad通知", 6 | "Bad HTTP method" : "不正なHTTPメソッド", 7 | "Bad credentials" : "不正な資格情報", 8 | "OAuth access token refused" : "OAuthアクセストークンが拒否されました", 9 | "Connected accounts" : "接続済みアカウント", 10 | "Zammad address" : "Zammadアドレス", 11 | "Application ID" : "アプリケーション ID", 12 | "Application secret" : "アプリケーションシークレット", 13 | "Incorrect access token" : "正しくないアクセストークン", 14 | "Access token" : "アクセストークン", 15 | "Connect to Zammad" : "Zammadに接続", 16 | "Connected as {user}" : "{user} を接続済み", 17 | "Enable navigation link" : "ナビゲーションリンクを有効化", 18 | "No Zammad account connected" : "接続済みZammadアカウントがありません", 19 | "No Zammad notifications!" : "Zammad通知がありません!", 20 | "Account manager" : "アカウント管理者", 21 | "Unknown error" : "不明なエラー", 22 | "Comments" : "コメント", 23 | "Click to expand comment" : "コメントを展開するにはクリックしてください" 24 | }, 25 | "nplurals=1; plural=0;"); 26 | -------------------------------------------------------------------------------- /l10n/ja.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "OAuth通信中のエラー", 3 | "Zammad notifications" : "Zammad通知", 4 | "Bad HTTP method" : "不正なHTTPメソッド", 5 | "Bad credentials" : "不正な資格情報", 6 | "OAuth access token refused" : "OAuthアクセストークンが拒否されました", 7 | "Connected accounts" : "接続済みアカウント", 8 | "Zammad address" : "Zammadアドレス", 9 | "Application ID" : "アプリケーション ID", 10 | "Application secret" : "アプリケーションシークレット", 11 | "Incorrect access token" : "正しくないアクセストークン", 12 | "Access token" : "アクセストークン", 13 | "Connect to Zammad" : "Zammadに接続", 14 | "Connected as {user}" : "{user} を接続済み", 15 | "Enable navigation link" : "ナビゲーションリンクを有効化", 16 | "No Zammad account connected" : "接続済みZammadアカウントがありません", 17 | "No Zammad notifications!" : "Zammad通知がありません!", 18 | "Account manager" : "アカウント管理者", 19 | "Unknown error" : "不明なエラー", 20 | "Comments" : "コメント", 21 | "Click to expand comment" : "コメントを展開するにはクリックしてください" 22 | },"pluralForm" :"nplurals=1; plural=0;" 23 | } -------------------------------------------------------------------------------- /l10n/ka.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Unknown error" : "Unknown error", 5 | "Comments" : "Comments", 6 | "Click to expand comment" : "Click to expand comment" 7 | }, 8 | "nplurals=2; plural=(n!=1);"); 9 | -------------------------------------------------------------------------------- /l10n/ka.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Unknown error" : "Unknown error", 3 | "Comments" : "Comments", 4 | "Click to expand comment" : "Click to expand comment" 5 | },"pluralForm" :"nplurals=2; plural=(n!=1);" 6 | } -------------------------------------------------------------------------------- /l10n/ko.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "OAuth 교환 중 오류가 발생했습니다.", 5 | "Bad HTTP method" : "옳지 않은 HTTP 메소드", 6 | "Bad credentials" : "잘못된 자격 증명", 7 | "OAuth access token refused" : "OAuth 액세스 토큰 거부됨", 8 | "Connected accounts" : "계정 연결됨", 9 | "Application ID" : "애플리케이션 ID", 10 | "OAuth access token could not be obtained:" : "OAuth 접근 토큰을 얻을 수 없었습니다: ", 11 | "Incorrect access token" : "잘못된 액세스 토큰", 12 | "Access token" : "접근 토큰", 13 | "Connected as {user}" : "[user]로 연결됨", 14 | "No Zammad account connected" : "연결된 Zammad 계정이 없음", 15 | "Account manager" : "계정 관리자", 16 | "Unknown error" : "알 수 없는 오류", 17 | "Comments" : "댓글", 18 | "Click to expand comment" : "댓글을 더 보려면 클릭하세요." 19 | }, 20 | "nplurals=1; plural=0;"); 21 | -------------------------------------------------------------------------------- /l10n/ko.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "OAuth 교환 중 오류가 발생했습니다.", 3 | "Bad HTTP method" : "옳지 않은 HTTP 메소드", 4 | "Bad credentials" : "잘못된 자격 증명", 5 | "OAuth access token refused" : "OAuth 액세스 토큰 거부됨", 6 | "Connected accounts" : "계정 연결됨", 7 | "Application ID" : "애플리케이션 ID", 8 | "OAuth access token could not be obtained:" : "OAuth 접근 토큰을 얻을 수 없었습니다: ", 9 | "Incorrect access token" : "잘못된 액세스 토큰", 10 | "Access token" : "접근 토큰", 11 | "Connected as {user}" : "[user]로 연결됨", 12 | "No Zammad account connected" : "연결된 Zammad 계정이 없음", 13 | "Account manager" : "계정 관리자", 14 | "Unknown error" : "알 수 없는 오류", 15 | "Comments" : "댓글", 16 | "Click to expand comment" : "댓글을 더 보려면 클릭하세요." 17 | },"pluralForm" :"nplurals=1; plural=0;" 18 | } -------------------------------------------------------------------------------- /l10n/lt_LT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "„Zammad“", 5 | "Error getting OAuth access token." : "Klaida gaunant „OAuth“ prieigos raktą.", 6 | "Error during OAuth exchanges" : "Klaida „OAuth“ apsikeitimo metu", 7 | "Zammad notifications" : "„Zammad“ pranešimai", 8 | "Bad HTTP method" : "Blogas HTTP metodas", 9 | "Bad credentials" : "Blogi prisijungimo duomenys", 10 | "OAuth access token refused" : "„OAuth“ prieigos raktas atmestas", 11 | "Connected accounts" : "Prijungtos paskyros", 12 | "Zammad integration" : "„Zammad“ integracija", 13 | "Zammad instance address" : "„Zammad“ egzemplioriaus adresas", 14 | "Zammad address" : "„Zammad“ adresas", 15 | "Application ID" : "Programos ID", 16 | "ID of your application" : "Jūsų programos ID", 17 | "Application secret" : "Programos paslaptis", 18 | "Successfully connected to Zammad!" : "Sėkmingai prisijungta prie „Zammad“!", 19 | "Zammad options saved" : "„Zammad“ parinktys įrašytos", 20 | "Failed to save Zammad options" : "Nepavyko įrašyti „Zammad“ parinkčių", 21 | "https://my.zammad.org" : "https://my.zammad.org", 22 | "Connect to Zammad" : "Prisijungti prie „Zammad“", 23 | "Connected as {user}" : "Prisijungta kaip {user}", 24 | "Disconnect from Zammad" : "Atsijungti nuo „Zammad“", 25 | "No Zammad account connected" : "Neprijungta jokia „Zammad“ paskyra", 26 | "Error connecting to Zammad" : "Klaida jungiantis prie „Zammad“", 27 | "No Zammad notifications!" : "Nėra „Zammad“ pranešimų!", 28 | "Failed to get Zammad notifications" : "Nepavyko gauti „Zammad“ pranešimų", 29 | "Unknown error" : "Nežinoma klaida", 30 | "Comments" : "Komentarai", 31 | "Click to expand comment" : "Spustelėkite norėdami išskleisti komentarą" 32 | }, 33 | "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); 34 | -------------------------------------------------------------------------------- /l10n/lt_LT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "„Zammad“", 3 | "Error getting OAuth access token." : "Klaida gaunant „OAuth“ prieigos raktą.", 4 | "Error during OAuth exchanges" : "Klaida „OAuth“ apsikeitimo metu", 5 | "Zammad notifications" : "„Zammad“ pranešimai", 6 | "Bad HTTP method" : "Blogas HTTP metodas", 7 | "Bad credentials" : "Blogi prisijungimo duomenys", 8 | "OAuth access token refused" : "„OAuth“ prieigos raktas atmestas", 9 | "Connected accounts" : "Prijungtos paskyros", 10 | "Zammad integration" : "„Zammad“ integracija", 11 | "Zammad instance address" : "„Zammad“ egzemplioriaus adresas", 12 | "Zammad address" : "„Zammad“ adresas", 13 | "Application ID" : "Programos ID", 14 | "ID of your application" : "Jūsų programos ID", 15 | "Application secret" : "Programos paslaptis", 16 | "Successfully connected to Zammad!" : "Sėkmingai prisijungta prie „Zammad“!", 17 | "Zammad options saved" : "„Zammad“ parinktys įrašytos", 18 | "Failed to save Zammad options" : "Nepavyko įrašyti „Zammad“ parinkčių", 19 | "https://my.zammad.org" : "https://my.zammad.org", 20 | "Connect to Zammad" : "Prisijungti prie „Zammad“", 21 | "Connected as {user}" : "Prisijungta kaip {user}", 22 | "Disconnect from Zammad" : "Atsijungti nuo „Zammad“", 23 | "No Zammad account connected" : "Neprijungta jokia „Zammad“ paskyra", 24 | "Error connecting to Zammad" : "Klaida jungiantis prie „Zammad“", 25 | "No Zammad notifications!" : "Nėra „Zammad“ pranešimų!", 26 | "Failed to get Zammad notifications" : "Nepavyko gauti „Zammad“ pranešimų", 27 | "Unknown error" : "Nežinoma klaida", 28 | "Comments" : "Komentarai", 29 | "Click to expand comment" : "Spustelėkite norėdami išskleisti komentarą" 30 | },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" 31 | } -------------------------------------------------------------------------------- /l10n/lv.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Bad HTTP method" : "Nederīgs HTTP pieprasījuma veids", 5 | "Bad credentials" : "Nederīgi pieteikšanās dati", 6 | "Connected accounts" : "Sasaistītie konti", 7 | "Application ID" : "Lietotnes Id", 8 | "ID of your application" : "Lietotnes Id", 9 | "Application secret" : "Lietotnes noslēpums", 10 | "Client secret of your application" : "Lietontes klienta noslēpums", 11 | "No Zammad account connected" : "Nav sasaistītu Zammad kontu", 12 | "Unknown error" : "Nezināma kļūda", 13 | "Zammad connected accounts settings" : "Sasaistīto Zammad kontu iestatījumi", 14 | "Comments" : "Piebildes" 15 | }, 16 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); 17 | -------------------------------------------------------------------------------- /l10n/lv.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Bad HTTP method" : "Nederīgs HTTP pieprasījuma veids", 3 | "Bad credentials" : "Nederīgi pieteikšanās dati", 4 | "Connected accounts" : "Sasaistītie konti", 5 | "Application ID" : "Lietotnes Id", 6 | "ID of your application" : "Lietotnes Id", 7 | "Application secret" : "Lietotnes noslēpums", 8 | "Client secret of your application" : "Lietontes klienta noslēpums", 9 | "No Zammad account connected" : "Nav sasaistītu Zammad kontu", 10 | "Unknown error" : "Nezināma kļūda", 11 | "Zammad connected accounts settings" : "Sasaistīto Zammad kontu iestatījumi", 12 | "Comments" : "Piebildes" 13 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" 14 | } -------------------------------------------------------------------------------- /l10n/mk.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error getting OAuth access token." : "Грешка при добивање на OAuth пристапен токен", 5 | "Error during OAuth exchanges" : "Грешка при размена на податоци за OAuth ", 6 | "Bad credentials" : "Неточни акредитиви", 7 | "OAuth access token refused" : "Одбиен OAuth пристапен токен ", 8 | "Connected accounts" : "Поврзани сметки", 9 | "Incorrect access token" : "Неточен токен за пристап", 10 | "Connected as {user}" : "Поврзан како {user}", 11 | "Enable navigation link" : "Овозможи линк за навигација", 12 | "Unknown error" : "Непозната грешка", 13 | "Comments" : "Коментари" 14 | }, 15 | "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); 16 | -------------------------------------------------------------------------------- /l10n/mk.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error getting OAuth access token." : "Грешка при добивање на OAuth пристапен токен", 3 | "Error during OAuth exchanges" : "Грешка при размена на податоци за OAuth ", 4 | "Bad credentials" : "Неточни акредитиви", 5 | "OAuth access token refused" : "Одбиен OAuth пристапен токен ", 6 | "Connected accounts" : "Поврзани сметки", 7 | "Incorrect access token" : "Неточен токен за пристап", 8 | "Connected as {user}" : "Поврзан како {user}", 9 | "Enable navigation link" : "Овозможи линк за навигација", 10 | "Unknown error" : "Непозната грешка", 11 | "Comments" : "Коментари" 12 | },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" 13 | } -------------------------------------------------------------------------------- /l10n/nl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Fout bij ophalen OAuth access token", 6 | "Error during OAuth exchanges" : "Fout tijdens OAuth uitwisselingen", 7 | "Zammad notifications" : "Zammad meldingen", 8 | "Bad HTTP method" : "Foute HTTP methode", 9 | "Bad credentials" : "Foute inloggegevens", 10 | "OAuth access token refused" : "OAuth access token geweigerd", 11 | "Connected accounts" : "Verbonden accounts", 12 | "Zammad integration" : "Zammad integratie", 13 | "Integration of Zammad user support/ticketing solution" : "Integration met de Zammad gebruikersondersteuning/ticketing oplossing", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad-integratie biedt een dashboardwidget dat je belangrijke meldingen weergeeft,\neen uniforme zoekmachine om naar tickets te zoeken en meldingen van nieuw tickets.", 15 | "Zammad admin options saved" : "Zammad beheeropties bewaard", 16 | "Failed to save Zammad admin options" : "Kon Zammad admin-opties niet opslaan", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Als je wilt dat je Nextcloud-gebruikers OAuth voor authenticatie kunnen gebruiken bij een Zammad-instance, maak dan een applicatie aan in je Zammad-instellingen en stel hier het ID (AppId) en secret in.", 18 | "Make sure you set the \"Callback URL\" to" : "Zorg ervoor dat het \"Callback URL\" is ingesteld op", 19 | "Zammad instance address" : "Zammad instance adres", 20 | "Zammad address" : "Zammad adres", 21 | "Application ID" : "Application ID", 22 | "ID of your application" : "ID van je applicatie", 23 | "Application secret" : "Application secret", 24 | "Client secret of your application" : "Client secret van je applicatie", 25 | "Successfully connected to Zammad!" : "Succesvol verbonden met Zammad!", 26 | "OAuth access token could not be obtained:" : "OAuth access token kon niet worden opgehaald:", 27 | "Zammad options saved" : "Zammad opties bewaard", 28 | "Incorrect access token" : "Onjuist access token", 29 | "Failed to save Zammad options" : "Kon Zammad-opties niet opslaan", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Om zelf een access token aan te maken, ga je naar het gedeelte \"Token Access\" van je Zammad-profielpagina.", 31 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Creëer een \"Personal Access Token\" en geef dat \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" en \"USER_PREFERENCES -> NOTIFICATIONS\" machtigingen.", 32 | "https://my.zammad.org" : "https://my.zammad.org", 33 | "Access token" : "Access token", 34 | "Zammad access token" : "Zammad access token", 35 | "Connect to Zammad" : "Verbinden met Zammad", 36 | "Connected as {user}" : "Verbonden als {user}", 37 | "Disconnect from Zammad" : "Verbinding met Zammad verbreken", 38 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Let op: alles wat je intypt in de zoekbalk wordt naar Zammad gestuurd.", 39 | "Enable unified search for tickets" : "Inschakelen zoeken naar tickets", 40 | "Enable notifications for open tickets" : "Meldingen voor open tickets inschakelen.", 41 | "Enable navigation link" : "Inschakelen navigatielink", 42 | "No Zammad account connected" : "Geen Zammad-account verbonden", 43 | "Error connecting to Zammad" : "Fout bij het verbinden met Zammad", 44 | "No Zammad notifications!" : "Geen Zammad meldingen!", 45 | "Failed to get Zammad notifications" : "Kon Zammad-meldingen niet ophalen", 46 | "Account manager" : "Accoutbeheerder", 47 | "Unknown error" : "Onbekende fout", 48 | "by {creator}" : "door {creator}", 49 | "Comments" : "Reacties", 50 | "Click to expand comment" : "Klik om de reactie uit te vouwen" 51 | }, 52 | "nplurals=2; plural=(n != 1);"); 53 | -------------------------------------------------------------------------------- /l10n/nl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Fout bij ophalen OAuth access token", 4 | "Error during OAuth exchanges" : "Fout tijdens OAuth uitwisselingen", 5 | "Zammad notifications" : "Zammad meldingen", 6 | "Bad HTTP method" : "Foute HTTP methode", 7 | "Bad credentials" : "Foute inloggegevens", 8 | "OAuth access token refused" : "OAuth access token geweigerd", 9 | "Connected accounts" : "Verbonden accounts", 10 | "Zammad integration" : "Zammad integratie", 11 | "Integration of Zammad user support/ticketing solution" : "Integration met de Zammad gebruikersondersteuning/ticketing oplossing", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad-integratie biedt een dashboardwidget dat je belangrijke meldingen weergeeft,\neen uniforme zoekmachine om naar tickets te zoeken en meldingen van nieuw tickets.", 13 | "Zammad admin options saved" : "Zammad beheeropties bewaard", 14 | "Failed to save Zammad admin options" : "Kon Zammad admin-opties niet opslaan", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Als je wilt dat je Nextcloud-gebruikers OAuth voor authenticatie kunnen gebruiken bij een Zammad-instance, maak dan een applicatie aan in je Zammad-instellingen en stel hier het ID (AppId) en secret in.", 16 | "Make sure you set the \"Callback URL\" to" : "Zorg ervoor dat het \"Callback URL\" is ingesteld op", 17 | "Zammad instance address" : "Zammad instance adres", 18 | "Zammad address" : "Zammad adres", 19 | "Application ID" : "Application ID", 20 | "ID of your application" : "ID van je applicatie", 21 | "Application secret" : "Application secret", 22 | "Client secret of your application" : "Client secret van je applicatie", 23 | "Successfully connected to Zammad!" : "Succesvol verbonden met Zammad!", 24 | "OAuth access token could not be obtained:" : "OAuth access token kon niet worden opgehaald:", 25 | "Zammad options saved" : "Zammad opties bewaard", 26 | "Incorrect access token" : "Onjuist access token", 27 | "Failed to save Zammad options" : "Kon Zammad-opties niet opslaan", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Om zelf een access token aan te maken, ga je naar het gedeelte \"Token Access\" van je Zammad-profielpagina.", 29 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Creëer een \"Personal Access Token\" en geef dat \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" en \"USER_PREFERENCES -> NOTIFICATIONS\" machtigingen.", 30 | "https://my.zammad.org" : "https://my.zammad.org", 31 | "Access token" : "Access token", 32 | "Zammad access token" : "Zammad access token", 33 | "Connect to Zammad" : "Verbinden met Zammad", 34 | "Connected as {user}" : "Verbonden als {user}", 35 | "Disconnect from Zammad" : "Verbinding met Zammad verbreken", 36 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Let op: alles wat je intypt in de zoekbalk wordt naar Zammad gestuurd.", 37 | "Enable unified search for tickets" : "Inschakelen zoeken naar tickets", 38 | "Enable notifications for open tickets" : "Meldingen voor open tickets inschakelen.", 39 | "Enable navigation link" : "Inschakelen navigatielink", 40 | "No Zammad account connected" : "Geen Zammad-account verbonden", 41 | "Error connecting to Zammad" : "Fout bij het verbinden met Zammad", 42 | "No Zammad notifications!" : "Geen Zammad meldingen!", 43 | "Failed to get Zammad notifications" : "Kon Zammad-meldingen niet ophalen", 44 | "Account manager" : "Accoutbeheerder", 45 | "Unknown error" : "Onbekende fout", 46 | "by {creator}" : "door {creator}", 47 | "Comments" : "Reacties", 48 | "Click to expand comment" : "Klik om de reactie uit te vouwen" 49 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 50 | } -------------------------------------------------------------------------------- /l10n/nn_NO.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Connected accounts" : "Tilkopla kontoar", 5 | "Application ID" : "Program-ID", 6 | "Unknown error" : "Ukjend feil", 7 | "Comments" : "Kommentarar" 8 | }, 9 | "nplurals=2; plural=(n != 1);"); 10 | -------------------------------------------------------------------------------- /l10n/nn_NO.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Connected accounts" : "Tilkopla kontoar", 3 | "Application ID" : "Program-ID", 4 | "Unknown error" : "Ukjend feil", 5 | "Comments" : "Kommentarar" 6 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 7 | } -------------------------------------------------------------------------------- /l10n/oc.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Bad credentials" : "Marrits identificants", 5 | "Connected accounts" : "Comptes connectats", 6 | "Connected as {user}" : "Connectat coma {user}", 7 | "Unknown error" : "Error desconeguda", 8 | "Comments" : "Comentaris" 9 | }, 10 | "nplurals=2; plural=(n > 1);"); 11 | -------------------------------------------------------------------------------- /l10n/oc.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Bad credentials" : "Marrits identificants", 3 | "Connected accounts" : "Comptes connectats", 4 | "Connected as {user}" : "Connectat coma {user}", 5 | "Unknown error" : "Error desconeguda", 6 | "Comments" : "Comentaris" 7 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 8 | } -------------------------------------------------------------------------------- /l10n/pt_PT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "Erro durante trocas com o OAuth", 5 | "Bad HTTP method" : "Método HTTP incorreto", 6 | "Bad credentials" : "Credenciais inválidas", 7 | "Unknown error" : "Erro desconhecido", 8 | "Comments" : "Comentários" 9 | }, 10 | "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 11 | -------------------------------------------------------------------------------- /l10n/pt_PT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "Erro durante trocas com o OAuth", 3 | "Bad HTTP method" : "Método HTTP incorreto", 4 | "Bad credentials" : "Credenciais inválidas", 5 | "Unknown error" : "Erro desconhecido", 6 | "Comments" : "Comentários" 7 | },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 8 | } -------------------------------------------------------------------------------- /l10n/ro.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "Eroare în schimbarea OAuth", 5 | "Bad HTTP method" : "Metodă HTTP nepotrivită", 6 | "Bad credentials" : "Credențiale greșite", 7 | "OAuth access token refused" : "Token-ul OAuth a fost refuzat", 8 | "Connected accounts" : "Conturile conectate", 9 | "Enable navigation link" : "Pornește link-ul de navifare", 10 | "Unknown error" : "Eroare necunoscută", 11 | "Comments" : "Comentarii", 12 | "Click to expand comment" : "Click pentru extindere comentariu" 13 | }, 14 | "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); 15 | -------------------------------------------------------------------------------- /l10n/ro.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "Eroare în schimbarea OAuth", 3 | "Bad HTTP method" : "Metodă HTTP nepotrivită", 4 | "Bad credentials" : "Credențiale greșite", 5 | "OAuth access token refused" : "Token-ul OAuth a fost refuzat", 6 | "Connected accounts" : "Conturile conectate", 7 | "Enable navigation link" : "Pornește link-ul de navifare", 8 | "Unknown error" : "Eroare necunoscută", 9 | "Comments" : "Comentarii", 10 | "Click to expand comment" : "Click pentru extindere comentariu" 11 | },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" 12 | } -------------------------------------------------------------------------------- /l10n/ru.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Ошибка получения токена доступа OAuth.", 6 | "Error during OAuth exchanges" : "Ошибка во время обмена данными OAuth", 7 | "Zammad notifications" : "Уведомления Zammad", 8 | "Bad HTTP method" : "Неверный метод HTTP", 9 | "Bad credentials" : "Неверные учётные данные", 10 | "OAuth access token refused" : "Токен доступа OAuth отклонён", 11 | "Connected accounts" : "Подключённые учётные записи", 12 | "Zammad integration" : "Интеграция с Zammad", 13 | "Integration of Zammad user support/ticketing solution" : "Интеграция решения для поддержки пользователей/продажи билетов Zammad", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Интеграция Zammad обеспечивает виджет приборной панели, отображающий ваши важные уведомления,\n\tпоставщик поиска билетов и уведомления о новых открытых билетах.", 15 | "Zammad admin options saved" : "Настройки администратора Zammad сохранены", 16 | "Failed to save Zammad admin options" : "Не удалось сохранить параметры администратора Zammad", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Если вы хотите разрешить пользователям Nextcloud использовать OAuth для аутентификации на экземпляре Zammad, создайте приложение в настройках администратора Zammad и укажите ID приложения (AppId) и секрет ниже.", 18 | "Make sure you set the \"Callback URL\" to" : "Убедитесь, что вы установили для параметра \"URL обратного вызова\" значение", 19 | "Zammad instance address" : "Адрес экземпляра Zammad", 20 | "Zammad address" : "адресс Zammad", 21 | "Application ID" : "Идентификатор приложения", 22 | "ID of your application" : "Идентификатор вашего приложения", 23 | "Application secret" : "Секрет приложения", 24 | "Client secret of your application" : "Пароль вашего приложения", 25 | "Successfully connected to Zammad!" : "Успешно подключено к Zammad!", 26 | "OAuth access token could not be obtained:" : "Токен доступа OAuth не может быть получен:", 27 | "Zammad options saved" : "Настройки Zammad сохранены", 28 | "Incorrect access token" : "Неверный токен доступа", 29 | "Failed to save Zammad options" : "Не удалось сохранить параметры Zammad", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Чтобы создать токен доступа самостоятельно, перейдите в раздел \"Доступ к токену\" на странице вашего профиля Zammad.", 31 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Создайте \"Personal Access Token\" и дайте ему разрешения \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" и \"USER_PREFERENCES -> NOTIFICATIONS\".", 32 | "https://my.zammad.org" : "https://my.zammad.org", 33 | "Access token" : "Токен доступа", 34 | "Zammad access token" : "Токен доступа Zammad", 35 | "Connect to Zammad" : "Подключиться к Zammad", 36 | "Connected as {user}" : "Подключено под именем {user}", 37 | "Disconnect from Zammad" : "Отключиться от Zammad", 38 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Внимание, все, что вы набираете в строке поиска, будет отправлено в ваш экземпляр Zammad.", 39 | "Enable unified search for tickets" : "Включить унифицированный поиск билетов", 40 | "Enable notifications for open tickets" : "Включить уведомления для открытых билетов", 41 | "Enable navigation link" : "Включить ссылку для навигации", 42 | "No Zammad account connected" : "Учетная запись Zammad не подключена", 43 | "Error connecting to Zammad" : "Ошибка подключения к Zammad", 44 | "No Zammad notifications!" : "Никаких уведомлений Zammad!", 45 | "Failed to get Zammad notifications" : "Не удалось получить уведомления Zammad", 46 | "Account manager" : "Менеджер аккаунта", 47 | "Unknown error" : "Неизвестная ошибка", 48 | "Zammad connected accounts settings" : "Настройки подключенных учетных записей Zammad", 49 | "Comments" : "Комментарии", 50 | "Click to expand comment" : "Нажмите, чтобы развернуть комментарии" 51 | }, 52 | "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); 53 | -------------------------------------------------------------------------------- /l10n/ru.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Ошибка получения токена доступа OAuth.", 4 | "Error during OAuth exchanges" : "Ошибка во время обмена данными OAuth", 5 | "Zammad notifications" : "Уведомления Zammad", 6 | "Bad HTTP method" : "Неверный метод HTTP", 7 | "Bad credentials" : "Неверные учётные данные", 8 | "OAuth access token refused" : "Токен доступа OAuth отклонён", 9 | "Connected accounts" : "Подключённые учётные записи", 10 | "Zammad integration" : "Интеграция с Zammad", 11 | "Integration of Zammad user support/ticketing solution" : "Интеграция решения для поддержки пользователей/продажи билетов Zammad", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Интеграция Zammad обеспечивает виджет приборной панели, отображающий ваши важные уведомления,\n\tпоставщик поиска билетов и уведомления о новых открытых билетах.", 13 | "Zammad admin options saved" : "Настройки администратора Zammad сохранены", 14 | "Failed to save Zammad admin options" : "Не удалось сохранить параметры администратора Zammad", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Если вы хотите разрешить пользователям Nextcloud использовать OAuth для аутентификации на экземпляре Zammad, создайте приложение в настройках администратора Zammad и укажите ID приложения (AppId) и секрет ниже.", 16 | "Make sure you set the \"Callback URL\" to" : "Убедитесь, что вы установили для параметра \"URL обратного вызова\" значение", 17 | "Zammad instance address" : "Адрес экземпляра Zammad", 18 | "Zammad address" : "адресс Zammad", 19 | "Application ID" : "Идентификатор приложения", 20 | "ID of your application" : "Идентификатор вашего приложения", 21 | "Application secret" : "Секрет приложения", 22 | "Client secret of your application" : "Пароль вашего приложения", 23 | "Successfully connected to Zammad!" : "Успешно подключено к Zammad!", 24 | "OAuth access token could not be obtained:" : "Токен доступа OAuth не может быть получен:", 25 | "Zammad options saved" : "Настройки Zammad сохранены", 26 | "Incorrect access token" : "Неверный токен доступа", 27 | "Failed to save Zammad options" : "Не удалось сохранить параметры Zammad", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Чтобы создать токен доступа самостоятельно, перейдите в раздел \"Доступ к токену\" на странице вашего профиля Zammad.", 29 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Создайте \"Personal Access Token\" и дайте ему разрешения \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" и \"USER_PREFERENCES -> NOTIFICATIONS\".", 30 | "https://my.zammad.org" : "https://my.zammad.org", 31 | "Access token" : "Токен доступа", 32 | "Zammad access token" : "Токен доступа Zammad", 33 | "Connect to Zammad" : "Подключиться к Zammad", 34 | "Connected as {user}" : "Подключено под именем {user}", 35 | "Disconnect from Zammad" : "Отключиться от Zammad", 36 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Внимание, все, что вы набираете в строке поиска, будет отправлено в ваш экземпляр Zammad.", 37 | "Enable unified search for tickets" : "Включить унифицированный поиск билетов", 38 | "Enable notifications for open tickets" : "Включить уведомления для открытых билетов", 39 | "Enable navigation link" : "Включить ссылку для навигации", 40 | "No Zammad account connected" : "Учетная запись Zammad не подключена", 41 | "Error connecting to Zammad" : "Ошибка подключения к Zammad", 42 | "No Zammad notifications!" : "Никаких уведомлений Zammad!", 43 | "Failed to get Zammad notifications" : "Не удалось получить уведомления Zammad", 44 | "Account manager" : "Менеджер аккаунта", 45 | "Unknown error" : "Неизвестная ошибка", 46 | "Zammad connected accounts settings" : "Настройки подключенных учетных записей Zammad", 47 | "Comments" : "Комментарии", 48 | "Click to expand comment" : "Нажмите, чтобы развернуть комментарии" 49 | },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" 50 | } -------------------------------------------------------------------------------- /l10n/sc.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Errore recuperende su token de intrada OAuth.", 6 | "Error during OAuth exchanges" : "Errore cuncambiende OAuth", 7 | "Zammad notifications" : "Notìficas de Zammad", 8 | "Bad HTTP method" : "Mètodu HTTP no bàlidu", 9 | "Bad credentials" : "Credentziales non bàlidas", 10 | "OAuth access token refused" : "Token de intrada OAuth refudadu", 11 | "Connected accounts" : "Contos connètidos", 12 | "Zammad integration" : "Integratzione Zammad", 13 | "Integration of Zammad user support/ticketing solution" : "Integratzione de sa solutzione Zammad de suportu utente/gestione tickets", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "S'integratzione Zammad frunit unu trastu de iscrivania chi ti mustrat notìficas de importu,\n\tunu frunidore de chirca de ticket e notìficas pro ticket abertos noos. ", 15 | "Zammad admin options saved" : "Sèberos amministrativos de Zammad sarvados", 16 | "Failed to save Zammad admin options" : "No at fatu a sarvare is sèberos amministrativos de Zammad", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Si boles permìtere a is utentes tuos de Nextcloud de impreare OAuth pro s'identificare in una istàntzia de Zammad, crea un'aplicatzione in sa cunfiguratzione de amministratzione de Zammad e inserta·nche s'ID de s'aplicatzione (AppId) e su segretu inoghe a suta.", 18 | "Make sure you set the \"Callback URL\" to" : "Assegura·ti de cunfigurare s'\"URL pro torrare a cramare\" a ", 19 | "Zammad instance address" : "Zammad indiritzu de istàntzia", 20 | "Zammad address" : "Indiritzu de Zammad", 21 | "Application ID" : "ID aplicatzione", 22 | "ID of your application" : "ID de s'aplicatzione tua", 23 | "Application secret" : "Segretu de s'aplicatzione", 24 | "Client secret of your application" : "Segretu de su cliente de s'aplicatzione tua", 25 | "Successfully connected to Zammad!" : "Connètidu a Zammad in manera curreta!", 26 | "OAuth access token could not be obtained:" : "No at fatu a otènnere su token de intrada OAuth:", 27 | "Zammad options saved" : "Sèberos de Zammad sarvados", 28 | "Incorrect access token" : "Token de intrada non bàlidu", 29 | "Failed to save Zammad options" : "No at fatu a sarvare is sèberos de Zammad", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Pro creare unu token de atzessu tue etotu, bae a sa setzione \"Token de Atzessu\" de sa pàgina de su profilu Zammad tuo.", 31 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Crea unu \"Token de Atzessu Personale\" e ativa is permissos \"TICKET -> AGENTE\", \"AMMINISTRATZIONE -> OGETU\" and \"PREFERÈNTZIAS_UTENTE -> NOTFICAS\" ", 32 | "https://my.zammad.org" : "https://my.zammad.org", 33 | "Access token" : "Token de atzessu", 34 | "Zammad access token" : "Token de intrada in Zammad", 35 | "Connect to Zammad" : "Connete a Zammad", 36 | "Connected as {user}" : "Connètidu comente {user}", 37 | "Disconnect from Zammad" : "Disconnete dae Zammad", 38 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Avisu: totu su chi iscries in s'istanca de chirca s'at a imbiare a s'istàntzia Zammad tua.", 39 | "Enable unified search for tickets" : "Ativa chirca unificada pro is tickets", 40 | "Enable notifications for open tickets" : "Ativa is notìficas pro is eventos pro tickets abertos", 41 | "Enable navigation link" : "Ativa su ligòngiu de navigatzione", 42 | "No Zammad account connected" : "Perunu contu Zammad connètidu", 43 | "Error connecting to Zammad" : "Errore connetende a Zammad", 44 | "No Zammad notifications!" : "Peruna notìfica de Zammad!", 45 | "Failed to get Zammad notifications" : "No at fatu a retzire is notìficas de Zammad", 46 | "Unknown error" : "Errore disconnotu", 47 | "Comments" : "Cummentos" 48 | }, 49 | "nplurals=2; plural=(n != 1);"); 50 | -------------------------------------------------------------------------------- /l10n/sc.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Errore recuperende su token de intrada OAuth.", 4 | "Error during OAuth exchanges" : "Errore cuncambiende OAuth", 5 | "Zammad notifications" : "Notìficas de Zammad", 6 | "Bad HTTP method" : "Mètodu HTTP no bàlidu", 7 | "Bad credentials" : "Credentziales non bàlidas", 8 | "OAuth access token refused" : "Token de intrada OAuth refudadu", 9 | "Connected accounts" : "Contos connètidos", 10 | "Zammad integration" : "Integratzione Zammad", 11 | "Integration of Zammad user support/ticketing solution" : "Integratzione de sa solutzione Zammad de suportu utente/gestione tickets", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "S'integratzione Zammad frunit unu trastu de iscrivania chi ti mustrat notìficas de importu,\n\tunu frunidore de chirca de ticket e notìficas pro ticket abertos noos. ", 13 | "Zammad admin options saved" : "Sèberos amministrativos de Zammad sarvados", 14 | "Failed to save Zammad admin options" : "No at fatu a sarvare is sèberos amministrativos de Zammad", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Si boles permìtere a is utentes tuos de Nextcloud de impreare OAuth pro s'identificare in una istàntzia de Zammad, crea un'aplicatzione in sa cunfiguratzione de amministratzione de Zammad e inserta·nche s'ID de s'aplicatzione (AppId) e su segretu inoghe a suta.", 16 | "Make sure you set the \"Callback URL\" to" : "Assegura·ti de cunfigurare s'\"URL pro torrare a cramare\" a ", 17 | "Zammad instance address" : "Zammad indiritzu de istàntzia", 18 | "Zammad address" : "Indiritzu de Zammad", 19 | "Application ID" : "ID aplicatzione", 20 | "ID of your application" : "ID de s'aplicatzione tua", 21 | "Application secret" : "Segretu de s'aplicatzione", 22 | "Client secret of your application" : "Segretu de su cliente de s'aplicatzione tua", 23 | "Successfully connected to Zammad!" : "Connètidu a Zammad in manera curreta!", 24 | "OAuth access token could not be obtained:" : "No at fatu a otènnere su token de intrada OAuth:", 25 | "Zammad options saved" : "Sèberos de Zammad sarvados", 26 | "Incorrect access token" : "Token de intrada non bàlidu", 27 | "Failed to save Zammad options" : "No at fatu a sarvare is sèberos de Zammad", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Pro creare unu token de atzessu tue etotu, bae a sa setzione \"Token de Atzessu\" de sa pàgina de su profilu Zammad tuo.", 29 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "Crea unu \"Token de Atzessu Personale\" e ativa is permissos \"TICKET -> AGENTE\", \"AMMINISTRATZIONE -> OGETU\" and \"PREFERÈNTZIAS_UTENTE -> NOTFICAS\" ", 30 | "https://my.zammad.org" : "https://my.zammad.org", 31 | "Access token" : "Token de atzessu", 32 | "Zammad access token" : "Token de intrada in Zammad", 33 | "Connect to Zammad" : "Connete a Zammad", 34 | "Connected as {user}" : "Connètidu comente {user}", 35 | "Disconnect from Zammad" : "Disconnete dae Zammad", 36 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Avisu: totu su chi iscries in s'istanca de chirca s'at a imbiare a s'istàntzia Zammad tua.", 37 | "Enable unified search for tickets" : "Ativa chirca unificada pro is tickets", 38 | "Enable notifications for open tickets" : "Ativa is notìficas pro is eventos pro tickets abertos", 39 | "Enable navigation link" : "Ativa su ligòngiu de navigatzione", 40 | "No Zammad account connected" : "Perunu contu Zammad connètidu", 41 | "Error connecting to Zammad" : "Errore connetende a Zammad", 42 | "No Zammad notifications!" : "Peruna notìfica de Zammad!", 43 | "Failed to get Zammad notifications" : "No at fatu a retzire is notìficas de Zammad", 44 | "Unknown error" : "Errore disconnotu", 45 | "Comments" : "Cummentos" 46 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 47 | } -------------------------------------------------------------------------------- /l10n/si.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Connected accounts" : "සම්බන්ධිත ගිණුම්", 5 | "Unknown error" : "නොදන්නා දෝෂයකි", 6 | "Comments" : "අදහස්" 7 | }, 8 | "nplurals=2; plural=(n != 1);"); 9 | -------------------------------------------------------------------------------- /l10n/si.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Connected accounts" : "සම්බන්ධිත ගිණුම්", 3 | "Unknown error" : "නොදන්නා දෝෂයකි", 4 | "Comments" : "අදහස්" 5 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 6 | } -------------------------------------------------------------------------------- /l10n/sl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "Napaka med pridobivanjem žetona OAuth za dostop", 6 | "Error during OAuth exchanges" : " Napaka med izmenjavo podatkov OAuth", 7 | "Zammad notifications" : "Obvestila Zammad", 8 | "Bad HTTP method" : "Neustrezen način HTTP", 9 | "Bad credentials" : "Neustrezna poverila", 10 | "OAuth access token refused" : "Žeton OAuth za dostop je bil zavrnjen", 11 | "Connected accounts" : "Povezani računi", 12 | "Zammad integration" : "Združevalnik Zammad", 13 | "Integration of Zammad user support/ticketing solution" : "Združevalnik za podporni/kartični sistem Zammand", 14 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Združevalnik Zamand omogoča uporabo gradnikov nadzorne plošče, ki prikazujejo pomembna obvestila,\nenotno iskalno orodje za brskanje med prijavljenimi objavami in obvestili o novih vnosih.", 15 | "Zammad admin options saved" : "Skrbniške nastavitve povezave Zammad so shranjene", 16 | "Failed to save Zammad admin options" : "Shranjevanje skrbniških nastavitev računa Zammad je spodletelo", 17 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Za overitev okolja Zammad znotraj Nextcloud je treba ustvariti program za overitev preko možnosti OAuth. Med skrbniškimi nastavitvami Zammad nastavite določilo ID programa (AppID) in skrivno geslo.", 18 | "Make sure you set the \"Callback URL\" to" : "Poskrbite, da bo »povratni naslov URI« nastavljen na", 19 | "Zammad instance address" : "Naslov povezave do računa Zammad", 20 | "Zammad address" : "Naslov Zammad", 21 | "Application ID" : "ID Programa", 22 | "ID of your application" : "Določilo ID programa", 23 | "Application secret" : "Koda programa", 24 | "Client secret of your application" : "Koda programa za povezavo", 25 | "Successfully connected to Zammad!" : "Povezava z Zammad je uspešno vzpostavljena!", 26 | "OAuth access token could not be obtained:" : "Žetona OAuth za dostop ni mogoče pridobiti:", 27 | "Zammad options saved" : "Nastavitve Zammad so shranjene", 28 | "Incorrect access token" : " Neveljaven žetona za dostop", 29 | "Failed to save Zammad options" : "Shranjevanje nastavitev Zammad je spodletelo", 30 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Žeton za dostop je mogoče ustvariti v razdelku »Dostop do žetonov« na strani profila programa Zammad.", 31 | "https://my.zammad.org" : "https://moj.zammad.org", 32 | "Access token" : "Žeton dostopa", 33 | "Zammad access token" : "Žeton dostopa Zammad", 34 | "Connect to Zammad" : "Poveži z računom Zammad", 35 | "Connected as {user}" : "Povezan je uporabniški račun {user}", 36 | "Disconnect from Zammad" : "Prekini povezavo s programom Zammad", 37 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Opozorilo! Karkoli vpišete v iskalno polje bo poslano na strežnik Zammad.", 38 | "Enable unified search for tickets" : "Omogoči enotno iskanje med objavami", 39 | "Enable notifications for open tickets" : "Pošlji obvestila za odprte kartice", 40 | "Enable navigation link" : "Omogoči povezave za krmarjenje", 41 | "No Zammad account connected" : "Ni še povezanega računa Zammad", 42 | "Error connecting to Zammad" : "Napaka povezovanja z računom Zammad", 43 | "No Zammad notifications!" : "Ni obvestil Zammad!", 44 | "Failed to get Zammad notifications" : "Pridobivanje obvestil Zammad je spodletelo", 45 | "Account manager" : "Upravljalnik računov", 46 | "created {relativeDate}" : "ustvarjeno {relativeDate}", 47 | "closed {relativeDate}" : "zaprto {relativeDate}", 48 | "updated {relativeDate}" : "posodobljeno {relativeDate}", 49 | "Unknown error" : "Neznana napaka", 50 | "Comments" : "Opombe", 51 | "Click to expand comment" : "Kliknite za razširitev opombe" 52 | }, 53 | "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); 54 | -------------------------------------------------------------------------------- /l10n/sl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "Napaka med pridobivanjem žetona OAuth za dostop", 4 | "Error during OAuth exchanges" : " Napaka med izmenjavo podatkov OAuth", 5 | "Zammad notifications" : "Obvestila Zammad", 6 | "Bad HTTP method" : "Neustrezen način HTTP", 7 | "Bad credentials" : "Neustrezna poverila", 8 | "OAuth access token refused" : "Žeton OAuth za dostop je bil zavrnjen", 9 | "Connected accounts" : "Povezani računi", 10 | "Zammad integration" : "Združevalnik Zammad", 11 | "Integration of Zammad user support/ticketing solution" : "Združevalnik za podporni/kartični sistem Zammand", 12 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Združevalnik Zamand omogoča uporabo gradnikov nadzorne plošče, ki prikazujejo pomembna obvestila,\nenotno iskalno orodje za brskanje med prijavljenimi objavami in obvestili o novih vnosih.", 13 | "Zammad admin options saved" : "Skrbniške nastavitve povezave Zammad so shranjene", 14 | "Failed to save Zammad admin options" : "Shranjevanje skrbniških nastavitev računa Zammad je spodletelo", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "Za overitev okolja Zammad znotraj Nextcloud je treba ustvariti program za overitev preko možnosti OAuth. Med skrbniškimi nastavitvami Zammad nastavite določilo ID programa (AppID) in skrivno geslo.", 16 | "Make sure you set the \"Callback URL\" to" : "Poskrbite, da bo »povratni naslov URI« nastavljen na", 17 | "Zammad instance address" : "Naslov povezave do računa Zammad", 18 | "Zammad address" : "Naslov Zammad", 19 | "Application ID" : "ID Programa", 20 | "ID of your application" : "Določilo ID programa", 21 | "Application secret" : "Koda programa", 22 | "Client secret of your application" : "Koda programa za povezavo", 23 | "Successfully connected to Zammad!" : "Povezava z Zammad je uspešno vzpostavljena!", 24 | "OAuth access token could not be obtained:" : "Žetona OAuth za dostop ni mogoče pridobiti:", 25 | "Zammad options saved" : "Nastavitve Zammad so shranjene", 26 | "Incorrect access token" : " Neveljaven žetona za dostop", 27 | "Failed to save Zammad options" : "Shranjevanje nastavitev Zammad je spodletelo", 28 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "Žeton za dostop je mogoče ustvariti v razdelku »Dostop do žetonov« na strani profila programa Zammad.", 29 | "https://my.zammad.org" : "https://moj.zammad.org", 30 | "Access token" : "Žeton dostopa", 31 | "Zammad access token" : "Žeton dostopa Zammad", 32 | "Connect to Zammad" : "Poveži z računom Zammad", 33 | "Connected as {user}" : "Povezan je uporabniški račun {user}", 34 | "Disconnect from Zammad" : "Prekini povezavo s programom Zammad", 35 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "Opozorilo! Karkoli vpišete v iskalno polje bo poslano na strežnik Zammad.", 36 | "Enable unified search for tickets" : "Omogoči enotno iskanje med objavami", 37 | "Enable notifications for open tickets" : "Pošlji obvestila za odprte kartice", 38 | "Enable navigation link" : "Omogoči povezave za krmarjenje", 39 | "No Zammad account connected" : "Ni še povezanega računa Zammad", 40 | "Error connecting to Zammad" : "Napaka povezovanja z računom Zammad", 41 | "No Zammad notifications!" : "Ni obvestil Zammad!", 42 | "Failed to get Zammad notifications" : "Pridobivanje obvestil Zammad je spodletelo", 43 | "Account manager" : "Upravljalnik računov", 44 | "created {relativeDate}" : "ustvarjeno {relativeDate}", 45 | "closed {relativeDate}" : "zaprto {relativeDate}", 46 | "updated {relativeDate}" : "posodobljeno {relativeDate}", 47 | "Unknown error" : "Neznana napaka", 48 | "Comments" : "Opombe", 49 | "Click to expand comment" : "Kliknite za razširitev opombe" 50 | },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" 51 | } -------------------------------------------------------------------------------- /l10n/th.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Connected as {user}" : "เชื่อมต่อเป็น {user} แล้ว", 5 | "Unknown error" : "ข้อผิดพลาดที่ไม่รู้จัก", 6 | "Comments" : "ความคิดเห็น" 7 | }, 8 | "nplurals=1; plural=0;"); 9 | -------------------------------------------------------------------------------- /l10n/th.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Connected as {user}" : "เชื่อมต่อเป็น {user} แล้ว", 3 | "Unknown error" : "ข้อผิดพลาดที่ไม่รู้จัก", 4 | "Comments" : "ความคิดเห็น" 5 | },"pluralForm" :"nplurals=1; plural=0;" 6 | } -------------------------------------------------------------------------------- /l10n/ug.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "OAuth زىيارەت بەلگىسىگە ئېرىشىشتە خاتالىق.", 6 | "Error during OAuth exchanges" : "OAuth ئالماشتۇرۇش جەريانىدا خاتالىق", 7 | "Zammad notifications" : "Zammad ئۇقتۇرۇشى", 8 | "Zammad tickets" : "Zammad بېلەتلىرى", 9 | "closed %1$s" : "%1 $ s نى تاقىدى", 10 | "updated %1$s" : "%1 $ s يېڭىلاندى", 11 | "Bad HTTP method" : "ناچار HTTP ئۇسۇلى", 12 | "Bad credentials" : "ناچار كىنىشكا", 13 | "OAuth access token refused" : "OAuth زىيارەت بەلگىسى رەت قىلىندى", 14 | "Connected accounts" : "ئۇلانغان ھېساباتلار", 15 | "Zammad integration" : "Zammad بىرلەشتۈرۈش", 16 | "Integration of Zammad user support/ticketing solution" : "Zammad ئابونتلىرىنى قوللاش / بېلەت ھەل قىلىش چارىسىنى بىرلەشتۈرۈش", 17 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad بىرلەشتۈرۈش مۇھىم ئۇقتۇرۇشىڭىزنى كۆرسىتىدىغان باشقۇرۇش تاختىسى كىچىك قورالى بىلەن تەمىنلەيدۇ ،\n\tئىزدەش بېلىتى ۋە يېڭى ئوچۇق بېلەتنىڭ ئۇقتۇرۇشى.", 18 | "Zammad admin options saved" : "Zammad admin تاللانمىلىرى ساقلاندى", 19 | "Failed to save Zammad admin options" : "Zammad باشقۇرۇش تاللانمىلىرىنى ساقلىيالمىدى", 20 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "ئەگەر Nextcloud ئىشلەتكۈچىلىرىڭىزنىڭ OAuth نى ئىشلىتىپ Zammad مىسالىغا دەلىللىشىگە يول قويماقچى بولسىڭىز ، Zammad باشقۇرۇش تەڭشىكىڭىزدە پروگرامما قۇرۇپ ، ئىلتىماس كىملىكى (AppId) ۋە مەخپىيەتلىكنى ئاستىغا قويۇڭ.", 21 | "Make sure you set the \"Callback URL\" to" : "«چاقىرىش URL» نى تەڭشىگەنلىكىڭىزنى جەزملەشتۈرۈڭ", 22 | "Zammad instance address" : "Zammad مىسال ئادرېسى", 23 | "Zammad address" : "Zammad address", 24 | "Application ID" : "ئىلتىماس كىملىكى", 25 | "ID of your application" : "ئىلتىماسىڭىزنىڭ كىملىكى", 26 | "Application secret" : "ئىلتىماس مەخپىيىتى", 27 | "Client secret of your application" : "ئىلتىماسىڭىزنىڭ خېرىدار مەخپىيىتى", 28 | "Enable Zammad link previews" : "Zammad ئۇلانمىسىنى كۆرۈشنى قوزغىتىڭ", 29 | "Successfully connected to Zammad!" : "مۇۋەپپەقىيەتلىك ھالدا زاممادقا ئۇلاندى!", 30 | "OAuth access token could not be obtained:" : "OAuth زىيارەت بەلگىسىگە ئېرىشەلمىدى:", 31 | "Zammad options saved" : "Zammad تاللانمىلىرى ساقلاندى", 32 | "Incorrect access token" : "كىرىش بەلگىسى خاتا", 33 | "Failed to save Zammad options" : "Zammad تاللانمىلىرىنى ساقلىيالمىدى", 34 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "ئۆزىڭىزگە كىرىش بەلگىسىنى قۇرۇش ئۈچۈن ، Zammad ئارخىپى بېتىڭىزنىڭ «Token Access» بۆلىكىگە كىرىڭ.", 35 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "«شەخسىي زىيارەت توكەن» نى قۇرۇپ ، ئۇنىڭغا «TICKET -> ۋاكالەتچى» ، «ADMIN -> OBJECT» ۋە «USER_PREFERENCES -> ئۇقتۇرۇش» ئىجازەتلىرىنى بېرىڭ.", 36 | "https://my.zammad.org" : "https://my.zammad.org", 37 | "Access token" : "بەلگە", 38 | "Zammad access token" : "Zammad زىيارەت بەلگىسى", 39 | "Connect to Zammad" : "Zammad غا ئۇلاڭ", 40 | "Connected as {user}" : "{user} as قىلىپ ئۇلاندى", 41 | "Disconnect from Zammad" : "Zammad دىن ئۈزۈڭ", 42 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "ئاگاھلاندۇرۇش ، ئىزدەش ستونىغا يازغانلىرىڭىزنىڭ ھەممىسى Zammad مىسالىڭىزغا ئەۋەتىلىدۇ.", 43 | "Enable unified search for tickets" : "بېلەتنى بىر تۇتاش ئىزدەشنى قوزغىتىڭ", 44 | "Enable notifications for open tickets" : "ئوچۇق بېلەتنىڭ ئۇقتۇرۇشىنى قوزغىتىڭ", 45 | "Enable navigation link" : "يول باشلاش ئۇلانمىسىنى قوزغىتىڭ", 46 | "No Zammad account connected" : "Zammad ھېساباتى ئۇلانمىدى", 47 | "Error connecting to Zammad" : "Zammad غا ئۇلىنىشتا خاتالىق", 48 | "No Zammad notifications!" : "Zammad ئۇقتۇرۇشى يوق!", 49 | "Failed to get Zammad notifications" : "Zammad ئۇقتۇرۇشىنى ئالالمىدى", 50 | "Account manager" : "ھېسابات باشقۇرغۇچى", 51 | "Subscription ends" : "مۇشتەرىلىك ئاخىرلاشتى", 52 | "created {relativeDate}" : "created {relativeDate}", 53 | "closed {relativeDate}" : "closed {relativeDate}", 54 | "updated {relativeDate}" : "يېڭىلاندى {relativeDate}", 55 | "Zammad API error" : "Zammad API خاتالىقى", 56 | "Unknown error" : "يوچۇن خاتالىق", 57 | "Zammad connected accounts settings" : "Zammad ھېسابات تەڭشىكىنى ئۇلىدى", 58 | "Ticket#{number}" : "بېلەت # {number}", 59 | "by {creator}" : "by {creator}", 60 | "Comments" : "باھا", 61 | "internal" : "ئىچكى", 62 | "Click to expand comment" : "ئىنكاسنى كېڭەيتىش ئۈچۈن چېكىڭ" 63 | }, 64 | "nplurals=2; plural=(n != 1);"); 65 | -------------------------------------------------------------------------------- /l10n/ug.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "OAuth زىيارەت بەلگىسىگە ئېرىشىشتە خاتالىق.", 4 | "Error during OAuth exchanges" : "OAuth ئالماشتۇرۇش جەريانىدا خاتالىق", 5 | "Zammad notifications" : "Zammad ئۇقتۇرۇشى", 6 | "Zammad tickets" : "Zammad بېلەتلىرى", 7 | "closed %1$s" : "%1 $ s نى تاقىدى", 8 | "updated %1$s" : "%1 $ s يېڭىلاندى", 9 | "Bad HTTP method" : "ناچار HTTP ئۇسۇلى", 10 | "Bad credentials" : "ناچار كىنىشكا", 11 | "OAuth access token refused" : "OAuth زىيارەت بەلگىسى رەت قىلىندى", 12 | "Connected accounts" : "ئۇلانغان ھېساباتلار", 13 | "Zammad integration" : "Zammad بىرلەشتۈرۈش", 14 | "Integration of Zammad user support/ticketing solution" : "Zammad ئابونتلىرىنى قوللاش / بېلەت ھەل قىلىش چارىسىنى بىرلەشتۈرۈش", 15 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad بىرلەشتۈرۈش مۇھىم ئۇقتۇرۇشىڭىزنى كۆرسىتىدىغان باشقۇرۇش تاختىسى كىچىك قورالى بىلەن تەمىنلەيدۇ ،\n\tئىزدەش بېلىتى ۋە يېڭى ئوچۇق بېلەتنىڭ ئۇقتۇرۇشى.", 16 | "Zammad admin options saved" : "Zammad admin تاللانمىلىرى ساقلاندى", 17 | "Failed to save Zammad admin options" : "Zammad باشقۇرۇش تاللانمىلىرىنى ساقلىيالمىدى", 18 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "ئەگەر Nextcloud ئىشلەتكۈچىلىرىڭىزنىڭ OAuth نى ئىشلىتىپ Zammad مىسالىغا دەلىللىشىگە يول قويماقچى بولسىڭىز ، Zammad باشقۇرۇش تەڭشىكىڭىزدە پروگرامما قۇرۇپ ، ئىلتىماس كىملىكى (AppId) ۋە مەخپىيەتلىكنى ئاستىغا قويۇڭ.", 19 | "Make sure you set the \"Callback URL\" to" : "«چاقىرىش URL» نى تەڭشىگەنلىكىڭىزنى جەزملەشتۈرۈڭ", 20 | "Zammad instance address" : "Zammad مىسال ئادرېسى", 21 | "Zammad address" : "Zammad address", 22 | "Application ID" : "ئىلتىماس كىملىكى", 23 | "ID of your application" : "ئىلتىماسىڭىزنىڭ كىملىكى", 24 | "Application secret" : "ئىلتىماس مەخپىيىتى", 25 | "Client secret of your application" : "ئىلتىماسىڭىزنىڭ خېرىدار مەخپىيىتى", 26 | "Enable Zammad link previews" : "Zammad ئۇلانمىسىنى كۆرۈشنى قوزغىتىڭ", 27 | "Successfully connected to Zammad!" : "مۇۋەپپەقىيەتلىك ھالدا زاممادقا ئۇلاندى!", 28 | "OAuth access token could not be obtained:" : "OAuth زىيارەت بەلگىسىگە ئېرىشەلمىدى:", 29 | "Zammad options saved" : "Zammad تاللانمىلىرى ساقلاندى", 30 | "Incorrect access token" : "كىرىش بەلگىسى خاتا", 31 | "Failed to save Zammad options" : "Zammad تاللانمىلىرىنى ساقلىيالمىدى", 32 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "ئۆزىڭىزگە كىرىش بەلگىسىنى قۇرۇش ئۈچۈن ، Zammad ئارخىپى بېتىڭىزنىڭ «Token Access» بۆلىكىگە كىرىڭ.", 33 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "«شەخسىي زىيارەت توكەن» نى قۇرۇپ ، ئۇنىڭغا «TICKET -> ۋاكالەتچى» ، «ADMIN -> OBJECT» ۋە «USER_PREFERENCES -> ئۇقتۇرۇش» ئىجازەتلىرىنى بېرىڭ.", 34 | "https://my.zammad.org" : "https://my.zammad.org", 35 | "Access token" : "بەلگە", 36 | "Zammad access token" : "Zammad زىيارەت بەلگىسى", 37 | "Connect to Zammad" : "Zammad غا ئۇلاڭ", 38 | "Connected as {user}" : "{user} as قىلىپ ئۇلاندى", 39 | "Disconnect from Zammad" : "Zammad دىن ئۈزۈڭ", 40 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "ئاگاھلاندۇرۇش ، ئىزدەش ستونىغا يازغانلىرىڭىزنىڭ ھەممىسى Zammad مىسالىڭىزغا ئەۋەتىلىدۇ.", 41 | "Enable unified search for tickets" : "بېلەتنى بىر تۇتاش ئىزدەشنى قوزغىتىڭ", 42 | "Enable notifications for open tickets" : "ئوچۇق بېلەتنىڭ ئۇقتۇرۇشىنى قوزغىتىڭ", 43 | "Enable navigation link" : "يول باشلاش ئۇلانمىسىنى قوزغىتىڭ", 44 | "No Zammad account connected" : "Zammad ھېساباتى ئۇلانمىدى", 45 | "Error connecting to Zammad" : "Zammad غا ئۇلىنىشتا خاتالىق", 46 | "No Zammad notifications!" : "Zammad ئۇقتۇرۇشى يوق!", 47 | "Failed to get Zammad notifications" : "Zammad ئۇقتۇرۇشىنى ئالالمىدى", 48 | "Account manager" : "ھېسابات باشقۇرغۇچى", 49 | "Subscription ends" : "مۇشتەرىلىك ئاخىرلاشتى", 50 | "created {relativeDate}" : "created {relativeDate}", 51 | "closed {relativeDate}" : "closed {relativeDate}", 52 | "updated {relativeDate}" : "يېڭىلاندى {relativeDate}", 53 | "Zammad API error" : "Zammad API خاتالىقى", 54 | "Unknown error" : "يوچۇن خاتالىق", 55 | "Zammad connected accounts settings" : "Zammad ھېسابات تەڭشىكىنى ئۇلىدى", 56 | "Ticket#{number}" : "بېلەت # {number}", 57 | "by {creator}" : "by {creator}", 58 | "Comments" : "باھا", 59 | "internal" : "ئىچكى", 60 | "Click to expand comment" : "ئىنكاسنى كېڭەيتىش ئۈچۈن چېكىڭ" 61 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 62 | } -------------------------------------------------------------------------------- /l10n/uk.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Error during OAuth exchanges" : "Помилка під час обміну OAuth", 5 | "Bad HTTP method" : "Поганий метод HTTP", 6 | "Bad credentials" : "Погані облікові дані", 7 | "OAuth access token refused" : "Токен доступу OAuth відхилено", 8 | "Connected accounts" : "Підключені облікові записи", 9 | "OAuth access token could not be obtained:" : "Не вдалося отримати токен доступу OAuth:", 10 | "Enable unified search for tickets" : "Увімкнути універсальний пошук заявок", 11 | "Account manager" : "Бухгалтер", 12 | "Unknown error" : "Невідома помилка", 13 | "Comments" : "Коментарі" 14 | }, 15 | "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); 16 | -------------------------------------------------------------------------------- /l10n/uk.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Error during OAuth exchanges" : "Помилка під час обміну OAuth", 3 | "Bad HTTP method" : "Поганий метод HTTP", 4 | "Bad credentials" : "Погані облікові дані", 5 | "OAuth access token refused" : "Токен доступу OAuth відхилено", 6 | "Connected accounts" : "Підключені облікові записи", 7 | "OAuth access token could not be obtained:" : "Не вдалося отримати токен доступу OAuth:", 8 | "Enable unified search for tickets" : "Увімкнути універсальний пошук заявок", 9 | "Account manager" : "Бухгалтер", 10 | "Unknown error" : "Невідома помилка", 11 | "Comments" : "Коментарі" 12 | },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" 13 | } -------------------------------------------------------------------------------- /l10n/uz.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Bad HTTP method" : "Yomon HTTP usuli", 5 | "Bad credentials" : "Akkaunt ma'lumotlari xato", 6 | "Unknown error" : "Unknown error", 7 | "Comments" : "Comments" 8 | }, 9 | "nplurals=1; plural=0;"); 10 | -------------------------------------------------------------------------------- /l10n/uz.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Bad HTTP method" : "Yomon HTTP usuli", 3 | "Bad credentials" : "Akkaunt ma'lumotlari xato", 4 | "Unknown error" : "Unknown error", 5 | "Comments" : "Comments" 6 | },"pluralForm" :"nplurals=1; plural=0;" 7 | } -------------------------------------------------------------------------------- /l10n/vi.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad notifications" : "Thông báo Zammad", 5 | "Bad HTTP method" : "Phương thức HTTP không hợp lệ", 6 | "Bad credentials" : "Thông tin đăng nhập không hợp lệ.", 7 | "Connected accounts" : "Đã kết nối tài khoản", 8 | "Connected as {user}" : "Kết nối bởi {user}", 9 | "Account manager" : "Quản lý tài khoản", 10 | "Unknown error" : "Lỗi không xác định", 11 | "Comments" : "Các bình luận", 12 | "Click to expand comment" : "Nhấp để mở rộng bình luận" 13 | }, 14 | "nplurals=1; plural=0;"); 15 | -------------------------------------------------------------------------------- /l10n/vi.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad notifications" : "Thông báo Zammad", 3 | "Bad HTTP method" : "Phương thức HTTP không hợp lệ", 4 | "Bad credentials" : "Thông tin đăng nhập không hợp lệ.", 5 | "Connected accounts" : "Đã kết nối tài khoản", 6 | "Connected as {user}" : "Kết nối bởi {user}", 7 | "Account manager" : "Quản lý tài khoản", 8 | "Unknown error" : "Lỗi không xác định", 9 | "Comments" : "Các bình luận", 10 | "Click to expand comment" : "Nhấp để mở rộng bình luận" 11 | },"pluralForm" :"nplurals=1; plural=0;" 12 | } -------------------------------------------------------------------------------- /l10n/zh_CN.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "获取OAuth访问令牌错误", 6 | "Error during OAuth exchanges" : "交换 OAuth 时出错", 7 | "Zammad notifications" : "Zammad通知", 8 | "Bad HTTP method" : "错误的HTTP方法", 9 | "Bad credentials" : "错误的凭据", 10 | "OAuth access token refused" : "OAuth 访问令牌拒绝", 11 | "Connected accounts" : "关联账号", 12 | "Zammad integration" : "Zammad集成", 13 | "Integration of Zammad user support/ticketing solution" : "与Zammand用户支持/工单解决方案的集成", 14 | "Failed to save Zammad admin options" : "保存Zammad管理员选项失败", 15 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "如果您想要允许您的Nextcloud用户使用 OAuth 来对Zammand实例进行验证,请在您的Zammand管理员设置中创建一个应用,并将应用ID(AppId)和密码填写到下方。", 16 | "Make sure you set the \"Callback URL\" to" : "请确保您将 \"回调URL\" 设置为", 17 | "Zammad instance address" : "Zammad 实例地址", 18 | "Zammad address" : "Zammad地址", 19 | "Application ID" : "应用ID", 20 | "ID of your application" : "应用的ID", 21 | "Application secret" : "应用密码", 22 | "Client secret of your application" : "应用程序的客户端密钥", 23 | "OAuth access token could not be obtained:" : "无法获取 OAuth 访问令牌:", 24 | "Incorrect access token" : "访问令牌不正确", 25 | "Failed to save Zammad options" : "保存Zammad选项失败", 26 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "您若要自己创建访问令牌,请前往Zammand个人资料页面的 \"令牌访问\" 部分。", 27 | "https://my.zammad.org" : "https://my.zammad.org", 28 | "Access token" : "访问令牌", 29 | "Zammad access token" : "Zammad 访问令牌", 30 | "Connect to Zammad" : "连接到Zammad", 31 | "Connected as {user}" : "作为 {user} 已连接", 32 | "Disconnect from Zammad" : "与Zammad端开连接", 33 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "警告:您在搜索栏中输入的所有内容都将发送到您的 Zammad 实例。", 34 | "Enable unified search for tickets" : "启用统一的票证搜索", 35 | "Enable notifications for open tickets" : "为打开的票证启用通知", 36 | "Enable navigation link" : "启用导航链接", 37 | "No Zammad account connected" : "未连接至 Zammad 账号", 38 | "No Zammad notifications!" : "无 Zammad 通知", 39 | "Failed to get Zammad notifications" : "获取Zammad通知失败", 40 | "Account manager" : "账号管理器", 41 | "Unknown error" : "未知错误", 42 | "by {creator}" : "由{creator}创建", 43 | "Comments" : "评论", 44 | "internal" : "内部", 45 | "Click to expand comment" : "点击展开评论" 46 | }, 47 | "nplurals=1; plural=0;"); 48 | -------------------------------------------------------------------------------- /l10n/zh_CN.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "获取OAuth访问令牌错误", 4 | "Error during OAuth exchanges" : "交换 OAuth 时出错", 5 | "Zammad notifications" : "Zammad通知", 6 | "Bad HTTP method" : "错误的HTTP方法", 7 | "Bad credentials" : "错误的凭据", 8 | "OAuth access token refused" : "OAuth 访问令牌拒绝", 9 | "Connected accounts" : "关联账号", 10 | "Zammad integration" : "Zammad集成", 11 | "Integration of Zammad user support/ticketing solution" : "与Zammand用户支持/工单解决方案的集成", 12 | "Failed to save Zammad admin options" : "保存Zammad管理员选项失败", 13 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "如果您想要允许您的Nextcloud用户使用 OAuth 来对Zammand实例进行验证,请在您的Zammand管理员设置中创建一个应用,并将应用ID(AppId)和密码填写到下方。", 14 | "Make sure you set the \"Callback URL\" to" : "请确保您将 \"回调URL\" 设置为", 15 | "Zammad instance address" : "Zammad 实例地址", 16 | "Zammad address" : "Zammad地址", 17 | "Application ID" : "应用ID", 18 | "ID of your application" : "应用的ID", 19 | "Application secret" : "应用密码", 20 | "Client secret of your application" : "应用程序的客户端密钥", 21 | "OAuth access token could not be obtained:" : "无法获取 OAuth 访问令牌:", 22 | "Incorrect access token" : "访问令牌不正确", 23 | "Failed to save Zammad options" : "保存Zammad选项失败", 24 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "您若要自己创建访问令牌,请前往Zammand个人资料页面的 \"令牌访问\" 部分。", 25 | "https://my.zammad.org" : "https://my.zammad.org", 26 | "Access token" : "访问令牌", 27 | "Zammad access token" : "Zammad 访问令牌", 28 | "Connect to Zammad" : "连接到Zammad", 29 | "Connected as {user}" : "作为 {user} 已连接", 30 | "Disconnect from Zammad" : "与Zammad端开连接", 31 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "警告:您在搜索栏中输入的所有内容都将发送到您的 Zammad 实例。", 32 | "Enable unified search for tickets" : "启用统一的票证搜索", 33 | "Enable notifications for open tickets" : "为打开的票证启用通知", 34 | "Enable navigation link" : "启用导航链接", 35 | "No Zammad account connected" : "未连接至 Zammad 账号", 36 | "No Zammad notifications!" : "无 Zammad 通知", 37 | "Failed to get Zammad notifications" : "获取Zammad通知失败", 38 | "Account manager" : "账号管理器", 39 | "Unknown error" : "未知错误", 40 | "by {creator}" : "由{creator}创建", 41 | "Comments" : "评论", 42 | "internal" : "内部", 43 | "Click to expand comment" : "点击展开评论" 44 | },"pluralForm" :"nplurals=1; plural=0;" 45 | } -------------------------------------------------------------------------------- /l10n/zh_HK.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "取得 OAuth 存取權杖時發生錯誤。", 6 | "Error during OAuth exchanges" : "OAuth 交換時發生錯誤", 7 | "Zammad notifications" : "Zammad 通告", 8 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["您在Zammad有 %n 張公開票。"], 9 | "Zammad tickets" : "Zammad 工單", 10 | "closed %1$s" : "已關閉 %1$s", 11 | "updated %1$s" : "已更新 %1$s", 12 | "Bad HTTP method" : "不正確的 HTTP 方法", 13 | "Bad credentials" : "錯誤的身分驗證", 14 | "OAuth access token refused" : "OAuth 存取權杖被拒絕", 15 | "Connected accounts" : "已連線的帳號", 16 | "Zammad integration" : "Zammad 整合", 17 | "Integration of Zammad user support/ticketing solution" : "集成 Zammad 用戶支持/票務解決方案", 18 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad集成提供了一個顯示重要通告的儀表板小部件,\n支持票證的搜索功能和新開放票證的通知功能。", 19 | "Zammad admin options saved" : "已儲存 Zammad 管理員選項", 20 | "Failed to save Zammad admin options" : "儲存 Zammad 管理員選項失敗", 21 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "如果要允許Nextcloud用戶使用OAuth對Zammad實例進行身分驗證,請在您的Zammad管理員設置中創建一個應用程序,並將應用程序ID(AppId)和密碼放在下面。", 22 | "Make sure you set the \"Callback URL\" to" : "確保您將「Callback URL」設定為", 23 | "Zammad instance address" : "Zammad 站台地址", 24 | "Zammad address" : "Zammad 地址", 25 | "Application ID" : "應用程式 ID", 26 | "ID of your application" : "您 Zammad 應用程式的 ID", 27 | "Application secret" : "應用程式密碼", 28 | "Client secret of your application" : "您 Zammad 應用程式的客戶端密碼", 29 | "Enable Zammad link previews" : "啟用 Zammad 連結預覽", 30 | "Successfully connected to Zammad!" : "成功連線至 Zammad!", 31 | "OAuth access token could not be obtained:" : "無法取得 Zammad OAuth 存取權杖:", 32 | "Zammad options saved" : "已儲存 Zammad 選項", 33 | "Incorrect access token" : "不正確的存取權杖", 34 | "Failed to save Zammad options" : "儲存 Zammad 選項失敗", 35 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "要自己創建存取權杖,請轉到Zammad個人資料頁面的 “權杖存取” 部分。", 36 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "創建一個 “個人存取權杖”,並賦予它 “TICKET -> AGENT”,“ADMIN -> OBJECT” 和 “USER_PREFERENCES -> NOTIFICATIONS” 權限。", 37 | "https://my.zammad.org" : "https://my.zammad.org", 38 | "Access token" : "存取權杖", 39 | "Zammad access token" : "Zammad 存取權杖", 40 | "Connect to Zammad" : "連線至 Zammad", 41 | "Connected as {user}" : "以 {user} 身分連線", 42 | "Disconnect from Zammad" : "與 Zammad 斷開連線", 43 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "警告,您在搜尋列中輸入的所有東西都會傳送到 Zammad。", 44 | "Enable unified search for tickets" : "啟用統一搜尋票證", 45 | "Enable notifications for open tickets" : "啟用未決票證通知", 46 | "Enable navigation link" : "啟用導覽連結", 47 | "No Zammad account connected" : "未連線至 Zammad 帳號", 48 | "Error connecting to Zammad" : "連線至 Zammad 時發生錯誤", 49 | "No Zammad notifications!" : "無 Zammad 通告!", 50 | "Failed to get Zammad notifications" : "未能獲取 Zammad 通告", 51 | "Account manager" : "帳戶經理", 52 | "Subscription ends" : "訂閱結束日", 53 | "created {relativeDate}" : "於 {relativeDate} 天前創建", 54 | "closed {relativeDate}" : "有效期至 {relativeDate}", 55 | "updated {relativeDate}" : "於 {relativeDate} 更新", 56 | "Zammad API error" : "Zammad API 錯誤", 57 | "Unknown error" : "錯誤不詳", 58 | "Zammad connected accounts settings" : "Zammad 連接帳戶設定", 59 | "Ticket#{number}" : "票號#{number}", 60 | "by {creator}" : "由 {creator} 創作", 61 | "Comments" : "備註", 62 | "internal" : "內部", 63 | "Click to expand comment" : "點擊展開評論" 64 | }, 65 | "nplurals=1; plural=0;"); 66 | -------------------------------------------------------------------------------- /l10n/zh_HK.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "取得 OAuth 存取權杖時發生錯誤。", 4 | "Error during OAuth exchanges" : "OAuth 交換時發生錯誤", 5 | "Zammad notifications" : "Zammad 通告", 6 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["您在Zammad有 %n 張公開票。"], 7 | "Zammad tickets" : "Zammad 工單", 8 | "closed %1$s" : "已關閉 %1$s", 9 | "updated %1$s" : "已更新 %1$s", 10 | "Bad HTTP method" : "不正確的 HTTP 方法", 11 | "Bad credentials" : "錯誤的身分驗證", 12 | "OAuth access token refused" : "OAuth 存取權杖被拒絕", 13 | "Connected accounts" : "已連線的帳號", 14 | "Zammad integration" : "Zammad 整合", 15 | "Integration of Zammad user support/ticketing solution" : "集成 Zammad 用戶支持/票務解決方案", 16 | "Zammad integration provides a dashboard widget displaying your important notifications,\n\ta search provider for tickets and notifications for new open tickets." : "Zammad集成提供了一個顯示重要通告的儀表板小部件,\n支持票證的搜索功能和新開放票證的通知功能。", 17 | "Zammad admin options saved" : "已儲存 Zammad 管理員選項", 18 | "Failed to save Zammad admin options" : "儲存 Zammad 管理員選項失敗", 19 | "If you want to allow your Nextcloud users to use OAuth to authenticate to a Zammad instance, create an application in your Zammad admin settings and put the application ID (AppId) and secret below." : "如果要允許Nextcloud用戶使用OAuth對Zammad實例進行身分驗證,請在您的Zammad管理員設置中創建一個應用程序,並將應用程序ID(AppId)和密碼放在下面。", 20 | "Make sure you set the \"Callback URL\" to" : "確保您將「Callback URL」設定為", 21 | "Zammad instance address" : "Zammad 站台地址", 22 | "Zammad address" : "Zammad 地址", 23 | "Application ID" : "應用程式 ID", 24 | "ID of your application" : "您 Zammad 應用程式的 ID", 25 | "Application secret" : "應用程式密碼", 26 | "Client secret of your application" : "您 Zammad 應用程式的客戶端密碼", 27 | "Enable Zammad link previews" : "啟用 Zammad 連結預覽", 28 | "Successfully connected to Zammad!" : "成功連線至 Zammad!", 29 | "OAuth access token could not be obtained:" : "無法取得 Zammad OAuth 存取權杖:", 30 | "Zammad options saved" : "已儲存 Zammad 選項", 31 | "Incorrect access token" : "不正確的存取權杖", 32 | "Failed to save Zammad options" : "儲存 Zammad 選項失敗", 33 | "To create an access token yourself, go to the \"Token Access\" section of your Zammad profile page." : "要自己創建存取權杖,請轉到Zammad個人資料頁面的 “權杖存取” 部分。", 34 | "Create a \"Personal Access Token\" and give it \"TICKET -> AGENT\", \"ADMIN -> OBJECT\" and \"USER_PREFERENCES -> NOTIFICATIONS\" permissions." : "創建一個 “個人存取權杖”,並賦予它 “TICKET -> AGENT”,“ADMIN -> OBJECT” 和 “USER_PREFERENCES -> NOTIFICATIONS” 權限。", 35 | "https://my.zammad.org" : "https://my.zammad.org", 36 | "Access token" : "存取權杖", 37 | "Zammad access token" : "Zammad 存取權杖", 38 | "Connect to Zammad" : "連線至 Zammad", 39 | "Connected as {user}" : "以 {user} 身分連線", 40 | "Disconnect from Zammad" : "與 Zammad 斷開連線", 41 | "Warning, everything you type in the search bar will be sent to your Zammad instance." : "警告,您在搜尋列中輸入的所有東西都會傳送到 Zammad。", 42 | "Enable unified search for tickets" : "啟用統一搜尋票證", 43 | "Enable notifications for open tickets" : "啟用未決票證通知", 44 | "Enable navigation link" : "啟用導覽連結", 45 | "No Zammad account connected" : "未連線至 Zammad 帳號", 46 | "Error connecting to Zammad" : "連線至 Zammad 時發生錯誤", 47 | "No Zammad notifications!" : "無 Zammad 通告!", 48 | "Failed to get Zammad notifications" : "未能獲取 Zammad 通告", 49 | "Account manager" : "帳戶經理", 50 | "Subscription ends" : "訂閱結束日", 51 | "created {relativeDate}" : "於 {relativeDate} 天前創建", 52 | "closed {relativeDate}" : "有效期至 {relativeDate}", 53 | "updated {relativeDate}" : "於 {relativeDate} 更新", 54 | "Zammad API error" : "Zammad API 錯誤", 55 | "Unknown error" : "錯誤不詳", 56 | "Zammad connected accounts settings" : "Zammad 連接帳戶設定", 57 | "Ticket#{number}" : "票號#{number}", 58 | "by {creator}" : "由 {creator} 創作", 59 | "Comments" : "備註", 60 | "internal" : "內部", 61 | "Click to expand comment" : "點擊展開評論" 62 | },"pluralForm" :"nplurals=1; plural=0;" 63 | } -------------------------------------------------------------------------------- /l10n/zh_TW.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "integration_zammad", 3 | { 4 | "Zammad" : "Zammad", 5 | "Error getting OAuth access token." : "取得 OAuth 存取權杖時發生錯誤", 6 | "Error during OAuth exchanges" : "OAuth 交換時發生錯誤", 7 | "Zammad notifications" : "Zammad 通知", 8 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["您在 Zammad 有 %n 張仍開啟的工單"], 9 | "Zammad tickets" : "Zammad 工單", 10 | "closed %1$s" : "已關閉 %1$s", 11 | "updated %1$s" : "已更新 %1$s", 12 | "Bad HTTP method" : "錯誤的 HTTP 方法", 13 | "Bad credentials" : "錯誤的憑證", 14 | "OAuth access token refused" : "OAuth 存取權杖被拒絕", 15 | "Connected accounts" : "已連線的帳號", 16 | "Zammad integration" : "Zammad 整合", 17 | "Integration of Zammad user support/ticketing solution" : "整合 Zammad 使用者支援/工單解決方案", 18 | "Application ID" : "應用程式 ID", 19 | "Application secret" : "應用程式密碼", 20 | "OAuth access token could not be obtained:" : "無法取得 OAuth 存取權杖:", 21 | "Incorrect access token" : "不正確的存取權杖", 22 | "Access token" : "存取權杖", 23 | "Connected as {user}" : "以 {user} 身份連線", 24 | "Enable navigation link" : "啟用導覽連結", 25 | "Account manager" : "帳號管理程式", 26 | "created {relativeDate}" : "建立於 {relativeDate}", 27 | "closed {relativeDate}" : "關閉於 {relativeDate}", 28 | "updated {relativeDate}" : "更新於 {relativeDate}", 29 | "Unknown error" : "未知的錯誤", 30 | "by {creator}" : "由 {creator} 建立", 31 | "Comments" : "留言", 32 | "Click to expand comment" : "點擊展開留言" 33 | }, 34 | "nplurals=1; plural=0;"); 35 | -------------------------------------------------------------------------------- /l10n/zh_TW.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zammad" : "Zammad", 3 | "Error getting OAuth access token." : "取得 OAuth 存取權杖時發生錯誤", 4 | "Error during OAuth exchanges" : "OAuth 交換時發生錯誤", 5 | "Zammad notifications" : "Zammad 通知", 6 | "_You have %n open ticket in Zammad._::_You have %n open tickets in Zammad._" : ["您在 Zammad 有 %n 張仍開啟的工單"], 7 | "Zammad tickets" : "Zammad 工單", 8 | "closed %1$s" : "已關閉 %1$s", 9 | "updated %1$s" : "已更新 %1$s", 10 | "Bad HTTP method" : "錯誤的 HTTP 方法", 11 | "Bad credentials" : "錯誤的憑證", 12 | "OAuth access token refused" : "OAuth 存取權杖被拒絕", 13 | "Connected accounts" : "已連線的帳號", 14 | "Zammad integration" : "Zammad 整合", 15 | "Integration of Zammad user support/ticketing solution" : "整合 Zammad 使用者支援/工單解決方案", 16 | "Application ID" : "應用程式 ID", 17 | "Application secret" : "應用程式密碼", 18 | "OAuth access token could not be obtained:" : "無法取得 OAuth 存取權杖:", 19 | "Incorrect access token" : "不正確的存取權杖", 20 | "Access token" : "存取權杖", 21 | "Connected as {user}" : "以 {user} 身份連線", 22 | "Enable navigation link" : "啟用導覽連結", 23 | "Account manager" : "帳號管理程式", 24 | "created {relativeDate}" : "建立於 {relativeDate}", 25 | "closed {relativeDate}" : "關閉於 {relativeDate}", 26 | "updated {relativeDate}" : "更新於 {relativeDate}", 27 | "Unknown error" : "未知的錯誤", 28 | "by {creator}" : "由 {creator} 建立", 29 | "Comments" : "留言", 30 | "Click to expand comment" : "點擊展開留言" 31 | },"pluralForm" :"nplurals=1; plural=0;" 32 | } -------------------------------------------------------------------------------- /lib/AppInfo/Application.php: -------------------------------------------------------------------------------- 1 | 8 | * @copyright Julien Veyssier 2020 9 | */ 10 | 11 | namespace OCA\Zammad\AppInfo; 12 | 13 | use Closure; 14 | use OCA\Zammad\Dashboard\ZammadWidget; 15 | use OCA\Zammad\Listener\ZammadReferenceListener; 16 | use OCA\Zammad\Notification\Notifier; 17 | use OCA\Zammad\Reference\ZammadReferenceProvider; 18 | use OCA\Zammad\Search\ZammadSearchProvider; 19 | use OCP\AppFramework\App; 20 | use OCP\AppFramework\Bootstrap\IBootContext; 21 | use OCP\AppFramework\Bootstrap\IBootstrap; 22 | 23 | use OCP\AppFramework\Bootstrap\IRegistrationContext; 24 | use OCP\Collaboration\Reference\RenderReferenceEvent; 25 | use OCP\IConfig; 26 | use OCP\IL10N; 27 | use OCP\INavigationManager; 28 | 29 | use OCP\IURLGenerator; 30 | use OCP\IUserSession; 31 | use OCP\Notification\IManager as INotificationManager; 32 | 33 | class Application extends App implements IBootstrap { 34 | 35 | public const APP_ID = 'integration_zammad'; 36 | private IConfig $config; 37 | 38 | public function __construct(array $urlParams = []) { 39 | parent::__construct(self::APP_ID, $urlParams); 40 | 41 | $container = $this->getContainer(); 42 | $this->config = $container->get(IConfig::class); 43 | 44 | $manager = $container->get(INotificationManager::class); 45 | $manager->registerNotifierService(Notifier::class); 46 | } 47 | 48 | public function register(IRegistrationContext $context): void { 49 | $context->registerDashboardWidget(ZammadWidget::class); 50 | $context->registerSearchProvider(ZammadSearchProvider::class); 51 | 52 | $context->registerReferenceProvider(ZammadReferenceProvider::class); 53 | $context->registerEventListener(RenderReferenceEvent::class, ZammadReferenceListener::class); 54 | } 55 | 56 | public function boot(IBootContext $context): void { 57 | $context->injectFn(Closure::fromCallable([$this, 'registerNavigation'])); 58 | } 59 | 60 | public function registerNavigation(IUserSession $userSession): void { 61 | $user = $userSession->getUser(); 62 | if ($user !== null) { 63 | $userId = $user->getUID(); 64 | $container = $this->getContainer(); 65 | 66 | if ($this->config->getUserValue($userId, self::APP_ID, 'navigation_enabled', '0') === '1') { 67 | $zammadUrl = $this->config->getUserValue($userId, self::APP_ID, 'url', ''); 68 | if ($zammadUrl !== '') { 69 | $container->get(INavigationManager::class)->add(function () use ($container, $zammadUrl) { 70 | $urlGenerator = $container->get(IURLGenerator::class); 71 | $l10n = $container->get(IL10N::class); 72 | return [ 73 | 'id' => self::APP_ID, 74 | 75 | 'order' => 10, 76 | 77 | // the route that will be shown on startup 78 | 'href' => $zammadUrl, 79 | 80 | // the icon that will be shown in the navigation 81 | // this file needs to exist in img/ 82 | 'icon' => $urlGenerator->imagePath(self::APP_ID, 'app.svg'), 83 | 84 | // the title of your application. This will be used in the 85 | // navigation or on the settings page of your app 86 | 'name' => $l10n->t('Zammad'), 87 | ]; 88 | }); 89 | } 90 | } 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /lib/BackgroundJob/CheckOpenTickets.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * @license GNU AGPL version 3 or any later version 8 | * 9 | * This program is free software: you can redistribute it and/or modify 10 | * it under the terms of the GNU Affero General Public License as 11 | * published by the Free Software Foundation, either version 3 of the 12 | * License, or (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | * GNU Affero General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Affero General Public License 20 | * along with this program. If not, see . 21 | * 22 | */ 23 | 24 | namespace OCA\Zammad\BackgroundJob; 25 | 26 | use OCA\Zammad\Service\ZammadAPIService; 27 | use OCP\AppFramework\Utility\ITimeFactory; 28 | use OCP\BackgroundJob\TimedJob; 29 | 30 | use Psr\Log\LoggerInterface; 31 | 32 | class CheckOpenTickets extends TimedJob { 33 | 34 | public function __construct( 35 | ITimeFactory $time, 36 | private ZammadAPIService $zammadAPIService, 37 | private LoggerInterface $logger, 38 | ) { 39 | parent::__construct($time); 40 | // Every 15 minutes 41 | $this->setInterval(60 * 15); 42 | } 43 | 44 | protected function run($argument): void { 45 | $this->zammadAPIService->checkOpenTickets(); 46 | $this->logger->info('Checked if users have open Zammad tickets.'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /lib/Controller/ZammadAPIController.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright Julien Veyssier 2020 11 | */ 12 | 13 | namespace OCA\Zammad\Controller; 14 | 15 | use OCA\Zammad\AppInfo\Application; 16 | use OCA\Zammad\Service\ZammadAPIService; 17 | use OCP\AppFramework\Controller; 18 | use OCP\AppFramework\Http; 19 | use OCP\AppFramework\Http\Attribute\NoAdminRequired; 20 | use OCP\AppFramework\Http\Attribute\NoCSRFRequired; 21 | use OCP\AppFramework\Http\DataDisplayResponse; 22 | use OCP\AppFramework\Http\DataResponse; 23 | 24 | use OCP\IConfig; 25 | use OCP\IRequest; 26 | use OCP\PreConditionNotMetException; 27 | 28 | class ZammadAPIController extends Controller { 29 | 30 | public function __construct( 31 | string $appName, 32 | IRequest $request, 33 | private IConfig $config, 34 | private ZammadAPIService $zammadAPIService, 35 | private ?string $userId, 36 | ) { 37 | parent::__construct($appName, $request); 38 | } 39 | 40 | /** 41 | * Get zammad instance URL 42 | * 43 | * @return DataResponse 44 | */ 45 | #[NoAdminRequired] 46 | public function getZammadUrl(): DataResponse { 47 | $zammadUrl = $this->config->getUserValue($this->userId, Application::APP_ID, 'url'); 48 | return new DataResponse($zammadUrl); 49 | } 50 | 51 | /** 52 | * Get zammad user avatar 53 | * 54 | * @param string $imageId 55 | * @return DataDisplayResponse 56 | * @throws \Exception 57 | */ 58 | #[NoAdminRequired] 59 | #[NoCSRFRequired] 60 | public function getZammadAvatar(string $imageId = ''): DataDisplayResponse { 61 | $avatarResponse = $this->zammadAPIService->getZammadAvatar($this->userId, $imageId); 62 | if (isset($avatarResponse['error'])) { 63 | return new DataDisplayResponse('', Http::STATUS_NOT_FOUND); 64 | } 65 | $response = new DataDisplayResponse( 66 | $avatarResponse['body'], 67 | Http::STATUS_OK, 68 | ['Content-Type' => $avatarResponse['headers']['Content-Type'][0] ?? 'image/jpeg'] 69 | ); 70 | $response->cacheFor(60 * 60 * 24); 71 | return $response; 72 | } 73 | 74 | /** 75 | * Get notifications list 76 | * 77 | * @param ?string $since 78 | * @return DataResponse 79 | * @throws PreConditionNotMetException 80 | */ 81 | #[NoAdminRequired] 82 | public function getNotifications(?string $since = null): DataResponse { 83 | $hasAccessToken = $this->config->getUserValue($this->userId, Application::APP_ID, 'token') !== ''; 84 | $zammadUrl = $this->config->getUserValue($this->userId, Application::APP_ID, 'url'); 85 | if (!$hasAccessToken || !preg_match('/^(https?:\/\/)?[^.]+\.[^.].*/', $zammadUrl)) { 86 | return new DataResponse('', Http::STATUS_BAD_REQUEST); 87 | } 88 | $result = $this->zammadAPIService->getNotifications($this->userId, $since, 7); 89 | if (!isset($result['error'])) { 90 | $response = new DataResponse($result); 91 | } else { 92 | $response = new DataResponse($result, Http::STATUS_UNAUTHORIZED); 93 | } 94 | return $response; 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /lib/Dashboard/ZammadWidget.php: -------------------------------------------------------------------------------- 1 | 5 | * 6 | * @author Julien Veyssier 7 | * 8 | * @license GNU AGPL version 3 or any later version 9 | * 10 | * This program is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU Affero General Public License as 12 | * published by the Free Software Foundation, either version 3 of the 13 | * License, or (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU Affero General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU Affero General Public License 21 | * along with this program. If not, see . 22 | * 23 | */ 24 | 25 | namespace OCA\Zammad\Dashboard; 26 | 27 | use OCA\Zammad\AppInfo\Application; 28 | use OCP\Dashboard\IWidget; 29 | use OCP\IL10N; 30 | use OCP\IURLGenerator; 31 | 32 | use OCP\Util; 33 | 34 | class ZammadWidget implements IWidget { 35 | 36 | public function __construct( 37 | private IL10N $l10n, 38 | private IURLGenerator $url, 39 | ) { 40 | } 41 | 42 | /** 43 | * @inheritDoc 44 | */ 45 | public function getId(): string { 46 | return 'zammad_notifications'; 47 | } 48 | 49 | /** 50 | * @inheritDoc 51 | */ 52 | public function getTitle(): string { 53 | return $this->l10n->t('Zammad notifications'); 54 | } 55 | 56 | /** 57 | * @inheritDoc 58 | */ 59 | public function getOrder(): int { 60 | return 10; 61 | } 62 | 63 | /** 64 | * @inheritDoc 65 | */ 66 | public function getIconClass(): string { 67 | return 'icon-zammad'; 68 | } 69 | 70 | /** 71 | * @inheritDoc 72 | */ 73 | public function getUrl(): ?string { 74 | return $this->url->linkToRoute('settings.PersonalSettings.index', ['section' => 'connected-accounts']); 75 | } 76 | 77 | /** 78 | * @inheritDoc 79 | */ 80 | public function load(): void { 81 | Util::addScript(Application::APP_ID, Application::APP_ID . '-dashboard'); 82 | Util::addStyle(Application::APP_ID, 'dashboard'); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /lib/Listener/ZammadReferenceListener.php: -------------------------------------------------------------------------------- 1 | 5 | * 6 | * @author Julien Veyssier 7 | * 8 | * @license GNU AGPL version 3 or any later version 9 | * 10 | * This program is free software: you can redistribute it and/or modify 11 | * it under the terms of the GNU Affero General Public License as 12 | * published by the Free Software Foundation, either version 3 of the 13 | * License, or (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU Affero General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU Affero General Public License 21 | * along with this program. If not, see . 22 | */ 23 | 24 | namespace OCA\Zammad\Listener; 25 | 26 | use OCA\Zammad\AppInfo\Application; 27 | use OCP\Collaboration\Reference\RenderReferenceEvent; 28 | use OCP\EventDispatcher\Event; 29 | use OCP\EventDispatcher\IEventListener; 30 | use OCP\Util; 31 | 32 | /** 33 | * @implements IEventListener 34 | */ 35 | class ZammadReferenceListener implements IEventListener { 36 | public function handle(Event $event): void { 37 | if (!$event instanceof RenderReferenceEvent) { 38 | return; 39 | } 40 | 41 | Util::addScript(Application::APP_ID, Application::APP_ID . '-reference'); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /lib/Migration/Version030000Date20241003141518.php: -------------------------------------------------------------------------------- 1 | config->getAppValue(Application::APP_ID, $key); 38 | if ($value !== '') { 39 | $encryptedValue = $this->crypto->encrypt($value); 40 | $this->config->setAppValue(Application::APP_ID, $key, $encryptedValue); 41 | } 42 | } 43 | 44 | // user tokens 45 | $qbUpdate = $this->connection->getQueryBuilder(); 46 | $qbUpdate->update('preferences') 47 | ->set('configvalue', $qbUpdate->createParameter('updateValue')) 48 | ->where( 49 | $qbUpdate->expr()->eq('appid', $qbUpdate->createNamedParameter(Application::APP_ID, IQueryBuilder::PARAM_STR)) 50 | ) 51 | ->andWhere( 52 | $qbUpdate->expr()->eq('userid', $qbUpdate->createParameter('updateUserId')) 53 | ) 54 | ->andWhere( 55 | $qbUpdate->expr()->eq('configkey', $qbUpdate->createParameter('updateConfigKey')) 56 | ); 57 | 58 | $qbSelect = $this->connection->getQueryBuilder(); 59 | $qbSelect->select('userid', 'configvalue', 'configkey') 60 | ->from('preferences') 61 | ->where( 62 | $qbSelect->expr()->eq('appid', $qbSelect->createNamedParameter(Application::APP_ID, IQueryBuilder::PARAM_STR)) 63 | ); 64 | 65 | $or = $qbSelect->expr()->orx(); 66 | $or->add($qbSelect->expr()->eq('configkey', $qbSelect->createNamedParameter('token', IQueryBuilder::PARAM_STR))); 67 | $or->add($qbSelect->expr()->eq('configkey', $qbSelect->createNamedParameter('refresh_token', IQueryBuilder::PARAM_STR))); 68 | $qbSelect->andWhere($or); 69 | 70 | $qbSelect->andWhere( 71 | $qbSelect->expr()->nonEmptyString('configvalue') 72 | ) 73 | ->andWhere( 74 | $qbSelect->expr()->isNotNull('configvalue') 75 | ); 76 | $req = $qbSelect->executeQuery(); 77 | while ($row = $req->fetch()) { 78 | $userId = $row['userid']; 79 | $configKey = $row['configkey']; 80 | $storedClearToken = $row['configvalue']; 81 | $encryptedToken = $this->crypto->encrypt($storedClearToken); 82 | $qbUpdate->setParameter('updateConfigKey', $configKey, IQueryBuilder::PARAM_STR); 83 | $qbUpdate->setParameter('updateValue', $encryptedToken, IQueryBuilder::PARAM_STR); 84 | $qbUpdate->setParameter('updateUserId', $userId, IQueryBuilder::PARAM_STR); 85 | $qbUpdate->executeStatement(); 86 | } 87 | $req->closeCursor(); 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /lib/Notification/Notifier.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright Julien Veyssier 2019 11 | */ 12 | 13 | namespace OCA\Zammad\Notification; 14 | 15 | use InvalidArgumentException; 16 | use OCA\Zammad\AppInfo\Application; 17 | use OCP\IURLGenerator; 18 | use OCP\IUserManager; 19 | use OCP\L10N\IFactory; 20 | use OCP\Notification\IManager as INotificationManager; 21 | use OCP\Notification\INotification; 22 | use OCP\Notification\INotifier; 23 | 24 | class Notifier implements INotifier { 25 | 26 | public function __construct( 27 | private IFactory $factory, 28 | private IUserManager $userManager, 29 | private INotificationManager $notificationManager, 30 | private IURLGenerator $urlGenerator, 31 | ) { 32 | } 33 | 34 | /** 35 | * Identifier of the notifier, only use [a-z0-9_] 36 | * 37 | * @return string 38 | * @since 17.0.0 39 | */ 40 | public function getID(): string { 41 | return 'integration_zammad'; 42 | } 43 | /** 44 | * Human-readable name describing the notifier 45 | * 46 | * @return string 47 | * @since 17.0.0 48 | */ 49 | public function getName(): string { 50 | return $this->factory->get('integration_zammad')->t('Zammad'); 51 | } 52 | 53 | /** 54 | * @param INotification $notification 55 | * @param string $languageCode The code of the language that should be used to prepare the notification 56 | * @return INotification 57 | * @throws InvalidArgumentException When the notification was not prepared by a notifier 58 | * @since 9.0.0 59 | */ 60 | public function prepare(INotification $notification, string $languageCode): INotification { 61 | if ($notification->getApp() !== 'integration_zammad') { 62 | // Not my app => throw 63 | throw new InvalidArgumentException(); 64 | } 65 | 66 | $l = $this->factory->get('integration_zammad', $languageCode); 67 | 68 | switch ($notification->getSubject()) { 69 | case 'new_open_tickets': 70 | $p = $notification->getSubjectParameters(); 71 | $nbOpen = (int)($p['nbOpen'] ?? 0); 72 | $content = $l->n('You have %n open ticket in Zammad.', 'You have %n open tickets in Zammad.', $nbOpen); 73 | 74 | //$theme = $this->config->getUserValue($userId, 'accessibility', 'theme', ''); 75 | //$iconUrl = ($theme === 'dark') 76 | // ? $this->url->imagePath(Application::APP_ID, 'app.svg') 77 | // : $this->url->imagePath(Application::APP_ID, 'app-dark.svg'); 78 | 79 | $notification->setParsedSubject($content) 80 | ->setLink($p['link'] ?? '') 81 | ->setIcon( 82 | $this->urlGenerator->getAbsoluteURL( 83 | $this->urlGenerator->imagePath(Application::APP_ID, 'app-dark.svg') 84 | ) 85 | ); 86 | //->setIcon($this->url->getAbsoluteURL($iconUrl)); 87 | return $notification; 88 | 89 | default: 90 | // Unknown subject => Unknown notification => throw 91 | throw new InvalidArgumentException(); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /lib/Search/ZammadSearchResultEntry.php: -------------------------------------------------------------------------------- 1 | 9 | * 10 | * @license AGPL-3.0 11 | * 12 | * This code is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License, version 3, 14 | * as published by the Free Software Foundation. 15 | * 16 | * This program is distributed in the hope that it will be useful, 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | * GNU Affero General Public License for more details. 20 | * 21 | * You should have received a copy of the GNU Affero General Public License, version 3, 22 | * along with this program. If not, see 23 | * 24 | */ 25 | namespace OCA\Zammad\Search; 26 | 27 | use OCP\Search\SearchResultEntry; 28 | 29 | class ZammadSearchResultEntry extends SearchResultEntry { 30 | } 31 | -------------------------------------------------------------------------------- /lib/Settings/Admin.php: -------------------------------------------------------------------------------- 1 | config->getAppValue(Application::APP_ID, 'client_id'); 27 | $clientID = $clientID === '' ? '' : $this->crypto->decrypt($clientID); 28 | $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret'); 29 | $clientSecret = $clientSecret === '' ? '' : $this->crypto->decrypt($clientSecret); 30 | 31 | $oauthUrl = $this->config->getAppValue(Application::APP_ID, 'oauth_instance_url'); 32 | $adminLinkPreviewEnabled = $this->config->getAppValue(Application::APP_ID, 'link_preview_enabled', '1') === '1'; 33 | 34 | $adminConfig = [ 35 | 'client_id' => $clientID, 36 | // don't expose the client secret to the user 37 | 'client_secret' => $clientSecret === '' ? '' : 'dummySecret', 38 | 'oauth_instance_url' => $oauthUrl, 39 | 'link_preview_enabled' => $adminLinkPreviewEnabled, 40 | ]; 41 | $this->initialStateService->provideInitialState('admin-config', $adminConfig); 42 | return new TemplateResponse(Application::APP_ID, 'adminSettings'); 43 | } 44 | 45 | public function getSection(): string { 46 | return 'connected-accounts'; 47 | } 48 | 49 | public function getPriority(): int { 50 | return 10; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /lib/Settings/AdminSection.php: -------------------------------------------------------------------------------- 1 | l->t('Connected accounts'); 34 | } 35 | 36 | /** 37 | * @return int whether the form should be rather on the top or bottom of 38 | * the settings navigation. The sections are arranged in ascending order of 39 | * the priority values. It is required to return a value between 0 and 99. 40 | */ 41 | public function getPriority(): int { 42 | return 80; 43 | } 44 | 45 | /** 46 | * @return string The relative path to a an icon describing the section 47 | */ 48 | public function getIcon(): string { 49 | return $this->urlGenerator->imagePath('core', 'categories/integration.svg'); 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /lib/Settings/Personal.php: -------------------------------------------------------------------------------- 1 | config->getAppValue(Application::APP_ID, 'client_id'); 29 | $clientID = $clientID === '' ? '' : $this->crypto->decrypt($clientID); 30 | $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret'); 31 | $clientSecret = $clientSecret === '' ? '' : $this->crypto->decrypt($clientSecret); 32 | $adminOauthUrl = $this->config->getAppValue(Application::APP_ID, 'oauth_instance_url'); 33 | 34 | $token = $this->config->getUserValue($this->userId, Application::APP_ID, 'token'); 35 | $token = $token === '' ? '' : $this->crypto->decrypt($token); 36 | $userName = $this->config->getUserValue($this->userId, Application::APP_ID, 'user_name'); 37 | $url = $this->config->getUserValue($this->userId, Application::APP_ID, 'url') ?: $adminOauthUrl; 38 | $searchEnabled = $this->config->getUserValue($this->userId, Application::APP_ID, 'search_enabled', '0') === '1'; 39 | $notificationEnabled = $this->config->getUserValue($this->userId, Application::APP_ID, 'notification_enabled', '0') === '1'; 40 | $navigationEnabled = $this->config->getUserValue($this->userId, Application::APP_ID, 'navigation_enabled', '0') === '1'; 41 | $linkPreviewEnabled = $this->config->getUserValue($this->userId, Application::APP_ID, 'link_preview_enabled', '1') === '1'; 42 | 43 | $userConfig = [ 44 | // don't expose the token to the user 45 | 'token' => $token === '' ? '' : 'dummyToken', 46 | 'url' => $url, 47 | 'client_id' => $clientID, 48 | // don't expose the client secret to the user 49 | 'client_secret' => $clientSecret !== '', 50 | 'oauth_instance_url' => $adminOauthUrl, 51 | 'user_name' => $userName, 52 | 'search_enabled' => $searchEnabled, 53 | 'notification_enabled' => $notificationEnabled, 54 | 'navigation_enabled' => $navigationEnabled, 55 | 'link_preview_enabled' => $linkPreviewEnabled, 56 | ]; 57 | $this->initialStateService->provideInitialState('user-config', $userConfig); 58 | return new TemplateResponse(Application::APP_ID, 'personalSettings'); 59 | } 60 | 61 | public function getSection(): string { 62 | return 'connected-accounts'; 63 | } 64 | 65 | public function getPriority(): int { 66 | return 10; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /lib/Settings/PersonalSection.php: -------------------------------------------------------------------------------- 1 | l->t('Connected accounts'); 34 | } 35 | 36 | /** 37 | * @return int whether the form should be rather on the top or bottom of 38 | * the settings navigation. The sections are arranged in ascending order of 39 | * the priority values. It is required to return a value between 0 and 99. 40 | */ 41 | public function getPriority(): int { 42 | return 80; 43 | } 44 | 45 | /** 46 | * @return string The relative path to a an icon describing the section 47 | */ 48 | public function getIcon(): string { 49 | return $this->urlGenerator->imagePath('core', 'categories/integration.svg'); 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | app_name=integration_zammad 2 | app_version=$(version) 3 | project_dir=. 4 | build_dir=/tmp/build 5 | sign_dir=/tmp/sign 6 | cert_dir=$(HOME)/.nextcloud/certificates 7 | webserveruser ?= www-data 8 | occ_dir ?= /var/www/html/dev/server 9 | 10 | build_tools_directory=$(CURDIR)/build/tools 11 | npm=$(shell which npm 2> /dev/null) 12 | composer=$(shell which composer 2> /dev/null) 13 | 14 | all: build 15 | 16 | .PHONY: build 17 | build: 18 | ifneq (,$(wildcard $(CURDIR)/composer.json)) 19 | make composer 20 | endif 21 | ifneq (,$(wildcard $(CURDIR)/package.json)) 22 | make npm 23 | endif 24 | 25 | .PHONY: dev 26 | dev: 27 | ifneq (,$(wildcard $(CURDIR)/composer.json)) 28 | make composer 29 | endif 30 | ifneq (,$(wildcard $(CURDIR)/package.json)) 31 | make npm-dev 32 | endif 33 | 34 | # Installs and updates the composer dependencies. If composer is not installed 35 | # a copy is fetched from the web 36 | .PHONY: composer 37 | composer: 38 | ifeq (, $(composer)) 39 | @echo "No composer command available, downloading a copy from the web" 40 | mkdir -p $(build_tools_directory) 41 | curl -sS https://getcomposer.org/installer | php 42 | mv composer.phar $(build_tools_directory) 43 | php $(build_tools_directory)/composer.phar install --prefer-dist 44 | else 45 | composer install --prefer-dist 46 | endif 47 | 48 | .PHONY: npm 49 | npm: 50 | $(npm) ci 51 | $(npm) run build 52 | 53 | .PHONY: npm-dev 54 | npm-dev: 55 | $(npm) ci 56 | $(npm) run dev 57 | 58 | clean: 59 | sudo rm -rf $(build_dir) 60 | sudo rm -rf $(sign_dir) 61 | 62 | appstore: clean 63 | mkdir -p $(sign_dir) 64 | mkdir -p $(build_dir) 65 | @rsync -a \ 66 | --exclude=.git \ 67 | --exclude=appinfo/signature.json \ 68 | --exclude=*.swp \ 69 | --exclude=build \ 70 | --exclude=.gitignore \ 71 | --exclude=.travis.yml \ 72 | --exclude=.scrutinizer.yml \ 73 | --exclude=CONTRIBUTING.md \ 74 | --exclude=composer.json \ 75 | --exclude=composer.lock \ 76 | --exclude=composer.phar \ 77 | --exclude=package.json \ 78 | --exclude=package-lock.json \ 79 | --exclude=js/node_modules \ 80 | --exclude=node_modules \ 81 | --exclude=src \ 82 | --exclude=translationfiles \ 83 | --exclude=webpack.* \ 84 | --exclude=stylelint.config.js \ 85 | --exclude=.eslintrc.js \ 86 | --exclude=.github \ 87 | --exclude=.gitlab-ci.yml \ 88 | --exclude=crowdin.yml \ 89 | --exclude=tools \ 90 | --exclude=.tx \ 91 | --exclude=.l10nignore \ 92 | --exclude=l10n/.tx \ 93 | --exclude=l10n/l10n.pl \ 94 | --exclude=l10n/templates \ 95 | --exclude=l10n/*.sh \ 96 | --exclude=l10n/[a-z][a-z] \ 97 | --exclude=l10n/[a-z][a-z]_[A-Z][A-Z] \ 98 | --exclude=l10n/no-php \ 99 | --exclude=makefile \ 100 | --exclude=screenshots \ 101 | --exclude=phpunit*xml \ 102 | --exclude=tests \ 103 | --exclude=ci \ 104 | --exclude=vendor/bin \ 105 | $(project_dir) $(sign_dir)/$(app_name) 106 | @if [ -f $(cert_dir)/$(app_name).key ]; then \ 107 | sudo chown $(webserveruser) $(sign_dir)/$(app_name)/appinfo ;\ 108 | sudo -u $(webserveruser) php $(occ_dir)/occ integrity:sign-app --privateKey=$(cert_dir)/$(app_name).key --certificate=$(cert_dir)/$(app_name).crt --path=$(sign_dir)/$(app_name)/ ;\ 109 | sudo chown -R $(USER) $(sign_dir)/$(app_name)/appinfo ;\ 110 | else \ 111 | echo "!!! WARNING signature key not found" ;\ 112 | fi 113 | tar -czf $(build_dir)/$(app_name)-$(app_version).tar.gz \ 114 | -C $(sign_dir) $(app_name) 115 | @if [ -f $(cert_dir)/$(app_name).key ]; then \ 116 | echo NEXTCLOUD------------------------------------------ ;\ 117 | openssl dgst -sha512 -sign $(cert_dir)/$(app_name).key $(build_dir)/$(app_name)-$(app_version).tar.gz | openssl base64 | tee $(build_dir)/sign.txt ;\ 118 | fi 119 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "integration_zammad", 3 | "version": "2.1.0", 4 | "description": "Zammad integration", 5 | "main": "index.js", 6 | "directories": { 7 | "test": "tests" 8 | }, 9 | "type": "module", 10 | "scripts": { 11 | "build": "NODE_ENV=production vite --mode production build", 12 | "dev": "NODE_ENV=development vite --mode development build", 13 | "watch": "NODE_ENV=development vite --mode development build --watch", 14 | "lint": "eslint --ext .js,.vue src", 15 | "lint:fix": "eslint --ext .js,.vue src --fix", 16 | "stylelint": "stylelint src/**/*.vue src/**/*.scss src/**/*.css", 17 | "stylelint:fix": "stylelint src/**/*.vue src/**/*.scss src/**/*.css --fix" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/nextcloud/integration_zammad" 22 | }, 23 | "keywords": [ 24 | "zammad" 25 | ], 26 | "author": "Julien Veyssier", 27 | "license": "AGPL-3.0", 28 | "bugs": { 29 | "url": "https://github.com/nextcloud/integration_zammad/issues" 30 | }, 31 | "homepage": "https://github.com/nextcloud/integration_zammad", 32 | "browserslist": [ 33 | "extends @nextcloud/browserslist-config" 34 | ], 35 | "engines": { 36 | "node": "20.x", 37 | "npm": "10.x" 38 | }, 39 | "dependencies": { 40 | "@nextcloud/auth": "^2.5.1", 41 | "@nextcloud/axios": "^2.1.0", 42 | "@nextcloud/dialogs": "^6.3.0", 43 | "@nextcloud/initial-state": "^2.0.0", 44 | "@nextcloud/l10n": "^3.2.0", 45 | "@nextcloud/moment": "^1.3.4", 46 | "@nextcloud/password-confirmation": "^5.3.1", 47 | "@nextcloud/router": "^3.0.1", 48 | "@nextcloud/vue": "^8.26.1", 49 | "vue": "^2.7.12", 50 | "vue-html-secure": "^1.0.10", 51 | "vue-material-design-icons": "^5.1.2" 52 | }, 53 | "devDependencies": { 54 | "@nextcloud/babel-config": "^1.0.0", 55 | "@nextcloud/browserslist-config": "^3.0.1", 56 | "@nextcloud/eslint-config": "^8.4.2", 57 | "@nextcloud/stylelint-config": "^3.0.1", 58 | "@nextcloud/vite-config": "^1.4.2", 59 | "vite-plugin-eslint": "^1.8.1", 60 | "vite-plugin-stylelint": "^5.3.1" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /psalm.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/adminSettings.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nextcloud - zammad 3 | * 4 | * 5 | * This file is licensed under the Affero General Public License version 3 or 6 | * later. See the COPYING file. 7 | * 8 | * @author Julien Veyssier 9 | * @copyright Julien Veyssier 2020 10 | */ 11 | 12 | import Vue from 'vue' 13 | import AdminSettings from './components/AdminSettings.vue' 14 | Vue.mixin({ methods: { t, n } }) 15 | 16 | const View = Vue.extend(AdminSettings) 17 | new View().$mount('#zammad_prefs') 18 | -------------------------------------------------------------------------------- /src/components/icons/CommentIcon.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 41 | -------------------------------------------------------------------------------- /src/components/icons/ZammadIcon.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 41 | -------------------------------------------------------------------------------- /src/dashboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nextcloud - zammad 3 | * 4 | * 5 | * This file is licensed under the Affero General Public License version 3 or 6 | * later. See the COPYING file. 7 | * 8 | * @author Julien Veyssier 9 | * @copyright Julien Veyssier 2020 10 | */ 11 | 12 | document.addEventListener('DOMContentLoaded', () => { 13 | OCA.Dashboard.register('zammad_notifications', async (el, { widget }) => { 14 | const { default: Vue } = await import('vue') 15 | const { default: Dashboard } = await import('./views/Dashboard.vue') 16 | Vue.mixin({ methods: { t, n } }) 17 | const View = Vue.extend(Dashboard) 18 | new View({ 19 | propsData: { title: widget.title }, 20 | }).$mount(el) 21 | }) 22 | }) 23 | -------------------------------------------------------------------------------- /src/personalSettings.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Nextcloud - zammad 3 | * 4 | * 5 | * This file is licensed under the Affero General Public License version 3 or 6 | * later. See the COPYING file. 7 | * 8 | * @author Julien Veyssier 9 | * @copyright Julien Veyssier 2020 10 | */ 11 | 12 | import Vue from 'vue' 13 | import PersonalSettings from './components/PersonalSettings.vue' 14 | Vue.mixin({ methods: { t, n } }) 15 | 16 | const View = Vue.extend(PersonalSettings) 17 | new View().$mount('#zammad_prefs') 18 | -------------------------------------------------------------------------------- /src/reference.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @copyright Copyright (c) 2022 Julien Veyssier 3 | * 4 | * @author Julien Veyssier 5 | * 6 | * @license AGPL-3.0-or-later 7 | * 8 | * This program is free software: you can redistribute it and/or modify 9 | * it under the terms of the GNU Affero General Public License as 10 | * published by the Free Software Foundation, either version 3 of the 11 | * License, or (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | * GNU Affero General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Affero General Public License 19 | * along with this program. If not, see . 20 | */ 21 | 22 | import { registerWidget } from '@nextcloud/vue/dist/Components/NcRichText.js' 23 | 24 | registerWidget('integration_zammad', async (el, { richObjectType, richObject, accessible }) => { 25 | const { default: Vue } = await import('vue') 26 | const { default: ReferenceZammadWidget } = await import('./views/ReferenceZammadWidget.vue') 27 | Vue.mixin({ methods: { t, n } }) 28 | const Widget = Vue.extend(ReferenceZammadWidget) 29 | new Widget({ 30 | propsData: { 31 | richObjectType, 32 | richObject, 33 | accessible, 34 | }, 35 | }).$mount(el) 36 | }) 37 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | let mytimer = 0 2 | export function delay(callback, ms) { 3 | return function() { 4 | const context = this 5 | const args = arguments 6 | clearTimeout(mytimer) 7 | mytimer = setTimeout(function() { 8 | callback.apply(context, args) 9 | }, ms || 0) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /stylelint.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: 'stylelint-config-recommended-vue', 3 | rules: { 4 | 'selector-type-no-unknown': null, 5 | 'rule-empty-line-before': [ 6 | 'always', 7 | { 8 | ignore: ['after-comment', 'inside-block'], 9 | }, 10 | ], 11 | 'declaration-empty-line-before': [ 12 | 'never', 13 | { 14 | ignore: ['after-declaration'], 15 | }, 16 | ], 17 | 'comment-empty-line-before': null, 18 | 'selector-type-case': null, 19 | 'no-descending-specificity': null, 20 | 'selector-pseudo-element-no-unknown': [ 21 | true, 22 | { 23 | ignorePseudoElements: ['v-deep'], 24 | }, 25 | ], 26 | }, 27 | plugins: ['stylelint-scss'], 28 | } 29 | -------------------------------------------------------------------------------- /templates/adminSettings.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |
-------------------------------------------------------------------------------- /templates/personalSettings.php: -------------------------------------------------------------------------------- 1 | 5 | 6 |
-------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | import { createAppConfig } from '@nextcloud/vite-config' 6 | import eslint from 'vite-plugin-eslint' 7 | import stylelint from 'vite-plugin-stylelint' 8 | 9 | const isProduction = process.env.NODE_ENV === 'production' 10 | 11 | export default createAppConfig({ 12 | personalSettings: 'src/personalSettings.js', 13 | adminSettings: 'src/adminSettings.js', 14 | reference: 'src/reference.js', 15 | dashboard: 'src/dashboard.js', 16 | }, { 17 | config: { 18 | css: { 19 | modules: { 20 | localsConvention: 'camelCase', 21 | }, 22 | preprocessorOptions: { 23 | scss: { 24 | api: 'modern-compiler', 25 | }, 26 | }, 27 | }, 28 | plugins: [eslint(), stylelint()], 29 | }, 30 | inlineCSS: { relativeCSSInjection: true }, 31 | minify: isProduction, 32 | }) 33 | --------------------------------------------------------------------------------