From 595ce3cbe71eae15256736cc9e544716047d9c85 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 29 Jun 2024 13:23:29 +0200 Subject: [PATCH 01/30] get_extension() returns extension for image/jpg --- inc/inc.Utils.php | 1 + 1 file changed, 1 insertion(+) diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index 315e2545f..4b484143a 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -726,6 +726,7 @@ function get_extension($mimetype) { /* {{{ */ case 'image/gif': return '.gif'; case 'image/ief': return '.ief'; case 'image/jpeg': return '.jpg'; + case 'image/jpg': return '.jpg'; case 'image/pipeg': return '.jfif'; case 'image/tiff': return '.tif'; case 'image/x-cmu-raster': return '.ras'; From f3c4385115ddcf6a4e875707d5899c9dc6833052 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 29 Jun 2024 13:24:20 +0200 Subject: [PATCH 02/30] pass notifier to view --- inc/inc.ClassController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassController.php b/inc/inc.ClassController.php index fa414499e..4a37d9cbc 100644 --- a/inc/inc.ClassController.php +++ b/inc/inc.ClassController.php @@ -30,7 +30,7 @@ class Controller { * @return object an object of a class implementing the view */ static function factory($class, $params=array()) { /* {{{ */ - global $settings, $session, $extMgr, $request, $logger; + global $settings, $session, $extMgr, $request, $logger, $notifier; if(!$class) { return null; } @@ -59,6 +59,7 @@ class Controller { $controller->setParam('request', $request); $controller->setParam('settings', $settings); $controller->setParam('logger', $logger); + $controller->setParam('notifier', $notifier); return $controller; } return null; From 36a962e2a71612c8a5ff990c31f31a9c4dbe204e Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 29 Jun 2024 13:24:44 +0200 Subject: [PATCH 03/30] pass notifiert to view --- inc/inc.ClassUI.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index 94bcdb5b1..222deca44 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -45,7 +45,7 @@ class UI extends UI_Default { * @return object an object of a class implementing the view */ static function factory($theme, $class='', $params=array()) { /* {{{ */ - global $settings, $session, $extMgr, $request, $logger; + global $settings, $session, $extMgr, $request, $logger, $notifier; if(!$class) { $class = 'Bootstrap'; $class = 'Style'; @@ -134,6 +134,7 @@ class UI extends UI_Default { $view->setParam('session', $session); $view->setParam('request', $request); $view->setParam('logger', $logger); + $view->setParam('notifier', $notifier); // $view->setParam('settings', $settings); $view->setParam('sitename', $settings->_siteName); $view->setParam('rootfolderid', $settings->_rootFolderID); From 87e4e2eba0e5a889abc8910525f1a0d0299e1741 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 8 Jul 2024 17:11:31 +0200 Subject: [PATCH 04/30] pass null instead of '' as default translation of subject --- inc/inc.ClassEmailNotify.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/inc.ClassEmailNotify.php b/inc/inc.ClassEmailNotify.php index 8983581e4..cedab0e1f 100644 --- a/inc/inc.ClassEmailNotify.php +++ b/inc/inc.ClassEmailNotify.php @@ -198,7 +198,7 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify { $headers['Return-Path'] = $returnpath; $headers['To'] = $to; $preferences = array("input-charset" => "UTF-8", "output-charset" => "UTF-8"); - $encoded_subject = iconv_mime_encode("Subject", getMLText($subject, $params, "", $lang), $preferences); + $encoded_subject = iconv_mime_encode("Subject", getMLText($subject, $params, null, $lang), $preferences); $headers['Subject'] = substr($encoded_subject, strlen('Subject: ')); $headers['Date'] = date('r', time()); $headers['MIME-Version'] = "1.0"; From 48abf555d950d2c56e7f16479f5a2b51a5d85961 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 8 Jul 2024 17:13:47 +0200 Subject: [PATCH 05/30] lots of new phrases for sending test notifications --- languages/ar_EG/lang.inc | 14 ++++++++++++++ languages/bg_BG/lang.inc | 14 ++++++++++++++ languages/ca_ES/lang.inc | 14 ++++++++++++++ languages/cs_CZ/lang.inc | 14 ++++++++++++++ languages/de_DE/lang.inc | 16 +++++++++++++++- languages/el_GR/lang.inc | 14 ++++++++++++++ languages/en_GB/lang.inc | 16 +++++++++++++++- languages/es_ES/lang.inc | 14 ++++++++++++++ languages/fr_FR/lang.inc | 14 ++++++++++++++ languages/hr_HR/lang.inc | 14 ++++++++++++++ languages/hu_HU/lang.inc | 14 ++++++++++++++ languages/id_ID/lang.inc | 14 ++++++++++++++ languages/it_IT/lang.inc | 14 ++++++++++++++ languages/ko_KR/lang.inc | 14 ++++++++++++++ languages/lo_LA/lang.inc | 14 ++++++++++++++ languages/nb_NO/lang.inc | 14 ++++++++++++++ languages/nl_NL/lang.inc | 14 ++++++++++++++ languages/pl_PL/lang.inc | 14 ++++++++++++++ languages/pt_BR/lang.inc | 14 ++++++++++++++ languages/ro_RO/lang.inc | 14 ++++++++++++++ languages/ru_RU/lang.inc | 14 ++++++++++++++ languages/sk_SK/lang.inc | 14 ++++++++++++++ languages/sv_SE/lang.inc | 14 ++++++++++++++ languages/tr_TR/lang.inc | 14 ++++++++++++++ languages/uk_UA/lang.inc | 14 ++++++++++++++ languages/zh_CN/lang.inc | 14 ++++++++++++++ languages/zh_TW/lang.inc | 14 ++++++++++++++ 27 files changed, 380 insertions(+), 2 deletions(-) diff --git a/languages/ar_EG/lang.inc b/languages/ar_EG/lang.inc index d7ae27e2b..f89d2c36f 100644 --- a/languages/ar_EG/lang.inc +++ b/languages/ar_EG/lang.inc @@ -283,6 +283,7 @@ URL: [url]', 'checkout_is_disabled' => 'السحب معطل', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'من فضلك اختر تعريف السمة', @@ -304,6 +305,7 @@ URL: [url]', 'clear_cache' => 'مسح المحفوظات', 'clear_clipboard' => 'مسح الحافظة', 'clear_password' => 'مسح الرقم السري', +'click_to_expand_filter_results' => '', 'clipboard' => 'لوحة القصاصات', 'close' => 'إغلاق', 'color' => '', @@ -1093,6 +1095,17 @@ URL: [url]', 'nl_NL' => 'الهولندي', 'no' => 'لا', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'نوفمبر', 'now' => 'الان', @@ -1479,6 +1492,7 @@ URL: [url]', 'send_login_data' => 'ارسل بيانات تسجيل الدخول', 'send_login_data_body' => 'ارسل محتوى بيانات تسجيل الدخول', 'send_login_data_subject' => 'ارسل موضوع بيانات تسجيل الدخول', +'send_notification' => '', 'send_test_mail' => 'ارسل رسالة تجريبية', 'september' => 'سبتمبر', 'sequence' => 'تتابع', diff --git a/languages/bg_BG/lang.inc b/languages/bg_BG/lang.inc index f5933d90a..a14674e6b 100644 --- a/languages/bg_BG/lang.inc +++ b/languages/bg_BG/lang.inc @@ -270,6 +270,7 @@ $text = array( 'checkout_is_disabled' => '', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Изберете attribute definition', @@ -291,6 +292,7 @@ $text = array( 'clear_cache' => 'Изчистване на кеша', 'clear_clipboard' => '', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Клипборд', 'close' => 'Затвори', 'color' => '', @@ -971,6 +973,17 @@ $text = array( 'nl_NL' => 'Холандски', 'no' => 'Не', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'ноември', 'now' => 'сега', @@ -1321,6 +1334,7 @@ $text = array( 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => '', 'september' => 'септември', 'sequence' => 'Последователност', diff --git a/languages/ca_ES/lang.inc b/languages/ca_ES/lang.inc index f76aaedfc..8a3c75f10 100644 --- a/languages/ca_ES/lang.inc +++ b/languages/ca_ES/lang.inc @@ -275,6 +275,7 @@ URL: [url]', 'checkout_is_disabled' => '', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => '', @@ -296,6 +297,7 @@ URL: [url]', 'clear_cache' => 'Neteja memòria cau', 'clear_clipboard' => '', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Portapapers', 'close' => 'Tancar', 'color' => '', @@ -976,6 +978,17 @@ URL: [url]', 'nl_NL' => 'Holandès', 'no' => 'No', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Novembre', 'now' => '', @@ -1326,6 +1339,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => '', 'september' => 'Setembre', 'sequence' => 'Seqüència', diff --git a/languages/cs_CZ/lang.inc b/languages/cs_CZ/lang.inc index 9e8aec22b..20fbd1219 100644 --- a/languages/cs_CZ/lang.inc +++ b/languages/cs_CZ/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Kontrola dokumentů je zakázána v konfiguraci.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Zvolte definici atributů', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Vymazat vyrovnávací paměť', 'clear_clipboard' => 'Vyčistit schránku', 'clear_password' => 'Vymazat heslo', +'click_to_expand_filter_results' => '', 'clipboard' => 'Schránka', 'close' => 'Zavřít', 'color' => '', @@ -1124,6 +1126,17 @@ URL: [url]', 'nl_NL' => 'Holandština', 'no' => 'Ne', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Listopad', 'now' => 'nyní', @@ -1551,6 +1564,7 @@ Jméno: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - Přihlašovací údaje', +'send_notification' => '', 'send_test_mail' => 'Poslat zkušební zprávu', 'september' => 'Září', 'sequence' => 'Posloupnost', diff --git a/languages/de_DE/lang.inc b/languages/de_DE/lang.inc index 839fba5f5..57f4cc71f 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 (3381), dgrutsch (22) +// Translators: Admin (3395), dgrutsch (22) $text = array( '2_factor_auth' => '2-Faktor Authentifizierung', @@ -328,6 +328,7 @@ URL: [url]

', 'checkout_is_disabled' => 'Auschecken von Dokumenten ist in der Konfiguration ausgeschaltet.', 'check_directory_layout' => 'Prüfe Verzeichnise', 'check_failed' => 'fehlgeschlagen', +'check_notification_filter' => 'Prüfe Benachrichtigungsfilter', 'check_passed' => 'erfolgreich', 'check_secure_installation' => 'Prüfe auf sichere Installation', 'choose_attrdef' => 'Attributdefinition wählen', @@ -349,6 +350,7 @@ URL: [url]

', 'clear_cache' => 'Cache löschen', 'clear_clipboard' => 'Zwischenablage leeren', 'clear_password' => 'Passwort löschen', +'click_to_expand_filter_results' => 'Klicken zum Ausklappen der Filterprüfung', 'clipboard' => 'Zwischenablage', 'close' => 'Schließen', 'color' => 'Farbe', @@ -1357,6 +1359,17 @@ URL: [url]

', 'nl_NL' => 'Niederländisch', 'no' => 'Nein', 'notification' => 'Beobachter', +'notification_msg_tmpl' => 'Schablone', +'notification_recvtype' => 'Empfängertyp', +'notification_recv_any' => 'Jeder', +'notification_recv_approver' => 'Freigeber', +'notification_recv_notification' => 'Beobachter', +'notification_recv_owner' => 'Besitzer', +'notification_recv_reviewer' => 'Prüfer', +'notification_recv_uploader' => 'Hochlader', +'notification_recv_workflow' => 'Workflow', +'notification_service_no_filter' => 'Dieser Benachrichtigungsdienst hat keinen Filter.', +'notification_tmpl' => 'Schablone', 'not_subscribed' => 'Nicht abonniert', 'november' => 'November', 'now' => 'sofort', @@ -1942,6 +1955,7 @@ Name: [username] Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Vergessen-Funktion auf der Anmeldeseite, um ein neues Passwort zu setzen.', 'send_login_data_subject' => '[sitename]: [login] - Ihre Login-Daten', +'send_notification' => 'Benachrichtigung verschicken', 'send_test_mail' => 'Sende Test-E-mail', 'september' => 'September', 'sequence' => 'Reihenfolge', diff --git a/languages/el_GR/lang.inc b/languages/el_GR/lang.inc index c0f860bd0..fc9eab65f 100644 --- a/languages/el_GR/lang.inc +++ b/languages/el_GR/lang.inc @@ -270,6 +270,7 @@ $text = array( 'checkout_is_disabled' => '', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => '', @@ -291,6 +292,7 @@ $text = array( 'clear_cache' => 'Εκκαθάριση στιγμιαίας μνήμης', 'clear_clipboard' => '', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Πρόχειρο', 'close' => 'Κλέισιμο', 'color' => '', @@ -982,6 +984,17 @@ URL: [url]', 'nl_NL' => 'Δανέζικα', 'no' => 'Όχι', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Νοέμβριος', 'now' => 'τώρα', @@ -1332,6 +1345,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => '', 'september' => 'Σεπτέμβριος', 'sequence' => 'Σειρά', diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index d009d034b..b36bdd435 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 (2481), archonwang (3), dgrutsch (9), netixw (14) +// Translators: Admin (2495), archonwang (3), dgrutsch (9), netixw (14) $text = array( '2_factor_auth' => '2-factor authentication', @@ -328,6 +328,7 @@ URL: [url]

', 'checkout_is_disabled' => 'Check out of documents is disabled in the configuration.', 'check_directory_layout' => 'Check directory layout', 'check_failed' => 'failed', +'check_notification_filter' => 'Check notification filter', 'check_passed' => 'passed', 'check_secure_installation' => 'Check for a secure installation', 'choose_attrdef' => 'Please choose attribute definition', @@ -349,6 +350,7 @@ URL: [url]

', 'clear_cache' => 'Clear cache', 'clear_clipboard' => 'Clear clipboard', 'clear_password' => 'Clear password', +'click_to_expand_filter_results' => 'Click to expand filter check', 'clipboard' => 'Clipboard', 'close' => 'Close', 'color' => 'Color', @@ -1359,6 +1361,17 @@ URL: [url]

', 'nl_NL' => 'Dutch', 'no' => 'No', 'notification' => 'Notification', +'notification_msg_tmpl' => 'Template', +'notification_recvtype' => 'Type of receiver', +'notification_recv_any' => 'Any', +'notification_recv_approver' => 'Approver', +'notification_recv_notification' => 'Notifier', +'notification_recv_owner' => 'Owner', +'notification_recv_reviewer' => 'Reviewer', +'notification_recv_uploader' => 'Uploader', +'notification_recv_workflow' => 'Workflow', +'notification_service_no_filter' => 'This notification services does not have a filter.', +'notification_tmpl' => 'Template', 'not_subscribed' => 'Not subscribed', 'november' => 'November', 'now' => 'now', @@ -1944,6 +1957,7 @@ Name: [username] If you did not receive a password, please use the password forgotten function on the login page to set a new password.', 'send_login_data_subject' => '[sitename]: [login] - Your login data', +'send_notification' => 'Send notification', 'send_test_mail' => 'Send test mail', 'september' => 'September', 'sequence' => 'Sequence', diff --git a/languages/es_ES/lang.inc b/languages/es_ES/lang.inc index 0934f21e7..d92b7285b 100644 --- a/languages/es_ES/lang.inc +++ b/languages/es_ES/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'checkout_is_disabled' => '', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Por favor, seleccione definición de atributo', @@ -311,6 +312,7 @@ URL: [url]', 'clear_cache' => 'Borrar cache', 'clear_clipboard' => 'Limpiar portapapeles', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Portapapeles', 'close' => 'Cerrar', 'color' => '', @@ -1108,6 +1110,17 @@ URL: [url]', 'nl_NL' => 'Holandes', 'no' => 'No', 'notification' => 'Notificación', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Noviembre', 'now' => 'ahora', @@ -1502,6 +1515,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => 'Enviar correo de prueba', 'september' => 'Septiembre', 'sequence' => 'Secuencia', diff --git a/languages/fr_FR/lang.inc b/languages/fr_FR/lang.inc index 3a490dbfe..be04c5b8a 100644 --- a/languages/fr_FR/lang.inc +++ b/languages/fr_FR/lang.inc @@ -319,6 +319,7 @@ URL : [url]

', 'checkout_is_disabled' => 'Le blocage (check-out) de documents est désactivé dans la configuration.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Choisissez une définition d\'attribut', @@ -340,6 +341,7 @@ URL : [url]

', 'clear_cache' => 'Vider le cache', 'clear_clipboard' => 'Vider le presse-papier', 'clear_password' => 'Sans mot de passe', +'click_to_expand_filter_results' => '', 'clipboard' => 'Presse-papier', 'close' => 'Fermer', 'color' => 'Couleur', @@ -1314,6 +1316,17 @@ URL : [url]

', 'nl_NL' => 'Danois', 'no' => 'Non', 'notification' => 'Notification', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => 'Non inscrit', 'november' => 'Novembre', 'now' => 'Maintenant', @@ -1889,6 +1902,7 @@ Nom : [username] [comment]', 'send_login_data_subject' => '[sitename] : [login] - Vos informations de connexion', +'send_notification' => '', 'send_test_mail' => 'Envoyer un e-mail test', 'september' => 'Septembre', 'sequence' => 'Position dans le dossier', diff --git a/languages/hr_HR/lang.inc b/languages/hr_HR/lang.inc index 67a010e70..239320f31 100644 --- a/languages/hr_HR/lang.inc +++ b/languages/hr_HR/lang.inc @@ -295,6 +295,7 @@ Internet poveznica: [url]', 'checkout_is_disabled' => 'Odjava dokumenata je onemogućena u konfiguraciji.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Molim odaberite definiciju atributa', @@ -316,6 +317,7 @@ Internet poveznica: [url]', 'clear_cache' => 'Obriši keš', 'clear_clipboard' => 'Očistite međuspremnik', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Međuspremnik', 'close' => 'Zatvori', 'color' => '', @@ -1104,6 +1106,17 @@ Internet poveznica: [url]', 'nl_NL' => 'Nizozemski', 'no' => 'Ne', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Studeni', 'now' => 'sada', @@ -1515,6 +1528,7 @@ Internet poveznica: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => '', 'september' => 'Rujan', 'sequence' => 'Redoslijed', diff --git a/languages/hu_HU/lang.inc b/languages/hu_HU/lang.inc index 4a1a9ee3d..96ed73b58 100644 --- a/languages/hu_HU/lang.inc +++ b/languages/hu_HU/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'checkout_is_disabled' => '', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Kérem válasszon jellemző meghatározást', @@ -311,6 +312,7 @@ URL: [url]', 'clear_cache' => 'Gyorsítótár törlése', 'clear_clipboard' => 'Vágólap törlése', 'clear_password' => 'jelszó törlése', +'click_to_expand_filter_results' => '', 'clipboard' => 'Vágólap', 'close' => 'Bezár', 'color' => '', @@ -1099,6 +1101,17 @@ URL: [url]', 'nl_NL' => 'Holland', 'no' => 'Nem', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'November', 'now' => 'most', @@ -1492,6 +1505,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => 'Teszt e-mail küldése', 'september' => 'September', 'sequence' => 'Sorrend', diff --git a/languages/id_ID/lang.inc b/languages/id_ID/lang.inc index 031773441..08301f618 100644 --- a/languages/id_ID/lang.inc +++ b/languages/id_ID/lang.inc @@ -299,6 +299,7 @@ URL: [url]

', 'checkout_is_disabled' => 'Check out dokumen dinonaktifkan dalam konfigurasi', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Harap memilih definisi label', @@ -320,6 +321,7 @@ URL: [url]

', 'clear_cache' => 'Hapus cache', 'clear_clipboard' => 'Hapus Papan klip', 'clear_password' => 'Hapus kata sandi', +'click_to_expand_filter_results' => '', 'clipboard' => 'Papan klip', 'close' => 'Tutup', 'color' => 'Warna', @@ -1192,6 +1194,17 @@ URL: [url]', 'nl_NL' => 'Belanda', 'no' => 'Tidak', 'notification' => 'Notifikasi', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => 'Tidak berlangganan', 'november' => 'November', 'now' => 'sekarang', @@ -1582,6 +1595,7 @@ Nama: [username] Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di halaman login untuk mengatur kata sandi baru.', 'send_login_data_subject' => '[sitename]: [login] - Data login anda', +'send_notification' => '', 'send_test_mail' => 'Kirim surel percobaan', 'september' => 'September', 'sequence' => 'Urutan', diff --git a/languages/it_IT/lang.inc b/languages/it_IT/lang.inc index e3fd4dbf9..1441cae0e 100644 --- a/languages/it_IT/lang.inc +++ b/languages/it_IT/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Approvazione dei documenti disabilitata', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Seleziona l\'Attributo', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Pulisci cache', 'clear_clipboard' => 'Cancella appunti', 'clear_password' => 'Cancella la password', +'click_to_expand_filter_results' => '', 'clipboard' => 'Appunti', 'close' => 'Chiudi', 'color' => '', @@ -1106,6 +1108,17 @@ URL: [url]', 'nl_NL' => 'Olandese', 'no' => 'No', 'notification' => 'Notifica', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Novembre', 'now' => 'Adesso', @@ -1538,6 +1551,7 @@ Name: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - I tuoi dati di login', +'send_notification' => '', 'send_test_mail' => 'Invia messagio di prova', 'september' => 'Settembre', 'sequence' => 'Posizione', diff --git a/languages/ko_KR/lang.inc b/languages/ko_KR/lang.inc index ccddc7c19..71e52bd64 100644 --- a/languages/ko_KR/lang.inc +++ b/languages/ko_KR/lang.inc @@ -297,6 +297,7 @@ URL: [url]', 'checkout_is_disabled' => '체크아웃된 문서는 설정에서 비활성화됩니다.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => '속성의 정의를 선택하세요', @@ -318,6 +319,7 @@ URL: [url]', 'clear_cache' => '캐시 비우기', 'clear_clipboard' => '클립 보드 제거', 'clear_password' => '암호 비우기', +'click_to_expand_filter_results' => '', 'clipboard' => '클립보드', 'close' => '닫기', 'color' => '', @@ -1106,6 +1108,17 @@ URL [url]', 'nl_NL' => '네덜란드', 'no' => '아니오', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => '11월', 'now' => '지금', @@ -1509,6 +1522,7 @@ URL : [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => '테스트 메일', 'september' => '9월', 'sequence' => '순서', diff --git a/languages/lo_LA/lang.inc b/languages/lo_LA/lang.inc index 320d9969c..8a501b79d 100644 --- a/languages/lo_LA/lang.inc +++ b/languages/lo_LA/lang.inc @@ -293,6 +293,7 @@ URL: [url]', 'checkout_is_disabled' => 'ໃນການກຳນົດຄ່າເຊັກເອົາເອກະສານໄດ້ຖືກປິດໄຊ້ງານ', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'ກະລຸນາເລືອກນິຍາມແອັດທິບິວ', @@ -314,6 +315,7 @@ URL: [url]', 'clear_cache' => 'ລ້າງແຄຣ', 'clear_clipboard' => 'ລ້າງຄິບບອສ', 'clear_password' => 'ລ້າງລະຫັດ', +'click_to_expand_filter_results' => '', 'clipboard' => 'ຄິບບອດ', 'close' => 'ປຶດ', 'color' => '', @@ -1103,6 +1105,17 @@ URL: [url]', 'nl_NL' => 'ດັສ', 'no' => 'ບໍ່', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'ເດືອນພະຈິກ', 'now' => 'ຕອນນີ້', @@ -1535,6 +1548,7 @@ URL: [url]', [comment]', 'send_login_data_subject' => '[sitename]:[login] - ຂໍ້ມູນການເຂົ້າສູ້ລະບົບຂອງເຈົ້າ', +'send_notification' => '', 'send_test_mail' => 'ສົ່ງອີເມວທົດສອບ', 'september' => 'ເດືອນກັນຍາ', 'sequence' => 'ລຳດັບ', diff --git a/languages/nb_NO/lang.inc b/languages/nb_NO/lang.inc index 6efad18c9..3f70a4374 100644 --- a/languages/nb_NO/lang.inc +++ b/languages/nb_NO/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Sjekk ut av dokumentene er deaktivert i konfigurasjonen.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Velg egenskaps definition', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Tøm cache', 'clear_clipboard' => 'Tøm utklippstavle', 'clear_password' => 'Slett passord', +'click_to_expand_filter_results' => '', 'clipboard' => 'Utklippstavle', 'close' => 'Lukk', 'color' => '', @@ -1124,6 +1126,17 @@ URL: [url]', 'nl_NL' => 'Nederland', 'no' => 'Nei', 'notification' => 'Melding', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'November', 'now' => 'nå', @@ -1548,6 +1561,7 @@ Loginn: [login] Bruker: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - Dine innloggingsdata', +'send_notification' => '', 'send_test_mail' => 'Send test mail', 'september' => 'September', 'sequence' => 'Sekvens', diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc index 084a39eac..493703249 100644 --- a/languages/nl_NL/lang.inc +++ b/languages/nl_NL/lang.inc @@ -288,6 +288,7 @@ URL: [url]', 'checkout_is_disabled' => 'Checkout is niet mogelijk', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Kies een attribuutdefinitie', @@ -309,6 +310,7 @@ URL: [url]', 'clear_cache' => 'Cache leegmaken', 'clear_clipboard' => 'Vrijgeven klembord', 'clear_password' => 'Verwijder het wachtwoord', +'click_to_expand_filter_results' => '', 'clipboard' => 'Klembord', 'close' => 'Sluiten', 'color' => '', @@ -1116,6 +1118,17 @@ URL: [url]', 'nl_NL' => 'Nederlands', 'no' => 'Nee', 'notification' => 'Bericht', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'november', 'now' => 'nu', @@ -1547,6 +1560,7 @@ Name: [username] [comment]', 'send_login_data_subject' => 'Onderwerp', +'send_notification' => '', 'send_test_mail' => 'Testmail versturen', 'september' => 'september', 'sequence' => 'Volgorde', diff --git a/languages/pl_PL/lang.inc b/languages/pl_PL/lang.inc index f81f3298f..74533c5b5 100644 --- a/languages/pl_PL/lang.inc +++ b/languages/pl_PL/lang.inc @@ -283,6 +283,7 @@ URL: [url]', 'checkout_is_disabled' => 'Wyewidencjonowywanie dokumentów jest wyłączone w konfiguracji.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Proszę wybrać definicję atrybutu', @@ -304,6 +305,7 @@ URL: [url]', 'clear_cache' => 'Wyczyść cache', 'clear_clipboard' => 'Oczyść schowek', 'clear_password' => 'Wyczyść hasło', +'click_to_expand_filter_results' => '', 'clipboard' => 'Schowek', 'close' => 'Zamknij', 'color' => 'Kolor', @@ -1093,6 +1095,17 @@ URL: [url]', 'nl_NL' => 'holenderski', 'no' => 'Nie', 'notification' => 'Powiadomienie', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Listopad', 'now' => 'teraz', @@ -1478,6 +1491,7 @@ Name: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - Twoje dane logowania', +'send_notification' => '', 'send_test_mail' => 'Wyślij wiadomość testową', 'september' => 'Wrzesień', 'sequence' => 'Kolejność', diff --git a/languages/pt_BR/lang.inc b/languages/pt_BR/lang.inc index aa48c8128..e9b9a991a 100644 --- a/languages/pt_BR/lang.inc +++ b/languages/pt_BR/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'A retirada de documentos está desativada na configuração.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Por favor escolha a definição de atributo', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Limpar o Cache', 'clear_clipboard' => 'Limpar área de transferência', 'clear_password' => 'Limpar senha', +'click_to_expand_filter_results' => '', 'clipboard' => 'Área de transferência', 'close' => 'Fechar', 'color' => '', @@ -1123,6 +1125,17 @@ URL: [url]', 'nl_NL' => 'Holandês', 'no' => 'Não', 'notification' => 'Notificação', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Novembro', 'now' => 'agora', @@ -1554,6 +1567,7 @@ Nome: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - Suas informações para login', +'send_notification' => '', 'send_test_mail' => 'Enviar email de teste', 'september' => 'Setembro', 'sequence' => 'Sequência', diff --git a/languages/ro_RO/lang.inc b/languages/ro_RO/lang.inc index f525cf9b0..5dd34f0a2 100644 --- a/languages/ro_RO/lang.inc +++ b/languages/ro_RO/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Verificarea documentelor este dezactivata in configurari.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Vă rugăm să alegeți definiția atributului', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Sterge cache', 'clear_clipboard' => 'Goleste clipboard', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Clipboard', 'close' => 'Inchide', 'color' => '', @@ -1105,6 +1107,17 @@ URL: [url]', 'nl_NL' => 'Olandeză', 'no' => 'Nu', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Noiembrie', 'now' => 'nou', @@ -1516,6 +1529,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => 'Trimite e-mail de test', 'september' => 'Septembrie', 'sequence' => 'Poziție', diff --git a/languages/ru_RU/lang.inc b/languages/ru_RU/lang.inc index 184d0bd21..9862259a0 100644 --- a/languages/ru_RU/lang.inc +++ b/languages/ru_RU/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Загрузка отключена.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Выберите атрибут', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Очистить кэш', 'clear_clipboard' => 'Очистить буфер обмена', 'clear_password' => 'Сбросить пароль', +'click_to_expand_filter_results' => '', 'clipboard' => 'Буфер обмена', 'close' => 'Закрыть', 'color' => '', @@ -1104,6 +1106,17 @@ URL: [url]', 'nl_NL' => 'Dutch', 'no' => 'Нет', 'notification' => 'Уведомление', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Ноябрь', 'now' => 'сейчас', @@ -1523,6 +1536,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => 'Отправить тестовое сообщение', 'september' => 'Сентябрь', 'sequence' => 'Позиция', diff --git a/languages/sk_SK/lang.inc b/languages/sk_SK/lang.inc index 33d0db9ac..0770d1d8f 100644 --- a/languages/sk_SK/lang.inc +++ b/languages/sk_SK/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Kontrola dokumentov je zakázaná v konfigurácii.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Vyberte prosím definíciu atribútu', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Vyčistiť pamäť cache', 'clear_clipboard' => 'Vymazať schránku', 'clear_password' => 'Vymazať heslo', +'click_to_expand_filter_results' => '', 'clipboard' => 'Schránka', 'close' => 'Zavrieť', 'color' => '', @@ -1124,6 +1126,17 @@ URL: [url]', 'nl_NL' => 'Holandština', 'no' => 'Nie', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'November', 'now' => 'teraz', @@ -1556,6 +1569,7 @@ Meno: [username] [comment]', 'send_login_data_subject' => '[sitename]: [login] - Vaše prihlasovacie údaje', +'send_notification' => '', 'send_test_mail' => 'Poslať testovací E-mail', 'september' => 'September', 'sequence' => 'Postupnosť', diff --git a/languages/sv_SE/lang.inc b/languages/sv_SE/lang.inc index 60ddfdf5e..f47b98153 100644 --- a/languages/sv_SE/lang.inc +++ b/languages/sv_SE/lang.inc @@ -296,6 +296,7 @@ URL: [url]', 'checkout_is_disabled' => 'Utcheckning av dokument är invaktiverad i systemets inställningar.', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Välj attributdefinition', @@ -317,6 +318,7 @@ URL: [url]', 'clear_cache' => 'Rensa cache', 'clear_clipboard' => 'Rensa urklipp', 'clear_password' => 'Ta bort lösenord', +'click_to_expand_filter_results' => '', 'clipboard' => 'Urklipp', 'close' => 'Stäng', 'color' => '', @@ -1111,6 +1113,17 @@ URL: [url]', 'nl_NL' => 'Holländska', 'no' => 'Nej', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'November', 'now' => 'nu', @@ -1529,6 +1542,7 @@ Namn: [username] Kommentar: [comment]', 'send_login_data_subject' => '[sitename]: [login] - Dina inloggningsuppgifter', +'send_notification' => '', 'send_test_mail' => 'Skicka testmail', 'september' => 'September', 'sequence' => 'Position', diff --git a/languages/tr_TR/lang.inc b/languages/tr_TR/lang.inc index 7b6123467..db37ad551 100644 --- a/languages/tr_TR/lang.inc +++ b/languages/tr_TR/lang.inc @@ -290,6 +290,7 @@ URL: [url]', 'checkout_is_disabled' => '', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Lütfen nitelik tanımını seçiniz', @@ -311,6 +312,7 @@ URL: [url]', 'clear_cache' => 'Ön belleği temizle', 'clear_clipboard' => 'Panoyu temizle', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Pano', 'close' => 'Kapat', 'color' => '', @@ -1097,6 +1099,17 @@ URL: [url]', 'nl_NL' => 'Hollandaca', 'no' => 'Hayır', 'notification' => 'Notlar', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Kasım', 'now' => 'şimdi', @@ -1493,6 +1506,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => 'Test maili gönder', 'september' => 'Eylül', 'sequence' => 'Sıralama', diff --git a/languages/uk_UA/lang.inc b/languages/uk_UA/lang.inc index b1c7f664b..cf4aae837 100644 --- a/languages/uk_UA/lang.inc +++ b/languages/uk_UA/lang.inc @@ -295,6 +295,7 @@ URL: [url]', 'checkout_is_disabled' => 'Завантаження відключене', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => 'Оберіть атрибут', @@ -316,6 +317,7 @@ URL: [url]', 'clear_cache' => 'Очистити кеш', 'clear_clipboard' => 'Очистити буфер обміну', 'clear_password' => '', +'click_to_expand_filter_results' => '', 'clipboard' => 'Буфер обміну', 'close' => 'Закрити', 'color' => '', @@ -1103,6 +1105,17 @@ URL: [url]', 'nl_NL' => 'Dutch', 'no' => 'Ні', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => 'Листопад', 'now' => 'зараз', @@ -1515,6 +1528,7 @@ URL: [url]', 'send_login_data' => '', 'send_login_data_body' => '', 'send_login_data_subject' => '', +'send_notification' => '', 'send_test_mail' => 'Надіслати тестове повідомлення', 'september' => 'Вересень', 'sequence' => 'Позиція', diff --git a/languages/zh_CN/lang.inc b/languages/zh_CN/lang.inc index f30e33587..1694824fb 100644 --- a/languages/zh_CN/lang.inc +++ b/languages/zh_CN/lang.inc @@ -287,6 +287,7 @@ URL: [url]', 'checkout_is_disabled' => '不允许签出', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => '请选择属性', @@ -308,6 +309,7 @@ URL: [url]', 'clear_cache' => '清除缓存', 'clear_clipboard' => '清除粘贴板', 'clear_password' => '清除密码', +'click_to_expand_filter_results' => '', 'clipboard' => '剪切板', 'close' => '关闭', 'color' => '', @@ -1107,6 +1109,17 @@ URL: [url]', 'nl_NL' => '荷兰语', 'no' => '否', 'notification' => '', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => '十一月', 'now' => '现在', @@ -1503,6 +1516,7 @@ URL: [url]', [comment]', 'send_login_data_subject' => '[sitename]: [login] - 您的登录数据', +'send_notification' => '', 'send_test_mail' => '发送测试邮件', 'september' => '九 月', 'sequence' => '次序', diff --git a/languages/zh_TW/lang.inc b/languages/zh_TW/lang.inc index 3b17ffa30..16389fe9a 100644 --- a/languages/zh_TW/lang.inc +++ b/languages/zh_TW/lang.inc @@ -295,6 +295,7 @@ $text = array( 'checkout_is_disabled' => '在配置中禁用了簽出文件功能。', 'check_directory_layout' => '', 'check_failed' => '', +'check_notification_filter' => '', 'check_passed' => '', 'check_secure_installation' => '', 'choose_attrdef' => '請選擇屬性', @@ -316,6 +317,7 @@ $text = array( 'clear_cache' => '清除緩存', 'clear_clipboard' => '清除剪貼簿', 'clear_password' => '清除密碼', +'click_to_expand_filter_results' => '', 'clipboard' => '剪貼簿', 'close' => '關閉', 'color' => '', @@ -1124,6 +1126,17 @@ URL: [url]', 'nl_NL' => '荷蘭語', 'no' => '否', 'notification' => '通知', +'notification_msg_tmpl' => '', +'notification_recvtype' => '', +'notification_recv_any' => '', +'notification_recv_approver' => '', +'notification_recv_notification' => '', +'notification_recv_owner' => '', +'notification_recv_reviewer' => '', +'notification_recv_uploader' => '', +'notification_recv_workflow' => '', +'notification_service_no_filter' => '', +'notification_tmpl' => '', 'not_subscribed' => '', 'november' => '十一月', 'now' => '現在', @@ -1554,6 +1567,7 @@ URL: [url]', [comment]', 'send_login_data_subject' => '[sitename]: [login] - 您的登入資料', +'send_notification' => '', 'send_test_mail' => '寄送測試信件', 'september' => '九 月', 'sequence' => '次序', From cc892ee72a63931c1da026be392b9687dfa53579 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 8 Jul 2024 17:15:04 +0200 Subject: [PATCH 06/30] =?UTF-8?q?add=20page=20for=20=D1=95ending=20test=20?= =?UTF-8?q?notifications?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- op/op.SendNotification.php | 78 ++++++ out/out.SendNotification.php | 60 +++++ views/bootstrap/class.Bootstrap.php | 2 + views/bootstrap/class.SendNotification.php | 278 +++++++++++++++++++++ views/bootstrap4/class.Bootstrap4.php | 2 + 5 files changed, 420 insertions(+) create mode 100644 op/op.SendNotification.php create mode 100644 out/out.SendNotification.php create mode 100644 views/bootstrap/class.SendNotification.php diff --git a/op/op.SendNotification.php b/op/op.SendNotification.php new file mode 100644 index 000000000..0fbd3b076 --- /dev/null +++ b/op/op.SendNotification.php @@ -0,0 +1,78 @@ +$dms, 'user'=>$user)); +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); +if (!$accessop->check_controller_access($controller, $_GET)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'))); + exit; +} + +/* Check if the form data comes from a trusted request */ +if(!checkFormKey('sendnotification', 'GET')) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'))); + exit; +} + +if (!isset($_GET["userid"]) || !is_numeric($_GET["userid"]) || intval($_GET["userid"])<1) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_user_id'))); +} +$userid = $_GET["userid"]; +$newuser = $dms->getUser($userid); + +if (!is_object($newuser)) { + header('Content-Type: application/json'); + echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_user_id'))); + exit; +} + +$recvtype = 1; +if (isset($_GET["recvtype"])) { + $recvtype = (int) $_GET["recvtype"]; +} +$template = 'send_notification'; +if (isset($_GET["template"])) { + $template = $_GET["template"]; +} + +if($notifier) { + header('Content-Type: application/json'); + if($notifier->toIndividual($user, $newuser, $template.'_email_subject', $template.'_email_body', [], $recvtype)) { + echo json_encode(array('success'=>true, 'message'=>getMLText('splash_send_notification'))); + } else { + echo json_encode(array('success'=>false, 'message'=>getMLText('error_send_notification'))); + } +} + diff --git a/out/out.SendNotification.php b/out/out.SendNotification.php new file mode 100644 index 000000000..b44176930 --- /dev/null +++ b/out/out.SendNotification.php @@ -0,0 +1,60 @@ +$dms, 'user'=>$user)); +$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings); +if (!$settings->_enableDebugMode) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +} +if (!$accessop->check_view_access($view, $_GET)) { + UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); +} + +$seluser = null; +if(!empty($_GET['userid'])) { + $userid = (int) $_GET['userid']; + $seluser = $dms->getUser($userid); +} else { + $seluser = $user; +} + +$allusers = $dms->getAllUsers($settings->_sortUsersInList); + +if($view) { + $view->setParam('settings', $settings); + $view->setParam('accessobject', $accessop); + $view->setParam('notifier', $notifier); + $view->setParam('allusers', $allusers); + $view->setParam('seluser', $seluser); + $view($_GET); + exit; +} + + diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 84aadda4c..659724051 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -969,6 +969,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['debug']['children']['hooks'] = array('link'=>$this->params['settings']->_httpRoot."out/out.Hooks.php", 'label'=>getMLText('list_hooks')); if ($accessobject->check_view_access('NotificationServices')) $menuitems['debug']['children']['notification_services'] = array('link'=>$this->params['settings']->_httpRoot."out/out.NotificationServices.php", 'label'=>getMLText('list_notification_services')); + if ($accessobject->check_view_access('SendNotification')) + $menuitems['debug']['children']['send_notification'] = array('link'=>$this->params['settings']->_httpRoot."out/out.SendNotification.php", 'label'=>getMLText('send_notification')); if ($accessobject->check_view_access('ConversionServices')) $menuitems['debug']['children']['conversion_services'] = array('link'=>$this->params['settings']->_httpRoot."out/out.ConversionServices.php", 'label'=>getMLText('list_conversion_services')); } diff --git a/views/bootstrap/class.SendNotification.php b/views/bootstrap/class.SendNotification.php new file mode 100644 index 000000000..91f2de1e3 --- /dev/null +++ b/views/bootstrap/class.SendNotification.php @@ -0,0 +1,278 @@ + + * @copyright Copyright (C) 2002-2005 Markus Westphal, + * 2006-2008 Malcolm Cowe, 2010 Matteo Lucarelli, + * 2010-2024 Uwe Steinmann + * @version Release: @package_version@ + */ + +/** + * Class which outputs the html page for sending a notification + * + * @category DMS + * @package SeedDMS + * @author Uwe Steinmann + * @copyright Copyright (C) 2016 Uwe Steinmann + * @version Release: @package_version@ + */ +class SeedDMS_View_SendNotification extends SeedDMS_Theme_Style { + + var $subjects; + + var $recvtypes; + + public function __construct($params, $theme) { /* {{{ */ + parent::__construct($params, $theme); + $this->subjects = array(); + $this->subjects[] = 'review_request'; + $this->subjects[] = 'approval_request'; + $this->subjects[] = 'new_document'; + $this->subjects[] = 'document_updated'; + $this->subjects[] = 'document_deleted'; + $this->subjects[] = 'version_deleted'; + $this->subjects[] = 'new_subfolder'; + $this->subjects[] = 'folder_deleted'; + $this->subjects[] = 'new_file'; + $this->subjects[] = 'replace_content'; + $this->subjects[] = 'remove_file'; + $this->subjects[] = 'document_attribute_changed'; + $this->subjects[] = 'document_attribute_added'; + $this->subjects[] = 'folder_attribute_changed'; + $this->subjects[] = 'folder_attribute_added'; + $this->subjects[] = 'document_comment_changed'; + $this->subjects[] = 'folder_comment_changed'; + $this->subjects[] = 'version_comment_changed'; + $this->subjects[] = 'document_renamed'; + $this->subjects[] = 'folder_renamed'; + $this->subjects[] = 'document_moved'; + $this->subjects[] = 'folder_moved'; + $this->subjects[] = 'document_transfered'; + $this->subjects[] = 'document_status_changed'; + $this->subjects[] = 'document_notify_added'; + $this->subjects[] = 'folder_notify_added'; + $this->subjects[] = 'document_notify_deleted'; + $this->subjects[] = 'folder_notify_deleted'; + $this->subjects[] = 'review_submit'; + $this->subjects[] = 'approval_submit'; + $this->subjects[] = 'review_deletion'; + $this->subjects[] = 'approval_deletion'; + $this->subjects[] = 'review_request'; + $this->subjects[] = 'approval_request'; + $this->subjects[] = 'document_ownership_changed'; + $this->subjects[] = 'folder_ownership_changed'; + $this->subjects[] = 'document_access_permission_changed'; + $this->subjects[] = 'folder_access_permission_changed'; + $this->subjects[] = 'transition_triggered'; + $this->subjects[] = 'request_workflow_action'; + $this->subjects[] = 'rewind_workflow'; + $this->subjects[] = 'rewind_workflow'; + + $this->recvtypes = array(); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_ANY, getMLText('notification_recv_any')); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_NOTIFICATION, getMLText('notification_recv_notification')); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_OWNER, getMLText('notification_recv_owner')); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_REVIEWER, getMLText('notification_recv_reviewer')); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_APPROVER, getMLText('notification_recv_approver')); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_WORKFLOW, getMLText('notification_recv_workflow')); + $this->recvtypes[] = array(SeedDMS_NotificationService::RECV_UPLOADER, getMLText('notification_recv_uploader')); + } /* }}} */ + + public function js() { /* {{{ */ + header('Content-Type: application/javascript; charset=UTF-8'); +?> +$(document).ready( function() { + $('body').on('click', '#send_notification', function(ev){ + ev.preventDefault(); + var data = $('#form1').serializeArray().reduce(function(obj, item) { + obj[item.name] = item.value; + return obj; + }, {}); + $.get("../op/op.SendNotification.php", $('#form1').serialize()+"&formtoken=", function(response) { + noty({ + text: response.message, + type: response.success === true ? 'success' : 'error', + dismissQueue: true, + layout: 'topRight', + theme: 'defaultTheme', + timeout: 1500, + }); + }); + }); +}); +params['dms']; + $user = $this->params['user']; + $notifier = $this->params['notifier']; + $allusers = $this->params['allusers']; + $seluser = $this->params['seluser']; + + $services = $notifier->getServices(); + foreach($services as $name => $service) { + $this->contentHeading($name); + if(is_callable([$service, 'filter'])) { + $content = ''; + $content .= ""; + $content .= ""; + array_shift($this->recvtypes); + foreach($this->recvtypes as $recvtype) { + $content .= ""; + } + $content .= ""; + foreach($this->subjects as $subject) { + $content .= ""; + foreach($this->recvtypes as $recvtype) { + if($service->filter($user, $seluser, $subject.'_email_subject', $subject.'_email_body', [], $recvtype[0])) { + $content .= ""; + } else { + $content .= ""; + } + } + $content .= ""; + } + $content .= "
".getMLText('notification_msg_tmpl')."/".getMLText('notification_recvtype')."".$recvtype[1]."
".$subject."
"; + $this->printAccordion(getMLText('click_to_expand_filter_results'), $content); + } else { + $this->infoMsg(getMLText('notification_service_no_filter')); + } + } + + } /* }}} */ + + public function show() { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $notifier = $this->params['notifier']; + $allusers = $this->params['allusers']; + $seluser = $this->params['seluser']; + + $this->htmlStartPage(getMLText("admin_tools")); + $this->globalNavigation(); + $this->contentStart(); + $this->pageNavigation(getMLText("admin_tools"), "admin_tools"); + $this->contentHeading(getMLText("send_notification")); + + $this->rowStart(); + $this->columnStart(4); +?> +
+contentContainerStart(); + $options = array(); + foreach ($allusers as $currUser) { + if ($currUser->isGuest() ) + continue; + + $options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin()." - ".$currUser->getFullName()), $seluser && $seluser->getId() == $currUser->getId()); + } + $this->formField( + getMLText("user"), + array( + 'element'=>'select', + 'name'=>'userid', + 'class'=>'chzn-select', + 'options'=>$options + ) + ); + + $options = array(); + $options[] = array(SeedDMS_NotificationService::RECV_ANY, getMLText('notification_recv_any')); + $options[] = array(SeedDMS_NotificationService::RECV_NOTIFICATION, getMLText('notification_recv_notification')); + $options[] = array(SeedDMS_NotificationService::RECV_OWNER, getMLText('notification_recv_owner')); + $options[] = array(SeedDMS_NotificationService::RECV_REVIEWER, getMLText('notification_recv_reviewer')); + $options[] = array(SeedDMS_NotificationService::RECV_APPROVER, getMLText('notification_recv_approver')); + $options[] = array(SeedDMS_NotificationService::RECV_WORKFLOW, getMLText('notification_recv_workflow')); + $options[] = array(SeedDMS_NotificationService::RECV_UPLOADER, getMLText('notification_recv_uploader')); + $this->formField( + getMLText("notification_recvtype"), + array( + 'element'=>'select', + 'name'=>'recvtype', + 'class'=>'chzn-select', + 'options'=>$options + ) + ); + $options = array(); + $options[] = array('review_request', 'review_request'); + $options[] = array('approval_request', 'approval_request'); + $options[] = array('new_document', 'new_document'); + $options[] = array('document_updated', 'document_updated'); + $options[] = array('document_deleted', 'document_deleted'); + $options[] = array('version_deleted', 'version_deleted'); + $options[] = array('new_subfolder', 'new_subfolder'); + $options[] = array('folder_deleted', 'folder_deleted'); + $options[] = array('new_file', 'new_file'); + $options[] = array('replace_content', 'replace_content'); + $options[] = array('remove_file', 'remove_file'); + $options[] = array('document_attribute_changed', 'document_attribute_changed'); + $options[] = array('document_attribute_added', 'document_attribute_added'); + $options[] = array('folder_attribute_changed', 'folder_attribute_changed'); + $options[] = array('folder_attribute_added', 'folder_attribute_added'); + $options[] = array('document_comment_changed', 'document_comment_changed'); + $options[] = array('folder_comment_changed', 'folder_comment_changed'); + $options[] = array('version_comment_changed', 'version_comment_changed'); + $options[] = array('document_renamed', 'document_renamed'); + $options[] = array('folder_renamed', 'folder_renamed'); + $options[] = array('document_moved', 'document_moved'); + $options[] = array('folder_moved', 'folder_moved'); + $options[] = array('document_transfered', 'document_transfered'); + $options[] = array('document_status_changed', 'document_status_changed'); + $options[] = array('document_notify_added', 'document_notify_added'); + $options[] = array('folder_notify_added', 'folder_notify_added'); + $options[] = array('document_notify_deleted', 'document_notify_deleted'); + $options[] = array('folder_notify_deleted', 'folder_notify_deleted'); + $options[] = array('review_submit', 'review_submit'); + $options[] = array('approval_submit', 'approval_submit'); + $options[] = array('review_deletion', 'review_deletion'); + $options[] = array('approval_deletion', 'approval_deletion'); + $options[] = array('review_request', 'review_request'); + $options[] = array('approval_request', 'approval_request'); + $options[] = array('document_ownership_changed', 'document_ownership_changed'); + $options[] = array('folder_ownership_changed', 'folder_ownership_changed'); + $options[] = array('document_access_permission_changed', 'document_access_permission_changed'); + $options[] = array('folder_access_permission_changed', 'folder_access_permission_changed'); + $options[] = array('transition_triggered', 'transition_triggered'); + $options[] = array('request_workflow_action', 'request_workflow_action'); + $options[] = array('rewind_workflow', 'rewind_workflow'); + $this->formField( + getMLText("notification_msg_tmpl"), + array( + 'element'=>'select', + 'name'=>'template', + 'class'=>'chzn-select', + 'options'=>$options + ) + ); + $this->contentContainerEnd(); + $buttons = []; + $names = []; + $buttons[] = ' '.getMLText('send_notification'); + $names[] = "send_notification"; + $buttons[] = ' '.getMLText('check_notification_filter'); + $names[] = "check_filter"; + $this->formSubmit($buttons, $names); +?> +
+columnEnd(); + $this->columnStart(8); +?> +
+columnEnd(); + $this->rowEnd(); + $this->contentEnd(); + $this->htmlEndPage(); + } /* }}} */ +} + + diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 3de05af2c..7d78aeffc 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -957,6 +957,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $menuitems['debug']['children']['hooks'] = array('link'=>$this->params['settings']->_httpRoot."out/out.Hooks.php", 'label'=>getMLText('list_hooks')); if ($accessobject->check_view_access('NotificationServices')) $menuitems['debug']['children']['notification_services'] = array('link'=>$this->params['settings']->_httpRoot."out/out.NotificationServices.php", 'label'=>getMLText('list_notification_services')); + if ($accessobject->check_view_access('SendNotification')) + $menuitems['debug']['children']['send_notification'] = array('link'=>$this->params['settings']->_httpRoot."out/out.SendNotification.php", 'label'=>getMLText('send_notification')); if ($accessobject->check_view_access('ConversionServices')) $menuitems['debug']['children']['conversion_services'] = array('link'=>$this->params['settings']->_httpRoot."out/out.ConversionServices.php", 'label'=>getMLText('list_conversion_services')); } From b12cd07c5add9d52bc46c799f715ce0c24163144 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 8 Jul 2024 17:16:31 +0200 Subject: [PATCH 07/30] add changes for 5.1.36 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index b9ff64c01..7ee607f82 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ -------------------------------------------------------------------------------- Changes in version 5.1.36 -------------------------------------------------------------------------------- +- add new page for send test notification -------------------------------------------------------------------------------- Changes in version 5.1.35 From 8854ae5543432196e23d79bc5b62988387605c6c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Jul 2024 19:48:13 +0200 Subject: [PATCH 08/30] remove deprecated function formatted_size() --- inc/inc.Utils.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/inc/inc.Utils.php b/inc/inc.Utils.php index 4b484143a..c8dd2184d 100644 --- a/inc/inc.Utils.php +++ b/inc/inc.Utils.php @@ -18,14 +18,6 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -/* deprecated! use SeedDMS_Core_File::format_filesize() instead */ -function formatted_size($size_bytes) { /* {{{ */ - if ($size_bytes>1000000000) return number_format($size_bytes/1000000000,1,".","")." GBytes"; - else if ($size_bytes>1000000) return number_format($size_bytes/1000000,1,".","")." MBytes"; - else if ($size_bytes>1000) return number_format($size_bytes/1000,1,".","")." KBytes"; - return number_format($size_bytes,0,"","")." Bytes"; -} /* }}} */ - /* Date picker needs a different syntax for date formats using * yyyy for %Y * yy for %y @@ -753,6 +745,7 @@ function get_extension($mimetype) { /* {{{ */ case 'application/x-gzip': return '.gz'; case 'application/x-rar': return '.rar'; case 'application/x-compressed-tar': return '.tgz'; + case 'application/x-xopp': return '.xopp'; case 'application/pdf': return '.pdf'; case 'application/dxf': return '.dxf'; case 'application/msword': return '.doc'; From 9e6573ecc7eef394e2b211fc456d39a0379e3815 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 11 Jul 2024 19:48:57 +0200 Subject: [PATCH 09/30] add conversion for application/x-xopp --- doc/README.Converters | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/README.Converters b/doc/README.Converters index fc4d18eb2..5f278412e 100644 --- a/doc/README.Converters +++ b/doc/README.Converters @@ -78,6 +78,14 @@ message/rfc822 text/plain iconv -c -f utf-8 -t latin1 '%f' | a2ps -1 -q -a1 -R -B -o - - | ps2pdf - - +application/x-xopp + + xournalpp -p "%o" "%f" + + Converting from application/x-xopp to pdf only works if the xopp file + does not use a pdf document as a background, because this pdf is not + stored in the xopp fіle. + Conversion to png for preview images ===================================== @@ -150,3 +158,10 @@ video/mp4 audio/mpeg sox "%f" -n spectrogram -x 600 -Y 550 -r -l -o - | convert -resize %wx png:- "png:%o" + +application/x-xopp + xournalpp -i "%o" --export-png-width=%w "%f" + + Converting from application/x-xopp to png only works if the xopp file + does not use a pdf document as a background, because this pdf is not + stored in the xopp fіle. From 5202240f2ff8fe189a9281cee07551e18adb47f3 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 31 Jul 2024 11:17:05 +0200 Subject: [PATCH 10/30] create Access Operation for view --- out/out.EditFolder.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/out/out.EditFolder.php b/out/out.EditFolder.php index 2ebba2de3..516ed85f8 100644 --- a/out/out.EditFolder.php +++ b/out/out.EditFolder.php @@ -46,8 +46,6 @@ if ($folder->getAccessMode($user) < M_READWRITE) { UI::exitError(getMLText("folder_title", array("foldername" => htmlspecialchars($folder->getName()))),getMLText("access_denied")); } -$accessop = new SeedDMS_AccessOperation($dms, $folder, $user, $settings); - $attrdefs = $dms->getAllAttributeDefinitions(array(SeedDMS_Core_AttributeDefinition::objtype_folder, SeedDMS_Core_AttributeDefinition::objtype_all)); if($view) { From 0e8d2ea1652e17f88de410fd1c39da0312ad1b9b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 31 Jul 2024 11:20:09 +0200 Subject: [PATCH 11/30] remove empty line --- views/bootstrap4/class.Bootstrap4.php | 1 - 1 file changed, 1 deletion(-) diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 7d78aeffc..78b26c177 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -2348,7 +2348,6 @@ $(document).ready(function() { } else { $tree[] = $node; } - } else { if($root = $this->params['dms']->getFolder($this->params['rootfolderid'])) $tree = array(array('label'=>$root->getName(), 'id'=>$root->getID(), 'load_on_demand'=>false, 'is_folder'=>true)); From 3a6e03d306b31410352a16dbc601432e0cc76c44 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 31 Jul 2024 11:20:22 +0200 Subject: [PATCH 12/30] add changes of 5.1.36 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 7ee607f82..260f928e0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Changes in version 5.1.36 -------------------------------------------------------------------------------- - add new page for send test notification +- remove deprecated function formatted_size() -------------------------------------------------------------------------------- Changes in version 5.1.35 From a7e91725571f8cb18b49a3b536f5bbc775104817 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2024 08:33:35 +0200 Subject: [PATCH 13/30] fix fold marks --- op/op.Download.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/op/op.Download.php b/op/op.Download.php index 221fe4a42..d5ae4d213 100644 --- a/op/op.Download.php +++ b/op/op.Download.php @@ -223,7 +223,8 @@ elseif (isset($_GET["dumpname"])) { /* {{{ */ header("Cache-Control: must-revalidate"); sendFile($backupdir .$filename ); -} elseif (isset($_GET["reviewlogid"])) { +} /* }}} */ +elseif (isset($_GET["reviewlogid"])) { /* {{{ */ 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")); } From 13d9717f741c476c01a63756a232fc504b56905f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2024 09:48:32 +0200 Subject: [PATCH 14/30] use new method getRealChecksum() and getRealMimeType() --- views/bootstrap/class.ViewDocument.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 8c970d388..698923c57 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -343,7 +343,7 @@ $(document).ready( function() { if($file->getName() != $file->getOriginalFileName()) print "
  • ".htmlspecialchars($file->getOriginalFileName())."
  • \n"; if ($file_exists) { - $realmimetype = SeedDMS_Core_File::mimetype($dms->contentDir . $file->getPath()); + $realmimetype = $file->getRealMimeType(); print "
  • ".SeedDMS_Core_File::format_filesize(filesize($dms->contentDir . $file->getPath())) ." bytes, ".htmlspecialchars($file->getMimeType())."
  • "; } else print "
  • ".htmlspecialchars($file->getMimeType())." - ".getMLText("document_deleted")."
  • "; @@ -747,7 +747,7 @@ $(document).ready( function() { print "
  • ". SeedDMS_Core_File::format_filesize($latestContent->getFileSize()) .", "; print htmlspecialchars($latestContent->getMimeType()); if($user->isAdmin()) { - $realmimetype = SeedDMS_Core_File::mimetype($dms->contentDir . $latestContent->getPath()); + $realmimetype = $latestContent->getRealMimeType(); if($realmimetype != $latestContent->getMimeType()) echo " getId()."\" data-param3=\"formtoken=".createFormKey('setmimetype')."\" title=\"".htmlspecialchars($realmimetype)."\"> "; } @@ -1012,7 +1012,7 @@ $(document).ready( function() { exit; } - $checksum = SeedDMS_Core_File::checksum($dms->contentDir.$latestContent->getPath()); + $checksum = $latestContent->getRealChecksum($latestContent); if($checksum != $latestContent->getChecksum()) { $this->errorMsg(getMLText('wrong_checksum')); } From 154ec361ed9f288c9005dd87af284ec94288f619 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2024 09:49:06 +0200 Subject: [PATCH 15/30] get new method getRealMimeType() --- op/op.Ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.Ajax.php b/op/op.Ajax.php index 0432a19f1..34dbb484b 100644 --- a/op/op.Ajax.php +++ b/op/op.Ajax.php @@ -659,7 +659,7 @@ switch($command) { if($content) { $document = $content->getDocument(); if ($document->getAccessMode($user) >= M_READWRITE) { - $realmimetype = SeedDMS_Core_File::mimetype($dms->contentDir . $content->getPath()); + $realmimetype = $content->getRealMimeType(); if (!$content->setMimeType($realmimetype)) { header('Content-Type: application/json'); echo json_encode(array('success'=>false, 'message'=>'Error setting mimetype', 'data'=>'')); From 2d721e542e4871a86d3de35c6939989b3a4e0e00 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2024 10:25:23 +0200 Subject: [PATCH 16/30] add function formatFileSize() --- views/bootstrap/styles/application.js | 32 ++++++++++++++++++++++++++ views/bootstrap4/styles/application.js | 32 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/views/bootstrap/styles/application.js b/views/bootstrap/styles/application.js index d463d1779..de2fe8996 100644 --- a/views/bootstrap/styles/application.js +++ b/views/bootstrap/styles/application.js @@ -38,6 +38,38 @@ function escapeHtml(text) { return text.replace(/[&<>"']/g, function(m) { return map[m]; }); } +/** + * Format bytes as human-readable text. + * + * @param bytes Number of bytes. + * @param si True to use metric (SI) units, aka powers of 1000. False to use + * binary (IEC), aka powers of 1024. + * @param dp Number of decimal places to display. + * + * @return Formatted string. + */ +function formatFileSize(bytes, si=false, dp=1) { + const thresh = si ? 1000 : 1024; + + if (Math.abs(bytes) < thresh) { + return bytes + ' B'; + } + + const units = si + ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; + let u = -1; + const r = 10**dp; + + do { + bytes /= thresh; + ++u; + } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1); + + + return bytes.toFixed(dp) + ' ' + units[u]; +} + function treeFolderSelected(formid, nodeid, nodename) { $('#'+formid).val(nodeid); $('#choosefoldersearch'+formid).val(nodename); diff --git a/views/bootstrap4/styles/application.js b/views/bootstrap4/styles/application.js index 4f22e48e0..244fa391c 100644 --- a/views/bootstrap4/styles/application.js +++ b/views/bootstrap4/styles/application.js @@ -38,6 +38,38 @@ function escapeHtml(text) { return text.replace(/[&<>"']/g, function(m) { return map[m]; }); } +/** + * Format bytes as human-readable text. + * + * @param bytes Number of bytes. + * @param si True to use metric (SI) units, aka powers of 1000. False to use + * binary (IEC), aka powers of 1024. + * @param dp Number of decimal places to display. + * + * @return Formatted string. + */ +function formatFileSize(bytes, si=false, dp=1) { + const thresh = si ? 1000 : 1024; + + if (Math.abs(bytes) < thresh) { + return bytes + ' B'; + } + + const units = si + ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; + let u = -1; + const r = 10**dp; + + do { + bytes /= thresh; + ++u; + } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1); + + + return bytes.toFixed(dp) + ' ' + units[u]; +} + function treeFolderSelected(formid, nodeid, nodename) { $('#'+formid).val(nodeid); $('#choosefoldersearch'+formid).val(nodename); From 7f94f38ed289f0b1c1f2932df0ab62e0c400758b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 12 Aug 2024 10:25:54 +0200 Subject: [PATCH 17/30] add chart to short increase of disk space over time --- views/bootstrap/class.Charts.php | 45 +++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/views/bootstrap/class.Charts.php b/views/bootstrap/class.Charts.php index b379f17e4..7cc076860 100644 --- a/views/bootstrap/class.Charts.php +++ b/views/bootstrap/class.Charts.php @@ -90,6 +90,48 @@ if(in_array($type, array('docspermonth'))) { } }); + var data = [ +$rec) { + $key = mktime(12, 0, 0, substr($rec['key'], 5, 2), 1, substr($rec['key'], 0, 4)) * 1000; + echo '["'.$rec['key'].'",'.$rec['total'].'],'."\n"; + } + } +?> + ]; + $.plot("#chart", [data], { + xaxis: { + mode: "categories", + tickLength: 0, + }, + series: { + bars: { + show: true, + align: "center", + barWidth: 0.8, + }, + }, + grid: { + hoverable: true, + clickable: true + } + }); + + $("#chart").bind("plothover", function (event, pos, item) { + if(item) { + var x = item.datapoint[0];//.toFixed(2), + y = item.datapoint[1];//.toFixed(2); + $("#tooltip").html(item.series.xaxis.ticks[x].label + ": " + formatFileSize(y, false, 2)) + .css({top: pos.pageY-35, left: pos.pageX+5}) + .fadeIn(200); + } else { + $("#tooltip").hide(); + } + }); + var data = [ @@ -208,7 +250,7 @@ $(document).ready( function() { $this->columnStart(3); $this->contentHeading(getMLText("chart_selection")); $this->contentContainerStart(); - foreach(array('docsperuser', 'foldersperuser', 'sizeperuser', 'docspermimetype', 'docspercategory', 'docsperstatus', 'docspermonth', 'docsaccumulated') as $atype) { + foreach(array('docsperuser', 'foldersperuser', 'sizeperuser', 'sizepermonth','docspermimetype', 'docspercategory', 'docsperstatus', 'docspermonth', 'docsaccumulated') as $atype) { echo "\n"; } $this->contentContainerEnd(); @@ -265,6 +307,7 @@ $(document).ready( function() { } break; case 'sizeperuser': + case 'sizepermonth': foreach($data as $item) { echo "".htmlspecialchars($item['key'])."".SeedDMS_Core_File::format_filesize((int) $item['total']).""; $total += $item['total']; From 6fc30510cd646ee40d928105570d2eb87347b832 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 15 Aug 2024 13:35:25 +0200 Subject: [PATCH 18/30] actually exclude files set with --exclude --- utils/importfs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/importfs.php b/utils/importfs.php index ede4570d7..68cf1ebd2 100644 --- a/utils/importfs.php +++ b/utils/importfs.php @@ -233,7 +233,7 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat $sequence = 1; while(false !== ($entry = $d->read())) { $path = $dirname.'/'.$entry; - if($entry != '.' && $entry != '..' && $entry != '.svn') { + if(!in_array($entry, $excludefiles)) { if(is_file($path)) { $name = utf8_basename($path); $filetmp = $path; From 54c7c491378762093dac61baf874cddfa19ae2ae Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 16 Aug 2024 11:29:03 +0200 Subject: [PATCH 19/30] add help for checkboxes, add checkbox to add base folder --- views/bootstrap/class.ImportFS.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/views/bootstrap/class.ImportFS.php b/views/bootstrap/class.ImportFS.php index a3f7bbd7c..6f0d3c583 100644 --- a/views/bootstrap/class.ImportFS.php +++ b/views/bootstrap/class.ImportFS.php @@ -63,6 +63,17 @@ class SeedDMS_View_ImportFS extends SeedDMS_Theme_Style { getMLText("dropfolder_metadata"), $this->getDropFolderChooserHtml("form2", "", 0, 1) ); + $this->formField( + getMLText("createSubFolderForImportedFiles"), + array( + 'element'=>'input', + 'type'=>'checkbox', + 'name'=>'createfolder', + 'value'=>'1', + ), array( + 'help'=>getMLText('createSubFolderForImportedFiles_desc'), + ) + ); $this->formField( getMLText("removeFolderFromDropFolder"), array( @@ -70,6 +81,8 @@ class SeedDMS_View_ImportFS extends SeedDMS_Theme_Style { 'type'=>'checkbox', 'name'=>'remove', 'value'=>'1' + ), array( + 'help'=>getMLText('removeFolderFromDropFolder_desc'), ) ); $this->formField( @@ -79,6 +92,8 @@ class SeedDMS_View_ImportFS extends SeedDMS_Theme_Style { 'type'=>'checkbox', 'name'=>'setfiledate', 'value'=>'1' + ), array( + 'help'=>getMLText('setDateFromFile_desc'), ) ); $this->formField( @@ -88,6 +103,8 @@ class SeedDMS_View_ImportFS extends SeedDMS_Theme_Style { 'type'=>'checkbox', 'name'=>'setfolderdate', 'value'=>'1' + ), array( + 'help'=>getMLText('setDateFromFolder_desc'), ) ); $this->contentContainerEnd(); From 165a5ef31e7f13d0dfd4240fee8d494921ee22bd Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Fri, 16 Aug 2024 11:29:30 +0200 Subject: [PATCH 20/30] base folder can be skipped --- op/op.ImportFS.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index 260b2c487..a260ce351 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -90,7 +90,7 @@ if(!empty($_GET["dropfolderfileform2"])) { $colmap[$i] = array("getCategoryData", $colname); } elseif(in_array($colname, array('owner'))) { $colmap[$i] = array("getUserData", $colname); - } elseif(in_array($colname, array('filename', 'category', 'name', 'comment'))) { + } elseif(in_array($colname, array('filename', 'keywords', 'name', 'comment'))) { $colmap[$i] = array("getBaseData", $colname); } elseif(substr($colname, 0, 5) == 'attr:') { $kk = explode(':', $colname, 2); @@ -211,10 +211,19 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat } /* }}} */ $foldercount = $doccount = 0; -if($newfolder = $folder->addSubFolder($_GET["dropfolderfileform1"], '', $user, 1)) { - if($setfolderdate) { - $newfolder->setDate(filemtime($dirname)); +if($_GET['createfolder']) { + if($newfolder = $folder->addSubFolder($_GET["dropfolderfileform1"], '', $user, 1)) { + if($setfolderdate) { + $newfolder->setDate(filemtime($dirname)); + } + } else { + $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs'))); } +} else { + $newfolder = $folder; +} + +if($newfolder) { if(!import_folder($dirname, $newfolder, $setfiledate, $setfolderdate, $metadata)) $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs'))); else { @@ -225,8 +234,6 @@ if($newfolder = $folder->addSubFolder($_GET["dropfolderfileform1"], '', $user, 1 } $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_importfs', array('docs'=>$doccount, 'folders'=>$foldercount)))); } -} else { - $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs'))); } header("Location:../out/out.ViewFolder.php?folderid=".$newfolder->getID()); From 7a322702afd0ab1ecc0b444ab4d4c63c05c1982a Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 19 Aug 2024 20:03:12 +0200 Subject: [PATCH 21/30] add another converter for pdf to png using pdftocairo --- doc/README.Converters | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/README.Converters b/doc/README.Converters index 5f278412e..e2cdebf72 100644 --- a/doc/README.Converters +++ b/doc/README.Converters @@ -119,7 +119,12 @@ application/pdf convert -density 100 -resize %wx '%f[0]' 'png:%o' - mutool draw -F png -w %w -q -N -o %o %f 1 + mutool draw -F png -w %w -q -N -o '%o' '%f' 1 + + pdftocairo '%f' -png -singlefile -scale-to-x %w -scale-to-y -1 - > '%o' + + pdftocairo needs to output to stdout because the output file name passed + to pdftocairo will be suffixed with png application/postscript convert -density 100 -resize %wx '%f[0]' 'png:%o' From 7e326443077277074b6f3e64703da5ffa270f769 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Mon, 19 Aug 2024 20:03:48 +0200 Subject: [PATCH 22/30] set 'referer' in View to HTTP_REFERER --- inc/inc.ClassUI.php | 1 + 1 file changed, 1 insertion(+) diff --git a/inc/inc.ClassUI.php b/inc/inc.ClassUI.php index 222deca44..16730f2f5 100644 --- a/inc/inc.ClassUI.php +++ b/inc/inc.ClassUI.php @@ -127,6 +127,7 @@ class UI extends UI_Default { $params['settings'] = $settings; $view = new $classname($params, $theme); /* Set some configuration parameters */ + $view->setParam('referer', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''); $view->setParam('refferer', $_SERVER['REQUEST_URI']); $view->setParam('absbaseprefix', $settings->_httpRoot.$httpbasedir); $view->setParam('theme', $theme); From 3618a72313144fed23c17f32db85f766bbd2af9b Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 21 Aug 2024 16:43:09 +0200 Subject: [PATCH 23/30] fix setting attributes --- op/op.ImportFS.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index a260ce351..ad4a4d084 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -61,7 +61,7 @@ function getAttributeData($attrdef, $coldata, $objdata) { /* {{{ */ function getCategoryData($colname, $coldata, $objdata) { /* {{{ */ global $catids; $kk = explode(',', $coldata); - $objdata['category'][] = array(); + $objdata['category'] = array(); foreach($kk as $k) { if(isset($catids[$k])) $objdata['category'][] = $catids[$k]; From 83f0cfff8d63e9d81c6787298531be1fa3a8e645 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 21 Aug 2024 16:43:54 +0200 Subject: [PATCH 24/30] remove old code --- op/op.ImportFS.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index ad4a4d084..2d88c203d 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -100,7 +100,7 @@ if(!empty($_GET["dropfolderfileform2"])) { } } } -// echo "
    ";print_r($colmap);echo "
    "; +// echo "
    ";var_dump($colmap);echo "
    ";exit; if(count($colmap) > 1) { $nameprefix = dirname($dirname).'/'; $allcats = $dms->getDocumentCategories(); @@ -113,8 +113,6 @@ if(!empty($_GET["dropfolderfileform2"])) { $userids[$muser->getLogin()] = $muser; while(!feof($fp)) { if($data = fgetcsv($fp, 0, $csvdelim, $csvencl)) { - $mi = $nameprefix.$data[$colmap['filename']]; -// $metadata[$mi] = array('category'=>array()); $md = array(); $md['attributes'] = array(); foreach($data as $i=>$coldata) { @@ -130,7 +128,6 @@ if(!empty($_GET["dropfolderfileform2"])) { } } //echo "
    ";print_r($metadata);echo "
    "; -//exit; $setfiledate = false; if(isset($_GET['setfiledate']) && $_GET["setfiledate"]) { From 65299463f4ca53f8f61322452299154c68503f0f Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Wed, 21 Aug 2024 16:44:19 +0200 Subject: [PATCH 25/30] do some logging --- op/op.ImportFS.php | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/op/op.ImportFS.php b/op/op.ImportFS.php index 2d88c203d..d5f3f90c2 100644 --- a/op/op.ImportFS.php +++ b/op/op.ImportFS.php @@ -140,7 +140,7 @@ if(isset($_GET['setfolderdate']) && $_GET["setfolderdate"]) { } function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadata) { /* {{{ */ - global $user, $doccount, $foldercount; + global $user, $doccount, $foldercount, $logger; $d = dir($dirname); $sequence = 1; @@ -169,7 +169,9 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat $comment = !empty($metadata[$path]['comment']) ? $metadata[$path]['comment'] : ''; $owner = !empty($metadata[$path]['owner']) ? $metadata[$path]['owner'] : $user; - echo $mimetype." - ".$filetype." - ".$path."
    \n"; +// echo $mimetype." - ".$filetype." - ".$path."
    \n"; + if($logger) + $logger->log('ImportFS: importing \''.$path.'\' '.(!empty($metadata[$path]['attributes']) ? 'with' : 'without').' metadata', PEAR_LOG_INFO); if($res = $folder->addDocument($docname, $comment, $expires, $owner, $keywords, !empty($metadata[$path]['category']) ? $metadata[$path]['category'] : array(), $filetmp, $name, $filetype, $mimetype, $sequence, $reviewers, @@ -182,10 +184,11 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat $lc = $newdoc->getLatestContent(); $lc->setDate(filemtime($path)); } + if($logger) + $logger->log('ImportFS: imported \''.$path.'\' as document '.$res[0]->getId(), PEAR_LOG_INFO); } else { - echo "Error importing ".$path."
    "; - echo "
    ".print_r($res, true)."
    "; -// return false; + if($logger) + $logger->log('ImportFS: importing \''.$path.'\' failed.', PEAR_LOG_ERR); } set_time_limit(30); } elseif(is_dir($path)) { @@ -195,10 +198,13 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat if($setfolderdate) { $newfolder->setDate(filemtime($path)); } + if($logger) + $logger->log('ImportFS: creating folder \''.$path.'\' as folder '.$newfolder->getId(), PEAR_LOG_INFO); if(!import_folder($path, $newfolder, $setfiledate, $setfolderdate, $metadata)) return false; } else { -// return false; + if($logger) + $logger->log('ImportFS: creating folder \''.$path.'\' failed.', PEAR_LOG_ERR); } } $sequence++; @@ -208,19 +214,27 @@ function import_folder($dirname, $folder, $setfiledate, $setfolderdate, $metadat } /* }}} */ $foldercount = $doccount = 0; -if($_GET['createfolder']) { +if(!empty($_GET['createfolder'])) { if($newfolder = $folder->addSubFolder($_GET["dropfolderfileform1"], '', $user, 1)) { if($setfolderdate) { $newfolder->setDate(filemtime($dirname)); } + if($logger) + $logger->log('ImportFS: creating folder \''.$_GET["dropfolderfileform1"].'\' as folder '.$newfolder->getId(), PEAR_LOG_INFO); } else { - $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs'))); + if($logger) + $logger->log('ImportFS: creating folder \''.$_GET["dropfolderfileform1"].'\' failed.', PEAR_LOG_ERR); } } else { $newfolder = $folder; } if($newfolder) { + if($logger) { + $logger->log('ImportFS: importing into folder '.$newfolder->getId(), PEAR_LOG_INFO); + if($metadata) + $logger->log('ImportFS: using metadata for '.count($metadata).' files from file \''.$metadatafile.'\'', PEAR_LOG_INFO); + } if(!import_folder($dirname, $newfolder, $setfiledate, $setfolderdate, $metadata)) $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs'))); else { @@ -231,6 +245,8 @@ if($newfolder) { } $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_importfs', array('docs'=>$doccount, 'folders'=>$foldercount)))); } +} else { + $session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('error_importfs'))); } header("Location:../out/out.ViewFolder.php?folderid=".$newfolder->getID()); From 34743e31775b87c3187ab515ef6b857bab6f9923 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 31 Aug 2024 12:24:31 +0200 Subject: [PATCH 26/30] fix error in attributes of select menus --- views/bootstrap/class.Settings.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/views/bootstrap/class.Settings.php b/views/bootstrap/class.Settings.php index 8bc7d2024..330ac5baa 100644 --- a/views/bootstrap/class.Settings.php +++ b/views/bootstrap/class.Settings.php @@ -222,7 +222,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { $selections = $settings->{"_".$name}; else $selections = explode(',', $settings->{"_".$name}); - echo ""; if($allowempty) echo ""; foreach($users as $curuser) { @@ -253,7 +253,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style { $selections = $settings->{"_".$name}; else $selections = explode(',', $settings->{"_".$name}); - echo ""; if($allowempty) echo ""; foreach($groups as $curgroup) { @@ -661,7 +661,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) case "categories": $categories = $dms->getDocumentCategories(); if($categories) { - echo ""; if($allowempty) echo ""; foreach($categories as $category) { @@ -676,7 +676,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) case "users": $users = $dms->getAllUsers(); if($users) { - echo ""; if($allowempty) echo ""; foreach($users as $curuser) { @@ -691,7 +691,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) case "groups": $recs = $dms->getAllGroups(); if($recs) { - echo ""; if($allowempty) echo ""; foreach($recs as $rec) { @@ -708,7 +708,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) $attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype']; $recs = $dms->getAllAttributeDefinitions($objtype, $attrtype); if($recs) { - echo ""; if($allowempty) echo ""; foreach($recs as $rec) { @@ -725,7 +725,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk)) case "workflows": $recs = $dms->getAllWorkflows(); if($recs) { - echo ""; if($allowempty) echo ""; foreach($recs as $rec) { From aae0d004c30164237b10c06be3a67713100335be Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sat, 31 Aug 2024 12:24:58 +0200 Subject: [PATCH 27/30] add changes --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 260f928e0..c41aef398 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ -------------------------------------------------------------------------------- - add new page for send test notification - remove deprecated function formatted_size() +- fix bugs when importing files from filesystem with metadata, better logging -------------------------------------------------------------------------------- Changes in version 5.1.35 From 0ceb6d602c1f419d28b5c175eca6351be8eec19c Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 1 Sep 2024 09:29:12 +0200 Subject: [PATCH 28/30] fix potential xss attack when showing log file --- CHANGELOG | 1 + views/bootstrap/class.LogManagement.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index c41aef398..f981cd9cd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ - add new page for send test notification - remove deprecated function formatted_size() - fix bugs when importing files from filesystem with metadata, better logging +- fix potential xss attack when showing log file -------------------------------------------------------------------------------- Changes in version 5.1.35 diff --git a/views/bootstrap/class.LogManagement.php b/views/bootstrap/class.LogManagement.php index 294242303..6d2f542d6 100644 --- a/views/bootstrap/class.LogManagement.php +++ b/views/bootstrap/class.LogManagement.php @@ -151,7 +151,7 @@ $("input[type=checkbox]").each(function () { this.checked = !this.checked; }); $this->htmlEndPage(); } elseif(file_exists($this->logdir.$logname)){ echo $logname."
    \n";
    -			readfile($this->logdir.$logname);
    +			echo htmlspecialchars(file_get_contents($this->logdir.$logname));
     			echo "
    \n"; } else { UI::exitError(getMLText("admin_tools"),getMLText("access_denied")); From 85c1c70c229ac43cb472e974ec46795e7b6435a5 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 1 Sep 2024 09:45:21 +0200 Subject: [PATCH 29/30] support for different storage of documents --- inc/inc.DBInit.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/inc/inc.DBInit.php b/inc/inc.DBInit.php index 2662bb2a0..583e32288 100644 --- a/inc/inc.DBInit.php +++ b/inc/inc.DBInit.php @@ -45,7 +45,22 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) { } } -$dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir); +$storage = null; +if(isset($GLOBALS['SEEDDMS_HOOKS']['initStorage'])) { + foreach($GLOBALS['SEEDDMS_HOOKS']['initStorage'] as $hookObj) { + if (method_exists($hookObj, 'getStorage')) { + $storage = $hookObj->getStorage(array('db'=>$db, 'settings'=>$settings, 'logger'=>$logger)); + } + } +} + +if($storage) { + $dms = new SeedDMS_Core_DMS($db, $storage); +} else { +// $storage = new SeedDMS_Core_Storage_File($settings->_contentDir.$settings->_contentOffsetDir); +// $dms = new SeedDMS_Core_DMS($db, $storage); + $dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir); +} if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) { echo "Database update needed."; From c947c990e4b552d9616d9f6405f88210dbfdfc23 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Sun, 1 Sep 2024 09:45:28 +0200 Subject: [PATCH 30/30] add changes for 5.1.36 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index f981cd9cd..2090e092e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ - remove deprecated function formatted_size() - fix bugs when importing files from filesystem with metadata, better logging - fix potential xss attack when showing log file +- support for different storage of documents (not yet used) -------------------------------------------------------------------------------- Changes in version 5.1.35