From db46ffb63b500f778a051a653112858b8c8d5e6d Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+SamTV12345@users.noreply.github.com> Date: Sat, 9 Mar 2024 23:07:09 +0100 Subject: [PATCH] Feat/admin react (#6211) * Added vite react admin ui. * Added react i18next. * Added pads manager. * Fixed docker build. * Fixed windows build. * Fixed installOnWindows script. * Install only if path exists. --- .dockerignore | 1 + .github/workflows/backend-tests.yml | 24 + .github/workflows/frontend-admin-tests.yml | 5 +- .gitignore | 3 +- Dockerfile | 11 +- admin/.eslintrc.cjs | 18 + admin/.gitignore | 24 + admin/README.md | 30 ++ admin/index.html | 14 + admin/package.json | 38 ++ admin/pnpm-workspace.yaml | 0 admin/public/ep_admin_pads/ar.json | 28 ++ admin/public/ep_admin_pads/bn.json | 23 + admin/public/ep_admin_pads/ca.json | 27 ++ admin/public/ep_admin_pads/cs.json | 27 ++ admin/public/ep_admin_pads/cy.json | 27 ++ admin/public/ep_admin_pads/da.json | 14 + admin/public/ep_admin_pads/de.json | 32 ++ admin/public/ep_admin_pads/diq.json | 28 ++ admin/public/ep_admin_pads/dsb.json | 27 ++ admin/public/ep_admin_pads/el.json | 16 + admin/public/ep_admin_pads/en.json | 22 + admin/public/ep_admin_pads/eu.json | 27 ++ admin/public/ep_admin_pads/ff.json | 27 ++ admin/public/ep_admin_pads/fi.json | 27 ++ admin/public/ep_admin_pads/fr.json | 27 ++ admin/public/ep_admin_pads/gl.json | 27 ++ admin/public/ep_admin_pads/he.json | 27 ++ admin/public/ep_admin_pads/hsb.json | 27 ++ admin/public/ep_admin_pads/hu.json | 25 ++ admin/public/ep_admin_pads/ia.json | 27 ++ admin/public/ep_admin_pads/it.json | 16 + admin/public/ep_admin_pads/kn.json | 13 + admin/public/ep_admin_pads/ko.json | 28 ++ admin/public/ep_admin_pads/krc.json | 27 ++ admin/public/ep_admin_pads/lb.json | 16 + admin/public/ep_admin_pads/lt.json | 27 ++ admin/public/ep_admin_pads/mk.json | 27 ++ admin/public/ep_admin_pads/my.json | 27 ++ admin/public/ep_admin_pads/nb.json | 13 + admin/public/ep_admin_pads/nl.json | 29 ++ admin/public/ep_admin_pads/oc.json | 21 + admin/public/ep_admin_pads/pms.json | 27 ++ admin/public/ep_admin_pads/pt-br.json | 30 ++ admin/public/ep_admin_pads/pt.json | 27 ++ admin/public/ep_admin_pads/qqq.json | 10 + admin/public/ep_admin_pads/ru.json | 31 ++ admin/public/ep_admin_pads/sc.json | 27 ++ admin/public/ep_admin_pads/sdc.json | 14 + admin/public/ep_admin_pads/sk.json | 27 ++ admin/public/ep_admin_pads/skr-arab.json | 20 + admin/public/ep_admin_pads/sl.json | 28 ++ admin/public/ep_admin_pads/smn.json | 13 + admin/public/ep_admin_pads/sms.json | 16 + admin/public/ep_admin_pads/sq.json | 27 ++ admin/public/ep_admin_pads/sv.json | 28 ++ admin/public/ep_admin_pads/sw.json | 27 ++ admin/public/ep_admin_pads/th.json | 27 ++ admin/public/ep_admin_pads/tl.json | 17 + admin/public/ep_admin_pads/tr.json | 28 ++ admin/public/ep_admin_pads/uk.json | 28 ++ admin/public/ep_admin_pads/zh-hans.json | 29 ++ admin/public/ep_admin_pads/zh-hant.json | 28 ++ admin/public/fond.jpg | Bin 0 -> 186909 bytes admin/src/App.css | 0 admin/src/App.tsx | 104 +++++ admin/src/index.css | 489 +++++++++++++++++++++ admin/src/localization/i18n.ts | 57 +++ admin/src/main.tsx | 40 ++ admin/src/pages/HelpPage.tsx | 70 +++ admin/src/pages/HomePage.tsx | 179 ++++++++ admin/src/pages/LoginScreen.tsx | 44 ++ admin/src/pages/PadPage.tsx | 172 ++++++++ admin/src/pages/Plugin.ts | 36 ++ admin/src/pages/SettingsPage.tsx | 45 ++ admin/src/store/store.ts | 47 ++ admin/src/utils/AnimationFrameHook.ts | 29 ++ admin/src/utils/LoadingScreen.tsx | 19 + admin/src/utils/PadSearch.ts | 20 + admin/src/utils/Toast.tsx | 26 ++ admin/src/utils/brand.svg | 50 +++ admin/src/utils/sorting.ts | 6 + admin/src/utils/useDebounce.ts | 22 + admin/src/utils/utils.ts | 64 +++ admin/src/vite-env.d.ts | 2 + admin/tsconfig.json | 25 ++ admin/tsconfig.node.json | 11 + admin/vite.config.ts | 34 ++ bin/buildForWindows.sh | 11 +- bin/installOnWindows.bat | 14 +- pnpm-workspace.yaml | 2 +- src/.eslintrc.cjs | 2 - src/ep.json | 2 - src/node/db/PadManager.ts | 6 +- src/node/hooks/express/admin.ts | 22 +- src/node/hooks/express/adminplugins.ts | 28 -- src/node/hooks/express/adminsettings.ts | 176 +++++++- src/node/hooks/express/socketio.ts | 33 +- src/node/hooks/express/webaccess.ts | 20 +- src/node/types/PadSearchQuery.ts | 15 + src/node/utils/UpdateCheck.ts | 2 +- src/static/js/admin/jquery.autosize.js | 180 -------- src/static/js/admin/minify.json.js | 61 --- src/static/js/admin/plugins.js | 273 ------------ src/static/js/admin/settings.js | 69 --- src/static/js/pluginfw/plugins.js | 29 +- src/templates/admin/index.html | 28 -- src/templates/admin/plugins-info.html | 47 -- src/templates/admin/plugins.html | 121 ----- src/templates/admin/settings.html | 58 --- src/templates/javascript.html | 8 - src/tests/backend/specs/webaccess.ts | 42 +- 112 files changed, 3327 insertions(+), 946 deletions(-) create mode 100644 admin/.eslintrc.cjs create mode 100644 admin/.gitignore create mode 100644 admin/README.md create mode 100644 admin/index.html create mode 100644 admin/package.json create mode 100644 admin/pnpm-workspace.yaml create mode 100644 admin/public/ep_admin_pads/ar.json create mode 100644 admin/public/ep_admin_pads/bn.json create mode 100644 admin/public/ep_admin_pads/ca.json create mode 100644 admin/public/ep_admin_pads/cs.json create mode 100644 admin/public/ep_admin_pads/cy.json create mode 100644 admin/public/ep_admin_pads/da.json create mode 100644 admin/public/ep_admin_pads/de.json create mode 100644 admin/public/ep_admin_pads/diq.json create mode 100644 admin/public/ep_admin_pads/dsb.json create mode 100644 admin/public/ep_admin_pads/el.json create mode 100644 admin/public/ep_admin_pads/en.json create mode 100644 admin/public/ep_admin_pads/eu.json create mode 100644 admin/public/ep_admin_pads/ff.json create mode 100644 admin/public/ep_admin_pads/fi.json create mode 100644 admin/public/ep_admin_pads/fr.json create mode 100644 admin/public/ep_admin_pads/gl.json create mode 100644 admin/public/ep_admin_pads/he.json create mode 100644 admin/public/ep_admin_pads/hsb.json create mode 100644 admin/public/ep_admin_pads/hu.json create mode 100644 admin/public/ep_admin_pads/ia.json create mode 100644 admin/public/ep_admin_pads/it.json create mode 100644 admin/public/ep_admin_pads/kn.json create mode 100644 admin/public/ep_admin_pads/ko.json create mode 100644 admin/public/ep_admin_pads/krc.json create mode 100644 admin/public/ep_admin_pads/lb.json create mode 100644 admin/public/ep_admin_pads/lt.json create mode 100644 admin/public/ep_admin_pads/mk.json create mode 100644 admin/public/ep_admin_pads/my.json create mode 100644 admin/public/ep_admin_pads/nb.json create mode 100644 admin/public/ep_admin_pads/nl.json create mode 100644 admin/public/ep_admin_pads/oc.json create mode 100644 admin/public/ep_admin_pads/pms.json create mode 100644 admin/public/ep_admin_pads/pt-br.json create mode 100644 admin/public/ep_admin_pads/pt.json create mode 100644 admin/public/ep_admin_pads/qqq.json create mode 100644 admin/public/ep_admin_pads/ru.json create mode 100644 admin/public/ep_admin_pads/sc.json create mode 100644 admin/public/ep_admin_pads/sdc.json create mode 100644 admin/public/ep_admin_pads/sk.json create mode 100644 admin/public/ep_admin_pads/skr-arab.json create mode 100644 admin/public/ep_admin_pads/sl.json create mode 100644 admin/public/ep_admin_pads/smn.json create mode 100644 admin/public/ep_admin_pads/sms.json create mode 100644 admin/public/ep_admin_pads/sq.json create mode 100644 admin/public/ep_admin_pads/sv.json create mode 100644 admin/public/ep_admin_pads/sw.json create mode 100644 admin/public/ep_admin_pads/th.json create mode 100644 admin/public/ep_admin_pads/tl.json create mode 100644 admin/public/ep_admin_pads/tr.json create mode 100644 admin/public/ep_admin_pads/uk.json create mode 100644 admin/public/ep_admin_pads/zh-hans.json create mode 100644 admin/public/ep_admin_pads/zh-hant.json create mode 100644 admin/public/fond.jpg create mode 100644 admin/src/App.css create mode 100644 admin/src/App.tsx create mode 100644 admin/src/index.css create mode 100644 admin/src/localization/i18n.ts create mode 100644 admin/src/main.tsx create mode 100644 admin/src/pages/HelpPage.tsx create mode 100644 admin/src/pages/HomePage.tsx create mode 100644 admin/src/pages/LoginScreen.tsx create mode 100644 admin/src/pages/PadPage.tsx create mode 100644 admin/src/pages/Plugin.ts create mode 100644 admin/src/pages/SettingsPage.tsx create mode 100644 admin/src/store/store.ts create mode 100644 admin/src/utils/AnimationFrameHook.ts create mode 100644 admin/src/utils/LoadingScreen.tsx create mode 100644 admin/src/utils/PadSearch.ts create mode 100644 admin/src/utils/Toast.tsx create mode 100644 admin/src/utils/brand.svg create mode 100644 admin/src/utils/sorting.ts create mode 100644 admin/src/utils/useDebounce.ts create mode 100644 admin/src/utils/utils.ts create mode 100644 admin/src/vite-env.d.ts create mode 100644 admin/tsconfig.json create mode 100644 admin/tsconfig.node.json create mode 100644 admin/vite.config.ts create mode 100644 src/node/types/PadSearchQuery.ts delete mode 100644 src/static/js/admin/jquery.autosize.js delete mode 100644 src/static/js/admin/minify.json.js delete mode 100644 src/static/js/admin/plugins.js delete mode 100644 src/static/js/admin/settings.js delete mode 100644 src/templates/admin/index.html delete mode 100644 src/templates/admin/plugins-info.html delete mode 100644 src/templates/admin/plugins.html delete mode 100644 src/templates/admin/settings.html diff --git a/.dockerignore b/.dockerignore index d8d3a3ebe..f7accabfd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -24,3 +24,4 @@ Dockerfile settings.json src/node_modules +admin/node_modules diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index f41f5ac5e..0dd1000d8 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -54,6 +54,12 @@ jobs: - name: Install all dependencies and symlink for ep_etherpad-lite run: bin/installDeps.sh + - name: Install admin ui + working-directory: admin + run: pnpm install + - name: Build admin ui + working-directory: admin + run: pnpm build - name: Run the backend tests run: pnpm test @@ -105,6 +111,12 @@ jobs: - name: Install all dependencies and symlink for ep_etherpad-lite run: bin/installDeps.sh + - name: Install admin ui + working-directory: admin + run: pnpm install + - name: Build admin ui + working-directory: admin + run: pnpm build - name: Install Etherpad plugins run: > @@ -163,6 +175,12 @@ jobs: - name: Install all dependencies and symlink for ep_etherpad-lite run: bin/installOnWindows.bat + - name: Install admin ui + working-directory: admin + run: pnpm install + - name: Build admin ui + working-directory: admin + run: pnpm build - name: Fix up the settings.json run: | @@ -207,6 +225,12 @@ jobs: ${{ runner.os }}-pnpm-store- - name: Only install direct dependencies run: pnpm config set auto-install-peers false + - name: Install admin ui + working-directory: admin + run: pnpm install + - name: Build admin ui + working-directory: admin + run: pnpm build - name: Install Etherpad plugins # The --legacy-peer-deps flag is required to work around a bug in npm diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/workflows/frontend-admin-tests.yml index aa1c4e70a..37c8ede08 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -12,7 +12,6 @@ jobs: name: with plugins runs-on: ubuntu-latest -# node: [16, 19, 20] >> Disabled node 16 and 18 because they do not work strategy: fail-fast: false matrix: @@ -83,11 +82,11 @@ jobs: run: "sed -i 's/\"enableAdminUITests\": false/\"enableAdminUITests\": true,\\n\"users\":{\"admin\":{\"password\":\"changeme\",\"is_admin\":true}}/' settings.json" - name: increase maxHttpBufferSize - run: "sed -i 's/\"maxHttpBufferSize\": 10000/\"maxHttpBufferSize\": 100000/' settings.json" + run: "sed -i 's/\"maxHttpBufferSize\": 10000/\"maxHttpBufferSize\": 10000000/' settings.json" - name: Disable import/export rate limiting run: | - sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 1000000/' -i settings.json + sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 100000000/' -i settings.json - name: Remove standard frontend test files, so only admin tests are run run: mv src/tests/frontend/specs/* /tmp && mv /tmp/admin*.js src/tests/frontend/specs diff --git a/.gitignore b/.gitignore index 38e2889d9..2a8335497 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,5 @@ out/ /src/bin/etherpad-1.deb /src/bin/node.exe plugin_packages -pnpm-lock.yaml \ No newline at end of file +pnpm-lock.yaml +/src/templates/admin diff --git a/Dockerfile b/Dockerfile index 7cd8105d9..35e4665b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,13 @@ # # Author: muxator +FROM node:alpine as adminBuild + +WORKDIR /opt/etherpad-lite +COPY ./admin ./admin +RUN cd ./admin && npm install -g pnpm && pnpm install && pnpm run build --outDir ./dist + + FROM node:alpine as build LABEL maintainer="Etherpad team, https://github.com/ether/etherpad-lite" @@ -99,16 +106,18 @@ COPY --chown=etherpad:etherpad ./pnpm-workspace.yaml ./package.json ./ FROM build as development COPY --chown=etherpad:etherpad ./src/package.json .npmrc ./src/pnpm-lock.yaml ./src/ +COPY --chown=etherpad:etherpad --from=adminBuild /opt/etherpad-lite/admin/dist ./src/templates/admin RUN bin/installDeps.sh && { [ -z "${ETHERPAD_PLUGINS}" ] || \ pnpm install --workspace-root ${ETHERPAD_PLUGINS}; } - + FROM build as production ENV NODE_ENV=production ENV ETHERPAD_PRODUCTION=true COPY --chown=etherpad:etherpad ./src ./src +COPY --chown=etherpad:etherpad --from=adminBuild /opt/etherpad-lite/admin/dist ./src/templates/admin RUN bin/installDeps.sh && { [ -z "${ETHERPAD_PLUGINS}" ] || \ pnpm install --workspace-root ${ETHERPAD_PLUGINS}; } && \ diff --git a/admin/.eslintrc.cjs b/admin/.eslintrc.cjs new file mode 100644 index 000000000..d6c953795 --- /dev/null +++ b/admin/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/admin/.gitignore b/admin/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/admin/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/admin/README.md b/admin/README.md new file mode 100644 index 000000000..0d6babedd --- /dev/null +++ b/admin/README.md @@ -0,0 +1,30 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 000000000..8863894ed --- /dev/null +++ b/admin/index.html @@ -0,0 +1,14 @@ + + + + + + Etherpad Admin Dashboard + + + +
+
+ + + diff --git a/admin/package.json b/admin/package.json new file mode 100644 index 000000000..d74fedc12 --- /dev/null +++ b/admin/package.json @@ -0,0 +1,38 @@ +{ + "name": "admin", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-toast": "^1.1.5", + "i18next": "^23.10.1", + "i18next-browser-languagedetector": "^7.2.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-i18next": "^14.1.0", + "react-router-dom": "^6.22.3", + "zustand": "^4.5.2" + }, + "devDependencies": { + "@types/react": "^18.2.56", + "@types/react-dom": "^18.2.19", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.56.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "socket.io-client": "^4.7.4", + "typescript": "^5.2.2", + "vite": "^5.1.4", + "vite-plugin-static-copy": "^1.0.1", + "vite-plugin-svgr": "^4.2.0" + } +} diff --git a/admin/pnpm-workspace.yaml b/admin/pnpm-workspace.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/admin/public/ep_admin_pads/ar.json b/admin/public/ep_admin_pads/ar.json new file mode 100644 index 000000000..746946edf --- /dev/null +++ b/admin/public/ep_admin_pads/ar.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "Meno25", + "محمد أحمد عبد الفتاح" + ] + }, + "ep_adminpads2_action": "فعل", + "ep_adminpads2_autoupdate-label": "التحديث التلقائي على تغييرات الوسادة", + "ep_adminpads2_autoupdate.title": "لتمكين أو تعطيل التحديثات التلقائية للاستعلام الحالي.", + "ep_adminpads2_confirm": "هل تريد حقًا حذف الوسادة {{padID}}؟", + "ep_adminpads2_delete.value": "حذف", + "ep_adminpads2_last-edited": "آخر تعديل", + "ep_adminpads2_loading": "جارٍ التحميل...", + "ep_adminpads2_manage-pads": "إدارة الفوط", + "ep_adminpads2_no-results": "لا توجد نتائج.", + "ep_adminpads2_pad-user-count": "عدد المستخدمين الوسادة", + "ep_adminpads2_padname": "بادنام", + "ep_adminpads2_search-box.placeholder": "مصطلح البحث", + "ep_adminpads2_search-button.value": "بحث", + "ep_adminpads2_search-done": "اكتمل البحث", + "ep_adminpads2_search-error-explanation": "واجه الخادم خطأً أثناء البحث عن منصات:", + "ep_adminpads2_search-error-title": "فشل في الحصول على قائمة الوسادة", + "ep_adminpads2_search-heading": "ابحث عن الفوط", + "ep_adminpads2_title": "إدارة الوسادة", + "ep_adminpads2_unknown-error": "خطأ غير معروف", + "ep_adminpads2_unknown-status": "حالة غير معروفة" +} diff --git a/admin/public/ep_admin_pads/bn.json b/admin/public/ep_admin_pads/bn.json new file mode 100644 index 000000000..0048b52bb --- /dev/null +++ b/admin/public/ep_admin_pads/bn.json @@ -0,0 +1,23 @@ +{ + "@metadata": { + "authors": [ + "আজিজ", + "আফতাবুজ্জামান" + ] + }, + "ep_adminpads2_action": "কার্য", + "ep_adminpads2_delete.value": "মুছে ফেলুন", + "ep_adminpads2_last-edited": "সর্বশেষ সম্পাদিত", + "ep_adminpads2_loading": "লোড হচ্ছে...", + "ep_adminpads2_manage-pads": "প্যাড পরিচালনা করুন", + "ep_adminpads2_no-results": "ফলাফল নেই", + "ep_adminpads2_padname": "প্যাডের নাম", + "ep_adminpads2_search-button.value": "অনুসন্ধান", + "ep_adminpads2_search-done": "অনুসন্ধান সম্পূর্ণ", + "ep_adminpads2_search-error-explanation": "প্যাড অনুসন্ধান করার সময় সার্ভার একটি ত্রুটির সম্মুখীন হয়েছে:", + "ep_adminpads2_search-error-title": "প্যাডের তালিকা পেতে ব্যর্থ", + "ep_adminpads2_search-heading": "প্যাড অনুসন্ধান করুন", + "ep_adminpads2_title": "প্যাড প্রশাসন", + "ep_adminpads2_unknown-error": "অজানা ত্রুটি", + "ep_adminpads2_unknown-status": "অজানা অবস্থা" +} diff --git a/admin/public/ep_admin_pads/ca.json b/admin/public/ep_admin_pads/ca.json new file mode 100644 index 000000000..1d4e34216 --- /dev/null +++ b/admin/public/ep_admin_pads/ca.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Mguix" + ] + }, + "ep_adminpads2_action": "Acció", + "ep_adminpads2_autoupdate-label": "Actualització automàtica en cas de canvis de pad", + "ep_adminpads2_autoupdate.title": "Activa o desactiva les actualitzacions automàtiques per a la consulta actual.", + "ep_adminpads2_confirm": "Esteu segur que voleu suprimir el pad {{padID}}?", + "ep_adminpads2_delete.value": "Esborrar", + "ep_adminpads2_last-edited": "Darrera modificació", + "ep_adminpads2_loading": "S’està carregant…", + "ep_adminpads2_manage-pads": "Gestiona els pads", + "ep_adminpads2_no-results": "No hi ha cap resultat", + "ep_adminpads2_pad-user-count": "Nombre d'usuaris de pads", + "ep_adminpads2_padname": "Nom del pad", + "ep_adminpads2_search-box.placeholder": "Terme de cerca", + "ep_adminpads2_search-button.value": "Cercar", + "ep_adminpads2_search-done": "Cerca completa", + "ep_adminpads2_search-error-explanation": "El servidor ha trobat un error mentre buscava pads:", + "ep_adminpads2_search-error-title": "No s'ha pogut obtenir la llista del pad", + "ep_adminpads2_search-heading": "Cerca pads", + "ep_adminpads2_title": "Administració del pad", + "ep_adminpads2_unknown-error": "Error desconegut", + "ep_adminpads2_unknown-status": "Estat desconegut" +} diff --git a/admin/public/ep_admin_pads/cs.json b/admin/public/ep_admin_pads/cs.json new file mode 100644 index 000000000..19e92894d --- /dev/null +++ b/admin/public/ep_admin_pads/cs.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Spotter" + ] + }, + "ep_adminpads2_action": "Akce", + "ep_adminpads2_autoupdate-label": "Automatická aktualizace změn Padu", + "ep_adminpads2_autoupdate.title": "Povolí nebo zakáže automatické aktualizace pro aktuální dotaz.", + "ep_adminpads2_confirm": "Opravdu chcete odstranit pad {{padID}}?", + "ep_adminpads2_delete.value": "Smazat", + "ep_adminpads2_last-edited": "Naposledy upraveno", + "ep_adminpads2_loading": "Načítání…", + "ep_adminpads2_manage-pads": "Spravovat pady", + "ep_adminpads2_no-results": "Žádné výsledky", + "ep_adminpads2_pad-user-count": "Počet uživatelů padu", + "ep_adminpads2_padname": "Název padu", + "ep_adminpads2_search-box.placeholder": "Hledaný výraz", + "ep_adminpads2_search-button.value": "Hledat", + "ep_adminpads2_search-done": "Hledání dokončeno", + "ep_adminpads2_search-error-explanation": "Při hledání padů došlo k chybě serveru:", + "ep_adminpads2_search-error-title": "Seznam padů se nepodařilo získat", + "ep_adminpads2_search-heading": "Hledat pady", + "ep_adminpads2_title": "Správa Padu", + "ep_adminpads2_unknown-error": "Neznámá chyba", + "ep_adminpads2_unknown-status": "Neznámý stav" +} diff --git a/admin/public/ep_admin_pads/cy.json b/admin/public/ep_admin_pads/cy.json new file mode 100644 index 000000000..02546da90 --- /dev/null +++ b/admin/public/ep_admin_pads/cy.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Robin Owain" + ] + }, + "ep_adminpads2_action": "Gweithred", + "ep_adminpads2_autoupdate-label": "Diweddaru newidiadau pad yn otomatig", + "ep_adminpads2_autoupdate.title": "Galluogi neu analluogi diweddaru'r ymholiad cyfredol.", + "ep_adminpads2_confirm": "Siwr eich bod am ddileu'r pad {{padID}}?", + "ep_adminpads2_delete.value": "Dileu", + "ep_adminpads2_last-edited": "Golygwyd ddiwethaf", + "ep_adminpads2_loading": "Wrthi'n llwytho...", + "ep_adminpads2_manage-pads": "Rheoli'r padiau", + "ep_adminpads2_no-results": "Dim canlyniad", + "ep_adminpads2_pad-user-count": "Cyfri defnyddiwr pad", + "ep_adminpads2_padname": "Enwpad", + "ep_adminpads2_search-box.placeholder": "Term chwilio", + "ep_adminpads2_search-button.value": "Chwilio", + "ep_adminpads2_search-done": "Wedi gorffen", + "ep_adminpads2_search-error-explanation": "Nam ar y gweinydd wrth chwilio'r padiau:", + "ep_adminpads2_search-error-title": "Methwyd a chael y rhestr pad", + "ep_adminpads2_search-heading": "Chwilio am badiau", + "ep_adminpads2_title": "Gweinyddiaeth y pad", + "ep_adminpads2_unknown-error": "Nam o ryw fath", + "ep_adminpads2_unknown-status": "Statws anhysbys" +} diff --git a/admin/public/ep_admin_pads/da.json b/admin/public/ep_admin_pads/da.json new file mode 100644 index 000000000..a5303b9cb --- /dev/null +++ b/admin/public/ep_admin_pads/da.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "Saederup92" + ] + }, + "ep_adminpads2_action": "Handling", + "ep_adminpads2_delete.value": "Slet", + "ep_adminpads2_last-edited": "Sidst redigeret", + "ep_adminpads2_loading": "Indlæser...", + "ep_adminpads2_no-results": "Ingen resultater", + "ep_adminpads2_unknown-error": "Ukendt fejl", + "ep_adminpads2_unknown-status": "Ukendt status" +} diff --git a/admin/public/ep_admin_pads/de.json b/admin/public/ep_admin_pads/de.json new file mode 100644 index 000000000..afb553caf --- /dev/null +++ b/admin/public/ep_admin_pads/de.json @@ -0,0 +1,32 @@ +{ + "@metadata": { + "authors": [ + "Brettchenweber", + "Justman10000", + "Lorisobi", + "SamTV", + "Umlaut", + "Zunkelty" + ] + }, + "ep_adminpads2_action": "Aktion", + "ep_adminpads2_autoupdate-label": "Automatisch bei Pad-Änderungen updaten", + "ep_adminpads2_autoupdate.title": "Aktiviert oder deaktiviert automatische Aktualisierungen für die aktuelle Abfrage.", + "ep_adminpads2_confirm": "Willst du das Pad {{padID}} wirklich löschen?", + "ep_adminpads2_delete.value": "Löschen", + "ep_adminpads2_last-edited": "Zuletzt bearbeitet", + "ep_adminpads2_loading": "Lädt...", + "ep_adminpads2_manage-pads": "Pads verwalten", + "ep_adminpads2_no-results": "Keine Ergebnisse", + "ep_adminpads2_pad-user-count": "Nutzerzahl des Pads", + "ep_adminpads2_padname": "Padname", + "ep_adminpads2_search-box.placeholder": "Suchbegriff", + "ep_adminpads2_search-button.value": "Suche", + "ep_adminpads2_search-done": "Suche vollendet", + "ep_adminpads2_search-error-explanation": "Der Server ist bei der Suche nach Pads auf einen Fehler gestoßen:", + "ep_adminpads2_search-error-title": "Pad-Liste konnte nicht abgerufen werden", + "ep_adminpads2_search-heading": "Nach Pads suchen", + "ep_adminpads2_title": "Pad-Verwaltung", + "ep_adminpads2_unknown-error": "Unbekannter Fehler", + "ep_adminpads2_unknown-status": "Unbekannter Status" +} diff --git a/admin/public/ep_admin_pads/diq.json b/admin/public/ep_admin_pads/diq.json new file mode 100644 index 000000000..983680965 --- /dev/null +++ b/admin/public/ep_admin_pads/diq.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "1917 Ekim Devrimi", + "Mirzali" + ] + }, + "ep_adminpads2_action": "Hereketi", + "ep_adminpads2_autoupdate-label": "Vurnayışanê pedi otomatik rocane kerê", + "ep_adminpads2_autoupdate.title": "Persê mewcudi rê rocaneyışanê otomatika aktiv ke ya zi dewrê ra vecê", + "ep_adminpads2_confirm": "Şıma qayılê pedê {{padID}} bıesternê?", + "ep_adminpads2_delete.value": "Bestere", + "ep_adminpads2_last-edited": "Vurnayışo peyên", + "ep_adminpads2_loading": "Bar beno...", + "ep_adminpads2_manage-pads": "Pedan idare kerê", + "ep_adminpads2_no-results": "Netice çıniyo", + "ep_adminpads2_pad-user-count": "Amarê karberanê pedi", + "ep_adminpads2_padname": "Padname", + "ep_adminpads2_search-box.placeholder": "termê cıgêrayış", + "ep_adminpads2_search-button.value": "Cı geyre", + "ep_adminpads2_search-done": "Cıgeyrayışi temam", + "ep_adminpads2_search-error-explanation": "Server cıgeyrayışê pedan de yew xetaya raşt ame", + "ep_adminpads2_search-error-title": "Lista pedi nêgêriye", + "ep_adminpads2_search-heading": "Pedan cıgeyrayış", + "ep_adminpads2_title": "İdarey pedi", + "ep_adminpads2_unknown-error": "Xetaya nêzanıtiye", + "ep_adminpads2_unknown-status": "Weziyeto nêzanaye" +} diff --git a/admin/public/ep_admin_pads/dsb.json b/admin/public/ep_admin_pads/dsb.json new file mode 100644 index 000000000..363732a20 --- /dev/null +++ b/admin/public/ep_admin_pads/dsb.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Michawiki" + ] + }, + "ep_adminpads2_action": "Akcija", + "ep_adminpads2_autoupdate-label": "Pśi změnach na zapisniku awtomatiski aktualizěrowaś", + "ep_adminpads2_autoupdate.title": "Zmóžnja abo znjemóžnja awtomatiske aktualizacije za aktualne wótpšašowanje.", + "ep_adminpads2_confirm": "Cośo napšawdu zapisnik {{padID}} lašowaś?", + "ep_adminpads2_delete.value": "Lašowaś", + "ep_adminpads2_last-edited": "Slědna změna", + "ep_adminpads2_loading": "Zacytujo se...", + "ep_adminpads2_manage-pads": "Zapisniki zastojaś", + "ep_adminpads2_no-results": "Žedne wuslědki", + "ep_adminpads2_pad-user-count": "Licba wužywarjow zapisnika", + "ep_adminpads2_padname": "Mě zapisnika", + "ep_adminpads2_search-box.placeholder": "Pytańske zapśimjeśe", + "ep_adminpads2_search-button.value": "Pytaś", + "ep_adminpads2_search-done": "Pytanje dokóńcone", + "ep_adminpads2_search-error-explanation": "Serwer jo starcył na zmólku, mjaztym až jo pytał za zapisnikami:", + "ep_adminpads2_search-error-title": "Lisćina zapisnikow njedajo se wobstaraś", + "ep_adminpads2_search-heading": "Za zapisnikami pytaś", + "ep_adminpads2_title": "Zapisnikowa administracija", + "ep_adminpads2_unknown-error": "Njeznata zmólka", + "ep_adminpads2_unknown-status": "Njeznaty status" +} diff --git a/admin/public/ep_admin_pads/el.json b/admin/public/ep_admin_pads/el.json new file mode 100644 index 000000000..77b6af3dd --- /dev/null +++ b/admin/public/ep_admin_pads/el.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Norhorn" + ] + }, + "ep_adminpads2_delete.value": "Διαγραφή", + "ep_adminpads2_last-edited": "Τελευταία απεξεργασία", + "ep_adminpads2_loading": "Φόρτωση…", + "ep_adminpads2_no-results": "Κανένα αποτέλεσμα", + "ep_adminpads2_search-box.placeholder": "Αναζήτηση όρων", + "ep_adminpads2_search-button.value": "Αναζήτηση", + "ep_adminpads2_search-done": "Ολοκλήρωση αναζήτησης", + "ep_adminpads2_unknown-error": "Άγνωστο σφάλμα", + "ep_adminpads2_unknown-status": "Άγνωστη κατάσταση" +} diff --git a/admin/public/ep_admin_pads/en.json b/admin/public/ep_admin_pads/en.json new file mode 100644 index 000000000..8a9044b1b --- /dev/null +++ b/admin/public/ep_admin_pads/en.json @@ -0,0 +1,22 @@ +{ + "ep_adminpads2_action": "Action", + "ep_adminpads2_autoupdate-label": "Auto-update on pad changes", + "ep_adminpads2_autoupdate.title": "Enables or disables automatic updates for the current query.", + "ep_adminpads2_confirm": "Do you really want to delete the pad {{padID}}?", + "ep_adminpads2_delete.value": "Delete", + "ep_adminpads2_last-edited": "Last edited", + "ep_adminpads2_loading": "Loading…", + "ep_adminpads2_manage-pads": "Manage pads", + "ep_adminpads2_no-results": "No results", + "ep_adminpads2_pad-user-count": "Pad user count", + "ep_adminpads2_padname": "Padname", + "ep_adminpads2_search-box.placeholder": "Search term", + "ep_adminpads2_search-button.value": "Search", + "ep_adminpads2_search-done": "Search complete", + "ep_adminpads2_search-error-explanation": "The server encountered an error while searching for pads:", + "ep_adminpads2_search-error-title": "Failed to get pad list", + "ep_adminpads2_search-heading": "Search for pads", + "ep_adminpads2_title": "Pad administration", + "ep_adminpads2_unknown-error": "Unknown error", + "ep_adminpads2_unknown-status": "Unknown status" +} diff --git a/admin/public/ep_admin_pads/eu.json b/admin/public/ep_admin_pads/eu.json new file mode 100644 index 000000000..71d9dfe79 --- /dev/null +++ b/admin/public/ep_admin_pads/eu.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Izendegi" + ] + }, + "ep_adminpads2_action": "Ekintza", + "ep_adminpads2_autoupdate-label": "Automatikoki eguneratu pad-aren aldaketak daudenean", + "ep_adminpads2_autoupdate.title": "Oraingo kontsultarako eguneratze automatikoak gaitu edo desgaitzen du.", + "ep_adminpads2_confirm": "Ziur zaude {{padID}} pad-a ezabatu nahi duzula?", + "ep_adminpads2_delete.value": "Ezabatu", + "ep_adminpads2_last-edited": "Azkenengoz editatua", + "ep_adminpads2_loading": "Kargatzen...", + "ep_adminpads2_manage-pads": "Kudeatu pad-ak", + "ep_adminpads2_no-results": "Emaitzarik ez", + "ep_adminpads2_pad-user-count": "Pad-erabiltzaile kopurua", + "ep_adminpads2_padname": "Pad-izena", + "ep_adminpads2_search-box.placeholder": "Bilaketa testua", + "ep_adminpads2_search-button.value": "Bilatu", + "ep_adminpads2_search-done": "Bilaketa osatu da", + "ep_adminpads2_search-error-explanation": "Zerbitzariak errore bat izan du pad-ak bilatzean:", + "ep_adminpads2_search-error-title": "Pad-zerrenda eskuratzeak huts egin du", + "ep_adminpads2_search-heading": "Bilatu pad-ak", + "ep_adminpads2_title": "Pad-en kudeaketa", + "ep_adminpads2_unknown-error": "Errore ezezaguna", + "ep_adminpads2_unknown-status": "Egoera ezezaguna" +} diff --git a/admin/public/ep_admin_pads/ff.json b/admin/public/ep_admin_pads/ff.json new file mode 100644 index 000000000..8cb5aea99 --- /dev/null +++ b/admin/public/ep_admin_pads/ff.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Ibrahima Malal Sarr" + ] + }, + "ep_adminpads2_action": "Baɗal", + "ep_adminpads2_autoupdate-label": "Hesɗitin e jaajol tuma baylagol faɗo", + "ep_adminpads2_autoupdate.title": "Hurminat walla daaƴa kesɗitine jaaje wonannde ɗaɓɓitannde wonaande.", + "ep_adminpads2_confirm": "Aɗa yiɗi e jaati momtude faɗo {{padID}}?", + "ep_adminpads2_delete.value": "Momtu", + "ep_adminpads2_last-edited": "Taƴtaa sakket", + "ep_adminpads2_loading": "Nana loowa…", + "ep_adminpads2_manage-pads": "Toppito paɗe", + "ep_adminpads2_no-results": "Alaa njaltudi", + "ep_adminpads2_pad-user-count": "Limoore huutorɓe faɗo", + "ep_adminpads2_padname": "Innde faɗo", + "ep_adminpads2_search-box.placeholder": "Helmere njiilaw", + "ep_adminpads2_search-button.value": "Yiylo", + "ep_adminpads2_search-done": "Njiylaw timmii", + "ep_adminpads2_search-error-explanation": "Sarworde ndee hawrii e juumre tuma nde yiylotoo faɗo:", + "ep_adminpads2_search-error-title": "Horiima heɓde doggol paɗe", + "ep_adminpads2_search-heading": "Yiylo paɗe", + "ep_adminpads2_title": "Yiylorde paɗe", + "ep_adminpads2_unknown-error": "Juumre nde anndaaka", + "ep_adminpads2_unknown-status": "Ngonka ka anndaaka" +} diff --git a/admin/public/ep_admin_pads/fi.json b/admin/public/ep_admin_pads/fi.json new file mode 100644 index 000000000..708b2bef8 --- /dev/null +++ b/admin/public/ep_admin_pads/fi.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Artnay", + "Kyykaarme", + "MITO", + "Maantietäjä", + "Yupik" + ] + }, + "ep_adminpads2_action": "Toiminto", + "ep_adminpads2_delete.value": "Poista", + "ep_adminpads2_last-edited": "Viimeksi muokattu", + "ep_adminpads2_loading": "Ladataan...", + "ep_adminpads2_manage-pads": "Hallitse muistioita", + "ep_adminpads2_no-results": "Ei tuloksia", + "ep_adminpads2_pad-user-count": "Pad-käyttäjien määrä", + "ep_adminpads2_padname": "Muistion nimi", + "ep_adminpads2_search-box.placeholder": "Haettava teksti", + "ep_adminpads2_search-button.value": "Etsi", + "ep_adminpads2_search-done": "Haku valmis", + "ep_adminpads2_search-error-explanation": "Palvelimessa tapahtui virhe etsiessään muistioita:", + "ep_adminpads2_search-error-title": "Pad-luettelon hakeminen epäonnistui", + "ep_adminpads2_search-heading": "Etsi sisältöä", + "ep_adminpads2_unknown-error": "Tuntematon virhe", + "ep_adminpads2_unknown-status": "Tuntematon tila" +} diff --git a/admin/public/ep_admin_pads/fr.json b/admin/public/ep_admin_pads/fr.json new file mode 100644 index 000000000..e6c8a8703 --- /dev/null +++ b/admin/public/ep_admin_pads/fr.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Verdy p" + ] + }, + "ep_adminpads2_action": "Action", + "ep_adminpads2_autoupdate-label": "Mise à jour automatique en cas de changements du bloc-notes", + "ep_adminpads2_autoupdate.title": "Active ou désactive les mises à jour automatiques pour la requête actuelle.", + "ep_adminpads2_confirm": "Voulez-vous vraiment supprimer le bloc-notes {{padID}} ?", + "ep_adminpads2_delete.value": "Supprimer", + "ep_adminpads2_last-edited": "Dernière modification", + "ep_adminpads2_loading": "Chargement en cours...", + "ep_adminpads2_manage-pads": "Gérer les bloc-notes", + "ep_adminpads2_no-results": "Aucun résultat", + "ep_adminpads2_pad-user-count": "Nombre d’utilisateurs du bloc-notes", + "ep_adminpads2_padname": "Nom du bloc-notes", + "ep_adminpads2_search-box.placeholder": "Terme de recherche", + "ep_adminpads2_search-button.value": "Rechercher", + "ep_adminpads2_search-done": "Recherche terminée", + "ep_adminpads2_search-error-explanation": "Le serveur a rencontré une erreur en cherchant des blocs-notes :", + "ep_adminpads2_search-error-title": "Échec d’obtention de la liste de blocs-notes", + "ep_adminpads2_search-heading": "Rechercher des blocs-notes", + "ep_adminpads2_title": "Administration du bloc-notes", + "ep_adminpads2_unknown-error": "Erreur inconnue", + "ep_adminpads2_unknown-status": "État inconnu" +} diff --git a/admin/public/ep_admin_pads/gl.json b/admin/public/ep_admin_pads/gl.json new file mode 100644 index 000000000..5e6b66549 --- /dev/null +++ b/admin/public/ep_admin_pads/gl.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Ghose" + ] + }, + "ep_adminpads2_action": "Accións", + "ep_adminpads2_autoupdate-label": "Actualización automática dos cambios", + "ep_adminpads2_autoupdate.title": "Activa ou desactiva as actualizacións automáticas para a consulta actual.", + "ep_adminpads2_confirm": "Tes a certeza de querer eliminar o pad {{padID}}?", + "ep_adminpads2_delete.value": "Eliminar", + "ep_adminpads2_last-edited": "Última edición", + "ep_adminpads2_loading": "Cargando…", + "ep_adminpads2_manage-pads": "Xestionar pads", + "ep_adminpads2_no-results": "Sen resultados", + "ep_adminpads2_pad-user-count": "Usuarias neste pad", + "ep_adminpads2_padname": "Nome do pad", + "ep_adminpads2_search-box.placeholder": "Buscar termo", + "ep_adminpads2_search-button.value": "Buscar", + "ep_adminpads2_search-done": "Busca completa", + "ep_adminpads2_search-error-explanation": "O servidor atopou un fallo cando buscaba pads:", + "ep_adminpads2_search-error-title": "Non se obtivo a lista de pads", + "ep_adminpads2_search-heading": "Buscar pads", + "ep_adminpads2_title": "Administración do pad", + "ep_adminpads2_unknown-error": "Erro descoñecido", + "ep_adminpads2_unknown-status": "Estado descoñecido" +} diff --git a/admin/public/ep_admin_pads/he.json b/admin/public/ep_admin_pads/he.json new file mode 100644 index 000000000..8b506946b --- /dev/null +++ b/admin/public/ep_admin_pads/he.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "YaronSh" + ] + }, + "ep_adminpads2_action": "פעולה", + "ep_adminpads2_autoupdate-label": "לעדכן אוטומטית כשהמחברת נערכת", + "ep_adminpads2_autoupdate.title": "הפעלה או השבתה של עדכונים אוטומטיים לשאילתה הנוכחית.", + "ep_adminpads2_confirm": "למחוק את המחברת {{padID}}?", + "ep_adminpads2_delete.value": "מחיקה", + "ep_adminpads2_last-edited": "עריכה אחרונה", + "ep_adminpads2_loading": "בטעינה…", + "ep_adminpads2_manage-pads": "ניהול מחברות", + "ep_adminpads2_no-results": "אין תוצאות", + "ep_adminpads2_pad-user-count": "ספירת משתמשים במחברת", + "ep_adminpads2_padname": "שם המחברת", + "ep_adminpads2_search-box.placeholder": "הביטוי לחיפוש", + "ep_adminpads2_search-button.value": "חיפוש", + "ep_adminpads2_search-done": "החיפוש הושלם", + "ep_adminpads2_search-error-explanation": "השרת נתקל בשגיאה בעת חיפוש מחברות:", + "ep_adminpads2_search-error-title": "קבלת רשימת המחברות נכשלה", + "ep_adminpads2_search-heading": "חיפוש אחר מחברות", + "ep_adminpads2_title": "ניהול מחברות", + "ep_adminpads2_unknown-error": "שגיאה בלתי־ידועה", + "ep_adminpads2_unknown-status": "מצב לא ידוע" +} diff --git a/admin/public/ep_admin_pads/hsb.json b/admin/public/ep_admin_pads/hsb.json new file mode 100644 index 000000000..a6c29611f --- /dev/null +++ b/admin/public/ep_admin_pads/hsb.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Michawiki" + ] + }, + "ep_adminpads2_action": "Akcija", + "ep_adminpads2_autoupdate-label": "Při změnach na zapisniku awtomatisce aktualizować", + "ep_adminpads2_autoupdate.title": "Zmóžnja abo znjemóžnja awtomatiske aktualizacije za aktualne wotprašowanje.", + "ep_adminpads2_confirm": "Chceće woprawdźe zapisnik {{padID}} zhašeć?", + "ep_adminpads2_delete.value": "Zhašeć", + "ep_adminpads2_last-edited": "Poslednja změna", + "ep_adminpads2_loading": "Začituje so...", + "ep_adminpads2_manage-pads": "Zapisniki rjadować", + "ep_adminpads2_no-results": "Žane wuslědki.", + "ep_adminpads2_pad-user-count": "Ličba wužiwarjow zapisnika", + "ep_adminpads2_padname": "Mjeno zapisnika", + "ep_adminpads2_search-box.placeholder": "Pytanske zapřijeće", + "ep_adminpads2_search-button.value": "Pytać", + "ep_adminpads2_search-done": "Pytanje dokónčene", + "ep_adminpads2_search-error-explanation": "Serwer je na zmylk storčił, mjeztym zo je za zapisnikami pytał:", + "ep_adminpads2_search-error-title": "Lisćina zapisnikow njeda so wobstarać", + "ep_adminpads2_search-heading": "Za zapisnikami pytać", + "ep_adminpads2_title": "Zapisnikowa administracija", + "ep_adminpads2_unknown-error": "Njeznaty zmylk", + "ep_adminpads2_unknown-status": "Njeznaty status" +} diff --git a/admin/public/ep_admin_pads/hu.json b/admin/public/ep_admin_pads/hu.json new file mode 100644 index 000000000..9210761bc --- /dev/null +++ b/admin/public/ep_admin_pads/hu.json @@ -0,0 +1,25 @@ +{ + "@metadata": { + "authors": [] + }, + "ep_adminpads2_action": "Művelet", + "ep_adminpads2_autoupdate-label": "Változáskor jegyzetfüzet önműködő frissítése", + "ep_adminpads2_autoupdate.title": "Önműködő frissítése az jelenlegi lekérdezéshez be- vagy kikapcsolása.", + "ep_adminpads2_confirm": "Biztosan törölni szeretné a(z) {{padID}} jegyzetfüzetet?", + "ep_adminpads2_delete.value": "Törlés", + "ep_adminpads2_last-edited": "Utoljára szerkesztve", + "ep_adminpads2_loading": "Betöltés folyamatban…", + "ep_adminpads2_manage-pads": "Jegyzetfüzetek kezelése", + "ep_adminpads2_no-results": "Nincs találat", + "ep_adminpads2_pad-user-count": "Jegyzetfüzet felhasználók száma", + "ep_adminpads2_padname": "Jegyzetfüzet név", + "ep_adminpads2_search-box.placeholder": "Keresési kifejezés", + "ep_adminpads2_search-button.value": "Keresés", + "ep_adminpads2_search-done": "Keresés befejezve", + "ep_adminpads2_search-error-explanation": "A kiszolgáló hibát észlelt a jegyzetfüzetek keresésekor:", + "ep_adminpads2_search-error-title": "Nem sikerült lekérni a jegyzetfüzet listát", + "ep_adminpads2_search-heading": "Jegyzetfüzetek keresése", + "ep_adminpads2_title": "Jegyzetfüzet felügyelete", + "ep_adminpads2_unknown-error": "Ismeretlen hiba", + "ep_adminpads2_unknown-status": "Ismeretlen állapot" +} diff --git a/admin/public/ep_admin_pads/ia.json b/admin/public/ep_admin_pads/ia.json new file mode 100644 index 000000000..f0e00e5ca --- /dev/null +++ b/admin/public/ep_admin_pads/ia.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "McDutchie" + ] + }, + "ep_adminpads2_action": "Action", + "ep_adminpads2_autoupdate-label": "Actualisar automaticamente le pad in caso de cambiamentos", + "ep_adminpads2_autoupdate.title": "Activa o disactiva le actualisationes automatic pro le consulta actual.", + "ep_adminpads2_confirm": "Es tu secur de voler deler le pad {{padID}}?", + "ep_adminpads2_delete.value": "Deler", + "ep_adminpads2_last-edited": "Ultime modification", + "ep_adminpads2_loading": "Cargamento in curso…", + "ep_adminpads2_manage-pads": "Gerer pads", + "ep_adminpads2_no-results": "Nulle resultato", + "ep_adminpads2_pad-user-count": "Numero de usatores del pad", + "ep_adminpads2_padname": "Nomine del pad", + "ep_adminpads2_search-box.placeholder": "Termino de recerca", + "ep_adminpads2_search-button.value": "Cercar", + "ep_adminpads2_search-done": "Recerca terminate", + "ep_adminpads2_search-error-explanation": "Le servitor ha incontrate un error durante le recerca de pads:", + "ep_adminpads2_search-error-title": "Non poteva obtener le lista de pads", + "ep_adminpads2_search-heading": "Cercar pads", + "ep_adminpads2_title": "Administration de pads", + "ep_adminpads2_unknown-error": "Error incognite", + "ep_adminpads2_unknown-status": "Stato incognite" +} diff --git a/admin/public/ep_admin_pads/it.json b/admin/public/ep_admin_pads/it.json new file mode 100644 index 000000000..493cbb4d5 --- /dev/null +++ b/admin/public/ep_admin_pads/it.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Beta16", + "Luca.favorido" + ] + }, + "ep_adminpads2_action": "Azione", + "ep_adminpads2_delete.value": "Cancella", + "ep_adminpads2_last-edited": "Ultima modifica", + "ep_adminpads2_loading": "Caricamento…", + "ep_adminpads2_no-results": "Nessun risultato", + "ep_adminpads2_search-button.value": "Cerca", + "ep_adminpads2_unknown-error": "Errore sconosciuto", + "ep_adminpads2_unknown-status": "Stato sconosciuto" +} diff --git a/admin/public/ep_admin_pads/kn.json b/admin/public/ep_admin_pads/kn.json new file mode 100644 index 000000000..1e9019611 --- /dev/null +++ b/admin/public/ep_admin_pads/kn.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ" + ] + }, + "ep_adminpads2_action": "ಕ್ರಿಯೆ", + "ep_adminpads2_delete.value": "ಅಳಿಸು", + "ep_adminpads2_loading": "ತುಂಬಿಸಲಾಗುತ್ತಿದೆ…", + "ep_adminpads2_no-results": "ಯಾವ ಫಲಿತಾಂಶಗಳೂ ಇಲ್ಲ", + "ep_adminpads2_search-button.value": "ಹುಡುಕು", + "ep_adminpads2_unknown-error": "ಅಪರಿಚಿತ ದೋಷ" +} diff --git a/admin/public/ep_admin_pads/ko.json b/admin/public/ep_admin_pads/ko.json new file mode 100644 index 000000000..9ab8feed3 --- /dev/null +++ b/admin/public/ep_admin_pads/ko.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "Ykhwong", + "그냥기여자" + ] + }, + "ep_adminpads2_action": "동작", + "ep_adminpads2_autoupdate-label": "패드 변경 시 자동 업데이트", + "ep_adminpads2_autoupdate.title": "현재 쿼리의 자동 업데이트를 활성화하거나 비활성화합니다.", + "ep_adminpads2_confirm": "{{padID}} 패드를 삭제하시겠습니까?", + "ep_adminpads2_delete.value": "삭제", + "ep_adminpads2_last-edited": "최근 편집", + "ep_adminpads2_loading": "불러오는 중...", + "ep_adminpads2_manage-pads": "패드 관리", + "ep_adminpads2_no-results": "결과 없음", + "ep_adminpads2_pad-user-count": "패드 사용자 수", + "ep_adminpads2_padname": "패드 이름", + "ep_adminpads2_search-box.placeholder": "검색어", + "ep_adminpads2_search-button.value": "검색", + "ep_adminpads2_search-done": "검색 완료", + "ep_adminpads2_search-error-explanation": "패드 검색 중 서버에 오류가 발생했습니다:", + "ep_adminpads2_search-error-title": "패드 목록 가져오기 실패", + "ep_adminpads2_search-heading": "패드 검색", + "ep_adminpads2_title": "패드 관리", + "ep_adminpads2_unknown-error": "알 수 없는 오류", + "ep_adminpads2_unknown-status": "알 수 없는 상태" +} diff --git a/admin/public/ep_admin_pads/krc.json b/admin/public/ep_admin_pads/krc.json new file mode 100644 index 000000000..2caf4f099 --- /dev/null +++ b/admin/public/ep_admin_pads/krc.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Къарачайлы" + ] + }, + "ep_adminpads2_action": "Этиу", + "ep_adminpads2_autoupdate-label": "Блокнот тюрлендириулеринде автомат халда джангыртыу", + "ep_adminpads2_autoupdate.title": "Баргъан излем ючюн автомат халда джангыртыуланы джандын неда джукълат.", + "ep_adminpads2_confirm": "{{padID}} блокнотну керти да кетерирге излеймисиз?", + "ep_adminpads2_delete.value": "Кетер", + "ep_adminpads2_last-edited": "Ахыр тюзетиу", + "ep_adminpads2_loading": "Джюклениу…", + "ep_adminpads2_manage-pads": "Блокнотланы оноуун эт", + "ep_adminpads2_no-results": "Эсебле джокъдула", + "ep_adminpads2_pad-user-count": "Блокнот хайырланыучуланы саны", + "ep_adminpads2_padname": "Блокнот ат", + "ep_adminpads2_search-box.placeholder": "Терминни изле", + "ep_adminpads2_search-button.value": "Изле", + "ep_adminpads2_search-done": "Излеу тамамланды", + "ep_adminpads2_search-error-explanation": "Сервер, блокнотланы излеген заманда халат табды:", + "ep_adminpads2_search-error-title": "Блокнот тизмеси алынамады", + "ep_adminpads2_search-heading": "Блокнотла ючюн излеу", + "ep_adminpads2_title": "Блокнот башчылыкъ", + "ep_adminpads2_unknown-error": "Билинмеген халат", + "ep_adminpads2_unknown-status": "Билинмеген турум" +} diff --git a/admin/public/ep_admin_pads/lb.json b/admin/public/ep_admin_pads/lb.json new file mode 100644 index 000000000..61aa2588d --- /dev/null +++ b/admin/public/ep_admin_pads/lb.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Robby", + "Volvox" + ] + }, + "ep_adminpads2_confirm": "Wëllt Dir de Pad {{padID}} wierklech läschen?", + "ep_adminpads2_delete.value": "Läschen", + "ep_adminpads2_loading": "Lueden...", + "ep_adminpads2_no-results": "Keng Resultater", + "ep_adminpads2_padname": "Padnumm", + "ep_adminpads2_search-box.placeholder": "Sichbegrëff", + "ep_adminpads2_search-button.value": "Sichen", + "ep_adminpads2_unknown-error": "Onbekannte Feeler" +} diff --git a/admin/public/ep_admin_pads/lt.json b/admin/public/ep_admin_pads/lt.json new file mode 100644 index 000000000..59b2a13b3 --- /dev/null +++ b/admin/public/ep_admin_pads/lt.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Nokeoo" + ] + }, + "ep_adminpads2_action": "Veiksmas", + "ep_adminpads2_autoupdate-label": "Automatinis bloknoto keitimų naujinimas", + "ep_adminpads2_autoupdate.title": "Įjungia arba išjungia automatinius dabartinės užklausos atnaujinimus.", + "ep_adminpads2_confirm": "Ar tikrai norite ištrinti bloknotą {{padID}}?", + "ep_adminpads2_delete.value": "Ištrinti", + "ep_adminpads2_last-edited": "Paskutinis pakeitimas", + "ep_adminpads2_loading": "Įkeliama…", + "ep_adminpads2_manage-pads": "Tvarkyti bloknotą", + "ep_adminpads2_no-results": "Nėra rezultatų", + "ep_adminpads2_pad-user-count": "Bloknoto naudotojų skaičius", + "ep_adminpads2_padname": "Bloknoto pavadinimas", + "ep_adminpads2_search-box.placeholder": "Paieškos terminas", + "ep_adminpads2_search-button.value": "Paieška", + "ep_adminpads2_search-done": "Paieška baigta", + "ep_adminpads2_search-error-explanation": "Serveris susidūrė su klaida ieškant bloknotų:", + "ep_adminpads2_search-error-title": "Nepavyko gauti bloknotų sąrašo", + "ep_adminpads2_search-heading": "Ieškokite bloknotų", + "ep_adminpads2_title": "Bloknotų administravimas", + "ep_adminpads2_unknown-error": "Nežinoma klaida", + "ep_adminpads2_unknown-status": "Nežinoma būsena" +} diff --git a/admin/public/ep_admin_pads/mk.json b/admin/public/ep_admin_pads/mk.json new file mode 100644 index 000000000..72affd86c --- /dev/null +++ b/admin/public/ep_admin_pads/mk.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Bjankuloski06" + ] + }, + "ep_adminpads2_action": "Дејство", + "ep_adminpads2_autoupdate-label": "Самоподнова при измени во тетратката", + "ep_adminpads2_autoupdate.title": "Овозможува или оневозможува самоподнова на тековното барање.", + "ep_adminpads2_confirm": "Дали навистина сакате да ја избришете тетратката {{padID}}?", + "ep_adminpads2_delete.value": "Избриши", + "ep_adminpads2_last-edited": "Последно уредување", + "ep_adminpads2_loading": "Вчитувам…", + "ep_adminpads2_manage-pads": "Раководење со тетратки", + "ep_adminpads2_no-results": "Нема исход", + "ep_adminpads2_pad-user-count": "Корисници на тетратката", + "ep_adminpads2_padname": "Назив на тетратката", + "ep_adminpads2_search-box.placeholder": "Пребаран поим", + "ep_adminpads2_search-button.value": "Пребарај", + "ep_adminpads2_search-done": "Пребарувањето заврши", + "ep_adminpads2_search-error-explanation": "Опслужувачот наиде на грешка при пребарувањето на тетратки:", + "ep_adminpads2_search-error-title": "Не можев да го добијам списокот на тетратки", + "ep_adminpads2_search-heading": "Пребарај по тетратките", + "ep_adminpads2_title": "Администрација на тетратки", + "ep_adminpads2_unknown-error": "Непозната грешка", + "ep_adminpads2_unknown-status": "Непозната состојба" +} diff --git a/admin/public/ep_admin_pads/my.json b/admin/public/ep_admin_pads/my.json new file mode 100644 index 000000000..6b94ba702 --- /dev/null +++ b/admin/public/ep_admin_pads/my.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Andibecker" + ] + }, + "ep_adminpads2_action": "လုပ်ဆောင်ချက်", + "ep_adminpads2_autoupdate-label": "pad အပြောင်းအလဲများတွင်အလိုအလျောက်အပ်ဒိတ်လုပ်ပါ", + "ep_adminpads2_autoupdate.title": "လက်ရှိမေးမြန်းမှုအတွက်အလိုအလျောက်အပ်ဒိတ်များကိုဖွင့်ပါသို့မဟုတ်ပိတ်ပါ။", + "ep_adminpads2_confirm": "pad {{padID}} ကိုသင်တကယ်ဖျက်ချင်လား။", + "ep_adminpads2_delete.value": "ဖျက်ပါ", + "ep_adminpads2_last-edited": "နောက်ဆုံးတည်းဖြတ်သည်", + "ep_adminpads2_loading": "ဖွင့်နေသည်…", + "ep_adminpads2_manage-pads": "pads များကိုစီမံပါ", + "ep_adminpads2_no-results": "ရလဒ်မရှိပါ", + "ep_adminpads2_pad-user-count": "Pad အသုံးပြုသူအရေအတွက်", + "ep_adminpads2_padname": "Padname", + "ep_adminpads2_search-box.placeholder": "ဝေါဟာရရှာဖွေပါ", + "ep_adminpads2_search-button.value": "ရှာဖွေပါ", + "ep_adminpads2_search-done": "ရှာဖွေမှုပြီးပါပြီ", + "ep_adminpads2_search-error-explanation": "pads များကိုရှာဖွေစဉ်ဆာဗာသည်အမှားတစ်ခုကြုံခဲ့သည်။", + "ep_adminpads2_search-error-title": "pad စာရင်းရယူရန်မအောင်မြင်ပါ", + "ep_adminpads2_search-heading": "pads များကိုရှာဖွေပါ", + "ep_adminpads2_title": "Pad စီမံခန့်ခွဲမှု", + "ep_adminpads2_unknown-error": "အမည်မသိအမှား", + "ep_adminpads2_unknown-status": "အခြေအနေမသိ" +} diff --git a/admin/public/ep_admin_pads/nb.json b/admin/public/ep_admin_pads/nb.json new file mode 100644 index 000000000..acd194397 --- /dev/null +++ b/admin/public/ep_admin_pads/nb.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "EdoAug" + ] + }, + "ep_adminpads2_action": "Handling", + "ep_adminpads2_last-edited": "Sist redigert", + "ep_adminpads2_loading": "Laster …", + "ep_adminpads2_no-results": "Ingen resultater", + "ep_adminpads2_search-button.value": "Søk", + "ep_adminpads2_search-done": "Søk fullført" +} diff --git a/admin/public/ep_admin_pads/nl.json b/admin/public/ep_admin_pads/nl.json new file mode 100644 index 000000000..f4d97b351 --- /dev/null +++ b/admin/public/ep_admin_pads/nl.json @@ -0,0 +1,29 @@ +{ + "@metadata": { + "authors": [ + "Aranka", + "McDutchie", + "Spinster" + ] + }, + "ep_adminpads2_action": "Handeling", + "ep_adminpads2_autoupdate-label": "Automatisch bijwerken bij aanpassingen aan de pad", + "ep_adminpads2_autoupdate.title": "Schakelt automatische updates voor de huidige query in of uit.", + "ep_adminpads2_confirm": "Wil je de pad {{padID}} echt verwijderen?", + "ep_adminpads2_delete.value": "Verwijderen", + "ep_adminpads2_last-edited": "Laatst bewerkt", + "ep_adminpads2_loading": "Bezig met laden...", + "ep_adminpads2_manage-pads": "Pads beheren", + "ep_adminpads2_no-results": "Geen resultaten", + "ep_adminpads2_pad-user-count": "Aantal gebruikers van de pad", + "ep_adminpads2_padname": "Naam van de pad", + "ep_adminpads2_search-box.placeholder": "Zoekterm", + "ep_adminpads2_search-button.value": "Zoeken", + "ep_adminpads2_search-done": "Zoekopdracht voltooid", + "ep_adminpads2_search-error-explanation": "De server heeft een fout aangetroffen tijdens het zoeken naar pads:", + "ep_adminpads2_search-error-title": "Kan lijst met pads niet ophalen", + "ep_adminpads2_search-heading": "Pads zoeken", + "ep_adminpads2_title": "Administratie van pad", + "ep_adminpads2_unknown-error": "Onbekende fout", + "ep_adminpads2_unknown-status": "Onbekende status" +} diff --git a/admin/public/ep_admin_pads/oc.json b/admin/public/ep_admin_pads/oc.json new file mode 100644 index 000000000..ae0169faf --- /dev/null +++ b/admin/public/ep_admin_pads/oc.json @@ -0,0 +1,21 @@ +{ + "@metadata": { + "authors": [ + "Quentí" + ] + }, + "ep_adminpads2_action": "Accion", + "ep_adminpads2_delete.value": "Suprimir", + "ep_adminpads2_last-edited": "Darrièra edicion", + "ep_adminpads2_loading": "Cargament…", + "ep_adminpads2_manage-pads": "Gerir los pads", + "ep_adminpads2_no-results": "Pas cap de resultat", + "ep_adminpads2_padname": "Nom del pad", + "ep_adminpads2_search-box.placeholder": "Tèrme de recèrca", + "ep_adminpads2_search-button.value": "Recercar", + "ep_adminpads2_search-done": "Recèrca acabada", + "ep_adminpads2_search-heading": "Cercar de pads", + "ep_adminpads2_title": "Administracion de pad", + "ep_adminpads2_unknown-error": "Error desconeguda", + "ep_adminpads2_unknown-status": "Estat desconegut" +} diff --git a/admin/public/ep_admin_pads/pms.json b/admin/public/ep_admin_pads/pms.json new file mode 100644 index 000000000..ac0542b85 --- /dev/null +++ b/admin/public/ep_admin_pads/pms.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Borichèt" + ] + }, + "ep_adminpads2_action": "Assion", + "ep_adminpads2_autoupdate-label": "Agiornament automàtich an sle modìfiche ëd plancia", + "ep_adminpads2_autoupdate.title": "Abilité o disabilité j'agiornament automàtich për l'arcesta atual.", + "ep_adminpads2_confirm": "Veul-lo për da bon dëscancelé la plancia {{padID}}?", + "ep_adminpads2_delete.value": "Dëscancelé", + "ep_adminpads2_last-edited": "Modificà l'ùltima vira", + "ep_adminpads2_loading": "Cariament…", + "ep_adminpads2_manage-pads": "Gestì le plance", + "ep_adminpads2_no-results": "Gnun arzultà", + "ep_adminpads2_pad-user-count": "Conteur ëd plancia dl'utent", + "ep_adminpads2_padname": "Nòm ëd plancia", + "ep_adminpads2_search-box.placeholder": "Tèrmin d'arserca", + "ep_adminpads2_search-button.value": "Arserca", + "ep_adminpads2_search-done": "Arserca completà", + "ep_adminpads2_search-error-explanation": "Ël servent a l'ha rancontrà n'eror an sërcand dle plance:", + "ep_adminpads2_search-error-title": "Falì a oten-e la lista ëd plance", + "ep_adminpads2_search-heading": "Arserca ëd plance", + "ep_adminpads2_title": "Aministrassion ëd plance", + "ep_adminpads2_unknown-error": "Eror nen conossù", + "ep_adminpads2_unknown-status": "Statù nen conossù" +} diff --git a/admin/public/ep_admin_pads/pt-br.json b/admin/public/ep_admin_pads/pt-br.json new file mode 100644 index 000000000..28a7874ee --- /dev/null +++ b/admin/public/ep_admin_pads/pt-br.json @@ -0,0 +1,30 @@ +{ + "@metadata": { + "authors": [ + "Duke of Wikipädia", + "Eduardo Addad de Oliveira", + "Eduardoaddad", + "YuriNikolai" + ] + }, + "ep_adminpads2_action": "Ação", + "ep_adminpads2_autoupdate-label": "Atualizar notas automaticamente", + "ep_adminpads2_autoupdate.title": "Habilita ou desabilita atualizações automáticas para a consulta atual.", + "ep_adminpads2_confirm": "Você realmente deseja excluir a nota {{padID}}?", + "ep_adminpads2_delete.value": "Excluir", + "ep_adminpads2_last-edited": "Última edição", + "ep_adminpads2_loading": "Carregando…", + "ep_adminpads2_manage-pads": "Gerenciar notas", + "ep_adminpads2_no-results": "Sem resultados", + "ep_adminpads2_pad-user-count": "Número de utilizadores na nota", + "ep_adminpads2_padname": "Nome da nota", + "ep_adminpads2_search-box.placeholder": "Termo de pesquisa", + "ep_adminpads2_search-button.value": "Pesquisar", + "ep_adminpads2_search-done": "Busca completa", + "ep_adminpads2_search-error-explanation": "O servidor encontrou um erro enquanto procurava por notas:", + "ep_adminpads2_search-error-title": "Falha ao buscar lista de notas", + "ep_adminpads2_search-heading": "Pesquisar por notas", + "ep_adminpads2_title": "Administração de notas", + "ep_adminpads2_unknown-error": "Erro desconhecido", + "ep_adminpads2_unknown-status": "Status desconhecido" +} diff --git a/admin/public/ep_admin_pads/pt.json b/admin/public/ep_admin_pads/pt.json new file mode 100644 index 000000000..b7abf2f3f --- /dev/null +++ b/admin/public/ep_admin_pads/pt.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Guilha" + ] + }, + "ep_adminpads2_action": "Ação", + "ep_adminpads2_autoupdate-label": "Atualizar automaticamente as notas", + "ep_adminpads2_autoupdate.title": "Ativa ou desativa atualizações automáticas na consulta atual.", + "ep_adminpads2_confirm": "Tencionas mesmo eliminar a nota {{padID}}?", + "ep_adminpads2_delete.value": "Eliminar", + "ep_adminpads2_last-edited": "Última edição", + "ep_adminpads2_loading": "A carregar...", + "ep_adminpads2_manage-pads": "Gerir notas", + "ep_adminpads2_no-results": "Sem resultados", + "ep_adminpads2_pad-user-count": "Número de utilizadores na nota", + "ep_adminpads2_padname": "Nome da nota", + "ep_adminpads2_search-box.placeholder": "Procurar termo", + "ep_adminpads2_search-button.value": "Procurar", + "ep_adminpads2_search-done": "Procura completa", + "ep_adminpads2_search-error-explanation": "O servidor encontrou um erro enquanto procurava por notas:", + "ep_adminpads2_search-error-title": "Falha ao obter lista de notas", + "ep_adminpads2_search-heading": "Procurar por notas", + "ep_adminpads2_title": "Administração da nota", + "ep_adminpads2_unknown-error": "Erro desconhecido", + "ep_adminpads2_unknown-status": "Estado desconhecido" +} diff --git a/admin/public/ep_admin_pads/qqq.json b/admin/public/ep_admin_pads/qqq.json new file mode 100644 index 000000000..de36e2ae6 --- /dev/null +++ b/admin/public/ep_admin_pads/qqq.json @@ -0,0 +1,10 @@ +{ + "@metadata": { + "authors": [ + "BryanDavis" + ] + }, + "ep_adminpads2_action": "{{Identical|Action}}", + "ep_adminpads2_delete.value": "{{Identical|Delete}}", + "ep_adminpads2_search-button.value": "{{Identical|Search}}" +} diff --git a/admin/public/ep_admin_pads/ru.json b/admin/public/ep_admin_pads/ru.json new file mode 100644 index 000000000..6d0d163d0 --- /dev/null +++ b/admin/public/ep_admin_pads/ru.json @@ -0,0 +1,31 @@ +{ + "@metadata": { + "authors": [ + "DDPAT", + "Ice bulldog", + "Megakott", + "Okras", + "Pacha Tchernof" + ] + }, + "ep_adminpads2_action": "Действие", + "ep_adminpads2_autoupdate-label": "Автообновление при изменении документа", + "ep_adminpads2_autoupdate.title": "Включает или отключает автоматические обновления для текущего запроса.", + "ep_adminpads2_confirm": "Вы действительно хотите удалить документ {{padID}}?", + "ep_adminpads2_delete.value": "Удалить", + "ep_adminpads2_last-edited": "Последнее изменение", + "ep_adminpads2_loading": "Загружается…", + "ep_adminpads2_manage-pads": "Управление документами", + "ep_adminpads2_no-results": "Нет результатов", + "ep_adminpads2_pad-user-count": "Количество пользователей документа", + "ep_adminpads2_padname": "Название документа", + "ep_adminpads2_search-box.placeholder": "Искать термин", + "ep_adminpads2_search-button.value": "Найти", + "ep_adminpads2_search-done": "Поиск завершён", + "ep_adminpads2_search-error-explanation": "Сервер обнаружил ошибку при поиске документов:", + "ep_adminpads2_search-error-title": "Не удалось получить список документов", + "ep_adminpads2_search-heading": "Поиск документов", + "ep_adminpads2_title": "Администрирование документов", + "ep_adminpads2_unknown-error": "Неизвестная ошибка", + "ep_adminpads2_unknown-status": "Неизвестный статус" +} diff --git a/admin/public/ep_admin_pads/sc.json b/admin/public/ep_admin_pads/sc.json new file mode 100644 index 000000000..a37bba5a2 --- /dev/null +++ b/admin/public/ep_admin_pads/sc.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Adr mm" + ] + }, + "ep_adminpads2_action": "Atzione", + "ep_adminpads2_autoupdate-label": "Atualizatzione automàtica de is modìficas de su pad", + "ep_adminpads2_autoupdate.title": "Ativat o disativat is atualizatziones automàticas pro sa chirca atuale.", + "ep_adminpads2_confirm": "Seguru chi boles cantzellare su pad {{padID}}?", + "ep_adminpads2_delete.value": "Cantzella", + "ep_adminpads2_last-edited": "Ùrtima modìfica", + "ep_adminpads2_loading": "Carrighende...", + "ep_adminpads2_manage-pads": "Gesti is pads", + "ep_adminpads2_no-results": "Nissunu resurtadu", + "ep_adminpads2_pad-user-count": "Nùmeru de utentes de pads", + "ep_adminpads2_padname": "Nòmine de su pad", + "ep_adminpads2_search-box.placeholder": "Tèrmine de chirca", + "ep_adminpads2_search-button.value": "Chirca", + "ep_adminpads2_search-done": "Chirca cumpleta", + "ep_adminpads2_search-error-explanation": "Su serbidore at agatadu un'errore chirchende pads:", + "ep_adminpads2_search-error-title": "Impossìbile otènnere sa lista de pads", + "ep_adminpads2_search-heading": "Chirca pads", + "ep_adminpads2_title": "Amministratzione de su pad", + "ep_adminpads2_unknown-error": "Errore disconnotu", + "ep_adminpads2_unknown-status": "Istadu disconnotu" +} diff --git a/admin/public/ep_admin_pads/sdc.json b/admin/public/ep_admin_pads/sdc.json new file mode 100644 index 000000000..c4672fd7f --- /dev/null +++ b/admin/public/ep_admin_pads/sdc.json @@ -0,0 +1,14 @@ +{ + "@metadata": { + "authors": [ + "F Samaritani" + ] + }, + "ep_adminpads2_action": "Azioni", + "ep_adminpads2_delete.value": "Canzella", + "ep_adminpads2_loading": "carrigghendi...", + "ep_adminpads2_no-results": "Nisciun risulthaddu", + "ep_adminpads2_search-button.value": "Zercha", + "ep_adminpads2_search-heading": "Zirchà dati", + "ep_adminpads2_unknown-error": "Errori ischunisciddu" +} diff --git a/admin/public/ep_admin_pads/sk.json b/admin/public/ep_admin_pads/sk.json new file mode 100644 index 000000000..ab0392d4e --- /dev/null +++ b/admin/public/ep_admin_pads/sk.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Yardom78" + ] + }, + "ep_adminpads2_action": "Akcia", + "ep_adminpads2_autoupdate-label": "Automatická aktualizácia zmien na poznámkovom bloku", + "ep_adminpads2_autoupdate.title": "Zapne alebo vypne automatickú aktualizáciu.", + "ep_adminpads2_confirm": "Skutočne chcete vymazať poznámkový blok {{padID}}?", + "ep_adminpads2_delete.value": "Vymazať", + "ep_adminpads2_last-edited": "Posledná úprava", + "ep_adminpads2_loading": "Načítavanie...", + "ep_adminpads2_manage-pads": "Spravovať poznámkové bloky", + "ep_adminpads2_no-results": "Žiadne výsledky", + "ep_adminpads2_pad-user-count": "Počet používateľov poznámkového bloku", + "ep_adminpads2_padname": "Názov poznámkového bloku", + "ep_adminpads2_search-box.placeholder": "Hľadať výraz", + "ep_adminpads2_search-button.value": "Hľadať", + "ep_adminpads2_search-done": "Hľadanie dokončené", + "ep_adminpads2_search-error-explanation": "Pri hľadaní poznámkového bloku došlo k chybe:", + "ep_adminpads2_search-error-title": "Nepodarilo sa získať zoznam poznámkových blokov", + "ep_adminpads2_search-heading": "Hľadať poznámkový blok", + "ep_adminpads2_title": "Správa poznámkového bloku", + "ep_adminpads2_unknown-error": "Neznáma chyba", + "ep_adminpads2_unknown-status": "Neznámy stav" +} diff --git a/admin/public/ep_admin_pads/skr-arab.json b/admin/public/ep_admin_pads/skr-arab.json new file mode 100644 index 000000000..08162f849 --- /dev/null +++ b/admin/public/ep_admin_pads/skr-arab.json @@ -0,0 +1,20 @@ +{ + "@metadata": { + "authors": [ + "Saraiki" + ] + }, + "ep_adminpads2_action": "عمل", + "ep_adminpads2_delete.value": "مٹاؤ", + "ep_adminpads2_last-edited": "چھیکڑی تبدیلی", + "ep_adminpads2_loading": "لوڈ تھین٘دا پئے۔۔۔", + "ep_adminpads2_manage-pads": "پیڈ منیج کرو", + "ep_adminpads2_no-results": "کوئی نتیجہ کائنی", + "ep_adminpads2_padname": "پیڈ ناں", + "ep_adminpads2_search-box.placeholder": "ٹرم ڳولو", + "ep_adminpads2_search-button.value": "ڳولو", + "ep_adminpads2_search-done": "ڳولݨ پورا تھیا", + "ep_adminpads2_search-heading": "پیڈاں دی ڳول", + "ep_adminpads2_unknown-error": "نامعلوم غلطی", + "ep_adminpads2_unknown-status": "نامعلوم حالت" +} diff --git a/admin/public/ep_admin_pads/sl.json b/admin/public/ep_admin_pads/sl.json new file mode 100644 index 000000000..3bebe1972 --- /dev/null +++ b/admin/public/ep_admin_pads/sl.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "Eleassar", + "HairyFotr" + ] + }, + "ep_adminpads2_action": "Dejanje", + "ep_adminpads2_autoupdate-label": "Samodejno posodabljanje ob spremembah blokcev", + "ep_adminpads2_autoupdate.title": "Omogoči ali onemogoči samodejne posodobitve za trenutno poizvedbo.", + "ep_adminpads2_confirm": "Ali res želite izbrisati blokec {{padID}}?", + "ep_adminpads2_delete.value": "Izbriši", + "ep_adminpads2_last-edited": "Zadnje urejanje", + "ep_adminpads2_loading": "Nalaganje ...", + "ep_adminpads2_manage-pads": "Upravljanje blokcev", + "ep_adminpads2_no-results": "Ni zadetkov", + "ep_adminpads2_pad-user-count": "Število urejevalcev blokca", + "ep_adminpads2_padname": "Ime blokca", + "ep_adminpads2_search-box.placeholder": "Iskalni izraz", + "ep_adminpads2_search-button.value": "Išči", + "ep_adminpads2_search-done": "Iskanje končano", + "ep_adminpads2_search-error-explanation": "Strežnik je med iskanjem blokcev naletel na napako:", + "ep_adminpads2_search-error-title": "Ni bilo mogoče pridobiti seznama blokcev", + "ep_adminpads2_search-heading": "Iskanje blokcev", + "ep_adminpads2_title": "Upravljanje blokcev", + "ep_adminpads2_unknown-error": "Neznana napaka", + "ep_adminpads2_unknown-status": "Neznano stanje" +} diff --git a/admin/public/ep_admin_pads/smn.json b/admin/public/ep_admin_pads/smn.json new file mode 100644 index 000000000..9d57cc73c --- /dev/null +++ b/admin/public/ep_admin_pads/smn.json @@ -0,0 +1,13 @@ +{ + "@metadata": { + "authors": [ + "Yupik" + ] + }, + "ep_adminpads2_delete.value": "Siho", + "ep_adminpads2_last-edited": "Majemustáá nubástittum", + "ep_adminpads2_search-box.placeholder": "Uuccâmsääni", + "ep_adminpads2_search-button.value": "Uusâ", + "ep_adminpads2_unknown-error": "Tubdâmettum feilâ", + "ep_adminpads2_unknown-status": "Tubdâmettum tile" +} diff --git a/admin/public/ep_admin_pads/sms.json b/admin/public/ep_admin_pads/sms.json new file mode 100644 index 000000000..8d3cf5797 --- /dev/null +++ b/admin/public/ep_admin_pads/sms.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Yupik" + ] + }, + "ep_adminpads2_delete.value": "Jaukkâd", + "ep_adminpads2_last-edited": "Mââimõssân muttum", + "ep_adminpads2_no-results": "Ij käunnʼjam ni mii", + "ep_adminpads2_padname": "Mošttʼtõspõʹmmai nõmm", + "ep_adminpads2_search-box.placeholder": "Ooccâmsääʹnn", + "ep_adminpads2_search-button.value": "Ooʒʒ", + "ep_adminpads2_search-heading": "Ooʒʒ mošttʼtõspõʹmmjid", + "ep_adminpads2_unknown-error": "Toobdteʹmes vââʹǩǩ", + "ep_adminpads2_unknown-status": "Toobdteʹmes status" +} diff --git a/admin/public/ep_admin_pads/sq.json b/admin/public/ep_admin_pads/sq.json new file mode 100644 index 000000000..cc4740763 --- /dev/null +++ b/admin/public/ep_admin_pads/sq.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Besnik b" + ] + }, + "ep_adminpads2_action": "Veprim", + "ep_adminpads2_autoupdate-label": "Vetëpërditësohu, kur nga ndryshime blloku", + "ep_adminpads2_autoupdate.title": "Aktivizon ose çaktivizon përditësim të automatizuara për kërkesën e tanishme.", + "ep_adminpads2_confirm": "Doni vërtet të fshihet blloku {{padID}}?", + "ep_adminpads2_delete.value": "Fshije", + "ep_adminpads2_last-edited": "Përpunuar së fundi më", + "ep_adminpads2_loading": "Po ngarkohet…", + "ep_adminpads2_manage-pads": "Administroni blloqe", + "ep_adminpads2_no-results": "S’ka përfundime", + "ep_adminpads2_pad-user-count": "Numër përdoruesish blloku", + "ep_adminpads2_padname": "Emër blloku", + "ep_adminpads2_search-box.placeholder": "Term kërkimi", + "ep_adminpads2_search-button.value": "Kërko", + "ep_adminpads2_search-done": "Kërkim i plotë", + "ep_adminpads2_search-error-explanation": "Shërbyesi hasi një gabim teksa kërkohej për blloqe:", + "ep_adminpads2_search-error-title": "S’u arrit të merrej listë blloqesh", + "ep_adminpads2_search-heading": "Kërkoni për blloqe", + "ep_adminpads2_title": "Administrim blloku", + "ep_adminpads2_unknown-error": "Gabim i panjohur", + "ep_adminpads2_unknown-status": "Gjendje e panjohur" +} diff --git a/admin/public/ep_admin_pads/sv.json b/admin/public/ep_admin_pads/sv.json new file mode 100644 index 000000000..e77aaf2c4 --- /dev/null +++ b/admin/public/ep_admin_pads/sv.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "Bengtsson96", + "WikiPhoenix" + ] + }, + "ep_adminpads2_action": "Åtgärd", + "ep_adminpads2_autoupdate-label": "Uppdatera automatiskt när blocket ändras", + "ep_adminpads2_autoupdate.title": "Aktivera eller inaktivera automatiska uppdatering för nuvarande förfrågan.", + "ep_adminpads2_confirm": "Vill du verkligen radera blocket {{padID}}?", + "ep_adminpads2_delete.value": "Radera", + "ep_adminpads2_last-edited": "Senast redigerad", + "ep_adminpads2_loading": "Läser in …", + "ep_adminpads2_manage-pads": "Hantera block", + "ep_adminpads2_no-results": "Inga resultat", + "ep_adminpads2_pad-user-count": "Antal blockanvändare", + "ep_adminpads2_padname": "Blocknamn", + "ep_adminpads2_search-box.placeholder": "Sökord", + "ep_adminpads2_search-button.value": "Sök", + "ep_adminpads2_search-done": "Sökning slutförd", + "ep_adminpads2_search-error-explanation": "Servern stötte på ett fel vid sökning efter block:", + "ep_adminpads2_search-error-title": "Misslyckades att hämta blocklista", + "ep_adminpads2_search-heading": "Sök efter block", + "ep_adminpads2_title": "Blockadministration", + "ep_adminpads2_unknown-error": "Okänt fel", + "ep_adminpads2_unknown-status": "Okänd status" +} diff --git a/admin/public/ep_admin_pads/sw.json b/admin/public/ep_admin_pads/sw.json new file mode 100644 index 000000000..f1beeecbb --- /dev/null +++ b/admin/public/ep_admin_pads/sw.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Andibecker" + ] + }, + "ep_adminpads2_action": "Hatua", + "ep_adminpads2_autoupdate-label": "Sasisha kiotomatiki kwenye mabadiliko ya pedi", + "ep_adminpads2_autoupdate.title": "Huwasha au kulemaza sasisho otomatiki kwa hoja ya sasa.", + "ep_adminpads2_confirm": "Je! Kweli unataka kufuta pedi {{padID}}?", + "ep_adminpads2_delete.value": "Futa", + "ep_adminpads2_last-edited": "Ilihaririwa mwisho", + "ep_adminpads2_loading": "Inapakia...", + "ep_adminpads2_manage-pads": "Dhibiti pedi", + "ep_adminpads2_no-results": "Hakuna matokeo", + "ep_adminpads2_pad-user-count": "Hesabu ya mtumiaji wa pedi", + "ep_adminpads2_padname": "Jina la utani", + "ep_adminpads2_search-box.placeholder": "Neno la utaftaji", + "ep_adminpads2_search-button.value": "Tafuta", + "ep_adminpads2_search-done": "Utafutaji umekamilika", + "ep_adminpads2_search-error-explanation": "Seva ilipata hitilafu wakati wa kutafuta pedi:", + "ep_adminpads2_search-error-title": "Imeshindwa kupata orodha ya pedi", + "ep_adminpads2_search-heading": "Tafuta pedi", + "ep_adminpads2_title": "Usimamizi wa pedi", + "ep_adminpads2_unknown-error": "Hitilafu isiyojulikana", + "ep_adminpads2_unknown-status": "Hali isiyojulikana" +} diff --git a/admin/public/ep_admin_pads/th.json b/admin/public/ep_admin_pads/th.json new file mode 100644 index 000000000..693e3f797 --- /dev/null +++ b/admin/public/ep_admin_pads/th.json @@ -0,0 +1,27 @@ +{ + "@metadata": { + "authors": [ + "Andibecker" + ] + }, + "ep_adminpads2_action": "การกระทำ", + "ep_adminpads2_autoupdate-label": "อัปเดตอัตโนมัติเมื่อเปลี่ยนแผ่น", + "ep_adminpads2_autoupdate.title": "เปิดหรือปิดการอัปเดตอัตโนมัติสำหรับคิวรีปัจจุบัน", + "ep_adminpads2_confirm": "คุณต้องการลบแพด {{padID}} จริงหรือไม่", + "ep_adminpads2_delete.value": "ลบ", + "ep_adminpads2_last-edited": "แก้ไขล่าสุด", + "ep_adminpads2_loading": "กำลังโหลด…", + "ep_adminpads2_manage-pads": "จัดการแผ่นรอง", + "ep_adminpads2_no-results": "ไม่มีผลลัพธ์", + "ep_adminpads2_pad-user-count": "จำนวนผู้ใช้แพด", + "ep_adminpads2_padname": "นามแฝง", + "ep_adminpads2_search-box.placeholder": "คำที่ต้องการค้นหา", + "ep_adminpads2_search-button.value": "ค้นหา", + "ep_adminpads2_search-done": "ค้นหาเสร็จสมบูรณ์", + "ep_adminpads2_search-error-explanation": "เซิร์ฟเวอร์พบข้อผิดพลาดขณะค้นหาแผ่นอิเล็กโทรด:", + "ep_adminpads2_search-error-title": "ไม่สามารถรับรายการแผ่นรอง", + "ep_adminpads2_search-heading": "ค้นหาแผ่นรอง", + "ep_adminpads2_title": "การบริหารแผ่น", + "ep_adminpads2_unknown-error": "ข้อผิดพลาดที่ไม่รู้จัก", + "ep_adminpads2_unknown-status": "ไม่ทราบสถานะ" +} diff --git a/admin/public/ep_admin_pads/tl.json b/admin/public/ep_admin_pads/tl.json new file mode 100644 index 000000000..238e01236 --- /dev/null +++ b/admin/public/ep_admin_pads/tl.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Mrkczr" + ] + }, + "ep_adminpads2_action": "Kilos", + "ep_adminpads2_delete.value": "Burahin", + "ep_adminpads2_last-edited": "Huling binago", + "ep_adminpads2_loading": "Naglo-load...", + "ep_adminpads2_no-results": "Walang mga resulta", + "ep_adminpads2_search-box.placeholder": "Mga katagang hahanapin:", + "ep_adminpads2_search-button.value": "Hanapin", + "ep_adminpads2_search-done": "Natapos na ang paghahanap", + "ep_adminpads2_unknown-error": "Hindi nalalamang kamalian", + "ep_adminpads2_unknown-status": "Hindi alam na katayuan" +} diff --git a/admin/public/ep_admin_pads/tr.json b/admin/public/ep_admin_pads/tr.json new file mode 100644 index 000000000..7e2e9d402 --- /dev/null +++ b/admin/public/ep_admin_pads/tr.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "Hedda", + "MuratTheTurkish" + ] + }, + "ep_adminpads2_action": "Eylem", + "ep_adminpads2_autoupdate-label": "Bloknot değişikliklerinde otomatik güncelleme", + "ep_adminpads2_autoupdate.title": "Mevcut sorgu için otomatik güncellemeleri etkinleştirir veya devre dışı bırakır.", + "ep_adminpads2_confirm": "{{padID}} bloknotunu gerçekten silmek istiyor musunuz?", + "ep_adminpads2_delete.value": "Sil", + "ep_adminpads2_last-edited": "Son düzenleme", + "ep_adminpads2_loading": "Yükleniyor...", + "ep_adminpads2_manage-pads": "Bloknotları yönet", + "ep_adminpads2_no-results": "Sonuç yok", + "ep_adminpads2_pad-user-count": "Bloknot kullanıcı sayısı", + "ep_adminpads2_padname": "Bloknot adı", + "ep_adminpads2_search-box.placeholder": "Terimi ara", + "ep_adminpads2_search-button.value": "Ara", + "ep_adminpads2_search-done": "Arama tamamlandı", + "ep_adminpads2_search-error-explanation": "Sunucu, bloknotları ararken bir hatayla karşılaştı:", + "ep_adminpads2_search-error-title": "Bloknot listesi alınamadı", + "ep_adminpads2_search-heading": "Bloknotları ara", + "ep_adminpads2_title": "Bloknot yönetimi", + "ep_adminpads2_unknown-error": "Bilinmeyen hata", + "ep_adminpads2_unknown-status": "Bilinmeyen durum" +} diff --git a/admin/public/ep_admin_pads/uk.json b/admin/public/ep_admin_pads/uk.json new file mode 100644 index 000000000..c5c95f722 --- /dev/null +++ b/admin/public/ep_admin_pads/uk.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "DDPAT", + "Ice bulldog" + ] + }, + "ep_adminpads2_action": "Дія", + "ep_adminpads2_autoupdate-label": "Автоматичне оновлення при зміні майданчика", + "ep_adminpads2_autoupdate.title": "Вмикає або вимикає автоматичне оновлення поточного запиту.", + "ep_adminpads2_confirm": "Ви дійсно хочете видалити панель {{padID}}?", + "ep_adminpads2_delete.value": "Видалити", + "ep_adminpads2_last-edited": "Останнє редагування", + "ep_adminpads2_loading": "Завантаження…", + "ep_adminpads2_manage-pads": "Управління майданчиками", + "ep_adminpads2_no-results": "Немає результатів", + "ep_adminpads2_pad-user-count": "Кількість майданчиків користувача", + "ep_adminpads2_padname": "Назва майданчика", + "ep_adminpads2_search-box.placeholder": "Пошуковий термін", + "ep_adminpads2_search-button.value": "Пошук", + "ep_adminpads2_search-done": "Пошук завершено", + "ep_adminpads2_search-error-explanation": "Під час пошуку педів сервер виявив помилку:", + "ep_adminpads2_search-error-title": "Не вдалося отримати список панелей", + "ep_adminpads2_search-heading": "Пошук майданчиків", + "ep_adminpads2_title": "Введення майданчиків", + "ep_adminpads2_unknown-error": "Невідома помилка", + "ep_adminpads2_unknown-status": "Невідомий статус" +} diff --git a/admin/public/ep_admin_pads/zh-hans.json b/admin/public/ep_admin_pads/zh-hans.json new file mode 100644 index 000000000..cdf0d945f --- /dev/null +++ b/admin/public/ep_admin_pads/zh-hans.json @@ -0,0 +1,29 @@ +{ + "@metadata": { + "authors": [ + "GuoPC", + "Lakejason0", + "沈澄心" + ] + }, + "ep_adminpads2_action": "操作", + "ep_adminpads2_autoupdate-label": "在记事本更改时自动更新", + "ep_adminpads2_autoupdate.title": "启用或禁用目前查询的自动更新", + "ep_adminpads2_confirm": "您确定要删除记事本 {{padID}}?", + "ep_adminpads2_delete.value": "删除", + "ep_adminpads2_last-edited": "上次编辑于", + "ep_adminpads2_loading": "正在加载…", + "ep_adminpads2_manage-pads": "管理记事本", + "ep_adminpads2_no-results": "没有结果", + "ep_adminpads2_pad-user-count": "记事本用户数", + "ep_adminpads2_padname": "记事本名称", + "ep_adminpads2_search-box.placeholder": "搜索关键词", + "ep_adminpads2_search-button.value": "搜索", + "ep_adminpads2_search-done": "搜索完成", + "ep_adminpads2_search-error-explanation": "搜索记事本时服务器发生错误:", + "ep_adminpads2_search-error-title": "获取记事本列表失败", + "ep_adminpads2_search-heading": "搜索记事本", + "ep_adminpads2_title": "记事本管理", + "ep_adminpads2_unknown-error": "未知错误", + "ep_adminpads2_unknown-status": "未知状态" +} diff --git a/admin/public/ep_admin_pads/zh-hant.json b/admin/public/ep_admin_pads/zh-hant.json new file mode 100644 index 000000000..daeed55f5 --- /dev/null +++ b/admin/public/ep_admin_pads/zh-hant.json @@ -0,0 +1,28 @@ +{ + "@metadata": { + "authors": [ + "HellojoeAoPS", + "Kly" + ] + }, + "ep_adminpads2_action": "操作", + "ep_adminpads2_autoupdate-label": "在記事本更改時自動更新", + "ep_adminpads2_autoupdate.title": "啟用或停用目前查詢的自動更新。", + "ep_adminpads2_confirm": "您確定要刪除記事本 {{padID}}?", + "ep_adminpads2_delete.value": "刪除", + "ep_adminpads2_last-edited": "上一次編輯", + "ep_adminpads2_loading": "載入中…", + "ep_adminpads2_manage-pads": "管理記事本", + "ep_adminpads2_no-results": "沒有結果", + "ep_adminpads2_pad-user-count": "記事本使用者數", + "ep_adminpads2_padname": "記事本名稱", + "ep_adminpads2_search-box.placeholder": "搜尋關鍵字", + "ep_adminpads2_search-button.value": "搜尋", + "ep_adminpads2_search-done": "搜尋完成", + "ep_adminpads2_search-error-explanation": "當搜尋記事本時伺服器發生錯誤:", + "ep_adminpads2_search-error-title": "取得記事本清單失敗", + "ep_adminpads2_search-heading": "搜尋記事本", + "ep_adminpads2_title": "記事本管理", + "ep_adminpads2_unknown-error": "不明錯誤", + "ep_adminpads2_unknown-status": "不明狀態" +} diff --git a/admin/public/fond.jpg b/admin/public/fond.jpg new file mode 100644 index 0000000000000000000000000000000000000000..81357c7bb51863f73a0c455c49891618837fc1eb GIT binary patch literal 186909 zcmdqJcR&;8|2Y1HDAWSlszn7vKGlL%1QY=y5NK9S$1q1~QN(dvYs8x%IXb}-1 zgsSWj5D^Ika3CU($P6o>GC~MLNC3m?_qoGe+rEGQ{+`<7?sCs_&-1$19?xIRf4uJHTKtU?=`%Y%jvgLA1moHxW-BM%_3>Nm8H-EwW`3siHO3N<&|J?q1 z2)_Ml-WDke7V|BT_!fix7W3C*pa3vH0t;vRp<(A?B<4#>AwR-p%(eHwVkF=K;E%09 z1`B(BgZ%~o%$S451IJCX^|6#Q>D$V`%nw#mYxD zLh=5*%K(I>>!z$5KVy(zjcxIGaPHT*wg#Um;O(|bm)&FKwibY+`2=x6mLhpI#Xx(c zt(YPToaE&9VJqD#SnP8RPx_GeG&7_OcSTHpwu5*V~TfFk{+^f z^)pUHo_pIg8Qnc3t~>m@T-#=_uBf-8VWr!nO_)M{{;Ql`$w6`m%_;D??2>0h@jg=pW%!(g zN*Y(FK?p3Fez8O~gTt2C&UAAuynJXRXck|8?I{4;8WrlJ1Aj_r?Zph_zj*Y0&0zo5 zUw$@AF$Vps; zi(I6OUjT9Lzc2uM@KkoNfR*sOmeGL2%D5hE2HlSsYP4{3S5K}`-FP>$w&nI;Px#mu z1`OZEIPvN`7e1XI*H-T{Ikk4F_3P#0ah|mK;*Vi~m0b4g*>pm2Wyb;|taFw>X*kXW zEEsm^Er}Q;gEzyAzQGdnf@b#gJ_T~aA-%H^8O=ayJ)WS154jYmV)OwD51-@{`nD3i zY=-i>)=KnL+%8c|T;_GFRy5fHl5hbbp{l;#6yy_qUCRux%s^cs&^c@)F4m>;bxi zMes(W#i}Ws3$EZwsagGiiSIlqcCK(DAuwu**2g&9NV2+?&#z|RjDHRmM(|ootgi#v z)&Z~1Moxh;wyQYk7?3DudyBL0QvlzirM2^UbRwwTa(%>`_^L`z`2!H#bF=o81Pf|N z5p{$B;4`c~HbU7-9-k->87XFpi)Zn!d<0Lw&EG#9OBUL9_m=4x_?Cq1JreBYSjafl z6)+u-P|H_0Zjrs|N447Q$_%a*FL$wKGIyBeNU59@2F)Hk=S{(!R!QxM=iE%znO{UR z2?AEkU^BBj^L~7Rn~ux7T8X?uUTuRp6Bi)jT$M?PanK_ed6q<_a0&u3X)m;1oyXhe z#a9ne-cKBJwjnH4U0lzU5j6m5OM{}G``uv0R-5thg5fKP;I}tT`cX$pyn)0FudT$o z8OX-umWJ9o3{Wr*&Sz-zWyHFhJ`5&n@k0ukIPBn&PB3=Cw3US93xQtXr2X+gps46y zxI#RYYy^O;MUmYUCo0e*A+{R(+)-ouYivoQIQ)|qzsJtZJo7!9(6$C zx2^{jtkWkyVh@Ob&_e`-{hWZfAol72E+Tt;zMu~T#0RzFMiG=<{=Ityzlxd0YI}tt z3q^j9=NI*fxcHp!T1KWzHdpsR{s}*MMyt#?M|05;y5tHuFRy*|1DMMApiaZ+!|{n= zd*hyxClDInk3@^2oFa%(ohPxra>`N|n%tpsO2b$hmJ+HcWFE1h=e6GpJXUgtl z;y48cO+k6rB`cCS7pkr+pHV1hutY8&uH_lQgrY&%1c4 ze=@i*yKK~M)@4Z*1I#mlqgdWuF_?WwsmeiSlUhf|t(0bL)E03`=(_g;Xg_=sjg9!FrL@#Zm48`&-hDq|tVL>@%mo&Po5y;s1pn{#G zU-SX+hn;OWJ}YqrS(diT!$84FzE}9#`9;W_#2^KgE3QzkNPg9tMD`wbS8o$iYzjpa zW%DNJ>HKk{2z@t=i1jOs{tI2^nV3TzMpQUfrfWce4B4}!fZpC>1SRGlJhmQW@t89Q zv$^Z*qiMz`=B4q+UPV)W@Two1+H`lmk9Y_lRDZTGEcX2eg%8&rW+dqmRgWeCSyqj3 zOoO%-$k7q`Sp?d@7hYz`*<=2qccNvj1 z)CWgS)pF?1z4)i9Y6wH|j+A0O5B`b_6Z$YDNbuEd{Vg_WV z6>hvN<@$QSaV<8#^cIJ67xRc684*ckxB$%AQ|Zf~zI~e1_RT`(%hr;;TW^d{_=${q zO_iX0iH@hdQ%IXsi`;fc@d8%{P3iW%JX6(A4o(}U?@(6>LLP*INLDVZQ)lc}Gnd^l;2K%ZpA{ko0t43K;6zy<66~qaD?1C;j25;VkD9FO4$37ZBWQ+lT&eZ^Ld6a z1{wA6#hjvat{x-e0oml*o2NiJW@S~+onElQA)CpJn3~uN!V(th>$krdH-VN0+9boJ z4-APpbX=>kz_T0E=N0p(KQLH0OaH~;veb*XA_Unw7a2X?uU+m;$ z3MMwmC~43tTD@DK#%h_OGR`#I7cl;t#;WYjYuw47SBx?>9DRpw)d=4x?TG31)VjKS zwR<$b#xLm-#W;cPsJ}pAj2Y7Wk>>tZGS&a02YkI2mXA{OY$sO+2U3*w2TYIa>$VR- z=3(@9+7J7;=WvC*5Ff#9Ft4($gmCr+R7=L7U~(%0vWtG$BK8!!5eqgR3G4MUxtIuh zVWrbniweVtE5>N`No@8pOQq5c5_Vkjub<_&3YNjczn&NHS=9kX{B2 zyEyW5-#E2iOfH|)b+=ox3XxN~sqzVyv}dOS#*Kh{mMa9I$~a5s@}fOKF&f_($jxTW zkljjZ=w|ELuZSCkenxQdo$BMUlZ5!GL^AVL`RN*8zsvfD8r3HYr&lyT)wYu7b=*zh zYl&V3q_d@*UJrDxU1=X!6gLS@x~rxQ`DG^X-_BI3eP7Jy5t-`4)p@ z)XxSo)Z^QlqOvY7#;hX;`zIY*U<;*Ibrxm`-i%h+1Q7()_i>iY_xk>mp#m>2`?fLP zG0}Ni#gkF}&>z+-ABBoZOuke>omtx{zHZ#a_v0z%dyROborW(rm@dw{j99+e1*`5+ zhZPIO9rZ#v6UFl>{PE)siT=g@>v@%jBcQUu*x-@Au)TVs3FH&`UgupTxWjyMa1e#) z8l)6LYI)M|L2_x^Tl|ng7HW0eh6;al4^;TA!2odROb zecrKk`Rt6v4@d_Yex#M_b=TbKT>}=h3^{5G9s{Wz4kb+`zi|#>(#qN4k&z3n5wb+u za;v8NMk$Bmf`d&@zBf|KNmi ze%P#~wRE>GtutozOEephcqV-`U9KSs-B;;#=0434|_jA`^QTFrhL;1C*H zuyM6Aq66APo>Iz8e6+s$1eHtJ#&F9N&4VWdV%TCt=qc9!-(xL2K@JhFEwJP>JuHUK&~?U6)rCOoNyG4$Aftunm?7swjWI0tBHhSn#t}$y zzJ(Kz;y4CsY`6Wh6ec&IXljz;TM)NYpKf@n7Z>8{yGcfE&vsEyM=hTICoOB`anqq3 zJ%wwT4}<9EU+J(fJknGCHh=eUOrTu|V_@=DT3Tllh#h6LiC$i?7UR8?7QM9|u+TEL zOj(b=egx}W?@@lFTDBFc#-}ZnpJCn;-wigAyp+m?gs0G|fQDwDpaDo+ z?15GVeT(OjxtF2hjm^Ymx7Ji$q->ptbQgn_5y1;tGi3|agW`>YxYdc!o`~i@W2Uor z+z#Qm?K2=Vg-^HIP-TDW#?AV%MyI<6T(G|)c65O0?CFrYM~xxuUBwHBgd0w13H6t) zdTNj8$a7G#3CW(G!ZI_*NLO+@_|#L1FNNxc;T*iJ%m4)nHt5z-P0ogb&1SUo1XlHC zXA_fdgnj5%u>-%SK7L>z7M(O=Pdseg!--88>w$(-;3Ilan=&vJK*On&ZUh!8R)i;5 zxhX`+S>BZPTPboxF%Yuv7|6a0^30te*)2gl5d^NB#dxv5|Leo- zxA-To2Gu#9Lovr%iDn!h%WC4-FBy}a3qC{L}NTtbDUPh!gjuR8SGDSczOOy(< z?iYN|B~4uE!i9L8Wee-IF2lv4HrEdBAiK_rZdu~|T*NYqJ2@SpKOLu~kSL*(#vL8@ zSk&O7+NPA^pMQwo@7RE?>gx6{alBfDd&V-FQ$!Lj;F_`dK{J890E#I_>p0NA6f~{& z#tYYcy?xG+ggw~kWW!0(HQ<{-1==CFs3(>JxY;E$GsgqH!Tfn6IH5N$p}Ra;&3JcQ zviV2gfo4Ja<9vkDM5$cg?rV0BDHvB?VGu_V>epifgI;|*pM#_E`u>I1uX}Wi5Qu`K zIoi8L5Iz&ud6_)utz?X}d1H@=sCZ^kvy750ttvymEm1zxWFORt+b3>4H?$=LZcEAJ zvz>{h^{XFwPt#Y^9>vB}-tsNFSrYC3l~U*W_>{op0AZC-Y1QvcoN=s?WVk7$!aBoU z^|VmuW*=S@ky($Eiep#5Rt!}Qcvk(SPcq|XV-e4EdSDFr(A8(&drOo;yhpc)C)zWs zpUz2sNGS3T{8$N>Ldfo5eq2J2(C#F_)N}IkOaEMLgjvwVTck_VPGi+mueru@b>6Fj z=z3+A+snyi*dHWN`TOq2(KbMD>q=>MK~SD1P{`+WmS)ijMu5JtjLp79Q=gNFlCpA4 zuBz#A!S=D->dOn3)CXzULzwJ!G2*3)C3?Gb0o;bqfU+kmWG5>yUa zCh@mtWUCDDueUN{NK#lsL!M&k556b!H?BJZ9ducwpE_eMHG{&Fd<|&*RQ176brW6Qh72b z_)+*E2Sfu+!xHrzdb#Kf~j1xz0Am#pkSz2Z?*x%O(+Tn32 zoR;mZ%LUy5Awj&Ws03W*KoT767e$TLGZhl@lGm7)^c3L(D@Gb}N0VKE=Jv+*P{}kI zVucJ¨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μ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 qyKGgaf^1G>v&G##4n^{{OR!H8y+}-tCnc { + const setSettings = useStore(state => state.setSettings); + const {t} = useTranslation() + const navigate = useNavigate() + + useEffect(() => { + fetch('/admin-auth/', { + method: 'POST' + }).then((value)=>{ + if(!value.ok){ + navigate('/login') + } + }).catch(()=>{ + navigate('/login') + }) + }, []); + + useEffect(() => { + document.title = t('admin.page-title') + + useStore.getState().setShowLoading(true); + const settingSocket = connect(`${WS_URL}/settings`, { + transports: ['websocket'], + }); + + const pluginsSocket = connect(`${WS_URL}/pluginfw/installer`, { + transports: ['websocket'], + }) + + pluginsSocket.on('connect', () => { + useStore.getState().setPluginsSocket(pluginsSocket); + }); + + + settingSocket.on('connect', () => { + useStore.getState().setSettingsSocket(settingSocket); + useStore.getState().setShowLoading(false) + settingSocket.emit('load'); + console.log('connected'); + }); + + settingSocket.on('disconnect', (reason) => { + // The settingSocket.io client will automatically try to reconnect for all reasons other than "io + // server disconnect". + useStore.getState().setShowLoading(true) + if (reason === 'io server disconnect') { + settingSocket.connect(); + } + }); + + settingSocket.on('settings', (settings) => { + /* Check whether the settings.json is authorized to be viewed */ + if (settings.results === 'NOT_ALLOWED') { + console.log('Not allowed to view settings.json') + return; + } + + /* Check to make sure the JSON is clean before proceeding */ + if (isJSONClean(settings.results)) { + setSettings(settings.results); + } else { + alert('Invalid JSON'); + } + useStore.getState().setShowLoading(false); + }); + + settingSocket.on('saveprogress', (status)=>{ + console.log(status) + }) + + return () => { + settingSocket.disconnect(); + pluginsSocket.disconnect() + } + }, []); + + return
+ +
+

