8 |
--------------------------------------------------------------------------------
/vendor-bin/psalm/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": {
3 | "platform": {
4 | "php": "8.1.31"
5 | },
6 | "sort-packages": true
7 | },
8 | "require-dev": {
9 | "vimeo/psalm": "^5.26"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/vendor-bin/phpunit/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": {
3 | "platform": {
4 | "php": "8.1"
5 | },
6 | "sort-packages": true
7 | },
8 | "require-dev": {
9 | "phpunit/phpunit": "^10.5"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/l10n/eo.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Creation" : "Kreado",
5 | "Create" : "Krei",
6 | "Failed to load tags" : "Ŝargo de la etikedoj malsukcesis"
7 | },
8 | "nplurals=2; plural=(n != 1);");
9 |
--------------------------------------------------------------------------------
/l10n/th.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "An error occurred while changing the setting" : "เกิดข้อผิดพลาดขึ้นในขณะที่เปลี่ยนการตั้งค่า",
5 | "Create" : "สร้าง"
6 | },
7 | "nplurals=1; plural=0;");
8 |
--------------------------------------------------------------------------------
/vendor-bin/openapi-extractor/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": {
3 | "platform": {
4 | "php": "8.1"
5 | },
6 | "sort-packages": true
7 | },
8 | "require-dev": {
9 | "nextcloud/openapi-extractor": "^1.5.1"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Tests - auto-generated files
2 | /tests/.phpunit.cache
3 | /tests/.phpunit.result.cache
4 | /.php-cs-fixer.cache
5 |
6 | # Build related files
7 | /build
8 | /js
9 | /node_modules
10 | /vendor
11 | /vendor-bin/*/vendor
12 |
--------------------------------------------------------------------------------
/l10n/vi.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Days" : "Ngày",
3 | "Weeks" : "Tuần",
4 | "Months" : "Tháng",
5 | "Years" : "Năm",
6 | "Creation" : "Sự tạo lập",
7 | "Create" : "Tạo"
8 | },"pluralForm" :"nplurals=1; plural=0;"
9 | }
--------------------------------------------------------------------------------
/l10n/oc.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Years" : "Annadas",
3 | "Create" : "Crear",
4 | "_%n day_::_%n days_" : ["%n jorn","%n jorns"],
5 | "_%n week_::_%n weeks_" : ["%n setmana","%n setmanas"]
6 | },"pluralForm" :"nplurals=2; plural=(n > 1);"
7 | }
--------------------------------------------------------------------------------
/vendor-bin/csfixer/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": {
3 | "platform": {
4 | "php": "8.1"
5 | },
6 | "sort-packages": true
7 | },
8 | "require-dev": {
9 | "friendsofphp/php-cs-fixer": "^3.64",
10 | "nextcloud/coding-standard": "^1.3"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/l10n/vi.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Days" : "Ngày",
5 | "Weeks" : "Tuần",
6 | "Months" : "Tháng",
7 | "Years" : "Năm",
8 | "Creation" : "Sự tạo lập",
9 | "Create" : "Tạo"
10 | },
11 | "nplurals=1; plural=0;");
12 |
--------------------------------------------------------------------------------
/l10n/oc.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Years" : "Annadas",
5 | "Create" : "Crear",
6 | "_%n day_::_%n days_" : ["%n jorn","%n jorns"],
7 | "_%n week_::_%n weeks_" : ["%n setmana","%n setmanas"]
8 | },
9 | "nplurals=2; plural=(n > 1);");
10 |
--------------------------------------------------------------------------------
/l10n/uz.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Create" : "Yaratish",
3 | "_%n day_::_%n days_" : ["%n kun"],
4 | "_%n week_::_%n weeks_" : ["%n hafta"],
5 | "_%n month_::_%n months_" : ["%n oy"],
6 | "_%n year_::_%n years_" : ["%n yil"]
7 | },"pluralForm" :"nplurals=1; plural=0;"
8 | }
--------------------------------------------------------------------------------
/l10n/ro.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Days" : "Zile",
3 | "Creation" : "Creere",
4 | "An error occurred while changing the setting" : "A apărut o eroare la modificarea setării",
5 | "Create" : "Creează"
6 | },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"
7 | }
--------------------------------------------------------------------------------
/l10n/uz.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Create" : "Yaratish",
5 | "_%n day_::_%n days_" : ["%n kun"],
6 | "_%n week_::_%n weeks_" : ["%n hafta"],
7 | "_%n month_::_%n months_" : ["%n oy"],
8 | "_%n year_::_%n years_" : ["%n yil"]
9 | },
10 | "nplurals=1; plural=0;");
11 |
--------------------------------------------------------------------------------
/AUTHORS.md:
--------------------------------------------------------------------------------
1 |
5 | # Authors
6 |
7 | - Joas Schilling
8 | - Lukas Reschke
9 | - Roeland Jago Douma
10 | - sualko
11 |
--------------------------------------------------------------------------------
/src/logger.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3 | * SPDX-License-Identifier: AGPL-3.0-or-later
4 | */
5 |
6 | import { getLoggerBuilder } from '@nextcloud/logger'
7 |
8 | export default getLoggerBuilder()
9 | .setApp('files_retention')
10 | .detectUser()
11 | .build()
12 |
--------------------------------------------------------------------------------
/l10n/ro.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Days" : "Zile",
5 | "Creation" : "Creere",
6 | "An error occurred while changing the setting" : "A apărut o eroare la modificarea setării",
7 | "Create" : "Creează"
8 | },
9 | "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));");
10 |
--------------------------------------------------------------------------------
/l10n/lt_LT.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Years" : "Metai",
3 | "Creation" : "Sukūrimas",
4 | "Create" : "Sukurti",
5 | "Failed to load tags" : "Nepavyko įkelti žymų"
6 | },"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);"
7 | }
--------------------------------------------------------------------------------
/l10n/si.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "ගොනු රඳවා තබා ගැනීම",
3 | "{file} will be removed in 24 hours" : "{file} පැය 24 කින් ඉවත් කෙරේ",
4 | "Retention" : "රඳවා තබා ගැනීම",
5 | "Days" : "දින",
6 | "Weeks" : "සති",
7 | "Months" : "මාස",
8 | "Years" : "වර්ෂ",
9 | "Create" : "සාදන්න"
10 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
11 | }
--------------------------------------------------------------------------------
/.tx/config:
--------------------------------------------------------------------------------
1 | [main]
2 | host = https://www.transifex.com
3 | lang_map = th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk
4 |
5 | [o:nextcloud:p:nextcloud:r:files_retention]
6 | file_filter = translationfiles//files_retention.po
7 | source_file = translationfiles/templates/files_retention.pot
8 | source_lang = en
9 | type = PO
10 |
11 |
--------------------------------------------------------------------------------
/l10n/lt_LT.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Years" : "Metai",
5 | "Creation" : "Sukūrimas",
6 | "Create" : "Sukurti",
7 | "Failed to load tags" : "Nepavyko įkelti žymų"
8 | },
9 | "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);");
10 |
--------------------------------------------------------------------------------
/l10n/si.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "ගොනු රඳවා තබා ගැනීම",
5 | "{file} will be removed in 24 hours" : "{file} පැය 24 කින් ඉවත් කෙරේ",
6 | "Retention" : "රඳවා තබා ගැනීම",
7 | "Days" : "දින",
8 | "Weeks" : "සති",
9 | "Months" : "මාස",
10 | "Years" : "වර්ෂ",
11 | "Create" : "සාදන්න"
12 | },
13 | "nplurals=2; plural=(n != 1);");
14 |
--------------------------------------------------------------------------------
/l10n/da.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Retention" : "Tilbageholdelse",
3 | "Days" : "Dage",
4 | "Weeks" : "Uger",
5 | "Months" : "Måneder",
6 | "Years" : "År",
7 | "An error occurred while changing the setting" : "Der opstod en fejl under ændring af indstillingen.",
8 | "Create" : "Opret",
9 | "Failed to load tags" : "Kunne ikke indlæse tags"
10 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
11 | }
--------------------------------------------------------------------------------
/l10n/id.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Retensi berkas",
3 | "{file} will be removed in 24 hours" : "{file} akan terhapus setelah 24 jam",
4 | "Retention" : "Retensi",
5 | "Days" : "Hari",
6 | "Weeks" : "Pekan",
7 | "Months" : "Bulan",
8 | "Years" : "Tahun",
9 | "Create" : "Buat",
10 | "Failed to load tags" : "Gagal memuat tag"
11 | },"pluralForm" :"nplurals=1; plural=0;"
12 | }
--------------------------------------------------------------------------------
/.php-cs-fixer.dist.php:
--------------------------------------------------------------------------------
1 | getFinder()
12 | ->ignoreVCSIgnored(true)
13 | ->notPath('build')
14 | ->notPath('l10n')
15 | ->notPath('src')
16 | ->notPath('vendor')
17 | ->notPath('vendor-bin')
18 | ->in(__DIR__);
19 | return $config;
20 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: Joas Schilling
3 | * SPDX-License-Identifier: AGPL-3.0-only
4 | */
5 |
6 | import { createStore } from 'vuex'
7 | import retentionStore from './retentionStore.js'
8 |
9 | const mutations = {}
10 |
11 | export default createStore({
12 | modules: {
13 | retentionStore,
14 | },
15 |
16 | mutations,
17 |
18 | strict: process.env.NODE_ENV !== 'production',
19 | })
20 |
--------------------------------------------------------------------------------
/l10n/da.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Retention" : "Tilbageholdelse",
5 | "Days" : "Dage",
6 | "Weeks" : "Uger",
7 | "Months" : "Måneder",
8 | "Years" : "År",
9 | "An error occurred while changing the setting" : "Der opstod en fejl under ændring af indstillingen.",
10 | "Create" : "Opret",
11 | "Failed to load tags" : "Kunne ikke indlæse tags"
12 | },
13 | "nplurals=2; plural=(n != 1);");
14 |
--------------------------------------------------------------------------------
/l10n/id.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Retensi berkas",
5 | "{file} will be removed in 24 hours" : "{file} akan terhapus setelah 24 jam",
6 | "Retention" : "Retensi",
7 | "Days" : "Hari",
8 | "Weeks" : "Pekan",
9 | "Months" : "Bulan",
10 | "Years" : "Tahun",
11 | "Create" : "Buat",
12 | "Failed to load tags" : "Gagal memuat tag"
13 | },
14 | "nplurals=1; plural=0;");
15 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": ["src/**/*.ts", "src/**/*.vue", "src/env.d.ts"],
3 | "compilerOptions": {
4 | "module": "ESNext",
5 | "moduleResolution": "bundler",
6 | "target": "ESNext",
7 | "strictNullChecks": true,
8 | "sourceMap": true,
9 | "allowSyntheticDefaultImports": true,
10 | "declaration": false,
11 | "baseUrl": ".",
12 | "paths": {
13 | "@/*": ["src/*"]
14 | }
15 | },
16 | "vueCompilerOptions": {
17 | "target": "2.7"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/Constants.php:
--------------------------------------------------------------------------------
1 | [
10 | ['name' => 'API#getRetentions', 'url' => '/api/v1/retentions', 'verb' => 'GET'],
11 | ['name' => 'API#addRetention', 'url' => '/api/v1/retentions', 'verb' => 'POST'],
12 | ['name' => 'API#deleteRetention', 'url' => '/api/v1/retentions/{id}', 'verb' => 'DELETE'],
13 | ],
14 | ];
15 |
--------------------------------------------------------------------------------
/l10n/ka.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "An error occurred while changing the setting" : "An error occurred while changing the setting",
3 | "Create" : "Create",
4 | "_%n day_::_%n days_" : ["%n day","%n days"],
5 | "_%n week_::_%n weeks_" : ["%n week","%n weeks"],
6 | "_%n month_::_%n months_" : ["%n month","%n months"],
7 | "_%n year_::_%n years_" : ["%n year","%n years"],
8 | "Failed to load tags" : "Failed to load tags"
9 | },"pluralForm" :"nplurals=2; plural=(n!=1);"
10 | }
--------------------------------------------------------------------------------
/l10n/ast.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Days" : "Díes",
3 | "Weeks" : "Selmanes",
4 | "Months" : "Meses",
5 | "Years" : "Años",
6 | "Create" : "Crear",
7 | "_%n day_::_%n days_" : ["%n día","%n díes"],
8 | "_%n week_::_%n weeks_" : ["%n selmana","%n selmanes"],
9 | "_%n month_::_%n months_" : ["%n mes","%n meses"],
10 | "_%n year_::_%n years_" : ["%n añu","%n años"],
11 | "Failed to load tags" : "Nun se puen cargar les etiquetes"
12 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
13 | }
--------------------------------------------------------------------------------
/l10n/ka.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "An error occurred while changing the setting" : "An error occurred while changing the setting",
5 | "Create" : "Create",
6 | "_%n day_::_%n days_" : ["%n day","%n days"],
7 | "_%n week_::_%n weeks_" : ["%n week","%n weeks"],
8 | "_%n month_::_%n months_" : ["%n month","%n months"],
9 | "_%n year_::_%n years_" : ["%n year","%n years"],
10 | "Failed to load tags" : "Failed to load tags"
11 | },
12 | "nplurals=2; plural=(n!=1);");
13 |
--------------------------------------------------------------------------------
/l10n/ast.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Days" : "Díes",
5 | "Weeks" : "Selmanes",
6 | "Months" : "Meses",
7 | "Years" : "Años",
8 | "Create" : "Crear",
9 | "_%n day_::_%n days_" : ["%n día","%n díes"],
10 | "_%n week_::_%n weeks_" : ["%n selmana","%n selmanes"],
11 | "_%n month_::_%n months_" : ["%n mes","%n meses"],
12 | "_%n year_::_%n years_" : ["%n añu","%n años"],
13 | "Failed to load tags" : "Nun se puen cargar les etiquetes"
14 | },
15 | "nplurals=2; plural=(n != 1);");
16 |
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3 | * SPDX-License-Identifier: AGPL-3.0-or-later
4 | */
5 |
6 | export interface BaseTag {
7 | id?: number
8 | userVisible: boolean
9 | userAssignable: boolean
10 | readonly canAssign: boolean // Computed server-side
11 | etag?: string
12 | color?: string
13 | }
14 |
15 | export type Tag = BaseTag & {
16 | displayName: string
17 | }
18 |
19 | export type TagWithId = Required
20 |
21 | export type ServerTag = BaseTag & {
22 | name: string
23 | }
24 |
--------------------------------------------------------------------------------
/.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 | labels:
12 | - 3. to review
13 | - dependencies
14 | - package-ecosystem: npm
15 | directory: "/"
16 | schedule:
17 | interval: weekly
18 | day: saturday
19 | time: "03:00"
20 | timezone: Europe/Paris
21 | open-pull-requests-limit: 10
22 | labels:
23 | - 3. to review
24 | - dependencies
25 |
--------------------------------------------------------------------------------
/l10n/lv.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Retention" : "Paturēšana",
3 | "Days" : "Dienas",
4 | "Weeks" : "Nedēļas",
5 | "Months" : "Mēniši",
6 | "Years" : "Gadi",
7 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Nosaki, vai datnes, kuras atzīmētas ar noteiktu birku, pēc kāda laika vajadzētu automātiski izdzēst. Tas ir noderīgi slepeniem dokumentiem.",
8 | "Create" : "Izveidot"
9 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
10 | }
--------------------------------------------------------------------------------
/tests/bootstrap.php:
--------------------------------------------------------------------------------
1 | enableApp('files_retention');
21 | Server::get(IAppManager::class)->loadApp('files_retention');
22 |
--------------------------------------------------------------------------------
/l10n/lv.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Retention" : "Paturēšana",
5 | "Days" : "Dienas",
6 | "Weeks" : "Nedēļas",
7 | "Months" : "Mēniši",
8 | "Years" : "Gadi",
9 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Nosaki, vai datnes, kuras atzīmētas ar noteiktu birku, pēc kāda laika vajadzētu automātiski izdzēst. Tas ir noderīgi slepeniem dokumentiem.",
10 | "Create" : "Izveidot"
11 | },
12 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
13 |
--------------------------------------------------------------------------------
/l10n/be.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Create" : "Стварыць",
3 | "_%n day_::_%n days_" : ["%n дзень","%n дні","%n дзён","%n дзён"],
4 | "_%n week_::_%n weeks_" : ["%n тыдзень","%n тыдні","%n тыдняў","%n тыдняў"],
5 | "_%n month_::_%n months_" : ["%n месяц","%n месяцы","%n месяцаў","%n месяцаў"],
6 | "_%n year_::_%n years_" : ["%n год","%n гады","%n гадоў","%n гадоў"],
7 | "Failed to load tags" : "Не ўдалося загрузіць тэгі"
8 | },"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);"
9 | }
--------------------------------------------------------------------------------
/l10n/mk.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Months" : "Месеци",
3 | "Number of days, weeks, months or years after which the files should be deleted" : "Број на денови, недели, месеци или години по кои датотеките треба да се избришат",
4 | "Create" : "Креирај",
5 | "_%n day_::_%n days_" : ["%n ден","%n дена"],
6 | "_%n week_::_%n weeks_" : ["%n недела","%n недели"],
7 | "_%n month_::_%n months_" : ["%n месец","%n месеци"],
8 | "_%n year_::_%n years_" : ["%n година","%n години"],
9 | "Failed to load tags" : "Неуспешно вчитување на ознаки"
10 | },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
11 | }
--------------------------------------------------------------------------------
/l10n/be.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Create" : "Стварыць",
5 | "_%n day_::_%n days_" : ["%n дзень","%n дні","%n дзён","%n дзён"],
6 | "_%n week_::_%n weeks_" : ["%n тыдзень","%n тыдні","%n тыдняў","%n тыдняў"],
7 | "_%n month_::_%n months_" : ["%n месяц","%n месяцы","%n месяцаў","%n месяцаў"],
8 | "_%n year_::_%n years_" : ["%n год","%n гады","%n гадоў","%n гадоў"],
9 | "Failed to load tags" : "Не ўдалося загрузіць тэгі"
10 | },
11 | "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);");
12 |
--------------------------------------------------------------------------------
/lib/ResponseDefinitions.php:
--------------------------------------------------------------------------------
1 |
5 | # Nextcloud Files Retention App
6 |
7 | [](https://api.reuse.software/info/github.com/nextcloud/files_retention)
8 |
9 | An app for Nextcloud to control automatic deletion of files after a given time.
10 | Optionally the users can be informed the day before.
11 |
12 | 
13 |
14 | Documentation: https://docs.nextcloud.com/server/stable/admin_manual/file_workflows/retention.html
15 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: Joas Schilling
3 | * SPDX-License-Identifier: AGPL-3.0-only
4 | */
5 |
6 | import { createApp } from 'vue'
7 |
8 | import { generateFilePath } from '@nextcloud/router'
9 | import { getRequestToken } from '@nextcloud/auth'
10 |
11 | import AdminSettings from './AdminSettings.vue'
12 | import store from './store/index.js'
13 |
14 | // Styles
15 | import '@nextcloud/dialogs/style.css'
16 |
17 | // eslint-disable-next-line
18 | __webpack_nonce__ = btoa(getRequestToken())
19 |
20 | // eslint-disable-next-line
21 | __webpack_public_path__ = generateFilePath('files_retention', '', 'js/')
22 |
23 | createApp(AdminSettings)
24 | .use(store)
25 | .mount('#files_retention')
26 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3 | * SPDX-License-Identifier: AGPL-3.0-or-later
4 | */
5 |
6 | import camelCase from 'camelcase'
7 |
8 | import type { DAVResultResponseProps } from 'webdav'
9 |
10 | import type { BaseTag, TagWithId } from './types.js'
11 |
12 | export const defaultBaseTag: BaseTag = {
13 | userVisible: true,
14 | userAssignable: true,
15 | canAssign: true,
16 | }
17 |
18 | export const parseTags = (tags: { props: DAVResultResponseProps }[]): TagWithId[] => {
19 | return tags.map(({ props }) => Object.fromEntries(
20 | Object.entries(props)
21 | .map(([key, value]) => [camelCase(key), camelCase(key) === 'displayName' ? String(value) : value]),
22 | )) as TagWithId[]
23 | }
24 |
--------------------------------------------------------------------------------
/tests/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 | .
11 |
12 |
13 |
14 | ../../files_retention
15 |
16 |
17 | ../../files_retention/tests
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/img/app-dark.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/img/app.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/workflows/reuse.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 Free Software Foundation Europe e.V.
7 | #
8 | # SPDX-License-Identifier: CC0-1.0
9 |
10 | name: REUSE Compliance Check
11 |
12 | on: [pull_request]
13 |
14 | permissions:
15 | contents: read
16 |
17 | jobs:
18 | reuse-compliance-check:
19 | runs-on: ubuntu-latest-low
20 | steps:
21 | - name: Checkout
22 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
23 | with:
24 | persist-credentials: false
25 |
26 | - name: REUSE Compliance Check
27 | uses: fsfe/reuse-action@676e2d560c9a403aa252096d99fcab3e1132b0f5 # v6.0.0
28 |
--------------------------------------------------------------------------------
/src/services/davClient.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3 | * SPDX-License-Identifier: AGPL-3.0-or-later
4 | */
5 |
6 | import { createClient } from 'webdav'
7 | import { generateRemoteUrl } from '@nextcloud/router'
8 | import { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'
9 |
10 | // init webdav client
11 | const rootUrl = generateRemoteUrl('dav')
12 | export const davClient = createClient(rootUrl)
13 |
14 | // set CSRF token header
15 | const setHeaders = (token: string | null) => {
16 | davClient.setHeaders({
17 | // Add this so the server knows it is an request from the browser
18 | 'X-Requested-With': 'XMLHttpRequest',
19 | // Inject user auth
20 | requesttoken: token ?? '',
21 | })
22 | }
23 |
24 | // refresh headers when request token changes
25 | onRequestTokenUpdate(setHeaders)
26 | setHeaders(getRequestToken())
27 |
--------------------------------------------------------------------------------
/l10n/he.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "שמירת קבצים",
3 | "{file} will be removed in 24 hours" : "{file} יוסר תוך 24 שעות",
4 | "Retention" : "שמירה",
5 | "Days" : "ימים",
6 | "Weeks" : "שבועות",
7 | "Months" : "חודשים",
8 | "Years" : "שנים",
9 | "Creation" : "יצירה",
10 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "הגדרה אם קובץ מתויג בתגית מסוימת אמור להימחק אוטומטית לאחר זמן מה. שימושי למסמכים מסווגים.",
11 | "Create" : "יצירה",
12 | "_%n day_::_%n days_" : ["יום","יומיים","%n ימים"],
13 | "_%n month_::_%n months_" : ["חודש","חודשיים","%n חודשים"],
14 | "_%n year_::_%n years_" : ["שנה","שנתיים","%n שנים"],
15 | "Failed to load tags" : "טעינת התגיות נכשלה"
16 | },"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"
17 | }
--------------------------------------------------------------------------------
/l10n/he.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "שמירת קבצים",
5 | "{file} will be removed in 24 hours" : "{file} יוסר תוך 24 שעות",
6 | "Retention" : "שמירה",
7 | "Days" : "ימים",
8 | "Weeks" : "שבועות",
9 | "Months" : "חודשים",
10 | "Years" : "שנים",
11 | "Creation" : "יצירה",
12 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "הגדרה אם קובץ מתויג בתגית מסוימת אמור להימחק אוטומטית לאחר זמן מה. שימושי למסמכים מסווגים.",
13 | "Create" : "יצירה",
14 | "_%n day_::_%n days_" : ["יום","יומיים","%n ימים"],
15 | "_%n month_::_%n months_" : ["חודש","חודשיים","%n חודשים"],
16 | "_%n year_::_%n years_" : ["שנה","שנתיים","%n שנים"],
17 | "Failed to load tags" : "טעינת התגיות נכשלה"
18 | },
19 | "nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;");
20 |
--------------------------------------------------------------------------------
/l10n/es_MX.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Retención de archivos",
3 | "Retention" : "Retención",
4 | "Days" : "Días",
5 | "Weeks" : "Semanas",
6 | "Months" : "Meses",
7 | "Years" : "Años",
8 | "Creation" : "Creación",
9 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Define si los archivos etiquetados con una etiqueta específica deben ser borrados automáticamente después de un tiempo. Esto es útil para archivos confidenciales.",
10 | "Create" : "Crear",
11 | "_%n day_::_%n days_" : ["%n día","%n días","%n días"],
12 | "_%n month_::_%n months_" : ["%n mes","%n meses","%n meses"],
13 | "_%n year_::_%n years_" : ["%n año","%n años","%n años"],
14 | "Failed to load tags" : "No se pudieron cargar las etiquetas"
15 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
16 | }
--------------------------------------------------------------------------------
/l10n/es_MX.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Retención de archivos",
5 | "Retention" : "Retención",
6 | "Days" : "Días",
7 | "Weeks" : "Semanas",
8 | "Months" : "Meses",
9 | "Years" : "Años",
10 | "Creation" : "Creación",
11 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Define si los archivos etiquetados con una etiqueta específica deben ser borrados automáticamente después de un tiempo. Esto es útil para archivos confidenciales.",
12 | "Create" : "Crear",
13 | "_%n day_::_%n days_" : ["%n día","%n días","%n días"],
14 | "_%n month_::_%n months_" : ["%n mes","%n meses","%n meses"],
15 | "_%n year_::_%n years_" : ["%n año","%n años","%n años"],
16 | "Failed to load tags" : "No se pudieron cargar las etiquetas"
17 | },
18 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
19 |
--------------------------------------------------------------------------------
/l10n/is.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Tímabundin geymsla skráa",
3 | "{file} will be removed in 24 hours" : "{file} verður fjarlægð eftir 24 klukkustundir",
4 | "Your systems retention rules will delete this file within 24 hours." : "Geymslureglur kerfisins munu eyða þessari skrá innan 24 klukkustunda.",
5 | "Retention" : "Tímabundin geymsla",
6 | "Days" : "Dagar",
7 | "Weeks" : "Vikur",
8 | "Months" : "Mánuðir",
9 | "Years" : "Ár",
10 | "Creation" : "Búið til",
11 | "Last modification" : "Síðast breyting",
12 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Skilgreindu hvort skrár sem merktar eru með tilteknu merki eigi að eyðast sjálfvirkt eftir tiltekinn tíma. Þetta nýtist t.d. vel fyrir ýmis trúnaðargögn.",
13 | "Create" : "Búa til",
14 | "Failed to load tags" : "Mistókst að hlaða inn merkjum"
15 | },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
16 | }
--------------------------------------------------------------------------------
/l10n/pt_PT.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Creation" : "Criação",
3 | "Number of days, weeks, months or years after which the files should be deleted" : "Número de dias, semanas, meses ou anos após os quais os ficheiros devem ser eliminados",
4 | "An error occurred while changing the setting" : "Ocorreu um erro ao alterar a configuração.",
5 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definir se os ficheiros marcados com uma etiqueta específica serão eliminados automaticamente após algum tempo. Isto é útil para documentos confidenciais.",
6 | "Create" : "Criar",
7 | "_%n day_::_%n days_" : ["%n dia","%n dias","%n dias"],
8 | "_%n month_::_%n months_" : ["%n mês","%n meses","%n meses"],
9 | "_%n year_::_%n years_" : ["%n ano","%n anos","%n anos"],
10 | "Failed to load tags" : "Falha ao carregar as etiquetas"
11 | },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
12 | }
--------------------------------------------------------------------------------
/l10n/is.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Tímabundin geymsla skráa",
5 | "{file} will be removed in 24 hours" : "{file} verður fjarlægð eftir 24 klukkustundir",
6 | "Your systems retention rules will delete this file within 24 hours." : "Geymslureglur kerfisins munu eyða þessari skrá innan 24 klukkustunda.",
7 | "Retention" : "Tímabundin geymsla",
8 | "Days" : "Dagar",
9 | "Weeks" : "Vikur",
10 | "Months" : "Mánuðir",
11 | "Years" : "Ár",
12 | "Creation" : "Búið til",
13 | "Last modification" : "Síðast breyting",
14 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Skilgreindu hvort skrár sem merktar eru með tilteknu merki eigi að eyðast sjálfvirkt eftir tiltekinn tíma. Þetta nýtist t.d. vel fyrir ýmis trúnaðargögn.",
15 | "Create" : "Búa til",
16 | "Failed to load tags" : "Mistókst að hlaða inn merkjum"
17 | },
18 | "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");
19 |
--------------------------------------------------------------------------------
/l10n/pt_PT.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Creation" : "Criação",
5 | "Number of days, weeks, months or years after which the files should be deleted" : "Número de dias, semanas, meses ou anos após os quais os ficheiros devem ser eliminados",
6 | "An error occurred while changing the setting" : "Ocorreu um erro ao alterar a configuração.",
7 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definir se os ficheiros marcados com uma etiqueta específica serão eliminados automaticamente após algum tempo. Isto é útil para documentos confidenciais.",
8 | "Create" : "Criar",
9 | "_%n day_::_%n days_" : ["%n dia","%n dias","%n dias"],
10 | "_%n month_::_%n months_" : ["%n mês","%n meses","%n meses"],
11 | "_%n year_::_%n years_" : ["%n ano","%n anos","%n anos"],
12 | "Failed to load tags" : "Falha ao carregar as etiquetas"
13 | },
14 | "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
15 |
--------------------------------------------------------------------------------
/l10n/br.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Gwarn restroù",
3 | "{file} will be removed in 24 hours" : "{file} a vo lamet a ben 24 heurvez",
4 | "Your systems retention rules will delete this file within 24 hours." : "Ho reolenn sistem gwarn a lamo ar restr-mañ dindan 24 heurvez.",
5 | "Retention" : "Gwarn",
6 | "Days" : "Deiz",
7 | "Weeks" : "Sizun",
8 | "Months" : "Miz",
9 | "Years" : "Bloaz",
10 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Lar ma ar restr klavet gant ur klav resis a vo lamet en un doare otomatek goude un tam amzer. Mat eo evit dielloù kuzulik.",
11 | "Create" : "Krouiñ"
12 | },"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
13 | }
--------------------------------------------------------------------------------
/l10n/br.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Gwarn restroù",
5 | "{file} will be removed in 24 hours" : "{file} a vo lamet a ben 24 heurvez",
6 | "Your systems retention rules will delete this file within 24 hours." : "Ho reolenn sistem gwarn a lamo ar restr-mañ dindan 24 heurvez.",
7 | "Retention" : "Gwarn",
8 | "Days" : "Deiz",
9 | "Weeks" : "Sizun",
10 | "Months" : "Miz",
11 | "Years" : "Bloaz",
12 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Lar ma ar restr klavet gant ur klav resis a vo lamet en un doare otomatek goude un tam amzer. Mat eo evit dielloù kuzulik.",
13 | "Create" : "Krouiñ"
14 | },
15 | "nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
16 |
--------------------------------------------------------------------------------
/LICENSES/MIT.txt:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/psalm.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/l10n/sl.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Samodejno brisanje datotek",
3 | "{file} will be removed in 24 hours" : "Datoteka {file} bo odstranjena v 24 urah.",
4 | "Your systems retention rules will delete this file within 24 hours." : "Sistemske nastavitve določajo brisanje te datoteke v 24 urah.",
5 | "Retention" : "Zadrževanje",
6 | "Days" : "dni",
7 | "Weeks" : "tednov",
8 | "Months" : "mesecev",
9 | "Years" : "let",
10 | "Creation" : "Ustvarjeno",
11 | "Last modification" : "Nazadnje spremenjeno",
12 | "Time units" : "Časovne enote",
13 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Nastavitev omogoča določevanje pravil za samodejno brisanje datotek po določenem času na osnovi posamezni datoteki dodeljene oznake. Možnost je uporabna pri souporabi zaupnih dokumentov.",
14 | "Create" : "Ustvari",
15 | "Failed to load tags" : "Nalaganje oznak je spodletelo"
16 | },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
17 | }
--------------------------------------------------------------------------------
/src/services/retentionService.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: Joas Schilling
3 | * SPDX-License-Identifier: AGPL-3.0-only
4 | */
5 |
6 | import axios from '@nextcloud/axios'
7 | import { generateOcsUrl } from '@nextcloud/router'
8 |
9 | /**
10 | * @param {object} rule The retention rule to add
11 | * @return {object} The axios response
12 | */
13 | const createRetentionRule = async function(rule) {
14 | return axios.post(generateOcsUrl('/apps/files_retention/api/v1/retentions'), rule)
15 | }
16 |
17 | /**
18 | * @param {number} ruleId The retention rule to delete
19 | * @return {object} The axios response
20 | */
21 | const deleteRetentionRule = async function(ruleId) {
22 | return axios.delete(generateOcsUrl('/apps/files_retention/api/v1/retentions/{ruleId}', { ruleId }))
23 | }
24 |
25 | /**
26 | * @return {object} The axios response
27 | */
28 | const getRetentionRules = async function() {
29 | return axios.get(generateOcsUrl('/apps/files_retention/api/v1/retentions'))
30 | }
31 |
32 | export {
33 | createRetentionRule,
34 | deleteRetentionRule,
35 | getRetentionRules,
36 | }
37 |
--------------------------------------------------------------------------------
/l10n/sl.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Samodejno brisanje datotek",
5 | "{file} will be removed in 24 hours" : "Datoteka {file} bo odstranjena v 24 urah.",
6 | "Your systems retention rules will delete this file within 24 hours." : "Sistemske nastavitve določajo brisanje te datoteke v 24 urah.",
7 | "Retention" : "Zadrževanje",
8 | "Days" : "dni",
9 | "Weeks" : "tednov",
10 | "Months" : "mesecev",
11 | "Years" : "let",
12 | "Creation" : "Ustvarjeno",
13 | "Last modification" : "Nazadnje spremenjeno",
14 | "Time units" : "Časovne enote",
15 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Nastavitev omogoča določevanje pravil za samodejno brisanje datotek po določenem času na osnovi posamezni datoteki dodeljene oznake. Možnost je uporabna pri souporabi zaupnih dokumentov.",
16 | "Create" : "Ustvari",
17 | "Failed to load tags" : "Nalaganje oznak je spodletelo"
18 | },
19 | "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
20 |
--------------------------------------------------------------------------------
/lib/Migration/Version011000Date20210206170027.php:
--------------------------------------------------------------------------------
1 | hasTable('retention')) {
33 | $table = $schema->getTable('retention');
34 |
35 | $table->addColumn('time_after', Types::INTEGER, [
36 | 'length' => 4,
37 | 'default' => 0,
38 | ]);
39 | }
40 |
41 | return $schema;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/l10n/fi.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Tiedostojen säilyttäminen",
3 | "{file} will be removed in 24 hours" : "{file} poistetaan 24 tunnin kuluttua",
4 | "Your systems retention rules will delete this file within 24 hours." : "Järjestelmäsi säilytyssäännöt poistavat tämän tiedoston 24 tunnin sisällä.",
5 | "Retention" : "Säilyttäminen",
6 | "Days" : "Päivää",
7 | "Weeks" : "Viikkoa",
8 | "Months" : "Kuukautta",
9 | "Years" : "Vuotta",
10 | "Creation" : "Luonti",
11 | "Last modification" : "Viimeisin muokkaus",
12 | "Create new retention rule" : "Luo uusi säilytyssääntö",
13 | "Invalid retention time" : "Virheellinen säilytysaika",
14 | "File retention & automatic deletion" : "Tiedoston säilytys ja automaattinen poisto",
15 | "Retention time" : "Säilytysaika",
16 | "Create" : "Luo",
17 | "_%n day_::_%n days_" : ["%n päivä","%n päivää"],
18 | "_%n week_::_%n weeks_" : ["%n viikko","%n viikkoa"],
19 | "_%n month_::_%n months_" : ["%n kuukausi","%n kuukautta"],
20 | "_%n year_::_%n years_" : ["%n vuosi","%n vuotta"],
21 | "Failed to load tags" : "Tunnisteiden lataaminen epäonnistui"
22 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
23 | }
--------------------------------------------------------------------------------
/l10n/fi.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Tiedostojen säilyttäminen",
5 | "{file} will be removed in 24 hours" : "{file} poistetaan 24 tunnin kuluttua",
6 | "Your systems retention rules will delete this file within 24 hours." : "Järjestelmäsi säilytyssäännöt poistavat tämän tiedoston 24 tunnin sisällä.",
7 | "Retention" : "Säilyttäminen",
8 | "Days" : "Päivää",
9 | "Weeks" : "Viikkoa",
10 | "Months" : "Kuukautta",
11 | "Years" : "Vuotta",
12 | "Creation" : "Luonti",
13 | "Last modification" : "Viimeisin muokkaus",
14 | "Create new retention rule" : "Luo uusi säilytyssääntö",
15 | "Invalid retention time" : "Virheellinen säilytysaika",
16 | "File retention & automatic deletion" : "Tiedoston säilytys ja automaattinen poisto",
17 | "Retention time" : "Säilytysaika",
18 | "Create" : "Luo",
19 | "_%n day_::_%n days_" : ["%n päivä","%n päivää"],
20 | "_%n week_::_%n weeks_" : ["%n viikko","%n viikkoa"],
21 | "_%n month_::_%n months_" : ["%n kuukausi","%n kuukautta"],
22 | "_%n year_::_%n years_" : ["%n vuosi","%n vuotta"],
23 | "Failed to load tags" : "Tunnisteiden lataaminen epäonnistui"
24 | },
25 | "nplurals=2; plural=(n != 1);");
26 |
--------------------------------------------------------------------------------
/l10n/zh_CN.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "文件保留",
3 | "{file} will be removed in 24 hours" : "{file} 将在24小时内被删除",
4 | "Your systems retention rules will delete this file within 24 hours." : "您的系统保留规则将在24消失内删除该文件",
5 | "Retention" : "保留",
6 | "This application allows for automatic deletion of files after a given time." : "这个应用程序允许在给定的时间后自动删除文件",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "一个控制在给定的时间段后自动删除文件的Nextcloud应用。\n可以选择在删除前一天通知用户。",
8 | "Days" : "天",
9 | "Weeks" : "周",
10 | "Months" : "月",
11 | "Years" : "年",
12 | "Creation" : "创建 ",
13 | "Last modification" : "上一次更改 ",
14 | "An error occurred while changing the setting" : "更改设置时发生错误",
15 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "当有特殊标签的文件需要在一定时间后自动删除时定义。适用于机密文档。",
16 | "Create" : "创建",
17 | "_%n day_::_%n days_" : ["%n 天"],
18 | "_%n week_::_%n weeks_" : ["%n 周"],
19 | "_%n month_::_%n months_" : ["%n 月"],
20 | "_%n year_::_%n years_" : ["%n 年"],
21 | "Failed to load tags" : "无法加载标签"
22 | },"pluralForm" :"nplurals=1; plural=0;"
23 | }
--------------------------------------------------------------------------------
/.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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
28 | with:
29 | persist-credentials: false
30 |
31 | - name: Download schema
32 | run: wget https://raw.githubusercontent.com/nextcloud/appstore/master/nextcloudappstore/api/v1/release/info.xsd
33 |
34 | - name: Lint info.xml
35 | uses: ChristophWurst/xmllint-action@36f2a302f84f8c83fceea0b9c59e1eb4a616d3c1 # v1.2
36 | with:
37 | xml-file: ./appinfo/info.xml
38 | xml-schema-file: ./info.xsd
39 |
--------------------------------------------------------------------------------
/l10n/zh_CN.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "文件保留",
5 | "{file} will be removed in 24 hours" : "{file} 将在24小时内被删除",
6 | "Your systems retention rules will delete this file within 24 hours." : "您的系统保留规则将在24消失内删除该文件",
7 | "Retention" : "保留",
8 | "This application allows for automatic deletion of files after a given time." : "这个应用程序允许在给定的时间后自动删除文件",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "一个控制在给定的时间段后自动删除文件的Nextcloud应用。\n可以选择在删除前一天通知用户。",
10 | "Days" : "天",
11 | "Weeks" : "周",
12 | "Months" : "月",
13 | "Years" : "年",
14 | "Creation" : "创建 ",
15 | "Last modification" : "上一次更改 ",
16 | "An error occurred while changing the setting" : "更改设置时发生错误",
17 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "当有特殊标签的文件需要在一定时间后自动删除时定义。适用于机密文档。",
18 | "Create" : "创建",
19 | "_%n day_::_%n days_" : ["%n 天"],
20 | "_%n week_::_%n weeks_" : ["%n 周"],
21 | "_%n month_::_%n months_" : ["%n 月"],
22 | "_%n year_::_%n years_" : ["%n 年"],
23 | "Failed to load tags" : "无法加载标签"
24 | },
25 | "nplurals=1; plural=0;");
26 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "autoload": {
3 | "psr-4": {
4 | "OCA\\Files_Retention\\": "lib/"
5 | }
6 | },
7 | "name": "nextcloud/files_retention",
8 | "description": "files_retention",
9 | "license": "AGPL",
10 | "config": {
11 | "optimize-autoloader": true,
12 | "classmap-authoritative": true,
13 | "platform": {
14 | "php": "8.1"
15 | },
16 | "sort-packages": true,
17 | "allow-plugins": {
18 | "bamarni/composer-bin-plugin": true
19 | }
20 | },
21 | "scripts": {
22 | "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './vendor-bin/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l",
23 | "cs:check": "php-cs-fixer fix --dry-run --diff",
24 | "cs:fix": "php-cs-fixer fix",
25 | "openapi": "generate-spec",
26 | "psalm": "psalm --no-cache --threads=$(nproc)",
27 | "psalm:dev": "@psalm",
28 | "psalm:update-baseline": "psalm --threads=1 --update-baseline",
29 | "test:unit": "vendor/bin/phpunit --colors=always -c tests/phpunit.xml",
30 | "post-install-cmd": [
31 | "[ $COMPOSER_DEV_MODE -eq 0 ] || composer bin all install"
32 | ],
33 | "post-update-cmd": [
34 | "[ $COMPOSER_DEV_MODE -eq 0 ] || composer bin all install"
35 | ]
36 | },
37 | "require-dev": {
38 | "bamarni/composer-bin-plugin": "^1.8",
39 | "nextcloud/ocp": "dev-master"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/services/api.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
3 | * SPDX-License-Identifier: AGPL-3.0-or-later
4 | */
5 |
6 | import type { FileStat, ResponseDataDetailed } from 'webdav'
7 | import type { TagWithId } from '../types'
8 |
9 | import { t } from '@nextcloud/l10n'
10 |
11 | import { davClient } from './davClient'
12 | import { parseTags } from '../utils'
13 | import logger from '../logger'
14 |
15 | export const fetchTagsPayload = `
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | `
27 |
28 | export const fetchTags = async (): Promise => {
29 | const path = '/systemtags'
30 | try {
31 | const { data: tags } = await davClient.getDirectoryContents(path, {
32 | data: fetchTagsPayload,
33 | details: true,
34 | glob: '/systemtags/*', // Filter out first empty tag
35 | }) as ResponseDataDetailed[]>
36 | return parseTags(tags)
37 | } catch (error) {
38 | logger.error(t('files_retention', 'Failed to load tags'), { error })
39 | throw new Error(t('files_retention', 'Failed to load tags'))
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/AppInfo/Application.php:
--------------------------------------------------------------------------------
1 | registerService(IUserMountCache::class, function () {
30 | return Server::get(IMountProviderCollection::class)->getMountCache();
31 | });
32 |
33 | $context->registerEventListener(ManagerEvent::EVENT_DELETE, EventListener::class);
34 |
35 | $context->registerNotifierService(Notifier::class);
36 | }
37 |
38 | public function boot(IBootContext $context): void {
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/tests/stub.phpstub:
--------------------------------------------------------------------------------
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 OC\Hooks {
25 | class Emitter {
26 | public function emit(string $class, string $value, array $option) {}
27 | /** Closure $closure */
28 | public function listen(string $class, string $value, $closure) {}
29 | }
30 | class BasicEmitter extends Emitter {
31 | }
32 | }
33 |
34 | namespace OC\Files {
35 | class Filesystem {
36 | static public bool $loaded;
37 |
38 | static public function init($userId, $path): void {}
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/Settings/Admin.php:
--------------------------------------------------------------------------------
1 | initialState->provideInitialState(
30 | 'doc-url',
31 | $this->url->linkToDocs('admin-files-retention')
32 | );
33 |
34 | $this->initialState->provideInitialState(
35 | 'notify_before',
36 | $this->config->getAppValue(Application::APP_ID, 'notify_before', 'no') === 'yes'
37 | );
38 |
39 | return new TemplateResponse('files_retention', 'admin', [], '');
40 | }
41 |
42 | public function getSection(): string {
43 | return 'workflow';
44 | }
45 |
46 | public function getPriority(): int {
47 | return 80;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/lib/EventListener.php:
--------------------------------------------------------------------------------
1 |
21 | */
22 | class EventListener implements IEventListener {
23 | public function __construct(
24 | private readonly IDBConnection $db,
25 | private readonly LoggerInterface $logger,
26 | ) {
27 | }
28 |
29 | public function handle(Event $event): void {
30 | if (!$event instanceof ManagerEvent) {
31 | return;
32 | }
33 |
34 | $this->tagDeleted($event->getTag());
35 | }
36 |
37 | protected function tagDeleted(ISystemTag $tag): void {
38 | $qb = $this->db->getQueryBuilder();
39 |
40 | $qb->delete('retention')
41 | ->where($qb->expr()->eq('tag_id', $qb->createNamedParameter($tag->getId(), IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT));
42 |
43 | $deleted = (bool)$qb->executeStatement();
44 |
45 | if ($deleted) {
46 | $this->logger->info('Deleting retention rule for tag #' . $tag->getId() . ' because the tag is deleted');
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/l10n/hr.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Zadržavanje datoteka",
3 | "{file} will be removed in 24 hours" : "Datoteka {file} bit će uklonjena za 24 sata",
4 | "Your systems retention rules will delete this file within 24 hours." : "Pravila zadržavanja vašeg sustava izbrisat će ovu datoteku unutar 24 sata.",
5 | "Retention" : "Zadržavanje",
6 | "This application allows for automatic deletion of files after a given time." : "Ova aplikacija omogućuje automatsko brisanje datoteka nakon određenog vremena.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Aplikacija za Nextcloud za kontrolu automatskog brisanja datoteka nakon određenog vremena.\nKorisnici se mogu po izboru obavijestiti dan ranije.",
8 | "Days" : "Dana",
9 | "Weeks" : "Tjedana",
10 | "Months" : "Mjeseci",
11 | "Years" : "Godina",
12 | "Creation" : "Stvaranje",
13 | "Last modification" : "Posljednja izmjena",
14 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definirajte treba li datoteke s određenom oznakom automatski izbrisati nakon nekog vremena. Ovo je korisno za povjerljive dokumente.",
15 | "Create" : "Stvori",
16 | "Failed to load tags" : "Učitavanje oznaka nije uspjelo"
17 | },"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;"
18 | }
--------------------------------------------------------------------------------
/l10n/sc.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Allogada de archìvios",
3 | "{file} will be removed in 24 hours" : "{file} at a èssere bogadu tra 24 oras",
4 | "Your systems retention rules will delete this file within 24 hours." : "Is règulas de allogada de sistemas ant a cantzellare custu archìviu tra 24 oras.",
5 | "Retention" : "Allogada",
6 | "This application allows for automatic deletion of files after a given time." : "Custa aplicatzione permitit sa cantzelladura automàtica de archìvios a pustis de unu tempus dadu.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Un'aplicatzione de Nextcloud pro controllare sa cantzelladura automàtica de archìvios pustis de unu tempus definidu. \nIs utentes podent seberare de retzire informatziones sa die antis.",
8 | "Days" : "Dies",
9 | "Weeks" : "Chidas",
10 | "Months" : "Meses",
11 | "Years" : "Annos",
12 | "Creation" : "Creatzione",
13 | "Last modification" : "Ùrtima modìfica",
14 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Defini si is archìvios cun etichetas ispetzìficas si diant cantzellare in automàticu a pustis de unu tempus dadu. Est ùtile pro documentos de cunfidu.",
15 | "Create" : "Crea",
16 | "Failed to load tags" : "No at fatu a carrigare is etichetas"
17 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
18 | }
--------------------------------------------------------------------------------
/l10n/hr.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Zadržavanje datoteka",
5 | "{file} will be removed in 24 hours" : "Datoteka {file} bit će uklonjena za 24 sata",
6 | "Your systems retention rules will delete this file within 24 hours." : "Pravila zadržavanja vašeg sustava izbrisat će ovu datoteku unutar 24 sata.",
7 | "Retention" : "Zadržavanje",
8 | "This application allows for automatic deletion of files after a given time." : "Ova aplikacija omogućuje automatsko brisanje datoteka nakon određenog vremena.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Aplikacija za Nextcloud za kontrolu automatskog brisanja datoteka nakon određenog vremena.\nKorisnici se mogu po izboru obavijestiti dan ranije.",
10 | "Days" : "Dana",
11 | "Weeks" : "Tjedana",
12 | "Months" : "Mjeseci",
13 | "Years" : "Godina",
14 | "Creation" : "Stvaranje",
15 | "Last modification" : "Posljednja izmjena",
16 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definirajte treba li datoteke s određenom oznakom automatski izbrisati nakon nekog vremena. Ovo je korisno za povjerljive dokumente.",
17 | "Create" : "Stvori",
18 | "Failed to load tags" : "Učitavanje oznaka nije uspjelo"
19 | },
20 | "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
21 |
--------------------------------------------------------------------------------
/l10n/sc.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Allogada de archìvios",
5 | "{file} will be removed in 24 hours" : "{file} at a èssere bogadu tra 24 oras",
6 | "Your systems retention rules will delete this file within 24 hours." : "Is règulas de allogada de sistemas ant a cantzellare custu archìviu tra 24 oras.",
7 | "Retention" : "Allogada",
8 | "This application allows for automatic deletion of files after a given time." : "Custa aplicatzione permitit sa cantzelladura automàtica de archìvios a pustis de unu tempus dadu.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Un'aplicatzione de Nextcloud pro controllare sa cantzelladura automàtica de archìvios pustis de unu tempus definidu. \nIs utentes podent seberare de retzire informatziones sa die antis.",
10 | "Days" : "Dies",
11 | "Weeks" : "Chidas",
12 | "Months" : "Meses",
13 | "Years" : "Annos",
14 | "Creation" : "Creatzione",
15 | "Last modification" : "Ùrtima modìfica",
16 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Defini si is archìvios cun etichetas ispetzìficas si diant cantzellare in automàticu a pustis de unu tempus dadu. Est ùtile pro documentos de cunfidu.",
17 | "Create" : "Crea",
18 | "Failed to load tags" : "No at fatu a carrigare is etichetas"
19 | },
20 | "nplurals=2; plural=(n != 1);");
21 |
--------------------------------------------------------------------------------
/appinfo/info.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
8 | files_retention
9 | Retention
10 | This application allows for automatic deletion of files after a given time.
11 | An app for Nextcloud to control automatic deletion of files after a given time.
12 | Optionally the users can be informed the day before.
13 | 4.0.0-dev.0
14 | agpl
15 | Roeland Jago Douma
16 | Files_Retention
17 |
18 |
19 | https://docs.nextcloud.com/server/stable/go.php?to=admin-files-retention
20 |
21 |
22 | tools
23 |
24 | https://github.com/nextcloud/files_retention
25 | https://github.com/nextcloud/files_retention/issues
26 | https://github.com/nextcloud/files_retention.git
27 |
28 | https://raw.githubusercontent.com/nextcloud/files_retention/master/screenshots/1.png
29 |
30 |
31 |
32 |
33 |
34 |
35 | OCA\Files_Retention\Settings\Admin
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/tests/lib/Settings/AdminTest.php:
--------------------------------------------------------------------------------
1 | initialStateService = $this->createMock(IInitialState::class);
28 | $this->url = $this->createMock(IURLGenerator::class);
29 | $this->config = $this->createMock(IConfig::class);
30 | $this->admin = new Admin($this->initialStateService, $this->url, $this->config);
31 | }
32 |
33 | public function testGetForm(): void {
34 | $expected = new TemplateResponse('files_retention', 'admin', [], '');
35 | $this->assertEquals($expected, $this->admin->getForm());
36 | }
37 |
38 | public function testGetSection(): void {
39 | $this->assertSame('workflow', $this->admin->getSection());
40 | }
41 |
42 | public function testGetPriority(): void {
43 | $this->assertSame(80, $this->admin->getPriority());
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/REUSE.toml:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
2 | # SPDX-License-Identifier: AGPL-3.0-or-later
3 | version = 1
4 | SPDX-PackageName = "files_retention"
5 | SPDX-PackageSupplier = "Nextcloud "
6 | SPDX-PackageDownloadLocation = "https://github.com/nextcloud/files_retention"
7 |
8 | [[annotations]]
9 | path = [".gitattributes", ".github/**", ".editorconfig", "babel.config.js", ".php-cs-fixer.dist.php", "package-lock.json", "package.json", "composer.json", "composer.lock", "webpack.js", "stylelint.config.js", ".eslintrc.js", ".gitignore", ".jshintrc", ".l10nignore", "action/.gitignore", "action/package.json", "action/package-lock.json", "action/dist/index.js", "tests/**", "psalm.xml", "vendor-bin/**/composer.json", "vendor-bin/**/composer.lock", ".tx/config", "webpack.config.js"]
10 | precedence = "aggregate"
11 | SPDX-FileCopyrightText = "none"
12 | SPDX-License-Identifier = "CC0-1.0"
13 |
14 | [[annotations]]
15 | path = ["l10n/**.js", "l10n/**.json", "js/**.js.map", "js/**.js"]
16 | precedence = "aggregate"
17 | SPDX-FileCopyrightText = "2016 Nextcloud GmbH and Nextcloud contributors"
18 | SPDX-License-Identifier = "AGPL-3.0-or-later"
19 |
20 | [[annotations]]
21 | path = ["openapi.json"]
22 | precedence = "aggregate"
23 | SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors"
24 | SPDX-License-Identifier = "AGPL-3.0-or-later"
25 |
26 | [[annotations]]
27 | path = ["img/app.svg", "img/app-dark.svg"]
28 | precedence = "aggregate"
29 | SPDX-FileCopyrightText = "2018-2024 Google LLC"
30 | SPDX-License-Identifier = "Apache-2.0"
31 |
--------------------------------------------------------------------------------
/lib/Migration/Version010700Date20191125104957.php:
--------------------------------------------------------------------------------
1 | hasTable('retention')) {
29 | $table = $schema->createTable('retention');
30 | $table->addColumn('id', Types::INTEGER, [
31 | 'autoincrement' => true,
32 | 'notnull' => true,
33 | 'length' => 4,
34 | ]);
35 | $table->addColumn('tag_id', Types::INTEGER, [
36 | 'notnull' => true,
37 | 'length' => 4,
38 | ]);
39 | $table->addColumn('time_unit', Types::INTEGER, [
40 | 'notnull' => true,
41 | 'length' => 4,
42 | ]);
43 | $table->addColumn('time_amount', Types::SMALLINT, [
44 | 'notnull' => true,
45 | 'length' => 1,
46 | ]);
47 | $table->setPrimaryKey(['id']);
48 | $table->addIndex(['tag_id'], 'retention_tag');
49 | }
50 | return $schema;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "files_retention",
3 | "version": "4.0.0-dev.0",
4 | "author": "Joas Schilling ",
5 | "license": "agpl",
6 | "private": true,
7 | "scripts": {
8 | "build": "NODE_ENV=production webpack --progress",
9 | "dev": "NODE_ENV=development webpack --progress",
10 | "watch": "NODE_ENV=development webpack --progress --watch",
11 | "lint": "eslint --ext .js,.vue src",
12 | "lint:fix": "eslint --ext .js,.vue src --fix",
13 | "stylelint": "stylelint css/*.css css/*.scss src/**/*.scss src/**/*.vue",
14 | "stylelint:fix": "stylelint css/*.css css/*.scss src/**/*.scss src/**/*.vue --fix"
15 | },
16 | "dependencies": {
17 | "@nextcloud/auth": "^2.5.3",
18 | "@nextcloud/axios": "^2.5.2",
19 | "@nextcloud/dialogs": "^7.1.0",
20 | "@nextcloud/initial-state": "^3.0.0",
21 | "@nextcloud/l10n": "^3.4.1",
22 | "@nextcloud/router": "^3.1.0",
23 | "@nextcloud/vue": "^9.3.1",
24 | "camelcase": "^9.0.0",
25 | "vue": "^3.5.24",
26 | "vue-material-design-icons": "^5.3.1",
27 | "vuex": "^4.1.0",
28 | "webdav": "^5.8.0"
29 | },
30 | "engines": {
31 | "node": "^24.0.0",
32 | "npm": "^11.3.0"
33 | },
34 | "browserslist": [
35 | "extends @nextcloud/browserslist-config"
36 | ],
37 | "devDependencies": {
38 | "@nextcloud/babel-config": "^1.3.0",
39 | "@nextcloud/browserslist-config": "^3.1.2",
40 | "@nextcloud/eslint-config": "^8.4.2",
41 | "@nextcloud/stylelint-config": "^3.1.1",
42 | "@nextcloud/typings": "^1.10.0",
43 | "@nextcloud/webpack-vue-config": "^7.0.2",
44 | "ts-loader": "^9.5.4",
45 | "typescript": "^5.9.3"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/l10n/nl.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Bewaartermijn van bestanden",
3 | "{file} will be removed in 24 hours" : "{file} zal over 24 uur worden verwijderd",
4 | "Your systems retention rules will delete this file within 24 hours." : "De bewaartermijninstellingen van je systeem zullen dit bestand binnen 24 uur verwijderen.",
5 | "Retention" : "Bewaartermijn",
6 | "This application allows for automatic deletion of files after a given time." : "Deze applicatie kan bestanden automatisch na een bepaalde tijd verwijderen.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Een Nextcloud app om het automatisch verwijderen van bestanden na een bepaalde tijd te regelen.\nOptioneel kunnen de gebruikers de dag ervoor worden geïnformeerd.",
8 | "Days" : "Dagen",
9 | "Weeks" : "Weken",
10 | "Months" : "Maanden",
11 | "Years" : "Jaar",
12 | "Creation" : "Creatie",
13 | "Last modification" : "Laatste wijziging",
14 | "An error occurred while changing the setting" : "Er is een fout opgetreden tijdens het wijzigen van de instelling.",
15 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Instellen of bestanden die zijn getagd met een specifieke tag na een bepaalde tijd automatisch moeten worden verwijderd. Dit is zinvol voor vertrouwelijke documenten.",
16 | "Create" : "Aanmaken",
17 | "_%n day_::_%n days_" : ["%n dag","%n dagen"],
18 | "_%n week_::_%n weeks_" : ["%n week","weken"],
19 | "Failed to load tags" : "Kon tags niet laden"
20 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
21 | }
--------------------------------------------------------------------------------
/l10n/nl.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Bewaartermijn van bestanden",
5 | "{file} will be removed in 24 hours" : "{file} zal over 24 uur worden verwijderd",
6 | "Your systems retention rules will delete this file within 24 hours." : "De bewaartermijninstellingen van je systeem zullen dit bestand binnen 24 uur verwijderen.",
7 | "Retention" : "Bewaartermijn",
8 | "This application allows for automatic deletion of files after a given time." : "Deze applicatie kan bestanden automatisch na een bepaalde tijd verwijderen.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Een Nextcloud app om het automatisch verwijderen van bestanden na een bepaalde tijd te regelen.\nOptioneel kunnen de gebruikers de dag ervoor worden geïnformeerd.",
10 | "Days" : "Dagen",
11 | "Weeks" : "Weken",
12 | "Months" : "Maanden",
13 | "Years" : "Jaar",
14 | "Creation" : "Creatie",
15 | "Last modification" : "Laatste wijziging",
16 | "An error occurred while changing the setting" : "Er is een fout opgetreden tijdens het wijzigen van de instelling.",
17 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Instellen of bestanden die zijn getagd met een specifieke tag na een bepaalde tijd automatisch moeten worden verwijderd. Dit is zinvol voor vertrouwelijke documenten.",
18 | "Create" : "Aanmaken",
19 | "_%n day_::_%n days_" : ["%n dag","%n dagen"],
20 | "_%n week_::_%n weeks_" : ["%n week","weken"],
21 | "Failed to load tags" : "Kon tags niet laden"
22 | },
23 | "nplurals=2; plural=(n != 1);");
24 |
--------------------------------------------------------------------------------
/.github/workflows/lint-stylelint.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 stylelint
10 |
11 | on: pull_request
12 |
13 | permissions:
14 | contents: read
15 |
16 | concurrency:
17 | group: lint-stylelint-${{ github.head_ref || github.run_id }}
18 | cancel-in-progress: true
19 |
20 | jobs:
21 | lint:
22 | runs-on: ubuntu-latest
23 |
24 | name: stylelint
25 |
26 | steps:
27 | - name: Checkout
28 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
29 | with:
30 | persist-credentials: false
31 |
32 | - name: Read package.json node and npm engines version
33 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
34 | id: versions
35 | with:
36 | fallbackNode: '^24'
37 | fallbackNpm: '^11.3'
38 |
39 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
40 | uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
41 | with:
42 | node-version: ${{ steps.versions.outputs.nodeVersion }}
43 |
44 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
45 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
46 |
47 | - name: Install dependencies
48 | env:
49 | CYPRESS_INSTALL_BINARY: 0
50 | run: npm ci
51 |
52 | - name: Lint
53 | run: npm run stylelint
54 |
--------------------------------------------------------------------------------
/l10n/it.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Conservazione dei file",
3 | "{file} will be removed in 24 hours" : "{file} sarà rimosso tra 24 ore",
4 | "Your systems retention rules will delete this file within 24 hours." : "Le tue regole di conservazione di sistema elimineranno questo file tra 24 ore.",
5 | "Retention" : "Conservazione",
6 | "This application allows for automatic deletion of files after a given time." : "Questa applicazione consente l'eliminazione automatica dei file dopo un determinato tempo.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Un'app per Nextcloud per controllare l'eliminazione automatica di file dopo un determinato tempo.\nFacoltativamente, gli utenti possono esserne informati il giorno prima.",
8 | "Days" : "Giorni",
9 | "Weeks" : "Settimane",
10 | "Months" : "Mesi",
11 | "Years" : "Anni",
12 | "Creation" : "Creazione",
13 | "Last modification" : "Ultima modifica",
14 | "An error occurred while changing the setting" : "Si è verificato un errore durante la modifica delle impostazioni",
15 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definisce se i file contrassegnati con una specifica etichetta dopo un certo periodo. Questo è utile per i documenti confidenziali.",
16 | "Create" : "Crea",
17 | "_%n day_::_%n days_" : ["%n giorno","%n giorni","%n giorni"],
18 | "_%n week_::_%n weeks_" : ["%n settimana","%n settimane","%n settimane"],
19 | "Failed to load tags" : "Caricamento etichette non riuscito"
20 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
21 | }
--------------------------------------------------------------------------------
/l10n/it.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Conservazione dei file",
5 | "{file} will be removed in 24 hours" : "{file} sarà rimosso tra 24 ore",
6 | "Your systems retention rules will delete this file within 24 hours." : "Le tue regole di conservazione di sistema elimineranno questo file tra 24 ore.",
7 | "Retention" : "Conservazione",
8 | "This application allows for automatic deletion of files after a given time." : "Questa applicazione consente l'eliminazione automatica dei file dopo un determinato tempo.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Un'app per Nextcloud per controllare l'eliminazione automatica di file dopo un determinato tempo.\nFacoltativamente, gli utenti possono esserne informati il giorno prima.",
10 | "Days" : "Giorni",
11 | "Weeks" : "Settimane",
12 | "Months" : "Mesi",
13 | "Years" : "Anni",
14 | "Creation" : "Creazione",
15 | "Last modification" : "Ultima modifica",
16 | "An error occurred while changing the setting" : "Si è verificato un errore durante la modifica delle impostazioni",
17 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definisce se i file contrassegnati con una specifica etichetta dopo un certo periodo. Questo è utile per i documenti confidenziali.",
18 | "Create" : "Crea",
19 | "_%n day_::_%n days_" : ["%n giorno","%n giorni","%n giorni"],
20 | "_%n week_::_%n weeks_" : ["%n settimana","%n settimane","%n settimane"],
21 | "Failed to load tags" : "Caricamento etichette non riuscito"
22 | },
23 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
24 |
--------------------------------------------------------------------------------
/src/store/retentionStore.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SPDX-FileCopyrightText: Joas Schilling
3 | * SPDX-License-Identifier: AGPL-3.0-only
4 | */
5 | import {
6 | createRetentionRule,
7 | deleteRetentionRule,
8 | getRetentionRules,
9 | } from '../services/retentionService.js'
10 |
11 | const state = () => ({
12 | retentionRules: {
13 | },
14 | })
15 |
16 | const getters = {
17 | getRetentionRules: state => () => Object.values(state.retentionRules),
18 | getTagIdsWithRule: state => () => Object.values(state.retentionRules).map((rule) => rule.tagid),
19 | }
20 |
21 | const mutations = {
22 | /**
23 | * Adds a rule to the store
24 | *
25 | * @param {object} state current store state
26 | * @param {object} rule the rule
27 | */
28 | addRule(state, rule) {
29 | state.retentionRules[rule.id] = rule
30 | },
31 |
32 | /**
33 | * Deletes a rule from the store
34 | *
35 | * @param {object} state current store state
36 | * @param {number} id the rule id of the rule to delete
37 | */
38 | deleteRule(state, id) {
39 | delete state.retentionRules[id]
40 | },
41 | }
42 |
43 | const actions = {
44 | /**
45 | * Load the retention rules from the backend
46 | *
47 | * @param {object} context default store context
48 | */
49 | async loadRetentionRules(context) {
50 | const response = await getRetentionRules()
51 | response.data.ocs.data.forEach((rule) => {
52 | context.commit('addRule', rule)
53 | })
54 | },
55 |
56 | async deleteRetentionRule(context, ruleId) {
57 | await deleteRetentionRule(ruleId)
58 | context.commit('deleteRule', ruleId)
59 | },
60 |
61 | async createNewRule(context, rule) {
62 | const response = await createRetentionRule(rule)
63 | context.commit('addRule', response.data.ocs.data)
64 | },
65 | }
66 |
67 | export default { state, mutations, getters, actions }
68 |
--------------------------------------------------------------------------------
/.github/contributing.md:
--------------------------------------------------------------------------------
1 | ## Submitting issues
2 |
3 | If you have questions about how to install or use Nextcloud, please direct these to our [forum][forum]. We are also available on [IRC][irc].
4 |
5 | ### Short version
6 |
7 | * The [**issue template can be found here**][template]. Please always use the issue template when reporting issues.
8 |
9 | ### Guidelines
10 | * Please search the existing issues first, it's likely that your issue was already reported or even fixed.
11 | - Go to one of the repositories, click "issues" and type any word in the top search/command bar.
12 | - You can also filter by appending e. g. "state:open" to the search string.
13 | - More info on [search syntax within github](https://help.github.com/articles/searching-issues)
14 | * This repository ([Retention](https://github.com/nextcloud/files_retention/issues)) is *only* for issues within the Retention code.
15 | * __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/nextcloud) or security@nextcloud.com following our [security policy](https://nextcloud.com/security/) instead of filing an issue in our bug tracker
16 | * Report the issue using our [template][template], it includes all the information we need to track down the issue.
17 |
18 | Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
19 |
20 | [template]: https://raw.github.com/nextcloud/files_retention/master/.github/issue_template.md
21 | [forum]: https://help.nextcloud.com/
22 | [irc]: https://webchat.freenode.net/?channels=nextcloud
23 |
24 | ### Contribute Code and translations
25 | Please check [server's contribution guidelines](https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md#contributing-to-source-code) for further information about contributing code and translations.
26 |
--------------------------------------------------------------------------------
/.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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
29 | with:
30 | persist-credentials: false
31 |
32 | - name: Get php version
33 | id: versions
34 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
35 |
36 | - name: Set up php${{ steps.versions.outputs.php-min }}
37 | uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
38 | with:
39 | php-version: ${{ steps.versions.outputs.php-min }}
40 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
41 | coverage: none
42 | ini-file: development
43 | env:
44 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45 |
46 | - name: Install dependencies
47 | run: |
48 | composer remove nextcloud/ocp --dev --no-scripts
49 | composer i
50 |
51 | - name: Lint
52 | run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
53 |
--------------------------------------------------------------------------------
/.github/issue_template.md:
--------------------------------------------------------------------------------
1 |
8 | ### Steps to reproduce
9 | 1.
10 | 2.
11 | 3.
12 |
13 | ### Expected behaviour
14 | Tell us what should happen
15 |
16 | ### Actual behaviour
17 | Tell us what happens instead
18 |
19 | ### Server configuration
20 |
23 |
24 | **Operating system**:
25 |
26 | **Web server:**
27 |
28 | **Database:**
29 |
30 | **PHP version:**
31 |
32 | **Nextcloud version:** (see Nextcloud admin page)
33 |
34 | **Where did you install Nextcloud from:**
35 |
36 |
37 | **List of activated apps:**
38 |
39 | ```
40 | If you have access to your command line run e.g.:
41 | sudo -u www-data php occ app:list
42 | from within your Nextcloud installation folder
43 | ```
44 |
45 | **Nextcloud configuration:**
46 |
47 | ```
48 | If you have access to your command line run e.g.:
49 | sudo -u www-data php occ config:list system
50 | from within your Nextcloud installation folder
51 |
52 | or
53 |
54 | Insert your config.php content here
55 | Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …)
56 | ```
57 |
58 | ### Client configuration
59 | **Browser:**
60 |
61 | **Operating system:**
62 |
63 | ### Logs
64 |
65 | #### Nextcloud log (data/owncloud.log)
66 | ```
67 | Insert your Nextcloud log here
68 | ```
69 |
70 | #### Browser log
71 | ```
72 | Insert your browser log here, this could for example include:
73 |
74 | a) The javascript console log
75 | b) The network log
76 | c) ...
77 | ```
78 |
--------------------------------------------------------------------------------
/.github/workflows/dependabot-approve-merge.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: Nextcloud GmbH and Nextcloud contributors
7 | # SPDX-License-Identifier: MIT
8 |
9 | name: Auto approve Dependabot PRs
10 |
11 | on:
12 | pull_request_target: # zizmor: ignore[dangerous-triggers]
13 | branches:
14 | - main
15 | - master
16 | - stable*
17 |
18 | permissions:
19 | contents: read
20 |
21 | concurrency:
22 | group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
23 | cancel-in-progress: true
24 |
25 | jobs:
26 | auto-approve-merge:
27 | if: github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'renovate[bot]'
28 | runs-on: ubuntu-latest-low
29 | permissions:
30 | # for hmarr/auto-approve-action to approve PRs
31 | pull-requests: write
32 | # for alexwilson/enable-github-automerge-action to approve PRs
33 | contents: write
34 |
35 | steps:
36 | - name: Disabled on forks
37 | if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
38 | run: |
39 | echo 'Can not approve PRs from forks'
40 | exit 1
41 |
42 | - uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
43 | id: branchname
44 | with:
45 | repo-token: ${{ secrets.GITHUB_TOKEN }}
46 |
47 | # GitHub actions bot approve
48 | - uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
49 | if: startsWith(steps.branchname.outputs.branch, 'dependabot/')
50 | with:
51 | github-token: ${{ secrets.GITHUB_TOKEN }}
52 |
53 | # Enable GitHub auto merge
54 | - name: Auto merge
55 | uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # v2.0.0
56 | if: startsWith(steps.branchname.outputs.branch, 'dependabot/')
57 | with:
58 | github-token: ${{ secrets.GITHUB_TOKEN }}
59 |
--------------------------------------------------------------------------------
/.github/workflows/update-nextcloud-ocp-approve-merge.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-License-Identifier: MIT
8 |
9 | name: Auto approve nextcloud/ocp
10 |
11 | on:
12 | pull_request_target: # zizmor: ignore[dangerous-triggers]
13 | branches:
14 | - main
15 | - master
16 | - stable*
17 |
18 | permissions:
19 | contents: read
20 |
21 | concurrency:
22 | group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }}
23 | cancel-in-progress: true
24 |
25 | jobs:
26 | auto-approve-merge:
27 | if: github.actor == 'nextcloud-command'
28 | runs-on: ubuntu-latest-low
29 | permissions:
30 | # for hmarr/auto-approve-action to approve PRs
31 | pull-requests: write
32 | # for alexwilson/enable-github-automerge-action to approve PRs
33 | contents: write
34 |
35 | steps:
36 | - name: Disabled on forks
37 | if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
38 | run: |
39 | echo 'Can not approve PRs from forks'
40 | exit 1
41 |
42 | - uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
43 | id: branchname
44 | with:
45 | repo-token: ${{ secrets.GITHUB_TOKEN }}
46 |
47 | # GitHub actions bot approve
48 | - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
49 | if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
50 | with:
51 | github-token: ${{ secrets.GITHUB_TOKEN }}
52 |
53 | # Enable GitHub auto merge
54 | - name: Auto merge
55 | uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # v2.0.0
56 | if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
57 | with:
58 | github-token: ${{ secrets.GITHUB_TOKEN }}
59 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
2 | # SPDX-License-Identifier: AGPL-3.0-or-later
3 | app_name=files_retention
4 |
5 | project_dir=$(CURDIR)/../$(app_name)
6 | build_dir=$(CURDIR)/build/artifacts
7 | appstore_dir=$(build_dir)/appstore
8 | source_dir=$(build_dir)/source
9 | sign_dir=$(build_dir)/sign
10 | package_name=$(app_name)
11 | cert_dir=$(HOME)/.nextcloud/certificates
12 | version+=master
13 |
14 | all: appstore
15 |
16 | # Dev env management
17 | dev-setup: clean npm-init
18 |
19 | npm-init:
20 | npm ci
21 |
22 | npm-update:
23 | npm update
24 |
25 | # Building
26 | build-js:
27 | npm run dev
28 |
29 | build-js-production:
30 | npm run build
31 |
32 | watch-js:
33 | npm run watch
34 |
35 | # Linting
36 | lint:
37 | npm run lint
38 |
39 | lint-fix:
40 | npm run lint:fix
41 |
42 | # Style linting
43 | stylelint:
44 | npm run stylelint
45 |
46 | stylelint-fix:
47 | npm run stylelint:fix
48 |
49 | release: appstore create-tag
50 |
51 | create-tag:
52 | git tag -s -a v$(version) -m "Tagging the $(version) release."
53 | git push origin v$(version)
54 |
55 | clean:
56 | rm -rf $(build_dir)
57 | rm -rf node_modules
58 | rm -rf js
59 |
60 | appstore: dev-setup build-js-production
61 | mkdir -p $(sign_dir)
62 | rsync -a \
63 | --exclude=/build \
64 | --exclude=/.eslintrc.js \
65 | --exclude=/babel.config.js \
66 | --exclude=/CONTRIBUTING.md \
67 | --exclude=/composer.json \
68 | --exclude=/composer.lock \
69 | --exclude=/docs \
70 | --exclude=/.git \
71 | --exclude=/.github \
72 | --exclude=/.gitattributes \
73 | --exclude=/.gitignore \
74 | --exclude=/.l10nignore \
75 | --exclude=/Makefile \
76 | --exclude=/node_modules \
77 | --exclude=/.php-cs-fixer.cache \
78 | --exclude=/.php-cs-fixer.dist.php \
79 | --exclude=/package.json \
80 | --exclude=/package-lock.json \
81 | --exclude=/psalm.xml \
82 | --exclude=/README.md \
83 | --exclude=/screenshots \
84 | --exclude=/src \
85 | --exclude=/stylelint.config.js \
86 | --exclude=/tests \
87 | --exclude=/translationfiles \
88 | --exclude=/.tx \
89 | --exclude=/vendor \
90 | --exclude=/webpack.config.js \
91 | $(project_dir)/ $(sign_dir)/$(app_name)
92 | tar -czf $(build_dir)/$(app_name).tar.gz \
93 | -C $(sign_dir) $(app_name)
94 | @if [ -f $(cert_dir)/$(app_name).key ]; then \
95 | echo "Signing package…"; \
96 | openssl dgst -sha512 -sign $(cert_dir)/$(app_name).key $(build_dir)/$(app_name).tar.gz | openssl base64; \
97 | fi
98 |
--------------------------------------------------------------------------------
/.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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
28 | with:
29 | persist-credentials: false
30 |
31 | - name: Get version matrix
32 | id: versions
33 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0
34 |
35 | php-lint:
36 | runs-on: ubuntu-latest
37 | needs: matrix
38 | strategy:
39 | matrix:
40 | php-versions: ${{fromJson(needs.matrix.outputs.php-versions)}}
41 |
42 | name: php-lint
43 |
44 | steps:
45 | - name: Checkout
46 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
47 | with:
48 | persist-credentials: false
49 |
50 | - name: Set up php ${{ matrix.php-versions }}
51 | uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
52 | with:
53 | php-version: ${{ matrix.php-versions }}
54 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
55 | coverage: none
56 | ini-file: development
57 | env:
58 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59 |
60 | - name: Lint
61 | run: composer run lint
62 |
63 | summary:
64 | permissions:
65 | contents: none
66 | runs-on: ubuntu-latest-low
67 | needs: php-lint
68 |
69 | if: always()
70 |
71 | name: php-lint-summary
72 |
73 | steps:
74 | - name: Summary status
75 | run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
76 |
--------------------------------------------------------------------------------
/.github/workflows/psalm.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: pull_request
12 |
13 | concurrency:
14 | group: psalm-${{ github.head_ref || github.run_id }}
15 | cancel-in-progress: true
16 |
17 | permissions:
18 | contents: read
19 |
20 | jobs:
21 | static-analysis:
22 | runs-on: ubuntu-latest
23 |
24 | name: static-psalm-analysis
25 | steps:
26 | - name: Checkout
27 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
28 | with:
29 | persist-credentials: false
30 |
31 | - name: Get php version
32 | id: versions
33 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
34 |
35 | - name: Check enforcement of minimum PHP version ${{ steps.versions.outputs.php-min }} in psalm.xml
36 | run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml
37 |
38 | - name: Set up php${{ steps.versions.outputs.php-available }}
39 | uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f # v2.35.5
40 | with:
41 | php-version: ${{ steps.versions.outputs.php-available }}
42 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
43 | coverage: none
44 | ini-file: development
45 | # Temporary workaround for missing pcntl_* in PHP 8.3
46 | ini-values: disable_functions=
47 | env:
48 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49 |
50 | - name: Install dependencies
51 | run: |
52 | composer remove nextcloud/ocp --dev --no-scripts
53 | composer i
54 |
55 | - name: Check for vulnerable PHP dependencies
56 | run: composer require --dev roave/security-advisories:dev-latest
57 |
58 | - name: Install nextcloud/ocp
59 | run: composer require --dev nextcloud/ocp:dev-${{ steps.versions.outputs.branches-max }} --ignore-platform-reqs --with-dependencies
60 |
61 | - name: Run coding standards check
62 | run: composer run psalm -- --threads=1 --monochrome --no-progress --output-format=github
63 |
--------------------------------------------------------------------------------
/l10n/zh_TW.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "檔案保留",
3 | "{file} will be removed in 24 hours" : "{file} 將會在24小時內被移除",
4 | "Your systems retention rules will delete this file within 24 hours." : "您的系統保留規則將會在24小時內刪除此檔案。",
5 | "Retention" : "保留",
6 | "This application allows for automatic deletion of files after a given time." : "此應用程式可在指定時間後自動刪除檔案。",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "用於控制在指定時間候自動刪除檔案的 Nextcloud 應用程式。\n可以選擇在前一天通知使用者。",
8 | "Days" : "天",
9 | "Weeks" : "週",
10 | "Months" : "月",
11 | "Years" : "年",
12 | "Creation" : "建立",
13 | "Last modification" : "最後修改",
14 | "Time units" : "時間單位",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "應刪除檔案的天數、週數、月數或年數",
16 | "Create new retention rule" : "建立新的保留規則",
17 | "An error occurred while loading the existing retention rules" : "載入既有保留規則時發生錯誤",
18 | "Users are now notified one day before a file or folder is being deleted" : "現在在刪除檔案或資料夾的前一天通知使用者",
19 | "Users are no longer notified before a file or folder is being deleted" : "在刪除檔案或資料夾前不再通知使用者",
20 | "An error occurred while changing the setting" : "變更設定時發生錯誤",
21 | "Invalid tag selected" : "選取的標籤無效",
22 | "Tag {tagName} already has a retention rule" : "標籤 {tagName} 已有保留規則",
23 | "Invalid unit option" : "無效的單位選項",
24 | "Invalid action option" : "無效的動作選項",
25 | "Invalid retention time" : "無效的保留時間",
26 | "Retention rule for tag {tagName} saved" : "標籤 {tagName} 的保留規則已儲存",
27 | "Failed to save retention rule for tag {tagName}" : "儲存標籤 {tagName} 的保留規則失敗",
28 | "File retention & automatic deletion" : "檔案保留與自動刪除",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "定義是否在一段時間後自動刪除使用某個特定標籤的文件。 這對機密文件很有用。",
30 | "Files tagged with" : "檔案標記為",
31 | "Retention time" : "保留時間",
32 | "From date of" : "從日期",
33 | "Create" : "新增",
34 | "Notify owner a day before a file is automatically deleted" : "在檔案被自動刪除的前一天通知擁有者",
35 | "_%n day_::_%n days_" : ["%n天"],
36 | "_%n week_::_%n weeks_" : ["%n週"],
37 | "_%n month_::_%n months_" : ["%n月"],
38 | "_%n year_::_%n years_" : ["%n年"],
39 | "Delete retention rule for tag {tagName}" : "刪除標籤 {tagName} 的保留規則",
40 | "Retention rule for tag {tagName} has been deleted" : "標籤 {tagName} 的保留規則已刪除",
41 | "Failed to load tags" : "標籤載入失敗"
42 | },"pluralForm" :"nplurals=1; plural=0;"
43 | }
--------------------------------------------------------------------------------
/l10n/zh_HK.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "保留檔案",
3 | "{file} will be removed in 24 hours" : "{file} 將在24小時內刪除",
4 | "Your systems retention rules will delete this file within 24 hours." : "您的系統保留規則將在24小時內刪除此檔案。",
5 | "Retention" : "保留",
6 | "This application allows for automatic deletion of files after a given time." : "此應用程式可使檔案在設定的一段時間後自動刪除。",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloud 的應用程式,用於控制在設定的時間後自動刪除文件。\n可以選擇在刪除前一天通知用戶。",
8 | "Days" : "日",
9 | "Weeks" : "星期",
10 | "Months" : "月",
11 | "Years" : "年",
12 | "Creation" : "創建",
13 | "Last modification" : "最後修改日期",
14 | "Time units" : "時間單位",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "應刪除檔案的天數、週數、月數或年數",
16 | "Create new retention rule" : "建立新的保留規則",
17 | "An error occurred while loading the existing retention rules" : "載入既有保留規則時發生錯誤",
18 | "Users are now notified one day before a file or folder is being deleted" : "現在在刪除檔案或資料夾的前一天通知用戶",
19 | "Users are no longer notified before a file or folder is being deleted" : "在刪除檔案或資料夾前不再通知用戶",
20 | "An error occurred while changing the setting" : "更新設定時發生錯誤",
21 | "Invalid tag selected" : "所選的標籤無效",
22 | "Tag {tagName} already has a retention rule" : "標籤 {tagName} 已有保留規則",
23 | "Invalid unit option" : "無效的單位選項",
24 | "Invalid action option" : "無效的操作選項",
25 | "Invalid retention time" : "無效的保留時間",
26 | "Retention rule for tag {tagName} saved" : "標籤 {tagName} 的保留規則已儲存",
27 | "Failed to save retention rule for tag {tagName}" : "儲存標籤 {tagName} 的保留規則失敗",
28 | "File retention & automatic deletion" : "檔案保留與自動刪除",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "定義是否在一段時間後自動刪除使用某個特定標籤的檔案。這對機密文件很有效用。",
30 | "Files tagged with" : "檔案標記為",
31 | "Retention time" : "保留時間",
32 | "From date of" : "從以下日期開始",
33 | "Create" : "新增",
34 | "Notify owner a day before a file is automatically deleted" : "在檔案被自動刪除的前一天通知擁有者",
35 | "_%n day_::_%n days_" : ["%n 天"],
36 | "_%n week_::_%n weeks_" : ["%n個星期"],
37 | "_%n month_::_%n months_" : ["%n個月"],
38 | "_%n year_::_%n years_" : ["%n年"],
39 | "Delete retention rule for tag {tagName}" : "刪除標籤 {tagName} 的保留規則",
40 | "Retention rule for tag {tagName} has been deleted" : "標籤 {tagName} 的保留規則已已刪除刪除",
41 | "Failed to load tags" : "載入標記失敗"
42 | },"pluralForm" :"nplurals=1; plural=0;"
43 | }
--------------------------------------------------------------------------------
/l10n/zh_TW.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "檔案保留",
5 | "{file} will be removed in 24 hours" : "{file} 將會在24小時內被移除",
6 | "Your systems retention rules will delete this file within 24 hours." : "您的系統保留規則將會在24小時內刪除此檔案。",
7 | "Retention" : "保留",
8 | "This application allows for automatic deletion of files after a given time." : "此應用程式可在指定時間後自動刪除檔案。",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "用於控制在指定時間候自動刪除檔案的 Nextcloud 應用程式。\n可以選擇在前一天通知使用者。",
10 | "Days" : "天",
11 | "Weeks" : "週",
12 | "Months" : "月",
13 | "Years" : "年",
14 | "Creation" : "建立",
15 | "Last modification" : "最後修改",
16 | "Time units" : "時間單位",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "應刪除檔案的天數、週數、月數或年數",
18 | "Create new retention rule" : "建立新的保留規則",
19 | "An error occurred while loading the existing retention rules" : "載入既有保留規則時發生錯誤",
20 | "Users are now notified one day before a file or folder is being deleted" : "現在在刪除檔案或資料夾的前一天通知使用者",
21 | "Users are no longer notified before a file or folder is being deleted" : "在刪除檔案或資料夾前不再通知使用者",
22 | "An error occurred while changing the setting" : "變更設定時發生錯誤",
23 | "Invalid tag selected" : "選取的標籤無效",
24 | "Tag {tagName} already has a retention rule" : "標籤 {tagName} 已有保留規則",
25 | "Invalid unit option" : "無效的單位選項",
26 | "Invalid action option" : "無效的動作選項",
27 | "Invalid retention time" : "無效的保留時間",
28 | "Retention rule for tag {tagName} saved" : "標籤 {tagName} 的保留規則已儲存",
29 | "Failed to save retention rule for tag {tagName}" : "儲存標籤 {tagName} 的保留規則失敗",
30 | "File retention & automatic deletion" : "檔案保留與自動刪除",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "定義是否在一段時間後自動刪除使用某個特定標籤的文件。 這對機密文件很有用。",
32 | "Files tagged with" : "檔案標記為",
33 | "Retention time" : "保留時間",
34 | "From date of" : "從日期",
35 | "Create" : "新增",
36 | "Notify owner a day before a file is automatically deleted" : "在檔案被自動刪除的前一天通知擁有者",
37 | "_%n day_::_%n days_" : ["%n天"],
38 | "_%n week_::_%n weeks_" : ["%n週"],
39 | "_%n month_::_%n months_" : ["%n月"],
40 | "_%n year_::_%n years_" : ["%n年"],
41 | "Delete retention rule for tag {tagName}" : "刪除標籤 {tagName} 的保留規則",
42 | "Retention rule for tag {tagName} has been deleted" : "標籤 {tagName} 的保留規則已刪除",
43 | "Failed to load tags" : "標籤載入失敗"
44 | },
45 | "nplurals=1; plural=0;");
46 |
--------------------------------------------------------------------------------
/l10n/zh_HK.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "保留檔案",
5 | "{file} will be removed in 24 hours" : "{file} 將在24小時內刪除",
6 | "Your systems retention rules will delete this file within 24 hours." : "您的系統保留規則將在24小時內刪除此檔案。",
7 | "Retention" : "保留",
8 | "This application allows for automatic deletion of files after a given time." : "此應用程式可使檔案在設定的一段時間後自動刪除。",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloud 的應用程式,用於控制在設定的時間後自動刪除文件。\n可以選擇在刪除前一天通知用戶。",
10 | "Days" : "日",
11 | "Weeks" : "星期",
12 | "Months" : "月",
13 | "Years" : "年",
14 | "Creation" : "創建",
15 | "Last modification" : "最後修改日期",
16 | "Time units" : "時間單位",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "應刪除檔案的天數、週數、月數或年數",
18 | "Create new retention rule" : "建立新的保留規則",
19 | "An error occurred while loading the existing retention rules" : "載入既有保留規則時發生錯誤",
20 | "Users are now notified one day before a file or folder is being deleted" : "現在在刪除檔案或資料夾的前一天通知用戶",
21 | "Users are no longer notified before a file or folder is being deleted" : "在刪除檔案或資料夾前不再通知用戶",
22 | "An error occurred while changing the setting" : "更新設定時發生錯誤",
23 | "Invalid tag selected" : "所選的標籤無效",
24 | "Tag {tagName} already has a retention rule" : "標籤 {tagName} 已有保留規則",
25 | "Invalid unit option" : "無效的單位選項",
26 | "Invalid action option" : "無效的操作選項",
27 | "Invalid retention time" : "無效的保留時間",
28 | "Retention rule for tag {tagName} saved" : "標籤 {tagName} 的保留規則已儲存",
29 | "Failed to save retention rule for tag {tagName}" : "儲存標籤 {tagName} 的保留規則失敗",
30 | "File retention & automatic deletion" : "檔案保留與自動刪除",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "定義是否在一段時間後自動刪除使用某個特定標籤的檔案。這對機密文件很有效用。",
32 | "Files tagged with" : "檔案標記為",
33 | "Retention time" : "保留時間",
34 | "From date of" : "從以下日期開始",
35 | "Create" : "新增",
36 | "Notify owner a day before a file is automatically deleted" : "在檔案被自動刪除的前一天通知擁有者",
37 | "_%n day_::_%n days_" : ["%n 天"],
38 | "_%n week_::_%n weeks_" : ["%n個星期"],
39 | "_%n month_::_%n months_" : ["%n個月"],
40 | "_%n year_::_%n years_" : ["%n年"],
41 | "Delete retention rule for tag {tagName}" : "刪除標籤 {tagName} 的保留規則",
42 | "Retention rule for tag {tagName} has been deleted" : "標籤 {tagName} 的保留規則已已刪除刪除",
43 | "Failed to load tags" : "載入標記失敗"
44 | },
45 | "nplurals=1; plural=0;");
46 |
--------------------------------------------------------------------------------
/lib/Notification/Notifier.php:
--------------------------------------------------------------------------------
1 | l10Factory->get(Application::APP_ID)->t('Files retention');
35 | }
36 |
37 | public function prepare(INotification $notification, string $languageCode): INotification {
38 | if ($notification->getApp() !== Application::APP_ID) {
39 | // Not my app => throw
40 | throw new UnknownNotificationException();
41 | }
42 |
43 | $userFolder = $this->rootFolder->getUserFolder($notification->getUser());
44 |
45 | $subject = $notification->getSubjectParameters();
46 | $fileId = (int)$subject['fileId'];
47 |
48 | $nodes = $userFolder->getById($fileId);
49 | if (empty($nodes)) {
50 | throw new AlreadyProcessedException();
51 | }
52 | /** @var Node $node */
53 | $node = array_pop($nodes);
54 |
55 | $l = $this->l10Factory->get(Application::APP_ID, $languageCode);
56 | $notification->setRichSubject(
57 | $l->t('{file} will be removed in 24 hours'),
58 | [
59 | 'file' => [
60 | 'type' => 'file',
61 | 'id' => (string)$node->getId(),
62 | 'name' => $node->getName(),
63 | 'path' => (string)$userFolder->getRelativePath($node->getPath()),
64 | 'mimetype' => $node->getMimetype(),
65 | 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $fileId]),
66 | ],
67 | ])
68 | ->setParsedSubject(str_replace('{file}', $node->getName(), $l->t('{file} will be removed in 24 hours')))
69 | ->setRichMessage(
70 | $l->t('Your systems retention rules will delete this file within 24 hours.')
71 | )
72 | ->setParsedMessage($l->t('Your systems retention rules will delete this file within 24 hours.'))
73 | ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files_retention', 'app-dark.svg')));
74 |
75 | return $notification;
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/l10n/ja.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "ファイル保持期間",
3 | "{file} will be removed in 24 hours" : "ファイル {file} は、24時間後に削除されます",
4 | "Your systems retention rules will delete this file within 24 hours." : "システムの保持ルールにより、このファイルは24時間以内に削除されます。",
5 | "Retention" : "保持",
6 | "This application allows for automatic deletion of files after a given time." : "このアプリケーションでは、指定期間後にファイルを自動削除することができます。",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "指定期間後にファイルを自動削除するNextcloud用のアプリです。\n前日にユーザーに通知することもできます。",
8 | "Days" : "日",
9 | "Weeks" : "週",
10 | "Months" : "月",
11 | "Years" : "年",
12 | "Creation" : "作成日から",
13 | "Last modification" : "最終更新日から",
14 | "Time units" : "時間単位",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "ファイルが削除されるまでの日数、週数、月数、または年数",
16 | "Create new retention rule" : "新しい保持ルールの作成",
17 | "An error occurred while loading the existing retention rules" : "既存の保存ルールの読み込み中にエラーが発生しました",
18 | "Users are now notified one day before a file or folder is being deleted" : "ファイルやフォルダーが削除される1日前にユーザーに通知されるようになりました。",
19 | "Users are no longer notified before a file or folder is being deleted" : "ファイルやフォルダーが削除される前にユーザーに通知されなくなりました。",
20 | "An error occurred while changing the setting" : "設定の変更中にエラーが発生しました",
21 | "Invalid tag selected" : "無効なタグが選択されました",
22 | "Tag {tagName} already has a retention rule" : "タグ{tagName}にはすでに保持ルールがあります",
23 | "Invalid unit option" : "無効な単位オプションです",
24 | "Invalid action option" : "無効なアクションオプションです",
25 | "Invalid retention time" : "無効なリテンション時間です",
26 | "Retention rule for tag {tagName} saved" : "タグ{tagName}の保持ルールを保存しました",
27 | "Failed to save retention rule for tag {tagName}" : "タグ{tagName}の保持ルールを保存できませんでした",
28 | "File retention & automatic deletion" : "ファイル保持と自動削除",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "特定のタグのファイル保持期間を設定できます。保持期間後は自動削除されるので 機密文書の管理に使い勝手の良い機能です。",
30 | "Files tagged with" : "タグが付けられたファイル",
31 | "Retention time" : "保持期間",
32 | "From date of" : "いつから",
33 | "Create" : "作成",
34 | "Notify owner a day before a file is automatically deleted" : "ファイルを自動削除する前にユーザーに通知します。",
35 | "_%n day_::_%n days_" : ["%n日"],
36 | "_%n week_::_%n weeks_" : ["%n週間"],
37 | "_%n month_::_%n months_" : ["%nヶ月"],
38 | "_%n year_::_%n years_" : ["%n年"],
39 | "Delete retention rule for tag {tagName}" : "タグ{tagName}の保持ルールを削除します",
40 | "Retention rule for tag {tagName} has been deleted" : "タグ{tagName}の保存ルールが削除されました",
41 | "Failed to load tags" : "タグの読込に失敗しました"
42 | },"pluralForm" :"nplurals=1; plural=0;"
43 | }
--------------------------------------------------------------------------------
/l10n/ko.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "파일 보존",
3 | "{file} will be removed in 24 hours" : "{file}이(가) 24시간 후 삭제됩니다",
4 | "Your systems retention rules will delete this file within 24 hours." : "시스템의 파일 보존 규칙에 따라 이 파일은 24시간 후 삭제됩니다",
5 | "Retention" : "보존 기한",
6 | "This application allows for automatic deletion of files after a given time." : "이 앱은 지정된 시간 이후 자동으로 파일을 삭제하도록 합니다",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloud를 위한 파일 자동 삭제 설정 앱\n사용자가 삭제 하루 전 공지를 받도록 설정할 수 있음",
8 | "Days" : "일",
9 | "Weeks" : "주",
10 | "Months" : "개월",
11 | "Years" : "년",
12 | "Creation" : "생성",
13 | "Last modification" : "마지막 수정",
14 | "Time units" : "시간 단위",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "파일이 삭제되는 연, 월, 일, 주의 수",
16 | "Create new retention rule" : "새 보존 규칙 만들기",
17 | "An error occurred while loading the existing retention rules" : "기존 보존 규칙을 불러오는 중 오류 발생",
18 | "Users are now notified one day before a file or folder is being deleted" : "사용자는 이제 파일 및 폴더가 삭제되기 하루 전 공지를 받습니다",
19 | "Users are no longer notified before a file or folder is being deleted" : "사용자는 이제 파일 및 폴더가 삭제되기 전 공지를 받지 않습니다",
20 | "An error occurred while changing the setting" : "설정을 변경하는 중 오류 발생",
21 | "Invalid tag selected" : "유효하지 않은 태그가 선택됨",
22 | "Tag {tagName} already has a retention rule" : "태그 {tagName}에 이미 보존 규칙이 존재함",
23 | "Invalid unit option" : "유효하지 않은 단위 설정",
24 | "Invalid action option" : "유효하지 않은 동작 설정",
25 | "Invalid retention time" : "유효하지 않은 보존 기간",
26 | "Retention rule for tag {tagName} saved" : "태그 {tagName}에 대한 보존 규칙이 저장됨",
27 | "Failed to save retention rule for tag {tagName}" : "태그 {tagName}에 대한 보존 규칙을 저장할 수 없음",
28 | "File retention & automatic deletion" : "파일 보존 및 자동 삭제",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "지정한 태그가 있는 파일을 일정 기간이 지난 후 자동으로 삭제합니다. 기밀 문서에 유용합니다.",
30 | "Files tagged with" : "다음의 태그가 지정된 파일:",
31 | "Retention time" : "보존 기간",
32 | "From date of" : "다음의 날짜부터",
33 | "Create" : "생성",
34 | "Notify owner a day before a file is automatically deleted" : "파일 자동 삭제 하루 전 소유자에게 공지하기",
35 | "_%n day_::_%n days_" : ["%n일"],
36 | "_%n week_::_%n weeks_" : ["%n주"],
37 | "_%n month_::_%n months_" : ["%n개월"],
38 | "_%n year_::_%n years_" : ["%n년"],
39 | "Delete retention rule for tag {tagName}" : "태그 {tagName}에 대한 보존 규칙이 삭제됨",
40 | "Retention rule for tag {tagName} has been deleted" : "태그 {tagName}에 대한 보존 규칙이 삭제되었습니다",
41 | "Failed to load tags" : "태그 불러오기 실패"
42 | },"pluralForm" :"nplurals=1; plural=0;"
43 | }
--------------------------------------------------------------------------------
/l10n/ja.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "ファイル保持期間",
5 | "{file} will be removed in 24 hours" : "ファイル {file} は、24時間後に削除されます",
6 | "Your systems retention rules will delete this file within 24 hours." : "システムの保持ルールにより、このファイルは24時間以内に削除されます。",
7 | "Retention" : "保持",
8 | "This application allows for automatic deletion of files after a given time." : "このアプリケーションでは、指定期間後にファイルを自動削除することができます。",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "指定期間後にファイルを自動削除するNextcloud用のアプリです。\n前日にユーザーに通知することもできます。",
10 | "Days" : "日",
11 | "Weeks" : "週",
12 | "Months" : "月",
13 | "Years" : "年",
14 | "Creation" : "作成日から",
15 | "Last modification" : "最終更新日から",
16 | "Time units" : "時間単位",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "ファイルが削除されるまでの日数、週数、月数、または年数",
18 | "Create new retention rule" : "新しい保持ルールの作成",
19 | "An error occurred while loading the existing retention rules" : "既存の保存ルールの読み込み中にエラーが発生しました",
20 | "Users are now notified one day before a file or folder is being deleted" : "ファイルやフォルダーが削除される1日前にユーザーに通知されるようになりました。",
21 | "Users are no longer notified before a file or folder is being deleted" : "ファイルやフォルダーが削除される前にユーザーに通知されなくなりました。",
22 | "An error occurred while changing the setting" : "設定の変更中にエラーが発生しました",
23 | "Invalid tag selected" : "無効なタグが選択されました",
24 | "Tag {tagName} already has a retention rule" : "タグ{tagName}にはすでに保持ルールがあります",
25 | "Invalid unit option" : "無効な単位オプションです",
26 | "Invalid action option" : "無効なアクションオプションです",
27 | "Invalid retention time" : "無効なリテンション時間です",
28 | "Retention rule for tag {tagName} saved" : "タグ{tagName}の保持ルールを保存しました",
29 | "Failed to save retention rule for tag {tagName}" : "タグ{tagName}の保持ルールを保存できませんでした",
30 | "File retention & automatic deletion" : "ファイル保持と自動削除",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "特定のタグのファイル保持期間を設定できます。保持期間後は自動削除されるので 機密文書の管理に使い勝手の良い機能です。",
32 | "Files tagged with" : "タグが付けられたファイル",
33 | "Retention time" : "保持期間",
34 | "From date of" : "いつから",
35 | "Create" : "作成",
36 | "Notify owner a day before a file is automatically deleted" : "ファイルを自動削除する前にユーザーに通知します。",
37 | "_%n day_::_%n days_" : ["%n日"],
38 | "_%n week_::_%n weeks_" : ["%n週間"],
39 | "_%n month_::_%n months_" : ["%nヶ月"],
40 | "_%n year_::_%n years_" : ["%n年"],
41 | "Delete retention rule for tag {tagName}" : "タグ{tagName}の保持ルールを削除します",
42 | "Retention rule for tag {tagName} has been deleted" : "タグ{tagName}の保存ルールが削除されました",
43 | "Failed to load tags" : "タグの読込に失敗しました"
44 | },
45 | "nplurals=1; plural=0;");
46 |
--------------------------------------------------------------------------------
/l10n/ko.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "파일 보존",
5 | "{file} will be removed in 24 hours" : "{file}이(가) 24시간 후 삭제됩니다",
6 | "Your systems retention rules will delete this file within 24 hours." : "시스템의 파일 보존 규칙에 따라 이 파일은 24시간 후 삭제됩니다",
7 | "Retention" : "보존 기한",
8 | "This application allows for automatic deletion of files after a given time." : "이 앱은 지정된 시간 이후 자동으로 파일을 삭제하도록 합니다",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloud를 위한 파일 자동 삭제 설정 앱\n사용자가 삭제 하루 전 공지를 받도록 설정할 수 있음",
10 | "Days" : "일",
11 | "Weeks" : "주",
12 | "Months" : "개월",
13 | "Years" : "년",
14 | "Creation" : "생성",
15 | "Last modification" : "마지막 수정",
16 | "Time units" : "시간 단위",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "파일이 삭제되는 연, 월, 일, 주의 수",
18 | "Create new retention rule" : "새 보존 규칙 만들기",
19 | "An error occurred while loading the existing retention rules" : "기존 보존 규칙을 불러오는 중 오류 발생",
20 | "Users are now notified one day before a file or folder is being deleted" : "사용자는 이제 파일 및 폴더가 삭제되기 하루 전 공지를 받습니다",
21 | "Users are no longer notified before a file or folder is being deleted" : "사용자는 이제 파일 및 폴더가 삭제되기 전 공지를 받지 않습니다",
22 | "An error occurred while changing the setting" : "설정을 변경하는 중 오류 발생",
23 | "Invalid tag selected" : "유효하지 않은 태그가 선택됨",
24 | "Tag {tagName} already has a retention rule" : "태그 {tagName}에 이미 보존 규칙이 존재함",
25 | "Invalid unit option" : "유효하지 않은 단위 설정",
26 | "Invalid action option" : "유효하지 않은 동작 설정",
27 | "Invalid retention time" : "유효하지 않은 보존 기간",
28 | "Retention rule for tag {tagName} saved" : "태그 {tagName}에 대한 보존 규칙이 저장됨",
29 | "Failed to save retention rule for tag {tagName}" : "태그 {tagName}에 대한 보존 규칙을 저장할 수 없음",
30 | "File retention & automatic deletion" : "파일 보존 및 자동 삭제",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "지정한 태그가 있는 파일을 일정 기간이 지난 후 자동으로 삭제합니다. 기밀 문서에 유용합니다.",
32 | "Files tagged with" : "다음의 태그가 지정된 파일:",
33 | "Retention time" : "보존 기간",
34 | "From date of" : "다음의 날짜부터",
35 | "Create" : "생성",
36 | "Notify owner a day before a file is automatically deleted" : "파일 자동 삭제 하루 전 소유자에게 공지하기",
37 | "_%n day_::_%n days_" : ["%n일"],
38 | "_%n week_::_%n weeks_" : ["%n주"],
39 | "_%n month_::_%n months_" : ["%n개월"],
40 | "_%n year_::_%n years_" : ["%n년"],
41 | "Delete retention rule for tag {tagName}" : "태그 {tagName}에 대한 보존 규칙이 삭제됨",
42 | "Retention rule for tag {tagName} has been deleted" : "태그 {tagName}에 대한 보존 규칙이 삭제되었습니다",
43 | "Failed to load tags" : "태그 불러오기 실패"
44 | },
45 | "nplurals=1; plural=0;");
46 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 |
5 | # Changelog
6 | All notable changes to this project will be documented in this file.
7 |
8 | ## 3.0.0 - 2025-09-26
9 | ### Changed
10 |
11 | - ✨ Support and require Nextcloud 32.
12 | - 🗣️ Update translations.
13 | - 🔌 Upgrade dependencies.
14 |
15 | ## 2.0.1 - 2025-04-22
16 | ### Fixed
17 |
18 | - Consider upload time also when retention is based on modification
19 |
20 | ## 1.19.1 - 2025-04-22
21 | ### Fixed
22 |
23 | - Consider upload time also when retention is based on modification
24 |
25 | ## 1.18.1 - 2025-04-22
26 | ### Changed
27 |
28 | - Consider upload time also when retention is based on modification
29 |
30 | ## 2.0.0 - 2025-01-20
31 | ### Changed
32 |
33 | - ✨ Support and require Nextcloud 31.
34 | - 🗣️ Update translations.
35 | - 🔌 Upgrade dependencies.
36 |
37 | ## 1.19.0 - 2024-07-30
38 | ### Changed
39 |
40 | - ✨ Support and require Nextcloud 30.
41 | - 🗣️ Update translations.
42 | - 🔌 Upgrade dependencies.
43 |
44 | ## 1.18.0 - 2024-04-12
45 | ### Changed
46 |
47 | - ✨ Support and require Nextcloud 29.
48 | - 🗣️ Update translations.
49 | - 🔌 Upgrade dependencies.
50 |
51 | ## 1.17.2 - 2024-04-12
52 | ### Fixed
53 |
54 | - Fix searching and filtering tags
55 |
56 | ## 1.17.1 - 2024-02-26
57 | ### Fixed
58 |
59 | - Fix "retention time" and "from date of" fields.
60 | [#479](https://github.com/nextcloud/files_retention/pull/479)
61 |
62 | ## 1.17.0 - 2024-01-17
63 | ### Changed
64 |
65 | - ✨ Support and require Nextcloud 28.
66 | - 🗣️ Update translations.
67 | - 🔌 Upgrade dependencies.
68 |
69 | ## 1.16.0 - 2023-05-16
70 | ### Changed
71 |
72 | - ✨ Support and require Nextcloud 27.
73 | - 🗣️ Update translations.
74 | - 🔌 Upgrade dependencies.
75 |
76 | ## 1.15.0 – 2023-02-17
77 | ### Changed
78 | - Require Nextcloud 26
79 |
80 | ## 1.14.1 – 2023-01-02
81 | ### Added
82 | - Migrated the API to OCS so it's usable for clients
83 |
84 | ## 1.14.0 – 2022-10-18
85 | ### Changed
86 | - Require Nextcloud 25
87 |
88 | ## 1.13.2 – 2022-07-11
89 | ### Fixed
90 | - Fix UI not showing when a tag for any rule is missing
91 | [#186](https://github.com/nextcloud/files_retention/pull/186)
92 | - Show an error when saving a retention rule fails
93 | [#181](https://github.com/nextcloud/files_retention/pull/181)
94 | - Fix error when trying to add a retention rule
95 | [#183](https://github.com/nextcloud/files_retention/pull/183)
96 |
97 | ## 1.12.1 – 2022-07-11
98 | ### Fixed
99 | - Fix UI not showing when a tag for any rule is missing
100 | [#185](https://github.com/nextcloud/files_retention/pull/185)
101 | - Fix untranslated strings in admin settings
102 | [#180](https://github.com/nextcloud/files_retention/pull/180)
103 |
--------------------------------------------------------------------------------
/.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: nextcloud/pr-feedback-action@f0cab224dea8e1f282f9451de322f323c78fc7a5 # main
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: '2025-06-12'
54 | exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }}'
55 | exempt-bots: true
56 |
--------------------------------------------------------------------------------
/tests/lib/EventListenerTest.php:
--------------------------------------------------------------------------------
1 |
6 | *
7 | * @author Roeland Jago Douma
8 | *
9 | * @license GNU AGPL version 3 or any later version
10 | *
11 | * This program is free software: you can redistribute it and/or modify
12 | * it under the terms of the GNU Affero General Public License as
13 | * published by the Free Software Foundation, either version 3 of the
14 | * License, or (at your option) any later version.
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
22 | * along with this program. If not, see .
23 | *
24 | */
25 | namespace OCA\Files_Retention\Tests;
26 |
27 | use OCA\Files_Retention\Constants;
28 | use OCA\Files_Retention\EventListener;
29 | use OCP\IDBConnection;
30 | use OCP\SystemTag\ISystemTagManager;
31 | use Psr\Log\LoggerInterface;
32 |
33 | /**
34 | * Class EventListenerTest
35 | *
36 | * @package OCA\Files_Retention\Tests
37 | * @group DB
38 | */
39 | class EventListenerTest extends \Test\TestCase {
40 | private IDBConnection $db;
41 | private LoggerInterface $logger;
42 | private ISystemTagManager $tagManager;
43 |
44 | protected function setUp(): void {
45 | parent::setUp();
46 |
47 | $this->db = \OC::$server->getDatabaseConnection();
48 | $this->logger = $this->createMock(LoggerInterface::class);
49 | $this->tagManager = \OC::$server->get(ISystemTagManager::class);
50 | }
51 |
52 | protected function tearDown(): void {
53 | // Clear retention DB
54 | $qb = $this->db->getQueryBuilder();
55 | $qb->delete('retention');
56 | $qb->executeStatement();
57 | }
58 |
59 | private function addTag(int $tagId, int $timeunit, int $timeamount): void {
60 | $qb = $this->db->getQueryBuilder();
61 | $qb->insert('retention')
62 | ->setValue('tag_id', $qb->createNamedParameter($tagId))
63 | ->setValue('time_unit', $qb->createNamedParameter($timeunit))
64 | ->setValue('time_amount', $qb->createNamedParameter($timeamount));
65 | $qb->executeStatement();
66 | }
67 |
68 | public function testTagDeleted(): void {
69 | $tag = $this->tagManager->createTag(self::getUniqueID('foo'), true, true);
70 | $this->tagManager->deleteTags($tag->getId());
71 | $this->addTag((int)$tag->getId(), 1, Constants::UNIT_DAY);
72 |
73 | $eventListener = new EventListener($this->db, $this->logger);
74 | self::invokePrivate($eventListener, 'tagDeleted', [$tag]);
75 |
76 | $qb = $this->db->getQueryBuilder();
77 | $qb->select('*')
78 | ->from('retention');
79 | $cursor = $qb->executeQuery();
80 | $data = $cursor->fetchAll();
81 | $cursor->closeCursor();
82 |
83 | $this->assertCount(0, $data);
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/.github/workflows/npm-audit-fix.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-License-Identifier: MIT
8 |
9 | name: Npm audit fix and compile
10 |
11 | on:
12 | workflow_dispatch:
13 | schedule:
14 | # At 2:30 on Sundays
15 | - cron: '30 2 * * 0'
16 |
17 | permissions:
18 | contents: read
19 |
20 | jobs:
21 | build:
22 | runs-on: ubuntu-latest
23 |
24 | strategy:
25 | fail-fast: false
26 | matrix:
27 | branches:
28 | - ${{ github.event.repository.default_branch }}
29 | - 'stable32'
30 | - 'stable31'
31 |
32 | name: npm-audit-fix-${{ matrix.branches }}
33 |
34 | steps:
35 | - name: Checkout
36 | id: checkout
37 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
38 | with:
39 | persist-credentials: false
40 | ref: ${{ matrix.branches }}
41 | continue-on-error: true
42 |
43 | - name: Read package.json node and npm engines version
44 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
45 | id: versions
46 | with:
47 | fallbackNode: '^24'
48 | fallbackNpm: '^11.3'
49 |
50 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
51 | uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
52 | with:
53 | node-version: ${{ steps.versions.outputs.nodeVersion }}
54 |
55 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
56 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
57 |
58 | - name: Fix npm audit
59 | id: npm-audit
60 | uses: nextcloud-libraries/npm-audit-action@1b1728b2b4a7a78d69de65608efcf4db0e3e42d0 # v0.2.0
61 |
62 | - name: Run npm ci and npm run build
63 | if: steps.checkout.outcome == 'success'
64 | env:
65 | CYPRESS_INSTALL_BINARY: 0
66 | run: |
67 | npm ci
68 | npm run build --if-present
69 |
70 | - name: Create Pull Request
71 | if: steps.checkout.outcome == 'success'
72 | uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
73 | with:
74 | token: ${{ secrets.COMMAND_BOT_PAT }}
75 | commit-message: 'fix(deps): Fix npm audit'
76 | committer: GitHub
77 | author: nextcloud-command
78 | signoff: true
79 | branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
80 | title: '[${{ matrix.branches }}] Fix npm audit'
81 | body: ${{ steps.npm-audit.outputs.markdown }}
82 | labels: |
83 | dependencies
84 | 3. to review
85 |
--------------------------------------------------------------------------------
/.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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
60 | with:
61 | persist-credentials: false
62 |
63 | - name: Read package.json node and npm engines version
64 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3
65 | id: versions
66 | with:
67 | fallbackNode: '^24'
68 | fallbackNpm: '^11.3'
69 |
70 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
71 | uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
72 | with:
73 | node-version: ${{ steps.versions.outputs.nodeVersion }}
74 |
75 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }}
76 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}'
77 |
78 | - name: Install dependencies
79 | env:
80 | CYPRESS_INSTALL_BINARY: 0
81 | PUPPETEER_SKIP_DOWNLOAD: true
82 | run: npm ci
83 |
84 | - name: Lint
85 | run: npm run lint
86 |
87 | summary:
88 | permissions:
89 | contents: none
90 | runs-on: ubuntu-latest-low
91 | needs: [changes, lint]
92 |
93 | if: always()
94 |
95 | # This is the summary, we just avoid to rename it so that branch protection rules still match
96 | name: eslint
97 |
98 | steps:
99 | - name: Summary status
100 | run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
101 |
--------------------------------------------------------------------------------
/src/Components/RetentionRule.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 | {{ tagName }}
9 |
10 |
11 | {{ getAmountAndUnit }}
12 |
13 |
14 | {{ getAfter }}
15 |
16 |
17 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
114 |
115 |
141 |
--------------------------------------------------------------------------------
/l10n/fa.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Files retention",
3 | "{file} will be removed in 24 hours" : "{file} تا 24 ساعت دیگر حذف خواهد شد",
4 | "Your systems retention rules will delete this file within 24 hours." : "Your systems retention rules will delete this file within 24 hours.",
5 | "Retention" : "نگهداری",
6 | "This application allows for automatic deletion of files after a given time." : "This application allows for automatic deletion of files after a given time.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before.",
8 | "Days" : "روزها",
9 | "Weeks" : "هفتهها",
10 | "Months" : "ماهها",
11 | "Years" : "سالها",
12 | "Creation" : "Creation",
13 | "Last modification" : "Last modification",
14 | "Number of days, weeks, months or years after which the files should be deleted" : "Number of days, weeks, months or years after which the files should be deleted",
15 | "Create new retention rule" : "Create new retention rule",
16 | "An error occurred while loading the existing retention rules" : "An error occurred while loading the existing retention rules",
17 | "Users are now notified one day before a file or folder is being deleted" : "Users are now notified one day before a file or folder is being deleted",
18 | "Users are no longer notified before a file or folder is being deleted" : "Users are no longer notified before a file or folder is being deleted",
19 | "An error occurred while changing the setting" : "An error occurred while changing the setting",
20 | "Invalid tag selected" : "Invalid tag selected",
21 | "Tag {tagName} already has a retention rule" : "Tag {tagName} already has a retention rule",
22 | "Invalid unit option" : "Invalid unit option",
23 | "Invalid action option" : "Invalid action option",
24 | "Invalid retention time" : "Invalid retention time",
25 | "Retention rule for tag {tagName} saved" : "Retention rule for tag {tagName} saved",
26 | "Failed to save retention rule for tag {tagName}" : "Failed to save retention rule for tag {tagName}",
27 | "File retention & automatic deletion" : "File retention & automatic deletion",
28 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "اگر فایلهایی با برچسب مشخص شده اند باید بعد از مدتی به طور خودکار حذف شوند تعریف کنید. این برای اسناد محرمانه مفید است.",
29 | "Files tagged with" : "Files tagged with",
30 | "Retention time" : "Retention time",
31 | "From date of" : "From date of",
32 | "Create" : "ایجاد کردن",
33 | "Notify owner a day before a file is automatically deleted" : "Notify owner a day before a file is automatically deleted",
34 | "_%n day_::_%n days_" : ["%n day","%n days"],
35 | "_%n week_::_%n weeks_" : ["%n week","%n weeks"],
36 | "_%n month_::_%n months_" : ["%n month","%n months"],
37 | "_%n year_::_%n years_" : ["%n year","%n years"],
38 | "Delete retention rule for tag {tagName}" : "Delete retention rule for tag {tagName}",
39 | "Retention rule for tag {tagName} has been deleted" : "Retention rule for tag {tagName} has been deleted",
40 | "Failed to load tags" : "بارگیری برچسب ها انجام نشد"
41 | },"pluralForm" :"nplurals=2; plural=(n > 1);"
42 | }
--------------------------------------------------------------------------------
/l10n/lo.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "ການເກັບຮັກສາໄຟລ໌",
3 | "{file} will be removed in 24 hours" : "{file} ຈະຖືກລຶບອອກໃນອີກ 24 ຊົ່ວໂມງ",
4 | "Your systems retention rules will delete this file within 24 hours." : "ກົດລະບຽບການເກັບຮັກສາຂອງລະບົບຈະລຶບໄຟລ໌ນີ້ພາຍໃນ 24 ຊົ່ວໂມງ.",
5 | "Retention" : "ການເກັບຮັກສາ",
6 | "This application allows for automatic deletion of files after a given time." : "ແອັບພລິເຄຊັນນີ້ສາມາດລຶບໄຟລ໌ໄດ້ໂດຍອັດຕະໂນມັດຫຼັງຈາກໄລຍະເວລາທີ່ກຳນົດ.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "ແອັບສຳລັບ Nextcloud ທີ່ໃຊ້ຄວບຄຸມການລຶບໄຟລ໌ອັດຕະໂນມັດຫຼັງຈາກໄລຍະເວລາທີ່ກຳນົດ.\nນອກຈາກນີ້ຍັງສາມາດແຈ້ງເຕືອນຜູ້ໃຊ້ລ່ວງໜ້າໜຶ່ງມື້ກ່ອນການລຶບ.",
8 | "Days" : "ມື້",
9 | "Weeks" : "ອາທິດ",
10 | "Months" : "ເດືອນ",
11 | "Years" : "ປີ",
12 | "Creation" : "ວັນທີສ້າງ",
13 | "Last modification" : "ການແກ້ໄຂຄັ້ງລ່າສຸດ",
14 | "Time units" : "ຫົວໜ່ວຍເວລາ",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "ຈຳນວນມື້, ອາທິດ, ເດືອນ ຫຼື ປີ ທີ່ໄຟລ໌ຈະຖືກລຶບຫຼັງຈາກນັ້ນ",
16 | "Create new retention rule" : "ສ້າງກົດລະບຽບການເກັບຮັກສາໃໝ່",
17 | "An error occurred while loading the existing retention rules" : "ເກີດຂໍ້ຜິດພາດຂະນະກຳລັງໂຫຼດກົດລະບຽບການເກັບຮັກສາທີ່ມີຢູ່",
18 | "Users are now notified one day before a file or folder is being deleted" : "ຕອນນີ້ຜູ້ໃຊ້ຈະໄດ້ຮັບການແຈ້ງເຕືອນໜຶ່ງມື້ກ່ອນທີ່ໄຟລ໌ ຫຼື ໂຟນເດີຈະຖືກລຶບ",
19 | "Users are no longer notified before a file or folder is being deleted" : "ຜູ້ໃຊ້ຈະບໍ່ໄດ້ຮັບການແຈ້ງເຕືອນກ່ອນທີ່ໄຟລ໌ ຫຼື ໂຟນເດີຈະຖືກລຶບອີກຕໍ່ໄປ",
20 | "An error occurred while changing the setting" : "ເກີດຂໍ້ຜິດພາດຂະນະກຳລັງປ່ຽນການຕັ້ງຄ່າ",
21 | "Invalid tag selected" : "ປ້າຍກຳກັບທີ່ເລືອກບໍ່ຖືກຕ້ອງ",
22 | "Tag {tagName} already has a retention rule" : "ປ້າຍກຳກັບ {tagName} ມີກົດລະບຽບການເກັບຮັກສາຢູ່ແລ້ວ",
23 | "Invalid unit option" : "ຕົວເລືອກຫົວໜ່ວຍບໍ່ຖືກຕ້ອງ",
24 | "Invalid action option" : "ຕົວເລືອກການກະທຳບໍ່ຖືກຕ້ອງ",
25 | "Invalid retention time" : "ເວລາກຳນົດການເກັບຮັກສາບໍ່ຖືກຕ້ອງ",
26 | "Retention rule for tag {tagName} saved" : "ບັນທຶກກົດລະບຽບການເກັບຮັກສາສຳລັບປ້າຍກຳກັບ {tagName} ແລ້ວ",
27 | "Failed to save retention rule for tag {tagName}" : "ບັນທຶກກົດລະບຽບການເກັບຮັກສາສຳລັບປ້າຍກຳກັບ {tagName} ລົ້ມເຫຼວ",
28 | "File retention & automatic deletion" : "ການເກັບຮັກສາໄຟລ໌ ແລະ ການລຶບອັດຕະໂນມັດ",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "ກຳນົດວ່າໄຟລ໌ທີ່ຕິດປ້າຍກຳກັບສະເພາະຄວນຈະຖືກລຶບໂດຍອັດຕະໂນມັດຫຼັງຈາກໄລຍະເວລາໜຶ່ງ. ສິ່ງນີ້ມີປະໂຫຍດສຳລັບເອກະສານທີ່ເປັນຄວາມລັບ.",
30 | "Files tagged with" : "ໄຟລ໌ທີ່ຕິດປ້າຍກຳກັບ",
31 | "Retention time" : "ໄລຍະເວລາເກັບຮັກສາ",
32 | "From date of" : "ນັບຈາກວັນທີ",
33 | "Create" : "ສ້າງ",
34 | "Notify owner a day before a file is automatically deleted" : "ແຈ້ງເຕືອນເຈົ້າຂອງໜຶ່ງມື້ກ່ອນທີ່ໄຟລ໌ຈະຖືກລຶບອັດຕະໂນມັດ",
35 | "_%n day_::_%n days_" : ["%n ມື້"],
36 | "_%n week_::_%n weeks_" : ["%n ອາທິດ"],
37 | "_%n month_::_%n months_" : ["%n ເດືອນ"],
38 | "_%n year_::_%n years_" : ["%n ປີ"],
39 | "Delete retention rule for tag {tagName}" : "ລຶບກົດລະບຽບການເກັບຮັກສາຂອງປ້າຍກຳກັບ {tagName}",
40 | "Retention rule for tag {tagName} has been deleted" : "ກົດລະບຽບການເກັບຮັກສາຂອງປ້າຍກຳກັບ {tagName} ໄດ້ຖືກລຶບອອກແລ້ວ",
41 | "Failed to load tags" : "ໂຫຼດປ້າຍກຳກັບລົ້ມເຫຼວ"
42 | },"pluralForm" :"nplurals=1; plural=0;"
43 | }
--------------------------------------------------------------------------------
/l10n/fa.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Files retention",
5 | "{file} will be removed in 24 hours" : "{file} تا 24 ساعت دیگر حذف خواهد شد",
6 | "Your systems retention rules will delete this file within 24 hours." : "Your systems retention rules will delete this file within 24 hours.",
7 | "Retention" : "نگهداری",
8 | "This application allows for automatic deletion of files after a given time." : "This application allows for automatic deletion of files after a given time.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before.",
10 | "Days" : "روزها",
11 | "Weeks" : "هفتهها",
12 | "Months" : "ماهها",
13 | "Years" : "سالها",
14 | "Creation" : "Creation",
15 | "Last modification" : "Last modification",
16 | "Number of days, weeks, months or years after which the files should be deleted" : "Number of days, weeks, months or years after which the files should be deleted",
17 | "Create new retention rule" : "Create new retention rule",
18 | "An error occurred while loading the existing retention rules" : "An error occurred while loading the existing retention rules",
19 | "Users are now notified one day before a file or folder is being deleted" : "Users are now notified one day before a file or folder is being deleted",
20 | "Users are no longer notified before a file or folder is being deleted" : "Users are no longer notified before a file or folder is being deleted",
21 | "An error occurred while changing the setting" : "An error occurred while changing the setting",
22 | "Invalid tag selected" : "Invalid tag selected",
23 | "Tag {tagName} already has a retention rule" : "Tag {tagName} already has a retention rule",
24 | "Invalid unit option" : "Invalid unit option",
25 | "Invalid action option" : "Invalid action option",
26 | "Invalid retention time" : "Invalid retention time",
27 | "Retention rule for tag {tagName} saved" : "Retention rule for tag {tagName} saved",
28 | "Failed to save retention rule for tag {tagName}" : "Failed to save retention rule for tag {tagName}",
29 | "File retention & automatic deletion" : "File retention & automatic deletion",
30 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "اگر فایلهایی با برچسب مشخص شده اند باید بعد از مدتی به طور خودکار حذف شوند تعریف کنید. این برای اسناد محرمانه مفید است.",
31 | "Files tagged with" : "Files tagged with",
32 | "Retention time" : "Retention time",
33 | "From date of" : "From date of",
34 | "Create" : "ایجاد کردن",
35 | "Notify owner a day before a file is automatically deleted" : "Notify owner a day before a file is automatically deleted",
36 | "_%n day_::_%n days_" : ["%n day","%n days"],
37 | "_%n week_::_%n weeks_" : ["%n week","%n weeks"],
38 | "_%n month_::_%n months_" : ["%n month","%n months"],
39 | "_%n year_::_%n years_" : ["%n year","%n years"],
40 | "Delete retention rule for tag {tagName}" : "Delete retention rule for tag {tagName}",
41 | "Retention rule for tag {tagName} has been deleted" : "Retention rule for tag {tagName} has been deleted",
42 | "Failed to load tags" : "بارگیری برچسب ها انجام نشد"
43 | },
44 | "nplurals=2; plural=(n > 1);");
45 |
--------------------------------------------------------------------------------
/l10n/lo.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "ການເກັບຮັກສາໄຟລ໌",
5 | "{file} will be removed in 24 hours" : "{file} ຈະຖືກລຶບອອກໃນອີກ 24 ຊົ່ວໂມງ",
6 | "Your systems retention rules will delete this file within 24 hours." : "ກົດລະບຽບການເກັບຮັກສາຂອງລະບົບຈະລຶບໄຟລ໌ນີ້ພາຍໃນ 24 ຊົ່ວໂມງ.",
7 | "Retention" : "ການເກັບຮັກສາ",
8 | "This application allows for automatic deletion of files after a given time." : "ແອັບພລິເຄຊັນນີ້ສາມາດລຶບໄຟລ໌ໄດ້ໂດຍອັດຕະໂນມັດຫຼັງຈາກໄລຍະເວລາທີ່ກຳນົດ.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "ແອັບສຳລັບ Nextcloud ທີ່ໃຊ້ຄວບຄຸມການລຶບໄຟລ໌ອັດຕະໂນມັດຫຼັງຈາກໄລຍະເວລາທີ່ກຳນົດ.\nນອກຈາກນີ້ຍັງສາມາດແຈ້ງເຕືອນຜູ້ໃຊ້ລ່ວງໜ້າໜຶ່ງມື້ກ່ອນການລຶບ.",
10 | "Days" : "ມື້",
11 | "Weeks" : "ອາທິດ",
12 | "Months" : "ເດືອນ",
13 | "Years" : "ປີ",
14 | "Creation" : "ວັນທີສ້າງ",
15 | "Last modification" : "ການແກ້ໄຂຄັ້ງລ່າສຸດ",
16 | "Time units" : "ຫົວໜ່ວຍເວລາ",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "ຈຳນວນມື້, ອາທິດ, ເດືອນ ຫຼື ປີ ທີ່ໄຟລ໌ຈະຖືກລຶບຫຼັງຈາກນັ້ນ",
18 | "Create new retention rule" : "ສ້າງກົດລະບຽບການເກັບຮັກສາໃໝ່",
19 | "An error occurred while loading the existing retention rules" : "ເກີດຂໍ້ຜິດພາດຂະນະກຳລັງໂຫຼດກົດລະບຽບການເກັບຮັກສາທີ່ມີຢູ່",
20 | "Users are now notified one day before a file or folder is being deleted" : "ຕອນນີ້ຜູ້ໃຊ້ຈະໄດ້ຮັບການແຈ້ງເຕືອນໜຶ່ງມື້ກ່ອນທີ່ໄຟລ໌ ຫຼື ໂຟນເດີຈະຖືກລຶບ",
21 | "Users are no longer notified before a file or folder is being deleted" : "ຜູ້ໃຊ້ຈະບໍ່ໄດ້ຮັບການແຈ້ງເຕືອນກ່ອນທີ່ໄຟລ໌ ຫຼື ໂຟນເດີຈະຖືກລຶບອີກຕໍ່ໄປ",
22 | "An error occurred while changing the setting" : "ເກີດຂໍ້ຜິດພາດຂະນະກຳລັງປ່ຽນການຕັ້ງຄ່າ",
23 | "Invalid tag selected" : "ປ້າຍກຳກັບທີ່ເລືອກບໍ່ຖືກຕ້ອງ",
24 | "Tag {tagName} already has a retention rule" : "ປ້າຍກຳກັບ {tagName} ມີກົດລະບຽບການເກັບຮັກສາຢູ່ແລ້ວ",
25 | "Invalid unit option" : "ຕົວເລືອກຫົວໜ່ວຍບໍ່ຖືກຕ້ອງ",
26 | "Invalid action option" : "ຕົວເລືອກການກະທຳບໍ່ຖືກຕ້ອງ",
27 | "Invalid retention time" : "ເວລາກຳນົດການເກັບຮັກສາບໍ່ຖືກຕ້ອງ",
28 | "Retention rule for tag {tagName} saved" : "ບັນທຶກກົດລະບຽບການເກັບຮັກສາສຳລັບປ້າຍກຳກັບ {tagName} ແລ້ວ",
29 | "Failed to save retention rule for tag {tagName}" : "ບັນທຶກກົດລະບຽບການເກັບຮັກສາສຳລັບປ້າຍກຳກັບ {tagName} ລົ້ມເຫຼວ",
30 | "File retention & automatic deletion" : "ການເກັບຮັກສາໄຟລ໌ ແລະ ການລຶບອັດຕະໂນມັດ",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "ກຳນົດວ່າໄຟລ໌ທີ່ຕິດປ້າຍກຳກັບສະເພາະຄວນຈະຖືກລຶບໂດຍອັດຕະໂນມັດຫຼັງຈາກໄລຍະເວລາໜຶ່ງ. ສິ່ງນີ້ມີປະໂຫຍດສຳລັບເອກະສານທີ່ເປັນຄວາມລັບ.",
32 | "Files tagged with" : "ໄຟລ໌ທີ່ຕິດປ້າຍກຳກັບ",
33 | "Retention time" : "ໄລຍະເວລາເກັບຮັກສາ",
34 | "From date of" : "ນັບຈາກວັນທີ",
35 | "Create" : "ສ້າງ",
36 | "Notify owner a day before a file is automatically deleted" : "ແຈ້ງເຕືອນເຈົ້າຂອງໜຶ່ງມື້ກ່ອນທີ່ໄຟລ໌ຈະຖືກລຶບອັດຕະໂນມັດ",
37 | "_%n day_::_%n days_" : ["%n ມື້"],
38 | "_%n week_::_%n weeks_" : ["%n ອາທິດ"],
39 | "_%n month_::_%n months_" : ["%n ເດືອນ"],
40 | "_%n year_::_%n years_" : ["%n ປີ"],
41 | "Delete retention rule for tag {tagName}" : "ລຶບກົດລະບຽບການເກັບຮັກສາຂອງປ້າຍກຳກັບ {tagName}",
42 | "Retention rule for tag {tagName} has been deleted" : "ກົດລະບຽບການເກັບຮັກສາຂອງປ້າຍກຳກັບ {tagName} ໄດ້ຖືກລຶບອອກແລ້ວ",
43 | "Failed to load tags" : "ໂຫຼດປ້າຍກຳກັບລົ້ມເຫຼວ"
44 | },
45 | "nplurals=1; plural=0;");
46 |
--------------------------------------------------------------------------------
/l10n/en_GB.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Files retention",
3 | "{file} will be removed in 24 hours" : "{file} will be removed in 24 hours",
4 | "Your systems retention rules will delete this file within 24 hours." : "Your systems retention rules will delete this file within 24 hours.",
5 | "Retention" : "Retention",
6 | "This application allows for automatic deletion of files after a given time." : "This application allows for automatic deletion of files after a given time.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before.",
8 | "Days" : "Days",
9 | "Weeks" : "Weeks",
10 | "Months" : "Months",
11 | "Years" : "Years",
12 | "Creation" : "Creation",
13 | "Last modification" : "Last modification",
14 | "Time units" : "Time units",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "Number of days, weeks, months or years after which the files should be deleted",
16 | "Create new retention rule" : "Create new retention rule",
17 | "An error occurred while loading the existing retention rules" : "An error occurred while loading the existing retention rules",
18 | "Users are now notified one day before a file or folder is being deleted" : "Users are now notified one day before a file or folder is being deleted",
19 | "Users are no longer notified before a file or folder is being deleted" : "Users are no longer notified before a file or folder is being deleted",
20 | "An error occurred while changing the setting" : "An error occurred while changing the setting",
21 | "Invalid tag selected" : "Invalid tag selected",
22 | "Tag {tagName} already has a retention rule" : "Tag {tagName} already has a retention rule",
23 | "Invalid unit option" : "Invalid unit option",
24 | "Invalid action option" : "Invalid action option",
25 | "Invalid retention time" : "Invalid retention time",
26 | "Retention rule for tag {tagName} saved" : "Retention rule for tag {tagName} saved",
27 | "Failed to save retention rule for tag {tagName}" : "Failed to save retention rule for tag {tagName}",
28 | "File retention & automatic deletion" : "File retention & automatic deletion",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents.",
30 | "Files tagged with" : "Files tagged with",
31 | "Retention time" : "Retention time",
32 | "From date of" : "From date of",
33 | "Create" : "Create",
34 | "Notify owner a day before a file is automatically deleted" : "Notify owner a day before a file is automatically deleted",
35 | "_%n day_::_%n days_" : ["%n day","%n days"],
36 | "_%n week_::_%n weeks_" : ["%n week","%n weeks"],
37 | "_%n month_::_%n months_" : ["%n month","%n months"],
38 | "_%n year_::_%n years_" : ["%n year","%n years"],
39 | "Delete retention rule for tag {tagName}" : "Delete retention rule for tag {tagName}",
40 | "Retention rule for tag {tagName} has been deleted" : "Retention rule for tag {tagName} has been deleted",
41 | "Failed to load tags" : "Failed to load tags"
42 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
43 | }
--------------------------------------------------------------------------------
/l10n/sv.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Fillagring",
3 | "{file} will be removed in 24 hours" : "{file} kommer tas bort inom 24 timmar",
4 | "Your systems retention rules will delete this file within 24 hours." : "Dina lagringsregler raderar den här filen inom 24 timmar.",
5 | "Retention" : "Lagring",
6 | "This application allows for automatic deletion of files after a given time." : "Den här applikationen möjliggör automatisk radering av filer efter en viss tid.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "En applikation för Nextcloud för att kontrollera automatisk borttagning av filer efter en viss tid.\nDet är möjligt att informera användare dagen före.",
8 | "Days" : "Dagar",
9 | "Weeks" : "Veckor",
10 | "Months" : "Månader",
11 | "Years" : "År",
12 | "Creation" : "Skapad",
13 | "Last modification" : "Senast ändrad",
14 | "Time units" : "Tidsenheter",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "Antal dagar, veckor, månader eller år efter vilka filerna ska tas bort",
16 | "Create new retention rule" : "Skapa en ny lagringsregel",
17 | "An error occurred while loading the existing retention rules" : "Ett fel uppstod vid inläsning av befintliga lagringsregler",
18 | "Users are now notified one day before a file or folder is being deleted" : "Användare får nu en avisering en dag innan en fil eller mapp raderas",
19 | "Users are no longer notified before a file or folder is being deleted" : "Användare får inte längre avisering innan en fil eller mapp raderas",
20 | "An error occurred while changing the setting" : "Ett fel uppstod när inställningen ändrades",
21 | "Invalid tag selected" : "Ogiltig tagg vald",
22 | "Tag {tagName} already has a retention rule" : "Taggen {tagName} har redan en lagringsregel",
23 | "Invalid unit option" : "Ogiltigt enhetsalternativ",
24 | "Invalid action option" : "Ogiltigt åtgärdsalternativ",
25 | "Invalid retention time" : "Ogiltig lagringstid",
26 | "Retention rule for tag {tagName} saved" : "Lagringsregel för taggen {tagName} sparad",
27 | "Failed to save retention rule for tag {tagName}" : "Kunde inte spara lagringsregel för taggen {tagName}",
28 | "File retention & automatic deletion" : "Fillagring & automatisk borttagning",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definiera om filer som taggats med en viss tagg ska raderas automatiskt efter en tid. Detta är användbart för konfidentiella dokument.",
30 | "Files tagged with" : "Filer taggade med",
31 | "Retention time" : "Lagringstid",
32 | "From date of" : "Från datum för",
33 | "Create" : "Skapa",
34 | "Notify owner a day before a file is automatically deleted" : "Meddela ägaren en dag innan en fil automatiskt tas bort",
35 | "_%n day_::_%n days_" : ["%n dag","%n dagar"],
36 | "_%n week_::_%n weeks_" : ["%n vecka","%n veckor"],
37 | "_%n month_::_%n months_" : ["%n månad","%n månader"],
38 | "_%n year_::_%n years_" : ["%n år","%n år"],
39 | "Delete retention rule for tag {tagName}" : "Ta bort lagringsregel för taggen {tagName}",
40 | "Retention rule for tag {tagName} has been deleted" : "Lagringsregeln för taggen {tagName} har tagits bort",
41 | "Failed to load tags" : "Kunde inte läsa in taggar"
42 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
43 | }
--------------------------------------------------------------------------------
/l10n/nb.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Oppbevaring av filer",
3 | "{file} will be removed in 24 hours" : "{file} fjernes om 24 timer",
4 | "Your systems retention rules will delete this file within 24 hours." : "Systemoppbevaringsreglene vil slette denne filen innen 24 timer.",
5 | "Retention" : "Oppbevaring",
6 | "This application allows for automatic deletion of files after a given time." : "Denne applikasjonen tillater automatisk sletting av filer etter en gitt tid.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "En app for Nextcloud for å kontrollere automatisk sletting av filer etter en gitt tid.\nEventuelt kan brukerne informeres dagen før.",
8 | "Days" : "Dager",
9 | "Weeks" : "Uker",
10 | "Months" : "Måneder",
11 | "Years" : "År",
12 | "Creation" : "Opprettelse",
13 | "Last modification" : "Siste endring",
14 | "Time units" : "Tidsenheter",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "Antall dager, uker, måneder eller år som filene skal slettes etter",
16 | "Create new retention rule" : "Opprett ny oppbevaringsregel",
17 | "An error occurred while loading the existing retention rules" : "Det oppstod en feil under lasting av de eksisterende oppbevaringsreglene",
18 | "Users are now notified one day before a file or folder is being deleted" : "Brukere blir nå varslet én dag før en fil eller mappe slettes",
19 | "Users are no longer notified before a file or folder is being deleted" : "Brukere blir ikke lenger varslet før en fil eller mappe slettes",
20 | "An error occurred while changing the setting" : "En feil oppstod under endring av innstillingen",
21 | "Invalid tag selected" : "Ugyldig merke valgt",
22 | "Tag {tagName} already has a retention rule" : "Merke {tagName} har allerede en oppbevaringsregel",
23 | "Invalid unit option" : "Ugyldig enhetsalternativ",
24 | "Invalid action option" : "Ugyldig handlingsalternativ",
25 | "Invalid retention time" : "Ugyldig oppbevaringstid",
26 | "Retention rule for tag {tagName} saved" : "Oppbevaringsregel for merke {tagName} lagret",
27 | "Failed to save retention rule for tag {tagName}" : "Lagring av oppbevaringsregel for merke {tagName} feilet",
28 | "File retention & automatic deletion" : "Filoppbevaring og automatisk sletting",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definer om filer merket med en spesifikk etikett skal slettes automatisk etter en tid. Dette er nyttig for konfidensielle dokumenter.",
30 | "Files tagged with" : "Filer merket med",
31 | "Retention time" : "Oppbevaringstid",
32 | "From date of" : "Fra dato for",
33 | "Create" : "Opprett",
34 | "Notify owner a day before a file is automatically deleted" : "Varsle eieren en dag før en fil slettes automatisk",
35 | "_%n day_::_%n days_" : ["%n dag","%n dager"],
36 | "_%n week_::_%n weeks_" : ["%n uke","%n uker"],
37 | "_%n month_::_%n months_" : ["%n måned","%n måneder"],
38 | "_%n year_::_%n years_" : ["%når","%n år"],
39 | "Delete retention rule for tag {tagName}" : "Slett oppbevaringsregel for merke {tagName}",
40 | "Retention rule for tag {tagName} has been deleted" : "Oppbevaringsregel for merke {tagName} er slettet",
41 | "Failed to load tags" : "Lasting av merkelapper feilet"
42 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
43 | }
--------------------------------------------------------------------------------
/l10n/en_GB.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Files retention",
5 | "{file} will be removed in 24 hours" : "{file} will be removed in 24 hours",
6 | "Your systems retention rules will delete this file within 24 hours." : "Your systems retention rules will delete this file within 24 hours.",
7 | "Retention" : "Retention",
8 | "This application allows for automatic deletion of files after a given time." : "This application allows for automatic deletion of files after a given time.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before.",
10 | "Days" : "Days",
11 | "Weeks" : "Weeks",
12 | "Months" : "Months",
13 | "Years" : "Years",
14 | "Creation" : "Creation",
15 | "Last modification" : "Last modification",
16 | "Time units" : "Time units",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "Number of days, weeks, months or years after which the files should be deleted",
18 | "Create new retention rule" : "Create new retention rule",
19 | "An error occurred while loading the existing retention rules" : "An error occurred while loading the existing retention rules",
20 | "Users are now notified one day before a file or folder is being deleted" : "Users are now notified one day before a file or folder is being deleted",
21 | "Users are no longer notified before a file or folder is being deleted" : "Users are no longer notified before a file or folder is being deleted",
22 | "An error occurred while changing the setting" : "An error occurred while changing the setting",
23 | "Invalid tag selected" : "Invalid tag selected",
24 | "Tag {tagName} already has a retention rule" : "Tag {tagName} already has a retention rule",
25 | "Invalid unit option" : "Invalid unit option",
26 | "Invalid action option" : "Invalid action option",
27 | "Invalid retention time" : "Invalid retention time",
28 | "Retention rule for tag {tagName} saved" : "Retention rule for tag {tagName} saved",
29 | "Failed to save retention rule for tag {tagName}" : "Failed to save retention rule for tag {tagName}",
30 | "File retention & automatic deletion" : "File retention & automatic deletion",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents.",
32 | "Files tagged with" : "Files tagged with",
33 | "Retention time" : "Retention time",
34 | "From date of" : "From date of",
35 | "Create" : "Create",
36 | "Notify owner a day before a file is automatically deleted" : "Notify owner a day before a file is automatically deleted",
37 | "_%n day_::_%n days_" : ["%n day","%n days"],
38 | "_%n week_::_%n weeks_" : ["%n week","%n weeks"],
39 | "_%n month_::_%n months_" : ["%n month","%n months"],
40 | "_%n year_::_%n years_" : ["%n year","%n years"],
41 | "Delete retention rule for tag {tagName}" : "Delete retention rule for tag {tagName}",
42 | "Retention rule for tag {tagName} has been deleted" : "Retention rule for tag {tagName} has been deleted",
43 | "Failed to load tags" : "Failed to load tags"
44 | },
45 | "nplurals=2; plural=(n != 1);");
46 |
--------------------------------------------------------------------------------
/l10n/sv.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Fillagring",
5 | "{file} will be removed in 24 hours" : "{file} kommer tas bort inom 24 timmar",
6 | "Your systems retention rules will delete this file within 24 hours." : "Dina lagringsregler raderar den här filen inom 24 timmar.",
7 | "Retention" : "Lagring",
8 | "This application allows for automatic deletion of files after a given time." : "Den här applikationen möjliggör automatisk radering av filer efter en viss tid.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "En applikation för Nextcloud för att kontrollera automatisk borttagning av filer efter en viss tid.\nDet är möjligt att informera användare dagen före.",
10 | "Days" : "Dagar",
11 | "Weeks" : "Veckor",
12 | "Months" : "Månader",
13 | "Years" : "År",
14 | "Creation" : "Skapad",
15 | "Last modification" : "Senast ändrad",
16 | "Time units" : "Tidsenheter",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "Antal dagar, veckor, månader eller år efter vilka filerna ska tas bort",
18 | "Create new retention rule" : "Skapa en ny lagringsregel",
19 | "An error occurred while loading the existing retention rules" : "Ett fel uppstod vid inläsning av befintliga lagringsregler",
20 | "Users are now notified one day before a file or folder is being deleted" : "Användare får nu en avisering en dag innan en fil eller mapp raderas",
21 | "Users are no longer notified before a file or folder is being deleted" : "Användare får inte längre avisering innan en fil eller mapp raderas",
22 | "An error occurred while changing the setting" : "Ett fel uppstod när inställningen ändrades",
23 | "Invalid tag selected" : "Ogiltig tagg vald",
24 | "Tag {tagName} already has a retention rule" : "Taggen {tagName} har redan en lagringsregel",
25 | "Invalid unit option" : "Ogiltigt enhetsalternativ",
26 | "Invalid action option" : "Ogiltigt åtgärdsalternativ",
27 | "Invalid retention time" : "Ogiltig lagringstid",
28 | "Retention rule for tag {tagName} saved" : "Lagringsregel för taggen {tagName} sparad",
29 | "Failed to save retention rule for tag {tagName}" : "Kunde inte spara lagringsregel för taggen {tagName}",
30 | "File retention & automatic deletion" : "Fillagring & automatisk borttagning",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definiera om filer som taggats med en viss tagg ska raderas automatiskt efter en tid. Detta är användbart för konfidentiella dokument.",
32 | "Files tagged with" : "Filer taggade med",
33 | "Retention time" : "Lagringstid",
34 | "From date of" : "Från datum för",
35 | "Create" : "Skapa",
36 | "Notify owner a day before a file is automatically deleted" : "Meddela ägaren en dag innan en fil automatiskt tas bort",
37 | "_%n day_::_%n days_" : ["%n dag","%n dagar"],
38 | "_%n week_::_%n weeks_" : ["%n vecka","%n veckor"],
39 | "_%n month_::_%n months_" : ["%n månad","%n månader"],
40 | "_%n year_::_%n years_" : ["%n år","%n år"],
41 | "Delete retention rule for tag {tagName}" : "Ta bort lagringsregel för taggen {tagName}",
42 | "Retention rule for tag {tagName} has been deleted" : "Lagringsregeln för taggen {tagName} har tagits bort",
43 | "Failed to load tags" : "Kunde inte läsa in taggar"
44 | },
45 | "nplurals=2; plural=(n != 1);");
46 |
--------------------------------------------------------------------------------
/l10n/nb.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Oppbevaring av filer",
5 | "{file} will be removed in 24 hours" : "{file} fjernes om 24 timer",
6 | "Your systems retention rules will delete this file within 24 hours." : "Systemoppbevaringsreglene vil slette denne filen innen 24 timer.",
7 | "Retention" : "Oppbevaring",
8 | "This application allows for automatic deletion of files after a given time." : "Denne applikasjonen tillater automatisk sletting av filer etter en gitt tid.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "En app for Nextcloud for å kontrollere automatisk sletting av filer etter en gitt tid.\nEventuelt kan brukerne informeres dagen før.",
10 | "Days" : "Dager",
11 | "Weeks" : "Uker",
12 | "Months" : "Måneder",
13 | "Years" : "År",
14 | "Creation" : "Opprettelse",
15 | "Last modification" : "Siste endring",
16 | "Time units" : "Tidsenheter",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "Antall dager, uker, måneder eller år som filene skal slettes etter",
18 | "Create new retention rule" : "Opprett ny oppbevaringsregel",
19 | "An error occurred while loading the existing retention rules" : "Det oppstod en feil under lasting av de eksisterende oppbevaringsreglene",
20 | "Users are now notified one day before a file or folder is being deleted" : "Brukere blir nå varslet én dag før en fil eller mappe slettes",
21 | "Users are no longer notified before a file or folder is being deleted" : "Brukere blir ikke lenger varslet før en fil eller mappe slettes",
22 | "An error occurred while changing the setting" : "En feil oppstod under endring av innstillingen",
23 | "Invalid tag selected" : "Ugyldig merke valgt",
24 | "Tag {tagName} already has a retention rule" : "Merke {tagName} har allerede en oppbevaringsregel",
25 | "Invalid unit option" : "Ugyldig enhetsalternativ",
26 | "Invalid action option" : "Ugyldig handlingsalternativ",
27 | "Invalid retention time" : "Ugyldig oppbevaringstid",
28 | "Retention rule for tag {tagName} saved" : "Oppbevaringsregel for merke {tagName} lagret",
29 | "Failed to save retention rule for tag {tagName}" : "Lagring av oppbevaringsregel for merke {tagName} feilet",
30 | "File retention & automatic deletion" : "Filoppbevaring og automatisk sletting",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Definer om filer merket med en spesifikk etikett skal slettes automatisk etter en tid. Dette er nyttig for konfidensielle dokumenter.",
32 | "Files tagged with" : "Filer merket med",
33 | "Retention time" : "Oppbevaringstid",
34 | "From date of" : "Fra dato for",
35 | "Create" : "Opprett",
36 | "Notify owner a day before a file is automatically deleted" : "Varsle eieren en dag før en fil slettes automatisk",
37 | "_%n day_::_%n days_" : ["%n dag","%n dager"],
38 | "_%n week_::_%n weeks_" : ["%n uke","%n uker"],
39 | "_%n month_::_%n months_" : ["%n måned","%n måneder"],
40 | "_%n year_::_%n years_" : ["%når","%n år"],
41 | "Delete retention rule for tag {tagName}" : "Slett oppbevaringsregel for merke {tagName}",
42 | "Retention rule for tag {tagName} has been deleted" : "Oppbevaringsregel for merke {tagName} er slettet",
43 | "Failed to load tags" : "Lasting av merkelapper feilet"
44 | },
45 | "nplurals=2; plural=(n != 1);");
46 |
--------------------------------------------------------------------------------
/l10n/sw.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Uhifadhi wa faili",
3 | "{file} will be removed in 24 hours" : "{file} itaondolewa ndani ya masaa 24 ",
4 | "Your systems retention rules will delete this file within 24 hours." : "Sheria zako za kuhifadhi faili zitafuta faili hii ndani ya saa 24.",
5 | "Retention" : "Uhifadhi",
6 | "This application allows for automatic deletion of files after a given time." : "Programu hii inaruhusu kufuta faili kiotomatiki baada ya muda fulani.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Programu ya Nextcloud ya kudhibiti ufutaji kiotomatiki wa faili baada ya muda fulani.\nKwa hiari watumiaji wanaweza kufahamishwa siku moja kabla.",
8 | "Days" : "Siku",
9 | "Weeks" : "Wiki",
10 | "Months" : "Miezi",
11 | "Years" : "Miaka",
12 | "Creation" : "Uundaji",
13 | "Last modification" : "Marekebisho ya mwisho",
14 | "Time units" : "Uniti za muda",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "Idadi ya siku, wiki, miezi au miaka ambayo faili zinapaswa kufutwa",
16 | "Create new retention rule" : "Unda sheria mpya ya kuhifadhi",
17 | "An error occurred while loading the existing retention rules" : "Hitilafu ilitokea wakati wa kupakia sheria zilizopo za kudumisha",
18 | "Users are now notified one day before a file or folder is being deleted" : "Watumiaji sasa wanaarifiwa siku moja kabla ya faili au folda kufutwa",
19 | "Users are no longer notified before a file or folder is being deleted" : " Watumiaji hawataarifiwa tena kabla ya faili au folda kufutwa",
20 | "An error occurred while changing the setting" : "Hitilafu ilitokea wakati wa kubadilisha mpangilio",
21 | "Invalid tag selected" : "Nebo batili imechaguliwa",
22 | "Tag {tagName} already has a retention rule" : "Nembo{tagName}tayari ina sheria ya uhifadhi",
23 | "Invalid unit option" : "Chaguo batili la uniti",
24 | "Invalid action option" : " Chaguo batili la kitendo",
25 | "Invalid retention time" : " Muda batili wa kuhifadhi",
26 | "Retention rule for tag {tagName} saved" : "Sheria ya kubaki kwa lebo ya {tagName} imehifadhiwa",
27 | "Failed to save retention rule for tag {tagName}" : " Imeshindwa kuhifadhi sheria ya kuhifadhi kwa lebo {tagName}",
28 | "File retention & automatic deletion" : "Uhifadhi wa faili na ufutaji kiotomatiki",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Bainisha ikiwa faili zilizowekwa lebo maalum zinapaswa kufutwa kiotomatiki baada ya muda fulani. Hii ni muhimu kwa hati za siri.",
30 | "Files tagged with" : "Faili zilizowekwa alama",
31 | "Retention time" : "Muda wa uhifadhi",
32 | "From date of" : "Tangu tarehe ya",
33 | "Create" : "Tengeneza",
34 | "Notify owner a day before a file is automatically deleted" : "Mjulishe mmiliki siku moja kabla ya faili kufutwa kiotomatiki",
35 | "_%n day_::_%n days_" : ["%n day","%nsiku "],
36 | "_%n week_::_%n weeks_" : ["%n week","%nwiki"],
37 | "_%n month_::_%n months_" : ["%n month","%n miezi"],
38 | "_%n year_::_%n years_" : ["%n year","%nmiaka "],
39 | "Delete retention rule for tag {tagName}" : " Futa sheria ya kuhifadhi kwa lebo {tagName}",
40 | "Retention rule for tag {tagName} has been deleted" : " Sheria ya kuhifadhi lebo ya {tagName} imefutwa",
41 | "Failed to load tags" : "Imeshindwa kupakia lebo"
42 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
43 | }
--------------------------------------------------------------------------------
/l10n/tr.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Dosya saklama",
3 | "{file} will be removed in 24 hours" : "{file} dosyası 24 saat içinde silinecek",
4 | "Your systems retention rules will delete this file within 24 hours." : "Sisteminizin saklama kurallarına göre bu dosya 24 saat içinde silinecek.",
5 | "Retention" : "Saklama",
6 | "This application allows for automatic deletion of files after a given time." : "Bu uygulama belirtilen süre sonunda dosyaların otomatik olarak silinmesini sağlar.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Dosyaların belirli bir süre sonra otomatik olarak silinmesini sağlayan Nextcloud uygulaması.\nİsteğe bağlı olarak kullanıcılar bir gün önceden bilgilendirilebilir.",
8 | "Days" : "Gün",
9 | "Weeks" : "Hafta",
10 | "Months" : "Ay",
11 | "Years" : "Yıl",
12 | "Creation" : "Oluşturulma",
13 | "Last modification" : "Son değişiklik",
14 | "Time units" : "Zaman birimleri",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "Dosyaların silinmesi için geçmesi gereken gün, hafta, ay ya da yıl sayısı",
16 | "Create new retention rule" : "Yeni tutma kuralı ekle",
17 | "An error occurred while loading the existing retention rules" : "Var olan saklama kuralları yüklenirken bir sorun çıktı",
18 | "Users are now notified one day before a file or folder is being deleted" : "Kullanıcılar bir dosya ya da klasör silinmeden bir gün önce bilgilendirilecek",
19 | "Users are no longer notified before a file or folder is being deleted" : "Kullanıcılar bir dosya ya da klasör silinmeden önce bilgilendirilmeyecek",
20 | "An error occurred while changing the setting" : "Ayar değiştirilirken bir sorun çıktı",
21 | "Invalid tag selected" : "Seçilen etiket geçersiz",
22 | "Tag {tagName} already has a retention rule" : "{tagName} etiketi için zaten bir saklama kuralı var",
23 | "Invalid unit option" : "Birim seçeneği geçersiz",
24 | "Invalid action option" : "İşlem seçeneği geçersiz",
25 | "Invalid retention time" : "Saklama süresi geçersiz",
26 | "Retention rule for tag {tagName} saved" : "{tagName} etiketi için saklama kuralı kaydedildi",
27 | "Failed to save retention rule for tag {tagName}" : "{tagName} etkiketi için saklama kuralı kaydedilemedi",
28 | "File retention & automatic deletion" : "Dosya saklama ve otomatik silme",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Belirli bir süre sonra otomatik olarak silinmesini istediğiniz dosya etiketlerini seçin. Bu özellik gizli belgeler için kullanışlıdır.",
30 | "Files tagged with" : "Şununla etiketlenmiş dosyalar",
31 | "Retention time" : "Saklama süresi",
32 | "From date of" : "Başlangıç tarihi",
33 | "Create" : "Oluştur",
34 | "Notify owner a day before a file is automatically deleted" : "Dosyanın otomatik olarak silineceği bir gün önce sahibine bildirilsin",
35 | "_%n day_::_%n days_" : ["%n gün","%n gün"],
36 | "_%n week_::_%n weeks_" : ["%n hafta","%n hafta"],
37 | "_%n month_::_%n months_" : ["%n ay","%n ay"],
38 | "_%n year_::_%n years_" : ["%n yıl","%n yıl"],
39 | "Delete retention rule for tag {tagName}" : "{tagName} etiketi için saklama kuralını sil",
40 | "Retention rule for tag {tagName} has been deleted" : "{tagName} etiketi için saklama kuralı silindi",
41 | "Failed to load tags" : "Etiketler yüklenemedi"
42 | },"pluralForm" :"nplurals=2; plural=(n > 1);"
43 | }
--------------------------------------------------------------------------------
/l10n/ug.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "ھۆججەتلەرنى ساقلاپ قېلىش",
3 | "{file} will be removed in 24 hours" : "{file} 24 سائەت ئىچىدە ئۆچۈرۈلىدۇ",
4 | "Your systems retention rules will delete this file within 24 hours." : "سىستېمىڭىزنى ساقلاش قائىدىسى بۇ ھۆججەتنى 24 سائەت ئىچىدە ئۆچۈرۈۋېتىدۇ.",
5 | "Retention" : "تۇتۇپ قېلىش",
6 | "This application allows for automatic deletion of files after a given time." : "بۇ پروگرامما مەلۇم ۋاقىتتىن كېيىن ھۆججەتلەرنى ئاپتوماتىك ئۆچۈرەلەيدۇ.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloud نىڭ مەلۇم ۋاقىتتىن كېيىن ھۆججەتلەرنى ئاپتوماتىك ئۆچۈرۈشىنى كونترول قىلىدىغان ئەپ.\nئىختىيارىي ئىشلەتكۈچىلەرگە ئالدىنقى كۈنى خەۋەر قىلىنسا بولىدۇ.",
8 | "Days" : "كۈنلەر",
9 | "Weeks" : "ھەپتە",
10 | "Months" : "ئايلار",
11 | "Years" : "يىللار",
12 | "Creation" : "قۇرۇش",
13 | "Last modification" : "ئاخىرقى ئۆزگەرتىش",
14 | "Time units" : "ۋاقىت بىرلىكى",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "ھۆججەتلەرنى ئۆچۈرۈۋېتىدىغان كۈن ، ھەپتە ، ئاي ياكى يىل سانى",
16 | "Create new retention rule" : "يېڭى ساقلاش قائىدىسىنى تۈزۈڭ",
17 | "An error occurred while loading the existing retention rules" : "مەۋجۇت ساقلاش قائىدىسىنى يۈكلەۋاتقاندا خاتالىق كۆرۈلدى",
18 | "Users are now notified one day before a file or folder is being deleted" : "ئىشلەتكۈچىگە ھۆججەت ياكى ھۆججەت قىسقۇچ ئۆچۈرۈلۈشتىن بىر كۈن بۇرۇن ئۇقتۇرۇش قىلىندى",
19 | "Users are no longer notified before a file or folder is being deleted" : "ھۆججەت ياكى ھۆججەت قىسقۇچ ئۆچۈرۈلۈشتىن بۇرۇن ئىشلەتكۈچىلەرگە ئۇقتۇرۇش قىلىنمايدۇ",
20 | "An error occurred while changing the setting" : "تەڭشەكنى ئۆزگەرتىش جەريانىدا خاتالىق كۆرۈلدى",
21 | "Invalid tag selected" : "ئىناۋەتسىز بەلگە تاللانغان",
22 | "Tag {tagName} already has a retention rule" : "خەتكۈچ {tagName} نىڭ ساقلاش قائىدىسى بار",
23 | "Invalid unit option" : "بىرلىك تاللانمىسى ئىناۋەتسىز",
24 | "Invalid action option" : "ئىناۋەتسىز ھەرىكەت تاللانمىسى",
25 | "Invalid retention time" : "ساقلاش ۋاقتى ئىناۋەتسىز",
26 | "Retention rule for tag {tagName} saved" : "خەتكۈچ {tagName} نى ساقلاش قائىدىسى ساقلاندى",
27 | "Failed to save retention rule for tag {tagName}" : "خەتكۈچ {tagName} ساقلاش قائىدىسىنى ساقلىيالمىدى",
28 | "File retention & automatic deletion" : "ھۆججەت ساقلاش ۋە ئاپتوماتىك ئۆچۈرۈش",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "مەلۇم بىر بەلگە بىلەن بەلگە قويۇلغان ھۆججەتلەرنى مەلۇم ۋاقىتتىن كېيىن ئاپتوماتىك ئۆچۈرۈۋېتىش كېرەكلىكىنى ئېنىقلاڭ. بۇ مەخپىي ھۆججەتلەرگە پايدىلىق.",
30 | "Files tagged with" : "ھۆججەتلەر بەلگە قويۇلغان",
31 | "Retention time" : "ساقلاش ۋاقتى",
32 | "From date of" : "كۈندىن باشلاپ",
33 | "Create" : "قۇر",
34 | "Notify owner a day before a file is automatically deleted" : "ھۆججەت ئاپتوماتىك ئۆچۈرۈلۈشتىن بىر كۈن بۇرۇن ئىگىسىگە خەۋەر قىلىڭ",
35 | "_%n day_::_%n days_" : ["%n كۈن","%n كۈن"],
36 | "_%n week_::_%n weeks_" : ["%n ھەپتە","%n ھەپتە"],
37 | "_%n month_::_%n months_" : ["%n ئاي","%n ئاي"],
38 | "_%n year_::_%n years_" : ["%n يىل","%n يىل"],
39 | "Delete retention rule for tag {tagName}" : "خەتكۈچ {tagName} نىڭ ساقلاش قائىدىسىنى ئۆچۈرۈڭ",
40 | "Retention rule for tag {tagName} has been deleted" : "خەتكۈچ {tagName} نى ساقلاش قائىدىسى ئۆچۈرۈلدى",
41 | "Failed to load tags" : "خەتكۈچلەرنى يۈكلىيەلمىدى"
42 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
43 | }
--------------------------------------------------------------------------------
/l10n/sw.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Uhifadhi wa faili",
5 | "{file} will be removed in 24 hours" : "{file} itaondolewa ndani ya masaa 24 ",
6 | "Your systems retention rules will delete this file within 24 hours." : "Sheria zako za kuhifadhi faili zitafuta faili hii ndani ya saa 24.",
7 | "Retention" : "Uhifadhi",
8 | "This application allows for automatic deletion of files after a given time." : "Programu hii inaruhusu kufuta faili kiotomatiki baada ya muda fulani.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Programu ya Nextcloud ya kudhibiti ufutaji kiotomatiki wa faili baada ya muda fulani.\nKwa hiari watumiaji wanaweza kufahamishwa siku moja kabla.",
10 | "Days" : "Siku",
11 | "Weeks" : "Wiki",
12 | "Months" : "Miezi",
13 | "Years" : "Miaka",
14 | "Creation" : "Uundaji",
15 | "Last modification" : "Marekebisho ya mwisho",
16 | "Time units" : "Uniti za muda",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "Idadi ya siku, wiki, miezi au miaka ambayo faili zinapaswa kufutwa",
18 | "Create new retention rule" : "Unda sheria mpya ya kuhifadhi",
19 | "An error occurred while loading the existing retention rules" : "Hitilafu ilitokea wakati wa kupakia sheria zilizopo za kudumisha",
20 | "Users are now notified one day before a file or folder is being deleted" : "Watumiaji sasa wanaarifiwa siku moja kabla ya faili au folda kufutwa",
21 | "Users are no longer notified before a file or folder is being deleted" : " Watumiaji hawataarifiwa tena kabla ya faili au folda kufutwa",
22 | "An error occurred while changing the setting" : "Hitilafu ilitokea wakati wa kubadilisha mpangilio",
23 | "Invalid tag selected" : "Nebo batili imechaguliwa",
24 | "Tag {tagName} already has a retention rule" : "Nembo{tagName}tayari ina sheria ya uhifadhi",
25 | "Invalid unit option" : "Chaguo batili la uniti",
26 | "Invalid action option" : " Chaguo batili la kitendo",
27 | "Invalid retention time" : " Muda batili wa kuhifadhi",
28 | "Retention rule for tag {tagName} saved" : "Sheria ya kubaki kwa lebo ya {tagName} imehifadhiwa",
29 | "Failed to save retention rule for tag {tagName}" : " Imeshindwa kuhifadhi sheria ya kuhifadhi kwa lebo {tagName}",
30 | "File retention & automatic deletion" : "Uhifadhi wa faili na ufutaji kiotomatiki",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Bainisha ikiwa faili zilizowekwa lebo maalum zinapaswa kufutwa kiotomatiki baada ya muda fulani. Hii ni muhimu kwa hati za siri.",
32 | "Files tagged with" : "Faili zilizowekwa alama",
33 | "Retention time" : "Muda wa uhifadhi",
34 | "From date of" : "Tangu tarehe ya",
35 | "Create" : "Tengeneza",
36 | "Notify owner a day before a file is automatically deleted" : "Mjulishe mmiliki siku moja kabla ya faili kufutwa kiotomatiki",
37 | "_%n day_::_%n days_" : ["%n day","%nsiku "],
38 | "_%n week_::_%n weeks_" : ["%n week","%nwiki"],
39 | "_%n month_::_%n months_" : ["%n month","%n miezi"],
40 | "_%n year_::_%n years_" : ["%n year","%nmiaka "],
41 | "Delete retention rule for tag {tagName}" : " Futa sheria ya kuhifadhi kwa lebo {tagName}",
42 | "Retention rule for tag {tagName} has been deleted" : " Sheria ya kuhifadhi lebo ya {tagName} imefutwa",
43 | "Failed to load tags" : "Imeshindwa kupakia lebo"
44 | },
45 | "nplurals=2; plural=(n != 1);");
46 |
--------------------------------------------------------------------------------
/l10n/tr.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "Dosya saklama",
5 | "{file} will be removed in 24 hours" : "{file} dosyası 24 saat içinde silinecek",
6 | "Your systems retention rules will delete this file within 24 hours." : "Sisteminizin saklama kurallarına göre bu dosya 24 saat içinde silinecek.",
7 | "Retention" : "Saklama",
8 | "This application allows for automatic deletion of files after a given time." : "Bu uygulama belirtilen süre sonunda dosyaların otomatik olarak silinmesini sağlar.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Dosyaların belirli bir süre sonra otomatik olarak silinmesini sağlayan Nextcloud uygulaması.\nİsteğe bağlı olarak kullanıcılar bir gün önceden bilgilendirilebilir.",
10 | "Days" : "Gün",
11 | "Weeks" : "Hafta",
12 | "Months" : "Ay",
13 | "Years" : "Yıl",
14 | "Creation" : "Oluşturulma",
15 | "Last modification" : "Son değişiklik",
16 | "Time units" : "Zaman birimleri",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "Dosyaların silinmesi için geçmesi gereken gün, hafta, ay ya da yıl sayısı",
18 | "Create new retention rule" : "Yeni tutma kuralı ekle",
19 | "An error occurred while loading the existing retention rules" : "Var olan saklama kuralları yüklenirken bir sorun çıktı",
20 | "Users are now notified one day before a file or folder is being deleted" : "Kullanıcılar bir dosya ya da klasör silinmeden bir gün önce bilgilendirilecek",
21 | "Users are no longer notified before a file or folder is being deleted" : "Kullanıcılar bir dosya ya da klasör silinmeden önce bilgilendirilmeyecek",
22 | "An error occurred while changing the setting" : "Ayar değiştirilirken bir sorun çıktı",
23 | "Invalid tag selected" : "Seçilen etiket geçersiz",
24 | "Tag {tagName} already has a retention rule" : "{tagName} etiketi için zaten bir saklama kuralı var",
25 | "Invalid unit option" : "Birim seçeneği geçersiz",
26 | "Invalid action option" : "İşlem seçeneği geçersiz",
27 | "Invalid retention time" : "Saklama süresi geçersiz",
28 | "Retention rule for tag {tagName} saved" : "{tagName} etiketi için saklama kuralı kaydedildi",
29 | "Failed to save retention rule for tag {tagName}" : "{tagName} etkiketi için saklama kuralı kaydedilemedi",
30 | "File retention & automatic deletion" : "Dosya saklama ve otomatik silme",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Belirli bir süre sonra otomatik olarak silinmesini istediğiniz dosya etiketlerini seçin. Bu özellik gizli belgeler için kullanışlıdır.",
32 | "Files tagged with" : "Şununla etiketlenmiş dosyalar",
33 | "Retention time" : "Saklama süresi",
34 | "From date of" : "Başlangıç tarihi",
35 | "Create" : "Oluştur",
36 | "Notify owner a day before a file is automatically deleted" : "Dosyanın otomatik olarak silineceği bir gün önce sahibine bildirilsin",
37 | "_%n day_::_%n days_" : ["%n gün","%n gün"],
38 | "_%n week_::_%n weeks_" : ["%n hafta","%n hafta"],
39 | "_%n month_::_%n months_" : ["%n ay","%n ay"],
40 | "_%n year_::_%n years_" : ["%n yıl","%n yıl"],
41 | "Delete retention rule for tag {tagName}" : "{tagName} etiketi için saklama kuralını sil",
42 | "Retention rule for tag {tagName} has been deleted" : "{tagName} etiketi için saklama kuralı silindi",
43 | "Failed to load tags" : "Etiketler yüklenemedi"
44 | },
45 | "nplurals=2; plural=(n > 1);");
46 |
--------------------------------------------------------------------------------
/l10n/ug.js:
--------------------------------------------------------------------------------
1 | OC.L10N.register(
2 | "files_retention",
3 | {
4 | "Files retention" : "ھۆججەتلەرنى ساقلاپ قېلىش",
5 | "{file} will be removed in 24 hours" : "{file} 24 سائەت ئىچىدە ئۆچۈرۈلىدۇ",
6 | "Your systems retention rules will delete this file within 24 hours." : "سىستېمىڭىزنى ساقلاش قائىدىسى بۇ ھۆججەتنى 24 سائەت ئىچىدە ئۆچۈرۈۋېتىدۇ.",
7 | "Retention" : "تۇتۇپ قېلىش",
8 | "This application allows for automatic deletion of files after a given time." : "بۇ پروگرامما مەلۇم ۋاقىتتىن كېيىن ھۆججەتلەرنى ئاپتوماتىك ئۆچۈرەلەيدۇ.",
9 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloud نىڭ مەلۇم ۋاقىتتىن كېيىن ھۆججەتلەرنى ئاپتوماتىك ئۆچۈرۈشىنى كونترول قىلىدىغان ئەپ.\nئىختىيارىي ئىشلەتكۈچىلەرگە ئالدىنقى كۈنى خەۋەر قىلىنسا بولىدۇ.",
10 | "Days" : "كۈنلەر",
11 | "Weeks" : "ھەپتە",
12 | "Months" : "ئايلار",
13 | "Years" : "يىللار",
14 | "Creation" : "قۇرۇش",
15 | "Last modification" : "ئاخىرقى ئۆزگەرتىش",
16 | "Time units" : "ۋاقىت بىرلىكى",
17 | "Number of days, weeks, months or years after which the files should be deleted" : "ھۆججەتلەرنى ئۆچۈرۈۋېتىدىغان كۈن ، ھەپتە ، ئاي ياكى يىل سانى",
18 | "Create new retention rule" : "يېڭى ساقلاش قائىدىسىنى تۈزۈڭ",
19 | "An error occurred while loading the existing retention rules" : "مەۋجۇت ساقلاش قائىدىسىنى يۈكلەۋاتقاندا خاتالىق كۆرۈلدى",
20 | "Users are now notified one day before a file or folder is being deleted" : "ئىشلەتكۈچىگە ھۆججەت ياكى ھۆججەت قىسقۇچ ئۆچۈرۈلۈشتىن بىر كۈن بۇرۇن ئۇقتۇرۇش قىلىندى",
21 | "Users are no longer notified before a file or folder is being deleted" : "ھۆججەت ياكى ھۆججەت قىسقۇچ ئۆچۈرۈلۈشتىن بۇرۇن ئىشلەتكۈچىلەرگە ئۇقتۇرۇش قىلىنمايدۇ",
22 | "An error occurred while changing the setting" : "تەڭشەكنى ئۆزگەرتىش جەريانىدا خاتالىق كۆرۈلدى",
23 | "Invalid tag selected" : "ئىناۋەتسىز بەلگە تاللانغان",
24 | "Tag {tagName} already has a retention rule" : "خەتكۈچ {tagName} نىڭ ساقلاش قائىدىسى بار",
25 | "Invalid unit option" : "بىرلىك تاللانمىسى ئىناۋەتسىز",
26 | "Invalid action option" : "ئىناۋەتسىز ھەرىكەت تاللانمىسى",
27 | "Invalid retention time" : "ساقلاش ۋاقتى ئىناۋەتسىز",
28 | "Retention rule for tag {tagName} saved" : "خەتكۈچ {tagName} نى ساقلاش قائىدىسى ساقلاندى",
29 | "Failed to save retention rule for tag {tagName}" : "خەتكۈچ {tagName} ساقلاش قائىدىسىنى ساقلىيالمىدى",
30 | "File retention & automatic deletion" : "ھۆججەت ساقلاش ۋە ئاپتوماتىك ئۆچۈرۈش",
31 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "مەلۇم بىر بەلگە بىلەن بەلگە قويۇلغان ھۆججەتلەرنى مەلۇم ۋاقىتتىن كېيىن ئاپتوماتىك ئۆچۈرۈۋېتىش كېرەكلىكىنى ئېنىقلاڭ. بۇ مەخپىي ھۆججەتلەرگە پايدىلىق.",
32 | "Files tagged with" : "ھۆججەتلەر بەلگە قويۇلغان",
33 | "Retention time" : "ساقلاش ۋاقتى",
34 | "From date of" : "كۈندىن باشلاپ",
35 | "Create" : "قۇر",
36 | "Notify owner a day before a file is automatically deleted" : "ھۆججەت ئاپتوماتىك ئۆچۈرۈلۈشتىن بىر كۈن بۇرۇن ئىگىسىگە خەۋەر قىلىڭ",
37 | "_%n day_::_%n days_" : ["%n كۈن","%n كۈن"],
38 | "_%n week_::_%n weeks_" : ["%n ھەپتە","%n ھەپتە"],
39 | "_%n month_::_%n months_" : ["%n ئاي","%n ئاي"],
40 | "_%n year_::_%n years_" : ["%n يىل","%n يىل"],
41 | "Delete retention rule for tag {tagName}" : "خەتكۈچ {tagName} نىڭ ساقلاش قائىدىسىنى ئۆچۈرۈڭ",
42 | "Retention rule for tag {tagName} has been deleted" : "خەتكۈچ {tagName} نى ساقلاش قائىدىسى ئۆچۈرۈلدى",
43 | "Failed to load tags" : "خەتكۈچلەرنى يۈكلىيەلمىدى"
44 | },
45 | "nplurals=2; plural=(n != 1);");
46 |
--------------------------------------------------------------------------------
/l10n/et_EE.json:
--------------------------------------------------------------------------------
1 | { "translations": {
2 | "Files retention" : "Failide säilitamine",
3 | "{file} will be removed in 24 hours" : "{file} eemaldatakse 24 tunni pärast",
4 | "Your systems retention rules will delete this file within 24 hours." : "Sinu serveris kehtivate säilitusreeglite alusel see fail kustutatakse 24 tunni pärast.",
5 | "Retention" : "Sisu säilitamine",
6 | "This application allows for automatic deletion of files after a given time." : "See rakendus võimaldab failide automaatset kustutamist pärast määratud aja möödumist.",
7 | "An app for Nextcloud to control automatic deletion of files after a given time.\nOptionally the users can be informed the day before." : "Nextcloudi rakendus, millega saad halllata andmete automaatset kustutamist etteantud aja järel. Lisavõimalusena saad sellest kasutajatele anda ööpäev ette teada.",
8 | "Days" : "Päeva",
9 | "Weeks" : "Nädalat",
10 | "Months" : "Kuud",
11 | "Years" : "Aastat",
12 | "Creation" : "Koostamine",
13 | "Last modification" : "Viimane muutmine",
14 | "Time units" : "Ajaühikud",
15 | "Number of days, weeks, months or years after which the files should be deleted" : "Päevade, nädalate, kuude või aastate arv, mille möödumisel peaks faili kustutama",
16 | "Create new retention rule" : "Lisa uus säilitusreegel",
17 | "An error occurred while loading the existing retention rules" : "Olemasolevate säilitusreeglite laadimisel tekkis viga.",
18 | "Users are now notified one day before a file or folder is being deleted" : "Faili või kausta kustutamisel teavitatakse nüüd kasutajaid üks päev ette",
19 | "Users are no longer notified before a file or folder is being deleted" : "Faili või kausta kustutamisel kasutajaid ei teavitata",
20 | "An error occurred while changing the setting" : "Seadistuse muutmisel tekkis viga",
21 | "Invalid tag selected" : "Valitud vigane silt",
22 | "Tag {tagName} already has a retention rule" : "{tagName} sildil on juba säilitusreegel olemas",
23 | "Invalid unit option" : "Vigase ühiku valik",
24 | "Invalid action option" : "Vigase tegevuse valik",
25 | "Invalid retention time" : "Vigane säilitusaeg",
26 | "Retention rule for tag {tagName} saved" : "Sildikohane säilitusreegel on salvestatud: {tagName}",
27 | "Failed to save retention rule for tag {tagName}" : "Sildikohase säilitusreegli salvestamine ei õnnestunud: {tagName}",
28 | "File retention & automatic deletion" : "Failide säilitamine ja automaatne kustutamine",
29 | "Define if files tagged with a specific tag should be deleted automatically after some time. This is useful for confidential documents." : "Määratle, kas antud sildiga faili peaks etteantud aja möödumisel automaatselt kustutama. See lahendus sobib näiteks konfidentsiaalsete dokumentide haldamise kontekstis.",
30 | "Files tagged with" : "Failid, mis on sildistatud, kui",
31 | "Retention time" : "Säilitusaeg",
32 | "From date of" : "Alates kuupäevast",
33 | "Create" : "Loo",
34 | "Notify owner a day before a file is automatically deleted" : "Enne automaatset kustutamist anna omanikule üks päev ette sellest teada",
35 | "_%n day_::_%n days_" : ["%n päev","%n päeva"],
36 | "_%n week_::_%n weeks_" : ["%n nädal","%n nädalat"],
37 | "_%n month_::_%n months_" : ["%n kuu","%n kuud"],
38 | "_%n year_::_%n years_" : ["%n aasta","%n aastat"],
39 | "Delete retention rule for tag {tagName}" : "Kustuta sildikohane säilitusreegel: {tagName}",
40 | "Retention rule for tag {tagName} has been deleted" : "Sildikohane säilitusreegel on kustutatud: {tagName}",
41 | "Failed to load tags" : "Siltide laadimine ei õnnestunud"
42 | },"pluralForm" :"nplurals=2; plural=(n != 1);"
43 | }
--------------------------------------------------------------------------------