Merge branch 'seeddms-5.1.x' into seeddms-6.0.x

This commit is contained in:
Uwe Steinmann 2024-09-01 09:53:29 +02:00
commit dcf448072d
49 changed files with 1023 additions and 45 deletions

View File

@ -298,6 +298,11 @@
--------------------------------------------------------------------------------
Changes in version 5.1.36
--------------------------------------------------------------------------------
- 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
- support for different storage of documents (not yet used)
--------------------------------------------------------------------------------
Changes in version 5.1.35

View File

@ -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
=====================================
@ -111,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'
@ -150,3 +163,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.

View File

@ -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;
}
@ -60,6 +60,7 @@ class Controller {
$controller->setParam('request', $request);
$controller->setParam('settings', $settings);
$controller->setParam('logger', $logger);
$controller->setParam('notifier', $notifier);
return $controller;
}
return null;

View File

@ -197,7 +197,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";

View File

@ -46,7 +46,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, $dms, $user, $session, $extMgr, $request, $logger;
global $settings, $dms, $user, $session, $extMgr, $request, $logger, $notifier;
if(!$class) {
$class = 'Bootstrap';
$class = 'Style';
@ -129,6 +129,7 @@ class UI extends UI_Default {
$view = new $classname($params, $theme);
/* Set some configuration parameters */
$view->setParam('accessobject', new SeedDMS_AccessOperation($dms, $user, $settings));
$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);
@ -136,6 +137,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);

View File

@ -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.";

View File

@ -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
@ -726,6 +718,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';
@ -752,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';

View File

@ -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' => 'تتابع',

View File

@ -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' => 'Последователност',

View File

@ -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',

View File

@ -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',

View File

@ -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]</p>',
'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]</p>',
'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]</p>',
'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',

View File

@ -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' => 'Σειρά',

View File

@ -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]</p>',
'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]</p>',
'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]</p>',
'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',

View File

@ -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',

View File

@ -319,6 +319,7 @@ URL : [url]</p>',
'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]</p>',
'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]</p>',
'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',

View File

@ -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',

View File

@ -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',

View File

@ -299,6 +299,7 @@ URL: [url]</p>',
'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]</p>',
'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',

View File

@ -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',

View File

@ -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' => '순서',

View File

@ -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' => 'ລຳດັບ',

View File

@ -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',

View File

@ -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',

View File

@ -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ść',

View File

@ -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',

View File

@ -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',

View File

@ -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' => 'Позиция',

View File

@ -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ť',

View File

@ -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',

View File

@ -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',

View File

@ -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' => 'Позиція',

View File

@ -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' => '次序',

View File

@ -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' => '次序',

View File

@ -667,7 +667,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'=>''));

View File

@ -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];
@ -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);
@ -100,7 +100,7 @@ if(!empty($_GET["dropfolderfileform2"])) {
}
}
}
// echo "<pre>";print_r($colmap);echo "</pre>";
// echo "<pre>";var_dump($colmap);echo "</pre>";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 "<pre>";print_r($metadata);echo "</pre>";
//exit;
$setfiledate = false;
if(isset($_GET['setfiledate']) && $_GET["setfiledate"]) {
@ -143,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;
@ -172,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."<br />\n";
// echo $mimetype." - ".$filetype." - ".$path."<br />\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,
@ -185,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."<br />";
echo "<pre>".print_r($res, true)."</pre>";
// return false;
if($logger)
$logger->log('ImportFS: importing \''.$path.'\' failed.', PEAR_LOG_ERR);
}
set_time_limit(30);
} elseif(is_dir($path)) {
@ -198,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++;
@ -211,9 +214,26 @@ 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(!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 {
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')));

View File

@ -0,0 +1,78 @@
<?php
// MyDMS. Document Management System
// Copyright (C) 2002-2005 Markus Westphal
// Copyright (C) 2006-2008 Malcolm Cowe
// Copyright (C) 2010-2016 Uwe Steinmann
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
include("../inc/inc.Settings.php");
include("../inc/inc.Utils.php");
include("../inc/inc.LogInit.php");
include("../inc/inc.Language.php");
include("../inc/inc.Init.php");
include("../inc/inc.Extension.php");
include("../inc/inc.DBInit.php");
include("../inc/inc.Authentication.php");
include("../inc/inc.ClassUI.php");
include("../inc/inc.ClassController.php");
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user));
$accessop = new SeedDMS_AccessOperation($dms, 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')));
}
}