Etherpad

+
    +
  • +
  • +
  • +
  • +
+
+
+ +
+
+} + +export default App diff --git a/admin/src/index.css b/admin/src/index.css new file mode 100644 index 000000000..e9683befa --- /dev/null +++ b/admin/src/index.css @@ -0,0 +1,489 @@ +:root { + --etherpad-color: #0f775b; +} + + + +html, body, #root { + box-sizing: border-box; + height: 100%; + +} + +*, *:before, *:after { + box-sizing: inherit; +} + +body { + margin: 0; + color: #333; + font: 14px helvetica, sans-serif; + background: #eee; +} + +div.menu { + height: 100%; + padding: 15px; + width: 220px; + border-right: 1px solid #ccc; + position: fixed; +} + +div.menu ul { + padding: 0; +} + +div.menu li { + list-style: none; + margin-left: 3px; + line-height: 3; + border-top: 1px solid #ccc; +} + +div.menu li:last-child { + border-bottom: 1px solid #ccc; +} + +div.innerwrapper { + padding: 15px; + padding-left: 265px; +} + +div.innerwrapper-err { + padding: 15px; + padding-left: 265px; + display: none; +} + +#wrapper { + background: none repeat scroll 0px 0px #FFFFFF; + box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.2); + margin: auto; + max-width: 1150px; + min-height: 100%;/*always display a scrollbar*/ + +} + +h1 { + font-size: 29px; +} + +h2 { + font-size: 24px; +} + +.separator { + margin: 10px 0; + height: 1px; + background: #aaa; + background: -webkit-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); + background: -moz-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); + background: -ms-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); + background: -o-linear-gradient(left, #fff, #aaa 20%, #aaa 80%, #fff); +} + +form { + margin-bottom: 0; +} + +#inner { + width: 300px; + margin: 0 auto; +} + +input { + font-weight: bold; + font-size: 15px; +} + + +.sort { + cursor: pointer; +} +.sort:after { + content: '▲▼' +} +.sort.up:after { + content:'▲' +} +.sort.down:after { + content:'▼' +} + +table { + border: 1px solid #ddd; + border-radius: 3px; + border-spacing: 0; + width: 100%; + margin: 20px 0; + position:relative; /* Allows us to position the loading indicator relative to the table */ +} + +table thead tr { + background: #eee; +} + +td, th { + padding: 5px; +} + +.template { + display: none; +} + +#installed-plugins td>div { + position: relative;/* Allows us to position the loading indicator relative to this row */ + display: inline-block; /*make this fill the whole cell*/ + width:100%; +} + +.messages { + height: 5em; +} +.messages * { + display: none; + text-align: center; +} +.messages .fetching { + display: block; +} + +.progress { + position: absolute; + top: 0; left: 0; bottom:0; right:0; + padding: auto; + + background: rgb(255,255,255); + display: none; +} + +#search-progress.progress { + padding-top: 20%; + background: rgba(255,255,255,0.3); +} + +.progress * { + display: block; + margin: 0 auto; + text-align: center; + color: #666; +} + +.settings { + outline: none; + width: 100%; + min-height: 80vh; + resize: none; +} + +#response { + display: inline; +} + +a:link, a:visited, a:hover, a:focus { + color: #333333; + text-decoration: none; +} + +a:focus, a:hover { + text-decoration: underline; +} + +.installed-results a:link, +.search-results a:link, +.installed-results a:visited, +.search-results a:visited, +.installed-results a:hover, +.search-results a:hover, +.installed-results a:focus, +.search-results a:focus { + text-decoration: underline; +} + +.installed-results a:focus, +.search-results a:focus, +.installed-results a:hover, +.search-results a:hover { + text-decoration: none; +} + +pre { + white-space: pre-wrap; + word-wrap: break-word; +} + +@media (max-width: 800px) { + div.innerwrapper { + padding: 0 15px 15px 15px; + } + + div.menu { + padding: 1px 15px 0 15px; + position: static; + height: auto; + border-right: none; + width: auto; + } + + table { + border: none; + } + + table, thead, tbody, td, tr { + display: block; + } + + thead tr { + display: none; + } + + tr { + border: 1px solid #ccc; + margin-bottom: 5px; + border-radius: 3px; + } + + td { + border: none; + border-bottom: 1px solid #eee; + position: relative; + padding-left: 50%; + white-space: normal; + text-align: left; + } + + td.name { + word-wrap: break-word; + } + + td:before { + position: absolute; + top: 6px; + left: 6px; + text-align: left; + padding-right: 10px; + white-space: nowrap; + font-weight: bold; + content: attr(data-label); + } + + td:last-child { + border-bottom: none; + } + + table input[type="button"] { + float: none; + } +} + + +.settings-button-bar { + margin-top: 10px; + display: flex; + gap: 10px; +} + +.login-background { + background-image: url("/fond.jpg"); + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + background-color: #f0f0f0; +} + + +.login-textinput { + width: 100%; + padding: 10px; + background-color: #fffacc; + border-radius: 5px; + border: 1px solid #ccc; + margin-bottom: 10px; +} + +.login-box { + width: 20%; + padding: 20px; + border-radius: 5px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + background-color: #fff; +} + +.login-inner-box{ + position: relative; + padding: 20px; +} + +.login-title { + color: var(--etherpad-color); + font-size: 2em; +} + +.login-button { + padding: 10px; + background-color: var(--etherpad-color); + color: white; + border: none; + border-radius: 5px; + cursor: pointer; + width: 100%; + height: 40px; +} + +.dialog-overlay { + position: fixed; + inset: 0; + background-color: white; + z-index: 100; +} + + +.dialog-confirm-overlay { + position: fixed; + inset: 0; + background-color: rgba(0, 0, 0, 0.5); + z-index: 100; +} + + +.dialog-confirm-content { + position: fixed; + top: 50%; + left: 50%; + background-color: white; + transform: translate(-50%, -50%); + padding: 20px; + z-index: 101; +} + + +.dialog-content { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + padding: 20px; + z-index: 101; +} + +.dialog-title { + color: var(--etherpad-color); + font-size: 2em; + margin-bottom: 20px; +} + + + +.ToastViewport { + position: fixed; + top: 10px; + right: 20px; + display: flex; + flex-direction: column; + gap: 10px; + width: 390px; + max-width: 100vw; + margin: 0; + list-style: none; + z-index: 2147483647; + outline: none; +} + +.ToastRootSuccess { + background-color: lawngreen; +} + +.ToastRootFailure { + background-color: red; +} + +.ToastRootFailure > .ToastTitle { + color: white; +} + +.ToastRoot { + border-radius: 20px; + box-shadow: hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px; + padding: 15px; + display: grid; + grid-template-areas: 'title action' 'description action'; + grid-template-columns: auto max-content; + column-gap: 15px; + align-items: center; +} +.ToastRoot[data-state='open'] { + animation: slideIn 150ms cubic-bezier(0.16, 1, 0.3, 1); +} +.ToastRoot[data-state='closed'] { + animation: hide 100ms ease-in; +} +.ToastRoot[data-swipe='move'] { + transform: translateX(var(--radix-toast-swipe-move-x)); +} +.ToastRoot[data-swipe='cancel'] { + transform: translateX(0); + transition: transform 200ms ease-out; +} +.ToastRoot[data-swipe='end'] { + animation: swipeOut 100ms ease-out; +} + +@keyframes hide { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes slideIn { + from { + transform: translateX(calc(100% + var(--viewport-padding))); + } + to { + transform: translateX(0); + } +} + +@keyframes swipeOut { + from { + transform: translateX(var(--radix-toast-swipe-end-x)); + } + to { + transform: translateX(calc(100% + var(--viewport-padding))); + } +} + +.ToastTitle { + grid-area: title; + margin-bottom: 5px; + font-weight: 500; + color: var(--slate-12); + padding: 10px; + font-size: 15px; +} + +.ToastDescription { + grid-area: description; + margin: 0; + color: var(--slate-11); + font-size: 13px; + line-height: 1.3; +} + +.ToastAction { + grid-area: action; +} + +.help-block { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 20px +} + +.search-field { + width: 50%; + padding: 5px; +} diff --git a/admin/src/localization/i18n.ts b/admin/src/localization/i18n.ts new file mode 100644 index 000000000..67ae140e7 --- /dev/null +++ b/admin/src/localization/i18n.ts @@ -0,0 +1,57 @@ +import i18n from 'i18next' +import {initReactI18next} from "react-i18next"; +import LanguageDetector from 'i18next-browser-languagedetector' + + +import { BackendModule } from 'i18next'; + +const LazyImportPlugin: BackendModule = { + type: 'backend', + init: function () { + }, + read: async function (language, namespace, callback) { + + let baseURL = import.meta.env.BASE_URL + if(namespace === "translation") { + // If default we load the translation file + baseURL+=`/locales/${language}.json` + } else { + // Else we load the former plugin translation file + baseURL+=`/${namespace}/${language}.json` + } + + const localeJSON = await fetch(baseURL, { + cache: "force-cache" + }) + let json; + + try { + json = JSON.parse(await localeJSON.text()) + } catch(e) { + callback(new Error("Error loading"), null); + } + + + callback(null, json); + }, + + save: function () { + }, + + create: function () { + /* save the missing translation */ + }, +}; + +i18n + .use(LanguageDetector) + .use(LazyImportPlugin) + .use(initReactI18next) + .init( + { + ns: ['translation','ep_admin_pads'], + fallbackLng: 'en' + } + ) + +export default i18n diff --git a/admin/src/main.tsx b/admin/src/main.tsx new file mode 100644 index 000000000..03ec73104 --- /dev/null +++ b/admin/src/main.tsx @@ -0,0 +1,40 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' +import {createBrowserRouter, createRoutesFromElements, Route, RouterProvider} from "react-router-dom"; +import {HomePage} from "./pages/HomePage.tsx"; +import {SettingsPage} from "./pages/SettingsPage.tsx"; +import {LoginScreen} from "./pages/LoginScreen.tsx"; +import {HelpPage} from "./pages/HelpPage.tsx"; +import * as Toast from '@radix-ui/react-toast' +import {I18nextProvider} from "react-i18next"; +import i18n from "./localization/i18n.ts"; +import {PadPage} from "./pages/PadPage.tsx"; +import {ToastDialog} from "./utils/Toast.tsx"; + +const router = createBrowserRouter(createRoutesFromElements( + <>}> + }/> + }/> + }/> + }/> + }/> + + }/> + +), { + basename: import.meta.env.BASE_URL +}) + + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + + + + + + , +) diff --git a/admin/src/pages/HelpPage.tsx b/admin/src/pages/HelpPage.tsx new file mode 100644 index 000000000..6f06907e1 --- /dev/null +++ b/admin/src/pages/HelpPage.tsx @@ -0,0 +1,70 @@ +import {Trans} from "react-i18next"; +import {useStore} from "../store/store.ts"; +import {useEffect, useState} from "react"; +import {HelpObj} from "./Plugin.ts"; + +export const HelpPage = () => { + const settingsSocket = useStore(state=>state.settingsSocket) + const [helpData, setHelpData] = useState(); + + useEffect(() => { + if(!settingsSocket) return; + settingsSocket?.on('reply:help', (data) => { + setHelpData(data) + }); + + settingsSocket?.emit('help'); + }, [settingsSocket]); + + const renderHooks = (hooks:Record>) => { + return Object.keys(hooks).map((hookName, i) => { + return
+

{hookName}

+
    + {Object.keys(hooks[hookName]).map((hook, i) =>
  • {hook} +
      + {Object.keys(hooks[hookName][hook]).map((subHook, i) =>
    • {subHook}
    • )} +
    +
  • )} +
+
+ }) + } + + + if (!helpData) return
+ + return
+

