From c94d94032582c0147c35966cfc356c235c719760 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 26 Jan 2024 12:53:32 +0100 Subject: [PATCH 001/100] setting HTTP_AUTHORI --- .htaccess | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.htaccess b/.htaccess index 24254ed01..ed73c5e67 100644 --- a/.htaccess +++ b/.htaccess @@ -6,7 +6,7 @@ Header set X-Content-Type-Options: "nosniff" RewriteEngine On -RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last] +RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] #RewriteRule "^favicon\.ico$" "-" [L] #RewriteRule "^(favicon\.ico)$" %{HTTP_HOST}/views/bootstrap/images/favicon.svg [L,NC] RewriteRule "^(favicon\.ico)" /views/bootstrap/images/favicon.svg [L,NC] From 2f5392797d6795cfcf92a61f74e009b154e1329f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 26 Jan 2024 12:54:15 +0100 Subject: [PATCH 002/100] cast parameter to SeedDMS_Core_File::format_filesize into int --- views/bootstrap/class.Charts.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.Charts.php b/views/bootstrap/class.Charts.php index e701bd03c..b379f17e4 100644 --- a/views/bootstrap/class.Charts.php +++ b/views/bootstrap/class.Charts.php @@ -266,7 +266,7 @@ $(document).ready( function() { break; case 'sizeperuser': foreach($data as $item) { - echo "".htmlspecialchars($item['key'])."".SeedDMS_Core_File::format_filesize($item['total']).""; + echo "".htmlspecialchars($item['key'])."".SeedDMS_Core_File::format_filesize((int) $item['total']).""; $total += $item['total']; } echo "".SeedDMS_Core_File::format_filesize($total).""; From 40d05f5e470710d567b0d93b3228f4d4ed8a0325 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 30 Jan 2024 16:32:20 +0100 Subject: [PATCH 003/100] no need for php 8.0 anymore --- CHANGELOG | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 93755d0d2..d818bbb29 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,6 @@ -------------------------------------------------------------------------------- Changes in version 5.1.33 -------------------------------------------------------------------------------- -- requires php 8.x - use SeedDMS_Core_File::mimetype() to determine mime type when uploading a file with drag&drop - user images may be 300px height, do not scale them up From 95c367810992e564b167a9c20b71803f8e2a76bd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 30 Jan 2024 17:10:38 +0100 Subject: [PATCH 004/100] add various translations --- languages/ar_EG/lang.inc | 19 ++++++++++++++++ languages/bg_BG/lang.inc | 19 ++++++++++++++++ languages/ca_ES/lang.inc | 19 ++++++++++++++++ languages/cs_CZ/lang.inc | 27 +++++++++++++++++++---- languages/de_DE/lang.inc | 25 ++++++++++++++++++--- languages/el_GR/lang.inc | 19 ++++++++++++++++ languages/en_GB/lang.inc | 25 ++++++++++++++++++--- languages/es_ES/lang.inc | 19 ++++++++++++++++ languages/fr_FR/lang.inc | 23 ++++++++++++++++++-- languages/hr_HR/lang.inc | 19 ++++++++++++++++ languages/hu_HU/lang.inc | 33 ++++++++++++++++++++++------ languages/id_ID/lang.inc | 27 +++++++++++++++++++---- languages/it_IT/lang.inc | 25 ++++++++++++++++++--- languages/ko_KR/lang.inc | 27 +++++++++++++++++++---- languages/lo_LA/lang.inc | 19 ++++++++++++++++ languages/nb_NO/lang.inc | 19 ++++++++++++++++ languages/nl_NL/lang.inc | 19 ++++++++++++++++ languages/pl_PL/lang.inc | 19 ++++++++++++++++ languages/pt_BR/lang.inc | 19 ++++++++++++++++ languages/ro_RO/lang.inc | 19 ++++++++++++++++ languages/ru_RU/lang.inc | 19 ++++++++++++++++ languages/sk_SK/lang.inc | 19 ++++++++++++++++ languages/sv_SE/lang.inc | 19 ++++++++++++++++ languages/tr_TR/lang.inc | 19 ++++++++++++++++ languages/uk_UA/lang.inc | 47 ++++++++++++++++++++++++++++------------ languages/zh_CN/lang.inc | 19 ++++++++++++++++ languages/zh_TW/lang.inc | 19 ++++++++++++++++ 27 files changed, 557 insertions(+), 44 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 3033905dc..7243a7732 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -283,6 +283,7 @@ URL: [url]', 'choose_attrdefgroup' => 'من فضلك اختر تعريف سمة المجموعة', 'choose_category' => 'من فضلك اختر القسم', 'choose_group' => 'اختر المجموعة', +'choose_link_type' => '', 'choose_role' => 'اختر دور', 'choose_target_category' => 'اختر القسم', 'choose_target_document' => 'اختر المستند', @@ -305,6 +306,7 @@ URL: [url]', 'comment_changed_email' => 'تعليق تغيير البريد الإلكتروني', 'comment_for_current_version' => 'تعليق على الاصدار', 'configure_extension' => 'تعديل', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'تعديل مسح المحفوظات', 'confirm_create_fulltext_index' => 'نعم: اود اعادة انشاء فهرس للنص الكامل !', @@ -691,6 +693,7 @@ URL: [url]', 'filter_for_documents' => 'فلتر للمستندات', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'فلتر للملفات', +'finished_workflow_log' => '', 'folder' => 'مجلد', 'folders' => 'مجلدات', 'folders_and_documents_statistic' => 'رؤية عامة للمحتوى', @@ -789,6 +792,7 @@ URL: [url]', 'global_attributedefinitions' => 'سمات', 'global_default_keywords' => 'كلمات بحثية عامة', 'global_document_categories' => 'اقسام', +'global_link_types' => '', 'global_workflows' => 'مسارات العمل', 'global_workflow_actions' => 'اجراءات مسار العمل', 'global_workflow_states' => 'حالات مسار العمل', @@ -934,6 +938,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'الدليل', 'librarydoc' => 'مستندات المكتبة', +'linked_document' => '', 'linked_documents' => 'مستندات متعلقة', 'linked_files' => 'ملحقات', 'linked_to_current_version' => 'متعلقة بالإصدار الحالي', @@ -1055,6 +1060,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - مرفقات جديدة', 'new_folder' => 'مجلد جديد', +'new_link_type' => '', 'new_password' => 'كلمة سر جديدة', 'new_subfolder_email' => 'مستند جديد', 'new_subfolder_email_body' => 'مجلد جديد @@ -1612,6 +1618,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'تمكين دخول ضيف', 'settings_enableHelp' => 'تمكين المساعدة', 'settings_enableHelp_desc' => 'تمكين المساعدة', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'تمكين تحديد اللغة', 'settings_enableLanguageSelector_desc' => 'تمكين تحديد اللغة', 'settings_enableLargeFileUpload' => 'تمكين تحميل الملفات الكبيرة', @@ -2062,6 +2072,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2069,6 +2087,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => 'تفصيل المهام', 'task_disabled' => 'تم توقيف المهمة', +'task_failures' => '', 'task_frequency' => 'تردد المهمة', 'task_frequency_placeholder' => '', 'task_last_run' => 'مهمة المدى الماضي', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 67c1b690c..e956f00a2 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -270,6 +270,7 @@ $text = array( 'choose_attrdefgroup' => '', 'choose_category' => 'Изберете', 'choose_group' => 'Изберете група', +'choose_link_type' => '', 'choose_role' => '', 'choose_target_category' => 'Изберете категория', 'choose_target_document' => 'Изберете документ', @@ -292,6 +293,7 @@ $text = array( 'comment_changed_email' => 'Коментарите са изменени', 'comment_for_current_version' => 'Коментар за версията', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Да, пресъздай пълнотекстов индекс!', @@ -625,6 +627,7 @@ $text = array( 'filter_for_documents' => '', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => '', +'finished_workflow_log' => '', 'folder' => 'Папка', 'folders' => 'Папки', 'folders_and_documents_statistic' => 'Обзор на съдържанието', @@ -683,6 +686,7 @@ $text = array( 'global_attributedefinitions' => 'атрибути', 'global_default_keywords' => 'Глобални ключови думи', 'global_document_categories' => 'Категории', +'global_link_types' => '', 'global_workflows' => 'Процеси', 'global_workflow_actions' => 'действия по процеси', 'global_workflow_states' => 'Състояния процеси', @@ -828,6 +832,7 @@ $text = array( 'latest_updateddocuments' => '', 'legend' => 'легенда', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'Свързани документи', 'linked_files' => 'Приложения', 'linked_to_current_version' => '', @@ -938,6 +943,7 @@ $text = array( 'new_file_email_body_html' => '', 'new_file_email_subject' => '', 'new_folder' => 'Нова папка', +'new_link_type' => '', 'new_password' => 'Нова парола', 'new_subfolder_email' => 'Нова подпапка', 'new_subfolder_email_body' => '', @@ -1454,6 +1460,10 @@ $text = array( 'settings_enableGuestLogin_desc' => 'За да разрешим вход за гости, включете тази опция. Гостевия вход да се исползва само в доверена среда.', 'settings_enableHelp' => '', 'settings_enableHelp_desc' => '', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Разреши избор на език', 'settings_enableLanguageSelector_desc' => 'Покажи селектор за език на интерфейса след влизане. Това не влияе на избора на език на първа страница.', 'settings_enableLargeFileUpload' => 'Включи джава-зараждане на файлове', @@ -1904,6 +1914,14 @@ $text = array( 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -1911,6 +1929,7 @@ $text = array( 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 4bd6ca199..916fd941d 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -275,6 +275,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Elegir categoria', 'choose_group' => 'Seleccionar grup', +'choose_link_type' => '', 'choose_role' => '', 'choose_target_category' => '', 'choose_target_document' => 'Escollir document', @@ -297,6 +298,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentari de la versió actual', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => '', @@ -630,6 +632,7 @@ URL: [url]', 'filter_for_documents' => '', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filtre adicional per les carpetes', +'finished_workflow_log' => '', 'folder' => 'Carpeta', 'folders' => 'Carpetes', 'folders_and_documents_statistic' => 'Vista general de continguts', @@ -688,6 +691,7 @@ URL: [url]', 'global_attributedefinitions' => 'Atributs', 'global_default_keywords' => 'Mots clau globals', 'global_document_categories' => 'Categories', +'global_link_types' => '', 'global_workflows' => '', 'global_workflow_actions' => '', 'global_workflow_states' => '', @@ -833,6 +837,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Llegenda', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'Documents relacionats', 'linked_files' => 'Adjunts', 'linked_to_current_version' => '', @@ -943,6 +948,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '', 'new_folder' => 'Nova carpeta', +'new_link_type' => '', 'new_password' => '', 'new_subfolder_email' => 'Nova subcarpeta', 'new_subfolder_email_body' => '', @@ -1459,6 +1465,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => '', 'settings_enableHelp' => '', 'settings_enableHelp_desc' => '', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => '', 'settings_enableLanguageSelector_desc' => '', 'settings_enableLargeFileUpload' => '', @@ -1909,6 +1919,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -1916,6 +1934,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 68fa8aeab..7b2f9d6a7 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1557), kreml (579) +// Translators: Admin (1561), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Vybrat skupinu atributů', 'choose_category' => 'Vyberte prosím', 'choose_group' => 'Vyberte skupinu', +'choose_link_type' => '', 'choose_role' => 'Vyberte roli', 'choose_target_category' => 'Vyberte kategorii', 'choose_target_document' => 'Vyberte dokument', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentář k aktuální verzi', 'configure_extension' => 'Konfigurovat rozšíření', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Chtěli byste vyčistit mezipaměť? Tím se odstraní všechny předběžně vygenerované náhledy.', 'confirm_create_fulltext_index' => 'Ano, chci znovu vytvořit fulltext index!', @@ -359,7 +361,7 @@ URL: [url]', 'current_state' => 'Současný stav', 'current_version' => 'Aktuální verze', 'daily' => 'Denně', -'dashboard' => '', +'dashboard' => 'Nástěnka', 'databasesearch' => 'Vyhledání v databázi', 'database_schema_version' => '', 'data_loading' => 'Prosím vyčkejte dokud se data nenahrají...', @@ -715,6 +717,7 @@ URL: [url]', 'filter_for_documents' => 'Další filtr pro dokumenty', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Další filtr pro složky', +'finished_workflow_log' => '', 'folder' => 'Složka', 'folders' => 'Složky', 'folders_and_documents_statistic' => 'Přehled složek a dokumentů', @@ -820,6 +823,7 @@ URL: [url]', 'global_attributedefinitions' => 'Atributy', 'global_default_keywords' => 'Globální klíčová slova', 'global_document_categories' => 'Globální kategorie', +'global_link_types' => '', 'global_workflows' => 'Workflows', 'global_workflow_actions' => 'Akce workflow', 'global_workflow_states' => 'Stavy workflow', @@ -853,7 +857,7 @@ URL: [url]', 'hu_HU' => 'Maďarština', 'id' => 'ID', 'identical_version' => 'Nová verze je identická se současnou verzí', -'id_ID' => '', +'id_ID' => 'Indonézsky', 'import' => 'Nahrát', 'importfs' => 'Import ze souborového systému', 'import_extension' => 'Importovat rozšíření', @@ -965,6 +969,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Popisek', 'librarydoc' => 'Dokument z knihovny', +'linked_document' => '', 'linked_documents' => 'Související dokumenty', 'linked_files' => 'Přílohy', 'linked_to_current_version' => 'Provázáno odkazem s aktuální verzí', @@ -975,7 +980,7 @@ URL: [url]', 'link_to_version' => 'Provázat k verzi', 'list_access_rights' => 'Seznam všech přístupových práv ...', 'list_contains_no_access_docs' => 'Seznam obsahuje více dokumentů, ke kterým nemáte přístup a které se nezobrazují.', -'list_conversion_services' => '', +'list_conversion_services' => 'Služba', 'list_hooks' => 'Seznam hooks', 'list_notification_services' => '', 'list_tasks' => 'Seznam úkolů', @@ -1086,6 +1091,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nová příloha', 'new_folder' => 'Nová složka', +'new_link_type' => '', 'new_password' => 'Nové heslo', 'new_subfolder_email' => 'Nová složka', 'new_subfolder_email_body' => 'Nová složka @@ -1684,6 +1690,10 @@ Jméno: [username] 'settings_enableGuestLogin_desc' => 'Pokud chcete, aby se někdo přihlásil jako host, zaškrtněte tuto možnost. Poznámka: Přihlašování hosta by mělo být použito pouze v důvěryhodném prostředí', 'settings_enableHelp' => 'Povolit nápovědu', 'settings_enableHelp_desc' => 'Povolit / deaktivovat odkaz na kontextovou nápovědu v nabídce', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Povolit výběr jazyka', 'settings_enableLanguageSelector_desc' => 'Zobrazit výběr jazyka uživatelského rozhraní po přihlášení.', 'settings_enableLargeFileUpload' => 'Povolit nahrávání velkých souborů', @@ -2134,6 +2144,14 @@ Jméno: [username] 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2141,6 +2159,7 @@ Jméno: [username] 'task_core_statistic_users' => '', 'task_description' => 'Popis', 'task_disabled' => 'Vypnuto', +'task_failures' => '', 'task_frequency' => 'Frekvence', 'task_frequency_placeholder' => '', 'task_last_run' => 'Poslední spuštění', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 2a8e1e294..a692b9053 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (3283), dgrutsch (22) +// Translators: Admin (3304), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -328,6 +328,7 @@ URL: [url]

', 'choose_attrdefgroup' => 'Attributgruppe wählen', 'choose_category' => 'Kategorie wählen', 'choose_group' => 'Gruppe wählen', +'choose_link_type' => 'Link-Typ auswählen', 'choose_role' => 'Rolle wählen', 'choose_target_category' => 'Kategorie wählen', 'choose_target_document' => 'Dokument wählen', @@ -350,6 +351,7 @@ URL: [url]

', 'comment_changed_email' => '', 'comment_for_current_version' => 'Kommentar zur aktuellen Version', 'configure_extension' => 'Erweiterung konfigurieren', +'confirm_change_category' => 'Bitte bestätigen Sie das Ändern der Kategorie für die ausgewählten Objekte.', 'confirm_change_owner' => 'Bitte bestätigen Sie den Besitzerwechsel der ausgewählten Objekte.', 'confirm_clear_cache' => 'Wollen Sie wirklich den Cache löschen? Dies entfernt alle vorberechneten Vorschaubilder, Javascript und andere Dateien.', 'confirm_create_fulltext_index' => 'Ja, Ich möchte den Volltext-Index neu erzeugen!.', @@ -853,6 +855,7 @@ URL: [url]

', 'filter_for_documents' => 'Zusätzliche Filter für Dokumente', 'filter_for_documents_and_folders' => 'Zusätzliche Filter für Ordner und Dokumente', 'filter_for_folders' => 'Zusätzliche Filter für Ordner', +'finished_workflow_log' => 'Beendete Workflows', 'folder' => 'Ordner', 'folders' => 'Verzeichnisse', 'folders_and_documents_statistic' => 'Ordner- und Dokumentenübersicht', @@ -1031,6 +1034,7 @@ URL: [url]

', 'global_attributedefinitions' => 'Attribute', 'global_default_keywords' => 'Globale Stichwortlisten', 'global_document_categories' => 'Kategorien', +'global_link_types' => 'Link-Typ', 'global_workflows' => 'Workflows', 'global_workflow_actions' => 'Workflow-Aktionen', 'global_workflow_states' => 'Workflow-Status', @@ -1176,6 +1180,7 @@ URL: [url]

', 'latest_updateddocuments' => 'Zuletzt aktualisierte Dokumente', 'legend' => 'Legende', 'librarydoc' => 'Dokument aus Bibliothek', +'linked_document' => 'Verknüpftes Dokument', 'linked_documents' => 'verknüpfte Dokumente', 'linked_files' => 'Anhänge', 'linked_to_current_version' => 'Mit aktueller Version verknüpft', @@ -1310,6 +1315,7 @@ Benutzer: [username]
URL: [url]

', 'new_file_email_subject' => '[sitename]: [document] - Neuer Anhang', 'new_folder' => 'Neuer Ordner', +'new_link_type' => 'Neuer Link-Typ', 'new_password' => 'Neues Passwort', 'new_subfolder_email' => 'Neuer Ordner', 'new_subfolder_email_body' => 'Neuer Ordner @@ -1599,7 +1605,7 @@ Elternordner: [folder_path]
Benutzer: [username]v URL: [url]

', 'replace_content_email_subject' => '[sitename]: [name] - Dokumentenversion ersetzt', -'request_workflow_action_email_body' => 'Der Workflow hat einen Status erreicht welcher Ihre Aktion benötigt. +'request_workflow_action_email_body' => 'Der Workflow hat einen Status erreicht, welcher Ihre Aktion benötigt. Dokument: [name] Version: [version] @@ -1608,7 +1614,7 @@ Aktueller Status: [current_state] Übergeordneter Ordner: [folder_path] Benutzer: [username] URL: [url]', -'request_workflow_action_email_body_html' => '

Der Workflow hat einen Status erreicht welcher Ihre Aktion benötigt.

+'request_workflow_action_email_body_html' => '

Der Workflow hat einen Status erreicht, welcher Ihre Aktion benötigt.

Dokument: [name]
Version: [version]
@@ -2067,6 +2073,10 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_enableGuestLogin_desc' => 'Wenn Sie Gast-Logins erlauben wollen, dann wählen Sie diese Option an. Anmerkung: Gast-Logins sollten nur in einer vertrauenswürdigen Umgebung erlaubt werden.', 'settings_enableHelp' => 'Hilfe einschalten', 'settings_enableHelp_desc' => 'Ein-/Ausschalten des Hilfe-Links im Hauptmenü.', +'settings_enableHiddenReceipt' => 'Erlaube Empfangsbestätigung durch verborgene Benutzer', +'settings_enableHiddenReceipt_desc' => 'Anwählen, um auch verborgene Benutzer in der Liste der Empfänger eines Dokuments auswählbar zu machen.', +'settings_enableHiddenRevApp' => 'Erlaube Prüfung/Freigabe durch verborgene Benutzer', +'settings_enableHiddenRevApp_desc' => 'Anwählen, um auch verborgene Benutzer in der Liste der Prüfer/Freigeber und für Workflow-Aktionen auswählbar zu machen.', 'settings_enableLanguageSelector' => 'Sprachauswahl einschalten', 'settings_enableLanguageSelector_desc' => 'Zeige Auswahl der verfügbaren Sprachen nachdem man sich angemeldet hat.', 'settings_enableLargeFileUpload' => 'Hochladen von sehr großen Dateien ermöglichen', @@ -2517,6 +2527,14 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'task_core_expireddocs_days' => 'Tage', 'task_core_expireddocs_email' => 'E-Mail', 'task_core_expireddocs_peruser' => 'Pro Benutzer', +'task_core_importdropfolder_dryrun' => 'Testlauf', +'task_core_importdropfolder_dryrun_desc' => 'Im Testlauf werden keine Dokumente importiert und aus dem Ablageordner gelöscht. Es wird lediglich protokoliert.', +'task_core_importdropfolder_keepfile' => 'Datei aus Ablageordner nicht löschen', +'task_core_importdropfolder_keepfile_desc' => 'Einschalten, wenn die importierte Datei aus dem Ablageordner nicht gelöscht werden soll.', +'task_core_importdropfolder_recursive' => 'Rekursiv', +'task_core_importdropfolder_targetfolder' => 'Zielordner', +'task_core_importdropfolder_targetfolder_desc' => 'Die Dateien im Ablageordner werden in diesen SeedDMS-Ordner importiert.', +'task_core_importdropfolder_users' => 'Benutzer', 'task_core_indexingdocs_recreate' => 'Index neu erzeugen', 'task_core_recentchanges_days' => 'Tage', 'task_core_recentchanges_lists' => 'Listen', @@ -2524,6 +2542,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'task_core_statistic_users' => 'Benutzer', 'task_description' => 'Beschreibung', 'task_disabled' => 'Deaktiviert', +'task_failures' => 'fehlerhafte Aufrufe', 'task_frequency' => 'Häufigkeit', 'task_frequency_placeholder' => 'm h d m dow, or @daily, @hourly', 'task_last_run' => 'Letzte Ausführung', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index ae2386d65..d38cbe028 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -270,6 +270,7 @@ $text = array( 'choose_attrdefgroup' => '', 'choose_category' => 'Επιλέξτε', 'choose_group' => 'Επιλέξτε Ομάδα', +'choose_link_type' => '', 'choose_role' => 'Επιλογή Ρόλου', 'choose_target_category' => 'Επιλογή κατηγορίας', 'choose_target_document' => 'Επιλογή εγγράφου', @@ -292,6 +293,7 @@ $text = array( 'comment_changed_email' => '', 'comment_for_current_version' => 'τρέχουσα έκδοση', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Ναι, Θα ήθελα την επαναδημιουργία των δεικτών πλήρους κειμένου', @@ -625,6 +627,7 @@ $text = array( 'filter_for_documents' => '', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => '', +'finished_workflow_log' => '', 'folder' => 'Φάκελος', 'folders' => 'Φάκελοι', 'folders_and_documents_statistic' => 'στατιστικά Φακέλλων και Αρχείων', @@ -683,6 +686,7 @@ $text = array( 'global_attributedefinitions' => 'Ιδιότητες', 'global_default_keywords' => 'Λέξεις Κλειδιά', 'global_document_categories' => 'Κατηγορίες', +'global_link_types' => '', 'global_workflows' => 'Ροές Εργασίας', 'global_workflow_actions' => 'Ενέργειες Ροής Εργασίας', 'global_workflow_states' => 'Καταστάσεις Ροής Εργασίας', @@ -828,6 +832,7 @@ $text = array( 'latest_updateddocuments' => '', 'legend' => 'Ιστορικό', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'Σχετικά Έγγραφα', 'linked_files' => 'Συνδεμένα αρχεία', 'linked_to_current_version' => '', @@ -944,6 +949,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '', 'new_folder' => 'Νέος φάκελλος', +'new_link_type' => '', 'new_password' => 'Νέος κωδικός', 'new_subfolder_email' => 'Νέος φάκελλος', 'new_subfolder_email_body' => 'Νέος φάκελλος @@ -1465,6 +1471,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => '', 'settings_enableHelp' => '', 'settings_enableHelp_desc' => '', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => '', 'settings_enableLanguageSelector_desc' => '', 'settings_enableLargeFileUpload' => '', @@ -1915,6 +1925,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -1922,6 +1940,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 2ffdf995c..5d54dd6f4 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2372), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (2395), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -328,6 +328,7 @@ URL: [url]

', 'choose_attrdefgroup' => 'Choose attribute group', 'choose_category' => 'Please choose', 'choose_group' => 'Choose group', +'choose_link_type' => 'Choose link type', 'choose_role' => 'Choose role', 'choose_target_category' => 'Choose category', 'choose_target_document' => 'Choose document', @@ -350,6 +351,7 @@ URL: [url]

', 'comment_changed_email' => '', 'comment_for_current_version' => 'Version comment', 'configure_extension' => 'Configure extension', +'confirm_change_category' => 'Please confirm changing the category of the selected objects.', 'confirm_change_owner' => 'Please confirm changing the owner of the selected objects.', 'confirm_clear_cache' => 'Would you really like to clear the cache? This will remove all precalculated preview images, javascript and other files.', 'confirm_create_fulltext_index' => 'Yes, I would like to recreate the fulltext index!', @@ -853,6 +855,7 @@ URL: [url]

', 'filter_for_documents' => 'Additional filter for documents', 'filter_for_documents_and_folders' => 'Additional filter for folder and documents', 'filter_for_folders' => 'Additional filter for folders', +'finished_workflow_log' => 'Finished workflows', 'folder' => 'Folder', 'folders' => 'Folders', 'folders_and_documents_statistic' => 'Contents overview', @@ -1031,6 +1034,7 @@ URL: [url]

', 'global_attributedefinitions' => 'Attributes', 'global_default_keywords' => 'Global keywords', 'global_document_categories' => 'Categories', +'global_link_types' => 'Link Types', 'global_workflows' => 'Workflows', 'global_workflow_actions' => 'Workflow Actions', 'global_workflow_states' => 'Workflow States', @@ -1176,6 +1180,7 @@ URL: [url]

', 'latest_updateddocuments' => 'Latest updated documents', 'legend' => 'Legend', 'librarydoc' => 'Document from library', +'linked_document' => 'Linked document', 'linked_documents' => 'Related Documents', 'linked_files' => 'Attachments', 'linked_to_current_version' => 'Linked to current version', @@ -1312,6 +1317,7 @@ User: [username]
URL: [url]

', 'new_file_email_subject' => '[sitename]: [document] - New attachment', 'new_folder' => 'New folder', +'new_link_type' => 'Add link type', 'new_password' => 'New password', 'new_subfolder_email' => 'New folder', 'new_subfolder_email_body' => 'New folder @@ -1366,7 +1372,7 @@ URL: [url]

', 'no_previous_versions' => 'No other versions found', 'no_receipt_needed' => 'There are currently no documents requiring a receipt confirmation.', 'no_review_needed' => 'No review pending.', -'no_revision_date' => 'Ddate of revision missing', +'no_revision_date' => 'Date of revision missing', 'no_revision_needed' => 'No revision pending.', 'no_revision_planed' => 'No revision of document scheduled', 'no_update_cause_locked' => 'You can therefore not update this document. Please contact the locking user.', @@ -2069,6 +2075,10 @@ If you did not receive a password, please use the password forgotten function on 'settings_enableGuestLogin_desc' => 'If you want anybody to login as guest, check this option. Note: guest login should be used only in a trusted environment', 'settings_enableHelp' => 'Enable Help', 'settings_enableHelp_desc' => 'Enable/disable the link to the help screens in the menu', +'settings_enableHiddenReceipt' => 'Allow reception of documents by hidden users', +'settings_enableHiddenReceipt_desc' => 'Enable this if you want hidden users to be listed as recipients of a document.', +'settings_enableHiddenRevApp' => 'Allow review/approval by hidden users', +'settings_enableHiddenRevApp_desc' => 'Enable this if you want hidden users to be listed as reviewers/approvers and for workflow transitions.', 'settings_enableLanguageSelector' => 'Enable Language Selector', 'settings_enableLanguageSelector_desc' => 'Show selector for user interface language after being logged in.', 'settings_enableLargeFileUpload' => 'Enable large file upload', @@ -2105,7 +2115,7 @@ If you did not receive a password, please use the password forgotten function on 'settings_enableRevisionWorkflow_desc' => 'Enable, to be able to run the workflow for revising a document after a given period of time.', 'settings_enableSelfReceipt' => 'Allow reception of documents for logged in user', 'settings_enableSelfReceipt_desc' => 'Enable this if you want the currently logged in user to be listed as recipient for a document.', -'settings_enableSelfRevApp' => 'Allow review/approval for logged in user', +'settings_enableSelfRevApp' => 'Allow review/approval by logged in user', 'settings_enableSelfRevApp_desc' => 'Enable this if you want the currently logged in user to be listed as reviewers/approvers and for workflow transitions.', 'settings_enableSessionList' => 'Enable list of users online in menu', 'settings_enableSessionList_desc' => 'Enable list of currently logged in users in menu.', @@ -2519,6 +2529,14 @@ If you did not receive a password, please use the password forgotten function on 'task_core_expireddocs_days' => 'Days', 'task_core_expireddocs_email' => 'Email', 'task_core_expireddocs_peruser' => 'Per user', +'task_core_importdropfolder_dryrun' => 'Dry run', +'task_core_importdropfolder_dryrun_desc' => 'If this is enabled, no files will be imported and deleted from the drop folder, but all actions are logged.', +'task_core_importdropfolder_keepfile' => 'Keep file in drop folder', +'task_core_importdropfolder_keepfile_desc' => 'If enabled, the imported file will not be deleted from the drop folder.', +'task_core_importdropfolder_recursive' => 'Recursive', +'task_core_importdropfolder_targetfolder' => 'Target folder', +'task_core_importdropfolder_targetfolder_desc' => 'The files in the drop folder will be imported into this SeedDMS folder.', +'task_core_importdropfolder_users' => 'Users', 'task_core_indexingdocs_recreate' => 'Recreate index', 'task_core_recentchanges_days' => 'Days', 'task_core_recentchanges_lists' => 'Lists', @@ -2526,6 +2544,7 @@ If you did not receive a password, please use the password forgotten function on 'task_core_statistic_users' => 'Users', 'task_description' => 'Description', 'task_disabled' => 'Disabled', +'task_failures' => 'failed runs', 'task_frequency' => 'Frequency', 'task_frequency_placeholder' => 'm h d m dow, or @daily, @hourly', 'task_last_run' => 'Last run', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 4909b05fa..21f52bfb6 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Seleccione categoría', 'choose_group' => 'Seleccione grupo', +'choose_link_type' => '', 'choose_role' => 'Seleccione Usuario', 'choose_target_category' => 'Seleccione categoría', 'choose_target_document' => 'Seleccione documento', @@ -312,6 +313,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentario de la versión actual', 'configure_extension' => 'Configurar extensión', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => '¡Sí, quiero regenerar el índice te texto completo¡', @@ -704,6 +706,7 @@ URL: [url]', 'filter_for_documents' => 'Filtro adicional para documentos', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filtro adicional para carpetas', +'finished_workflow_log' => '', 'folder' => 'Carpeta', 'folders' => 'Carpetas', 'folders_and_documents_statistic' => 'Vista general de contenidos', @@ -804,6 +807,7 @@ URL: [url]', 'global_attributedefinitions' => 'Definición de atributos', 'global_default_keywords' => 'Palabras clave globales', 'global_document_categories' => 'Categorías', +'global_link_types' => '', 'global_workflows' => 'Flujos de Trabajo', 'global_workflow_actions' => 'Acciones de Flujo de Trabajo', 'global_workflow_states' => 'Estados de Flujo de Trabajo', @@ -949,6 +953,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Leyenda', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'Documentos relacionados', 'linked_files' => 'Adjuntos', 'linked_to_current_version' => 'Vinculado a la versión actual', @@ -1070,6 +1075,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nuevo adjunto', 'new_folder' => 'Nueva carpeta', +'new_link_type' => '', 'new_password' => 'Nueva contraseña', 'new_subfolder_email' => 'Nueva carpeta', 'new_subfolder_email_body' => 'Nueva carpeta @@ -1635,6 +1641,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'Si quiere que cualquiera acceda como invitado, chequee esta opción. Nota: El acceso de invitado debería permitirse solo en entornos de confianza', 'settings_enableHelp' => 'Activar la ayuda', 'settings_enableHelp_desc' => 'Habilita/Deshabilita el link a pantallas de ayuda en el menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Habilitar selector de idioma', 'settings_enableLanguageSelector_desc' => 'Mostrar selector de lenguaje para usuario despues de identificarse.', 'settings_enableLargeFileUpload' => 'Habilitar la carga de ficheros grandes', @@ -2085,6 +2095,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2092,6 +2110,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 2f588b299..61f31bfc3 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1169), jeromerobert (50), lonnnew (9), Oudiceval (1171) +// Translators: Admin (1170), jeromerobert (50), lonnnew (9), Oudiceval (1171) $text = array( '2_factor_auth' => 'Authentification forte', @@ -319,6 +319,7 @@ URL : [url]

', 'choose_attrdefgroup' => 'Choisir un groupe d’attributs', 'choose_category' => 'Sélectionnez une catégorie', 'choose_group' => 'Choisir un groupe', +'choose_link_type' => '', 'choose_role' => 'Choisir un rôle', 'choose_target_category' => 'Choisir une catégorie', 'choose_target_document' => 'Choisir un document', @@ -341,6 +342,7 @@ URL : [url]

', 'comment_changed_email' => 'Commentaire lors du changement d\'adresse mail', 'comment_for_current_version' => 'Commentaires pour la version actuelle', 'configure_extension' => 'Configurer l’extension', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Voulez-vous vraiment vider le cache ? Cela va effacer toutes les miniatures.', 'confirm_create_fulltext_index' => 'Oui, je souhaite recréer l\'index de recherche plein texte !', @@ -825,6 +827,7 @@ URL : [url]

', 'filter_for_documents' => 'Filtre additionnel pour les documents', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filtre additionnel pour les dossiers', +'finished_workflow_log' => '', 'folder' => 'Dossier', 'folders' => 'Dossiers', 'folders_and_documents_statistic' => 'Aperçu du contenu', @@ -988,6 +991,7 @@ URL : [url]

', 'global_attributedefinitions' => 'Définitions d\'attributs', 'global_default_keywords' => 'Mots-clés globaux', 'global_document_categories' => 'Catégories', +'global_link_types' => '', 'global_workflows' => 'Workflows', 'global_workflow_actions' => 'Actions de Workflow', 'global_workflow_states' => 'États de Workflow', @@ -1133,6 +1137,7 @@ URL : [url]

', 'latest_updateddocuments' => '', 'legend' => 'Légende', 'librarydoc' => 'Document de la bibliothèque', +'linked_document' => '', 'linked_documents' => 'Documents liés', 'linked_files' => 'Fichiers attachés', 'linked_to_current_version' => 'Lié à la version actuelle', @@ -1269,6 +1274,7 @@ Utilisateur : [username]
URL : [url]

', 'new_file_email_subject' => '[sitename] : [document] - Nouveau fichier attaché', 'new_folder' => 'Nouveau dossier', +'new_link_type' => '', 'new_password' => 'Nouveau mot de passe', 'new_subfolder_email' => 'Nouveau dossier', 'new_subfolder_email_body' => 'Nouveau dossier @@ -2022,6 +2028,10 @@ Nom : [username] 'settings_enableGuestLogin_desc' => 'Si vous voulez vous connecter en tant qu\'invité, cochez cette option. Remarque: l\'utilisateur invité ne doit être utilisé que dans un environnement de confiance', 'settings_enableHelp' => 'Activer l\'aide', 'settings_enableHelp_desc' => 'Active/désactive le lien vers les écrans d’aide dans le menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Activer la sélection de langue', 'settings_enableLanguageSelector_desc' => 'Montrer le sélecteur de langue d\'interface après connexion de l\'utilisateur.', 'settings_enableLargeFileUpload' => 'Activer le dépôt de fichiers très volumineux', @@ -2472,6 +2482,14 @@ Nom : [username] 'task_core_expireddocs_days' => 'jours', 'task_core_expireddocs_email' => 'E-mail', 'task_core_expireddocs_peruser' => 'Par utilisateur', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => 'Régénérer l’index', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2479,6 +2497,7 @@ Nom : [username] 'task_core_statistic_users' => '', 'task_description' => 'Description', 'task_disabled' => 'Désactivée', +'task_failures' => '', 'task_frequency' => 'Fréquence', 'task_frequency_placeholder' => 'min h j m jsem', 'task_last_run' => 'Dernière exécution', @@ -2589,7 +2608,7 @@ URL : [url]

', 'update_approvers' => 'Mettre à jour la liste des approbateurs', 'update_document' => 'Mettre à jour', 'update_fulltext_index' => 'Mettre à jour l\'index de recherche plein texte', -'update_fulltext_messages' => '', +'update_fulltext_messages' => 'Messages', 'update_info' => 'Informations de mise à jour', 'update_locked_msg' => 'Ce document est verrouillé.', 'update_recipients' => 'Mettre à jour la liste des destinataires', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index b64e92ec0..f0211529c 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -295,6 +295,7 @@ Internet poveznica: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Molim odaberite', 'choose_group' => 'Odaberite grupu', +'choose_link_type' => '', 'choose_role' => 'Izaberi rolu', 'choose_target_category' => 'Odaberite kategoriju', 'choose_target_document' => 'Odaberite dokument', @@ -317,6 +318,7 @@ Internet poveznica: [url]', 'comment_changed_email' => 'Promjena komentara', 'comment_for_current_version' => 'Verzija komentara', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Da, želim ponovo indeksirati cijeli tekst!', @@ -703,6 +705,7 @@ Internet poveznica: [url]', 'filter_for_documents' => 'Dodatni filter za dokumente', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Dodatni filter za dokumente', +'finished_workflow_log' => '', 'folder' => 'Mapa', 'folders' => 'Mape', 'folders_and_documents_statistic' => 'Pregled sadržaja', @@ -801,6 +804,7 @@ Internet poveznica: [url]', 'global_attributedefinitions' => 'Atributi', 'global_default_keywords' => 'Globalne ključne riječi', 'global_document_categories' => 'Kategorije', +'global_link_types' => '', 'global_workflows' => 'Tokovi rada', 'global_workflow_actions' => 'Radnje toka rada', 'global_workflow_states' => 'Statusi toka rada', @@ -946,6 +950,7 @@ Internet poveznica: [url]', 'latest_updateddocuments' => '', 'legend' => 'Kazalo', 'librarydoc' => 'Dokument iz biblioteke', +'linked_document' => '', 'linked_documents' => 'Vezani dokumenti', 'linked_files' => 'Prilozi', 'linked_to_current_version' => 'Povezano sa trenutnom verzijom', @@ -1066,6 +1071,7 @@ Internet poveznica: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Novi privitak', 'new_folder' => 'Nova mapa', +'new_link_type' => '', 'new_password' => 'Nova lozinka', 'new_subfolder_email' => 'Nova mapa', 'new_subfolder_email_body' => 'Nova mapa @@ -1648,6 +1654,10 @@ Internet poveznica: [url]', 'settings_enableGuestLogin_desc' => 'Ako želite da se bilo tko koristi Gost prijavu, označite ovu opciju. Napomena: gost prijava smije se koristiti samo u pouzdanom okruženju.', 'settings_enableHelp' => 'Omogući pomoć', 'settings_enableHelp_desc' => 'Omogući/onemogući poveznicu do pomoći u izborniku', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Omogući Izbornik jezika', 'settings_enableLanguageSelector_desc' => 'Prikaži izbornik za jezik korisničkog sučelja nakon prijave.', 'settings_enableLargeFileUpload' => 'Omogući učitavanje velikih datoteka', @@ -2098,6 +2108,14 @@ Internet poveznica: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2105,6 +2123,7 @@ Internet poveznica: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 8395d10e5..106f9fd12 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (661), Kalpy (113), ribaz (1036) +// Translators: Admin (667), Kalpy (113), ribaz (1036) $text = array( '2_factor_auth' => 'Kétfaktoros azonosítás', @@ -290,6 +290,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Kérjük válasszon', 'choose_group' => 'Válasszon csoportot', +'choose_link_type' => '', 'choose_role' => 'Válassz szabályt!', 'choose_target_category' => 'Válasszon kategóriát', 'choose_target_document' => 'Válasszon dokumentumot', @@ -312,6 +313,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Megjegyzés az aktuális verzióhoz', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Igen, szeretném újra létrehozni a teljes szöveg indexet!', @@ -354,7 +356,7 @@ URL: [url]', 'current_state' => 'Aktuális állapot', 'current_version' => 'Aktuális verzió', 'daily' => 'Napi', -'dashboard' => '', +'dashboard' => 'Irányítópult', 'databasesearch' => 'Adatbázis keresés', 'database_schema_version' => 'Adatbázis séma verziója', 'data_loading' => 'Kérjük várjon, adatok betöltése folyamatban', @@ -567,7 +569,7 @@ URL: [url]', 'dropfolder_metadata' => '', 'dropupload' => 'Gyors feltöltés', 'drop_files_here' => 'Húzz ide egy fájlt', -'drop_files_here_or_click' => '', +'drop_files_here_or_click' => 'Dobd ide a fájlokat feltöltéshez', 'dump_creation' => 'Adatbázis mentés létrehozása', 'dump_creation_warning' => 'Ezzel a művelettel az adatbázis tartalmáról lehet adatbázis mentést készíteni. Az adatbázis mentés létrehozását követően a mentési állomány a kiszolgáló adat mappájába lesz mentve.', 'dump_list' => 'Meglévő adatbázis metések', @@ -698,6 +700,7 @@ URL: [url]', 'filter_for_documents' => 'További dokumentum szűrők', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'További mappa szűrők', +'finished_workflow_log' => '', 'folder' => 'Mappa', 'folders' => 'Mappák', 'folders_and_documents_statistic' => 'Tartalmak áttekintése', @@ -795,6 +798,7 @@ URL: [url]', 'global_attributedefinitions' => 'Jellemzők', 'global_default_keywords' => 'Globális kulcsszavak', 'global_document_categories' => 'Kategóriák', +'global_link_types' => '', 'global_workflows' => 'Munkafolyamatok', 'global_workflow_actions' => 'Munkafolyamat műveletek', 'global_workflow_states' => 'Munkafolyamat állapotok', @@ -940,6 +944,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Jelmagyarázat', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'Kapcsolódó dokumentumok', 'linked_files' => 'Mellékletek', 'linked_to_current_version' => '', @@ -1061,6 +1066,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Új melléklet', 'new_folder' => 'Új mappa', +'new_link_type' => '', 'new_password' => 'Új jelszó', 'new_subfolder_email' => 'Új mappa', 'new_subfolder_email_body' => 'Új mappa @@ -1440,10 +1446,10 @@ URL: [url]', 'select_group' => 'Csoport kiválasztása', 'select_groups' => 'Kattintson a csoportok kijelöléséhez', 'select_grp_approvers' => 'Kattintson a csoport jóváhagyó kijelöléséhez', -'select_grp_ind_approvers' => '', +'select_grp_ind_approvers' => 'Válassz csoportot', 'select_grp_ind_notification' => '', -'select_grp_ind_recipients' => '', -'select_grp_ind_reviewers' => '', +'select_grp_ind_recipients' => 'Válassz csoportot', +'select_grp_ind_reviewers' => 'Válassz csoportot', 'select_grp_ind_revisors' => '', 'select_grp_notification' => 'Kattintson a csoport értesítés kiválasztásához', 'select_grp_recipients' => '', @@ -1625,6 +1631,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'Ha azt szeretné, hogy bárki be tudjon jelentkezni vendégként, jelölje be ezt a lehetőséget. Megjegyzés: vendég bejelentkezés megbízható környezetben használható', 'settings_enableHelp' => 'Súgó engedélyezése', 'settings_enableHelp_desc' => '', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Engedélyezi a nyelv választót', 'settings_enableLanguageSelector_desc' => 'Megjelenít egy választást a felhasználói felületen a bejelentkezést követően.', 'settings_enableLargeFileUpload' => 'Nagy méretű állományok feltöltésének engedélyezése', @@ -2020,7 +2030,7 @@ URL: [url]', 'status_approval_rejected' => 'Piszkozat elutasítva', 'status_approved' => 'Jóváhagyott', 'status_approver_removed' => 'Jóváhagyó eltávolítva a folyamatból', -'status_change' => '', +'status_change' => 'Státusz változás', 'status_needs_correction' => '', 'status_not_approved' => 'Nem jóváhagyott', 'status_not_receipted' => '', @@ -2075,6 +2085,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2082,6 +2100,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/id_ID/lang.inc b/languages/id_ID/lang.inc index afed1e906..61ed4eb85 100644 --- a/languages/id_ID/lang.inc +++ b/languages/id_ID/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (482), atoz-chevara (835) +// Translators: Admin (485), atoz-chevara (835) $text = array( '2_factor_auth' => '', @@ -82,7 +82,7 @@ $text = array( 'add_workflow_action' => 'Tambah new workflow action', 'add_workflow_state' => 'Tambah new workflow state', 'admin' => '', -'admin_tools' => '', +'admin_tools' => 'Pengaturan Admin', 'all' => 'Semua', 'all_categories' => 'Semua kategori', 'all_documents' => 'Semua Dokumen', @@ -265,7 +265,7 @@ URL: [url]

', 'category_info' => 'Informasi', 'category_in_use' => 'Kategori ini telah digunakan oleh dokumen.', 'category_noname' => 'Tidak ada nama kategori yang diberikan.', -'ca_ES' => '', +'ca_ES' => 'Catalan', 'changelog_loading' => 'Harap tunggu, sampai log perubahan dimuat ...', 'change_assignments' => 'Tetapkan pengulas/pemberi persetujuan', 'change_password' => 'Terapkan kata sandi', @@ -299,6 +299,7 @@ URL: [url]

', 'choose_attrdefgroup' => 'Pilih kelompok label', 'choose_category' => 'Harap pilih', 'choose_group' => 'Pilih kelompok', +'choose_link_type' => '', 'choose_role' => 'Pilih role', 'choose_target_category' => 'Pilih kategori', 'choose_target_document' => 'Pilih dokumen', @@ -321,6 +322,7 @@ URL: [url]

', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentar versi', 'configure_extension' => 'Konfigurasi ekstensi', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Ya, saya ingin membuat ulang indeks teks secara lengkap!', @@ -754,6 +756,7 @@ URL: [url]', 'filter_for_documents' => '', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filter tambahan untuk folder', +'finished_workflow_log' => '', 'folder' => '', 'folders' => 'Folder', 'folders_and_documents_statistic' => '', @@ -862,7 +865,7 @@ Nama awal: [old_name]
Pengguna: [username]
URL: [url]

', 'folder_renamed_email_subject' => '', -'folder_title' => '', +'folder_title' => 'Nama Folder', 'foot_note' => '', 'force_update' => 'Memperbarui', 'friday' => 'Jumat', @@ -879,6 +882,7 @@ URL: [url]

', 'global_attributedefinitions' => 'Atribut', 'global_default_keywords' => 'Kata kunci global', 'global_document_categories' => 'Kategori', +'global_link_types' => '', 'global_workflows' => 'Alur kerja', 'global_workflow_actions' => '', 'global_workflow_states' => 'Status alur kerja', @@ -1024,6 +1028,7 @@ URL: [url]

', 'latest_updateddocuments' => '', 'legend' => 'Legenda', 'librarydoc' => 'Dokumen dari perpustakaan', +'linked_document' => '', 'linked_documents' => 'Dokumen Terkait', 'linked_files' => 'Lampiran', 'linked_to_current_version' => '', @@ -1153,6 +1158,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Lampiran baru', 'new_folder' => 'Folder baru', +'new_link_type' => '', 'new_password' => 'Kata sandi baru', 'new_subfolder_email' => 'Folder baru', 'new_subfolder_email_body' => 'Folder baru @@ -1715,6 +1721,10 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_enableGuestLogin_desc' => '', 'settings_enableHelp' => 'Aktifkan Bantuan', 'settings_enableHelp_desc' => 'Aktifkan/nonaktifkan tautan ke layar bantuan di menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Aktifkan Pemilihan Bahasa', 'settings_enableLanguageSelector_desc' => 'Tampilkan pemilihan bahasa antarmuka pengguna setelah masuk.', 'settings_enableLargeFileUpload' => 'Aktifkan unggahan file besar', @@ -2165,6 +2175,14 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'task_core_expireddocs_days' => 'Hari', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2172,6 +2190,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'task_core_statistic_users' => '', 'task_description' => 'Deskripsi', 'task_disabled' => 'Nonaktif', +'task_failures' => '', 'task_frequency' => 'Frekuensi', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index f2bd256c5..245f85fb4 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2069), rickr (144), s.pnt (26) +// Translators: Admin (2071), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Scegli gruppo di attributi', 'choose_category' => 'Seleziona', 'choose_group' => 'Seleziona il gruppo', +'choose_link_type' => '', 'choose_role' => 'Scegli ruolo', 'choose_target_category' => 'Seleziona la categoria', 'choose_target_document' => 'Seleziona il documento', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Commento per la versione', 'configure_extension' => 'Configura estensione', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Vuoi davvero cancellare la cache? Questo eliminerà tutte le immagini di anteprima precalcolate.', 'confirm_create_fulltext_index' => 'Sì, desidero ricreare l\'indice fulltext!', @@ -708,6 +710,7 @@ URL: [url]', 'filter_for_documents' => 'Filtro aggiuntivo per i documenti', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filtro aggiuntivo per le cartelle', +'finished_workflow_log' => '', 'folder' => 'Cartella', 'folders' => 'Cartelle', 'folders_and_documents_statistic' => 'Visualizzazione generale', @@ -802,6 +805,7 @@ URL: [url]', 'global_attributedefinitions' => 'Definizione attributi', 'global_default_keywords' => 'Parole-chiave globali', 'global_document_categories' => 'Categorie', +'global_link_types' => '', 'global_workflows' => 'Flussi di lavoro', 'global_workflow_actions' => 'Azioni dei flussi di lavoro', 'global_workflow_states' => 'Stati dei flussi di lavoro', @@ -851,7 +855,7 @@ URL: [url]', 'indexing_tasks_in_queue' => 'Operazione di indicizzazione in corso', 'index_converters' => '', 'index_document_added' => '', -'index_document_unchanged' => '', +'index_document_unchanged' => 'Documento non modificato', 'index_document_updated' => '', 'index_done' => 'Eseguito', 'index_error' => 'Errore di indicizzazione', @@ -947,6 +951,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Legenda', 'librarydoc' => 'Documento da cartella', +'linked_document' => '', 'linked_documents' => 'Documenti collegati', 'linked_files' => 'Allegati', 'linked_to_current_version' => 'Collegato al documento attuale', @@ -1068,6 +1073,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nuovo allegato', 'new_folder' => 'Nuova cartella', +'new_link_type' => '', 'new_password' => 'Nuova password', 'new_subfolder_email' => 'Nuova sottocartella', 'new_subfolder_email_body' => 'Nuova sottocartella @@ -1671,6 +1677,10 @@ Name: [username] 'settings_enableGuestLogin_desc' => 'Per impedire il login come ospite, selezionare questa opzione. Nota bene: il login come ospite dovrebbe essere permesso soltanto in un ambiente fidato.', 'settings_enableHelp' => 'Abilita Aiuto', 'settings_enableHelp_desc' => 'Abilita/disabilita il collegamento alle schermate di aiuto nel menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Selezione lingua', 'settings_enableLanguageSelector_desc' => 'Mostra/nasconde il selettore di lingua successivamente al login.', 'settings_enableLargeFileUpload' => 'Abilita caricamento grandi files', @@ -2121,6 +2131,14 @@ Name: [username] 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2128,6 +2146,7 @@ Name: [username] 'task_core_statistic_users' => '', 'task_description' => 'Descrizione', 'task_disabled' => 'Disabilitata', +'task_failures' => '', 'task_frequency' => 'Frequenza', 'task_frequency_placeholder' => '', 'task_last_run' => 'Ultima esecuzione', @@ -2227,7 +2246,7 @@ URL: [url]', 'update_approvers' => 'Aggiornamento lista approvatori', 'update_document' => 'Aggiorna documento', 'update_fulltext_index' => 'Aggiorna indice fulltext', -'update_fulltext_messages' => '', +'update_fulltext_messages' => 'Messaggi', 'update_info' => 'Aggiorna informazioni', 'update_locked_msg' => 'Questo documento è bloccato.', 'update_recipients' => 'Aggiorna lista cartelle', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index aef5bb430..d90405834 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (962), daivoc (421), fofwisdom (166) +// Translators: Admin (965), daivoc (421), fofwisdom (166) $text = array( '2_factor_auth' => '이중 인증', @@ -148,7 +148,7 @@ URL: [url]', 'archive_creation_warning' => '본 작업은 전체 DMS 폴더 내의 파일 모두에 아카이브를 만듭니다. 생성한 아카이브는 서버의 데이터 폴더에 저장됩니다.
경고 : 이렇게 만들어진 자료는 서버의 백업과 같이 가독성이 저하 됩니다.', 'ar_EG' => '아랍어', 'assign_approvers' => '승인자 지정', -'assign_recipients' => '', +'assign_recipients' => '수신자를 할당하여 주십시요.', 'assign_reviewers' => '검토자 배정', 'assign_user_property_to' => '사용자 속성에 할당', 'assumed_released' => 'Assumed released', @@ -297,6 +297,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => '선택하세요', 'choose_group' => '그룹을 선택', +'choose_link_type' => '', 'choose_role' => '', 'choose_target_category' => '카테고리 선택', 'choose_target_document' => '문서 선택', @@ -319,6 +320,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => '버전 주석', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => '예, 전체 텍스트 인덱스를 다시 만들고 싶습니다!', @@ -365,7 +367,7 @@ URL: [url]', 'dashboard' => '', 'databasesearch' => '데이터베이스 검색', 'database_schema_version' => '', -'data_loading' => '', +'data_loading' => '데이터 로딩이 완료될 때까지 잠시만 기다려주십시요.', 'date' => '날짜', 'days' => '일', 'debug' => '디버그', @@ -704,6 +706,7 @@ URL: [url]', 'filter_for_documents' => '문서에 대한 추가 필터', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => '폴더에 대한 추가 필터', +'finished_workflow_log' => '', 'folder' => '폴더', 'folders' => '폴더', 'folders_and_documents_statistic' => '개요 내용', @@ -802,6 +805,7 @@ URL: [url]', 'global_attributedefinitions' => '속성', 'global_default_keywords' => '글로벌 키워드', 'global_document_categories' => '카테고리', +'global_link_types' => '', 'global_workflows' => '워크플로우', 'global_workflow_actions' => '작업 워크플로우', 'global_workflow_states' => '워크플로우 상태', @@ -947,6 +951,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => '전설', 'librarydoc' => '라이브러리의 문서', +'linked_document' => '', 'linked_documents' => '관련 문서', 'linked_files' => '첨부', 'linked_to_current_version' => '', @@ -1068,6 +1073,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename] : [document] - 새 첨부 파일', 'new_folder' => '새 폴더', +'new_link_type' => '', 'new_password' => '새 암호', 'new_subfolder_email' => '새 폴더', 'new_subfolder_email_body' => '새 폴더 @@ -1459,7 +1465,7 @@ URL : [url]', 'select_grp_approvers' => '그룹 승인을 선택합니다', 'select_grp_ind_approvers' => '그룹 승인 선택', 'select_grp_ind_notification' => '알림 그룹 선택', -'select_grp_ind_recipients' => '', +'select_grp_ind_recipients' => '그룹 선택을 하여 주십시요.', 'select_grp_ind_reviewers' => '그룹 검토자 선택', 'select_grp_ind_revisors' => '', 'select_grp_notification' => '그룹 통지를 선택합니다', @@ -1642,6 +1648,10 @@ URL : [url]', 'settings_enableGuestLogin_desc' => '누군가를 게스트로 로그인하게 할경우 이 옵션을 선택하세요. 참고 : 게스트 로그인은 신뢰할 수 있는 환경에서 사용되어야 한다', 'settings_enableHelp' => '도움말 설정', 'settings_enableHelp_desc' => '도움말 설명', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => '언어 선택기 허용', 'settings_enableLanguageSelector_desc' => '로그인 된 후 사용자 인터페이스 언어 선택기 보기 . 이것은 로그인 페이지에서 언어 선택에 영향을 주지 않습니다.', 'settings_enableLargeFileUpload' => '대용량 파일 업로드 사용', @@ -2092,6 +2102,14 @@ URL : [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2099,6 +2117,7 @@ URL : [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index c1faa3dea..c9e830f06 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -293,6 +293,7 @@ URL: [url]', 'choose_attrdefgroup' => 'ເລືອກກຸ່ມແອັດທິບິວ', 'choose_category' => 'ກະລຸນາເລືອກ', 'choose_group' => 'ເລືອກກຸຸ່ມ', +'choose_link_type' => '', 'choose_role' => 'ເລືອກບົດບາດ', 'choose_target_category' => 'ເລືອກໝວດ', 'choose_target_document' => 'ເລືອກເອກະສານ', @@ -315,6 +316,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'ຄວາມຄິດເຫັນກ່ຽວກັບເວີຊັ້ນ', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'ເຈົ້າຕ້ອງການລົບແຄຣຫຼືບໍ່? ການດຳເນີນການນີ້ຈະລົບພາບຕົວຢ່າງທັງໝົດທີມີການຄຳນວນລ່ວງໜ້າ', 'confirm_create_fulltext_index' => 'ແມ່ນແລ້ວ, ຂ້ອຍຕ້ອງການສ້າງດັດສະນີຂໍ້ມູນເຕັມ', @@ -701,6 +703,7 @@ URL: [url]', 'filter_for_documents' => 'ຕົວກອງເພີ່ມເຕົມສຳລັບເອກະສານ', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'ຕົວກອງເພີ່ມເຕີມສຳລັບໂຟລເດີ', +'finished_workflow_log' => '', 'folder' => 'ໂຟລເດີ', 'folders' => 'ໂຟລເດີ', 'folders_and_documents_statistic' => 'ພາບລວມເນື້ອຫາ', @@ -799,6 +802,7 @@ URL: [url]', 'global_attributedefinitions' => 'ແອັດທີບິວ', 'global_default_keywords' => 'ຄຳຫຼັກທົ່ວໂລກ', 'global_document_categories' => 'ຫມວດໝູ່', +'global_link_types' => '', 'global_workflows' => 'ເວີກໂຟລ', 'global_workflow_actions' => 'ການດຳເນີນການເວີກໂຟລ', 'global_workflow_states' => 'ຂັນຕອນການເຮັດວຽກຂອງລັດ', @@ -944,6 +948,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'ຕຳນານ', 'librarydoc' => 'ເອກະສານຈາກຫ້ອງສະໝຸດ', +'linked_document' => '', 'linked_documents' => 'ເອກະສານທີ່ກ່ຽວຂອງ', 'linked_files' => 'ສິ່ງທີ່ແນບມາ', 'linked_to_current_version' => 'ເຊື່ອໂຍງກັບເວີຊັນປະຈຸບັນແລ້ວ', @@ -1065,6 +1070,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]:[document] - ແນບໄຟລໄຫມ່', 'new_folder' => 'ແຟ້ມໄຫມ່', +'new_link_type' => '', 'new_password' => 'ລະຫັດຜ່ານໄຫມ່', 'new_subfolder_email' => 'ແຟ້ມໄຫມ່', 'new_subfolder_email_body' => 'ແຟ້ມໄຫມ່ @@ -1668,6 +1674,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'ຖ້າເຈົ້າຕ້ອງການໃຫ້ທຸກຄົນລົງຊື່ເຂົ້າໄຊ້ເປັນຜູ້ຢຽມຊົມໃຫ້ເລືອກຕົວເລືອກນີ້ ໝາຍເຫດ: ການເຂົ້າສູ້ລະບົບແແບຜູ້ຢຽມຊົມຄວນໄຊ້ສະເພາະໃນລະບົບທີ່ໜ້າເຊື່ອຖືໄດ້ເທົ່ານັ້ນ', 'settings_enableHelp' => 'ເປີດໄຊ້ງານຄວາມຊ່ວຍເຫຼືອ', 'settings_enableHelp_desc' => 'ເປີດ/ປິດ ການເຊື່ອມໂຍງໄປຍັງໜ້າຈໍຄວາມຊ່ວຍເຫຼືອໃນເມນູ', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'ເປີດໄຊ້ຕົວເລືອກພາສາ', 'settings_enableLanguageSelector_desc' => 'ສະແດງຕົວເລືອກສຳລັບພາສາອິນເທິເຟກ ສຳລັບຜູ້ໄຊ້ຫຼັງຈາກທີ່ເຂົ້າລະບົບ', 'settings_enableLargeFileUpload' => 'ເປີດໄຊ້ງານການອັບໂຫລດໄຟລຂະໜາດໃຫ່ຍ', @@ -2118,6 +2128,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2125,6 +2143,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index 41d7b796e..cbe75f7c6 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Velg egenskaps gruppe', 'choose_category' => 'Venligst velg', 'choose_group' => 'Velg gruppe', +'choose_link_type' => '', 'choose_role' => 'Velg rolle', 'choose_target_category' => 'Velg kategori', 'choose_target_document' => 'Velg dokument', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => 'Forandre e-post', 'comment_for_current_version' => 'Versjonskommentar', 'configure_extension' => 'Konfigurere utvidelse', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Vil du virkelig tømme hurtigbufferen? Dette vil fjerne alle forhåndsberegnede forhåndsbilder.', 'confirm_create_fulltext_index' => 'Ja, jeg vil gjenskape fulltekstindeksen!', @@ -715,6 +717,7 @@ URL: [url]', 'filter_for_documents' => 'Tilleggsfilter for dokumentet', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Tilleggsfilter for mapper', +'finished_workflow_log' => '', 'folder' => 'Mappe', 'folders' => 'Mapper', 'folders_and_documents_statistic' => 'Innholdsoversikt', @@ -820,6 +823,7 @@ URL: [url]', 'global_attributedefinitions' => 'Egenskaper', 'global_default_keywords' => 'Globale søkeord', 'global_document_categories' => 'Kategorier', +'global_link_types' => '', 'global_workflows' => 'Arbeidsflyt', 'global_workflow_actions' => 'Arbeidsflyt-handlinger', 'global_workflow_states' => 'Arbeidsflyt-status', @@ -965,6 +969,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Innholdsfortegnelse', 'librarydoc' => 'Dokumenter fra biblioteket', +'linked_document' => '', 'linked_documents' => 'Relaterte dokumenter', 'linked_files' => 'Vedlegg', 'linked_to_current_version' => 'Link til nåverende versjon', @@ -1086,6 +1091,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nytt bilag', 'new_folder' => 'Ny mappe', +'new_link_type' => '', 'new_password' => 'Nytt passord', 'new_subfolder_email' => 'Ny mappe', 'new_subfolder_email_body' => 'Ny mappe @@ -1681,6 +1687,10 @@ Bruker: [username] 'settings_enableGuestLogin_desc' => 'Hvis du vil at noen skal logge inn som gjest, sjekk dette alternativet. Merk: innlogging av gjester skal bare brukes i et pålitelig miljø', 'settings_enableHelp' => 'Aktiver hjelp', 'settings_enableHelp_desc' => 'Aktiver/deaktiver koblingen til hjelpeskjermbildene i menyen', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Aktiver språkvelger', 'settings_enableLanguageSelector_desc' => 'Vis velger for språk for bruker etter at du er logget inn.', 'settings_enableLargeFileUpload' => 'Aktiver for store filopplastinger', @@ -2131,6 +2141,14 @@ Bruker: [username] 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2138,6 +2156,7 @@ Bruker: [username] 'task_core_statistic_users' => '', 'task_description' => 'Beskrivelse', 'task_disabled' => 'Deaktivert', +'task_failures' => '', 'task_frequency' => 'Frekvens', 'task_frequency_placeholder' => '', 'task_last_run' => 'Siste kjøring', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index f1d9a266c..c176c2089 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -288,6 +288,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Kies een attribuutdefinitie-groep', 'choose_category' => 'Selecteer a.u.b.', 'choose_group' => 'Selecteer Groep', +'choose_link_type' => '', 'choose_role' => 'Selecteer een rol', 'choose_target_category' => 'Selecteer categorie', 'choose_target_document' => 'Selecteer Document', @@ -310,6 +311,7 @@ URL: [url]', 'comment_changed_email' => 'Gewijzigde email', 'comment_for_current_version' => 'Versie van het commentaar', 'configure_extension' => 'Configureer extensie', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Ja, ik wil de cache opschonen!', 'confirm_create_fulltext_index' => 'Ja, Ik wil de fulltext index opnieuw maken!', @@ -708,6 +710,7 @@ URL: [url]', 'filter_for_documents' => 'Extra filter voor documenten', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Extra filter voor mappen', +'finished_workflow_log' => '', 'folder' => 'Map', 'folders' => 'Mappen', 'folders_and_documents_statistic' => 'Inhoudsopgave', @@ -813,6 +816,7 @@ URL: [url]', 'global_attributedefinitions' => 'attribuutdefinities', 'global_default_keywords' => 'Algemene sleutelwoorden', 'global_document_categories' => 'Categorieën', +'global_link_types' => '', 'global_workflows' => 'Workflows', 'global_workflow_actions' => 'Workflow-acties', 'global_workflow_states' => 'Workflow-status', @@ -958,6 +962,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Legenda', 'librarydoc' => 'Bibliotheek', +'linked_document' => '', 'linked_documents' => 'Gerelateerde Documenten', 'linked_files' => 'Bijlagen', 'linked_to_current_version' => 'Bijlagen bij huidige versie', @@ -1078,6 +1083,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nieuwe bijlage', 'new_folder' => 'Nieuwe map', +'new_link_type' => '', 'new_password' => 'Nieuw wachtwoord', 'new_subfolder_email' => 'Nieuwe map', 'new_subfolder_email_body' => 'Nieuwe map @@ -1680,6 +1686,10 @@ Name: [username] 'settings_enableGuestLogin_desc' => 'Als U iemand wilt laten inloggen als gast, schakel deze optie in. Opmerking: Gast login kan het beste alleen in een beveiligde omgeving ingeschakeld worden', 'settings_enableHelp' => 'Hulp aanzetten', 'settings_enableHelp_desc' => 'Hulp aanzetten', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Taal activerenen', 'settings_enableLanguageSelector_desc' => 'Laat selector zien voor taalinterface, nadat gebruikers inloggen.', 'settings_enableLargeFileUpload' => 'Grote bestanden uploaden', @@ -2130,6 +2140,14 @@ Name: [username] 'task_core_expireddocs_days' => 'Dagen', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2137,6 +2155,7 @@ Name: [username] 'task_core_statistic_users' => '', 'task_description' => 'Omschrijving', 'task_disabled' => 'Inactief', +'task_failures' => '', 'task_frequency' => 'Frequentie', 'task_frequency_placeholder' => '', 'task_last_run' => 'Laatst uitgevoerd', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index c637cac5f..a0d9eb7bc 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -283,6 +283,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Wybierz grupę atrybutów', 'choose_category' => 'Proszę wybrać', 'choose_group' => 'Wybierz grupę', +'choose_link_type' => '', 'choose_role' => 'Wybierz rolę', 'choose_target_category' => 'Wybierz kategorię', 'choose_target_document' => 'Wybierz dokument', @@ -305,6 +306,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Komentarz do wersji', 'configure_extension' => 'Konfiguruj rozszerzenie', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Czy naprawdę chcesz wyczyścić pamięć podręczną? Spowoduje to usunięcie wszystkich wstępnie obliczonych obrazów podglądu.', 'confirm_create_fulltext_index' => 'Tak, chcę ponownie utworzyć indeks pełnotekstowy.', @@ -691,6 +693,7 @@ URL: [url]', 'filter_for_documents' => 'Dodatkowe filtrowanie dla dokumentów', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Dodatkowe filtrowanie dla folderów', +'finished_workflow_log' => '', 'folder' => 'Folder', 'folders' => 'Foldery', 'folders_and_documents_statistic' => 'Podsumowanie zawartości', @@ -789,6 +792,7 @@ URL: [url]', 'global_attributedefinitions' => 'Definicje atrybutów', 'global_default_keywords' => 'Globalne słowa kluczowe', 'global_document_categories' => 'Kategorie', +'global_link_types' => '', 'global_workflows' => 'Procesy', 'global_workflow_actions' => 'Akcje procesu', 'global_workflow_states' => 'Statusy procesu', @@ -934,6 +938,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Legenda', 'librarydoc' => 'Nie zmieniaj', +'linked_document' => '', 'linked_documents' => 'Powiązane dokumenty', 'linked_files' => 'Załączniki', 'linked_to_current_version' => 'Link do obecnej wersji', @@ -1055,6 +1060,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nowy załącznik', 'new_folder' => 'Nowy folder', +'new_link_type' => '', 'new_password' => 'Nowe hasło', 'new_subfolder_email' => 'Nowy folder', 'new_subfolder_email_body' => 'Nowy folder @@ -1611,6 +1617,10 @@ Name: [username] 'settings_enableGuestLogin_desc' => 'Jeśli chcesz dowolnej osobie zalogować się jako gość, zaznacz tę opcję. Uwaga: logowanie gościa powinno być używane wyłącznie w zaufanym środowisku.', 'settings_enableHelp' => 'Włącz pomoc', 'settings_enableHelp_desc' => 'Włączenie pomocy w menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Włącz wybór języka', 'settings_enableLanguageSelector_desc' => 'Pokaż selektor języka dla interfejsu użytkownika po zalogowaniu To nie ma wpływu na wybór języka na stronie logowania.', 'settings_enableLargeFileUpload' => 'Zezwól na wczytywanie dużych plików', @@ -2061,6 +2071,14 @@ Name: [username] 'task_core_expireddocs_days' => 'Rdzeń zadania wygasa', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2068,6 +2086,7 @@ Name: [username] 'task_core_statistic_users' => '', 'task_description' => 'Opis zadania', 'task_disabled' => 'Zadanie wyłączone', +'task_failures' => '', 'task_frequency' => 'Częstotliwość zadania', 'task_frequency_placeholder' => '', 'task_last_run' => 'Ostatnie uruchomienie zadania', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 205352b1c..bb653cc35 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Escolher o grupo de atributos', 'choose_category' => 'Por favor escolha', 'choose_group' => 'Escolher grupo', +'choose_link_type' => '', 'choose_role' => 'Escolher o papel', 'choose_target_category' => 'Escolha a categoria', 'choose_target_document' => 'Escolha documento', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => 'comentário alterado email', 'comment_for_current_version' => 'Comentário para versão atual', 'configure_extension' => 'Configurar extensão', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Você realmente gostaria de limpar o cache? Isso removerá todas as imagens de pré-visualização.', 'confirm_create_fulltext_index' => 'Sim, eu gostaria de recriar o índice de texto completo!', @@ -715,6 +717,7 @@ URL: [url]', 'filter_for_documents' => 'Filtro adicional para documentos', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filtro adicional para pasta', +'finished_workflow_log' => '', 'folder' => 'Pasta', 'folders' => 'Pastas', 'folders_and_documents_statistic' => 'Relatórios de pastas e documentos', @@ -820,6 +823,7 @@ URL: [url]', 'global_attributedefinitions' => 'Atributos', 'global_default_keywords' => 'palavras-chave globais', 'global_document_categories' => 'Categorias', +'global_link_types' => '', 'global_workflows' => 'Fluxos de trabalho', 'global_workflow_actions' => 'Ações de fluxo de trabalho', 'global_workflow_states' => 'Estado de fluxos de trabalho', @@ -965,6 +969,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Legenda', 'librarydoc' => 'Documento da biblioteca', +'linked_document' => '', 'linked_documents' => 'Documentos relacionados', 'linked_files' => 'Arquivos anexados', 'linked_to_current_version' => 'Vinculado à versão atual', @@ -1085,6 +1090,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Novo anexo', 'new_folder' => 'Nova pasta', +'new_link_type' => '', 'new_password' => 'Nova senha', 'new_subfolder_email' => 'Nova pasta', 'new_subfolder_email_body' => 'Nova pasta @@ -1687,6 +1693,10 @@ Nome: [username] 'settings_enableGuestLogin_desc' => 'Se você quiser quiser permitir login como convidado, marque esta opção. Nota: login de convidado deve ser usado apenas em um ambiente de confiança', 'settings_enableHelp' => 'Habilitar Ajuda', 'settings_enableHelp_desc' => 'Ativar/desativar o link para telas de ajuda no menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Ativar Seletor de Idioma', 'settings_enableLanguageSelector_desc' => 'Mostrar seletor para idioma de interface de usuário após login.', 'settings_enableLargeFileUpload' => 'Ativar envio de grandes arquivos', @@ -2137,6 +2147,14 @@ Nome: [username] 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2144,6 +2162,7 @@ Nome: [username] 'task_core_statistic_users' => '', 'task_description' => 'Descrição', 'task_disabled' => 'Desativado', +'task_failures' => '', 'task_frequency' => 'Frequência', 'task_frequency_placeholder' => '', 'task_last_run' => 'Última execução', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index f9c63081d..ba723ae11 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Vă rugăm să alegeți', 'choose_group' => 'Alege grup', +'choose_link_type' => '', 'choose_role' => '', 'choose_target_category' => 'Alege categorie', 'choose_target_document' => 'Alege document', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Comentariu versiune', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Da, aș dori să recreeze indexul pentru tot textul!', @@ -703,6 +705,7 @@ URL: [url]', 'filter_for_documents' => 'Filtru suplimentar pentru documente', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Filtru suplimentar pentru foldere', +'finished_workflow_log' => '', 'folder' => 'Folder', 'folders' => 'Foldere', 'folders_and_documents_statistic' => 'Privire de ansamblu asupra continutului', @@ -801,6 +804,7 @@ URL: [url]', 'global_attributedefinitions' => 'Atribute', 'global_default_keywords' => 'Cuvinte cheie globale', 'global_document_categories' => 'Categorii', +'global_link_types' => '', 'global_workflows' => 'Workflow-uri', 'global_workflow_actions' => 'Actiuni Workflow', 'global_workflow_states' => 'Stări Workflow', @@ -946,6 +950,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Legendă', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'Documente relationate', 'linked_files' => 'Atașamente', 'linked_to_current_version' => '', @@ -1067,6 +1072,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Atașament nou', 'new_folder' => 'Folder nou', +'new_link_type' => '', 'new_password' => 'Parolă noua', 'new_subfolder_email' => 'Folder nou', 'new_subfolder_email_body' => 'Folder nou @@ -1649,6 +1655,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'Bifați această opțiune, dacă doriți ca cineva să te poată autentifica ca oaspete. Notă: autentificare oaspete trebuie utilizată numai într-un mediu de încredere', 'settings_enableHelp' => 'Activeaza Help', 'settings_enableHelp_desc' => 'Activeaza/Dezactiveaza link-ul pentru ecranul de ajutor in meniu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Activare Selector Limba', 'settings_enableLanguageSelector_desc' => 'Arată selectorul de limbă pentru interfața cu utilizatorul după ce a fost autentificat.', 'settings_enableLargeFileUpload' => 'Activare încărcare fișier mare', @@ -2099,6 +2109,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2106,6 +2124,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index a023e13b5..99233a6e8 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Выберите группу атрибута', 'choose_category' => 'Выберите категорию', 'choose_group' => 'Выберите группу', +'choose_link_type' => '', 'choose_role' => 'Выберите роль', 'choose_target_category' => 'Выберите категорию', 'choose_target_document' => 'Выберите документ', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => 'Сообщение об изменении комментария', 'comment_for_current_version' => 'Комментарий версии', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Подтвердить очистку кеша', 'confirm_create_fulltext_index' => 'Да, пересоздать полнотекстовый индекс!', @@ -703,6 +705,7 @@ URL: [url]', 'filter_for_documents' => 'Дополнительный фильтр по документам', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Дополнительный фильтр по папкам', +'finished_workflow_log' => '', 'folder' => 'Каталог', 'folders' => 'кат.', 'folders_and_documents_statistic' => 'Обзор содержимого', @@ -801,6 +804,7 @@ URL: [url]', 'global_attributedefinitions' => 'Атрибуты', 'global_default_keywords' => 'Глобальные метки', 'global_document_categories' => 'Категории', +'global_link_types' => '', 'global_workflows' => 'Процессы', 'global_workflow_actions' => 'Действия процессов', 'global_workflow_states' => 'Статусы процессов', @@ -946,6 +950,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Обозначения', 'librarydoc' => 'Документ из библиотеки', +'linked_document' => '', 'linked_documents' => 'Связанные документы', 'linked_files' => 'Приложения', 'linked_to_current_version' => '', @@ -1066,6 +1071,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: новое приложение к документу «[document]»', 'new_folder' => 'Новый каталог', +'new_link_type' => '', 'new_password' => 'Новый пароль', 'new_subfolder_email' => 'Новый каталог', 'new_subfolder_email_body' => 'Новый каталог @@ -1656,6 +1662,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'Чтобы разрешить гостевой вход, включите эту опцию. Гостевой вход должен использоваться только в доверенной среде.', 'settings_enableHelp' => 'Включить Помощь', 'settings_enableHelp_desc' => 'Включить/отключить ссылку на подсказки "Помощь" в меню', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Включить выбор языка', 'settings_enableLanguageSelector_desc' => 'Показывать меню выбора языка пользовательского интерфейса после входа в систему. Это не влияет на выбор языка на странице входа.', 'settings_enableLargeFileUpload' => 'Включить Java-загрузчик файлов', @@ -2106,6 +2116,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2113,6 +2131,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 95d0c4abd..471e3b8be 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Vyberte skupinu atribútov', 'choose_category' => 'Vyberte prosím', 'choose_group' => 'Vyberte skupinu', +'choose_link_type' => '', 'choose_role' => 'Vybrať rolu', 'choose_target_category' => 'Vybrať kategóriu', 'choose_target_document' => 'Vyberte dokument', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => 'Nepreložené', 'comment_for_current_version' => 'Version comment', 'configure_extension' => 'Configure extension', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Chcete naozaj vyčistiť vyrovnávaciu pamäť? Tým sa odstránia všetky predbežne náhľady obrázkov.', 'confirm_create_fulltext_index' => 'Áno, chcel by som obnoviť fullttext index!', @@ -715,6 +717,7 @@ URL: [url]', 'filter_for_documents' => 'Ďalší filter pre dokumenty', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Ďalší filter pre zložky', +'finished_workflow_log' => '', 'folder' => 'Zložka', 'folders' => 'Zložky', 'folders_and_documents_statistic' => 'Prehľad zložiek a dokumentov', @@ -820,6 +823,7 @@ URL: [url]', 'global_attributedefinitions' => 'Atribúty', 'global_default_keywords' => 'Globálne kľúčové slová', 'global_document_categories' => 'Kategórie', +'global_link_types' => '', 'global_workflows' => 'Pracovné postupy', 'global_workflow_actions' => 'Workflow Actions', 'global_workflow_states' => 'Workflow States', @@ -965,6 +969,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Legenda', 'librarydoc' => 'Dokument z knižnice', +'linked_document' => '', 'linked_documents' => 'Súvisiace dokumenty', 'linked_files' => 'Prílohy', 'linked_to_current_version' => 'Prepojené s aktuálnou verziou', @@ -1086,6 +1091,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Nová príloha', 'new_folder' => 'Nová zložka', +'new_link_type' => '', 'new_password' => 'Nové heslo', 'new_subfolder_email' => 'Nová zložka', 'new_subfolder_email_body' => 'Nová zložka @@ -1689,6 +1695,10 @@ Meno: [username] 'settings_enableGuestLogin_desc' => 'If you want anybody to login as guest, check this option. Note: guest login should be used only in a trusted environment', 'settings_enableHelp' => 'Povoliť nápovedu', 'settings_enableHelp_desc' => 'Enable/disable the link to the help screens in the menu', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Aktivovať voľbu jazyka', 'settings_enableLanguageSelector_desc' => 'Zobraziť výber pre jazyk používateľského rozhrania potom, čo bol prihlásený.', 'settings_enableLargeFileUpload' => 'Povoliť nahrávať veľké súbory', @@ -2139,6 +2149,14 @@ Meno: [username] 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2146,6 +2164,7 @@ Meno: [username] 'task_core_statistic_users' => '', 'task_description' => 'Description', 'task_disabled' => 'Disabled', +'task_failures' => '', 'task_frequency' => 'Frequency', 'task_frequency_placeholder' => '', 'task_last_run' => 'Last run', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index dbd555692..f933518c6 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -296,6 +296,7 @@ URL: [url]', 'choose_attrdefgroup' => 'Välj gruppattribut', 'choose_category' => 'Välj', 'choose_group' => 'Välj grupp', +'choose_link_type' => '', 'choose_role' => 'Välj roll', 'choose_target_category' => 'Välj kategori', 'choose_target_document' => 'Välj dokument', @@ -318,6 +319,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Kommentar till versionen', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => 'Vill du verkligen rensa cachen? Detta kommer att ta bort alla förlagrade bilder för förhandsvisning.', 'confirm_create_fulltext_index' => 'Ja, jag vill återskapa fulltext-sökindex!', @@ -709,6 +711,7 @@ URL: [url]', 'filter_for_documents' => 'Tilläggsfilter för dokument', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Tilläggsfilter för kataloger', +'finished_workflow_log' => '', 'folder' => 'Katalog', 'folders' => 'Kataloger', 'folders_and_documents_statistic' => 'Innehållsöversikt', @@ -807,6 +810,7 @@ URL: [url]', 'global_attributedefinitions' => 'Attributdefinitioner', 'global_default_keywords' => 'Globala nyckelord', 'global_document_categories' => 'Kategorier', +'global_link_types' => '', 'global_workflows' => 'Arbetsflöden', 'global_workflow_actions' => 'Åtgärder för arbetsflödet', 'global_workflow_states' => 'Status för arbetsflödet', @@ -952,6 +956,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Förteckning', 'librarydoc' => 'Dokument från bibliotek', +'linked_document' => '', 'linked_documents' => 'Relaterade dokument', 'linked_files' => 'Bilagor', 'linked_to_current_version' => 'Länkad till nuvarande version', @@ -1073,6 +1078,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Ny bilaga', 'new_folder' => 'Ny katalog', +'new_link_type' => '', 'new_password' => 'Nytt lösenord', 'new_subfolder_email' => 'Ny katalog', 'new_subfolder_email_body' => 'Ny katalog @@ -1662,6 +1668,10 @@ Kommentar: [comment]', 'settings_enableGuestLogin_desc' => 'Om du vill att alla ska kunna logga in som gäst, aktivera denna option. OBS! Gästinloggning bör endast användas i en säker omgivning', 'settings_enableHelp' => 'Aktivera hjälp', 'settings_enableHelp_desc' => 'Aktiverar hjälpfunktion i menyn', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Aktivera språkval', 'settings_enableLanguageSelector_desc' => 'Visa språkurval i användargränssnittet efter inloggning.', 'settings_enableLargeFileUpload' => 'Aktivera uppladdning av stora filer', @@ -2112,6 +2122,14 @@ Kommentar: [comment]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2119,6 +2137,7 @@ Kommentar: [comment]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 50b37bf26..75f486c56 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Lütfen seçiniz', 'choose_group' => 'Grup seçiniz', +'choose_link_type' => '', 'choose_role' => '', 'choose_target_category' => 'Kategori seçiniz', 'choose_target_document' => 'Doküman seçiniz', @@ -312,6 +313,7 @@ URL: [url]', 'comment_changed_email' => '', 'comment_for_current_version' => 'Versiyon açıklaması', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Evet, tam metin indeksini yeniden oluşturmak istiyorum!', @@ -697,6 +699,7 @@ URL: [url]', 'filter_for_documents' => 'Dokümanlar için ek filtreler', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Klasörler için ek filtreler', +'finished_workflow_log' => '', 'folder' => 'Klasör', 'folders' => 'Klasör', 'folders_and_documents_statistic' => 'İçeriğe Bakış', @@ -793,6 +796,7 @@ URL: [url]', 'global_attributedefinitions' => 'Nitelikler', 'global_default_keywords' => 'Global anahtar kelimeler', 'global_document_categories' => 'Kategoriler', +'global_link_types' => '', 'global_workflows' => 'İş akışları', 'global_workflow_actions' => 'İş Akış Eylemleri', 'global_workflow_states' => 'İş Akış Durumları', @@ -938,6 +942,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Lejand', 'librarydoc' => '', +'linked_document' => '', 'linked_documents' => 'İlgili Dokümanlar', 'linked_files' => 'Ekler', 'linked_to_current_version' => '', @@ -1059,6 +1064,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - Yeni ek', 'new_folder' => 'Yeni klasör', +'new_link_type' => '', 'new_password' => 'Yeni parola', 'new_subfolder_email' => 'Yeni klasör', 'new_subfolder_email_body' => 'Yeni klasör @@ -1626,6 +1632,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'Herhangi birinin misafir olarak giriş yapabilmesini isterseniz bu seçeneği etkinleştirebilirsiniz. Not: Misafir girişinin sadece güvenilir ortamlar için açmanız önerilir.', 'settings_enableHelp' => 'Yardımı aktifleştir', 'settings_enableHelp_desc' => '', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Dil Seçimini Etkinleştir', 'settings_enableLanguageSelector_desc' => 'Kullanıcının giriş yaparken dil seçimi yapabilmesi için bu seçeneği etkinleştirin.', 'settings_enableLargeFileUpload' => 'Büyük dosya yüklemeyi etkinleştir', @@ -2076,6 +2086,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2083,6 +2101,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index f554f79c9..653d01857 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1352) +// Translators: Admin (1365) $text = array( '2_factor_auth' => '', @@ -35,7 +35,7 @@ $text = array( 'abbr_week' => '', 'abbr_year' => '', 'accept' => 'Прийняти', -'access_control' => '', +'access_control' => 'Контроль доступу', 'access_control_is_off' => '', 'access_denied' => 'Доступ заборонений', 'access_inheritance' => 'Наслідування доступу', @@ -295,6 +295,7 @@ URL: [url]', 'choose_attrdefgroup' => '', 'choose_category' => 'Оберіть категорію', 'choose_group' => 'Оберіть групу', +'choose_link_type' => '', 'choose_role' => '', 'choose_target_category' => 'Оберіть категорію', 'choose_target_document' => 'Оберіть групу', @@ -317,6 +318,7 @@ URL: [url]', 'comment_changed_email' => 'Повідомлення про зміну коментаря', 'comment_for_current_version' => 'Коментар версії', 'configure_extension' => '', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '', 'confirm_create_fulltext_index' => 'Так, перестворити повнотекстовий індекс!', @@ -361,7 +363,7 @@ URL: [url]', 'daily' => 'Щоденно', 'dashboard' => '', 'databasesearch' => 'Пошук по БД', -'database_schema_version' => '', +'database_schema_version' => 'Версія схеми БД', 'data_loading' => 'Зачекайте, дані завантажуються...', 'date' => 'Дата', 'days' => 'дні', @@ -571,7 +573,7 @@ URL: [url]', 'dropfolder_metadata' => '', 'dropupload' => 'Швидке завантаження', 'drop_files_here' => 'Перемістіть файли сюди', -'drop_files_here_or_click' => '', +'drop_files_here_or_click' => 'Перетягніть файли сюди, або натисніть, щоб завантажити!', 'dump_creation' => 'Створити дамп БД', 'dump_creation_warning' => 'Ця операція створить дамп бази даних. Після створення файл буде збережено в каталозі даних сервера.', 'dump_list' => 'Існуючі дампи', @@ -702,6 +704,7 @@ URL: [url]', 'filter_for_documents' => 'Додатковий фільтр по документах', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => 'Додатковий фільтр по каталогах', +'finished_workflow_log' => '', 'folder' => 'Каталог', 'folders' => 'кат.', 'folders_and_documents_statistic' => 'Огляд вмісту', @@ -800,6 +803,7 @@ URL: [url]', 'global_attributedefinitions' => 'Атрибути', 'global_default_keywords' => 'Глобальні ключові слова', 'global_document_categories' => 'Категорії', +'global_link_types' => '', 'global_workflows' => 'Процеси', 'global_workflow_actions' => 'Дії процесів', 'global_workflow_states' => 'Статуси процесів', @@ -833,23 +837,23 @@ URL: [url]', 'hu_HU' => 'Hungarian', 'id' => 'Ідентифікатор', 'identical_version' => 'Нова версія ідентична поточній.', -'id_ID' => '', +'id_ID' => 'Індонезійський', 'import' => '', 'importfs' => '', 'import_extension' => '', 'import_fs' => 'Імпортувати з файлової системи', 'import_fs_warning' => '', -'import_users' => '', +'import_users' => 'Імпорт користувачів', 'import_users_addnew' => '', 'import_users_no_column_mapping' => '', 'import_users_update' => '', 'include_content' => 'Включно з вмістом', 'include_documents' => 'Включно з документами', 'include_subdirectories' => 'Включно з підкаталогами', -'indexing_tasks_in_queue' => '', +'indexing_tasks_in_queue' => 'Індексування завдань в черзі', 'index_converters' => '', 'index_document_added' => '', -'index_document_unchanged' => '', +'index_document_unchanged' => 'Документ не змінено', 'index_document_updated' => '', 'index_done' => '', 'index_error' => '', @@ -860,7 +864,7 @@ URL: [url]', 'index_no_content' => '', 'index_pending' => '', 'index_processing' => '', -'index_waiting' => '', +'index_waiting' => 'Очікується', 'individuals' => 'Користувачі', 'individuals_in_groups' => 'Користувачі групи', 'ind_review_removed' => '', @@ -945,6 +949,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => 'Позначення', 'librarydoc' => 'Документ з бібліотеки', +'linked_document' => '', 'linked_documents' => 'Пов\'язані документи', 'linked_files' => 'Пов\'язані файли', 'linked_to_current_version' => '', @@ -1065,6 +1070,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: новий додаток до документа «[document]»', 'new_folder' => 'Новий каталог', +'new_link_type' => '', 'new_password' => 'Новий пароль', 'new_subfolder_email' => 'Новий каталог', 'new_subfolder_email_body' => 'Новий каталог @@ -1407,7 +1413,7 @@ URL: [url]', 'role_admin' => 'Адміністратор', 'role_guest' => 'Гість', 'role_info' => '', -'role_management' => '', +'role_management' => 'Управління ролями', 'role_name' => '', 'role_type' => '', 'role_user' => 'Користувач', @@ -1431,7 +1437,7 @@ URL: [url]', 'scheduler_class_description' => '', 'scheduler_class_parameter' => '', 'scheduler_class_tasks' => '', -'scheduler_task_mgr' => '', +'scheduler_task_mgr' => 'Планувальник', 'search' => 'Пошук', 'search_fulltext' => 'Повнотекстовий пошук', 'search_in' => 'Пошук', @@ -1451,8 +1457,8 @@ URL: [url]', 'search_results_access_filtered' => 'Результати пошуку можуть містити об\'єкти, до яких у вас немає доступу', 'search_time' => 'Пройшло: [time] с', 'seconds' => 'секунди', -'seeddms_info' => '', -'seeddms_version' => '', +'seeddms_info' => 'Інформація про SeedDMS', +'seeddms_version' => 'Версія SeedDMS', 'selection' => 'Вибір', 'select_attrdef' => '', 'select_attrdefgrp_show' => '', @@ -1648,6 +1654,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => 'Увімкніть цю опцію для дозволу гостьового входу. Гостьовий вхід повинен використовуватися лише у довіреному середовищі.', 'settings_enableHelp' => 'Включити Допомогу', 'settings_enableHelp_desc' => 'Включити/відключити посилання на підказки "Допомога" в меню', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => 'Увімкнути вибір мови', 'settings_enableLanguageSelector_desc' => 'Відображати меню вибору мови інтерфейсу користувача після входу в систему. Це не впливає на вибір мови на сторінці авторизації.', 'settings_enableLargeFileUpload' => 'Увімкнути Java-завантажувач файлів', @@ -2098,6 +2108,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2105,6 +2123,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '', 'task_disabled' => '', +'task_failures' => '', 'task_frequency' => '', 'task_frequency_placeholder' => '', 'task_last_run' => '', @@ -2204,7 +2223,7 @@ URL: [url]', 'update_approvers' => 'Оновити список затверджувачів', 'update_document' => 'Оновити документ', 'update_fulltext_index' => 'Оновити повнотекстовий пошук', -'update_fulltext_messages' => '', +'update_fulltext_messages' => 'Повідомлень', 'update_info' => 'Оновити інформацію', 'update_locked_msg' => 'Цей документ заблоковано', 'update_recipients' => 'Оновити список отримувачів', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 7405f7f75..196af2eba 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -287,6 +287,7 @@ URL: [url]', 'choose_attrdefgroup' => '选择属性组', 'choose_category' => '请选择', 'choose_group' => '选择组别', +'choose_link_type' => '', 'choose_role' => '选择角色', 'choose_target_category' => '选择类别', 'choose_target_document' => '选择文档', @@ -309,6 +310,7 @@ URL: [url]', 'comment_changed_email' => '评论更新', 'comment_for_current_version' => '版本说明', 'configure_extension' => '配置扩展', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '确认清除缓存吗?这将删除所有预先计算的预览图像。', 'confirm_create_fulltext_index' => '确认重新创建全文索引', @@ -705,6 +707,7 @@ URL: [url]', 'filter_for_documents' => '文档新增过滤', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => '文件夹新增过滤', +'finished_workflow_log' => '', 'folder' => '文件夹', 'folders' => '文件夹', 'folders_and_documents_statistic' => '内容概要', @@ -803,6 +806,7 @@ URL: [url]', 'global_attributedefinitions' => '属性', 'global_default_keywords' => '全局关键字', 'global_document_categories' => '分类', +'global_link_types' => '', 'global_workflows' => '工作流', 'global_workflow_actions' => '工作流程节点', 'global_workflow_states' => '工作流状态', @@ -948,6 +952,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => '图例', 'librarydoc' => '库内文件', +'linked_document' => '', 'linked_documents' => '相关文档', 'linked_files' => '附件', 'linked_to_current_version' => '已链接到当前版本', @@ -1069,6 +1074,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - 新建附件', 'new_folder' => '新建文件夹', +'new_link_type' => '', 'new_password' => '新密码', 'new_subfolder_email' => '创建新文件夹', 'new_subfolder_email_body' => '新建文件夹 @@ -1636,6 +1642,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => '如果你想让任何人以访客身份登录请点击这个选项。注意:访客登录只能在受信任的环境中使用', 'settings_enableHelp' => '开启帮助', 'settings_enableHelp_desc' => '启用/禁用菜单中的帮助链接', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => '启用多语言支持', 'settings_enableLanguageSelector_desc' => '登录后显示用户界面语言选择', 'settings_enableLargeFileUpload' => '开启大文件上传', @@ -2086,6 +2096,14 @@ URL: [url]', 'task_core_expireddocs_days' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2093,6 +2111,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '描述', 'task_disabled' => '禁用', +'task_failures' => '', 'task_frequency' => '频率', 'task_frequency_placeholder' => '', 'task_last_run' => '上一次运行', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index e93c907db..a1819c9c4 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -295,6 +295,7 @@ $text = array( 'choose_attrdefgroup' => '選擇屬性組', 'choose_category' => '請選擇', 'choose_group' => '選擇組別', +'choose_link_type' => '', 'choose_role' => '選擇角色', 'choose_target_category' => '選擇類別', 'choose_target_document' => '選擇文件', @@ -317,6 +318,7 @@ $text = array( 'comment_changed_email' => '', 'comment_for_current_version' => '版本說明', 'configure_extension' => '配置擴充套件', +'confirm_change_category' => '', 'confirm_change_owner' => '', 'confirm_clear_cache' => '您真的要清除緩存嗎?這將刪除所有預先計算的預覽圖像。', 'confirm_create_fulltext_index' => '確認已新增之全文索引', @@ -715,6 +717,7 @@ URL: [url]', 'filter_for_documents' => '附加文件過濾器', 'filter_for_documents_and_folders' => '', 'filter_for_folders' => '文件夾的附加過濾器', +'finished_workflow_log' => '', 'folder' => '資料夾', 'folders' => '資料夾', 'folders_and_documents_statistic' => '內容概要', @@ -820,6 +823,7 @@ URL: [url]', 'global_attributedefinitions' => '屬性', 'global_default_keywords' => '全域關鍵字', 'global_document_categories' => '分類', +'global_link_types' => '', 'global_workflows' => '全域流程', 'global_workflow_actions' => '全域流程行為', 'global_workflow_states' => '全域流程狀態', @@ -965,6 +969,7 @@ URL: [url]', 'latest_updateddocuments' => '', 'legend' => '說明', 'librarydoc' => '文件庫', +'linked_document' => '', 'linked_documents' => '相關文件', 'linked_files' => '附件', 'linked_to_current_version' => '連結到當前版本', @@ -1086,6 +1091,7 @@ URL: [url]', 'new_file_email_body_html' => '', 'new_file_email_subject' => '[sitename]: [document] - 新附件', 'new_folder' => '新建資料夾', +'new_link_type' => '', 'new_password' => '新密碼', 'new_subfolder_email' => '創建新資料夾', 'new_subfolder_email_body' => '新建文件夾 @@ -1687,6 +1693,10 @@ URL: [url]', 'settings_enableGuestLogin_desc' => '如果您希望任何人以訪客身份登錄,請選中此選項。注意:訪客登錄僅應在受信任的環境中使用', 'settings_enableHelp' => '啟動幫助', 'settings_enableHelp_desc' => '啟用/禁用菜單中幫助屏幕的鏈接', +'settings_enableHiddenReceipt' => '', +'settings_enableHiddenReceipt_desc' => '', +'settings_enableHiddenRevApp' => '', +'settings_enableHiddenRevApp_desc' => '', 'settings_enableLanguageSelector' => '啟用語言選擇器', 'settings_enableLanguageSelector_desc' => '登錄後顯示用戶界面語言的選擇器。', 'settings_enableLargeFileUpload' => '啟用大文件上傳', @@ -2137,6 +2147,14 @@ URL: [url]', 'task_core_expireddocs_days' => '天數', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', +'task_core_importdropfolder_dryrun' => '', +'task_core_importdropfolder_dryrun_desc' => '', +'task_core_importdropfolder_keepfile' => '', +'task_core_importdropfolder_keepfile_desc' => '', +'task_core_importdropfolder_recursive' => '', +'task_core_importdropfolder_targetfolder' => '', +'task_core_importdropfolder_targetfolder_desc' => '', +'task_core_importdropfolder_users' => '', 'task_core_indexingdocs_recreate' => '', 'task_core_recentchanges_days' => '', 'task_core_recentchanges_lists' => '', @@ -2144,6 +2162,7 @@ URL: [url]', 'task_core_statistic_users' => '', 'task_description' => '描述', 'task_disabled' => '不啟用', +'task_failures' => '', 'task_frequency' => '頻率', 'task_frequency_placeholder' => '', 'task_last_run' => '最後一次啟用', From 4e63fd2ecf11fd9332287b08897ffc66245bc1af Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 30 Jan 2024 20:36:46 +0100 Subject: [PATCH 005/100] start new version 5.1.34 --- inc/inc.Version.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/inc.Version.php b/inc/inc.Version.php index eff844519..66e56fb84 100644 --- a/inc/inc.Version.php +++ b/inc/inc.Version.php @@ -20,7 +20,7 @@ class SeedDMS_Version { /* {{{ */ - const _number = "5.1.33"; + const _number = "5.1.34"; const _string = "SeedDMS"; function __construct() { From f14617b3c695155dad0e07440f79337d7367fce0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 31 Jan 2024 07:37:54 +0100 Subject: [PATCH 006/100] show finished workflow only in advanced workflow mode --- views/bootstrap/class.ViewDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index a1e9bec76..fc6ecbed9 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -1046,7 +1046,7 @@ $(document).ready( function() { $this->contentContainerEnd(); } - if(!$workflow) { + if($workflowmode == 'advanced' && !$workflow) { if($accessobject->check_view_access($this, array('action'=>'finished_workflowlog'))) { $wkfalllogs = $latestContent->getWorkflowLog(); if($wkfalllogs) { From 956c84de1f6c09a163f6e7cfae583709701ce48a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 2 Feb 2024 16:07:17 +0100 Subject: [PATCH 007/100] fix regression in 5.1.33, workflow and reviewers/approvers could not be set anymore --- views/bootstrap/class.ViewDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index fc6ecbed9..8adc1208c 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -823,7 +823,7 @@ $(document).ready( function() { if($islatest && $accessobject->mayOverwriteStatus()) { $items[] = array('link'=>$this->html_url('OverrideContentStatus', array('documentid'=>$latestContent->getDocument()->getId(),'version'=>$latestContent->getVersion())), 'icon'=>'align-justify', 'label'=>'change_status'); } - if(0) { + if($islatest) { if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { // Allow changing reviewers/approvals only if not reviewed if($accessobject->maySetReviewersApprovers()) { From 192daaec692125369e4aaf11d4b4e93eef95d3a5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 5 Feb 2024 16:15:18 +0100 Subject: [PATCH 008/100] distinguish between no access and disabled users in check for receptions --- out/out.ObjectCheck.php | 12 ++++++---- views/bootstrap/class.ObjectCheck.php | 32 ++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index e0b8067da..87a0918ca 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -147,7 +147,8 @@ foreach($tmprevs as $rev) { } } -$docsinreception = array(); +$docsinreceptionnoaccess = array(); +$docsinreceptiondisabled = array(); if(!isset($_GET['action']) || $_GET['action'] == 'listDocsInReceptionNoAccess') { $tmprevs = $dms->getDocumentsInReception(); foreach($tmprevs as $rev) { @@ -167,8 +168,10 @@ foreach($tmprevs as $rev) { /* Caution: $content->getAccessMode($ruser) doesn't work as it uses the role * restrictions of the currently logged in user */ - if($mode < M_READ || $cmode < M_READ || $isdisabled) - $docsinreception[] = $doc; + if($mode < M_READ || $cmode < M_READ) + $docsinreceptionnoaccess[] = $doc; + if($isdisabled) + $docsinreceptiondisabled[] = $doc; } } } @@ -248,7 +251,8 @@ if($view) { $view->setParam('duplicatesequences', $duplicatesequences); $view->setParam('docsinrevision', $docsinrevision); $view->setParam('docsmissingrevsiondate', $docsmissingrevsiondate); - $view->setParam('docsinreception', $docsinreception); + $view->setParam('docsinreceptionnoaccess', $docsinreceptionnoaccess); + $view->setParam('docsinreceptiondisabled', $docsinreceptiondisabled); $view->setParam('processwithoutusergroup', $processwithoutusergroup); $view->setParam('unlink', $unlink); $view->setParam('setfilesize', $setfilesize); diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index 10c5f2377..85ce26c19 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -522,7 +522,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { $dms = $this->params['dms']; $user = $this->params['user']; $folder = $this->params['folder']; - $docsinreception = $this->params['docsinreception']; + $docsinreception = $this->params['docsinreceptionnoaccess']; $conversionmgr = $this->params['conversionmgr']; $cachedir = $this->params['cachedir']; $previewwidth = $this->params['previewWidthList']; @@ -542,6 +542,30 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { } } /* }}} */ + function listDocsInReceptionDisabled() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $docsinreception = $this->params['docsinreceptiondisabled']; + $conversionmgr = $this->params['conversionmgr']; + $cachedir = $this->params['cachedir']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout); + if($conversionmgr) + $previewer->setConversionMgr($conversionmgr); + else + $previewer->setConverters($previewconverters); + + $this->contentHeading(getMLText("docs_in_revision_no_access")); + + if($docsinreception) { + $this->printList($docsinreception, $previewer, 'listDocsInReceptionDisabled'); + } + } /* }}} */ + function listProcessesWithoutUserGroup($process, $ug) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -675,7 +699,8 @@ $(document).ready( function() { $duplicateversions = $this->params['duplicateversions']; $duplicatesequences = $this->params['duplicatesequences']; $docsinrevision = $this->params['docsinrevision']; - $docsinreception = $this->params['docsinreception']; + $docsinreceptionnoaccess = $this->params['docsinreceptionnoaccess']; + $docsinreceptiondisabled = $this->params['docsinreceptiondisabled']; $processwithoutusergroup = $this->params['processwithoutusergroup']; $docsmissingrevsiondate = $this->params['docsmissingrevsiondate']; $wrongfiletypeversions = $this->params['wrongfiletypeversions']; @@ -710,7 +735,8 @@ $(document).ready( function() { $menuitems[] = array('label'=>getMLText('duplicate_content'), 'badge'=>count($duplicateversions), 'attributes'=>array(array('data-href', "#duplicate_content"), array('data-action', "listDuplicateContent"))); $menuitems[] = array('label'=>getMLText('duplicate_sequences'), 'badge'=>count($duplicatesequences), 'attributes'=>array(array('data-href', "#duplicate_sequences"), array('data-action', "listDuplicateSequence"))); $menuitems[] = array('label'=>getMLText('docs_in_revision_no_access'), 'badge'=>count($docsinrevision), 'attributes'=>array(array('data-href', "#inrevision_no_access"), array('data-action', "listDocsInRevisionNoAccess"))); - $menuitems[] = array('label'=>getMLText('docs_in_reception_no_access'), 'badge'=>count($docsinreception), 'attributes'=>array(array('data-href', "#inreception_no_access"), array('data-action', "listDocsInReceptionNoAccess"))); + $menuitems[] = array('label'=>getMLText('docs_in_reception_no_access'), 'badge'=>count($docsinreceptionnoaccess), 'attributes'=>array(array('data-href', "#inreception_no_access"), array('data-action', "listDocsInReceptionNoAccess"))); + $menuitems[] = array('label'=>getMLText('docs_in_reception_disabled'), 'badge'=>count($docsinreceptiondisabled), 'attributes'=>array(array('data-href', "#inreception_disabled"), array('data-action', "listDocsInReceptionDisabled"))); $menuitems[] = array('label'=>getMLText('docs_with_missing_revision_date'), 'badge'=>count($docsmissingrevsiondate), 'attributes'=>array(array('data-href', "#missing_revision_date"), array('data-action', "listDocsWithMissingRevisionDate"))); foreach(array('review', 'approval', 'receipt', 'revision') as $process) { foreach(array('user', 'group') as $ug) { From 0fa5ffae485dbb69be454df3268d0df619ef1a81 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 5 Feb 2024 16:15:53 +0100 Subject: [PATCH 009/100] changes for 6.0.27 --- CHANGELOG | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index fed1199b0..796e989ca 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +-------------------------------------------------------------------------------- + Changes in version 6.0.27 +-------------------------------------------------------------------------------- +- Document/folder check distinguishes between documents which cannot be + receiped because of access rights or the recipient being disabled. + -------------------------------------------------------------------------------- Changes in version 6.0.26 -------------------------------------------------------------------------------- From 5d2d80b0af8ef1472764b126d9d73087748ec290 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 6 Feb 2024 09:23:47 +0100 Subject: [PATCH 010/100] fix output of documents with disabled recipients --- out/out.ObjectCheck.php | 2 +- views/bootstrap/class.ObjectCheck.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index 87a0918ca..0df6e70a3 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -149,7 +149,7 @@ foreach($tmprevs as $rev) { $docsinreceptionnoaccess = array(); $docsinreceptiondisabled = array(); -if(!isset($_GET['action']) || $_GET['action'] == 'listDocsInReceptionNoAccess') { +if(!isset($_GET['action']) || $_GET['action'] == 'listDocsInReceptionNoAccess' || $_GET['action'] == 'listDocsInReceptionDisabled') { $tmprevs = $dms->getDocumentsInReception(); foreach($tmprevs as $rev) { if($doc = $dms->getDocument($rev['documentID'])) { diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index 85ce26c19..2f075e32e 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -535,7 +535,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { else $previewer->setConverters($previewconverters); - $this->contentHeading(getMLText("docs_in_revision_no_access")); + $this->contentHeading(getMLText("docs_in_recepition_no_access")); if($docsinreception) { $this->printList($docsinreception, $previewer, 'listDocsInReceptionNoAccess'); @@ -559,7 +559,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { else $previewer->setConverters($previewconverters); - $this->contentHeading(getMLText("docs_in_revision_no_access")); + $this->contentHeading(getMLText("docs_in_reception_disabled")); if($docsinreception) { $this->printList($docsinreception, $previewer, 'listDocsInReceptionDisabled'); From 86fe68ea15681e2be4909070a331bb9707ce3098 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 6 Feb 2024 09:24:53 +0100 Subject: [PATCH 011/100] fix marking of disabled users --- views/bootstrap/class.UserList.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.UserList.php b/views/bootstrap/class.UserList.php index bd6990857..ad9e1491f 100644 --- a/views/bootstrap/class.UserList.php +++ b/views/bootstrap/class.UserList.php @@ -67,7 +67,7 @@ class SeedDMS_View_UserList extends SeedDMS_Theme_Style { isDisabled() ? " class=\"table-error error\"" : ( $currUser->isHidden() ? " class=\"table-warning warning\"" : "")).">"; + echo "isDisabled() ? " class=\"table-danger error\"" : ( $currUser->isHidden() ? " class=\"table-warning warning\"" : "")).">"; echo ""; if ($currUser->hasImage()) print ""; From fb37e526cc491eed9c9e26a24561490b87ea59c8 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 6 Feb 2024 10:29:23 +0100 Subject: [PATCH 012/100] separated revisions without access from disabled users --- CHANGELOG | 3 ++- out/out.ObjectCheck.php | 22 ++++++++++++------ views/bootstrap/class.ObjectCheck.php | 32 ++++++++++++++++++++++++--- 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 796e989ca..99c278ec5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,7 +2,8 @@ Changes in version 6.0.27 -------------------------------------------------------------------------------- - Document/folder check distinguishes between documents which cannot be - receiped because of access rights or the recipient being disabled. + receiped/revised because of access rights or the recipient/revisor being + disabled. -------------------------------------------------------------------------------- Changes in version 6.0.26 diff --git a/out/out.ObjectCheck.php b/out/out.ObjectCheck.php index 0df6e70a3..6011492a5 100644 --- a/out/out.ObjectCheck.php +++ b/out/out.ObjectCheck.php @@ -112,9 +112,10 @@ foreach(array('review', 'approval', 'receipt', 'revision') as $process) { } } } -$docsinrevision = array(); +$docsinrevisionnoaccess = array(); +$docsinrevisiondisabled = array(); $docsmissingrevsiondate = array(); -if(!isset($_GET['action']) || $_GET['action'] == 'listDocsWithMissingRevisionDate') { +if(!isset($_GET['action']) || $_GET['action'] == 'listDocsWithMissingRevisionDate' || $_GET['action'] == 'listDocsInRevisionNoAccess' || $_GET['action'] == 'listDocsInRevisionDisabled') { $tmprevs = $dms->getDocumentsInRevision(); foreach($tmprevs as $rev) { if($doc = $dms->getDocument($rev['documentID'])) { @@ -133,8 +134,10 @@ foreach($tmprevs as $rev) { /* Caution: $content->getAccessMode($ruser) doesn't work as it uses the role * restrictions of the currently logged in user */ - if($mode < M_READ || $cmode < M_READ || $isdisabled) - $docsinrevision[] = $doc; + if($mode < M_READ || $cmode < M_READ) + $docsinrevisionnoaccess[$doc->getId()] = $doc; + if($isdisabled) + $docsinrevisiondisabled[$doc->getId()] = $doc; /* If a document has a sleeping revisor then it must have a * revision date, otherwise the revision will never be started. @@ -168,10 +171,14 @@ foreach($tmprevs as $rev) { /* Caution: $content->getAccessMode($ruser) doesn't work as it uses the role * restrictions of the currently logged in user */ + /* A document can appear several times in the list if there are more than + * 1 user without access. Using the document id as an index will create a + * unique list of documents. + */ if($mode < M_READ || $cmode < M_READ) - $docsinreceptionnoaccess[] = $doc; + $docsinreceptionnoaccess[$doc->getId()] = $doc; if($isdisabled) - $docsinreceptiondisabled[] = $doc; + $docsinreceptiondisabled[$doc->getId()] = $doc; } } } @@ -249,7 +256,8 @@ if($view) { $view->setParam('wrongfiletypeversions', $wrongfiletypeversions); $view->setParam('duplicateversions', $duplicateversions); $view->setParam('duplicatesequences', $duplicatesequences); - $view->setParam('docsinrevision', $docsinrevision); + $view->setParam('docsinrevisionnoaccess', $docsinrevisionnoaccess); + $view->setParam('docsinrevisiondisabled', $docsinrevisiondisabled); $view->setParam('docsmissingrevsiondate', $docsmissingrevsiondate); $view->setParam('docsinreceptionnoaccess', $docsinreceptionnoaccess); $view->setParam('docsinreceptiondisabled', $docsinreceptiondisabled); diff --git a/views/bootstrap/class.ObjectCheck.php b/views/bootstrap/class.ObjectCheck.php index 2f075e32e..d43496816 100644 --- a/views/bootstrap/class.ObjectCheck.php +++ b/views/bootstrap/class.ObjectCheck.php @@ -474,7 +474,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { $dms = $this->params['dms']; $user = $this->params['user']; $folder = $this->params['folder']; - $docsinrevision = $this->params['docsinrevision']; + $docsinrevision = $this->params['docsinrevisionnoaccess']; $conversionmgr = $this->params['conversionmgr']; $cachedir = $this->params['cachedir']; $previewwidth = $this->params['previewWidthList']; @@ -494,6 +494,30 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style { } } /* }}} */ + function listDocsInRevisionDisabled() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $docsinrevision = $this->params['docsinrevisiondisabled']; + $conversionmgr = $this->params['conversionmgr']; + $cachedir = $this->params['cachedir']; + $previewwidth = $this->params['previewWidthList']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout); + if($conversionmgr) + $previewer->setConversionMgr($conversionmgr); + else + $previewer->setConverters($previewconverters); + + $this->contentHeading(getMLText("docs_in_revision_disabled")); + + if($docsinrevision) { + $this->printList($docsinrevision, $previewer); + } + } /* }}} */ + function listDocsWithMissingRevisionDate() { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; @@ -698,7 +722,8 @@ $(document).ready( function() { $nochecksumversions = $this->params['nochecksumversions']; $duplicateversions = $this->params['duplicateversions']; $duplicatesequences = $this->params['duplicatesequences']; - $docsinrevision = $this->params['docsinrevision']; + $docsinrevisionnoaccess = $this->params['docsinrevisionnoaccess']; + $docsinrevisiondisabled = $this->params['docsinrevisiondisabled']; $docsinreceptionnoaccess = $this->params['docsinreceptionnoaccess']; $docsinreceptiondisabled = $this->params['docsinreceptiondisabled']; $processwithoutusergroup = $this->params['processwithoutusergroup']; @@ -734,7 +759,8 @@ $(document).ready( function() { $menuitems = []; $menuitems[] = array('label'=>getMLText('duplicate_content'), 'badge'=>count($duplicateversions), 'attributes'=>array(array('data-href', "#duplicate_content"), array('data-action', "listDuplicateContent"))); $menuitems[] = array('label'=>getMLText('duplicate_sequences'), 'badge'=>count($duplicatesequences), 'attributes'=>array(array('data-href', "#duplicate_sequences"), array('data-action', "listDuplicateSequence"))); - $menuitems[] = array('label'=>getMLText('docs_in_revision_no_access'), 'badge'=>count($docsinrevision), 'attributes'=>array(array('data-href', "#inrevision_no_access"), array('data-action', "listDocsInRevisionNoAccess"))); + $menuitems[] = array('label'=>getMLText('docs_in_revision_no_access'), 'badge'=>count($docsinrevisionnoaccess), 'attributes'=>array(array('data-href', "#inrevision_no_access"), array('data-action', "listDocsInRevisionNoAccess"))); + $menuitems[] = array('label'=>getMLText('docs_in_revision_disabled'), 'badge'=>count($docsinrevisiondisabled), 'attributes'=>array(array('data-href', "#inrevision_disabled"), array('data-action', "listDocsInRevisionDisabled"))); $menuitems[] = array('label'=>getMLText('docs_in_reception_no_access'), 'badge'=>count($docsinreceptionnoaccess), 'attributes'=>array(array('data-href', "#inreception_no_access"), array('data-action', "listDocsInReceptionNoAccess"))); $menuitems[] = array('label'=>getMLText('docs_in_reception_disabled'), 'badge'=>count($docsinreceptiondisabled), 'attributes'=>array(array('data-href', "#inreception_disabled"), array('data-action', "listDocsInReceptionDisabled"))); $menuitems[] = array('label'=>getMLText('docs_with_missing_revision_date'), 'badge'=>count($docsmissingrevsiondate), 'attributes'=>array(array('data-href', "#missing_revision_date"), array('data-action', "listDocsWithMissingRevisionDate"))); From 192e750f0073bb325500ab29fdd589ac30876057 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 7 Feb 2024 09:41:40 +0100 Subject: [PATCH 013/100] output warning if list of recipients contains disabled users --- views/bootstrap/class.ViewDocument.php | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index c032469d6..816103d72 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -1233,7 +1233,7 @@ $(document).ready( function() { print getReviewStatusText($r["status"])."\n"; print "
    "; if($accesserr) - echo "
  • ".$accesserr."
  • "; + echo "
  • ".$accesserr."
  • "; if($accessobject->mayReview($latestContent->getDocument())) { if ($is_reviewer) { @@ -1339,7 +1339,7 @@ $(document).ready( function() { print getApprovalStatusText($a["status"])."\n"; print "
      "; if($accesserr) - echo "
    • ".$accesserr."
    • "; + echo "
    • ".$accesserr."
    • "; if($accessobject->mayApprove($latestContent->getDocument())) { if ($is_approver) { @@ -1627,7 +1627,7 @@ $(document).ready( function() { print "\n"; print "\n"; - print "".((count($receiptStatus) > 10) ? '' : getMLText('name'))."\n"; + print "".((count($receiptStatus) > 10) ? '' : getMLText('name'))."\n"; print "".getMLText("last_update")."\n"; print "".getMLText("comment").""; print "".getMLText("status")."\n"; @@ -1637,6 +1637,8 @@ $(document).ready( function() { print "\n"; $stat = array('-1'=>0, '0'=>0, '1'=>0, '-2'=>0); + $disabledcount = 0; + $removedusers = ''; foreach ($receiptStatus as $r) { $required = null; $is_recipient = false; @@ -1652,8 +1654,10 @@ $(document).ready( function() { if($user->isAdmin()) { if($document->getAccessMode($required) < M_READ || $latestContent->getAccessMode($required) < M_READ) $accesserr = getMLText("access_denied"); - elseif(is_object($required) && $required->isDisabled()) + elseif(is_object($required) && $required->isDisabled()) { + $disabledcount++; $accesserr = getMLText("login_disabled_title"); + } } } if($r["required"] == $user->getId()/* && ($user->getId() != $owner->getId() || $enableownerreceipt == 1)*/) @@ -1676,7 +1680,7 @@ $(document).ready( function() { } break; } - /* Do not list users that has been removed from the list of recipients + /* Do not list users that have been removed from the list of recipients * unless admin is logged in. */ if($user->isAdmin() || $r["status"] > -2) { @@ -1703,7 +1707,7 @@ $(document).ready( function() { print getReceiptStatusText($r["status"])."\n"; print "
        "; if($accesserr) - echo "
      • ".$accesserr."
      • "; + echo "
      • ".$accesserr."
      • "; if($accessobject->mayReceipt($document)) { if ($is_recipient) { if($r["status"]==0) { @@ -1722,6 +1726,9 @@ $(document).ready( function() { warningMsg(getMLText('list_of_recipients_has_disabled_users')); + } // $this->contentContainerEnd(); if($accessobject->check_view_access('ViewDocument', array('action'=>'receptionBar'))/* $user->isAdmin() || $user->getId() == $document->getOwner()->getId()*/) { /* Do not count entries '-2' as they are removed userѕ */ @@ -1834,7 +1841,7 @@ $(document).ready( function() { print getRevisionStatusText($r["status"])."\n"; print "
          "; if($accesserr) - echo "
        • ".$accesserr."
        • "; + echo "
        • ".$accesserr."
        • "; if($accessobject->mayRevise($document)) { if ($is_recipient && $r["status"]==0) { print $this->html_link('ReviseDocument', array('documentid'=>$documentid, 'version'=>$latestContent->getVersion(), 'revisionid'=>$r['revisionID']), array('class'=>'btn btn-mini btn-primary'), getMLText("add_revision"), false, true, array('
        • ', '
        • ')); From 7c538ad5d1b8f7d91464620f7c60154ecd31ccda Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 8 Feb 2024 20:56:49 +0100 Subject: [PATCH 014/100] some more information when using php-fpm --- doc/README.Swagger | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/README.Swagger b/doc/README.Swagger index 576339a5e..f32df2f48 100644 --- a/doc/README.Swagger +++ b/doc/README.Swagger @@ -7,7 +7,17 @@ http://petstore.swagger.io/ or http://editor.swagger.io/ You may as well set up your own swagger-ui installation as described at https://medium.com/@tatianaensslin/how-to-add-swagger-ui-to-php-server-code-f1610c01dc03 -Your apache needs to have the module 'header' enabled, because some HTTP headers -are set when the file swagger.yaml is accessed by the editor. +Your apache needs to have the module `header` enabled, because some HTTP headers +are set when the file `swagger.yaml` is accessed by the editor. Currently, the swagger.yaml shipped with SeedDMS uses still swagger 2.0 + +If you are using php-fpm you will have to ensure that files with +extension .yaml are allowed to be parsed. Extend the +`security.limit_extensions` in the pool configuration by `.yaml`. Also +check the contents of the file `.htaccess` in directory `restapi`. It +by default sets the handler for php to `application/x-httpd-php` which +uses the apache module of php. If you would like to use php-fpm +instead, then set it to + + SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/" From 663ce7f675eaf4ee55ff8d6ce3e5cb6bcb04ef92 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 8 Feb 2024 21:02:12 +0100 Subject: [PATCH 015/100] add global and group manager reviewers/approvers --- inc/inc.ClassSettings.php | 21 +- inc/inc.Utils.php | 174 +++++++++---- op/op.AddDocument.php | 4 +- op/op.Ajax.php | 4 +- op/op.Settings.php | 4 + op/op.UpdateDocument.php | 4 +- views/bootstrap/class.AddDocument.php | 161 +++++------- .../bootstrap/class.SetReviewersApprovers.php | 151 +++++------- views/bootstrap/class.Settings.php | 4 + views/bootstrap/class.UpdateDocument.php | 233 ++++++++---------- 10 files changed, 392 insertions(+), 368 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index c1fe6f3b4..5d35b016f 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -180,8 +180,16 @@ class Settings { /* {{{ */ var $_enableHiddenRevApp = true; // enable/disable update of a review/approval by the reviewer/approver var $_enableUpdateRevApp = false; - // enable/disable removal of a review/approval by the admiistrator + // enable/disable removal of a review/approval by the administrator var $_enableRemoveRevApp = false; + // group manager is mandatory reviewer + var $_addManagerAsReviewer = false; + // group manager is mandatory approver + var $_addManagerAsApprover = false; + // global reviewer + var $_globalReviewer = array(); + // global approver + var $_globalApprover = array(); // enable/disable default notification for owner var $_enableOwnerNotification = false; // enable/disable deleting of versions for regular users @@ -747,6 +755,12 @@ class Settings { /* {{{ */ $this->_enableHiddenRevApp = Settings::boolval($tab["enableHiddenRevApp"]); $this->_enableUpdateRevApp = Settings::boolval($tab["enableUpdateRevApp"]); $this->_enableRemoveRevApp = Settings::boolval($tab["enableRemoveRevApp"]); + $this->_addManagerAsReviewer = Settings::boolval($tab["addManagerAsReviewer"]); + $this->_addManagerAsApprover = Settings::boolval($tab["addManagerAsApprover"]); + if(trim(strval($tab["globalReviewer"]))) + $this->_globalReviewer = explode(',',strval($tab["globalReviewer"])); + if(trim(strval($tab["globalApprover"]))) + $this->_globalApprover = explode(',',strval($tab["globalApprover"])); $this->_presetExpirationDate = strval($tab["presetExpirationDate"]); $this->_versioningFileName = strval($tab["versioningFileName"]); $this->_workflowMode = strval($tab["workflowMode"]); @@ -1097,7 +1111,12 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "enableHiddenRevApp", $this->_enableHiddenRevApp); $this->setXMLAttributValue($node, "enableUpdateRevApp", $this->_enableUpdateRevApp); $this->setXMLAttributValue($node, "enableRemoveRevApp", $this->_enableRemoveRevApp); + $this->setXMLAttributValue($node, "addManagerAsReviewer", $this->_addManagerAsReviewer); + $this->setXMLAttributValue($node, "addManagerAsApprover", $this->_addManagerAsApprover); + $this->setXMLAttributValue($node, "globalReviewer", implode(',', $this->_globalReviewer)); + $this->setXMLAttributValue($node, "globalApprover", implode(',', $this->_globalApprover)); $this->setXMLAttributValue($node, "presetExpirationDate", $this->_presetExpirationDate); + $this->setXMLAttributValue($node, "apiOrigin", $this->_apiOrigin); $this->setXMLAttributValue($node, "versioningFileName", $this->_versioningFileName); $this->setXMLAttributValue($node, "presetExpirationDate", $this->_presetExpirationDate); $this->setXMLAttributValue($node, "workflowMode", $this->_workflowMode); diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index f71e032dd..b205857b1 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -947,7 +947,7 @@ function isAjax() { /* {{{ */ } /* }}} */ /** - * Hash a password + * Hash a password * * @param string $password * @return string hashed password @@ -957,7 +957,7 @@ function seed_pass_hash($password) { /* {{{ */ } /* }}} */ /** - * Verify a password + * Verify a password * * @param string $password * @return string hashed password @@ -1019,7 +1019,7 @@ function cmp_user_login($a, $b) { /* {{{ */ } /* }}} */ /** - * Compare function for sorting users by name + * Compare function for sorting users by name * * Use this for usort() * @@ -1041,36 +1041,80 @@ function cmp_user_fullname($a, $b) { /* {{{ */ * Returns the mandatory reviewers * * This function checks if the reviewers have at least read access - * on the folder containing the document. + * on the folder containing the document. It also checks if the + * mandatory reviewer is an admin or the uploading user and if + * those are allowed to review/approve a document. * * @param $folder folder where document is located + * @param $document document which is updated, null when adding a new document * @param $user user creating the new version or document - * @return array + * @return array containing the elements 'i' and 'g'. Each is a list of user/group ids */ -function getMandatoryReviewers($folder, $user) { /* {{{ */ +function getMandatoryReviewers($folder, $document, $user) { /* {{{ */ global $settings; - /* Get a list of all users and groups with read access on the folder. - * Only those users and groups will be added as reviewers - */ - $docAccess = $folder->getReadAccessList($settings->_enableAdminRevApp, $settings->_enableOwnerRevApp); - $res=$user->getMandatoryReviewers(); - $reviewers = array('i'=>[], 'g'=>[]); + /* Get mandatory reviewers of user */ + $res = $user->getMandatoryReviewers(); + $revi = $revg = []; foreach ($res as $r){ if ($r['reviewerUserID']!=0){ - foreach ($docAccess["users"] as $usr) - if ($usr->getID()==$r['reviewerUserID']){ - $reviewers["i"][] = $r['reviewerUserID']; - break; - } + $revi[] = $r['reviewerUserID']; } elseif ($r['reviewerGroupID']!=0){ - foreach ($docAccess["groups"] as $grp) - if ($grp->getID()==$r['reviewerGroupID']){ - $reviewers["g"][] = $r['reviewerGroupID']; - break; - } + $revg[] = $r['reviewerGroupID']; } } + + /* Add managers of groups as mandatory reviewers */ + if(!empty($settings->_addManagerAsReviewer)) { + $groups = $user->getGroups(); + foreach($groups as $group) { + $managers = $group->getManagers(); + foreach($managers as $manager) { + $revi[] = $manager->getId(); + } + } + } + + /* Add global reviewers as mandatory reviewers */ + if(!empty($settings->_globalReviewer)) { + $revi = array_merge($revi, $settings->_globalReviewer); + } + + /* Check if reviewers are allowed to review */ + $revi = array_unique($revi); + $revg = array_unique($revg); + $reviewers["i"] = []; // users + $reviewers["g"] = []; // groups + $reviewers["ni"] = []; // users being filtered out + $reviewers["ng"] = []; // groups being filtered out + $dms = $user->getDMS(); + foreach($revi as $uid) { + if($u = $dms->getUser($uid)) { + /* need at least read access on parent folder */ + if($folder->getAccessMode($u) < M_READ) + $reviewers["ni"][] = $u->getId(); + /* admins as reviewers must be enabled */ + elseif(!$settings->_enableAdminRevApp && $u->isAdmin()) + $reviewers["ni"][] = $u->getId(); + /* the owner of the document as a reviewer must be enabled */ + elseif(!$settings->_enableOwnerRevApp && $document && $document->getOwner()->getId() == $u->getId()) + $reviewers["ni"][] = $u->getId(); + /* the updloader as a reviewer must be enabled */ + elseif(!$settings->_enableSelfRevApp && $u->getId() == $user->getId()) + $reviewers["ni"][] = $u->getId(); + else + $reviewers["i"][] = $u->getId(); + } + } + foreach($revg as $gid) { + if($g = $dms->getGroup($gid)) { + if($folder->getGroupAccessMode($g) < M_READ) + $reviewers["ng"][] = $g->getId(); + else + $reviewers["g"][] = $g->getId(); + } + } + return $reviewers; } /* }}} */ @@ -1078,38 +1122,80 @@ function getMandatoryReviewers($folder, $user) { /* {{{ */ * Returns the mandatory approvers * * This function checks if the approvers have at least read access - * on the folder containing the document. + * on the folder containing the document. It also checks if the + * mandatory approver is an admin or the uploading user and if + * those are allowed to review/approve a document. * * @param $folder folder where document is located + * @param $document document which is updated, null when adding a new document * @param $user user creating the new version or document - * @return array + * @return array containing the elements 'i' and 'g'. Each is a list of user/group ids */ -function getMandatoryApprovers($folder, $user) { /* {{{ */ +function getMandatoryApprovers($folder, $document, $user) { /* {{{ */ global $settings; - /* Get a list of all users and groups with read access on the folder. - * Only those users and groups will be added as approvers - */ - $docAccess = $folder->getReadAccessList($settings->_enableAdminRevApp, $settings->_enableOwnerRevApp); - $res=$user->getMandatoryApprovers(); - $approvers = array('i'=>[], 'g'=>[]); + /* Get mandatory approvers of user */ + $res = $user->getMandatoryApprovers(); + $appi = $appg = []; foreach ($res as $r){ - if ($r['approverUserID']!=0){ - foreach ($docAccess["users"] as $usr) - if ($usr->getID()==$r['approverUserID']){ - $approvers["i"][] = $r['approverUserID']; - break; - } - } - else if ($r['approverGroupID']!=0){ - foreach ($docAccess["groups"] as $grp) - if ($grp->getID()==$r['approverGroupID']){ - $approvers["g"][] = $r['approverGroupID']; - break; - } + $appi[] = $r['approverUserID']; + } elseif ($r['approverGroupID']!=0){ + $appg[] = $r['approverGroupID']; } } + + /* Add managers of groups as mandatory approvers */ + if(!empty($settings->_addManagerAsApprover)) { + $groups = $user->getGroups(); + foreach($groups as $group) { + $managers = $group->getManagers(); + foreach($managers as $manager) { + $appi[] = $manager->getId(); + } + } + } + + /* Add global approvers as mandatory approvers */ + if(!empty($settings->_globalApprover)) { + $appi = array_merge($appi, $settings->_globalApprover); + } + + /* Check if approvers are allowed to approve */ + $appi = array_unique($appi); + $appg = array_unique($appg); + $approvers["i"] = []; // users + $approvers["g"] = []; // groups + $approvers["ni"] = []; // users being filtered out + $approvers["ng"] = []; // groups being filtered out + $dms = $user->getDMS(); + foreach($appi as $uid) { + if($u = $dms->getUser($uid)) { + /* need at least read access on parent folder */ + if($folder->getAccessMode($u) < M_READ) + $approvers["ni"][] = $u->getId(); + /* admins as approvers must be enabled */ + elseif(!$settings->_enableAdminRevApp && $u->isAdmin()) + $approvers["ni"][] = $u->getId(); + /* the owner of the document as a approver must be enabled */ + elseif(!$settings->_enableOwnerRevApp && $document && $document->getOwner()->getId() == $u->getId()) + $approvers["ni"][] = $u->getId(); + /* the updloader as a approver must be enabled */ + elseif(!$settings->_enableSelfRevApp && $u->getId() == $user->getId()) + $approvers["ni"][] = $u->getId(); + else + $approvers["i"][] = $u->getId(); + } + } + foreach($appg as $gid) { + if($g = $dms->getGroup($gid)) { + if($folder->getGroupAccessMode($g) < M_READ) + $approvers["ng"][] = $g->getId(); + else + $approvers["g"][] = $g->getId(); + } + } + return $approvers; } /* }}} */ diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 54ecd9d72..03fb8c18e 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -209,13 +209,13 @@ if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'tra } // add mandatory reviewers/approvers if($settings->_workflowMode == 'traditional') { - $mreviewers = getMandatoryReviewers($folder, $user); + $mreviewers = getMandatoryReviewers($folder, null, $user); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); if($mreviewers['g']) $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } - $mapprovers = getMandatoryApprovers($folder, $user); + $mapprovers = getMandatoryApprovers($folder, null, $user); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); if($mapprovers['g']) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index bd834407a..f2300781d 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -784,13 +784,13 @@ switch($command) { if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { // add mandatory reviewers/approvers if($settings->_workflowMode == 'traditional') { - $mreviewers = getMandatoryReviewers($folder, $user); + $mreviewers = getMandatoryReviewers($folder, null, $user); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); if($mreviewers['g']) $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } - $mapprovers = getMandatoryApprovers($folder, $user); + $mapprovers = getMandatoryApprovers($folder, null, $user); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); if($mapprovers['g']) diff --git a/op/op.Settings.php b/op/op.Settings.php index 9cbab86e0..c36df1032 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -247,6 +247,10 @@ if ($action == "saveSettings") setBoolValue("enableAdminRevApp"); setBoolValue("enableOwnerRevApp"); setBoolValue("enableSelfRevApp"); + setBoolValue("addManagerAsReviewer"); + setBoolValue("addManagerAsApprover"); + setArrayValue("globalReviewer"); + setArrayValue("globalApprover"); setBoolValue("enableUpdateRevApp"); setBoolValue("enableRemoveRevApp"); setBoolValue("enableVersionDeletion"); diff --git a/op/op.UpdateDocument.php b/op/op.UpdateDocument.php index 5fafaaae5..dd4e05cd2 100644 --- a/op/op.UpdateDocument.php +++ b/op/op.UpdateDocument.php @@ -251,13 +251,13 @@ default: // add mandatory reviewers/approvers if($settings->_workflowMode == 'traditional') { - $mreviewers = getMandatoryReviewers($folder, $user); + $mreviewers = getMandatoryReviewers($folder, $document, $user); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); if($mreviewers['g']) $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } - $mapprovers = getMandatoryApprovers($folder, $user); + $mapprovers = getMandatoryApprovers($folder, $document, $user); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); if($mapprovers['g']) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 6787700bf..924ba0ee7 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -492,33 +492,30 @@ console.log(params); ); } $this->warningMsg(getMLText("add_doc_workflow_warning")); + $this->contentContainerEnd(); } elseif($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { $this->contentContainerEnd(); if($workflowmode == 'traditional') { $this->contentSubHeading(getMLText("assign_reviewers")); $this->contentContainerStart(); + $mreviewers = getMandatoryReviewers($folder, null, $user); + /* List all mandatory reviewers */ - $res=$user->getMandatoryReviewers(); $tmp = array(); - if($res) { - foreach ($res as $r) { - if($r['reviewerUserID'] > 0) { - $u = $dms->getUser($r['reviewerUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } + foreach ($mreviewers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); } $options = array(); foreach ($docAccess["users"] as $usr) { if(!$enablehiddenrevapp && $usr->isHidden()) continue; - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['reviewerUserID']==$usr->getID()) $mandatory=true; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mreviewers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_reviewer'))); $options[] = $option; } $this->formField( @@ -535,38 +532,29 @@ console.log(params); ); /* Check for mandatory reviewer without access */ - foreach($res as $r) { - if($r['reviewerUserID']) { - $hasAccess = false; - foreach ($docAccess["users"] as $usr) { - if ($r['reviewerUserID']==$usr->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['reviewerUserID']); - $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); - } + foreach($mreviewers['ni'] as $r) { + $hasAccess = false; + foreach ($docAccess["users"] as $usr) { + if ($r == $usr->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessUser = $dms->getUser($r); + $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } } /* List all mandatory groups of reviewers */ $tmp = array(); - if($res) { - foreach ($res as $r) { - if($r['reviewerGroupID'] > 0) { - $u = $dms->getGroup($r['reviewerGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } + foreach ($mreviewers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); } $options = array(); foreach ($docAccess["groups"] as $grp) { - - $mandatory=false; - foreach ($res as $r) if ($r['reviewerGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); + if(in_array($grp->getId(), $mreviewers['g'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer'))); $options[] = $option; } $this->formField( @@ -582,17 +570,15 @@ console.log(params); array('field_wrap'=>array('', ($tmp ? '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp).'
          ' : ''))) ); /* Check for mandatory reviewer group without access */ - foreach($res as $r) { - if ($r['reviewerGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['reviewerGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); - $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mreviewers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); + $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } $this->contentContainerEnd(); @@ -600,28 +586,24 @@ console.log(params); $this->contentSubHeading(getMLText("assign_approvers")); $this->contentContainerStart(); - $res=$user->getMandatoryApprovers(); + + $mapprovers = getMandatoryApprovers($folder, null, $user); + /* List all mandatory approvers */ $tmp = array(); - if($res) { - foreach ($res as $r) { - if($r['approverUserID'] > 0) { - $u = $dms->getUser($r['approverUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } + foreach ($mapprovers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); } $options = array(); foreach ($docAccess["users"] as $usr) { if(!$enablehiddenrevapp && $usr->isHidden()) continue; - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['approverUserID']==$usr->getID()) $mandatory=true; - $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mapprovers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_approver'))); $options[] = $option; } $this->formField( @@ -638,39 +620,30 @@ console.log(params); ); /* Check for mandatory approvers without access */ - foreach($res as $r) { - if($r['approverUserID']) { - $hasAccess = false; - foreach ($docAccess["users"] as $usr) { - if ($r['approverUserID']==$usr->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['approverUserID']); - $this->warningMsg(getMLText("mandatory_approver_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); - } + foreach($mapprovers['ni'] as $r) { + $hasAccess = false; + foreach ($docAccess["users"] as $usr) { + if ($r == $usr->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessUser = $dms->getUser($r); + $this->warningMsg(getMLText("mandatory_approver_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } } /* List all mandatory groups of approvers */ $tmp = array(); - if($res) { - foreach ($res as $r) { - if($r['approverGroupID'] > 0) { - $u = $dms->getGroup($r['approverGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } + foreach ($mapprovers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); } + $options = array(); foreach ($docAccess["groups"] as $grp) { - - $mandatory=false; - foreach ($res as $r) if ($r['approverGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); - + if(in_array($usr->getId(), $mapprovers['g'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_approver'))); $options[] = $option; } $this->formField( @@ -687,23 +660,21 @@ console.log(params); ); /* Check for mandatory approver groups without access */ - foreach($res as $r) { - if ($r['approverGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['approverGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['approverGroupID']); - $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mapprovers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r); + $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } + $this->contentContainerEnd(); $this->warningMsg(getMLText("add_doc_reviewer_approver_warning")); } else { } - $this->contentContainerEnd(); $this->columnEnd(); $this->rowEnd(); $this->formSubmit(" ".getMLText('add_document')); diff --git a/views/bootstrap/class.SetReviewersApprovers.php b/views/bootstrap/class.SetReviewersApprovers.php index 6cb1162db..b66b2054a 100644 --- a/views/bootstrap/class.SetReviewersApprovers.php +++ b/views/bootstrap/class.SetReviewersApprovers.php @@ -89,52 +89,48 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { $this->contentSubHeading(getMLText("update_reviewers")); $this->contentContainerStart(); - if($user->getID() != $owner->getID()) { - $res=$owner->getMandatoryReviewers(); - if($user->isAdmin()) - $res = array(); - } else - $res=$user->getMandatoryReviewers(); + /* + if($user->getID() != $owner->getID()) { + $res=$owner->getMandatoryReviewers(); + if($user->isAdmin()) + $res = array(); + } else + $res=$user->getMandatoryReviewers(); + */ + $mreviewers = getMandatoryReviewers($folder, $document, $user); - $options = []; - foreach ($docAccess["users"] as $usr) { - $mandatory=false; - foreach ($res as $r) if ($r['reviewerUserID']==$usr->getID()) $mandatory=true; - - if ($mandatory){ - $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_reviewer')))); - } elseif (isset($reviewIndex["i"][$usr->getID()])) { - switch ($reviewIndex["i"][$usr->getID()]["status"]) { - case S_LOG_WAITING: - $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), true); - break; - case S_LOG_USER_REMOVED: - $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('data-subtitle', getMLText('user_previously_removed_from_reviewers')))); - break; - default: - $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('disabled', 'disabled'))); - break; + $options = []; + foreach ($docAccess["users"] as $usr) { + if(in_array($usr->getId(), $mreviewers['i'])) { + $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_reviewer')))); + } elseif (isset($reviewIndex["i"][$usr->getID()])) { + switch ($reviewIndex["i"][$usr->getID()]["status"]) { + case S_LOG_WAITING: + $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), true); + break; + case S_LOG_USER_REMOVED: + $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('data-subtitle', getMLText('user_previously_removed_from_reviewers')))); + break; + default: + $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('disabled', 'disabled'))); + break; + } + } else { + if(!$enablehiddenrevapp && $usr->isHidden()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; + $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName())); } - } else { - if(!$enablehiddenrevapp && $usr->isHidden()) continue; - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName())); } - } /* List all mandatory reviewers */ $extraparams = []; - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerUserID'] > 0) { - $u = $dms->getUser($r['reviewerUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { - $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"]; - } + $tmp = array(); + foreach ($mreviewers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + if($tmp) { + $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"]; } $this->formField( getMLText("individuals"), @@ -153,10 +149,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { $options = []; foreach ($docAccess["groups"] as $group) { $grpusers = $group->getUsers(); - $mandatory=false; - foreach ($res as $r) if ($r['reviewerGroupID']==$group->getID()) $mandatory=true; - - if ($mandatory) { + if(in_array($group->getId(), $mreviewers['g'])) { $options[] = array($group->getID(), htmlspecialchars($group->getName().' ('.count($grpusers).')'), false, array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer')))); } elseif (isset($reviewIndex["g"][$group->getID()])) { switch ($reviewIndex["g"][$group->getID()]["status"]) { @@ -177,17 +170,13 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { /* List all mandatory groups of reviewers */ $extraparams = []; - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerGroupID'] > 0) { - $u = $dms->getGroup($r['reviewerGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"]; - } + $tmp = array(); + foreach ($mreviewers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); + } + if($tmp) { + $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"]; } $this->formField( getMLText("groups"), @@ -208,20 +197,21 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { $this->contentSubHeading(getMLText("update_approvers")); $this->contentContainerStart(); + /* if($user->getID() != $owner->getID()) { $res=$owner->getMandatoryApprovers(); if($user->isAdmin()) $res = array(); } else $res=$user->getMandatoryApprovers(); + */ + + $mapprovers = getMandatoryApprovers($folder, $document, $user); $options = []; foreach ($docAccess["users"] as $usr) { - $mandatory=false; - foreach ($res as $r) if ($r['approverUserID']==$usr->getID()) $mandatory=true; - - if ($mandatory){ + if(in_array($usr->getId(), $mapprovers['i'])) { $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName()), false, array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_approver')))); } elseif (isset($approvalIndex["i"][$usr->getID()])) { @@ -239,24 +229,20 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { } else { if(!$enablehiddenrevapp && $usr->isHidden()) continue; - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; $options[] = array($usr->getID(), htmlspecialchars($usr->getLogin() . " - ". $usr->getFullName())); } } /* List all mandatory approvers */ $extraparams = []; - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverUserID'] > 0) { - $u = $dms->getUser($r['approverUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { - $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
          \n"]; - } + $tmp = array(); + foreach ($mapprovers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + if($tmp) { + $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
          \n"]; } $this->formField( getMLText("individuals"), @@ -275,10 +261,7 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { $options = []; foreach ($docAccess["groups"] as $group) { $grpusers = $group->getUsers(); - $mandatory=false; - foreach ($res as $r) if ($r['approverGroupID']==$group->getID()) $mandatory=true; - - if ($mandatory) { + if(in_array($group->getId(), $mapprovers['g'])) { $options[] = array($group->getID(), htmlspecialchars($group->getName().' ('.count($grpusers).')'), false, array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_approver')))); } elseif (isset($approvalIndex["g"][$group->getID()])) { @@ -301,17 +284,13 @@ class SeedDMS_View_SetReviewersApprovers extends SeedDMS_Theme_Style { /* List all mandatory groups of approvers */ $extraparams = []; - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverGroupID'] > 0) { - $u = $dms->getGroup($r['approverGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"]; - } + $tmp = array(); + foreach ($mapprovers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); + } + if($tmp) { + $extraparams['field_wrap'] = ['', '
          '.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
          \n"]; } $this->formField( getMLText("groups"), diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index e04a75cb4..7319c4655 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -512,6 +512,10 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) showConfigCheckbox('settings_enableHiddenRevApp', 'enableHiddenRevApp'); ?> showConfigCheckbox('settings_enableUpdateRevApp', 'enableUpdateRevApp'); ?> showConfigCheckbox('settings_enableRemoveRevApp', 'enableRemoveRevApp'); ?> +showConfigCheckbox('settings_addManagerAsReviewer', 'addManagerAsReviewer'); ?> +showConfigCheckbox('settings_addManagerAsApprover', 'addManagerAsApprover'); ?> +showConfigUser('settings_globalReviewer', 'globalReviewer', true, true); ?> +showConfigUser('settings_globalApprover', 'globalApprover', true, true); ?> showConfigCheckbox('settings_enableVersionDeletion', 'enableVersionDeletion'); ?> showConfigCheckbox('settings_enableVersionModification', 'enableVersionModification'); ?> showConfigCheckbox('settings_enableDuplicateDocNames', 'enableDuplicateDocNames'); ?> diff --git a/views/bootstrap/class.UpdateDocument.php b/views/bootstrap/class.UpdateDocument.php index 45ffb4c2c..8c485c8e8 100644 --- a/views/bootstrap/class.UpdateDocument.php +++ b/views/bootstrap/class.UpdateDocument.php @@ -337,28 +337,24 @@ console.log(element); $this->contentContainerEnd(); $this->contentSubHeading(getMLText("assign_reviewers")); $this->contentContainerStart(); - $res=$user->getMandatoryReviewers(); + + $mreviewers = getMandatoryReviewers($folder, $document, $user); + $options = array(); foreach ($docAccess["users"] as $usr) { if(!$enablehiddenrevapp && $usr->isHidden()) continue; - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['reviewerUserID']==$usr->getID()) $mandatory=true; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mreviewers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_reviewer'))); $options[] = $option; } $tmp = array(); foreach($reviewStatus as $r) { if($r['type'] == 0) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['reviewerUserID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mreviewers) { + if(!in_array($r['required'], $mreviewers['i'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -370,20 +366,17 @@ console.log(element); $fieldwrap = array('', $this->getSelectPresetButtonHtml("IndReviewers", $tmp)); } /* List all mandatory reviewers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerUserID'] > 0) { - $u = $dms->getUser($r['reviewerUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { - if(isset($fieldwrap[1])) - $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; - else - $fieldwrap[1] = '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; - } + $tmp = array(); + foreach ($mreviewers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + + if($tmp) { + if(isset($fieldwrap[1])) + $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; + else + $fieldwrap[1] = '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; } $this->formField( @@ -401,39 +394,31 @@ console.log(element); ); /* Check for mandatory reviewer without access */ - foreach($res as $r) { - if($r['reviewerUserID']) { - $hasAccess = false; - foreach ($docAccess["users"] as $usr) { - if ($r['reviewerUserID']==$usr->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['reviewerUserID']); - $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); - } + foreach($mreviewers['ni'] as $r) { + $hasAccess = false; + foreach ($docAccess["users"] as $usr) { + if ($r == $usr->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessUser = $dms->getUser($r); + $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } } + $options = array(); foreach ($docAccess["groups"] as $grp) { - - $mandatory=false; - foreach ($res as $r) if ($r['reviewerGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); + if(in_array($grp->getId(), $mreviewers['g']) || !$grp->getUsers()) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer'))); $options[] = $option; } + $tmp = array(); foreach($reviewStatus as $r) { if($r['type'] == 1) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['reviewerGroupID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mreviewers) { + if(!in_array($r['required'], $mreviewers['g'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -445,18 +430,18 @@ console.log(element); $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpReviewers", $tmp)); } /* List all mandatory groups of reviewers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerGroupID'] > 0) { - $u = $dms->getGroup($r['reviewerGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"; - } + $tmp = array(); + foreach ($mreviewers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); } + if($tmp) { + if(isset($fieldwrap[1])) + $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"; + else + $fieldwrap[1] = '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"; + } + $this->formField( getMLText("groups"), array( @@ -472,17 +457,15 @@ console.log(element); ); /* Check for mandatory reviewer group without access */ - foreach($res as $r) { - if ($r['reviewerGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['reviewerGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); - $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mreviewers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); + $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } $this->contentContainerEnd(); @@ -490,29 +473,25 @@ console.log(element); $this->contentSubHeading(getMLText("assign_approvers")); $this->contentContainerStart(); + + $mapprovers = getMandatoryApprovers($folder, $document, $user); + $options = array(); - $res=$user->getMandatoryApprovers(); foreach ($docAccess["users"] as $usr) { if(!$enablehiddenrevapp && $usr->isHidden()) continue; - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['approverUserID']==$usr->getID()) $mandatory=true; - $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mapprovers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_approver'))); $options[] = $option; } + $tmp = array(); foreach($approvalStatus as $r) { if($r['type'] == 0) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['approverUserID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mapprovers) { + if(!in_array($r['required'], $mapprovers['i'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -523,18 +502,18 @@ console.log(element); if($tmp) { $fieldwrap = array('', $this->getSelectPresetButtonHtml("IndApprovers", $tmp)); } + /* List all mandatory approvers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverUserID'] > 0) { - $u = $dms->getUser($r['approverUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { + $tmp = array(); + foreach ($mapprovers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + if($tmp) { + if(isset($fieldwrap[1])) $fieldwrap[1] .= '
          '.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
          \n"; - } + else + $fieldwrap[1] = '
          '.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
          \n"; } $this->formField( @@ -552,45 +531,33 @@ console.log(element); ); /* Check for mandatory approvers without access */ - foreach($res as $r) { - if($r['approverUserID']) { + foreach($mapprovers['ni'] as $r) { $hasAccess = false; foreach ($docAccess["users"] as $usr) { - if ($r['approverUserID']==$usr->getID()) + if ($r == $usr->getID()) $hasAccess = true; } if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['approverUserID']); + $noAccessUser = $dms->getUser($r); $this->warningMsg(getMLText("mandatory_approver_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } - } } $options = array(); foreach ($docAccess["groups"] as $grp) { - $mandatory=false; - foreach ($res as $r) if ($r['approverGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); - + if(in_array($grp->getId(), $mapprovers['g'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_approver'))); $options[] = $option; } $tmp = array(); foreach($approvalStatus as $r) { if($r['type'] == 1) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['approverGroupID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) - $tmp[] = $r['required']; - } else { + if(!in_array($r['required'], $mapprovers['g'])) $tmp[] = $r['required']; - } + } else { + $tmp[] = $r['required']; } } $fieldwrap = array('', ''); @@ -598,17 +565,13 @@ console.log(element); $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpApprovers", $tmp)); } /* List all mandatory groups of approvers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverGroupID'] > 0) { - $u = $dms->getGroup($r['approverGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $fieldwrap[1] .= '
          '.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
          \n"; - } + $tmp = array(); + foreach ($mapprovers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); + } + if($tmp) { + $fieldwrap[1] .= '
          '.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
          \n"; } $this->formField( @@ -626,17 +589,15 @@ console.log(element); ); /* Check for mandatory approver groups without access */ - foreach($res as $r) { - if ($r['approverGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['approverGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['approverGroupID']); - $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mapprovers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r); + $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } $this->contentContainerEnd(); From 3347b8e4f5fbb8b70c653df3df66e17a7d06af5f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 9 Feb 2024 10:49:15 +0100 Subject: [PATCH 016/100] fix encapsulation with start/end container --- views/bootstrap/class.AddDocument.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 85eacb61a..2761a713b 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -733,7 +733,6 @@ console.log(params); } if($enablereceiptworkflow) { - $this->contentContainerEnd(); $this->contentSubHeading(getMLText("assign_recipients")); $this->contentContainerStart(); $options = array(); @@ -788,9 +787,9 @@ console.log(params); ) ); + $this->contentContainerEnd(); } - $this->contentContainerEnd(); $this->columnEnd(); $this->rowEnd(); $this->formSubmit(" ".getMLText('add_document')); From d8c2a9df06dbb418d0fa6c3785a7fbf319f6b977 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Feb 2024 14:06:53 +0100 Subject: [PATCH 017/100] add global group approver/reviewer --- inc/inc.ClassSettings.php | 14 +++++++-- inc/inc.Utils.php | 10 ++++++ op/op.Settings.php | 2 ++ views/bootstrap/class.GroupMgr.php | 12 +++++++- views/bootstrap/class.Settings.php | 49 ++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 3 deletions(-) diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 5d35b016f..39b8ec88e 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -186,10 +186,14 @@ class Settings { /* {{{ */ var $_addManagerAsReviewer = false; // group manager is mandatory approver var $_addManagerAsApprover = false; - // global reviewer + // global individuel reviewer var $_globalReviewer = array(); - // global approver + // global individuel approver var $_globalApprover = array(); + // global group reviewer + var $_globalGroupReviewer = array(); + // global group approver + var $_globalGroupApprover = array(); // enable/disable default notification for owner var $_enableOwnerNotification = false; // enable/disable deleting of versions for regular users @@ -761,6 +765,10 @@ class Settings { /* {{{ */ $this->_globalReviewer = explode(',',strval($tab["globalReviewer"])); if(trim(strval($tab["globalApprover"]))) $this->_globalApprover = explode(',',strval($tab["globalApprover"])); + if(trim(strval($tab["globalGroupReviewer"]))) + $this->_globalGroupReviewer = explode(',',strval($tab["globalGroupReviewer"])); + if(trim(strval($tab["globalGroupApprover"]))) + $this->_globalGroupApprover = explode(',',strval($tab["globalGroupApprover"])); $this->_presetExpirationDate = strval($tab["presetExpirationDate"]); $this->_versioningFileName = strval($tab["versioningFileName"]); $this->_workflowMode = strval($tab["workflowMode"]); @@ -1115,6 +1123,8 @@ class Settings { /* {{{ */ $this->setXMLAttributValue($node, "addManagerAsApprover", $this->_addManagerAsApprover); $this->setXMLAttributValue($node, "globalReviewer", implode(',', $this->_globalReviewer)); $this->setXMLAttributValue($node, "globalApprover", implode(',', $this->_globalApprover)); + $this->setXMLAttributValue($node, "globalGroupReviewer", implode(',', $this->_globalGroupReviewer)); + $this->setXMLAttributValue($node, "globalGroupApprover", implode(',', $this->_globalGroupApprover)); $this->setXMLAttributValue($node, "presetExpirationDate", $this->_presetExpirationDate); $this->setXMLAttributValue($node, "apiOrigin", $this->_apiOrigin); $this->setXMLAttributValue($node, "versioningFileName", $this->_versioningFileName); diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index b205857b1..ff740d904 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -1080,6 +1080,11 @@ function getMandatoryReviewers($folder, $document, $user) { /* {{{ */ $revi = array_merge($revi, $settings->_globalReviewer); } + /* Add global group reviewers as mandatory reviewers */ + if(!empty($settings->_globalGroupReviewer)) { + $revg = array_merge($revg, $settings->_globalGroupReviewer); + } + /* Check if reviewers are allowed to review */ $revi = array_unique($revi); $revg = array_unique($revg); @@ -1161,6 +1166,11 @@ function getMandatoryApprovers($folder, $document, $user) { /* {{{ */ $appi = array_merge($appi, $settings->_globalApprover); } + /* Add global group approvers as mandatory approvers */ + if(!empty($settings->_globalGroupApprover)) { + $appg = array_merge($appg, $settings->_globalGroupApprover); + } + /* Check if approvers are allowed to approve */ $appi = array_unique($appi); $appg = array_unique($appg); diff --git a/op/op.Settings.php b/op/op.Settings.php index c36df1032..351d1560b 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -251,6 +251,8 @@ if ($action == "saveSettings") setBoolValue("addManagerAsApprover"); setArrayValue("globalReviewer"); setArrayValue("globalApprover"); + setArrayValue("globalGroupReviewer"); + setArrayValue("globalGroupApprover"); setBoolValue("enableUpdateRevApp"); setBoolValue("enableRemoveRevApp"); setBoolValue("enableVersionDeletion"); diff --git a/views/bootstrap/class.GroupMgr.php b/views/bootstrap/class.GroupMgr.php index fa53d78dd..e0cb49596 100644 --- a/views/bootstrap/class.GroupMgr.php +++ b/views/bootstrap/class.GroupMgr.php @@ -149,6 +149,7 @@ $(document).ready( function() { function showGroupForm($group) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; + $settings = $this->params['settings']; $allUsers = $this->params['allusers']; $groups = $this->params['allgroups']; $sortusersinlist = $this->params['sortusersinlist']; @@ -213,7 +214,16 @@ $(document).ready( function() { print "
          getID()."\" />getID()."\" />".createHiddenFieldWithKey('rmmember')."
          "; print " "; print "
          getID()."\" />getID()."\" />".createHiddenFieldWithKey('tmanager')."
          "; - print ""; + print ""; + echo ""; + if($group->isMember($member, true) && $member->isAdmin() && $settings->_addManagerAsReviewer && !$settings->_enableAdminRevApp) { + $this->warningMsg(getMLText("settings_manager_reviewer_is_admin", ['login'=>$member->getLogin()])); + } + if($group->isMember($member, true) && $member->isAdmin() && $settings->_addManagerAsApprover && !$settings->_enableAdminRevApp) { + $this->warningMsg(getMLText("settings_manager_approver_is_admin", ['login'=>$member->getLogin()])); + } + echo ""; + print ""; } } ?> diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 7319c4655..fe7041832 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -225,6 +225,37 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { params['settings']; + $dms = $this->params['dms']; +?> + "> + + +getAllGroups(); + if($groups) { + if(is_array($settings->{"_".$name})) + $selections = $settings->{"_".$name}; + else + $selections = explode(',', $settings->{"_".$name}); + echo ""; + } +?> + + +params['extmgr']; @@ -516,6 +547,8 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) showConfigCheckbox('settings_addManagerAsApprover', 'addManagerAsApprover'); ?> showConfigUser('settings_globalReviewer', 'globalReviewer', true, true); ?> showConfigUser('settings_globalApprover', 'globalApprover', true, true); ?> +showConfigGroup('settings_globalGroupReviewer', 'globalGroupReviewer', true, true); ?> +showConfigGroup('settings_globalGroupApprover', 'globalGroupApprover', true, true); ?> showConfigCheckbox('settings_enableVersionDeletion', 'enableVersionDeletion'); ?> showConfigCheckbox('settings_enableVersionModification', 'enableVersionModification'); ?> showConfigCheckbox('settings_enableDuplicateDocNames', 'enableDuplicateDocNames'); ?> @@ -752,6 +785,22 @@ if(is_writeable($settings->_configFilePath)) { $this->warningMsg(getMLText("settings_partionsize_below_max_filesize")); } + /* Check if globally defined reviewer/approvers are admins */ + if(!$settings->_enableAdminRevApp) { + foreach($settings->_globalReviewer as $uid) { + $u = $dms->getUser($uid); + if($u->isAdmin()) { + $this->warningMsg(getMLText("settings_global_reviewer_is_admin", ['login'=>$u->getLogin()])); + } + } + foreach($settings->_globalReviewer as $uid) { + $u = $dms->getUser($uid); + if($u->isAdmin()) { + $this->warningMsg(getMLText("settings_global_approver_is_admin", ['login'=>$u->getLogin()])); + } + } + } + foreach($extmgr->getExtensionConfiguration() as $extname=>$extconf) { if($this->hasHook('checkConfig')) $this->callHook('checkConfig', $extname, $extconf); From 02247933667aa6069a175cac7697ad6aad59e049 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Feb 2024 14:10:12 +0100 Subject: [PATCH 018/100] add showConfigGroup() --- views/bootstrap/class.Settings.php | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index cbaa3cb94..a549c9455 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -225,6 +225,37 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { params['settings']; + $dms = $this->params['dms']; +?> + "> + + +getAllGroups(); + if($groups) { + if(is_array($settings->{"_".$name})) + $selections = $settings->{"_".$name}; + else + $selections = explode(',', $settings->{"_".$name}); + echo ""; + } +?> + + +params['settings']; $dms = $this->params['dms']; From f671dc0b1cfdfd1674c93852ec7d98367ce3779f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Feb 2024 14:11:34 +0100 Subject: [PATCH 019/100] add missing phrases --- languages/ar_EG/lang.inc | 21 +++++++++++++++++++++ languages/bg_BG/lang.inc | 21 +++++++++++++++++++++ languages/ca_ES/lang.inc | 21 +++++++++++++++++++++ languages/cs_CZ/lang.inc | 21 +++++++++++++++++++++ languages/de_DE/lang.inc | 29 +++++++++++++++++++++++++---- languages/el_GR/lang.inc | 21 +++++++++++++++++++++ languages/en_GB/lang.inc | 29 +++++++++++++++++++++++++---- languages/es_ES/lang.inc | 21 +++++++++++++++++++++ languages/fr_FR/lang.inc | 21 +++++++++++++++++++++ languages/hr_HR/lang.inc | 21 +++++++++++++++++++++ languages/hu_HU/lang.inc | 21 +++++++++++++++++++++ languages/id_ID/lang.inc | 21 +++++++++++++++++++++ languages/it_IT/lang.inc | 21 +++++++++++++++++++++ languages/ko_KR/lang.inc | 21 +++++++++++++++++++++ languages/lo_LA/lang.inc | 21 +++++++++++++++++++++ languages/nb_NO/lang.inc | 21 +++++++++++++++++++++ languages/nl_NL/lang.inc | 21 +++++++++++++++++++++ languages/pl_PL/lang.inc | 21 +++++++++++++++++++++ languages/pt_BR/lang.inc | 21 +++++++++++++++++++++ languages/ro_RO/lang.inc | 21 +++++++++++++++++++++ languages/ru_RU/lang.inc | 21 +++++++++++++++++++++ languages/sk_SK/lang.inc | 21 +++++++++++++++++++++ languages/sv_SE/lang.inc | 21 +++++++++++++++++++++ languages/tr_TR/lang.inc | 21 +++++++++++++++++++++ languages/uk_UA/lang.inc | 21 +++++++++++++++++++++ languages/zh_CN/lang.inc | 21 +++++++++++++++++++++ languages/zh_TW/lang.inc | 21 +++++++++++++++++++++ 27 files changed, 575 insertions(+), 8 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 7243a7732..72d8ea5b0 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -380,7 +380,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'هذه المنطقة محظورة. الدخول فقط مسموح للموظفين المعتمدين. اي اختراق سيتم التعامل معه وفقا للقوانين المحلية والدولية.', 'discspace' => 'مساحة القرص', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'الدخول مرفوض الى المستندات في الإستقبال', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'الدخول مرفوض الى المستندات قيد المراجعة', 'docs_with_missing_revision_date' => '', 'document' => 'مستند', @@ -952,6 +954,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'لائحة الدمج', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'لائحة المهمات', 'local_file' => 'ملف محلي', 'locked_by' => 'محمي بواسطة', @@ -1479,6 +1482,10 @@ URL: [url]', 'settings' => 'الإعدادات', 'settings_activate_module' => 'Activate module', 'settings_activate_php_extension' => 'Activate PHP extension', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'ِAdmin IP', 'settings_Advanced' => 'متقدم', @@ -1700,6 +1707,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'محرك البحث الكامل', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLITEFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'معرف الضيف', 'settings_guestID_desc' => 'معرف الضيف', 'settings_guestid_is_admin' => '', @@ -1737,6 +1754,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'luceneClassDir', 'settings_luceneDir' => 'luceneDir', 'settings_luceneDir_desc' => 'luceneDir', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'maxDirID', @@ -1932,6 +1951,7 @@ URL: [url]', 'splash_add_transmittal' => 'إضافة إحالة', 'splash_add_user' => 'اضافة مستخدم', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'مسح ذاكرة التخزين المؤقت', 'splash_cleared_clipboard' => 'مسح الحافظة', 'splash_delete_access' => 'حذف الوصول', @@ -1954,6 +1974,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'تحرير المستخدم', 'splash_error_add_to_transmittal' => 'خطأ الإضافة إلى الإحالة', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'خطأ في إزالة رابط التنزيل', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'خطأ في إرسال رابط التنزيل', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index e956f00a2..2a5c526f2 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -367,7 +367,9 @@ $text = array( 'disable_extension' => '', 'disclaimer' => 'Работим аккуратно и задълбочено. От това зависи бъдeщето на нашата страна и благополучието на народа.nПетилетката за три години!nДа не оставим неодрусана слива в наше село!', 'discspace' => '', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Документ', @@ -846,6 +848,7 @@ $text = array( 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Локален файл', 'locked_by' => 'Блокиран', @@ -1321,6 +1324,10 @@ $text = array( 'settings' => 'Настройки', 'settings_activate_module' => 'Активирай модул', 'settings_activate_php_extension' => 'Активирай разширение на PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Админско IP', 'settings_adminIP_desc' => 'Ако е сложено, то админа ще може да влиза само от това IP. Оставете празно за да избегнем апокалипсиса. Не работи с LDAP', 'settings_Advanced' => 'Допълнително', @@ -1542,6 +1549,16 @@ $text = array( 'settings_fullSearchEngine_desc' => '', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Идентификатор за гостенин', 'settings_guestID_desc' => 'Идентификатор за гост (може да не се променя)', 'settings_guestid_is_admin' => '', @@ -1579,6 +1596,8 @@ $text = array( 'settings_luceneClassDir_desc' => 'Път към SeedDMS_Lucene (не е задължително)', 'settings_luceneDir' => 'Каталог за пълнотекстовия индекс', 'settings_luceneDir_desc' => 'Път, където Lucene ще пише своя индекс', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Максимален ID на папка', @@ -1774,6 +1793,7 @@ $text = array( 'splash_add_transmittal' => '', 'splash_add_user' => '', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -1796,6 +1816,7 @@ $text = array( 'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 916fd941d..ae9f106ac 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -372,7 +372,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Aquesta és una àrea restringida. Només es permet l\'accés a usuaris autoritzats. Qualsevol intrusió es perseguirà d\'acord amb les lleis internacionals.', 'discspace' => '', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Document', @@ -851,6 +853,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Arxiu local', 'locked_by' => 'Locked by', @@ -1326,6 +1329,10 @@ URL: [url]', 'settings' => 'Settings', 'settings_activate_module' => 'Activate module', 'settings_activate_php_extension' => 'Activate PHP extension', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => '', 'settings_Advanced' => '', @@ -1547,6 +1554,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => '', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => '', 'settings_guestID_desc' => '', 'settings_guestid_is_admin' => '', @@ -1584,6 +1601,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Path to LetoDMS_Lucene (optional)', 'settings_luceneDir' => '', 'settings_luceneDir_desc' => 'Path to LetoDMS_Lucene (optional)', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => '', @@ -1779,6 +1798,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => '', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -1801,6 +1821,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 7b2f9d6a7..e1698ff0e 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Toto je neveřejná oblast. Přístup povolen pouze oprávněným uživatelům. Jakékoliv narušení bude stíháno podle platných právních norem.', 'discspace' => 'Místo na disku', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Dokumenty s přijetím, ale bez přístupu příjemce', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Dokumenty v revizi bez přístupu kontrolora', 'docs_with_missing_revision_date' => '', 'document' => 'Dokument', @@ -983,6 +985,7 @@ URL: [url]', 'list_conversion_services' => 'Služba', 'list_hooks' => 'Seznam hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Seznam úkolů', 'local_file' => 'Lokální soubor', 'locked_by' => 'Zamčeno kým', @@ -1551,6 +1554,10 @@ Jméno: [username] 'settings' => 'Nastavení', 'settings_activate_module' => 'Aktivovat modul', 'settings_activate_php_extension' => 'Aktivovat PHP extension', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'Pokud je nastaveno, admin se může přihlásit pouze z uvedené IP adresy. Ponechejte prázdné k udržení přístupu. Pozn: pracuje pouze s lokálním ověřováním (ne LDAP)', 'settings_Advanced' => 'Pokročilé', @@ -1772,6 +1779,16 @@ Jméno: [username] 'settings_fullSearchEngine_desc' => 'Nastavte metodu použitou pro fulltextové vyhledávání.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID hosta', 'settings_guestID_desc' => 'ID hostovaného uživatele při přihlášení jako host (většinou není třeba měnit)', 'settings_guestid_is_admin' => '', @@ -1809,6 +1826,8 @@ Jméno: [username] 'settings_luceneClassDir_desc' => 'Cesta k SeedDMS_Lucene (volitelná)', 'settings_luceneDir' => 'Adresář pro fulltextový index', 'settings_luceneDir_desc' => 'Cesta k indexu Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Max Directory ID', @@ -2004,6 +2023,7 @@ Jméno: [username] 'splash_add_transmittal' => 'Přidán přenos', 'splash_add_user' => 'Přidán nový uživatel', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Mezipaměť vymazána', 'splash_cleared_clipboard' => 'Schránka vymazána', 'splash_delete_access' => 'Přístupová práva smazána', @@ -2026,6 +2046,7 @@ Jméno: [username] 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Uživatel uložen', 'splash_error_add_to_transmittal' => 'Chyba při přidávání dokumentu k přenosu', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Chyba při odstranění odkazu ke stažení', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Chyba při odesílání odkazu ke stažení', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index a692b9053..efb0f2b8f 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (3304), dgrutsch (22) +// Translators: Admin (3330), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -425,8 +425,10 @@ URL: [url]

          ', 'disable_extension' => 'Erweiterung deaktivieren', 'disclaimer' => 'Dies ist ein geschützter Bereich. Nur authorisiertes Personal hat Zugriff. Jegliche Verstöße werden nach geltendem Recht (Englisch und International) verfolgt.', 'discspace' => 'Plattenplatz', +'docs_in_reception_disabled' => 'Dokumente mit Empfangsbestätigung durch gesperrte Benutzer.', 'docs_in_reception_no_access' => 'Dokumente mit Empfangsbestätigung ohne Zugriff des Empfängers', -'docs_in_revision_no_access' => 'Dokumente in Revision ohne Zugriff des Prüfers', +'docs_in_revision_disabled' => 'Dokument mit Wiederholungsprüfung durch gesperrten Benutzer', +'docs_in_revision_no_access' => 'Dokumente mit Wiederholungsprüfung ohne Zugriff des Prüfers', 'docs_with_missing_revision_date' => 'Dokumente ohne Datum der Wiederholungsprüfung', 'document' => 'Dokument', 'documentcontent' => 'Dokumentenversion', @@ -1194,6 +1196,7 @@ URL: [url]

          ', 'list_conversion_services' => 'Liste der Konvertierer', 'list_hooks' => 'Liste der interne Aufrufe', 'list_notification_services' => 'Liste der Benachrichtigungsdienste', +'list_of_recipients_has_disabled_users' => 'Empfängerliste beinhaltet gesperrte Benutzer.', 'list_tasks' => 'Tasks auflisten', 'local_file' => 'Lokale Datei', 'locked_by' => 'Gesperrt von', @@ -1219,11 +1222,11 @@ URL: [url]

          ', 'mandatory_approvergroups' => 'Zwingende Gruppen von Freigebern', 'mandatory_approvergroup_no_access' => 'Zwingende Gruppe von Freigebern \'[group]\' hat unzureichende Zugriffsrechte.', 'mandatory_approvers' => 'Zwingende Freigeber', -'mandatory_approver_no_access' => 'Zwingender Freigeber \'[user]\' hat unzureichende Zugriffsrechte.', +'mandatory_approver_no_access' => 'Zwingender Freigeber \'[user]\' hat unzureichende Zugriffsrechte oder ist als Freigeber nicht erlaubt.', 'mandatory_reviewergroups' => 'Zwingende Gruppen von Prüfern', 'mandatory_reviewergroup_no_access' => 'Zwingende Gruppe von Prüfern \'[group]\' hat unzureichende Zugriffsrechte.', 'mandatory_reviewers' => 'Zwingende Prüfer', -'mandatory_reviewer_no_access' => 'Zwingender Prüfer \'[user]\' hat nicht ausreichende Zugriffsrechte.', +'mandatory_reviewer_no_access' => 'Zwingender Prüfer \'[user]\' hat unzureichende Zugriffsrechte oder ist als Prüfer nicht erlaubt.', 'march' => 'März', 'mark_document' => 'Dokument für Massenoperation auswählen', 'mark_folder' => 'Ordner für Massenoperation auswählen', @@ -1934,6 +1937,10 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings' => 'Einstellungen', 'settings_activate_module' => 'Modul aktivieren', 'settings_activate_php_extension' => 'PHP-Erweiterung aktivieren', +'settings_addManagerAsApprover' => 'Setze Gruppenmanager als Freigeber', +'settings_addManagerAsApprover_desc' => 'Alle hochgeladenen Dokumente des Benutzers werden durch die Manager der Gruppe, in denen der Benutzer Mitglied ist, freigegeben.', +'settings_addManagerAsReviewer' => 'Setze Gruppenmanager als Prüfer', +'settings_addManagerAsReviewer_desc' => 'Alle hochgeladenen Dokumente des Benutzers werden durch die Manager der Gruppe, in denen der Benutzer Mitglied ist, geprüft.', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'Wenn hier eine IP-Nummer eingetragen wird, kann eine Anmeldung als Administrator nur von dieser Adresse erfolgen. Funktioniert nur mit Anmeldung über die Datenbank (nicht LDAP)', 'settings_Advanced' => 'Erweitert', @@ -2155,6 +2162,16 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_fullSearchEngine_desc' => 'Setzt das Verfahren, welches für die Volltextsuche verwendet wird.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => 'Setze Freigeber für alle Dokumente', +'settings_globalApprover_desc' => 'Die hier eingetragenen Benutzer werden bei allen hochgeladenen Dokumenten als zwingende Freigeber gesetzt.', +'settings_globalGroupApprover' => 'Setze Gruppenfreigeber für alle Dokumente', +'settings_globalGroupApprover_desc' => 'Die hier eingetragenen Gruppen werden bei allen hochgeladenen Dokumenten als zwingende Freigeber gesetzt.', +'settings_globalGroupReviewer' => 'Setze Gruppenprüfer für alle Dokumente', +'settings_globalGroupReviewer_desc' => 'Die hier eingetragenen Gruppen werden bei allen hochgeladenen Dokumenten als zwingende Prüfer gesetzt.', +'settings_globalReviewer' => 'Setze Prüfer für alle Dokumente', +'settings_globalReviewer_desc' => 'Die hier eingetragenen Benutzer werden bei allen hochgeladenen Dokumenten als zwingende Prüfer gesetzt.', +'settings_global_approver_is_admin' => 'Freigeber \'[login]\' für alle Dokumente ist Administrator, aber Administratoren dürfen nicht freigeben.', +'settings_global_reviewer_is_admin' => 'Prüfer \'[login]\' für alle Dokumente ist Administrator, aber Administratoren dürfen nicht prüfen.', 'settings_guestID' => 'Gastbenutzer', 'settings_guestID_desc' => 'Id des Gast-Benutzers, wenn man sich als \'guest\' anmeldet.', 'settings_guestid_is_admin' => 'Gastuser ist ein Administrator', @@ -2192,6 +2209,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_luceneClassDir_desc' => 'Pfad zum PEAR-Paket SeedDMS_Lucene (optional). Lassen Sie diese Einstellung leer, wenn SeedDMS_Lucene ohnehin von PHP gefunden wird, weil es beispielweise im \'Extra PHP Include-Path\' installiert ist.', 'settings_luceneDir' => 'Verzeichnis für Volltext-Index', 'settings_luceneDir_desc' => 'Verzeichnis in dem der Lucene-Index abgelegt wird.', +'settings_manager_approver_is_admin' => 'Manager ist Administrator und soll als zwingender Freigeber eingetragen, aber Administratoren dürfen nicht freigeben.', +'settings_manager_reviewer_is_admin' => 'Manager ist Administrator und soll als zwingender Prüfer eingetragen, aber Administratoren dürfen nicht prüfen.', 'settings_markdownComments' => 'Kommentare als Markdown interpretieren', 'settings_markdownComments_desc' => 'Einschalten, um die Kommentare von Ordnern, Dokumenten und Versionen als Markdown zu interpretieren.', 'settings_maxDirID' => 'Max. Anzahl Unterverzeichnisse', @@ -2387,6 +2406,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'splash_add_transmittal' => 'Neue Dokumentenliste angelegt', 'splash_add_user' => 'Neuen Benutzer hinzugefügt', 'splash_cancel_checkout' => 'Auschecken abgebrochen', +'splash_checked_in' => 'Dokument eingecheckt', 'splash_cleared_cache' => 'Cache geleert', 'splash_cleared_clipboard' => 'Zwischenablage geleert', 'splash_delete_access' => 'Zugriffsrecht gelöscht', @@ -2409,6 +2429,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'splash_edit_transmittal' => 'Dokumentenliste gespeichert', 'splash_edit_user' => 'Benutzer gespeichert', 'splash_error_add_to_transmittal' => 'Fehler beim Hinzufügen zur Dokumentenliste', +'splash_error_checkin_ended' => 'Einchecken beendet und Änderungen verworfen', 'splash_error_rm_download_link' => 'Fehler beim Löschen des Download-Links', 'splash_error_saving_file' => 'Fehler beim Speichern der Datei', 'splash_error_send_download_link' => 'Fehler beim Verschicken des Download-Links', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index d38cbe028..c72009e12 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -367,7 +367,9 @@ $text = array( 'disable_extension' => '', 'disclaimer' => 'Διαβαθμισμένη περιοχή. Η πρόσβαση επιτρέπεται μόνο σε εξουσιοδοτημένο προσωπικό. Κάθε παράβαση διώκεται σύμφωνα με τους εθνικούς και διεθνής νόμους.', 'discspace' => '', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Έγγραφο', @@ -846,6 +848,7 @@ $text = array( 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Τοπικό αρχείο', 'locked_by' => '', @@ -1332,6 +1335,10 @@ URL: [url]', 'settings' => 'Ρυθμίσεις', 'settings_activate_module' => '', 'settings_activate_php_extension' => '', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => '', 'settings_adminIP_desc' => '', 'settings_Advanced' => '', @@ -1553,6 +1560,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => '', 'settings_fullSearchEngine_vallucene' => '', 'settings_fullSearchEngine_valsqlitefts' => '', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => '', 'settings_guestID_desc' => '', 'settings_guestid_is_admin' => '', @@ -1590,6 +1607,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => '', 'settings_luceneDir' => '', 'settings_luceneDir_desc' => '', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => '', @@ -1785,6 +1804,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => '', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -1807,6 +1827,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => '', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 5d54dd6f4..0306b0024 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2395), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (2423), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -314,7 +314,7 @@ URL: [url]

          ', 'chart_sizeperuser_title' => 'Diskspace per user', 'checkedout_file_has_different_version' => 'The checked out version is not identical to the current version. Check in will not update the document.', 'checkedout_file_has_disappeared' => 'The file of the checked out document has disappeared. Check in will not be possible.', -'checkedout_file_is_unchanged' => 'The file of the checked out document is still unchanged. Check in will not be possible. If do not plan any modifications, you can reset the check out status.', +'checkedout_file_is_unchanged' => 'The file of the checked out document is still unchanged. Check in will not be possible. If you do not plan any modifications, you can reset the check out status.', 'checkin_document' => 'Check In', 'checkoutpath_does_not_exist' => 'Checkout path does not exists', 'checkout_cancel_confirm' => 'Confirm to cancel checkout', @@ -425,7 +425,9 @@ URL: [url]

          ', 'disable_extension' => 'Disable extension', 'disclaimer' => 'This is a classified area. Access is permitted only to authorized personnel. Any violation will be prosecuted according to the national and international laws.', 'discspace' => 'Disc space', +'docs_in_reception_disabled' => 'Documents with reception by diabled users', 'docs_in_reception_no_access' => 'Documents with reception without access by recipient', +'docs_in_revision_disabled' => 'Documents with revision by disabled user', 'docs_in_revision_no_access' => 'Documents in revision without access by revisor', 'docs_with_missing_revision_date' => 'Documents withoug date of revision', 'document' => 'Document', @@ -1194,6 +1196,7 @@ URL: [url]

          ', 'list_conversion_services' => 'List of conversion services', 'list_hooks' => 'List of hooks', 'list_notification_services' => 'List of notification services', +'list_of_recipients_has_disabled_users' => 'List of recipients contains disabled users.', 'list_tasks' => 'List tasks', 'local_file' => 'Local file', 'locked_by' => 'Locked by', @@ -1219,11 +1222,11 @@ URL: [url]

          ', 'mandatory_approvergroups' => 'Mandatory Groups of approvers', 'mandatory_approvergroup_no_access' => 'Mandatory group of approvers \'[group]\' has insufficient access rights.', 'mandatory_approvers' => 'Mandatory approvers', -'mandatory_approver_no_access' => 'Mandatory approver \'[user]\' has insufficient access rights.', +'mandatory_approver_no_access' => 'Mandatory approver \'[user]\' has insufficient access rights or is not allowed as an approver.', 'mandatory_reviewergroups' => 'Mandatory group of reviewers', 'mandatory_reviewergroup_no_access' => 'Mandatory group of reviewers \'[group]\' has insufficient access rights.', 'mandatory_reviewers' => 'Mandatory reviewers', -'mandatory_reviewer_no_access' => 'Mandatory reviewer \'[user]\' has insufficient access rights.', +'mandatory_reviewer_no_access' => 'Mandatory reviewer \'[user]\' has insufficient access rights or is not allowed as a reviewer.', 'march' => 'March', 'mark_document' => 'Mark document for batch operation', 'mark_folder' => 'Mark folder for batch operation', @@ -1936,6 +1939,10 @@ If you did not receive a password, please use the password forgotten function on 'settings' => 'Settings', 'settings_activate_module' => 'Activate module', 'settings_activate_php_extension' => 'Activate PHP extension', +'settings_addManagerAsApprover' => 'Add group manager as approver', +'settings_addManagerAsApprover_desc' => 'All uploaded documents of a user will be approved by the managers of the users\'s groups.', +'settings_addManagerAsReviewer' => 'Add group manager as reviewer', +'settings_addManagerAsReviewer_desc' => 'All uploaded documents of a user will be reviewed by the managers of the users\'s groups.', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'If set, admin can login only by specified IP address. Leave empty to avoid lose of access. NOTE: works only with local authentication (no LDAP)', 'settings_Advanced' => 'Advanced', @@ -2157,6 +2164,16 @@ If you did not receive a password, please use the password forgotten function on 'settings_fullSearchEngine_desc' => 'Set the method used for the fulltext search.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => 'Add approver for all documents', +'settings_globalApprover_desc' => 'This users will be added to each uploaded document as mandatory approvers.', +'settings_globalGroupApprover' => 'Add group approver for all documents', +'settings_globalGroupApprover_desc' => 'This groups will be added to each uploaded document as mandatory approvers.', +'settings_globalGroupReviewer' => 'Add group reviewer for all documents', +'settings_globalGroupReviewer_desc' => 'This groups will be added to each uploaded document as mandatory reviewers.', +'settings_globalReviewer' => 'Add reviewer for all documents', +'settings_globalReviewer_desc' => 'This users will be added to each uploaded document as mandatory reviewers.', +'settings_global_approver_is_admin' => 'Approver \'[login]\' for all documents is administrator, but administrators may not approve.', +'settings_global_reviewer_is_admin' => 'Reviewer \'[login]\' for all documents is administrator, but administrators may not review.', 'settings_guestID' => 'Guest user', 'settings_guestID_desc' => 'ID of guest-user used when logged in as guest (mostly no need to change)', 'settings_guestid_is_admin' => 'Guest user is an administrator', @@ -2194,6 +2211,8 @@ If you did not receive a password, please use the password forgotten function on 'settings_luceneClassDir_desc' => 'Path to SeedDMS_Lucene (optional). Leave this empty if you have installed SeedDMS_Lucene at a place where it can be found by PHP, e.g. Extra PHP Include-Path', 'settings_luceneDir' => 'Directory for full text index', 'settings_luceneDir_desc' => 'Path to Lucene index', +'settings_manager_approver_is_admin' => 'Manager ist adminstrator and a mandatory approver, but administrators may not approve.', +'settings_manager_reviewer_is_admin' => 'Manager ist adminstrator and a mandatory reviewer, but administrators may not review.', 'settings_markdownComments' => 'Parse comments as markdown', 'settings_markdownComments_desc' => 'Enable this, if comments of folders, documents and versions are interpreted as markdown.', 'settings_maxDirID' => 'Max Directory ID', @@ -2389,6 +2408,7 @@ If you did not receive a password, please use the password forgotten function on 'splash_add_transmittal' => 'Added new transmittal', 'splash_add_user' => 'Added new user', 'splash_cancel_checkout' => 'Checkout canceled', +'splash_checked_in' => 'Document checked in', 'splash_cleared_cache' => 'Cache cleared', 'splash_cleared_clipboard' => 'Clipboard cleared', 'splash_delete_access' => 'Access right deleted', @@ -2411,6 +2431,7 @@ If you did not receive a password, please use the password forgotten function on 'splash_edit_transmittal' => 'Transmittal saved', 'splash_edit_user' => 'User saved', 'splash_error_add_to_transmittal' => 'Error while adding document to transmittal', +'splash_error_checkin_ended' => 'Ended checkin and discarded changes', 'splash_error_rm_download_link' => 'Error when removing download link', 'splash_error_saving_file' => 'Error while saving file', 'splash_error_send_download_link' => 'Error while sending download link', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 21f52bfb6..6c73ed1a7 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -387,7 +387,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Esta es un área restringida. Se permite el acceso únicamente a personal autorizado. Cualquier intrusión se perseguirá conforme a las leyes internacionales.', 'discspace' => 'Espacio en disco', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Documentos recibidos sin acceso por recipiente', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Documentos en revisión sin acceso para el revisor', 'docs_with_missing_revision_date' => '', 'document' => 'Documento', @@ -967,6 +969,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Mis bloques', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Fichero local', 'locked_by' => 'Bloqueado por', @@ -1502,6 +1505,10 @@ URL: [url]', 'settings' => 'Configuración', 'settings_activate_module' => 'Activar módulo', 'settings_activate_php_extension' => 'Activar extensión PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'IP de administración', 'settings_adminIP_desc' => 'Si establece que el administrador solo puede conectar desde una dirección IP específica, deje en blanco para evitar el control. NOTA: funciona únicamente con autenticación local (no LDAP).', 'settings_Advanced' => 'Avanzado', @@ -1723,6 +1730,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'Establece el metodo utilizado para la busqueda de texto completa', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID de invitado', 'settings_guestID_desc' => 'ID del usuario invitado cuando se conecta como invitado (mayormente no necesita cambiarlo)', 'settings_guestid_is_admin' => '', @@ -1760,6 +1777,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Ruta hacia SeedDMS_Lucene (opcional)', 'settings_luceneDir' => 'Carpeta del índice de texto completo', 'settings_luceneDir_desc' => 'Ruta hacia el índice Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'ID máximo de carpeta', @@ -1955,6 +1974,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Nuevo usuario agregado', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Portapapeles limpiado', 'splash_delete_access' => '', @@ -1977,6 +1997,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Usuario guardado', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 61f31bfc3..4192bdc63 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -416,7 +416,9 @@ URL : [url]

          ', 'disable_extension' => 'Désactiver l’extension', 'disclaimer' => 'Cet espace est protégé. Son accès est strictement réservé aux utilisateurs autorisés.
          Tout accès non autorisé est punissable par les lois internationales.', 'discspace' => 'Espace disque', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Documents en attente de réception sans accès du destinataire', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Documents en révision sans accès du réviseur', 'docs_with_missing_revision_date' => '', 'document' => 'Document', @@ -1151,6 +1153,7 @@ URL : [url]

          ', 'list_conversion_services' => '', 'list_hooks' => 'Liste des appels internes', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Liste des tâches', 'local_file' => 'Fichier local', 'locked_by' => 'Verrouillé par', @@ -1889,6 +1892,10 @@ Nom : [username] 'settings' => 'Configuration', 'settings_activate_module' => 'Activez le module', 'settings_activate_php_extension' => 'Activez l\'extension PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'Si activé l\'administrateur ne peut se connecter que par l\'adresse IP spécifiées, laisser vide pour éviter le contrôle. NOTE: fonctionne uniquement avec autentication locale (sans LDAP)', 'settings_Advanced' => 'Avancé', @@ -2110,6 +2117,16 @@ Nom : [username] 'settings_fullSearchEngine_desc' => 'Définissez la méthode utilisée pour la recherche complète de texte.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID invité', 'settings_guestID_desc' => 'ID de l\'invité utilisé lorsque vous êtes connecté en tant qu\'invité (la plupart du temps pas besoin de changer)', 'settings_guestid_is_admin' => 'L’utilisateur invité est administrateur', @@ -2147,6 +2164,8 @@ Nom : [username] 'settings_luceneClassDir_desc' => 'Chemin vers SeedDMS_Lucene (optionnel)', 'settings_luceneDir' => 'Répertoire index Lucene', 'settings_luceneDir_desc' => 'Chemin vers index Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Nombre max. de sous-dossiers', @@ -2342,6 +2361,7 @@ Nom : [username] 'splash_add_transmittal' => 'Ajouté à la transmission', 'splash_add_user' => 'Nouvel utilisateur ajouté', 'splash_cancel_checkout' => 'Vérification annulée', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cache vidé', 'splash_cleared_clipboard' => 'Presse-papier vidé', 'splash_delete_access' => 'Droits d’accès supprimés', @@ -2364,6 +2384,7 @@ Nom : [username] 'splash_edit_transmittal' => 'Transmission enregistrée', 'splash_edit_user' => 'Utilisateur modifié', 'splash_error_add_to_transmittal' => 'Erreur lors de l’ajout du document à la transmission', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Erreur lors de la suppression du lien de téléchargement', 'splash_error_saving_file' => 'Erreur lors de l’enregistrement du fichier', 'splash_error_send_download_link' => 'Erreur lors de l’envoi du lien de téléchargement', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index f0211529c..f9270ae64 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -392,7 +392,9 @@ Internet poveznica: [url]', 'disable_extension' => '', 'disclaimer' => 'Ovo je klasificirano područje. Pristup je omogućen samo ovlaštenim osobama. Sa svakim kršenjem bit će postupano sukladno nacionalnim i međunarodnim zakonima.', 'discspace' => 'Prostor na disku', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Dokument', @@ -964,6 +966,7 @@ Internet poveznica: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Kuke za popise', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Lokalna datoteka', 'locked_by' => 'Zaključao', @@ -1515,6 +1518,10 @@ Internet poveznica: [url]', 'settings' => 'Postavke', 'settings_activate_module' => 'Aktiviraj modul', 'settings_activate_php_extension' => 'Aktiviraj PHP ekstenziju', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'Ako se postavljeni administrator može prijaviti samo s određenom IP adresom, ostavite prazno da izbjegnete kontrolu. NAPOMENA: radi samo s lokalnom autentifikacijom (ne LDAP)', 'settings_Advanced' => 'Napredno', @@ -1736,6 +1743,16 @@ Internet poveznica: [url]', 'settings_fullSearchEngine_desc' => 'Postavite metodu koja će se koristiti za pretragu punog teksta', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID gosta', 'settings_guestID_desc' => 'ID gost korisnika koja se koristi kada je prijavljen kao gost (uglavnom se ne treba mijenjati)', 'settings_guestid_is_admin' => '', @@ -1773,6 +1790,8 @@ Internet poveznica: [url]', 'settings_luceneClassDir_desc' => 'Putanja do ProsperaDMS_Lucene (opcija). Ostavite ovo prazno ako ste instalirali ProsperaDMS_Lucene na mjestu gdje se može pronaći PHP-om, npr. Extra PHP Include-Path', 'settings_luceneDir' => 'Mapa za indeksiranje cijelog teksta', 'settings_luceneDir_desc' => 'Putanja to Lucene indeksa', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Max Directory ID', @@ -1968,6 +1987,7 @@ Internet poveznica: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Dodan novi korisnik', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Očišćen međuspremnik', 'splash_delete_access' => '', @@ -1990,6 +2010,7 @@ Internet poveznica: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Korisnik pohranjen', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 106f9fd12..e443e84ef 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -387,7 +387,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Ez egy bizalmas terület. Hozzáférés kizárólag a meghatalmazott személyek részére engedélyezett. Bárminemű megsértését a nemzeti, illetve a nemzetközi jog szerint fogják büntetni.', 'discspace' => 'Lemezterület', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Dokumentum', @@ -958,6 +960,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Hook lista', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Helyi állomány', 'locked_by' => 'Zárolta', @@ -1492,6 +1495,10 @@ URL: [url]', 'settings' => 'Beállítások', 'settings_activate_module' => 'Modul aktiválása', 'settings_activate_php_extension' => 'PHP kiterjesztés aktiválása', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Adminisztációs IP', 'settings_adminIP_desc' => 'Amennyiben beállítja az adminisztrátor csak a megadott IP címről tud bejelentkezni. Hagyja üresen az ellenőrzés elkerüléséhez. MEGJEGYZÉS: csak helyi azonosítás esetén működik (LDAP használatakor nem)', 'settings_Advanced' => 'Részletek', @@ -1713,6 +1720,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'Állítsa be a kereséséhez használt módot.', 'settings_fullSearchEngine_vallucene' => 'Dokumentum tartalom keresés', 'settings_fullSearchEngine_valsqlitefts' => 'Adatbázis keresés', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Vendég azonosító', 'settings_guestID_desc' => 'A vendég felhasználó azonosítója ami a vendégként történő bejelentkezéskor lesz használva (általában nem szükséges módosítani)', 'settings_guestid_is_admin' => '', @@ -1750,6 +1767,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Elérési útvonal a SeedDMS_Lucene programhoz (opcionális). Hagyja üresen, ha már telepített SeedDMS_Lucene alkalmazást olyan helyre, ahol azt megtalálja a PHP, pl.: Extra PHP Include-Path segítségével', 'settings_luceneDir' => 'Teljes szöveg index könyvtára', 'settings_luceneDir_desc' => 'Lucene index elérési útvonal', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Legnagyobb könyvtár azonosító', @@ -1945,6 +1964,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Új felhasználó hozzáadva', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Vágólap törölve', 'splash_delete_access' => '', @@ -1967,6 +1987,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Felhasználó mentve', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/id_ID/lang.inc b/languages/id_ID/lang.inc index 61ed4eb85..76e827716 100644 --- a/languages/id_ID/lang.inc +++ b/languages/id_ID/lang.inc @@ -396,7 +396,9 @@ URL: [url]

          ', 'disable_extension' => 'Nonaktifkan ekstensi', 'disclaimer' => 'Ini adalah area rahasia. Akses hanya diizinkan untuk personel yang berwenang. Setiap pelanggaran akan dituntut sesuai dengan hukum nasional dan internasional.', 'discspace' => 'Ruang penyimpanan', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Dokumen dalam revisi tanpa akses oleh revisor', 'docs_with_missing_revision_date' => '', 'document' => 'Dokumen', @@ -1042,6 +1044,7 @@ URL: [url]

          ', 'list_conversion_services' => '', 'list_hooks' => 'Daftar hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Daftar tasks', 'local_file' => 'Berkas lokal', 'locked_by' => 'Dikunci oleh', @@ -1582,6 +1585,10 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings' => 'Pengaturan', 'settings_activate_module' => 'Aktifkan modul', 'settings_activate_php_extension' => 'Aktifkan ekstensi PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'IP Admin', 'settings_adminIP_desc' => 'Jika disetel, admin hanya dapat login dengan alamat IP yang ditentukan. Biarkan kosong untuk menghindari kehilangan akses. CATATAN: hanya berfungsi dengan autentikasi lokal (tanpa LDAP)', 'settings_Advanced' => 'Lanjutan', @@ -1803,6 +1810,16 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_fullSearchEngine_desc' => '', 'settings_fullSearchEngine_vallucene' => '', 'settings_fullSearchEngine_valsqlitefts' => '', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => '', 'settings_guestID_desc' => '', 'settings_guestid_is_admin' => '', @@ -1840,6 +1857,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_luceneClassDir_desc' => '', 'settings_luceneDir' => '', 'settings_luceneDir_desc' => '', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => '', @@ -2035,6 +2054,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'splash_add_transmittal' => 'Menambahkan transmisi baru', 'splash_add_user' => 'Pengguna baru ditambahkan', 'splash_cancel_checkout' => 'Pembayaran dibatalkan', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '', 'splash_delete_access' => '', @@ -2057,6 +2077,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'splash_edit_transmittal' => 'Pengiriman disimpan', 'splash_edit_user' => 'Pengguna telah disimpan', 'splash_error_add_to_transmittal' => 'Kesalahan saat menambahkan dokumen ke pengiriman', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Kesalahan saat menghapus tautan unduhan', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index 245f85fb4..eabd9608d 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Questa è un\'area riservata. L\'accesso è consentito solo agli utenti autorizzati. Qualunque violazione sarà perseguita a norma delle leggi italiane ed internazionali.', 'discspace' => 'Spazio su disco', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Documenti con ricezione senza accesso dai destinatari', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Documenti in riesame senza accesso dai revisori', 'docs_with_missing_revision_date' => '', 'document' => 'Documento', @@ -965,6 +967,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Elenco hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Elenco attività', 'local_file' => 'File locale', 'locked_by' => 'Bloccato da', @@ -1538,6 +1541,10 @@ Name: [username] 'settings' => 'Impostazioni', 'settings_activate_module' => 'Attivazione modulo', 'settings_activate_php_extension' => 'Attivazione estensione PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'IP Amministratore', 'settings_adminIP_desc' => 'Se attivato l\'amministratore si può collegare solo da un IP specifico; lasciare vuoto per evitare il controllo. NOTA: funziona solo con autenticazione locale (no LDAP)', 'settings_Advanced' => 'Avanzate', @@ -1759,6 +1766,16 @@ Name: [username] 'settings_fullSearchEngine_desc' => 'Configurazioni del sistema di ricerca a testo libero.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID Ospite', 'settings_guestID_desc' => 'ID o utenza ospite utilizzata quando collegati al sito come ospite (da cambiare solo in casi eccezionali).', 'settings_guestid_is_admin' => '', @@ -1796,6 +1813,8 @@ Name: [username] 'settings_luceneClassDir_desc' => 'Cartella del pacchetto SeedDMS_Lucene (opzionale). Lasciare il campo vuoto se SeedDMS_Lucene è stato installato in una cartella localizzabile dal PHP, ad esempio quella indicata per gli include PHP addizionali.', 'settings_luceneDir' => 'Cartella di indicizzazione fulltext', 'settings_luceneDir_desc' => 'Cartella di memorizzazione dell\'indice utilizzato da Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Max numero di ID cartella', @@ -1991,6 +2010,7 @@ Name: [username] 'splash_add_transmittal' => 'Aggiungere trasmissione', 'splash_add_user' => 'Utente aggiunto', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cache cancellata', 'splash_cleared_clipboard' => 'Appunti cancellati', 'splash_delete_access' => 'Diritto d\'accesso cancellato', @@ -2013,6 +2033,7 @@ Name: [username] 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Utente modificato', 'splash_error_add_to_transmittal' => 'Errore durante l\'aggiunta di documento per la trasmissione', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Errore durante la rimozione del collegamento di scaricamento', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Errore durante l\'invio del collegamento di scaricamento', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index d90405834..e9a4508c0 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -395,7 +395,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => '본 사이트는 접근이 허가된 자에게만 사용이 허용된 곳 입니다. 허가받지 않은 접근이나 불법행위는 국내 및 국제법에 따라 기소 될 것입니다.', 'discspace' => '디스크 공간', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => '문서', @@ -965,6 +967,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => '로컬 파일', 'locked_by' => '잠근이', @@ -1509,6 +1512,10 @@ URL : [url]', 'settings' => '설정', 'settings_activate_module' => '모듈 활성화', 'settings_activate_php_extension' => 'PHP 확장 활성화', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => '관리 IP', 'settings_adminIP_desc' => '설정 관리자가 지정된 IP로 만 로그인 할 경우, 컨트롤을 피하기 위해 비워 둡니다. 참고 : 로컬 인증작동 (NO LDAP)', 'settings_Advanced' => '고급', @@ -1730,6 +1737,16 @@ URL : [url]', 'settings_fullSearchEngine_desc' => '전체 텍스트 검색에 사용되는 방법을 설정합니다.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Guest ID', 'settings_guestID_desc' => 'Guest로 로그인 할 때 사용하는 ID (변경이 필요치 않음)', 'settings_guestid_is_admin' => '', @@ -1767,6 +1784,8 @@ URL : [url]', 'settings_luceneClassDir_desc' => 'SeedDMS_Lucene 경로 (선택 사항). 이이 PHP에 의해 발견 될 수있는 장소에 SeedDMS_Lucene를 설치된 경우 설정하지 않음', 'settings_luceneDir' => '전체 텍스트 인덱스에 대한 디렉토리', 'settings_luceneDir_desc' => 'Lucene 색인 경로', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => '최대 디렉토리 ID', @@ -1962,6 +1981,7 @@ URL : [url]', 'splash_add_transmittal' => '', 'splash_add_user' => '새 사용자 추가', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => '클립 보드 비우기', 'splash_delete_access' => '', @@ -1984,6 +2004,7 @@ URL : [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => '사용자 저장', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index c9e830f06..f3f9a138f 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -390,7 +390,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'ນີ້ແມ່ນພື້ນທີ່ທີ່ຈຳແນກ ອະນຸຍາດໃຫ້ເຂົ້າເຖິງສະເພາະຜູ້ທີໄດ້ຮັບອານຸຍາດເທົ່ານັ້ນ ຖ້າມີການລະເມີດໄດ້ໆ ຈະຖືກຟ້ອງຮ້ອງຕາມກົດໝາຍຂອງພາຍໃນ ແລະ ຕ່າງປະເທດ', 'discspace' => 'ຟື້ນທີ່ວ່າງໃນດິສ', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'ເອກະສານທີ່ໄດ້ຮັບແມ່ນບໍ່ສາມາດເຂົ້າເບີ່ງໄດ້', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'ເອກະສານທີ້ແກ້ໄຂໂດຍບໍ່ຕ້ອງເຂົ້າໄຊ້ງານ', 'docs_with_missing_revision_date' => '', 'document' => 'ຟື້ນທີ່ວ່າງໃນດິສ', @@ -962,6 +964,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'ລາບການ hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'ໄຟລທ້ອງຖິນ', 'locked_by' => 'ຖູກລັອກໂດຍ', @@ -1535,6 +1538,10 @@ URL: [url]', 'settings' => 'ການຕັ້ງຄ່າ', 'settings_activate_module' => 'ເປີດໄຊ້ງານໂມດູນ', 'settings_activate_php_extension' => 'ຂະຫຍາຍພື້ນທີການໄຊ້ງານຂອງ PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'ຜູ້ດູແລລະບົບ IP', 'settings_adminIP_desc' => 'ຫາກຕັ້ງຄ່າ ຜູ້ດູແລລະບົບສະມາດເຂົ້າສູ້ລະບົບໄດ້ຕາມທີຢູ່ IP ທີລະບຸເທົ່ານັ້ນ ປ່ອຍໃຫ້ວ່າງເພື່ອຫຼີກລ້ຽງການສູນເສຍການເຂົ້າເຖິງ ໝາຍເຫດ: ທຳງານໄດ້ສະເພາະກັບການຮອງຮັບຄວາມຖືກຕ້ອງໂດຍສະເພາະແມ່ນ (ບໍ່ມີ LDAP)', 'settings_Advanced' => 'ຂັນສູງ', @@ -1756,6 +1763,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'ພິເສດ', 'settings_fullSearchEngine_vallucene' => 'ເສັ້ນທາງ', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ລະຫັດຂອງແຂກຜູ້ທີມາຢ້ຽມເຢືອນ', 'settings_guestID_desc' => 'ລະຫັດຂອງແຂກຜູ້ທີມານຳໄຊ້ເມື່ອລັອກອອນເຂົ້າສູ້ລະບົບໃນຖານະແຂກ (ສ່ວນຫຼາຍແມ່ນບໍ່ຈຳເປັນຕ້ອງປ່ຽນແປງຫຍັງ)', 'settings_guestid_is_admin' => '', @@ -1793,6 +1810,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'เส้นทางไป SeedDMS_Lucene (ตัวเลือก) เว้นว่างไว้ถ้าคุณได้ติดตั้ง SeedDMS_Lucene ไว้ ณ ตำแหน่งที่ PHP สามารถพบได้เช่น PHP รวมเส้นทาง.', 'settings_luceneDir' => 'การจัดการดัชนีข้อความเต็มรูปแบบ', 'settings_luceneDir_desc' => 'เส้นทางไปยังดัชนี Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'ລະຫັດໄດເລັກທໍລີຂັນສູງ', @@ -1988,6 +2007,7 @@ URL: [url]', 'splash_add_transmittal' => 'ເພີ່ມການສົ່ງຜ່ານ', 'splash_add_user' => 'ເພີ່ມຜູ້ໄຊ້ໄຫມ່ແລ້ວ', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'ລ້າງແຄຣແລ້ວ', 'splash_cleared_clipboard' => 'ລ້າງຄິບບອດແລ້ວ', 'splash_delete_access' => '', @@ -2010,6 +2030,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'ບັນທຶກຜູ້ໄຊ້ແລ້ວ', 'splash_error_add_to_transmittal' => 'ເກີດຂໍ້ຜິດພາດໃນຂະນະທີ່ເພີ່ມເອກະສານເພື່ອຕິດຕໍ່', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'ຂໍ້ຜິດພາດໃນການລົບລິງການດາວໂຫລດ', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'ຂໍ້ຜິດພາດໃນການລົບລິງການດາວໂຫລດ', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index cbe75f7c6..c20614a7c 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Dette er et klassifisert område. Tilgang er bare tillatt for autorisert personell. Ethvert brudd vil bli tiltalt i henhold til nasjonale og internasjonale lover.', 'discspace' => 'Diskplass', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Dokumenter med mottak uten tilgang fra mottaker', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Dokumenter i revisjon uten tilgang fra korrekturleser', 'docs_with_missing_revision_date' => '', 'document' => 'Dokument', @@ -983,6 +985,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Liste hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Liste oppgaver', 'local_file' => 'Lokal fil', 'locked_by' => 'Låst av', @@ -1548,6 +1551,10 @@ Bruker: [username] 'settings' => 'Innstillinger', 'settings_activate_module' => 'Aktiver modul', 'settings_activate_php_extension' => 'Aktiver PHP-utvidelse', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'Hvis den er angitt, kan administrator bare logge på med spesifisert IP-adresse. La stå tomt for å unngå at du mister tilgangen. MERKNAD: fungerer bare med lokal autentisering (ingen LDAP)', 'settings_Advanced' => 'Avansert', @@ -1769,6 +1776,16 @@ Bruker: [username] 'settings_fullSearchEngine_desc' => 'Angi metoden som brukes for fulltekstsøk.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Gjestenavn', 'settings_guestID_desc' => 'Navn til gjestebruker som ble brukt når han er logget inn som gjest (trenger stort sett ikke å endre)', 'settings_guestid_is_admin' => '', @@ -1806,6 +1823,8 @@ Bruker: [username] 'settings_luceneClassDir_desc' => 'Sti til SeedDMS_Lucene (valgfritt). La dette være tomt hvis du har installert SeedDMS_Lucene på et sted der det kan bli funnet av PHP, f.eks. Ekstra PHP inkluderer-bane.', 'settings_luceneDir' => 'Mappe for fulltekstindeks', 'settings_luceneDir_desc' => 'Sti til Lucene-indeksen', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Maks mappenavn', @@ -2001,6 +2020,7 @@ Bruker: [username] 'splash_add_transmittal' => 'Lagt til overføring', 'splash_add_user' => 'Ny bruker lagt til', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cache ble slettet', 'splash_cleared_clipboard' => 'Utklippstavlen ryddet', 'splash_delete_access' => 'Adgangs retten er slettet', @@ -2023,6 +2043,7 @@ Bruker: [username] 'splash_edit_transmittal' => 'Overføring lagret', 'splash_edit_user' => 'Bruker lagret', 'splash_error_add_to_transmittal' => 'Feil under tilføyelse av dokument til overføringen', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Feil ved fjerning av nedlastingslenke', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Feil under sending av nedlastingslenke', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index c176c2089..8aba3ab3c 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -385,7 +385,9 @@ URL: [url]', 'disable_extension' => 'Schakel de extensie uit', 'disclaimer' => 'Dit is een beveiligde omgeving. Gebruik is alleen toegestaan voor geautoriseerde leden. Ongeautoriseerde toegang kan worden bestraft overeenkomstig (inter)nationale wetgeving.', 'discspace' => 'Schijfruimte', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Documenten zonder toegang ontvanger', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Documenten in revisie zonder toegang ontvanger', 'docs_with_missing_revision_date' => '', 'document' => 'Document', @@ -976,6 +978,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Taken', 'local_file' => 'Lokaal bestand', 'locked_by' => 'In gebruik door', @@ -1547,6 +1550,10 @@ Name: [username] 'settings' => 'Instellingen', 'settings_activate_module' => 'Activeer module', 'settings_activate_php_extension' => 'Activeer PHP uitbreiding', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Beheer IP', 'settings_adminIP_desc' => 'Indien ingesteld kan de beheerder alleen vanaf het ingestelde IP adres inloggen. Leeg laten om controle te vermijden. Opmerking: Werkt alleen met lokale authenticatie (Geen LDAP)', 'settings_Advanced' => 'Uitgebreid', @@ -1768,6 +1775,16 @@ Name: [username] 'settings_fullSearchEngine_desc' => 'Instellingen Fulltext search', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Gast ID', 'settings_guestID_desc' => 'ID van gastgebruiker gebruikt indien ingelogd als gast (meestal geen wijziging nodig)', 'settings_guestid_is_admin' => '', @@ -1805,6 +1822,8 @@ Name: [username] 'settings_luceneClassDir_desc' => 'Pad naar SeedDMS_Lucene (optioneel)', 'settings_luceneDir' => 'Map voor volledigetekst index', 'settings_luceneDir_desc' => 'Pad naar Lucene index', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Max Map-ID', @@ -2000,6 +2019,7 @@ Name: [username] 'splash_add_transmittal' => 'Verzending toegevoegd', 'splash_add_user' => 'Nieuwe gebruiker toegevoegd', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cache leeggemaakt', 'splash_cleared_clipboard' => 'Klembord leeg gemaakt', 'splash_delete_access' => 'Toegangsrechten verwijderd', @@ -2022,6 +2042,7 @@ Name: [username] 'splash_edit_transmittal' => 'Zending opgeslagen', 'splash_edit_user' => 'Gebruiker opgeslagen', 'splash_error_add_to_transmittal' => 'Fout: toevoeging aan verzending', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Fout bij verwijderen download-link', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Fout bij verzenden download-link', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index a0d9eb7bc..8bb4a183e 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -380,7 +380,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'To jest zastrzeżona strefa. Dostęp do niej ma wyłącznie wyznaczony personel. Wszelkie naruszenia będą ścigane zgodnie z prawem krajowym i międzynarodowym.', 'discspace' => 'Zajęta przestrzeń dyskowa', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Dokumenty z odbiorem bez dostępu odbiorcy', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Dokumenty w wersji bez dostępu przez audytora', 'docs_with_missing_revision_date' => '', 'document' => 'Dokument', @@ -952,6 +954,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Lista błędów', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Lista zadań', 'local_file' => 'Lokalny plik', 'locked_by' => 'Zablokowane przez', @@ -1478,6 +1481,10 @@ Name: [username] 'settings' => 'Ustawienia', 'settings_activate_module' => 'Aktywuj moduł', 'settings_activate_php_extension' => 'Aktywuj rozszerzenie PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Adres IP Administratora', 'settings_adminIP_desc' => 'Wprowadzenie tego adresu IP spowoduje, że administrator będzie mógł się logować tylko z tego adresu. Zostaw puste aby tego nie kontrolować. Uwaga! Działa tylko z autentykacją lokalną (nie w LDAP-ie)', 'settings_Advanced' => 'Zaawansowane', @@ -1699,6 +1706,16 @@ Name: [username] 'settings_fullSearchEngine_desc' => 'Ustaw metodę używaną do pełnotekstowego wyszukiwania', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID gościa', 'settings_guestID_desc' => 'ID gościa używane kiedy gość jest zalogowany (zazwyczaj nie wymaga zmiany)', 'settings_guestid_is_admin' => '', @@ -1736,6 +1753,8 @@ Name: [username] 'settings_luceneClassDir_desc' => 'Ścieżka do Path to SeedDMS_Lucene (opcjonalnie)', 'settings_luceneDir' => 'Katalog dla indeksu pełnotekstowego', 'settings_luceneDir_desc' => 'Ścieżka do indeksu Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Maksymalny ID katalogu', @@ -1931,6 +1950,7 @@ Name: [username] 'splash_add_transmittal' => 'Dodano przekaz', 'splash_add_user' => 'Dodano nowego użytkownika', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Pamięć podręczna wyczyszczona', 'splash_cleared_clipboard' => 'Wyczyszczono schowek', 'splash_delete_access' => 'Prawo dostępu zostało usunięte', @@ -1953,6 +1973,7 @@ Name: [username] 'splash_edit_transmittal' => 'Przesyłanie zapisane', 'splash_edit_user' => 'Zapisano użytkownika', 'splash_error_add_to_transmittal' => 'Błąd podczas dodawania dokumentu do przekazu', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Błąd podczas usuwania linku do pobrania', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Błąd podczas wysyłania linku do pobrania', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index bb653cc35..e20fbe32a 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Esta é uma área restrita, o acesso é permitido apenas ao pessoal autorizado. Qualquer violação será tratado de acordo com as normas internas e leis vigentes.', 'discspace' => 'Espaço em Disco', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Documentos com recepção sem acesso pelo destinatário', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Documentos em revisão sem acesso por revisor', 'docs_with_missing_revision_date' => '', 'document' => 'Documento', @@ -983,6 +985,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Listar ganchos', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'Listar tarefas', 'local_file' => 'Arquivo local', 'locked_by' => 'Bloqueado por', @@ -1554,6 +1557,10 @@ Nome: [username] 'settings' => 'Configurações', 'settings_activate_module' => 'Ativar módulo', 'settings_activate_php_extension' => 'Ativar extensão PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'IP Administrador', 'settings_adminIP_desc' => 'Se definido administrador pode entrar apenas por endereço IP especificado, deixe em branco para evitar o controle. NOTA: só funciona com Autenticação local (não LDAP)', 'settings_Advanced' => 'Avançado', @@ -1775,6 +1782,16 @@ Nome: [username] 'settings_fullSearchEngine_desc' => 'Selecione o método utilizado para a busca textual', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID convidado', 'settings_guestID_desc' => 'ID do usuário-convidado usada quando conectado como convidado (na maioria das vezes não há necessidade de mudar)', 'settings_guestid_is_admin' => '', @@ -1812,6 +1829,8 @@ Nome: [username] 'settings_luceneClassDir_desc' => 'Caminho para Sistema GED_Lucene (opcional). Deixe em branco se você tiver instalado Sistema GED_Lucene em um lugar onde ele pode ser encontrado por PHP, por exemplo, PHP extras incluem-Path', 'settings_luceneDir' => 'Diretório para o índice de texto completo', 'settings_luceneDir_desc' => 'Caminho para o índice Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'ID máxima de diretório', @@ -2007,6 +2026,7 @@ Nome: [username] 'splash_add_transmittal' => 'Transmissão adicionada', 'splash_add_user' => 'Novo usuário adicionado', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cache limpo', 'splash_cleared_clipboard' => 'Área de transferência limpa', 'splash_delete_access' => 'Direito de acesso removido', @@ -2029,6 +2049,7 @@ Nome: [username] 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Usuário salvo', 'splash_error_add_to_transmittal' => 'Erro ao adicionar documento à transmissão', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Erro ao remover o link de download', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Erro ao enviar o link de download', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index ba723ae11..94fe941b4 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Aceasta este o zonă clasificată. Accesul este permis numai personalului autorizat. Orice încălcare va fi urmărită penal în conformitate cu legile naționale și internaționale.', 'discspace' => 'Spațiu pe disc', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Document', @@ -964,6 +966,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Fișier local', 'locked_by' => 'Blocat de', @@ -1516,6 +1519,10 @@ URL: [url]', 'settings' => 'Setări', 'settings_activate_module' => 'Activați modulul', 'settings_activate_php_extension' => 'Activați extensia PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'IP Admin', 'settings_adminIP_desc' => 'Dacă este setat, adminul se poate autentifica numai de la adresa IP specificată, lăsați gol pentru a evita controlul. NOTĂ: funcționează numai cu autentificarea locală (pe LDAP)', 'settings_Advanced' => 'Avansat', @@ -1737,6 +1744,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'Selectează metoda folosită pentru căutarea în tot textul', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'ID oaspete', 'settings_guestID_desc' => 'ID-ul utilizatorului oaspete folosit când la Logarea ca oaspete (de cele mai multe ori nu este nevoie să se schimbe)', 'settings_guestid_is_admin' => '', @@ -1774,6 +1791,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Calea catre SeedDMS_Lucene (optional). Lăsați gol dacă ați instalat SeedDMS_Lucene într-un loc unde poate fi găsit de PHP (exemplu: Extra PHP Include-Path)', 'settings_luceneDir' => 'Directorul pentru indexul de text integral(full text index)', 'settings_luceneDir_desc' => 'Calea catre indexul Lucene', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'ID director Maxim', @@ -1969,6 +1988,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Utilizator nou adăugat', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Clipboard golit', 'splash_delete_access' => '', @@ -1991,6 +2011,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Utilizator salvat', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 99233a6e8..c435be095 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Работник, помни! От тебя зависит успех фирмы и всей страны!', 'discspace' => 'Дисковое пространство', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Документ', @@ -964,6 +966,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Список хуков', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Локальный файл', 'locked_by' => 'Заблокирован', @@ -1523,6 +1526,10 @@ URL: [url]', 'settings' => 'Настройки', 'settings_activate_module' => 'Активировать модуль', 'settings_activate_php_extension' => 'Активировать расширение PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Администраторский IP', 'settings_adminIP_desc' => 'Если установлено, то администратор сможет зайти только с этого IP-адреса. Оставьте пустым, если это не требуется. Не работает с LDAP.', 'settings_Advanced' => 'Дополнительно', @@ -1744,6 +1751,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'Установить метод, используемый для полнотекстового поиска.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Идентификатор гостя', 'settings_guestID_desc' => 'Идентификатор гостя (можно не изменять).', 'settings_guestid_is_admin' => '', @@ -1781,6 +1798,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Путь к SeedDMS_Lucene (не обязательно).', 'settings_luceneDir' => 'Каталог полнотекстового индекса Lucene', 'settings_luceneDir_desc' => 'Путь, куда Lucene будет записывать свой индекс.', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Максимальный ID каталога', @@ -1976,6 +1995,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Добавлен новый пользователь', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Буфер обмена очищен', 'splash_delete_access' => '', @@ -1998,6 +2018,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Пользователь сохранён', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 471e3b8be..16ca8b707 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Toto je zabezpečená zóna. Prístup je povolený len autorizovaným osobám.', 'discspace' => 'Priestor na disku', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Documents with reception without access by recipient', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Documents in revision without access by revisor', 'docs_with_missing_revision_date' => '', 'document' => 'Dokument', @@ -983,6 +985,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'List hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => 'List tasks', 'local_file' => 'Lokálny súbor', 'locked_by' => 'Uzamkol', @@ -1556,6 +1559,10 @@ Meno: [username] 'settings' => 'Nastavenia', 'settings_activate_module' => 'Aktivovať modul', 'settings_activate_php_extension' => 'Aktivovať PHP rozšírenie', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'IP administrátora', 'settings_adminIP_desc' => 'If set, admin can login only by specified IP address. Leave empty to avoid lose of access. NOTE: works only with local authentication (no LDAP)', 'settings_Advanced' => 'Rozšírené', @@ -1777,6 +1784,16 @@ Meno: [username] 'settings_fullSearchEngine_desc' => 'Set the method used for the fulltext search.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Hosť ID', 'settings_guestID_desc' => 'ID of guest-user used when logged in as guest (mostly no need to change)', 'settings_guestid_is_admin' => '', @@ -1814,6 +1831,8 @@ Meno: [username] 'settings_luceneClassDir_desc' => 'Path to SeedDMS_Lucene (optional). Leave this empty if you have installed SeedDMS_Lucene at a place where it can be found by PHP, e.g. Extra PHP Include-Path', 'settings_luceneDir' => 'Directory for full text index', 'settings_luceneDir_desc' => 'Cesta do Lucene indexu', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Max Zložka ID', @@ -2009,6 +2028,7 @@ Meno: [username] 'splash_add_transmittal' => 'Added transmittal', 'splash_add_user' => 'Pridaný nový používateľ', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Vymazanie vyrovnávacej pamäte', 'splash_cleared_clipboard' => 'Schránka bola vymazaná', 'splash_delete_access' => 'Access right deleted', @@ -2031,6 +2051,7 @@ Meno: [username] 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Používateľ bol uložený', 'splash_error_add_to_transmittal' => 'Error while adding document to transmittal', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Error when removing download link', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Error while sending download link', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index f933518c6..15707f199 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -393,7 +393,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Detta är ett sekretessbelagt område. Bara auktoriserade personer äger tillträde. Vid överträdelse kommer åtal att väckas i enlighet med nationella och internationella lagar.', 'discspace' => 'Diskutrymme', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => 'Dokument med angiven mottagare som saknar behörighet till dokumentet', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => 'Dokument med angiven granskare som saknar behörighet till dokumentet', 'docs_with_missing_revision_date' => '', 'document' => 'Dokument', @@ -970,6 +972,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => 'Lista hooks', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Lokal fil', 'locked_by' => 'Låst av', @@ -1529,6 +1532,10 @@ Kommentar: [comment]', 'settings' => 'Inställningar', 'settings_activate_module' => 'Aktivera modul', 'settings_activate_php_extension' => 'Aktivera PHP-extension', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin-IP', 'settings_adminIP_desc' => 'Om den har satts, kan administratören bara logga in från den angivna IP-adressen. Lämna detta fält tomt för att undvika begränsningar. OBS! Fungerar bara med lokal autentisering (ingen LDAP).', 'settings_Advanced' => 'Avancerat', @@ -1750,6 +1757,16 @@ Kommentar: [comment]', 'settings_fullSearchEngine_desc' => 'Se metoder som används för fulltextsökning.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Gäst-ID', 'settings_guestID_desc' => 'ID som används för inloggad gästanvändare (behöver oftast inte ändras)', 'settings_guestid_is_admin' => '', @@ -1787,6 +1804,8 @@ Kommentar: [comment]', 'settings_luceneClassDir_desc' => 'Sökväg till LetoDMS_Lucene (valfritt)', 'settings_luceneDir' => 'Mapp för fulltext-index', 'settings_luceneDir_desc' => 'Sökväg till Lucene-index', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Max. mapp-ID', @@ -1982,6 +2001,7 @@ Kommentar: [comment]', 'splash_add_transmittal' => 'Meddelande tillagt', 'splash_add_user' => 'Ny användare tillagd', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cachen är rensad', 'splash_cleared_clipboard' => 'Urklipp rensat', 'splash_delete_access' => '', @@ -2004,6 +2024,7 @@ Kommentar: [comment]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Användare sparad', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => 'Fel vid borttagande av nedladdningslänk', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => 'Fel vid sändning av nedladdningslänk', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 75f486c56..cc05cb030 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -387,7 +387,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Bu sisteme sadece yetkilendirilmiş personel yetki seviyesine göre erişebilir. Herhangi bir ihlalde veya ihlal girişiminde, ulusal ve uluslararası yasalara göre takibat yapılacaktır.', 'discspace' => 'Disk alanı', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Doküman', @@ -956,6 +958,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Yerel dosya', 'locked_by' => 'Kilitleyen', @@ -1493,6 +1496,10 @@ URL: [url]', 'settings' => 'Ayarlar', 'settings_activate_module' => 'Modülü etkinleştir', 'settings_activate_php_extension' => 'PHP uzantısını etkinleştir', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => 'Yöneticinin sadece belli bir IP adresinden erişmesini istiyorsanız IP adresini giriniz. Kontrolü kaybetme riski olduğunu düşünüyorsanız boş bırakınız. NOT: sadece yerel yetkilendirme ile çalışır (LDAP ile çalışmaz)', 'settings_Advanced' => 'Gelişmiş ayarlar', @@ -1714,6 +1721,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'Full text arama metodunu ayarlayın', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Misafir ID', 'settings_guestID_desc' => 'Misafir kullanıcı için ID (genelde değiştirmek gerekmez)', 'settings_guestid_is_admin' => '', @@ -1751,6 +1768,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'SeedDMS_Lucene yolu (isteğe bağlı). SeedDMS_Lucene\'i PHP tarafından bulunabilecek bir yere kurduysanız bu alanı boş bırakabilirsiniz. Ör. Ekstra PHP Include-Path', 'settings_luceneDir' => 'Tam metin dizini', 'settings_luceneDir_desc' => 'Lucene indeks dizini yolu', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Maks Dizin ID', @@ -1946,6 +1965,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Yeni kullanıcı eklendi', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Pano temizlendi', 'splash_delete_access' => '', @@ -1968,6 +1988,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Kullanıcı kaydedildi', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 653d01857..a6257c3a9 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -392,7 +392,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => 'Авторизована зона. Несанкціонований доступ переслідується згідно національного законодавства.', 'discspace' => 'Дисковий простір', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '', 'docs_with_missing_revision_date' => '', 'document' => 'Документ', @@ -963,6 +965,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '', 'local_file' => 'Локальний файл', 'locked_by' => 'Заблоковано', @@ -1515,6 +1518,10 @@ URL: [url]', 'settings' => 'Налаштування', 'settings_activate_module' => 'Активувати модуль', 'settings_activate_php_extension' => 'Активувати розширення PHP', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Адміністраторська IP', 'settings_adminIP_desc' => 'Якщо встановлено, то адміністратор зможе зайти лише з цієї IP-адреси. Залиште порожнім, якщо це не потрібно. Не працює з LDAP.', 'settings_Advanced' => 'Додатково', @@ -1736,6 +1743,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => 'Встановити метод, який використовується для повнотекстового пошуку.', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Ідентифікатор гостя', 'settings_guestID_desc' => 'Ідентифікатор гостя (можна не змінювати).', 'settings_guestid_is_admin' => '', @@ -1773,6 +1790,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'Шлях до SeedDMS_Lucene (не обов\'язково).', 'settings_luceneDir' => 'Каталог повнотекстового індексу Lucene', 'settings_luceneDir_desc' => 'Шлях, куди Lucene буде записувати свій індекс.', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => 'Максимальний ID каталогу', @@ -1968,6 +1987,7 @@ URL: [url]', 'splash_add_transmittal' => '', 'splash_add_user' => 'Додано нового користувача', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '', 'splash_cleared_clipboard' => 'Буфер обміну очищено', 'splash_delete_access' => '', @@ -1990,6 +2010,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => 'Користувача збережено', 'splash_error_add_to_transmittal' => '', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 196af2eba..e80047010 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -386,7 +386,9 @@ URL: [url]', 'disable_extension' => '', 'disclaimer' => '警告:这是机密区.只有授权用户才被允许访问.任何违反行为将受到法律制裁', 'discspace' => '磁盘空间', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '收件人未访问接收到的文档', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '修订人未访问带修订文档', 'docs_with_missing_revision_date' => '', 'document' => '文档', @@ -966,6 +968,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '钩子列表', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '任务列表', 'local_file' => '本地文件', 'locked_by' => '锁定人', @@ -1503,6 +1506,10 @@ URL: [url]', 'settings' => '设置', 'settings_activate_module' => '启用模块', 'settings_activate_php_extension' => '启用 PHP 扩展', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => '管理员IP', 'settings_adminIP_desc' => '如果设置管理员只能通过指定的IP地址登录,请确认网络连接和端口。注意:只适用于本地认证(没有LDAP)', 'settings_Advanced' => '高级设置', @@ -1724,6 +1731,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => '设置用于全文检索的方法', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => '访客名称', 'settings_guestID_desc' => '来宾用户登录时使用的ID(基本不需要更改)', 'settings_guestid_is_admin' => '', @@ -1761,6 +1778,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => '路径到DMS_Lucene(可选)。如果你已经在PHP可以找到的地方安装了DMS_Lucene请将此空例如Extra PHP Include-Path', 'settings_luceneDir' => '全文索引目录', 'settings_luceneDir_desc' => 'Lucene 索引路径', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => '最大目录编号', @@ -1956,6 +1975,7 @@ URL: [url]', 'splash_add_transmittal' => '添加传输', 'splash_add_user' => '用户已添加', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => 'Cache 缓存已清理', 'splash_cleared_clipboard' => '剪贴板已清空', 'splash_delete_access' => '访问权限已删除', @@ -1978,6 +1998,7 @@ URL: [url]', 'splash_edit_transmittal' => '', 'splash_edit_user' => '用户信息已保存', 'splash_error_add_to_transmittal' => '在传送中添加文件时出错', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '移除下载链接时报错', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '发送下载链接时报错', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index a1819c9c4..879e31a0a 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -392,7 +392,9 @@ $text = array( 'disable_extension' => '', 'disclaimer' => '警告:這是機密區.只有授權使用者才被允許訪問.任何違反行為將受到法律制裁', 'discspace' => '磁碟空間', +'docs_in_reception_disabled' => '', 'docs_in_reception_no_access' => '帶有收件人的文件,收件人無法訪問', +'docs_in_revision_disabled' => '', 'docs_in_revision_no_access' => '修訂中的文件,沒有修訂者可以訪問', 'docs_with_missing_revision_date' => '', 'document' => '文件', @@ -983,6 +985,7 @@ URL: [url]', 'list_conversion_services' => '', 'list_hooks' => '掛勾列表', 'list_notification_services' => '', +'list_of_recipients_has_disabled_users' => '', 'list_tasks' => '工作列表', 'local_file' => '選擇檔案', 'locked_by' => '鎖定人', @@ -1554,6 +1557,10 @@ URL: [url]', 'settings' => '設置', 'settings_activate_module' => '激活模塊', 'settings_activate_php_extension' => '激活PHP擴展', +'settings_addManagerAsApprover' => '', +'settings_addManagerAsApprover_desc' => '', +'settings_addManagerAsReviewer' => '', +'settings_addManagerAsReviewer_desc' => '', 'settings_adminIP' => 'Admin IP', 'settings_adminIP_desc' => '如果設置,則管理員只能通過指定的IP地址登錄。留空以免失去訪問權限。注意:僅適用於本地身份驗證(無LDAP)', 'settings_Advanced' => '進階', @@ -1775,6 +1782,16 @@ URL: [url]', 'settings_fullSearchEngine_desc' => '設置用於全文搜索的方法。', 'settings_fullSearchEngine_vallucene' => 'Zend Lucene', 'settings_fullSearchEngine_valsqlitefts' => 'SQLiteFTS', +'settings_globalApprover' => '', +'settings_globalApprover_desc' => '', +'settings_globalGroupApprover' => '', +'settings_globalGroupApprover_desc' => '', +'settings_globalGroupReviewer' => '', +'settings_globalGroupReviewer_desc' => '', +'settings_globalReviewer' => '', +'settings_globalReviewer_desc' => '', +'settings_global_approver_is_admin' => '', +'settings_global_reviewer_is_admin' => '', 'settings_guestID' => 'Guest ID', 'settings_guestID_desc' => '以訪客身份登錄時使用的訪客用戶ID(通常無需更改)', 'settings_guestid_is_admin' => '', @@ -1812,6 +1829,8 @@ URL: [url]', 'settings_luceneClassDir_desc' => 'SeedDMS_Lucene的路徑(可選)。如果您已在PHP可以找到SeedDMS_Lucene的位置安裝了該字段,請將該字段留空。額外的PHP包含路徑', 'settings_luceneDir' => '全文索引目錄', 'settings_luceneDir_desc' => 'Lucene索引的路徑', +'settings_manager_approver_is_admin' => '', +'settings_manager_reviewer_is_admin' => '', 'settings_markdownComments' => '', 'settings_markdownComments_desc' => '', 'settings_maxDirID' => '最大目錄編號', @@ -2007,6 +2026,7 @@ URL: [url]', 'splash_add_transmittal' => '加入傳送', 'splash_add_user' => '新增新的使用者', 'splash_cancel_checkout' => '', +'splash_checked_in' => '', 'splash_cleared_cache' => '快取清除', 'splash_cleared_clipboard' => '剪貼簿已清除', 'splash_delete_access' => '訪問權限已刪除', @@ -2029,6 +2049,7 @@ URL: [url]', 'splash_edit_transmittal' => '傳送已儲存', 'splash_edit_user' => '使用者已儲存', 'splash_error_add_to_transmittal' => '將文件添加到傳送時出錯', +'splash_error_checkin_ended' => '', 'splash_error_rm_download_link' => '刪除下載鏈接時出錯', 'splash_error_saving_file' => '', 'splash_error_send_download_link' => '發送下載鏈接時出錯', From 6f2300fdd7e379caf78d03b4c12d2312739fb3c3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 15 Feb 2024 09:28:19 +0100 Subject: [PATCH 020/100] depend on sabre/dav 4, passwords can be shown --- composer-dist.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/composer-dist.json b/composer-dist.json index af3de13f3..ab9cc52b6 100644 --- a/composer-dist.json +++ b/composer-dist.json @@ -6,7 +6,9 @@ }, "require": { - "sabre/dav": "^3.", + "robthree/twofactorauth": "^1.5", + "sabre/dav": "^4.", + "sabre/xml": "*", "slim/slim": "^3.0", "erusev/parsedown": "*", "erusev/parsedown-extra": "*", From 53812aa45d1773943192700f7388d05628ca1a6c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 15 Feb 2024 09:37:43 +0100 Subject: [PATCH 021/100] checkboxes can be made invisible --- views/bootstrap/class.Settings.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index fe7041832..f82a9ac1e 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -59,7 +59,14 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { $class = 'input-medium'; else $class = 'input-small'; + $html .= '
          '; $html .= ''; + if($this->getTheme() == 'bootstrap4' && $type == 'password') { + $html .= '
          '; + $html .= ''; + $html .= '
          '; + } + $html .= '
          '; } return $html; } /* }}} */ @@ -161,7 +168,14 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { ?> "> - {"_".$name}) echo "checked" ?> /> + +isVisible($name)) + echo '{"_".$name} ? "checked" : '').' />'; + else + echo getMLText('settings_conf_field_not_editable'); + echo "\n"; +?> Date: Thu, 15 Feb 2024 09:38:12 +0100 Subject: [PATCH 022/100] ??? --- views/bootstrap4/styles/application.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index 61c6ca455..750a563ac 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -284,6 +284,21 @@ $(document).ready( function() { $($(this).data("target")+' .modal-header h3').html($(this).data("modal-title")); }); + $('body').on('click', '.show-hide-password a', function(ev){ + ev.preventDefault(); +// console.log($(this).closest('input')); +// console.log($(ev.target).parent().parent().children('input')); + if($('.show-hide-password input').attr("type") == "text"){ + $('.show-hide-password input').attr('type', 'password'); + $('.show-hide-password i').addClass( "fa-eye-slash" ); + $('.show-hide-password i').removeClass( "fa-eye" ); + }else if($('.show-hide-password input').attr("type") == "password"){ + $('.show-hide-password input').attr('type', 'text'); + $('.show-hide-password i').removeClass( "fa-eye-slash" ); + $('.show-hide-password i').addClass( "fa-eye" ); + } + }); + // $('body').on('touchstart.dropdown', '.dropdown-menu', function (e) { e.stopPropagation(); }); initMost(); From 98984619f6e36129ec617559ef3d6b019ace0435 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 16 Feb 2024 08:50:09 +0100 Subject: [PATCH 023/100] add changes for 5.1.34 --- CHANGELOG | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d818bbb29..2ac37fb2f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,11 @@ +-------------------------------------------------------------------------------- + Changes in version 5.1.34 +-------------------------------------------------------------------------------- +- introduce global reviewer/approver +- group managers can be used as mandatory reviewers/approvers for all + users of that group +- update sabre/dav to 4.* + -------------------------------------------------------------------------------- Changes in version 5.1.33 -------------------------------------------------------------------------------- From 17dbfcf2c751826c2945da5183bbbe88176b3435 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 17 Feb 2024 13:03:29 +0100 Subject: [PATCH 024/100] propperly import group names with non-printable chars --- inc/inc.ClassLdapAuthentication.php | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/inc/inc.ClassLdapAuthentication.php b/inc/inc.ClassLdapAuthentication.php index 987a6a4e9..ff4eb17b9 100644 --- a/inc/inc.ClassLdapAuthentication.php +++ b/inc/inc.ClassLdapAuthentication.php @@ -47,9 +47,21 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { if(isset($ldapgroups['count'])) $count = (int) $ldapgroups['count']; for ($i = 0; $i < $count; $i++) { - $tmp = ldap_explode_dn($ldapgroups[$i], 1); + if(0) { + /* ldap_explode_dn() turns all utf-8 chars into \xx + * This needs to be undone with the following regex. + */ + $tmp = ldap_explode_dn($ldapgroups[$i], 1); + $tmp[0] = preg_replace_callback('/\\\([0-9A-Fa-f]{2})/', function ($matches) { return chr(hexdec($matches[1])); }, $tmp[0]); + } else { + /* Second option would be to not using ldap_explode_dn() + * and just extract the cn with + * preg_match('/[^cn=]([^,]*)/i', $ldapgroups[$i], $tmp); + */ + preg_match('/[^cn=]([^,]*)/i', $ldapgroups[$i], $tmp); + } if (!in_array($tmp[0], $groupnames)) { - $groupnames[] = $tmp[0]; + $groupnames[] = preg_replace_callback('/\\\([0-9A-Fa-f]{2})/', function ($matches) { return chr(hexdec($matches[1])); }, $tmp[0]); } } From a0b3d9da27c49ad4939781f707fab3e1012e3bfd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 21 Feb 2024 15:33:13 +0100 Subject: [PATCH 025/100] take all mandatory reviewers/approvers into account --- op/op.CheckInDocument.php | 14 +- views/bootstrap/class.CheckInDocument.php | 249 ++++++++++------------ 2 files changed, 123 insertions(+), 140 deletions(-) diff --git a/op/op.CheckInDocument.php b/op/op.CheckInDocument.php index 6b2039e31..729c769b3 100644 --- a/op/op.CheckInDocument.php +++ b/op/op.CheckInDocument.php @@ -144,10 +144,14 @@ else $mreviewers = getMandatoryReviewers($folder, $user); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); + if($mreviewers['g']) + $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } $mapprovers = getMandatoryApprovers($folder, $user); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); + if($mapprovers['g']) + $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); if($settings->_workflowMode == 'traditional' && !$settings->_allowReviewerOnly) { /* Check if reviewers are send but no approvers */ @@ -156,11 +160,19 @@ else } } } elseif($settings->_workflowMode == 'advanced') { - if(!$workflow = $user->getMandatoryWorkflow()) { + if(!$workflows = $user->getMandatoryWorkflows()) { if(isset($_POST["workflow"])) $workflow = $dms->getWorkflow($_POST["workflow"]); else $workflow = null; + } else { + /* If there is excactly 1 mandatory workflow, then set no matter what has + * been posted in 'workflow', otherwise check if the posted workflow is in the + * list of mandatory workflows. If not, then take the first one. + */ + $workflow = array_shift($workflows); + foreach($workflows as $mw) + if($mw->getID() == $_POST['workflow']) {$workflow = $mw; break;} } } diff --git a/views/bootstrap/class.CheckInDocument.php b/views/bootstrap/class.CheckInDocument.php index f2c50b693..189be994f 100644 --- a/views/bootstrap/class.CheckInDocument.php +++ b/views/bootstrap/class.CheckInDocument.php @@ -272,28 +272,27 @@ $(document).ready(function() { $this->warningMsg(getMLText("add_doc_workflow_warning")); } elseif($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { if($workflowmode == 'traditional') { + $this->contentContainerEnd(); $this->contentSubHeading(getMLText("assign_reviewers")); - $res=$user->getMandatoryReviewers(); + $this->contentContainerStart(); + + $mreviewers = getMandatoryReviewers($folder, $document, $user); + $options = array(); foreach ($docAccess["users"] as $usr) { - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['reviewerUserID']==$usr->getID()) $mandatory=true; + if(!$enablehiddenrevapp && $usr->isHidden()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mreviewers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_reviewer'))); $options[] = $option; } $tmp = array(); foreach($reviewStatus as $r) { if($r['type'] == 0) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['reviewerUserID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mreviewers) { + if(!in_array($r['required'], $mreviewers['i'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -305,20 +304,17 @@ $(document).ready(function() { $fieldwrap = array('', $this->getSelectPresetButtonHtml("IndReviewers", $tmp)); } /* List all mandatory reviewers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerUserID'] > 0) { - $u = $dms->getUser($r['reviewerUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { - if(isset($fieldwrap[1])) - $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; - else - $fieldwrap[1] = '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; - } + $tmp = array(); + foreach ($mreviewers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + + if($tmp) { + if(isset($fieldwrap[1])) + $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; + else + $fieldwrap[1] = '
          '.getMLText('mandatory_reviewers').': '.implode(', ', $tmp)."
          \n"; } $this->formField( @@ -336,17 +332,15 @@ $(document).ready(function() { ); /* Check for mandatory reviewer without access */ - foreach($res as $r) { - if($r['reviewerUserID']) { - $hasAccess = false; - foreach ($docAccess["users"] as $usr) { - if ($r['reviewerUserID']==$usr->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['reviewerUserID']); - $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); - } + foreach($mreviewers['ni'] as $r) { + $hasAccess = false; + foreach ($docAccess["users"] as $usr) { + if ($r == $usr->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessUser = $dms->getUser($r); + $this->warningMsg(getMLText("mandatory_reviewer_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } } @@ -369,24 +363,17 @@ $(document).ready(function() { $options = array(); foreach ($docAccess["groups"] as $grp) { - - $mandatory=false; - foreach ($res as $r) if ($r['reviewerGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); + if(in_array($grp->getId(), $mreviewers['g']) || !$grp->getUsers()) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer'))); $options[] = $option; } + $tmp = array(); foreach($reviewStatus as $r) { if($r['type'] == 1) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['reviewerGroupID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mreviewers) { + if(!in_array($r['required'], $mreviewers['g'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -398,18 +385,18 @@ $(document).ready(function() { $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpReviewers", $tmp)); } /* List all mandatory groups of reviewers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['reviewerGroupID'] > 0) { - $u = $dms->getGroup($r['reviewerGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"; - } + $tmp = array(); + foreach ($mreviewers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); } + if($tmp) { + if(isset($fieldwrap[1])) + $fieldwrap[1] .= '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"; + else + $fieldwrap[1] = '
          '.getMLText('mandatory_reviewergroups').': '.implode(', ', $tmp)."
          \n"; + } + $this->formField( getMLText("groups"), array( @@ -425,44 +412,41 @@ $(document).ready(function() { ); /* Check for mandatory reviewer group without access */ - foreach($res as $r) { - if ($r['reviewerGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['reviewerGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); - $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mreviewers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r['reviewerGroupID']); + $this->warningMsg(getMLText("mandatory_reviewergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } + $this->contentContainerEnd(); } $this->contentSubHeading(getMLText("assign_approvers")); - $options = array(); - $res=$user->getMandatoryApprovers(); - foreach ($docAccess["users"] as $usr) { - if (!$enableselfrevapp && $usr->getID()==$user->getID()) continue; + $this->contentContainerStart(); + + $mapprovers = getMandatoryApprovers($folder, $document, $user); + + $options = array(); + foreach ($docAccess["users"] as $usr) { + if(!$enablehiddenrevapp && $usr->isHidden()) continue; + if(!$enableselfrevapp && $usr->getID()==$user->getID()) continue; - $mandatory=false; - foreach ($res as $r) if ($r['approverUserID']==$usr->getID()) $mandatory=true; - $option = array($usr->getID(), htmlspecialchars($usr->getLogin()." - ".$usr->getFullName()), null); - if ($mandatory) $option[] = array(array('disabled', 'disabled')); + if(in_array($usr->getId(), $mapprovers['i'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('user_is_mandatory_approver'))); $options[] = $option; } + $tmp = array(); foreach($approvalStatus as $r) { if($r['type'] == 0) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['approverUserID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) + if($mapprovers) { + if(!in_array($r['required'], $mapprovers['i'])) $tmp[] = $r['required']; } else { $tmp[] = $r['required']; @@ -473,18 +457,18 @@ $(document).ready(function() { if($tmp) { $fieldwrap = array('', $this->getSelectPresetButtonHtml("IndApprovers", $tmp)); } + /* List all mandatory approvers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverUserID'] > 0) { - $u = $dms->getUser($r['approverUserID']); - $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); - } - } - if($tmp) { + $tmp = array(); + foreach ($mapprovers['i'] as $r) { + $u = $dms->getUser($r); + $tmp[] = htmlspecialchars($u->getFullName().' ('.$u->getLogin().')'); + } + if($tmp) { + if(isset($fieldwrap[1])) $fieldwrap[1] .= '
          '.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
          \n"; - } + else + $fieldwrap[1] = '
          '.getMLText('mandatory_approvers').': '.implode(', ', $tmp)."
          \n"; } $this->formField( @@ -502,18 +486,16 @@ $(document).ready(function() { ); /* Check for mandatory approvers without access */ - foreach($res as $r) { - if($r['approverUserID']) { + foreach($mapprovers['ni'] as $r) { $hasAccess = false; foreach ($docAccess["users"] as $usr) { - if ($r['approverUserID']==$usr->getID()) + if ($r == $usr->getID()) $hasAccess = true; } if(!$hasAccess) { - $noAccessUser = $dms->getUser($r['approverUserID']); + $noAccessUser = $dms->getUser($r); $this->warningMsg(getMLText("mandatory_approver_no_access", array('user'=>htmlspecialchars($noAccessUser->getFullName()." (".$noAccessUser->getLogin().")")))); } - } } $options = array(); @@ -536,28 +518,18 @@ $(document).ready(function() { $options = array(); foreach ($docAccess["groups"] as $grp) { - $mandatory=false; - foreach ($res as $r) if ($r['approverGroupID']==$grp->getID()) $mandatory=true; - $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if ($mandatory || !$grp->getUsers()) $option[] = array(array('disabled', 'disabled')); - + if(in_array($grp->getId(), $mapprovers['g'])) + $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_approver'))); $options[] = $option; } $tmp = array(); foreach($approvalStatus as $r) { if($r['type'] == 1) { - if($res) { - $mandatory=false; - foreach ($res as $rr) - if ($rr['approverGroupID']==$r['required']) { - $mandatory=true; - } - if(!$mandatory) - $tmp[] = $r['required']; - } else { + if(!in_array($r['required'], $mapprovers['g'])) $tmp[] = $r['required']; - } + } else { + $tmp[] = $r['required']; } } $fieldwrap = array('', ''); @@ -565,17 +537,13 @@ $(document).ready(function() { $fieldwrap = array('', $this->getSelectPresetButtonHtml("GrpApprovers", $tmp)); } /* List all mandatory groups of approvers */ - if($res) { - $tmp = array(); - foreach ($res as $r) { - if($r['approverGroupID'] > 0) { - $u = $dms->getGroup($r['approverGroupID']); - $tmp[] = htmlspecialchars($u->getName()); - } - } - if($tmp) { - $fieldwrap[1] .= '
          '.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
          \n"; - } + $tmp = array(); + foreach ($mapprovers['g'] as $r) { + $u = $dms->getGroup($r); + $tmp[] = htmlspecialchars($u->getName()); + } + if($tmp) { + $fieldwrap[1] .= '
          '.getMLText('mandatory_approvergroups').': '.implode(', ', $tmp)."
          \n"; } $this->formField( @@ -593,22 +561,25 @@ $(document).ready(function() { ); /* Check for mandatory approver groups without access */ - foreach($res as $r) { - if ($r['approverGroupID']) { - $hasAccess = false; - foreach ($docAccess["groups"] as $grp) { - if ($r['approverGroupID']==$grp->getID()) - $hasAccess = true; - } - if(!$hasAccess) { - $noAccessGroup = $dms->getGroup($r['approverGroupID']); - $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); - } + foreach($mapprovers['ng'] as $r) { + $hasAccess = false; + foreach ($docAccess["groups"] as $grp) { + if ($r == $grp->getID()) + $hasAccess = true; + } + if(!$hasAccess) { + $noAccessGroup = $dms->getGroup($r); + $this->warningMsg(getMLText("mandatory_approvergroup_no_access", array('group'=>htmlspecialchars($noAccessGroup->getName())))); } } + $this->contentContainerEnd(); $this->warningMsg(getMLText("add_doc_reviewer_approver_warning")); + } else { + $this->contentContainerEnd(); } if($enablereceiptworkflow) { + $this->contentSubHeading(getMLText("assign_recipients")); + $this->contentContainerStart(); $options = array(); foreach ($docAccess["users"] as $usr) { if (!$enableselfreceipt && $usr->getID()==$user->getID()) continue; @@ -683,8 +654,8 @@ $(document).ready(function() { array('field_wrap'=>$fieldwrap) ); + $this->contentContainerEnd(); } - $this->contentContainerEnd(); $this->formSubmit(getMLText('checkin_document')); ?> From c5d44c3674a5cb7d35f9ddae1b4e3b52a1894a21 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 21 Feb 2024 16:04:01 +0100 Subject: [PATCH 026/100] do not add empty groups as mandatory approver/reviewer --- inc/inc.Utils.php | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index ff740d904..315e2545f 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -1044,6 +1044,7 @@ function cmp_user_fullname($a, $b) { /* {{{ */ * on the folder containing the document. It also checks if the * mandatory reviewer is an admin or the uploading user and if * those are allowed to review/approve a document. + * Mandatory groups will only be added if they are not empty * * @param $folder folder where document is located * @param $document document which is updated, null when adding a new document @@ -1096,7 +1097,11 @@ function getMandatoryReviewers($folder, $document, $user) { /* {{{ */ foreach($revi as $uid) { if($u = $dms->getUser($uid)) { /* need at least read access on parent folder */ - if($folder->getAccessMode($u) < M_READ) + if($document) + $accessmode = $document->getAccessMode($u); + else + $accessmode = $folder->getAccessMode($u); + if($accessmode < M_READ) $reviewers["ni"][] = $u->getId(); /* admins as reviewers must be enabled */ elseif(!$settings->_enableAdminRevApp && $u->isAdmin()) @@ -1113,7 +1118,11 @@ function getMandatoryReviewers($folder, $document, $user) { /* {{{ */ } foreach($revg as $gid) { if($g = $dms->getGroup($gid)) { - if($folder->getGroupAccessMode($g) < M_READ) + if($document) + $accessmode = $document->getGroupAccessMode($u); + else + $accessmode = $folder->getGroupAccessMode($u); + if($accessmode < M_READ || !$g->getUsers()) $reviewers["ng"][] = $g->getId(); else $reviewers["g"][] = $g->getId(); @@ -1130,6 +1139,7 @@ function getMandatoryReviewers($folder, $document, $user) { /* {{{ */ * on the folder containing the document. It also checks if the * mandatory approver is an admin or the uploading user and if * those are allowed to review/approve a document. + * Mandatory groups will only be added if they are not empty * * @param $folder folder where document is located * @param $document document which is updated, null when adding a new document @@ -1182,7 +1192,11 @@ function getMandatoryApprovers($folder, $document, $user) { /* {{{ */ foreach($appi as $uid) { if($u = $dms->getUser($uid)) { /* need at least read access on parent folder */ - if($folder->getAccessMode($u) < M_READ) + if($document) + $accessmode = $document->getAccessMode($u); + else + $accessmode = $folder->getAccessMode($u); + if($accessmode < M_READ) $approvers["ni"][] = $u->getId(); /* admins as approvers must be enabled */ elseif(!$settings->_enableAdminRevApp && $u->isAdmin()) @@ -1199,7 +1213,11 @@ function getMandatoryApprovers($folder, $document, $user) { /* {{{ */ } foreach($appg as $gid) { if($g = $dms->getGroup($gid)) { - if($folder->getGroupAccessMode($g) < M_READ) + if($document) + $accessmode = $document->getGroupAccessMode($u); + else + $accessmode = $folder->getGroupAccessMode($u); + if($accessmode < M_READ || !$g->getUsers()) $approvers["ng"][] = $g->getId(); else $approvers["g"][] = $g->getId(); From a1a20a4c258dcfdc794e5b577822ba893817a7dc Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 22 Feb 2024 11:58:05 +0100 Subject: [PATCH 027/100] pass document to getMandatoryReviewers() and getMandatoryApprovers() --- op/op.CheckInDocument.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/op/op.CheckInDocument.php b/op/op.CheckInDocument.php index 729c769b3..72f9ce03f 100644 --- a/op/op.CheckInDocument.php +++ b/op/op.CheckInDocument.php @@ -141,13 +141,13 @@ else // add mandatory reviewers/approvers if($settings->_workflowMode == 'traditional') { - $mreviewers = getMandatoryReviewers($folder, $user); + $mreviewers = getMandatoryReviewers($folder, $document, $user); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); if($mreviewers['g']) $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } - $mapprovers = getMandatoryApprovers($folder, $user); + $mapprovers = getMandatoryApprovers($folder, $document, $user); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); if($mapprovers['g']) From 43a22ea25290f6c0284a9e68167b8c60cc85e202 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 22 Feb 2024 12:06:16 +0100 Subject: [PATCH 028/100] no need to check if group has users, because those groups have been removed from the mandatory already --- views/bootstrap/class.UpdateDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.UpdateDocument.php b/views/bootstrap/class.UpdateDocument.php index 8c485c8e8..53ec02b33 100644 --- a/views/bootstrap/class.UpdateDocument.php +++ b/views/bootstrap/class.UpdateDocument.php @@ -409,7 +409,7 @@ console.log(element); $options = array(); foreach ($docAccess["groups"] as $grp) { $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if(in_array($grp->getId(), $mreviewers['g']) || !$grp->getUsers()) + if(in_array($grp->getId(), $mreviewers['g'])) $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer'))); $options[] = $option; } From 36dbc1f825063aba0b9154f371a7668c2cdf4672 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 22 Feb 2024 12:07:35 +0100 Subject: [PATCH 029/100] no need to check if group has users because it has been remove from the mandatory groups already --- views/bootstrap/class.CheckInDocument.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.CheckInDocument.php b/views/bootstrap/class.CheckInDocument.php index 189be994f..cc5d8af1d 100644 --- a/views/bootstrap/class.CheckInDocument.php +++ b/views/bootstrap/class.CheckInDocument.php @@ -364,7 +364,7 @@ $(document).ready(function() { $options = array(); foreach ($docAccess["groups"] as $grp) { $option = array($grp->getID(), htmlspecialchars($grp->getName()), null); - if(in_array($grp->getId(), $mreviewers['g']) || !$grp->getUsers()) + if(in_array($grp->getId(), $mreviewers['g'])) $option[] = array(array('disabled', 'disabled'), array('data-subtitle', getMLText('group_is_mandatory_reviewer'))); $options[] = $option; } From 88452a63a1cda97d338075bfac97f5f86d6b85b4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 29 Feb 2024 08:50:35 +0100 Subject: [PATCH 030/100] do not show form if there are no process to transfer --- views/bootstrap/class.RemoveUserFromProcesses.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.RemoveUserFromProcesses.php b/views/bootstrap/class.RemoveUserFromProcesses.php index 7fbcbfff4..1f531aed8 100644 --- a/views/bootstrap/class.RemoveUserFromProcesses.php +++ b/views/bootstrap/class.RemoveUserFromProcesses.php @@ -230,7 +230,6 @@ $(document).ready( function() { $this->rowStart(); $this->columnStart(4); - $this->warningMsg(getMLText("confirm_rm_user_from_processes", array ("username" => htmlspecialchars($rmuser->getFullName())))); $reviewStatus = $rmuser->getReviewStatus(); $tmpr = array(); @@ -315,7 +314,8 @@ $(document).ready( function() { getMLText('approvals_rejected_latest', array('no_approvals' => $ca["-1"])) ); } - + if($out) { + $this->warningMsg(getMLText("confirm_rm_user_from_processes", array ("username" => htmlspecialchars($rmuser->getFullName())))); ?>
          @@ -355,6 +355,9 @@ $(document).ready( function() {
          infoMsg(getMLText("info_rm_user_from_processes_none", array ("username" => htmlspecialchars($rmuser->getFullName())))); + } $this->columnEnd(); $this->columnStart(8); echo '
          '; From 83e131d677b70eb980f6d46ee1020d906899d179 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 4 Mar 2024 11:17:58 +0100 Subject: [PATCH 031/100] list of documents: output folder where document is located --- views/bootstrap/class.Calendar.php | 9 ++++++++- views/bootstrap/class.Dashboard.php | 4 +++- views/bootstrap/class.Timeline.php | 11 ++++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/views/bootstrap/class.Calendar.php b/views/bootstrap/class.Calendar.php index 1b93f3b37..378b721ca 100644 --- a/views/bootstrap/class.Calendar.php +++ b/views/bootstrap/class.Calendar.php @@ -54,7 +54,14 @@ class SeedDMS_View_Calendar extends SeedDMS_Theme_Style { else $previewer->setConverters($previewconverters); $document->verifyLastestContentExpriry(); - echo $this->documentListRow($document, $previewer); + $txt = $this->callHook('documentListItem', $document, $previewer, false, 'calendar'); + if(is_string($txt)) + echo $txt; + else { + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($document); + echo $this->documentListRow($document, $previewer, 0, false, $extracontent); + } echo "\n\n"; } if($event) { diff --git a/views/bootstrap/class.Dashboard.php b/views/bootstrap/class.Dashboard.php index bcd52b191..c03c022b1 100644 --- a/views/bootstrap/class.Dashboard.php +++ b/views/bootstrap/class.Dashboard.php @@ -47,7 +47,9 @@ class SeedDMS_View_Dashboard extends SeedDMS_Theme_Style { if(is_string($txt)) echo $txt; else { - echo $this->documentListRow($document, $previewer); + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($document); + echo $this->documentListRow($document, $previewer, false, 0, $extracontent); } } diff --git a/views/bootstrap/class.Timeline.php b/views/bootstrap/class.Timeline.php index a23870530..17b0efd29 100644 --- a/views/bootstrap/class.Timeline.php +++ b/views/bootstrap/class.Timeline.php @@ -51,9 +51,14 @@ class SeedDMS_View_Timeline extends SeedDMS_Theme_Style { $previewer->setConversionMgr($conversionmgr); else $previewer->setConverters($previewconverters); - $extracontent = array(); - $extracontent['below_title'] = $this->getListRowPath($document); - echo $this->documentListRow($document, $previewer, 0, false, $extracontent); + $txt = $this->callHook('documentListItem', $document, $previewer, false, 'timeline'); + if(is_string($txt)) + echo $txt; + else { + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($document); + echo $this->documentListRow($document, $previewer, 0, false, $extracontent); + } echo "\n\n"; } From 84a3df2e450d9dcab96df39df4afebe0a6888d40 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 4 Mar 2024 11:40:21 +0100 Subject: [PATCH 032/100] add entry for 5.1.34 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 2ac37fb2f..96a28f2ae 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ - group managers can be used as mandatory reviewers/approvers for all users of that group - update sabre/dav to 4.* +- show parent folder of document in lists of documents (calendar, dashboard) -------------------------------------------------------------------------------- Changes in version 5.1.33 From 2ddbc2410854470085c262ca8a0852e1371ef29a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 4 Mar 2024 18:42:29 +0100 Subject: [PATCH 033/100] remove not needed () --- views/bootstrap4/class.Bootstrap4.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index b47340aee..a0c6f3995 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1667,7 +1667,7 @@ $(document).ready(function() { $formid = md5($formname.$form); $content = ''; - $content .= "getID() : "") ."\">"; + $content .= "getID() : "") ."\">"; $content .= "
          \n"; $content .= "getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" />"; $content .= '
          '; From 0402877a39ac886a3404c80757f07b275b35bcf6 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 5 Mar 2024 18:18:14 +0100 Subject: [PATCH 034/100] remove unused () --- views/bootstrap/class.Bootstrap.php | 2 +- views/bootstrap4/class.Bootstrap4.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 824d6f9e6..7edb17ece 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1702,7 +1702,7 @@ function folderSelected(id, name) { $formname = "targetid"; $formid = md5($formname.$form); $content = ''; - $content .= "getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">"; + $content .= "getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">"; $content .= "
          \n"; $content .= "getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"".($default ? ' title="'.htmlspecialchars($default->getFolderPathPlain()).'"' : '')."/>"; $content .= ""; diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index a0c6f3995..6c5ab1812 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1734,7 +1734,7 @@ function folderSelected(id, name) { $formname = "targetid"; $formid = md5($formname.$form); $content = ''; - $content .= "getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">"; + $content .= "getID() : "") ."\" data-target-highlight=\"choosefoldersearch".$formid."\">"; $content .= "
          \n"; $content .= "getName()) : "") ."\" placeholder=\"".getMLText('type_to_search')."\" autocomplete=\"off\" target=\"".$formid."\"/>"; $content .= '
          '; From dd4149e3a6192c76282671403cf388bc11157608 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 6 Mar 2024 16:31:02 +0100 Subject: [PATCH 035/100] add commands 'updatedocument' and 'addfolder' --- op/op.Ajax.php | 249 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index f2300781d..7c1078536 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -876,6 +876,255 @@ switch($command) { } break; /* }}} */ + case 'updatedocument': /* {{{ */ + if($user) { + if(checkFormKey('')) { + if (!isset($_POST["documentid"]) || !is_numeric($_POST["documentid"]) || intval($_POST["documentid"])<1) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_document_id"))); + exit; + } + + $documentid = $_POST["documentid"]; + $document = $dms->getDocument($documentid); + + if (!is_object($document)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_document_id"))); + exit; + } + + if ($document->getAccessMode($user, 'addDocument') < M_READWRITE) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("access_denied"))); + exit; + } + + if($settings->_quota > 0) { + $remain = checkQuota($user); + if ($remain < 0) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("quota_exceeded", array('bytes'=>SeedDMS_Core_File::format_filesize(abs($remain)))))); + exit; + } + } + + if (!is_uploaded_file($_FILES["userfile"]["tmp_name"]) || $_FILES['userfile']['error']!=0){ + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_failed"))); + exit; + } + if ($_FILES["userfile"]["size"]==0) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_zerosize"))); + exit; + } + + $maxuploadsize = SeedDMS_Core_File::parse_filesize($settings->_maxUploadSize); + if ($maxuploadsize && $_FILES["userfile"]["size"] > $maxuploadsize) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("uploading_maxsize"))); + exit; + } + + $userfiletmp = $_FILES["userfile"]["tmp_name"]; + $userfiletype = $_FILES["userfile"]["type"]; + $userfilename = $_FILES["userfile"]["name"]; + + $fileType = ".".pathinfo($userfilename, PATHINFO_EXTENSION); + + if($settings->_overrideMimeType) { + $userfiletype = SeedDMS_Core_File::mimetype($userfiletmp); + } + + if (!empty($_POST["name"])) + $name = $_POST["name"]; + else + $name = utf8_basename($userfilename); + + if(isset($_POST["attributes"])) + $attributes = $_POST["attributes"]; + else + $attributes = array(); + + if(isset($_POST["comment"])) + $comment = trim($_POST["comment"]); + else + $comment = ''; + + // Get the list of reviewers and approvers for this document. + $reviewers = array(); + $approvers = array(); + $reviewers["i"] = array(); + $reviewers["g"] = array(); + $approvers["i"] = array(); + $approvers["g"] = array(); + $workflow = null; + + if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { + // add mandatory reviewers/approvers + if($settings->_workflowMode == 'traditional') { + $mreviewers = getMandatoryReviewers(null, $document, $user); + if($mreviewers['i']) + $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); + if($mreviewers['g']) + $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); + } + $mapprovers = getMandatoryApprovers(null, $document, $user); + if($mapprovers['i']) + $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); + if($mapprovers['g']) + $approvers['g'] = array_merge($approvers['g'], $mapprovers['g']); + + } elseif($settings->_workflowMode == 'advanced') { + $workflow = $user->getMandatoryWorkflow(); + } + + $expires = false; + if($settings->_presetExpirationDate) { + $expires = strtotime($settings->_presetExpirationDate); + } + + $controller = Controller::factory('UpdateDocument', array('dms'=>$dms, 'user'=>$user)); + $controller->setParam('documentsource', 'upload'); + $controller->setParam('fulltextservice', $fulltextservice); + $controller->setParam('document', $document); + $controller->setParam('folder', $document->getFolder()); + $controller->setParam('name', $name); + $controller->setParam('comment', $comment); + $controller->setParam('expires', $expires); + $controller->setParam('userfiletmp', $userfiletmp); + $controller->setParam('userfilename', $userfilename); + $controller->setParam('filetype', $fileType); + $controller->setParam('userfiletype', $userfiletype); + $controller->setParam('reviewers', $reviewers); + $controller->setParam('approvers', $approvers); + $controller->setParam('reqversion', 1); + $controller->setParam('attributes', $attributes); + $controller->setParam('workflow', $workflow); + $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); + + if(!$content = $controller()) { + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>$errmsg)); + exit; + } else { + // Send notification to subscribers of folder. + if($notifier) { + $notifier->sendNewDocumentVersionMail($document, $user); + } + } + header('Content-Type: application/json'); + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_document_updated'), 'data'=>$document->getID())); + add_log_line("updated document ".$document->getId()); + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); + } + } + break; /* }}} */ + + case 'addfolder': /* {{{ */ + if($user) { + if(checkFormKey('')) { + if (!isset($_POST["folderid"]) || !is_numeric($_POST["folderid"]) || intval($_POST["folderid"])<1) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_folder_id"))); + exit; + } + + $folderid = $_POST["folderid"]; + $folder = $dms->getFolder($folderid); + + if (!is_object($folder)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("invalid_folder_id"))); + exit; + } + + if ($folder->getAccessMode($user, 'addFolder') < M_READWRITE) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("access_denied"))); + exit; + } + + if (!empty($_POST["name"])) + $name = $_POST["name"]; + else + $name = utf8_basename($userfilename); + + /* Check if name already exists in the folder */ + if(!$settings->_enableDuplicateDocNames) { + if($folder->hasDocumentByName($name)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText("document_duplicate_name"))); + exit; + } + } + + if(isset($_POST["attributes"])) + $attributes = $_POST["attributes"]; + else + $attributes = array(); + + if(isset($_POST["comment"])) + $comment = trim($_POST["comment"]); + else + $comment = ''; + + $controller = Controller::factory('AddSubFolder', array('dms'=>$dms, 'user'=>$user)); + $controller->setParam('documentsource', 'upload'); + $controller->setParam('folder', $folder); + $controller->setParam('fulltextservice', $fulltextservice); + $controller->setParam('name', $name); + $controller->setParam('comment', $comment); + $minmax = $folder->getFoldersMinMax(); + $deviation = rand(10, 1000)/10; + if($settings->_defaultFolderPosition == 'start') + $controller->setParam('sequence', $minmax['min'] - $deviation); + else + $controller->setParam('sequence', $minmax['max'] + $deviation); + $controller->setParam('owner', $user); + $controller->setParam('attributes', $attributes); + $controller->setParam('notificationgroups', array()); + $controller->setParam('notificationusers', array()); + + if(!$subfolder = $controller()) { + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>$errmsg)); + exit; + } else { + // Send notification to subscribers of folder. + if($notifier) { + $notifier->sendNewFolderMail($subfolder, $user); + } + } + header('Content-Type: application/json'); + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_folder_added'), 'data'=>$subfolder->getID())); + add_log_line("add folder ".$subfolder->getId()." in folder ".$folder->getId()); + } else { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>'')); + } + } + break; /* }}} */ + case 'addfile': /* {{{ */ if($user) { if(checkFormKey('addfile')) { From 5d548bafcbc7492d6f51754ce6f5e993fa5bda46 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 6 Mar 2024 16:31:49 +0100 Subject: [PATCH 036/100] add more translations in js --- views/bootstrap/class.Search.php | 2 +- views/bootstrap/class.Timeline.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index 4cd15fa24..7bca0863d 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -50,7 +50,7 @@ class SeedDMS_View_Search extends SeedDMS_Theme_Style { function js() { /* {{{ */ header('Content-Type: application/javascript; charset=UTF-8'); - parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder', 'must_drop_one_file','confirm_upload_new_version', 'upload_new_version')); ?> $(document).ready( function() { diff --git a/views/bootstrap/class.Timeline.php b/views/bootstrap/class.Timeline.php index 17b0efd29..918f0ca22 100644 --- a/views/bootstrap/class.Timeline.php +++ b/views/bootstrap/class.Timeline.php @@ -143,7 +143,7 @@ class SeedDMS_View_Timeline extends SeedDMS_Theme_Style { } header('Content-Type: application/javascript; charset=UTF-8'); - parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder')); + parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder', 'must_drop_one_file','confirm_upload_new_version', 'upload_new_version')); ?> $(document).ready(function () { $('#update').click(function(ev){ From 484a95029c54e36c35187cca8660b3c966cfc97b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 6 Mar 2024 16:32:23 +0100 Subject: [PATCH 037/100] add support for updating a document by dropping a file on a document, folder hierarchies can be uploaded by drag&drop --- views/bootstrap/styles/application.js | 140 ++++++++++++++----------- views/bootstrap4/styles/application.js | 114 ++++++++++++-------- 2 files changed, 152 insertions(+), 102 deletions(-) diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index f34af0f4e..c03ec5225 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -697,8 +697,6 @@ function onAddClipboard(ev) { /* {{{ */ // function sendFileToServer(formData,status,callback) { SeedDMSUpload.sendFileToServer = function(formData,status,callback) { - var uploadURL = ajaxurl; //Upload URL - var extraData ={}; //Extra Data. var jqXHR=$.ajax({ xhr: function() { var xhrobj = $.ajaxSettings.xhr(); @@ -716,7 +714,7 @@ function onAddClipboard(ev) { /* {{{ */ } return xhrobj; }, - url: uploadURL, + url: ajaxurl, type: "POST", contentType: false, dataType:"json", @@ -755,6 +753,43 @@ function onAddClipboard(ev) { /* {{{ */ status.setAbort(jqXHR); } + SeedDMSUpload.addSubFolder = function(formData) { + var ret = false; + $.ajax({ + url: ajaxurl, + type: "POST", + contentType: false, + dataType:"json", + processData: false, + cache: false, + async: false, + data: formData, + success: function(data, textStatus) { + if(data.success) { + noty({ + text: data.message, + type: 'success', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500 + }); + ret = data.data; + } else { + noty({ + text: data.message, + type: 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 3500 + }); + } + } + }); + return ret; + } + //function createStatusbar(obj) { SeedDMSUpload.createStatusbar = function(obj) { rowCount++; @@ -839,7 +874,7 @@ function onAddClipboard(ev) { /* {{{ */ afteruploadfunc = function() { if(target_id == seeddms_folder) $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); - } + } } if(target_type == 'folder' && target_id) { for (var i = 0; i < items.length; i++) { @@ -879,24 +914,29 @@ function onAddClipboard(ev) { /* {{{ */ } }); } else if(item.isDirectory) { - var dirReader = item.createReader(); - dirReader.readEntries(function(entries) { - SeedDMSUpload.handleFileUpload(entries, obj, statusbar); - }); -/* - noty({ - text: 'Folders currently not supported', - type: 'error', - dismissQueue: true, - layout: 'topRight', - theme: 'defaultTheme', - timeout: 5000 - }); - */ + var fd = new FormData(); + fd.append('folderid', target_id); + fd.append('formtoken', obj.data('uploadformtoken')); + fd.append('command', 'addfolder'); + fd.append('name', item.name); + var fid = SeedDMSUpload.addSubFolder(fd); + if(fid) { + obj.data('target', fid); + obj.data('droptarget', 'folder_'+fid); + /* Set void afterupload to prevent tons of noty messages */ + obj.data('afterupload', '()=>{}'); + var dirReader = item.createReader(); + dirReader.readEntries(function(entries) { + SeedDMSUpload.handleFileUpload(entries, obj, statusbar); + }); + } + /* Just reload the parent folder */ + if(target_id == seeddms_folder) { + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + } } } } else if(target_type == 'document' && target_id) { - /* for (var i = 0; i < items.length; i++) { var item = items[i]; //.webkitGetAsEntry(); if (item.isFile) { @@ -906,15 +946,16 @@ function onAddClipboard(ev) { /* {{{ */ fd.append('targettype', target_type); fd.append('documentid', target_id); fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', files[i]); - fd.append('command', 'uploaddocument'); + fd.append('userfile', file); + fd.append('command', 'updatedocument'); var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(files[i].name,files[i].size); + status.setFileNameSize(file.name,file.size); SeedDMSUpload.sendFileToServer(fd,status); + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); } else { noty({ - text: maxFileSizeMsg + '
          ' + files[i].name + ' (' + files[i].size + ' Bytes)', + text: maxFileSizeMsg + '
          ' + file.name + ' (' + file.size + ' Bytes)', type: 'error', dismissQueue: true, layout: 'topRight', @@ -925,7 +966,6 @@ function onAddClipboard(ev) { /* {{{ */ }); } } - */ } else if(target_type == 'attachment' && target_id) { for (var i = 0; i < items.length; i++) { var item = items[i]; //.webkitGetAsEntry(); @@ -1012,9 +1052,9 @@ $(document).ready(function() { /* {{{ */ target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; target_name = $(e.currentTarget).data('name')+''; // Force this to be a string + files = e.originalEvent.dataTransfer.files; + items = e.originalEvent.dataTransfer.items; if(target_type == 'folder') { - var files = e.originalEvent.dataTransfer.files; - var items = e.originalEvent.dataTransfer.items; /* check for files, because items has an entry if no file was dropped */ if(files.length > 0) { // console.log('Drop '+files.length+' files on '+target_type+' '+target_id); @@ -1121,8 +1161,6 @@ $(document).ready(function() { /* {{{ */ } } } else if(target_type == 'document') { - var files = e.originalEvent.dataTransfer.files; - var items = e.originalEvent.dataTransfer.items; /* check for files, because items has an entry if no file was dropped */ if(files.length > 0) { // console.log('Drop '+files.length+' files on '+target_type+' '+target_id); @@ -1135,37 +1173,23 @@ $(document).ready(function() { /* {{{ */ theme: 'defaultTheme', timeout: 5000 }); - } else if(0) { - bootbox.dialog({ - "message" : trans.confirm_upload_new_version, - "buttons" : { - "cancel" : { - "label" : trans.cancel, - "className" : "btn-secondary", - "callback": function() { - } - }, - "newversion" : { - "label" : " "+trans.upload_new_version, - "className" : "btn-danger", - "callback": function() { - console.log('Hallo'); - /* - newitems = []; - for (var i=0; i "+trans.upload_new_version, + "class" : "btn-danger", + "callback": function() { + SeedDMSUpload.handleFileUpload(newitems,$(e.currentTarget),$('div.statusbar-container h1')); + } + }, { + "label" : trans.cancel, + "class" : "btn-cancel", + "callback": function() { + } + }]); } } else { var source_info = JSON.parse(e.originalEvent.dataTransfer.getData("text")); @@ -1248,8 +1272,6 @@ $(document).ready(function() { /* {{{ */ } } } else if(target_type == 'attachment') { - var files = e.originalEvent.dataTransfer.files; - var items = e.originalEvent.dataTransfer.items; if(files.length > 0) { newitems = []; for (var i=0; i{}'); + var dirReader = item.createReader(); + dirReader.readEntries(function(entries) { + SeedDMSUpload.handleFileUpload(entries, obj, statusbar); + }); + } + /* Just reload the parent folder */ + if(target_id == seeddms_folder) { + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); + } } } } else if(target_type == 'document' && target_id) { - /* for (var i = 0; i < items.length; i++) { var item = items[i]; //.webkitGetAsEntry(); if (item.isFile) { @@ -952,15 +992,16 @@ function onAddClipboard(ev) { /* {{{ */ fd.append('targettype', target_type); fd.append('documentid', target_id); fd.append('formtoken', obj.data('uploadformtoken')); - fd.append('userfile', files[i]); - fd.append('command', 'uploaddocument'); + fd.append('userfile', file); + fd.append('command', 'updatedocument'); var status = new SeedDMSUpload.createStatusbar(statusbar); - status.setFileNameSize(files[i].name,files[i].size); + status.setFileNameSize(file.name,file.size); SeedDMSUpload.sendFileToServer(fd,status); + $("div.ajax[data-action='folderList']").trigger('update', {folderid: seeddms_folder}); } else { noty({ - text: maxFileSizeMsg + '
          ' + files[i].name + ' (' + files[i].size + ' Bytes)', + text: maxFileSizeMsg + '
          ' + file.name + ' (' + file.size + ' Bytes)', type: 'error', dismissQueue: true, layout: 'topRight', @@ -971,7 +1012,6 @@ function onAddClipboard(ev) { /* {{{ */ }); } } - */ } else if(target_type == 'attachment' && target_id) { for (var i = 0; i < items.length; i++) { var item = items[i]; //.webkitGetAsEntry(); @@ -1058,9 +1098,9 @@ $(document).ready(function() { /* {{{ */ target_type = attr_rel.split("_")[0]; target_id = attr_rel.split("_")[1]; target_name = $(e.currentTarget).data('name')+''; // Force this to be a string + files = e.originalEvent.dataTransfer.files; + items = e.originalEvent.dataTransfer.items; if(target_type == 'folder') { - var files = e.originalEvent.dataTransfer.files; - var items = e.originalEvent.dataTransfer.items; /* check for files, because items has an entry if no file was dropped */ if(files.length > 0) { // console.log('Drop '+files.length+' files on '+target_type+' '+target_id); @@ -1179,8 +1219,6 @@ $(document).ready(function() { /* {{{ */ } } } else if(target_type == 'document') { - var files = e.originalEvent.dataTransfer.files; - var items = e.originalEvent.dataTransfer.items; /* check for files, because items has an entry if no file was dropped */ if(files.length > 0) { // console.log('Drop '+files.length+' files on '+target_type+' '+target_id); @@ -1193,7 +1231,11 @@ $(document).ready(function() { /* {{{ */ theme: 'defaultTheme', timeout: 5000 }); - } else if(0) { + } else if(1) { + newitems = []; + for (var i=0; i "+trans.upload_new_version, "className" : "btn-danger", "callback": function() { - console.log('Hallo'); - /* - newitems = []; - for (var i=0; i 0) { newitems = []; for (var i=0; i Date: Wed, 6 Mar 2024 16:33:40 +0100 Subject: [PATCH 038/100] add attribute 'data-uploadformtoken' to document list entry --- views/bootstrap/class.Bootstrap.php | 2 +- views/bootstrap4/class.Bootstrap4.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 7edb17ece..85ee1100a 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -3020,7 +3020,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) */ function documentListRowStart($document, $class='') { /* {{{ */ $docID = $document->getID(); - return "getName(), ENT_QUOTES)."\">"; + return "getName(), ENT_QUOTES)."\">"; } /* }}} */ function documentListRowEnd($document) { /* {{{ */ diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 6c5ab1812..797d11343 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -3095,7 +3095,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev) $class = 'table-'.$class; } $docID = $document->getID(); - return "getName(), ENT_QUOTES)."\">"; + return "getName(), ENT_QUOTES)."\">"; } /* }}} */ function documentListRowEnd($document) { /* {{{ */ From de0eb7cd2c2d00bfef3983da15af6e2b0aa28d43 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 6 Mar 2024 16:41:10 +0100 Subject: [PATCH 039/100] add changes of 5.1.34 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 96a28f2ae..60cdd4c1c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,9 @@ users of that group - update sabre/dav to 4.* - show parent folder of document in lists of documents (calendar, dashboard) +- documents can be updated by dragging a file on a document list item +- dragging a folder on a folder list item oder the drag and drop area will + recursively upload the folder hierarchy including all files -------------------------------------------------------------------------------- Changes in version 5.1.33 From 352c3997bdd1c1561f0cc0332e9110caca199297 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 12 Mar 2024 15:57:47 +0100 Subject: [PATCH 040/100] fix check if current user is owner --- inc/inc.ClassNotificationService.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index 3da5f9152..8711a72b3 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -437,7 +437,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $version->getUser()->getID() && $version->getUser()->getID() != $document->getOwner() && false === SeedDMS_Core_DMS::inList($version->getUser(), $nl['users'])) + if($user->getID() != $version->getUser()->getID() && $version->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($version->getUser(), $nl['users'])) $this->toIndividual($user, $version->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ @@ -571,7 +571,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ @@ -1011,7 +1011,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ @@ -1130,7 +1130,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ @@ -1166,7 +1166,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ From 423ee97ef14c2f42cd40990f562b76c9fd78f76f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 12 Mar 2024 15:58:46 +0100 Subject: [PATCH 041/100] add changes of 5.1.34 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 60cdd4c1c..a673f86ba 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,7 @@ - documents can be updated by dragging a file on a document list item - dragging a folder on a folder list item oder the drag and drop area will recursively upload the folder hierarchy including all files +- fix checking if user is owner when sending notifications -------------------------------------------------------------------------------- Changes in version 5.1.33 From 81b45ceeffe0f6f60f8b2810c50e0f5c4f2d75ae Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 13 Mar 2024 09:29:39 +0100 Subject: [PATCH 042/100] do not show fast upload area if access on folder is insufficient --- CHANGELOG | 1 + views/bootstrap/class.ViewFolder.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a673f86ba..ae2e3307c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,7 @@ - dragging a folder on a folder list item oder the drag and drop area will recursively upload the folder hierarchy including all files - fix checking if user is owner when sending notifications +- do not show fast upload area if access on folder is insufficient -------------------------------------------------------------------------------- Changes in version 5.1.33 diff --git a/views/bootstrap/class.ViewFolder.php b/views/bootstrap/class.ViewFolder.php index 30ad20424..37b39bed8 100644 --- a/views/bootstrap/class.ViewFolder.php +++ b/views/bootstrap/class.ViewFolder.php @@ -474,13 +474,13 @@ $('body').on('click', '.order-btn', function(ev) { $folder = $this->params['folder']; $maxuploadsize = $this->params['maxuploadsize']; - $this->contentHeading(getMLText("dropupload"), true); if ($folder->getAccessMode($user) >= M_READWRITE) { + $this->contentHeading(getMLText("dropupload"), true); ?>
          SeedDMS_Core_File::format_filesize($maxuploadsize)]); ?>
          errorMsg(getMLText('access_denied')); + //$this->errorMsg(getMLText('access_denied')); } } /* }}} */ From 935c9557f9c22d4398b49d73fc5dfac29c324f41 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 15 Mar 2024 07:08:28 +0100 Subject: [PATCH 043/100] getMandatoryReviewers() and getMandatoryApprovers() require 3 params --- restapi/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/restapi/index.php b/restapi/index.php index d6854b6e5..2978e6915 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -728,13 +728,13 @@ class RestapiController { /* {{{ */ if($settings->_workflowMode == 'traditional' || $settings->_workflowMode == 'traditional_only_approval') { // add mandatory reviewers/approvers if($settings->_workflowMode == 'traditional') { - $mreviewers = getMandatoryReviewers($mfolder, $userobj); + $mreviewers = getMandatoryReviewers($mfolder, null, $userobj); if($mreviewers['i']) $reviewers['i'] = array_merge($reviewers['i'], $mreviewers['i']); if($mreviewers['g']) $reviewers['g'] = array_merge($reviewers['g'], $mreviewers['g']); } - $mapprovers = getMandatoryApprovers($mfolder, $userobj); + $mapprovers = getMandatoryApprovers($mfolder, null, $userobj); if($mapprovers['i']) $approvers['i'] = array_merge($approvers['i'], $mapprovers['i']); if($mapprovers['g']) From 996163f72fc589963f9c160f5be10cd85490a73b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 18 Mar 2024 07:50:10 +0100 Subject: [PATCH 044/100] show parent folder in list of documents --- views/bootstrap/class.AttributeMgr.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.AttributeMgr.php b/views/bootstrap/class.AttributeMgr.php index 097069356..1fe5fddb7 100644 --- a/views/bootstrap/class.AttributeMgr.php +++ b/views/bootstrap/class.AttributeMgr.php @@ -142,10 +142,14 @@ $(document).ready( function() { print $this->folderListHeader(); print "\n"; foreach($res['folders'] as $subFolder) { - echo $this->folderListRow($subFolder); + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($subFolder); + echo $this->folderListRow($subFolder, false, $extracontent); } foreach($res['docs'] as $document) { - echo $this->documentListRow($document, $previewer); + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($document); + echo $this->documentListRow($document, $previewer, false, 0, $extracontent); } echo "\n\n"; @@ -161,7 +165,9 @@ $(document).ready( function() { print "\n\n\n"; foreach($res['contents'] as $content) { $doc = $content->getDocument(); - echo $this->documentListRow($doc, $previewer); + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($doc); + echo $this->documentListRow($doc, $previewer, false, 0, $extracontent); } print ""; } From 4e91604d445023acac1c3b54ce726fb7e71e7bcb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 18 Mar 2024 10:38:33 +0100 Subject: [PATCH 045/100] show parent of document in list of linked documents --- views/bootstrap/class.ViewDocument.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 8adc1208c..3874ce92d 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -1605,7 +1605,9 @@ $(document).ready( function() { if(is_string($txt)) echo $txt; else { - echo $this->documentListRow($targetDoc, $previewer, true); + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($targetDoc); + echo $this->documentListRow($targetDoc, $previewer, true, 0, $extracontent); } print ""; print getMLText("document_link_by")." ".htmlspecialchars($responsibleUser->getFullName()); @@ -1671,7 +1673,9 @@ $(document).ready( function() { if(is_string($txt)) echo $txt; else { - echo $this->documentListRow($sourceDoc, $previewer, true); + $extracontent = array(); + $extracontent['below_title'] = $this->getListRowPath($sourceDoc); + echo $this->documentListRow($sourceDoc, $previewer, true, 0, $extracontent); } print ""; if (($user->getID() == $responsibleUser->getID()) || ($document->getAccessMode($user) == M_ALL )) From 88c49363acd3f92603df712eafc7707c92b17ca7 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 18 Mar 2024 13:54:35 +0100 Subject: [PATCH 046/100] document search show path of items --- op/op.Ajax.php | 3 ++- views/bootstrap/styles/application.js | 35 ++++++++++++++++++++------ views/bootstrap4/styles/application.js | 35 ++++++++++++++++++++------ 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 7c1078536..e91e2b71d 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -114,7 +114,8 @@ switch($command) { $result = array(); foreach($hits['docs'] as $hit) { if($hit->getAccessMode($user, 'search') >= M_READ) { - $result[] = $hit->getID().'#'.$hit->getName(); +// $result[] = $hit->getID().'#'.$hit->getName(); + $result[] = array('type'=>'D', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getName()), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/'))); } } header('Content-Type: application/json'); diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index c03ec5225..a5d2133f1 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -186,21 +186,42 @@ function initMost() { }); }, /* updater is called when the item in the list is clicked. It is - * actually provided to update the input field where you type, but here - * we use it to update a second input field with the doc id. */ + * provided to update the input field where you type. */ updater: function (item) { - strarr = item.value.split("#"); target = this.$element.data('target'); - $('#'+target).attr('value', strarr[0]); - return strarr[1]; + $('#'+target).attr('value', item.id); + return item.value; + }, + sorter: function(items) { + return items; }, /* Set a matcher that allows any returned value */ matcher : function (item) { return true; }, highlighter : function (item) { - strarr = item.split("#"); - return ' ' + strarr[1].replace(/ ' + item.name.replace(/' + item.path + '' : ''); + }, + /* This only works with a modified version of bootstrap typeahead located + * in boostrap-typeahead.js Search for 'render' + * The line + * this.render = this.options.render || this.render + * was added to bootstrap-typeahead.js + * The following function is a copy of the original render function but + * access item.name instead of item + */ + render : function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type); + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this } }); /* }}} */ diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index ae87f474a..d2375d10a 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -193,21 +193,42 @@ function initMost() { }); }, /* updater is called when the item in the list is clicked. It is - * actually provided to update the input field where you type, but here - * we use it to update a second input field with the doc id. */ + * provided to update the input field where you type. */ updater: function (item) { - strarr = item.value.split("#"); target = this.$element.data('target'); - $('#'+target).attr('value', strarr[0]); - return strarr[1]; + $('#'+target).attr('value', item.id); + return item.value; + }, + sorter: function(items) { + return items; }, /* Set a matcher that allows any returned value */ matcher : function (item) { return true; }, highlighter : function (item) { - strarr = item.split("#"); - return ' ' + strarr[1].replace(/ ' + item.name.replace(/' + item.path + '' : ''); + }, + /* This only works with a modified version of bootstrap typeahead located + * in boostrap-typeahead.js Search for 'render' + * The line + * this.render = this.options.render || this.render + * was added to bootstrap-typeahead.js + * The following function is a copy of the original render function but + * access item.name instead of item + */ + render : function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type); + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this } }); /* }}} */ From 18715fe4fac2a0bb48a724b15b03231a44e55279 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 14:01:52 +0100 Subject: [PATCH 047/100] check more error codes in attribute validation --- inc/inc.Language.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/inc/inc.Language.php b/inc/inc.Language.php index 64489d93e..8c9ceb59d 100644 --- a/inc/inc.Language.php +++ b/inc/inc.Language.php @@ -333,10 +333,24 @@ function getAttributeValidationText($error, $attrname='', $attrvalue='', $regex= } /* }}} */ function getAttributeValidationError($error, $attrname='', $attrvalue='', $regex='') { /* {{{ */ + if(is_object($attrvalue)) + $attrvalue = $attrvalue->getId(); switch($error) { - case 10: + case 14: return array("attr_not_in_valueset", array('attrname'=>$attrname, 'value'=>$attrvalue)); break; + case 13: + return array("attr_not_a_group", array('attrname'=>$attrname, 'value'=>$attrvalue)); + break; + case 12: + return array("attr_not_a_user", array('attrname'=>$attrname, 'value'=>$attrvalue)); + break; + case 11: + return array("attr_not_a_folder", array('attrname'=>$attrname, 'value'=>$attrvalue)); + break; + case 10: + return array("attr_not_a_document", array('attrname'=>$attrname, 'value'=>$attrvalue)); + break; case 9: return array("attr_malformed_date", array('attrname'=>$attrname, 'value'=>$attrvalue)); break; From 5235a859fc8d54c0eba875dadd01a47186b33ac4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 14:02:24 +0100 Subject: [PATCH 048/100] add comment how $tmpDN is used --- inc/inc.ClassLdapAuthentication.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inc/inc.ClassLdapAuthentication.php b/inc/inc.ClassLdapAuthentication.php index ff4eb17b9..b5f69cc92 100644 --- a/inc/inc.ClassLdapAuthentication.php +++ b/inc/inc.ClassLdapAuthentication.php @@ -127,6 +127,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { */ if (isset($settings->_ldapBaseDN)) { $ldapSearchAttribut = "uid="; + /* $tmpDN will only be used as a last resort if searching for the user failed */ $tmpDN = "uid=".$username.",".$settings->_ldapBaseDN; } @@ -134,6 +135,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { if (isset($settings->_ldapType)) { if ($settings->_ldapType==1) { $ldapSearchAttribut = "sAMAccountName="; + /* $tmpDN will only be used as a last resort if searching for the user failed */ $tmpDN = $username.'@'.$settings->_ldapAccountDomainName; // Add the following if authentication with an Active Dir doesn't work // See https://sourceforge.net/p/seeddms/discussion/general/thread/19c70d8d/ From 39ded6779d52ad0d3e183fc834eee34ca150749b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 14:04:56 +0100 Subject: [PATCH 049/100] check if attribute is aof type document or folder and multivalue --- op/op.AttributeMgr.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/op/op.AttributeMgr.php b/op/op.AttributeMgr.php index 24b94a0eb..8eccffc1d 100644 --- a/op/op.AttributeMgr.php +++ b/op/op.AttributeMgr.php @@ -73,8 +73,13 @@ if ($action == "addattrdef") { if($minvalues > $maxvalues) { UI::exitError(getMLText("admin_tools"),getMLText("attrdef_min_greater_max")); } - if($multiple && $valueset == '' && !in_array($type, array(SeedDMS_Core_AttributeDefinition::type_user, SeedDMS_Core_AttributeDefinition::type_group))) { - UI::exitError(getMLText("admin_tools"),getMLText("attrdef_multiple_needs_valueset")); + if($multiple) { + if(in_array($type, array(SeedDMS_Core_AttributeDefinition::type_document, SeedDMS_Core_AttributeDefinition::type_folder))) { + UI::exitError(getMLText("admin_tools"),getMLText("attrdef_multiple_but_doc_or_folder")); + } + if($valueset == '' && !in_array($type, array(SeedDMS_Core_AttributeDefinition::type_user, SeedDMS_Core_AttributeDefinition::type_group))) { + UI::exitError(getMLText("admin_tools"),getMLText("attrdef_multiple_needs_valueset")); + } } $controller->setParam('name', $name); @@ -150,8 +155,13 @@ else if ($action == "editattrdef") { if($minvalues > $maxvalues) { UI::exitError(getMLText("admin_tools"),getMLText("attrdef_min_greater_max")); } - if($multiple && $valueset == '' && !in_array($type, array(SeedDMS_Core_AttributeDefinition::type_user, SeedDMS_Core_AttributeDefinition::type_group))) { - UI::exitError(getMLText("admin_tools"),getMLText("attrdef_multiple_needs_valueset")); + if($multiple) { + if(in_array($type, array(SeedDMS_Core_AttributeDefinition::type_document, SeedDMS_Core_AttributeDefinition::type_folder))) { + UI::exitError(getMLText("admin_tools"),getMLText("attrdef_multiple_but_doc_or_folder")); + } + if($valueset == '' && !in_array($type, array(SeedDMS_Core_AttributeDefinition::type_user, SeedDMS_Core_AttributeDefinition::type_group))) { + UI::exitError(getMLText("admin_tools"),getMLText("attrdef_multiple_needs_valueset")); + } } $controller->setParam('name', $name); From 825186a046582a0eca25241107878f86bd8a0a01 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 15:28:58 +0100 Subject: [PATCH 050/100] set default lang in login form if language selector is turned off --- out/out.Login.php | 1 + views/bootstrap/class.Login.php | 3 +++ 2 files changed, 4 insertions(+) diff --git a/out/out.Login.php b/out/out.Login.php index d3307be62..f669696ca 100644 --- a/out/out.Login.php +++ b/out/out.Login.php @@ -58,6 +58,7 @@ if($view) { $view->setParam('languages', getLanguages()); $view->setParam('enablelanguageselector', $settings->_enableLanguageSelector); $view->setParam('enablethemeselector', $settings->_enableThemeSelector); + $view->setParam('defaultlanguage', $settings->_language); $view($_GET); exit; } diff --git a/views/bootstrap/class.Login.php b/views/bootstrap/class.Login.php index 1c3760767..2ca2f60a2 100644 --- a/views/bootstrap/class.Login.php +++ b/views/bootstrap/class.Login.php @@ -88,6 +88,7 @@ $(document).ready( function() { $themes = $this->params['themes']; $msg = $this->params['msg']; $languages = $this->params['languages']; + $defaultlanguage = $this->params['defaultlanguage']; $enableLanguageSelector = $this->params['enablelanguageselector']; $enableThemeSelector = $this->params['enablethemeselector']; @@ -147,6 +148,8 @@ $(document).ready( function() { 'options'=>$options ) ); + } elseif($defaultlanguage) { + echo ""; } if($enableThemeSelector) { $options = array(); From 20e61d16910681db936d86107060f1cef4e5eb5b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 16:19:53 +0100 Subject: [PATCH 051/100] send status changes to uploader of document --- inc/inc.ClassNotificationService.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index 8711a72b3..887df64c1 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -576,7 +576,7 @@ class SeedDMS_NotificationService { } /* }}} */ /** - * This notification is sent when a new attachment is created. + * This notification is sent when an attachment is deleted. */ public function sendDeleteFileMail($file, $user) { /* {{{ */ $document = $file->getDocument(); @@ -814,10 +814,10 @@ class SeedDMS_NotificationService { $params['sitename'] = $this->settings->_siteName; $params['http_root'] = $this->settings->_httpRoot; - // if user is not owner send notification to owner - if ($user->getID() != $document->getOwner()->getID() && - false === SeedDMS_Core_DMS::inList($document->getOwner(), $notifyList['users'])) { - $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); + // if user is not uploader of the version send notification to uploader + if ($user->getID() != $content->getUser()->getID() && + false === SeedDMS_Core_DMS::inList($content->getUser(), $notifyList['users'])) { + $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } $this->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); foreach ($notifyList["groups"] as $grp) { From 7c07fba0baaa6c63e82032a748cba657042244b3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 16:21:00 +0100 Subject: [PATCH 052/100] do not send submitted approval/review mail to owner --- inc/inc.ClassNotificationService.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index 887df64c1..fab12be73 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -1123,8 +1123,10 @@ class SeedDMS_NotificationService { /* Send mail to owner only if the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ + /* if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); + */ /* Send mail to uploader of version only if the uploader is not the owner and * the currently logged in user is not the @@ -1159,8 +1161,10 @@ class SeedDMS_NotificationService { /* Send mail to owner only if the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ + /* if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); + */ /* Send mail to uploader of version only if the uploader is not the owner and * the currently logged in user is not the From 6490052342c765651127842ff1fcf7ed9f554075 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 16:23:57 +0100 Subject: [PATCH 053/100] do not check if owner has got submitted review/approval email, because owners not longer receive that mail --- inc/inc.ClassNotificationService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index fab12be73..aef7df339 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -1132,7 +1132,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + if($user->getID() != $content->getUser()->getID() /* && $content->getUser()->getID() != $document->getOwner()->getID() */ && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ @@ -1170,7 +1170,7 @@ class SeedDMS_NotificationService { * the currently logged in user is not the * owner and the owner is not already in the list of notifiers. */ - if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + if($user->getID() != $content->getUser()->getID() /* && $content->getUser()->getID() != $document->getOwner()->getID() */ && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ From e383f8be117287f5400b885464dd958b176bdac2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 16:28:29 +0100 Subject: [PATCH 054/100] add changes for 5.1.34 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index ae2e3307c..b92a7aea3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,9 @@ recursively upload the folder hierarchy including all files - fix checking if user is owner when sending notifications - do not show fast upload area if access on folder is insufficient +- do not send notification mail 'submitted review/approval' to owner of + document, still send it to uploader of version +- set default language in login form if language selector is turned off -------------------------------------------------------------------------------- Changes in version 5.1.33 From 0017137d0beb0d58c3bc0896988c9b0c00ebe9b4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 17:05:41 +0100 Subject: [PATCH 055/100] allow login by email if turned on in configuration --- inc/inc.ClassDbAuthentication.php | 5 +++++ inc/inc.ClassSettings.php | 4 ++++ op/op.Settings.php | 1 + views/bootstrap/class.Settings.php | 1 + 4 files changed, 11 insertions(+) diff --git a/inc/inc.ClassDbAuthentication.php b/inc/inc.ClassDbAuthentication.php index 2d65e8516..0c7eaad4f 100644 --- a/inc/inc.ClassDbAuthentication.php +++ b/inc/inc.ClassDbAuthentication.php @@ -47,6 +47,11 @@ class SeedDMS_DbAuthentication extends SeedDMS_Authentication { if($user = $dms->getUserByLogin($username)) { $userid = $user->getID(); + // Check if password matches + if (!seed_pass_verify($password, $user->getPwd())) { + $user = null; + } + } elseif(!empty($this->settings->_enableLoginByEmail) && ($user = $dms->getUserByEmail($username))) { // Check if password matches if (!seed_pass_verify($password, $user->getPwd())) { $user = null; diff --git a/inc/inc.ClassSettings.php b/inc/inc.ClassSettings.php index 39b8ec88e..b0fa9da5e 100644 --- a/inc/inc.ClassSettings.php +++ b/inc/inc.ClassSettings.php @@ -45,6 +45,8 @@ class Settings { /* {{{ */ var $_enableGuestLogin = false; // If you even want guest to be logged in automatically, set the following to true var $_enableGuestAutoLogin = false; + // If you want to allow login by email, set the following to true + var $_enableLoginByEmail = false; // Allow users to reset their password var $_enablePasswordForgotten = false; // Do not allow users to change password @@ -627,6 +629,7 @@ class Settings { /* {{{ */ $tab = $node[0]->attributes(); $this->_enableGuestLogin = Settings::boolVal($tab["enableGuestLogin"]); $this->_enableGuestAutoLogin = Settings::boolVal($tab["enableGuestAutoLogin"]); + $this->_enableLoginByEmail = Settings::boolVal($tab["enableLoginByEmail"]); $this->_enablePasswordForgotten = Settings::boolVal($tab["enablePasswordForgotten"]); $this->_passwordStrength = intval($tab["passwordStrength"]); $this->_passwordStrengthAlgorithm = strval($tab["passwordStrengthAlgorithm"]); @@ -1011,6 +1014,7 @@ class Settings { /* {{{ */ $node = $this->getXMLNode($xml, '/configuration/system', 'authentication'); $this->setXMLAttributValue($node, "enableGuestLogin", $this->_enableGuestLogin); $this->setXMLAttributValue($node, "enableGuestAutoLogin", $this->_enableGuestAutoLogin); + $this->setXMLAttributValue($node, "enableLoginByEmail", $this->_enableLoginByEmail); $this->setXMLAttributValue($node, "enablePasswordForgotten", $this->_enablePasswordForgotten); $this->setXMLAttributValue($node, "passwordStrength", $this->_passwordStrength); $this->setXMLAttributValue($node, "passwordStrengthAlgorithm", $this->_passwordStrengthAlgorithm); diff --git a/op/op.Settings.php b/op/op.Settings.php index 351d1560b..1ac008924 100644 --- a/op/op.Settings.php +++ b/op/op.Settings.php @@ -193,6 +193,7 @@ if ($action == "saveSettings") // SETTINGS - SYSTEM - AUTHENTICATION setBoolValue("enableGuestLogin"); setBoolValue("enableGuestAutoLogin"); + setBoolValue("enableLoginByEmail"); setBoolValue("restricted"); setBoolValue("enableUserImage"); setBoolValue("disableSelfEdit"); diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index f82a9ac1e..2791c335d 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -479,6 +479,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) showConfigHeadline('settings_Authentication'); ?> showConfigCheckbox('settings_enableGuestLogin', 'enableGuestLogin'); ?> showConfigCheckbox('settings_enableGuestAutoLogin', 'enableGuestAutoLogin'); ?> +showConfigCheckbox('settings_enableLoginByEmail', 'enableLoginByEmail'); ?> showConfigCheckbox('settings_restricted', 'restricted'); ?> showConfigCheckbox('settings_enableUserImage', 'enableUserImage'); ?> showConfigCheckbox('settings_disableSelfEdit', 'disableSelfEdit'); ?> From 2b7f90991aaeea78c8c60973a69d4be8f79d1946 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 20 Mar 2024 18:21:22 +0100 Subject: [PATCH 056/100] support login by email --- inc/inc.ClassLdapAuthentication.php | 52 ++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/inc/inc.ClassLdapAuthentication.php b/inc/inc.ClassLdapAuthentication.php index b5f69cc92..db9ae1449 100644 --- a/inc/inc.ClassLdapAuthentication.php +++ b/inc/inc.ClassLdapAuthentication.php @@ -126,7 +126,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { * look like if searching for that user didn't return a dn. */ if (isset($settings->_ldapBaseDN)) { - $ldapSearchAttribut = "uid="; + $ldapSearchAttribut = "uid"; /* $tmpDN will only be used as a last resort if searching for the user failed */ $tmpDN = "uid=".$username.",".$settings->_ldapBaseDN; } @@ -134,7 +134,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { /* Active directory has a different base dn */ if (isset($settings->_ldapType)) { if ($settings->_ldapType==1) { - $ldapSearchAttribut = "sAMAccountName="; + $ldapSearchAttribut = "sAMAccountName"; /* $tmpDN will only be used as a last resort if searching for the user failed */ $tmpDN = $username.'@'.$settings->_ldapAccountDomainName; // Add the following if authentication with an Active Dir doesn't work @@ -157,7 +157,21 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { } else { $bind = @ldap_bind($ds); } + $dn = false; + + /* The simplest search is just the username */ + $ldapsearchterm = $ldapSearchAttribut.'='.$username; + /* If login by email is allowed, the search for user name is ored with + * the search for the email. + */ + if($settings->_enableLoginByEmail) { + $ldapsearchterm = "|(".$ldapsearchterm.")(mail=".$username.")"; + } + /* If a ldap filter is set, it will be anded */ + if($settings->_ldapFilter) { + $ldapsearchterm = "&(".$ldapsearchterm.")".$settings->_ldapFilter; + } /* If bind succeed, then get the dn of the user. If a filter * is set, it will be used to allow only those users to log in * matching the filter criteria. Depending on the type of server, @@ -165,19 +179,32 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { * 'sAMAccountName=' or 'uid='. All other filters are ANDed. * A common filter is '(mail=*)' to ensure a user has an email * address. + * If the previous bind failed, we could try later to bind with + * the user's credentials (this was until 6.0.26 and 5.1.33 the case), + * but if login by email is allowed, it makes no sense to try it. The + * only way to bind is by using a correct dn and that cannot be + * formed with an email. */ if ($bind) { + /* if (!empty($settings->_ldapFilter)) { - $search = ldap_search($ds, $settings->_ldapBaseDN, "(&(".$ldapSearchAttribut.$username.")".$settings->_ldapFilter.")"); + $search = ldap_search($ds, $settings->_ldapBaseDN, "(&(".$ldapSearchAttribut.'='.$username.")".$settings->_ldapFilter.")"); } else { - $search = ldap_search($ds, $settings->_ldapBaseDN, $ldapSearchAttribut.$username); + $search = ldap_search($ds, $settings->_ldapBaseDN, $ldapSearchAttribut.'='.$username); } + */ + $search = ldap_search($ds, $settings->_ldapBaseDN, "(".$ldapsearchterm.")"); if (!is_bool($search)) { $info = ldap_get_entries($ds, $search); if (!is_bool($info) && $info["count"]>0) { $dn = $info[0]['dn']; + /* Set username to login name in case the email was used for authentication */ + $username = $info[0][$ldapSearchAttribut][0]; } } + } elseif(!empty($settings->_enableLoginByEmail)) { + ldap_close($ds); + return null; } /* If the previous bind failed, try it with the users creditionals @@ -190,8 +217,10 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { * If that user was filtered out, because filter was set to '(mail=*)' * and the user doesn't have a mail address, then $dn will not be * set and $tmpDN will be used instead, allowing a successfull bind. + * Also do not take the $tmpDN if login by email is allowed, because + * the username could be the email and that doesn't form a valid dn. */ - if (is_bool($dn) && empty($settings->_ldapFilter)) { + if (is_bool($dn) && empty($settings->_ldapFilter) && empty($settings->_enableLoginByEmail)) { $dn = $tmpDN; } @@ -203,6 +232,9 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { /* Check if user already exists in the database. Return with an error * only if the sql statements fails, but not if no user was found. + * The username may not be the one passed to this function anymore. It + * could have been overwritten by uid (or sAMAccountName) derived from + * the above ldap search. */ $user = $dms->getUserByLogin($username); if($user === false) { @@ -219,13 +251,15 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication { // Successfully authenticated. Now check to see if the user exists within // the database. If not, add them in if _restricted is not set, - // but do not add their password. + // but do not set the password of the user. if (!$settings->_restricted) { - // Retrieve the user's LDAP information. + /* Retrieve the user's LDAP information. At this time the username is + * the uid or sAMAccountName, even if the email was used for login. + */ if (isset($settings->_ldapFilter) && strlen($settings->_ldapFilter) > 0) { - $search = ldap_search($ds, $settings->_ldapBaseDN, "(&(".$ldapSearchAttribut.$username.")".$settings->_ldapFilter.")"); + $search = ldap_search($ds, $settings->_ldapBaseDN, "(&(".$ldapSearchAttribut.'='.$username.")".$settings->_ldapFilter.")"); } else { - $search = ldap_search($ds, $settings->_ldapBaseDN, $ldapSearchAttribut.$username); + $search = ldap_search($ds, $settings->_ldapBaseDN, $ldapSearchAttribut.'='.$username); } if (!is_bool($search)) { From 28aaf8e28feb29b8788e5b49939ac36b23749486 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 21 Mar 2024 08:23:08 +0100 Subject: [PATCH 057/100] users will see only their own notifications --- views/bootstrap/class.DocumentNotify.php | 20 ++++++++++---------- views/bootstrap/class.FolderNotify.php | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/views/bootstrap/class.DocumentNotify.php b/views/bootstrap/class.DocumentNotify.php index a6463abcf..2404ec5e6 100644 --- a/views/bootstrap/class.DocumentNotify.php +++ b/views/bootstrap/class.DocumentNotify.php @@ -151,10 +151,10 @@ $(document).ready( function() { } else { print "\n"; foreach ($notifyList["users"] as $userNotify) { - print ""; - print ""; - print ""; if ($user->isAdmin() || $user->getID() == $userNotify->getID()) { + print ""; + print ""; + print ""; print "\n"; echo createHiddenFieldWithKey('documentnotify')."\n"; print "getID()."\">\n"; @@ -164,14 +164,14 @@ $(document).ready( function() { print ""; print ""; print "\n"; - }else print ""; - print ""; + print ""; + } } foreach ($notifyList["groups"] as $groupNotify) { - print ""; - print ""; - print ""; if ($user->isAdmin() || $groupNotify->isMember($user,true)) { + print ""; + print ""; + print ""; print "\n"; echo createHiddenFieldWithKey('documentnotify')."\n"; print "getID()."\">\n"; @@ -181,8 +181,8 @@ $(document).ready( function() { print ""; print ""; print "\n"; - }else print ""; - print ""; + print ""; + } } print "
          " . htmlspecialchars($userNotify->getLogin() . " - " . $userNotify->getFullName()) . "
          " . htmlspecialchars($userNotify->getLogin() . " - " . $userNotify->getFullName()) . "
          " . htmlspecialchars($groupNotify->getName()) . "
          " . htmlspecialchars($groupNotify->getName()) . "
          \n"; } diff --git a/views/bootstrap/class.FolderNotify.php b/views/bootstrap/class.FolderNotify.php index 56a7a5961..ada8b3d4e 100644 --- a/views/bootstrap/class.FolderNotify.php +++ b/views/bootstrap/class.FolderNotify.php @@ -151,10 +151,10 @@ $(document).ready(function() { } else { print "\n"; foreach ($notifyList["users"] as $userNotify) { - print ""; - print ""; - print ""; if ($user->isAdmin() || $user->getID() == $userNotify->getID()) { + print ""; + print ""; + print ""; print "\n"; echo createHiddenFieldWithKey('foldernotify')."\n"; print "getID()."\">\n"; @@ -164,14 +164,14 @@ $(document).ready(function() { print ""; print ""; print "\n"; - }else print ""; - print ""; + print ""; + } } foreach ($notifyList["groups"] as $groupNotify) { - print ""; - print ""; - print ""; if ($user->isAdmin() || $groupNotify->isMember($user,true)) { + print ""; + print ""; + print ""; print "\n"; echo createHiddenFieldWithKey('foldernotify')."\n"; print "getID()."\">\n"; @@ -181,8 +181,8 @@ $(document).ready(function() { print ""; print ""; print "\n"; - }else print ""; - print ""; + print ""; + } } print "
          " . htmlspecialchars($userNotify->getLogin() . " - " . $userNotify->getFullName()) . "
          " . htmlspecialchars($userNotify->getLogin() . " - " . $userNotify->getFullName()) . "
          " . htmlspecialchars($groupNotify->getName()) . "
          " . htmlspecialchars($groupNotify->getName()) . "
          \n"; } From 6cb356454f535c59e8a68485876673e165f2f8c4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 21 Mar 2024 08:24:43 +0100 Subject: [PATCH 058/100] fix label of menu item for notifications --- views/bootstrap/class.Bootstrap.php | 4 ++-- views/bootstrap4/class.Bootstrap4.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 85ee1100a..37cfe7de5 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -713,7 +713,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_folder_access'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderAccess.php?folderid=".$folderID."&showtree=".showtree(), 'label'=>getMLText('edit_folder_access')); } if ($accessobject->check_view_access('FolderNotify')) - $menuitems['edit_existing_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_existing_notify')); + $menuitems['edit_folder_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_folder_notify')); } if($enableClipboard) { $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); @@ -782,7 +782,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } if ($accessMode >= M_READ && !$this->params['user']->isGuest()) { if ($accessobject->check_view_access('DocumentNotify')) - $menuitems['edit_existing_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_existing_notify')); + $menuitems['edit_document_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_document_notify')); } if($enableClipboard) { $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 797d11343..8116d8d5f 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -716,7 +716,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['edit_folder_access'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderAccess.php?folderid=".$folderID."&showtree=".showtree(), 'label'=>getMLText('edit_folder_access')); } if ($accessobject->check_view_access('FolderNotify')) - $menuitems['edit_existing_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_existing_notify')); + $menuitems['edit_folder_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_folder_notify')); } if($enableClipboard) { $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); @@ -781,7 +781,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; } if ($accessMode >= M_READ && !$this->params['user']->isGuest()) { if ($accessobject->check_view_access('DocumentNotify')) - $menuitems['edit_existing_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_existing_notify')); + $menuitems['edit_document_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_document_notify')); } if($enableClipboard) { $menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard")); From 7bdfd5f88fe7996501dd87f2acc6142321860feb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 22 Mar 2024 10:01:19 +0100 Subject: [PATCH 059/100] code cleanup --- op/op.DocumentNotify.php | 24 +++++++++++++----------- op/op.FolderNotify.php | 22 +++++++++++++--------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/op/op.DocumentNotify.php b/op/op.DocumentNotify.php index e0ba58116..2ba2a5d64 100644 --- a/op/op.DocumentNotify.php +++ b/op/op.DocumentNotify.php @@ -52,37 +52,39 @@ $action = $_POST["action"]; if (isset($_POST["userid"]) && (!is_numeric($_POST["userid"]) || $_POST["userid"]<-1)) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("unknown_user")); } +$userid = isset($_POST["userid"]) ? $_POST["userid"] : -1; -$userid = 0; -if(isset($_POST["userid"])) - $userid = $_POST["userid"]; +if ($userid > 0){ + $u=$dms->getUser($userid); + if (($u->getId() != $user->getId()) && !$user->isAdmin()) + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied")); +} if (isset($_POST["groupid"]) && (!is_numeric($_POST["groupid"]) || $_POST["groupid"]<-1)) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("unknown_group")); } -if(isset($_POST["groupid"])) - $groupid = $_POST["groupid"]; +$groupid = isset($_POST["groupid"]) ? $_POST["groupid"] : -1; -if (isset($_POST["groupid"])&&$_POST["groupid"]!=-1){ +if ($groupid > 0){ $group=$dms->getGroup($groupid); if (!$group->isMember($user,true) && !$user->isAdmin()) UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); } $folder = $document->getFolder(); -$docPathHTML = getFolderPathHTML($folder, true). " / ".$document->getName().""; if ($document->getAccessMode($user) < M_READ) { UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied")); } // delete notification -if ($action == "delnotify"){ - if ($userid) { +if ($action == "delnotify") { + + if ($userid > 0) { $obj = $dms->getUser($userid); $res = $document->removeNotify($userid, true); - } elseif (isset($groupid)) { + } elseif ($groupid > 0) { $obj = $dms->getGroup($groupid); $res = $document->removeNotify($groupid, false); } @@ -137,7 +139,7 @@ else if ($action == "addnotify") { break; } } - if ($groupid != -1) { + if ($groupid > 0) { $res = $document->addNotify($groupid, false); switch ($res) { case -1: diff --git a/op/op.FolderNotify.php b/op/op.FolderNotify.php index 903b9dc03..4156e00f1 100644 --- a/op/op.FolderNotify.php +++ b/op/op.FolderNotify.php @@ -53,19 +53,24 @@ if (isset($_POST["userid"]) && (!is_numeric($_POST["userid"]) || $_POST["userid" } $userid = isset($_POST["userid"]) ? $_POST["userid"] : -1; +if ($userid > 0){ + $u=$dms->getUser($userid); + if (($u->getId() != $user->getId()) && !$user->isAdmin()) + UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied")); +} + if (isset($_POST["groupid"]) && (!is_numeric($_POST["groupid"]) || $_POST["groupid"]<-1)) { UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("unknown_group")); } + $groupid = isset($_POST["groupid"]) ? $_POST["groupid"] : -1; -if (isset($_POST["groupid"])&&$_POST["groupid"]!=-1){ +if ($groupid > 0){ $group=$dms->getGroup($groupid); if (!$group->isMember($user,true) && !$user->isAdmin()) UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied")); } -$folderPathHTML = getFolderPathHTML($folder, true); - if ($folder->getAccessMode($user) < M_READ) { UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("access_denied")); } @@ -74,12 +79,11 @@ if ($folder->getAccessMode($user) < M_READ) { if ($action == "delnotify") { if ($userid > 0) { - $res = $folder->removeNotify($userid, true); $obj = $dms->getUser($userid); - } - elseif ($groupid > 0) { - $res = $folder->removeNotify($groupid, false); + $res = $folder->removeNotify($userid, true); + } elseif ($groupid > 0) { $obj = $dms->getGroup($groupid); + $res = $folder->removeNotify($groupid, false); } switch ($res) { case -1: @@ -106,7 +110,7 @@ if ($action == "delnotify") { // Add notification ---------------------------------------------------------- else if ($action == "addnotify") { - if ($userid != -1) { + if ($userid > 0) { $res = $folder->addNotify($userid, true); switch ($res) { case -1: @@ -132,7 +136,7 @@ else if ($action == "addnotify") { break; } } - if ($groupid != -1) { + if ($groupid > 0) { $res = $folder->addNotify($groupid, false); switch ($res) { case -1: From 39179d605627d1b40c7ee826c7bf42d6da735adb Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 22 Mar 2024 10:02:37 +0100 Subject: [PATCH 060/100] show login name of user --- views/bootstrap/class.GroupMgr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.GroupMgr.php b/views/bootstrap/class.GroupMgr.php index e0cb49596..7d9e0e939 100644 --- a/views/bootstrap/class.GroupMgr.php +++ b/views/bootstrap/class.GroupMgr.php @@ -208,7 +208,7 @@ $(document).ready( function() { print ""; print ""; - print "" . htmlspecialchars($member->getFullName()) . ""; + print "" . htmlspecialchars($member->getFullName()." (".$member->getLogin().")") ."
          ".htmlspecialchars($member->getEmail()). ""; print "" . ($group->isMember($member,true)?getMLText("manager"):" ") . ""; print ""; print "
          getID()."\" />getID()."\" />".createHiddenFieldWithKey('rmmember')."
          "; From 637476f0a98860e08ffe8763a68cccfbc85f5f64 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 22 Mar 2024 10:03:40 +0100 Subject: [PATCH 061/100] fix button to remove membership, show login of user --- views/bootstrap/class.GroupView.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.GroupView.php b/views/bootstrap/class.GroupView.php index 8e7745a3c..d4070eea4 100644 --- a/views/bootstrap/class.GroupView.php +++ b/views/bootstrap/class.GroupView.php @@ -79,14 +79,14 @@ $(document).ready( function() { foreach ($members as $member) { $memberids[] = $member->getId(); - echo "
        • ".htmlspecialchars($member->getFullName()); + echo "
        • ".htmlspecialchars($member->getFullName().", ".$member->getLogin()); if ($member->getEmail()!="") echo " (getEmail())."\">".htmlspecialchars($member->getEmail()).")"; foreach($managers as $manager) if($manager->getId() == $member->getId()) echo ", ".getMLText("manager"); if($ismanager && $member->getId() != $user->getId()) { - echo ' '.getMLText("rm_user").''; + echo ' '.getMLText("rm_user").''; } echo "
        • "; } From 78afbe869957093c6457c1eb9925d17fcb3b12dc Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 22 Mar 2024 10:04:59 +0100 Subject: [PATCH 062/100] take enableusersview into account (currently disabled) --- views/bootstrap/class.DocumentNotify.php | 6 ++++-- views/bootstrap/class.FolderNotify.php | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/views/bootstrap/class.DocumentNotify.php b/views/bootstrap/class.DocumentNotify.php index 2404ec5e6..207b5efa2 100644 --- a/views/bootstrap/class.DocumentNotify.php +++ b/views/bootstrap/class.DocumentNotify.php @@ -70,6 +70,7 @@ $(document).ready( function() { $folder = $this->params['folder']; $document = $this->params['document']; $sortusersinlist = $this->params['sortusersinlist']; + $enableusersview = $this->params['enableusersview']; $notifyList = $document->getNotifyList(0, true); @@ -151,7 +152,7 @@ $(document).ready( function() { } else { print "\n"; foreach ($notifyList["users"] as $userNotify) { - if ($user->isAdmin() || $user->getID() == $userNotify->getID()) { + if ($user->isAdmin() || /*$enableusersview || */$user->getID() == $userNotify->getID()) { print ""; print ""; print ""; @@ -168,7 +169,8 @@ $(document).ready( function() { } } foreach ($notifyList["groups"] as $groupNotify) { - if ($user->isAdmin() || $groupNotify->isMember($user,true)) { + /* admins and members of a group may see exiting notifications */ + if ($user->isAdmin() || /*$enableusersview || */$groupNotify->isMember($user,false)) { print ""; print ""; print ""; diff --git a/views/bootstrap/class.FolderNotify.php b/views/bootstrap/class.FolderNotify.php index ada8b3d4e..d9f5cbeb2 100644 --- a/views/bootstrap/class.FolderNotify.php +++ b/views/bootstrap/class.FolderNotify.php @@ -67,9 +67,8 @@ $(document).ready(function() { $dms = $this->params['dms']; $user = $this->params['user']; $folder = $this->params['folder']; - $allUsers = $this->params['allusers']; - $allGroups = $this->params['allgroups']; $sortusersinlist = $this->params['sortusersinlist']; + $enableusersview = $this->params['enableusersview']; $notifyList = $folder->getNotifyList(0, true); @@ -151,7 +150,7 @@ $(document).ready(function() { } else { print "
          " . htmlspecialchars($userNotify->getLogin() . " - " . $userNotify->getFullName()) . "
          " . htmlspecialchars($groupNotify->getName()) . "
          \n"; foreach ($notifyList["users"] as $userNotify) { - if ($user->isAdmin() || $user->getID() == $userNotify->getID()) { + if ($user->isAdmin() || /*$enableusersview || */$user->getID() == $userNotify->getID()) { print ""; print ""; print ""; @@ -168,7 +167,8 @@ $(document).ready(function() { } } foreach ($notifyList["groups"] as $groupNotify) { - if ($user->isAdmin() || $groupNotify->isMember($user,true)) { + /* admins and members of a group may see exiting notifications */ + if ($user->isAdmin() || /*$enableusersview || */$groupNotify->isMember($user,false)) { print ""; print ""; print ""; From 2c4b7295826825802a969cddff117b6ebbccf02c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 22 Mar 2024 10:06:06 +0100 Subject: [PATCH 063/100] some code clean ups --- out/out.DocumentNotify.php | 9 +++++++-- out/out.FolderNotify.php | 12 ++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/out/out.DocumentNotify.php b/out/out.DocumentNotify.php index 2a2780c84..cbe78d172 100644 --- a/out/out.DocumentNotify.php +++ b/out/out.DocumentNotify.php @@ -31,6 +31,9 @@ require_once("inc/inc.ClassUI.php"); require_once("inc/inc.ClassAccessOperation.php"); require_once("inc/inc.Authentication.php"); +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); + if (!isset($_GET["documentid"]) || !is_numeric($_GET["documentid"]) || intval($_GET["documentid"]<1)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } @@ -50,9 +53,11 @@ if ($document->getAccessMode($user) < M_READ) { /* Create object for checking access to certain operations */ $accessop = new SeedDMS_AccessOperation($dms, $document, $user, $settings); -$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); -$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user, 'folder'=>$folder, 'document'=>$document, 'sortusersinlist'=>$settings->_sortUsersInList)); if($view) { + $view->setParam('folder', $folder); + $view->setParam('document', $document); + $view->setParam('sortusersinlist', $settings->_sortUsersInList); + $view->setParam('enableusersview', $settings->_enableUsersView); $view->setParam('accessobject', $accessop); $view($_GET); exit; diff --git a/out/out.FolderNotify.php b/out/out.FolderNotify.php index 35b3f2686..5a525466e 100644 --- a/out/out.FolderNotify.php +++ b/out/out.FolderNotify.php @@ -27,15 +27,16 @@ require_once("inc/inc.Init.php"); require_once("inc/inc.Extension.php"); require_once("inc/inc.DBInit.php"); require_once("inc/inc.ClassUI.php"); +require_once("inc/inc.ClassAccessOperation.php"); require_once("inc/inc.Authentication.php"); $tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); $view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user)); -$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); if (!isset($_GET["folderid"]) || !is_numeric($_GET["folderid"]) || intval($_GET["folderid"])<1) { UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_folder_id"))),getMLText("invalid_folder_id")); } + $folder = $dms->getFolder($_GET["folderid"]); if (!is_object($folder)) { @@ -46,16 +47,15 @@ if ($folder->getAccessMode($user) < M_READ) { UI::exitError(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName()))),getMLText("access_denied")); } -$allUsers = $dms->getAllUsers($settings->_sortUsersInList); -$allGroups = $dms->getAllGroups(); +/* Create object for checking access to certain operations */ +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); if($view) { $view->setParam('showtree', showtree()); $view->setParam('folder', $folder); - $view->setParam('allusers', $allUsers); - $view->setParam('allgroups', $allGroups); - $view->setParam('accessobject', $accessop); + $view->setParam('enableusersview', $settings->_enableUsersView); $view->setParam('sortusersinlist', $settings->_sortUsersInList); + $view->setParam('accessobject', $accessop); $view($_GET); exit; } From 5fc7c85bf23836228b76aeac953ec4d8b6ac48db Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 22 Mar 2024 18:55:03 +0100 Subject: [PATCH 064/100] add changes for 5.1.34 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index b92a7aea3..590e67853 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,7 @@ - do not send notification mail 'submitted review/approval' to owner of document, still send it to uploader of version - set default language in login form if language selector is turned off +- do not show full list of notifiers to none admins -------------------------------------------------------------------------------- Changes in version 5.1.33 From a00655932bfc15afcef99be515e3d85aed5e3589 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 23 Mar 2024 11:57:13 +0100 Subject: [PATCH 065/100] check for latest content --- op/op.Ajax.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index e91e2b71d..3a58652df 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -114,8 +114,10 @@ switch($command) { $result = array(); foreach($hits['docs'] as $hit) { if($hit->getAccessMode($user, 'search') >= M_READ) { + if($hit->getLatestContent()) { // $result[] = $hit->getID().'#'.$hit->getName(); - $result[] = array('type'=>'D', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getName()), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/'))); + $result[] = array('type'=>'D', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getName()), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/'))); + } } } header('Content-Type: application/json'); From 19c70d55887cd5de0e26837a56624de0fec44def Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Mar 2024 10:58:16 +0100 Subject: [PATCH 066/100] do not add items ot sequence chooser, if number of documents/folders is greater than 50 --- views/bootstrap/class.AddDocument.php | 2 +- views/bootstrap/class.AddSubFolder.php | 2 +- views/bootstrap/class.Bootstrap.php | 42 +++++++++++++++++++++----- views/bootstrap/class.EditDocument.php | 2 +- views/bootstrap/class.EditFolder.php | 2 +- views/bootstrap4/class.Bootstrap4.php | 42 +++++++++++++++++++++----- 6 files changed, 72 insertions(+), 20 deletions(-) diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index 924ba0ee7..92ad726b1 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -241,7 +241,7 @@ console.log(params); } } if(!$nodocumentformfields || !in_array('sequence', $nodocumentformfields)) { - $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder->getDocuments('s')).($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); + $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder, 'd').($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); } else { $minmax = $folder->getDocumentsMinMax(); if($this->params['defaultposition'] == 'start') { diff --git a/views/bootstrap/class.AddSubFolder.php b/views/bootstrap/class.AddSubFolder.php index 1cf7a286c..fea0a7f98 100644 --- a/views/bootstrap/class.AddSubFolder.php +++ b/views/bootstrap/class.AddSubFolder.php @@ -98,7 +98,7 @@ $(document).ready( function() { ) ); if(!$nofolderformfields || !in_array('sequence', $nofolderformfields)) { - $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder->getSubFolders('s')).($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); + $this->formField(getMLText("sequence"), $this->getSequenceChooser($folder, 'f').($orderby != 's' ? "
          ".getMLText('order_by_sequence_off') : '')); } else { $minmax = $folder->getFoldersMinMax(); if($this->params['defaultposition'] == 'start') { diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 37cfe7de5..18ff23438 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1598,17 +1598,43 @@ $(document).ready(function() { print ""; } /* }}} */ - function printSequenceChooser($objArr, $keepID = -1) { /* {{{ */ - echo $this->getSequenceChooser($objArr, $keepID); + function printSequenceChooser($parent, $type, $keepID = -1) { /* {{{ */ + echo $this->getSequenceChooser($parent, $type, $keepID); } /* }}} */ - function getSequenceChooser($objArr, $keepID = -1) { /* {{{ */ - if (count($objArr) > 0) { - $max = $objArr[count($objArr)-1]->getSequence() + 1; - $min = $objArr[0]->getSequence() - 1; + /** + * Return html code for sequence chooser + * + * This method will return the html code of the ѕelect menu for setting + * the ѕequence number of a document or folder. The select menu will contain + * a list of all siblings to select to positon relative to a sibling. + * For performance reasons the select menu will not contain any siblings + * if the number of siblings is greater than 50. + * + * @param $parent object parent folder of new or updated document/folder + * @param $type string type of new object 'f'=folder, 'd'=document + * @param $keepID integer id of current object + */ + function getSequenceChooser($parent, $type, $keepID = -1) { /* {{{ */ + $objArr = []; + if($type == 'd') { + if(($c = $parent->hasDocuments()) < 50) + $objArr = $parent->getDocuments('s'); + $minmax = $parent->getDocumentsMinMax(); + } elseif($type = 'f') { + if(($c = $parent->hasSubFolders()) < 50) + $objArr = $parent->getSubFolders('s'); + $minmax = $parent->getFoldersMinMax(); + } else + return ''; + + if ($objArr) { + $min = $minmax['min']-1.0; + $max = $minmax['max']+1.0; } else { - $max = 1.0; + $min = (float) $minmax['min']; + $max = $minmax['max']+1.0; } $content = ""; } /* }}} */ - function printSequenceChooser($objArr, $keepID = -1) { /* {{{ */ - echo $this->getSequenceChooser($objArr, $keepID); + function printSequenceChooser($parent, $type, $keepID = -1) { /* {{{ */ + echo $this->getSequenceChooser($parent, $type, $keepID); } /* }}} */ - function getSequenceChooser($objArr, $keepID = -1) { /* {{{ */ - if (count($objArr) > 0) { - $max = $objArr[count($objArr)-1]->getSequence() + 1; - $min = $objArr[0]->getSequence() - 1; + /** + * Return html code for sequence chooser + * + * This method will return the html code of the ѕelect menu for setting + * the ѕequence number of a document or folder. The select menu will contain + * a list of all siblings to select to positon relative to a sibling. + * For performance reasons the select menu will not contain any siblings + * if the number of siblings is greater than 50. + * + * @param $parent object parent folder of new or updated document/folder + * @param $type string type of new object 'f'=folder, 'd'=document + * @param $keepID integer id of current object + */ + function getSequenceChooser($parent, $type, $keepID = -1) { /* {{{ */ + $objArr = []; + if($type == 'd') { + if(($c = $parent->hasDocuments()) < 50) + $objArr = $parent->getDocuments('s'); + $minmax = $parent->getDocumentsMinMax(); + } elseif($type = 'f') { + if(($c = $parent->hasSubFolders()) < 50) + $objArr = $parent->getSubFolders('s'); + $minmax = $parent->getFoldersMinMax(); + } else + return ''; + + if ($objArr) { + $min = $minmax['min']-1.0; + $max = $minmax['max']+1.0; } else { - $max = 1.0; + $min = (float) $minmax['min']; + $max = $minmax['max']+1.0; } $content = "
          \n\n"; $separator = $selattrdef->getValueSetSeparator(); foreach($res['frequencies'][$type] as $entry) { - $value = $selattrdef->parseValue($entry['value']); + if(is_array($entry['value'])) { + $values = $entry['value']; + } else { + $values = [$entry['value']]; + } + $value = []; + foreach($values as $v) { + if(is_object($v)) + $value[] = $v->getId(); + else + $value[] = $v; + } +// $value = $selattrdef->parseValue($entry['value']); $content .= ""; $content .= ""; $content .= ""; $content .= "\n"; + $attrstr .= "\n"; } } $attrstr .= "
          " . htmlspecialchars($userNotify->getLogin() . " - " . $userNotify->getFullName()) . "
          " . htmlspecialchars($groupNotify->getName()) . "
          ".htmlspecialchars(implode(''.($separator ? ' '.$separator.' ' : ' ; ').'', $value))."getType() == SeedDMS_Core_AttributeDefinition::type_date) $content .= "attributes[".$selattrdef->getID()."][from]=".urlencode($entry['value'])."&attributes[".$selattrdef->getID()."][to]=".urlencode($entry['value']); else - $content .= "attributes[".$selattrdef->getID()."]=".urlencode($entry['value']); + $content .= "attributes[".$selattrdef->getID()."]=".urlencode($value[0]); $content .= "\">".urlencode($entry['c']).""; /* various checks, if the value is valid */ diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 18ff23438..b228624e6 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1879,26 +1879,23 @@ $(document).ready(function() { case SeedDMS_Core_AttributeDefinition::type_folder: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - if($targetfolder = $dms->getFolder(intval($attr))) - $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; + foreach($attrs as $targetfolder) { + $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; } return implode('
          ', $tmp); break; case SeedDMS_Core_AttributeDefinition::type_document: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - if($targetdoc = $dms->getDocument(intval($attr))) - $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; + foreach($attrs as $targetdoc) { + $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; } return implode('
          ', $tmp); break; case SeedDMS_Core_AttributeDefinition::type_user: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - $curuser = $dms->getUser((int) $attr); + foreach($attrs as $curuser) { $tmp[] = htmlspecialchars($curuser->getFullname()." (".$curuser->getLogin().")"); } return implode('
          ', $tmp); @@ -1906,8 +1903,7 @@ $(document).ready(function() { case SeedDMS_Core_AttributeDefinition::type_group: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - $curgroup = $dms->getGroup((int) $attr); + foreach($attrs as $curgroup) { $tmp[] = htmlspecialchars($curgroup->getName()); } return implode('
          ', $tmp); @@ -1957,23 +1953,18 @@ $(document).ready(function() { $content .= "getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>"; break; */ case SeedDMS_Core_AttributeDefinition::type_folder: - $objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0; - if($objvalue) - $target = $dms->getFolder($objvalue); - else - $target = null; + $target = $attribute ? $attribute->getValue() : null; $content .= $this->getFolderChooserHtml("attr".$attrdef->getId(), M_READWRITE, -1, $target, $attr_name, false); break; case SeedDMS_Core_AttributeDefinition::type_document: - $objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0; - if($objvalue) - $target = $dms->getDocument($objvalue); - else - $target = null; + $target = $attribute ? $attribute->getValue() : null; $content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), $target, $attr_name); break; case SeedDMS_Core_AttributeDefinition::type_user: - $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValueAsArray() : (is_string($attribute) ? [$attribute] : $attribute)) : array(); + $target = $attribute ? $attribute->getValueAsArray() : []; + $objvalue = []; + foreach($target as $t) + $objvalue[] = $t->getId(); $users = $dms->getAllUsers(); if($users) { $allowempty = $attrdef->getMinValues() == 0; @@ -1993,7 +1984,10 @@ $(document).ready(function() { } break; case SeedDMS_Core_AttributeDefinition::type_group: - $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValueAsArray() : (is_string($attribute) ? [$attribute] : $attribute)) : array(); + $target = $attribute ? $attribute->getValueAsArray() : []; + $objvalue = []; + foreach($target as $t) + $objvalue[] = $t->getId(); $groups = $dms->getAllGroups(); if($groups) { $allowempty = $attrdef->getMinValues() == 0; diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index 7bca0863d..c22b4bbc2 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -1498,7 +1498,7 @@ $(document).ready(function() { $attrstr .= $arr; } else { $attrdef = $docattribute->getAttributeDefinition(); - $attrstr .= "
          ".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $docattribute->getValueAsArray()))."
          ".htmlspecialchars($attrdef->getName())."".htmlspecialchars($docattribute->getValueAsString())."
          \n"; diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 65351411b..81f140366 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1917,26 +1917,23 @@ $(document).ready(function() { case SeedDMS_Core_AttributeDefinition::type_folder: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - if($targetfolder = $dms->getFolder(intval($attr))) - $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; + foreach($attrs as $targetfolder) { + $tmp[] = ''.htmlspecialchars($targetfolder->getName()).''; } return implode('
          ', $tmp); break; case SeedDMS_Core_AttributeDefinition::type_document: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - if($targetdoc = $dms->getDocument(intval($attr))) - $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; + foreach($attrs as $targetdoc) { + $tmp[] = ''.htmlspecialchars($targetdoc->getName()).''; } return implode('
          ', $tmp); break; case SeedDMS_Core_AttributeDefinition::type_user: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - $curuser = $dms->getUser((int) $attr); + foreach($attrs as $curuser) { $tmp[] = htmlspecialchars($curuser->getFullname()." (".$curuser->getLogin().")"); } return implode('
          ', $tmp); @@ -1944,8 +1941,7 @@ $(document).ready(function() { case SeedDMS_Core_AttributeDefinition::type_group: $attrs = $attribute->getValueAsArray(); $tmp = array(); - foreach($attrs as $attr) { - $curgroup = $dms->getGroup((int) $attr); + foreach($attrs as $curgroup) { $tmp[] = htmlspecialchars($curgroup->getName()); } return implode('
          ', $tmp); @@ -1979,17 +1975,11 @@ $(document).ready(function() { $content .= ""; break; case SeedDMS_Core_AttributeDefinition::type_date: - $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : ''; + $objvalue = $attribute ? getReadableDate((is_object($attribute) ? $attribute->getValue() : $attribute)) : ''; $dateformat = getConvertDateFormat($this->params['settings']->_dateformat); - /* - $content .= ' - - - '; - */ $content = '
          - +
          @@ -2005,23 +1995,18 @@ $(document).ready(function() { $content .= "getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>"; break; */ case SeedDMS_Core_AttributeDefinition::type_folder: - $objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0; - if($objvalue) - $target = $dms->getFolder($objvalue); - else - $target = null; + $target = $attribute ? $attribute->getValue() : null; $content .= $this->getFolderChooserHtml("attr".$attrdef->getId(), M_READWRITE, -1, $target, $attr_name, false); break; case SeedDMS_Core_AttributeDefinition::type_document: - $objvalue = $attribute ? (is_object($attribute) ? (int) $attribute->getValue() : (int) $attribute) : 0; - if($objvalue) - $target = $dms->getDocument($objvalue); - else - $target = null; + $target = $attribute ? $attribute->getValue() : null; $content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), $target, $attr_name); break; case SeedDMS_Core_AttributeDefinition::type_user: - $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValueAsArray() : (is_string($attribute) ? [$attribute] : $attribute)) : array(); + $target = $attribute ? $attribute->getValueAsArray() : []; + $objvalue = []; + foreach($target as $t) + $objvalue[] = $t->getId(); $users = $dms->getAllUsers(); if($users) { $allowempty = $attrdef->getMinValues() == 0; @@ -2041,7 +2026,10 @@ $(document).ready(function() { } break; case SeedDMS_Core_AttributeDefinition::type_group: - $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValueAsArray() : (is_string($attribute) ? [$attribute] : $attribute)) : array(); + $target = $attribute ? $attribute->getValueAsArray() : []; + $objvalue = []; + foreach($target as $t) + $objvalue[] = $t->getId(); $groups = $dms->getAllGroups(); if($groups) { $allowempty = $attrdef->getMinValues() == 0; From fc4d2edb573192d1002373918e9b3ee49c3de424 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Mar 2024 15:17:27 +0100 Subject: [PATCH 070/100] pass latest content to hooks. Fix php warnings --- out/out.CheckInDocument.php | 1 + views/bootstrap/class.CheckInDocument.php | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/out/out.CheckInDocument.php b/out/out.CheckInDocument.php index 3aefdb7b9..f944ab392 100644 --- a/out/out.CheckInDocument.php +++ b/out/out.CheckInDocument.php @@ -74,6 +74,7 @@ if($view) { $view->setParam('enableadminrevapp', $settings->_enableAdminRevApp); $view->setParam('enableownerrevapp', $settings->_enableOwnerRevApp); $view->setParam('enableselfrevapp', $settings->_enableSelfRevApp); + $view->setParam('enablehiddenrevapp', $settings->_enableHiddenRevApp); $view->setParam('enablereceiptworkflow', $settings->_enableReceiptWorkflow); $view->setParam('enableselfreceipt', $settings->_enableSelfReceipt); $view->setParam('dropfolderdir', $settings->_dropFolderDir); diff --git a/views/bootstrap/class.CheckInDocument.php b/views/bootstrap/class.CheckInDocument.php index cc5d8af1d..db02c6d31 100644 --- a/views/bootstrap/class.CheckInDocument.php +++ b/views/bootstrap/class.CheckInDocument.php @@ -69,6 +69,7 @@ $(document).ready(function() { $enableadminrevapp = $this->params['enableadminrevapp']; $enableownerrevapp = $this->params['enableownerrevapp']; $enableselfrevapp = $this->params['enableselfrevapp']; + $enablehiddenrevapp = $this->params['enablehiddenrevapp']; $enablereceiptworkflow = $this->params['enablereceiptworkflow']; $enableselfreceipt = $this->params['enableselfreceipt']; $workflowmode = $this->params['workflowmode']; @@ -203,18 +204,18 @@ $(document).ready(function() { $attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_documentcontent, SeedDMS_Core_AttributeDefinition::objtype_all)); if($attrdefs) { foreach($attrdefs as $attrdef) { - $arr = $this->callHook('editDocumentContentAttribute', $document, $attrdef); + $arr = $this->callHook('editDocumentContentAttribute', $latestContent, $attrdef); if(is_array($arr)) { if($arr) $this->formField($arr[0], $arr[1], isset($arr[2]) ? $arr[2] : null); } elseif(is_string($arr)) { echo $arr; } else { - $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $document->getAttribute($attrdef), 'attributes_version')); + $this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $latestContent->getAttribute($attrdef), 'attributes_version')); } } } - $arrs = $this->callHook('addDocumentContentAttributes', $document); + $arrs = $this->callHook('addDocumentContentAttributes', $latestContent); if(is_array($arrs)) { foreach($arrs as $arr) { $this->formField($arr[0], $arr[1], isset($arr[2]) ? $arr[2] : null); From 9b3cbb341707edd45adc5a600d509e63c0b3fa4a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 25 Mar 2024 16:20:50 +0100 Subject: [PATCH 071/100] escape several strings to prevent xss attacks --- views/bootstrap/class.Search.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index c22b4bbc2..2e9e29a97 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -979,7 +979,7 @@ $(document).ready(function() { $option = array($v, getReadableDate($v)); break; default: - $option = array($v, $v); + $option = array(htmlspecialchars($v), htmlspecialchars($v)); } if(isset($attributes[$facetname]) && is_array($attributes[$facetname]) && in_array($v, $attributes[$facetname])) $option[] = true; @@ -1092,9 +1092,9 @@ $(document).ready(function() { if($oldvalue) { unset($allparams['attributes'][$facetname]); $newrequest = Symfony\Component\HttpFoundation\Request::create($request->getBaseUrl(), 'GET', $allparams); - $menuitems[] = array('label'=>' '.$dispname.' = '.implode(', ', $oldvalue), 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x'); + $menuitems[] = array('label'=>' '.$dispname.' = '.htmlspecialchars(implode(', ', $oldvalue)), 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x'); foreach($oldvalue as $ov) - echo ''; + echo ''; } } } @@ -1150,9 +1150,9 @@ $(document).ready(function() { if($oldvalue) { unset($allparams[$facetname]); $newrequest = Symfony\Component\HttpFoundation\Request::create($request->getBaseUrl(), 'GET', $allparams); - $menuitems[] = array('label'=>' '.getMLText($facetname).' = '.implode(', ', $oldtransval), 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x'); + $menuitems[] = array('label'=>' '.getMLText($facetname).' = '.htmlspecialchars(implode(', ', $oldtransval)), 'link'=>$newrequest->getRequestUri(), 'attributes'=>[['title', 'Click to remove']], '_badge'=>'x'); foreach($oldvalue as $ok=>$ov) - echo ''; + echo ''; } } } @@ -1476,7 +1476,7 @@ $(document).ready(function() { $attrstr .= $arr; } else { $attrdef = $lcattribute->getAttributeDefinition(); - $attrstr .= "".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $lcattribute->getValueAsArray()))."\n"; + $attrstr .= "".htmlspecialchars($attrdef->getName())."".htmlspecialchars($lcattribute->getValueAsString())."\n"; // TODO: better use printAttribute() // $this->printAttribute($lcattribute); } @@ -1529,7 +1529,7 @@ $(document).ready(function() { $attrstr .= "".getMLText('name')."".getMLText('attribute_value').""; foreach($folderattributes as $folderattribute) { $attrdef = $folderattribute->getAttributeDefinition(); - $attrstr .= "".htmlspecialchars($attrdef->getName())."".htmlspecialchars(implode(', ', $folderattribute->getValueAsArray()))."\n"; + $attrstr .= "".htmlspecialchars($attrdef->getName())."".htmlspecialchars($folderattribute->getValueAsString())."\n"; } $attrstr .= ""; } From a05a0b9b49a549efa4c160a6cfd86b34b88fffa4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 26 Mar 2024 13:29:41 +0100 Subject: [PATCH 072/100] various minor updates --- languages/ar_EG/lang.inc | 9 ++++++++ languages/bg_BG/lang.inc | 9 ++++++++ languages/ca_ES/lang.inc | 9 ++++++++ languages/cs_CZ/lang.inc | 9 ++++++++ languages/de_DE/lang.inc | 15 ++++++++++--- languages/el_GR/lang.inc | 9 ++++++++ languages/en_GB/lang.inc | 47 ++++++++++++++++++++++++---------------- languages/es_ES/lang.inc | 9 ++++++++ languages/fr_FR/lang.inc | 9 ++++++++ languages/hr_HR/lang.inc | 9 ++++++++ languages/hu_HU/lang.inc | 9 ++++++++ languages/id_ID/lang.inc | 9 ++++++++ languages/it_IT/lang.inc | 9 ++++++++ languages/ko_KR/lang.inc | 9 ++++++++ languages/lo_LA/lang.inc | 9 ++++++++ languages/nb_NO/lang.inc | 9 ++++++++ languages/nl_NL/lang.inc | 9 ++++++++ languages/pl_PL/lang.inc | 9 ++++++++ languages/pt_BR/lang.inc | 9 ++++++++ languages/ro_RO/lang.inc | 9 ++++++++ languages/ru_RU/lang.inc | 9 ++++++++ languages/sk_SK/lang.inc | 9 ++++++++ languages/sv_SE/lang.inc | 9 ++++++++ languages/tr_TR/lang.inc | 9 ++++++++ languages/uk_UA/lang.inc | 9 ++++++++ languages/zh_CN/lang.inc | 9 ++++++++ languages/zh_TW/lang.inc | 9 ++++++++ 27 files changed, 265 insertions(+), 22 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index 72d8ea5b0..bf687cd0f 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -155,6 +155,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'الأقل اكبر من الأكبر', 'attrdef_multiple' => 'السماح باكثر من قيمة', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'يحتاج أكثر من قيمة', 'attrdef_must_be_multiple' => 'يجب أن يكون متعدد القيم', 'attrdef_name' => 'اسم', @@ -860,6 +861,7 @@ URL: [url]', 'individuals_in_groups' => 'أفراد في المجموعات', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'رابط معلومات المستلمين لم يصدر بعد', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'موروث', 'inherits_access_copy_msg' => 'نسخ قائمة صلاحيات موروثة.', @@ -1020,6 +1022,7 @@ URL: [url]', 'move_document' => 'تحريك مستند', 'move_folder' => 'تحريك مجلد', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'حسابي', 'my_documents' => 'مستنداتي', 'my_transmittals' => 'الإحالات الخاصة بي', @@ -1633,6 +1636,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'تمكين تحديد اللغة', 'settings_enableLargeFileUpload' => 'تمكين تحميل الملفات الكبيرة', 'settings_enableLargeFileUpload_desc' => 'تمكين تحميل الملفات الكبيرة', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'تمكين مهام القائمة', 'settings_enableMenuTasks_desc' => 'تمكين مهام القائمة', 'settings_enableMultiUpload' => 'تمكين تحميل متعدد', @@ -1944,6 +1949,7 @@ URL: [url]', 'splash_add_group' => 'اضافة مجموعة', 'splash_add_group_member' => 'اضافة مستخدم الى المجموعة', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'اضافة دور', 'splash_add_task' => '', @@ -1963,12 +1969,14 @@ URL: [url]', 'splash_document_locked' => 'تم قفل المستند', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'تم الغاء قفل المستند', +'splash_document_updated' => '', 'splash_edit_access' => 'تحرير الدخول', 'splash_edit_attribute' => 'تحرير السمة', 'splash_edit_category' => '', 'splash_edit_event' => 'تحرير الحدث', 'splash_edit_group' => 'تحرير المجموعة', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'تحرير الدور', 'splash_edit_task' => 'تحرير المهمة', 'splash_edit_transmittal' => '', @@ -2008,6 +2016,7 @@ URL: [url]', 'splash_rm_group' => 'تم حذف المجموعة', 'splash_rm_group_member' => 'تم حذف مستخدم من المجموعة', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'تم حذف دور', 'splash_rm_transmittal' => 'تم حذف إحالة', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index 2a5c526f2..b647646e8 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -150,6 +150,7 @@ $text = array( 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => '', 'attrdef_multiple' => 'ПОзволи няколко стойности', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => '', 'attrdef_name' => 'Име', @@ -754,6 +755,7 @@ $text = array( 'individuals_in_groups' => '', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'наследен', 'inherits_access_copy_msg' => 'Изкопирай наследения список', @@ -914,6 +916,7 @@ $text = array( 'move_document' => 'Премести документ', 'move_folder' => 'Премести папка', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Моя акаунт', 'my_documents' => 'Моите документи', 'my_transmittals' => 'Моите предавания', @@ -1475,6 +1478,8 @@ $text = array( 'settings_enableLanguageSelector_desc' => 'Покажи селектор за език на интерфейса след влизане. Това не влияе на избора на език на първа страница.', 'settings_enableLargeFileUpload' => 'Включи джава-зараждане на файлове', 'settings_enableLargeFileUpload_desc' => 'Ако е включено, качване на файлове е дустъпно и чрез джава-аплет, именован jumploader, без лимит за размер на файла. Това също ще позволи да се качват няколко файла наведнъж.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', 'settings_enableMultiUpload' => '', @@ -1786,6 +1791,7 @@ $text = array( 'splash_add_group' => '', 'splash_add_group_member' => '', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1805,12 +1811,14 @@ $text = array( 'splash_document_locked' => 'Документът е заключен', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Документа е отключен', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => '', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => '', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -1850,6 +1858,7 @@ $text = array( 'splash_rm_group' => '', 'splash_rm_group_member' => '', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index ae9f106ac..9f284c8e1 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -155,6 +155,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => '', 'attrdef_multiple' => '', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => '', 'attrdef_name' => '', @@ -759,6 +760,7 @@ URL: [url]', 'individuals_in_groups' => '', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'Heredat', 'inherits_access_copy_msg' => 'Copiar llista d\'accés heretat', @@ -919,6 +921,7 @@ URL: [url]', 'move_document' => 'Moure document', 'move_folder' => 'Moure directori', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'El meu compte', 'my_documents' => 'Els meus documents', 'my_transmittals' => 'Documents enviats per mi', @@ -1480,6 +1483,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => '', 'settings_enableLargeFileUpload' => '', 'settings_enableLargeFileUpload_desc' => '', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', 'settings_enableMultiUpload' => '', @@ -1791,6 +1796,7 @@ URL: [url]', 'splash_add_group' => '', 'splash_add_group_member' => '', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1810,12 +1816,14 @@ URL: [url]', 'splash_document_locked' => 'Document blocat', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Document desblocat', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => '', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => '', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -1855,6 +1863,7 @@ URL: [url]', 'splash_rm_group' => '', 'splash_rm_group_member' => '', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index e1698ff0e..e1aa43221 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Minimální počet hodnot je větší, než maximální počet hodnot', 'attrdef_multiple' => 'Povolit více hodnot', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Definice atributu s více hodnotami potřebuje nastavit hodnoty.', 'attrdef_must_be_multiple' => 'Atribut musí mít více než jednu hodnotu, přesto není zadáno více hodnot', 'attrdef_name' => 'Název', @@ -891,6 +892,7 @@ URL: [url]', 'individuals_in_groups' => 'Členové skupiny', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Potvrzení o příjmu této verze dokumentu není možné, protože verze není uvolněna.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'Zděděno', 'inherits_access_copy_msg' => 'Zkopírovat zděděný seznam řízení přístupu', @@ -1051,6 +1053,7 @@ URL: [url]', 'move_document' => 'Přesunout dokument', 'move_folder' => 'Přesun složky', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Můj účet', 'my_documents' => 'Moje dokumenty', 'my_transmittals' => 'Moje přenosy', @@ -1705,6 +1708,8 @@ Jméno: [username] 'settings_enableLanguageSelector_desc' => 'Zobrazit výběr jazyka uživatelského rozhraní po přihlášení.', 'settings_enableLargeFileUpload' => 'Povolit nahrávání velkých souborů', 'settings_enableLargeFileUpload_desc' => 'Je-li nastaveno, nahrávání souborů je také k dispozici prostřednictvím java appletu s názvem jumploader bez omezení velikosti souboru nastaveného prohlížečem. Umožňuje také nahrát několik souborů v jednom kroku.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Povolit seznam úkolů v nabídce', 'settings_enableMenuTasks_desc' => 'Aktivovat / Zakázat položku nabídky, která obsahuje všechny úkoly pro uživatele. Obsahuje dokumenty, které musí být přezkoumány, schváleny atd.', 'settings_enableMultiUpload' => 'Umožit nahrát více souborů', @@ -2016,6 +2021,7 @@ Jméno: [username] 'splash_add_group' => 'Přidána nová skupina', 'splash_add_group_member' => 'Přidán nový člen skupiny', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Přidána nová role', 'splash_add_task' => '', @@ -2035,12 +2041,14 @@ Jméno: [username] 'splash_document_locked' => 'Dokument zamčen', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Dokument odemčen', +'splash_document_updated' => '', 'splash_edit_access' => 'Přístupová práva změněna', 'splash_edit_attribute' => 'Atribut uložen', 'splash_edit_category' => '', 'splash_edit_event' => 'Událost uložena', 'splash_edit_group' => 'Skupina uložena', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Role uložena', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2080,6 +2088,7 @@ Jméno: [username] 'splash_rm_group' => 'Skupina odstraněna', 'splash_rm_group_member' => 'Člen skupiny odstraněn', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Role odstraněna', 'splash_rm_transmittal' => 'Přenos odstraněn', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 4642960aa..08bb97de6 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (3297), dgrutsch (22) +// Translators: Admin (3343), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -190,6 +190,7 @@ URL: [url]

          ', 'attrdef_minvalues_help' => 'Minimale Anzahl der Werte. Setzen Sie diesen Wert auf 1, wenn ein Attribut gesetzt werden muss.', 'attrdef_min_greater_max' => 'Zahl der minimalen Werte ist größer als Zahl der maximalen Werte', 'attrdef_multiple' => 'Mehrfachwerte erlaubt', +'attrdef_multiple_but_doc_or_folder' => 'Attribute des Typs Dokument oder Ordner können keine Mehrfachwerte haben.', 'attrdef_multiple_needs_valueset' => 'Attributdefinition mit Mehrfachwerten erfordert eine Werteliste.', 'attrdef_must_be_multiple' => 'Attribut muss mehr als einen Wert haben, erlaubt aber keine Mehrfachwerte', 'attrdef_name' => 'Name', @@ -1102,6 +1103,7 @@ URL: [url]

          ', 'individuals_in_groups' => 'Mitglieder einer Gruppe', 'ind_review_removed' => 'Statuswechsel, weil Prufung des Benutzers [name] entfernt wurde.', 'info_recipients_tab_not_released' => 'Die Bestätigung des Empfangs für diese Dokumentenversion ist nicht möglich, weil die Version nicht freigegeben ist.', +'info_rm_user_from_processes_none' => 'Der Benutzer ist zur Zeit keine Aufgaben.', 'info_rm_user_from_processes_user' => 'Nur die noch offenen Aufgaben können auf einen anderen Benutzer übertragen werden. Bei Aufgaben, die bereits bearbeitet wurden, wird der Benutzer aus der Bearbeitungshistorie gelöscht, als würde der Benutzer selbst gelöscht.', 'inherited' => 'geerbt', 'inherits_access_copy_msg' => 'Berechtigungen kopieren', @@ -1262,6 +1264,7 @@ URL: [url]

          ', 'move_document' => 'Verschieben', 'move_folder' => 'Verschieben', 'move_into_rootfolder' => 'In den Wurzelordner verschieben', +'must_drop_one_file' => 'Sie dürfen nicht mehr als eine Datei ablegen', 'my_account' => 'Mein Profil', 'my_documents' => 'Meine Dokumente', 'my_transmittals' => 'Meine Dokumentenlisten', @@ -1279,7 +1282,7 @@ URL: [url]

          ', 'never' => 'nie', 'new' => 'Neu', 'new_attrdef' => 'Neue Attributdefinition', -'new_default_keywords' => 'Neue Vorlage', +'new_default_keywords' => 'Stichwort hinzufügen', 'new_default_keyword_category' => 'Neue Kategorie', 'new_documents' => 'Neue Dokumente', 'new_documents_today' => 'Neue Dokumente heute', @@ -1952,7 +1955,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_allowReviewerOnly_desc' => 'Anwählen, um zu erlauben, dass nur ein Prüfer aber kein Freigeber beim traditionellen Workflow gesetzt werden darf.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', 'settings_apiKey' => 'Authentifizierungsschḻüssel für REST API', -'settings_apiKey_desc' => 'Dieser Schlüssel wird zur alternative Authentifizierung in der REST API verwendet. Wählen Sie eine 32 Zeichen lange Zeichenkette.', +'settings_apiKey_desc' => 'Dieser Schlüssel wird zur alternativen Authentifizierung in der REST API verwendet. Wählen Sie eine 32 Zeichen lange Zeichenkette.', 'settings_apiOrigin' => 'Erlaubte Herkunft der API Aufrufe', 'settings_apiOrigin_desc' => 'Eine semicolon-separierte Liste von Adressen, denen ein Zugriff auf die REST API erlaubt ist. Jede Adresse muss in der Form ://[:] angegeben werden. Der Port kann ausgelassen werden. Bleibt dieses Feld leer, dann ist der Zugriff uneingeschränkt.', 'settings_apiUserId' => 'Benutzer für die REST API', @@ -2088,6 +2091,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'settings_enableLanguageSelector_desc' => 'Zeige Auswahl der verfügbaren Sprachen nachdem man sich angemeldet hat.', 'settings_enableLargeFileUpload' => 'Hochladen von sehr großen Dateien ermöglichen', 'settings_enableLargeFileUpload_desc' => 'Wenn dies gesetzt ist, dann ist ebenfalls der Upload von Dokumenten durch ein java applet mit Namen \'jumploader\' ohne Begrenzung der maximalen Dateigröße möglich. Auch das Hochladen mehrerer Dokumente in einem Schritt wird dadurch ermöglicht. Das Einschalten bewirkt, dass keine http only Cookies mehr gesetzt werden.', +'settings_enableLoginByEmail' => 'Anmeldung mit E-Mail erlauben', +'settings_enableLoginByEmail_desc' => 'Wenn eingeschaltet, dann ist auch die Anmeldung mit der E-Mail-Adresse möglich. Die Anmeldung mit dem Benutzername bleibt weiterhin möglich. Diese Einstellung wird möglicherweise nicht von allen Authentifizierungsmethoden berücksichtigt. Da die E-Mail nicht eindeutig ist, kann die Identifikation fehlschagen, auch wenn das Password aus Sicht des anmeldenen Benutzers korrekt ist.', 'settings_enableMenuTasks' => 'Aufgabenliste im Menü', 'settings_enableMenuTasks_desc' => 'Ein-/Ausschalten des Menüeintrags, der anstehenden Aufgaben des Benutzers enthält. Diese Liste beinhaltet Dokumente die geprüft, freigegeben, usw. werden müssen.', 'settings_enableMultiUpload' => 'Erlaube Hochladen mehrerer Dateien', @@ -2399,6 +2404,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'splash_add_group' => 'Neue Gruppe hinzugefügt', 'splash_add_group_member' => 'Neues Gruppenmitglied hinzugefügt', 'splash_add_keyword' => 'Stichwort hinzugefügt', +'splash_add_keyword_category' => 'Stichwortliste hinzugefügt', 'splash_add_notify' => 'Neue Benachrichtigung hinzugefügt', 'splash_add_role' => 'Neue Rolle hinzugefügt', 'splash_add_task' => 'Neuer Task hinzugefügt', @@ -2418,12 +2424,14 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'splash_document_locked' => 'Dokument gesperrt', 'splash_document_name_changed' => 'Dokumentenname geändert', 'splash_document_unlocked' => 'Dokumentensperre aufgehoben', +'splash_document_updated' => 'Dokument aktualisiert', 'splash_edit_access' => 'Zugriffsrecht verändert', 'splash_edit_attribute' => 'Attribut gespeichert', 'splash_edit_category' => 'Kategorie gespeichert', 'splash_edit_event' => 'Ereignis gespeichert', 'splash_edit_group' => 'Gruppe gespeichert', 'splash_edit_keyword' => 'Stichwort gespeichert', +'splash_edit_keyword_category' => 'Name der Stichwortliste geändert', 'splash_edit_role' => 'Rolle gespeichert', 'splash_edit_task' => 'Task gespeichert', 'splash_edit_transmittal' => 'Dokumentenliste gespeichert', @@ -2463,6 +2471,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'splash_rm_group' => 'Gruppe gelöscht', 'splash_rm_group_member' => 'Mitglied der Gruppe gelöscht', 'splash_rm_keyword' => 'Stichwort gelöscht', +'splash_rm_keyword_category' => 'Stichwortliste gelöscht', 'splash_rm_notify' => 'Benachrichtigung gelöscht', 'splash_rm_role' => 'Rolle gelöscht', 'splash_rm_transmittal' => 'Dokumentenliste gelöscht', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index c72009e12..141c11529 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -150,6 +150,7 @@ $text = array( 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => '', 'attrdef_multiple' => '', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => '', 'attrdef_name' => 'Όνομα', @@ -754,6 +755,7 @@ $text = array( 'individuals_in_groups' => '', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'Κληρονομημένο', 'inherits_access_copy_msg' => 'Αντιγραφή δικαιωμάτων πρόσβασης', @@ -914,6 +916,7 @@ $text = array( 'move_document' => 'Μετακίνηση εγγράφου', 'move_folder' => 'Μετακίνηση φακέλου', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Ο Λογαριασμός μου', 'my_documents' => 'Τα έγγραφα μου', 'my_transmittals' => 'Οι Διαβιβάσεις μου', @@ -1486,6 +1489,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => '', 'settings_enableLargeFileUpload' => '', 'settings_enableLargeFileUpload_desc' => '', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', 'settings_enableMultiUpload' => '', @@ -1797,6 +1802,7 @@ URL: [url]', 'splash_add_group' => '', 'splash_add_group_member' => '', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1816,12 +1822,14 @@ URL: [url]', 'splash_document_locked' => 'Κλειδωμένο έγγραφο', 'splash_document_name_changed' => '', 'splash_document_unlocked' => '', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => '', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => '', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -1861,6 +1869,7 @@ URL: [url]', 'splash_rm_group' => '', 'splash_rm_group_member' => '', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 6100f3f99..6dc2ee776 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2390), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (2452), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -190,6 +190,7 @@ URL: [url]

          ', 'attrdef_minvalues_help' => 'Minimum number of values. Set to 1 if attribute must be set.', 'attrdef_min_greater_max' => 'Minimum number of values is larger than maximum number of values', 'attrdef_multiple' => 'Allow multiple values', +'attrdef_multiple_but_doc_or_folder' => 'Attributes of type document or folder cannot have multiple values.', 'attrdef_multiple_needs_valueset' => 'Attribute definition with multiple values needs value set.', 'attrdef_must_be_multiple' => 'Attribute must have more than one value, but is not set multiple value', 'attrdef_name' => 'Name', @@ -275,7 +276,7 @@ URL: [url]

          ', 'cancel' => 'Cancel', 'cancel_checkout' => 'Cancel checkout', 'cancel_checkout_document' => 'Cancel checkout', -'cancel_checkout_warning' => 'The check out can canceled thought the checked out file has been changed. In that case the file will be deleted from the check out space and your modification will be lost.', +'cancel_checkout_warning' => 'The check out can be canceled thought the checked out file has been changed. In that case the file will be deleted from the check out space and your modification will be lost.', 'cannot_assign_invalid_state' => 'Cannot modify an obsolete or rejected document', 'cannot_change_final_states' => 'Warning: You cannot alter status for document rejected, expired or with pending review or approval', 'cannot_delete_user' => 'Cannot delete user', @@ -311,7 +312,7 @@ URL: [url]

          ', 'chart_docsperuser_title' => 'Documents per user', 'chart_foldersperuser_title' => 'Folders per user', 'chart_selection' => 'Select chart', -'chart_sizeperuser_title' => 'Diskspace per user', +'chart_sizeperuser_title' => 'Disk space per user', 'checkedout_file_has_different_version' => 'The checked out version is not identical to the current version. Check in will not update the document.', 'checkedout_file_has_disappeared' => 'The file of the checked out document has disappeared. Check in will not be possible.', 'checkedout_file_is_unchanged' => 'The file of the checked out document is still unchanged. Check in will not be possible. If you do not plan any modifications, you can reset the check out status.', @@ -853,7 +854,7 @@ URL: [url]

          ', 'files_deletion_warning' => 'With this option you can delete all files of entire DMS folders. The versioning information will remain visible.', 'files_loading' => 'Please wait, until the list of files is loaded …', 'filetype' => 'File type', -'file_size' => 'Filesize', +'file_size' => 'File size', 'filter_for_documents' => 'Additional filter for documents', 'filter_for_documents_and_folders' => 'Additional filter for folder and documents', 'filter_for_folders' => 'Additional filter for folders', @@ -891,7 +892,7 @@ Value: [attribute_value]
          Parent folder: [folder_path]
          User: [username]
          URL: [url]

          ', -'folder_attribute_added_email_subject' => '[sitename]: [name] - Attribute changed', +'folder_attribute_added_email_subject' => '[sitename]: [name] - Attribute added', 'folder_attribute_changed_email_body' => 'Attribute changed Folder: [name] @@ -1101,8 +1102,9 @@ URL: [url]

          ', 'individuals' => 'Individuals', 'individuals_in_groups' => 'Members of a group', 'ind_review_removed' => 'Change of status, because review of user [name] was removed.', -'info_recipients_tab_not_released' => 'Acknowledgement of reception for this document version is not possible, because the version is not released.', -'info_rm_user_from_processes_user' => 'Only tasks not being touched can be transfered to another user. Task which has been taken care of, will just add an item in the history, as if the user was deleted.', +'info_recipients_tab_not_released' => 'Acknowledgment of reception for this document version is not possible, because the version is not released.', +'info_rm_user_from_processes_none' => 'The user has currently no tasks.', +'info_rm_user_from_processes_user' => 'Only tasks not being touched can be transferred to another user. Task which has been taken care of, will just add an item in the history, as if the user was deleted.', 'inherited' => 'inherited', 'inherits_access_copy_msg' => 'Copy inherited access list', 'inherits_access_empty_msg' => 'Start with empty access list', @@ -1240,7 +1242,7 @@ URL: [url]

          ', 'misc' => 'Misc', 'missing_checksum' => 'Missing checksum', 'missing_file' => 'Missing file', -'missing_filesize' => 'Missing filesize', +'missing_filesize' => 'Missing file size', 'missing_func_class_note' => 'Note', 'missing_php_class' => 'PHP class [classname] missing', 'missing_php_extension' => 'PHP extension [extname] missing', @@ -1262,6 +1264,7 @@ URL: [url]

          ', 'move_document' => 'Move document', 'move_folder' => 'Move Folder', 'move_into_rootfolder' => 'Move into root folder', +'must_drop_one_file' => 'You may not drop more than one file', 'my_account' => 'My Account', 'my_documents' => 'My Documents', 'my_transmittals' => 'My Transmittals', @@ -1279,7 +1282,7 @@ URL: [url]

          ', 'never' => 'never', 'new' => 'New', 'new_attrdef' => 'Add attribute definition', -'new_default_keywords' => 'Add keywords', +'new_default_keywords' => 'Add keyword', 'new_default_keyword_category' => 'Add category', 'new_documents' => 'New documents', 'new_documents_today' => 'New documents today', @@ -1953,12 +1956,12 @@ If you did not receive a password, please use the password forgotten function on 'settings_allowReviewerOnly' => 'Allow to set reviewer only', 'settings_allowReviewerOnly_desc' => 'Enable this, if it shall be allow to set just a reviewer but no approver in traditional workflow mode.', 'settings_apache_mod_rewrite' => 'Apache - Module Rewrite', -'settings_apiKey' => 'Authentification key for rest api', -'settings_apiKey_desc' => 'This key is used a alternative authentication for the rest api. Choose a 32 char long string.', +'settings_apiKey' => 'Authentification key for REST api', +'settings_apiKey_desc' => 'This key is used a alternative authentication for the REST api. Choose a 32 char long string.', 'settings_apiOrigin' => 'Allowed origin of api calls', 'settings_apiOrigin_desc' => 'A list of addresses separated by semicolon. Each address has the form ://[:]. The port can be omitted. If this field is left empty, no restrictions will apply.', -'settings_apiUserId' => 'User for rest api', -'settings_apiUserId_desc' => 'This user will be used by the rest api, if authentication was done with the configured api key.', +'settings_apiUserId' => 'User for REST api', +'settings_apiUserId_desc' => 'This user will be used by the REST api, if authentication was done with the configured api key.', 'settings_Authentication' => 'Authentication settings', 'settings_autoLoginUser' => 'Automatic login', 'settings_autoLoginUser_desc' => 'Use this user id for accesses if the user is not already logged in. Such an access will not create a session.', @@ -2090,6 +2093,8 @@ If you did not receive a password, please use the password forgotten function on 'settings_enableLanguageSelector_desc' => 'Show selector for user interface language after being logged in.', 'settings_enableLargeFileUpload' => 'Enable large file upload', 'settings_enableLargeFileUpload_desc' => 'If set, file upload is also available through a java applet called jumploader without a file size limit set by the browser. It also allows to upload several files in one step. Turning this on will turn off http only cookies.', +'settings_enableLoginByEmail' => 'Enable login by email', +'settings_enableLoginByEmail_desc' => 'If enabled, the user maya also use the email address for login. This will not disable login with the username. This setting may not be regarded by all authentication methods. Because the email is not unique, authentication may fail, even if the user enters a right password.', 'settings_enableMenuTasks' => 'Enable task list in menu', 'settings_enableMenuTasks_desc' => 'Enable/Disable the menu item which contains all tasks for the user. This contains documents, that need to be reviewed, approved, etc.', 'settings_enableMultiUpload' => 'Allow upload of multiple files', @@ -2223,7 +2228,7 @@ If you did not receive a password, please use the password forgotten function on 'settings_maxItemsPerPage_desc' => 'Restricts the number of folders and documents shown on the view folder page. Further objects will be loaded when scrolling to the end of the page. Set to 0 to always show all objects.', 'settings_maxRecursiveCount' => 'Max. number of recursive document/folder count', 'settings_maxRecursiveCount_desc' => 'This is the maximum number of documents or folders that will be checked for access rights, when recursively counting objects. If this number is exceeded, the number of documents and folders in the folder view will be estimated.', -'settings_maxSizeForFullText' => 'Maximum filesize for instant indexing', +'settings_maxSizeForFullText' => 'Maximum file size for instant indexing', 'settings_maxSizeForFullText_desc' => 'All new document version smaller than the configured size will be fully indexed right after uploading. In all other cases only the metadata will be indexed.', 'settings_maxUploadSize' => 'Maxium size for uploaded files', 'settings_maxUploadSize_desc' => 'This is the maximum size for uploaded files. It will take affect for document versions and attachments.', @@ -2242,7 +2247,7 @@ If you did not receive a password, please use the password forgotten function on 'settings_overrideMimeType_desc' => 'Override the MimeType delivered by the browser, if a file is uploaded. The new MimeType is determined by SeedDMS itself.', 'settings_overrideTheme' => 'Override theme', 'settings_overrideTheme_desc' => 'Enable this for overriding the theme store in the user record with the theme configured in this configuration.', -'settings_partitionSize' => 'Partial filesize', +'settings_partitionSize' => 'Partial file size', 'settings_partitionSize_desc' => 'Size of partial files in bytes, uploaded by jumploader. Do not set a value larger than the maximum upload size set by the server.', 'settings_passwordExpiration' => 'Password expiration', 'settings_passwordExpiration_desc' => 'The number of days after which a password expireѕ and must be reset. 0 turns password expiration off.', @@ -2401,6 +2406,7 @@ If you did not receive a password, please use the password forgotten function on 'splash_add_group' => 'New group added', 'splash_add_group_member' => 'New group member added', 'splash_add_keyword' => 'New keyword added', +'splash_add_keyword_category' => 'New list of keywords added', 'splash_add_notify' => 'Added new notification', 'splash_add_role' => 'Added new role', 'splash_add_task' => 'Added new task', @@ -2420,12 +2426,14 @@ If you did not receive a password, please use the password forgotten function on 'splash_document_locked' => 'Document locked', 'splash_document_name_changed' => 'Document name changed', 'splash_document_unlocked' => 'Document unlocked', +'splash_document_updated' => 'Document updated', 'splash_edit_access' => 'Access right changed', 'splash_edit_attribute' => 'Attribute saved', 'splash_edit_category' => 'Category saved', 'splash_edit_event' => 'Event saved', 'splash_edit_group' => 'Group saved', 'splash_edit_keyword' => 'Keyword saved', +'splash_edit_keyword_category' => 'Name of keyword list changed', 'splash_edit_role' => 'Role saved', 'splash_edit_task' => 'Task saved', 'splash_edit_transmittal' => 'Transmittal saved', @@ -2465,6 +2473,7 @@ If you did not receive a password, please use the password forgotten function on 'splash_rm_group' => 'Group removed', 'splash_rm_group_member' => 'Member of group removed', 'splash_rm_keyword' => 'Keyword removed', +'splash_rm_keyword_category' => 'List of keywords removed', 'splash_rm_notify' => 'Notification deleted', 'splash_rm_role' => 'Role deleted', 'splash_rm_transmittal' => 'Transmittal deleted', @@ -2483,9 +2492,9 @@ If you did not receive a password, please use the password forgotten function on 'splash_substituted_user' => 'Substituted user', 'splash_switched_back_user' => 'Switched back to original user', 'splash_toogle_group_manager' => 'Group manager toogled', -'splash_transfer_content' => 'Content transfered', -'splash_transfer_document' => 'Document transfered', -'splash_transfer_objects' => 'Objects transfered', +'splash_transfer_content' => 'Content transferred', +'splash_transfer_document' => 'Document transferred', +'splash_transfer_objects' => 'Objects transferred', 'splash_trigger_workflow' => 'Triggered transition of workflow', 'startdate' => 'Start date', 'state_and_next_state' => 'State/Next state', @@ -2607,7 +2616,7 @@ If you did not receive a password, please use the password forgotten function on 'transfer_content' => 'Transfer content', 'transfer_document' => 'Transfer document', 'transfer_no_read_access' => 'The user does not have read access in the folder', -'transfer_no_users' => 'There are currenlty no users the document can be transfered to.', +'transfer_no_users' => 'There are currently no users the document can be transferred to.', 'transfer_no_write_access' => 'The user does not have write access in the folder', 'transfer_objects' => 'Transfer objects', 'transfer_objects_to_user' => 'New owner', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 6c73ed1a7..71151f90d 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -162,6 +162,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'El número mínimo de valores es mayor que el numero máximo de valores', 'attrdef_multiple' => 'Permitir múltiples valores', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => 'El atributo debe tener más de un valor, pero no está seteado para valores múltiples', 'attrdef_name' => 'Nombre', @@ -875,6 +876,7 @@ URL: [url]', 'individuals_in_groups' => 'Miembros del grupo', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'heredado', 'inherits_access_copy_msg' => 'Copiar lista de acceso heredado', @@ -1035,6 +1037,7 @@ URL: [url]', 'move_document' => 'Mover documento', 'move_folder' => 'Mover carpeta', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Mi cuenta', 'my_documents' => 'Mis documentos', 'my_transmittals' => 'Mi transmision', @@ -1656,6 +1659,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Mostrar selector de lenguaje para usuario despues de identificarse.', 'settings_enableLargeFileUpload' => 'Habilitar la carga de ficheros grandes', 'settings_enableLargeFileUpload_desc' => 'Si se habilita, la carga de ficheros también estará disponible a través de un applet java llamado jumploader, sin límite de tamaño de fichero fijado por el navegador. También permite la carga de múltiples ficheros de una sola vez.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Activar en el menú la lista de tareas', 'settings_enableMenuTasks_desc' => 'Habilita/Deshabillita la parte del menú que contiene todas las tareas para el usuario. Contiene documentos que necesitan ser revisados, aprobados, etc.', 'settings_enableMultiUpload' => 'Permitir subir múltiples archivos', @@ -1967,6 +1972,7 @@ URL: [url]', 'splash_add_group' => 'Nuevo grupo agregado', 'splash_add_group_member' => 'Nuevo miembro del grupo agregado', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1986,12 +1992,14 @@ URL: [url]', 'splash_document_locked' => 'Documento bloqueado', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Documento desbloqueado', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Atributo guardado', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Grupo guardado', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2031,6 +2039,7 @@ URL: [url]', 'splash_rm_group' => 'Grupo eliminado', 'splash_rm_group_member' => 'Miembro eliminado del grupo', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 4192bdc63..8e78b4300 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -181,6 +181,7 @@ URL : [url]

          ', 'attrdef_minvalues_help' => 'Nombre minimum de valeurs. Définir à 1 si l’attribut doit être défini.', 'attrdef_min_greater_max' => 'Le nombre minimum de valeurs est supérieur au maximum', 'attrdef_multiple' => 'Permettre des valeurs multiples', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Une définition d’attribut à valeurs multiples nécessite un ensemble de valeurs.', 'attrdef_must_be_multiple' => 'L\'attribut a plusieurs valeurs mais n\'est pas définit comme possédant des valeurs multiples', 'attrdef_name' => 'Nom', @@ -1059,6 +1060,7 @@ URL : [url]

          ', 'individuals_in_groups' => 'Membres d’un groupe', 'ind_review_removed' => 'Changement de statut car la vérification de l’utilisateur [name] a été supprimée.', 'info_recipients_tab_not_released' => 'L’accusé de réception pour cette version du document n’est pas possible car la version n’est pas en état « publié ».', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => 'Seules les tâches non traitées peuvent être transférées à un autre utilisateur. Pour les tâches déjà traitées, une entrée sera ajoutée dans l’historique, comme si l’utilisateur lui-même avait été supprimé.', 'inherited' => 'hérité', 'inherits_access_copy_msg' => 'Recopier la liste des accès hérités', @@ -1219,6 +1221,7 @@ URL : [url]

          ', 'move_document' => 'Déplacer le document', 'move_folder' => 'Déplacer le dossier', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Mon compte', 'my_documents' => 'Mes documents', 'my_transmittals' => 'Mes transmissions', @@ -2043,6 +2046,8 @@ Nom : [username] 'settings_enableLanguageSelector_desc' => 'Montrer le sélecteur de langue d\'interface après connexion de l\'utilisateur.', 'settings_enableLargeFileUpload' => 'Activer le dépôt de fichiers très volumineux', 'settings_enableLargeFileUpload_desc' => 'Si défini, le téléchargement de fichier est également disponible via un applet java appelé jumploader sans limite de taille définie par le navigateur. Il permet également de télécharger plusieurs fichiers en une seule fois.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Activer le menu des tâches', 'settings_enableMenuTasks_desc' => 'Affiche un menu avec la liste des tâches. Cette liste contient les documents en attente d’une action par l’utilisateur.', 'settings_enableMultiUpload' => 'Autoriser le dépôt de plusieurs fichiers', @@ -2354,6 +2359,7 @@ Nom : [username] 'splash_add_group' => 'Nouveau groupe ajouté', 'splash_add_group_member' => 'Nouveau membre ajouté au groupe', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => 'Nouvelle notification ajoutée', 'splash_add_role' => 'Nouveau rôle ajouté', 'splash_add_task' => 'Nouvelle tâche ajoutée', @@ -2373,12 +2379,14 @@ Nom : [username] 'splash_document_locked' => 'Document verrouillé', 'splash_document_name_changed' => 'Nom du document modifié', 'splash_document_unlocked' => 'Document déverrouillé', +'splash_document_updated' => '', 'splash_edit_access' => 'Droits d’accès modifiés', 'splash_edit_attribute' => 'Attribut modifié', 'splash_edit_category' => '', 'splash_edit_event' => 'Événement modifié', 'splash_edit_group' => 'Groupe modifié', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Rôle modifié', 'splash_edit_task' => 'Tâche modifiée', 'splash_edit_transmittal' => 'Transmission enregistrée', @@ -2418,6 +2426,7 @@ Nom : [username] 'splash_rm_group' => 'Groupe supprimé', 'splash_rm_group_member' => 'Membre retiré du groupe', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => 'Notification supprimée', 'splash_rm_role' => 'Rôle supprimé', 'splash_rm_transmittal' => 'Transmission supprimée', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index f9270ae64..39f271fb5 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -167,6 +167,7 @@ Internet poveznica: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Minimalni broj vrijednosti je veći od maksimalnog broja vrijednosti', 'attrdef_multiple' => 'Dozvoli više vrijednosti', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Atribut s višestrukim vrijednostima mora imati set vrijednosti', 'attrdef_must_be_multiple' => 'Atribut mora imati više od jedne vrijednosti, ali nije postavljeno više vrijednosti', 'attrdef_name' => 'Naziv', @@ -872,6 +873,7 @@ Internet poveznica: [url]', 'individuals_in_groups' => '', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'naslijeđeno', 'inherits_access_copy_msg' => 'Kopiraj listu naslijeđenih prava pristupa', @@ -1032,6 +1034,7 @@ Internet poveznica: [url]', 'move_document' => 'Premjesti dokument', 'move_folder' => 'Premjesti mapu', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Moj korisnički račun', 'my_documents' => 'Moji dokumenti', 'my_transmittals' => 'Moja proslijeđivanja', @@ -1669,6 +1672,8 @@ Internet poveznica: [url]', 'settings_enableLanguageSelector_desc' => 'Prikaži izbornik za jezik korisničkog sučelja nakon prijave.', 'settings_enableLargeFileUpload' => 'Omogući učitavanje velikih datoteka', 'settings_enableLargeFileUpload_desc' => 'Ako je postavljeno, učitavanje datoteke je također dostupno kroz Java aplet naziva "jumploader" bez postavljenog ograničenja veličine datoteke od strane pretraživača. To također omogućuje učitavanje nekoliko datoteka u jednom koraku. Uključivanjem ovoga isključit će se samo http kolačići.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Omogućavanje liste zadataka u izborniku', 'settings_enableMenuTasks_desc' => 'Omogućavanje/onemogućavanje stavke izbornika koja sadrži sve zadatke za korisnika. Ovo sadrži dokumente koji trebaju biti revidirani, odobreni itd.', 'settings_enableMultiUpload' => '', @@ -1980,6 +1985,7 @@ Internet poveznica: [url]', 'splash_add_group' => 'Dodana nova grupa', 'splash_add_group_member' => 'Dodan novi član grupe', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1999,12 +2005,14 @@ Internet poveznica: [url]', 'splash_document_locked' => 'Dokument zaključan', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Dokument otključan', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Atribut pohranjen', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Groupa pohranjena', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2044,6 +2052,7 @@ Internet poveznica: [url]', 'splash_rm_group' => 'Grupa uklonjena', 'splash_rm_group_member' => 'Član grupe uklonjen', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index e443e84ef..6eb2a0481 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -162,6 +162,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'A minimum érték magasabb mint a maximum érték', 'attrdef_multiple' => 'Több érték is megadható', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => 'A tulajdonságnak több értékkel kell rendelkeznie, de nincs több érték megadva', 'attrdef_name' => 'Név', @@ -866,6 +867,7 @@ URL: [url]', 'individuals_in_groups' => '', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'örökölt', 'inherits_access_copy_msg' => 'Örökített hozzáférési lista másolása', @@ -1026,6 +1028,7 @@ URL: [url]', 'move_document' => 'Dokumentum áthelyezése', 'move_folder' => 'Könyvtár áthelyezése', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Saját hozzáférés', 'my_documents' => 'Saját dokumentumok', 'my_transmittals' => 'Átviteleim', @@ -1646,6 +1649,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Megjelenít egy választást a felhasználói felületen a bejelentkezést követően.', 'settings_enableLargeFileUpload' => 'Nagy méretű állományok feltöltésének engedélyezése', 'settings_enableLargeFileUpload_desc' => 'Ha beállítja az állományok feltöltése elérhető lesz egy jumploadernek hívott java appleten keresztül a böngészőprogram állomány méret korlátja nélkül. Ez engedélyezi több állomány feltöltését egy lépésben.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Feladatok menüpont engedélyezése', 'settings_enableMenuTasks_desc' => 'Engedélyezi / letiltja a menüelemet, amely a felhasználó összes feladatát tartalmazza. Ez olyan dokumentumokat tartalmaz, amelyeket felül kell vizsgálni, jóvá kell hagyni stb.', 'settings_enableMultiUpload' => 'Több fájl feltöltésének engedélyezése', @@ -1957,6 +1962,7 @@ URL: [url]', 'splash_add_group' => 'Új csoport hozzáadva', 'splash_add_group_member' => 'Új csoporttag hozzáadva', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1976,12 +1982,14 @@ URL: [url]', 'splash_document_locked' => 'Dokumentum zárolva', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Dokumentum zárolás feloldva', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Jellemző mentve', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Csoport mentve', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2021,6 +2029,7 @@ URL: [url]', 'splash_rm_group' => 'Csoport eltávolítva', 'splash_rm_group_member' => 'Csoporttag eltávolítva', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/id_ID/lang.inc b/languages/id_ID/lang.inc index 76e827716..80b38ecad 100644 --- a/languages/id_ID/lang.inc +++ b/languages/id_ID/lang.inc @@ -170,6 +170,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Jumlah nilai minimum lebih besar dari jumlah nilai maksimum', 'attrdef_multiple' => '', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Definisi atribut dengan beberapa nilai membutuhkan nilai yang ditetapkan.', 'attrdef_must_be_multiple' => '', 'attrdef_name' => 'Nama', @@ -950,6 +951,7 @@ URL: [url]

          ', 'individuals_in_groups' => '', 'ind_review_removed' => 'Perubahan status, karena ulasan pengguna [name] telah dihapus.', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => 'Hanya tugas yang tidak disentuh yang dapat ditransfer ke pengguna lain. Tugas yang telah diurus, hanya akan menambahkan item dalam riwayat, seolah-olah pengguna telah dihapus.', 'inherited' => '', 'inherits_access_copy_msg' => 'Salin daftar akses yang diwarisi', @@ -1110,6 +1112,7 @@ URL: [url]

          ', 'move_document' => 'Pindah dokumen', 'move_folder' => 'Pindah Folder', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Akun Saya', 'my_documents' => 'Dokumen Saya', 'my_transmittals' => 'Transmisi Saya', @@ -1736,6 +1739,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'settings_enableLanguageSelector_desc' => 'Tampilkan pemilihan bahasa antarmuka pengguna setelah masuk.', 'settings_enableLargeFileUpload' => 'Aktifkan unggahan file besar', 'settings_enableLargeFileUpload_desc' => 'Jika disetel, unggah berkas juga tersedia melalui java applet yang disebut jumploader tanpa batas ukuran berkas yang ditetapkan oleh peramban. Ini juga memungkinkan untuk mengunggah beberapa berkas dalam satu langkah. Mengaktifkan ini akan mematikan cookie http saja.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Aktifkan daftar task di menu', 'settings_enableMenuTasks_desc' => '', 'settings_enableMultiUpload' => 'Izinkan mengunggah banyak berkas', @@ -2047,6 +2052,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'splash_add_group' => 'Kelompok baru ditambahkan', 'splash_add_group_member' => 'Anggota kelompok baru ditambahkan', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => 'Menambahkan notifikasi baru', 'splash_add_role' => 'Menambahkan izin baru', 'splash_add_task' => 'Menambahkan tugas baru', @@ -2066,12 +2072,14 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'splash_document_locked' => 'Dokumen terkunci', 'splash_document_name_changed' => 'Nama dokumen diubah', 'splash_document_unlocked' => '', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Label telah disimpan', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Kelompok telah disimpan', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Izin disimpan', 'splash_edit_task' => 'Tugas disimpan', 'splash_edit_transmittal' => 'Pengiriman disimpan', @@ -2111,6 +2119,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'splash_rm_group' => 'Kelompok dihapus', 'splash_rm_group_member' => '', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => 'Notifikasi dihapus', 'splash_rm_role' => 'Izin dihapus', 'splash_rm_transmittal' => '', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index eabd9608d..f307b4584 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Il numero minimo di valori è maggiore del massimo', 'attrdef_multiple' => 'Permetti valori multipli', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Attributo definizione con i molteplici valori esigenze un valore impostato.', 'attrdef_must_be_multiple' => 'Gli attributi devono avere più di un valore, ma non sono permessi valori multipli', 'attrdef_name' => 'Nome', @@ -873,6 +874,7 @@ URL: [url]', 'individuals_in_groups' => 'I membri de la gruppo', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Non è possibile confermare la ricezione di questa versione del documento, poiché la versione non è stata rilasciata.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'ereditato', 'inherits_access_copy_msg' => 'Copia la lista degli accessi ereditati', @@ -1033,6 +1035,7 @@ URL: [url]', 'move_document' => 'Sposta documento', 'move_folder' => 'Sposta cartella', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Account personale', 'my_documents' => 'Documenti personali', 'my_transmittals' => 'Mie trasmissioni', @@ -1692,6 +1695,8 @@ Name: [username] 'settings_enableLanguageSelector_desc' => 'Mostra/nasconde il selettore di lingua successivamente al login.', 'settings_enableLargeFileUpload' => 'Abilita caricamento grandi files', 'settings_enableLargeFileUpload_desc' => 'Se selezionato, il caricamento (upload) dei files può essere effettuato anche attraverso un\'applet Java chiamata Jumploader evitando il limite di dimensioni file imposto dal browser; Jumploader permette anche il caricamento di diversi files contemporaneamente.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Abilita compito delle attività nel menù', 'settings_enableMenuTasks_desc' => 'Abilita/disabilita la voce di menu che contiene tutte le attività degli utenti. Questo conterrà i documenti che devono essere rivisti, approvati, etc.', 'settings_enableMultiUpload' => 'Consenti il caricamento di più files', @@ -2003,6 +2008,7 @@ Name: [username] 'splash_add_group' => 'Gruppo aggiunto', 'splash_add_group_member' => 'Membro aggiunto al gruppo', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Aggiunto nuovo ruolo', 'splash_add_task' => '', @@ -2022,12 +2028,14 @@ Name: [username] 'splash_document_locked' => 'Documento bloccato', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Documento sbloccato', +'splash_document_updated' => '', 'splash_edit_access' => 'Accesso modificato', 'splash_edit_attribute' => 'Attributo modificato', 'splash_edit_category' => '', 'splash_edit_event' => 'Evento modificato', 'splash_edit_group' => 'Gruppo modificato', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Ruolo memorizzato', 'splash_edit_task' => 'Attività modificata', 'splash_edit_transmittal' => '', @@ -2067,6 +2075,7 @@ Name: [username] 'splash_rm_group' => 'Gruppo eliminato', 'splash_rm_group_member' => 'Membro del gruppo eliminato', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Ruolo cancellato', 'splash_rm_transmittal' => 'Trasmissione cancellato', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index e9a4508c0..9b590a96c 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => '최소값은 최대 값 보다 큽니다', 'attrdef_multiple' => '여러 값 허용', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '정의된 복수의 속성', 'attrdef_must_be_multiple' => '속성은 하나 이상의 값을 가져야하지만, 여러 값을 설정하지 않습니다.', 'attrdef_name' => '이름', @@ -873,6 +874,7 @@ URL: [url]', 'individuals_in_groups' => '개별 그룹', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => '상속', 'inherits_access_copy_msg' => '상속 액세스 목록 복사', @@ -1033,6 +1035,7 @@ URL: [url]', 'move_document' => '문서 옮기기', 'move_folder' => '폴더 이동', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => '내 계정', 'my_documents' => '내 문서', 'my_transmittals' => '내 송부', @@ -1663,6 +1666,8 @@ URL : [url]', 'settings_enableLanguageSelector_desc' => '로그인 된 후 사용자 인터페이스 언어 선택기 보기 . 이것은 로그인 페이지에서 언어 선택에 영향을 주지 않습니다.', 'settings_enableLargeFileUpload' => '대용량 파일 업로드 사용', 'settings_enableLargeFileUpload_desc' => '설정하면, 브라우저가 설정 한 파일 크기 제한없이 jumploader라는 파일 업로드 자바 애플릿을 통해 사용할 수 있습니다. 또한 한 번에 여러 파일을 업로드 할 수 있습니다.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '메뉴의 작업 목록 허용', 'settings_enableMenuTasks_desc' => '사용자의 모든 작업이 포함되어있는 메뉴 항목을 활성/비활성 합니다. 이것은 검토, 승인등이 필요한 문서를 포함 합니다', 'settings_enableMultiUpload' => '', @@ -1974,6 +1979,7 @@ URL : [url]', 'splash_add_group' => '새 그룹이 추가', 'splash_add_group_member' => '새 그룹 구성원 추가', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1993,12 +1999,14 @@ URL : [url]', 'splash_document_locked' => '문서 잠김', 'splash_document_name_changed' => '', 'splash_document_unlocked' => '문서 잠금 해제', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => '속성 저장', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => '그룹 저장', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2038,6 +2046,7 @@ URL : [url]', 'splash_rm_group' => '그룹 제거', 'splash_rm_group_member' => '회원 그룹 제거', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '역할 지워짐', 'splash_rm_transmittal' => '', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index f3f9a138f..fc8a5eef1 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'ຈຳນວນມູນຄ່ານ້ອຍສຸດຫຼາຍກວ່າມູນຄ່າຫຼາຍສຸດ', 'attrdef_multiple' => 'ອະນຸຍາດຄ່າຫຼາຍຄ່າ', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'ນິຍາມແອັດທີບິວທີ່ມີຫຼາຍຄ່າຕ້ອງມີການຕັ້ງຄ່າ', 'attrdef_must_be_multiple' => 'ແອັດທີບິວຕ້ອງມີຫຼາຍກວ່າໜື່ງຄ່າ ແຕ່ບໍ່ໄດ້ມີການຕັ້ງຄ່າຫຼາຍຄ່າ', 'attrdef_name' => 'ຊື່', @@ -870,6 +871,7 @@ URL: [url]', 'individuals_in_groups' => 'ສະມາຊິກຂອງກຸ່ມ', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'ຮັບການຖ່າຍທອດ', 'inherits_access_copy_msg' => 'ຄັດລັອກລາຍການເຂົາເຖິງທີສືບທອດ', @@ -1030,6 +1032,7 @@ URL: [url]', 'move_document' => 'ຍ້າຍເອກະສານ', 'move_folder' => 'ຍ້າຍໂຟລເດີ', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'ບັນຊີຂອງຂ້ອຍ', 'my_documents' => 'ເອກະສານຂອງຂ້ອຍ', 'my_transmittals' => 'ການຂົນສົ່ງຂອງຂ້ອຍ', @@ -1689,6 +1692,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'ສະແດງຕົວເລືອກສຳລັບພາສາອິນເທິເຟກ ສຳລັບຜູ້ໄຊ້ຫຼັງຈາກທີ່ເຂົ້າລະບົບ', 'settings_enableLargeFileUpload' => 'ເປີດໄຊ້ງານການອັບໂຫລດໄຟລຂະໜາດໃຫ່ຍ', 'settings_enableLargeFileUpload_desc' => 'ການຕັ້ງຄ່າອັບໂຫລດໄຟລຈະມີໃຫ້ບໍລິການຜ່ານທາງດ້ານຂວາຂອງເອັບເຟັກທີ່ເອີ້ນວ່າ jumploader ໂດຍບໍ່ມີຂິດຈຳກັດຂອງຂະໜາດໄຟລທີກຳນົດໂດຍບາວເຊີ ນອກຈາກນີຍັງຊ່ວຍໃນການອັບໂຫລດໄຟລຫຼາຍໄຟລໃນຂັນຕອນດຽວການເປີດຄຸນລັກສະນະນີ້ຈະປິດຄຸກກີ້ສະເພາະ Http ເທົ່ານັ້ນ', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'ເປີດການໄຊ້ງານ', 'settings_enableMenuTasks_desc' => 'ເປີດ/ປິດ ລາຍການເມນູທີ່ມີວຽກທັງໝົດສຳລັບຜູ້ໄຊ້ເອກະສານນີ້ມີເອກະສານທີຈ້ອງໄດ້ຮັບການກວດສອບ', 'settings_enableMultiUpload' => 'ອະນຸຍາດໃຫ້ອັບໂຫລດໄຟລຫຼາຍໄຟລ', @@ -2000,6 +2005,7 @@ URL: [url]', 'splash_add_group' => 'ເພີ່ມກຸ່ມໄຫມ່ແລ້ວ', 'splash_add_group_member' => 'ເພີ່ມສະມາຊິກໄໝ່ແລ້ວ', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'ເພີ່ມບົດບາດໄຫມ່', 'splash_add_task' => '', @@ -2019,12 +2025,14 @@ URL: [url]', 'splash_document_locked' => 'ເອກະສານຖືກລັອກ', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'ເອກະສານປົດລັອກແລ້ວ', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'ບັນທຶກແອັດທີບິວແລ້ວ', 'splash_edit_category' => '', 'splash_edit_event' => 'ບັນທຶກກິດຈະກຳແລ້ວ', 'splash_edit_group' => 'ບັນທຶກກຸ່ມແລ້ວ', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'ບັນທຶກບົດບາດແລ້ວ', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2064,6 +2072,7 @@ URL: [url]', 'splash_rm_group' => 'ລົບກຸ່ມແລ້ວ', 'splash_rm_group_member' => 'ສະມະຊິກຂອງກຸ່ມໄດ້ຖືກລົບອອກຈາກກູຸ່ມ', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'ລົບບົດບາດແລ້ວ', 'splash_rm_transmittal' => 'ຍົກເລີກການລົບແລ້ວ', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index c20614a7c..ff0b7a35a 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Verdien av minste tall er større en verdien av maksimum tall', 'attrdef_multiple' => 'Tillat flere verdier', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Egenskaps definisjon med flere verdier trenger verdisettes.', 'attrdef_must_be_multiple' => 'Egenskapet må ha mer enn én verdi, men er ikke angitt flere verdier', 'attrdef_name' => 'Navn', @@ -891,6 +892,7 @@ URL: [url]', 'individuals_in_groups' => 'Medlemmer i en gruppe', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Bekreftelse av mottak for denne dokumentversjonen er ikke mulig fordi versjonen ikke er utgitt.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'arvet', 'inherits_access_copy_msg' => 'Kopier arvet adgangsliste', @@ -1051,6 +1053,7 @@ URL: [url]', 'move_document' => 'Flytte dokument', 'move_folder' => 'Flytte mappe', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Min side', 'my_documents' => 'Mine dokumenter', 'my_transmittals' => 'Mine sendinger', @@ -1702,6 +1705,8 @@ Bruker: [username] 'settings_enableLanguageSelector_desc' => 'Vis velger for språk for bruker etter at du er logget inn.', 'settings_enableLargeFileUpload' => 'Aktiver for store filopplastinger', 'settings_enableLargeFileUpload_desc' => 'Hvis det er satt, er filopplasting også tilgjengelig via en java-applet som heter jumploader uten en filstørrelsesgrense som er angitt av nettleseren. Det gjør det også mulig å laste opp flere filer på ett trinn. Hvis du slår på dette, slås bare av cookies.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Aktiver oppgaveliste i menyen', 'settings_enableMenuTasks_desc' => 'Aktiver/deaktiver menypunktet som inneholder alle oppgaver for brukeren. Denne inneholder dokumenter som må gjennomgås, godkjennes osv.', 'settings_enableMultiUpload' => 'Tillat opplasting av flere filer', @@ -2013,6 +2018,7 @@ Bruker: [username] 'splash_add_group' => 'Ny gruppe lagt til', 'splash_add_group_member' => 'Nytt gruppemedlem lagt til', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Lagt til ny rolle', 'splash_add_task' => '', @@ -2032,12 +2038,14 @@ Bruker: [username] 'splash_document_locked' => 'Dokumentet er låst', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Dokumentet åpnet', +'splash_document_updated' => '', 'splash_edit_access' => 'Adgangsretten ble endret', 'splash_edit_attribute' => 'Egenskapen ble lagret', 'splash_edit_category' => '', 'splash_edit_event' => 'Hendelsen lagret', 'splash_edit_group' => 'Gruppen lagret', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Rollen er lagret', 'splash_edit_task' => 'Oppgaven lagret', 'splash_edit_transmittal' => 'Overføring lagret', @@ -2077,6 +2085,7 @@ Bruker: [username] 'splash_rm_group' => 'Gruppen fjernet', 'splash_rm_group_member' => 'Gruppemedlem fjernet', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Rolle slettet', 'splash_rm_transmittal' => 'Overføring slettet', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 8aba3ab3c..68382058e 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -160,6 +160,7 @@ URL: [url]', 'attrdef_minvalues_help' => 'Minimum aantal waardes. Zet het op 1.', 'attrdef_min_greater_max' => 'Het minimum aantal is groter dan het maximum aantal', 'attrdef_multiple' => 'Meerdere waarden toegestaan', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Meerdere waarden nodig', 'attrdef_must_be_multiple' => 'Het attribuut moet meer dan 1 waarde hebben maar is niet ingesteld om meerdere waardes te bevatten', 'attrdef_name' => 'Naam', @@ -884,6 +885,7 @@ URL: [url]', 'individuals_in_groups' => 'Individuen in groepen', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Ontvangstbevestiging van deze versie van het document is niet mogelijk omdat de versie nog niet is vrijgegeven.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'overgeërfd', 'inherits_access_copy_msg' => 'Lijst van overgeërfde toegang', @@ -1044,6 +1046,7 @@ URL: [url]', 'move_document' => 'Verplaats document', 'move_folder' => 'Map verplaatsen', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Mijn Account', 'my_documents' => 'Mijn Documenten', 'my_transmittals' => 'Mijn zendingen', @@ -1701,6 +1704,8 @@ Name: [username] 'settings_enableLanguageSelector_desc' => 'Laat selector zien voor taalinterface, nadat gebruikers inloggen.', 'settings_enableLargeFileUpload' => 'Grote bestanden uploaden', 'settings_enableLargeFileUpload_desc' => 'Indien ingeschakeld, is bestandsupload ook beschikbaar via een java applet jumploader genaamd zonder een bestandsgrootte limiet door de browser. Het staat ook toe om meerdere bestanden in een keer te versturen.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Menu-taken aanzetten', 'settings_enableMenuTasks_desc' => 'Menu-taken aanzetten', 'settings_enableMultiUpload' => 'Multi-upload', @@ -2012,6 +2017,7 @@ Name: [username] 'splash_add_group' => 'Nieuwe groep toegevoegd', 'splash_add_group_member' => 'Nieuwe groepslid toegevoegd', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Nieuwe rol toegevoegd', 'splash_add_task' => 'Taak toegevoegd', @@ -2031,12 +2037,14 @@ Name: [username] 'splash_document_locked' => 'Document vergrendeld', 'splash_document_name_changed' => 'Documentnaam veranderd', 'splash_document_unlocked' => 'Document ontgrendeld', +'splash_document_updated' => '', 'splash_edit_access' => 'Wijzig toegangsrechten', 'splash_edit_attribute' => 'Attribuut opgeslagen', 'splash_edit_category' => '', 'splash_edit_event' => 'Gebeurtenis opgeslagen', 'splash_edit_group' => 'Groep opgeslagen', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Rol opgeslagen', 'splash_edit_task' => 'Taak opgeslagen', 'splash_edit_transmittal' => 'Zending opgeslagen', @@ -2076,6 +2084,7 @@ Name: [username] 'splash_rm_group' => 'Groep verwijderd', 'splash_rm_group_member' => 'Lid van de groep verwijderd', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Rol verwijderd', 'splash_rm_transmittal' => 'Verzending verwijderd', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index 8bb4a183e..aab910e02 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -155,6 +155,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Minimalna ilość wartości jest większa od ich maksymalnej ilości', 'attrdef_multiple' => 'Pozwól na wiele wartości', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Definiowanie atrybutów z wieloma wartościami wymaga podania tych wartości', 'attrdef_must_be_multiple' => 'Atrybut musi mieć więcej niż jedną wartość, ale nie może zawierać wielu wartości', 'attrdef_name' => 'Nazwa', @@ -860,6 +861,7 @@ URL: [url]', 'individuals_in_groups' => 'Członkowie grupy', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Potwierdzenie odbioru dla tej wersji dokumentu nie jest możliwe, ponieważ wersja nie została wydana.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'dziedziczony', 'inherits_access_copy_msg' => 'Kopiuj odziedziczoną listę dostępu', @@ -1020,6 +1022,7 @@ URL: [url]', 'move_document' => 'Przenieś dokument', 'move_folder' => 'Przenieś folder', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Moje konto', 'my_documents' => 'Moje dokumenty', 'my_transmittals' => 'Moi recenzenci', @@ -1632,6 +1635,8 @@ Name: [username] 'settings_enableLanguageSelector_desc' => 'Pokaż selektor języka dla interfejsu użytkownika po zalogowaniu To nie ma wpływu na wybór języka na stronie logowania.', 'settings_enableLargeFileUpload' => 'Zezwól na wczytywanie dużych plików', 'settings_enableLargeFileUpload_desc' => 'Jeśli zaznaczone, wczytywanie plików będzie możliwe również przez aplet javy bez limitu rozmiaru plików. Aplet pozwala również na wczytywanie wielu plików jednocześnie.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Włącz listę zadań w menu', 'settings_enableMenuTasks_desc' => 'Włącza/Wyłącza pozycję w menu w której znajdują się wszystkie zadania dla użytkownika. Zawiera dokumenty, które potrzebują być ocenione, zatwierdzone, itd.', 'settings_enableMultiUpload' => 'Zezwól na wysyłanie wielu plików', @@ -1943,6 +1948,7 @@ Name: [username] 'splash_add_group' => 'Dodano nową grupę', 'splash_add_group_member' => 'Dodano nowego członka grupy', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Dodano nową rolę', 'splash_add_task' => '', @@ -1962,12 +1968,14 @@ Name: [username] 'splash_document_locked' => 'Dokument zablokowany', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Odblokowano dokument', +'splash_document_updated' => '', 'splash_edit_access' => 'Prawo dostępu zostało zmienione', 'splash_edit_attribute' => 'Zapisano atrybuty', 'splash_edit_category' => '', 'splash_edit_event' => 'Wydarzenie zapisane', 'splash_edit_group' => 'Grupa zapisana', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Rola zapisana', 'splash_edit_task' => 'Zadanie zapisane', 'splash_edit_transmittal' => 'Przesyłanie zapisane', @@ -2007,6 +2015,7 @@ Name: [username] 'splash_rm_group' => 'Grupę usunięto', 'splash_rm_group_member' => 'Usunięto członka grupy', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Rola usunięta', 'splash_rm_transmittal' => 'Przekazywanie usunięte', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index e20fbe32a..9252b0b65 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Número mínimo de valores é maior do que o número máximo de valores', 'attrdef_multiple' => 'Permitir múltiplos valores', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'A definição de atributo com vários valores precisa de um conjunto de valores.', 'attrdef_must_be_multiple' => 'Atributo deve ter mais de um valor, mas não está definido valor múltiplo', 'attrdef_name' => 'Nome', @@ -891,6 +892,7 @@ URL: [url]', 'individuals_in_groups' => 'Members of a group', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Confirmação de recebimento para esta versão do documento não é possível, porque a versão não é liberada.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'herdado', 'inherits_access_copy_msg' => 'Copiar lista de acesso herdada', @@ -1051,6 +1053,7 @@ URL: [url]', 'move_document' => 'Mover documento', 'move_folder' => 'Mover Pasta', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Minha Conta', 'my_documents' => 'Meus Documentos', 'my_transmittals' => 'Minhas Transmissões', @@ -1708,6 +1711,8 @@ Nome: [username] 'settings_enableLanguageSelector_desc' => 'Mostrar seletor para idioma de interface de usuário após login.', 'settings_enableLargeFileUpload' => 'Ativar envio de grandes arquivos', 'settings_enableLargeFileUpload_desc' => 'Se selecionado, o upload de arquivo também estará disponível através de um applet java chamado jumploader sem limite de tamanho de arquivo definido pelo navegador. Ele também permite fazer o upload de vários arquivos de uma só vez.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Ativar lista de tarefas no menu', 'settings_enableMenuTasks_desc' => 'Ativar / desativar o item de menu que contém todas as tarefas do usuário. Contém documentos que precisam ser revisados, aprovados etc.', 'settings_enableMultiUpload' => 'Permitir envio de vários arquivos', @@ -2019,6 +2024,7 @@ Nome: [username] 'splash_add_group' => 'Novo grupo adicionado', 'splash_add_group_member' => 'Novo membro do grupo adicionado', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Novo papel adicionado', 'splash_add_task' => '', @@ -2038,12 +2044,14 @@ Nome: [username] 'splash_document_locked' => 'Documento bloqueado', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Documento desbloqueado', +'splash_document_updated' => '', 'splash_edit_access' => 'Direito de acesso alterado', 'splash_edit_attribute' => 'Atributo salvo', 'splash_edit_category' => '', 'splash_edit_event' => 'Evento salvo', 'splash_edit_group' => 'Grupo salvo', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Papel salvo', 'splash_edit_task' => 'Tarefa salva', 'splash_edit_transmittal' => '', @@ -2083,6 +2091,7 @@ Nome: [username] 'splash_rm_group' => 'Grupo removido', 'splash_rm_group_member' => 'Membro do grupo removido', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Papel removido', 'splash_rm_transmittal' => 'Transmissão excluída', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 94fe941b4..079447ea6 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Numărul minim de valori este mai mare decât numărul maxim de valori', 'attrdef_multiple' => 'Permiteți valori multiple', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => 'Atributul trebuie să aibă mai mult de o valoare, dar nu este setat valoare multiplu', 'attrdef_name' => 'Nume', @@ -872,6 +873,7 @@ URL: [url]', 'individuals_in_groups' => '', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'moștenit', 'inherits_access_copy_msg' => 'Copie lista de acces moștenită', @@ -1032,6 +1034,7 @@ URL: [url]', 'move_document' => 'Mută document', 'move_folder' => 'Mută Folder', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Contul Meu', 'my_documents' => 'Documentele Mele', 'my_transmittals' => 'Trimiterile mele', @@ -1670,6 +1673,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Arată selectorul de limbă pentru interfața cu utilizatorul după ce a fost autentificat.', 'settings_enableLargeFileUpload' => 'Activare încărcare fișier mare', 'settings_enableLargeFileUpload_desc' => 'Dacă este setat, incărcarea este de asemenea disponibilă prin intermediul unui applet Java numit jumploader fără limită de dimensiune a fișierului stabilită de browser. De asemenea, permite încărcarea mai multor fișiere într-un singur pas. Activand aceasta optiune va dezactiva optiunea http only cookies.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', 'settings_enableMultiUpload' => '', @@ -1981,6 +1986,7 @@ URL: [url]', 'splash_add_group' => 'Grup nou adăugat', 'splash_add_group_member' => 'Membru grup nou adăugat', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -2000,12 +2006,14 @@ URL: [url]', 'splash_document_locked' => 'Document blocat', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Document deblocat', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Atribut salvat', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Grup salvat', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2045,6 +2053,7 @@ URL: [url]', 'splash_rm_group' => 'Grup eliminat', 'splash_rm_group_member' => 'Membru grup eliminat', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index c435be095..43cffab89 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Минимальное значений превышает максимальное значение', 'attrdef_multiple' => 'Несколько значений', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Атрибут с несколькими значениями нуждается в установке значений', 'attrdef_must_be_multiple' => 'Атрибут должен иметь несколько значений, но несколько значений не установлены', 'attrdef_name' => 'Название', @@ -872,6 +873,7 @@ URL: [url]', 'individuals_in_groups' => 'Пользователи группы', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'унаследованный', 'inherits_access_copy_msg' => 'Скопировать наследованный список', @@ -1032,6 +1034,7 @@ URL: [url]', 'move_document' => 'Переместить документ', 'move_folder' => 'Переместить каталог', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Моя учётка', 'my_documents' => 'Мои документы', 'my_transmittals' => 'Мои пересылки', @@ -1677,6 +1680,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Показывать меню выбора языка пользовательского интерфейса после входа в систему. Это не влияет на выбор языка на странице входа.', 'settings_enableLargeFileUpload' => 'Включить Java-загрузчик файлов', 'settings_enableLargeFileUpload_desc' => 'Если включено, загрузка файлов доступна так же через Java-апплет, называемый jumploader, без ограничения размера файла. Это также позволит загружать несколько файлов за раз.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Включить список задач в меню', 'settings_enableMenuTasks_desc' => 'Включить/отключить пункт меню, который содержит все задачи пользователя. Там содержатся документы, которые нуждаются в рецензии, утверждении и т.д.', 'settings_enableMultiUpload' => 'Разрешить загрузку нескольких файлов', @@ -1988,6 +1993,7 @@ URL: [url]', 'splash_add_group' => 'Добавлена новая группа', 'splash_add_group_member' => 'Добавлен новый член группы', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -2007,12 +2013,14 @@ URL: [url]', 'splash_document_locked' => 'Документ заблокирован', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Документ разблокирован', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Атрибут сохранён', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Группа сохранена', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2052,6 +2060,7 @@ URL: [url]', 'splash_rm_group' => 'Группа удалена', 'splash_rm_group_member' => 'Удалён член группы', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 16ca8b707..b159e80e7 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Minimum number of values is larger than maximum number of values', 'attrdef_multiple' => 'Allow multiple values', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Attribute definition with multiple values needs value set.', 'attrdef_must_be_multiple' => 'Atribút musí mať viac ako jednu hodnotu, ale nie je nastavená viacnásobná hodnota', 'attrdef_name' => 'Meno', @@ -891,6 +892,7 @@ URL: [url]', 'individuals_in_groups' => 'Členovia skupiny', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => 'Acknowledgement of reception for this document version is not possible, because the version is not released.', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'zdedené', 'inherits_access_copy_msg' => 'Skopírovať zdedený zoznam riadenia prístupu', @@ -1051,6 +1053,7 @@ URL: [url]', 'move_document' => 'Presunúť dokument', 'move_folder' => 'Presunúť zložku', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Môj účet', 'my_documents' => 'Moje dokumenty', 'my_transmittals' => 'My Transmittals', @@ -1710,6 +1713,8 @@ Meno: [username] 'settings_enableLanguageSelector_desc' => 'Zobraziť výber pre jazyk používateľského rozhrania potom, čo bol prihlásený.', 'settings_enableLargeFileUpload' => 'Povoliť nahrávať veľké súbory', 'settings_enableLargeFileUpload_desc' => 'If set, file upload is also available through a java applet called jumploader without a file size limit set by the browser. It also allows to upload several files in one step. Turning this on will turn off http only cookies.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Enable task list in menu', 'settings_enableMenuTasks_desc' => 'Enable/Disable the menu item which contains all tasks for the user. This contains documents, that need to be reviewed, approved, etc.', 'settings_enableMultiUpload' => 'Povoliť nahrať viacero súborov', @@ -2021,6 +2026,7 @@ Meno: [username] 'splash_add_group' => 'Bola pridaná nová skupina', 'splash_add_group_member' => 'New group member added', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Nová rola bola pridaná', 'splash_add_task' => '', @@ -2040,12 +2046,14 @@ Meno: [username] 'splash_document_locked' => 'Dokument uzamknutý', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Dokument odomknutý', +'splash_document_updated' => '', 'splash_edit_access' => 'Access right changed', 'splash_edit_attribute' => 'Atribút bol uložený', 'splash_edit_category' => '', 'splash_edit_event' => 'Udalosť bola uložená', 'splash_edit_group' => 'Skupina bola uložená', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Rola bola uložená', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2085,6 +2093,7 @@ Meno: [username] 'splash_rm_group' => 'Skupina bola odstránená', 'splash_rm_group_member' => 'Člen skupiny odstránený', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Rola bola odstránená', 'splash_rm_transmittal' => 'Transmittal deleted', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 15707f199..181961ec6 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -168,6 +168,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Minimum antal värden är större än maximum antal värden', 'attrdef_multiple' => 'Tillåt flera värden', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Attribut med flera värden behöver definieras.', 'attrdef_must_be_multiple' => 'Attribut måste ha mer än ett värde', 'attrdef_name' => 'Namn', @@ -878,6 +879,7 @@ URL: [url]', 'individuals_in_groups' => 'Medlemmar i en grupp', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'ärvd', 'inherits_access_copy_msg' => 'Kopiera lista för behörighetsarv', @@ -1038,6 +1040,7 @@ URL: [url]', 'move_document' => 'Flytta dokument', 'move_folder' => 'Flytta katalog', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Min Sida', 'my_documents' => 'Mina dokument', 'my_transmittals' => 'Mina överföringar', @@ -1683,6 +1686,8 @@ Kommentar: [comment]', 'settings_enableLanguageSelector_desc' => 'Visa språkurval i användargränssnittet efter inloggning.', 'settings_enableLargeFileUpload' => 'Aktivera uppladdning av stora filer', 'settings_enableLargeFileUpload_desc' => 'Om aktiverad, kan filer laddas upp via javaapplet med namnet jumploader, utan begränsningar i filstorlek. Flera filer kan även laddas upp samtidigt i ett steg.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Aktivera uppgiftslista i menyn', 'settings_enableMenuTasks_desc' => 'Aktiverar ett menyobjekt som visar användarens uppgifter, såsom dokument som behöver granskas eller godkännas.', 'settings_enableMultiUpload' => 'Tillåt uppladdning av multipla filer', @@ -1994,6 +1999,7 @@ Kommentar: [comment]', 'splash_add_group' => 'Ny grupp tillagd', 'splash_add_group_member' => 'Ny gruppmedlem tillagt', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => 'Lägg till ny roll', 'splash_add_task' => '', @@ -2013,12 +2019,14 @@ Kommentar: [comment]', 'splash_document_locked' => 'Dokument låst', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Dokument upplåst', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Attribut sparat', 'splash_edit_category' => '', 'splash_edit_event' => 'Händelse sparad', 'splash_edit_group' => 'Grupp sparad', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => 'Roll sparad', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2058,6 +2066,7 @@ Kommentar: [comment]', 'splash_rm_group' => 'Grupp har tagits bort', 'splash_rm_group_member' => 'Gruppmedlem har tagits bort', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => 'Rollen raderad', 'splash_rm_transmittal' => 'Meddelande raderat', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index cc05cb030..0e8464cf1 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -162,6 +162,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Minimum değer maksimum değerden büyük', 'attrdef_multiple' => 'Birden fazla değere izin ver', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '', 'attrdef_must_be_multiple' => 'Nitelik birden fazla değere sahip olmalı, fakat birden fazla değer ayarlanmamış', 'attrdef_name' => 'İsim', @@ -864,6 +865,7 @@ URL: [url]', 'individuals_in_groups' => 'Ekip Üyeleri', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'devralındı', 'inherits_access_copy_msg' => 'Devralınan erişim listesini kopyala', @@ -1024,6 +1026,7 @@ URL: [url]', 'move_document' => 'Dokümanı taşı', 'move_folder' => 'Klasörü Taşı', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Hesabım', 'my_documents' => 'Dokümanlarım', 'my_transmittals' => 'Çevirilerim', @@ -1647,6 +1650,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Kullanıcının giriş yaparken dil seçimi yapabilmesi için bu seçeneği etkinleştirin.', 'settings_enableLargeFileUpload' => 'Büyük dosya yüklemeyi etkinleştir', 'settings_enableLargeFileUpload_desc' => 'Etkinleştirilirse, büyük dosyalar dosya limitine bakılmaksızın jumploader isimli java applet aracılığıyla yüklenebilir. Bu ayrıca bir seferde birden çok dosya yüklemeyi de sağlar. Bu açıldığında sadece http çerezleri kapanmış olur.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '', 'settings_enableMenuTasks_desc' => '', 'settings_enableMultiUpload' => '', @@ -1958,6 +1963,7 @@ URL: [url]', 'splash_add_group' => 'Yeni grup eklendi', 'splash_add_group_member' => 'Yeni grup üyesi eklendi', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1977,12 +1983,14 @@ URL: [url]', 'splash_document_locked' => 'Doküman kilitlendi', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Doküman kiliti açıldı', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Nitelik kaydedildi', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Grup kaydedildi', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2022,6 +2030,7 @@ URL: [url]', 'splash_rm_group' => 'Grup silindi', 'splash_rm_group_member' => 'Grup üyesi silindi', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index a6257c3a9..6c3aec4de 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => 'Мінімальна кількість значень більша за максимальну кількість значень', 'attrdef_multiple' => 'Декілька значень', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => 'Атрибут з кількома значеннями потребує встановлення значень', 'attrdef_must_be_multiple' => 'Атрибут повинен мати кілька значень, але кілька значень не встановлено', 'attrdef_name' => 'Назва', @@ -871,6 +872,7 @@ URL: [url]', 'individuals_in_groups' => 'Користувачі групи', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => 'успадкований', 'inherits_access_copy_msg' => 'Скопіювати успадкований список', @@ -1031,6 +1033,7 @@ URL: [url]', 'move_document' => 'Перемістити документ', 'move_folder' => 'Перемістити каталог', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => 'Мій обліковий запис', 'my_documents' => 'Мої документи', 'my_transmittals' => 'Мої перенесення', @@ -1669,6 +1672,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => 'Відображати меню вибору мови інтерфейсу користувача після входу в систему. Це не впливає на вибір мови на сторінці авторизації.', 'settings_enableLargeFileUpload' => 'Увімкнути Java-завантажувач файлів', 'settings_enableLargeFileUpload_desc' => 'Якщо увімкнено, завантаження файлів доступне також через Java-аплет jumploader без обмеження розміру файлів. Це також дозволить завантажувати кілька файлів за раз.', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => 'Включити список завдань в меню', 'settings_enableMenuTasks_desc' => 'Включити/відключити пункт меню, який містить всі завдання користувача. Там містяться документи, які потребують рецензії, затвердження і т.ін.', 'settings_enableMultiUpload' => '', @@ -1980,6 +1985,7 @@ URL: [url]', 'splash_add_group' => 'Додана нова група', 'splash_add_group_member' => 'Додано нового члена групи', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '', 'splash_add_task' => '', @@ -1999,12 +2005,14 @@ URL: [url]', 'splash_document_locked' => 'Документ заблоковано', 'splash_document_name_changed' => '', 'splash_document_unlocked' => 'Документ розблоковано', +'splash_document_updated' => '', 'splash_edit_access' => '', 'splash_edit_attribute' => 'Атрибут збережено', 'splash_edit_category' => '', 'splash_edit_event' => '', 'splash_edit_group' => 'Групу збережено', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '', 'splash_edit_task' => '', 'splash_edit_transmittal' => '', @@ -2044,6 +2052,7 @@ URL: [url]', 'splash_rm_group' => 'Групу видалено', 'splash_rm_group_member' => 'Члена групи видалено', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '', 'splash_rm_transmittal' => '', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index e80047010..82c5044a9 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -167,6 +167,7 @@ URL: [url]', 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => '最小值数目大于最大值数目', 'attrdef_multiple' => '允许多个值', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '有多个值的属性定义需要设置值', 'attrdef_must_be_multiple' => '必须为多个值', 'attrdef_name' => '名称', @@ -874,6 +875,7 @@ URL: [url]', 'individuals_in_groups' => '组成员', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '由于该版本尚未发布因此无法确认收到此文件版本', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => '继承', 'inherits_access_copy_msg' => '复制继承访问权限列表', @@ -1034,6 +1036,7 @@ URL: [url]', 'move_document' => '移动文档', 'move_folder' => '移动文件夹', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => '我的账户', 'my_documents' => '我的文档', 'my_transmittals' => '我的传送', @@ -1657,6 +1660,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => '登录后显示用户界面语言选择', 'settings_enableLargeFileUpload' => '开启大文件上传', 'settings_enableLargeFileUpload_desc' => '如果设置了文件上传,也可以通过一个名为jumploader的浏览器java小程序来实现文件上传。它还允许一次上传多个文件。打开此选项将关闭网页cookie。', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '在菜单中启用任务列表', 'settings_enableMenuTasks_desc' => '启用/禁用包含用户所有任务的菜单项。其中包含需要审核、批准的文件等。', 'settings_enableMultiUpload' => '允许一次性上传多个文件', @@ -1968,6 +1973,7 @@ URL: [url]', 'splash_add_group' => '组已添加', 'splash_add_group_member' => '组成员已添加', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '添加新角色', 'splash_add_task' => '', @@ -1987,12 +1993,14 @@ URL: [url]', 'splash_document_locked' => '文档已被锁定', 'splash_document_name_changed' => '', 'splash_document_unlocked' => '已解锁的文档', +'splash_document_updated' => '', 'splash_edit_access' => '访问权限已改变', 'splash_edit_attribute' => '属性已保存', 'splash_edit_category' => '', 'splash_edit_event' => '事件已保存', 'splash_edit_group' => '组已保存', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '角色已保存', 'splash_edit_task' => '任务保存', 'splash_edit_transmittal' => '', @@ -2032,6 +2040,7 @@ URL: [url]', 'splash_rm_group' => '组信息已删除', 'splash_rm_group_member' => '组成员已移除', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '角色已删除', 'splash_rm_transmittal' => '传送删除', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 879e31a0a..ee8426ae5 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -167,6 +167,7 @@ $text = array( 'attrdef_minvalues_help' => '', 'attrdef_min_greater_max' => '最小數值大於最大數值', 'attrdef_multiple' => '允許多個值', +'attrdef_multiple_but_doc_or_folder' => '', 'attrdef_multiple_needs_valueset' => '具有多個值的屬性定義需要設置值。', 'attrdef_must_be_multiple' => '屬性必須具有多個值,但不能設置多個值', 'attrdef_name' => '名稱', @@ -891,6 +892,7 @@ URL: [url]', 'individuals_in_groups' => '小組成員', 'ind_review_removed' => '', 'info_recipients_tab_not_released' => '由於未發布該文檔版本,因此無法確認接收。', +'info_rm_user_from_processes_none' => '', 'info_rm_user_from_processes_user' => '', 'inherited' => '繼承', 'inherits_access_copy_msg' => '複製繼承存取權限列表', @@ -1051,6 +1053,7 @@ URL: [url]', 'move_document' => '移動文件', 'move_folder' => '移動資料夾', 'move_into_rootfolder' => '', +'must_drop_one_file' => '', 'my_account' => '我的帳戶', 'my_documents' => '我的文件', 'my_transmittals' => '我的傳送', @@ -1708,6 +1711,8 @@ URL: [url]', 'settings_enableLanguageSelector_desc' => '登錄後顯示用戶界面語言的選擇器。', 'settings_enableLargeFileUpload' => '啟用大文件上傳', 'settings_enableLargeFileUpload_desc' => '如果設置了該選項,則還可以通過一個名為Jumploader的Java小程序來上傳文件,而瀏覽器沒有設置文件大小限制。它還允許一步上傳幾個文件。啟用此功能將關閉僅HTTP cookie。', +'settings_enableLoginByEmail' => '', +'settings_enableLoginByEmail_desc' => '', 'settings_enableMenuTasks' => '在菜單中啟用任務列表', 'settings_enableMenuTasks_desc' => '啟用/禁用包含用戶所有任務的菜單項。其中包含需要審查,批准等的文件。', 'settings_enableMultiUpload' => '允許上傳多個文件', @@ -2019,6 +2024,7 @@ URL: [url]', 'splash_add_group' => '新增群組', 'splash_add_group_member' => '新群組會員新增', 'splash_add_keyword' => '', +'splash_add_keyword_category' => '', 'splash_add_notify' => '', 'splash_add_role' => '新增一個角色', 'splash_add_task' => '', @@ -2038,12 +2044,14 @@ URL: [url]', 'splash_document_locked' => '文件已被鎖定', 'splash_document_name_changed' => '', 'splash_document_unlocked' => '已解鎖的文件', +'splash_document_updated' => '', 'splash_edit_access' => '訪問權限已更改', 'splash_edit_attribute' => '屬性已保存', 'splash_edit_category' => '', 'splash_edit_event' => '活動已保存', 'splash_edit_group' => '群組已保存', 'splash_edit_keyword' => '', +'splash_edit_keyword_category' => '', 'splash_edit_role' => '角色已保存', 'splash_edit_task' => '任務已儲存', 'splash_edit_transmittal' => '傳送已儲存', @@ -2083,6 +2091,7 @@ URL: [url]', 'splash_rm_group' => '組已刪除', 'splash_rm_group_member' => '組成員已刪除', 'splash_rm_keyword' => '', +'splash_rm_keyword_category' => '', 'splash_rm_notify' => '', 'splash_rm_role' => '角色已刪除', 'splash_rm_transmittal' => '傳送已刪除', From 6b91d3ce4002e51ad0fcc39055def7675a5374bf Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 27 Mar 2024 19:49:52 +0100 Subject: [PATCH 073/100] log errors and set $success to false --- inc/inc.ClassConversionServiceImageToImage.php | 14 ++++++++++++++ inc/inc.ClassConversionServicePdfToImage.php | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/inc/inc.ClassConversionServiceImageToImage.php b/inc/inc.ClassConversionServiceImageToImage.php index ee7ccb9d4..ca2120c15 100644 --- a/inc/inc.ClassConversionServiceImageToImage.php +++ b/inc/inc.ClassConversionServiceImageToImage.php @@ -67,8 +67,18 @@ class SeedDMS_ConversionServiceImageToImage extends SeedDMS_ConversionServiceBas } else { return $imagick->getImageBlob(); } + } else { + if($this->logger) { + $this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with image service failed: could not read input file.', PEAR_LOG_ERR); + } + $this->success = false; + return false; } } catch (ImagickException $e) { + if($this->logger) { + $this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with image service failed: '.$e->getMessage(), PEAR_LOG_ERR); + } + $this->success = false; return false; } } elseif(extension_loaded('gd')) { @@ -102,6 +112,10 @@ class SeedDMS_ConversionServiceImageToImage extends SeedDMS_ConversionServiceBas return $image; } } else { + if($this->logger) { + $this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with image service failed: could not read input file.', PEAR_LOG_ERR); + } + $this->success = false; return false; } } diff --git a/inc/inc.ClassConversionServicePdfToImage.php b/inc/inc.ClassConversionServicePdfToImage.php index 85ef08a0e..c303eeca0 100644 --- a/inc/inc.ClassConversionServicePdfToImage.php +++ b/inc/inc.ClassConversionServicePdfToImage.php @@ -83,6 +83,10 @@ class SeedDMS_ConversionServicePdfToImage extends SeedDMS_ConversionServiceBase } else { return $imagick->getImageBlob(); } + } else { + if($this->logger) { + $this->logger->log('Conversion from '.$this->from.' to '.$this->to.' with pdf service failed: could not read input file.', PEAR_LOG_ERR); + } } } catch (ImagickException $e) { if($this->logger) { From ac1442d7cac16e421c282e76388ab16f797e85bd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 11:03:59 +0100 Subject: [PATCH 074/100] set proper names/text for cmd and error msg --- inc/inc.ClassFulltextService.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/inc.ClassFulltextService.php b/inc/inc.ClassFulltextService.php index 09a42bf18..286444a45 100644 --- a/inc/inc.ClassFulltextService.php +++ b/inc/inc.ClassFulltextService.php @@ -167,11 +167,11 @@ class SeedDMS_FulltextService { if($previewer->hasPreview($version)) { $filename = $previewer->getFileName($version).'.txt'; $result['content'] = file_get_contents($filename); - $result['cmd'] = 'previewer '.$previewer->getFileSize($version); + $result['cmd'] = 'text converter '.$previewer->getFileSize($version); } } else { - $result['cmd'] = 'previewer'; - $result['errormsg'] = 'Creating preview failed'; + $result['cmd'] = 'text converter'; + $result['errormsg'] = 'Creating plain text failed'; } } return $result; From 9fad6c6e619a8620471c826fa84a2e7de5736783 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 14:08:27 +0100 Subject: [PATCH 075/100] add dryrun paramter --- inc/inc.Tasks.php | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/inc/inc.Tasks.php b/inc/inc.Tasks.php index 47adc18cd..f6bf18b29 100644 --- a/inc/inc.Tasks.php +++ b/inc/inc.Tasks.php @@ -48,14 +48,17 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getExpires()), $doc->getId(), ''.htmlspecialchars($doc->getName()).''); } $bodyhtml .= "".PHP_EOL; - $params = array(); - $params['count'] = count($docs); - $params['__body__'] = $body; - $params['__body_html__'] = $bodyhtml; - $params['sitename'] = $settings->_siteName; - $email->toIndividual('', $u, 'expired_docs_mail_subject', '', $params); - - $logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\'', PEAR_LOG_INFO); + if(empty($taskparams['dryrun'])) { + $params = array(); + $params['count'] = count($docs); + $params['__body__'] = $body; + $params['__body_html__'] = $bodyhtml; + $params['sitename'] = $settings->_siteName; + $email->toIndividual('', $u, 'expired_docs_mail_subject', '', $params); + $logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\'', PEAR_LOG_INFO); + } else { + $logger->log('Task \'expired_docs\': Dry run, not sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\'', PEAR_LOG_INFO); + } } } } @@ -71,14 +74,18 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getExpires()), $doc->getId(), $doc->getName()); } $bodyhtml .= "".PHP_EOL; - $params = array(); - $params['count'] = count($docs); - $params['__body__'] = $body; - $params['__body_html__'] = $bodyhtml; - $params['sitename'] = $settings->_siteName; - $email->toIndividual('', $taskparams['email'], 'expired_docs_mail_subject', '', $params); + if(empty($taskparams['dryrun'])) { + $params = array(); + $params['count'] = count($docs); + $params['__body__'] = $body; + $params['__body_html__'] = $bodyhtml; + $params['sitename'] = $settings->_siteName; + $email->toIndividual('', $taskparams['email'], 'expired_docs_mail_subject', '', $params); - $logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\'', PEAR_LOG_INFO); + $logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\'', PEAR_LOG_INFO); + } else { + $logger->log('Task \'expired_docs\': Dry run, not sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\'', PEAR_LOG_INFO); + } } } else { $logger->log('Task \'expired_docs\': neither peruser nor email is set', PEAR_LOG_WARNING); @@ -106,7 +113,12 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ 'name'=>'peruser', 'type'=>'boolean', 'description'=> 'Send mail to each user. If set, a list of all expired documents will be send to the owner of the documents.', - ) + ), + array( + 'name'=>'dryrun', + 'type'=>'boolean', + 'description'=> 'Do not send emails, just log.', + ), ); } } /* }}} */ From 84ff9e48feb257654955c36736b0717b06951242 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 18:22:08 +0100 Subject: [PATCH 076/100] start and end date can be specified --- out/out.ExpiredDocuments.php | 17 +++++++ views/bootstrap/class.ExpiredDocuments.php | 56 +++++++++++++++++++--- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/out/out.ExpiredDocuments.php b/out/out.ExpiredDocuments.php index 70355aff4..da268637b 100644 --- a/out/out.ExpiredDocuments.php +++ b/out/out.ExpiredDocuments.php @@ -46,11 +46,28 @@ if (isset($_GET["orderdir"]) && strlen($_GET["orderdir"])==1 ) { $orderdir=$_GET["orderdir"]; } +$days = null; +$starts = null; +$endts = null; +if(isset($_GET['days']) && is_numeric($_GET['days'])) { + $days = (int) $_GET['days']; +} else { + if(isset($_GET['startdate'])) { + $startts = makeTsFromDate($_GET['startdate']); + } + if(isset($_GET['enddate'])) { + $endts = makeTsFromDate($_GET['enddate']); + } +} + if($view) { $view->setParam('conversionmgr', $conversionmgr); $view->setParam('showtree', showtree()); $view->setParam('orderby', $orderby); $view->setParam('orderdir', $orderdir); + $view->setParam('days', $days); + $view->setParam('startts', $startts); + $view->setParam('endts', $endts); $view->setParam('cachedir', $settings->_cacheDir); $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('timeout', $settings->_cmdTimeout); diff --git a/views/bootstrap/class.ExpiredDocuments.php b/views/bootstrap/class.ExpiredDocuments.php index 915cc6473..61669d117 100644 --- a/views/bootstrap/class.ExpiredDocuments.php +++ b/views/bootstrap/class.ExpiredDocuments.php @@ -53,6 +53,9 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style { $timeout = $this->params['timeout']; $xsendfile = $this->params['xsendfile']; $order = $orderby.$orderdir; + $days = $this->params['days']; + $startts = $this->params['startts']; + $endts = $this->params['endts']; $db = $dms->getDB(); $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile); @@ -64,17 +67,57 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style { $this->contentStart(); $this->pageNavigation(getMLText("expired_documents"), "admin_tools"); + $this->rowStart(); + $this->columnStart(4); $this->contentHeading(getMLText("expired_documents")); -// $this->contentContainerStart(); +?> +
          +formField( + getMLText("days"), + array( + 'element'=>'input', + 'type'=>'number', + 'name'=>'days', + 'id'=>'days', + 'value'=>$days + ) + ); + $this->formField( + getMLText("startdate"), + $this->getDateChooser(getReadableDate($startts), "startdate", $this->params['session']->getLanguage(), '', '') + ); + $this->formField( + getMLText("enddate"), + $this->getDateChooser(getReadableDate($endts), "enddate", $this->params['session']->getLanguage(), '', '') + ); + $this->formSubmit(" ".getMLText('update')); +?> +
          +columnEnd(); + $this->columnStart(8); - if($docs = $dms->getDocumentsExpired(-1400, null, $orderby, $orderdir, true)) { + if(is_numeric($days)) { + $docs = $dms->getDocumentsExpired($days, null, $orderby, $orderdir, true); + $this->contentHeading(''.$days); + } else { + $d = []; + if($startts) + $d['start'] = $startts; + if($endts) + $d['end'] = $endts; + $docs = $dms->getDocumentsExpired($d, null, $orderby, $orderdir, true); + $this->contentHeading(getReadableDate($startts)." - ".getReadableDate($endts)); + } + if($docs) { - print ""; + print "
          "; print "\n\n"; print ""; print "\n"; print "\n"; print "\n"; @@ -87,7 +130,8 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style { } else $this->infoMsg(getMLText("no_docs_expired")); -// $this->contentContainerEnd(); + $this->columnEnd(); + $this->rowEnd(); $this->contentEnd(); $this->htmlEndPage(); From 1abf8802dc2f5f9d5c837eee2987cfab19a1416a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 18:30:02 +0100 Subject: [PATCH 077/100] include complete day of end date --- views/bootstrap/class.ExpiredDocuments.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/class.ExpiredDocuments.php b/views/bootstrap/class.ExpiredDocuments.php index 61669d117..629f34726 100644 --- a/views/bootstrap/class.ExpiredDocuments.php +++ b/views/bootstrap/class.ExpiredDocuments.php @@ -106,7 +106,7 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style { if($startts) $d['start'] = $startts; if($endts) - $d['end'] = $endts; + $d['end'] = $endts+86400; $docs = $dms->getDocumentsExpired($d, null, $orderby, $orderdir, true); $this->contentHeading(getReadableDate($startts)." - ".getReadableDate($endts)); } From 7998c9d7e080d07da495b991772c1b3c05e217a4 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 19:26:50 +0100 Subject: [PATCH 078/100] change sequence of parameters for expired docs task --- inc/inc.Tasks.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/inc/inc.Tasks.php b/inc/inc.Tasks.php index f6bf18b29..f9dcd4446 100644 --- a/inc/inc.Tasks.php +++ b/inc/inc.Tasks.php @@ -99,16 +99,16 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ public function getAdditionalParams() { return array( - array( - 'name'=>'email', - 'type'=>'string', - 'description'=> '', - ), array( 'name'=>'days', 'type'=>'integer', 'description'=> 'Number of days to check for. Negative values will look into the past. 0 will just check for documents expiring the current day. Keep in mind that the document is still valid on the expiration date.', ), + array( + 'name'=>'email', + 'type'=>'string', + 'description'=> 'If set, emails are send to this address.', + ), array( 'name'=>'peruser', 'type'=>'boolean', From 929ceb91e409cbedbb206ed2b6c2243d6202b55e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 19:27:25 +0100 Subject: [PATCH 079/100] fixed typo in variable name --- out/out.ExpiredDocuments.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/out/out.ExpiredDocuments.php b/out/out.ExpiredDocuments.php index da268637b..24f894f7c 100644 --- a/out/out.ExpiredDocuments.php +++ b/out/out.ExpiredDocuments.php @@ -47,7 +47,7 @@ if (isset($_GET["orderdir"]) && strlen($_GET["orderdir"])==1 ) { } $days = null; -$starts = null; +$startts = null; $endts = null; if(isset($_GET['days']) && is_numeric($_GET['days'])) { $days = (int) $_GET['days']; From 66114a653cc314bf318517337992b448dec605f2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 28 Mar 2024 20:11:09 +0100 Subject: [PATCH 080/100] fix link to document in html mail of expired documents --- inc/inc.Tasks.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/inc.Tasks.php b/inc/inc.Tasks.php index f9dcd4446..0e2bca4c4 100644 --- a/inc/inc.Tasks.php +++ b/inc/inc.Tasks.php @@ -45,7 +45,7 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ $body .= "---------------------------------------------------------------------------------\n"; foreach($docs as $doc) { $body .= sprintf($tableformat."\n", getReadableDate($doc->getExpires()), $doc->getId(), $doc->getName()); - $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getExpires()), $doc->getId(), ''.htmlspecialchars($doc->getName()).''); + $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getExpires()), $doc->getId(), ''.htmlspecialchars($doc->getName()).''); } $bodyhtml .= "
          ".getMLText("name"); - print " ".($order=="na"?' ':($order=="nd"?' ':' ')).""; - print " ".($order=="ea"?' ':($order=="ed"?' ':' ')).""; + print " ".($order=="na"?' ':($order=="nd"?' ':' ')).""; + print " ".($order=="ea"?' ':($order=="ed"?' ':' ')).""; print "".getMLText("status")."".getMLText("action")."
          ".PHP_EOL; if(empty($taskparams['dryrun'])) { @@ -71,7 +71,7 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ $body .= "---------------------------------------------------------------------------------\n"; foreach($docs as $doc) { $body .= sprintf($tableformat."\n", getReadableDate($doc->getExpires()), $doc->getId(), $doc->getName()); - $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getExpires()), $doc->getId(), $doc->getName()); + $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getExpires()), $doc->getId(), ''.htmlspecialchars($doc->getName()).''); } $bodyhtml .= "".PHP_EOL; if(empty($taskparams['dryrun'])) { @@ -804,7 +804,7 @@ class SeedDMS_RecentChangesTask extends SeedDMS_SchedulerTaskBase { /* {{{ */ $body .= "---------------------------------------------------------------------------------\n"; foreach($ds as $doc) { $body .= sprintf($tableformat."\n", getReadableDate($doc->getDate()), $doc->getId(), $doc->getName()); - $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getDate()), $doc->getId(), ''.htmlspecialchars($doc->getName()).''); + $bodyhtml .= sprintf($tableformathtml."\n", getReadableDate($doc->getDate()), $doc->getId(), ''.htmlspecialchars($doc->getName()).''); } $bodyhtml .= "".PHP_EOL; $body .= PHP_EOL; From f06267dd0b9c24a98639211321dc9fc12ae6b415 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 30 Mar 2024 12:00:04 +0100 Subject: [PATCH 081/100] fix typeahead menu --- CHANGELOG | 1 + styles/bootstrap/bootstrap/js/bootstrap-typeahead.js | 7 ++++++- views/bootstrap4/styles/application.js | 11 ++++++----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f9d132765..f8709ab7a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -16,6 +16,7 @@ - set default language in login form if language selector is turned off - do not show full list of notifiers to none admins - do not list document/folders in sequence selector if its number exceeds 50 +- typeahead menu works with arrow keys again, wait 1 sec. before searching -------------------------------------------------------------------------------- Changes in version 5.1.33 diff --git a/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js b/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js index e2b70118e..645e40fac 100644 --- a/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js +++ b/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js @@ -38,6 +38,7 @@ this.source = this.options.source this.$menu = $(this.options.menu) this.shown = false + this.timeout = null this.listen() } @@ -254,7 +255,11 @@ break default: - this.lookup() + clearTimeout(this.timeout); + + this.timeout = setTimeout(() => { + this.lookup() + }, 1000); } e.stopPropagation() diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index d2375d10a..46e6a7af6 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -93,8 +93,8 @@ function initMost() { * for each hit and render could only process strings. * */ $("#searchfield").typeahead({ /* {{{ */ - menu: '', - item: '
        • ', + menu: '', + item: '', minLength: 3, items: 100, /* the query will limit the number of hits */ source: function(query, process) { @@ -170,7 +170,8 @@ function initMost() { items = $(items).map(function (i, item) { i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type); - i.find('a').html(that.highlighter(item)) + /* i is already the 'a' tag, there is no 'li' as used by bootstrap 2 */ + i./*find('a').*/html(that.highlighter(item)) return i[0] }) @@ -184,7 +185,7 @@ function initMost() { /* Document chooser */ $("[id^=choosedocsearch]").typeahead({ /* {{{ */ menu: '', - item: '
        • ', + item: '', minLength: 3, source: function(query, process) { // console.log(this.options); @@ -222,7 +223,7 @@ function initMost() { items = $(items).map(function (i, item) { i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type); - i.find('a').html(that.highlighter(item)) + i./*find('a').*/html(that.highlighter(item)) return i[0] }) From 245bfe640ad84c5cbde011f4970ab8f691f3c0b0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 30 Mar 2024 12:12:47 +0100 Subject: [PATCH 082/100] updated folder chooser --- op/op.Ajax.php | 10 ++++---- views/bootstrap4/styles/application.js | 33 ++++++++++++++++++++++---- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 3a58652df..03b024064 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -144,8 +144,8 @@ switch($command) { $result = array(); foreach($hits['folders'] as $hit) { if($hit->getAccessMode($user, 'search') >= M_READ) - //$result[] = $hit->getID().'#'.$basefolder->getName().'/'.$hit->getName(); - $result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/'); +// $result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/'); + $result[] = array('type'=>'F', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getFolderPathPlain(true, '/')), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/'))); } header('Content-Type: application/json'); echo json_encode($result); @@ -157,7 +157,8 @@ switch($command) { $result = array(); foreach($subfolders as $subfolder) { //$result[] = $subfolder->getID().'#'.$basefolder->getName().'/'.$subfolder->getName(); - $result[] = $subfolder->getID().'#'.$subfolder->getFolderPathPlain(true, '/'); +// $result[] = $subfolder->getID().'#'.$subfolder->getFolderPathPlain(true, '/'); + $result[] = array('type'=>'F', 'id'=>$subfolder->getId(), 'name'=>htmlspecialchars($subfolder->getFolderPathPlain(true, '/')), 'path'=>htmlspecialchars($subfolder->getParent()->getFolderPathPlain(true, '/'))); } header('Content-Type: application/json'); echo json_encode($result); @@ -172,7 +173,8 @@ switch($command) { $result = array(); foreach($hits['folders'] as $hit) { if($hit->getAccessMode($user, 'search') >= M_READ) - $result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/'); +// $result[] = $hit->getID().'#'.$hit->getFolderPathPlain(true, '/'); + $result[] = array('type'=>'F', 'id'=>$hit->getId(), 'name'=>htmlspecialchars($hit->getFolderPathPlain(true, '/')), 'path'=>htmlspecialchars($hit->getParent()->getFolderPathPlain(true, '/'))); } header('Content-Type: application/json'); echo json_encode($result); diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index 46e6a7af6..115c4c110 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -236,7 +236,7 @@ function initMost() { /* Folder chooser */ $("[id^=choosefoldersearch]").typeahead({ /* {{{ */ menu: '', - item: '
        • ', + item: '', minLength: 3, source: function(query, process) { // console.log(this.options); @@ -248,19 +248,42 @@ function initMost() { * actually provided to update the input field, but here we use * it to set the document location. */ updater: function (item) { - strarr = item.value.split("#"); - //console.log(this.$element.data('target')); target = this.$element.data('target'); - $('#'+target).attr('value', strarr[0]); - return strarr[1]; + $('#'+target).attr('value', item.id); + return item.value; + }, + sorter: function(items) { + return items; }, /* Set a matcher that allows any returned value */ matcher : function (item) { return true; }, highlighter : function (item) { + return ' ' + item.name.replace(/' + item.path + '' : ''); strarr = item.split("#"); return ' ' + strarr[1].replace(/ Date: Sat, 30 Mar 2024 12:14:55 +0100 Subject: [PATCH 083/100] sync changes in application.js --- views/bootstrap/styles/application.js | 33 +++++++++++++++++++++----- views/bootstrap4/styles/application.js | 2 -- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index a5d2133f1..8bd6b675c 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -238,19 +238,40 @@ function initMost() { * actually provided to update the input field, but here we use * it to set the document location. */ updater: function (item) { - strarr = item.value.split("#"); - //console.log(this.$element.data('target')); target = this.$element.data('target'); - $('#'+target).attr('value', strarr[0]); - return strarr[1]; + $('#'+target).attr('value', item.id); + return item.value; + }, + sorter: function(items) { + return items; }, /* Set a matcher that allows any returned value */ matcher : function (item) { return true; }, highlighter : function (item) { - strarr = item.split("#"); - return ' ' + strarr[1].replace(/ ' + item.name.replace(/' + item.path + '' : ''); + }, + /* This only works with a modified version of bootstrap typeahead located + * in boostrap-typeahead.js Search for 'render' + * The line + * this.render = this.options.render || this.render + * was added to bootstrap-typeahead.js + * The following function is a copy of the original render function but + * access item.name instead of item + */ + render : function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type); + i./*find('a').*/html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this } }); /* }}} */ } diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index 115c4c110..2e921c62e 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -261,8 +261,6 @@ function initMost() { }, highlighter : function (item) { return ' ' + item.name.replace(/' + item.path + '' : ''); - strarr = item.split("#"); - return ' ' + strarr[1].replace(/ Date: Sat, 30 Mar 2024 12:28:00 +0100 Subject: [PATCH 084/100] fix render function for typeahead folder search --- views/bootstrap/styles/application.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index 8bd6b675c..33679bded 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -265,7 +265,7 @@ function initMost() { items = $(items).map(function (i, item) { i = $(that.options.item).attr('data-value', item.name).attr('data-id', item.id).attr('data-type', item.type); - i./*find('a').*/html(that.highlighter(item)) + i.find('a').html(that.highlighter(item)) return i[0] }) From 060c5f6a009e1776f7076de0ce0c467eea096936 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 30 Mar 2024 13:14:55 +0100 Subject: [PATCH 085/100] fix selection in typeahead menu --- styles/bootstrap/bootstrap/js/bootstrap-typeahead.js | 5 +++-- views/bootstrap4/styles/application.js | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js b/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js index 645e40fac..74db0d108 100644 --- a/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js +++ b/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js @@ -187,8 +187,8 @@ this.$menu .on('click', $.proxy(this.click, this)) - .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) - .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) + .on('mouseenter', this.options.itemtag, $.proxy(this.mouseenter, this)) + .on('mouseleave', this.options.itemtag, $.proxy(this.mouseleave, this)) } , eventSupported: function(eventName) { @@ -316,6 +316,7 @@ , items: 8 , menu: '' , item: '
        • ' + , itemtag: 'li' , minLength: 1 } diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index 2e921c62e..09e7b9c55 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -95,6 +95,7 @@ function initMost() { $("#searchfield").typeahead({ /* {{{ */ menu: '', item: '', + itemtag: 'a', minLength: 3, items: 100, /* the query will limit the number of hits */ source: function(query, process) { @@ -186,6 +187,7 @@ function initMost() { $("[id^=choosedocsearch]").typeahead({ /* {{{ */ menu: '', item: '', + itemtag: 'a', minLength: 3, source: function(query, process) { // console.log(this.options); @@ -237,6 +239,7 @@ function initMost() { $("[id^=choosefoldersearch]").typeahead({ /* {{{ */ menu: '', item: '', + itemtag: 'a', minLength: 3, source: function(query, process) { // console.log(this.options); From da664f2948a39d8c1a0972cdaa250dbfef961713 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Apr 2024 11:32:34 +0200 Subject: [PATCH 086/100] set height of typeahead menu to 600px max --- views/bootstrap/styles/application.js | 1 + views/bootstrap4/styles/application.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index 33679bded..a0804774a 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -90,6 +90,7 @@ function initMost() { * for each hit and render could only process strings. * */ $("#searchfield").typeahead({ /* {{{ */ + menu: '', minLength: 3, items: 100, /* the query will limit the number of hits */ source: function(query, process) { diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index 09e7b9c55..a4c205e86 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -93,7 +93,7 @@ function initMost() { * for each hit and render could only process strings. * */ $("#searchfield").typeahead({ /* {{{ */ - menu: '', + menu: '', item: '', itemtag: 'a', minLength: 3, From f4a44a853f9c591df36f1cf6a6611f8e390436e2 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 1 Apr 2024 11:35:37 +0200 Subject: [PATCH 087/100] improve navigating in typeahead menu --- styles/bootstrap/bootstrap/js/bootstrap-typeahead.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js b/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js index 74db0d108..aeb772a98 100644 --- a/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js +++ b/styles/bootstrap/bootstrap/js/bootstrap-typeahead.js @@ -157,10 +157,13 @@ , next = active.next() if (!next.length) { - next = $(this.$menu.find('li')[0]) + next = $(this.$menu.find(this.options.itemtag)[0]) } next.addClass('active') + var index = this.$menu.children().index(next) + var r = this.$menu.height()/next.height()-1; + this.$menu.scrollTop(this.$menu.scrollTop()+next.offset().top-50-index*r) } , prev: function (event) { @@ -168,10 +171,13 @@ , prev = active.prev() if (!prev.length) { - prev = this.$menu.find('li').last() + prev = this.$menu.find(this.options.itemtag).last() } prev.addClass('active') + var index = this.$menu.children().index(prev) + var r = this.$menu.height()/prev.height()-1; + this.$menu.scrollTop(this.$menu.scrollTop()+prev.offset().top-50-index*r) } , listen: function () { From e0b421dcca4a56410e31f93862ae4061a1a46196 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Tue, 2 Apr 2024 20:33:34 +0200 Subject: [PATCH 088/100] convert checkin into controller --- controllers/class.CheckInDocument.php | 114 ++++++++++++ op/op.CheckInDocument.php | 242 ++++++++------------------ op/op.UpdateDocument.php | 2 +- 3 files changed, 191 insertions(+), 167 deletions(-) create mode 100644 controllers/class.CheckInDocument.php diff --git a/controllers/class.CheckInDocument.php b/controllers/class.CheckInDocument.php new file mode 100644 index 000000000..969d18d17 --- /dev/null +++ b/controllers/class.CheckInDocument.php @@ -0,0 +1,114 @@ + + * @copyright Copyright (C) 2010-2024 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Class which does the busines logic for downloading a document + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2010-2024 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_Controller_CheckInDocument extends SeedDMS_Controller_Common { + + public function run() { /* {{{ */ + $name = $this->getParam('name'); + $comment = $this->getParam('comment'); + + /* Call preCheckInDocument early, because it might need to modify some + * of the parameters. + */ + if(false === $this->callHook('preCheckInDocument', $this->params['document'])) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_preCheckInDocument_failed'; + return null; + } + + $comment = $this->getParam('comment'); + $dms = $this->params['dms']; + $user = $this->params['user']; + $document = $this->params['document']; + $settings = $this->params['settings']; + $fulltextservice = $this->params['fulltextservice']; + $folder = $this->params['folder']; + $userfiletmp = $this->getParam('userfiletmp'); + $userfilename = $this->getParam('userfilename'); + $filetype = $this->getParam('filetype'); + $userfiletype = $this->getParam('userfiletype'); + $reviewers = $this->getParam('reviewers'); + $approvers = $this->getParam('approvers'); + $recipients = $this->getParam('recipients'); + $reqversion = $this->getParam('reqversion'); + $comment = $this->getParam('comment'); + $attributes = $this->getParam('attributes'); + $workflow = $this->getParam('workflow'); + $maxsizeforfulltext = $this->getParam('maxsizeforfulltext'); + $initialdocumentstatus = $this->getParam('initialdocumentstatus'); + + $content = $this->callHook('checkinDocument'); + if($content === null) { + if($contentResult=$document->checkIn($comment, $user, $reviewers, $approvers, $version=0, $attributes, $workflow, $initialdocumentstatus)) { + + if ($this->hasParam('expires')) { + if($document->setExpires($this->getParam('expires'))) { + } else { + } + } + + if(!empty($recipients['i'])) { + foreach($recipients['i'] as $uid) { + if($u = $dms->getUser($uid)) { + $res = $contentResult->getContent()->addIndRecipient($u, $user); + } + } + } + if(!empty($recipients['g'])) { + foreach($recipients['g'] as $gid) { + if($g = $dms->getGroup($gid)) { + $res = $contentResult->getContent()->addGrpRecipient($g, $user); + } + } + } + + $content = $contentResult->getContent(); + } else { + $this->errormsg = 'error_checkin_document'; + $result = false; + } + } elseif($result === false) { + if(empty($this->errormsg)) + $this->errormsg = 'hook_checkinDocument_failed'; + return false; + } + + if($fulltextservice && ($index = $fulltextservice->Indexer()) && $content) { + $idoc = $fulltextservice->IndexedDocument($document); + if(false !== $this->callHook('preIndexDocument', $document, $idoc)) { + $lucenesearch = $fulltextservice->Search(); + if($hit = $lucenesearch->getDocument((int) $document->getId())) { + $index->delete($hit->id); + } + $index->addDocument($idoc); + $index->commit(); + } + } + + if(false === $this->callHook('postCheckInDocument', $document, $content)) { + } + + return $content; + } /* }}} */ +} + + diff --git a/op/op.CheckInDocument.php b/op/op.CheckInDocument.php index 72f9ce03f..e540e73ab 100644 --- a/op/op.CheckInDocument.php +++ b/op/op.CheckInDocument.php @@ -23,10 +23,23 @@ include("../inc/inc.Language.php"); include("../inc/inc.Init.php"); include("../inc/inc.Extension.php"); include("../inc/inc.DBInit.php"); -include("../inc/inc.ClassUI.php"); include("../inc/inc.Authentication.php"); +include("../inc/inc.ClassUI.php"); +include("../inc/inc.ClassController.php"); +$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME'])); +$controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user)); $accessop = new SeedDMS_AccessOperation($dms, $user, $settings); +if (!$accessop->check_controller_access($controller, $_POST)) { + UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("access_denied")); +} + +/* if post_max_size is to small, then $_POST will not be set and the content + * lenght will exceed post_max_size + */ +if(empty($_POST) && $_SERVER['CONTENT_LENGTH'] > SeedDMS_Core_File::parse_filesize(ini_get('post_max_size'))) { + UI::exitError(getMLText("folder_title", array("foldername" => '')),getMLText("uploading_postmaxsize")); +} /* Check if the form data comes from a trusted request */ if(!checkFormKey('checkindocument')) { @@ -45,7 +58,7 @@ if (!is_object($document)) { UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_doc_id"))),getMLText("invalid_doc_id")); } -if ($document->getAccessMode($user) < M_READWRITE) { +if ($document->getAccessMode($user, 'checkinDocument') < M_READWRITE) { UI::exitError(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))),getMLText("access_denied")); } @@ -73,6 +86,34 @@ if(isset($_POST["comment"])) else $comment = ""; +$oldexpires = $document->getExpires(); +switch($_POST["presetexpdate"]) { +case "date": + $expires = makeTsFromDate($_POST["expdate"]); +// $tmp = explode('-', $_POST["expdate"]); +// $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); + break; +case "1w": + $tmp = explode('-', date('Y-m-d')); + $expires = mktime(0,0,0, $tmp[1], $tmp[2]+7, $tmp[0]); + break; +case "1m": + $tmp = explode('-', date('Y-m-d')); + $expires = mktime(0,0,0, $tmp[1]+1, $tmp[2], $tmp[0]); + break; +case "1y": + $tmp = explode('-', date('Y-m-d')); + $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]+1); + break; +case "2y": + $tmp = explode('-', date('Y-m-d')); + $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]+2); + break; +case "never": +default: + $expires = null; + break; +} // Get the list of reviewers and approvers for this document. $reviewers = array(); @@ -196,7 +237,7 @@ else if($group = $dms->getGroup($grp)) { $members = $group->getUsers(); foreach($members as $member) { - /* Do not add the uploader itself and reviewers */ + /* Do not add the uploader itself as recipient */ if(!$settings->_enableFilterReceipt || ($member->getID() != $user->getID() && !in_array($member->getID(), $reviewers['i']))) if(!in_array($member->getID(), $recipients["i"])) $recipients["i"][] = $member->getID(); @@ -227,175 +268,44 @@ else $attributes = array(); } - $contentResult=$document->checkIn($comment, $user, $reviewers, $approvers, $version=0, $attributes, $workflow, $settings->_initialDocumentStatus); - if (is_bool($contentResult) && !$contentResult) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); - } elseif (is_bool($contentResult) && $contentResult) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_no_checkin")); - $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_error_checkin_ended'))); + $controller->setParam('documentsource', 'checkin'); + $controller->setParam('folder', $folder); + $controller->setParam('document', $document); + $controller->setParam('fulltextservice', $fulltextservice); + $controller->setParam('comment', $comment); + if($oldexpires != $expires) + $controller->setParam('expires', $expires); + $controller->setParam('reviewers', $reviewers); + $controller->setParam('approvers', $approvers); + $controller->setParam('recipients', $recipients); + $controller->setParam('attributes', $attributes); + $controller->setParam('workflow', $workflow); + $controller->setParam('initialdocumentstatus', $settings->_initialDocumentStatus); + $controller->setParam('maxsizeforfulltext', $settings->_maxSizeForFullText); + + if(!$content = $controller()) { + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg); } else { + if($controller->hasHook('cleanUpDocument')) { + $controller->callHook('cleanUpDocument', $document, $file); + } // Send notification to subscribers. - if ($notifier){ - $notifyList = $document->getNotifyList(); - $folder = $document->getFolder(); + if($notifier) { + $notifier->sendNewDocumentVersionMail($document, $user); - $subject = "document_updated_email_subject"; - $message = "document_updated_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['username'] = $user->getFullName(); - $params['comment'] = $document->getComment(); - $params['version_comment'] = $contentResult->getContent()->getComment(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - $notifier->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - foreach ($notifyList["groups"] as $grp) { - $notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - } - - if($workflow && $settings->_enableNotificationWorkflow) { - $subject = "request_workflow_action_email_subject"; - $message = "request_workflow_action_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['version'] = $contentResult->getContent()->getVersion(); - $params['workflow'] = $workflow->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['current_state'] = $workflow->getInitState()->getName(); - $params['username'] = $user->getFullName(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - - foreach($workflow->getNextTransitions($workflow->getInitState()) as $ntransition) { - foreach($ntransition->getUsers() as $tuser) { - $notifier->toIndividual($user, $tuser->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW); - } - foreach($ntransition->getGroups() as $tuser) { - $notifier->toGroup($user, $tuser->getGroup(), $subject, $message, $params, SeedDMS_NotificationService::RECV_WORKFLOW); - } - } - } - - if($settings->_enableNotificationAppRev) { - /* Reviewers and approvers will be informed about the new document */ - if($reviewers['i'] || $reviewers['g']) { - $subject = "review_request_email_subject"; - $message = "review_request_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $contentResult->getContent()->getVersion(); - $params['comment'] = $comment; - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - foreach($reviewers['i'] as $reviewerid) { - $notifier->toIndividual($user, $dms->getUser($reviewerid), $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER); - } - foreach($reviewers['g'] as $reviewergrpid) { - $notifier->toGroup($user, $dms->getGroup($reviewergrpid), $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER); - } - } - - elseif($approvers['i'] || $approvers['g']) { - $subject = "approval_request_email_subject"; - $message = "approval_request_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $contentResult->getContent()->getVersion(); - $params['comment'] = $comment; - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - foreach($approvers['i'] as $approverid) { - $notifier->toIndividual($user, $dms->getUser($approverid), $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER); - } - foreach($approvers['g'] as $approvergrpid) { - $notifier->toGroup($user, $dms->getGroup($approvergrpid), $subject, $message, $params, SeedDMS_NotificationService::RECV_APPROVER); - } - } - } + $notifier->sendChangedExpiryMail($document, $user, $oldexpires); } - if($recipients['i']) { - foreach($recipients['i'] as $uid) { - if($u = $dms->getUser($uid)) { - $res = $contentResult->getContent()->addIndRecipient($u, $user); - } - } - } - if($recipients['g']) { - foreach($recipients['g'] as $gid) { - if($g = $dms->getGroup($gid)) { - $res = $contentResult->getContent()->addGrpRecipient($g, $user); - } - } - } - - $oldexpires = $document->getExpires(); - switch($_POST["presetexpdate"]) { - case "date": - $tmp = explode('-', $_POST["expdate"]); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]); - break; - case "1w": - $tmp = explode('-', date('Y-m-d')); - $expires = mktime(0,0,0, $tmp[1], $tmp[2]+7, $tmp[0]); - break; - case "1m": - $tmp = explode('-', date('Y-m-d')); - $expires = mktime(0,0,0, $tmp[1]+1, $tmp[2], $tmp[0]); - break; - case "1y": - $tmp = explode('-', date('Y-m-d')); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]+1); - break; - case "2y": - $tmp = explode('-', date('Y-m-d')); - $expires = mktime(0,0,0, $tmp[1], $tmp[2], $tmp[0]+2); - break; - case "never": - default: - $expires = null; - break; - } - - if($oldexpires != $expires) { - if($document->setExpires($expires)) { - if($notifier) { - $notifyList = $document->getNotifyList(); - $folder = $document->getFolder(); - - // Send notification to subscribers. - $subject = "expiry_changed_email_subject"; - $message = "expiry_changed_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - $notifier->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - foreach ($notifyList["groups"] as $grp) { - $notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - } - } - } else { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured")); - } - } - $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_checked_in'))); } -add_log_line("?documentid=".$documentid); +add_log_line("checkin document ".$documentid." with version ".$content->getVersion()); header("Location:../out/out.ViewDocument.php?documentid=".$documentid); diff --git a/op/op.UpdateDocument.php b/op/op.UpdateDocument.php index b88e13b86..a1a798f38 100644 --- a/op/op.UpdateDocument.php +++ b/op/op.UpdateDocument.php @@ -333,7 +333,7 @@ default: if($group = $dms->getGroup($grp)) { $members = $group->getUsers(); foreach($members as $member) { - /* Do not add the uploader itself and approvers */ + /* Do not add the uploader itself as recipient */ if(!$settings->_enableFilterReceipt || ($member->getID() != $user->getID() && !in_array($member->getID(), $reviewers['i']))) if(!in_array($member->getID(), $recipients["i"])) $recipients["i"][] = $member->getID(); From 7b65c50b7eb4e652614cc48eecfd3e9c643de2de Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2024 09:21:24 +0200 Subject: [PATCH 089/100] use own code for creating checkboxes --- views/bootstrap/class.Bootstrap.php | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index b228624e6..5ed68d6c3 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1216,9 +1216,29 @@ background-image: linear-gradient(to bottom, #882222, #111111);; case 'input': default: switch($value['type']) { - default: - if(!empty($value['type']) && $value['type'] == 'checkbox' && isset($value['default']) && !empty($value['name'])) + case 'checkbox': + if(isset($value['default']) && !empty($value['name'])) echo ''; + echo '"; + break; + default: if(!empty($value['addon'])) echo ""; echo 'getValue() : $attribute) : ''; $content .= ""; - $content .= ""; + $content .= ""; break; case SeedDMS_Core_AttributeDefinition::type_date: $objvalue = $attribute ? getReadableDate((is_object($attribute) ? $attribute->getValue() : $attribute)) : ''; From bad9db377bf1e40963de4add59f5b8620a448d4b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2024 09:21:43 +0200 Subject: [PATCH 090/100] add label to checkboxes --- views/bootstrap4/class.Bootstrap4.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 81f140366..b64e9509e 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1218,6 +1218,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; foreach($value['attributes'] as $a) echo ' '.$a[0].'="'.$a[1].'"'; echo ">"; + echo ''; echo "
          "; break; default: @@ -1973,6 +1974,7 @@ $(document).ready(function() { $objvalue = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : ''; $content .= ""; $content .= ""; + $content .= ''; break; case SeedDMS_Core_AttributeDefinition::type_date: $objvalue = $attribute ? getReadableDate((is_object($attribute) ? $attribute->getValue() : $attribute)) : ''; From f0f5cd5058030eff310f398879e9e530f9c0ce1a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2024 09:25:50 +0200 Subject: [PATCH 091/100] fix php warnings --- views/bootstrap4/class.Bootstrap4.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index b64e9509e..54f7c6c41 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1218,7 +1218,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);; foreach($value['attributes'] as $a) echo ' '.$a[0].'="'.$a[1].'"'; echo ">"; - echo ''; + echo ''; echo "
          "; break; default: From 5aa5db880df024f63eeeb5dd2b055bc12d3f3ded Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 3 Apr 2024 13:42:58 +0200 Subject: [PATCH 092/100] pass convertToPdf to view --- out/out.RemoveUserFromProcesses.php | 1 + 1 file changed, 1 insertion(+) diff --git a/out/out.RemoveUserFromProcesses.php b/out/out.RemoveUserFromProcesses.php index 610d5810a..1f6039ad6 100644 --- a/out/out.RemoveUserFromProcesses.php +++ b/out/out.RemoveUserFromProcesses.php @@ -72,6 +72,7 @@ if($view) { $view->setParam('conversionmgr', $conversionmgr); $view->setParam('previewWidthList', $settings->_previewWidthList); $view->setParam('previewconverters', $settings->_converters['preview']); + $view->setParam('convertToPdf', $settings->_convertToPdf); $view->setParam('timeout', $settings->_cmdTimeout); $view->setParam('accessobject', $accessop); $view($_GET); From 0b4afff149e15dabc2640b6ef204a20ea8b4e6a5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 13:56:14 +0200 Subject: [PATCH 093/100] set new and old status --- controllers/class.ReviseDocument.php | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/controllers/class.ReviseDocument.php b/controllers/class.ReviseDocument.php index 94f085d6d..6abda8b03 100644 --- a/controllers/class.ReviseDocument.php +++ b/controllers/class.ReviseDocument.php @@ -22,6 +22,10 @@ */ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common { + public $oldstatus; + + public $newstatus; + public function run() { $dms = $this->params['dms']; $user = $this->params['user']; @@ -32,6 +36,9 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common { $revisiontype = $this->params['revisiontype']; $group = $this->params['group']; $comment = $this->params['comment']; + $overallStatus = $content->getStatus(); + $this->oldstatus = $overallStatus['status']; + $this->newstatus = $this->oldstatus; /* if set to true, a single reject will reject the doc. If set to false * all revisions will be collected first and afterwards the doc is rejected @@ -71,6 +78,7 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common { $result = $this->callHook('reviseUpdateDocumentStatus', $content); if($result === null) { if ($onevotereject && $revisionstatus == -1){ + $this->newstatus = S_NEEDS_CORRECTION; if(!$content->setStatus(S_NEEDS_CORRECTION,$comment,$user)) { $this->error = 1; $this->errormsg = "revision_update_failed"; @@ -102,22 +110,22 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common { // of them were rejections then documents needs correction. // Otherwise put it back into revision workflow if ($revisionok == $revisionTotal) { - $newStatus=S_RELEASED; - if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) { + $this->newstatus=S_RELEASED; + if ($content->finishRevision($user, $this->newstatus, 'Finished revision workflow', getMLText("automatic_status_update"))) { if(!$this->callHook('finishReviseDocument', $content)) { } } } elseif (($revisionok + $revisionnotok) == $revisionTotal) { - $newStatus=S_NEEDS_CORRECTION; -// if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) { - if(!$content->setStatus($newStatus,$comment,$user)) { + $this->newstatus=S_NEEDS_CORRECTION; +// if ($content->finishRevision($user, $this->newstatus, 'Finished revision workflow', getMLText("automatic_status_update"))) { + if(!$content->setStatus($this->newstatus,$comment,$user)) { $this->error = 1; $this->errormsg = "revision_update_failed"; return false; } } else { - $newStatus=S_IN_REVISION; - if(!$content->setStatus($newStatus,$comment,$user)) { + $this->newstatus=S_IN_REVISION; + if(!$content->setStatus($this->newstatus,$comment,$user)) { $this->error = 1; $this->errormsg = "revision_update_failed"; return false; From ad84609a492c6af1f4bfcb2b343a7411c9edb597 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 13:57:36 +0200 Subject: [PATCH 094/100] add functions to send mail on revision/receipt add/delete --- inc/inc.ClassNotificationService.php | 190 ++++++++++++++++++++++++++- 1 file changed, 189 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassNotificationService.php b/inc/inc.ClassNotificationService.php index 4b2d20102..3bafe2d94 100644 --- a/inc/inc.ClassNotificationService.php +++ b/inc/inc.ClassNotificationService.php @@ -1177,6 +1177,80 @@ class SeedDMS_NotificationService { $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); } /* }}} */ + public function sendSubmittedReceiptMail($content, $user, $receiptlog) { /* {{{ */ + $document = $content->getDocument(); + $nl=$document->getNotifyList(); + $folder = $document->getFolder(); + $subject = "receipt_submit_email_subject"; + $message = "receipt_submit_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['document_id'] = $document->getId(); + $params['version'] = $content->getVersion(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['status'] = getReceiptStatusText($receiptlog["status"]); + $params['comment'] = $receiptlog['comment']; + $params['username'] = $user->getFullName(); + $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['sitename'] = $this->settings->_siteName; + $params['http_root'] = $this->settings->_httpRoot; + $this->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); + foreach ($nl["groups"] as $grp) { + $this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); + } + /* Send mail to owner only if the currently logged in user is not the + * owner and the owner is not already in the list of notifiers. + */ + /* + if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) + $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); + */ + + /* Send mail to uploader of version only if the uploader is not the owner and + * the currently logged in user is not the + * owner and the owner is not already in the list of notifiers. + */ + if($user->getID() != $content->getUser()->getID() /* && $content->getUser()->getID() != $document->getOwner()->getID() */ && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); + } /* }}} */ + + public function sendSubmittedRevisionMail($content, $user, $revisionlog) { /* {{{ */ + $document = $content->getDocument(); + $nl=$document->getNotifyList(); + $folder = $document->getFolder(); + $subject = "revision_submit_email_subject"; + $message = "revision_submit_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['document_id'] = $document->getId(); + $params['version'] = $content->getVersion(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['status'] = getRevisionStatusText($revisionlog["status"]); + $params['comment'] = $revisionlog['comment']; + $params['username'] = $user->getFullName(); + $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['sitename'] = $this->settings->_siteName; + $params['http_root'] = $this->settings->_httpRoot; + $this->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); + foreach ($nl["groups"] as $grp) { + $this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); + } + /* Send mail to owner only if the currently logged in user is not the + * owner and the owner is not already in the list of notifiers. + */ + /* + if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) + $this->toIndividual($user, $document->getOwner(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); + */ + + /* Send mail to uploader of version only if the uploader is not the owner and + * the currently logged in user is not the + * owner and the owner is not already in the list of notifiers. + */ + if($user->getID() != $content->getUser()->getID() /* && $content->getUser()->getID() != $document->getOwner()->getID() */ && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users'])) + $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER); + } /* }}} */ + public function sendDeleteApprovalMail($content, $user, $approver) { /* {{{ */ $document = $content->getDocument(); $folder = $document->getFolder(); @@ -1210,7 +1284,11 @@ class SeedDMS_NotificationService { $params['folder_path'] = $folder->getFolderPathPlain(); $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); - $params['username'] = $user->getFullName(); + if($reviewer->isType('user')) + $params['reviewer'] = $reviewer->getFullName(); + elseif($reviewer->isType('group')) + $params['reviewer'] = $reviewer->getName(); + $params['username'] = $user->getName(); $params['sitename'] = $this->settings->_siteName; $params['http_root'] = $this->settings->_httpRoot; $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); @@ -1221,6 +1299,58 @@ class SeedDMS_NotificationService { $this->toGroup($user, $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER); } /* }}} */ + public function sendDeleteRevisionMail($content, $user, $revisor) { /* {{{ */ + $document = $content->getDocument(); + $folder = $document->getFolder(); + $subject = "revision_deletion_email_subject"; + $message = "revision_deletion_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['document_id'] = $document->getId(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['version'] = $content->getVersion(); + $params['comment'] = $content->getComment(); + if($revisor->isType('user')) + $params['revisor'] = $revisor->getFullName(); + elseif($revisor->isType('group')) + $params['revisor'] = $revisor->getName(); + $params['username'] = $user->getFullName(); + $params['sitename'] = $this->settings->_siteName; + $params['http_root'] = $this->settings->_httpRoot; + $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + + if($revisor->isType('user')) + $this->toIndividual($user, $revisor, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + elseif($revisor->isType('group')) + $this->toGroup($user, $revisor, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + } /* }}} */ + + public function sendDeleteReceiptMail($content, $user, $recipient) { /* {{{ */ + $document = $content->getDocument(); + $folder = $document->getFolder(); + $subject = "receipt_deletion_email_subject"; + $message = "receipt_deletion_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['document_id'] = $document->getId(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['version'] = $content->getVersion(); + $params['comment'] = $content->getComment(); + if($recipient->isType('user')) + $params['recipient'] = $recipient->getFullName(); + elseif($recipient->isType('group')) + $params['recipient'] = $recipient->getName(); + $params['username'] = $user->getFullName(); + $params['sitename'] = $this->settings->_siteName; + $params['http_root'] = $this->settings->_httpRoot; + $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + + if($recipient->isType('user')) + $this->toIndividual($user, $recipient, $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + elseif($recipient->isType('group')) + $this->toGroup($user, $recipient, $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + } /* }}} */ + /** * This notification is send if a new approver is added. * @@ -1272,6 +1402,10 @@ class SeedDMS_NotificationService { $params['folder_path'] = $folder->getFolderPathPlain(); $params['version'] = $content->getVersion(); $params['comment'] = $content->getComment(); + if($reviewer->isType('user')) + $params['reviewer'] = $reviewer->getFullName(); + elseif($reviewer->isType('group')) + $params['reviewer'] = $reviewer->getName(); $params['username'] = $user->getFullName(); $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); $params['sitename'] = $this->settings->_siteName; @@ -1283,6 +1417,60 @@ class SeedDMS_NotificationService { $this->toGroup($user, $reviewer, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVIEWER); } /* }}} */ + public function sendAddRevisionMail($content, $user, $revisor) { /* {{{ */ + $document = $content->getDocument(); + $folder = $document->getFolder(); + + $subject = "revision_request_email_subject"; + $message = "revision_request_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['document_id'] = $document->getId(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['version'] = $content->getVersion(); + $params['comment'] = $content->getComment(); + if($revisor->isType('user')) + $params['revisor'] = $revisor->getFullName(); + elseif($revisor->isType('group')) + $params['revisor'] = $user->getName(); + $params['username'] = $user->getFullName(); + $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['sitename'] = $this->settings->_siteName; + $params['http_root'] = $this->settings->_httpRoot; + + if($revisor->isType('user')) + $this->toIndividual($user, $revisor, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + elseif($revisor->isType('group')) + $this->toGroup($user, $revisor, $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + } /* }}} */ + + public function sendAddReceiptMail($content, $user, $recipient) { /* {{{ */ + $document = $content->getDocument(); + $folder = $document->getFolder(); + + $subject = "receipt_request_email_subject"; + $message = "receipt_request_email_body"; + $params = array(); + $params['name'] = $document->getName(); + $params['document_id'] = $document->getId(); + $params['folder_path'] = $folder->getFolderPathPlain(); + $params['version'] = $content->getVersion(); + $params['comment'] = $content->getComment(); + if($recipient->isType('user')) + $params['recipient'] = $recipient->getFullName(); + elseif($recipient->isType('group')) + $params['recipient'] = $user->getName(); + $params['username'] = $user->getFullName(); + $params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); + $params['sitename'] = $this->settings->_siteName; + $params['http_root'] = $this->settings->_httpRoot; + + if($recipient->isType('user')) + $this->toIndividual($user, $recipient, $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + elseif($recipient->isType('group')) + $this->toGroup($user, $recipient, $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + } /* }}} */ + public function sendChangedDocumentOwnerMail($document, $user, $oldowner) { /* {{{ */ if($oldowner->getID() != $document->getOwner()->getID()) { $notifyList = $document->getNotifyList(); From aae9422e3079902def7b558f95313dcf20b44214 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 13:58:36 +0200 Subject: [PATCH 095/100] move sending mails into inc.ClassNotificationService.php --- op/op.ReceiptDocument.php | 24 ++------------ op/op.ReviseDocument.php | 70 +++++++++------------------------------ op/op.SetRecipients.php | 60 +++------------------------------ op/op.SetRevisors.php | 60 +++------------------------------ 4 files changed, 26 insertions(+), 188 deletions(-) diff --git a/op/op.ReceiptDocument.php b/op/op.ReceiptDocument.php index e90181ce5..3b7fbf0f1 100644 --- a/op/op.ReceiptDocument.php +++ b/op/op.ReceiptDocument.php @@ -95,28 +95,8 @@ if(!$controller->run()) { if ($_POST["receiptType"] == "ind" || $_POST["receiptType"] == "grp") { if($notifier) { - $nl=$document->getNotifyList(); - $subject = "receipt_submit_email_subject"; - $message = "receipt_submit_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['version'] = $version; - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['status'] = getReceiptStatusText($_POST["receiptStatus"]); - $params['comment'] = strip_tags($_POST['comment']); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - $notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - foreach ($nl["groups"] as $grp) { - $notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - } - /* Send mail to owner only if the currently logged in user is not the - * owner and the owner is not already in the list of notifiers. - */ -// if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) -// $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); + $receiptlog = $latestContent->getReceiptLog(); + $notifier->sendSubmittedReceiptMail($latestContent, $user, $receiptlog ? $receiptlog[0] : false); } } diff --git a/op/op.ReviseDocument.php b/op/op.ReviseDocument.php index 6f2d0de22..d73ee2387 100644 --- a/op/op.ReviseDocument.php +++ b/op/op.ReviseDocument.php @@ -93,64 +93,26 @@ $controller->setParam('group', $group); $controller->setParam('comment', $_POST["comment"]); $controller->setParam('onevotereject', $settings->_enableRevisionOneVoteReject); if(!$controller->run()) { - UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg())); + $err = $controller->getErrorMsg(); + if(is_string($err)) + $errmsg = getMLText($err); + elseif(is_array($err)) { + $errmsg = getMLText($err[0], $err[1]); + } else { + $errmsg = $err; + } + UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($errmsg)); } -if ($_POST["revisionType"] == "ind" || $_POST["revisionType"] == "grp") { - if($notifier) { - $nl=$document->getNotifyList(); - $subject = "revision_submit_email_subject"; - $message = "revision_submit_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['version'] = $version; - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['status'] = getRevisionStatusText($_POST["revisionStatus"]); - $params['comment'] = strip_tags($_POST['comment']); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - $notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - foreach ($nl["groups"] as $grp) { - $notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - } - /* Send mail to owner only if the currently logged in user is not the - * owner and the owner is not already in the list of notifiers. - */ -// if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) -// $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); +if($notifier) { + if ($_POST["revisionType"] == "ind" || $_POST["revisionType"] == "grp") { + $revisionlog = $latestContent->getRevisionLog(); + $notifier->sendSubmittedRevisionMail($latestContent, $user, $revisionlog ? $revisionlog[0] : false); } -} -/* Send notification about status change only if status has actually changed */ -$newdocstatus = $content->getStatus(); -if($olddocstatus['status'] != $newdocstatus['status']) { - // Send notification to subscribers. - if($notifier) { - $nl=$document->getNotifyList(); - $subject = "document_status_changed_email_subject"; - $message = "document_status_changed_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['status'] = getOverallStatusText($olddocstatus['status']).' → '.getOverallStatusText($newdocstatus['status']); - $params['new_status_code'] = $newdocstatus['status']; - $params['old_status_code'] = $olddocstatus['status']; - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - $notifier->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - foreach ($nl["groups"] as $grp) { - $notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION); - } - /* Send mail to owner only if the currently logged in user is not the - * owner and the owner is not already in the list of notifiers. - */ -// if($user->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($document->getOwner(), $nl['users'])) -// $notifier->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER); - } + /* Send notification about status change only if status has actually changed */ + if($controller->oldstatus != $controller->newstatus) + $notifier->sendChangedDocumentStatusMail($latestContent, $user, $controller->oldstatus); } header("Location:../out/out.ViewDocument.php?documentid=".$documentid."¤ttab=revision"); diff --git a/op/op.SetRecipients.php b/op/op.SetRecipients.php index 492c8b5a7..2806e73af 100644 --- a/op/op.SetRecipients.php +++ b/op/op.SetRecipients.php @@ -140,20 +140,7 @@ foreach ($pIndRev as $p) { // Send an email notification to the new recipient. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "receipt_request_email_subject"; - $message = "receipt_request_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['recipient'] = $accessIndex["i"][$p]->getFullName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toIndividual($user, $accessIndex["i"][$p], $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + $notifier->sendAddReceiptMail($content, $user, $accessIndex["i"][$p]); } } break; @@ -187,20 +174,7 @@ if (count($receiptIndex["i"]) > 0) { // Send an email notification to the recipients. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "receipt_deletion_email_subject"; - $message = "receipt_deletion_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['recipient'] = $accessIndex["i"][$rx]->getFullName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toIndividual($user, $accessIndex["i"][$rx], $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + $notifier->sendDeleteReceiptMail($content, $user, $accessIndex["i"][$rx]); } } break; @@ -247,20 +221,7 @@ foreach ($pGrpRev as $p) { // Send an email notification to the new recipient. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "receipt_request_email_subject"; - $message = "receipt_request_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['recipient'] = $accessIndex["g"][$p]->getName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toGroup($user, $accessIndex["g"][$p], $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + $notifier->sendAddReceiptMail($content, $user, $accessIndex["g"][$p]); } } break; @@ -290,20 +251,7 @@ if (count($receiptIndex["g"]) > 0) { // Send an email notification to the recipients group. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "receipt_deletion_email_subject"; - $message = "receipt_deletion_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['recipient'] = $accessIndex["g"][$rx]->getName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toGroup($user, $accessIndex["g"][$rx], $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT); + $notifier->sendDeleteReceiptMail($content, $user, $accessIndex["g"][$rx]); } } break; diff --git a/op/op.SetRevisors.php b/op/op.SetRevisors.php index 294ba0619..672cd6677 100644 --- a/op/op.SetRevisors.php +++ b/op/op.SetRevisors.php @@ -127,20 +127,7 @@ foreach ($pIndRev as $p) { // Send an email notification to the new recipient. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "revision_request_email_subject"; - $message = "revision_request_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['revisor'] = $accessIndex["i"][$p]->getFullName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toIndividual($user, $accessIndex["i"][$p], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + $notifier->sendAddRevisionMail($content, $user, $accessIndex["i"][$p]); } } break; @@ -186,20 +173,7 @@ if (count($revisionIndex["i"]) > 0) { // Send an email notification to the recipients. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "revision_deletion_email_subject"; - $message = "revision_deletion_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['revisor'] = $accessIndex["i"][$rx]->getFullName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toIndividual($user, $accessIndex["i"][$rx], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + $notifier->sendDeleteRevisionMail($content, $user, $accessIndex["i"][$rx]); } } break; @@ -234,20 +208,7 @@ foreach ($pGrpRev as $p) { // Send an email notification to the new recipient. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "revision_request_email_subject"; - $message = "revision_request_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['revisor'] = $accessIndex["g"][$p]->getName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toGroup($user, $accessIndex["g"][$p], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + $notifier->sendAddRevisionMail($content, $user, $accessIndex["g"][$p]); } } break; @@ -289,20 +250,7 @@ if (count($revisionIndex["g"]) > 0) { // Send an email notification to the recipients group. if($settings->_enableNotificationAppRev) { if ($notifier) { - $subject = "revision_deletion_email_subject"; - $message = "revision_deletion_email_body"; - $params = array(); - $params['name'] = $document->getName(); - $params['folder_path'] = $folder->getFolderPathPlain(); - $params['version'] = $content->getVersion(); - $params['comment'] = $content->getComment(); - $params['revisor'] = $accessIndex["g"][$rx]->getName(); - $params['username'] = $user->getFullName(); - $params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(); - $params['sitename'] = $settings->_siteName; - $params['http_root'] = $settings->_httpRoot; - - $notifier->toGroup($user, $accessIndex["g"][$rx], $subject, $message, $params, SeedDMS_NotificationService::RECV_REVISOR); + $notifier->sendDeleteRevisionMail($content, $user, $accessIndex["g"][$rx]); } } break; From 4e9901161f7a6a201382bcd2e7d8adec0bd3e97d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 14:14:17 +0200 Subject: [PATCH 096/100] add more notifications in seeddms 6 --- doc/README.Notification | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/doc/README.Notification b/doc/README.Notification index d6fef8db3..358cfe01d 100644 --- a/doc/README.Notification +++ b/doc/README.Notification @@ -121,3 +121,28 @@ op/op.TriggerWorkflow.php op/op.UpdateDocument.php * document was updated subscribers of the document + +op/op.ReceiptDocument.php +* document was received + subscribers of the document + +op/op.ReviseDocument.php +* document was revised + subscribers of the document + +op/op.SetRevisors.php +* Revisors were added/deleted + subscribers of the document + uploader of version + revisor + +op/op.ReceiptDocument.php +* document was receipt + subscribers of the document + +op/op.SetRecipients.php +* Recipients were added/deleted + subscribers of the document + uploader of version + recipient + From 6bc247c0ad64dc97413bd68aa31e97292a316a8c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 14:15:08 +0200 Subject: [PATCH 097/100] add notifications send by SetReviewersApprovers --- doc/README.Notification | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/README.Notification b/doc/README.Notification index d6fef8db3..0002be810 100644 --- a/doc/README.Notification +++ b/doc/README.Notification @@ -106,6 +106,11 @@ op/op.ReviewDocument.php * document was reviewed subscribers of the document +op/op.SetReviewersApprovers.php +* Reviewers/approvers were added/deleted + subscribers of the document + uploader of version + op/op.RewindWorkflow.php * Workflow was rewind to beginning subscribers of the document From 3914b76919017184a912d90a1eb256644b761e94 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 15:00:02 +0200 Subject: [PATCH 098/100] expand tabs --- doc/README.Notification | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/README.Notification b/doc/README.Notification index ec4d00b2c..952439a69 100644 --- a/doc/README.Notification +++ b/doc/README.Notification @@ -138,8 +138,8 @@ op/op.ReviseDocument.php op/op.SetRevisors.php * Revisors were added/deleted subscribers of the document - uploader of version - revisor + uploader of version + revisor op/op.ReceiptDocument.php * document was receipt @@ -148,6 +148,6 @@ op/op.ReceiptDocument.php op/op.SetRecipients.php * Recipients were added/deleted subscribers of the document - uploader of version - recipient + uploader of version + recipient From 9558075a2f5950f13e8148f90bb290c983345e01 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 4 Apr 2024 15:01:11 +0200 Subject: [PATCH 099/100] various minor updates --- languages/ar_EG/lang.inc | 6 ++++++ languages/bg_BG/lang.inc | 6 ++++++ languages/ca_ES/lang.inc | 6 ++++++ languages/cs_CZ/lang.inc | 10 ++++++++-- languages/de_DE/lang.inc | 30 ++++++++++++++++++++++-------- languages/el_GR/lang.inc | 6 ++++++ languages/en_GB/lang.inc | 20 +++++++++++++++++--- languages/es_ES/lang.inc | 10 ++++++++-- languages/fr_FR/lang.inc | 6 ++++++ languages/hr_HR/lang.inc | 6 ++++++ languages/hu_HU/lang.inc | 6 ++++++ languages/id_ID/lang.inc | 6 ++++++ languages/it_IT/lang.inc | 10 ++++++++-- languages/ko_KR/lang.inc | 6 ++++++ languages/lo_LA/lang.inc | 6 ++++++ languages/nb_NO/lang.inc | 10 ++++++++-- languages/nl_NL/lang.inc | 6 ++++++ languages/pl_PL/lang.inc | 6 ++++++ languages/pt_BR/lang.inc | 6 ++++++ languages/ro_RO/lang.inc | 6 ++++++ languages/ru_RU/lang.inc | 6 ++++++ languages/sk_SK/lang.inc | 6 ++++++ languages/sv_SE/lang.inc | 6 ++++++ languages/tr_TR/lang.inc | 6 ++++++ languages/uk_UA/lang.inc | 6 ++++++ languages/zh_CN/lang.inc | 6 ++++++ languages/zh_TW/lang.inc | 8 +++++++- 27 files changed, 198 insertions(+), 20 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index bf687cd0f..5ff7dfd9e 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -638,6 +638,7 @@ URL: [url]', 'error_update_document' => 'خطأ في تحديث المستند', 'error_uploading_reviewer_only' => 'خطأ في رفع المراجع فقط', 'es_ES' => 'الإسبانية', +'event' => '', 'event_details' => 'تفاصيل الحدث', 'exclude_items' => 'فصل الأشياء', 'expired' => 'انتهى صلاحيته', @@ -1334,6 +1335,8 @@ URL: [url]', 'revisions_without_group' => 'مراجعات بلا مجموعة', 'revisions_without_user' => 'مراجعات بلا مستخدم', 'revision_date' => 'تاريخ المراجعة', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'سجل المراجعة', 'revision_request_email_body' => 'طلب مراجعة محتوى البريد الإلكتروني', 'revision_request_email_body_html' => '', @@ -2100,6 +2103,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => 'مهمات', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2195,6 +2199,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'اكتب لتبحث', 'uk_UA' => 'ﺍﻮﻛﺭﺎﻨﻳ', +'undefined' => '', 'under_folder' => 'في المجلد', 'unknown_attrdef' => 'تعريف سمة غير معروفة', 'unknown_command' => 'لم يتم التعرف على الأمر.', @@ -2213,6 +2218,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'يمكنك تحديثه لانك من قمت بحمايته. سيتم ازالة الحماية تلقائية.', 'unlock_document' => 'ازالة القفل', 'update' => 'تحديث', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'تحديثة قائمة الموافقون', 'update_document' => 'تحديث المستند', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index b647646e8..961112f13 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -576,6 +576,7 @@ $text = array( 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Испански', +'event' => '', 'event_details' => 'Детайли за събитието', 'exclude_items' => '', 'expired' => 'Изтекъл', @@ -1189,6 +1190,8 @@ $text = array( 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -1942,6 +1945,7 @@ $text = array( 'target_equals_source_folder' => '', 'tasks' => '', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2028,6 +2032,7 @@ $text = array( 'type_to_filter' => '', 'type_to_search' => 'Тип за търсене', 'uk_UA' => 'Украински', +'undefined' => '', 'under_folder' => 'В папка', 'unknown_attrdef' => '', 'unknown_command' => 'Командата не е позната.', @@ -2046,6 +2051,7 @@ $text = array( 'unlock_cause_locking_user' => 'Вие все още можете да го обновите, защото сте един от тези, които го е блокирал. Блокировката ще бъде снета автоматично.', 'unlock_document' => 'Разблокирай', 'update' => 'Обнови', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Обнови списъка с утвърждаващи', 'update_document' => 'Обнови документ', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index 9f284c8e1..c33ee21b2 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -581,6 +581,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Castellà', +'event' => '', 'event_details' => 'Detalls de l\'event', 'exclude_items' => '', 'expired' => 'Caducat', @@ -1194,6 +1195,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -1947,6 +1950,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2033,6 +2037,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Cerca', 'uk_UA' => 'Ucraïnès', +'undefined' => '', 'under_folder' => 'A carpeta', 'unknown_attrdef' => '', 'unknown_command' => 'Ordre no reconeguda.', @@ -2051,6 +2056,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Pot actualitzar-lo perquè és qui el va bloquejar. El bloqueig s\'eliminarà automàticament.', 'unlock_document' => 'Desbloquejar', 'update' => 'Actualitzar', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Actualitzar llista d\'aprovadors', 'update_document' => 'Actualitzar', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index e1aa43221..3939231a3 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1561), kreml (579) +// Translators: Admin (1562), kreml (579) $text = array( '2_factor_auth' => 'dvoufaktorové ověření', @@ -589,7 +589,7 @@ URL: [url]', 'dropfolder_metadata' => '', 'dropupload' => 'Rychlý upload', 'drop_files_here' => 'Soubory dát sem!', -'drop_files_here_or_click' => '', +'drop_files_here_or_click' => 'Přetáhněte sobory sem, nebo klikněte pro nahrání', 'dump_creation' => 'Vytvoření zálohy databáze', 'dump_creation_warning' => 'Pomocí této operace můžete vytvořit soubor se zálohou databáze. Po vytvoření bude soubor zálohy uložen ve složce data vašeho serveru.', 'dump_list' => 'Existující soubory záloh', @@ -662,6 +662,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => 'Chyba při vytváření dokumentu. Dokument má recenzenta, ale nemá schvalovatele.', 'es_ES' => 'Španělština', +'event' => '', 'event_details' => 'Údaje akce', 'exclude_items' => 'Vyloučit položky', 'expired' => 'Platnost vypršela', @@ -1396,6 +1397,8 @@ URL: [url]', 'revisions_without_group' => 'Revize bez skupiny', 'revisions_without_user' => 'Revize bez uživatele', 'revision_date' => 'Datum revize', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Log revize', 'revision_request_email_body' => 'Žádost o revizi Dokument: [name] @@ -2172,6 +2175,7 @@ Jméno: [username] 'target_equals_source_folder' => '', 'tasks' => 'Úkoly', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2267,6 +2271,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Zadejte hledaný výraz', 'uk_UA' => 'Ukrajinština', +'undefined' => '', 'under_folder' => 'Ve složce', 'unknown_attrdef' => 'Neznámá definice atributu', 'unknown_command' => 'Příkaz nebyl rozpoznán.', @@ -2285,6 +2290,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Můžete ho pořád aktualizovat, protože jste ten, kdo ho zamknul. Zámek bude automaticky odstraněn.', 'unlock_document' => 'Odemknout', 'update' => 'Aktualizovat', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Aktualizovat seznam schvalovatelů', 'update_document' => 'Aktualizovat', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 08bb97de6..0fc4bd1ac 100644 --- a/languages/de_DE/lang.inc +++ b/languages/de_DE/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (3343), dgrutsch (22) +// Translators: Admin (3356), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -93,7 +93,7 @@ $text = array( 'any_value_set' => 'beliebiger Wert', 'apikey' => 'API-Schlüssel', 'apply' => 'Anwenden', -'approvals_accepted' => '[no_approvals] Freigaben', +'approvals_accepted' => '[no_approvals] erfolgte Freigaben', 'approvals_accepted_latest' => '(davon [no_approvals] in letzter Version)', 'approvals_and_reviews_accepted' => '[no_approvals] Freigaben und [no_reviews] Prüfungen', 'approvals_and_reviews_not_touched' => '[no_approvals] offene Freigaben und [no_reviews] offene Prüfungen', @@ -634,14 +634,16 @@ URL: [url]

          ', 'document_status_changed_email_body' => 'Dokumentenstatus geändert Dokument: [name] -Status: [status] +Alter Status: [old_status] +Neuer Status: [status] Elternordner: [folder_path] Benutzer: [username] URL: [url]', 'document_status_changed_email_body_html' => '

          Dokumentenstatus geändert

          Dokument: [name]
          -Status: [status]
          +Alter Status: [old_status]
          +Neuer Status: [status]
          Elternordner: [folder_path]
          Benutzer: [username]
          URL: [url]

          ', @@ -794,6 +796,7 @@ URL: [url]

          ', 'error_update_document' => 'Fehler beim Aktualisieren des Dokuments', 'error_uploading_reviewer_only' => 'Fehler beim Anlegen des Dokuments. Das Dokument besitzt einen Prufer, aber keinen Freigeber.', 'es_ES' => 'Spanisch', +'event' => 'Ereignis', 'event_details' => 'Ereignisdetails', 'exclude_items' => 'Einträge auslassen', 'expired' => 'abgelaufen', @@ -1479,7 +1482,7 @@ Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren 'quota_is_disabled' => 'Quota-Unterstützung ist zur Zeit ausgeschaltet. Benutzer-Quota werden ignoriert bis Quota-Unterstützung in den Einstellungen eingeschaltet wird.', 'quota_warning' => 'Ihr maximal verfügbarer Plattenplatz wurde um [bytes] überschritten. Bitte löschen Sie Dokumente oder ältere Versionen.', 'readme_loading' => 'Bitte warten, bis die Readme geladen ist ...', -'receipts_accepted' => '[no_receipts] Empfangsbestätigungen', +'receipts_accepted' => '[no_receipts] erfolgte Empfangsbestätigungen', 'receipts_accepted_latest' => '(davon [no_receipts] in letzter Version)', 'receipts_not_touched' => '[no_receipts] offene Empfangsbestätigungen', 'receipts_not_touched_latest' => '(davon [no_receipts] in letzter Version)', @@ -1503,7 +1506,7 @@ Elternordner: [folder_path]
          Empfänger: [recipient]
          Benutzer: [username]
          URL: [url]

          ', -'receipt_deletion_email_subject' => '[sitename]: [name] - Empfänger gelöscht', +'receipt_deletion_email_subject' => '[sitename]: [name] - Aufforderung zur Empfangsbestätigung gelöscht', 'receipt_log' => 'Protokoll der Empfangsbestätigungen', 'receipt_request_email_body' => 'Aufforderung zur Empfangsbestätigung @@ -1657,7 +1660,7 @@ URL: [url]

          ', 'reviewers' => 'Prüfer', 'reviewer_already_assigned' => 'Prüfer bereits zugewiesen', 'reviewer_already_removed' => 'Prüfer wurde bereits aus dem Prüfvorgang entfernt oder hat die Prüfung bereits abgeschlossen', -'reviews_accepted' => '[no_reviews] Prüfungen', +'reviews_accepted' => '[no_reviews] erfolgte Prüfungen', 'reviews_accepted_latest' => '(davon [no_reviews] in letzter Version)', 'reviews_not_touched' => '[no_reviews] offene Prüfungen', 'reviews_not_touched_latest' => '(davon [no_reviews] in letzter Version)', @@ -1726,7 +1729,7 @@ URL: [url]

          ', 'revise_document' => 'Wiederholungsprüfung', 'revise_document_on' => 'Nächste Wiederholungsprüfung des Dokuments am [date]', 'revision' => 'Wiederholungsprüfung', -'revisions_accepted' => '[no_revisions] Wiederholungsprüfungen', +'revisions_accepted' => '[no_revisions] erfolgte Wiederholungsprüfungen', 'revisions_accepted_latest' => '(davon [no_revisions] in letzter Version)', 'revisions_not_touched' => '[no_revisions] offene Wiederholungspüfungen', 'revisions_not_touched_latest' => '(davon [no_revisions] in letzter Version)', @@ -1737,6 +1740,14 @@ URL: [url]

          ', 'revisions_without_group' => 'Wiederholungsprüfungen ohne Gruppe', 'revisions_without_user' => 'Wiederholungsprüfungen ohne Benutzer', 'revision_date' => 'Datum der Wiederholungsprüfung', +'revision_deletion_email_body' => '

          Aufforderung zur Wiederholungsprüfung gelöscht

          + +

          Dokument: [name]
          +Version: [version]
          +Elternordner: [folder_path]
          +Benutzer: [username]
          +URL: [url]

          ', +'revision_deletion_email_subject' => '[sitename]: [name] - Aufforderung zur Wiederholungsprüfung gelöscht', 'revision_log' => 'Protokoll der erneuten Prüfung', 'revision_request_email_body' => 'Aufforderung zur Wiederholungsprüfung @@ -2555,6 +2566,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver 'target_equals_source_folder' => 'Zielordner ist identisch zu Quellordner', 'tasks' => 'Aufgaben', 'task_core_expireddocs_days' => 'Tage', +'task_core_expireddocs_dryrun' => 'Testlauf', 'task_core_expireddocs_email' => 'E-Mail', 'task_core_expireddocs_peruser' => 'Pro Benutzer', 'task_core_importdropfolder_dryrun' => 'Testlauf', @@ -2661,6 +2673,7 @@ URL: [url]

          ', 'type_to_filter' => 'Hier tippen zum Filtern der Liste', 'type_to_search' => 'Hier tippen zum Suchen', 'uk_UA' => 'Ukrainisch', +'undefined' => 'unbestimmt', 'under_folder' => 'In Ordner', 'unknown_attrdef' => 'unbekannte Attributdefinition', 'unknown_command' => 'unbekannter Befehl', @@ -2679,6 +2692,7 @@ URL: [url]

          ', 'unlock_cause_locking_user' => 'Sie sind im Moment mit demselben Benutzer angemeldet.
          Daher wird die Sperrung beim Update automatisch aufgehoben', 'unlock_document' => 'Sperrung aufheben', 'update' => 'Aktualisieren', +'updated' => 'aktualisiert', 'updated_documents' => 'Aktualisierte Dokumente', 'update_approvers' => 'Liste der Freigebenden aktualisieren', 'update_document' => 'Aktualisieren', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index 141c11529..0e643522b 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -576,6 +576,7 @@ $text = array( 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Spanish/Ισπανικά', +'event' => '', 'event_details' => '', 'exclude_items' => '', 'expired' => 'Έχει λήξει', @@ -1200,6 +1201,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -1953,6 +1956,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2039,6 +2043,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Πληκτρολόγησε για αναζήτηση', 'uk_UA' => 'Ουκρανικά', +'undefined' => '', 'under_folder' => '', 'unknown_attrdef' => '', 'unknown_command' => '', @@ -2057,6 +2062,7 @@ URL: [url]', 'unlock_cause_locking_user' => '', 'unlock_document' => 'Ξεκλείδωμα', 'update' => 'Ενημέρωση', +'updated' => '', 'updated_documents' => '', 'update_approvers' => '', 'update_document' => 'Ενημέρωση εγγράφου', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 6dc2ee776..8fd4f8d56 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2452), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (2460), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -634,14 +634,16 @@ URL: [url]

          ', 'document_status_changed_email_body' => 'Document status changed Document: [name] -Status: [status] +Old status: [old_status] +New status: [status] Parent folder: [folder_path] User: [username] URL: [url]', 'document_status_changed_email_body_html' => '

          Document status changed

          Document: [name]
          -Status: [status]
          +Old status: [old_status]
          +New status: [status]
          Parent folder: [folder_path]
          User: [username]
          URL: [url]

          ', @@ -794,6 +796,7 @@ URL: [url]

          ', 'error_update_document' => 'Error while updating document', 'error_uploading_reviewer_only' => 'Error when creating the document. The document has a reviewer, but no approver.', 'es_ES' => 'Spanish', +'event' => 'event', 'event_details' => 'Event details', 'exclude_items' => 'Exclude items', 'expired' => 'Expired', @@ -1739,6 +1742,14 @@ URL: [url]

          ', 'revisions_without_group' => 'Revisions without group', 'revisions_without_user' => 'Revisions without user', 'revision_date' => 'Date of revision', +'revision_deletion_email_body' => '

          Revision request deleted

          + +

          Document: [name]
          +Version: [version]
          +Parent folder: [folder_path]
          +User: [username]
          +URL: [url]

          ', +'revision_deletion_email_subject' => '[sitename]: [name] - Revision request removed', 'revision_log' => 'Revision log', 'revision_request_email_body' => 'Revision request @@ -2557,6 +2568,7 @@ If you did not receive a password, please use the password forgotten function on 'target_equals_source_folder' => 'Target folder equals source folder', 'tasks' => 'Tasks', 'task_core_expireddocs_days' => 'Days', +'task_core_expireddocs_dryrun' => 'Dry run', 'task_core_expireddocs_email' => 'Email', 'task_core_expireddocs_peruser' => 'Per user', 'task_core_importdropfolder_dryrun' => 'Dry run', @@ -2663,6 +2675,7 @@ URL: [url]

          ', 'type_to_filter' => 'Type to filter list', 'type_to_search' => 'Type to search', 'uk_UA' => 'Ukrainian', +'undefined' => 'undefined', 'under_folder' => 'In Folder', 'unknown_attrdef' => 'Unknown attribute definition', 'unknown_command' => 'Command not recognized.', @@ -2681,6 +2694,7 @@ URL: [url]

          ', 'unlock_cause_locking_user' => 'You can still update it because you are also the one that locked it. Locking will automatically be removed.', 'unlock_document' => 'Unlock', 'update' => 'Update', +'updated' => 'updated', 'updated_documents' => 'Updated documents', 'update_approvers' => 'Update List of Approvers', 'update_document' => 'Update document', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 71151f90d..fb870174e 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: acabello (20), Admin (1353), angel (123), francisco (2), jaimem (14) +// Translators: acabello (20), Admin (1354), angel (123), francisco (2), jaimem (14) $text = array( '2_factor_auth' => 'Autenticación de doble factor', @@ -651,6 +651,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Castellano', +'event' => '', 'event_details' => 'Detalles del evento', 'exclude_items' => 'Registros excluidos', 'expired' => 'Caducado', @@ -844,7 +845,7 @@ URL: [url]', 'hu_HU' => 'Hungaro', 'id' => 'ID', 'identical_version' => 'La nueva versión es idéntica a la actual.', -'id_ID' => '', +'id_ID' => 'Indones', 'import' => 'Importar', 'importfs' => '', 'import_extension' => '', @@ -1357,6 +1358,8 @@ URL: [url]', 'revisions_without_group' => 'Revisiones sin grupo', 'revisions_without_user' => 'Revisiones sin usuario', 'revision_date' => 'Fecha de revisión', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Histórico de revisiones', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2123,6 +2126,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => 'Tareas', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2218,6 +2222,7 @@ URL: [url]', 'type_to_filter' => 'Escriba para filtrar lista', 'type_to_search' => 'Tipo de búsqueda', 'uk_UA' => 'Ucraniano', +'undefined' => '', 'under_folder' => 'En carpeta', 'unknown_attrdef' => 'Definición de atributo desconocida', 'unknown_command' => 'Orden no reconocida.', @@ -2236,6 +2241,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Puede actualizarlo porque fue quién lo bloqueó. El bloqueo será automáticamente eliminado.', 'unlock_document' => 'Desbloquear', 'update' => 'Actualizar', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Actualizar lista de aprobadores', 'update_document' => 'Actualizar documento', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 8e78b4300..f6eeea9b2 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -766,6 +766,7 @@ URL : [url]

          ', 'error_update_document' => 'Erreur lors de la mise à jour du document', 'error_uploading_reviewer_only' => 'Erreur lors de la création du document. Le document a un examinateur, mais pas d’approbateur.', 'es_ES' => 'Espagnol', +'event' => '', 'event_details' => 'Détails de l\'événement', 'exclude_items' => 'Exclure des élements', 'expired' => 'Expiré', @@ -1694,6 +1695,8 @@ URL : [url]

          ', 'revisions_without_group' => 'Révisions sans groupe', 'revisions_without_user' => 'Révisions sans utilisateur', 'revision_date' => 'Date de révision', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Journal des révisions', 'revision_request_email_body' => 'Demande de révision @@ -2510,6 +2513,7 @@ Nom : [username] 'target_equals_source_folder' => 'Le dossier de destination est identique au dossier source', 'tasks' => 'Tâches', 'task_core_expireddocs_days' => 'jours', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => 'E-mail', 'task_core_expireddocs_peruser' => 'Par utilisateur', 'task_core_importdropfolder_dryrun' => '', @@ -2616,6 +2620,7 @@ URL : [url]

          ', 'type_to_filter' => 'Filtrer dans la liste', 'type_to_search' => 'Effectuer une recherche', 'uk_UA' => 'Ukrénien', +'undefined' => '', 'under_folder' => 'Dans le dossier', 'unknown_attrdef' => 'Définition d’attribut inconnue', 'unknown_command' => 'Commande non reconnue.', @@ -2634,6 +2639,7 @@ URL : [url]

          ', 'unlock_cause_locking_user' => 'Vous pouvez encore le mettre à jour, car vous êtes le seul à l\'avoir verrouillé. Le verrouillage sera automatiquement annulé.', 'unlock_document' => 'Déverrouiller', 'update' => 'Mettre à jour', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Mettre à jour la liste des approbateurs', 'update_document' => 'Mettre à jour', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 39f271fb5..67cbd8826 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -650,6 +650,7 @@ Internet poveznica: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Španjolski', +'event' => '', 'event_details' => 'Detalji događaja', 'exclude_items' => 'Isključivanje stavki', 'expired' => 'Isteklo', @@ -1370,6 +1371,8 @@ Internet poveznica: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => 'Datum revizije', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Zapisi revizije', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2136,6 +2139,7 @@ Internet poveznica: [url]', 'target_equals_source_folder' => '', 'tasks' => 'Zadaci', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2231,6 +2235,7 @@ Internet poveznica: [url]', 'type_to_filter' => '', 'type_to_search' => 'Unesi za pretragu', 'uk_UA' => 'Ukrajinski', +'undefined' => '', 'under_folder' => 'U mapi', 'unknown_attrdef' => 'Nepoznata definicija atributa', 'unknown_command' => 'Naredba nije prepoznata.', @@ -2249,6 +2254,7 @@ Internet poveznica: [url]', 'unlock_cause_locking_user' => 'I dalje ga možete ažurirati jer ste ga vi zaključali. Zaključavanje će automatski biti ukinuto.', 'unlock_document' => 'Otključaj', 'update' => 'Ažuriraj', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Ažuriraj popis validatora', 'update_document' => 'Ažuriraj dokument', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 6eb2a0481..c34dcf2ee 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -645,6 +645,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Spanyol', +'event' => '', 'event_details' => 'Esemény részletek', 'exclude_items' => 'Kizárt elemek', 'expired' => 'Lejárt', @@ -1348,6 +1349,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2113,6 +2116,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2208,6 +2212,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Adja meg a keresendő kifejezést', 'uk_UA' => 'Ukrán', +'undefined' => '', 'under_folder' => 'Mappában', 'unknown_attrdef' => 'Ismeretlen tulajdonság meghatározás', 'unknown_command' => 'Parancs nem ismerhető fel.', @@ -2226,6 +2231,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Ön még módosíthatja mivel egyike azoknak akik zárolták. A zárolás automatikusan el lesz távolítva.', 'unlock_document' => 'Felszabadít', 'update' => 'Frissítés', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Jóváhagyók listájának frissítése', 'update_document' => 'Dokumentum frissítése', diff --git a/languages/id_ID/lang.inc b/languages/id_ID/lang.inc index 80b38ecad..835f63cd3 100644 --- a/languages/id_ID/lang.inc +++ b/languages/id_ID/lang.inc @@ -700,6 +700,7 @@ URL: [url]

          ', 'error_update_document' => '', 'error_uploading_reviewer_only' => 'Kesalahan saat membuat dokumen. Dokumen memiliki peninjau, tetapi tidak ada pemberi persetujuan.', 'es_ES' => 'Spanyol', +'event' => '', 'event_details' => '', 'exclude_items' => 'Kecualikan item ini', 'expired' => 'Kedaluwarsa', @@ -1443,6 +1444,8 @@ URL: [url]', 'revisions_without_group' => 'Revisi tanpa kelompok', 'revisions_without_user' => '', 'revision_date' => 'Tanggal revisi', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2203,6 +2206,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'target_equals_source_folder' => '', 'tasks' => 'Tugas', 'task_core_expireddocs_days' => 'Hari', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2289,6 +2293,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'type_to_filter' => '', 'type_to_search' => '', 'uk_UA' => 'Ukraina', +'undefined' => '', 'under_folder' => 'Dalam Folder', 'unknown_attrdef' => 'Definisi atribut tidak diketahui', 'unknown_command' => 'Perintah tidak dikenali.', @@ -2307,6 +2312,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha 'unlock_cause_locking_user' => '', 'unlock_document' => 'Membuka kunci', 'update' => 'Perbarui', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Perbarui Daftar Penyetuju', 'update_document' => 'Perbarui dokumen', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index f307b4584..43bcff083 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2071), rickr (144), s.pnt (26) +// Translators: Admin (2072), rickr (144), s.pnt (26) $text = array( '2_factor_auth' => 'Autorizzazione a due fattori', @@ -362,7 +362,7 @@ URL: [url]', 'current_state' => 'Stato corrente', 'current_version' => 'Versione attuale', 'daily' => 'Giornaliero', -'dashboard' => '', +'dashboard' => 'Cruscotto', 'databasesearch' => 'Ricerca nel Database', 'database_schema_version' => 'Versione dello schema del database', 'data_loading' => 'Attendere il caricamento dei dati...', @@ -655,6 +655,7 @@ URL: [url]', 'error_update_document' => 'Errore durante l\'aggiornamento del documento', 'error_uploading_reviewer_only' => 'Errore durante la creazione del documento. Il documento ha un revisore, ma non un approvatore.', 'es_ES' => 'Spagnolo', +'event' => '', 'event_details' => 'Dettagli evento', 'exclude_items' => 'Escludi elementi', 'expired' => 'Scaduto', @@ -1383,6 +1384,8 @@ URL: [url]', 'revisions_without_group' => 'Riesami senza gruppo', 'revisions_without_user' => 'Riesami senza utente', 'revision_date' => 'data riesame', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Log riesame', 'revision_request_email_body' => 'Richiesta di riesame Document: [name] @@ -2159,6 +2162,7 @@ Name: [username] 'target_equals_source_folder' => '', 'tasks' => 'Attività', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2254,6 +2258,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Digitare per cercare', 'uk_UA' => 'Ucraino', +'undefined' => '', 'under_folder' => 'Nella cartella', 'unknown_attrdef' => 'Attributo sconosciuto', 'unknown_command' => 'Comando non riconosciuto', @@ -2272,6 +2277,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Puoi ancora aggiornarlo, perchè sei l\'utente che ha eseguito il blocco. Il blocco sarà rimosso automaticamente.', 'unlock_document' => 'Sblocca', 'update' => 'Aggiorna', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Aggiornamento lista approvatori', 'update_document' => 'Aggiorna documento', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index 9b590a96c..215b1b78c 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -651,6 +651,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => '스페인어', +'event' => '', 'event_details' => '이벤트의 자세한 사항', 'exclude_items' => '항목 제외', 'expired' => '만료됨', @@ -1364,6 +1365,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '개정 일자', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '개정 로그', 'revision_request_email_body' => '수정 요청 메일 내용', 'revision_request_email_body_html' => '', @@ -2130,6 +2133,7 @@ URL : [url]', 'target_equals_source_folder' => '', 'tasks' => '작업', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2225,6 +2229,7 @@ URL : [url]', 'type_to_filter' => '', 'type_to_search' => '유형 검색', 'uk_UA' => '우크라이나어', +'undefined' => '', 'under_folder' => '폴더', 'unknown_attrdef' => '알수 없는 속성 정의', 'unknown_command' => '명령을 인식 할 수 없습니다.', @@ -2243,6 +2248,7 @@ URL : [url]', 'unlock_cause_locking_user' => '당신은 여전히 업데이트 할 수 있습니다. 잠금이 자동으로 제거됩니다.', 'unlock_document' => '잠금풀기', 'update' => '업데이트', +'updated' => '', 'updated_documents' => '', 'update_approvers' => '승인자의 업데이트 목록', 'update_document' => '문서 갱신하기', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index fc8a5eef1..19e538e11 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -648,6 +648,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'ສະເປນ', +'event' => '', 'event_details' => 'ລາຍລະອຽດກິດຈະກຳ', 'exclude_items' => 'ຍົກເວັນລາຍການ', 'expired' => 'ໝົດອາຍຸ', @@ -1380,6 +1381,8 @@ URL: [url]', 'revisions_without_group' => 'ການປັບປຸງໂດຍບໍ່ຢູ່ໃນກຸ່ມ', 'revisions_without_user' => 'ການແກ້ໄຂໂດຍບໍ່ມີຜູ້ໄຊ້', 'revision_date' => 'ວັນທີ່ແກ້ໄຂ', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'ບັນທຶກການແກ້ໄຂ', 'revision_request_email_body' => 'ຄຳຂໍແກ້ໄຂ ເອກະສານຊື່: [name] @@ -2156,6 +2159,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => 'ງານ', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2251,6 +2255,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'ພິມເພື່ອຄົ້ນຫາ', 'uk_UA' => 'ຢູເຄຣນ', +'undefined' => '', 'under_folder' => 'ໃນໂຟລເດີ', 'unknown_attrdef' => 'ນິຍາມຂອງຄຸນສົມບັດທີບໍ່ຮູ້ຈັກ', 'unknown_command' => 'ບໍ່ຮູ້ຈັກຄຳສັ່ງ', @@ -2269,6 +2274,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'ເຈົ້າຍັງສາມາດອັບເດດໄດ້ເນື່ອງຈາກເຈົ້າເປັນຄົນລັອກຂໍ້ມູນນັ້ນ ການລັອກຈະຖືກປົດອອກໂດຍອັດຕະໂນມັດ', 'unlock_document' => 'ປົດລັອກ', 'update' => 'ປັບປຸງ', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'ອັບເດດລາຍຊື່ຜູ້ອະນຸມັດ', 'update_document' => 'ອັບເດດເອກະສານ', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index ff0b7a35a..312d534d9 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (1743) +// Translators: Admin (1744) $text = array( '2_factor_auth' => '2-trinns autentisering', @@ -662,6 +662,7 @@ URL: [url]', 'error_update_document' => 'Feil under oppdatering av dokument', 'error_uploading_reviewer_only' => 'Feil når du oppretter dokumentet. Dokumentet har en korrekturleser, men ingen godkjenner.', 'es_ES' => 'Spansk', +'event' => '', 'event_details' => 'Arrangementsdetaljer', 'exclude_items' => 'Ekskluderte elementer', 'expired' => 'Utløpt', @@ -1383,7 +1384,7 @@ URL: [url]', 'review_update_failed' => 'Feil ved oppdatering av korrekturstatus. Oppdatering mislyktes.', 'revise_document' => 'Korrektur av dokumentet', 'revise_document_on' => 'Neste korrektur av dokumentversjonen den [date]', -'revision' => '', +'revision' => 'Versjon', 'revisions_accepted' => '[no_revisions] korrektur allerede godkjent', 'revisions_accepted_latest' => '(er [no_revisions] i siste versjon)', 'revisions_not_touched' => '[no_revisions] korrektur blir ikke berørt', @@ -1395,6 +1396,8 @@ URL: [url]', 'revisions_without_group' => 'Korrekturer som savner grupp', 'revisions_without_user' => 'Korrekturer som savner bruker', 'revision_date' => 'Dato for korrektur', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Korrekturlogg', 'revision_request_email_body' => 'Korrektur forespørsel Dokument: [name] @@ -2169,6 +2172,7 @@ Bruker: [username] 'target_equals_source_folder' => '', 'tasks' => 'Oppgaver', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2264,6 +2268,7 @@ URL: [url]', 'type_to_filter' => 'Skriv for filter liste', 'type_to_search' => 'Skriv for å søke', 'uk_UA' => 'Ukrainsk', +'undefined' => '', 'under_folder' => 'I mappe', 'unknown_attrdef' => 'Ukjent egenskaps definisjon', 'unknown_command' => 'Kommando ikke gjenkjent.', @@ -2282,6 +2287,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Du kan fortsatt oppdatere den fordi du også er den som låste den. Låsen fjernes automatisk.', 'unlock_document' => 'Lås opp', 'update' => 'Opptatere', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Oppdater liste over godkjennere', 'update_document' => 'Oppdater dokumentet', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 68382058e..3fdcb30fc 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -655,6 +655,7 @@ URL: [url]', 'error_update_document' => 'Fout tijdens updaten van het document', 'error_uploading_reviewer_only' => 'Fout bij het creëren van het document. Er is alleen een beoordelaar, geen goedkeurder.', 'es_ES' => 'Spaans', +'event' => '', 'event_details' => 'Activiteit-details', 'exclude_items' => 'Sluit iets uit', 'expired' => 'Verlopen', @@ -1392,6 +1393,8 @@ URL: [url]', 'revisions_without_group' => '[no_revisions] revisies zonder groep', 'revisions_without_user' => '[no_revisions] revisies zonder gebruiker', 'revision_date' => 'Datum revisie', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Log herziening', 'revision_request_email_body' => 'Verzoek tot herziening Document: [name] @@ -2168,6 +2171,7 @@ Name: [username] 'target_equals_source_folder' => 'Doel- en bronmap zijn dezelfde', 'tasks' => 'taken', 'task_core_expireddocs_days' => 'Dagen', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2263,6 +2267,7 @@ URL: [url]', 'type_to_filter' => 'Type om de lijst te filteren', 'type_to_search' => 'zoeken naar', 'uk_UA' => 'Oekraïens', +'undefined' => '', 'under_folder' => 'In map', 'unknown_attrdef' => 'Onbekende attribuut definitie', 'unknown_command' => 'Opdracht nietherkend.', @@ -2281,6 +2286,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'U kunt toch e.e.a. bijwerken omdat U degene bent die dit heeft geblokeerd. Blokkering wordt automatisch opgeheven.', 'unlock_document' => 'De-blokkeer', 'update' => 'Bijwerken', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Bijwerken lijst van [Goedkeurders]', 'update_document' => 'Bijwerken', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index aab910e02..4359fdcbc 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -638,6 +638,7 @@ URL: [url]', 'error_update_document' => 'Błąd podczas aktualizacji dokumentu', 'error_uploading_reviewer_only' => 'Błąd podczas tworzenia dokumentu. Dokument ma recenzenta, ale nie ma osoby zatwierdzającej.', 'es_ES' => 'Hiszpański', +'event' => '', 'event_details' => 'Szczegóły zdarzenia', 'exclude_items' => 'Pozycje wykluczone', 'expired' => 'Wygasły', @@ -1328,6 +1329,8 @@ URL: [url]', 'revisions_without_group' => 'Korekty bez grupy', 'revisions_without_user' => 'Korekty bez użytkownika', 'revision_date' => 'Data korekty', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Log korekty', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2099,6 +2102,7 @@ Name: [username] 'target_equals_source_folder' => '', 'tasks' => 'Zadania', 'task_core_expireddocs_days' => 'Rdzeń zadania wygasa', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2194,6 +2198,7 @@ URL: [url]', 'type_to_filter' => 'Wpisz, aby przefiltrować listę', 'type_to_search' => 'Wpisz wyszukiwane', 'uk_UA' => 'Ukrainski', +'undefined' => '', 'under_folder' => 'W folderze', 'unknown_attrdef' => 'Nieznana definicja atrybutu', 'unknown_command' => 'Polecenie nierozpoznane.', @@ -2212,6 +2217,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Nadal możesz zaktualizować dokument ponieważ jesteś też osobą, która go zablokowała. Blokada będzie automatycznie zdjęta.', 'unlock_document' => 'Odblokuj', 'update' => 'Uaktualnij', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Aktualizuj listę osób zatwierdzających', 'update_document' => 'Aktualizuj dokument', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index 9252b0b65..7656d5d86 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -662,6 +662,7 @@ URL: [url]', 'error_update_document' => 'Erro ao atualizar o documento', 'error_uploading_reviewer_only' => 'Erro ao criar o documento. O documento tem um revisor, mas não tem um aprovador', 'es_ES' => 'Espanhol', +'event' => '', 'event_details' => 'Detalhes do evento', 'exclude_items' => 'Excluir ítens', 'expired' => 'Expirado', @@ -1399,6 +1400,8 @@ URL: [url]', 'revisions_without_group' => 'Revisões sem grupo', 'revisions_without_user' => 'Revisões sem usuário', 'revision_date' => 'Data da revisão', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Log de revisão', 'revision_request_email_body' => 'Pedido de revisão Documento: [name] @@ -2175,6 +2178,7 @@ Nome: [username] 'target_equals_source_folder' => '', 'tasks' => 'Tarefas', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2270,6 +2274,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Tipo de pesquisa', 'uk_UA' => 'Ucraniano', +'undefined' => '', 'under_folder' => 'Na pasta', 'unknown_attrdef' => 'Definição de atributo desconhecido', 'unknown_command' => 'Comando não reconhecido.', @@ -2288,6 +2293,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Você pode pode atualizá-lo, porque você o travou também. A trava será automaticamente removida.', 'unlock_document' => 'Remover trava', 'update' => 'Atualizar', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Atualizar lista de aprovadores', 'update_document' => 'Atualizar', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index 079447ea6..cbd7a1db0 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -650,6 +650,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Spaniola', +'event' => '', 'event_details' => 'Detalii eveniment', 'exclude_items' => 'Elemente excluse', 'expired' => 'Expirat', @@ -1371,6 +1372,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Log revizuire', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2137,6 +2140,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2232,6 +2236,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Tastați pentru a căuta', 'uk_UA' => 'Ucraineană', +'undefined' => '', 'under_folder' => 'In Folder', 'unknown_attrdef' => 'Definiție atribut necunoscută', 'unknown_command' => 'Comandă nerecunoscută.', @@ -2250,6 +2255,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Puteți încă să-l actualizați pentru că sunteți cel care l-a blocat. Blocarea va fi eliminată automat.', 'unlock_document' => 'Deblocare', 'update' => 'Actualizare', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Actualizare Listă de aprobatori', 'update_document' => 'Actualizare document', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 43cffab89..8a681ecc3 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -650,6 +650,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Spanish', +'event' => '', 'event_details' => 'Информация о событии', 'exclude_items' => 'Не показывать события:', 'expired' => 'Срок действия вышел', @@ -1373,6 +1374,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => 'Дата ревизии', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Лог ревизии', 'revision_request_email_body' => 'Запрос на ревизию Документ: [name] @@ -2144,6 +2147,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => 'Задания', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2239,6 +2243,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Введите запрос', 'uk_UA' => 'Украинский', +'undefined' => '', 'under_folder' => 'В каталоге', 'unknown_attrdef' => 'Неизвестное значение атрибута', 'unknown_command' => 'Команда не опознана.', @@ -2257,6 +2262,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Вы все ещё можете его обновить, потому что вы один из тех кто его заблокировал. Блокировка будет снята автоматически.', 'unlock_document' => 'Разблокировать', 'update' => 'Обновить', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Обновить список утверждающих', 'update_document' => 'Обновить документ', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index b159e80e7..dbbd91a72 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -662,6 +662,7 @@ URL: [url]', 'error_update_document' => 'Chyba pri aktualizácii dokumentu', 'error_uploading_reviewer_only' => 'Chyba pri vytváraní dokumentu. Dokument má recenzenta, ale nemá schvaľovateľa.', 'es_ES' => 'Španielčina', +'event' => '', 'event_details' => 'Detail udalosti', 'exclude_items' => 'Vylúčiť položky', 'expired' => 'Platnosť vypršala', @@ -1401,6 +1402,8 @@ URL: [url]', 'revisions_without_group' => 'Revízie bez skupiny', 'revisions_without_user' => 'Revízie bez používateľa', 'revision_date' => 'Dátum revízie', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Protokol revízie', 'revision_request_email_body' => 'Žiadosť o revíziu Dokument: [name] @@ -2177,6 +2180,7 @@ Meno: [username] 'target_equals_source_folder' => '', 'tasks' => 'Úlohy', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2272,6 +2276,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Zadajte na vyhľadanie', 'uk_UA' => 'Ukrajinsky', +'undefined' => '', 'under_folder' => 'V zložke', 'unknown_attrdef' => 'Neznáme definovanie atribútu', 'unknown_command' => 'Príkaz nebol rozpoznaný.', @@ -2290,6 +2295,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Môžete ho stále aktualizovať, pretože ste ten, kto ho aj zamkol. Zámok bude automaticky odstránený.', 'unlock_document' => 'Odomknúť', 'update' => 'Aktualizovať', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Aktualizovať zoznam schvaľovateľov', 'update_document' => 'Aktualizovať', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 181961ec6..f94edefa8 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -656,6 +656,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Spanska', +'event' => '', 'event_details' => 'Händelseinställningar', 'exclude_items' => '', 'expired' => 'Har gått ut', @@ -1374,6 +1375,8 @@ URL: [url]', 'revisions_without_group' => 'Revisioner som saknar grupp', 'revisions_without_user' => 'Revisioner som saknar användare', 'revision_date' => 'Datum för revision', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Revisionslogg', 'revision_request_email_body' => 'Begäran om revision Dokument: [name] @@ -2150,6 +2153,7 @@ Kommentar: [comment]', 'target_equals_source_folder' => '', 'tasks' => 'Uppgifter', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2245,6 +2249,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Skriv för att söka', 'uk_UA' => 'Ukrainska', +'undefined' => '', 'under_folder' => 'I katalogen', 'unknown_attrdef' => 'Okänd attributdefinition', 'unknown_command' => 'Okänt kommando', @@ -2263,6 +2268,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Du kan fortfarande uppdatera, eftersom du är samma person som låste dokumentet. Låsningen kommer automatiskt att tas bort.', 'unlock_document' => 'Lås upp', 'update' => 'Uppdatera', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Uppdatera lista med personer som godkänner', 'update_document' => 'Uppdatera dokument', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 0e8464cf1..585880fcb 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -644,6 +644,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'İspanyolca', +'event' => '', 'event_details' => 'Etkinkil detayları', 'exclude_items' => '', 'expired' => 'Süresi doldu', @@ -1348,6 +1349,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => '', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '', 'revision_request_email_body' => '', 'revision_request_email_body_html' => '', @@ -2114,6 +2117,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2209,6 +2213,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Aranacak sözcük yazınız', 'uk_UA' => 'Ukraynaca', +'undefined' => '', 'under_folder' => 'Klasörde', 'unknown_attrdef' => 'Bilinmeyen nitelik tanımı', 'unknown_command' => 'Komut anlaşılamadı.', @@ -2227,6 +2232,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Bunu halen güncelleyebilirsiniz çünkü kilitleyen sizsiniz. Kilit otomatik olarak açılacaktır.', 'unlock_document' => 'Kilidi aç', 'update' => 'Güncelle', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Onaylayanlar listesini güncelle', 'update_document' => 'Doküman güncelle', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index 6c3aec4de..64ac8fe84 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -649,6 +649,7 @@ URL: [url]', 'error_update_document' => '', 'error_uploading_reviewer_only' => '', 'es_ES' => 'Spanish', +'event' => '', 'event_details' => 'Інформація про подію', 'exclude_items' => 'Виключені елементи', 'expired' => 'Термін виконання вийшов', @@ -1365,6 +1366,8 @@ URL: [url]', 'revisions_without_group' => '', 'revisions_without_user' => '', 'revision_date' => 'Дата ревізії', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => 'Лог ревізії', 'revision_request_email_body' => 'Запит на ревізію Документ: [name] @@ -2136,6 +2139,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => 'Завдання', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2231,6 +2235,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => 'Введіть запит', 'uk_UA' => 'Українська', +'undefined' => '', 'under_folder' => 'В каталозі', 'unknown_attrdef' => 'Невідоме визначення атрибуту', 'unknown_command' => 'Не зрозуміла команда.', @@ -2249,6 +2254,7 @@ URL: [url]', 'unlock_cause_locking_user' => 'Ви все ще можете його оновлювати, тому що ви один з тих, хто його заблокував. Блокування буде автоматично зняте.', 'unlock_document' => 'Розблокувати', 'update' => 'Оновити', +'updated' => '', 'updated_documents' => '', 'update_approvers' => 'Оновити список затверджувачів', 'update_document' => 'Оновити документ', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index 82c5044a9..669e92561 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -650,6 +650,7 @@ URL: [url]', 'error_update_document' => '文档升级时报错', 'error_uploading_reviewer_only' => '创建文档时报错!文档有复核人,但没有审核人。', 'es_ES' => '西班牙语', +'event' => '', 'event_details' => '错误详情', 'exclude_items' => '排除项目', 'expired' => '过期', @@ -1354,6 +1355,8 @@ URL: [url]', 'revisions_without_group' => '无修订群组', 'revisions_without_user' => '无修改用户', 'revision_date' => '修订日期', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '修订日志', 'revision_request_email_body' => '修订请求 文档: [name] @@ -2124,6 +2127,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '任务', 'task_core_expireddocs_days' => '', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2210,6 +2214,7 @@ URL: [url]', 'type_to_filter' => '', 'type_to_search' => '搜索类型', 'uk_UA' => '乌克兰语', +'undefined' => '', 'under_folder' => '文件夹内', 'unknown_attrdef' => '未知属性', 'unknown_command' => '未知命令', @@ -2228,6 +2233,7 @@ URL: [url]', 'unlock_cause_locking_user' => '您仍然可以更新,因为是您锁定了该文件. 锁定状态被自动解除.', 'unlock_document' => '解锁', 'update' => '更新', +'updated' => '', 'updated_documents' => '', 'update_approvers' => '更新审核人名单', 'update_document' => '更新', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index ee8426ae5..52ae84522 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -19,7 +19,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -// Translators: Admin (2442) +// Translators: Admin (2444) $text = array( '2_factor_auth' => '2階段認證', @@ -662,6 +662,7 @@ URL: [url]', 'error_update_document' => '更新文件時發生錯誤', 'error_uploading_reviewer_only' => '創建文件時出錯。該文件具有審閱者,但沒有批准者。', 'es_ES' => '西班牙語', +'event' => '事件', 'event_details' => '錯誤詳情', 'exclude_items' => '例外項目', 'expired' => '過期', @@ -1399,6 +1400,8 @@ URL: [url]', 'revisions_without_group' => '沒有組的修訂', 'revisions_without_user' => '沒有使用者的修訂', 'revision_date' => '修訂日期', +'revision_deletion_email_body' => '', +'revision_deletion_email_subject' => '', 'revision_log' => '修訂日誌', 'revision_request_email_body' => '修訂要求 文件:[name] @@ -2175,6 +2178,7 @@ URL: [url]', 'target_equals_source_folder' => '', 'tasks' => '任務', 'task_core_expireddocs_days' => '天數', +'task_core_expireddocs_dryrun' => '', 'task_core_expireddocs_email' => '', 'task_core_expireddocs_peruser' => '', 'task_core_importdropfolder_dryrun' => '', @@ -2270,6 +2274,7 @@ URL: [url]', 'type_to_filter' => '鍵入到篩選列表', 'type_to_search' => '搜索類型', 'uk_UA' => '烏克蘭語', +'undefined' => '未定義', 'under_folder' => '資料夾內', 'unknown_attrdef' => '未知的屬性定義', 'unknown_command' => '未知命令', @@ -2288,6 +2293,7 @@ URL: [url]', 'unlock_cause_locking_user' => '您仍然可以更新,因為是您鎖定了該檔. 鎖定狀態被自動解除.', 'unlock_document' => '解鎖', 'update' => '更新', +'updated' => '', 'updated_documents' => '', 'update_approvers' => '更新審核人名單', 'update_document' => '更新', From b6a1339bd75e4ac196bb9c91e581ceb362d2b1d5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 8 Apr 2024 18:01:29 +0200 Subject: [PATCH 100/100] do not add anchor for extension config, if no config exists --- views/bootstrap/class.Settings.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 2791c335d..10e8b763d 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -613,7 +613,8 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) --> getExtensionConfiguration() as $extname=>$extconf) { - echo ''.$extconf['title']." ● "; + if($extconf['config']) + echo ''.$extconf['title']." ● "; } foreach($extmgr->getExtensionConfiguration() as $extname=>$extconf) { if($this->hasHook('processConfig'))