View File

@ -0,0 +1,60 @@
<?php
// MyDMS. Document Management System
// Copyright (C) 2010 Matteo Lucarelli
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
if(!isset($settings))
require_once("../inc/inc.Settings.php");
require_once("inc/inc.Utils.php");
require_once("inc/inc.LogInit.php");
require_once("inc/inc.Language.php");
require_once("inc/inc.Init.php");
require_once("inc/inc.Extension.php");
require_once("inc/inc.DBInit.php");
require_once("inc/inc.ClassUI.php");
require_once("inc/inc.Authentication.php");
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user));
$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings);
if (!$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;
}

View File

@ -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;

View File

@ -1086,6 +1086,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'));
}

View File

@ -90,6 +90,48 @@ if(in_array($type, array('docspermonth'))) {
}
});
<?php
} elseif(in_array($type, array('sizepermonth'))) {
?>
var data = [
<?php
if($data) {
foreach($data as $i=>$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();
}
});
<?php
} elseif(in_array($type, array('docsaccumulated'))) {
?>
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 "<div><a href=\"?type=".$atype."\">".getMLText('chart_'.$atype.'_title')."</a></div>\n";
}
$this->contentContainerEnd();
@ -265,6 +307,7 @@ $(document).ready( function() {
}
break;
case 'sizeperuser':
case 'sizepermonth':
foreach($data as $item) {
echo "<tr><td>".htmlspecialchars($item['key'])."</td><td>".SeedDMS_Core_File::format_filesize((int) $item['total'])."</td></tr>";
$total += $item['total'];

View File

@ -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();

View File

@ -157,7 +157,7 @@ $("input[type=checkbox]").each(function () { this.checked = !this.checked; });
$this->htmlEndPage();
} elseif(file_exists($this->logdir.$logname)){
echo $logname."<pre>\n";
readfile($this->logdir.$logname);
echo htmlspecialchars(file_get_contents($this->logdir.$logname));
echo "</pre>\n";
} else {
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));

View File

@ -0,0 +1,278 @@
<?php
/**
* Implementation of Send Notification view
*
* @category DMS
* @package SeedDMS
* @license GPL 2
* @version @version@
* @author Uwe Steinmann <uwe@steinmann.cx>
* @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 <uwe@steinmann.cx>
* @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=<?= createFormKey('sendnotification'); ?>", function(response) {
noty({
text: response.message,
type: response.success === true ? 'success' : 'error',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
});
});
});
<?php
} /* }}} */
public function checkfilter() { /* {{{ */
$dms = $this->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 .= "<table class=\"table table-condensed table-sm\">";
$content .= "<tr><th>".getMLText('notification_msg_tmpl')."/".getMLText('notification_recvtype')."</th>";
array_shift($this->recvtypes);
foreach($this->recvtypes as $recvtype) {
$content .= "<th>".$recvtype[1]."</th>";
}
$content .= "</tr>";
foreach($this->subjects as $subject) {
$content .= "<tr><td>".$subject."</td>";
foreach($this->recvtypes as $recvtype) {
if($service->filter($user, $seluser, $subject.'_email_subject', $subject.'_email_body', [], $recvtype[0])) {
$content .= "<td><i class=\"fa fa-check success\"></i></td>";
} else {
$content .= "<td><i class=\"fa fa-minus error\"></i></td>";
}
}
$content .= "</tr>";
}
$content .= "</table>";
$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);
?>
<form class="form-horizontal" name="form1" id="form1" method="get">
<?php
$this->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[] = '<i class="fa fa-rotate-left"></i> '.getMLText('send_notification');
$names[] = "send_notification";
$buttons[] = '<i class="fa fa-rotate-left"></i> '.getMLText('check_notification_filter');
$names[] = "check_filter";
$this->formSubmit($buttons, $names);
?>
</form>
<?php
$this->columnEnd();
$this->columnStart(8);
?>
<div class="ajax" style="margin-bottom: 15px;" data-view="SendNotification" data-action="checkfilter" data-query="userid=<?= $seluser ? $seluser->getId() : $user->getId() ?>"></div>
<?php
$this->columnEnd();
$this->rowEnd();
$this->contentEnd();
$this->htmlEndPage();
} /* }}} */
}