+
+
+
{helpData?.epVersion}
+
+
{helpData.latestVersion}
+
Git sha
+
{helpData.gitCommit}
+
+

+
    + {helpData.installedPlugins.map((plugin, i) =>
  • {plugin}
  • )} +
+ +

+
    + {helpData.installedParts.map((part, i) =>
  • {part}
  • )} +
+ +

+ { + renderHooks(helpData.installedServerHooks) + } + +

+ + { + renderHooks(helpData.installedClientHooks) + } +

+ +
+} diff --git a/admin/src/pages/HomePage.tsx b/admin/src/pages/HomePage.tsx new file mode 100644 index 000000000..fd29e390e --- /dev/null +++ b/admin/src/pages/HomePage.tsx @@ -0,0 +1,179 @@ +import {useStore} from "../store/store.ts"; +import {useEffect, useState} from "react"; +import {InstalledPlugin, PluginDef, SearchParams} from "./Plugin.ts"; +import {useDebounce} from "../utils/useDebounce.ts"; +import {Trans, useTranslation} from "react-i18next"; + + +export const HomePage = () => { + const pluginsSocket = useStore(state=>state.pluginsSocket) + const [plugins,setPlugins] = useState([]) + const [installedPlugins, setInstalledPlugins] = useState([]) + const [searchParams, setSearchParams] = useState({ + offset: 0, + limit: 99999, + sortBy: 'name', + sortDir: 'asc', + searchTerm: '' + }) + const [searchTerm, setSearchTerm] = useState('') + const {t} = useTranslation() + + + useEffect(() => { + if(!pluginsSocket){ + return + } + + pluginsSocket.on('results:installed', (data:{ + installed: InstalledPlugin[] + })=>{ + setInstalledPlugins(data.installed) + }) + + pluginsSocket.on('results:updatable', (data) => { + data.updatable.forEach((pluginName: string) => { + setInstalledPlugins(installedPlugins.map(plugin => { + if (plugin.name === pluginName) { + return { + ...plugin, + updatable: true + } + } + return plugin + })) + }) + }) + + pluginsSocket.on('finished:install', () => { + pluginsSocket!.emit('getInstalled'); + }) + + pluginsSocket.on('finished:uninstall', () => { + console.log("Finished uninstall") + }) + + + // Reload on reconnect + pluginsSocket.on('connect', ()=>{ + // Initial retrieval of installed plugins + pluginsSocket.emit('getInstalled'); + pluginsSocket.emit('search', searchParams) + }) + + pluginsSocket.emit('getInstalled'); + + // check for updates every 5mins + const interval = setInterval(() => { + pluginsSocket.emit('checkUpdates'); + }, 1000 * 60 * 5); + + return ()=>{ + clearInterval(interval) + } + }, [pluginsSocket]); + + + useEffect(() => { + if (!pluginsSocket) { + return + } + + pluginsSocket?.emit('search', searchParams) + + + pluginsSocket!.on('results:search', (data: { + results: PluginDef[] + }) => { + setPlugins(data.results) + }) + + + }, [searchParams, pluginsSocket]); + + const uninstallPlugin = (pluginName: string)=>{ + pluginsSocket!.emit('uninstall', pluginName); + // Remove plugin + setInstalledPlugins(installedPlugins.filter(i=>i.name !== pluginName)) + } + + const installPlugin = (pluginName: string)=>{ + pluginsSocket!.emit('install', pluginName); + setPlugins(plugins.filter(plugin=>plugin.name !== pluginName)) + } + + + useDebounce(()=>{ + setSearchParams({ + ...searchParams, + offset: 0, + searchTerm: searchTerm + }) + }, 500, [searchTerm]) + + return
+

+ +

+ + + + + + + + + + + {installedPlugins.map((plugin, index) => { + return + + + + + })} + +
{plugin.name}{plugin.version} + { + plugin.updatable ? + + : + + } +
+ + +

+ + { + setSearchTerm(v.target.value) + }}/> + + + + + + + + + + + + + {plugins.map((plugin) => { + return + + + + + + + })} + +
{plugin.name}{plugin.description}{plugin.version}{plugin.time} + +
+
+} diff --git a/admin/src/pages/LoginScreen.tsx b/admin/src/pages/LoginScreen.tsx new file mode 100644 index 000000000..7860368f8 --- /dev/null +++ b/admin/src/pages/LoginScreen.tsx @@ -0,0 +1,44 @@ +import {useState} from "react"; +import {useStore} from "../store/store.ts"; +import {useNavigate} from "react-router-dom"; + +export const LoginScreen = ()=>{ + const navigate = useNavigate() + const [username, setUsername] = useState('') + const [password, setPassword] = useState('') + + const login = ()=>{ + fetch('/admin-auth/', { + method: 'POST', + headers:{ + Authorization: `Basic ${btoa(`${username}:${password}`)}` + } + }).then(r=>{ + if(!r.ok) { + useStore.getState().setToastState({ + open: true, + title: "Login failed", + success: false + }) + } else { + navigate('/') + } + }).catch(e=>{ + console.error(e) + }) + } + + return
+
+

Login Etherpad

+
+
Username
+ setUsername(v.target.value)} placeholder="Username"/> +
Passwort
+ setPassword(v.target.value)} placeholder="Password"/> + +
+
+
+} diff --git a/admin/src/pages/PadPage.tsx b/admin/src/pages/PadPage.tsx new file mode 100644 index 000000000..5c11755d6 --- /dev/null +++ b/admin/src/pages/PadPage.tsx @@ -0,0 +1,172 @@ +import {Trans, useTranslation} from "react-i18next"; +import {useEffect, useMemo, useState} from "react"; +import {useStore} from "../store/store.ts"; +import {PadSearchQuery, PadSearchResult} from "../utils/PadSearch.ts"; +import {useDebounce} from "../utils/useDebounce.ts"; +import {determineSorting} from "../utils/sorting.ts"; +import * as Dialog from "@radix-ui/react-dialog"; + +export const PadPage = ()=>{ + const settingsSocket = useStore(state=>state.settingsSocket) + const [searchParams, setSearchParams] = useState({ + offset: 0, + limit: 12, + pattern: '', + sortBy: 'padName', + ascending: true + }) + const {t} = useTranslation() + const [searchTerm, setSearchTerm] = useState('') + const pads = useStore(state=>state.pads) + const pages = useMemo(()=>{ + if(!pads){ + return [0] + } + + const totalPages = Math.ceil(pads!.total / searchParams.limit) + return Array.from({length: totalPages}, (_, i) => i+1) + },[pads, searchParams.limit]) + const [deleteDialog, setDeleteDialog] = useState(false) + const [padToDelete, setPadToDelete] = useState('') + + useDebounce(()=>{ + setSearchParams({ + ...searchParams, + pattern: searchTerm + }) + + }, 500, [searchTerm]) + + useEffect(() => { + if(!settingsSocket){ + return + } + + settingsSocket.emit('padLoad', searchParams) + + }, [settingsSocket, searchParams]); + + useEffect(() => { + if(!settingsSocket){ + return + } + + settingsSocket.on('results:padLoad', (data: PadSearchResult)=>{ + useStore.getState().setPads(data); + }) + + + settingsSocket.on('results:deletePad', (padID: string)=>{ + const newPads = useStore.getState().pads?.results?.filter((pad)=>{ + return pad.padName !== padID + }) + useStore.getState().setPads({ + total: useStore.getState().pads!.total-1, + results: newPads + }) + }) + }, [settingsSocket, pads]); + + const deletePad = (padID: string)=>{ + settingsSocket?.emit('deletePad', padID) + } + + + + return
+ + + +
+
+
+ {t("ep_admin_pads:ep_adminpads2_confirm", { + padID: padToDelete, + })} +
+
+ + +
+
+
+
+
+

+ setSearchTerm(v.target.value)} + placeholder={t('ep_admin_pads:ep_adminpads2_search-heading')}/> + + + + + + + + + + + + { + pads?.results?.map((pad)=>{ + return + + + + + + + }) + } + +
{ + setSearchParams({ + ...searchParams, + sortBy: 'padName', + ascending: !searchParams.ascending + }) + }}>{ + setSearchParams({ + ...searchParams, + sortBy: 'lastEdited', + ascending: !searchParams.ascending + }) + }}>{ + setSearchParams({ + ...searchParams, + sortBy: 'userCount', + ascending: !searchParams.ascending + }) + }}>{ + setSearchParams({ + ...searchParams, + sortBy: 'revisionNumber', + ascending: !searchParams.ascending + }) + }}>Revision number
{pad.padName}{pad.userCount}{new Date(pad.lastEdited).toLocaleString()}{pad.revisionNumber} +
+ + +
+
+
+ {pages.map((page)=>{ + return + })} +
+
+} diff --git a/admin/src/pages/Plugin.ts b/admin/src/pages/Plugin.ts new file mode 100644 index 000000000..3188c247f --- /dev/null +++ b/admin/src/pages/Plugin.ts @@ -0,0 +1,36 @@ +export type PluginDef = { + name: string, + description: string, + version: string, + time: string, + official: boolean, +} + + +export type InstalledPlugin = { + name: string, + path: string, + realPath: string, + version:string, + updatable?: boolean +} + + +export type SearchParams = { + searchTerm: string, + offset: number, + limit: number, + sortBy: 'name'|'version', + sortDir: 'asc'|'desc' +} + + +export type HelpObj = { + epVersion: string + gitCommit: string + installedClientHooks: Record>, + installedParts: string[], + installedPlugins: string[], + installedServerHooks: Record, + latestVersion: string +} diff --git a/admin/src/pages/SettingsPage.tsx b/admin/src/pages/SettingsPage.tsx new file mode 100644 index 000000000..b72507c3a --- /dev/null +++ b/admin/src/pages/SettingsPage.tsx @@ -0,0 +1,45 @@ +import {useStore} from "../store/store.ts"; +import {isJSONClean} from "../utils/utils.ts"; +import {Trans} from "react-i18next"; + +export const SettingsPage = ()=>{ + const settingsSocket = useStore(state=>state.settingsSocket) + + const settings = useStore(state=>state.settings) + + return
- -
-

-
- - - - - diff --git a/src/templates/javascript.html b/src/templates/javascript.html index 42482f69d..c501af65c 100644 --- a/src/templates/javascript.html +++ b/src/templates/javascript.html @@ -34,24 +34,16 @@ require-kernel.js - plugins.js Apache-2.0-only - plugins.js - minify.json.js Expat - minify.json.js - settings.js Apache-2.0-only - settings.js - jquery.autosize.js Expat - jquery.autosize.js diff --git a/src/tests/backend/specs/webaccess.ts b/src/tests/backend/specs/webaccess.ts index 009737c46..96c2265fc 100644 --- a/src/tests/backend/specs/webaccess.ts +++ b/src/tests/backend/specs/webaccess.ts @@ -54,10 +54,10 @@ describe(__filename, function () { await agent.get('/').expect(200); }); - it('!authn !authz anonymous /admin/ -> 401', async function () { + it('!authn !authz anonymous /admin-auth// -> 401', async function () { settings.requireAuthentication = false; settings.requireAuthorization = false; - await agent.get('/admin/').expect(401); + await agent.get('/admin-auth/').expect(401); }); it('authn !authz anonymous / -> 401', async function () { @@ -72,10 +72,10 @@ describe(__filename, function () { await agent.get('/').auth('user', 'user-password').expect(200); }); - it('authn !authz user /admin/ -> 403', async function () { + it('authn !authz user //admin-auth// -> 403', async function () { settings.requireAuthentication = true; settings.requireAuthorization = false; - await agent.get('/admin/').auth('user', 'user-password').expect(403); + await agent.get('/admin-auth//').auth('user', 'user-password').expect(403); }); it('authn !authz admin / -> 200', async function () { @@ -84,10 +84,10 @@ describe(__filename, function () { await agent.get('/').auth('admin', 'admin-password').expect(200); }); - it('authn !authz admin /admin/ -> 200', async function () { + it('authn !authz admin /admin-auth/ -> 200', async function () { settings.requireAuthentication = true; settings.requireAuthorization = false; - await agent.get('/admin/').auth('admin', 'admin-password').expect(200); + await agent.get('/admin-auth/').auth('admin', 'admin-password').expect(200); }); it('authn authz anonymous /robots.txt -> 200', async function () { @@ -102,10 +102,10 @@ describe(__filename, function () { await agent.get('/').auth('user', 'user-password').expect(403); }); - it('authn authz user /admin/ -> 403', async function () { + it('authn authz user //admin-auth// -> 403', async function () { settings.requireAuthentication = true; settings.requireAuthorization = true; - await agent.get('/admin/').auth('user', 'user-password').expect(403); + await agent.get('/admin-auth//').auth('user', 'user-password').expect(403); }); it('authn authz admin / -> 200', async function () { @@ -114,10 +114,10 @@ describe(__filename, function () { await agent.get('/').auth('admin', 'admin-password').expect(200); }); - it('authn authz admin /admin/ -> 200', async function () { + it('authn authz admin /admin-auth/ -> 200', async function () { settings.requireAuthentication = true; settings.requireAuthorization = true; - await agent.get('/admin/').auth('admin', 'admin-password').expect(200); + await agent.get('/admin-auth/').auth('admin', 'admin-password').expect(200); }); describe('login fails if password is nullish', function () { @@ -130,7 +130,7 @@ describe(__filename, function () { it(`admin password: ${adminPassword} credentials: ${creds}`, async function () { settings.users.admin.password = adminPassword; const encCreds = Buffer.from(creds).toString('base64'); - await agent.get('/admin/').set('Authorization', `Basic ${encCreds}`).expect(401); + await agent.get('/admin-auth/').set('Authorization', `Basic ${encCreds}`).expect(401); }); } } @@ -228,11 +228,11 @@ describe(__filename, function () { it('cannot grant access to /admin', async function () { handlers.preAuthorize[0].innerHandle = () => [true]; - await agent.get('/admin/').expect(401); + await agent.get('/admin-auth/').expect(401); // Notes: // * preAuthorize[1] is called despite preAuthorize[0] returning a non-empty list because - // 'true' entries are ignored for /admin/* requests. - // * The authenticate hook always runs for /admin/* requests even if + // 'true' entries are ignored for /admin-auth//* requests. + // * The authenticate hook always runs for /admin-auth//* requests even if // settings.requireAuthentication is false. assert.deepEqual(callOrder, ['preAuthorize_0', 'preAuthorize_1', @@ -240,9 +240,9 @@ describe(__filename, function () { 'authenticate_1']); }); - it('can deny access to /admin', async function () { + it('can deny access to /admin-auth/', async function () { handlers.preAuthorize[0].innerHandle = () => [false]; - await agent.get('/admin/').auth('admin', 'admin-password').expect(403); + await agent.get('/admin-auth/').auth('admin', 'admin-password').expect(403); assert.deepEqual(callOrder, ['preAuthorize_0']); }); @@ -258,7 +258,7 @@ describe(__filename, function () { res.status(200).send('injected'); return cb([true]); })]; - await agent.get('/admin/').auth('admin', 'admin-password').expect(200, 'injected'); + await agent.get('/admin-auth//').auth('admin', 'admin-password').expect(200, 'injected'); assert(called); }); @@ -274,15 +274,15 @@ describe(__filename, function () { settings.requireAuthorization = false; }); - it('is not called if !requireAuthentication and not /admin/*', async function () { + it('is not called if !requireAuthentication and not /admin-auth/*', async function () { settings.requireAuthentication = false; await agent.get('/').expect(200); assert.deepEqual(callOrder, ['preAuthorize_0', 'preAuthorize_1']); }); - it('is called if !requireAuthentication and /admin/*', async function () { + it('is called if !requireAuthentication and /admin-auth//*', async function () { settings.requireAuthentication = false; - await agent.get('/admin/').expect(401); + await agent.get('/admin-auth/').expect(401); assert.deepEqual(callOrder, ['preAuthorize_0', 'preAuthorize_1', 'authenticate_0', @@ -393,7 +393,7 @@ describe(__filename, function () { it('is not called if !requireAuthorization (/admin)', async function () { settings.requireAuthorization = false; - await agent.get('/admin/').auth('admin', 'admin-password').expect(200); + await agent.get('/admin-auth/').auth('admin', 'admin-password').expect(200); assert.deepEqual(callOrder, ['preAuthorize_0', 'preAuthorize_1', 'authenticate_0',
+

+ - - -
-
-
Example production settings template - Example development settings template -