View File

@ -222,7 +222,7 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
$selections = $settings->{"_".$name};
else
$selections = explode(',', $settings->{"_".$name});
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"".$name.($multiple ? "[]" : "")."\"".($multiple ? " multiple" : "").($size ? " size=\"".$size."\"" : "")." data-placeholder=\"".getMLText("select_user")."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"".$name.($multiple ? "[]" : "")."\"".($multiple ? " multiple" : "").($size ? " size=\"".$size."\"" : "")." data-placeholder=\"".getMLText("select_user")."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
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 "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"".$name.($multiple ? "[]" : "")."\"".($multiple ? " multiple" : "").($size ? " size=\"".$size."\"" : "")." data-placeholder=\"".getMLText("select_group")."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"".$name.($multiple ? "[]" : "")."\"".($multiple ? " multiple" : "").($size ? " size=\"".$size."\"" : "")." data-placeholder=\"".getMLText("select_group")."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($groups as $curgroup) {
@ -696,7 +696,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
case "categories":
$categories = $dms->getDocumentCategories();
if($categories) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_category")."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_category")."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($categories as $category) {
@ -711,7 +711,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
case "users":
$users = $dms->getAllUsers();
if($users) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_user")."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_user")."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($users as $curuser) {
@ -726,7 +726,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
case "groups":
$recs = $dms->getAllGroups();
if($recs) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_group")."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_group")."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {
@ -743,7 +743,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
$attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype'];
$recs = $dms->getAllAttributeDefinitions($objtype, $attrtype);
if($recs) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_attrdef")."\" data-no_results_text=\"".getMLText('unknown_attrdef')."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_attrdef")."\" data-no_results_text=\"".getMLText('unknown_attrdef')."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {
@ -760,7 +760,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
case "workflows":
$recs = $dms->getAllWorkflows();
if($recs) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")."\" name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_attribute_value")."\" style=\"width: 100%;\">";
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".(!empty($conf['multiple']) ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_attribute_value")."\" style=\"width: 100%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {

View File

@ -356,7 +356,7 @@ $(document).ready( function() {
if($file->getName() != $file->getOriginalFileName())
print "<li>".htmlspecialchars($file->getOriginalFileName())."</li>\n";
if ($file_exists) {
$realmimetype = SeedDMS_Core_File::mimetype($dms->contentDir . $file->getPath());
$realmimetype = $file->getRealMimeType();
print "<li>".SeedDMS_Core_File::format_filesize(filesize($dms->contentDir . $file->getPath())) ." bytes, ".htmlspecialchars($file->getMimeType())."</li>";
} else print "<li>".htmlspecialchars($file->getMimeType())." - <span class=\"warning\">".getMLText("document_deleted")."</span></li>";
@ -777,7 +777,7 @@ $(document).ready( function() {
print "<li>". 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 " <i class=\"fa fa-exclamation-triangle ajax-click\" data-param1=\"command=setmimetype\" data-param2=\"contentid=".$latestContent->getId()."\" data-param3=\"formtoken=".createFormKey('setmimetype')."\" title=\"".htmlspecialchars($realmimetype)."\"></i> ";
}
@ -1077,7 +1077,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'));
}

View File

@ -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);

View File

@ -1002,6 +1002,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'));
}
@ -2407,7 +2409,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));

View File

@ -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);